Loading sql/item.cc +32 −0 Original line number Diff line number Diff line Loading @@ -638,6 +638,38 @@ Item *Item_num::safe_charset_converter(CHARSET_INFO *tocs) } Item *Item_static_int_func::safe_charset_converter(CHARSET_INFO *tocs) { Item_string *conv; char buf[64]; String *s, tmp(buf, sizeof(buf), &my_charset_bin); s= val_str(&tmp); if ((conv= new Item_static_string_func(func_name, s->ptr(), s->length(), s->charset()))) { conv->str_value.copy(); conv->str_value.mark_as_const(); } return conv; } Item *Item_static_float_func::safe_charset_converter(CHARSET_INFO *tocs) { Item_string *conv; char buf[64]; String *s, tmp(buf, sizeof(buf), &my_charset_bin); s= val_str(&tmp); if ((conv= new Item_static_string_func(func_name, s->ptr(), s->length(), s->charset()))) { conv->str_value.copy(); conv->str_value.mark_as_const(); } return conv; } Item *Item_string::safe_charset_converter(CHARSET_INFO *tocs) { Item_string *conv; Loading sql/item.h +2 −0 Original line number Diff line number Diff line Loading @@ -1132,6 +1132,7 @@ class Item_static_int_func :public Item_int Item_static_int_func(const char *str_arg, longlong i, uint length) :Item_int(NullS, i, length), func_name(str_arg) {} Item *safe_charset_converter(CHARSET_INFO *tocs); void print(String *str) { str->append(func_name); } }; Loading Loading @@ -1242,6 +1243,7 @@ class Item_static_float_func :public Item_float :Item_float(NullS, val_arg, decimal_par, length), func_name(str) {} void print(String *str) { str->append(func_name); } Item *safe_charset_converter(CHARSET_INFO *tocs); }; Loading Loading
sql/item.cc +32 −0 Original line number Diff line number Diff line Loading @@ -638,6 +638,38 @@ Item *Item_num::safe_charset_converter(CHARSET_INFO *tocs) } Item *Item_static_int_func::safe_charset_converter(CHARSET_INFO *tocs) { Item_string *conv; char buf[64]; String *s, tmp(buf, sizeof(buf), &my_charset_bin); s= val_str(&tmp); if ((conv= new Item_static_string_func(func_name, s->ptr(), s->length(), s->charset()))) { conv->str_value.copy(); conv->str_value.mark_as_const(); } return conv; } Item *Item_static_float_func::safe_charset_converter(CHARSET_INFO *tocs) { Item_string *conv; char buf[64]; String *s, tmp(buf, sizeof(buf), &my_charset_bin); s= val_str(&tmp); if ((conv= new Item_static_string_func(func_name, s->ptr(), s->length(), s->charset()))) { conv->str_value.copy(); conv->str_value.mark_as_const(); } return conv; } Item *Item_string::safe_charset_converter(CHARSET_INFO *tocs) { Item_string *conv; Loading
sql/item.h +2 −0 Original line number Diff line number Diff line Loading @@ -1132,6 +1132,7 @@ class Item_static_int_func :public Item_int Item_static_int_func(const char *str_arg, longlong i, uint length) :Item_int(NullS, i, length), func_name(str_arg) {} Item *safe_charset_converter(CHARSET_INFO *tocs); void print(String *str) { str->append(func_name); } }; Loading Loading @@ -1242,6 +1243,7 @@ class Item_static_float_func :public Item_float :Item_float(NullS, val_arg, decimal_par, length), func_name(str) {} void print(String *str) { str->append(func_name); } Item *safe_charset_converter(CHARSET_INFO *tocs); }; Loading