File: ctype_E05C.inc

package info (click to toggle)
mariadb-10.0 10.0.32-0%2Bdeb8u1
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 476,064 kB
  • sloc: cpp: 1,400,131; ansic: 832,140; perl: 54,391; sh: 41,304; pascal: 32,365; yacc: 14,921; xml: 5,257; sql: 4,667; cs: 4,647; makefile: 4,555; ruby: 4,465; python: 2,292; lex: 1,427; java: 941; asm: 295; awk: 54; php: 22; sed: 16
file content (111 lines) | stat: -rw-r--r-- 4,117 bytes parent folder | download | duplicates (6)
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
--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;

# 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.
#
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;


--echo # Start of ctype_E05C.inc