22 #include <drizzled/charset.h>
23 #include <drizzled/field.h>
24 #include <drizzled/function/str/strfunc.h>
32 using Item_func::tmp_table_field;
41 tmp->set_charset(collation.collation);
44 void fix_length_and_dec()
46 collation.set(&my_charset_bin);
47 max_length=args[0]->max_length;
49 virtual const char* cast_type()
const= 0;
50 virtual void print(String *str);
57 void fix_length_and_dec()
59 collation.set(&my_charset_bin);
60 max_length=args[0]->max_length;
69 bool charset_conversion;
72 using Item_func::tmp_table_field;
75 :
Item_typecast(a), cast_length(length_arg), cast_cs(cs_arg) {}
76 enum Functype functype()
const {
return CHAR_TYPECAST_FUNC; }
77 bool eq(
const Item *item,
bool binary_cmp)
const;
78 const char *func_name()
const {
return "cast_as_char"; }
79 const char* cast_type()
const {
return "char"; }
81 void fix_length_and_dec();
88 using Item_func::tmp_table_field;
94 const char *func_name()
const {
return "cast_as_date"; }
98 const char *cast_type()
const {
return "date"; }
99 enum_field_types field_type()
const {
return DRIZZLE_TYPE_DATE; }
106 void fix_length_and_dec()
108 collation.set(&my_charset_bin);
120 return val_decimal_from_date(decimal_value);
123 int save_in_field(
Field *field,
bool )
125 return save_date_in_field(field);
132 using Item_func::tmp_table_field;
135 const char *func_name()
const {
return "cast_as_datetime"; }
137 const char *cast_type()
const {
return "datetime"; }
138 enum_field_types field_type()
const {
return DRIZZLE_TYPE_DATETIME; }
145 void fix_length_and_dec()
147 collation.set(&my_charset_bin);
150 decimals= DATETIME_DEC;
161 return val_real_from_decimal();
172 return val_decimal_from_date(decimal_value);
174 int save_in_field(
Field *field,
bool )
176 return save_date_in_field(field);
virtual void print(String *str)
TODO: Rename this file - func.h is stupid.
String * val_str(String *str)
Field * tmp_table_field_from_field_type(Table *table, bool fixed_length)
String * val_str(String *a)
type::Decimal * val_decimal(type::Decimal *decimal_value)
static const int MAX_STRING_LENGTH
bool eq(const Item *item, bool binary_cmp) const
virtual String * val_str(String *str)=0
bool get_time(type::Time <ime)
String * val_str(String *str)
type::Decimal * val_decimal(type::Decimal *decimal_value)
bool get_date(type::Time <ime, uint32_t fuzzy_date)
virtual void print(String *str)
String * val_str(String *a)