• Marko Mäkelä's avatar
    Bug#54358: READ UNCOMMITTED access failure of off-page DYNAMIC or COMPRESSED · 7176153e
    Marko Mäkelä authored
    columns
    
    When the server crashes after a record stub has been inserted and
    before all its off-page columns have been written, the record will
    contain incomplete off-page columns after crash recovery. Such records
    may only be accessed at the READ UNCOMMITTED isolation level or when
    rolling back a recovered transaction in recv_recovery_rollback_active().
    Skip these records at the READ UNCOMMITTED isolation level.
    
    TODO: Add assertions for checking the above assumptions hold when an
    incomplete BLOB is encountered.
    
    btr_rec_copy_externally_stored_field(): Return NULL if the field is
    incomplete.
    
    row_prebuilt_t::templ_contains_blob: Clarify what "BLOB" means in this
    context. Hint: MySQL BLOBs are not the same as InnoDB BLOBs.
    
    row_sel_store_mysql_rec(): Return FALSE if not all columns could be
    retrieved. Previously this function always returned TRUE.  Assert that
    the record is not delete-marked.
    
    row_sel_push_cache_row_for_mysql(): Return FALSE if not all columns
    could be retrieved.
    
    row_search_for_mysql(): Skip records containing incomplete off-page
    columns. Assert that the transaction isolation level is READ
    UNCOMMITTED.
    
    rb://380 approved by Jimmy Yang
    7176153e
row0merge.c 68.6 KB