Browse Source
branches/zip: In purge, avoid dereferencing unset BLOB pointers of freshly
branches/zip: In purge, avoid dereferencing unset BLOB pointers of freshly
inserted, uncommitted clustered index records when determining if a secondary index record that contains a column prefix of an externally stored column is referencing the clustered index record. field_ref_zero[]: A BLOB pointer full of zero, for use in comparisons. btr_copy_externally_stored_field_prefix(): Assert that the BLOB pointer is set. row_ext_lookup_ith(), row_ext_lookup(), row_ext_lookup_low(): Document that field_ref_zero is returned when the BLOB cannot be fetched. row_ext_lookup_low(): Return field_ref_zero and *len = 0 when the BLOB pointer is unset. row_build_index_entry(): Return NULL when a needed BLOB pointer cannot be dereferenced (row_ext_lookup returns field_ref_zero). Check the return value for NULL in callers. row_vers_impl_x_locked_off_kernel(): Avoid comparisons when row_build_index_entry() returns NULL. row_vers_old_has_index_entry(): Ignore records for which row_build_index_entry() returns NULL. The entry should never be NULL in rollback, but it may be NULL in purge. row_merge_buf_add(): Assert that row_ext_lookup() does not return field_ref_zero. The table will be locked during index creation.pull/374/head
13 changed files with 95 additions and 20 deletions
-
7btr/btr0cur.c
-
5include/btr0cur.h
-
8include/row0ext.h
-
12include/row0ext.ic
-
5include/row0row.h
-
13row/row0ext.c
-
2row/row0merge.c
-
4row/row0purge.c
-
8row/row0row.c
-
2row/row0uins.c
-
6row/row0umod.c
-
2row/row0upd.c
-
41row/row0vers.c
Write
Preview
Loading…
Cancel
Save
Reference in new issue