-- 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 t1 (code) SELECT head FROM head WHERE (head BETWEEN 'A1' AND 'DF'); DROP TEMPORARY TABLE head, tail; SHOW CREATE TABLE t1; UPDATE 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 #