mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-24796 Assertion `page_has_next... failed in btr_pcur_store_position()
In commit eaeb8ec4b8
(MDEV-24653)
an incorrect debug assertion was introduced.
btr_pcur_store_position(): If the only record in the page is the
instant ALTER TABLE metadata record, we cannot expect there to be
a successor page. The situation could be improved by MDEV-24673 later.
This commit is contained in:
@ -303,5 +303,19 @@ SELECT * FROM t1;
|
|||||||
a b c
|
a b c
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET GLOBAL innodb_limit_optimistic_insert_debug = @saved_limit;
|
SET GLOBAL innodb_limit_optimistic_insert_debug = @saved_limit;
|
||||||
|
#
|
||||||
|
# MDEV-24796 Assertion page_has_next... failed
|
||||||
|
# in btr_pcur_store_position()
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (c INT KEY) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES(1),(2);
|
||||||
|
SET GLOBAL innodb_limit_optimistic_insert_debug=2;
|
||||||
|
ALTER TABLE t1 ADD COLUMN d INT;
|
||||||
|
DELETE FROM t1;
|
||||||
|
InnoDB 0 transactions not purged
|
||||||
|
SELECT * FROM t1 WHERE c<>1 ORDER BY c DESC;
|
||||||
|
c d
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET GLOBAL innodb_limit_optimistic_insert_debug = @saved_limit;
|
||||||
# End of 10.3 tests
|
# End of 10.3 tests
|
||||||
SET GLOBAL innodb_purge_rseg_truncate_frequency = @save_frequency;
|
SET GLOBAL innodb_purge_rseg_truncate_frequency = @save_frequency;
|
||||||
|
@ -348,6 +348,22 @@ SELECT * FROM t1;
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
SET GLOBAL innodb_limit_optimistic_insert_debug = @saved_limit;
|
SET GLOBAL innodb_limit_optimistic_insert_debug = @saved_limit;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-24796 Assertion page_has_next... failed
|
||||||
|
--echo # in btr_pcur_store_position()
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t1 (c INT KEY) ENGINE=InnoDB;
|
||||||
|
INSERT INTO t1 VALUES(1),(2);
|
||||||
|
SET GLOBAL innodb_limit_optimistic_insert_debug=2;
|
||||||
|
ALTER TABLE t1 ADD COLUMN d INT;
|
||||||
|
DELETE FROM t1;
|
||||||
|
--source include/wait_all_purged.inc
|
||||||
|
SELECT * FROM t1 WHERE c<>1 ORDER BY c DESC;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
SET GLOBAL innodb_limit_optimistic_insert_debug = @saved_limit;
|
||||||
|
|
||||||
--echo # End of 10.3 tests
|
--echo # End of 10.3 tests
|
||||||
|
|
||||||
SET GLOBAL innodb_purge_rseg_truncate_frequency = @save_frequency;
|
SET GLOBAL innodb_purge_rseg_truncate_frequency = @save_frequency;
|
||||||
|
@ -169,9 +169,6 @@ before_first:
|
|||||||
ut_ad(!page_has_prev(block->frame));
|
ut_ad(!page_has_prev(block->frame));
|
||||||
rec = page_rec_get_next(rec);
|
rec = page_rec_get_next(rec);
|
||||||
if (page_rec_is_supremum(rec)) {
|
if (page_rec_is_supremum(rec)) {
|
||||||
ut_ad(page_has_next(block->frame)
|
|
||||||
|| block->page.id.page_no()
|
|
||||||
!= index->page);
|
|
||||||
goto before_first;
|
goto before_first;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user