22 #include <drizzled/session.h>
23 #include <drizzled/error.h>
24 #include <drizzled/item/string.h>
28 Item *Item_string::safe_charset_converter(
const charset_info_st *
const tocs)
30 String tmp, cstr, *ostr=
val_str(&tmp);
31 cstr.copy(ostr->ptr(), ostr->length(), tocs);
32 Item_string* conv=
new Item_string(cstr.ptr(), cstr.length(), cstr.charset(), collation.derivation);
33 char* ptr= getSession().mem.
strdup(cstr);
35 conv->str_value.set(ptr, cstr.length(), cstr.charset());
37 conv->str_value.mark_as_const();
42 Item *Item_static_string_func::safe_charset_converter(
const charset_info_st *
const tocs)
44 String tmp, cstr, *ostr=
val_str(&tmp);
45 cstr.copy(ostr->ptr(), ostr->length(), tocs);
46 Item_string* conv=
new Item_static_string_func(func_name, cstr, cstr.charset(), collation.derivation);
47 conv->str_value.copy();
49 conv->str_value.mark_as_const();
60 return (collation.collation == item->collation.collation &&
82 if (error || (end != org_end && !check_if_only_end_space(cs, end, org_end)))
88 push_warning_printf(&getSession(), DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_TRUNCATED_WRONG_VALUE, ER(ER_TRUNCATED_WRONG_VALUE),
"DOUBLE",
str_value.ptr());
105 int64_t tmp= (*(cs->cset->strtoll10))(cs,
str_value.ptr(), &end, &err);
110 if (err > 0 || (end != org_end && !check_if_only_end_space(cs, end, org_end)))
112 push_warning_printf(&getSession(), DRIZZLE_ERROR::WARN_LEVEL_WARN, ER_TRUNCATED_WRONG_VALUE, ER(ER_TRUNCATED_WRONG_VALUE),
"INTEGER",
str_value.ptr());
119 return val_decimal_from_string(decimal_value);
122 int Item_string::save_in_field(
Field *field,
bool)