Below is the list of changes that have just been committed into a local
5.1 repository of cbell. When cbell 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@stripped, 2006-12-21 14:25:35-05:00, cbell@mysql_cab. +2 -0
BUG#20141 - User-defined variables are not replicated properly for SF/Triggers in SBR mode.
User-defined variables used inside of SF/SP/Triggers are not replicated. This can
cause errors in data if the user-defined variables are used in generating data.
This patch permits user-defined variables to be replicated if they are used in
SF/SP/Triggers. This permits the slave to produce the same data as the master
when user-defined variables are used within SF/SP/Triggers.
mysql-test/r/rpl_user_variables.result@stripped, 2006-12-21 14:25:31-05:00, cbell@mysql_cab. +72 -0
BUG#20141 - User-defined variables are not replicated properly for SF/Triggers in SBR mode.
This patch modifies the test to ensure the test covers the use of user-defined
variables in SF/SP/Triggers.
mysql-test/t/rpl_user_variables.test@stripped, 2006-12-21 14:25:31-05:00, cbell@mysql_cab. +66 -0
BUG#20141 - User-defined variables are not replicated properly for SF/Triggers in SBR mode.
This patch modifies the test to ensure the test covers the use of user-defined
variables in SF/SP/Triggers.
# 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: cbell
# Host: mysql_cab.
# Root: C:/source/c++/mysql-5.1_BUG_20141
--- 1.19/mysql-test/r/rpl_user_variables.result 2006-12-21 14:25:54 -05:00
+++ 1.20/mysql-test/r/rpl_user_variables.result 2006-12-21 14:25:54 -05:00
@@ -80,4 +80,76 @@ abc\def
This is a test
insert into t1 select * FROM (select @var1 union select @var2) AS t2;
drop table t1;
+CREATE TABLE t20 (a varchar(20));
+CREATE TABLE t21 (a varchar(20));
+CREATE PROCEDURE test.insert()
+BEGIN
+IF (@VAR)
+THEN
+insert into test.t20 VALUES ('SP_TRUE');
+ELSE
+insert into test.t20 VALUES ('SP_FALSE');
+END IF;
+END|
+CREATE TRIGGER test.insert_bi BEFORE INSERT
+ON test.t20 FOR EACH ROW
+BEGIN
+IF (@VAR)
+THEN
+insert into test.t21 VALUES ('TRIG_TRUE');
+ELSE
+insert into test.t21 VALUES ('TRIG_FALSE');
+END IF;
+END|
+stop slave;
+start slave;
+SET @VAR=0;
+call test.insert();
+SET @VAR=1;
+call test.insert();
+select * from t20;
+a
+SP_FALSE
+SP_TRUE
+select * from t21;
+a
+TRIG_FALSE
+TRIG_TRUE
+select * from t20;
+a
+SP_FALSE
+SP_TRUE
+select * from t21;
+a
+TRIG_FALSE
+TRIG_TRUE
+drop table t20;
+drop table t21;
+CREATE TABLE t1 (i int);
+CREATE FUNCTION test.square() RETURNS INTEGER DETERMINISTIC RETURN (@var * @var);
+set @var = 1;
+INSERT INTO t1 VALUES (square());
+set @var = 2;
+INSERT INTO t1 VALUES (square());
+set @var = 3;
+INSERT INTO t1 VALUES (square());
+set @var = 4;
+INSERT INTO t1 VALUES (square());
+set @var = 5;
+INSERT INTO t1 VALUES (square());
+SELECT * FROM t1;
+i
+1
+4
+9
+16
+25
+SELECT * FROM t1;
+i
+1
+4
+9
+16
+25
+DROP TABLE t1;
stop slave;
--- 1.18/mysql-test/t/rpl_user_variables.test 2006-12-21 14:25:54 -05:00
+++ 1.19/mysql-test/t/rpl_user_variables.test 2006-12-21 14:25:54 -05:00
@@ -53,5 +53,71 @@ SELECT * FROM t1 ORDER BY n;
connection master;
insert into t1 select * FROM (select @var1 union select @var2) AS t2;
drop table t1;
+
+#
+# BUG#20141
+# The following test ensures that if user-defined variables are used in SF/Triggers
+# that they are replicated correctly. This test should be run in both SBR and RBR
+# modes.
+#
+CREATE TABLE t20 (a varchar(20));
+CREATE TABLE t21 (a varchar(20));
+delimiter |;
+CREATE PROCEDURE test.insert()
+BEGIN
+ IF (@VAR)
+ THEN
+ insert into test.t20 VALUES ('SP_TRUE');
+ ELSE
+ insert into test.t20 VALUES ('SP_FALSE');
+ END IF;
+END|
+CREATE TRIGGER test.insert_bi BEFORE INSERT
+ ON test.t20 FOR EACH ROW
+ BEGIN
+ IF (@VAR)
+ THEN
+ insert into test.t21 VALUES ('TRIG_TRUE');
+ ELSE
+ insert into test.t21 VALUES ('TRIG_FALSE');
+ END IF;
+ END|
+delimiter ;|
+sync_slave_with_master;
+stop slave;
+start slave;
+connection master;
+SET @VAR=0;
+call test.insert();
+SET @VAR=1;
+call test.insert();
+select * from t20;
+select * from t21;
+sync_slave_with_master;
+connection slave;
+select * from t20;
+select * from t21;
+connection master;
+drop table t20;
+drop table t21;
+# Now test stored functions
+CREATE TABLE t1 (i int);
+CREATE FUNCTION test.square() RETURNS INTEGER DETERMINISTIC RETURN (@var * @var);
+set @var = 1;
+INSERT INTO t1 VALUES (square());
+set @var = 2;
+INSERT INTO t1 VALUES (square());
+set @var = 3;
+INSERT INTO t1 VALUES (square());
+set @var = 4;
+INSERT INTO t1 VALUES (square());
+set @var = 5;
+INSERT INTO t1 VALUES (square());
+SELECT * FROM t1;
+sync_slave_with_master;
+connection slave;
+SELECT * FROM t1;
+connection master;
+DROP TABLE t1;
sync_slave_with_master;
stop slave;
| Thread |
|---|
| • bk commit into 5.1 tree (cbell:1.2362) BUG#20141 | cbell | 21 Dec |