diff options
Diffstat (limited to 'mysql-test/suite/innodb/t/innodb_bug59641.test')
-rw-r--r-- | mysql-test/suite/innodb/t/innodb_bug59641.test | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/mysql-test/suite/innodb/t/innodb_bug59641.test b/mysql-test/suite/innodb/t/innodb_bug59641.test new file mode 100644 index 00000000..36001133 --- /dev/null +++ b/mysql-test/suite/innodb/t/innodb_bug59641.test @@ -0,0 +1,58 @@ +--source include/have_innodb.inc +# Bug #59641 Prepared XA transaction causes shutdown hang after a crash + +-- source include/not_embedded.inc + +--disable_query_log +call mtr.add_suppression("Found 3 prepared XA transactions"); +FLUSH TABLES; +--enable_query_log + +CREATE TABLE t(a INT PRIMARY KEY, b INT)ENGINE=InnoDB; +INSERT INTO t VALUES(2,2),(4,4),(8,8),(16,16),(32,32); +COMMIT; +XA START '123'; +INSERT INTO t VALUES(1,1); +XA END '123'; +XA PREPARE '123'; + +CONNECT (con1,localhost,root,,); + +XA START '456'; +INSERT INTO t VALUES(3,47),(5,67); +UPDATE t SET b=2*b WHERE a BETWEEN 5 AND 8; +XA END '456'; +XA PREPARE '456'; + +CONNECT (con2,localhost,root,,); + +XA START '789'; +UPDATE t SET b=4*a WHERE a=32; +XA END '789'; +XA PREPARE '789'; + +CONNECT (con3,localhost,root,,); + +--let $shutdown_timeout=0 +--source include/restart_mysqld.inc +SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; +--disable_ps2_protocol +SELECT * FROM t; +--enable_ps2_protocol +COMMIT; + +--source include/restart_mysqld.inc + +SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; +--disable_ps2_protocol +SELECT * FROM t; +--enable_ps2_protocol +COMMIT; +--sorted_result +XA RECOVER; +XA ROLLBACK '123'; +XA ROLLBACK '456'; +XA COMMIT '789'; +SELECT * FROM t; + +DROP TABLE t; |