Commit 80eae1a3 authored by unknown's avatar unknown

Merge moonbone.local:/work/16302-bug-4.1-opt-mysql

into  moonbone.local:/work/tmp_merge-5.0-opt-mysql


sql/item_subselect.cc:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_class.h:
  Auto merged
sql/sql_select.cc:
  Auto merged
mysql-test/r/subselect.result:
  Manual merge
mysql-test/t/subselect.test:
  Manual merge
parents 805c33a5 e2c448fb
...@@ -2854,6 +2854,40 @@ a ...@@ -2854,6 +2854,40 @@ a
3 3
4 4
DROP TABLE t1,t2,t3; DROP TABLE t1,t2,t3;
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);
1
1
select 1 from dual where 1 < all (select 2);
1
1
select 1 from dual where 2 > any (select 1);
1
1
select 1 from dual where 2 > all (select 1);
1
1
select 1 from dual where 1 < any (select 2 from dual);
1
1
select 1 from dual where 1 < all (select 2 from dual where 1!=1);
1
1
create table t1 (df decimal(5,1)); create table t1 (df decimal(5,1));
insert into t1 values(1.1); insert into t1 values(1.1);
insert into t1 values(2.2); insert into t1 values(2.2);
......
...@@ -1821,6 +1821,36 @@ SELECT * FROM t1 ...@@ -1821,6 +1821,36 @@ SELECT * FROM t1
DROP TABLE t1,t2,t3; DROP TABLE t1,t2,t3;
#
# BUG #10308: purge log with subselect
#
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
#
select 1 from dual where 1 < any (select 2);
select 1 from dual where 1 < all (select 2);
select 1 from dual where 2 > any (select 1);
select 1 from dual where 2 > all (select 1);
select 1 from dual where 1 < any (select 2 from dual);
select 1 from dual where 1 < all (select 2 from dual where 1!=1);
# End of 4.1 tests # End of 4.1 tests
# #
......
...@@ -802,7 +802,8 @@ Item_in_subselect::single_value_transformer(JOIN *join, ...@@ -802,7 +802,8 @@ Item_in_subselect::single_value_transformer(JOIN *join,
if (!select_lex->group_list.elements && if (!select_lex->group_list.elements &&
!select_lex->having && !select_lex->having &&
!select_lex->with_sum_func && !select_lex->with_sum_func &&
!(select_lex->next_select())) !(select_lex->next_select()) &&
select_lex->table_list.elements)
{ {
Item_sum_hybrid *item; Item_sum_hybrid *item;
nesting_map save_allow_sum_func; nesting_map save_allow_sum_func;
......
...@@ -10608,8 +10608,13 @@ end_send_group(JOIN *join, JOIN_TAB *join_tab __attribute__((unused)), ...@@ -10608,8 +10608,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