Commit 9650b6b4 authored by msvensson@pilot.blaudden's avatar msvensson@pilot.blaudden

Merge bk-internal:/home/bk/mysql-5.0-maint

into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
parents 55b7f20a e063f18d
......@@ -16,7 +16,8 @@
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
@ndbcluster_includes@ -I$(top_srcdir)/sql
LDADD = @CLIENT_EXTRA_LDFLAGS@ ../mysys/libmysys.a \
../dbug/libdbug.a ../strings/libmystrings.a
../dbug/libdbug.a ../strings/libmystrings.a \
$(ZLIB_LIBS)
BUILT_SOURCES= $(top_builddir)/include/mysqld_error.h \
$(top_builddir)/include/sql_state.h \
$(top_builddir)/include/mysqld_ername.h
......
......@@ -637,27 +637,26 @@ static char checksum_format_specifier(const char* msg)
{
char chksum= 0;
const char* p= msg;
int is_format_specifier= 0;
const char* start= 0;
int num_format_specifiers= 0;
while (*p)
{
if (*p == '%')
{
is_format_specifier= 1; /* Entering format specifier */
start= p+1; /* Entering format specifier */
num_format_specifiers++;
}
if (is_format_specifier)
else if (start)
{
chksum^= *p;
switch(*p)
{
case 'd':
case 'u':
case 'x':
case 's':
is_format_specifier= 0; /* Not in format specifier anymore */
chksum= my_checksum(chksum, start, p-start);
start= 0; /* Not in format specifier anymore */
break;
default:
......@@ -668,13 +667,13 @@ static char checksum_format_specifier(const char* msg)
p++;
}
if (is_format_specifier)
if (start)
{
/* Still inside a format specifier after end of string */
fprintf(stderr, "Still inside formatspecifier after end of string"
" in'%s'\n", msg);
DBUG_ASSERT(is_format_specifier==0);
DBUG_ASSERT(start==0);
}
/* Add number of format specifiers to checksum as extra safeguard */
......
......@@ -11353,3 +11353,13 @@ a
a
a
drop table t1;
\
\
c_cp932
\
\
\
\
\
This diff is collapsed.
This diff is collapsed.
......@@ -61,16 +61,6 @@ database()
test
unlock tables;
drop table t1;
\
\
c_cp932
\
\
\
\
\
+----------------------+------------+--------+
| 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
......@@ -193,23 +193,6 @@ DELIMITER ;
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
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
flush logs;
select * from t5 /* must be (1),(1) */;
a
1
......@@ -269,4 +252,5 @@ call p1();
1
1
drop procedure p1;
drop table t1, t2, t03, t04, t3, t4, t5;
drop table t1, t2, t5;
End of 5.0 tests
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|
......@@ -4697,20 +4697,6 @@ Handler
Inner
drop procedure bug15011|
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|
create table t3 ( d date )|
insert into t3 values
......
......@@ -413,3 +413,17 @@ select * from t1;
insert into t1 values ('abc');
select * from 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 '\'"
--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
#
......
This diff is collapsed.
This diff is collapsed.
......@@ -43,20 +43,6 @@ lock tables t1 write;
unlock tables;
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 '\'"
#
# Bug#16859 -- NULLs in columns must not truncate data as if a C-language "string".
#
......
-- 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
......@@ -107,21 +107,6 @@ select "--- reading stdin --" as "";
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
--exec $MYSQL_BINLOG --short-form --position=79 - < $MYSQL_TEST_DIR/std_data/trunc_binlog.000001
# 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;
#
#BUG#14157: utf8 encoding in binlog without set character_set_client
#
......@@ -139,7 +124,7 @@ EOF
# resulted binlog, parly consisting of multi-byte utf8 chars,
# must be digestable for both client and server. In 4.1 the client
# should use default-character-set same as the server.
--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) */;
#
......@@ -158,7 +143,7 @@ insert into t5 values (3, date_format('2001-01-01','%W'));
select * from t5 order by c1;
flush logs;
drop table t5;
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000007 | $MYSQL
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000005 | $MYSQL
select * from t5 order by c1;
#
# Bug#20396 Bin Log does not get DELIMETER cmd - Recover StoredProc fails
......@@ -179,12 +164,12 @@ call p1();
drop procedure p1;
--error 1305
call p1();
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000009
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000009 | $MYSQL
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000007
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000007 | $MYSQL
call p1();
drop procedure p1;
# clean up
drop table t1, t2, t03, t04, t3, t4, t5;
drop table t1, t2, t5;
# End of 5.0 tests
--echo End of 5.0 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 ;|
......@@ -11,6 +11,8 @@
# Tests that uses 'goto' to into sp-goto.test (currently disabled)
# Tests that destroys system tables (e.g. mysql.proc) for error testing
# go to sp-destruct.
# Tests that require multibyte character sets, which are not always available,
# go into separate files (e.g. sp-ucs2.test)
use test;
......@@ -5525,29 +5527,6 @@ drop procedure bug15011|
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
# time per connection
......
......@@ -2724,10 +2724,33 @@ static int init_common_variables(const char *conf_file_name, int argc,
#ifdef USE_REGEX
my_regex_init(&my_charset_latin1);
#endif
if (!(default_charset_info= get_charset_by_csname(default_character_set_name,
MY_CS_PRIMARY,
MYF(MY_WME))))
return 1;
/*
Process a comma-separated character set list and choose
the first available character set. This is mostly for
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)
{
CHARSET_INFO *default_collation;
......
......@@ -1479,7 +1479,7 @@ ER_DUP_KEYNAME 42000 S1009
swe "Nyckelnamn '%-.64s' finns flera gnger"
ukr " ' '%-.64s'"
ER_DUP_ENTRY 23000 S1009
cze "Zvojen-B kl '%-.64s' (slo kle %d)"
cze "Zdvojen-B kl '%-.64s' (slo kle %d)"
dan "Ens vrdier '%-.64s' for indeks %d"
nla "Dubbele ingang '%-.64s' voor zoeksleutel %d"
eng "Duplicate entry '%-.64s' for key %d"
......
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