• marko's avatar
    branches/zip: Write PAGE_MAX_TRX_ID to the redo log. Otherwise, · 9649c3e3
    marko authored
    transactions that are started before the rollback of incomplete
    transactions has finished may have an inconsistent view of the
    secondary indexes.
    
    dict_index_is_sec_or_ibuf(): Auxiliary function for controlling
    updates and checks of PAGE_MAX_TRX_ID: check whether an index is a
    secondary index or the insert buffer tree.
    
    page_set_max_trx_id(), page_update_max_trx_id(),
    lock_rec_insert_check_and_lock(),
    lock_sec_rec_modify_check_and_lock(), btr_cur_ins_lock_and_undo(),
    btr_cur_upd_lock_and_undo(): Add the parameter mtr.
    
    page_set_max_trx_id(): Allow mtr to be NULL.  When mtr==NULL, do not
    attempt to write to the redo log.  This only occurs when creating a
    page or reorganizing a compressed page.  In these cases, the
    PAGE_MAX_TRX_ID will be set correctly during the application of redo
    log records, even though there is no explicit log record about it.
    
    btr_discard_only_page_on_level(): Preserve PAGE_MAX_TRX_ID.  This
    function should be unreachable, though.
    
    btr_cur_pessimistic_update(): Update PAGE_MAX_TRX_ID.
    
    Add some assertions for checking that PAGE_MAX_TRX_ID is set on all
    secondary index leaf pages.
    
    rb://115 tested by Michael, fixes Issue #211
    9649c3e3
lock0lock.c 152 KB