# # Server restart with uncommitted XA transactions # --source ../have_engine.inc --source support_xa.inc # Before we start, we want to restart the server gracefully, # so GCOV information and everything else is properly stored --enable_reconnect --append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect restart EOF --shutdown_server --source include/wait_until_connected_again.inc call mtr.add_suppression("Found 2 prepared XA transactions"); if (!$support_xa) { --disable_query_log call mtr.add_suppression("Table '.*t1' is marked as crashed and should be repaired"); call mtr.add_suppression("Checking table: '.*t1'"); --enable_query_log } # Close all unused tables to prevent unrelated corruption FLUSH TABLES; --disable_warnings DROP TABLE IF EXISTS t1; --enable_warnings --connect (con1,localhost,root,,) --connect (con2,localhost,root,,) --connection con1 --let $create_definition = a $int_col --source ../create_table.inc XA START 'xa1'; INSERT INTO t1 (a) VALUES (1),(2); XA END 'xa1'; XA PREPARE 'xa1'; --connection con2 XA START 'xa2'; INSERT INTO t1 (a) VALUES (3); INSERT INTO t1 (a) VALUES (4); XA END 'xa2'; XA PREPARE 'xa2'; --connection default --enable_reconnect --append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect wait EOF --shutdown_server 0 --source include/wait_until_disconnected.inc --append_file $MYSQLTEST_VARDIR/tmp/mysqld.1.expect restart EOF --source include/wait_until_connected_again.inc XA RECOVER; XA ROLLBACK 'xa1'; XA COMMIT 'xa2'; --replace_result \\ / SELECT a FROM t1; DROP TABLE t1; --source ../cleanup_engine.inc