Commit 363d1456 authored by evgen@moonbone.local's avatar evgen@moonbone.local

Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-4.1-opt

into  moonbone.local:/work/16302-bug-4.1-opt-mysql
parents ff3ffe5c 5d4881b8
...@@ -2835,6 +2835,21 @@ a ...@@ -2835,6 +2835,21 @@ a
4 4
DROP TABLE t1,t2,t3; DROP TABLE t1,t2,t3;
purge master logs before (select adddate(current_timestamp(), interval -4 day)); purge master logs before (select adddate(current_timestamp(), interval -4 day));
CREATE TABLE t1 (f1 INT);
CREATE TABLE t2 (f2 INT);
INSERT INTO t1 VALUES (1);
SELECT * FROM t1 WHERE f1 > ALL (SELECT f2 FROM t2);
f1
1
SELECT * FROM t1 WHERE f1 > ALL (SELECT f2 FROM t2 WHERE 1=0);
f1
1
INSERT INTO t2 VALUES (1);
INSERT INTO t2 VALUES (2);
SELECT * FROM t1 WHERE f1 > ALL (SELECT f2 FROM t2 WHERE f2=0);
f1
1
DROP TABLE t1, t2;
select 1 from dual where 1 < any (select 2); select 1 from dual where 1 < any (select 2);
1 1
1 1
......
...@@ -1821,6 +1821,20 @@ DROP TABLE t1,t2,t3; ...@@ -1821,6 +1821,20 @@ DROP TABLE t1,t2,t3;
purge master logs before (select adddate(current_timestamp(), interval -4 day)); purge master logs before (select adddate(current_timestamp(), interval -4 day));
#
# Bug#18503: Queries with a quantified subquery returning empty set may
# return a wrong result.
#
CREATE TABLE t1 (f1 INT);
CREATE TABLE t2 (f2 INT);
INSERT INTO t1 VALUES (1);
SELECT * FROM t1 WHERE f1 > ALL (SELECT f2 FROM t2);
SELECT * FROM t1 WHERE f1 > ALL (SELECT f2 FROM t2 WHERE 1=0);
INSERT INTO t2 VALUES (1);
INSERT INTO t2 VALUES (2);
SELECT * FROM t1 WHERE f1 > ALL (SELECT f2 FROM t2 WHERE f2=0);
DROP TABLE t1, t2;
# #
# Bug#16302: Quantified subquery without any tables gives wrong results # Bug#16302: Quantified subquery without any tables gives wrong results
# #
......
...@@ -6780,8 +6780,13 @@ end_send_group(JOIN *join, JOIN_TAB *join_tab __attribute__((unused)), ...@@ -6780,8 +6780,13 @@ end_send_group(JOIN *join, JOIN_TAB *join_tab __attribute__((unused)),
{ {
if (!join->first_record) if (!join->first_record)
{ {
List_iterator_fast<Item> it(*join->fields);
Item *item;
/* No matching rows for group function */ /* No matching rows for group function */
join->clear(); join->clear();
while ((item= it++))
item->no_rows_in_result();
} }
if (join->having && join->having->val_int() == 0) if (join->having && join->having->val_int() == 0)
error= -1; // Didn't satisfy having error= -1; // Didn't satisfy having
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment