Fix for bug #5513: FIND_IN_SET fails if set ends with a comma

parent 74336d59
......@@ -64,3 +64,6 @@ find_in_set('a',binary 'A,B,C')
select find_in_set(binary 'a', 'A,B,C');
find_in_set(binary 'a', 'A,B,C')
0
select find_in_set('1','3,1,');
find_in_set('1','3,1,')
2
......@@ -47,3 +47,8 @@ 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');
#
# Bug5513:FIND_IN_SET fails if set ends with a comma
#
select find_in_set('1','3,1,');
......@@ -1455,10 +1455,11 @@ longlong Item_func_find_in_set::val_int()
{
const char *substr_end= str_end + symbol_len;
bool is_last_item= (substr_end == real_end);
if (wc == (my_wc_t) separator || is_last_item)
bool is_separator= (wc == (my_wc_t) separator);
if (is_separator || is_last_item)
{
position++;
if (is_last_item)
if (is_last_item && !is_separator)
str_end= substr_end;
if (!my_strnncoll(cs, (const uchar *) str_begin,
str_end - str_begin,
......
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