summaryrefslogtreecommitdiff
path: root/sql/item.h
diff options
context:
space:
mode:
authorunknown <bell@sanja.is.com.ua>2004-07-23 09:20:58 +0300
committerunknown <bell@sanja.is.com.ua>2004-07-23 09:20:58 +0300
commit1b98202be7544b34f79b99cbf22e4b29090e4f9f (patch)
tree468a63f90437f6089d0851ca6f6d1961008de608 /sql/item.h
parentdc4de8d562bf781bc6640a00e2720548f20a53e0 (diff)
downloadmariadb-git-1b98202be7544b34f79b99cbf22e4b29090e4f9f.tar.gz
fixed using VIEW fields (BUG#4617)
mysql-test/r/view.result: using VIEW fields several times in query resolved via temporary tables mysql-test/t/view.test: using VIEW fields several times in query resolved via temporary tables sql/item.h: fixed using of result_field by Item_ref sql/sql_base.cc: Create Item_ref as reference on VIEW fields expression reference sql/sql_insert.cc: privent creating Item_ref in insert list (where Item_fields should be) sql/sql_lex.cc: Item_ref creation control sql/sql_lex.h: Item_ref creation control sql/sql_update.cc: privent creating Item_ref in insert list (where Item_fields should be) and creation Item_fields for UPDATE list sql/table.cc: Do not create Item_ref for internal view of view processing
Diffstat (limited to 'sql/item.h')
-rw-r--r--sql/item.h11
1 files changed, 6 insertions, 5 deletions
diff --git a/sql/item.h b/sql/item.h
index 583b17ca1df..afa439dff32 100644
--- a/sql/item.h
+++ b/sql/item.h
@@ -887,15 +887,15 @@ public:
Item *orig_item; /* things in 'cleanup()' */
Item_ref(Item **hook, Item *original,const char *db_par,
const char *table_name_par, const char *field_name_par)
- :Item_ident(db_par,table_name_par,field_name_par),ref(0), hook_ptr(hook),
- orig_item(original) {}
- Item_ref(Item **item, Item **hook,
+ :Item_ident(db_par, table_name_par, field_name_par), result_field(0),
+ ref(0), hook_ptr(hook), orig_item(original) {}
+ Item_ref(Item **item, Item **hook,
const char *table_name_par, const char *field_name_par)
- :Item_ident(NullS,table_name_par,field_name_par),
+ :Item_ident(NullS, table_name_par, field_name_par), result_field(0),
ref(item), hook_ptr(hook), orig_item(hook ? *hook:0) {}
// Constructor need to process subselect with temporary tables (see Item)
Item_ref(THD *thd, Item_ref *item, Item **hook)
- :Item_ident(thd, item), ref(item->ref),
+ :Item_ident(thd, item), result_field(item->result_field), ref(item->ref),
hook_ptr(hook), orig_item(hook ? *hook : 0) {}
enum Type type() const { return REF_ITEM; }
bool eq(const Item *item, bool binary_cmp) const
@@ -940,6 +940,7 @@ public:
return depended_from ? OUTER_REF_TABLE_BIT : (*ref)->used_tables();
}
void set_result_field(Field *field) { result_field= field; }
+ Field *get_tmp_table_field() { return result_field; }
bool is_result_field() { return 1; }
void save_in_result_field(bool no_conversions)
{