mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 21:42:35 +01:00
0203409175
tables open When executing a DROP DATABASE statement in ROW mode and having temporary tables open at the same time, the existance of temporary tables prevent the server from switching back to row mode after temporarily switching to statement mode to handle the logging of the statement. Fixed the problem by removing the code to switch to statement mode and added code to temporarily disable the binary log while dropping the objects in the database. mysql-test/extra/binlog_tests/database.test: Added test to ensure that DROP DATABASE does not affect the replication mode. sql/sql_db.cc: Removed code that clears the current_stmt_binlog_row_based flag. Added code to disable the binary log while dropping the objects in a database.
115 lines
5.3 KiB
Text
115 lines
5.3 KiB
Text
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;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # create database testing_1
|
|
master-bin.000001 # Query # # use `testing_1`; create table t1 (a int)
|
|
master-bin.000001 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` FUNCTION `sf1`(a int) RETURNS int(11)
|
|
return a+1
|
|
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 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`(a int)
|
|
insert into t1 values(a)
|
|
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;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; create temporary table tt1 (a int)
|
|
master-bin.000001 # Query # # use `test`; create table t1 (a int)
|
|
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
|
|
master-bin.000001 # Query # # drop database if exists mysqltest1
|
|
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
|
|
master-bin.000001 # Query # # use `test`; drop table tt1, t1
|
|
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;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # create database testing_1
|
|
master-bin.000001 # Query # # use `testing_1`; create table t1 (a int)
|
|
master-bin.000001 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` FUNCTION `sf1`(a int) RETURNS int(11)
|
|
return a+1
|
|
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 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`(a int)
|
|
insert into t1 values(a)
|
|
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;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; create temporary table tt1 (a int)
|
|
master-bin.000001 # Query # # use `test`; create table t1 (a int)
|
|
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
|
|
master-bin.000001 # Query # # drop database if exists mysqltest1
|
|
master-bin.000001 # Query # # use `test`; insert into t1 values (1)
|
|
master-bin.000001 # Query # # use `test`; drop table tt1, t1
|
|
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;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # create database testing_1
|
|
master-bin.000001 # Query # # use `testing_1`; create table t1 (a int)
|
|
master-bin.000001 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` FUNCTION `sf1`(a int) RETURNS int(11)
|
|
return a+1
|
|
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 # Query # # use `testing_1`; CREATE DEFINER=`root`@`localhost` PROCEDURE `sp1`(a int)
|
|
insert into t1 values(a)
|
|
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;
|
|
show binlog events from <binlog_start>;
|
|
Log_name Pos Event_type Server_id End_log_pos Info
|
|
master-bin.000001 # Query # # use `test`; create table t1 (a int)
|
|
master-bin.000001 # Query # # use `test`; BEGIN
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Query # # use `test`; COMMIT
|
|
master-bin.000001 # Query # # drop database if exists mysqltest1
|
|
master-bin.000001 # Query # # use `test`; BEGIN
|
|
master-bin.000001 # Table_map # # table_id: # (test.t1)
|
|
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
|
master-bin.000001 # Query # # use `test`; COMMIT
|
|
master-bin.000001 # Query # # use `test`; DROP TABLE `t1` /* generated by server */
|
|
show databases;
|
|
Database
|
|
information_schema
|
|
mysql
|
|
test
|