1# Scenario: High prio setup with crash points. 2# T1= ({R(B), W(B)}, ) 3# T2= ({R(B), W(B), C}, HIGH PRIORITY) 4# 5# Outcome: T2 completes according to crash point. T1 aborts. 6 7--source include/have_innodb.inc 8--source include/have_debug.inc 9# Valgrind would complain about memory leaks when we crash on purpose. 10--source include/not_valgrind.inc 11# # Embedded server does not support crashing 12--source include/not_embedded.inc 13# # Avoid CrashReporter popup on Mac 14--source include/not_crashrep.inc 15 16CREATE TABLE t1 (c1 INT NOT NULL PRIMARY KEY) ENGINE=InnoDB; 17INSERT INTO t1 VALUES (0); 18 19--connect(con1,localhost,root,,test) 20--connect(con2,localhost,root,,test) 21 22--echo 23--echo # On connection con1 24--connection con1 25START TRANSACTION; 26UPDATE t1 SET c1=1 WHERE c1=0; 27 28--echo 29--echo # On connection con2 30--connection con2 31--source include/start_transaction_high_prio.inc 32UPDATE t1 SET c1=2 WHERE c1=0; 33SET DEBUG='+d,crash_commit_after'; 34# Request a crash, and restart the server. 35# Write file to make mysql-test-run.pl restart the server 36--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect 37--error 2013 38COMMIT; 39 40--disconnect con1 41--disconnect con2 42 43--echo 44--echo # On connection default 45--connection default 46--enable_reconnect 47--source include/wait_until_connected_again.inc 48--echo # Value 2 is expected as server crash on high prio txn (crash_commit_after point) 49SELECT * FROM t1; 50 51DROP TABLE t1; 52 53--echo # Case : crash before commit on high prio transaction 54CREATE TABLE t1 (c1 INT NOT NULL PRIMARY KEY) ENGINE=InnoDB; 55INSERT INTO t1 VALUES (0); 56 57--connect(con1,localhost,root,,test) 58--connect(con2,localhost,root,,test) 59 60--echo 61--echo # On connection con1 62--connection con1 63START TRANSACTION; 64UPDATE t1 SET c1=1 WHERE c1=0; 65 66--echo 67--echo # On connection con2 68--connection con2 69--source include/start_transaction_high_prio.inc 70UPDATE t1 SET c1=2 WHERE c1=0; 71--connection default 72--source include/kill_and_restart_mysqld.inc 73 74--disconnect con1 75--disconnect con2 76 77--echo # Value 0 is expected as server crash on high prio txn (crash_commit_before point) 78SELECT * FROM t1; 79 80DROP TABLE t1; 81