Merge sgluhov@bk-internal.mysql.com:/home/bk/mysql-4.0
into gluh.mysql.r18.ru:/home/gluh/MySQL-BUGS/mysql-4.0
This commit is contained in:
commit
219f4f9725
@ -28,3 +28,12 @@ find_in_set("abc","abc") find_in_set("ab","abc") find_in_set("abcd","abc")
|
||||
select interval(null, 1, 10, 100);
|
||||
interval(null, 1, 10, 100)
|
||||
-1
|
||||
select find_in_set(binary 'a',binary 'A,B,C');
|
||||
find_in_set(binary 'a',binary 'A,B,C')
|
||||
0
|
||||
select find_in_set('a',binary 'A,B,C');
|
||||
find_in_set('a',binary 'A,B,C')
|
||||
0
|
||||
select find_in_set(binary 'a', 'A,B,C');
|
||||
find_in_set(binary 'a', 'A,B,C')
|
||||
0
|
||||
|
@ -16,3 +16,11 @@ select elt(2,1),field(NULL,"a","b","c");
|
||||
select find_in_set("","a,b,c"),find_in_set("","a,b,c,"),find_in_set("",",a,b,c");
|
||||
select find_in_set("abc","abc"),find_in_set("ab","abc"),find_in_set("abcd","abc");
|
||||
select interval(null, 1, 10, 100);
|
||||
|
||||
#
|
||||
# Bug4340: find_in_set is case insensitive even on binary operators
|
||||
#
|
||||
|
||||
select find_in_set(binary 'a',binary 'A,B,C');
|
||||
select find_in_set('a',binary 'A,B,C');
|
||||
select find_in_set(binary 'a', 'A,B,C');
|
||||
|
@ -1071,6 +1071,7 @@ static const char separator=',';
|
||||
|
||||
longlong Item_func_find_in_set::val_int()
|
||||
{
|
||||
bool binary_cmp= args[0]->binary || args[1]->binary;
|
||||
if (enum_value)
|
||||
{
|
||||
ulonglong tmp=(ulonglong) args[1]->val_int();
|
||||
@ -1103,12 +1104,25 @@ longlong Item_func_find_in_set::val_int()
|
||||
do
|
||||
{
|
||||
const char *pos= f_pos;
|
||||
while (pos != f_end)
|
||||
if (binary_cmp)
|
||||
{
|
||||
if (toupper(*str) != toupper(*pos))
|
||||
goto not_found;
|
||||
str++;
|
||||
pos++;
|
||||
while (pos != f_end)
|
||||
{
|
||||
if (*str != *pos)
|
||||
goto not_found;
|
||||
str++;
|
||||
pos++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while (pos != f_end)
|
||||
{
|
||||
if (toupper(*str) != toupper(*pos))
|
||||
goto not_found;
|
||||
str++;
|
||||
pos++;
|
||||
}
|
||||
}
|
||||
if (str == real_end || str[0] == separator)
|
||||
return (longlong) position;
|
||||
|
Loading…
x
Reference in New Issue
Block a user