summaryrefslogtreecommitdiff
path: root/sql/sql_get_diagnostics.cc
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.org>2014-09-01 20:57:32 +0400
committerAlexander Barkov <bar@mariadb.org>2014-09-01 20:57:32 +0400
commit1427e1db99ac44dedbc78e8655742a8ed9bfd755 (patch)
treea848c06ceed3a3a7a69e6ce159f92d2c3f96c5f0 /sql/sql_get_diagnostics.cc
parent18b307a7d23fd59b4a831e3e95207e2e34f56b6e (diff)
downloadmariadb-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.cc6
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);
}