summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorunknown <elliot@mysql.com>2005-08-17 04:26:32 -0400
committerunknown <elliot@mysql.com>2005-08-17 04:26:32 -0400
commita29b1d7151497b4777e4b4917f0eee001705a928 (patch)
treeb76748cc6afbe1d56a804e77de0da089c9098565 /include
parentbf07693148f916b27e8a520965fdd556ad054806 (diff)
downloadmariadb-git-a29b1d7151497b4777e4b4917f0eee001705a928.tar.gz
BUG#11338 (logging of prepared statement w/ blob type)
In cp932, '\' character can be the second byte in a multi-byte character stream. This makes it difficult to use mysql_escape_string. Added flag to indicate which languages allow '\' as second byte of multibyte sequence so that when putting a prepared statement into the binlog we can decide at runtime whether hex encoding is really needed. include/m_ctype.h: Added bool to indicate character sets which allow '\' as the second byte of a multibyte character set (currently only cp932). For these character sets, escaping with '\' is dangerous and leads to corruption in replication. include/my_sys.h: Add function to enocde a string as hex with no prefix (bare) mysys/charset.c: Add function to encode string as hex with no prefix (bare). sql/item.cc: Check the connection character set to see if escape_string_for_mysql is safe, or if character set requires unambiguous (hex) encoding sql/item.h: Pass thd to query_val_str for access to charset() sql/sql_prepare.cc: Pass thd to query_val_str. strings/ctype-big5.c: Add escape_with_backslash_is_dangerous flag. strings/ctype-bin.c: Add escape_with_backslash_is_dangerous flag strings/ctype-cp932.c: Add escape_with_backslash_is_dangerous flag. strings/ctype-czech.c: Add escape_with_backslash_is_dangerous flag. strings/ctype-euc_kr.c: Add escape_with_backslash_is_dangerous flag. strings/ctype-extra.c: Add escape_with_backslash_is_dangerous flag. strings/ctype-gb2312.c: Add escape_with_backslash_is_dangerous flag. strings/ctype-gbk.c: Added escape_with_backslash_is_dangerous flag. strings/ctype-latin1.c: Added escape_with_backslash_is_dangerous flag. strings/ctype-sjis.c: Added escape_with_backslash_is_dangerous flag. strings/ctype-tis620.c: Added esacpe_with_backslash_character_is_dangerous flag. strings/ctype-uca.c: Added escape_with_backslash_is_dangerous flag. strings/ctype-ucs2.c: Added escape_with_backslash_is_dangerous. strings/ctype-ujis.c: Added escape_with_backslash_is_dangerous flag. strings/ctype-utf8.c: Added escape_with_backslash_is_dangerous. strings/ctype-win1250ch.c: Added escape_with_backslash_is_dangerous.
Diffstat (limited to 'include')
-rw-r--r--include/m_ctype.h1
-rw-r--r--include/my_sys.h1
2 files changed, 2 insertions, 0 deletions
diff --git a/include/m_ctype.h b/include/m_ctype.h
index ab63a1e0db1..a5dc7cc00c6 100644
--- a/include/m_ctype.h
+++ b/include/m_ctype.h
@@ -220,6 +220,7 @@ typedef struct charset_info_st
uint mbmaxlen;
uint16 min_sort_char;
uint16 max_sort_char; /* For LIKE optimization */
+ my_bool escape_with_backslash_is_dangerous;
MY_CHARSET_HANDLER *cset;
MY_COLLATION_HANDLER *coll;
diff --git a/include/my_sys.h b/include/my_sys.h
index 8752aa30772..eafa41a05c8 100644
--- a/include/my_sys.h
+++ b/include/my_sys.h
@@ -788,6 +788,7 @@ extern my_bool init_compiled_charsets(myf flags);
extern void add_compiled_collation(CHARSET_INFO *cs);
extern ulong escape_string_for_mysql(CHARSET_INFO *charset_info, char *to,
const char *from, ulong length);
+extern char *bare_str_to_hex(char *to, const char *from, uint len);
#ifdef __WIN__
#define BACKSLASH_MBTAIL
/* File system character set */