mirror of
https://github.com/MariaDB/server.git
synced 2025-01-30 10:31:54 +01:00
MDEV-21549 IMPORT TABLESPACE fails to adjust all tablespace ID
After MDEV-12353, the consistency check that I originally added for
commit 1b9fe0bbac
(InnoDB Plugin for MySQL 5.1) started randomly failing.
It turns out that the IMPORT TABLESPACE code was always incorrect:
it did not update the (redundantly stored) tablespace ID
in index tree root pages. It only does that for page headers
and BLOB pointers.
PageConverter::update_index_page(): Update the tablespace ID
in the BTR_SEG_TOP and BTR_SEG_LEAF of index root pages.
This commit is contained in:
parent
fcc0b89d52
commit
95da2113a0
1 changed files with 17 additions and 0 deletions
|
@ -1913,6 +1913,23 @@ PageConverter::update_index_page(
|
|||
return(DB_SUCCESS);
|
||||
}
|
||||
|
||||
if (m_index && block->page.id.page_no() == m_index->m_page_no) {
|
||||
byte *b = FIL_PAGE_DATA + PAGE_BTR_SEG_LEAF + FSEG_HDR_SPACE
|
||||
+ page;
|
||||
mach_write_to_4(b, block->page.id.space());
|
||||
|
||||
memcpy(FIL_PAGE_DATA + PAGE_BTR_SEG_TOP + FSEG_HDR_SPACE
|
||||
+ page, b, 4);
|
||||
if (UNIV_LIKELY_NULL(block->page.zip.data)) {
|
||||
memcpy(&block->page.zip.data[FIL_PAGE_DATA
|
||||
+ PAGE_BTR_SEG_TOP
|
||||
+ FSEG_HDR_SPACE], b, 4);
|
||||
memcpy(&block->page.zip.data[FIL_PAGE_DATA
|
||||
+ PAGE_BTR_SEG_LEAF
|
||||
+ FSEG_HDR_SPACE], b, 4);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef UNIV_ZIP_DEBUG
|
||||
ut_a(!block->page.zip.data || page_zip_validate(&block->page.zip, page,
|
||||
m_index->m_srv_index));
|
||||
|
|
Loading…
Add table
Reference in a new issue