mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.1
into sanja.is.com.ua:/home/bell/mysql/bk/work-limit-4.1
This commit is contained in:
@ -77,6 +77,9 @@ a
|
|||||||
test
|
test
|
||||||
select * from t1 where a like "%a%";
|
select * from t1 where a like "%a%";
|
||||||
a
|
a
|
||||||
|
a
|
||||||
|
abc
|
||||||
|
abcd
|
||||||
select * from t1 where a like "%abcd%";
|
select * from t1 where a like "%abcd%";
|
||||||
a
|
a
|
||||||
abcd
|
abcd
|
||||||
@ -84,6 +87,78 @@ select * from t1 where a like "%abc\d%";
|
|||||||
a
|
a
|
||||||
abcd
|
abcd
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
select 'AA' like 'AA';
|
||||||
|
'AA' like 'AA'
|
||||||
|
1
|
||||||
|
select 'AA' like 'A%A';
|
||||||
|
'AA' like 'A%A'
|
||||||
|
1
|
||||||
|
select 'AA' like 'A%%A';
|
||||||
|
'AA' like 'A%%A'
|
||||||
|
1
|
||||||
|
select 'AA' like 'AA%';
|
||||||
|
'AA' like 'AA%'
|
||||||
|
1
|
||||||
|
select 'AA' like '%AA%';
|
||||||
|
'AA' like '%AA%'
|
||||||
|
1
|
||||||
|
select 'AA' like '%A';
|
||||||
|
'AA' like '%A'
|
||||||
|
1
|
||||||
|
select 'AA' like '%AA';
|
||||||
|
'AA' like '%AA'
|
||||||
|
1
|
||||||
|
select 'AA' like 'A%A%';
|
||||||
|
'AA' like 'A%A%'
|
||||||
|
1
|
||||||
|
select 'AA' like '_%_%';
|
||||||
|
'AA' like '_%_%'
|
||||||
|
1
|
||||||
|
select 'AA' like '%A%A';
|
||||||
|
'AA' like '%A%A'
|
||||||
|
1
|
||||||
|
select 'AAA'like 'A%A%A';
|
||||||
|
'AAA'like 'A%A%A'
|
||||||
|
1
|
||||||
|
select 'AZ' like 'AZ';
|
||||||
|
'AZ' like 'AZ'
|
||||||
|
1
|
||||||
|
select 'AZ' like 'A%Z';
|
||||||
|
'AZ' like 'A%Z'
|
||||||
|
1
|
||||||
|
select 'AZ' like 'A%%Z';
|
||||||
|
'AZ' like 'A%%Z'
|
||||||
|
1
|
||||||
|
select 'AZ' like 'AZ%';
|
||||||
|
'AZ' like 'AZ%'
|
||||||
|
1
|
||||||
|
select 'AZ' like '%AZ%';
|
||||||
|
'AZ' like '%AZ%'
|
||||||
|
1
|
||||||
|
select 'AZ' like '%Z';
|
||||||
|
'AZ' like '%Z'
|
||||||
|
1
|
||||||
|
select 'AZ' like '%AZ';
|
||||||
|
'AZ' like '%AZ'
|
||||||
|
1
|
||||||
|
select 'AZ' like 'A%Z%';
|
||||||
|
'AZ' like 'A%Z%'
|
||||||
|
1
|
||||||
|
select 'AZ' like '_%_%';
|
||||||
|
'AZ' like '_%_%'
|
||||||
|
1
|
||||||
|
select 'AZ' like '%A%Z';
|
||||||
|
'AZ' like '%A%Z'
|
||||||
|
1
|
||||||
|
select 'AZ' like 'A_';
|
||||||
|
'AZ' like 'A_'
|
||||||
|
1
|
||||||
|
select 'AZ' like '_Z';
|
||||||
|
'AZ' like '_Z'
|
||||||
|
1
|
||||||
|
select 'AMZ'like 'A%M%Z';
|
||||||
|
'AMZ'like 'A%M%Z'
|
||||||
|
1
|
||||||
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET ucs2);
|
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET ucs2);
|
||||||
INSERT INTO t1 VALUES ('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>');
|
INSERT INTO t1 VALUES ('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>');
|
||||||
INSERT INTO t1 VALUES ('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
INSERT INTO t1 VALUES ('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
||||||
|
@ -69,6 +69,35 @@ select * from t1 where a like "%abcd%";
|
|||||||
select * from t1 where a like "%abc\d%";
|
select * from t1 where a like "%abc\d%";
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# More LIKE test: bug#2619
|
||||||
|
#
|
||||||
|
select 'AA' like 'AA';
|
||||||
|
select 'AA' like 'A%A';
|
||||||
|
select 'AA' like 'A%%A';
|
||||||
|
select 'AA' like 'AA%';
|
||||||
|
select 'AA' like '%AA%';
|
||||||
|
select 'AA' like '%A';
|
||||||
|
select 'AA' like '%AA';
|
||||||
|
select 'AA' like 'A%A%';
|
||||||
|
select 'AA' like '_%_%';
|
||||||
|
select 'AA' like '%A%A';
|
||||||
|
select 'AAA'like 'A%A%A';
|
||||||
|
|
||||||
|
select 'AZ' like 'AZ';
|
||||||
|
select 'AZ' like 'A%Z';
|
||||||
|
select 'AZ' like 'A%%Z';
|
||||||
|
select 'AZ' like 'AZ%';
|
||||||
|
select 'AZ' like '%AZ%';
|
||||||
|
select 'AZ' like '%Z';
|
||||||
|
select 'AZ' like '%AZ';
|
||||||
|
select 'AZ' like 'A%Z%';
|
||||||
|
select 'AZ' like '_%_%';
|
||||||
|
select 'AZ' like '%A%Z';
|
||||||
|
select 'AZ' like 'A_';
|
||||||
|
select 'AZ' like '_Z';
|
||||||
|
select 'AMZ'like 'A%M%Z';
|
||||||
|
|
||||||
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET ucs2);
|
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET ucs2);
|
||||||
INSERT INTO t1 VALUES ('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>');
|
INSERT INTO t1 VALUES ('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD>');
|
||||||
INSERT INTO t1 VALUES ('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
INSERT INTO t1 VALUES ('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'),('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
|
||||||
|
@ -1044,14 +1044,13 @@ int my_wildcmp_ucs2(CHARSET_INFO *cs,
|
|||||||
scan= my_ucs2_uni(cs,&w_wc, (const uchar*)wildstr, (const uchar*)wildend);
|
scan= my_ucs2_uni(cs,&w_wc, (const uchar*)wildstr, (const uchar*)wildend);
|
||||||
if (scan <= 0)
|
if (scan <= 0)
|
||||||
return 1;
|
return 1;
|
||||||
wildstr+= scan;
|
|
||||||
|
|
||||||
if (w_wc == (my_wc_t)escape)
|
if (w_wc == (my_wc_t)escape)
|
||||||
{
|
{
|
||||||
|
wildstr+= scan;
|
||||||
scan= my_ucs2_uni(cs,&w_wc, (const uchar*)wildstr, (const uchar*)wildend);
|
scan= my_ucs2_uni(cs,&w_wc, (const uchar*)wildstr, (const uchar*)wildend);
|
||||||
if (scan <= 0)
|
if (scan <= 0)
|
||||||
return 1;
|
return 1;
|
||||||
wildstr+= scan;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (w_wc == (my_wc_t)w_many)
|
if (w_wc == (my_wc_t)w_many)
|
||||||
@ -1060,6 +1059,7 @@ int my_wildcmp_ucs2(CHARSET_INFO *cs,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wildstr+= scan;
|
||||||
scan= my_ucs2_uni(cs, &s_wc, (const uchar*)str, (const uchar*)str_end);
|
scan= my_ucs2_uni(cs, &s_wc, (const uchar*)str, (const uchar*)str_end);
|
||||||
if (scan <=0)
|
if (scan <=0)
|
||||||
return 1;
|
return 1;
|
||||||
@ -1095,13 +1095,16 @@ int my_wildcmp_ucs2(CHARSET_INFO *cs,
|
|||||||
scan= my_ucs2_uni(cs,&w_wc, (const uchar*)wildstr, (const uchar*)wildend);
|
scan= my_ucs2_uni(cs,&w_wc, (const uchar*)wildstr, (const uchar*)wildend);
|
||||||
if (scan <= 0)
|
if (scan <= 0)
|
||||||
return 1;
|
return 1;
|
||||||
wildstr+= scan;
|
|
||||||
|
|
||||||
if (w_wc == (my_wc_t)w_many)
|
if (w_wc == (my_wc_t)w_many)
|
||||||
|
{
|
||||||
|
wildstr+= scan;
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (w_wc == (my_wc_t)w_one)
|
if (w_wc == (my_wc_t)w_one)
|
||||||
{
|
{
|
||||||
|
wildstr+= scan;
|
||||||
scan= my_ucs2_uni(cs, &s_wc, (const uchar*)str, (const uchar*)str_end);
|
scan= my_ucs2_uni(cs, &s_wc, (const uchar*)str, (const uchar*)str_end);
|
||||||
if (scan <=0)
|
if (scan <=0)
|
||||||
return 1;
|
return 1;
|
||||||
@ -1120,17 +1123,16 @@ int my_wildcmp_ucs2(CHARSET_INFO *cs,
|
|||||||
scan= my_ucs2_uni(cs,&w_wc, (const uchar*)wildstr, (const uchar*)wildend);
|
scan= my_ucs2_uni(cs,&w_wc, (const uchar*)wildstr, (const uchar*)wildend);
|
||||||
if (scan <= 0)
|
if (scan <= 0)
|
||||||
return 1;
|
return 1;
|
||||||
wildstr+= scan;
|
|
||||||
|
|
||||||
if (w_wc == (my_wc_t)escape)
|
if (w_wc == (my_wc_t)escape)
|
||||||
{
|
{
|
||||||
|
wildstr+= scan;
|
||||||
scan= my_ucs2_uni(cs,&w_wc, (const uchar*)wildstr, (const uchar*)wildend);
|
scan= my_ucs2_uni(cs,&w_wc, (const uchar*)wildstr, (const uchar*)wildend);
|
||||||
if (scan <= 0)
|
if (scan <= 0)
|
||||||
return 1;
|
return 1;
|
||||||
wildstr+= scan;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
do
|
while (1)
|
||||||
{
|
{
|
||||||
/* Skip until the first character from wildstr is found */
|
/* Skip until the first character from wildstr is found */
|
||||||
while (str != str_end)
|
while (str != str_end)
|
||||||
@ -1138,8 +1140,6 @@ int my_wildcmp_ucs2(CHARSET_INFO *cs,
|
|||||||
scan= my_ucs2_uni(cs,&s_wc, (const uchar*)str, (const uchar*)str_end);
|
scan= my_ucs2_uni(cs,&s_wc, (const uchar*)str, (const uchar*)str_end);
|
||||||
if (scan <= 0)
|
if (scan <= 0)
|
||||||
return 1;
|
return 1;
|
||||||
str+= scan;
|
|
||||||
|
|
||||||
if (weights)
|
if (weights)
|
||||||
{
|
{
|
||||||
plane=(s_wc>>8) & 0xFF;
|
plane=(s_wc>>8) & 0xFF;
|
||||||
@ -1150,17 +1150,19 @@ int my_wildcmp_ucs2(CHARSET_INFO *cs,
|
|||||||
|
|
||||||
if (s_wc == w_wc)
|
if (s_wc == w_wc)
|
||||||
break;
|
break;
|
||||||
|
str+= scan;
|
||||||
}
|
}
|
||||||
if (str == str_end)
|
if (str == str_end)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
result= my_wildcmp_ucs2(cs,str,str_end,wildstr,wildend,escape,
|
result= my_wildcmp_ucs2(cs,str,str_end,wildstr,wildend,escape,
|
||||||
w_one,w_many,weights);
|
w_one,w_many,weights);
|
||||||
|
|
||||||
if (result <= 0)
|
if (result <= 0)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
} while (str != str_end && w_wc != (my_wc_t)w_many);
|
str+= scan;
|
||||||
return -1;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (str != str_end ? 1 : 0);
|
return (str != str_end ? 1 : 0);
|
||||||
|
Reference in New Issue
Block a user