00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #pragma once
00021
00022 #include <drizzled/item/ident.h>
00023 #include <drizzled/item/field.h>
00024
00025 namespace drizzled {
00026
00027 class Item_default_value : public Item_field
00028 {
00029 public:
00030 Item *arg;
00031 Item_default_value(Name_resolution_context *context_arg)
00032 :Item_field(context_arg, (const char *)NULL, (const char *)NULL,
00033 (const char *)NULL),
00034 arg(NULL) {}
00035 Item_default_value(Name_resolution_context *context_arg, Item *a)
00036 :Item_field(context_arg, (const char *)NULL, (const char *)NULL,
00037 (const char *)NULL),
00038 arg(a) {}
00039 enum Type type() const { return DEFAULT_VALUE_ITEM; }
00040 bool eq(const Item *item, bool binary_cmp) const;
00041 bool fix_fields(Session *, Item **);
00042 virtual void print(String *str);
00043 int save_in_field(Field *field_arg, bool no_conversions);
00044 table_map used_tables() const { return (table_map)0L; }
00045
00046 bool walk(Item_processor processor, bool walk_subquery, unsigned char *args)
00047 {
00048 return arg->walk(processor, walk_subquery, args) ||
00049 (this->*processor)(args);
00050 }
00051
00052 Item *transform(Item_transformer transformer, unsigned char *args);
00053 };
00054
00055 }
00056