diff options
Diffstat (limited to 'storage/innobase/btr/btr0btr.cc')
-rw-r--r-- | storage/innobase/btr/btr0btr.cc | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/storage/innobase/btr/btr0btr.cc b/storage/innobase/btr/btr0btr.cc index c180bbb8831..a8e319dd321 100644 --- a/storage/innobase/btr/btr0btr.cc +++ b/storage/innobase/btr/btr0btr.cc @@ -733,8 +733,10 @@ void btr_page_free(dict_index_t* index, buf_block_t* block, mtr_t* mtr, { ut_ad(mtr_memo_contains(mtr, block, MTR_MEMO_PAGE_X_FIX)); #ifdef BTR_CUR_HASH_ADAPT - ut_ad(!block->index || !blob); - ut_ad(!block->index || page_is_leaf(block->frame)); + if (block->index && !block->index->freed()) { + ut_ad(!blob); + ut_ad(page_is_leaf(block->frame)); + } #endif ut_ad(index->table->space_id == block->page.id.space()); /* The root page is freed by btr_free_root(). */ @@ -760,7 +762,7 @@ void btr_page_free(dict_index_t* index, buf_block_t* block, mtr_t* mtr, : PAGE_HEADER + PAGE_BTR_SEG_TOP]; fseg_free_page(seg_header, index->table->space, block->page.id.page_no(), - block->index != NULL, !block->page.flush_observer, mtr); + !block->page.flush_observer, mtr); /* The page was marked free in the allocation bitmap, but it should remain exclusively latched until mtr_t::commit() or until it @@ -1011,7 +1013,7 @@ static void btr_free_root(buf_block_t* block, mtr_t* mtr, bool invalidate) BTR_FREED_INDEX_ID, mtr); } - while (!fseg_free_step(header, true, mtr)) { + while (!fseg_free_step(header, mtr)) { /* Free the entire segment in small steps. */ } } @@ -1232,7 +1234,7 @@ leaf_loop: fsp0fsp. */ finished = fseg_free_step(root + PAGE_HEADER + PAGE_BTR_SEG_LEAF, - true, &mtr); + &mtr); mtr_commit(&mtr); if (!finished) { @@ -1252,7 +1254,7 @@ top_loop: #endif /* UNIV_BTR_DEBUG */ finished = fseg_free_step_not_header( - root + PAGE_HEADER + PAGE_BTR_SEG_TOP, true, &mtr); + root + PAGE_HEADER + PAGE_BTR_SEG_TOP, &mtr); mtr_commit(&mtr); if (!finished) { |