mirror of
https://github.com/MariaDB/server.git
synced 2025-05-28 13:01:41 +03:00
MDEV-18009 Missing redo log flush in innodb.instant_alter_crash
Ensure that the 'auxiliary transactions' that are there for flushing the incomplete undo log of the to-be-recovered DDL transactions are actually making modifications. This is a backport of 2fe40a7af05aaa4ee64afcc82ba7e462eecacaae from MariaDB 10.4.
This commit is contained in:
parent
09aa5d3f69
commit
646a3bd72d
@ -5,7 +5,7 @@ FLUSH TABLES;
|
||||
CREATE TABLE t1(id INT PRIMARY KEY, c2 INT UNIQUE)
|
||||
ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
INSERT INTO t1 VALUES(1,2);
|
||||
INSERT INTO t1 VALUES(0,2);
|
||||
BEGIN;
|
||||
INSERT INTO t2 VALUES(2,1);
|
||||
ALTER TABLE t2 ADD COLUMN (c3 TEXT NOT NULL DEFAULT 'De finibus bonorum');
|
||||
@ -15,16 +15,17 @@ ALTER TABLE t1 ADD COLUMN (c3 TEXT NOT NULL DEFAULT ' et malorum');
|
||||
connection default;
|
||||
SET DEBUG_SYNC='now WAIT_FOR ddl';
|
||||
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
||||
COMMIT;
|
||||
INSERT INTO t2 VALUES(3,4,'accusantium doloremque laudantium');
|
||||
# Kill the server
|
||||
disconnect ddl;
|
||||
SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
|
||||
SELECT * FROM t1;
|
||||
id c2
|
||||
1 2
|
||||
0 2
|
||||
SELECT * FROM t2;
|
||||
id c2 c3
|
||||
2 1 De finibus bonorum
|
||||
3 4 accusantium doloremque laudantium
|
||||
BEGIN;
|
||||
DELETE FROM t1;
|
||||
ROLLBACK;
|
||||
@ -41,11 +42,13 @@ DELETE FROM t1;
|
||||
disconnect ddl;
|
||||
SET @saved_frequency= @@GLOBAL.innodb_purge_rseg_truncate_frequency;
|
||||
SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
|
||||
FOUND 2 /\[Note\] InnoDB: Rolled back recovered transaction / in mysqld.1.err
|
||||
SELECT * FROM t1;
|
||||
id c2
|
||||
SELECT * FROM t2;
|
||||
id c2 c3
|
||||
2 1 De finibus bonorum
|
||||
3 4 accusantium doloremque laudantium
|
||||
64 42 De finibus bonorum
|
||||
347 33101 et malorum
|
||||
BEGIN;
|
||||
@ -59,27 +62,32 @@ N_RECS=0; LEVEL=0
|
||||
header=0x010000030074 (id=0x696e66696d756d00)
|
||||
header=0x010008030000 (id=0x73757072656d756d00)
|
||||
t2 clustered index root page(type 18):
|
||||
N_RECS=4; LEVEL=0
|
||||
N_RECS=5; LEVEL=0
|
||||
header=0x010000030088 (id=0x696e66696d756d00)
|
||||
header=0x1000100b00b9 (id=0x80000000,
|
||||
DB_TRX_ID=0x000000000000,
|
||||
DB_ROLL_PTR=0x80000000000000,
|
||||
c2=NULL(4 bytes),
|
||||
c3=0x44652066696e6962757320626f6e6f72756d)
|
||||
header=0x0000180900d8 (id=0x80000002,
|
||||
header=0x0000180900d9 (id=0x80000002,
|
||||
DB_TRX_ID=0x000000000000,
|
||||
DB_ROLL_PTR=0x80000000000000,
|
||||
c2=0x80000001)
|
||||
header=0x0000200900f8 (id=0x80000040,
|
||||
header=0x0000200b0119 (id=0x80000003,
|
||||
DB_TRX_ID=0x000000000000,
|
||||
DB_ROLL_PTR=0x80000000000000,
|
||||
c2=0x80000004,
|
||||
c3=0x6163637573616e7469756d20646f6c6f72656d717565206c617564616e7469756d)
|
||||
header=0x000028090139 (id=0x80000040,
|
||||
DB_TRX_ID=0x000000000000,
|
||||
DB_ROLL_PTR=0x80000000000000,
|
||||
c2=0x8000002a)
|
||||
header=0x0000280b0074 (id=0x8000015b,
|
||||
header=0x0000300b0074 (id=0x8000015b,
|
||||
DB_TRX_ID=0x000000000000,
|
||||
DB_ROLL_PTR=0x80000000000000,
|
||||
c2=0x8000814d,
|
||||
c3=0x206574206d616c6f72756d)
|
||||
header=0x050008030000 (id=0x73757072656d756d00)
|
||||
header=0x060008030000 (id=0x73757072656d756d00)
|
||||
UNLOCK TABLES;
|
||||
DELETE FROM t2;
|
||||
InnoDB 0 transactions not purged
|
||||
|
@ -16,7 +16,7 @@ let MYSQLD_DATADIR=`select @@datadir`;
|
||||
CREATE TABLE t1(id INT PRIMARY KEY, c2 INT UNIQUE)
|
||||
ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
||||
CREATE TABLE t2 LIKE t1;
|
||||
INSERT INTO t1 VALUES(1,2);
|
||||
INSERT INTO t1 VALUES(0,2);
|
||||
BEGIN;
|
||||
INSERT INTO t2 VALUES(2,1);
|
||||
ALTER TABLE t2 ADD COLUMN (c3 TEXT NOT NULL DEFAULT 'De finibus bonorum');
|
||||
@ -29,7 +29,7 @@ ALTER TABLE t1 ADD COLUMN (c3 TEXT NOT NULL DEFAULT ' et malorum');
|
||||
connection default;
|
||||
SET DEBUG_SYNC='now WAIT_FOR ddl';
|
||||
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
||||
COMMIT;
|
||||
INSERT INTO t2 VALUES(3,4,'accusantium doloremque laudantium');
|
||||
|
||||
--source include/kill_mysqld.inc
|
||||
disconnect ddl;
|
||||
@ -62,6 +62,10 @@ disconnect ddl;
|
||||
SET @saved_frequency= @@GLOBAL.innodb_purge_rseg_truncate_frequency;
|
||||
SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
|
||||
|
||||
let SEARCH_FILE= $MYSQLTEST_VARDIR/log/mysqld.1.err;
|
||||
let SEARCH_PATTERN= \[Note\] InnoDB: Rolled back recovered transaction ;
|
||||
-- source include/search_pattern_in_file.inc
|
||||
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
BEGIN;
|
||||
|
Loading…
x
Reference in New Issue
Block a user