diff options
author | unknown <mats@mysql.com> | 2006-03-21 14:35:49 +0100 |
---|---|---|
committer | unknown <mats@mysql.com> | 2006-03-21 14:35:49 +0100 |
commit | 83ba974a3de1528c7a4749546c1690b66baf4bf3 (patch) | |
tree | a303ad6570ce2e7f70c098ba3441aef72e5ee8c8 /sql/item.cc | |
parent | aa3411f54b2d5e2b6069b122085926f771133437 (diff) | |
download | mariadb-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.cc | 19 |
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: |