# # Test verifies that "ROLLBACK ALTER" is written to binary log upon #ALTER command execution failure. # include/master-slave.inc [connection master] connection master; set global binlog_alter_two_phase = ON; set binlog_alter_two_phase = ON; create table t1 (f1 int primary key) engine=InnoDB; create table t2 (f1 int primary key, constraint c1 foreign key (f1) references t1(f1), constraint c1 foreign key (f1) references t1(f1)) engine=InnoDB; ERROR HY000: Can't create table `test`.`t2` (errno: 150 "Foreign key constraint is incorrectly formed") create table t2 (f1 int primary key, constraint c1 foreign key (f1) references t1(f1)) engine=innodb; alter table t2 add constraint c1 foreign key (f1) references t1(f1); ERROR HY000: Can't create table `test`.`t2` (errno: 121 "Duplicate key on write or update") 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 t1 (f1 int primary key) engine=InnoDB master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `test`; create table t2 (f1 int primary key, constraint c1 foreign key (f1) references t1(f1)) engine=innodb master-bin.000001 # Gtid # # GTID #-#-# START ALTER master-bin.000001 # Query # # use `test`; alter table t2 add constraint c1 foreign key (f1) references t1(f1) master-bin.000001 # Gtid # # GTID #-#-# ROLLBACK ALTER id=# master-bin.000001 # Query # # use `test`; alter table t2 add constraint c1 foreign key (f1) references t1(f1) set foreign_key_checks = 0; alter table t2 add constraint c1 foreign key (f1) references t1(f1); ERROR HY000: Duplicate FOREIGN KEY constraint name 'test/c1' 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 t1 (f1 int primary key) engine=InnoDB master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `test`; create table t2 (f1 int primary key, constraint c1 foreign key (f1) references t1(f1)) engine=innodb master-bin.000001 # Gtid # # GTID #-#-# START ALTER master-bin.000001 # Query # # use `test`; alter table t2 add constraint c1 foreign key (f1) references t1(f1) master-bin.000001 # Gtid # # GTID #-#-# ROLLBACK ALTER id=# master-bin.000001 # Query # # use `test`; alter table t2 add constraint c1 foreign key (f1) references t1(f1) master-bin.000001 # Gtid # # GTID #-#-# START ALTER master-bin.000001 # Query # # use `test`; set foreign_key_checks=1; alter table t2 add constraint c1 foreign key (f1) references t1(f1) master-bin.000001 # Gtid # # GTID #-#-# ROLLBACK ALTER id=# master-bin.000001 # Query # # use `test`; set foreign_key_checks=1; alter table t2 add constraint c1 foreign key (f1) references t1(f1) connection slave; connection master; drop table t2, t1; connection slave; connection master; set global binlog_alter_two_phase=0;; include/rpl_end.inc