Bug#45485 replication different between master/slaver using procedure with gbk
In Item_param::set_from_user_var value.cs_info.character_set_client is set to 'fromcs' value. It's wrong, it should be set to thd->variables.character_set_client.
This commit is contained in:
parent
a410744918
commit
2c53a70e15
26
mysql-test/r/ctype_gbk_binlog.result
Normal file
26
mysql-test/r/ctype_gbk_binlog.result
Normal file
@ -0,0 +1,26 @@
|
||||
SET NAMES gbk;
|
||||
CREATE TABLE t1 (
|
||||
f1 BLOB
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
|
||||
CREATE PROCEDURE p1(IN val BLOB)
|
||||
BEGIN
|
||||
SET @tval = val;
|
||||
SET @sql_cmd = CONCAT_WS(' ', 'insert into t1(f1) values(?)');
|
||||
PREPARE stmt FROM @sql_cmd;
|
||||
EXECUTE stmt USING @tval;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
END|
|
||||
SET @`tcontent`:=_binary 0x50434B000900000000000000E9000000 COLLATE `binary`/*!*/;
|
||||
CALL p1(@`tcontent`);
|
||||
FLUSH LOGS;
|
||||
DROP PROCEDURE p1;
|
||||
RENAME TABLE t1 to t2;
|
||||
SELECT hex(f1) FROM t2;
|
||||
hex(f1)
|
||||
50434B000900000000000000E9000000
|
||||
SELECT hex(f1) FROM t1;
|
||||
hex(f1)
|
||||
50434B000900000000000000E9000000
|
||||
DROP PROCEDURE p1;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
36
mysql-test/t/ctype_gbk_binlog.test
Normal file
36
mysql-test/t/ctype_gbk_binlog.test
Normal file
@ -0,0 +1,36 @@
|
||||
-- source include/have_log_bin.inc
|
||||
-- source include/have_gbk.inc
|
||||
|
||||
SET NAMES gbk;
|
||||
--character_set gbk
|
||||
|
||||
CREATE TABLE t1 (
|
||||
f1 BLOB
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
|
||||
|
||||
delimiter |;
|
||||
CREATE PROCEDURE p1(IN val BLOB)
|
||||
BEGIN
|
||||
SET @tval = val;
|
||||
SET @sql_cmd = CONCAT_WS(' ', 'insert into t1(f1) values(?)');
|
||||
PREPARE stmt FROM @sql_cmd;
|
||||
EXECUTE stmt USING @tval;
|
||||
DEALLOCATE PREPARE stmt;
|
||||
END|
|
||||
delimiter ;|
|
||||
|
||||
SET @`tcontent`:=_binary 0x50434B000900000000000000E9000000 COLLATE `binary`/*!*/;
|
||||
CALL p1(@`tcontent`);
|
||||
|
||||
FLUSH LOGS;
|
||||
DROP PROCEDURE p1;
|
||||
RENAME TABLE t1 to t2;
|
||||
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
--exec $MYSQL_BINLOG --force-if-open --short-form $MYSQLD_DATADIR/master-bin.000001 | $MYSQL
|
||||
SELECT hex(f1) FROM t2;
|
||||
SELECT hex(f1) FROM t1;
|
||||
|
||||
DROP PROCEDURE p1;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
@ -2771,8 +2771,8 @@ bool Item_param::set_from_user_var(THD *thd, const user_var_entry *entry)
|
||||
CHARSET_INFO *tocs= thd->variables.collation_connection;
|
||||
uint32 dummy_offset;
|
||||
|
||||
value.cs_info.character_set_of_placeholder=
|
||||
value.cs_info.character_set_client= fromcs;
|
||||
value.cs_info.character_set_of_placeholder= fromcs;
|
||||
value.cs_info.character_set_client= thd->variables.character_set_client;
|
||||
/*
|
||||
Setup source and destination character sets so that they
|
||||
are different only if conversion is necessary: this will
|
||||
|
Loading…
x
Reference in New Issue
Block a user