From 0a2b07254f85b9e3a1a5a4bc52bb44957006cc31 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 18 May 2005 05:15:48 -0700 Subject: [PATCH] olap.result, olap.test: Added test cases for bug #7914. sql_select.cc: Fixed bug #7914: rollup over expresssions such as sum(a)+1. sql/sql_select.cc: Fixed bug #7914: rollup over expresssions such as sum(a)+1. mysql-test/t/olap.test: Added test cases for bug #7914. mysql-test/r/olap.result: Added test cases for bug #7914. --- mysql-test/r/olap.result | 33 +++++++++++++++++++++++++++++++++ mysql-test/t/olap.test | 24 ++++++++++++++++++++++++ sql/sql_select.cc | 6 +++--- 3 files changed, 60 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/olap.result b/mysql-test/r/olap.result index 341d51033f2..013952403d7 100644 --- a/mysql-test/r/olap.result +++ b/mysql-test/r/olap.result @@ -405,3 +405,36 @@ a m 2 2 NULL 3 DROP TABLE t1; +CREATE TABLE t1 (a int(11)); +INSERT INTO t1 VALUES (1),(2); +SELECT a, SUM(a), SUM(a)+1 FROM (SELECT a FROM t1 UNION select 2) d +GROUP BY a; +a SUM(a) SUM(a)+1 +1 1 2 +2 2 3 +SELECT a, SUM(a), SUM(a)+1 FROM (SELECT a FROM t1 UNION select 2) d +GROUP BY a WITH ROLLUP; +a SUM(a) SUM(a)+1 +1 1 2 +2 2 3 +NULL 3 4 +SELECT a, SUM(a), SUM(a)+1 FROM (SELECT 1 a UNION select 2) d +GROUP BY a; +a SUM(a) SUM(a)+1 +1 1 2 +2 2 3 +SELECT a, SUM(a), SUM(a)+1 FROM (SELECT 1 a UNION select 2) d +GROUP BY a WITH ROLLUP; +a SUM(a) SUM(a)+1 +1 1 2 +2 2 3 +NULL 3 4 +SELECT a, SUM(a), SUM(a)+1, CONCAT(SUM(a),'x'), SUM(a)+SUM(a), SUM(a) +FROM (SELECT 1 a, 2 b UNION SELECT 2,3 UNION SELECT 5,6 ) d +GROUP BY a WITH ROLLUP; +a SUM(a) SUM(a)+1 CONCAT(SUM(a),'x') SUM(a)+SUM(a) SUM(a) +1 1 2 1x 2 1 +2 2 3 2x 4 2 +5 5 6 5x 10 5 +NULL 8 9 8x 16 8 +DROP TABLE t1; diff --git a/mysql-test/t/olap.test b/mysql-test/t/olap.test index 4f3b0f51286..09ba537bf3b 100644 --- a/mysql-test/t/olap.test +++ b/mysql-test/t/olap.test @@ -184,3 +184,27 @@ SELECT a, SUM(a) m FROM t1 GROUP BY a WITH ROLLUP; SELECT * FROM ( SELECT a, SUM(a) m FROM t1 GROUP BY a WITH ROLLUP ) t2; DROP TABLE t1; + +# +# Tests for bug #7914: ROLLUP over expressions on temporary table +# + +CREATE TABLE t1 (a int(11)); +INSERT INTO t1 VALUES (1),(2); + +SELECT a, SUM(a), SUM(a)+1 FROM (SELECT a FROM t1 UNION select 2) d + GROUP BY a; +SELECT a, SUM(a), SUM(a)+1 FROM (SELECT a FROM t1 UNION select 2) d + GROUP BY a WITH ROLLUP; + +SELECT a, SUM(a), SUM(a)+1 FROM (SELECT 1 a UNION select 2) d + GROUP BY a; +SELECT a, SUM(a), SUM(a)+1 FROM (SELECT 1 a UNION select 2) d + GROUP BY a WITH ROLLUP; + +SELECT a, SUM(a), SUM(a)+1, CONCAT(SUM(a),'x'), SUM(a)+SUM(a), SUM(a) + FROM (SELECT 1 a, 2 b UNION SELECT 2,3 UNION SELECT 5,6 ) d + GROUP BY a WITH ROLLUP; + +DROP TABLE t1; + diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 1ff3328b8a8..fb7f10abb52 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -1181,7 +1181,7 @@ JOIN::exec() } curr_all_fields= &tmp_all_fields1; curr_fields_list= &tmp_fields_list1; - set_items_ref_array(items1); + curr_join->set_items_ref_array(items1); if (sort_and_group || curr_tmp_table->group) { @@ -1314,7 +1314,7 @@ JOIN::exec() } curr_fields_list= &curr_join->tmp_fields_list2; curr_all_fields= &curr_join->tmp_all_fields2; - set_items_ref_array(items2); + curr_join->set_items_ref_array(items2); curr_join->tmp_table_param.field_count+= curr_join->tmp_table_param.sum_func_count; curr_join->tmp_table_param.sum_func_count= 0; @@ -1375,7 +1375,7 @@ JOIN::exec() } curr_fields_list= &tmp_fields_list3; curr_all_fields= &tmp_all_fields3; - set_items_ref_array(items3); + curr_join->set_items_ref_array(items3); if (curr_join->make_sum_func_list(*curr_all_fields, *curr_fields_list, 1) || thd->is_fatal_error)