diff options
Diffstat (limited to 'storage/innobase/page/page0zip.cc')
-rw-r--r-- | storage/innobase/page/page0zip.cc | 55 |
1 files changed, 27 insertions, 28 deletions
diff --git a/storage/innobase/page/page0zip.cc b/storage/innobase/page/page0zip.cc index d3af50551c1..ec90d73e765 100644 --- a/storage/innobase/page/page0zip.cc +++ b/storage/innobase/page/page0zip.cc @@ -418,7 +418,7 @@ static void page_zip_compress_write_log(buf_block_t *block, return; } - const page_t *page= block->frame; + const page_t *page= block->page.frame; const page_zip_des_t *page_zip= &block->page.zip; /* Read the number of user records. */ ulint trailer_size= ulint(page_dir_get_n_heap(page_zip->data)) - @@ -443,7 +443,6 @@ static void page_zip_compress_write_log(buf_block_t *block, if (trailer_size) mtr->zmemcpy(*block, page_zip_get_size(page_zip) - trailer_size, trailer_size); - block->page.status = buf_page_t::INIT_ON_FLUSH; /* because of mtr_t::init() */ } /******************************************************//** @@ -1280,7 +1279,7 @@ page_zip_compress( my_bool cmp_per_index_enabled; cmp_per_index_enabled = srv_cmp_per_index_enabled; - page_t* page = block->frame; + page_t* page = block->page.frame; page_zip_des_t* page_zip = &block->page.zip; ut_a(page_is_comp(page)); @@ -3533,7 +3532,7 @@ page_zip_write_rec_ext( ulint len; byte* externs = storage; ulint n_ext = rec_offs_n_extern(offsets); - const page_t* const page = block->frame; + const page_t* const page = block->page.frame; page_zip_des_t* const page_zip = &block->page.zip; ut_ad(rec_offs_validate(rec, index, offsets)); @@ -3651,7 +3650,7 @@ void page_zip_write_rec(buf_block_t *block, const byte *rec, const dict_index_t *index, const rec_offs *offsets, ulint create, mtr_t *mtr) { - const page_t* const page = block->frame; + const page_t* const page = block->page.frame; page_zip_des_t* const page_zip = &block->page.zip; byte* data; byte* storage; @@ -3841,7 +3840,7 @@ page_zip_write_blob_ptr( { const byte* field; byte* externs; - const page_t* const page = block->frame; + const page_t* const page = block->page.frame; page_zip_des_t* const page_zip = &block->page.zip; ulint blob_no; ulint len; @@ -3905,7 +3904,7 @@ page_zip_write_node_ptr( byte* storage; page_zip_des_t* const page_zip = &block->page.zip; - ut_d(const page_t* const page = block->frame); + ut_d(const page_t* const page = block->page.frame); ut_ad(page_simple_validate_new(page)); ut_ad(page_zip_simple_validate(page_zip)); ut_ad(page_zip_get_size(page_zip) @@ -3952,7 +3951,7 @@ page_zip_write_trx_id_and_roll_ptr( { page_zip_des_t* const page_zip = &block->page.zip; - ut_d(const page_t* const page = block->frame); + ut_d(const page_t* const page = block->page.frame); ut_ad(page_align(rec) == page); ut_ad(page_simple_validate_new(page)); ut_ad(page_zip_simple_validate(page_zip)); @@ -4053,7 +4052,7 @@ page_zip_clear_rec( byte* field; ulint len; - ut_ad(page_align(rec) == block->frame); + ut_ad(page_align(rec) == block->page.frame); page_zip_des_t* const page_zip = &block->page.zip; /* page_zip_validate() would fail here if a record @@ -4061,7 +4060,7 @@ page_zip_clear_rec( ut_ad(rec_offs_validate(rec, index, offsets)); ut_ad(!page_zip_dir_find(page_zip, page_offset(rec))); ut_ad(page_zip_dir_find_free(page_zip, page_offset(rec))); - ut_ad(page_zip_header_cmp(page_zip, block->frame)); + ut_ad(page_zip_header_cmp(page_zip, block->page.frame)); heap_no = rec_get_heap_no_new(rec); ut_ad(heap_no >= PAGE_HEAP_NO_USER_LOW); @@ -4071,7 +4070,7 @@ page_zip_clear_rec( MEM_CHECK_DEFINED(rec - rec_offs_extra_size(offsets), rec_offs_extra_size(offsets)); - if (!page_is_leaf(block->frame)) { + if (!page_is_leaf(block->page.frame)) { /* Clear node_ptr. On the compressed page, there is an array of node_ptr immediately before the dense page directory, at the very end of the page. */ @@ -4137,7 +4136,7 @@ clear_page_zip: void page_zip_rec_set_deleted(buf_block_t *block, rec_t *rec, bool flag, mtr_t *mtr) { - ut_ad(page_align(rec) == block->frame); + ut_ad(page_align(rec) == block->page.frame); byte *slot= page_zip_dir_find(&block->page.zip, page_offset(rec)); byte b= *slot; if (flag) @@ -4146,7 +4145,7 @@ void page_zip_rec_set_deleted(buf_block_t *block, rec_t *rec, bool flag, b&= byte(~(PAGE_ZIP_DIR_SLOT_DEL >> 8)); mtr->zmemcpy<mtr_t::MAYBE_NOP>(*block, slot, &b, 1); #ifdef UNIV_ZIP_DEBUG - ut_a(page_zip_validate(&block->page.zip, block->frame, nullptr)); + ut_a(page_zip_validate(&block->page.zip, block->page.frame, nullptr)); #endif /* UNIV_ZIP_DEBUG */ } @@ -4161,7 +4160,7 @@ page_zip_rec_set_owned( ulint flag, /*!< in: the owned flag (nonzero=TRUE) */ mtr_t* mtr) /*!< in/out: mini-transaction */ { - ut_ad(page_align(rec) == block->frame); + ut_ad(page_align(rec) == block->page.frame); page_zip_des_t *const page_zip= &block->page.zip; byte *slot= page_zip_dir_find(page_zip, page_offset(rec)); MEM_CHECK_DEFINED(page_zip->data, page_zip_get_size(page_zip)); @@ -4184,8 +4183,8 @@ page_zip_dir_insert( byte* rec, /*!< in: record to insert */ mtr_t* mtr) /*!< in/out: mini-transaction */ { - ut_ad(page_align(cursor->rec) == cursor->block->frame); - ut_ad(page_align(rec) == cursor->block->frame); + ut_ad(page_align(cursor->rec) == cursor->block->page.frame); + ut_ad(page_align(rec) == cursor->block->page.frame); page_zip_des_t *const page_zip= &cursor->block->page.zip; ulint n_dense; @@ -4278,7 +4277,7 @@ void page_zip_dir_delete(buf_block_t *block, byte *rec, const dict_index_t *index, const rec_offs *offsets, const byte *free, mtr_t *mtr) { - ut_ad(page_align(rec) == block->frame); + ut_ad(page_align(rec) == block->page.frame); page_zip_des_t *const page_zip= &block->page.zip; ut_ad(rec_offs_validate(rec, index, offsets)); @@ -4292,22 +4291,22 @@ void page_zip_dir_delete(buf_block_t *block, byte *rec, mach_write_to_2(rec - REC_NEXT, free ? static_cast<uint16_t>(free - rec) : 0); byte *page_free= my_assume_aligned<2>(PAGE_FREE + PAGE_HEADER + - block->frame); + block->page.frame); mtr->write<2>(*block, page_free, page_offset(rec)); byte *garbage= my_assume_aligned<2>(PAGE_GARBAGE + PAGE_HEADER + - block->frame); + block->page.frame); mtr->write<2>(*block, garbage, rec_offs_size(offsets) + mach_read_from_2(garbage)); compile_time_assert(PAGE_GARBAGE == PAGE_FREE + 2); memcpy_aligned<4>(PAGE_FREE + PAGE_HEADER + page_zip->data, page_free, 4); byte *slot_rec= page_zip_dir_find(page_zip, page_offset(rec)); ut_a(slot_rec); - uint16_t n_recs= page_get_n_recs(block->frame); + uint16_t n_recs= page_get_n_recs(block->page.frame); ut_ad(n_recs); - ut_ad(n_recs > 1 || page_get_page_no(block->frame) == index->page); + ut_ad(n_recs > 1 || page_get_page_no(block->page.frame) == index->page); /* This could not be done before page_zip_dir_find(). */ byte *page_n_recs= my_assume_aligned<2>(PAGE_N_RECS + PAGE_HEADER + - block->frame); + block->page.frame); mtr->write<2>(*block, page_n_recs, n_recs - 1U); memcpy_aligned<2>(PAGE_N_RECS + PAGE_HEADER + page_zip->data, page_n_recs, 2); @@ -4344,14 +4343,14 @@ void page_zip_dir_delete(buf_block_t *block, byte *rec, if (const ulint n_ext= rec_offs_n_extern(offsets)) { ut_ad(index->is_primary()); - ut_ad(page_is_leaf(block->frame)); + ut_ad(page_is_leaf(block->page.frame)); /* Shift and zero fill the array of BLOB pointers. */ ulint blob_no = page_zip_get_n_prev_extern(page_zip, rec, index); ut_a(blob_no + n_ext <= page_zip->n_blobs); byte *externs= page_zip->data + page_zip_get_size(page_zip) - - (page_dir_get_n_heap(block->frame) - PAGE_HEAP_NO_USER_LOW) * + (page_dir_get_n_heap(block->page.frame) - PAGE_HEAP_NO_USER_LOW) * PAGE_ZIP_CLUST_LEAF_SLOT_SIZE; byte *ext_end= externs - page_zip->n_blobs * FIELD_REF_SIZE; @@ -4416,10 +4415,10 @@ page_zip_reorganize( temp_block = buf_block_alloc(); btr_search_drop_page_hash_index(block); - temp_page = temp_block->frame; + temp_page = temp_block->page.frame; /* Copy the old page to temporary space */ - memcpy_aligned<UNIV_PAGE_SIZE_MIN>(temp_block->frame, block->frame, + memcpy_aligned<UNIV_PAGE_SIZE_MIN>(temp_page, block->page.frame, srv_page_size); /* Recreate the page: note that global data on page (possible @@ -4505,7 +4504,7 @@ page_zip_copy_recs( dict_index_t* index, /*!< in: index of the B-tree */ mtr_t* mtr) /*!< in: mini-transaction */ { - page_t* page = block->frame; + page_t* page = block->page.frame; page_zip_des_t* page_zip = &block->page.zip; ut_ad(mtr->memo_contains_flagged(block, MTR_MEMO_PAGE_X_FIX)); @@ -4563,7 +4562,7 @@ page_zip_copy_recs( to the compressed data page. */ { page_zip_t* data = page_zip->data; - memcpy(page_zip, src_zip, sizeof *page_zip); + new (page_zip) page_zip_des_t(*src_zip); page_zip->data = data; } ut_ad(page_zip_get_trailer_len(page_zip, dict_index_is_clust(index)) |