summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGleb Shchepa <gshchepa@mysql.com>2008-06-27 23:54:16 +0500
committerGleb Shchepa <gshchepa@mysql.com>2008-06-27 23:54:16 +0500
commit89f06e9d6cfe620275eda1e1257c944e1676c0f6 (patch)
tree630a0bf450f72f53a17dc60c32f0b15d07be406c
parent46c7c7244c19936ea8c614022f6cddc7518b646c (diff)
parenta8067140e87c75ba470a195221b09e29a38ad60c (diff)
downloadmariadb-git-89f06e9d6cfe620275eda1e1257c944e1676c0f6.tar.gz
auto merge from local tree
-rw-r--r--mysql-test/r/group_min_max_innodb.result24
-rw-r--r--mysql-test/t/group_min_max_innodb.test24
-rw-r--r--sql/sql_select.cc2
3 files changed, 50 insertions, 0 deletions
diff --git a/mysql-test/r/group_min_max_innodb.result b/mysql-test/r/group_min_max_innodb.result
index ae4b9d4d5dd..6607e1babf6 100644
--- a/mysql-test/r/group_min_max_innodb.result
+++ b/mysql-test/r/group_min_max_innodb.result
@@ -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
diff --git a/mysql-test/t/group_min_max_innodb.test b/mysql-test/t/group_min_max_innodb.test
index ea2a603a8a4..643b4f7d55e 100644
--- a/mysql-test/t/group_min_max_innodb.test
+++ b/mysql-test/t/group_min_max_innodb.test
@@ -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 primary key (f2, f1);
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
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 2ee92018410..9b094474216 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -13179,6 +13179,8 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
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]
*/