From 900645b87af86617403f243dbbce2bfb43f498d5 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Sep 2005 17:14:39 +0300 Subject: [PATCH 1/3] Turn off EOLN_NATIVE flag for all test files Ignored some generated files mysql-test/t/analyze.test: Turn off EOLN_NATIVE flag mysql-test/t/ansi-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/ansi.test: Turn off EOLN_NATIVE flag mysql-test/t/backup-master.sh: Turn off EOLN_NATIVE flag mysql-test/t/bdb-alter-table-2-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/bdb-deadlock.test: Turn off EOLN_NATIVE flag mysql-test/t/bdb_cache-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/bdb_cache.test: Turn off EOLN_NATIVE flag mysql-test/t/bool.test: Turn off EOLN_NATIVE flag mysql-test/t/cast.test: Turn off EOLN_NATIVE flag mysql-test/t/constraints.test: Turn off EOLN_NATIVE flag mysql-test/t/convert.test: Turn off EOLN_NATIVE flag mysql-test/t/create_select_tmp.test: Turn off EOLN_NATIVE flag mysql-test/t/ctype_cp1251-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/ctype_cp1251.test: Turn off EOLN_NATIVE flag mysql-test/t/ctype_latin1_de-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/ctype_latin1_de.test: Turn off EOLN_NATIVE flag mysql-test/t/ctype_tis620-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/ctype_tis620.test: Turn off EOLN_NATIVE flag mysql-test/t/ctype_ujis-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/ctype_ujis.test: Turn off EOLN_NATIVE flag mysql-test/t/drop_temp_table.test: Turn off EOLN_NATIVE flag mysql-test/t/flush_block_commit.test: Turn off EOLN_NATIVE flag mysql-test/t/func_concat.test: Turn off EOLN_NATIVE flag mysql-test/t/func_encrypt-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/func_if.test: Turn off EOLN_NATIVE flag mysql-test/t/func_isnull.test: Turn off EOLN_NATIVE flag mysql-test/t/gcc296.test: Turn off EOLN_NATIVE flag mysql-test/t/grant.test: Turn off EOLN_NATIVE flag mysql-test/t/grant_cache-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/grant_cache.test: Turn off EOLN_NATIVE flag mysql-test/t/init_file-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/init_file.test: Turn off EOLN_NATIVE flag mysql-test/t/innodb-deadlock.test: Turn off EOLN_NATIVE flag mysql-test/t/innodb-lock.test: Turn off EOLN_NATIVE flag mysql-test/t/innodb_cache-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/innodb_cache.test: Turn off EOLN_NATIVE flag mysql-test/t/innodb_handler.test: Turn off EOLN_NATIVE flag mysql-test/t/isam.test: Turn off EOLN_NATIVE flag mysql-test/t/loaddata.test: Turn off EOLN_NATIVE flag mysql-test/t/lock_multi.test: Turn off EOLN_NATIVE flag mysql-test/t/lock_tables_lost_commit-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/lock_tables_lost_commit.test: Turn off EOLN_NATIVE flag mysql-test/t/lowercase_table-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/lowercase_table.test: Turn off EOLN_NATIVE flag mysql-test/t/lowercase_table2.test: Turn off EOLN_NATIVE flag mysql-test/t/lowercase_table3-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/lowercase_table3.test: Turn off EOLN_NATIVE flag mysql-test/t/mix_innodb_myisam_binlog-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/mix_innodb_myisam_binlog.test: Turn off EOLN_NATIVE flag mysql-test/t/multi_update-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/myisam-blob-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/myisam-blob.test: Turn off EOLN_NATIVE flag mysql-test/t/mysqlbinlog-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/mysqlbinlog.test: Turn off EOLN_NATIVE flag mysql-test/t/mysqldump.test: Turn off EOLN_NATIVE flag mysql-test/t/packet.test: Turn off EOLN_NATIVE flag mysql-test/t/query_cache.test: Turn off EOLN_NATIVE flag mysql-test/t/query_cache_merge.test: Turn off EOLN_NATIVE flag mysql-test/t/query_cache_notembedded.test: Turn off EOLN_NATIVE flag mysql-test/t/repair.test: Turn off EOLN_NATIVE flag mysql-test/t/repair_part2-master.sh: Turn off EOLN_NATIVE flag mysql-test/t/repair_part2.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl000016-slave.opt: Turn off EOLN_NATIVE flag mysql-test/t/rpl_EE_error.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_alter.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_chain_temp_table.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_change_master.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_commit_after_flush.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_do_grant.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_drop.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_empty_master_crash.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_error_ignored_table-slave.opt: Turn off EOLN_NATIVE flag mysql-test/t/rpl_error_ignored_table.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_failsafe.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_flush_log_loop-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/rpl_flush_log_loop-master.sh: Turn off EOLN_NATIVE flag mysql-test/t/rpl_flush_log_loop-slave.opt: Turn off EOLN_NATIVE flag mysql-test/t/rpl_flush_log_loop-slave.sh: Turn off EOLN_NATIVE flag mysql-test/t/rpl_flush_log_loop.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_free_items-slave.opt: Turn off EOLN_NATIVE flag mysql-test/t/rpl_free_items.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_get_lock.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_heap.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_ignore_grant-slave.opt: Turn off EOLN_NATIVE flag mysql-test/t/rpl_ignore_grant.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_insert_id.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_loaddata.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_loaddata_rule_m-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/rpl_loaddata_rule_m.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_loaddata_rule_s-slave.opt: Turn off EOLN_NATIVE flag mysql-test/t/rpl_loaddata_rule_s.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_loaddatalocal.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_log-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/rpl_log-slave.opt: Turn off EOLN_NATIVE flag mysql-test/t/rpl_master_pos_wait.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_max_relay_size.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_multi_delete-slave.opt: Turn off EOLN_NATIVE flag mysql-test/t/rpl_multi_delete.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_multi_delete2-slave.opt: Turn off EOLN_NATIVE flag mysql-test/t/rpl_multi_delete2.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_multi_update.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_multi_update2-slave.opt: Turn off EOLN_NATIVE flag mysql-test/t/rpl_multi_update2.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_optimize.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_relayspace-slave.opt: Turn off EOLN_NATIVE flag mysql-test/t/rpl_relayspace.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_reset_slave.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_server_id1.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_server_id2-slave.opt: Turn off EOLN_NATIVE flag mysql-test/t/rpl_server_id2.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_set_charset.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_skip_error-slave.opt: Turn off EOLN_NATIVE flag mysql-test/t/rpl_skip_error.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_start_stop_slave.test: Turn off EOLN_NATIVE flag mysql-test/t/rpl_trunc_binlog.test: Turn off EOLN_NATIVE flag mysql-test/t/system_mysql_db.test: Turn off EOLN_NATIVE flag mysql-test/t/system_mysql_db_fix-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/system_mysql_db_fix.test: Turn off EOLN_NATIVE flag mysql-test/t/system_mysql_db_refs.test: Turn off EOLN_NATIVE flag mysql-test/t/timezone-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/timezone.test: Turn off EOLN_NATIVE flag mysql-test/t/timezone3-master.opt: Turn off EOLN_NATIVE flag mysql-test/t/timezone3.test: Turn off EOLN_NATIVE flag mysql-test/t/type_set.test: Turn off EOLN_NATIVE flag mysql-test/t/variables-master.opt: Turn off EOLN_NATIVE flag BitKeeper/etc/ignore: added support-files/MacOSX/preflight --- .bzrignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.bzrignore b/.bzrignore index 9f57a7ad7de..1d5a2dcebdb 100644 --- a/.bzrignore +++ b/.bzrignore @@ -547,3 +547,5 @@ scripts/make_win_binary_distribution EXCEPTIONS-CLIENT support-files/my-innodb-heavy-4G.cnf ac_available_languages_fragment +support-files/MacOSX/postflight +support-files/MacOSX/preflight From c11974e678e6c4a5c4c9ebc98547a5f80e68f81d Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Sep 2005 17:59:01 +0300 Subject: [PATCH 2/3] Turn off EOLN_NATIVE flag of some test files mysql-test/r/analyze.result: Turn off EOLN_NATIVE flag mysql-test/r/create_select_tmp.result: Turn off EOLN_NATIVE flag mysql-test/r/flush_block_commit.result: Turn off EOLN_NATIVE flag mysql-test/r/flush_table.result: Turn off EOLN_NATIVE flag mysql-test/r/have_moscow_leap_timezone.require: Turn off EOLN_NATIVE flag mysql-test/r/have_outfile.require: Turn off EOLN_NATIVE flag mysql-test/r/innodb-lock.result: Turn off EOLN_NATIVE flag mysql-test/r/lock_multi.result: Turn off EOLN_NATIVE flag mysql-test/r/rpl_commit_after_flush.result: Turn off EOLN_NATIVE flag mysql-test/r/rpl_drop.result: Turn off EOLN_NATIVE flag mysql-test/r/rpl_free_items.result: Turn off EOLN_NATIVE flag mysql-test/r/rpl_multi_delete2.result: Turn off EOLN_NATIVE flag mysql-test/r/rpl_multi_update.result: Turn off EOLN_NATIVE flag mysql-test/r/rpl_multi_update2.result: Turn off EOLN_NATIVE flag mysql-test/r/rpl_server_id1.result: Turn off EOLN_NATIVE flag mysql-test/r/rpl_server_id2.result: Turn off EOLN_NATIVE flag mysql-test/r/rpl_set_charset.result: Turn off EOLN_NATIVE flag mysql-test/r/rpl_start_stop_slave.result: Turn off EOLN_NATIVE flag mysql-test/r/timezone3.result: Turn off EOLN_NATIVE flag From 36d163d6cf1f4ce522e081c378129f9723760d15 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 15 Sep 2005 21:34:11 +0400 Subject: [PATCH 3/3] Fix bug#12887 Distinct is not always applied after rollup For queries with GROUP BY and without hidden GROUP BY fields DISTINCT is optimized away becuase such queries produce result set without duplicates. But ROLLUP can add rows which may be same to some rows and this fact was ignored. Added check so if ROLLUP is present DISTINCT can't be optimized away. sql/sql_select.cc: Fix bug #12887 Distinct is not always applied after rollup mysql-test/r/olap.result: Test case for bug #12887 Distinct is not always applied after rollup mysql-test/t/olap.test: Test case for bug #12887 Distinct is not always applied after rollup --- mysql-test/r/olap.result | 12 ++++++++++++ mysql-test/t/olap.test | 9 +++++++++ sql/sql_select.cc | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/olap.result b/mysql-test/r/olap.result index 65f7c649624..fef990297d9 100644 --- a/mysql-test/r/olap.result +++ b/mysql-test/r/olap.result @@ -529,3 +529,15 @@ a LENGTH(a) COUNT(*) 2 1 1 NULL NULL 2 DROP TABLE t1; +create table t1 ( a varchar(9), b int ); +insert into t1 values('a',1),(null,2); +select a, max(b) from t1 group by a with rollup; +a max(b) +NULL 2 +a 1 +NULL 2 +select distinct a, max(b) from t1 group by a with rollup; +a max(b) +NULL 2 +a 1 +drop table t1; diff --git a/mysql-test/t/olap.test b/mysql-test/t/olap.test index 76c62d14621..4f9790b0de6 100644 --- a/mysql-test/t/olap.test +++ b/mysql-test/t/olap.test @@ -263,4 +263,13 @@ SELECT * FROM (SELECT a, LENGTH(a), COUNT(*) FROM t1 GROUP BY a WITH ROLLUP) t; DROP TABLE t1; +# +# Bug #12887 Distinct is not always applied after rollup +# +create table t1 ( a varchar(9), b int ); +insert into t1 values('a',1),(null,2); +select a, max(b) from t1 group by a with rollup; +select distinct a, max(b) from t1 group by a with rollup; +drop table t1; + # End of 4.1 tests diff --git a/sql/sql_select.cc b/sql/sql_select.cc index f702e531a4d..59b82b53b32 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -618,7 +618,7 @@ JOIN::optimize() } if (group_list || tmp_table_param.sum_func_count) { - if (! hidden_group_fields) + if (! hidden_group_fields && rollup.state == ROLLUP::STATE_NONE) select_distinct=0; } else if (select_distinct && tables - const_tables == 1)