1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

MDEV-8253 EXPLAIN SELECT prints unexpected characters

Item_string::clone_item() creates a new Item_string that
points exactly to the same buffer that the original one does.
Later, Item_string::print() uses c_ptr() for the original Item_string,
which reallocs the original buffer, and the clone remain with
the old freed buffer.
Refactoring the code not to use c_ptr() in Item_string::print().
This commit is contained in:
Alexander Barkov
2015-09-23 13:04:28 +04:00
parent 180c44e0f6
commit 212698b152
7 changed files with 68 additions and 20 deletions

View File

@@ -568,7 +568,15 @@ public:
str_length+= arg_length;
return FALSE;
}
void print(String *print) const;
void print(String *to) const;
void print_with_conversion(String *to, CHARSET_INFO *cs) const;
void print(String *to, CHARSET_INFO *cs) const
{
if (my_charset_same(charset(), cs))
print(to);
else
print_with_conversion(to, cs);
}
bool append_for_single_quote(const char *st, uint len);
bool append_for_single_quote(const String *s)