• Marko Mäkelä's avatar
    Bug#57799 READ UNCOMMITTED access failure of off-page DYNAMIC or COMPRESSED · 3dcbf1e2
    Marko Mäkelä authored
    columns again
    
    This is follow-up to Bug #54358. Not all occurrences of the bug were fixed.
    We need to check all calls to btr_copy_externally_stored_field_prefix_low()
    and do the right thing when the pointer to the off-page column is null
    (full of zero bytes).
    
    It turns out that only the call to btr_copy_externally_stored_field_prefix()
    in row_sel_sec_rec_is_for_blob() needs to be changed.
    
    For fetching complete off-page columns rather than prefixes, the function
    btr_rec_copy_externally_stored_field() already checks if the pointer
    is null (all-zero).  Two of its callers (row_merge_copy_blobs() and
    row_sel_fetch_columns()) are never executed as READ COMMITTED and can
    rightfully assert that the fetch succeeded.  The third caller,
    row_sel_store_mysql_rec(), already does the right thing.
    
    The calls in row_upd_ext_fetch() and trx_undo_page_fetch_ext() must
    expect that the off-page column exists. Update and rollback are
    locking operations, never READ UNCOMMITTED.
    3dcbf1e2
To find the state of this project's repository at the time of any of these versions, check out the tags.
ChangeLog 62.3 KB