22 #include <drizzled/error.h>
23 #include <drizzled/name_resolution_context.h>
24 #include <drizzled/table.h>
25 #include <drizzled/session.h>
26 #include <drizzled/item/default_value.h>
32 return item->type() == DEFAULT_VALUE_ITEM &&
37 bool Item_default_value::fix_fields(
Session *session,
Item **)
46 if (!arg->
fixed && arg->fix_fields(session, &arg))
50 Item* real_arg= arg->real_item();
51 if (real_arg->type() != FIELD_ITEM)
53 my_error(ER_NO_DEFAULT_FOR_FIELD, MYF(0), arg->
name);
57 Item_field* field_arg= (Item_field *)real_arg;
58 if (field_arg->field->flags & NO_DEFAULT_VALUE_FLAG)
60 my_error(ER_NO_DEFAULT_FOR_FIELD, MYF(0), field_arg->field->field_name);
63 Field* def_field= (Field*) memory::sql_alloc(field_arg->field->size_of());
64 memcpy(def_field, field_arg->field, field_arg->field->size_of());
65 def_field->move_field_offset((ptrdiff_t)(def_field->getTable()->getDefaultValues() - def_field->getTable()->record[0]));
75 str->append(STRING_WITH_LEN(
"default"));
78 str->append(STRING_WITH_LEN(
"default("));
84 int Item_default_value::save_in_field(
Field *field_arg,
bool no_conversions)
88 if (field_arg->flags & NO_DEFAULT_VALUE_FLAG)
90 if (field_arg->reset())
92 my_message(ER_CANT_CREATE_GEOMETRY_OBJECT, ER(ER_CANT_CREATE_GEOMETRY_OBJECT), MYF(0));
95 push_warning_printf(field_arg->getTable()->
in_use, DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_NO_DEFAULT_FOR_FIELD, ER(ER_NO_DEFAULT_FOR_FIELD), field_arg->
field_name);
98 field_arg->set_default();
101 return Item_field::save_in_field(field_arg, no_conversions);
116 return (this->*transformer)(args);