Bug #20868: Client connection is broken on SQL query error

 An aggregate function reference was resolved incorrectly and
caused a crash in count_field_types.
 Must use real_item() to get to the real Item instance through
the reference
parent 31a7bdfc
...@@ -988,3 +988,14 @@ SUM(a) ...@@ -988,3 +988,14 @@ SUM(a)
6 6
DROP TABLE t1; DROP TABLE t1;
set div_precision_increment= @sav_dpi; set div_precision_increment= @sav_dpi;
CREATE TABLE t1 (a INT PRIMARY KEY, b INT);
INSERT INTO t1 VALUES (1,1), (2,2);
CREATE TABLE t2 (a INT PRIMARY KEY, b INT);
INSERT INTO t2 VALUES (1,1), (3,3);
SELECT SQL_NO_CACHE
(SELECT SUM(c.a) FROM t1 ttt, t2 ccc
WHERE ttt.a = ccc.b AND ttt.a = t.a GROUP BY ttt.a) AS minid
FROM t1 t, t2 c WHERE t.a = c.b;
minid
NULL
DROP TABLE t1,t2;
...@@ -660,3 +660,18 @@ SELECT SUM(a) FROM t1 GROUP BY b/c; ...@@ -660,3 +660,18 @@ SELECT SUM(a) FROM t1 GROUP BY b/c;
DROP TABLE t1; DROP TABLE t1;
set div_precision_increment= @sav_dpi; set div_precision_increment= @sav_dpi;
#
# Bug #20868: Client connection is broken on SQL query error
#
CREATE TABLE t1 (a INT PRIMARY KEY, b INT);
INSERT INTO t1 VALUES (1,1), (2,2);
CREATE TABLE t2 (a INT PRIMARY KEY, b INT);
INSERT INTO t2 VALUES (1,1), (3,3);
SELECT SQL_NO_CACHE
(SELECT SUM(c.a) FROM t1 ttt, t2 ccc
WHERE ttt.a = ccc.b AND ttt.a = t.a GROUP BY ttt.a) AS minid
FROM t1 t, t2 c WHERE t.a = c.b;
DROP TABLE t1,t2;
...@@ -12806,7 +12806,7 @@ count_field_types(TMP_TABLE_PARAM *param, List<Item> &fields, ...@@ -12806,7 +12806,7 @@ count_field_types(TMP_TABLE_PARAM *param, List<Item> &fields,
{ {
if (! field->const_item()) if (! field->const_item())
{ {
Item_sum *sum_item=(Item_sum*) field; Item_sum *sum_item=(Item_sum*) field->real_item();
if (!sum_item->quick_group) if (!sum_item->quick_group)
param->quick_group=0; // UDF SUM function param->quick_group=0; // UDF SUM function
param->sum_func_count++; param->sum_func_count++;
......
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