File: charset.test

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (155 lines) | stat: -rw-r--r-- 4,953 bytes parent folder | download
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
--echo #
--echo #Bug#21958734: INNODB: FAILING ASSERTION: *MBMAXLEN < 5 IN
--echo #              FILE HA_INNODB.CC LINE 1803
--echo #
SHOW CHARACTER SET LIKE '%filename%';
SHOW COLLATION LIKE '%filename%';
--error ER_BAD_FIELD_ERROR
SELECT _filename'abcd';
--error ER_UNKNOWN_CHARACTER_SET
SELECT CONVERT(_latin1'abcd' USING filename);
--error ER_UNKNOWN_CHARACTER_SET
SELECT CAST(_latin1'abcd' AS CHAR CHARACTER SET filename);
--error ER_UNKNOWN_CHARACTER_SET
SET NAMES 'filename';
SET NAMES 'utf8';
--error ER_UNKNOWN_CHARACTER_SET
SET CHARACTER_SET_CLIENT=17;
SET CHARACTER_SET_CLIENT=33;

--disable_warnings
DROP DATABASE IF EXISTS db21958734;
--enable_warnings

--error ER_UNKNOWN_CHARACTER_SET
CREATE DATABASE db21958734 CHARACTER SET filename;
--error ER_UNKNOWN_COLLATION
CREATE DATABASE db21958734 COLLATE filename;
CREATE DATABASE db21958734 CHARACTER SET utf8;
--error ER_UNKNOWN_CHARACTER_SET
ALTER DATABASE db21958734 CHARACTER SET filename;
--error ER_UNKNOWN_COLLATION
ALTER DATABASE db21958734 COLLATE filename;
ALTER DATABASE db21958734 CHARACTER SET latin1;
USE db21958734;
--error ER_UNKNOWN_CHARACTER_SET
CREATE TABLE t1(a VARCHAR(10)) CHARACTER SET filename;
--error ER_UNKNOWN_COLLATION
CREATE TABLE t1(a VARCHAR(10)) COLLATE filename;
--error ER_UNKNOWN_CHARACTER_SET
CREATE TABLE t1(a VARCHAR(10) CHARACTER SET filename);
--error ER_UNKNOWN_COLLATION
CREATE TABLE t1(a VARCHAR(10) COLLATE filename);
CREATE TABLE t1(a VARCHAR(10) CHARACTER SET utf8) CHARACTER SET latin1;
--error ER_UNKNOWN_CHARACTER_SET
ALTER TABLE t1 CHARACTER SET filename;
--error ER_UNKNOWN_COLLATION
ALTER TABLE t1 COLLATE filename;
ALTER TABLE t1 CHARACTER SET gbk;
--error ER_UNKNOWN_CHARACTER_SET
ALTER TABLE t1 MODIFY a VARCHAR(10) CHARACTER SET filename;
--error ER_UNKNOWN_COLLATION
ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE filename;
ALTER TABLE t1 MODIFY a VARCHAR(10) CHARACTER SET cp932;
DROP DATABASE db21958734;

--source include/not_valgrind.inc
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--shutdown_server
--source include/wait_until_disconnected.inc

--error 1
--exec $MYSQLD --datadir=../data  --basedir=. --lc-messages-dir=$MYSQLTEST_VARDIR/../../share/english --character-set-server=filename >$MYSQLTEST_VARDIR/log/mysqld_out_err.log 2>&1

--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--enable_reconnect
--source include/wait_until_connected_again.inc
--disable_reconnect

--echo #
--echo # Bug#29110613: UNICODE STRING INCORRECTLY MARKED AS INVALID
--echo #

USE test;
SET NAMES utf8mb4;
--error ER_CANNOT_CONVERT_STRING
SELECT 'x' AS '🐬';
SELECT '🐬';
CREATE TABLE 🐬(a INT);
CREATE TABLE t1(🐬 INT);
CREATE TABLE t2(a INT COMMENT "🐬");
CREATE TABLE t3(a INT);
--error ER_CANNOT_CONVERT_STRING
CREATE VIEW v1 AS SELECT 'x' AS'🐬';
DROP TABLE 🐬;
DROP TABLE t1, t2, t3;
PREPARE stmt FROM "SELECT 'x' AS '🐬'";
EXECUTE stmt;

SET NAMES utf8mb3;
SELECT 'x' AS '🐬';
SELECT '🐬';
--error ER_INVALID_CHARACTER_STRING
CREATE TABLE 🐬(a INT);
--error ER_INVALID_CHARACTER_STRING
CREATE TABLE t1(🐬 INT);
--error ER_COMMENT_CONTAINS_INVALID_STRING
CREATE TABLE t2(a INT COMMENT "🐬");
CREATE TABLE t3(a INT);
--error ER_WRONG_COLUMN_NAME
CREATE VIEW v1 AS SELECT 'x' AS'🐬';
DROP TABLE t3;
PREPARE stmt FROM "SELECT 'x' AS '🐬'";
EXECUTE stmt;

SET NAMES default;

--echo #
--echo # Bug#29909573 SHOW CREATE TABLE OUTPUT CAN'T BE EXECUTED
--echo # The following CREATE TABLE would fail without fix.
--echo #

CREATE TABLE t1 (f1 CHAR(20) COLLATE binary);
SHOW CREATE TABLE t1;
DROP TABLE t1;

CREATE TABLE t1 (f1 ENUM('a') COLLATE binary);
SHOW CREATE TABLE t1;
DROP TABLE t1;

# Test the DDL from bug page.
CREATE TABLE t1 (
  `id` int NOT NULL AUTO_INCREMENT,
  `etype` enum('a','b','c') CHARACTER SET binary COLLATE binary DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
DROP TABLE t1;

--echo # Bug#32244631: Illegal mix of collations (ascii_general_ci,implicit)

SELECT member_role
FROM performance_schema.replication_group_members
WHERE member_host = @@hostname AND member_role='PRIMARY';

--echo #
--echo # Bug#34801210: Error Illegal mix of collations when using views and IN
--echo #               statements
--echo #
set @old_collation = @@collation_connection;

CREATE TABLE t1 ( id INT UNSIGNED PRIMARY KEY NOT NULL,
                    val varchar(32) NOT NULL) collate utf8mb4_sv_0900_ai_ci;
SET session collation_connection = 'utf8mb4_sv_0900_ai_ci';
CREATE VIEW v1 AS SELECT * FROM t1 WHERE val = 'data';
CREATE VIEW v2 AS SELECT * FROM t1 WHERE val IN ('data') ;
SELECT * FROM v1 WHERE val = 'something';
SELECT * FROM v2 WHERE val = 'something';
SET session collation_connection = 'utf8mb4_general_ci';
SELECT * FROM v1 WHERE val = 'something';
SELECT * FROM v2 WHERE val = 'something';

# Cleanup and restore
DROP VIEW v1;
DROP VIEW v2;
DROP TABLE t1;
SET session collation_connection = @old_collation;