diff options
Diffstat (limited to 'mysql-test/main/ctype_sjis.test')
-rw-r--r-- | mysql-test/main/ctype_sjis.test | 262 |
1 files changed, 262 insertions, 0 deletions
diff --git a/mysql-test/main/ctype_sjis.test b/mysql-test/main/ctype_sjis.test new file mode 100644 index 00000000000..9a8ce414c14 --- /dev/null +++ b/mysql-test/main/ctype_sjis.test @@ -0,0 +1,262 @@ +-- source include/have_sjis.inc + +# +# Tests with the sjis character set +# +--disable_warnings +drop table if exists t1; +--enable_warnings + +set names sjis; + +select 'a' like 'a'; +select 'A' like 'a'; +select 'A' like 'a' collate sjis_bin; + +set @sjis1= _sjis 0xa1a2a3a4a5a6a7a8a9aaabacadaeaf; +set @sjis2= _sjis 0xb0b1b2b3b4b5b6b7b8b9babbbcbdbebf; +set @sjis3= _sjis 0xc0c1c2c3c4c5c6c7c8c9cacbcccdcecf; +set @sjis4= _sjis 0xd0d1d2d3d4d5d6d7d8d9dadbdcdddedf; + +set @utf81= CONVERT(@sjis1 USING utf8); +set @utf82= CONVERT(@sjis2 USING utf8); +set @utf83= CONVERT(@sjis3 USING utf8); +set @utf84= CONVERT(@sjis4 USING utf8); + +select hex(@utf81); +select hex(@utf82); +select hex(@utf83); +select hex(@utf84); + +select hex(CONVERT(@utf81 USING sjis)); +select hex(CONVERT(@utf82 USING sjis)); +select hex(CONVERT(@utf83 USING sjis)); +select hex(CONVERT(@utf84 USING sjis)); + +# +# Allow to insert extra CP932 characters +# into a SJIS column +# +create table t1 (a char(10) character set sjis); +insert into t1 values (0x878A); +select hex(a) from t1; +drop table t1; + +# +# Bug #6206 ENUMs are not case sensitive even if declared BINARY +# +create table t1(c enum(0x9353,0x9373) character set sjis); +show create table t1; +insert into t1 values (0x9353); +insert into t1 values (0x9373); +select hex(c) from t1; +drop table t1; + +# +# Bug #6223 Japanese half-width kana characters get truncated +# +SET NAMES sjis; +CREATE TABLE t1 ( + c char(16) default NULL +) ENGINE=MyISAM DEFAULT CHARSET=sjis; +insert into t1 values(0xb1),(0xb2),(0xb3); +select hex(c) from t1; +drop table t1; + + +SET collation_connection='sjis_japanese_ci'; +-- source include/ctype_filesort.inc +-- source include/ctype_innodb_like.inc +-- source include/ctype_like_escape.inc +-- source include/ctype_like_range_f1f2.inc +-- source include/ctype_str_to_date.inc +SET collation_connection='sjis_bin'; +-- source include/ctype_filesort.inc +-- source include/ctype_innodb_like.inc +-- source include/ctype_like_escape.inc +-- source include/ctype_like_range_f1f2.inc + +# Check parsing of string literals in SJIS with multibyte characters that +# have an embedded \ in them. (Bug #8303) + +--character_set sjis +SET NAMES sjis; +SELECT HEX('@\') FROM DUAL; + +# End of 4.1 tests + +--echo # Start of 5.1 tests + +--echo Bug#44352 UPPER/LOWER function doesn't work correctly on cp932 and sjis environment. +CREATE TABLE t1 (a varchar(16)) character set sjis; +INSERT INTO t1 VALUES (0x8372835E),(0x8352835E); +SELECT hex(a), hex(lower(a)), hex(upper(a)) FROM t1 ORDER BY binary(a); +DROP TABLE t1; + +--echo # +--echo # Bug#11766519 - Bug#59648: MY_STRTOLL10_MB2: ASSERTION `(*ENDPTR - S) % 2 == 0' FAILED. +--echo # +# In the below string backslash (0x5C) is a part of a multi-byte +# character, so it should not be quoted. +SELECT QUOTE('\'); + + +--echo # End of 5.1 tests + + +--echo # +--echo # Start of 5.5 tests +--echo # + +--echo # +--echo # Testing WL#4583 Case conversion in Asian character sets +--echo # +# +# Populate t1 with all hex digits +# +SET NAMES utf8; +SET collation_connection=sjis_japanese_ci; +CREATE TABLE t1 (b VARCHAR(2)); +INSERT INTO t1 VALUES ('0'),('1'),('2'),('3'),('4'),('5'),('6'),('7'); +INSERT INTO t1 VALUES ('8'),('9'),('A'),('B'),('C'),('D'),('E'),('F'); +# +# Populate tables head and tail with values '00'-'FF' +# +CREATE TEMPORARY TABLE head AS SELECT concat(b1.b, b2.b) AS head FROM t1 b1, t1 b2; +CREATE TEMPORARY TABLE tail AS SELECT concat(b1.b, b2.b) AS tail FROM t1 b1, t1 b2; +DROP TABLE t1; +# +# Populate table t1 with all codes [80..FF][20..FF] +# excluding Half Width Kana [A1..DF] +# Expected valid sjis codes: +# [81..9F,E0..FC][40..7E,80..fC] (60x188=11280 characters) +# +CREATE TABLE t1 AS +SELECT concat(head, tail) AS code, ' ' AS a +FROM head, tail +WHERE (head BETWEEN '80' AND 'FF') AND (head NOT BETWEEN 'A1' AND 'DF') +AND (tail BETWEEN '20' AND 'FF') +ORDER BY head, tail; +# +# Populate Half Width Kana: [A1..DF] +# +INSERT IGNORE t1 (code) SELECT head FROM head WHERE (head BETWEEN 'A1' AND 'DF'); +DROP TEMPORARY TABLE head, tail; +SHOW CREATE TABLE t1; +UPDATE IGNORE t1 SET a=unhex(code) ORDER BY code; +SELECT COUNT(*) FROM t1; +SELECT COUNT(*) FROM t1 WHERE a<>'?' AND OCTET_LENGTH(a)=1; +SELECT COUNT(*) FROM t1 WHERE a<>'' AND OCTET_LENGTH(a)=2; +# +# Display all characters that have upper or lower case mapping. +# +SELECT 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)) +ORDER BY code; +# +# Make sure all possible conversion happened +# +# Expect U+212B ANGSTROM SIGN +# +SELECT * FROM t1 +WHERE HEX(CAST(LOWER(a) AS CHAR CHARACTER SET utf8)) <> + HEX(LOWER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; +# +# Expect no results +# +SELECT * FROM t1 +WHERE HEX(CAST(UPPER(a) AS CHAR CHARACTER SET utf8)) <> + HEX(UPPER(CAST(a AS CHAR CHARACTER SET utf8))) ORDER BY code; + +--echo # +--echo # WL#3090 Japanese Character Set adjustments +--echo # Test sjis->Unicode conversion +--echo # +SELECT HEX(a), HEX(CONVERT(a USING utf8)) as b FROM t1 +WHERE a<>'' HAVING b<>'3F' ORDER BY code; + +DROP TABLE t1; + + +--echo # +--echo # WL#3090 Japanese Character Set adjustments +--echo # Test Unicode->sjis conversion +--echo # +--source include/ctype_utf8_table.inc +SELECT HEX(a), HEX(CONVERT(a using sjis)) as b FROM t1 HAVING b<>'3F' ORDER BY BINARY a; +DROP TABLE t1; + + +--echo # +--echo # End of 5.5 tests +--echo # + + +--echo # +--echo # Start of 5.6 tests +--echo # + +--echo # +--echo # WL#3664 WEIGHT_STRING +--echo # + +set names sjis; +--source include/weight_string.inc +--source include/weight_string_l1.inc +--source include/weight_string_8140.inc + + +set collation_connection=sjis_bin; +--source include/weight_string.inc +--source include/weight_string_l1.inc +--source include/weight_string_8140.inc + +--echo # +--echo # End of 5.6 tests +--echo # + +--echo # +--echo # Start of 10.0 tests +--echo # + +let $ctype_unescape_combinations=selected; +--source include/ctype_unescape.inc + +--character_set sjis +SET NAMES sjis; +--source include/ctype_E05C.inc + + +--echo # +--echo # End of 10.0 tests +--echo # + +--echo # +--echo # Start of 10.2 tests +--echo # + +--echo # +--echo # MDEV-9842 LOAD DATA INFILE does not work well with a TEXT column when using sjis +--echo # +CREATE TABLE t1 (a TEXT CHARACTER SET sjis); +LOAD DATA INFILE '../../std_data/loaddata/mdev9842.txt' INTO TABLE t1 CHARACTER SET sjis; +SELECT HEX(a) FROM t1; +SELECT a=CONCAT('x', REPEAT(_sjis 0x835C, 200)) FROM t1; +DROP TABLE t1; + +--echo # +--echo # MDEV-9711 NO PAD Collatons +--echo # +SET character_set_connection=sjis; +let $coll='sjis_japanese_nopad_ci'; +let $coll_pad='sjis_japanese_ci'; +--source include/ctype_pad_all_engines.inc + +let $coll='sjis_nopad_bin'; +let $coll_pad='sjis_bin'; +--source include/ctype_pad_all_engines.inc + +--echo # +--echo # End of 10.2 tests +--echo # |