1-- source include/have_gb2312.inc 2 3# 4# Tests with the gb2312 character set 5# 6--disable_warnings 7drop table if exists t1; 8--enable_warnings 9 10SET @test_character_set= 'gb2312'; 11SET @test_collation= 'gb2312_chinese_ci'; 12-- source include/ctype_common.inc 13 14SET NAMES gb2312; 15SET collation_connection='gb2312_chinese_ci'; 16-- source include/ctype_filesort.inc 17-- source include/ctype_innodb_like.inc 18-- source include/ctype_like_escape.inc 19-- source include/ctype_like_range_f1f2.inc 20-- source include/ctype_ascii_order.inc 21SET collation_connection='gb2312_bin'; 22-- source include/ctype_filesort.inc 23-- source include/ctype_innodb_like.inc 24-- source include/ctype_like_escape.inc 25-- source include/ctype_like_range_f1f2.inc 26 27# 28# Bug#15377 Valid multibyte sequences are truncated on INSERT 29# 30SET NAMES gb2312; 31CREATE TABLE t1 (a text) character set gb2312; 32INSERT INTO t1 VALUES (0xA2A1),(0xD7FE); 33SELECT hex(a) FROM t1 ORDER BY a; 34DROP TABLE t1; 35 36# End of 4.1 tests 37 38 39--echo # 40--echo # Start of 5.5 tests 41--echo # 42 43--echo # 44--echo # Testing WL#4583 Case conversion in Asian character sets 45--echo # 46# 47# Populate t1 with all hex digits 48# 49SET NAMES utf8; 50SET collation_connection=gb2312_chinese_ci; 51CREATE TABLE t1 (b VARCHAR(2)); 52INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); 53INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); 54# 55# Populate tables head and tail with values '00'-'FF' 56# 57CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; 58CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; 59DROP TABLE t1; 60# 61# Populate table t1 with all codes [80..FF][20..FF] 62# Expected valid gb2312 codes [A1..F7][A1..FE] 63# 64CREATE TABLE t1 AS 65SELECT concat(head, tail) AS code, ' ' AS a 66FROM head, tail 67WHERE (head BETWEEN '80' AND 'FF') AND (tail BETWEEN '20' AND 'FF') 68ORDER BY head, tail; 69DROP TEMPORARY TABLE head, tail; 70SHOW CREATE TABLE t1; 71UPDATE IGNORE t1 SET a=unhex(code) ORDER BY code; 72SELECT COUNT(*) FROM t1 WHERE a<>'?'; 73# 74# Display all characters that have upper or lower case mapping. 75# 76SELECT code, hex(upper(a)), hex(lower(a)),a, upper(a), lower(a) FROM t1 WHERE hex(a)<>hex(upper(a)) OR hex(a)<>hex(lower(a)); 77# 78# Make sure all possible conversion happened 79# 80# Expect U+2160 to U+216B ROMAN NUMERAL ONE to ROMAN NUMERAL TWELVE 81# 82SELECT * FROM t1 83WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> 84 HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; 85# 86# Expect 87# U+00E0 LATIN SMALL LETTER A WITH GRAVE 88# U+00E1 LATIN SMALL LETTER A WITH ACUTE 89# U+00E8 LATIN SMALL LETTER E WITH GRAVE 90# U+00E9 LATIN SMALL LETTER E WITH ACUTE 91# U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX 92# U+00EC LATIN SMALL LETTER I WITH GRAVE 93# U+00ED LATIN SMALL LETTER I WITH ACUTE 94# U+00F2 LATIN SMALL LETTER O WITH GRAVE 95# U+00F3 LATIN SMALL LETTER O WITH ACUTE 96# U+00F9 LATIN SMALL LETTER U WITH GRAVE 97# U+00FA LATIN SMALL LETTER U WITH ACUTE 98# U+00FC LATIN SMALL LETTER U WITH DIAERESIS 99# U+0101 LATIN SMALL LETTER A WITH MACRON 100# U+0113 LATIN SMALL LETTER E WITH MACRON 101# U+011B LATIN SMALL LETTER E WITH CARON 102# U+012B LATIN SMALL LETTER I WITH MACRON 103# U+0144 LATIN SMALL LETTER N WITH ACUTE 104# U+0148 LATIN SMALL LETTER N WITH CARON 105# U+014D LATIN SMALL LETTER O WITH MACRON 106# U+016B LATIN SMALL LETTER U WITH MACRON 107# U+01CE LATIN SMALL LETTER A WITH CARON 108# U+01D0 LATIN SMALL LETTER I WITH CARON 109# U+01D2 LATIN SMALL LETTER O WITH CARON 110# U+01D4 LATIN SMALL LETTER U WITH CARON 111# U+01D6 LATIN SMALL LETTER U WITH DIAERESIS AND MACRON 112# U+01D8 LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE 113# U+01DA LATIN SMALL LETTER U WITH DIAERESIS AND CARON 114# U+01DC LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE 115# 116SELECT * FROM t1 117WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> 118 HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; 119 120DROP TABLE t1; 121 122 123 124 125--echo # 126--echo # End of 5.5 tests 127--echo # 128 129 130 131--echo # 132--echo # Start of 5.6 tests 133--echo # 134 135--echo # 136--echo # WL#3664 WEIGHT_STRING 137--echo # 138 139set names gb2312; 140--source include/weight_string.inc 141--source include/weight_string_l1.inc 142--source include/weight_string_A1A1.inc 143 144set collation_connection=gb2312_bin; 145--source include/weight_string.inc 146--source include/weight_string_l1.inc 147--source include/weight_string_A1A1.inc 148 149--echo # 150--echo # End of 5.6 tests 151--echo # 152 153--echo # 154--echo # Start of 10.0 tests 155--echo # 156 157let $ctype_unescape_combinations=selected; 158--source include/ctype_unescape.inc 159 160--echo # 161--echo # End of 10.0 tests 162--echo # 163 164 165--echo # 166--echo # Start of 10.2 tests 167--echo # 168--echo # 169--echo # MDEV-9711 NO PAD Collatons 170--echo # 171SET character_set_connection=gb2312; 172let $coll='gb2312_chinese_nopad_ci'; 173let $coll_pad='gb2312_chinese_ci'; 174--source include/ctype_pad_all_engines.inc 175 176let $coll='gb2312_nopad_bin'; 177let $coll_pad='gb2312_bin'; 178--source include/ctype_pad_all_engines.inc 179 180--echo # 181--echo # End of 10.2 tests 182--echo # 183 184 185--echo # 186--echo # Start of 10.5 tests 187--echo # 188 189--echo # 190--echo # MDEV-22625 SIGSEGV in intern_find_sys_var (optimized builds) 191--echo # 192 193SET NAMES gb2312; 194SET @seq=_gb2312 0xA2A1; 195--source include/ctype_ident_sys.inc 196 197--echo # 198--echo # End of 10.5 tests 199--echo # 200