From fed0d85de753172e48623b87652af03935d38862 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Mon, 19 Sep 2022 11:46:25 +0300 Subject: MDEV-29559 Recovery of INSERT_HEAP_DYNAMIC into secondary index fails log_phys_t::apply(): When parsing an INSERT_HEAP_DYNAMIC record, allow ll==rlen to hold for the last part. A secondary index record may inherit all preceding bytes from the infimum pseudo-record. For INSERT_HEAP_REDUNDANT, some header bytes will always be present because the header will never be copied from the page infimum. We will tolerate ll==rlen also in that case to be consistent with the parsing of INSERT_HEAP_DYNAMIC. --- mysql-test/suite/innodb/r/recovery_shutdown.result | 31 +++++++++------------- 1 file changed, 12 insertions(+), 19 deletions(-) (limited to 'mysql-test/suite/innodb/r') diff --git a/mysql-test/suite/innodb/r/recovery_shutdown.result b/mysql-test/suite/innodb/r/recovery_shutdown.result index dc785d580fe..6f7ca6e0d1d 100644 --- a/mysql-test/suite/innodb/r/recovery_shutdown.result +++ b/mysql-test/suite/innodb/r/recovery_shutdown.result @@ -4,13 +4,10 @@ call mtr.add_suppression("Found 1 prepared XA transactions"); # MDEV-13797 InnoDB may hang if shutdown is initiated soon after startup # while rolling back recovered incomplete transactions # -CREATE TABLE t (a INT) ENGINE=InnoDB; -BEGIN; -COMMIT; connect con$c,localhost,root,,; CREATE TABLE t8 (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB; XA START 'x'; -INSERT INTO t8 (a) SELECT NULL FROM t; +INSERT INTO t8 (a) SELECT NULL FROM seq_1_to_100; UPDATE t8 SET a=a+100, b=a; DELETE FROM t8; XA END 'x'; @@ -18,58 +15,54 @@ XA PREPARE 'x'; connect con$c,localhost,root,,; CREATE TABLE t7 (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB; BEGIN; -INSERT INTO t7 (a) SELECT NULL FROM t; +INSERT INTO t7 (a) SELECT NULL FROM seq_1_to_100; UPDATE t7 SET a=a+100, b=a; DELETE FROM t7; connect con$c,localhost,root,,; CREATE TABLE t6 (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB; BEGIN; -INSERT INTO t6 (a) SELECT NULL FROM t; +INSERT INTO t6 (a) SELECT NULL FROM seq_1_to_100; UPDATE t6 SET a=a+100, b=a; DELETE FROM t6; connect con$c,localhost,root,,; CREATE TABLE t5 (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB; BEGIN; -INSERT INTO t5 (a) SELECT NULL FROM t; +INSERT INTO t5 (a) SELECT NULL FROM seq_1_to_100; UPDATE t5 SET a=a+100, b=a; DELETE FROM t5; connect con$c,localhost,root,,; CREATE TABLE t4 (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB; BEGIN; -INSERT INTO t4 (a) SELECT NULL FROM t; +INSERT INTO t4 (a) SELECT NULL FROM seq_1_to_100; UPDATE t4 SET a=a+100, b=a; DELETE FROM t4; connect con$c,localhost,root,,; CREATE TABLE t3 (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB; BEGIN; -INSERT INTO t3 (a) SELECT NULL FROM t; +INSERT INTO t3 (a) SELECT NULL FROM seq_1_to_100; UPDATE t3 SET a=a+100, b=a; DELETE FROM t3; connect con$c,localhost,root,,; CREATE TABLE t2 (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB; BEGIN; -INSERT INTO t2 (a) SELECT NULL FROM t; +INSERT INTO t2 (a) SELECT NULL FROM seq_1_to_100; UPDATE t2 SET a=a+100, b=a; DELETE FROM t2; connect con$c,localhost,root,,; CREATE TABLE t1 (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB; BEGIN; -INSERT INTO t1 (a) SELECT NULL FROM t; +INSERT INTO t1 (a) SELECT NULL FROM seq_1_to_100; UPDATE t1 SET a=a+100, b=a; DELETE FROM t1; -INSERT INTO t1(a) SELECT NULL FROM t; -INSERT INTO t1(a) SELECT NULL FROM t1; -INSERT INTO t1(a) SELECT NULL FROM t1; -INSERT INTO t1(a) SELECT NULL FROM t1; -INSERT INTO t1(a) SELECT NULL FROM t1; +INSERT INTO t1(a) SELECT NULL FROM seq_1_to_1600; connection default; SET GLOBAL innodb_flush_log_at_trx_commit=1; -CREATE TABLE u(a SERIAL) ENGINE=INNODB; +CREATE TABLE MDEV_29559 (a TINYINT UNSIGNED PRIMARY KEY, KEY(a)) ENGINE=InnoDB; +INSERT INTO MDEV_29559 VALUES (0x69); FLUSH TABLES; # restart -# restart XA RECOVER; formatID gtrid_length bqual_length data 1 1 0 x # restart -DROP TABLE t,u; +DROP TABLE MDEV_29559; -- cgit v1.2.1