summaryrefslogtreecommitdiff
path: root/sql/item_subselect.cc
diff options
context:
space:
mode:
authorhf@deer.(none) <>2003-12-30 14:08:19 +0400
committerhf@deer.(none) <>2003-12-30 14:08:19 +0400
commitbfe134b86fad8eaa46196c8283cc91e6c77769b0 (patch)
tree2ae6e41d1324a906e2f8a6868b34fe75950e736f /sql/item_subselect.cc
parent1547a03c797fa547f1664d9c56a313daf62972bc (diff)
downloadmariadb-git-bfe134b86fad8eaa46196c8283cc91e6c77769b0.tar.gz
Fix for prepared statements
Here i added Item_*::cleanup() functions, removed a lot of ~Item_*'s, added code to restore order_list and group_list
Diffstat (limited to 'sql/item_subselect.cc')
-rw-r--r--sql/item_subselect.cc17
1 files changed, 15 insertions, 2 deletions
diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc
index 43775e1c96c..e0d9bcf3bd6 100644
--- a/sql/item_subselect.cc
+++ b/sql/item_subselect.cc
@@ -63,6 +63,11 @@ void Item_subselect::init(st_select_lex *select_lex,
DBUG_VOID_RETURN;
}
+void Item_subselect::cleanup()
+{
+ Item_result_field::cleanup();
+ engine->cleanup();
+}
Item_subselect::~Item_subselect()
{
@@ -641,7 +646,8 @@ Item_in_subselect::single_value_transformer(JOIN *join,
As far as Item_ref_in_optimizer do not substitude itself on fix_fields
we can use same item for all selects.
*/
- expr= new Item_ref((Item**)optimizer->get_cache(),
+ expr= new Item_ref((Item**)optimizer->get_cache(),
+ NULL,
(char *)"<no matter>",
(char *)in_left_expr_name);
@@ -791,7 +797,8 @@ Item_in_subselect::row_value_transformer(JOIN *join)
(char *) "<list ref>");
func=
eq_creator.create(new Item_ref((*optimizer->get_cache())->
- addr(i),
+ addr(i),
+ NULL,
(char *)"<no matter>",
(char *)in_left_expr_name),
func);
@@ -889,6 +896,12 @@ subselect_single_select_engine(st_select_lex *select,
this->select_lex= select_lex;
}
+void subselect_single_select_engine::cleanup()
+{
+ prepared= 0;
+ optimized= 0;
+ executed= 0;
+}
subselect_union_engine::subselect_union_engine(st_select_lex_unit *u,
select_subselect *result_arg,