Commit 41eccda1 authored by kaa@polly.local's avatar kaa@polly.local

Merge polly.local:/tmp/maint/bug25137/my51-bug25137

into  polly.local:/home/kaa/src/maint/mysql-5.1-maint
parents cf553c43 2606d6b9
...@@ -413,3 +413,17 @@ select * from t1; ...@@ -413,3 +413,17 @@ select * from t1;
insert into t1 values ('abc'); insert into t1 values ('abc');
select * from t1; select * from t1;
drop table t1; drop table t1;
#
# BUG#16217 - MySQL client misinterpretes multi-byte char as escape `\'
#
# new command \C or charset
--exec $MYSQL --default-character-set=utf8 test -e "\C cp932 \g"
--exec $MYSQL --default-character-set=cp932 test -e "charset utf8;"
# its usage to switch internally in mysql to requested charset
--exec $MYSQL --default-character-set=utf8 test -e "charset cp932; select '\'; create table t1 (c_cp932 TEXT CHARACTER SET cp932); insert into t1 values('\'); select * from t1; drop table t1;"
--exec $MYSQL --default-character-set=utf8 test -e "charset cp932; select '\'"
--exec $MYSQL --default-character-set=utf8 test -e "/*charset cp932 */; set character_set_client= cp932; select '\'"
--exec $MYSQL --default-character-set=utf8 test -e "/*!\C cp932 */; set character_set_client= cp932; select '\'"
This diff is collapsed.
This diff is collapsed.
...@@ -11353,3 +11353,13 @@ a ...@@ -11353,3 +11353,13 @@ a
a a
a a
drop table t1; drop table t1;
\
\
c_cp932
\
\
\
\
\
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -61,16 +61,6 @@ database() ...@@ -61,16 +61,6 @@ database()
test test
unlock tables; unlock tables;
drop table t1; drop table t1;
\
\
c_cp932
\
\
\
\
\
+----------------------+------------+--------+ +----------------------+------------+--------+
| concat('>',col1,'<') | col2 | col3 | | concat('>',col1,'<') | col2 | col3 |
+----------------------+------------+--------+ +----------------------+------------+--------+
......
flush logs;
create table t3 (f text character set utf8);
create table t4 (f text character set cp932);
flush logs;
rename table t3 to t03, t4 to t04;
select HEX(f) from t03;
HEX(f)
E382BD
select HEX(f) from t3;
HEX(f)
E382BD
select HEX(f) from t04;
HEX(f)
835C
select HEX(f) from t4;
HEX(f)
835C
drop table t3, t4, t03, t04;
End of 5.0 tests
...@@ -194,24 +194,6 @@ ROLLBACK /* added by mysqlbinlog */; ...@@ -194,24 +194,6 @@ ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
drop table t1,t2; drop table t1,t2;
flush logs; flush logs;
create table t3 (f text character set utf8);
create table t4 (f text character set cp932);
flush logs;
rename table t3 to t03, t4 to t04;
select HEX(f) from t03;
HEX(f)
E382BD
select HEX(f) from t3;
HEX(f)
E382BD
select HEX(f) from t04;
HEX(f)
835C
select HEX(f) from t4;
HEX(f)
835C
drop table t3,t4,t03,t04;
flush logs;
flush logs; flush logs;
select * from t5 /* must be (1),(1) */; select * from t5 /* must be (1),(1) */;
a a
...@@ -273,4 +255,5 @@ call p1(); ...@@ -273,4 +255,5 @@ call p1();
1 1
1 1
drop procedure p1; drop procedure p1;
End of 5.0 tests
flush logs; flush logs;
drop function if exists bug17615|
create table t3 (a varchar(256) unicode)|
create function bug17615() returns varchar(256) unicode
begin
declare tmp_res varchar(256) unicode;
set tmp_res= 'foo string';
return tmp_res;
end|
insert into t3 values(bug17615())|
select * from t3|
a
foo string
drop function bug17615|
drop table t3|
...@@ -4714,20 +4714,6 @@ Handler ...@@ -4714,20 +4714,6 @@ Handler
Inner Inner
drop procedure bug15011| drop procedure bug15011|
drop table t3| drop table t3|
drop function if exists bug17615|
create table t3 (a varchar(256) unicode)|
create function bug17615() returns varchar(256) unicode
begin
declare tmp_res varchar(256) unicode;
set tmp_res= 'foo string';
return tmp_res;
end|
insert into t3 values(bug17615())|
select * from t3|
a
foo string
drop function bug17615|
drop table t3|
drop procedure if exists bug17476| drop procedure if exists bug17476|
create table t3 ( d date )| create table t3 ( d date )|
insert into t3 values insert into t3 values
......
--default-collation=ucs2_unicode_ci --default-character-set=ucs2 --default-collation=ucs2_unicode_ci --default-character-set=ucs2,latin1
-- source include/have_ucs2.inc
# #
# MySQL Bug#15276: MySQL ignores collation-server # MySQL Bug#15276: MySQL ignores collation-server
# #
......
This diff is collapsed.
This diff is collapsed.
#
# Tests which require ucs2 character set
#
-- source include/have_ucs2.inc
let $engine_type= MyISAM;
let $other_engine_type= MEMORY;
# There are unfortunately only MyISAM and MEMORY all time available
# Therefore use here MEMORY again.
let $other_engine_type1= MEMORY;
let $other_non_trans_engine_type= MEMORY;
let $other_non_live_chks_engine_type= MEMORY;
# Therefore use here MyISAM again.
let $other_live_chks_engine_type= MyISAM;
# MyISAM does not support transactions
let $test_transactions= 0;
# MyISAM does not support FOREIGN KEYFOREIGN KEYs
let $test_foreign_keys= 0;
# MyISAM supports fulltext queries
let $fulltext_query_unsupported= 0;
# MyISAM internal autoincrement values are updated during updates
let $no_autoinc_update= 0;
# MyISAM supports keys on spatial data types
let $no_spatial_key= 0;
-- source include/mix2_ucs2.inc
-- source include/have_cp932.inc
# Bug#16217 (mysql client did not know how not switch its internal charset)
flush logs;
create table t3 (f text character set utf8);
create table t4 (f text character set cp932);
--exec $MYSQL --default-character-set=utf8 test -e "insert into t3 values(_utf8'ソ')"
--exec $MYSQL --default-character-set=cp932 test -e "insert into t4 values(_cp932'\');"
flush logs;
rename table t3 to t03, t4 to t04;
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000002 | $MYSQL --default-character-set=utf8
# original and recovered data must be equal
select HEX(f) from t03;
select HEX(f) from t3;
select HEX(f) from t04;
select HEX(f) from t4;
drop table t3, t4, t03, t04;
--echo End of 5.0 tests
...@@ -110,24 +110,6 @@ select "--- reading stdin --" as ""; ...@@ -110,24 +110,6 @@ select "--- reading stdin --" as "";
--exec $MYSQL_BINLOG --short-form --position=79 - < $MYSQL_TEST_DIR/std_data/trunc_binlog.000001 --exec $MYSQL_BINLOG --short-form --position=79 - < $MYSQL_TEST_DIR/std_data/trunc_binlog.000001
drop table t1,t2; drop table t1,t2;
#
# Bug#16217 (mysql client did not know how not switch its internal charset)
#
flush logs;
create table t3 (f text character set utf8);
create table t4 (f text character set cp932);
--exec $MYSQL --default-character-set=utf8 test -e "insert into t3 values(_utf8'ソ')"
--exec $MYSQL --default-character-set=cp932 test -e "insert into t4 values(_cp932'\');"
flush logs;
rename table t3 to t03, t4 to t04;
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000004 | $MYSQL --default-character-set=utf8
# original and recovered data must be equal
select HEX(f) from t03;
select HEX(f) from t3;
select HEX(f) from t04;
select HEX(f) from t4;
drop table t3,t4,t03,t04;
# #
#BUG#14157: utf8 encoding in binlog without set character_set_client #BUG#14157: utf8 encoding in binlog without set character_set_client
# #
...@@ -146,7 +128,7 @@ EOF ...@@ -146,7 +128,7 @@ EOF
# must be digestable for both client and server. In 4.1 the client # must be digestable for both client and server. In 4.1 the client
# should use default-character-set same as the server. # should use default-character-set same as the server.
flush logs; flush logs;
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000006 | $MYSQL --exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000004 | $MYSQL
select * from t5 /* must be (1),(1) */; select * from t5 /* must be (1),(1) */;
drop table t5; drop table t5;
...@@ -165,7 +147,7 @@ insert into t5 values (3, date_format('2001-01-01','%W')); ...@@ -165,7 +147,7 @@ insert into t5 values (3, date_format('2001-01-01','%W'));
select * from t5 order by c1; select * from t5 order by c1;
flush logs; flush logs;
drop table t5; drop table t5;
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000008 | $MYSQL --exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000006 | $MYSQL
select * from t5 order by c1; select * from t5 order by c1;
drop table t5; drop table t5;
...@@ -188,8 +170,8 @@ call p1(); ...@@ -188,8 +170,8 @@ call p1();
drop procedure p1; drop procedure p1;
--error 1305 --error 1305
call p1(); call p1();
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000010 --exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000008
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000010 | $MYSQL --exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000008 | $MYSQL
call p1(); call p1();
drop procedure p1; drop procedure p1;
...@@ -200,15 +182,14 @@ drop procedure p1; ...@@ -200,15 +182,14 @@ drop procedure p1;
--exec $MYSQL_BINLOG --version 2>&1 > /dev/null --exec $MYSQL_BINLOG --version 2>&1 > /dev/null
--exec $MYSQL_BINLOG --help 2>&1 > /dev/null --exec $MYSQL_BINLOG --help 2>&1 > /dev/null
--enable_query_log --enable_query_log
--echo End of 5.0 tests
# End of 5.0 tests
# #
# Test --disable-force-if-open and --force-if-open # Test --disable-force-if-open and --force-if-open
# #
flush logs; flush logs;
--error 1 --error 1
--exec $MYSQL_BINLOG $MYSQLTEST_VARDIR/log/master-bin.000012 >/dev/null 2>/dev/null --exec $MYSQL_BINLOG $MYSQLTEST_VARDIR/log/master-bin.000010 >/dev/null 2>/dev/null
--exec $MYSQL_BINLOG --force-if-open $MYSQLTEST_VARDIR/log/master-bin.000012 >/dev/null 2>/dev/null --exec $MYSQL_BINLOG --force-if-open $MYSQLTEST_VARDIR/log/master-bin.000010 >/dev/null 2>/dev/null
# End of 5.1 tests # End of 5.1 tests
-- source include/have_ucs2.inc
delimiter |;
#
# BUG#17615: problem with character set
#
--disable_warnings
drop function if exists bug17615|
--enable_warnings
create table t3 (a varchar(256) unicode)|
create function bug17615() returns varchar(256) unicode
begin
declare tmp_res varchar(256) unicode;
set tmp_res= 'foo string';
return tmp_res;
end|
insert into t3 values(bug17615())|
select * from t3|
drop function bug17615|
drop table t3|
delimiter ;|
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
# Tests that destroys system tables (e.g. mysql.proc) for error testing # Tests that destroys system tables (e.g. mysql.proc) for error testing
# go to sp-destruct. # go to sp-destruct.
# Tests that require --with-geometry go into sp_gis.test # Tests that require --with-geometry go into sp_gis.test
# Tests that require multibyte character sets, which are not always available,
# go into separate files (e.g. sp-ucs2.test)
use test; use test;
...@@ -5545,29 +5547,6 @@ drop procedure bug15011| ...@@ -5545,29 +5547,6 @@ drop procedure bug15011|
drop table t3| drop table t3|
#
# BUG#17615: problem with character set
#
--disable_warnings
drop function if exists bug17615|
--enable_warnings
create table t3 (a varchar(256) unicode)|
create function bug17615() returns varchar(256) unicode
begin
declare tmp_res varchar(256) unicode;
set tmp_res= 'foo string';
return tmp_res;
end|
insert into t3 values(bug17615())|
select * from t3|
drop function bug17615|
drop table t3|
# #
# BUG#17476: Stored procedure not returning data when it is called first # BUG#17476: Stored procedure not returning data when it is called first
# time per connection # time per connection
......
...@@ -2776,10 +2776,33 @@ static int init_common_variables(const char *conf_file_name, int argc, ...@@ -2776,10 +2776,33 @@ static int init_common_variables(const char *conf_file_name, int argc,
#ifdef USE_REGEX #ifdef USE_REGEX
my_regex_init(&my_charset_latin1); my_regex_init(&my_charset_latin1);
#endif #endif
if (!(default_charset_info= get_charset_by_csname(default_character_set_name, /*
MY_CS_PRIMARY, Process a comma-separated character set list and choose
MYF(MY_WME)))) the first available character set. This is mostly for
return 1; test purposes, to be able to start "mysqld" even if
the requested character set is not available (see bug#18743).
*/
for (;;)
{
char *next_character_set_name= strchr(default_character_set_name, ',');
if (next_character_set_name)
*next_character_set_name++= '\0';
if (!(default_charset_info=
get_charset_by_csname(default_character_set_name,
MY_CS_PRIMARY, MYF(MY_WME))))
{
if (next_character_set_name)
{
default_character_set_name= next_character_set_name;
default_collation_name= 0; // Ignore collation
}
else
return 1; // Eof of the list
}
else
break;
}
if (default_collation_name) if (default_collation_name)
{ {
CHARSET_INFO *default_collation; CHARSET_INFO *default_collation;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment