summaryrefslogtreecommitdiff
path: root/sql/sql_string.cc
diff options
context:
space:
mode:
authorAlexander Barkov <bar@mariadb.com>2019-12-06 18:51:05 +0400
committerAlexander Barkov <bar@mariadb.com>2019-12-06 18:51:05 +0400
commit3c6065a270f547d160e11bbcaa653930ec5ff90f (patch)
tree8022e7e08c894de49542c2be94a9fd4186baeb05 /sql/sql_string.cc
parent00445652dbe1631699d860c4eb2263d9c29256a9 (diff)
downloadmariadb-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.cc22
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.