Below is the list of changes that have just been committed into a local
5.0 repository of kostja. When kostja does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet
1.1967 05/11/17 03:15:10 konstantin@stripped +3 -0
A fix and a test case for Bug#14077 "Failure to replicate a stored
function with a cursor". Enable execution of SELECT queries in SP on slave.
sql/sql_parse.cc
1.513 05/11/17 03:15:01 konstantin@stripped +0 -12
Do not rewrite SELECTs with DOs on slave: if this SELECT was for a stored
routine cursor, slave must be able to execute the SELECT in order to
open a cursor.
At the moment the bug is present only in stored functions and stored
procedures called from stored functions, because, due to
stored procedure unfolding for replication, top level stored procedures
are never executed on slave.
mysql-test/t/rpl_sp.test
1.9 05/11/17 03:15:00 konstantin@stripped +36 -0
Add a test case for Bug#14077 "Failure to replicate a stored
function with a cursor".
mysql-test/r/rpl_sp.result
1.13 05/11/17 03:15:00 konstantin@stripped +25 -0
Test results were fixed (Bug#14077).
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: konstantin
# Host: dragonfly.local
# Root: /opt/local/work/mysql-5.0-14077
--- 1.512/sql/sql_parse.cc 2005-11-14 17:41:59 +03:00
+++ 1.513/sql/sql_parse.cc 2005-11-17 03:15:01 +03:00
@@ -2403,18 +2403,6 @@
reset_one_shot_variables(thd);
DBUG_RETURN(0);
}
-#ifndef TO_BE_DELETED
- /*
- This is a workaround to deal with the shortcoming in 3.23.44-3.23.46
- masters in RELEASE_LOCK() logging. We re-write SELECT RELEASE_LOCK()
- as DO RELEASE_LOCK()
- */
- if (lex->sql_command == SQLCOM_SELECT)
- {
- lex->sql_command = SQLCOM_DO;
- lex->insert_list = &select_lex->item_list;
- }
-#endif
}
else
#endif /* HAVE_REPLICATION */
--- 1.12/mysql-test/r/rpl_sp.result 2005-11-11 03:28:30 +03:00
+++ 1.13/mysql-test/r/rpl_sp.result 2005-11-17 03:15:00 +03:00
@@ -375,3 +375,28 @@
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 table t1;
+reset master;
--- 1.8/mysql-test/t/rpl_sp.test 2005-11-10 19:50:43 +03:00
+++ 1.9/mysql-test/t/rpl_sp.test 2005-11-17 03:15:00 +03:00
@@ -360,4 +360,40 @@
drop function fn1;
drop database mysqltest1;
drop user "zedjzlcsjhd"@127.0.0.1;
+use test;
sync_slave_with_master;
+use test;
+
+#
+# Bug#14077 "Failure to replicate a stored function with a cursor":
+# verify that stored routines with cursors work on slave.
+#
+connection master;
+--disable_warnings
+drop function if exists f1;
+--enable_warnings
+delimiter |;
+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|
+delimiter ;|
+create view v1 as select 1 as a;
+create table t1 (a int);
+insert into t1 (a) values (f1());
+select * from t1;
+drop view v1;
+drop function f1;
+sync_slave_with_master;
+connection slave;
+select * from t1;
+
+# cleanup
+connection master;
+drop table t1;
+reset master;
| Thread |
|---|
| • bk commit into 5.0 tree (konstantin:1.1967) BUG#14077 | konstantin | 17 Nov |