mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-6661 PI() does not work well in UCS2/UTF16/UTF32 context
MDEV-6666 Malformed result for CONCAT(utf8_column, binary_string) Item_static_string_func::safe_charset_converter() and Item_hex_string::safe_charset_converter() did not handle character sets with mbminlen>1 properly, as well as did not handle conversion from binary to multi-byte well. Introducing Item::const_charset_converter(), to reuse it in a number of Item_*::safe_charset_converter().
This commit is contained in:
@ -267,9 +267,11 @@ Condition_information_item::make_utf8_string_item(THD *thd, const String *str)
|
||||
CHARSET_INFO *to_cs= &my_charset_utf8_general_ci;
|
||||
/* If a charset was not set, assume that no conversion is needed. */
|
||||
CHARSET_INFO *from_cs= str->charset() ? str->charset() : to_cs;
|
||||
Item_string *item= new Item_string(str->ptr(), str->length(), from_cs);
|
||||
String tmp(str->ptr(), str->length(), from_cs);
|
||||
/* If necessary, convert the string (ignoring errors), then copy it over. */
|
||||
return item ? item->charset_converter(to_cs, false) : NULL;
|
||||
uint conv_errors;
|
||||
return new Item_string(&tmp, to_cs, &conv_errors,
|
||||
DERIVATION_COERCIBLE, MY_REPERTOIRE_UNICODE30);
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user