mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
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.
This commit is contained in:
@ -405,3 +405,36 @@ a m
|
|||||||
2 2
|
2 2
|
||||||
NULL 3
|
NULL 3
|
||||||
DROP TABLE t1;
|
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;
|
||||||
|
@ -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;
|
SELECT * FROM ( SELECT a, SUM(a) m FROM t1 GROUP BY a WITH ROLLUP ) t2;
|
||||||
|
|
||||||
DROP TABLE t1;
|
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;
|
||||||
|
|
||||||
|
@ -1181,7 +1181,7 @@ JOIN::exec()
|
|||||||
}
|
}
|
||||||
curr_all_fields= &tmp_all_fields1;
|
curr_all_fields= &tmp_all_fields1;
|
||||||
curr_fields_list= &tmp_fields_list1;
|
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)
|
if (sort_and_group || curr_tmp_table->group)
|
||||||
{
|
{
|
||||||
@ -1314,7 +1314,7 @@ JOIN::exec()
|
|||||||
}
|
}
|
||||||
curr_fields_list= &curr_join->tmp_fields_list2;
|
curr_fields_list= &curr_join->tmp_fields_list2;
|
||||||
curr_all_fields= &curr_join->tmp_all_fields2;
|
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.field_count+=
|
||||||
curr_join->tmp_table_param.sum_func_count;
|
curr_join->tmp_table_param.sum_func_count;
|
||||||
curr_join->tmp_table_param.sum_func_count= 0;
|
curr_join->tmp_table_param.sum_func_count= 0;
|
||||||
@ -1375,7 +1375,7 @@ JOIN::exec()
|
|||||||
}
|
}
|
||||||
curr_fields_list= &tmp_fields_list3;
|
curr_fields_list= &tmp_fields_list3;
|
||||||
curr_all_fields= &tmp_all_fields3;
|
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,
|
if (curr_join->make_sum_func_list(*curr_all_fields, *curr_fields_list,
|
||||||
1) || thd->is_fatal_error)
|
1) || thd->is_fatal_error)
|
||||||
|
Reference in New Issue
Block a user