Loading mysql-test/r/select.result +21 −0 Original line number Diff line number Diff line Loading @@ -4334,4 +4334,25 @@ SELECT * FROM t1 WHERE a IN (CONCAT('foo', 0), 'bar'); a foo0 DROP TABLE t1; 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; b 1 2 SHOW STATUS LIKE 'Handler_read%'; Variable_name Value Handler_read_first 0 Handler_read_key 2 Handler_read_next 0 Handler_read_prev 0 Handler_read_rnd 0 Handler_read_rnd_next 6 DROP TABLE t1, t2; End of 5.0 tests mysql-test/t/select.test +18 −0 Original line number Diff line number Diff line Loading @@ -3683,4 +3683,22 @@ INSERT INTO t1 (a) VALUES ('foo0'), ('bar0'), ('baz0'); SELECT * FROM t1 WHERE a IN (CONCAT('foo', 0), 'bar'); DROP TABLE t1; # # 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 sql/sql_select.cc +1 −1 Original line number Diff line number Diff line Loading @@ -10796,7 +10796,7 @@ evaluate_join_record(JOIN *join, JOIN_TAB *join_tab, we found a row, as no new rows can be added to the result. */ if (not_used_in_distinct && found_records != join->found_records) return NESTED_LOOP_OK; return NESTED_LOOP_NO_MORE_ROWS; } else join_tab->read_record.file->unlock_row(); Loading Loading
mysql-test/r/select.result +21 −0 Original line number Diff line number Diff line Loading @@ -4334,4 +4334,25 @@ SELECT * FROM t1 WHERE a IN (CONCAT('foo', 0), 'bar'); a foo0 DROP TABLE t1; 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; b 1 2 SHOW STATUS LIKE 'Handler_read%'; Variable_name Value Handler_read_first 0 Handler_read_key 2 Handler_read_next 0 Handler_read_prev 0 Handler_read_rnd 0 Handler_read_rnd_next 6 DROP TABLE t1, t2; End of 5.0 tests
mysql-test/t/select.test +18 −0 Original line number Diff line number Diff line Loading @@ -3683,4 +3683,22 @@ INSERT INTO t1 (a) VALUES ('foo0'), ('bar0'), ('baz0'); SELECT * FROM t1 WHERE a IN (CONCAT('foo', 0), 'bar'); DROP TABLE t1; # # 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
sql/sql_select.cc +1 −1 Original line number Diff line number Diff line Loading @@ -10796,7 +10796,7 @@ evaluate_join_record(JOIN *join, JOIN_TAB *join_tab, we found a row, as no new rows can be added to the result. */ if (not_used_in_distinct && found_records != join->found_records) return NESTED_LOOP_OK; return NESTED_LOOP_NO_MORE_ROWS; } else join_tab->read_record.file->unlock_row(); Loading