summaryrefslogtreecommitdiff
path: root/sql/item_subselect.cc
diff options
context:
space:
mode:
authorunknown <bell@sanja.is.com.ua>2003-01-25 13:19:46 +0200
committerunknown <bell@sanja.is.com.ua>2003-01-25 13:19:46 +0200
commitfbd882fca6902e5038bef1d25c1afbfad892d09a (patch)
tree088681536e968628003ae711fd14a8df01b404ac /sql/item_subselect.cc
parent433307fafb1bc315a4e92c995f50d052c8d5eb36 (diff)
parentb23541339c389e452b3d643c249afd4e7fb4899f (diff)
downloadmariadb-git-fbd882fca6902e5038bef1d25c1afbfad892d09a.tar.gz
merging
sql/item.cc: Auto merged sql/item_cmpfunc.cc: Auto merged sql/item_cmpfunc.h: Auto merged sql/item_sum.cc: Auto merged sql/mysql_priv.h: Auto merged sql/sql_class.h: Auto merged sql/sql_delete.cc: Auto merged sql/sql_insert.cc: Auto merged sql/sql_lex.h: Auto merged sql/sql_list.h: Auto merged sql/sql_load.cc: Auto merged sql/sql_olap.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_select.h: Auto merged sql/sql_table.cc: Auto merged sql/sql_union.cc: Auto merged sql/sql_update.cc: Auto merged sql/sql_yacc.yy: Auto merged
Diffstat (limited to 'sql/item_subselect.cc')
-rw-r--r--sql/item_subselect.cc16
1 files changed, 13 insertions, 3 deletions
diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc
index 4ee851c2f84..e337f9c0c40 100644
--- a/sql/item_subselect.cc
+++ b/sql/item_subselect.cc
@@ -439,6 +439,8 @@ void Item_in_subselect::single_value_transformer(THD *thd,
compare_func_creator func)
{
DBUG_ENTER("Item_in_subselect::single_value_transformer");
+ THD *thd= current_thd;
+
if (unit->global_parameters->select_limit != HA_POS_ERROR)
{
my_error(ER_NOT_SUPPORTED_YET, MYF(0),
@@ -482,11 +484,15 @@ void Item_in_subselect::single_value_transformer(THD *thd,
sl->order_list.empty(); // no sense in ORDER BY without LIMIT
- if (sl->having || sl->with_sum_func || sl->group_list.first)
+ if (sl->having || sl->with_sum_func || sl->group_list.elements)
{
sl->item_list.push_back(item);
+ setup_ref_array(thd, &sl->ref_pointer_array,
+ 1+ select_lex->with_sum_func +
+ select_lex->order_list.elements +
+ select_lex->group_list.elements);
item= (*func)(expr, new Item_ref_null_helper(this,
- sl->item_list.head_ref(),
+ sl->ref_pointer_array,
(char *)"<no matter>",
(char*)"<result>"));
sl->having= and_items(sl->having, item);
@@ -678,8 +684,12 @@ int subselect_single_select_engine::prepare()
prepared= 1;
SELECT_LEX_NODE *save_select= thd->lex.current_select;
thd->lex.current_select= select_lex;
- if (join->prepare((TABLE_LIST*) select_lex->table_list.first,
+ if (join->prepare(&select_lex->ref_pointer_array,
+ (TABLE_LIST*) select_lex->table_list.first,
+ select_lex->with_wild,
select_lex->where,
+ select_lex->order_list.elements +
+ select_lex->group_list.elements,
(ORDER*) select_lex->order_list.first,
(ORDER*) select_lex->group_list.first,
select_lex->having,