• Marko Mäkelä's avatar
    MDEV-11831 Make InnoDB mini-transaction memo checks stricter · 8780b895
    Marko Mäkelä authored
    InnoDB keeps track of buffer-fixed buf_block_t or acquired rw_lock_t
    within a mini-transaction. There are some memo_contains assertions
    in the code that document when certain blocks or rw_locks must be held.
    But, these assertions only check the mini-transaction memo, not the fact
    whether the rw_lock_t are actually being held by the caller.
    
    btr_pcur_store_position(): Remove #ifdef, and assert that the block
    is always buffer-fixed.
    
    rtr_pcur_getnext_from_path(), rtr_pcur_open_low(),
    ibuf_rec_get_page_no_func(), ibuf_rec_get_space_func(),
    ibuf_rec_get_info_func(), ibuf_rec_get_op_type_func(),
    ibuf_build_entry_from_ibuf_rec_func(), ibuf_rec_get_volume_func(),
    ibuf_get_merge_page_nos_func(), ibuf_get_volume_buffered_count_func()
    ibuf_get_entry_counter_low_func(), page_set_ssn_id(),
    row_vers_old_has_index_entry(), row_vers_build_for_consistent_read(),
    row_vers_build_for_semi_consistent_read(),
    trx_undo_prev_version_build():
    Make use of mtr_memo_contains_page_flagged().
    
    mtr_t::memo_contains(): Take a const memo. Assert rw_lock_own().
    
    FindPage, FlaggedCheck: Assert rw_lock_own_flagged().
    8780b895
mtr0mtr.h 17 KB