diff options
Diffstat (limited to 'storage/innobase/mtr')
-rw-r--r-- | storage/innobase/mtr/mtr0mtr.cc | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/storage/innobase/mtr/mtr0mtr.cc b/storage/innobase/mtr/mtr0mtr.cc index 6d0492f30f2..424ac0b53f0 100644 --- a/storage/innobase/mtr/mtr0mtr.cc +++ b/storage/innobase/mtr/mtr0mtr.cc @@ -313,25 +313,17 @@ mini-transaction */ struct FindBlock { int32_t num_fix; - buf_block_t *block; + const buf_block_t *const block; + + FindBlock(const buf_block_t *block_buf): num_fix(0), block(block_buf) {} - FindBlock(buf_block_t *block_buf): num_fix(0), block(block_buf) {} bool operator()(const mtr_memo_slot_t* slot) { - if (slot->object != NULL) - { - buf_block_t *mtr_block= reinterpret_cast<buf_block_t*>(slot->object); - if (mtr_block == block) - num_fix++; - } - + if (slot->object == block) + ut_d(if (slot->type != MTR_MEMO_MODIFY)) + num_fix++; return true; } - - int32_t get_num_fix() - { - return num_fix; - } }; /** Release a resource acquired by the mini-transaction. */ @@ -832,10 +824,9 @@ mtr_t::release_free_extents(ulint n_reserved) int32_t mtr_t::get_fix_count(buf_block_t *block) { - struct FindBlock find_block(block); - Iterate<FindBlock> iteration(find_block); + Iterate<FindBlock> iteration((FindBlock(block))); if (m_memo.for_each_block(iteration)) - return iteration.functor.get_num_fix(); + return iteration.functor.num_fix; return 0; } |