diff options
author | hf@deer.(none) <> | 2003-12-30 14:08:19 +0400 |
---|---|---|
committer | hf@deer.(none) <> | 2003-12-30 14:08:19 +0400 |
commit | bfe134b86fad8eaa46196c8283cc91e6c77769b0 (patch) | |
tree | 2ae6e41d1324a906e2f8a6868b34fe75950e736f /sql/item_subselect.cc | |
parent | 1547a03c797fa547f1664d9c56a313daf62972bc (diff) | |
download | mariadb-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.cc | 17 |
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, |