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
00028 class Item_default_value : public Item_field
00029 {
00030 public:
00031 Item *arg;
00032 Item_default_value(Name_resolution_context *context_arg)
00033 :Item_field(context_arg, (const char *)NULL, (const char *)NULL,
00034 (const char *)NULL),
00035 arg(NULL) {}
00036 Item_default_value(Name_resolution_context *context_arg, Item *a)
00037 :Item_field(context_arg, (const char *)NULL, (const char *)NULL,
00038 (const char *)NULL),
00039 arg(a) {}
00040 enum Type type() const { return DEFAULT_VALUE_ITEM; }
00041 bool eq(const Item *item, bool binary_cmp) const;
00042 bool fix_fields(Session *, Item **);
00043 virtual void print(String *str);
00044 int save_in_field(Field *field_arg, bool no_conversions);
00045 table_map used_tables() const { return (table_map)0L; }
00046
00047 bool walk(Item_processor processor, bool walk_subquery, unsigned char *args)
00048 {
00049 return arg->walk(processor, walk_subquery, args) ||
00050 (this->*processor)(args);
00051 }
00052
00053 Item *transform(Item_transformer transformer, unsigned char *args);
00054 };
00055
00056 }
00057