summaryrefslogtreecommitdiffstats
path: root/mysql-test/include/ctype_E05C.inc
blob: d157d8a7c889fb10512b5e3cf0a13a766b571739 (plain)
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