22 #include <drizzled/memory/sql_alloc.h>
23 #include <drizzled/copy_field.h>
24 #include <drizzled/item.h>
42 unsigned char *null_ptr;
44 virtual enum store_key_result copy_inner()=0;
54 virtual const char *
name()
const=0;
62 enum store_key_result
copy();
69 const char *field_name;
73 unsigned char *null_ptr_arg,
74 uint32_t length,
Field *from_field,
const char *name_arg) :
76 null_ptr_arg ? null_ptr_arg : from_field->maybe_null() ? &err
77 : (
unsigned char*) 0, length), field_name(name_arg)
81 copy_field.set(to_field,from_field,0);
84 const char *
name()
const {
return field_name; }
87 enum store_key_result copy_inner()
89 copy_field.do_copy(©_field);
91 return err != 0 ? STORE_KEY_FATAL : STORE_KEY_OK;
102 unsigned char *null_ptr_arg, uint32_t length,
Item *item_arg) :
104 null_ptr_arg ? null_ptr_arg : item_arg->
maybe_null ?
105 &err : (
unsigned char*) 0, length), item(item_arg)
107 const char *
name()
const {
return "func"; }
110 enum store_key_result copy_inner()
112 int res= item->save_in_field(to_field, 1);
114 return (err != 0 || res > 2 ? STORE_KEY_FATAL : (store_key_result) res);
124 unsigned char *null_ptr_arg, uint32_t length,
127 null_ptr_arg ? null_ptr_arg : item_arg->
maybe_null ?
128 &err : (
unsigned char*) 0, length, item_arg), inited(0)
131 const char *
name()
const {
return "const"; }
134 enum store_key_result copy_inner()
140 if ((res= item->save_in_field(to_field, 1)))
147 return (err > 2 ? STORE_KEY_FATAL : (store_key_result) err);