List:Commits« Previous MessageNext Message »
From:Li-Bing.Song Date:August 12 2009 5:33am
Subject:bzr commit into mysql-5.1-bugteam branch (Li-Bing.Song:3063)
View as plain text  
#At file:///home/anders/work/bzrwork/bug45516/mysql-5.1-bugteam/ based on revid:davi.arnaut@stripped-slhlfghir2474411

 3063 Li-Bing.Song@stripped	2009-08-12 [merge]
      Manual Merge

    added:
      mysql-test/include/rpl_loaddata_charset.inc
      mysql-test/std_data/loaddata_utf8.dat
    modified:
      mysql-test/suite/rpl/r/rpl_loaddata_charset.result
      mysql-test/suite/rpl/t/rpl_loaddata_charset.test
      sql/log_event.cc
=== added file 'mysql-test/include/rpl_loaddata_charset.inc'
--- a/mysql-test/include/rpl_loaddata_charset.inc	1970-01-01 00:00:00 +0000
+++ b/mysql-test/include/rpl_loaddata_charset.inc	2009-08-12 05:31:56 +0000
@@ -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;

=== added file 'mysql-test/std_data/loaddata_utf8.dat'
--- a/mysql-test/std_data/loaddata_utf8.dat	1970-01-01 00:00:00 +0000
+++ b/mysql-test/std_data/loaddata_utf8.dat	2009-08-12 03:54:05 +0000
@@ -0,0 +1,3 @@
+一二三
+四五六
+七八九

=== modified file 'mysql-test/suite/rpl/r/rpl_loaddata_charset.result'
--- a/mysql-test/suite/rpl/r/rpl_loaddata_charset.result	2007-12-12 17:19:24 +0000
+++ b/mysql-test/suite/rpl/r/rpl_loaddata_charset.result	2009-08-12 05:31:56 +0000
@@ -35,3 +35,44 @@ C3BF
 D0AA
 D0AA
 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;

=== modified file 'mysql-test/suite/rpl/t/rpl_loaddata_charset.test'
--- a/mysql-test/suite/rpl/t/rpl_loaddata_charset.test	2007-12-12 17:19:24 +0000
+++ b/mysql-test/suite/rpl/t/rpl_loaddata_charset.test	2009-08-12 05:31:56 +0000
@@ -31,3 +31,20 @@ select hex(a) from t1;
 connection master;
 drop table t1;
 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;

=== modified file 'sql/log_event.cc'
--- a/sql/log_event.cc	2009-07-24 16:04:55 +0000
+++ b/sql/log_event.cc	2009-08-12 05:31:56 +0000
@@ -2949,6 +2949,8 @@ int Query_log_event::do_apply_event(Rela
 {
   LEX_STRING new_db;
   int expected_error,actual_error= 0;
+  HA_CREATE_INFO db_options;
+
   /*
     Colleagues: please never free(thd->catalog) in MySQL. This would
     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(Rela
   new_db.length= db_len;
   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' */
+
+  /*
+    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_offset=    auto_increment_offset;
 

Attachment: [text/bzr-bundle] bzr/li-bing.song@sun.com-20090812053156-m7vyqji0x12sl9kf.bundle
Thread
bzr commit into mysql-5.1-bugteam branch (Li-Bing.Song:3063) Li-Bing.Song20 Aug