#At file:///home/kgeorge/mysql/bzr/test-5.0-bugteam/
2669 Georgi Kodinov 2008-08-19
Bug#38195: Incorrect handling of aggregate functions when loose index scan
is used causes server crash.
Revert the fix : unstable test case revealed by pushbuild
modified:
mysql-test/r/group_min_max.result
mysql-test/t/group_min_max.test
sql/sql_select.cc
=== modified file 'mysql-test/r/group_min_max.result'
--- a/mysql-test/r/group_min_max.result 2008-08-14 19:55:18 +0000
+++ b/mysql-test/r/group_min_max.result 2008-08-19 10:36:24 +0000
@@ -2353,28 +2353,3 @@ a MIN(b) MAX(b) AVG(b)
2 1 3 2.0000
1 1 3 2.0000
DROP TABLE t1;
-create table t1 (a int, b int, primary key (a,b), key `index` (a,b)) engine=MyISAM;
-insert into t1 (a,b) values (0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),
-(0,8),(0,9),(0,10),(0,11);
-insert into t1 (a,b) select a, max(b)+1 from t1 where a = 0 group by a;
-select * from t1;
-a b
-0 0
-0 1
-0 2
-0 3
-0 4
-0 5
-0 6
-0 7
-0 8
-0 9
-0 10
-0 11
-0 12
-explain extended select sql_buffer_result a, max(b)+1 from t1 where a = 0 group by a;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 range PRIMARY,index PRIMARY 4 NULL 5 Using where; Using index for group-by;
Using temporary
-Warnings:
-Note 1003 select sql_buffer_result `test`.`t1`.`a` AS `a`,(max(`test`.`t1`.`b`) + 1) AS
`max(b)+1` from `test`.`t1` where (`test`.`t1`.`a` = 0) group by `test`.`t1`.`a`
-drop table t1;
=== modified file 'mysql-test/t/group_min_max.test'
--- a/mysql-test/t/group_min_max.test 2008-08-14 19:55:18 +0000
+++ b/mysql-test/t/group_min_max.test 2008-08-19 10:36:24 +0000
@@ -916,15 +916,3 @@ SELECT a, MIN(b), MAX(b), AVG(b) FROM t1
SELECT a, MIN(b), MAX(b), AVG(b) FROM t1 GROUP BY a ORDER BY a DESC;
DROP TABLE t1;
-
-#
-# Bug#38195: Incorrect handling of aggregate functions when loose index scan is
-# used causes server crash.
-#
-create table t1 (a int, b int, primary key (a,b), key `index` (a,b)) engine=MyISAM;
-insert into t1 (a,b) values (0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),
-(0,8),(0,9),(0,10),(0,11);
-insert into t1 (a,b) select a, max(b)+1 from t1 where a = 0 group by a;
-select * from t1;
-explain extended select sql_buffer_result a, max(b)+1 from t1 where a = 0 group by a;
-drop table t1;
=== modified file 'sql/sql_select.cc'
--- a/sql/sql_select.cc 2008-08-13 18:24:55 +0000
+++ b/sql/sql_select.cc 2008-08-19 10:36:24 +0000
@@ -1724,8 +1724,7 @@ JOIN::exec()
if (!items1)
{
items1= items0 + all_fields.elements;
- if (sort_and_group || curr_tmp_table->group ||
- tmp_table_param.precomputed_group_by)
+ if (sort_and_group || curr_tmp_table->group)
{
if (change_to_use_tmp_fields(thd, items1,
tmp_fields_list1, tmp_all_fields1,
@@ -9260,8 +9259,6 @@ create_tmp_table(THD *thd,TMP_TABLE_PARA
MI_COLUMNDEF *recinfo;
uint total_uneven_bit_length= 0;
bool force_copy_fields= param->force_copy_fields;
- /* Treat sum functions as normal ones when loose index scan is used. */
- save_sum_fields|= param->precomputed_group_by;
DBUG_ENTER("create_tmp_table");
DBUG_PRINT("enter",("distinct: %d save_sum_fields: %d rows_limit: %lu group: %d",
(int) distinct, (int) save_sum_fields,
| Thread |
|---|
| • bzr commit into mysql-5.0 branch (kgeorge:2669) Bug#38195 | Georgi Kodinov | 19 Aug |