mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
BUG#13684: SP: DROP PROCEDURE|FUNCTION IF EXISTS not binlogged if routine does not exist
There is an inconsistency with DROP DATABASE IF EXISTS, DROP TABLE IF EXISTS and DROP VIEW IF EXISTS: those are binlogged even if the DB or TABLE does not exist, whereas DROP PROCEDURE IF EXISTS does not. It would be nice or at least consistent if DROP PROCEDURE/STATEMENT worked the same too. Fixed DROP PROCEDURE|FUNCTION IF EXISTS by adding a call to write_bin_log in mysql_execute_command. Checked also if all documented "DROP (...) IF EXISTS" get binlogged. Left out DROP SERVER IF EXISTS because it seems that it only gets binlogged when using row event (see BUG#25705).
This commit is contained in:
@ -511,6 +511,7 @@ master-bin.000001 # Query 1 # use `mysqltest1`; drop procedure foo
|
||||
master-bin.000001 # Query 1 # use `mysqltest1`; drop function fn1
|
||||
master-bin.000001 # Query 1 # drop database mysqltest1
|
||||
master-bin.000001 # Query 1 # drop user "zedjzlcsjhd"@127.0.0.1
|
||||
master-bin.000001 # Query 1 # use `test`; drop function if exists f1
|
||||
master-bin.000001 # Query 1 # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
|
||||
READS SQL DATA
|
||||
begin
|
||||
@ -526,12 +527,15 @@ master-bin.000001 # Query 1 # use `test`; create table t1 (a int)
|
||||
master-bin.000001 # Query 1 # use `test`; insert into t1 (a) values (f1())
|
||||
master-bin.000001 # Query 1 # use `test`; drop view v1
|
||||
master-bin.000001 # Query 1 # use `test`; drop function f1
|
||||
master-bin.000001 # Query 1 # use `test`; DROP PROCEDURE IF EXISTS p1
|
||||
master-bin.000001 # Query 1 # use `test`; DROP TABLE IF EXISTS t1
|
||||
master-bin.000001 # Query 1 # use `test`; CREATE TABLE t1(col VARCHAR(10))
|
||||
master-bin.000001 # Query 1 # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`(arg VARCHAR(10))
|
||||
INSERT INTO t1 VALUES(arg)
|
||||
master-bin.000001 # Query 1 # use `test`; INSERT INTO t1 VALUES( NAME_CONST('arg',_latin1'test' COLLATE 'latin1_swedish_ci'))
|
||||
master-bin.000001 # Query 1 # use `test`; DROP PROCEDURE p1
|
||||
master-bin.000001 # Query 1 # use `test`; DROP PROCEDURE IF EXISTS p1
|
||||
master-bin.000001 # Query 1 # use `test`; DROP FUNCTION IF EXISTS f1
|
||||
master-bin.000001 # Query 1 # use `test`; CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
|
||||
SET @a = 1
|
||||
master-bin.000001 # Query 1 # use `test`; CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
|
||||
@ -842,6 +846,9 @@ drop user "zedjzlcsjhd"@127.0.0.1
|
||||
/*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=t/*!*/;
|
||||
drop function if exists f1
|
||||
/*!*/;
|
||||
SET TIMESTAMP=t/*!*/;
|
||||
CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11)
|
||||
READS SQL DATA
|
||||
begin
|
||||
@ -869,6 +876,9 @@ SET TIMESTAMP=t/*!*/;
|
||||
drop function f1
|
||||
/*!*/;
|
||||
SET TIMESTAMP=t/*!*/;
|
||||
DROP PROCEDURE IF EXISTS p1
|
||||
/*!*/;
|
||||
SET TIMESTAMP=t/*!*/;
|
||||
DROP TABLE IF EXISTS t1
|
||||
/*!*/;
|
||||
SET TIMESTAMP=t/*!*/;
|
||||
@ -885,6 +895,12 @@ SET TIMESTAMP=t/*!*/;
|
||||
DROP PROCEDURE p1
|
||||
/*!*/;
|
||||
SET TIMESTAMP=t/*!*/;
|
||||
DROP PROCEDURE IF EXISTS p1
|
||||
/*!*/;
|
||||
SET TIMESTAMP=t/*!*/;
|
||||
DROP FUNCTION IF EXISTS f1
|
||||
/*!*/;
|
||||
SET TIMESTAMP=t/*!*/;
|
||||
CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`()
|
||||
SET @a = 1
|
||||
/*!*/;
|
||||
|
Reference in New Issue
Block a user