Commit 16f3170e authored by unknown's avatar unknown
Browse files

func_gconcat.result, func_gconcat.test:

  Added a test case for bug #7769.
item_sum.h:
  Fixed bug #7769: a crash for queries with group_concat and
  having when the query table was empty.
  The bug was due an unsafe dereferencing.


sql/item_sum.h:
  Fixed bug #7769: a crash for queries with group_concat and
  having when the query table was empty.
  The bug was due an unsafe dereferencing.
mysql-test/t/func_gconcat.test:
  Added a test case for bug #7769.
mysql-test/r/func_gconcat.result:
  Added a test case for bug #7769.
parent 6f70a1d9
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -457,3 +457,8 @@ group_concat(distinct b order by b)
Warnings:
Warning	1260	2 line(s) were cut by GROUP_CONCAT()
drop table t1;
CREATE TABLE t1 (id int);
SELECT GROUP_CONCAT(id) AS gc FROM t1 HAVING gc IS NULL;
gc
NULL
DROP TABLE t1;
+7 −0
Original line number Diff line number Diff line
@@ -277,3 +277,10 @@ select group_concat(b order by b) from t1 group by a;
select group_concat(distinct b order by b) from t1 group by a;

drop table t1;

#
# bug #7769: group_concat returning null is checked in having
#
CREATE TABLE t1 (id int);
SELECT GROUP_CONCAT(id) AS gc FROM t1 HAVING gc IS NULL;
DROP TABLE t1;
+3 −2
Original line number Diff line number Diff line
@@ -739,9 +739,10 @@ class Item_func_group_concat : public Item_sum
    String *res;
    char *end_ptr;
    int error;
    res= val_str(&str_value);
    if (!(res= val_str(&str_value)))
      return (longlong) 0;
    end_ptr= (char*) res->ptr()+ res->length();
    return res ? my_strtoll10(res->ptr(), &end_ptr, &error) : (longlong) 0;
    return my_strtoll10(res->ptr(), &end_ptr, &error);
  }
  String* val_str(String* str);
  Item *copy_or_same(THD* thd);