diff options
-rw-r--r-- | mysql-test/r/select.result | 27 | ||||
-rw-r--r-- | mysql-test/t/select.test | 32 | ||||
-rw-r--r-- | sql/sql_select.cc | 2 |
3 files changed, 59 insertions, 2 deletions
diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index 57f650f4c56..a32580a1278 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -4988,3 +4988,30 @@ f1 DROP TABLE t1; DROP VIEW view_t1; # End of test BUG#63020 +# +# Bug#12713907: STRANGE OPTIMIZE & WRONG RESULT UNDER ORDER BY +# COUNT(*) LIMIT. +# +CREATE TABLE t1 ( +id BIGINT(20) , +member_id_to INT(11) , +r_date DATE , +PRIMARY KEY (id,r_date), +KEY r_date_idx (r_date), +KEY t1_idx01 (member_id_to) +) ENGINE=InnoDB; +INSERT INTO t1 VALUES +(107924526,518491,'2011-05-01'), +(107924527,518491,'2011-05-01'), +(107924534,518491,'2011-06-21'), +(107924535,518491,'2011-06-21'), +(107924542,1601319,'2011-06-21'), +(107924543,1601319,'2011-06-21'), +(107924544,1601319,'2011-06-21'), +(107924545,1601319,'2011-06-21'); +SELECT member_id_to, COUNT(*) FROM t1 WHERE r_date = +'2011-06-21' GROUP BY member_id_to ORDER BY 2 LIMIT 1; +member_id_to COUNT(*) +518491 2 +DROP TABLE t1; +# End of test BUG#12713907 diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test index d9e9c27650f..dc63733768e 100644 --- a/mysql-test/t/select.test +++ b/mysql-test/t/select.test @@ -4253,3 +4253,35 @@ DROP VIEW view_t1; --echo # End of test BUG#63020 + +--echo # +--echo # Bug#12713907: STRANGE OPTIMIZE & WRONG RESULT UNDER ORDER BY +--echo # COUNT(*) LIMIT. +--echo # + +CREATE TABLE t1 ( +id BIGINT(20) , +member_id_to INT(11) , +r_date DATE , +PRIMARY KEY (id,r_date), +KEY r_date_idx (r_date), +KEY t1_idx01 (member_id_to) +) ENGINE=InnoDB; + +INSERT INTO t1 VALUES +(107924526,518491,'2011-05-01'), +(107924527,518491,'2011-05-01'), +(107924534,518491,'2011-06-21'), +(107924535,518491,'2011-06-21'), +(107924542,1601319,'2011-06-21'), +(107924543,1601319,'2011-06-21'), +(107924544,1601319,'2011-06-21'), +(107924545,1601319,'2011-06-21'); + +SELECT member_id_to, COUNT(*) FROM t1 WHERE r_date = + '2011-06-21' GROUP BY member_id_to ORDER BY 2 LIMIT 1; + +DROP TABLE t1; + +--echo # End of test BUG#12713907 + diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 50ae8916707..423c59d34cc 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -13925,8 +13925,6 @@ check_reverse_order: join_read_first:join_read_last; tab->type=JT_NEXT; // Read with index_first(), index_next() - if (table->covering_keys.is_set(best_key)) - table->set_keyread(TRUE); table->file->ha_index_or_rnd_end(); if (tab->join->select_options & SELECT_DESCRIBE) { |