mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug#15126 character_set_database is not replicated (LOAD DATA INFILE need it)
This patch fixes problem that LOAD DATA could use different character sets when loading files on master and on slave sides: - Adding replication of thd->variables.collation_database - Adding optional character set clause into LOAD DATA Note, the second way, with explicit CHARACTER SET clause should be the recommended way to load data using an alternative character set. The old way, using "SET @@character_set_database=xxx" should be gradually depricated. mysql-test/r/mysqlbinlog.result: Adding test case mysql-test/t/mysqlbinlog.test: Adding test case sql/log_event.cc: Adding logging of thd->variables.collation_database sql/log_event.h: Adding declarations sql/sql_class.cc: Exchange character set is null by default sql/sql_class.h: Adding character set into sql_exchange sql/sql_load.cc: - Using exchange character set (if it was specified in LOAD DATA syntax) - Using thd->variables.collation_database by default sql/sql_yacc.yy: Adding optional character set clause into LOAD DATA syntax mysql-test/r/rpl_loaddata2.result: New BitKeeper file ``mysql-test/r/rpl_loaddata2.result'' mysql-test/std_data/loaddata6.dat: New BitKeeper file ``mysql-test/std_data/loaddata6.dat'' mysql-test/t/rpl_loaddata2.test: New BitKeeper file ``mysql-test/t/rpl_loaddata2.test''
This commit is contained in:
@ -270,3 +270,61 @@ call p1();
|
||||
1
|
||||
drop procedure p1;
|
||||
drop table t1, t2, t03, t04, t3, t4, t5;
|
||||
flush logs;
|
||||
create table t1 (a varchar(64) character set utf8);
|
||||
load data infile '../std_data_ln/loaddata6.dat' into table t1;
|
||||
set character_set_database=koi8r;
|
||||
load data infile '../std_data_ln/loaddata6.dat' into table t1;
|
||||
set character_set_database=latin1;
|
||||
load data infile '../std_data_ln/loaddata6.dat' into table t1;
|
||||
load data infile '../std_data_ln/loaddata6.dat' into table t1;
|
||||
set character_set_database=koi8r;
|
||||
load data infile '../std_data_ln/loaddata6.dat' into table t1;
|
||||
set character_set_database=latin1;
|
||||
load data infile '../std_data_ln/loaddata6.dat' into table t1;
|
||||
load data infile '../std_data_ln/loaddata6.dat' into table t1 character set koi8r;
|
||||
select hex(a) from t1;
|
||||
hex(a)
|
||||
C3BF
|
||||
D0AA
|
||||
C3BF
|
||||
C3BF
|
||||
D0AA
|
||||
C3BF
|
||||
D0AA
|
||||
drop table t1;
|
||||
flush logs;
|
||||
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
||||
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
||||
DELIMITER /*!*/;
|
||||
use test/*!*/;
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
|
||||
SET @@session.sql_mode=0/*!*/;
|
||||
/*!\C latin1 *//*!*/;
|
||||
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
||||
create table t1 (a varchar(64) character set utf8)/*!*/;
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
load data LOCAL INFILE '/home/bar/mysql-5.0.b15126/mysql-test/var/tmp/SQL_LOAD_MB-6-0' INTO table t1/*!*/;
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
SET @@session.collation_database=7/*!*/;
|
||||
load data LOCAL INFILE '/home/bar/mysql-5.0.b15126/mysql-test/var/tmp/SQL_LOAD_MB-7-0' INTO table t1/*!*/;
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
SET @@session.collation_database=DEFAULT/*!*/;
|
||||
load data LOCAL INFILE '/home/bar/mysql-5.0.b15126/mysql-test/var/tmp/SQL_LOAD_MB-8-0' INTO table t1/*!*/;
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
load data LOCAL INFILE '/home/bar/mysql-5.0.b15126/mysql-test/var/tmp/SQL_LOAD_MB-9-0' INTO table t1/*!*/;
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
SET @@session.collation_database=7/*!*/;
|
||||
load data LOCAL INFILE '/home/bar/mysql-5.0.b15126/mysql-test/var/tmp/SQL_LOAD_MB-a-0' INTO table t1/*!*/;
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
SET @@session.collation_database=DEFAULT/*!*/;
|
||||
load data LOCAL INFILE '/home/bar/mysql-5.0.b15126/mysql-test/var/tmp/SQL_LOAD_MB-b-0' INTO table t1/*!*/;
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
load data LOCAL INFILE '/home/bar/mysql-5.0.b15126/mysql-test/var/tmp/SQL_LOAD_MB-c-0' INTO table t1 character set koi8r/*!*/;
|
||||
SET TIMESTAMP=1000000000/*!*/;
|
||||
drop table t1/*!*/;
|
||||
DELIMITER ;
|
||||
# End of log file
|
||||
ROLLBACK /* added by mysqlbinlog */;
|
||||
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
||||
|
Reference in New Issue
Block a user