# # Bug #11755818 LIKE DOESN'T MATCH WHEN CP932_BIN/SJIS_BIN COLLATIONS ARE # USED. # SET @old_character_set_client= @@character_set_client; SET @old_character_set_connection= @@character_set_connection; SET @old_character_set_results= @@character_set_results; SET character_set_client= 'utf8'; SET character_set_connection= 'utf8'; SET character_set_results= 'utf8'; CREATE TABLE t1 (a VARCHAR(10) COLLATE cp932_bin); INSERT INTO t1 VALUES('カカ'); SELECT * FROM t1 WHERE a LIKE '%カ'; a カカ SELECT * FROM t1 WHERE a LIKE '_カ'; a カカ SELECT * FROM t1 WHERE a LIKE '%_カ'; a カカ ALTER TABLE t1 MODIFY a VARCHAR(100) COLLATE sjis_bin; SELECT * FROM t1 WHERE a LIKE '%カ'; a カカ SELECT * FROM t1 WHERE a LIKE '_カ'; a カカ SELECT * FROM t1 WHERE a LIKE '%_カ'; a カカ DROP TABLE t1; SET @@character_set_client= @old_character_set_client; SET @@character_set_connection= @old_character_set_connection; SET @@character_set_results= @old_character_set_results; # # Start of 10.2 tests # # # MDEV-9711 NO PAD Collatons # SET character_set_connection=cp932; SET DEFAULT_STORAGE_ENGINE=MyISAM; # # Start of ctype_pad.inc # # # Unique indexes # CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'cp932_japanese_nopad_ci'; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(10) NOT NULL, PRIMARY KEY (`a`) ) ENGINE=MyISAM DEFAULT CHARSET=cp932 COLLATE=cp932_japanese_nopad_ci INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a '); SELECT HEX(a), a FROM t1 ORDER BY a; HEX(a) a 2061 a 206120 a 61202020 a 616263 abc 6162632020 abc SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a; HEX(a) a 2061 a 206120 a 61202020 a 616263 abc 6162632020 abc SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC; HEX(a) a 6162632020 abc 616263 abc 61202020 a 206120 a 2061 a # # UNION # CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'cp932_japanese_nopad_ci'; INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a '); SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td; HEX(a) a 2061 a 206120 a 6120 a 61202020 a 616263 abc 61626320 abc 6162632020 abc DROP TABLE t1; DROP TABLE t2; # # DISTINCT, COUNT, MAX # CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'cp932_japanese_nopad_ci'; INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a '); SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td; HEX(a) a 2061 a 206120 a 61 a 612020 a 61202020 a SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a; COUNT(DISTINCT a) 5 SELECT HEX(MAX(a)), MAX(a) FROM t1; HEX(MAX(a)) MAX(a) 61202020 a # # GROUP BY # CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'cp932_japanese_nopad_ci'; INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er '); SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td; HEX(a) cnt 6161 1 61612020 1 6162 2 DROP TABLE t2; # # Weights # SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1; HEX(WEIGHT_STRING(a AS CHAR(10))) 41000000000000000000 41202000000000000000 20410000000000000000 20412000000000000000 41202020000000000000 DROP TABLE t1; # # IF, CASE, LEAST # SELECT IF('abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ', 'pad', 'nopad'); IF('abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ', 'pad', 'nopad') nopad SELECT CASE 'abc' COLLATE 'cp932_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; CASE 'abc' COLLATE 'cp932_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END nopad SELECT CASE WHEN 'abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; CASE WHEN 'abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END nopad SELECT HEX(LEAST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')); HEX(LEAST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')) 61626320 SELECT HEX(GREATEST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')); HEX(GREATEST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')) 6162632020 # # Collation mix # CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'cp932_japanese_ci'; INSERT INTO t1 VALUES ('a'),('a '); SELECT COUNT(*) FROM t1 WHERE a='a'; COUNT(*) 2 SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_japanese_ci'; COUNT(*) 2 SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_japanese_nopad_ci'; COUNT(*) 1 ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'cp932_japanese_nopad_ci'; SELECT COUNT(*) FROM t1 WHERE a='a'; COUNT(*) 1 SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_japanese_ci'; COUNT(*) 2 SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_japanese_nopad_ci'; COUNT(*) 1 DROP TABLE t1; # # End of ctype_pad.inc # SET DEFAULT_STORAGE_ENGINE=HEAP; # # Start of ctype_pad.inc # # # Unique indexes # CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'cp932_japanese_nopad_ci'; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(10) NOT NULL, PRIMARY KEY (`a`) ) ENGINE=MEMORY DEFAULT CHARSET=cp932 COLLATE=cp932_japanese_nopad_ci INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a '); SELECT HEX(a), a FROM t1 ORDER BY a; HEX(a) a 2061 a 206120 a 61202020 a 616263 abc 6162632020 abc SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a; HEX(a) a 2061 a 206120 a 61202020 a 616263 abc 6162632020 abc SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC; HEX(a) a 6162632020 abc 616263 abc 61202020 a 206120 a 2061 a # # UNION # CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'cp932_japanese_nopad_ci'; INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a '); SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td; HEX(a) a 2061 a 206120 a 6120 a 61202020 a 616263 abc 61626320 abc 6162632020 abc DROP TABLE t1; DROP TABLE t2; # # DISTINCT, COUNT, MAX # CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'cp932_japanese_nopad_ci'; INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a '); SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td; HEX(a) a 2061 a 206120 a 61 a 612020 a 61202020 a SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a; COUNT(DISTINCT a) 5 SELECT HEX(MAX(a)), MAX(a) FROM t1; HEX(MAX(a)) MAX(a) 61202020 a # # GROUP BY # CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'cp932_japanese_nopad_ci'; INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er '); SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td; HEX(a) cnt 6161 1 61612020 1 6162 2 DROP TABLE t2; # # Weights # SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1; HEX(WEIGHT_STRING(a AS CHAR(10))) 41000000000000000000 41202000000000000000 20410000000000000000 20412000000000000000 41202020000000000000 DROP TABLE t1; # # IF, CASE, LEAST # SELECT IF('abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ', 'pad', 'nopad'); IF('abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ', 'pad', 'nopad') nopad SELECT CASE 'abc' COLLATE 'cp932_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; CASE 'abc' COLLATE 'cp932_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END nopad SELECT CASE WHEN 'abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; CASE WHEN 'abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END nopad SELECT HEX(LEAST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')); HEX(LEAST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')) 61626320 SELECT HEX(GREATEST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')); HEX(GREATEST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')) 6162632020 # # Collation mix # CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'cp932_japanese_ci'; INSERT INTO t1 VALUES ('a'),('a '); SELECT COUNT(*) FROM t1 WHERE a='a'; COUNT(*) 2 SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_japanese_ci'; COUNT(*) 2 SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_japanese_nopad_ci'; COUNT(*) 1 ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'cp932_japanese_nopad_ci'; SELECT COUNT(*) FROM t1 WHERE a='a'; COUNT(*) 1 SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_japanese_ci'; COUNT(*) 2 SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_japanese_nopad_ci'; COUNT(*) 1 DROP TABLE t1; # # End of ctype_pad.inc # SET DEFAULT_STORAGE_ENGINE=Default; SET DEFAULT_STORAGE_ENGINE=MyISAM; # # Start of ctype_pad.inc # # # Unique indexes # CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'cp932_nopad_bin'; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(10) NOT NULL, PRIMARY KEY (`a`) ) ENGINE=MyISAM DEFAULT CHARSET=cp932 COLLATE=cp932_nopad_bin INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a '); SELECT HEX(a), a FROM t1 ORDER BY a; HEX(a) a 2061 a 206120 a 61202020 a 616263 abc 6162632020 abc SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a; HEX(a) a 2061 a 206120 a 61202020 a 616263 abc 6162632020 abc SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC; HEX(a) a 6162632020 abc 616263 abc 61202020 a 206120 a 2061 a # # UNION # CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'cp932_nopad_bin'; INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a '); SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td; HEX(a) a 2061 a 206120 a 6120 a 61202020 a 616263 abc 61626320 abc 6162632020 abc DROP TABLE t1; DROP TABLE t2; # # DISTINCT, COUNT, MAX # CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'cp932_nopad_bin'; INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a '); SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td; HEX(a) a 2061 a 206120 a 61 a 612020 a 61202020 a SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a; COUNT(DISTINCT a) 5 SELECT HEX(MAX(a)), MAX(a) FROM t1; HEX(MAX(a)) MAX(a) 61202020 a # # GROUP BY # CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'cp932_nopad_bin'; INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er '); SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td; HEX(a) cnt 6161 1 61612020 1 6162 2 DROP TABLE t2; # # Weights # SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1; HEX(WEIGHT_STRING(a AS CHAR(10))) 61000000000000000000 61202000000000000000 20610000000000000000 20612000000000000000 61202020000000000000 DROP TABLE t1; # # IF, CASE, LEAST # SELECT IF('abc' COLLATE 'cp932_nopad_bin' = 'abc ', 'pad', 'nopad'); IF('abc' COLLATE 'cp932_nopad_bin' = 'abc ', 'pad', 'nopad') nopad SELECT CASE 'abc' COLLATE 'cp932_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; CASE 'abc' COLLATE 'cp932_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END nopad SELECT CASE WHEN 'abc' COLLATE 'cp932_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; CASE WHEN 'abc' COLLATE 'cp932_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END nopad SELECT HEX(LEAST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')); HEX(LEAST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')) 61626320 SELECT HEX(GREATEST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')); HEX(GREATEST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')) 6162632020 # # Collation mix # CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'cp932_bin'; INSERT INTO t1 VALUES ('a'),('a '); SELECT COUNT(*) FROM t1 WHERE a='a'; COUNT(*) 2 SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_bin'; COUNT(*) 2 SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_nopad_bin'; COUNT(*) 1 ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'cp932_nopad_bin'; SELECT COUNT(*) FROM t1 WHERE a='a'; COUNT(*) 1 SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_bin'; COUNT(*) 2 SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_nopad_bin'; COUNT(*) 1 DROP TABLE t1; # # End of ctype_pad.inc # SET DEFAULT_STORAGE_ENGINE=HEAP; # # Start of ctype_pad.inc # # # Unique indexes # CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'cp932_nopad_bin'; SHOW CREATE TABLE t1; Table Create Table t1 CREATE TABLE `t1` ( `a` varchar(10) NOT NULL, PRIMARY KEY (`a`) ) ENGINE=MEMORY DEFAULT CHARSET=cp932 COLLATE=cp932_nopad_bin INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a '); SELECT HEX(a), a FROM t1 ORDER BY a; HEX(a) a 2061 a 206120 a 61202020 a 616263 abc 6162632020 abc SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a; HEX(a) a 2061 a 206120 a 61202020 a 616263 abc 6162632020 abc SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC; HEX(a) a 6162632020 abc 616263 abc 61202020 a 206120 a 2061 a # # UNION # CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'cp932_nopad_bin'; INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a '); SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td; HEX(a) a 2061 a 206120 a 6120 a 61202020 a 616263 abc 61626320 abc 6162632020 abc DROP TABLE t1; DROP TABLE t2; # # DISTINCT, COUNT, MAX # CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'cp932_nopad_bin'; INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a '); SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td; HEX(a) a 2061 a 206120 a 61 a 612020 a 61202020 a SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a; COUNT(DISTINCT a) 5 SELECT HEX(MAX(a)), MAX(a) FROM t1; HEX(MAX(a)) MAX(a) 61202020 a # # GROUP BY # CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'cp932_nopad_bin'; INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er '); SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td; HEX(a) cnt 6161 1 61612020 1 6162 2 DROP TABLE t2; # # Weights # SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1; HEX(WEIGHT_STRING(a AS CHAR(10))) 61000000000000000000 61202000000000000000 20610000000000000000 20612000000000000000 61202020000000000000 DROP TABLE t1; # # IF, CASE, LEAST # SELECT IF('abc' COLLATE 'cp932_nopad_bin' = 'abc ', 'pad', 'nopad'); IF('abc' COLLATE 'cp932_nopad_bin' = 'abc ', 'pad', 'nopad') nopad SELECT CASE 'abc' COLLATE 'cp932_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; CASE 'abc' COLLATE 'cp932_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END nopad SELECT CASE WHEN 'abc' COLLATE 'cp932_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; CASE WHEN 'abc' COLLATE 'cp932_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END nopad SELECT HEX(LEAST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')); HEX(LEAST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')) 61626320 SELECT HEX(GREATEST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')); HEX(GREATEST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')) 6162632020 # # Collation mix # CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'cp932_bin'; INSERT INTO t1 VALUES ('a'),('a '); SELECT COUNT(*) FROM t1 WHERE a='a'; COUNT(*) 2 SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_bin'; COUNT(*) 2 SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_nopad_bin'; COUNT(*) 1 ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'cp932_nopad_bin'; SELECT COUNT(*) FROM t1 WHERE a='a'; COUNT(*) 1 SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_bin'; COUNT(*) 2 SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'cp932_nopad_bin'; COUNT(*) 1 DROP TABLE t1; # # End of ctype_pad.inc # SET DEFAULT_STORAGE_ENGINE=Default; # # End of 10.2 tests # # # General tests # SET NAMES cp932; drop table if exists t1; create table t1 select repeat('a',10) as c1; delete from t1; insert into t1 values (0x00),(0x01),(0x02),(0x03),(0x04),(0x05),(0x06),(0x07),(0x08),(0x09),(0x0A),(0x0B),(0x0C),(0x0D),(0x0E),(0x0F); insert into t1 values (0x10),(0x11),(0x12),(0x13),(0x14),(0x15),(0x16),(0x17),(0x18),(0x19),(0x1A),(0x1B),(0x1C),(0x1D),(0x1E),(0x1F); insert into t1 values (0x20),(0x21),(0x22),(0x23),(0x24),(0x25),(0x26),(0x27),(0x28),(0x29),(0x2A),(0x2B),(0x2C),(0x2D),(0x2E),(0x2F); insert into t1 values (0x30),(0x31),(0x32),(0x33),(0x34),(0x35),(0x36),(0x37),(0x38),(0x39),(0x3A),(0x3B),(0x3C),(0x3D),(0x3E),(0x3F); insert into t1 values (0x40),(0x41),(0x42),(0x43),(0x44),(0x45),(0x46),(0x47),(0x48),(0x49),(0x4A),(0x4B),(0x4C),(0x4D),(0x4E),(0x4F); insert into t1 values (0x50),(0x51),(0x52),(0x53),(0x54),(0x55),(0x56),(0x57),(0x58),(0x59),(0x5A),(0x5B),(0x5C),(0x5D),(0x5E),(0x5F); insert into t1 values (0x60),(0x61),(0x62),(0x63),(0x64),(0x65),(0x66),(0x67),(0x68),(0x69),(0x6A),(0x6B),(0x6C),(0x6D),(0x6E),(0x6F); insert into t1 values (0x70),(0x71),(0x72),(0x73),(0x74),(0x75),(0x76),(0x77),(0x78),(0x79),(0x7A),(0x7B),(0x7C),(0x7D),(0x7E),(0x7F); create view v1 as select c1, if(c1 < 0x20 OR c1=0x7F, concat('<',hex(c1),'>'),c1) as name from t1; select column_name, collation_name from information_schema.columns where table_schema=database() and table_name='v1'; column_name collation_name c1 cp932_japanese_ci name cp932_japanese_ci SELECT GROUP_CONCAT(name ORDER BY binary c1 SEPARATOR ''), GROUP_CONCAT(hex(c1) ORDER BY BINARY c1) FROM v1 GROUP BY c1; GROUP_CONCAT(name ORDER BY binary c1 SEPARATOR '') GROUP_CONCAT(hex(c1) ORDER BY BINARY c1) <00> 00 <01> 01 <02> 02 <03> 03 <04> 04 <05> 05 <06> 06 <07> 07 <08> 08 <09> 09 <0A> 0A <0B> 0B <0C> 0C <0D> 0D <0E> 0E <0F> 0F <10> 10 <11> 11 <12> 12 <13> 13 <14> 14 <15> 15 <16> 16 <17> 17 <18> 18 <19> 19 <1A> 1A <1B> 1B <1C> 1C <1D> 1D <1E> 1E <1F> 1F 20 ! 21 " 22 # 23 $ 24 % 25 & 26 ' 27 ( 28 ) 29 * 2A + 2B , 2C - 2D . 2E / 2F 0 30 1 31 2 32 3 33 4 34 5 35 6 36 7 37 8 38 9 39 : 3A ; 3B < 3C = 3D > 3E ? 3F @ 40 Aa 41,61 Bb 42,62 Cc 43,63 Dd 44,64 Ee 45,65 Ff 46,66 Gg 47,67 Hh 48,68 Ii 49,69 Jj 4A,6A Kk 4B,6B Ll 4C,6C Mm 4D,6D Nn 4E,6E Oo 4F,6F Pp 50,70 Qq 51,71 Rr 52,72 Ss 53,73 Tt 54,74 Uu 55,75 Vv 56,76 Ww 57,77 Xx 58,78 Yy 59,79 Zz 5A,7A [ 5B \ 5C ] 5D ^ 5E _ 5F ` 60 { 7B | 7C } 7D ~ 7E <7F> 7F drop table t1; drop view v1; SET NAMES cp932 COLLATE cp932_bin; drop table if exists t1; create table t1 select repeat('a',10) as c1; delete from t1; insert into t1 values (0x00),(0x01),(0x02),(0x03),(0x04),(0x05),(0x06),(0x07),(0x08),(0x09),(0x0A),(0x0B),(0x0C),(0x0D),(0x0E),(0x0F); insert into t1 values (0x10),(0x11),(0x12),(0x13),(0x14),(0x15),(0x16),(0x17),(0x18),(0x19),(0x1A),(0x1B),(0x1C),(0x1D),(0x1E),(0x1F); insert into t1 values (0x20),(0x21),(0x22),(0x23),(0x24),(0x25),(0x26),(0x27),(0x28),(0x29),(0x2A),(0x2B),(0x2C),(0x2D),(0x2E),(0x2F); insert into t1 values (0x30),(0x31),(0x32),(0x33),(0x34),(0x35),(0x36),(0x37),(0x38),(0x39),(0x3A),(0x3B),(0x3C),(0x3D),(0x3E),(0x3F); insert into t1 values (0x40),(0x41),(0x42),(0x43),(0x44),(0x45),(0x46),(0x47),(0x48),(0x49),(0x4A),(0x4B),(0x4C),(0x4D),(0x4E),(0x4F); insert into t1 values (0x50),(0x51),(0x52),(0x53),(0x54),(0x55),(0x56),(0x57),(0x58),(0x59),(0x5A),(0x5B),(0x5C),(0x5D),(0x5E),(0x5F); insert into t1 values (0x60),(0x61),(0x62),(0x63),(0x64),(0x65),(0x66),(0x67),(0x68),(0x69),(0x6A),(0x6B),(0x6C),(0x6D),(0x6E),(0x6F); insert into t1 values (0x70),(0x71),(0x72),(0x73),(0x74),(0x75),(0x76),(0x77),(0x78),(0x79),(0x7A),(0x7B),(0x7C),(0x7D),(0x7E),(0x7F); create view v1 as select c1, if(c1 < 0x20 OR c1=0x7F, concat('<',hex(c1),'>'),c1) as name from t1; select column_name, collation_name from information_schema.columns where table_schema=database() and table_name='v1'; column_name collation_name c1 cp932_bin name cp932_bin SELECT GROUP_CONCAT(name ORDER BY binary c1 SEPARATOR ''), GROUP_CONCAT(hex(c1) ORDER BY BINARY c1) FROM v1 GROUP BY c1; GROUP_CONCAT(name ORDER BY binary c1 SEPARATOR '') GROUP_CONCAT(hex(c1) ORDER BY BINARY c1) <00> 00 <01> 01 <02> 02 <03> 03 <04> 04 <05> 05 <06> 06 <07> 07 <08> 08 <09> 09 <0A> 0A <0B> 0B <0C> 0C <0D> 0D <0E> 0E <0F> 0F <10> 10 <11> 11 <12> 12 <13> 13 <14> 14 <15> 15 <16> 16 <17> 17 <18> 18 <19> 19 <1A> 1A <1B> 1B <1C> 1C <1D> 1D <1E> 1E <1F> 1F 20 ! 21 " 22 # 23 $ 24 % 25 & 26 ' 27 ( 28 ) 29 * 2A + 2B , 2C - 2D . 2E / 2F 0 30 1 31 2 32 3 33 4 34 5 35 6 36 7 37 8 38 9 39 : 3A ; 3B < 3C = 3D > 3E ? 3F @ 40 A 41 B 42 C 43 D 44 E 45 F 46 G 47 H 48 I 49 J 4A K 4B L 4C M 4D N 4E O 4F P 50 Q 51 R 52 S 53 T 54 U 55 V 56 W 57 X 58 Y 59 Z 5A [ 5B \ 5C ] 5D ^ 5E _ 5F ` 60 a 61 b 62 c 63 d 64 e 65 f 66 g 67 h 68 i 69 j 6A k 6B l 6C m 6D n 6E o 6F p 70 q 71 r 72 s 73 t 74 u 75 v 76 w 77 x 78 y 79 z 7A { 7B | 7C } 7D ~ 7E <7F> 7F drop table t1; drop view v1; # # Start of 10.5 tests # # # MDEV-22625 SIGSEGV in intern_find_sys_var (optimized builds) # SET NAMES cp932; SET @seq=_cp932 0x81AD; # # SET STATEMENT (bad|good.bad|bad.good)=1 # EXECUTE IMMEDIATE CONCAT('SET STATEMENT ',@seq, '=1 SELECT 1'); ERROR HY000: Invalid cp932 character string: '\x81\xAD' EXECUTE IMMEDIATE CONCAT('SET STATEMENT ',@seq, '.a=1 SELECT 1'); ERROR HY000: Invalid cp932 character string: '\x81\xAD' EXECUTE IMMEDIATE CONCAT('SET STATEMENT a.',@seq, '=1 SELECT 1'); ERROR HY000: Invalid cp932 character string: '\x81\xAD' # # SET SESSION (bad|good.bad|bad.good)=1 # EXECUTE IMMEDIATE CONCAT('SET SESSION ',@seq, '=1 SELECT 1'); ERROR HY000: Invalid cp932 character string: '\x81\xAD' EXECUTE IMMEDIATE CONCAT('SET SESSION ',@seq, '.a=1 SELECT 1'); ERROR HY000: Invalid cp932 character string: '\x81\xAD' EXECUTE IMMEDIATE CONCAT('SET SESSION a.',@seq, '=1 SELECT 1'); ERROR HY000: Invalid cp932 character string: '\x81\xAD' # # SET (bad|good.bad|bad.good)=1 # EXECUTE IMMEDIATE CONCAT('SET ', @seq, '=1'); ERROR HY000: Invalid cp932 character string: '\x81\xAD' EXECUTE IMMEDIATE CONCAT('SET ', @seq, '.a=1'); ERROR HY000: Invalid cp932 character string: '\x81\xAD' EXECUTE IMMEDIATE CONCAT('SET a.', @seq, '=1'); ERROR HY000: Invalid cp932 character string: '\x81\xAD' # # Oracle SP call: BEGIN (bad|good.bad|bad.good)(params); END # SET sql_mode=ORACLE; EXECUTE IMMEDIATE CONCAT('BEGIN ',@seq, '(1); END;'); ERROR HY000: Invalid cp932 character string: '\x81\xAD' EXECUTE IMMEDIATE CONCAT('BEGIN ',@seq, '.a(1); END;'); ERROR HY000: Invalid cp932 character string: '\x81\xAD' EXECUTE IMMEDIATE CONCAT('BEGIN a.',@seq, '(1); END;'); ERROR HY000: Invalid cp932 character string: '\x81\xAD' # # Oracle assignment: (bad|good.bad|bad.good):= value # EXECUTE IMMEDIATE CONCAT(@seq, ':=1'); ERROR HY000: Invalid cp932 character string: '\x81\xAD' EXECUTE IMMEDIATE CONCAT(@seq, '.a:=1'); ERROR HY000: Invalid cp932 character string: '\x81\xAD' EXECUTE IMMEDIATE CONCAT('a.', @seq, ':=1'); ERROR HY000: Invalid cp932 character string: '\x81\xAD' SET sql_mode=DEFAULT; # # End of 10.5 tests #