Commit 300d3412 authored by unknown's avatar unknown

ctype_utf8.result, ctype_utf8.test:

  added test case
ctype-utf8.c:
  bug#11754: SET NAMES utf8 followed by SELECT "A\\" LIKE "A\\" returns 0


strings/ctype-utf8.c:
  bug#11754: SET NAMES utf8 followed by SELECT "A\\" LIKE "A\\" returns 0
mysql-test/t/ctype_utf8.test:
  added test case
mysql-test/r/ctype_utf8.result:
  added test case
parent ddc35864
...@@ -954,6 +954,45 @@ char_length(a) length(a) a ...@@ -954,6 +954,45 @@ char_length(a) length(a) a
2 2 12 2 2 12
2 4 ан 2 4 ан
drop table t1; drop table t1;
set names utf8;
select 'a\\' like 'a\\';
'a\\' like 'a\\'
1
select 'aa\\' like 'a%\\';
'aa\\' like 'a%\\'
1
create table t1 (a char(10), key(a)) character set utf8;
insert into t1 values ("a"),("abc"),("abcd"),("hello"),("test");
select * from t1 where a like "abc%";
a
abc
abcd
select * from t1 where a like concat("abc","%");
a
abc
abcd
select * from t1 where a like "ABC%";
a
abc
abcd
select * from t1 where a like "test%";
a
test
select * from t1 where a like "te_t";
a
test
select * from t1 where a like "%a%";
a
a
abc
abcd
select * from t1 where a like "%abcd%";
a
abcd
select * from t1 where a like "%abc\d%";
a
abcd
drop table t1;
CREATE TABLE t1 ( CREATE TABLE t1 (
a varchar(255) NOT NULL default '', a varchar(255) NOT NULL default '',
KEY a (a) KEY a (a)
......
...@@ -810,6 +810,27 @@ alter table t1 modify a char(2) character set utf8; ...@@ -810,6 +810,27 @@ alter table t1 modify a char(2) character set utf8;
select char_length(a), length(a), a from t1 order by a; select char_length(a), length(a), a from t1 order by a;
drop table t1; drop table t1;
#
# Bugs#11754: SET NAMES utf8 followed by SELECT "A\\" LIKE "A\\" returns 0
#
set names utf8;
select 'a\\' like 'a\\';
select 'aa\\' like 'a%\\';
create table t1 (a char(10), key(a)) character set utf8;
insert into t1 values ("a"),("abc"),("abcd"),("hello"),("test");
select * from t1 where a like "abc%";
select * from t1 where a like concat("abc","%");
select * from t1 where a like "ABC%";
select * from t1 where a like "test%";
select * from t1 where a like "te_t";
select * from t1 where a like "%a%";
select * from t1 where a like "%abcd%";
select * from t1 where a like "%abc\d%";
drop table t1;
# #
# Bug#9557 MyISAM utf8 table crash # Bug#9557 MyISAM utf8 table crash
# #
......
...@@ -1557,7 +1557,7 @@ int my_wildcmp_unicode(CHARSET_INFO *cs, ...@@ -1557,7 +1557,7 @@ int my_wildcmp_unicode(CHARSET_INFO *cs,
} }
wildstr+= scan; wildstr+= scan;
if (w_wc == (my_wc_t)escape) if (w_wc == (my_wc_t)escape && wildstr < wildend)
{ {
if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr, if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
(const uchar*)wildend)) <= 0) (const uchar*)wildend)) <= 0)
...@@ -1629,13 +1629,17 @@ int my_wildcmp_unicode(CHARSET_INFO *cs, ...@@ -1629,13 +1629,17 @@ int my_wildcmp_unicode(CHARSET_INFO *cs,
if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr, if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
(const uchar*)wildend)) <=0) (const uchar*)wildend)) <=0)
return 1; return 1;
wildstr+= scan;
if (w_wc == (my_wc_t)escape) if (w_wc == (my_wc_t)escape)
{ {
wildstr+= scan; if (wildstr < wildend)
if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr, {
(const uchar*)wildend)) <=0) if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
return 1; (const uchar*)wildend)) <=0)
return 1;
wildstr+= scan;
}
} }
while (1) while (1)
...@@ -1661,14 +1665,12 @@ int my_wildcmp_unicode(CHARSET_INFO *cs, ...@@ -1661,14 +1665,12 @@ int my_wildcmp_unicode(CHARSET_INFO *cs,
if (str == str_end) if (str == str_end)
return -1; return -1;
str+= scan;
result= my_wildcmp_unicode(cs, str, str_end, wildstr, wildend, result= my_wildcmp_unicode(cs, str, str_end, wildstr, wildend,
escape, w_one, w_many, escape, w_one, w_many,
weights); weights);
if (result <= 0) if (result <= 0)
return result; return result;
str+= scan;
} }
} }
} }
......
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