summaryrefslogtreecommitdiff
path: root/sql/item_subselect.cc
diff options
context:
space:
mode:
authorpem@mysql.com <>2005-05-31 12:07:16 +0200
committerpem@mysql.com <>2005-05-31 12:07:16 +0200
commit53abbdc39b3a9f00a1586b9675f403da4aa84ea1 (patch)
tree0572751c0683306cf72bddae8d0c94459041ce9a /sql/item_subselect.cc
parent063896a6e72a663375211c1479bd8b21f8ed2385 (diff)
parentea5c256b2701c38e151447dd9aa2fcff3070edff (diff)
downloadmariadb-git-53abbdc39b3a9f00a1586b9675f403da4aa84ea1.tar.gz
Merge mysql.com:/usr/local/bk/mysql-5.0
into mysql.com:/home/pem/work/mysql-5.0
Diffstat (limited to 'sql/item_subselect.cc')
-rw-r--r--sql/item_subselect.cc21
1 files changed, 9 insertions, 12 deletions
diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc
index 5c26f3c079c..4556f60a659 100644
--- a/sql/item_subselect.cc
+++ b/sql/item_subselect.cc
@@ -537,8 +537,6 @@ Item_exists_subselect::Item_exists_subselect(st_select_lex *select_lex):
null_value= 0; //can't be NULL
maybe_null= 0; //can't be NULL
value= 0;
- // We need only 1 row to determinate existence
- select_lex->master_unit()->global_parameters->select_limit= 1;
DBUG_VOID_RETURN;
}
@@ -605,6 +603,8 @@ void Item_exists_subselect::fix_length_and_dec()
decimals= 0;
max_length= 1;
max_columns= engine->cols();
+ /* We need only 1 row to determinate existence */
+ unit->global_parameters->select_limit= 1;
}
double Item_exists_subselect::val_real()
@@ -854,9 +854,6 @@ Item_in_subselect::single_value_transformer(JOIN *join,
else
{
Item_maxmin_subselect *item;
- // remove LIMIT placed by ALL/ANY subquery
- select_lex->master_unit()->global_parameters->select_limit=
- HA_POS_ERROR;
subs= item= new Item_maxmin_subselect(thd, this, select_lex, func->l_op());
if (upper_item)
upper_item->set_sub_test(item);
@@ -1286,13 +1283,10 @@ subselect_single_select_engine(st_select_lex *select,
select_subselect *result,
Item_subselect *item)
:subselect_engine(item, result),
- prepared(0), optimized(0), executed(0), join(0)
+ prepared(0), optimized(0), executed(0),
+ select_lex(select), join(0)
{
- select_lex= select;
- SELECT_LEX_UNIT *unit= select_lex->master_unit();
- unit->set_limit(unit->global_parameters, select_lex);
- unit->item= item;
- this->select_lex= select_lex;
+ select_lex->master_unit()->item= item;
}
@@ -1440,7 +1434,10 @@ int subselect_single_select_engine::exec()
thd->lex->current_select= select_lex;
if (!optimized)
{
- optimized=1;
+ SELECT_LEX_UNIT *unit= select_lex->master_unit();
+
+ optimized= 1;
+ unit->set_limit(unit->global_parameters);
if (join->optimize())
{
thd->where= save_where;