Commit 652b7099 authored by holyfoot/hf@hfmain.(none)'s avatar holyfoot/hf@hfmain.(none)
Browse files

Merge bk@192.168.21.1:mysql-5.0-opt

into  mysql.com:/home/hf/work/32942/my50-32942
parents 443c1a8b 7abba3b0
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -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
+18 −0
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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();