--source include/have_innodb.inc --source include/have_debug_sync.inc --source include/not_embedded.inc SET DEBUG_SYNC='reset'; # Save the initial number of concurrent sessions --source include/count_sessions.inc create table t1 (f1 integer, key k1 (f1)) engine=innodb; create table t2 (f1 int, f2 int, key(f1), key(f2)) engine=innodb; create table t3 (f2 int, key(f2)) engine=innodb; insert into t1 values (10); insert into t2 values (10, 20); insert into t3 values (20); alter table t2 add constraint c1 foreign key (f1) references t1(f1) on update cascade; show create table t1; show create table t2; show create table t3; SET DEBUG_SYNC='innodb_rename_table_ready SIGNAL update_can_proceed WAIT_FOR dict_unfreeze'; --send alter table t2 add constraint z1 foreign key (f2) references t3(f2) on update cascade; connect (thr2,localhost,root,,); connection thr2; SET DEBUG_SYNC='innodb_row_update_for_mysql_begin WAIT_FOR update_can_proceed'; SET DEBUG_SYNC='innodb_dml_cascade_dict_unfreeze SIGNAL dict_unfreeze WAIT_FOR foreign_free_cache'; --send update ignore t1 set f1 = 20; connection default; --replace_regex /'[^']*test\/#sql2-[0-9a-f-]*'/'#sql2-temporary'/ --error ER_ERROR_ON_RENAME reap; SET DEBUG_SYNC='now SIGNAL foreign_free_cache'; connection thr2; reap; disconnect thr2; --source include/wait_until_disconnected.inc connection default; drop table t2; drop table t1; drop table t3; # Wait till we reached the initial number of concurrent sessions --source include/wait_until_count_sessions.inc SET DEBUG_SYNC='reset';