Manual Merge
This commit is contained in:
commit
7b8d509b2d
35
mysql-test/include/rpl_loaddata_charset.inc
Normal file
35
mysql-test/include/rpl_loaddata_charset.inc
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
connection master;
|
||||||
|
--disable_warnings
|
||||||
|
DROP DATABASE IF EXISTS mysqltest;
|
||||||
|
--enable_warnings
|
||||||
|
|
||||||
|
CREATE DATABASE mysqltest CHARSET UTF8;
|
||||||
|
USE mysqltest;
|
||||||
|
CREATE TABLE t (cl varchar(100)) CHARSET UTF8;
|
||||||
|
|
||||||
|
if (!$LOAD_LOCAL)
|
||||||
|
{
|
||||||
|
LOAD DATA INFILE '../../std_data/loaddata_utf8.dat' INTO TABLE t
|
||||||
|
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
|
||||||
|
}
|
||||||
|
if ($LOAD_LOCAL)
|
||||||
|
{
|
||||||
|
LOAD DATA LOCAL INFILE './std_data/loaddata_utf8.dat' INTO TABLE t
|
||||||
|
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
save_master_pos;
|
||||||
|
echo ----------content on master----------;
|
||||||
|
SELECT hex(cl) FROM t;
|
||||||
|
|
||||||
|
connection slave;
|
||||||
|
sync_with_master;
|
||||||
|
echo ----------content on slave----------;
|
||||||
|
USE mysqltest;
|
||||||
|
SELECT hex(cl) FROM t;
|
||||||
|
|
||||||
|
connection master;
|
||||||
|
DROP DATABASE mysqltest;
|
||||||
|
save_master_pos;
|
||||||
|
connection slave;
|
||||||
|
sync_with_master;
|
3
mysql-test/std_data/loaddata_utf8.dat
Normal file
3
mysql-test/std_data/loaddata_utf8.dat
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
一二三
|
||||||
|
四五六
|
||||||
|
七八九
|
@ -35,3 +35,44 @@ C3BF
|
|||||||
D0AA
|
D0AA
|
||||||
D0AA
|
D0AA
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
-------------test bug#45516------------------
|
||||||
|
DROP DATABASE IF EXISTS mysqltest;
|
||||||
|
CREATE DATABASE mysqltest CHARSET UTF8;
|
||||||
|
USE mysqltest;
|
||||||
|
CREATE TABLE t (cl varchar(100)) CHARSET UTF8;
|
||||||
|
LOAD DATA LOCAL INFILE './std_data/loaddata_utf8.dat' INTO TABLE t
|
||||||
|
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
|
||||||
|
----------content on master----------
|
||||||
|
SELECT hex(cl) FROM t;
|
||||||
|
hex(cl)
|
||||||
|
E4B880E4BA8CE4B889
|
||||||
|
E59B9BE4BA94E585AD
|
||||||
|
E4B883E585ABE4B99D
|
||||||
|
----------content on slave----------
|
||||||
|
USE mysqltest;
|
||||||
|
SELECT hex(cl) FROM t;
|
||||||
|
hex(cl)
|
||||||
|
E4B880E4BA8CE4B889
|
||||||
|
E59B9BE4BA94E585AD
|
||||||
|
E4B883E585ABE4B99D
|
||||||
|
DROP DATABASE mysqltest;
|
||||||
|
DROP DATABASE IF EXISTS mysqltest;
|
||||||
|
CREATE DATABASE mysqltest CHARSET UTF8;
|
||||||
|
USE mysqltest;
|
||||||
|
CREATE TABLE t (cl varchar(100)) CHARSET UTF8;
|
||||||
|
LOAD DATA INFILE '../../std_data/loaddata_utf8.dat' INTO TABLE t
|
||||||
|
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
|
||||||
|
----------content on master----------
|
||||||
|
SELECT hex(cl) FROM t;
|
||||||
|
hex(cl)
|
||||||
|
E4B880E4BA8CE4B889
|
||||||
|
E59B9BE4BA94E585AD
|
||||||
|
E4B883E585ABE4B99D
|
||||||
|
----------content on slave----------
|
||||||
|
USE mysqltest;
|
||||||
|
SELECT hex(cl) FROM t;
|
||||||
|
hex(cl)
|
||||||
|
E4B880E4BA8CE4B889
|
||||||
|
E59B9BE4BA94E585AD
|
||||||
|
E4B883E585ABE4B99D
|
||||||
|
DROP DATABASE mysqltest;
|
||||||
|
@ -31,3 +31,20 @@ select hex(a) from t1;
|
|||||||
connection master;
|
connection master;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
sync_slave_with_master;
|
sync_slave_with_master;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#45516
|
||||||
|
# When slave SQL thread executing LOAD DATA command, the
|
||||||
|
# thd->variables.collation_database was not set properly to the default
|
||||||
|
# database charset
|
||||||
|
#
|
||||||
|
|
||||||
|
echo -------------test bug#45516------------------;
|
||||||
|
|
||||||
|
# LOAD DATA INFILE
|
||||||
|
let $LOAD_LOCAL=1;
|
||||||
|
source include/rpl_loaddata_charset.inc;
|
||||||
|
|
||||||
|
# LOAD DATA LOCAL INFILE
|
||||||
|
let $LOAD_LOCAL=0;
|
||||||
|
source include/rpl_loaddata_charset.inc;
|
||||||
|
@ -2949,6 +2949,8 @@ int Query_log_event::do_apply_event(Relay_log_info const *rli,
|
|||||||
{
|
{
|
||||||
LEX_STRING new_db;
|
LEX_STRING new_db;
|
||||||
int expected_error,actual_error= 0;
|
int expected_error,actual_error= 0;
|
||||||
|
HA_CREATE_INFO db_options;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Colleagues: please never free(thd->catalog) in MySQL. This would
|
Colleagues: please never free(thd->catalog) in MySQL. This would
|
||||||
lead to bugs as here thd->catalog is a part of an alloced block,
|
lead to bugs as here thd->catalog is a part of an alloced block,
|
||||||
@ -2960,6 +2962,13 @@ int Query_log_event::do_apply_event(Relay_log_info const *rli,
|
|||||||
new_db.length= db_len;
|
new_db.length= db_len;
|
||||||
new_db.str= (char *) rpl_filter->get_rewrite_db(db, &new_db.length);
|
new_db.str= (char *) rpl_filter->get_rewrite_db(db, &new_db.length);
|
||||||
thd->set_db(new_db.str, new_db.length); /* allocates a copy of 'db' */
|
thd->set_db(new_db.str, new_db.length); /* allocates a copy of 'db' */
|
||||||
|
|
||||||
|
/*
|
||||||
|
Setting the character set and collation of the current database thd->db.
|
||||||
|
*/
|
||||||
|
load_db_opt_by_name(thd, thd->db, &db_options);
|
||||||
|
if (db_options.default_table_charset)
|
||||||
|
thd->db_charset= db_options.default_table_charset;
|
||||||
thd->variables.auto_increment_increment= auto_increment_increment;
|
thd->variables.auto_increment_increment= auto_increment_increment;
|
||||||
thd->variables.auto_increment_offset= auto_increment_offset;
|
thd->variables.auto_increment_offset= auto_increment_offset;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user