Commit 090a1db9 authored by marko's avatar marko

branches/zip: btr_store_big_rec_extern_fields(): When adjusting the

"next BLOB page" pointer, write it also to the compressed page,
which is the one that will be flushed to disk.
parent 50e286c0
...@@ -3619,7 +3619,6 @@ btr_store_big_rec_extern_fields( ...@@ -3619,7 +3619,6 @@ btr_store_big_rec_extern_fields(
ulint page_no; ulint page_no;
page_t* page; page_t* page;
ulint space_id; ulint space_id;
page_t* prev_page;
page_t* rec_page; page_t* rec_page;
ulint prev_page_no; ulint prev_page_no;
ulint hint_page_no; ulint hint_page_no;
...@@ -3706,25 +3705,31 @@ btr_store_big_rec_extern_fields( ...@@ -3706,25 +3705,31 @@ btr_store_big_rec_extern_fields(
page_no = buf_frame_get_page_no(page); page_no = buf_frame_get_page_no(page);
if (prev_page_no != FIL_NULL) { if (prev_page_no != FIL_NULL) {
byte* next_ptr; page_t* prev_page;
prev_page = buf_page_get(space_id, prev_page = buf_page_get(space_id,
prev_page_no, prev_page_no,
RW_X_LATCH, &mtr); RW_X_LATCH, &mtr);
#ifdef UNIV_SYNC_DEBUG #ifdef UNIV_SYNC_DEBUG
buf_page_dbg_add_level(prev_page, buf_page_dbg_add_level(prev_page,
SYNC_EXTERN_STORAGE); SYNC_EXTERN_STORAGE);
#endif /* UNIV_SYNC_DEBUG */ #endif /* UNIV_SYNC_DEBUG */
if (UNIV_LIKELY_NULL(page_zip)) { if (UNIV_LIKELY_NULL(page_zip)) {
next_ptr = prev_page + FIL_PAGE_NEXT; mlog_write_ulint
(prev_page + FIL_PAGE_NEXT,
page_no, MLOG_4BYTES, &mtr);
memcpy(buf_block_get_page_zip
(buf_block_align(prev_page))
->data + FIL_PAGE_NEXT,
prev_page + FIL_PAGE_NEXT, 4);
} else { } else {
next_ptr = prev_page + FIL_PAGE_DATA mlog_write_ulint
+ BTR_BLOB_HDR_NEXT_PAGE_NO; (prev_page + FIL_PAGE_DATA
+ BTR_BLOB_HDR_NEXT_PAGE_NO,
page_no, MLOG_4BYTES, &mtr);
} }
mlog_write_ulint(next_ptr,
page_no, MLOG_4BYTES, &mtr);
} }
if (UNIV_LIKELY_NULL(page_zip)) { if (UNIV_LIKELY_NULL(page_zip)) {
......
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