diff options
author | Tatiana A. Nurnberg <azundris@mysql.com> | 2008-06-19 05:08:41 +0200 |
---|---|---|
committer | Tatiana A. Nurnberg <azundris@mysql.com> | 2008-06-19 05:08:41 +0200 |
commit | f13393db226d6bd77f02d1fac111f09a5126623d (patch) | |
tree | 02d2d47a2eb6604419969f951d06d76350ff6551 | |
parent | c9a854ac0bd4ea25d9c66e9eaef91b733f4e35fc (diff) | |
download | mariadb-git-f13393db226d6bd77f02d1fac111f09a5126623d.tar.gz |
Fixed bug #37004.
The value of JOIN::tables must be set to 0 when there
is no matching min/max row.
mysql-test/r/subselect.result:
Added a test case for bug #37004.
mysql-test/t/subselect.test:
Added a test case for bug #37004.
-rw-r--r-- | mysql-test/r/subselect.result | 7 | ||||
-rw-r--r-- | mysql-test/t/subselect.test | 12 | ||||
-rw-r--r-- | sql/sql_select.cc | 2 |
3 files changed, 21 insertions, 0 deletions
diff --git a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result index ce4ac00b791..923bc2254bd 100644 --- a/mysql-test/r/subselect.result +++ b/mysql-test/r/subselect.result @@ -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; diff --git a/mysql-test/t/subselect.test b/mysql-test/t/subselect.test index ee3a7428d4a..daaba671f34 100644 --- a/mysql-test/t/subselect.test +++ b/mysql-test/t/subselect.test @@ -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; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 2ef7aa13dd8..2ee92018410 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -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); } |