--source include/have_innodb.inc --source include/not_embedded.inc --source include/no_valgrind_without_big.inc --source include/have_sequence.inc # Flush any open myisam tables from previous tests FLUSH TABLES; call mtr.add_suppression("Found 1 prepared XA transactions"); --echo # --echo # MDEV-13797 InnoDB may hang if shutdown is initiated soon after startup --echo # while rolling back recovered incomplete transactions --echo # let $size = 100; let $trx = 8; let $c = $trx; connect (con$c,localhost,root,,); eval CREATE TABLE t$c (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB; XA START 'x'; eval INSERT INTO t$c (a) SELECT NULL FROM seq_1_to_$size; eval UPDATE t$c SET a=a+$size, b=a; eval DELETE FROM t$c; XA END 'x'; XA PREPARE 'x'; dec $c; while ($c) { connect (con$c,localhost,root,,); eval CREATE TABLE t$c (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB; BEGIN; eval INSERT INTO t$c (a) SELECT NULL FROM seq_1_to_$size; eval UPDATE t$c SET a=a+$size, b=a; eval DELETE FROM t$c; dec $c; } INSERT INTO t1(a) SELECT NULL FROM seq_1_to_1600; --connection default SET GLOBAL innodb_flush_log_at_trx_commit=1; CREATE TABLE MDEV_29559 (a TINYINT UNSIGNED PRIMARY KEY, KEY(a)) ENGINE=InnoDB; INSERT INTO MDEV_29559 VALUES (0x69); FLUSH TABLES; --let $shutdown_timeout=0 --source include/restart_mysqld.inc --let $shutdown_timeout=60 # Perform a slow shutdown in order to roll back all recovered transactions # and to avoid locking conflicts with the DROP TABLE below. XA RECOVER; --disable_query_log SET GLOBAL innodb_fast_shutdown=0; --source include/restart_mysqld.inc --disable_query_log let $c = $trx; disconnect con$c; XA ROLLBACK 'x'; eval DROP TABLE t$c; dec $c; while ($c) { disconnect con$c; eval DROP TABLE t$c; dec $c; } --enable_query_log DROP TABLE MDEV_29559;