diff options
Diffstat (limited to 'sql/item.h')
-rw-r--r-- | sql/item.h | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/sql/item.h b/sql/item.h index 6f83348f0c6..8c7914cefeb 100644 --- a/sql/item.h +++ b/sql/item.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB +/* Copyright (C) 2000-2003 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -97,6 +97,10 @@ public: virtual bool get_time(TIME *ltime); virtual bool is_null() { return 0; }; virtual void top_level_item() {} + virtual void set_result_field(Field *field) {} + virtual bool is_result_field() { return 0; } + virtual void save_in_result_field(bool no_conversions) {} + virtual void no_rows_in_result() {} virtual Item *copy_or_same(THD *thd) { return this; } virtual Item *get_tmp_table_item(THD *thd) { return copy_or_same(thd); } @@ -450,12 +454,19 @@ public: Field *tmp_table_field(TABLE *t_arg) { return result_field; } table_map used_tables() const { return 1; } virtual void fix_length_and_dec()=0; + void set_result_field(Field *field) { result_field= field; } + bool is_result_field() { return 1; } + void save_in_result_field(bool no_conversions) + { + save_in_field(result_field, no_conversions); + } }; class Item_ref :public Item_ident { public: + Field *result_field; /* Save result here */ Item **ref; Item_ref(char *db_par,char *table_name_par,char *field_name_par) :Item_ident(db_par,table_name_par,field_name_par),ref(0) {} @@ -504,6 +515,12 @@ public: enum Item_result result_type () const { return (*ref)->result_type(); } enum_field_types field_type() const { return (*ref)->field_type(); } table_map used_tables() const { return (*ref)->used_tables(); } + void set_result_field(Field *field) { result_field= field; } + bool is_result_field() { return 1; } + void save_in_result_field(bool no_conversions) + { + (*ref)->save_in_field(result_field, no_conversions); + } }; class Item_in_subselect; |