From a3bd38d66dd144ec42d842fb2655e94238d50496 Mon Sep 17 00:00:00 2001 From: Alexander Barkov Date: Tue, 23 Sep 2014 15:58:54 +0400 Subject: [PATCH] Adding tests for handling 0x5C as the second byte in a multi-byte sequence, and as a escape character when SET NAMES xxx, character_set_connection=binary; for cp932,big5,gbk,sjis --- mysql-test/include/ctype_E05C.inc | 17 +++++++++++++++++ mysql-test/r/ctype_big5.result | 20 ++++++++++++++++++++ mysql-test/r/ctype_cp932_binlog_stm.result | 20 ++++++++++++++++++++ mysql-test/r/ctype_gbk.result | 20 ++++++++++++++++++++ mysql-test/r/ctype_sjis.result | 20 ++++++++++++++++++++ 5 files changed, 97 insertions(+) diff --git a/mysql-test/include/ctype_E05C.inc b/mysql-test/include/ctype_E05C.inc index f98cc8b0487..9ef35a98934 100644 --- a/mysql-test/include/ctype_E05C.inc +++ b/mysql-test/include/ctype_E05C.inc @@ -90,5 +90,22 @@ INSERT INTO t1 VALUES (' SELECT HEX(a) FROM t1; DROP TABLE t1; +# +# Checking the other way around: +# 0x5C in 0xE05C is treated as the second byte +# when character_set_client=big5,cp932,gbk,sjis +# and character_set_connection=binary +# +SET character_set_client=@@character_set_connection, character_set_results=@@character_set_connection; +SET character_set_connection=binary; +SELECT @@character_set_client, @@character_set_connection, @@character_set_results; +SELECT HEX('\['), HEX('\\['); +CREATE TABLE t1 AS SELECT REPEAT(' ', 10) AS a LIMIT 0; +SHOW CREATE TABLE t1; +INSERT INTO t1 VALUES ('\['),('\\['); +SELECT HEX(a) FROM t1; +DROP TABLE t1; + + --echo # Start of ctype_E05C.inc diff --git a/mysql-test/r/ctype_big5.result b/mysql-test/r/ctype_big5.result index 77e6ea48d2a..175bbf0f09f 100644 --- a/mysql-test/r/ctype_big5.result +++ b/mysql-test/r/ctype_big5.result @@ -4548,6 +4548,26 @@ HEX(a) E05B E05B DROP TABLE t1; +SET character_set_client=@@character_set_connection, character_set_results=@@character_set_connection; +SET character_set_connection=binary; +SELECT @@character_set_client, @@character_set_connection, @@character_set_results; +@@character_set_client @@character_set_connection @@character_set_results +big5 binary big5 +SELECT HEX('\['), HEX('\\['); +HEX('\[') HEX('\\[') +E05C5B E05B +CREATE TABLE t1 AS SELECT REPEAT(' ', 10) AS a LIMIT 0; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` varbinary(10) NOT NULL DEFAULT '' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +INSERT INTO t1 VALUES ('\['),('\\['); +SELECT HEX(a) FROM t1; +HEX(a) +E05C5B +E05B +DROP TABLE t1; # Start of ctype_E05C.inc SET NAMES big5; CREATE TABLE t1 (a ENUM('@') CHARACTER SET big5); diff --git a/mysql-test/r/ctype_cp932_binlog_stm.result b/mysql-test/r/ctype_cp932_binlog_stm.result index 9b03f241bad..0e6ae25a395 100644 --- a/mysql-test/r/ctype_cp932_binlog_stm.result +++ b/mysql-test/r/ctype_cp932_binlog_stm.result @@ -20237,6 +20237,26 @@ HEX(a) E05B E05B DROP TABLE t1; +SET character_set_client=@@character_set_connection, character_set_results=@@character_set_connection; +SET character_set_connection=binary; +SELECT @@character_set_client, @@character_set_connection, @@character_set_results; +@@character_set_client @@character_set_connection @@character_set_results +cp932 binary cp932 +SELECT HEX('\['), HEX('\\['); +HEX('\[') HEX('\\[') +E05C5B E05B +CREATE TABLE t1 AS SELECT REPEAT(' ', 10) AS a LIMIT 0; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` varbinary(10) NOT NULL DEFAULT '' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +INSERT INTO t1 VALUES ('\['),('\\['); +SELECT HEX(a) FROM t1; +HEX(a) +E05C5B +E05B +DROP TABLE t1; # Start of ctype_E05C.inc # # End of 10.0 tests diff --git a/mysql-test/r/ctype_gbk.result b/mysql-test/r/ctype_gbk.result index a1fcaa50ff2..c5d997b0213 100644 --- a/mysql-test/r/ctype_gbk.result +++ b/mysql-test/r/ctype_gbk.result @@ -4922,6 +4922,26 @@ HEX(a) E05B E05B DROP TABLE t1; +SET character_set_client=@@character_set_connection, character_set_results=@@character_set_connection; +SET character_set_connection=binary; +SELECT @@character_set_client, @@character_set_connection, @@character_set_results; +@@character_set_client @@character_set_connection @@character_set_results +gbk binary gbk +SELECT HEX('\['), HEX('\\['); +HEX('\[') HEX('\\[') +E05C5B E05B +CREATE TABLE t1 AS SELECT REPEAT(' ', 10) AS a LIMIT 0; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` varbinary(10) NOT NULL DEFAULT '' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +INSERT INTO t1 VALUES ('\['),('\\['); +SELECT HEX(a) FROM t1; +HEX(a) +E05C5B +E05B +DROP TABLE t1; # Start of ctype_E05C.inc # # End of 10.0 tests diff --git a/mysql-test/r/ctype_sjis.result b/mysql-test/r/ctype_sjis.result index 818ff8509a1..48456c16705 100644 --- a/mysql-test/r/ctype_sjis.result +++ b/mysql-test/r/ctype_sjis.result @@ -18485,6 +18485,26 @@ HEX(a) E05B E05B DROP TABLE t1; +SET character_set_client=@@character_set_connection, character_set_results=@@character_set_connection; +SET character_set_connection=binary; +SELECT @@character_set_client, @@character_set_connection, @@character_set_results; +@@character_set_client @@character_set_connection @@character_set_results +sjis binary sjis +SELECT HEX('\['), HEX('\\['); +HEX('\[') HEX('_\[') +E05C5B E05B +CREATE TABLE t1 AS SELECT REPEAT(' ', 10) AS a LIMIT 0; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `a` varbinary(10) NOT NULL DEFAULT '' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +INSERT INTO t1 VALUES ('\['),('\\['); +SELECT HEX(a) FROM t1; +HEX(a) +E05C5B +E05B +DROP TABLE t1; # Start of ctype_E05C.inc # # End of 10.0 tests