set binlog_format=statement; reset master; create database testing_1; use testing_1; create table t1 (a int); create function sf1 (a int) returns int return a+1; create trigger tr1 before insert on t1 for each row insert into t2 values (2*new.a); create procedure sp1 (a int) insert into t1 values(a); drop database testing_1; 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 # # create database testing_1 master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `testing_1`; create table t1 (a int) master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` FUNCTION `sf1`(a int) RETURNS int(11) return a+1 master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` trigger tr1 before insert on t1 for each row insert into t2 values (2*new.a) master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`(a int) insert into t1 values(a) master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # drop database testing_1 use test; reset master; create temporary table tt1 (a int); create table t1 (a int); insert into t1 values (1); drop database if exists mysqltest1; insert into t1 values (1); drop table tt1, t1; 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 temporary table tt1 (a int) master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `test`; create table t1 (a int) 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 # # drop database if exists mysqltest1 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`; DROP TEMPORARY TABLE `tt1` /* generated by server */ master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ FLUSH STATUS; # 'DROP TABLE IF EXISTS ' is binlogged # when 'DROP DATABASE' fails and at least one table is deleted # from the database. RESET MASTER; CREATE DATABASE testing_1; USE testing_1; CREATE TABLE t1(c1 INT); CREATE TABLE t2(c1 INT); # Create a file in the database directory SELECT 'hello' INTO OUTFILE 'fake_file.FAKE_FILE'; # 'DROP DATABASE' will fail if there is any other file in the the # database directory DROP DATABASE testing_1; ERROR HY000: Error dropping database (can't rmdir './testing_1', errno: 39 "Directory not empty") # Remove the fake file. # Now we can drop the database. DROP DATABASE testing_1; # # Bug#11765416 58381: FAILED DROP DATABASE CAN BREAK STATEMENT # BASED REPLICATION # USE test; DROP DATABASE IF EXISTS db1; DROP TABLE IF EXISTS t3; CREATE DATABASE db1; CREATE TABLE db1.t1 (a INT); CREATE TABLE db1.t2 (b INT, KEY(b)) engine=innodb; CREATE TABLE t3 (a INT, KEY (a), FOREIGN KEY(a) REFERENCES db1.t2(b)) engine=innodb; RESET MASTER; DROP DATABASE db1; ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails SHOW TABLES FROM db1; Tables_in_db1 t2 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 `db1`; DROP TABLE IF EXISTS `t1` DROP TABLE t3; DROP DATABASE db1; set binlog_format=mixed; reset master; create database testing_1; use testing_1; create table t1 (a int); create function sf1 (a int) returns int return a+1; create trigger tr1 before insert on t1 for each row insert into t2 values (2*new.a); create procedure sp1 (a int) insert into t1 values(a); drop database testing_1; 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 # # create database testing_1 master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `testing_1`; create table t1 (a int) master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` FUNCTION `sf1`(a int) RETURNS int(11) return a+1 master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` trigger tr1 before insert on t1 for each row insert into t2 values (2*new.a) master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`(a int) insert into t1 values(a) master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # drop database testing_1 use test; reset master; create temporary table tt1 (a int); create table t1 (a int); insert into t1 values (1); drop database if exists mysqltest1; insert into t1 values (1); drop table tt1, t1; 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 temporary table tt1 (a int) master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `test`; create table t1 (a int) 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 # # drop database if exists mysqltest1 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`; DROP TEMPORARY TABLE `tt1` /* generated by server */ master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ FLUSH STATUS; # 'DROP TABLE IF EXISTS ' is binlogged # when 'DROP DATABASE' fails and at least one table is deleted # from the database. RESET MASTER; CREATE DATABASE testing_1; USE testing_1; CREATE TABLE t1(c1 INT); CREATE TABLE t2(c1 INT); # Create a file in the database directory SELECT 'hello' INTO OUTFILE 'fake_file.FAKE_FILE'; # 'DROP DATABASE' will fail if there is any other file in the the # database directory DROP DATABASE testing_1; ERROR HY000: Error dropping database (can't rmdir './testing_1', errno: 39 "Directory not empty") # Remove the fake file. # Now we can drop the database. DROP DATABASE testing_1; # # Bug#11765416 58381: FAILED DROP DATABASE CAN BREAK STATEMENT # BASED REPLICATION # USE test; DROP DATABASE IF EXISTS db1; DROP TABLE IF EXISTS t3; CREATE DATABASE db1; CREATE TABLE db1.t1 (a INT); CREATE TABLE db1.t2 (b INT, KEY(b)) engine=innodb; CREATE TABLE t3 (a INT, KEY (a), FOREIGN KEY(a) REFERENCES db1.t2(b)) engine=innodb; RESET MASTER; DROP DATABASE db1; ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails SHOW TABLES FROM db1; Tables_in_db1 t2 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 `db1`; DROP TABLE IF EXISTS `t1` DROP TABLE t3; DROP DATABASE db1; set binlog_format=row; reset master; create database testing_1; use testing_1; create table t1 (a int); create function sf1 (a int) returns int return a+1; create trigger tr1 before insert on t1 for each row insert into t2 values (2*new.a); create procedure sp1 (a int) insert into t1 values(a); drop database testing_1; 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 # # create database testing_1 master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `testing_1`; create table t1 (a int) master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` FUNCTION `sf1`(a int) RETURNS int(11) return a+1 master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` trigger tr1 before insert on t1 for each row insert into t2 values (2*new.a) master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`(a int) insert into t1 values(a) master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # drop database testing_1 use test; reset master; create temporary table tt1 (a int); create table t1 (a int); insert into t1 values (1); drop database if exists mysqltest1; insert into t1 values (1); drop table tt1, t1; 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 (a int) master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Annotate_rows # # insert into t1 values (1) master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # drop database if exists mysqltest1 master-bin.000001 # Gtid # # BEGIN GTID #-#-# master-bin.000001 # Annotate_rows # # insert into t1 values (1) master-bin.000001 # Table_map # # table_id: # (test.t1) master-bin.000001 # Write_rows_v1 # # table_id: # flags: STMT_END_F master-bin.000001 # Query # # COMMIT master-bin.000001 # Gtid # # GTID #-#-# master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */ FLUSH STATUS; # 'DROP TABLE IF EXISTS ' is binlogged # when 'DROP DATABASE' fails and at least one table is deleted # from the database. RESET MASTER; CREATE DATABASE testing_1; USE testing_1; CREATE TABLE t1(c1 INT); CREATE TABLE t2(c1 INT); # Create a file in the database directory SELECT 'hello' INTO OUTFILE 'fake_file.FAKE_FILE'; # 'DROP DATABASE' will fail if there is any other file in the the # database directory DROP DATABASE testing_1; ERROR HY000: Error dropping database (can't rmdir './testing_1', errno: 39 "Directory not empty") # Remove the fake file. # Now we can drop the database. DROP DATABASE testing_1; # # Bug#11765416 58381: FAILED DROP DATABASE CAN BREAK STATEMENT # BASED REPLICATION # USE test; DROP DATABASE IF EXISTS db1; DROP TABLE IF EXISTS t3; CREATE DATABASE db1; CREATE TABLE db1.t1 (a INT); CREATE TABLE db1.t2 (b INT, KEY(b)) engine=innodb; CREATE TABLE t3 (a INT, KEY (a), FOREIGN KEY(a) REFERENCES db1.t2(b)) engine=innodb; RESET MASTER; DROP DATABASE db1; ERROR 23000: Cannot delete or update a parent row: a foreign key constraint fails SHOW TABLES FROM db1; Tables_in_db1 t2 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 `db1`; DROP TABLE IF EXISTS `t1` DROP TABLE t3; DROP DATABASE db1; show databases; Database information_schema mtr mysql performance_schema sys test