summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <lars@mysql.com>2005-02-21 16:26:04 +0100
committerunknown <lars@mysql.com>2005-02-21 16:26:04 +0100
commitdf1b674a695c6cba3228a94a556f97c707e732fc (patch)
tree0445b34fd1796c5c48a50c5badb74851a63cf326
parent96f9c9d9d372b45e0271f2caccec948ddc6c7fc4 (diff)
downloadmariadb-git-df1b674a695c6cba3228a94a556f97c707e732fc.tar.gz
BUG#6676: Derivation of user variables should be of derivation "IMPLICIT"
-rw-r--r--mysql-test/r/rpl_charset.result7
-rw-r--r--mysql-test/t/rpl_charset.test13
-rw-r--r--sql/log_event.cc2
3 files changed, 21 insertions, 1 deletions
diff --git a/mysql-test/r/rpl_charset.result b/mysql-test/r/rpl_charset.result
index cab41344238..292cfb19175 100644
--- a/mysql-test/r/rpl_charset.result
+++ b/mysql-test/r/rpl_charset.result
@@ -207,3 +207,10 @@ select hex(c1), hex(c2) from t1;
hex(c1) hex(c2)
CDF32C20E7E020F0FBE1E0EBEAF3 CDF32C20E7E020F0FBE1E0EBEAF3
drop table t1;
+create table `t1` (
+`pk` varchar(10) not null default '',
+primary key (`pk`)
+) engine=myisam default charset=latin1;
+set @p=_latin1 'test';
+update t1 set pk='test' where pk=@p;
+drop table t1;
diff --git a/mysql-test/t/rpl_charset.test b/mysql-test/t/rpl_charset.test
index 68036ae49f1..3f7eabfa434 100644
--- a/mysql-test/t/rpl_charset.test
+++ b/mysql-test/t/rpl_charset.test
@@ -169,3 +169,16 @@ select hex(c1), hex(c2) from t1;
connection master;
drop table t1;
sync_slave_with_master;
+
+#
+# BUG#6676: Derivation of variables must be correct on slave
+#
+connection master;
+create table `t1` (
+ `pk` varchar(10) not null default '',
+ primary key (`pk`)
+) engine=myisam default charset=latin1;
+set @p=_latin1 'test';
+update t1 set pk='test' where pk=@p;
+drop table t1;
+sync_slave_with_master;
diff --git a/sql/log_event.cc b/sql/log_event.cc
index 19113a3b97e..7d2848700f6 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -2528,7 +2528,7 @@ int User_var_log_event::exec_event(struct st_relay_log_info* rli)
0 can be passed as last argument (reference on item)
*/
e.fix_fields(thd, 0, 0);
- e.update_hash(val, val_len, type, charset, DERIVATION_NONE);
+ e.update_hash(val, val_len, type, charset, DERIVATION_IMPLICIT);
free_root(thd->mem_root,0);
rli->inc_event_relay_log_pos(get_event_len());