mirror of
https://github.com/MariaDB/server.git
synced 2025-11-27 05:41:41 +03:00
The test innodb.innodb_wl6326 that had been disabled in 10.4 due to
MDEV-21535 is failing on 10.5 due to a different reason: the removal
of the MLOG_COMP_END_COPY_CREATED operations in MDEV-12353
commit 276f996af9 caused PAGE_LAST_INSERT
to be set to something nonzero by the function page_copy_rec_list_end().
This in turn would cause btr_page_get_split_rec_to_right() to behave
differently: we would not attempt to split the page at all, but simply
insert the new record into the new, empty, right leaf page.
Even though the change reduced the sizes of some tables, it is better
to aim for balanced trees.
page_copy_rec_list_end(), PageBulk::finishPage():
Preserve PAGE_LAST_INSERT, PAGE_N_DIRECTION, PAGE_DIRECTION.
PageBulk::finish(): Move some common code from PageBulk::finishPage().
55 lines
1.5 KiB
Plaintext
55 lines
1.5 KiB
Plaintext
#
|
|
# Bug#69122 - INNODB DOESN'T REDO-LOG INSERT BUFFER MERGE
|
|
# OPERATION IF IT IS DONE IN-PLACE
|
|
#
|
|
call mtr.add_suppression("InnoDB: innodb_read_only prevents crash recovery");
|
|
call mtr.add_suppression("Plugin initialization aborted at srv0start\\.cc");
|
|
call mtr.add_suppression("Plugin 'InnoDB'");
|
|
FLUSH TABLES;
|
|
CREATE TABLE t1(
|
|
a INT AUTO_INCREMENT PRIMARY KEY,
|
|
b CHAR(1),
|
|
c INT,
|
|
INDEX(b))
|
|
ENGINE=InnoDB STATS_PERSISTENT=0;
|
|
SET GLOBAL innodb_change_buffering_debug = 1;
|
|
INSERT INTO t1 SELECT 0,'x',1 FROM seq_1_to_8192;
|
|
BEGIN;
|
|
SELECT b FROM t1 LIMIT 3;
|
|
b
|
|
x
|
|
x
|
|
x
|
|
connect con1,localhost,root,,;
|
|
BEGIN;
|
|
DELETE FROM t1 WHERE a=1;
|
|
INSERT INTO t1 VALUES(1,'X',1);
|
|
SET DEBUG_DBUG='+d,crash_after_log_ibuf_upd_inplace';
|
|
SELECT b FROM t1 LIMIT 3;
|
|
ERROR HY000: Lost connection to MySQL server during query
|
|
disconnect con1;
|
|
connection default;
|
|
FOUND 1 /Wrote log record for ibuf update in place operation/ in mysqld.1.err
|
|
# restart: --innodb-read-only
|
|
CHECK TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check Error Unknown storage engine 'InnoDB'
|
|
test.t1 check error Corrupt
|
|
FOUND 1 /innodb_read_only prevents crash recovery/ in mysqld.1.err
|
|
# restart: --innodb-force-recovery=5
|
|
SELECT * FROM t1 LIMIT 1;
|
|
a b c
|
|
1 X 1
|
|
SHOW ENGINE INNODB STATUS;
|
|
Type Name Status
|
|
InnoDB insert 0, delete mark 0
|
|
SET GLOBAL innodb_fast_shutdown=0;
|
|
# restart
|
|
CHECK TABLE t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check status OK
|
|
SHOW ENGINE INNODB STATUS;
|
|
Type Name Status
|
|
InnoDB insert 79, delete mark 1
|
|
DROP TABLE t1;
|