diff options
author | Alexander Barkov <bar@mariadb.com> | 2019-12-06 18:51:05 +0400 |
---|---|---|
committer | Alexander Barkov <bar@mariadb.com> | 2019-12-06 18:51:05 +0400 |
commit | 3c6065a270f547d160e11bbcaa653930ec5ff90f (patch) | |
tree | 8022e7e08c894de49542c2be94a9fd4186baeb05 /sql/sql_string.cc | |
parent | 00445652dbe1631699d860c4eb2263d9c29256a9 (diff) | |
download | mariadb-git-3c6065a270f547d160e11bbcaa653930ec5ff90f.tar.gz |
MDEV-8844 Unreadable control characters printed as is in warnings
Diffstat (limited to 'sql/sql_string.cc')
-rw-r--r-- | sql/sql_string.cc | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/sql/sql_string.cc b/sql/sql_string.cc index 483eb4fcbec..024f9330c84 100644 --- a/sql/sql_string.cc +++ b/sql/sql_string.cc @@ -777,6 +777,28 @@ void Static_binary_string::qs_append(ulonglong i) str_length+= (int) (end-buff); } + +bool Binary_string::copy_printable_hhhh(CHARSET_INFO *to_cs, + CHARSET_INFO *from_cs, + const char *from, + uint32 from_length) +{ + uint errors; + uint one_escaped_char_length= MY_CS_PRINTABLE_CHAR_LENGTH * to_cs->mbminlen; + uint one_char_length= MY_MAX(one_escaped_char_length, to_cs->mbmaxlen); + uint32 bytes_needed= (uint32) from_length * one_char_length; + if (alloc(bytes_needed)) + return true; + str_length= my_convert_using_func(Ptr, Alloced_length, to_cs, + my_wc_to_printable_generic, + from, from_length, + from_cs, + from_cs->cset->mb_wc, + &errors); + return false; +} + + /* Compare strings according to collation, without end space. |