• Marko Mäkelä's avatar
    Merge Bug#54358 fix from mysql-5.1-innodb: · 1e9357f9
    Marko Mäkelä authored
    ------------------------------------------------------------
    revno: 3529
    revision-id: marko.makela@oracle.com-20100629125518-m3am4ia1ffjr0d0j
    parent: jimmy.yang@oracle.com-20100629024137-690sacm5sogruzvb
    committer: Marko Mäkelä <marko.makela@oracle.com>
    branch nick: 5.1-innodb
    timestamp: Tue 2010-06-29 15:55:18 +0300
    message:
      Bug#54358: READ UNCOMMITTED access failure of off-page DYNAMIC or COMPRESSED
      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
    1e9357f9
row0merge.c 69.4 KB