Commit 334b002c authored by marko's avatar marko

branches/zip: Add function mtr_memo_contains_page() #ifdef UNIV_DEBUG.

Replace ut_ad(mtr_memo_contains(mtr, buf_block_align(ptr), ...))
with ut_ad(mtr_memo_contains_page(mtr, ptr, ...)) in order to reduce the
number of buf_block_align() calls.
parent 469a27ac
...@@ -160,10 +160,10 @@ btr_get_prev_user_rec( ...@@ -160,10 +160,10 @@ btr_get_prev_user_rec(
prev_page = buf_page_get_with_no_latch(space, prev_page_no, prev_page = buf_page_get_with_no_latch(space, prev_page_no,
mtr); mtr);
/* The caller must already have a latch to the brother */ /* The caller must already have a latch to the brother */
ut_ad((mtr_memo_contains(mtr, buf_block_align(prev_page), ut_ad(mtr_memo_contains_page(mtr, prev_page,
MTR_MEMO_PAGE_S_FIX)) MTR_MEMO_PAGE_S_FIX)
|| (mtr_memo_contains(mtr, buf_block_align(prev_page), || mtr_memo_contains_page(mtr, prev_page,
MTR_MEMO_PAGE_X_FIX))); MTR_MEMO_PAGE_X_FIX));
ut_a(page_is_comp(prev_page) == page_is_comp(page)); ut_a(page_is_comp(prev_page) == page_is_comp(page));
#ifdef UNIV_BTR_DEBUG #ifdef UNIV_BTR_DEBUG
ut_a(btr_page_get_next(prev_page, mtr) ut_a(btr_page_get_next(prev_page, mtr)
...@@ -212,10 +212,10 @@ btr_get_next_user_rec( ...@@ -212,10 +212,10 @@ btr_get_next_user_rec(
next_page = buf_page_get_with_no_latch(space, next_page_no, next_page = buf_page_get_with_no_latch(space, next_page_no,
mtr); mtr);
/* The caller must already have a latch to the brother */ /* The caller must already have a latch to the brother */
ut_ad((mtr_memo_contains(mtr, buf_block_align(next_page), ut_ad(mtr_memo_contains_page(mtr, next_page,
MTR_MEMO_PAGE_S_FIX)) MTR_MEMO_PAGE_S_FIX)
|| (mtr_memo_contains(mtr, buf_block_align(next_page), || mtr_memo_contains_page(mtr, next_page,
MTR_MEMO_PAGE_X_FIX))); MTR_MEMO_PAGE_X_FIX));
#ifdef UNIV_BTR_DEBUG #ifdef UNIV_BTR_DEBUG
ut_a(btr_page_get_prev(next_page, mtr) ut_a(btr_page_get_prev(next_page, mtr)
== buf_frame_get_page_no(page)); == buf_frame_get_page_no(page));
...@@ -241,8 +241,7 @@ btr_page_create( ...@@ -241,8 +241,7 @@ btr_page_create(
ulint level, /* in: the B-tree level of the page */ ulint level, /* in: the B-tree level of the page */
mtr_t* mtr) /* in: mtr */ mtr_t* mtr) /* in: mtr */
{ {
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
if (UNIV_LIKELY_NULL(page_zip)) { if (UNIV_LIKELY_NULL(page_zip)) {
page_create_zip(page, page_zip, index, level, mtr); page_create_zip(page, page_zip, index, level, mtr);
...@@ -405,8 +404,7 @@ btr_page_free_for_ibuf( ...@@ -405,8 +404,7 @@ btr_page_free_for_ibuf(
{ {
page_t* root; page_t* root;
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
root = btr_root_get(index, mtr); root = btr_root_get(index, mtr);
flst_add_first(root + PAGE_HEADER + PAGE_BTR_IBUF_FREE_LIST, flst_add_first(root + PAGE_HEADER + PAGE_BTR_IBUF_FREE_LIST,
...@@ -434,8 +432,7 @@ btr_page_free_low( ...@@ -434,8 +432,7 @@ btr_page_free_low(
fseg_header_t* seg_header; fseg_header_t* seg_header;
page_t* root; page_t* root;
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
/* The page gets invalid for optimistic searches: increment the frame /* The page gets invalid for optimistic searches: increment the frame
modify clock */ modify clock */
...@@ -474,8 +471,7 @@ btr_page_free( ...@@ -474,8 +471,7 @@ btr_page_free(
ulint space; ulint space;
ulint page_no; ulint page_no;
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
level = btr_page_get_level(page, mtr); level = btr_page_get_level(page, mtr);
space = buf_frame_get_space_id(page); space = buf_frame_get_space_id(page);
...@@ -858,8 +854,7 @@ btr_page_reorganize_low( ...@@ -858,8 +854,7 @@ btr_page_reorganize_low(
ulint max_ins_size2; ulint max_ins_size2;
ibool success = FALSE; ibool success = FALSE;
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
ut_ad(!!page_is_comp(page) == dict_table_is_comp(index->table)); ut_ad(!!page_is_comp(page) == dict_table_is_comp(index->table));
#ifdef UNIV_ZIP_DEBUG #ifdef UNIV_ZIP_DEBUG
ut_a(!page_zip || page_zip_validate(page_zip, page)); ut_a(!page_zip || page_zip_validate(page_zip, page));
...@@ -1000,8 +995,7 @@ btr_page_empty( ...@@ -1000,8 +995,7 @@ btr_page_empty(
mtr_t* mtr, /* in: mtr */ mtr_t* mtr, /* in: mtr */
dict_index_t* index) /* in: index of the page */ dict_index_t* index) /* in: index of the page */
{ {
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
#ifdef UNIV_ZIP_DEBUG #ifdef UNIV_ZIP_DEBUG
ut_a(!page_zip || page_zip_validate(page_zip, page)); ut_a(!page_zip || page_zip_validate(page_zip, page));
#endif /* UNIV_ZIP_DEBUG */ #endif /* UNIV_ZIP_DEBUG */
...@@ -1064,8 +1058,7 @@ btr_root_raise_and_insert( ...@@ -1064,8 +1058,7 @@ btr_root_raise_and_insert(
ut_ad(dict_index_get_page(index) == buf_frame_get_page_no(root)); ut_ad(dict_index_get_page(index) == buf_frame_get_page_no(root));
ut_ad(mtr_memo_contains(mtr, dict_index_get_lock(index), ut_ad(mtr_memo_contains(mtr, dict_index_get_lock(index),
MTR_MEMO_X_LOCK)); MTR_MEMO_X_LOCK));
ut_ad(mtr_memo_contains(mtr, buf_block_align(root), ut_ad(mtr_memo_contains_page(mtr, root, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
btr_search_drop_page_hash_index(root); btr_search_drop_page_hash_index(root);
/* Allocate a new page to the tree. Root splitting is done by first /* Allocate a new page to the tree. Root splitting is done by first
...@@ -1563,10 +1556,8 @@ btr_attach_half_pages( ...@@ -1563,10 +1556,8 @@ btr_attach_half_pages(
dtuple_t* node_ptr_upper; dtuple_t* node_ptr_upper;
mem_heap_t* heap; mem_heap_t* heap;
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX)); ut_ad(mtr_memo_contains_page(mtr, new_page, MTR_MEMO_PAGE_X_FIX));
ut_ad(mtr_memo_contains(mtr, buf_block_align(new_page),
MTR_MEMO_PAGE_X_FIX));
ut_a(page_is_comp(page) == page_is_comp(new_page)); ut_a(page_is_comp(page) == page_is_comp(new_page));
/* Create a memory heap where the data tuple is stored */ /* Create a memory heap where the data tuple is stored */
...@@ -1722,8 +1713,7 @@ func_start: ...@@ -1722,8 +1713,7 @@ func_start:
page = btr_cur_get_page(cursor); page = btr_cur_get_page(cursor);
page_zip = buf_frame_get_page_zip(page); page_zip = buf_frame_get_page_zip(page);
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
ut_ad(page_get_n_recs(page) >= 1); ut_ad(page_get_n_recs(page) >= 1);
page_no = buf_frame_get_page_no(page); page_no = buf_frame_get_page_no(page);
...@@ -1978,8 +1968,7 @@ btr_level_list_remove( ...@@ -1978,8 +1968,7 @@ btr_level_list_remove(
page_t* next_page; page_t* next_page;
ut_ad(page && mtr); ut_ad(page && mtr);
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
/* Get the previous and next page numbers of page */ /* Get the previous and next page numbers of page */
prev_page_no = btr_page_get_prev(page, mtr); prev_page_no = btr_page_get_prev(page, mtr);
...@@ -2105,8 +2094,7 @@ btr_node_ptr_delete( ...@@ -2105,8 +2094,7 @@ btr_node_ptr_delete(
ibool compressed; ibool compressed;
ulint err; ulint err;
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
/* Delete node pointer on father page */ /* Delete node pointer on father page */
node_ptr = btr_page_get_father_node_ptr(index, page, mtr); node_ptr = btr_page_get_father_node_ptr(index, page, mtr);
...@@ -2141,8 +2129,7 @@ btr_lift_page_up( ...@@ -2141,8 +2129,7 @@ btr_lift_page_up(
ut_ad(btr_page_get_prev(page, mtr) == FIL_NULL); ut_ad(btr_page_get_prev(page, mtr) == FIL_NULL);
ut_ad(btr_page_get_next(page, mtr) == FIL_NULL); ut_ad(btr_page_get_next(page, mtr) == FIL_NULL);
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
father_page = page_align( father_page = page_align(
btr_page_get_father_node_ptr(index, page, mtr)); btr_page_get_father_node_ptr(index, page, mtr));
father_page_zip = buf_frame_get_page_zip(father_page); father_page_zip = buf_frame_get_page_zip(father_page);
...@@ -2227,8 +2214,7 @@ btr_compress( ...@@ -2227,8 +2214,7 @@ btr_compress(
ut_ad(mtr_memo_contains(mtr, dict_index_get_lock(index), ut_ad(mtr_memo_contains(mtr, dict_index_get_lock(index),
MTR_MEMO_X_LOCK)); MTR_MEMO_X_LOCK));
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
level = btr_page_get_level(page, mtr); level = btr_page_get_level(page, mtr);
space = dict_index_get_space(index); space = dict_index_get_space(index);
...@@ -2438,8 +2424,7 @@ btr_discard_only_page_on_level( ...@@ -2438,8 +2424,7 @@ btr_discard_only_page_on_level(
ut_ad(btr_page_get_prev(page, mtr) == FIL_NULL); ut_ad(btr_page_get_prev(page, mtr) == FIL_NULL);
ut_ad(btr_page_get_next(page, mtr) == FIL_NULL); ut_ad(btr_page_get_next(page, mtr) == FIL_NULL);
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
btr_search_drop_page_hash_index(page); btr_search_drop_page_hash_index(page);
father_page = page_align( father_page = page_align(
...@@ -2498,8 +2483,7 @@ btr_discard_page( ...@@ -2498,8 +2483,7 @@ btr_discard_page(
ut_ad(dict_index_get_page(index) != buf_frame_get_page_no(page)); ut_ad(dict_index_get_page(index) != buf_frame_get_page_no(page));
ut_ad(mtr_memo_contains(mtr, dict_index_get_lock(index), ut_ad(mtr_memo_contains(mtr, dict_index_get_lock(index),
MTR_MEMO_X_LOCK)); MTR_MEMO_X_LOCK));
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
space = dict_index_get_space(index); space = dict_index_get_space(index);
/* Decide the page which will inherit the locks */ /* Decide the page which will inherit the locks */
...@@ -2634,8 +2618,7 @@ btr_print_recursive( ...@@ -2634,8 +2618,7 @@ btr_print_recursive(
rec_t* node_ptr; rec_t* node_ptr;
page_t* child; page_t* child;
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
fprintf(stderr, "NODE ON LEVEL %lu page number %lu\n", fprintf(stderr, "NODE ON LEVEL %lu page number %lu\n",
(ulong) btr_page_get_level(page, mtr), (ulong) btr_page_get_level(page, mtr),
(ulong) buf_frame_get_page_no(page)); (ulong) buf_frame_get_page_no(page));
...@@ -2724,8 +2707,7 @@ btr_check_node_ptr( ...@@ -2724,8 +2707,7 @@ btr_check_node_ptr(
rec_t* node_ptr; rec_t* node_ptr;
dtuple_t* node_ptr_tuple; dtuple_t* node_ptr_tuple;
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
if (dict_index_get_page(index) == buf_frame_get_page_no(page)) { if (dict_index_get_page(index) == buf_frame_get_page_no(page)) {
return(TRUE); return(TRUE);
......
...@@ -873,8 +873,7 @@ btr_cur_insert_if_possible( ...@@ -873,8 +873,7 @@ btr_cur_insert_if_possible(
page = btr_cur_get_page(cursor); page = btr_cur_get_page(cursor);
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
page_cursor = btr_cur_get_page_cur(cursor); page_cursor = btr_cur_get_page_cur(cursor);
/* Now, try the insert */ /* Now, try the insert */
...@@ -1076,8 +1075,7 @@ btr_cur_optimistic_insert( ...@@ -1076,8 +1075,7 @@ btr_cur_optimistic_insert(
} }
#endif /* UNIV_DEBUG */ #endif /* UNIV_DEBUG */
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
max_size = page_get_max_insert_size_after_reorganize(page, 1); max_size = page_get_max_insert_size_after_reorganize(page, 1);
level = btr_page_get_level(page, mtr); level = btr_page_get_level(page, mtr);
...@@ -1265,8 +1263,7 @@ btr_cur_pessimistic_insert( ...@@ -1265,8 +1263,7 @@ btr_cur_pessimistic_insert(
ut_ad(mtr_memo_contains(mtr, ut_ad(mtr_memo_contains(mtr,
dict_index_get_lock(btr_cur_get_index(cursor)), dict_index_get_lock(btr_cur_get_index(cursor)),
MTR_MEMO_X_LOCK)); MTR_MEMO_X_LOCK));
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
/* Try first an optimistic insert; reset the cursor flag: we do not /* Try first an optimistic insert; reset the cursor flag: we do not
assume anything of how it was positioned */ assume anything of how it was positioned */
...@@ -1774,8 +1771,7 @@ btr_cur_optimistic_update( ...@@ -1774,8 +1771,7 @@ btr_cur_optimistic_update(
} }
#endif /* UNIV_DEBUG */ #endif /* UNIV_DEBUG */
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
if (!row_upd_changes_field_size_or_external(index, offsets, update)) { if (!row_upd_changes_field_size_or_external(index, offsets, update)) {
/* The simplest and the most common case: the update does not /* The simplest and the most common case: the update does not
...@@ -1958,8 +1954,7 @@ btr_cur_pess_upd_restore_supremum( ...@@ -1958,8 +1954,7 @@ btr_cur_pess_upd_restore_supremum(
#endif /* UNIV_BTR_DEBUG */ #endif /* UNIV_BTR_DEBUG */
/* We must already have an x-latch to prev_page! */ /* We must already have an x-latch to prev_page! */
ut_ad(mtr_memo_contains(mtr, buf_block_align(prev_page), ut_ad(mtr_memo_contains_page(mtr, prev_page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
lock_rec_reset_and_inherit_gap_locks(page_get_supremum_rec(prev_page), lock_rec_reset_and_inherit_gap_locks(page_get_supremum_rec(prev_page),
rec); rec);
...@@ -2018,8 +2013,7 @@ btr_cur_pessimistic_update( ...@@ -2018,8 +2013,7 @@ btr_cur_pessimistic_update(
ut_ad(mtr_memo_contains(mtr, dict_index_get_lock(index), ut_ad(mtr_memo_contains(mtr, dict_index_get_lock(index),
MTR_MEMO_X_LOCK)); MTR_MEMO_X_LOCK));
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
#ifdef UNIV_ZIP_DEBUG #ifdef UNIV_ZIP_DEBUG
ut_a(!page_zip || page_zip_validate(page_zip, page)); ut_a(!page_zip || page_zip_validate(page_zip, page));
#endif /* UNIV_ZIP_DEBUG */ #endif /* UNIV_ZIP_DEBUG */
...@@ -2613,8 +2607,8 @@ btr_cur_compress_if_useful( ...@@ -2613,8 +2607,8 @@ btr_cur_compress_if_useful(
ut_ad(mtr_memo_contains(mtr, ut_ad(mtr_memo_contains(mtr,
dict_index_get_lock(btr_cur_get_index(cursor)), dict_index_get_lock(btr_cur_get_index(cursor)),
MTR_MEMO_X_LOCK)); MTR_MEMO_X_LOCK));
ut_ad(mtr_memo_contains(mtr, buf_block_align(btr_cur_get_rec(cursor)), ut_ad(mtr_memo_contains_page(mtr, btr_cur_get_rec(cursor),
MTR_MEMO_PAGE_X_FIX)); MTR_MEMO_PAGE_X_FIX));
return(btr_cur_compress_recommendation(cursor, mtr) return(btr_cur_compress_recommendation(cursor, mtr)
&& btr_compress(cursor, mtr)); && btr_compress(cursor, mtr));
...@@ -2645,8 +2639,8 @@ btr_cur_optimistic_delete( ...@@ -2645,8 +2639,8 @@ btr_cur_optimistic_delete(
ibool no_compress_needed; ibool no_compress_needed;
*offsets_ = (sizeof offsets_) / sizeof *offsets_; *offsets_ = (sizeof offsets_) / sizeof *offsets_;
ut_ad(mtr_memo_contains(mtr, buf_block_align(btr_cur_get_rec(cursor)), ut_ad(mtr_memo_contains_page(mtr, btr_cur_get_rec(cursor),
MTR_MEMO_PAGE_X_FIX)); MTR_MEMO_PAGE_X_FIX));
/* This is intended only for leaf page deletions */ /* This is intended only for leaf page deletions */
page = btr_cur_get_page(cursor); page = btr_cur_get_page(cursor);
...@@ -2738,8 +2732,7 @@ btr_cur_pessimistic_delete( ...@@ -2738,8 +2732,7 @@ btr_cur_pessimistic_delete(
ut_ad(mtr_memo_contains(mtr, dict_index_get_lock(index), ut_ad(mtr_memo_contains(mtr, dict_index_get_lock(index),
MTR_MEMO_X_LOCK)); MTR_MEMO_X_LOCK));
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
if (!has_reserved_extents) { if (!has_reserved_extents) {
/* First reserve enough free space for the file segments /* First reserve enough free space for the file segments
of the index tree, so that the node pointer updates will of the index tree, so that the node pointer updates will
...@@ -3609,8 +3602,7 @@ btr_store_big_rec_extern_fields( ...@@ -3609,8 +3602,7 @@ btr_store_big_rec_extern_fields(
ut_ad(rec_offs_validate(rec, index, offsets)); ut_ad(rec_offs_validate(rec, index, offsets));
ut_ad(mtr_memo_contains(local_mtr, dict_index_get_lock(index), ut_ad(mtr_memo_contains(local_mtr, dict_index_get_lock(index),
MTR_MEMO_X_LOCK)); MTR_MEMO_X_LOCK));
ut_ad(mtr_memo_contains(local_mtr, buf_block_align(rec), ut_ad(mtr_memo_contains_page(local_mtr, rec, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
ut_a(dict_index_is_clust(index)); ut_a(dict_index_is_clust(index));
space_id = buf_frame_get_space_id(rec); space_id = buf_frame_get_space_id(rec);
...@@ -3927,8 +3919,8 @@ btr_free_externally_stored_field( ...@@ -3927,8 +3919,8 @@ btr_free_externally_stored_field(
ut_ad(mtr_memo_contains(local_mtr, dict_index_get_lock(index), ut_ad(mtr_memo_contains(local_mtr, dict_index_get_lock(index),
MTR_MEMO_X_LOCK)); MTR_MEMO_X_LOCK));
ut_ad(mtr_memo_contains(local_mtr, buf_block_align(field_ref), ut_ad(mtr_memo_contains_page(local_mtr, field_ref,
MTR_MEMO_PAGE_X_FIX)); MTR_MEMO_PAGE_X_FIX));
ut_ad(!rec || rec_offs_validate(rec, index, offsets)); ut_ad(!rec || rec_offs_validate(rec, index, offsets));
#ifdef UNIV_DEBUG #ifdef UNIV_DEBUG
...@@ -4064,8 +4056,7 @@ btr_rec_free_externally_stored_fields( ...@@ -4064,8 +4056,7 @@ btr_rec_free_externally_stored_fields(
ulint i; ulint i;
ut_ad(rec_offs_validate(rec, index, offsets)); ut_ad(rec_offs_validate(rec, index, offsets));
ut_ad(mtr_memo_contains(mtr, buf_block_align(rec), ut_ad(mtr_memo_contains_page(mtr, rec, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
/* Free possible externally stored fields in the record */ /* Free possible externally stored fields in the record */
ut_ad(dict_table_is_comp(index->table) == !!rec_offs_comp(offsets)); ut_ad(dict_table_is_comp(index->table) == !!rec_offs_comp(offsets));
...@@ -4111,8 +4102,7 @@ btr_rec_free_updated_extern_fields( ...@@ -4111,8 +4102,7 @@ btr_rec_free_updated_extern_fields(
ulint i; ulint i;
ut_ad(rec_offs_validate(rec, index, offsets)); ut_ad(rec_offs_validate(rec, index, offsets));
ut_ad(mtr_memo_contains(mtr, buf_block_align(rec), ut_ad(mtr_memo_contains_page(mtr, rec, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
/* Free possible externally stored fields in the record */ /* Free possible externally stored fields in the record */
......
...@@ -91,10 +91,8 @@ btr_pcur_store_position( ...@@ -91,10 +91,8 @@ btr_pcur_store_position(
page = page_align(rec); page = page_align(rec);
offs = page_offset(rec); offs = page_offset(rec);
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_S_FIX)
MTR_MEMO_PAGE_S_FIX) || mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
|| mtr_memo_contains(mtr, buf_block_align(page),
MTR_MEMO_PAGE_X_FIX));
ut_a(cursor->latch_mode != BTR_NO_LATCHES); ut_a(cursor->latch_mode != BTR_NO_LATCHES);
if (UNIV_UNLIKELY(page_get_n_recs(page) == 0)) { if (UNIV_UNLIKELY(page_get_n_recs(page) == 0)) {
......
...@@ -409,7 +409,8 @@ btr_search_update_hash_ref( ...@@ -409,7 +409,8 @@ btr_search_update_hash_ref(
ut_ad(rw_lock_own(&(block->lock), RW_LOCK_SHARED) ut_ad(rw_lock_own(&(block->lock), RW_LOCK_SHARED)
|| rw_lock_own(&(block->lock), RW_LOCK_EX)); || rw_lock_own(&(block->lock), RW_LOCK_EX));
#endif /* UNIV_SYNC_DEBUG */ #endif /* UNIV_SYNC_DEBUG */
ut_ad(buf_block_align(btr_cur_get_rec(cursor)) == block); ut_ad(page_align(btr_cur_get_rec(cursor))
== buf_block_get_frame(block));
ut_a(!block->is_hashed || block->index == cursor->index); ut_a(!block->is_hashed || block->index == cursor->index);
if (block->is_hashed if (block->is_hashed
......
...@@ -354,8 +354,7 @@ xdes_get_bit( ...@@ -354,8 +354,7 @@ xdes_get_bit(
ulint byte_index; ulint byte_index;
ulint bit_index; ulint bit_index;
ut_ad(mtr_memo_contains(mtr, buf_block_align(descr), ut_ad(mtr_memo_contains_page(mtr, descr, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
ut_ad((bit == XDES_FREE_BIT) || (bit == XDES_CLEAN_BIT)); ut_ad((bit == XDES_FREE_BIT) || (bit == XDES_CLEAN_BIT));
ut_ad(offset < FSP_EXTENT_SIZE); ut_ad(offset < FSP_EXTENT_SIZE);
...@@ -387,8 +386,7 @@ xdes_set_bit( ...@@ -387,8 +386,7 @@ xdes_set_bit(
ulint bit_index; ulint bit_index;
ulint descr_byte; ulint descr_byte;
ut_ad(mtr_memo_contains(mtr, buf_block_align(descr), ut_ad(mtr_memo_contains_page(mtr, descr, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
ut_ad((bit == XDES_FREE_BIT) || (bit == XDES_CLEAN_BIT)); ut_ad((bit == XDES_FREE_BIT) || (bit == XDES_CLEAN_BIT));
ut_ad(offset < FSP_EXTENT_SIZE); ut_ad(offset < FSP_EXTENT_SIZE);
...@@ -426,8 +424,7 @@ xdes_find_bit( ...@@ -426,8 +424,7 @@ xdes_find_bit(
ut_ad(descr && mtr); ut_ad(descr && mtr);
ut_ad(val <= TRUE); ut_ad(val <= TRUE);
ut_ad(hint < FSP_EXTENT_SIZE); ut_ad(hint < FSP_EXTENT_SIZE);
ut_ad(mtr_memo_contains(mtr, buf_block_align(descr), ut_ad(mtr_memo_contains_page(mtr, descr, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
for (i = hint; i < FSP_EXTENT_SIZE; i++) { for (i = hint; i < FSP_EXTENT_SIZE; i++) {
if (val == xdes_get_bit(descr, bit, i, mtr)) { if (val == xdes_get_bit(descr, bit, i, mtr)) {
...@@ -465,8 +462,7 @@ xdes_find_bit_downward( ...@@ -465,8 +462,7 @@ xdes_find_bit_downward(
ut_ad(descr && mtr); ut_ad(descr && mtr);
ut_ad(val <= TRUE); ut_ad(val <= TRUE);
ut_ad(hint < FSP_EXTENT_SIZE); ut_ad(hint < FSP_EXTENT_SIZE);
ut_ad(mtr_memo_contains(mtr, buf_block_align(descr), ut_ad(mtr_memo_contains_page(mtr, descr, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
for (i = hint + 1; i > 0; i--) { for (i = hint + 1; i > 0; i--) {
if (val == xdes_get_bit(descr, bit, i - 1, mtr)) { if (val == xdes_get_bit(descr, bit, i - 1, mtr)) {
...@@ -498,8 +494,7 @@ xdes_get_n_used( ...@@ -498,8 +494,7 @@ xdes_get_n_used(
ulint count = 0; ulint count = 0;
ut_ad(descr && mtr); ut_ad(descr && mtr);
ut_ad(mtr_memo_contains(mtr, buf_block_align(descr), ut_ad(mtr_memo_contains_page(mtr, descr, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
for (i = 0; i < FSP_EXTENT_SIZE; i++) { for (i = 0; i < FSP_EXTENT_SIZE; i++) {
if (FALSE == xdes_get_bit(descr, XDES_FREE_BIT, i, mtr)) { if (FALSE == xdes_get_bit(descr, XDES_FREE_BIT, i, mtr)) {
count++; count++;
...@@ -558,8 +553,7 @@ xdes_set_state( ...@@ -558,8 +553,7 @@ xdes_set_state(
ut_ad(descr && mtr); ut_ad(descr && mtr);
ut_ad(state >= XDES_FREE); ut_ad(state >= XDES_FREE);
ut_ad(state <= XDES_FSEG); ut_ad(state <= XDES_FSEG);
ut_ad(mtr_memo_contains(mtr, buf_block_align(descr), ut_ad(mtr_memo_contains_page(mtr, descr, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
mlog_write_ulint(descr + XDES_STATE, state, MLOG_4BYTES, mtr); mlog_write_ulint(descr + XDES_STATE, state, MLOG_4BYTES, mtr);
} }
...@@ -577,8 +571,7 @@ xdes_get_state( ...@@ -577,8 +571,7 @@ xdes_get_state(
ulint state; ulint state;
ut_ad(descr && mtr); ut_ad(descr && mtr);
ut_ad(mtr_memo_contains(mtr, buf_block_align(descr), ut_ad(mtr_memo_contains_page(mtr, descr, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
state = mtr_read_ulint(descr + XDES_STATE, MLOG_4BYTES, mtr); state = mtr_read_ulint(descr + XDES_STATE, MLOG_4BYTES, mtr);
ut_ad(state - 1 < XDES_FSEG); ut_ad(state - 1 < XDES_FSEG);
...@@ -597,8 +590,7 @@ xdes_init( ...@@ -597,8 +590,7 @@ xdes_init(
ulint i; ulint i;
ut_ad(descr && mtr); ut_ad(descr && mtr);
ut_ad(mtr_memo_contains(mtr, buf_block_align(descr), ut_ad(mtr_memo_contains_page(mtr, descr, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
ut_ad((XDES_SIZE - XDES_BITMAP) % 4 == 0); ut_ad((XDES_SIZE - XDES_BITMAP) % 4 == 0);
for (i = XDES_BITMAP; i < XDES_SIZE; i += 4) { for (i = XDES_BITMAP; i < XDES_SIZE; i += 4) {
...@@ -685,10 +677,8 @@ xdes_get_descriptor_with_space_hdr( ...@@ -685,10 +677,8 @@ xdes_get_descriptor_with_space_hdr(
ut_ad(mtr); ut_ad(mtr);
ut_ad(mtr_memo_contains(mtr, fil_space_get_latch(space), ut_ad(mtr_memo_contains(mtr, fil_space_get_latch(space),
MTR_MEMO_X_LOCK)); MTR_MEMO_X_LOCK));
ut_ad(mtr_memo_contains( ut_ad(mtr_memo_contains_page(mtr, sp_header, MTR_MEMO_PAGE_S_FIX)
mtr, buf_block_align(sp_header), MTR_MEMO_PAGE_S_FIX) || mtr_memo_contains_page(mtr, sp_header, MTR_MEMO_PAGE_X_FIX));
|| mtr_memo_contains(
mtr, buf_block_align(sp_header), MTR_MEMO_PAGE_X_FIX));
/* Read free limit and space size */ /* Read free limit and space size */
limit = mach_read_from_4(sp_header + FSP_FREE_LIMIT); limit = mach_read_from_4(sp_header + FSP_FREE_LIMIT);
size = mach_read_from_4(sp_header + FSP_SIZE); size = mach_read_from_4(sp_header + FSP_SIZE);
...@@ -1742,8 +1732,7 @@ fsp_seg_inode_page_get_nth_inode( ...@@ -1742,8 +1732,7 @@ fsp_seg_inode_page_get_nth_inode(
/* in: mini-transaction handle */ /* in: mini-transaction handle */
{ {
ut_ad(i < FSP_SEG_INODES_PER_PAGE(zip_size)); ut_ad(i < FSP_SEG_INODES_PER_PAGE(zip_size));
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
return(page + FSEG_ARR_OFFSET + FSEG_INODE_SIZE * i); return(page + FSEG_ARR_OFFSET + FSEG_INODE_SIZE * i);
} }
...@@ -2006,8 +1995,7 @@ fseg_get_nth_frag_page_no( ...@@ -2006,8 +1995,7 @@ fseg_get_nth_frag_page_no(
{ {
ut_ad(inode && mtr); ut_ad(inode && mtr);
ut_ad(n < FSEG_FRAG_ARR_N_SLOTS); ut_ad(n < FSEG_FRAG_ARR_N_SLOTS);
ut_ad(mtr_memo_contains(mtr, buf_block_align(inode), ut_ad(mtr_memo_contains_page(mtr, inode, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
return(mach_read_from_4(inode + FSEG_FRAG_ARR return(mach_read_from_4(inode + FSEG_FRAG_ARR
+ n * FSEG_FRAG_SLOT_SIZE)); + n * FSEG_FRAG_SLOT_SIZE));
} }
...@@ -2025,8 +2013,7 @@ fseg_set_nth_frag_page_no( ...@@ -2025,8 +2013,7 @@ fseg_set_nth_frag_page_no(
{ {
ut_ad(inode && mtr); ut_ad(inode && mtr);
ut_ad(n < FSEG_FRAG_ARR_N_SLOTS); ut_ad(n < FSEG_FRAG_ARR_N_SLOTS);
ut_ad(mtr_memo_contains(mtr, buf_block_align(inode), ut_ad(mtr_memo_contains_page(mtr, inode, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
mlog_write_ulint(inode + FSEG_FRAG_ARR + n * FSEG_FRAG_SLOT_SIZE, mlog_write_ulint(inode + FSEG_FRAG_ARR + n * FSEG_FRAG_SLOT_SIZE,
page_no, MLOG_4BYTES, mtr); page_no, MLOG_4BYTES, mtr);
...@@ -2281,8 +2268,7 @@ fseg_n_reserved_pages_low( ...@@ -2281,8 +2268,7 @@ fseg_n_reserved_pages_low(
ulint ret; ulint ret;
ut_ad(inode && used && mtr); ut_ad(inode && used && mtr);
ut_ad(mtr_memo_contains(mtr, buf_block_align(inode), ut_ad(mtr_memo_contains_page(mtr, inode, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
*used = mtr_read_ulint(inode + FSEG_NOT_FULL_N_USED, MLOG_4BYTES, mtr) *used = mtr_read_ulint(inode + FSEG_NOT_FULL_N_USED, MLOG_4BYTES, mtr)
+ FSP_EXTENT_SIZE * flst_get_len(inode + FSEG_FULL, mtr) + FSP_EXTENT_SIZE * flst_get_len(inode + FSEG_FULL, mtr)
...@@ -3574,8 +3560,7 @@ fseg_validate_low( ...@@ -3574,8 +3560,7 @@ fseg_validate_low(
ulint n_used = 0; ulint n_used = 0;
ulint n_used2 = 0; ulint n_used2 = 0;
ut_ad(mtr_memo_contains(mtr2, buf_block_align(inode), ut_ad(mtr_memo_contains_page(mtr2, inode, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
ut_ad(mach_read_from_4(inode + FSEG_MAGIC_N) == FSEG_MAGIC_N_VALUE); ut_ad(mach_read_from_4(inode + FSEG_MAGIC_N) == FSEG_MAGIC_N_VALUE);
space = buf_frame_get_space_id(inode); space = buf_frame_get_space_id(inode);
...@@ -3698,8 +3683,7 @@ fseg_print_low( ...@@ -3698,8 +3683,7 @@ fseg_print_low(
ulint page_no; ulint page_no;
dulint d_var; dulint d_var;
ut_ad(mtr_memo_contains(mtr, buf_block_align(inode), ut_ad(mtr_memo_contains_page(mtr, inode, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
space = buf_frame_get_space_id(inode); space = buf_frame_get_space_id(inode);
page_no = buf_frame_get_page_no(inode); page_no = buf_frame_get_page_no(inode);
......
...@@ -32,10 +32,8 @@ flst_add_to_empty( ...@@ -32,10 +32,8 @@ flst_add_to_empty(
ut_ad(mtr && base && node); ut_ad(mtr && base && node);
ut_ad(base != node); ut_ad(base != node);
ut_ad(mtr_memo_contains(mtr, buf_block_align(base), ut_ad(mtr_memo_contains_page(mtr, base, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX)); ut_ad(mtr_memo_contains_page(mtr, node, MTR_MEMO_PAGE_X_FIX));
ut_ad(mtr_memo_contains(mtr, buf_block_align(node),
MTR_MEMO_PAGE_X_FIX));
len = flst_get_len(base, mtr); len = flst_get_len(base, mtr);
ut_a(len == 0); ut_a(len == 0);
...@@ -71,10 +69,8 @@ flst_add_last( ...@@ -71,10 +69,8 @@ flst_add_last(
ut_ad(mtr && base && node); ut_ad(mtr && base && node);
ut_ad(base != node); ut_ad(base != node);
ut_ad(mtr_memo_contains(mtr, buf_block_align(base), ut_ad(mtr_memo_contains_page(mtr, base, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX)); ut_ad(mtr_memo_contains_page(mtr, node, MTR_MEMO_PAGE_X_FIX));
ut_ad(mtr_memo_contains(mtr, buf_block_align(node),
MTR_MEMO_PAGE_X_FIX));
len = flst_get_len(base, mtr); len = flst_get_len(base, mtr);
last_addr = flst_get_last(base, mtr); last_addr = flst_get_last(base, mtr);
...@@ -114,10 +110,8 @@ flst_add_first( ...@@ -114,10 +110,8 @@ flst_add_first(
ut_ad(mtr && base && node); ut_ad(mtr && base && node);
ut_ad(base != node); ut_ad(base != node);
ut_ad(mtr_memo_contains(mtr, buf_block_align(base), ut_ad(mtr_memo_contains_page(mtr, base, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX)); ut_ad(mtr_memo_contains_page(mtr, node, MTR_MEMO_PAGE_X_FIX));
ut_ad(mtr_memo_contains(mtr, buf_block_align(node),
MTR_MEMO_PAGE_X_FIX));
len = flst_get_len(base, mtr); len = flst_get_len(base, mtr);
first_addr = flst_get_first(base, mtr); first_addr = flst_get_first(base, mtr);
...@@ -161,12 +155,9 @@ flst_insert_after( ...@@ -161,12 +155,9 @@ flst_insert_after(
ut_ad(base != node1); ut_ad(base != node1);
ut_ad(base != node2); ut_ad(base != node2);
ut_ad(node2 != node1); ut_ad(node2 != node1);
ut_ad(mtr_memo_contains(mtr, buf_block_align(base), ut_ad(mtr_memo_contains_page(mtr, base, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX)); ut_ad(mtr_memo_contains_page(mtr, node1, MTR_MEMO_PAGE_X_FIX));
ut_ad(mtr_memo_contains(mtr, buf_block_align(node1), ut_ad(mtr_memo_contains_page(mtr, node2, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
ut_ad(mtr_memo_contains(mtr, buf_block_align(node2),
MTR_MEMO_PAGE_X_FIX));
buf_ptr_get_fsp_addr(node1, &space, &node1_addr); buf_ptr_get_fsp_addr(node1, &space, &node1_addr);
buf_ptr_get_fsp_addr(node2, &space, &node2_addr); buf_ptr_get_fsp_addr(node2, &space, &node2_addr);
...@@ -216,12 +207,9 @@ flst_insert_before( ...@@ -216,12 +207,9 @@ flst_insert_before(
ut_ad(base != node2); ut_ad(base != node2);
ut_ad(base != node3); ut_ad(base != node3);
ut_ad(node2 != node3); ut_ad(node2 != node3);
ut_ad(mtr_memo_contains(mtr, buf_block_align(base), ut_ad(mtr_memo_contains_page(mtr, base, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX)); ut_ad(mtr_memo_contains_page(mtr, node2, MTR_MEMO_PAGE_X_FIX));
ut_ad(mtr_memo_contains(mtr, buf_block_align(node2), ut_ad(mtr_memo_contains_page(mtr, node3, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
ut_ad(mtr_memo_contains(mtr, buf_block_align(node3),
MTR_MEMO_PAGE_X_FIX));
buf_ptr_get_fsp_addr(node2, &space, &node2_addr); buf_ptr_get_fsp_addr(node2, &space, &node2_addr);
buf_ptr_get_fsp_addr(node3, &space, &node3_addr); buf_ptr_get_fsp_addr(node3, &space, &node3_addr);
...@@ -268,10 +256,8 @@ flst_remove( ...@@ -268,10 +256,8 @@ flst_remove(
ulint len; ulint len;
ut_ad(mtr && node2 && base); ut_ad(mtr && node2 && base);
ut_ad(mtr_memo_contains(mtr, buf_block_align(base), ut_ad(mtr_memo_contains_page(mtr, base, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX)); ut_ad(mtr_memo_contains_page(mtr, node2, MTR_MEMO_PAGE_X_FIX));
ut_ad(mtr_memo_contains(mtr, buf_block_align(node2),
MTR_MEMO_PAGE_X_FIX));
buf_ptr_get_fsp_addr(node2, &space, &node2_addr); buf_ptr_get_fsp_addr(node2, &space, &node2_addr);
...@@ -345,10 +331,8 @@ flst_cut_end( ...@@ -345,10 +331,8 @@ flst_cut_end(
ulint len; ulint len;
ut_ad(mtr && node2 && base); ut_ad(mtr && node2 && base);
ut_ad(mtr_memo_contains(mtr, buf_block_align(base), ut_ad(mtr_memo_contains_page(mtr, base, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX)); ut_ad(mtr_memo_contains_page(mtr, node2, MTR_MEMO_PAGE_X_FIX));
ut_ad(mtr_memo_contains(mtr, buf_block_align(node2),
MTR_MEMO_PAGE_X_FIX));
ut_ad(n_nodes > 0); ut_ad(n_nodes > 0);
buf_ptr_get_fsp_addr(node2, &space, &node2_addr); buf_ptr_get_fsp_addr(node2, &space, &node2_addr);
...@@ -400,10 +384,8 @@ flst_truncate_end( ...@@ -400,10 +384,8 @@ flst_truncate_end(
ulint space; ulint space;
ut_ad(mtr && node2 && base); ut_ad(mtr && node2 && base);
ut_ad(mtr_memo_contains(mtr, buf_block_align(base), ut_ad(mtr_memo_contains_page(mtr, base, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX)); ut_ad(mtr_memo_contains_page(mtr, node2, MTR_MEMO_PAGE_X_FIX));
ut_ad(mtr_memo_contains(mtr, buf_block_align(node2),
MTR_MEMO_PAGE_X_FIX));
if (n_nodes == 0) { if (n_nodes == 0) {
ut_ad(fil_addr_is_null(flst_get_next_addr(node2, mtr))); ut_ad(fil_addr_is_null(flst_get_next_addr(node2, mtr)));
...@@ -444,8 +426,7 @@ flst_validate( ...@@ -444,8 +426,7 @@ flst_validate(
mtr_t mtr2; mtr_t mtr2;
ut_ad(base); ut_ad(base);
ut_ad(mtr_memo_contains(mtr1, buf_block_align(base), ut_ad(mtr_memo_contains_page(mtr1, base, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
/* We use two mini-transaction handles: the first is used to /* We use two mini-transaction handles: the first is used to
lock the base node, and prevent other threads from modifying the lock the base node, and prevent other threads from modifying the
...@@ -502,8 +483,7 @@ flst_print( ...@@ -502,8 +483,7 @@ flst_print(
ulint len; ulint len;
ut_ad(base && mtr); ut_ad(base && mtr);
ut_ad(mtr_memo_contains(mtr, buf_block_align(base), ut_ad(mtr_memo_contains_page(mtr, base, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
frame = page_align(base); frame = page_align(base);
len = flst_get_len(base, mtr); len = flst_get_len(base, mtr);
......
...@@ -634,8 +634,7 @@ ibuf_bitmap_page_get_bits( ...@@ -634,8 +634,7 @@ ibuf_bitmap_page_get_bits(
# error "IBUF_BITS_PER_PAGE % 2 != 0" # error "IBUF_BITS_PER_PAGE % 2 != 0"
#endif #endif
ut_ad(ut_is_2pow(zip_size)); ut_ad(ut_is_2pow(zip_size));
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
if (!zip_size) { if (!zip_size) {
bit_offset = (page_no % UNIV_PAGE_SIZE) * IBUF_BITS_PER_PAGE bit_offset = (page_no % UNIV_PAGE_SIZE) * IBUF_BITS_PER_PAGE
...@@ -686,8 +685,7 @@ ibuf_bitmap_page_set_bits( ...@@ -686,8 +685,7 @@ ibuf_bitmap_page_set_bits(
# error "IBUF_BITS_PER_PAGE % 2 != 0" # error "IBUF_BITS_PER_PAGE % 2 != 0"
#endif #endif
ut_ad(ut_is_2pow(zip_size)); ut_ad(ut_is_2pow(zip_size));
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
#ifdef UNIV_IBUF_DEBUG #ifdef UNIV_IBUF_DEBUG
ut_a((bit != IBUF_BITMAP_BUFFERED) || (val != FALSE) ut_a((bit != IBUF_BITMAP_BUFFERED) || (val != FALSE)
|| (0 == ibuf_count_get(buf_frame_get_space_id(page), || (0 == ibuf_count_get(buf_frame_get_space_id(page),
......
...@@ -143,10 +143,8 @@ btr_page_get_next( ...@@ -143,10 +143,8 @@ btr_page_get_next(
mtr_t* mtr __attribute__((unused))) /* in: mini-transaction handle */ mtr_t* mtr __attribute__((unused))) /* in: mini-transaction handle */
{ {
ut_ad(page && mtr); ut_ad(page && mtr);
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX)
MTR_MEMO_PAGE_X_FIX) || mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_S_FIX));
|| mtr_memo_contains(mtr, buf_block_align(page),
MTR_MEMO_PAGE_S_FIX));
return(mach_read_from_4(page + FIL_PAGE_NEXT)); return(mach_read_from_4(page + FIL_PAGE_NEXT));
} }
...@@ -255,14 +253,11 @@ btr_leaf_page_release( ...@@ -255,14 +253,11 @@ btr_leaf_page_release(
ulint latch_mode, /* in: BTR_SEARCH_LEAF or BTR_MODIFY_LEAF */ ulint latch_mode, /* in: BTR_SEARCH_LEAF or BTR_MODIFY_LEAF */
mtr_t* mtr) /* in: mtr */ mtr_t* mtr) /* in: mtr */
{ {
ut_ad(!mtr_memo_contains(mtr, buf_block_align(page), ut_ad(latch_mode == BTR_SEARCH_LEAF || latch_mode == BTR_MODIFY_LEAF);
MTR_MEMO_MODIFY)); ut_ad(!mtr_memo_contains_page(mtr, page, MTR_MEMO_MODIFY));
if (latch_mode == BTR_SEARCH_LEAF) {
mtr_memo_release(mtr, buf_block_align(page), mtr_memo_release(mtr, buf_block_align(page),
MTR_MEMO_PAGE_S_FIX); latch_mode == BTR_SEARCH_LEAF
} else { ? MTR_MEMO_PAGE_S_FIX
ut_ad(latch_mode == BTR_MODIFY_LEAF); : MTR_MEMO_PAGE_X_FIX);
mtr_memo_release(mtr, buf_block_align(page),
MTR_MEMO_PAGE_X_FIX);
}
} }
...@@ -95,8 +95,8 @@ btr_cur_compress_recommendation( ...@@ -95,8 +95,8 @@ btr_cur_compress_recommendation(
{ {
page_t* page; page_t* page;
ut_ad(mtr_memo_contains(mtr, buf_block_align(btr_cur_get_rec(cursor)), ut_ad(mtr_memo_contains_page(mtr, btr_cur_get_rec(cursor),
MTR_MEMO_PAGE_X_FIX)); MTR_MEMO_PAGE_X_FIX));
page = btr_cur_get_page(cursor); page = btr_cur_get_page(cursor);
...@@ -131,8 +131,8 @@ btr_cur_can_delete_without_compress( ...@@ -131,8 +131,8 @@ btr_cur_can_delete_without_compress(
{ {
page_t* page; page_t* page;
ut_ad(mtr_memo_contains(mtr, buf_block_align(btr_cur_get_rec(cursor)), ut_ad(mtr_memo_contains_page(mtr, btr_cur_get_rec(cursor),
MTR_MEMO_PAGE_X_FIX)); MTR_MEMO_PAGE_X_FIX));
page = btr_cur_get_page(cursor); page = btr_cur_get_page(cursor);
......
...@@ -37,8 +37,7 @@ flst_write_addr( ...@@ -37,8 +37,7 @@ flst_write_addr(
mtr_t* mtr) /* in: mini-transaction handle */ mtr_t* mtr) /* in: mini-transaction handle */
{ {
ut_ad(faddr && mtr); ut_ad(faddr && mtr);
ut_ad(mtr_memo_contains(mtr, buf_block_align(faddr), ut_ad(mtr_memo_contains_page(mtr, faddr, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
mlog_write_ulint(faddr + FIL_ADDR_PAGE, addr.page, MLOG_4BYTES, mtr); mlog_write_ulint(faddr + FIL_ADDR_PAGE, addr.page, MLOG_4BYTES, mtr);
mlog_write_ulint(faddr + FIL_ADDR_BYTE, addr.boffset, mlog_write_ulint(faddr + FIL_ADDR_BYTE, addr.boffset,
...@@ -74,8 +73,8 @@ flst_init( ...@@ -74,8 +73,8 @@ flst_init(
flst_base_node_t* base, /* in: pointer to base node */ flst_base_node_t* base, /* in: pointer to base node */
mtr_t* mtr) /* in: mini-transaction handle */ mtr_t* mtr) /* in: mini-transaction handle */
{ {
ut_ad(mtr_memo_contains(mtr, buf_block_align(base), ut_ad(mtr_memo_contains_page(mtr, base, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
mlog_write_ulint(base + FLST_LEN, 0, MLOG_4BYTES, mtr); mlog_write_ulint(base + FLST_LEN, 0, MLOG_4BYTES, mtr);
flst_write_addr(base + FLST_FIRST, fil_addr_null, mtr); flst_write_addr(base + FLST_FIRST, fil_addr_null, mtr);
flst_write_addr(base + FLST_LAST, fil_addr_null, mtr); flst_write_addr(base + FLST_LAST, fil_addr_null, mtr);
......
...@@ -164,8 +164,7 @@ mlog_write_initial_log_record_fast( ...@@ -164,8 +164,7 @@ mlog_write_initial_log_record_fast(
ulint space; ulint space;
ulint offset; ulint offset;
ut_ad(mtr_memo_contains(mtr, buf_block_align(ptr), ut_ad(mtr_memo_contains_page(mtr, ptr, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
ut_ad(type <= MLOG_BIGGEST_TYPE); ut_ad(type <= MLOG_BIGGEST_TYPE);
ut_ad(ptr && log_ptr); ut_ad(ptr && log_ptr);
......
...@@ -286,6 +286,17 @@ mtr_memo_contains( ...@@ -286,6 +286,17 @@ mtr_memo_contains(
mtr_t* mtr, /* in: mtr */ mtr_t* mtr, /* in: mtr */
void* object, /* in: object to search */ void* object, /* in: object to search */
ulint type); /* in: type of object */ ulint type); /* in: type of object */
/**************************************************************
Checks if memo contains the given page. */
ibool
mtr_memo_contains_page(
/*===================*/
/* out: TRUE if contains */
mtr_t* mtr, /* in: mtr */
byte* ptr, /* in: pointer to buffer frame */
ulint type); /* in: type of object */
/************************************************************* /*************************************************************
Prints info of an mtr handle. */ Prints info of an mtr handle. */
......
...@@ -281,10 +281,8 @@ mtr_read_ulint( ...@@ -281,10 +281,8 @@ mtr_read_ulint(
/* in: mini-transaction handle */ /* in: mini-transaction handle */
{ {
ut_ad(mtr->state == MTR_ACTIVE); ut_ad(mtr->state == MTR_ACTIVE);
ut_ad(mtr_memo_contains(mtr, buf_block_align(ptr), ut_ad(mtr_memo_contains_page(mtr, ptr, MTR_MEMO_PAGE_S_FIX)
MTR_MEMO_PAGE_S_FIX) || mtr_memo_contains_page(mtr, ptr, MTR_MEMO_PAGE_X_FIX));
|| mtr_memo_contains(mtr, buf_block_align(ptr),
MTR_MEMO_PAGE_X_FIX));
if (type == MLOG_1BYTE) { if (type == MLOG_1BYTE) {
return(mach_read_from_1(ptr)); return(mach_read_from_1(ptr));
} else if (type == MLOG_2BYTES) { } else if (type == MLOG_2BYTES) {
...@@ -307,15 +305,26 @@ mtr_read_dulint( ...@@ -307,15 +305,26 @@ mtr_read_dulint(
/* in: mini-transaction handle */ /* in: mini-transaction handle */
{ {
ut_ad(mtr->state == MTR_ACTIVE); ut_ad(mtr->state == MTR_ACTIVE);
ut_ad(ptr && mtr); ut_ad(mtr_memo_contains_page(mtr, ptr, MTR_MEMO_PAGE_S_FIX)
ut_ad(mtr_memo_contains(mtr, buf_block_align(ptr), || mtr_memo_contains_page(mtr, ptr, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_S_FIX)
|| mtr_memo_contains(mtr, buf_block_align(ptr),
MTR_MEMO_PAGE_X_FIX));
return(mach_read_from_8(ptr)); return(mach_read_from_8(ptr));
} }
#ifdef UNIV_DEBUG #ifdef UNIV_DEBUG
/**************************************************************
Checks if memo contains the given page. */
ibool
mtr_memo_contains_page(
/*===================*/
/* out: TRUE if contains */
mtr_t* mtr, /* in: mtr */
byte* ptr, /* in: pointer to buffer frame */
ulint type) /* in: type of object */
{
return(mtr_memo_contains(mtr, buf_block_align(ptr), type));
}
/************************************************************* /*************************************************************
Prints info of an mtr handle. */ Prints info of an mtr handle. */
......
...@@ -3513,8 +3513,7 @@ page_zip_reorganize( ...@@ -3513,8 +3513,7 @@ page_zip_reorganize(
page_t* temp_page; page_t* temp_page;
ulint log_mode; ulint log_mode;
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
ut_ad(page_is_comp(page)); ut_ad(page_is_comp(page));
/* Note that page_zip_validate(page_zip, page) may fail here. */ /* Note that page_zip_validate(page_zip, page) may fail here. */
...@@ -3572,10 +3571,8 @@ page_zip_copy( ...@@ -3572,10 +3571,8 @@ page_zip_copy(
dict_index_t* index, /* in: index of the B-tree */ dict_index_t* index, /* in: index of the B-tree */
mtr_t* mtr) /* in: mini-transaction */ mtr_t* mtr) /* in: mini-transaction */
{ {
ut_ad(mtr_memo_contains(mtr, buf_block_align(page), ut_ad(mtr_memo_contains_page(mtr, page, MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX)); ut_ad(mtr_memo_contains_page(mtr, (page_t*) src, MTR_MEMO_PAGE_X_FIX));
ut_ad(mtr_memo_contains(mtr, buf_block_align((page_t*) src),
MTR_MEMO_PAGE_X_FIX));
#ifdef UNIV_ZIP_DEBUG #ifdef UNIV_ZIP_DEBUG
ut_a(page_zip_validate(src_zip, src)); ut_a(page_zip_validate(src_zip, src));
#endif /* UNIV_ZIP_DEBUG */ #endif /* UNIV_ZIP_DEBUG */
......
...@@ -315,9 +315,8 @@ row_vers_old_has_index_entry( ...@@ -315,9 +315,8 @@ row_vers_old_has_index_entry(
ulint err; ulint err;
ulint comp; ulint comp;
ut_ad(mtr_memo_contains(mtr, buf_block_align(rec), MTR_MEMO_PAGE_X_FIX) ut_ad(mtr_memo_contains_page(mtr, rec, MTR_MEMO_PAGE_X_FIX)
|| mtr_memo_contains(mtr, buf_block_align(rec), || mtr_memo_contains_page(mtr, rec, MTR_MEMO_PAGE_S_FIX));
MTR_MEMO_PAGE_S_FIX));
#ifdef UNIV_SYNC_DEBUG #ifdef UNIV_SYNC_DEBUG
ut_ad(!rw_lock_own(&(purge_sys->latch), RW_LOCK_SHARED)); ut_ad(!rw_lock_own(&(purge_sys->latch), RW_LOCK_SHARED));
#endif /* UNIV_SYNC_DEBUG */ #endif /* UNIV_SYNC_DEBUG */
...@@ -435,9 +434,8 @@ row_vers_build_for_consistent_read( ...@@ -435,9 +434,8 @@ row_vers_build_for_consistent_read(
ulint err; ulint err;
ut_ad(dict_index_is_clust(index)); ut_ad(dict_index_is_clust(index));
ut_ad(mtr_memo_contains(mtr, buf_block_align(rec), MTR_MEMO_PAGE_X_FIX) ut_ad(mtr_memo_contains_page(mtr, rec, MTR_MEMO_PAGE_X_FIX)
|| mtr_memo_contains(mtr, buf_block_align(rec), || mtr_memo_contains_page(mtr, rec, MTR_MEMO_PAGE_S_FIX));
MTR_MEMO_PAGE_S_FIX));
#ifdef UNIV_SYNC_DEBUG #ifdef UNIV_SYNC_DEBUG
ut_ad(!rw_lock_own(&(purge_sys->latch), RW_LOCK_SHARED)); ut_ad(!rw_lock_own(&(purge_sys->latch), RW_LOCK_SHARED));
#endif /* UNIV_SYNC_DEBUG */ #endif /* UNIV_SYNC_DEBUG */
...@@ -566,9 +564,8 @@ row_vers_build_for_semi_consistent_read( ...@@ -566,9 +564,8 @@ row_vers_build_for_semi_consistent_read(
dulint rec_trx_id = ut_dulint_create(0, 0); dulint rec_trx_id = ut_dulint_create(0, 0);
ut_ad(dict_index_is_clust(index)); ut_ad(dict_index_is_clust(index));
ut_ad(mtr_memo_contains(mtr, buf_block_align(rec), MTR_MEMO_PAGE_X_FIX) ut_ad(mtr_memo_contains_page(mtr, rec, MTR_MEMO_PAGE_X_FIX)
|| mtr_memo_contains(mtr, buf_block_align(rec), || mtr_memo_contains_page(mtr, rec, MTR_MEMO_PAGE_S_FIX));
MTR_MEMO_PAGE_S_FIX));
#ifdef UNIV_SYNC_DEBUG #ifdef UNIV_SYNC_DEBUG
ut_ad(!rw_lock_own(&(purge_sys->latch), RW_LOCK_SHARED)); ut_ad(!rw_lock_own(&(purge_sys->latch), RW_LOCK_SHARED));
#endif /* UNIV_SYNC_DEBUG */ #endif /* UNIV_SYNC_DEBUG */
......
...@@ -1295,10 +1295,9 @@ trx_undo_prev_version_build( ...@@ -1295,10 +1295,9 @@ trx_undo_prev_version_build(
#ifdef UNIV_SYNC_DEBUG #ifdef UNIV_SYNC_DEBUG
ut_ad(rw_lock_own(&(purge_sys->latch), RW_LOCK_SHARED)); ut_ad(rw_lock_own(&(purge_sys->latch), RW_LOCK_SHARED));
#endif /* UNIV_SYNC_DEBUG */ #endif /* UNIV_SYNC_DEBUG */
ut_ad(mtr_memo_contains(index_mtr, buf_block_align(index_rec), ut_ad(mtr_memo_contains_page(index_mtr, index_rec, MTR_MEMO_PAGE_S_FIX)
MTR_MEMO_PAGE_S_FIX) || mtr_memo_contains_page(index_mtr, index_rec,
|| mtr_memo_contains(index_mtr, buf_block_align(index_rec), MTR_MEMO_PAGE_X_FIX));
MTR_MEMO_PAGE_X_FIX));
ut_ad(rec_offs_validate(rec, index, offsets)); ut_ad(rec_offs_validate(rec, index, offsets));
if (!dict_index_is_clust(index)) { if (!dict_index_is_clust(index)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment