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 @@ ...@@ -16,7 +16,8 @@
INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \ INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
@ndbcluster_includes@ -I$(top_srcdir)/sql @ndbcluster_includes@ -I$(top_srcdir)/sql
LDADD = @CLIENT_EXTRA_LDFLAGS@ ../mysys/libmysys.a \ 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 \ BUILT_SOURCES= $(top_builddir)/include/mysqld_error.h \
$(top_builddir)/include/sql_state.h \ $(top_builddir)/include/sql_state.h \
$(top_builddir)/include/mysqld_ername.h $(top_builddir)/include/mysqld_ername.h
......
...@@ -637,27 +637,26 @@ static char checksum_format_specifier(const char* msg) ...@@ -637,27 +637,26 @@ static char checksum_format_specifier(const char* msg)
{ {
char chksum= 0; char chksum= 0;
const char* p= msg; const char* p= msg;
int is_format_specifier= 0; const char* start= 0;
int num_format_specifiers= 0; int num_format_specifiers= 0;
while (*p) while (*p)
{ {
if (*p == '%') if (*p == '%')
{ {
is_format_specifier= 1; /* Entering format specifier */ start= p+1; /* Entering format specifier */
num_format_specifiers++; num_format_specifiers++;
} }
else if (start)
if (is_format_specifier)
{ {
chksum^= *p;
switch(*p) switch(*p)
{ {
case 'd': case 'd':
case 'u': case 'u':
case 'x': case 'x':
case 's': 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; break;
default: default:
...@@ -668,13 +667,13 @@ static char checksum_format_specifier(const char* msg) ...@@ -668,13 +667,13 @@ static char checksum_format_specifier(const char* msg)
p++; p++;
} }
if (is_format_specifier) if (start)
{ {
/* Still inside a format specifier after end of string */ /* Still inside a format specifier after end of string */
fprintf(stderr, "Still inside formatspecifier after end of string" fprintf(stderr, "Still inside formatspecifier after end of string"
" in'%s'\n", msg); " in'%s'\n", msg);
DBUG_ASSERT(is_format_specifier==0); DBUG_ASSERT(start==0);
} }
/* Add number of format specifiers to checksum as extra safeguard */ /* Add number of format specifiers to checksum as extra safeguard */
......
...@@ -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.
...@@ -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
...@@ -193,23 +193,6 @@ DELIMITER ; ...@@ -193,23 +193,6 @@ DELIMITER ;
ROLLBACK /* added by mysqlbinlog */; ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
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
flush logs;
select * from t5 /* must be (1),(1) */; select * from t5 /* must be (1),(1) */;
a a
1 1
...@@ -269,4 +252,5 @@ call p1(); ...@@ -269,4 +252,5 @@ call p1();
1 1
1 1
drop procedure p1; 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 ...@@ -4697,20 +4697,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
......
...@@ -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 '\'"
--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.
...@@ -43,20 +43,6 @@ lock tables t1 write; ...@@ -43,20 +43,6 @@ lock tables t1 write;
unlock tables; unlock tables;
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 '\'"
# #
# Bug#16859 -- NULLs in columns must not truncate data as if a C-language "string". # 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 ""; ...@@ -107,21 +107,6 @@ select "--- reading stdin --" as "";
--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR --replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
--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
# 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 #BUG#14157: utf8 encoding in binlog without set character_set_client
# #
...@@ -139,7 +124,7 @@ EOF ...@@ -139,7 +124,7 @@ EOF
# resulted binlog, parly consisting of multi-byte utf8 chars, # resulted binlog, parly consisting of multi-byte utf8 chars,
# 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.
--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) */;
# #
...@@ -158,7 +143,7 @@ insert into t5 values (3, date_format('2001-01-01','%W')); ...@@ -158,7 +143,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.000007 | $MYSQL --exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000005 | $MYSQL
select * from t5 order by c1; select * from t5 order by c1;
# #
# Bug#20396 Bin Log does not get DELIMETER cmd - Recover StoredProc fails # Bug#20396 Bin Log does not get DELIMETER cmd - Recover StoredProc fails
...@@ -179,12 +164,12 @@ call p1(); ...@@ -179,12 +164,12 @@ 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.000009 --exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000007
--exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000009 | $MYSQL --exec $MYSQL_BINLOG --short-form $MYSQLTEST_VARDIR/log/master-bin.000007 | $MYSQL
call p1(); call p1();
drop procedure p1; drop procedure p1;
# clean up # 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 @@ ...@@ -11,6 +11,8 @@
# Tests that uses 'goto' to into sp-goto.test (currently disabled) # Tests that uses 'goto' to into sp-goto.test (currently disabled)
# 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 multibyte character sets, which are not always available,
# go into separate files (e.g. sp-ucs2.test)
use test; use test;
...@@ -5525,29 +5527,6 @@ drop procedure bug15011| ...@@ -5525,29 +5527,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
......
...@@ -2724,10 +2724,33 @@ static int init_common_variables(const char *conf_file_name, int argc, ...@@ -2724,10 +2724,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;
......
...@@ -1479,7 +1479,7 @@ ER_DUP_KEYNAME 42000 S1009 ...@@ -1479,7 +1479,7 @@ ER_DUP_KEYNAME 42000 S1009
swe "Nyckelnamn '%-.64s' finns flera gnger" swe "Nyckelnamn '%-.64s' finns flera gnger"
ukr " ' '%-.64s'" ukr " ' '%-.64s'"
ER_DUP_ENTRY 23000 S1009 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" dan "Ens vrdier '%-.64s' for indeks %d"
nla "Dubbele ingang '%-.64s' voor zoeksleutel %d" nla "Dubbele ingang '%-.64s' voor zoeksleutel %d"
eng "Duplicate entry '%-.64s' for key %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