connect  addconroot1, localhost, root,,;
connect  addconroot2, localhost, root,,;
connect  addconroot3, localhost, root,,;
connection default;
drop table if exists t1,t2,t3,t4,t5;
set debug_sync='RESET';
set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
create table t1 (j char(5));;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
ERROR 42S01: Table 't1' already exists
connection default;
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `i` int(1) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
create table t1 select 'Test' as j;;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
ERROR 42S01: Table 't1' already exists
connection default;
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `i` int(1) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
create table t3 (j char(5));
set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
create table t1 like t3;;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
ERROR 42S01: Table 't1' already exists
connection default;
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `i` int(1) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
rename table t3 to t1;;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
ERROR 42S01: Table 't1' already exists
connection default;
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `i` int(1) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
alter table t3 rename to t1;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
ERROR 42S01: Table 't1' already exists
connection default;
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `i` int(1) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1;
set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
alter table t3 rename to t1, add k int;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
ERROR 42S01: Table 't1' already exists
connection default;
show create table t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `i` int(1) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1,t3;
set debug_sync='create_table_select_before_open SIGNAL parked WAIT_FOR go';
connection default;
set debug_sync='create_table_select_before_open SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
drop table t1;;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
connection default;
set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
rename table t1 to t2;;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
connection default;
drop table t2;
set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
select * from t1;;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
i
1
connection default;
drop table t1;
set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
insert into t1 values (2);;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
connection default;
select * from t1;
i
1
2
drop table t1;
set @a:=0;
set debug_sync='create_table_select_before_create SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
create trigger t1_bi before insert on t1 for each row set @a:=1;;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
connection default;
select @a;
@a
0
drop table t1;
set debug_sync='create_table_select_before_lock SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
drop table t1;;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
connection default;
set debug_sync='create_table_select_before_lock SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
rename table t1 to t2;;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
connection default;
drop table t2;
set debug_sync='create_table_select_before_lock SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
select * from t1;;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
i
1
connection default;
drop table t1;
set debug_sync='create_table_select_before_lock SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
insert into t1 values (2);;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
connection default;
select * from t1;
i
1
2
drop table t1;
set @a:=0;
set debug_sync='create_table_select_before_lock SIGNAL parked WAIT_FOR go';
create table t1 select 1 as i;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
create trigger t1_bi before insert on t1 for each row set @a:=1;;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
connection default;
select @a;
@a
0
drop table t1;
set debug_sync='create_table_before_check_if_exists SIGNAL parked WAIT_FOR go';
create table if not exists t1 select 1 as i;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
drop table t1;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
connection default;
create table t1 (i int);
set @a:=0;
set debug_sync='create_table_before_check_if_exists SIGNAL parked WAIT_FOR go';
create table if not exists t1 select 1 as i;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
create trigger t1_bi before insert on t1 for each row set @a:=1;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
Warnings:
Note	1050	Table 't1' already exists
connection addconroot1;
connection default;
select @a;
@a
0
select * from t1;
i
drop table t1;
drop table if exists t1,t2;
set debug_sync='RESET';
create table t1 (i int);
set debug_sync='create_table_like_after_open SIGNAL parked WAIT_FOR go';
reset master;
create table t2 like t1;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
insert into t1 values (1);
drop table t1;;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
connection default;
show create table t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `i` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t2;
include/show_binlog_events.inc
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	#	Gtid	#	#	BEGIN GTID #-#-#
master-bin.000001	#	Query	#	#	use `test`; insert into t1 values (1)
master-bin.000001	#	Query	#	#	COMMIT
master-bin.000001	#	Gtid	#	#	GTID #-#-#
master-bin.000001	#	Query	#	#	use `test`; create table t2 like t1
master-bin.000001	#	Gtid	#	#	GTID #-#-#
master-bin.000001	#	Query	#	#	use `test`; DROP TABLE `t1` /* generated by server */
master-bin.000001	#	Gtid	#	#	GTID #-#-#
master-bin.000001	#	Query	#	#	use `test`; DROP TABLE `t2` /* generated by server */
create table t1 (i int);
set debug_sync='create_table_like_before_binlog SIGNAL parked WAIT_FOR go';
reset master;
create table t2 like t1;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
insert into t2 values (1);;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
connection default;
drop table t2;
set debug_sync='create_table_like_before_binlog SIGNAL parked WAIT_FOR go';
create table t2 like t1;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
drop table t2;;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
connection default;
set debug_sync='create_table_like_before_binlog SIGNAL parked WAIT_FOR go';
create table t2 like t1;;
connection addconroot1;
set debug_sync='now WAIT_FOR parked';
drop table t1;;
connection addconroot2;
set debug_sync='now SIGNAL go';
connection default;
connection addconroot1;
connection default;
drop table t2;
disconnect addconroot1;
disconnect addconroot2;
disconnect addconroot3;
set debug_sync='RESET';
include/show_binlog_events.inc
Log_name	Pos	Event_type	Server_id	End_log_pos	Info
master-bin.000001	#	Gtid	#	#	GTID #-#-#
master-bin.000001	#	Query	#	#	use `test`; create table t2 like t1
master-bin.000001	#	Gtid	#	#	BEGIN GTID #-#-#
master-bin.000001	#	Query	#	#	use `test`; insert into t2 values (1)
master-bin.000001	#	Query	#	#	COMMIT
master-bin.000001	#	Gtid	#	#	GTID #-#-#
master-bin.000001	#	Query	#	#	use `test`; DROP TABLE `t2` /* generated by server */
master-bin.000001	#	Gtid	#	#	GTID #-#-#
master-bin.000001	#	Query	#	#	use `test`; create table t2 like t1
master-bin.000001	#	Gtid	#	#	GTID #-#-#
master-bin.000001	#	Query	#	#	use `test`; DROP TABLE `t2` /* generated by server */
master-bin.000001	#	Gtid	#	#	GTID #-#-#
master-bin.000001	#	Query	#	#	use `test`; create table t2 like t1
master-bin.000001	#	Gtid	#	#	GTID #-#-#
master-bin.000001	#	Query	#	#	use `test`; DROP TABLE `t1` /* generated by server */
master-bin.000001	#	Gtid	#	#	GTID #-#-#
master-bin.000001	#	Query	#	#	use `test`; DROP TABLE `t2` /* generated by server */
