• Marko Mäkelä's avatar
    Bug#57799 READ UNCOMMITTED access failure of off-page DYNAMIC or COMPRESSED · 004bb1b1
    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.
    004bb1b1
row0sel.c 130 KB