diff options
author | unknown <guilhem@gbichot3.local> | 2007-01-08 23:52:21 +0100 |
---|---|---|
committer | unknown <guilhem@gbichot3.local> | 2007-01-08 23:52:21 +0100 |
commit | e1b0f07c740489c75c552fa140a43b73a0ead73c (patch) | |
tree | 7d20b6951c667a6409c9c9a11df00b0f3394fa09 /mysql-test/r/rpl_sp.result | |
parent | d101463ef2b1f62b27d7e204e768fe97fc5ed013 (diff) | |
download | mariadb-git-e1b0f07c740489c75c552fa140a43b73a0ead73c.tar.gz |
Manual merge of the fix for BUG#19725 "Calls to SF in other database are not replicated
correctly in some cases", from 5.0.
In short, calls to a stored function located in another database
than the default database, may fail to replicate if the call was made
by SET, SELECT, or DO.
sp_head.cc automerged, only the test and test's result had to be hand-merged.
mysql-test/r/rpl_sp.result:
manual merge of the result of the test for BUG#19725
mysql-test/r/rpl_switch_stm_row_mixed.result:
the bugfix changes results as expected
mysql-test/t/rpl_sp.test:
manual merge of the test for BUG#19725
Diffstat (limited to 'mysql-test/r/rpl_sp.result')
-rw-r--r-- | mysql-test/r/rpl_sp.result | 263 |
1 files changed, 153 insertions, 110 deletions
diff --git a/mysql-test/r/rpl_sp.result b/mysql-test/r/rpl_sp.result index fe54b1cbeb4..ee1517b290d 100644 --- a/mysql-test/r/rpl_sp.result +++ b/mysql-test/r/rpl_sp.result @@ -269,6 +269,118 @@ insert into t1 values (1); select * from t1; a 1 +select * from t1; +a +1 +create procedure foo() +not deterministic +reads sql data +select * from t1; +call foo(); +a +1 +drop procedure foo; +drop function fn1; +drop database mysqltest1; +drop user "zedjzlcsjhd"@127.0.0.1; +use test; +use test; +drop function if exists f1; +create function f1() returns int reads sql data +begin +declare var integer; +declare c cursor for select a from v1; +open c; +fetch c into var; +close c; +return var; +end| +create view v1 as select 1 as a; +create table t1 (a int); +insert into t1 (a) values (f1()); +select * from t1; +a +1 +drop view v1; +drop function f1; +select * from t1; +a +1 +DROP PROCEDURE IF EXISTS p1; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1(col VARCHAR(10)); +CREATE PROCEDURE p1(arg VARCHAR(10)) +INSERT INTO t1 VALUES(arg); +CALL p1('test'); +SELECT * FROM t1; +col +test +SELECT * FROM t1; +col +test +DROP PROCEDURE p1; + +---> Test for BUG#20438 + +---> Preparing environment... +---> connection: master +DROP PROCEDURE IF EXISTS p1; +DROP FUNCTION IF EXISTS f1; + +---> Synchronizing slave with master... + +---> connection: master + +---> Creating procedure... +/*!50003 CREATE PROCEDURE p1() SET @a = 1 */; +/*!50003 CREATE FUNCTION f1() RETURNS INT RETURN 0 */; + +---> Checking on master... +SHOW CREATE PROCEDURE p1; +Procedure sql_mode Create Procedure +p1 CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`() +SET @a = 1 +SHOW CREATE FUNCTION f1; +Function sql_mode Create Function +f1 CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11) +RETURN 0 + +---> Synchronizing slave with master... +---> connection: master + +---> Checking on slave... +SHOW CREATE PROCEDURE p1; +Procedure sql_mode Create Procedure +p1 CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`() +SET @a = 1 +SHOW CREATE FUNCTION f1; +Function sql_mode Create Function +f1 CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11) +RETURN 0 + +---> connection: master + +---> Cleaning up... +DROP PROCEDURE p1; +DROP FUNCTION f1; +drop table t1; +drop database if exists mysqltest; +drop database if exists mysqltest2; +create database mysqltest; +create database mysqltest2; +use mysqltest2; +create table t ( t integer ); +create procedure mysqltest.test() begin end; +insert into t values ( 1 ); +create procedure `\\`.test() begin end; +ERROR 42000: Unknown database '\\' +create function f1 () returns int +begin +insert into t values (1); +return 0; +end| +use mysqltest; +set @a:= mysqltest2.f1(); show binlog events in 'master-bin.000001' from 102; Log_name Pos Event_type Server_id End_log_pos Info master-bin.000001 # Query 1 # drop database if exists mysqltest1 @@ -329,7 +441,7 @@ insert into t1 values (x); return x+2; end master-bin.000001 # Query 1 # use `mysqltest1`; delete t1,t2 from t1,t2 -master-bin.000001 # Query 1 # use `mysqltest1`; SELECT `fn1`(20) +master-bin.000001 # Query 1 # use `mysqltest1`; SELECT `mysqltest1`.`fn1`(20) master-bin.000001 # Query 1 # use `mysqltest1`; insert into t2 values(fn1(21)) master-bin.000001 # Query 1 # use `mysqltest1`; drop function fn1 master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` function fn1() @@ -362,32 +474,23 @@ begin insert into t2 values(x),(x); return 10; end -master-bin.000001 # Query 1 # use `mysqltest1`; SELECT `fn1`(100) -master-bin.000001 # Query 1 # use `mysqltest1`; SELECT `fn1`(20) +master-bin.000001 # Query 1 # use `mysqltest1`; SELECT `mysqltest1`.`fn1`(100) +master-bin.000001 # Query 1 # use `mysqltest1`; SELECT `mysqltest1`.`fn1`(20) master-bin.000001 # Query 1 # use `mysqltest1`; delete from t1 master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` trigger trg before insert on t1 for each row set new.a= 10 master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values (1) master-bin.000001 # Query 1 # use `mysqltest1`; delete from t1 master-bin.000001 # Query 1 # use `mysqltest1`; drop trigger trg master-bin.000001 # Query 1 # use `mysqltest1`; insert into t1 values (1) -select * from t1; -a -1 -create procedure foo() +master-bin.000001 # Query 1 # use `mysqltest1`; CREATE DEFINER=`root`@`localhost` procedure foo() not deterministic reads sql data -select * from t1; -call foo(); -a -1 -drop procedure foo; -drop function fn1; -drop database mysqltest1; -drop user "zedjzlcsjhd"@127.0.0.1; -use test; -use test; -drop function if exists f1; -create function f1() returns int reads sql data +select * from t1 +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`; CREATE DEFINER=`root`@`localhost` function f1() returns int reads sql data begin declare var integer; declare c cursor for select a from v1; @@ -395,99 +498,39 @@ open c; fetch c into var; close c; return var; -end| -create view v1 as select 1 as a; -create table t1 (a int); -insert into t1 (a) values (f1()); -select * from t1; -a -1 -drop view v1; -drop function f1; -select * from t1; -a -1 -DROP PROCEDURE IF EXISTS p1; -DROP TABLE IF EXISTS t1; -CREATE TABLE t1(col VARCHAR(10)); -CREATE PROCEDURE p1(arg VARCHAR(10)) -INSERT INTO t1 VALUES(arg); -CALL p1('test'); -SELECT * FROM t1; -col -test -SELECT * FROM t1; -col -test -DROP PROCEDURE p1; - ----> Test for BUG#20438 - ----> Preparing environment... ----> connection: master -DROP PROCEDURE IF EXISTS p1; -DROP FUNCTION IF EXISTS f1; - ----> Synchronizing slave with master... - ----> connection: master - ----> Creating procedure... -/*!50003 CREATE PROCEDURE p1() SET @a = 1 */; -/*!50003 CREATE FUNCTION f1() RETURNS INT RETURN 0 */; - ----> Checking on master... -SHOW CREATE PROCEDURE p1; -Procedure sql_mode Create Procedure -p1 CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`() -SET @a = 1 -SHOW CREATE FUNCTION f1; -Function sql_mode Create Function -f1 CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11) -RETURN 0 - ----> Synchronizing slave with master... ----> connection: master - ----> Checking on slave... -SHOW CREATE PROCEDURE p1; -Procedure sql_mode Create Procedure -p1 CREATE DEFINER=`root`@`localhost` PROCEDURE `p1`() -SET @a = 1 -SHOW CREATE FUNCTION f1; -Function sql_mode Create Function -f1 CREATE DEFINER=`root`@`localhost` FUNCTION `f1`() RETURNS int(11) -RETURN 0 - ----> connection: master - ----> Cleaning up... -DROP PROCEDURE p1; -DROP FUNCTION f1; -drop table t1; +end +master-bin.000001 # Query 1 # use `test`; CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select 1 as a +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 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')) +master-bin.000001 # Query 1 # use `test`; DROP PROCEDURE p1 +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 RETURN 0 +master-bin.000001 # Query 1 # use `test`; DROP PROCEDURE p1 +master-bin.000001 # Query 1 # use `test`; DROP FUNCTION f1 +master-bin.000001 # Query 1 # use `test`; drop table t1 +master-bin.000001 # Query 1 # drop database if exists mysqltest +master-bin.000001 # Query 1 # drop database if exists mysqltest2 +master-bin.000001 # Query 1 # create database mysqltest +master-bin.000001 # Query 1 # create database mysqltest2 +master-bin.000001 # Query 1 # use `mysqltest2`; create table t ( t integer ) +master-bin.000001 # Query 1 # use `mysqltest2`; CREATE DEFINER=`root`@`localhost` procedure mysqltest.test() begin end +master-bin.000001 # Query 1 # use `mysqltest2`; insert into t values ( 1 ) +master-bin.000001 # Query 1 # use `mysqltest2`; CREATE DEFINER=`root`@`localhost` function f1 () returns int +begin +insert into t values (1); +return 0; +end +master-bin.000001 # Query 1 # use `mysqltest`; SELECT `mysqltest2`.`f1`() set global log_bin_trust_function_creators=0; set global log_bin_trust_function_creators=0; -End of 5.0 tests -reset master; -drop database if exists mysqltest; -drop database if exists mysqltest2; -create database mysqltest; -create database mysqltest2; -use mysqltest2; -create table t ( t integer ); -create procedure mysqltest.test() begin end; -insert into t values ( 1 ); -show binlog events in 'master-bin.000001' from 102; -Log_name Pos Event_type Server_id End_log_pos Info -master-bin.000001 102 Query 1 203 drop database if exists mysqltest -master-bin.000001 203 Query 1 306 drop database if exists mysqltest2 -master-bin.000001 306 Query 1 399 create database mysqltest -master-bin.000001 399 Query 1 494 create database mysqltest2 -master-bin.000001 494 Query 1 591 use `mysqltest2`; create table t ( t integer ) -master-bin.000001 591 Query 1 730 use `mysqltest2`; CREATE DEFINER=`root`@`localhost` procedure mysqltest.test() begin end -master-bin.000001 730 Query 1 825 use `mysqltest2`; insert into t values ( 1 ) -create procedure `\\`.test() begin end; -ERROR 42000: Unknown database '\\' drop database mysqltest; drop database mysqltest2; +End of 5.0 tests End of 5.1 tests |