summaryrefslogtreecommitdiff
path: root/sql/item_subselect.h
diff options
context:
space:
mode:
authorunknown <hf@deer.(none)>2003-12-30 14:08:19 +0400
committerunknown <hf@deer.(none)>2003-12-30 14:08:19 +0400
commit367ded9f71c7209c851e212ecedc538ca810d8da (patch)
tree2ae6e41d1324a906e2f8a6868b34fe75950e736f /sql/item_subselect.h
parentd55382369eb639417dd01a62ff4867f9213f10ce (diff)
downloadmariadb-git-367ded9f71c7209c851e212ecedc538ca810d8da.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 sql/item.cc: cleanups methods implemented Item_ref constructors changed sql/item.h: cleanups declared Item_ref constructors changed some ~Item_* deleted sql/item_cmpfunc.cc: new Item_ref format sql/item_cmpfunc.h: saving/restoring of the original arguments added to eq and equal functions sql/item_func.cc: New Item_ref format sql/item_func.h: destructors removed/changed to 'cleanup()' sql/item_row.cc: New Item_ref format sql/item_row.h: ~Item_row -> cleanup() sql/item_strfunc.cc: new Item_ref format sql/item_strfunc.h: destructors removed sql/item_subselect.cc: Item_subselect implementation, new Item_ref() format sql/item_subselect.h: cleanups for subselects declared sql/item_sum.cc: cleanups implementations sql/item_sum.h: cleanups declarations destructors removed sql/mysql_priv.h: free_items, cleanup_items exported sql/sql_prepare.cc: cleanup_items, free_items calls added stmt->query_id= thd->query_id restored cleanup procedures for group_list and order_list added sql/sql_yacc.yy: New Item_ref() format
Diffstat (limited to 'sql/item_subselect.h')
-rw-r--r--sql/item_subselect.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/sql/item_subselect.h b/sql/item_subselect.h
index 8444dc7bf66..dc3d07540da 100644
--- a/sql/item_subselect.h
+++ b/sql/item_subselect.h
@@ -69,6 +69,7 @@ public:
select_subselect *result);
~Item_subselect();
+ void cleanup();
virtual void reset()
{
null_value= 1;
@@ -199,6 +200,13 @@ public:
{}
+ void cleanup()
+ {
+ Item_exists_subselect::cleanup();
+ abort_on_null= 0;
+ transformed= 0;
+ upper_not= 0;
+ }
subs_type substype() { return IN_SUBS; }
void reset()
{
@@ -261,6 +269,7 @@ public:
maybe_null= 0;
}
virtual ~subselect_engine() {}; // to satisfy compiler
+ virtual void cleanup() {}
// set_thd should be called before prepare()
void set_thd(THD *thd_arg) { thd= thd_arg; }
@@ -290,6 +299,7 @@ public:
subselect_single_select_engine(st_select_lex *select,
select_subselect *result,
Item_subselect *item);
+ void cleanup();
int prepare();
void fix_length_and_dec(Item_cache** row);
int exec();