diff options
Diffstat (limited to 'storage/innobase/page/page0zip.cc')
-rw-r--r-- | storage/innobase/page/page0zip.cc | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/storage/innobase/page/page0zip.cc b/storage/innobase/page/page0zip.cc index 277af52eaef..10d905e0c8b 100644 --- a/storage/innobase/page/page0zip.cc +++ b/storage/innobase/page/page0zip.cc @@ -885,7 +885,7 @@ page_zip_compress_node_ptrs( do { const rec_t* rec = *recs++; - offsets = rec_get_offsets(rec, index, offsets, + offsets = rec_get_offsets(rec, index, offsets, false, ULINT_UNDEFINED, &heap); /* Only leaf nodes may contain externally stored columns. */ ut_ad(!rec_offs_any_extern(offsets)); @@ -1134,7 +1134,7 @@ page_zip_compress_clust( do { const rec_t* rec = *recs++; - offsets = rec_get_offsets(rec, index, offsets, + offsets = rec_get_offsets(rec, index, offsets, true, ULINT_UNDEFINED, &heap); ut_ad(rec_offs_n_fields(offsets) == dict_index_get_n_fields(index)); @@ -2078,6 +2078,7 @@ page_zip_apply_log( sorted by address (indexed by heap_no - PAGE_HEAP_NO_USER_LOW) */ ulint n_dense,/*!< in: size of recs[] */ + bool is_leaf,/*!< in: whether this is a leaf page */ ulint trx_id_col,/*!< in: column number of trx_id in the index, or ULINT_UNDEFINED if none */ ulint heap_status, @@ -2153,7 +2154,7 @@ page_zip_apply_log( /* Clear the data bytes of the record. */ mem_heap_t* heap = NULL; ulint* offs; - offs = rec_get_offsets(rec, index, offsets, + offs = rec_get_offsets(rec, index, offsets, is_leaf, ULINT_UNDEFINED, &heap); memset(rec, 0, rec_offs_data_size(offs)); @@ -2349,7 +2350,7 @@ page_zip_decompress_node_ptrs( } /* Read the offsets. The status bits are needed here. */ - offsets = rec_get_offsets(rec, index, offsets, + offsets = rec_get_offsets(rec, index, offsets, false, ULINT_UNDEFINED, &heap); /* Non-leaf nodes should not have any externally @@ -2435,7 +2436,7 @@ zlib_done: const byte* mod_log_ptr; mod_log_ptr = page_zip_apply_log(d_stream->next_in, d_stream->avail_in + 1, - recs, n_dense, + recs, n_dense, false, ULINT_UNDEFINED, heap_status, index, offsets); @@ -2466,7 +2467,7 @@ zlib_done: for (slot = 0; slot < n_dense; slot++) { rec_t* rec = recs[slot]; - offsets = rec_get_offsets(rec, index, offsets, + offsets = rec_get_offsets(rec, index, offsets, false, ULINT_UNDEFINED, &heap); /* Non-leaf nodes should not have any externally stored columns. */ @@ -2587,7 +2588,7 @@ zlib_done: const byte* mod_log_ptr; mod_log_ptr = page_zip_apply_log(d_stream->next_in, d_stream->avail_in + 1, - recs, n_dense, + recs, n_dense, true, ULINT_UNDEFINED, heap_status, index, offsets); @@ -2790,7 +2791,7 @@ page_zip_decompress_clust( } /* Read the offsets. The status bits are needed here. */ - offsets = rec_get_offsets(rec, index, offsets, + offsets = rec_get_offsets(rec, index, offsets, true, ULINT_UNDEFINED, &heap); /* This is a leaf page in a clustered index. */ @@ -2916,7 +2917,7 @@ zlib_done: const byte* mod_log_ptr; mod_log_ptr = page_zip_apply_log(d_stream->next_in, d_stream->avail_in + 1, - recs, n_dense, + recs, n_dense, true, trx_id_col, heap_status, index, offsets); @@ -2952,7 +2953,7 @@ zlib_done: rec_t* rec = recs[slot]; ibool exists = !page_zip_dir_find_free( page_zip, page_offset(rec)); - offsets = rec_get_offsets(rec, index, offsets, + offsets = rec_get_offsets(rec, index, offsets, true, ULINT_UNDEFINED, &heap); dst = rec_get_nth_field(rec, offsets, @@ -3463,6 +3464,7 @@ page_zip_validate_low( page + PAGE_NEW_INFIMUM, TRUE); trec = page_rec_get_next_low( temp_page + PAGE_NEW_INFIMUM, TRUE); + ut_d(const bool is_leaf = page_is_leaf(page)); do { if (page_offset(rec) != page_offset(trec)) { @@ -3477,7 +3479,7 @@ page_zip_validate_low( if (index) { /* Compare the data. */ offsets = rec_get_offsets( - rec, index, offsets, + rec, index, offsets, is_leaf, ULINT_UNDEFINED, &heap); if (memcmp(rec - rec_offs_extra_size(offsets), |