From: Date: August 6 2008 10:00pm Subject: bzr push into mysql-5.0 branch (epotemkin:2610 to 2611) Bug#38195 List-Archive: http://lists.mysql.com/commits/51040 X-Bug: 38195 Message-Id: <20080806200052.CD21150C024@sunlight.local> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 2611 Evgeny Potemkin 2008-08-06 Bug#38195: Incorrect handling of aggregate functions when loose index scan is used causes server crash. When the loose index scan access method is used values of aggregated functions are precomputed by it. Aggregation of such functions shouldn't be performed in this case and functions should be treated as normal ones. The create_tmp_table function wasn't taking this into account and this led to a crash if a query has MIN/MAX aggregate functions and employs temporary table and loose index scan. Now the JOIN::exec and the create_tmp_table functions treat MIN/MAX aggregate functions as normal ones when the loose index scan is used. modified: mysql-test/r/group_min_max.result mysql-test/t/group_min_max.test sql/sql_select.cc 2610 Igor Babaev 2008-07-28 [merge] Merge removed: mysql-test/suite/funcs_1/data/ mysql-test/suite/funcs_1/triggers/triggers_master.test added: .bzr-mysql/ .bzr-mysql/default.conf mysql-test/include/wait_condition.inc mysql-test/r/federated_disabled.result mysql-test/r/multi_update_tiny_hash.result mysql-test/r/parser.result mysql-test/r/parser_stack.result mysql-test/std_data/bug36055.MYD mysql-test/std_data/bug36055.MYI mysql-test/std_data/bug36055.frm mysql-test/std_data/funcs_1/ mysql-test/std_data/funcs_1/load_file.txt mysql-test/suite/funcs_1/datadict/is_key_column_usage.inc mysql-test/suite/funcs_1/datadict/is_routines.inc mysql-test/suite/funcs_1/datadict/is_schemata.inc mysql-test/suite/funcs_1/datadict/is_tables.inc mysql-test/suite/funcs_1/datadict/is_triggers.inc mysql-test/suite/funcs_1/datadict/is_views.inc mysql-test/suite/funcs_1/datadict/tables.inc mysql-test/suite/funcs_1/include/bug28309_skip.inc mysql-test/suite/funcs_1/include/tb3.inc mysql-test/suite/funcs_1/r/is_cml_innodb.result mysql-test/suite/funcs_1/r/is_cml_memory.result mysql-test/suite/funcs_1/r/is_cml_myisam.result mysql-test/suite/funcs_1/r/is_cml_ndb.result mysql-test/suite/funcs_1/r/is_columns_is_embedded.result mysql-test/suite/funcs_1/r/is_columns_myisam_embedded.result mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result mysql-test/suite/funcs_1/r/is_key_column_usage_embedded.result mysql-test/suite/funcs_1/r/is_routines_embedded.result mysql-test/suite/funcs_1/r/is_schemata_embedded.result mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result mysql-test/suite/funcs_1/r/is_table_constraints_mysql_embedded.result mysql-test/suite/funcs_1/r/is_tables_embedded.result mysql-test/suite/funcs_1/r/is_tables_myisam_embedded.result mysql-test/suite/funcs_1/r/is_tables_mysql_embedded.result mysql-test/suite/funcs_1/r/is_triggers_embedded.result mysql-test/suite/funcs_1/r/is_views_embedded.result mysql-test/suite/funcs_1/r/ndb_trig_0102.result mysql-test/suite/funcs_1/r/ndb_trig_03.result mysql-test/suite/funcs_1/r/ndb_trig_0407.result mysql-test/suite/funcs_1/r/ndb_trig_08.result mysql-test/suite/funcs_1/r/ndb_trig_09.result mysql-test/suite/funcs_1/r/ndb_trig_1011ext.result mysql-test/suite/funcs_1/t/is_cml_innodb.test mysql-test/suite/funcs_1/t/is_cml_memory.test mysql-test/suite/funcs_1/t/is_cml_myisam.test mysql-test/suite/funcs_1/t/is_cml_ndb.test mysql-test/suite/funcs_1/t/is_columns_is_embedded.test mysql-test/suite/funcs_1/t/is_columns_myisam_embedded.test mysql-test/suite/funcs_1/t/is_columns_mysql_embedded.test mysql-test/suite/funcs_1/t/is_key_column_usage_embedded.test mysql-test/suite/funcs_1/t/is_routines_embedded.test mysql-test/suite/funcs_1/t/is_schemata_embedded.test mysql-test/suite/funcs_1/t/is_statistics_mysql_embedded.test mysql-test/suite/funcs_1/t/is_table_constraints_mysql_embedded.test mysql-test/suite/funcs_1/t/is_tables_embedded.test mysql-test/suite/funcs_1/t/is_tables_myisam_embedded.test mysql-test/suite/funcs_1/t/is_tables_mysql_embedded.test mysql-test/suite/funcs_1/t/is_triggers_embedded.test mysql-test/suite/funcs_1/t/is_views_embedded.test mysql-test/suite/funcs_1/t/ndb_trig_0102.test mysql-test/suite/funcs_1/t/ndb_trig_03.test mysql-test/suite/funcs_1/t/ndb_trig_0407.test mysql-test/suite/funcs_1/t/ndb_trig_08.test mysql-test/suite/funcs_1/t/ndb_trig_09.test mysql-test/suite/funcs_1/t/ndb_trig_1011ext.test mysql-test/t/federated_disabled-master.opt mysql-test/t/federated_disabled.test mysql-test/t/multi_update_tiny_hash-master.opt mysql-test/t/multi_update_tiny_hash.test mysql-test/t/parser.test mysql-test/t/parser_stack.test renamed: mysql-test/suite/funcs_1/data/innodb_tb1.txt => mysql-test/std_data/funcs_1/innodb_tb1.txt mysql-test/suite/funcs_1/data/innodb_tb2.txt => mysql-test/std_data/funcs_1/innodb_tb2.txt mysql-test/suite/funcs_1/data/innodb_tb3.txt => mysql-test/std_data/funcs_1/innodb_tb3.txt mysql-test/suite/funcs_1/data/innodb_tb4.txt => mysql-test/std_data/funcs_1/innodb_tb4.txt mysql-test/suite/funcs_1/data/memory_tb1.txt => mysql-test/std_data/funcs_1/memory_tb1.txt mysql-test/suite/funcs_1/data/memory_tb2.txt => mysql-test/std_data/funcs_1/memory_tb2.txt mysql-test/suite/funcs_1/data/memory_tb3.txt => mysql-test/std_data/funcs_1/memory_tb3.txt mysql-test/suite/funcs_1/data/memory_tb4.txt => mysql-test/std_data/funcs_1/memory_tb4.txt mysql-test/suite/funcs_1/data/myisam_tb1.txt => mysql-test/std_data/funcs_1/myisam_tb1.txt mysql-test/suite/funcs_1/data/myisam_tb2.txt => mysql-test/std_data/funcs_1/myisam_tb2.txt mysql-test/suite/funcs_1/data/myisam_tb3.txt => mysql-test/std_data/funcs_1/myisam_tb3.txt mysql-test/suite/funcs_1/data/myisam_tb4.txt => mysql-test/std_data/funcs_1/myisam_tb4.txt mysql-test/suite/funcs_1/data/t3.txt => mysql-test/std_data/funcs_1/t3.txt mysql-test/suite/funcs_1/data/t4.txt => mysql-test/std_data/funcs_1/t4.txt mysql-test/suite/funcs_1/data/t7.txt => mysql-test/std_data/funcs_1/t7.txt mysql-test/suite/funcs_1/data/t9.txt => mysql-test/std_data/funcs_1/t9.txt modified: BUILD/Makefile.am Makefile.am client/mysql.cc client/mysql_upgrade.c client/mysqlbinlog.cc client/mysqltest.c configure.in dbug/dbug.c include/my_global.h include/my_sys.h include/my_time.h mysql-test/Makefile.am mysql-test/include/have_archive.inc mysql-test/include/have_bdb.inc mysql-test/include/have_big5.inc mysql-test/include/have_blackhole.inc mysql-test/include/have_case_sensitive_file_system.inc mysql-test/include/have_compress.inc mysql-test/include/have_cp1250_ch.inc mysql-test/include/have_cp932.inc mysql-test/include/have_crypt.inc mysql-test/include/have_csv.inc mysql-test/include/have_eucjpms.inc mysql-test/include/have_euckr.inc mysql-test/include/have_exampledb.inc mysql-test/include/have_federated_db.inc mysql-test/include/have_gb2312.inc mysql-test/include/have_gbk.inc mysql-test/include/have_geometry.inc mysql-test/include/have_innodb.inc mysql-test/include/have_latin2_ch.inc mysql-test/include/have_log_bin.inc mysql-test/include/have_lowercase0.inc mysql-test/include/have_multi_ndb.inc mysql-test/include/have_ndb.inc mysql-test/include/have_query_cache.inc mysql-test/include/have_sjis.inc mysql-test/include/have_ssl.inc mysql-test/include/have_tis620.inc mysql-test/include/have_ucs2.inc mysql-test/include/have_udf.inc mysql-test/include/have_ujis.inc mysql-test/mysql-test-run.pl mysql-test/r/bdb.result mysql-test/r/binlog_innodb.result mysql-test/r/client_xml.result mysql-test/r/comments.result mysql-test/r/ctype_cp932_binlog.result mysql-test/r/ctype_gbk.result mysql-test/r/func_concat.result mysql-test/r/func_misc.result mysql-test/r/heap.result mysql-test/r/innodb.result mysql-test/r/myisam.result mysql-test/r/mysqlbinlog.result mysql-test/r/ps.result mysql-test/r/repair.result mysql-test/r/rpl_sp.result mysql-test/r/rpl_view.result mysql-test/r/strict.result mysql-test/r/subselect.result mysql-test/r/subselect3.result mysql-test/r/type_binary.result mysql-test/r/type_blob.result mysql-test/r/type_decimal.result mysql-test/r/warnings.result mysql-test/suite/funcs_1/README.txt mysql-test/suite/funcs_1/datadict/charset_collation.inc mysql-test/suite/funcs_1/datadict/columns.inc mysql-test/suite/funcs_1/datadict/datadict_bug_12777.inc mysql-test/suite/funcs_1/datadict/datadict_load.inc mysql-test/suite/funcs_1/datadict/tables1.inc mysql-test/suite/funcs_1/datadict/tables2.inc mysql-test/suite/funcs_1/include/innodb_tb1.inc mysql-test/suite/funcs_1/include/innodb_tb2.inc mysql-test/suite/funcs_1/include/innodb_tb3.inc mysql-test/suite/funcs_1/include/innodb_tb4.inc mysql-test/suite/funcs_1/include/memory_tb1.inc mysql-test/suite/funcs_1/include/memory_tb2.inc mysql-test/suite/funcs_1/include/memory_tb3.inc mysql-test/suite/funcs_1/include/memory_tb4.inc mysql-test/suite/funcs_1/include/myisam_tb1.inc mysql-test/suite/funcs_1/include/myisam_tb2.inc mysql-test/suite/funcs_1/include/myisam_tb3.inc mysql-test/suite/funcs_1/include/myisam_tb4.inc mysql-test/suite/funcs_1/include/sp_tb.inc mysql-test/suite/funcs_1/r/innodb_func_view.result mysql-test/suite/funcs_1/r/innodb_storedproc_02.result mysql-test/suite/funcs_1/r/innodb_storedproc_03.result mysql-test/suite/funcs_1/r/innodb_storedproc_06.result mysql-test/suite/funcs_1/r/innodb_storedproc_07.result mysql-test/suite/funcs_1/r/innodb_storedproc_08.result mysql-test/suite/funcs_1/r/innodb_storedproc_10.result mysql-test/suite/funcs_1/r/innodb_trig_0102.result mysql-test/suite/funcs_1/r/innodb_trig_03.result mysql-test/suite/funcs_1/r/innodb_trig_0407.result mysql-test/suite/funcs_1/r/innodb_trig_08.result mysql-test/suite/funcs_1/r/innodb_trig_09.result mysql-test/suite/funcs_1/r/innodb_trig_1011ext.result mysql-test/suite/funcs_1/r/innodb_trig_frkey.result mysql-test/suite/funcs_1/r/innodb_views.result mysql-test/suite/funcs_1/r/is_columns_innodb.result mysql-test/suite/funcs_1/r/is_columns_memory.result mysql-test/suite/funcs_1/r/is_columns_myisam.result mysql-test/suite/funcs_1/r/is_columns_ndb.result mysql-test/suite/funcs_1/r/is_tables_innodb.result mysql-test/suite/funcs_1/r/is_tables_is.result mysql-test/suite/funcs_1/r/is_tables_memory.result mysql-test/suite/funcs_1/r/is_tables_myisam.result mysql-test/suite/funcs_1/r/is_tables_mysql.result mysql-test/suite/funcs_1/r/is_tables_ndb.result mysql-test/suite/funcs_1/r/memory_func_view.result mysql-test/suite/funcs_1/r/memory_storedproc_02.result mysql-test/suite/funcs_1/r/memory_storedproc_03.result mysql-test/suite/funcs_1/r/memory_storedproc_06.result mysql-test/suite/funcs_1/r/memory_storedproc_07.result mysql-test/suite/funcs_1/r/memory_storedproc_08.result mysql-test/suite/funcs_1/r/memory_storedproc_10.result mysql-test/suite/funcs_1/r/memory_trig_0102.result mysql-test/suite/funcs_1/r/memory_trig_03.result mysql-test/suite/funcs_1/r/memory_trig_0407.result mysql-test/suite/funcs_1/r/memory_trig_08.result mysql-test/suite/funcs_1/r/memory_trig_09.result mysql-test/suite/funcs_1/r/memory_trig_1011ext.result mysql-test/suite/funcs_1/r/memory_views.result mysql-test/suite/funcs_1/r/myisam_func_view.result mysql-test/suite/funcs_1/r/myisam_storedproc_02.result mysql-test/suite/funcs_1/r/myisam_storedproc_03.result mysql-test/suite/funcs_1/r/myisam_storedproc_06.result mysql-test/suite/funcs_1/r/myisam_storedproc_07.result mysql-test/suite/funcs_1/r/myisam_storedproc_08.result mysql-test/suite/funcs_1/r/myisam_storedproc_10.result mysql-test/suite/funcs_1/r/myisam_trig_0102.result mysql-test/suite/funcs_1/r/myisam_trig_03.result mysql-test/suite/funcs_1/r/myisam_trig_0407.result mysql-test/suite/funcs_1/r/myisam_trig_08.result mysql-test/suite/funcs_1/r/myisam_trig_09.result mysql-test/suite/funcs_1/r/myisam_trig_1011ext.result mysql-test/suite/funcs_1/r/myisam_views.result mysql-test/suite/funcs_1/storedproc/cleanup_sp_tb.inc mysql-test/suite/funcs_1/storedproc/load_sp_tb.inc mysql-test/suite/funcs_1/storedproc/storedproc_02.inc mysql-test/suite/funcs_1/storedproc/storedproc_03.inc mysql-test/suite/funcs_1/storedproc/storedproc_06.inc mysql-test/suite/funcs_1/storedproc/storedproc_10.inc mysql-test/suite/funcs_1/t/charset_collation_1.test mysql-test/suite/funcs_1/t/charset_collation_3.test mysql-test/suite/funcs_1/t/disabled.def mysql-test/suite/funcs_1/t/innodb_trig_0102.test mysql-test/suite/funcs_1/t/innodb_trig_03.test mysql-test/suite/funcs_1/t/innodb_trig_0407.test mysql-test/suite/funcs_1/t/innodb_trig_08.test mysql-test/suite/funcs_1/t/innodb_trig_09.test mysql-test/suite/funcs_1/t/innodb_trig_1011ext.test mysql-test/suite/funcs_1/t/innodb_trig_frkey.test mysql-test/suite/funcs_1/t/is_basics_mixed.test mysql-test/suite/funcs_1/t/is_column_privileges.test mysql-test/suite/funcs_1/t/is_column_privileges_is_mysql_test.test mysql-test/suite/funcs_1/t/is_columns.test mysql-test/suite/funcs_1/t/is_columns_innodb.test mysql-test/suite/funcs_1/t/is_columns_is.test mysql-test/suite/funcs_1/t/is_columns_memory.test mysql-test/suite/funcs_1/t/is_columns_myisam.test mysql-test/suite/funcs_1/t/is_columns_mysql.test mysql-test/suite/funcs_1/t/is_columns_ndb.test mysql-test/suite/funcs_1/t/is_key_column_usage.test mysql-test/suite/funcs_1/t/is_routines.test mysql-test/suite/funcs_1/t/is_schema_privileges.test mysql-test/suite/funcs_1/t/is_schema_privileges_is_mysql_test.test mysql-test/suite/funcs_1/t/is_schemata.test mysql-test/suite/funcs_1/t/is_schemata_is_mysql_test.test mysql-test/suite/funcs_1/t/is_statistics.test mysql-test/suite/funcs_1/t/is_statistics_mysql.test mysql-test/suite/funcs_1/t/is_table_constraints.test mysql-test/suite/funcs_1/t/is_table_constraints_mysql.test mysql-test/suite/funcs_1/t/is_table_privileges.test mysql-test/suite/funcs_1/t/is_tables.test mysql-test/suite/funcs_1/t/is_tables_innodb.test mysql-test/suite/funcs_1/t/is_tables_memory.test mysql-test/suite/funcs_1/t/is_tables_myisam.test mysql-test/suite/funcs_1/t/is_tables_mysql.test mysql-test/suite/funcs_1/t/is_tables_ndb.test mysql-test/suite/funcs_1/t/is_triggers.test mysql-test/suite/funcs_1/t/is_user_privileges.test mysql-test/suite/funcs_1/t/is_views.test mysql-test/suite/funcs_1/t/memory_storedproc_02.test mysql-test/suite/funcs_1/t/memory_storedproc_03.test mysql-test/suite/funcs_1/t/memory_storedproc_06.test mysql-test/suite/funcs_1/t/memory_storedproc_07.test mysql-test/suite/funcs_1/t/memory_storedproc_08.test mysql-test/suite/funcs_1/t/memory_storedproc_10.test mysql-test/suite/funcs_1/t/memory_trig_0102.test mysql-test/suite/funcs_1/t/memory_trig_03.test mysql-test/suite/funcs_1/t/memory_trig_0407.test mysql-test/suite/funcs_1/t/memory_trig_08.test mysql-test/suite/funcs_1/t/memory_trig_09.test mysql-test/suite/funcs_1/t/memory_trig_1011ext.test mysql-test/suite/funcs_1/t/memory_views.test mysql-test/suite/funcs_1/t/myisam_storedproc_02.test mysql-test/suite/funcs_1/t/myisam_storedproc_03.test mysql-test/suite/funcs_1/t/myisam_storedproc_06.test mysql-test/suite/funcs_1/t/myisam_storedproc_07.test mysql-test/suite/funcs_1/t/myisam_storedproc_08.test mysql-test/suite/funcs_1/t/myisam_storedproc_10.test mysql-test/suite/funcs_1/t/myisam_trig_0102.test mysql-test/suite/funcs_1/t/myisam_trig_03.test mysql-test/suite/funcs_1/t/myisam_trig_0407.test mysql-test/suite/funcs_1/t/myisam_trig_08.test mysql-test/suite/funcs_1/t/myisam_trig_09.test mysql-test/suite/funcs_1/t/myisam_trig_1011ext.test mysql-test/suite/funcs_1/triggers/trig_frkey.inc mysql-test/suite/funcs_1/triggers/trig_frkey2.inc mysql-test/suite/funcs_1/triggers/triggers_0102.inc mysql-test/suite/funcs_1/triggers/triggers_03.inc mysql-test/suite/funcs_1/triggers/triggers_0407.inc mysql-test/suite/funcs_1/triggers/triggers_08.inc mysql-test/suite/funcs_1/triggers/triggers_09.inc mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc mysql-test/suite/funcs_1/views/func_view.inc mysql-test/suite/funcs_1/views/views_master.inc mysql-test/suite/funcs_2/charset/charset_master.test mysql-test/suite/funcs_2/t/innodb_charset.test mysql-test/suite/funcs_2/t/memory_charset.test mysql-test/suite/funcs_2/t/myisam_charset.test mysql-test/suite/funcs_2/t/ndb_charset.test mysql-test/t/client_xml.test mysql-test/t/ctype_gbk.test mysql-test/t/func_concat.test mysql-test/t/func_misc.test mysql-test/t/mysql_delimiter.sql mysql-test/t/repair.test mysql-test/t/rpl_sp.test mysql-test/t/rpl_view.test mysql-test/t/subselect.test mysql-test/t/subselect3.test mysql-test/t/type_blob.test mysql-test/t/type_decimal.test mysys/default.c mysys/errors.c mysys/mf_pack.c mysys/thr_alarm.c scripts/make_binary_distribution.sh sql-common/my_time.c sql/field.cc sql/field.h sql/filesort.cc sql/ha_federated.cc sql/handler.cc sql/init.cc sql/item.cc sql/item_create.cc sql/item_strfunc.cc sql/log.cc sql/log_event.cc sql/my_decimal.h sql/mysql_priv.h sql/mysqld.cc sql/opt_range.cc sql/records.cc sql/share/charsets/README sql/share/errmsg.txt sql/sp.cc sql/sp_head.cc sql/sp_head.h sql/sql_acl.cc sql/sql_class.cc sql/sql_class.h sql/sql_delete.cc sql/sql_help.cc sql/sql_lex.cc sql/sql_lex.h sql/sql_parse.cc sql/sql_prepare.cc sql/sql_select.cc sql/sql_table.cc sql/sql_trigger.cc sql/sql_udf.cc sql/sql_update.cc sql/sql_view.cc sql/sql_yacc.yy sql/tztime.cc sql/unireg.h strings/CHARSET_INFO.txt strings/ctype-big5.c strings/ctype-gbk.c support-files/my-huge.cnf.sh support-files/my-innodb-heavy-4G.cnf.sh support-files/my-large.cnf.sh support-files/my-medium.cnf.sh support-files/my-small.cnf.sh tests/mysql_client_test.c === modified file 'mysql-test/r/group_min_max.result' --- a/mysql-test/r/group_min_max.result 2007-11-20 14:07:24 +0000 +++ b/mysql-test/r/group_min_max.result 2008-08-06 19:58:20 +0000 @@ -2353,3 +2353,30 @@ 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),(0,12),(0,13); +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 +0 13 +0 14 +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 6 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 2007-11-20 14:07:24 +0000 +++ b/mysql-test/t/group_min_max.test 2008-08-06 19:58:20 +0000 @@ -916,3 +916,15 @@ 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),(0,12),(0,13); +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-07-26 20:44:07 +0000 +++ b/sql/sql_select.cc 2008-08-06 19:58:20 +0000 @@ -1724,7 +1724,8 @@ JOIN::exec() if (!items1) { items1= items0 + all_fields.elements; - if (sort_and_group || curr_tmp_table->group) + if (sort_and_group || curr_tmp_table->group || + tmp_table_param.precomputed_group_by) { if (change_to_use_tmp_fields(thd, items1, tmp_fields_list1, tmp_all_fields1, @@ -9259,6 +9260,8 @@ 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,