# # Test Outline: # ============ # # This test tests the scenario for MW-369 where a child table row is # deleted concurrently from the other node while a transaction updates # the parent table referred by the child table row. # # The p table will originally have rows (1, 0), (2, 0) # The c table will originally have row (1, 1) which points to parent # table row (1, 0). # # A row (1, 1) pointing to parent row (1, 0) is deleted from # connection node_2, the transaction which tries to update the # parent row (1, 0) is run from connection node_1. # # Expected Outcome: # ================ # Both operations on node_1 and node_2 should succeed without conflicts. # The parent table should contain values (1, 1), (2, 0) and the child # table should be empty. --source include/galera_cluster.inc --source include/have_innodb.inc --source include/have_debug_sync.inc --source suite/galera/include/galera_have_debug_sync.inc CREATE TABLE p (f1 INTEGER PRIMARY KEY, f2 INTEGER) ENGINE=INNODB; CREATE TABLE c (f1 INTEGER PRIMARY KEY, p_id INTEGER, CONSTRAINT fk_1 FOREIGN KEY (p_id) REFERENCES p (f1)) ; INSERT INTO p VALUES (1, 0); INSERT INTO p VALUES (2, 0); INSERT INTO c VALUES (1, 1); --let $mw_369_parent_query = UPDATE p SET f2 = 1 WHERE f1 = 1 --let $mw_369_child_query = DELETE FROM c WHERE f1 = 1 --source MW-369.inc # Commit succeeds --connection node_1 --reap --connection node_2 SELECT * FROM p; SELECT * FROM c; DROP TABLE c; DROP TABLE p;