diff options
author | unknown <holyfoot/hf@mysql.com/hfmain.(none)> | 2008-02-17 15:48:17 +0400 |
---|---|---|
committer | unknown <holyfoot/hf@mysql.com/hfmain.(none)> | 2008-02-17 15:48:17 +0400 |
commit | d6be1a9b957b47c2cf67590932629984c1ef5a14 (patch) | |
tree | cbb7ff1ee1b9212bd469b0a0322e2da0545c69f5 /mysql-test/t/select.test | |
parent | 12504d906bfabdd64938e313d3ac2d88b490834d (diff) | |
download | mariadb-git-d6be1a9b957b47c2cf67590932629984c1ef5a14.tar.gz |
Bug #32942 now() - interval '7200' second NOT pre-calculated, causing "full table scan"
Problem is not about intervals and doesn't actually cause 'full table scan'.
We have an optimization for DISTINCT when we have
'DISTINCT field_from_first_join_table' we don't need to read all the
rows from the JOIN-ed table if we found one conforming row.
It stopped working in 5.0 as we return NESTED_LOOP_OK if we came upon
that case in the evaluate_join_record() and that doesn't break the
recordreading loop in sub_select().
Fixed by returning NESTED_LOOP_NO_MORE_ROWS in this case.
mysql-test/r/select.result:
Bug #32942 now() - interval '7200' second is NOT pre-calculated, causing "full table scan".
test result
mysql-test/t/select.test:
Bug #32942 now() - interval '7200' second is NOT pre-calculated, causing "full table scan"
test case
sql/sql_select.cc:
Bug #32942 now() - interval '7200' second NOT pre-calculated, causing "full table scan"
return NESTED_LOOP_NO_MORE_ROWS when we don't need to read rows from
this table anymore
Diffstat (limited to 'mysql-test/t/select.test')
-rw-r--r-- | mysql-test/t/select.test | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test index c48f2771aa8..51e0aeace7c 100644 --- a/mysql-test/t/select.test +++ b/mysql-test/t/select.test @@ -3672,4 +3672,22 @@ DROP TABLE t1; --echo +# +# Bug #32942 now() - interval '7200' second is NOT pre-calculated, causing "full table scan" +# + +CREATE TABLE t1 (a INT, b INT); +CREATE TABLE t2 (a INT, c INT, KEY(a)); + +INSERT INTO t1 VALUES (1, 1), (2, 2); +INSERT INTO t2 VALUES (1, 1), (1, 2), (1, 3), (1, 4), (1, 5), + (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), + (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), + (4, 1), (4, 2), (4, 3), (4, 4), (4, 5); + +FLUSH STATUS; +SELECT DISTINCT b FROM t1 LEFT JOIN t2 USING(a) WHERE c <= 3; +SHOW STATUS LIKE 'Handler_read%'; +DROP TABLE t1, t2; + --echo End of 5.0 tests |