Commit d6c476b8 authored by Tatiana A. Nurnberg's avatar Tatiana A. Nurnberg
Browse files

Fixed bug #37004.

The value of JOIN::tables must be set to 0 when there
is no matching min/max row.
parent 69662273
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -4391,3 +4391,10 @@ SELECT * FROM t1 WHERE _utf8'a' = ANY (SELECT s1 FROM t1);
s1
a
DROP TABLE t1;
CREATE TABLE t1(c int, KEY(c));
CREATE TABLE t2(a int, b int);
INSERT INTO t2 VALUES (1, 10), (2, NULL);
INSERT INTO t1 VALUES (1), (3);
SELECT * FROM t2 WHERE b NOT IN (SELECT max(t.c) FROM t1, t1 t WHERE t.c>10);
a	b
DROP TABLE t1,t2;
+12 −0
Original line number Diff line number Diff line
@@ -3273,3 +3273,15 @@ INSERT INTO t1 VALUES ('a');
SELECT * FROM t1 WHERE _utf8'a' = ANY (SELECT s1 FROM t1);
DROP TABLE t1;

#
# Bug #37004: NOT IN subquery with MAX over an empty set
#

CREATE TABLE t1(c int, KEY(c));
CREATE TABLE t2(a int, b int);
INSERT INTO t2 VALUES (1, 10), (2, NULL);
INSERT INTO t1 VALUES (1), (3);

SELECT * FROM t2 WHERE b NOT IN (SELECT max(t.c) FROM t1, t1 t WHERE t.c>10);

DROP TABLE t1,t2;
+2 −0
Original line number Diff line number Diff line
@@ -888,6 +888,7 @@ JOIN::optimize()
      {
        DBUG_PRINT("info",("No matching min/max row"));
	zero_result_cause= "No matching min/max row";
        tables= 0;
	error=0;
	DBUG_RETURN(0);
      }
@@ -901,6 +902,7 @@ JOIN::optimize()
      {
        DBUG_PRINT("info",("No matching min/max row"));
        zero_result_cause= "No matching min/max row";
        tables= 0;
        error=0;
        DBUG_RETURN(0);
      }