Fix for BUG#7885
mysql-test/r/subselect.result: Testcase for BUG#7885 mysql-test/t/subselect.test: Testcase for BUG#7885 sql/item_subselect.cc: Fix for BUG#7885: In Item_subselect::fix_fields, return error if engine->prepare fails. Also removed redundant code line.
This commit is contained in:
parent
e46d235a08
commit
2e50981af9
@ -2152,3 +2152,11 @@ WHERE f1 <> ALL ( SELECT SUM(f1) AS sf1 FROM t2 HAVING sf1 > 10000);
|
||||
f1
|
||||
NULL
|
||||
1
|
||||
drop table t1,t2;
|
||||
create table t1 (a1 int);
|
||||
create table t2 (b1 int);
|
||||
select * from t1 where a2 > any(select b1 from t2);
|
||||
ERROR 42S22: Unknown column 'a2' in 'scalar IN/ALL/ANY subquery'
|
||||
select * from t1 where a1 > any(select b1 from t2);
|
||||
a1
|
||||
drop table t1,t2;
|
||||
|
@ -1412,3 +1412,14 @@ SELECT f1 FROM t1
|
||||
|
||||
SELECT f1 FROM t1
|
||||
WHERE f1 <> ALL ( SELECT SUM(f1) AS sf1 FROM t2 HAVING sf1 > 10000);
|
||||
|
||||
drop table t1,t2;
|
||||
# Test for BUG#7885: Server crash when 'any' subselect compared to
|
||||
# non-existant field.
|
||||
create table t1 (a1 int);
|
||||
create table t2 (b1 int);
|
||||
--error 1054
|
||||
select * from t1 where a2 > any(select b1 from t2);
|
||||
select * from t1 where a1 > any(select b1 from t2);
|
||||
drop table t1,t2;
|
||||
|
||||
|
@ -177,6 +177,8 @@ bool Item_subselect::fix_fields(THD *thd_param, TABLE_LIST *tables, Item **ref)
|
||||
}
|
||||
fix_length_and_dec();
|
||||
}
|
||||
else
|
||||
return 1;
|
||||
uint8 uncacheable= engine->uncacheable();
|
||||
if (uncacheable)
|
||||
{
|
||||
@ -264,7 +266,6 @@ Item_singlerow_subselect::Item_singlerow_subselect(st_select_lex *select_lex)
|
||||
{
|
||||
DBUG_ENTER("Item_singlerow_subselect::Item_singlerow_subselect");
|
||||
init(select_lex, new select_singlerow_subselect(this));
|
||||
max_columns= 1;
|
||||
maybe_null= 1;
|
||||
max_columns= UINT_MAX;
|
||||
DBUG_VOID_RETURN;
|
||||
|
Loading…
x
Reference in New Issue
Block a user