summaryrefslogtreecommitdiff
path: root/sql/item.cc
diff options
context:
space:
mode:
authorunknown <mats@mysql.com>2006-03-21 14:35:49 +0100
committerunknown <mats@mysql.com>2006-03-21 14:35:49 +0100
commit83ba974a3de1528c7a4749546c1690b66baf4bf3 (patch)
treea303ad6570ce2e7f70c098ba3441aef72e5ee8c8 /sql/item.cc
parentaa3411f54b2d5e2b6069b122085926f771133437 (diff)
downloadmariadb-git-83ba974a3de1528c7a4749546c1690b66baf4bf3.tar.gz
BUG#18293 (Values in stored procedures written to binlog unescaped):
Generating character set-independent quoting of strings for the binary log when executing statements from inside stored procedure. mysql-test/r/ctype_cp932_binlog.result: Result change mysql-test/t/ctype_cp932_binlog.test: Adding check that string literals are written correctly for multi-byte character sets. sql/item.cc: Cutting out character set-independent string escaping code and putting it in a separate function. sql/log_event.cc: Adding characters set-independent code to separate function. sql/mysql_priv.h: Adding new function. sql/sp_head.cc: Escaping string value representing a string item.
Diffstat (limited to 'sql/item.cc')
-rw-r--r--sql/item.cc19
1 files changed, 1 insertions, 18 deletions
diff --git a/sql/item.cc b/sql/item.cc
index 808271fe256..c48bf19a88b 100644
--- a/sql/item.cc
+++ b/sql/item.cc
@@ -2642,25 +2642,8 @@ const String *Item_param::query_val_str(String* str) const
case STRING_VALUE:
case LONG_DATA_VALUE:
{
- char *buf, *ptr;
str->length(0);
- if (str->reserve(str_value.length()*2+3))
- break;
-
- buf= str->c_ptr_quick();
- ptr= buf;
- if (value.cs_info.character_set_client->escape_with_backslash_is_dangerous)
- {
- ptr= str_to_hex(ptr, str_value.ptr(), str_value.length());
- }
- else
- {
- *ptr++= '\'';
- ptr+= escape_string_for_mysql(str_value.charset(), ptr, 0,
- str_value.ptr(), str_value.length());
- *ptr++='\'';
- }
- str->length((uint32) (ptr - buf));
+ append_query_string(value.cs_info.character_set_client, &str_value, str);
break;
}
case NULL_VALUE: