1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
--echo # Start of ctype_E05C.inc
#
# A shared test for character sets big5, cp932, gbk, sjis
# They all can have 0x5C as the second byte in a multi-byte character.
# 0xE05C is one of such characters.
#
# Checking that the character 0xE05C correctly understands 5C as the second byte
# rather than a stand-alone backslash, including the strings that also
# have real backslash escapes and/or separator escapes.
SELECT HEX('\'),HEX('\t');
SELECT HEX('\\\'),HEX('\\\t'),HEX('\\\t\t');
SELECT HEX('''\'),HEX('\''');
SELECT HEX('\\''\'),HEX('\''\\');
SELECT HEX(BINARY('\')),HEX(BINARY('\t'));
SELECT HEX(BINARY('\\\')),HEX(BINARY('\\\t')),HEX(BINARY('\\\t\t'));
SELECT HEX(BINARY('''\')),HEX(BINARY('\'''));
SELECT HEX(BINARY('\\''\')),HEX(BINARY('\''\\'));
SELECT HEX(_BINARY'\'),HEX(_BINARY'\t');
SELECT HEX(_BINARY'\\\'),HEX(_BINARY'\\\t'),HEX(_BINARY'\\\t\t');
SELECT HEX(_BINARY'''\'),HEX(_BINARY'\''');
SELECT HEX(_BINARY'\\''\'),HEX(_BINARY'\''\\');
CREATE TABLE t1 AS SELECT REPEAT(' ',10) AS a LIMIT 0;
SHOW CREATE TABLE t1;
INSERT INTO t1 VALUES ('\'),('\t');
INSERT INTO t1 VALUES ('\\\'),('\\\t'),('\\\t\t');
INSERT INTO t1 VALUES ('''\'),('\''');
INSERT INTO t1 VALUES ('\\''\'),('\''\\');
SELECT a, HEX(a) FROM t1;
DROP TABLE t1;
CREATE TABLE t1 (a BLOB);
INSERT INTO t1 VALUES ('\'),('\t');
INSERT INTO t1 VALUES ('\\\'),('\\\t'),('\\\t\t');
INSERT INTO t1 VALUES ('''\'),('\''');
INSERT INTO t1 VALUES ('\\''\'),('\''\\');
SELECT a, HEX(a) FROM t1;
DROP TABLE t1;
CREATE TABLE t1 AS SELECT REPEAT(' ', 10) AS a LIMIT 0;
SHOW CREATE TABLE t1;
INSERT INTO t1 VALUES (BINARY('\')),(BINARY('\t'));
INSERT INTO t1 VALUES (BINARY('\\\')),(BINARY('\\\t')),(BINARY('\\\t\t'));
INSERT INTO t1 VALUES (BINARY('''\')),(BINARY('\'''));
INSERT INTO t1 VALUES (BINARY('\\''\')),(BINARY('\''\\'));
SELECT a, HEX(a) FROM t1;
DROP TABLE t1;
CREATE TABLE t1 (a BLOB);
INSERT INTO t1 VALUES (BINARY('\')),(BINARY('\t'));
INSERT INTO t1 VALUES (BINARY('\\\')),(BINARY('\\\t')),(BINARY('\\\t\t'));
INSERT INTO t1 VALUES (BINARY('''\')),(BINARY('\'''));
INSERT INTO t1 VALUES (BINARY('\\''\')),(BINARY('\''\\'));
SELECT a, HEX(a) FROM t1;
DROP TABLE t1;
CREATE TABLE t1 AS SELECT REPEAT(' ', 10) AS a LIMIT 0;
SHOW CREATE TABLE t1;
INSERT INTO t1 VALUES (_BINARY'\'),(_BINARY'\t');
INSERT INTO t1 VALUES (_BINARY'\\\'),(_BINARY'\\\t'),(_BINARY'\\\t\t');
INSERT INTO t1 VALUES (_BINARY'''\'),(_BINARY'\''');
INSERT INTO t1 VALUES (_BINARY'\\''\'),(_BINARY'\''\\');
SELECT a, HEX(a) FROM t1;
DROP TABLE t1;
CREATE TABLE t1 (a BLOB);
INSERT INTO t1 VALUES (_BINARY'\'),(_BINARY'\t');
INSERT INTO t1 VALUES (_BINARY'\\\'),(_BINARY'\\\t'),(_BINARY'\\\t\t');
INSERT INTO t1 VALUES (_BINARY'''\'),(_BINARY'\''');
INSERT INTO t1 VALUES (_BINARY'\\''\'),(_BINARY'\''\\');
SELECT a, HEX(a) FROM t1;
DROP TABLE t1;
#
# test how strings are written into view's frm
#
disable_view_protocol;
create view v1 as select hex('\'), hex('\t');
select * from v1;
drop view v1;
enable_view_protocol;
# Checking that with character_set_client=binary 0x5C in 0xE05C
# is treated as escape rather than the second byte of a multi-byte character,
# even if character_set_connection is big5/cp932/gbk/sjis.
# Note, the other 0x5C which is before 0xE05C is also treated as escape.
#
#check after fix MDEV-29290
--disable_view_protocol
SET character_set_client=binary, character_set_results=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;
#
# 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;
--enable_view_protocol
--echo # End of ctype_E05C.inc
|