connection node_2;
connection node_1;
CREATE TABLE user(id int primary key, j int) ENGINE=InnoDB;
CREATE TABLE user_session(id int primary key, fk1 int, fk2 int) ENGINE=InnoDB;
alter table user_session add foreign key (fk1) references user(id);
INSERT INTO user values (1,0), (2,0), (3,0), (4,0);
INSERT INTO user_session values (1,1,1);
connect node_1_u, 127.0.0.1, root, , test, $NODE_MYPORT_1;
connect node_1_i, 127.0.0.1, root, , test, $NODE_MYPORT_1;
connect node_2_i, 127.0.0.1, root, , test, $NODE_MYPORT_2;
"Phase 1: plain SQL statements"
connection node_1;
connection node_1_u;
begin;
update user set j = j + 1 WHERE id > 0;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
insert into user_session(id,fk1,fk2) values (2, 2, 2);
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
insert into user_session(id,fk1,fk2) values (2, 2, 3);
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1_u;
begin;
update user set j = j + 1 WHERE id > 0;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
insert into user_session(id,fk1,fk2) values (2, 2, 2);
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
insert into user_session(id,fk1,fk2) values (2, 2, 3);
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1_u;
begin;
update user set j = j + 1 WHERE id > 0;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
insert into user_session(id,fk1,fk2) values (2, 2, 2);
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
insert into user_session(id,fk1,fk2) values (2, 2, 3);
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1_u;
begin;
update user set j = j + 1 WHERE id > 0;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
insert into user_session(id,fk1,fk2) values (2, 2, 2);
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
insert into user_session(id,fk1,fk2) values (2, 2, 3);
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1_u;
begin;
update user set j = j + 1 WHERE id > 0;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
insert into user_session(id,fk1,fk2) values (2, 2, 2);
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
insert into user_session(id,fk1,fk2) values (2, 2, 3);
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1_u;
begin;
update user set j = j + 1 WHERE id > 0;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
insert into user_session(id,fk1,fk2) values (2, 2, 2);
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
insert into user_session(id,fk1,fk2) values (2, 2, 3);
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1_u;
begin;
update user set j = j + 1 WHERE id > 0;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
insert into user_session(id,fk1,fk2) values (2, 2, 2);
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
insert into user_session(id,fk1,fk2) values (2, 2, 3);
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1_u;
begin;
update user set j = j + 1 WHERE id > 0;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
insert into user_session(id,fk1,fk2) values (2, 2, 2);
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
insert into user_session(id,fk1,fk2) values (2, 2, 3);
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1_u;
begin;
update user set j = j + 1 WHERE id > 0;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
insert into user_session(id,fk1,fk2) values (2, 2, 2);
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
insert into user_session(id,fk1,fk2) values (2, 2, 3);
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1_u;
begin;
update user set j = j + 1 WHERE id > 0;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
insert into user_session(id,fk1,fk2) values (2, 2, 2);
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
insert into user_session(id,fk1,fk2) values (2, 2, 3);
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
"Phase 2: prepared statements"
connection node_1_u;
prepare upd  from 'update user set j = j + 1 WHERE id > 0';
connection node_1_i;
prepare ins1 from 'insert into user_session(id,fk1,fk2) values (2, 2, 2)';
connection node_2_i;
prepare ins2 from 'insert into user_session(id,fk1,fk2) values (2, 2, 3)';
connection node_1;
connection node_1_u;
begin;
execute upd;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
execute ins1;
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
execute ins2;
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1_u;
begin;
execute upd;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
execute ins1;
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
execute ins2;
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1_u;
begin;
execute upd;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
execute ins1;
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
execute ins2;
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1_u;
begin;
execute upd;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
execute ins1;
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
execute ins2;
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1_u;
begin;
execute upd;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
execute ins1;
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
execute ins2;
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1_u;
begin;
execute upd;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
execute ins1;
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
execute ins2;
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1_u;
begin;
execute upd;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
execute ins1;
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
execute ins2;
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1_u;
begin;
execute upd;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
execute ins1;
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
execute ins2;
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1_u;
begin;
execute upd;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
execute ins1;
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
execute ins2;
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1_u;
begin;
execute upd;
connection node_1_i;
set debug_sync='lock_wait_start SIGNAL ins_waiting WAIT_FOR cont_ins';
execute ins1;
connection node_1;
set debug_sync='now WAIT_FOR ins_waiting';
connection node_2_i;
execute ins2;
connection node_1;
set debug_sync='now SIGNAL cont_ins';
connection node_1_i;
connection node_1_u;
commit;
connection node_1;
truncate user_session;
set debug_sync = reset;
connection node_1;
drop table user_session,user;
