diff options
author | Alexander Barkov <bar@mariadb.org> | 2014-09-01 20:57:32 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.org> | 2014-09-01 20:57:32 +0400 |
commit | 1427e1db99ac44dedbc78e8655742a8ed9bfd755 (patch) | |
tree | a848c06ceed3a3a7a69e6ce159f92d2c3f96c5f0 /sql/sql_get_diagnostics.cc | |
parent | 18b307a7d23fd59b4a831e3e95207e2e34f56b6e (diff) | |
download | mariadb-git-1427e1db99ac44dedbc78e8655742a8ed9bfd755.tar.gz |
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().
Diffstat (limited to 'sql/sql_get_diagnostics.cc')
-rw-r--r-- | sql/sql_get_diagnostics.cc | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sql/sql_get_diagnostics.cc b/sql/sql_get_diagnostics.cc index be1e3589cc6..8b0d86aa7d1 100644 --- a/sql/sql_get_diagnostics.cc +++ b/sql/sql_get_diagnostics.cc @@ -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); } |