diff options
author | unknown <gkodinov/kgeorge@macbook.local> | 2007-01-08 12:32:48 +0200 |
---|---|---|
committer | unknown <gkodinov/kgeorge@macbook.local> | 2007-01-08 12:32:48 +0200 |
commit | cea66abf7b87581ade53b06df508b627d92c5151 (patch) | |
tree | ec29d949a37f6bf2a4269e9c9e8ad3b20a8051e5 /sql/item_subselect.cc | |
parent | d9ec5a4e83a0b94bc106bc17c8487b449dc03d38 (diff) | |
parent | 42e31f7a45413b685c4332ced1d983ccfda29d25 (diff) | |
download | mariadb-git-cea66abf7b87581ade53b06df508b627d92c5151.tar.gz |
Merge macbook.local:/Users/kgeorge/mysql/work/mysql-5.0-opt
into macbook.local:/Users/kgeorge/mysql/work/merge-5.1-opt
mysql-test/r/distinct.result:
Auto merged
mysql-test/r/gis-rtree.result:
Auto merged
mysql-test/r/ps.result:
Auto merged
mysql-test/r/subselect.result:
Auto merged
mysql-test/r/udf.result:
Auto merged
mysql-test/t/gis-rtree.test:
Auto merged
mysql-test/t/ps.test:
Auto merged
mysql-test/t/subselect.test:
Auto merged
mysql-test/t/udf.test:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/item_subselect.h:
Auto merged
sql/sql_lex.cc:
Auto merged
sql/sql_select.cc:
Auto merged
storage/myisam/mi_check.c:
Auto merged
sql/sql_udf.cc:
SCCS merged
Diffstat (limited to 'sql/item_subselect.cc')
-rw-r--r-- | sql/item_subselect.cc | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc index 0074e33cdea..f3f840bdaa9 100644 --- a/sql/item_subselect.cc +++ b/sql/item_subselect.cc @@ -391,6 +391,7 @@ Item_singlerow_subselect::select_transformer(JOIN *join) */ !(select_lex->item_list.head()->type() == FIELD_ITEM || select_lex->item_list.head()->type() == REF_ITEM) && + !join->conds && !join->having && /* switch off this optimization for prepare statement, because we do not rollback this changes @@ -415,8 +416,6 @@ Item_singlerow_subselect::select_transformer(JOIN *join) */ substitution->walk(&Item::remove_dependence_processor, 0, (byte *) select_lex->outer_select()); - /* SELECT without FROM clause can't have WHERE or HAVING clause */ - DBUG_ASSERT(join->conds == 0 && join->having == 0); return RES_REDUCE; } return RES_OK; @@ -2320,6 +2319,22 @@ bool subselect_single_select_engine::no_tables() /* + Check statically whether the subquery can return NULL + + SINOPSYS + subselect_single_select_engine::may_be_null() + + RETURN + FALSE can guarantee that the subquery never return NULL + TRUE otherwise +*/ +bool subselect_single_select_engine::may_be_null() +{ + return ((no_tables() && !join->conds && !join->having) ? maybe_null : 1); +} + + +/* Report about presence of tables in subquery SYNOPSIS |