mirror of
https://github.com/MariaDB/server.git
synced 2025-12-13 20:03:16 +03:00
branches/zip: Clarify why certain calls of
btr_rec_copy_externally_stored_field() are safe. row_merge_copy_blobs(): Note that the table is locked during index creation. Therefore, none of its BLOBs can be freed. row_sel_fetch_columns(): Note that rec must be protected by a page latch. Add const qualifier to rec. row_sel_get_clust_rec(): Note that the clustered index record is protected by a page latch that was acquired when the persistent cursor was positioned and that the latch will be freed by mini-transaction commit. row_sel_try_search_shortcut(): Check the delete-mark flag before fetching the columns. Note that the clustered index record is protected by a page latch that was acquired when the persistent cursor was positioned and that the latch will be freed by mini-transaction commit. row_sel(), row_search_for_mysql(): Note that the clustered index record is protected by a page latch that was acquired when the persistent cursor was positioned and that the latch will be freed by mini-transaction commit. row_sel_field_store_in_mysql_format(): Add const qualifier to data. row_sel_store_mysql_rec(), row_sel_push_cache_row_for_mysql(): Add const qualifier to rec. Note that rec must be protected by a page latch.
This commit is contained in:
@@ -1511,6 +1511,11 @@ row_merge_copy_blobs(
|
||||
|
||||
ut_ad(!dfield_is_null(field));
|
||||
|
||||
/* The table is locked during index creation.
|
||||
Therefore, externally stored columns cannot possibly
|
||||
be freed between the time the BLOB pointers are read
|
||||
(row_merge_read_clustered_index()) and dereferenced
|
||||
(below). */
|
||||
data = btr_rec_copy_externally_stored_field(
|
||||
mrec, offsets, zip_size, i, &len, heap);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user