mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-24832 Root page AHI removal fails during rollback of bulk insert
This failure is caused by commit 43ca6059ca
(MDEV-24720). InnoDB fails to remove the ahi entries
during rollback of bulk insert operation. InnoDB should
remove the AHI entries of root page before reinitialising it.
Reviewed-by: Marko Mäkelä
This commit is contained in:
@@ -25,5 +25,12 @@ ROLLBACK;
|
|||||||
CHECK TABLE t1;
|
CHECK TABLE t1;
|
||||||
Table Op Msg_type Msg_text
|
Table Op Msg_type Msg_text
|
||||||
test.t1 check status OK
|
test.t1 check status OK
|
||||||
|
#
|
||||||
|
# MDEV-24832 Root page AHI Removal fails fails during
|
||||||
|
# bulk index rollback
|
||||||
|
#
|
||||||
|
BEGIN;
|
||||||
|
INSERT INTO t1 SELECT * FROM seq_1_to_500;
|
||||||
|
ROLLBACK;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET GLOBAL innodb_adaptive_hash_index = @save_ahi;
|
SET GLOBAL innodb_adaptive_hash_index = @save_ahi;
|
||||||
|
@@ -24,5 +24,12 @@ BEGIN;
|
|||||||
INSERT INTO t1 SELECT * FROM seq_1_to_65536;
|
INSERT INTO t1 SELECT * FROM seq_1_to_65536;
|
||||||
ROLLBACK;
|
ROLLBACK;
|
||||||
CHECK TABLE t1;
|
CHECK TABLE t1;
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-24832 Root page AHI Removal fails fails during
|
||||||
|
--echo # bulk index rollback
|
||||||
|
--echo #
|
||||||
|
BEGIN;
|
||||||
|
INSERT INTO t1 SELECT * FROM seq_1_to_500;
|
||||||
|
ROLLBACK;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET GLOBAL innodb_adaptive_hash_index = @save_ahi;
|
SET GLOBAL innodb_adaptive_hash_index = @save_ahi;
|
||||||
|
@@ -1209,16 +1209,16 @@ void dict_index_t::clear(que_thr_t *thr)
|
|||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
|
|
||||||
mtr.memset(root_block, PAGE_HEADER + PAGE_BTR_SEG_LEAF,
|
|
||||||
FSEG_HEADER_SIZE, 0);
|
|
||||||
if (fseg_create(table->space, PAGE_HEADER + PAGE_BTR_SEG_LEAF, &mtr, false,
|
|
||||||
root_block))
|
|
||||||
btr_root_page_init(root_block, id, this, &mtr);
|
|
||||||
#ifdef BTR_CUR_HASH_ADAPT
|
#ifdef BTR_CUR_HASH_ADAPT
|
||||||
if (root_block->index)
|
if (root_block->index)
|
||||||
btr_search_drop_page_hash_index(root_block);
|
btr_search_drop_page_hash_index(root_block);
|
||||||
ut_ad(n_ahi_pages() == 0);
|
ut_ad(n_ahi_pages() == 0);
|
||||||
#endif
|
#endif
|
||||||
|
mtr.memset(root_block, PAGE_HEADER + PAGE_BTR_SEG_LEAF,
|
||||||
|
FSEG_HEADER_SIZE, 0);
|
||||||
|
if (fseg_create(table->space, PAGE_HEADER + PAGE_BTR_SEG_LEAF, &mtr, false,
|
||||||
|
root_block))
|
||||||
|
btr_root_page_init(root_block, id, this, &mtr);
|
||||||
}
|
}
|
||||||
|
|
||||||
mtr.commit();
|
mtr.commit();
|
||||||
|
Reference in New Issue
Block a user