diff options
author | unknown <patg@krsna.patg.net> | 2005-10-25 14:50:08 -0700 |
---|---|---|
committer | unknown <patg@krsna.patg.net> | 2005-10-25 14:50:08 -0700 |
commit | cf59103d84e648467f8c95d4804e498b7113e61a (patch) | |
tree | b9e9fc25eb2089d7eb1203f1ca85615abe5a37fe | |
parent | 28421fe8ed9d2869b74b53f7732877e41b78440a (diff) | |
download | mariadb-git-cf59103d84e648467f8c95d4804e498b7113e61a.tar.gz |
BUG# 12123
Made change to mysqlimport to set character_set_database to binary to
make importing various charsets/columns work correctly.
client/mysqlimport.c:
BUG# 12123
Added 'set @@character_set_database=binary' to make loading of tables with
mixed charset types and non-latin characters load.
mysql-test/mysql-test-run.pl:
BUG #12123
Added $MYSQL_IMPORT in order to test mysqlimport bug.
mysql-test/mysql-test-run.sh:
BUG #12123
Added $MYSQL_IMPORT in order to test mysqlimport bug.
mysql-test/r/mysqldump.result:
BUG #12123
Added dumping and reloading (using mysql, mysqldump, and mysqlimport) to
show that this fix handles dumping and reloading of non-latin1 charsets
in table with different charset columns (mixing of charsets, also can be a
UTF table with latin1 tables). Note the select before and after dump and
restore - should be exact.
mysql-test/t/mysqldump.test:
BUG #12123
Added dumping and reloading (using mysql, mysqldump, and mysqlimport) to
show that this fix handles dumping and reloading of non-latin1 charsets
in table with different charset columns (mixing of charsets, also can be a
UTF table with latin1 tables). Note the select before and after dump and
restore - should be exact. (results of this)
-rw-r--r-- | client/mysqlimport.c | 7 | ||||
-rwxr-xr-x | mysql-test/mysql-test-run.pl | 11 | ||||
-rw-r--r-- | mysql-test/mysql-test-run.sh | 9 | ||||
-rw-r--r-- | mysql-test/r/mysqldump.result | 10 | ||||
-rw-r--r-- | mysql-test/t/mysqldump.test | 12 |
5 files changed, 48 insertions, 1 deletions
diff --git a/client/mysqlimport.c b/client/mysqlimport.c index ca4acd82db6..32e2a7ccffe 100644 --- a/client/mysqlimport.c +++ b/client/mysqlimport.c @@ -517,6 +517,13 @@ int main(int argc, char **argv) free_defaults(argv_to_free); return(1); /* purecov: deadcode */ } + + if (mysql_query(sock, "set @@character_set_database=binary;")) + { + db_error(sock); /* We shall countinue here, if --force was given */ + return(1); + } + if (lock_tables) lock_table(sock, argc, argv); for (; *argv != NULL; argv++) diff --git a/mysql-test/mysql-test-run.pl b/mysql-test/mysql-test-run.pl index 4b055e0bb84..3583d8a7124 100755 --- a/mysql-test/mysql-test-run.pl +++ b/mysql-test/mysql-test-run.pl @@ -172,6 +172,7 @@ our $exe_mysqlbinlog; our $exe_mysql_client_test; our $exe_mysqld; our $exe_mysqldump; # Called from test case +our $exe_mysqlimport; # Called from test case our $exe_mysqlshow; # Called from test case our $exe_mysql_fix_system_tables; our $exe_mysqltest; @@ -861,6 +862,7 @@ sub executable_setup () { "/usr/bin/false"); } $exe_mysqldump= mtr_exe_exists("$path_client_bindir/mysqldump"); + $exe_mysqlimport= mtr_exe_exists("$path_client_bindir/mysqlimport"); $exe_mysqlshow= mtr_exe_exists("$path_client_bindir/mysqlshow"); $exe_mysqlbinlog= mtr_exe_exists("$path_client_bindir/mysqlbinlog"); $exe_mysqladmin= mtr_exe_exists("$path_client_bindir/mysqladmin"); @@ -2076,6 +2078,14 @@ sub run_mysqltest ($) { $cmdline_mysqldump .= " --debug=d:t:A,$opt_vardir/log/mysqldump.trace"; } + my $cmdline_mysqlimport= "$exe_mysqlimport -uroot " . + "--port=$master->[0]->{'path_myport'} " . + "--socket=$master->[0]->{'path_mysock'} --password="; + if ( $opt_debug ) + { + $cmdline_mysqlimport .= + " --debug=d:t:A,$opt_vardir/log/mysqlimport.trace"; + } my $cmdline_mysqlshow= "$exe_mysqlshow -uroot " . "--port=$master->[0]->{'path_myport'} " . @@ -2126,6 +2136,7 @@ sub run_mysqltest ($) { $ENV{'MYSQL'}= $cmdline_mysql; $ENV{'MYSQL_DUMP'}= $cmdline_mysqldump; + $ENV{'MYSQL_IMPORT'}= $cmdline_mysqlimport; $ENV{'MYSQL_SHOW'}= $cmdline_mysqlshow; $ENV{'MYSQL_BINLOG'}= $cmdline_mysqlbinlog; $ENV{'MYSQL_FIX_SYSTEM_TABLES'}= $cmdline_mysql_fix_system_tables; diff --git a/mysql-test/mysql-test-run.sh b/mysql-test/mysql-test-run.sh index 3e7a54fdead..259cb8cb5e4 100644 --- a/mysql-test/mysql-test-run.sh +++ b/mysql-test/mysql-test-run.sh @@ -546,6 +546,11 @@ if [ x$SOURCE_DIST = x1 ] ; then else MYSQL_DUMP="$BASEDIR/client/mysqldump" fi + if [ -f "$BASEDIR/client/.libs/mysqlimport" ] ; then + MYSQL_IMPORT="$BASEDIR/client/.libs/mysqlimport" + else + MYSQL_IMPORT="$BASEDIR/client/mysqlimport" + fi if [ -f "$BASEDIR/client/.libs/mysqlbinlog" ] ; then MYSQL_BINLOG="$BASEDIR/client/.libs/mysqlbinlog" else @@ -614,6 +619,7 @@ else fi MYSQL_TEST="$CLIENT_BINDIR/mysqltest" MYSQL_DUMP="$CLIENT_BINDIR/mysqldump" + MYSQL_IMPORT="$CLIENT_BINDIR/mysqlimport" MYSQL_BINLOG="$CLIENT_BINDIR/mysqlbinlog" MYSQLADMIN="$CLIENT_BINDIR/mysqladmin" WAIT_PID="$CLIENT_BINDIR/mysql_waitpid" @@ -693,10 +699,11 @@ fi MYSQL_DUMP_DIR="$MYSQL_DUMP" export MYSQL_DUMP_DIR MYSQL_DUMP="$MYSQL_DUMP --no-defaults -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLDUMP_OPT" +MYSQL_IMPORT="$MYSQL_IMPORT -uroot --socket=$MASTER_MYSOCK --password=$DBPASSWD $EXTRA_MYSQLDUMP_OPT" MYSQL_BINLOG="$MYSQL_BINLOG --no-defaults --local-load=$MYSQL_TMP_DIR $EXTRA_MYSQLBINLOG_OPT" MYSQL_FIX_SYSTEM_TABLES="$MYSQL_FIX_SYSTEM_TABLES --no-defaults --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD --basedir=$BASEDIR --bindir=$CLIENT_BINDIR --verbose" MYSQL="$MYSQL --no-defaults --host=localhost --port=$MASTER_MYPORT --socket=$MASTER_MYSOCK --user=root --password=$DBPASSWD" -export MYSQL MYSQL_DUMP MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES +export MYSQL MYSQL_DUMP MYSQL_IMPORT MYSQL_BINLOG MYSQL_FIX_SYSTEM_TABLES export CLIENT_BINDIR MYSQL_CLIENT_TEST CHARSETSDIR export NDB_TOOLS_DIR export NDB_MGM diff --git a/mysql-test/r/mysqldump.result b/mysql-test/r/mysqldump.result index cb2e8e5528a..fb72abe9b45 100644 --- a/mysql-test/r/mysqldump.result +++ b/mysql-test/r/mysqldump.result @@ -1493,3 +1493,13 @@ insert into t2 (a, b) values (NULL, NULL),(10, NULL),(NULL, "twenty"),(30, "thir </database> </mysqldump> drop table t1, t2; +create table t1 (a text character set utf8, b text character set latin1); +insert t1 values (0x4F736E616272C3BC636B, 0x4BF66C6E); +select * from t1; +a b +Osnabrück Köln +test.t1: Records: 1 Deleted: 0 Skipped: 0 Warnings: 0 +select * from t1; +a b +Osnabrück Köln +drop table t1; diff --git a/mysql-test/t/mysqldump.test b/mysql-test/t/mysqldump.test index 4978da0bd67..ad1fb534836 100644 --- a/mysql-test/t/mysqldump.test +++ b/mysql-test/t/mysqldump.test @@ -635,4 +635,16 @@ insert into t2 (a, b) values (NULL, NULL),(10, NULL),(NULL, "twenty"),(30, "thir --exec $MYSQL_DUMP --skip-comments --xml --no-create-info test drop table t1, t2; +# +# BUG #12123 +# +create table t1 (a text character set utf8, b text character set latin1); +insert t1 values (0x4F736E616272C3BC636B, 0x4BF66C6E); +select * from t1; +--exec $MYSQL_DUMP --tab=$MYSQL_TEST_DIR/var/tmp/ test +--exec $MYSQL test < $MYSQL_TEST_DIR/var/tmp/t1.sql +--exec $MYSQL_IMPORT test $MYSQL_TEST_DIR/var/tmp/t1.txt +select * from t1; + +drop table t1; # End of 4.1 tests |