mirror of
https://github.com/MariaDB/server.git
synced 2026-05-16 20:07:13 +02:00
row_undo_step(), trx_rollback_active(): Abort the rollback of a recovered ordinary transaction if fast shutdown has been initiated. trx_rollback_resurrected(): Convert an aborted-rollback transaction into a fake XA PREPARE transaction, so that fast shutdown can proceed.
56 lines
1.7 KiB
Text
56 lines
1.7 KiB
Text
#
|
|
# 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;
|
|
CREATE TABLE t8 (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB;
|
|
BEGIN;
|
|
INSERT INTO t8 (a) SELECT NULL FROM t;
|
|
UPDATE t8 SET a=a+100, b=a;
|
|
DELETE FROM t8;
|
|
CREATE TABLE t7 (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB;
|
|
BEGIN;
|
|
INSERT INTO t7 (a) SELECT NULL FROM t;
|
|
UPDATE t7 SET a=a+100, b=a;
|
|
DELETE FROM t7;
|
|
CREATE TABLE t6 (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB;
|
|
BEGIN;
|
|
INSERT INTO t6 (a) SELECT NULL FROM t;
|
|
UPDATE t6 SET a=a+100, b=a;
|
|
DELETE FROM t6;
|
|
CREATE TABLE t5 (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB;
|
|
BEGIN;
|
|
INSERT INTO t5 (a) SELECT NULL FROM t;
|
|
UPDATE t5 SET a=a+100, b=a;
|
|
DELETE FROM t5;
|
|
CREATE TABLE t4 (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB;
|
|
BEGIN;
|
|
INSERT INTO t4 (a) SELECT NULL FROM t;
|
|
UPDATE t4 SET a=a+100, b=a;
|
|
DELETE FROM t4;
|
|
CREATE TABLE t3 (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB;
|
|
BEGIN;
|
|
INSERT INTO t3 (a) SELECT NULL FROM t;
|
|
UPDATE t3 SET a=a+100, b=a;
|
|
DELETE FROM t3;
|
|
CREATE TABLE t2 (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB;
|
|
BEGIN;
|
|
INSERT INTO t2 (a) SELECT NULL FROM t;
|
|
UPDATE t2 SET a=a+100, b=a;
|
|
DELETE FROM t2;
|
|
CREATE TABLE t1 (a SERIAL, b INT UNIQUE, c INT UNIQUE) ENGINE=InnoDB;
|
|
BEGIN;
|
|
INSERT INTO t1 (a) SELECT NULL FROM t;
|
|
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;
|
|
SET GLOBAL innodb_flush_log_at_trx_commit=1;
|
|
CREATE TABLE u(a SERIAL) ENGINE=INNODB;
|
|
# Kill and restart
|
|
DROP TABLE t,u;
|