2686 Gleb Shchepa 2008-06-27 [merge]
auto merge 5.1-bugteam --> 6.0-bugteam
modified:
mysql-test/r/group_min_max_innodb.result
mysql-test/t/group_min_max_innodb.test
sql/sql_select.cc
2685 Gleb Shchepa 2008-06-27 [merge]
merge 5.1-bugteam --> 6.0-bugteam
2684 Gleb Shchepa 2008-06-27 [merge]
merge 5.1-bugteam --> 6.0-bugteam
=== modified file 'mysql-test/r/group_min_max_innodb.result'
--- a/mysql-test/r/group_min_max_innodb.result 2006-05-22 12:10:02 +0000
+++ b/mysql-test/r/group_min_max_innodb.result 2008-06-27 18:50:53 +0000
@@ -1,3 +1,5 @@
+drop view if exists v1;
+drop table if exists t1,t4;
create table t4 (
pk_col int auto_increment primary key, a1 char(64), a2 char(64), b char(16), c char(16) not null, d char(16), dummy char(64) default ' '
) engine=innodb;
@@ -70,3 +72,25 @@ explain select distinct f1, f2 from t1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range NULL PRIMARY 5 NULL 3 Using index for group-by; Using temporary
drop table t1;
+create table t1(pk int primary key) engine=innodb;
+create view v1 as select pk from t1 where pk < 20;
+insert into t1 values (1), (2), (3), (4);
+select distinct pk from v1;
+pk
+1
+2
+3
+4
+insert into t1 values (5), (6), (7);
+select distinct pk from v1;
+pk
+1
+2
+3
+4
+5
+6
+7
+drop view v1;
+drop table t1;
+End of 5.1 tests
=== modified file 'mysql-test/t/group_min_max_innodb.test'
--- a/mysql-test/t/group_min_max_innodb.test 2006-05-22 12:10:02 +0000
+++ b/mysql-test/t/group_min_max_innodb.test 2008-06-27 18:50:53 +0000
@@ -6,6 +6,11 @@
--source include/have_innodb.inc
+--disable_warnings
+drop view if exists v1;
+drop table if exists t1,t4;
+--enable_warnings
+
#
# Bug #12672: primary key implcitly included in every innodb index
#
@@ -93,3 +98,22 @@ alter table t1 drop primary key, add pri
explain select distinct f1 a, f1 b from t1;
explain select distinct f1, f2 from t1;
drop table t1;
+
+
+#
+# Bug #36632: Select distinct from a simple view on an InnoDB table
+# returns incorrect results
+#
+create table t1(pk int primary key) engine=innodb;
+create view v1 as select pk from t1 where pk < 20;
+
+insert into t1 values (1), (2), (3), (4);
+select distinct pk from v1;
+
+insert into t1 values (5), (6), (7);
+select distinct pk from v1;
+
+drop view v1;
+drop table t1;
+
+--echo End of 5.1 tests
=== modified file 'sql/sql_select.cc'
--- a/sql/sql_select.cc 2008-06-20 19:24:46 +0000
+++ b/sql/sql_select.cc 2008-06-27 18:57:11 +0000
@@ -15914,6 +15914,8 @@ test_if_skip_sort_order(JOIN_TAB *tab,OR
tab->ref.key= -1;
tab->ref.key_parts=0; // Don't use ref key.
tab->read_first_record= join_init_read_record;
+ if (tab->is_using_loose_index_scan())
+ join->tmp_table_param.precomputed_group_by= TRUE;
/*
TODO: update the number of records in join->best_positions[tablenr]
*/
| Thread |
|---|
| • bzr push into mysql-6.0 branch (gshchepa:2684 to 2686) | Gleb Shchepa | 27 Jun |