--source include/galera_cluster.inc --source include/have_innodb.inc # # Test the following sequence of events on the master: # # 1. Connection #1 begins a SR transaction # 2. Connection #2 issues DDL # 3. Connection #1 attempts to continue the transaction, gets deadlock # 4. Connection #1 retries the transaction and succeeds # --connection node_1 CREATE TABLE t1 (f1 INTEGER PRIMARY KEY) ENGINE=InnoDB; SET SESSION wsrep_trx_fragment_size = 1; SET AUTOCOMMIT=OFF; START TRANSACTION; INSERT INTO t1 VALUES (1); INSERT INTO t1 VALUES (2); INSERT INTO t1 VALUES (3); INSERT INTO t1 VALUES (4); INSERT INTO t1 VALUES (5); --connection node_2 # SR replication is triggered and rows have been delivered to the slave SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; --let $wait_condition = SELECT COUNT(*) = 5 FROM t1; --source include/wait_condition.inc SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; SELECT COUNT(*) as expect_5 FROM mysql.wsrep_streaming_log; --connect node_1a, 127.0.0.1, root, , test, $NODE_MYPORT_1 ALTER TABLE t1 ADD COLUMN f2 INTEGER; --connection node_1 --error ER_LOCK_DEADLOCK INSERT INTO t1 VALUES (6); SELECT COUNT(*) as expect_0 FROM mysql.wsrep_streaming_log; # Check that the transaction thus aborted could be reissued ROLLBACK; START TRANSACTION; INSERT INTO t1 (f1) VALUES (1); INSERT INTO t1 (f1) VALUES (2); INSERT INTO t1 (f1) VALUES (3); INSERT INTO t1 (f1) VALUES (4); INSERT INTO t1 (f1) VALUES (5); INSERT INTO t1 (f1) VALUES (6); COMMIT; SELECT COUNT(*) as expect_6 FROM t1; SELECT * FROM t1; SELECT COUNT(*) as expect_0 FROM mysql.wsrep_streaming_log; --connection node_2 SELECT COUNT(*) as expect_6 FROM t1; SELECT * FROM t1; SELECT COUNT(*) as expect_0 FROM mysql.wsrep_streaming_log; DROP TABLE t1;