1SET TIME_ZONE = '+03:00'; 2DROP TABLE IF EXISTS t1; 3# 4# Start of 5.5 tests 5# 6SET NAMES latin1; 7SET character_set_connection=utf32; 8select hex('a'), hex('a '); 9hex('a') hex('a ') 1000000061 0000006100000020 11select 'a' = 'a', 'a' = 'a ', 'a ' = 'a'; 12'a' = 'a' 'a' = 'a ' 'a ' = 'a' 131 1 1 14select 'a\0' = 'a', 'a\0' < 'a', 'a\0' > 'a'; 15'a\0' = 'a' 'a\0' < 'a' 'a\0' > 'a' 160 1 0 17select 'a' = 'a\0', 'a' < 'a\0', 'a' > 'a\0'; 18'a' = 'a\0' 'a' < 'a\0' 'a' > 'a\0' 190 0 1 20select 'a\0' = 'a ', 'a\0' < 'a ', 'a\0' > 'a '; 21'a\0' = 'a ' 'a\0' < 'a ' 'a\0' > 'a ' 220 1 0 23select 'a ' = 'a\0', 'a ' < 'a\0', 'a ' > 'a\0'; 24'a ' = 'a\0' 'a ' < 'a\0' 'a ' > 'a\0' 250 0 1 26select 'a a' > 'a', 'a \0' < 'a'; 27'a a' > 'a' 'a \0' < 'a' 281 1 29select binary 'a a' > 'a', binary 'a \0' > 'a', binary 'a\0' > 'a'; 30binary 'a a' > 'a' binary 'a \0' > 'a' binary 'a\0' > 'a' 311 1 1 32select hex(_utf32 0x44); 33hex(_utf32 0x44) 3400000044 35select hex(_utf32 0x3344); 36hex(_utf32 0x3344) 3700003344 38select hex(_utf32 0x103344); 39hex(_utf32 0x103344) 4000103344 41select hex(_utf32 X'44'); 42hex(_utf32 X'44') 4300000044 44select hex(_utf32 X'3344'); 45hex(_utf32 X'3344') 4600003344 47select hex(_utf32 X'103344'); 48hex(_utf32 X'103344') 4900103344 50CREATE TABLE t1 (word VARCHAR(64), word2 CHAR(64)) CHARACTER SET utf32; 51INSERT INTO t1 VALUES (_koi8r 0xF2, _koi8r 0xF2), (X'2004',X'2004'); 52SELECT hex(word) FROM t1 ORDER BY word; 53hex(word) 5400000420 5500002004 56SELECT hex(word2) FROM t1 ORDER BY word2; 57hex(word2) 5800000420 5900002004 60DELETE FROM t1; 61INSERT INTO t1 VALUES 62(X'000004200000002000000020',X'000004200000002000000020'), 63(X'000020040000002000000020',X'000020040000002000000020'); 64SELECT hex(word) FROM t1 ORDER BY word; 65hex(word) 66000004200000002000000020 67000020040000002000000020 68SELECT hex(word2) FROM t1 ORDER BY word2; 69hex(word2) 7000000420 7100002004 72DROP TABLE t1; 73SELECT hex(LPAD(_utf32 X'0420',10,_utf32 X'0421')); 74hex(LPAD(_utf32 X'0420',10,_utf32 X'0421')) 7500000421000004210000042100000421000004210000042100000421000004210000042100000420 76SELECT hex(LPAD(_utf32 X'0420',10,_utf32 X'0000042100000422')); 77hex(LPAD(_utf32 X'0420',10,_utf32 X'0000042100000422')) 7800000421000004220000042100000422000004210000042200000421000004220000042100000420 79SELECT hex(LPAD(_utf32 X'0420',10,_utf32 X'000004210000042200000423')); 80hex(LPAD(_utf32 X'0420',10,_utf32 X'000004210000042200000423')) 8100000421000004220000042300000421000004220000042300000421000004220000042300000420 82SELECT hex(LPAD(_utf32 X'000004200000042100000422000004230000042400000425000004260000042700000428000004290000042A0000042B',10,_utf32 X'000004210000042200000423')); 83hex(LPAD(_utf32 X'000004200000042100000422000004230000042400000425000004260000042700000428000004290000042A0000042B',10,_utf32 X'000004210000042200000423')) 8400000420000004210000042200000423000004240000042500000426000004270000042800000429 85SELECT hex(RPAD(_utf32 X'0420',10,_utf32 X'0421')); 86hex(RPAD(_utf32 X'0420',10,_utf32 X'0421')) 8700000420000004210000042100000421000004210000042100000421000004210000042100000421 88SELECT hex(RPAD(_utf32 X'0420',10,_utf32 X'0000042100000422')); 89hex(RPAD(_utf32 X'0420',10,_utf32 X'0000042100000422')) 9000000420000004210000042200000421000004220000042100000422000004210000042200000421 91SELECT hex(RPAD(_utf32 X'0420',10,_utf32 X'000004210000042200000423')); 92hex(RPAD(_utf32 X'0420',10,_utf32 X'000004210000042200000423')) 9300000420000004210000042200000423000004210000042200000423000004210000042200000423 94SELECT hex(RPAD(_utf32 X'000004200000042100000422000004230000042400000425000004260000042700000428000004290000042A0000042B',10,_utf32 X'000004210000042200000423')); 95hex(RPAD(_utf32 X'000004200000042100000422000004230000042400000425000004260000042700000428000004290000042A0000042B',10,_utf32 X'000004210000042200000423')) 9600000420000004210000042200000423000004240000042500000426000004270000042800000429 97CREATE TABLE t1 SELECT 98LPAD(_utf32 X'0420',10,_utf32 X'0421') l, 99RPAD(_utf32 X'0420',10,_utf32 X'0421') r; 100SHOW CREATE TABLE t1; 101Table Create Table 102t1 CREATE TABLE `t1` ( 103 `l` varchar(10) CHARACTER SET utf32 DEFAULT NULL, 104 `r` varchar(10) CHARACTER SET utf32 DEFAULT NULL 105) ENGINE=MyISAM DEFAULT CHARSET=latin1 106select hex(l), hex(r) from t1; 107hex(l) hex(r) 10800000421000004210000042100000421000004210000042100000421000004210000042100000420 00000420000004210000042100000421000004210000042100000421000004210000042100000421 109DROP TABLE t1; 110create table t1 (f1 char(30)); 111insert into t1 values ("103000"), ("22720000"), ("3401200"), ("78000"); 112select lpad(f1, 12, "-o-/") from t1; 113lpad(f1, 12, "-o-/") 114-o-/-o103000 115-o-/22720000 116-o-/-3401200 117-o-/-o-78000 118drop table t1; 119SET NAMES latin1; 120SET character_set_connection=utf32; 121select @@collation_connection; 122@@collation_connection 123utf32_general_ci 124create table t1 as select repeat(' ',10) as a union select null; 125alter table t1 add key(a); 126show create table t1; 127Table Create Table 128t1 CREATE TABLE `t1` ( 129 `a` varchar(10) CHARACTER SET utf32 DEFAULT NULL, 130 KEY `a` (`a`) 131) ENGINE=MyISAM DEFAULT CHARSET=latin1 132insert into t1 values ("a"),("abc"),("abcd"),("hello"),("test"); 133explain select * from t1 where a like 'abc%'; 134id select_type table type possible_keys key key_len ref rows Extra 1351 SIMPLE t1 range a a 43 NULL 2 Using where; Using index 136explain select * from t1 where a like concat('abc','%'); 137id select_type table type possible_keys key key_len ref rows Extra 1381 SIMPLE t1 range a a 43 NULL 2 Using where; Using index 139select * from t1 where a like "abc%"; 140a 141abc 142abcd 143select * from t1 where a like concat("abc","%"); 144a 145abc 146abcd 147select * from t1 where a like "ABC%"; 148a 149abc 150abcd 151select * from t1 where a like "test%"; 152a 153test 154select * from t1 where a like "te_t"; 155a 156test 157select * from t1 where a like "%a%"; 158a 159a 160abc 161abcd 162select * from t1 where a like "%abcd%"; 163a 164abcd 165select * from t1 where a like "%abc\d%"; 166a 167abcd 168drop table t1; 169select 'AA' like 'AA'; 170'AA' like 'AA' 1711 172select 'AA' like 'A%A'; 173'AA' like 'A%A' 1741 175select 'AA' like 'A%%A'; 176'AA' like 'A%%A' 1771 178select 'AA' like 'AA%'; 179'AA' like 'AA%' 1801 181select 'AA' like '%AA%'; 182'AA' like '%AA%' 1831 184select 'AA' like '%A'; 185'AA' like '%A' 1861 187select 'AA' like '%AA'; 188'AA' like '%AA' 1891 190select 'AA' like 'A%A%'; 191'AA' like 'A%A%' 1921 193select 'AA' like '_%_%'; 194'AA' like '_%_%' 1951 196select 'AA' like '%A%A'; 197'AA' like '%A%A' 1981 199select 'AAA'like 'A%A%A'; 200'AAA'like 'A%A%A' 2011 202select 'AZ' like 'AZ'; 203'AZ' like 'AZ' 2041 205select 'AZ' like 'A%Z'; 206'AZ' like 'A%Z' 2071 208select 'AZ' like 'A%%Z'; 209'AZ' like 'A%%Z' 2101 211select 'AZ' like 'AZ%'; 212'AZ' like 'AZ%' 2131 214select 'AZ' like '%AZ%'; 215'AZ' like '%AZ%' 2161 217select 'AZ' like '%Z'; 218'AZ' like '%Z' 2191 220select 'AZ' like '%AZ'; 221'AZ' like '%AZ' 2221 223select 'AZ' like 'A%Z%'; 224'AZ' like 'A%Z%' 2251 226select 'AZ' like '_%_%'; 227'AZ' like '_%_%' 2281 229select 'AZ' like '%A%Z'; 230'AZ' like '%A%Z' 2311 232select 'AZ' like 'A_'; 233'AZ' like 'A_' 2341 235select 'AZ' like '_Z'; 236'AZ' like '_Z' 2371 238select 'AMZ'like 'A%M%Z'; 239'AMZ'like 'A%M%Z' 2401 241SET NAMES utf8; 242SET character_set_connection=utf32; 243CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET utf32); 244INSERT INTO t1 VALUES ('фыва'),('Фыва'),('фЫва'),('фыВа'),('фывА'),('ФЫВА'); 245INSERT INTO t1 VALUES ('фывапролдж'),('Фывапролдж'),('фЫвапролдж'),('фыВапролдж'); 246INSERT INTO t1 VALUES ('фывАпролдж'),('фываПролдж'),('фывапРолдж'),('фывапрОлдж'); 247INSERT INTO t1 VALUES ('фывапроЛдж'),('фывапролДж'),('фывапролдЖ'),('ФЫВАПРОЛДЖ'); 248SELECT * FROM t1 WHERE a LIKE '%фЫва%' ORDER BY BINARY a; 249a 250ФЫВА 251ФЫВАПРОЛДЖ 252Фыва 253Фывапролдж 254фЫва 255фЫвапролдж 256фыВа 257фыВапролдж 258фывА 259фывАпролдж 260фыва 261фываПролдж 262фывапРолдж 263фывапрОлдж 264фывапроЛдж 265фывапролДж 266фывапролдЖ 267фывапролдж 268SELECT * FROM t1 WHERE a LIKE '%фЫв%' ORDER BY BINARY a; 269a 270ФЫВА 271ФЫВАПРОЛДЖ 272Фыва 273Фывапролдж 274фЫва 275фЫвапролдж 276фыВа 277фыВапролдж 278фывА 279фывАпролдж 280фыва 281фываПролдж 282фывапРолдж 283фывапрОлдж 284фывапроЛдж 285фывапролДж 286фывапролдЖ 287фывапролдж 288SELECT * FROM t1 WHERE a LIKE 'фЫва%' ORDER BY BINARY a; 289a 290ФЫВА 291ФЫВАПРОЛДЖ 292Фыва 293Фывапролдж 294фЫва 295фЫвапролдж 296фыВа 297фыВапролдж 298фывА 299фывАпролдж 300фыва 301фываПролдж 302фывапРолдж 303фывапрОлдж 304фывапроЛдж 305фывапролДж 306фывапролдЖ 307фывапролдж 308SELECT * FROM t1 WHERE a LIKE 'фЫва%' COLLATE utf32_bin ORDER BY BINARY a; 309a 310фЫва 311фЫвапролдж 312DROP TABLE t1; 313CREATE TABLE t1 (word varchar(64) NOT NULL, PRIMARY KEY (word)) 314ENGINE=MyISAM CHARACTER SET utf32; 315INSERT INTO t1 (word) VALUES ("cat"); 316SELECT * FROM t1 WHERE word LIKE "c%"; 317word 318cat 319SELECT * FROM t1 WHERE word LIKE "ca_"; 320word 321cat 322SELECT * FROM t1 WHERE word LIKE "cat"; 323word 324cat 325SELECT * FROM t1 WHERE word LIKE _utf32 x'0000006300000025'; 326word 327cat 328SELECT * FROM t1 WHERE word LIKE _utf32 x'00000063000000610000005F'; 329word 330cat 331DROP TABLE t1; 332select insert(_utf32 0x000000610000006200000063,10,2,_utf32 0x000000640000006500000066); 333insert(_utf32 0x000000610000006200000063,10,2,_utf32 0x000000640000006500000066) 334abc 335select insert(_utf32 0x000000610000006200000063,1,2,_utf32 0x000000640000006500000066); 336insert(_utf32 0x000000610000006200000063,1,2,_utf32 0x000000640000006500000066) 337defc 338SET NAMES latin1; 339CREATE TABLE t1 ( 340word VARCHAR(64), 341bar INT(11) default 0, 342PRIMARY KEY (word)) 343ENGINE=MyISAM 344CHARSET utf32 345COLLATE utf32_general_ci ; 346INSERT INTO t1 (word) VALUES ("aar"); 347INSERT INTO t1 (word) VALUES ("a"); 348INSERT INTO t1 (word) VALUES ("aardvar"); 349INSERT INTO t1 (word) VALUES ("aardvark"); 350INSERT INTO t1 (word) VALUES ("aardvara"); 351INSERT INTO t1 (word) VALUES ("aardvarz"); 352EXPLAIN SELECT * FROM t1 ORDER BY word; 353id select_type table type possible_keys key key_len ref rows Extra 3541 SIMPLE t1 ALL NULL NULL NULL NULL 6 Using filesort 355SELECT * FROM t1 ORDER BY word; 356word bar 357a 0 358aar 0 359aardvar 0 360aardvara 0 361aardvark 0 362aardvarz 0 363EXPLAIN SELECT word FROM t1 ORDER BY word; 364id select_type table type possible_keys key key_len ref rows Extra 3651 SIMPLE t1 index NULL PRIMARY 258 NULL 6 Using index 366SELECT word FROM t1 ORDER by word; 367word 368a 369aar 370aardvar 371aardvara 372aardvark 373aardvarz 374DROP TABLE t1; 375CREATE TABLE t1 ( 376word VARCHAR(64) , 377PRIMARY KEY (word)) 378ENGINE=MyISAM 379CHARSET utf32 380COLLATE utf32_general_ci; 381INSERT INTO t1 (word) VALUES ("aar"); 382INSERT INTO t1 (word) VALUES ("a"); 383INSERT INTO t1 (word) VALUES ("aardvar"); 384INSERT INTO t1 (word) VALUES ("aardvark"); 385INSERT INTO t1 (word) VALUES ("aardvara"); 386INSERT INTO t1 (word) VALUES ("aardvarz"); 387EXPLAIN SELECT * FROM t1 ORDER BY WORD; 388id select_type table type possible_keys key key_len ref rows Extra 3891 SIMPLE t1 index NULL PRIMARY 258 NULL 6 Using index 390SELECT * FROM t1 ORDER BY word; 391word 392a 393aar 394aardvar 395aardvara 396aardvark 397aardvarz 398DROP TABLE t1; 399CREATE TABLE t1 ( 400word TEXT, 401bar INT(11) AUTO_INCREMENT, 402PRIMARY KEY (bar)) 403ENGINE=MyISAM 404CHARSET utf32 405COLLATE utf32_general_ci ; 406INSERT INTO t1 (word) VALUES ("aar"); 407INSERT INTO t1 (word) VALUES ("a" ); 408INSERT INTO t1 (word) VALUES ("aardvar"); 409INSERT INTO t1 (word) VALUES ("aardvark"); 410INSERT INTO t1 (word) VALUES ("aardvara"); 411INSERT INTO t1 (word) VALUES ("aardvarz"); 412EXPLAIN SELECT * FROM t1 ORDER BY word; 413id select_type table type possible_keys key key_len ref rows Extra 4141 SIMPLE t1 ALL NULL NULL NULL NULL 6 Using filesort 415SELECT * FROM t1 ORDER BY word; 416word bar 417a 2 418aar 1 419aardvar 3 420aardvara 5 421aardvark 4 422aardvarz 6 423EXPLAIN SELECT word FROM t1 ORDER BY word; 424id select_type table type possible_keys key key_len ref rows Extra 4251 SIMPLE t1 ALL NULL NULL NULL NULL 6 Using filesort 426SELECT word FROM t1 ORDER BY word; 427word 428a 429aar 430aardvar 431aardvara 432aardvark 433aardvarz 434DROP TABLE t1; 435SELECT hex(cast(0xAA as char character set utf32)); 436hex(cast(0xAA as char character set utf32)) 437000000AA 438SELECT hex(convert(0xAA using utf32)); 439hex(convert(0xAA using utf32)) 440000000AA 441CREATE TABLE t1 (a char(10) character set utf32); 442INSERT INTO t1 VALUES (0x1),(0x11),(0x111),(0x1111),(0x11111); 443SELECT HEX(a) FROM t1; 444HEX(a) 44500000001 44600000011 44700000111 44800001111 44900011111 450DROP TABLE t1; 451CREATE TABLE t1 (a varchar(10) character set utf32); 452INSERT INTO t1 VALUES (0x1),(0x11),(0x111),(0x1111),(0x11111); 453SELECT HEX(a) FROM t1; 454HEX(a) 45500000001 45600000011 45700000111 45800001111 45900011111 460DROP TABLE t1; 461CREATE TABLE t1 (a text character set utf32); 462INSERT INTO t1 VALUES (0x1),(0x11),(0x111),(0x1111),(0x11111); 463SELECT HEX(a) FROM t1; 464HEX(a) 46500000001 46600000011 46700000111 46800001111 46900011111 470DROP TABLE t1; 471CREATE TABLE t1 (a mediumtext character set utf32); 472INSERT INTO t1 VALUES (0x1),(0x11),(0x111),(0x1111),(0x11111); 473SELECT HEX(a) FROM t1; 474HEX(a) 47500000001 47600000011 47700000111 47800001111 47900011111 480DROP TABLE t1; 481CREATE TABLE t1 (a longtext character set utf32); 482INSERT INTO t1 VALUES (0x1),(0x11),(0x111),(0x1111),(0x11111); 483SELECT HEX(a) FROM t1; 484HEX(a) 48500000001 48600000011 48700000111 48800001111 48900011111 490DROP TABLE t1; 491create table t1(a char(1)) default charset utf32; 492insert into t1 values ('a'),('b'),('c'); 493alter table t1 modify a char(5); 494select a, hex(a) from t1; 495a hex(a) 496a 00000061 497b 00000062 498c 00000063 499drop table t1; 500set @ivar= 1234; 501set @str1 = 'select ?'; 502set @str2 = convert(@str1 using utf32); 503prepare stmt1 from @str2; 504execute stmt1 using @ivar; 505? 5061234 507set names utf8; 508create table t1 (a enum('x','y','z') character set utf32); 509show create table t1; 510Table Create Table 511t1 CREATE TABLE `t1` ( 512 `a` enum('x','y','z') CHARACTER SET utf32 DEFAULT NULL 513) ENGINE=MyISAM DEFAULT CHARSET=latin1 514insert into t1 values ('x'); 515insert into t1 values ('y'); 516insert into t1 values ('z'); 517select a, hex(a) from t1 order by a; 518a hex(a) 519x 00000078 520y 00000079 521z 0000007A 522alter table t1 change a a enum('x','y','z','d','e','ä','ö','ü') character set utf32; 523show create table t1; 524Table Create Table 525t1 CREATE TABLE `t1` ( 526 `a` enum('x','y','z','d','e','ä','ö','ü') CHARACTER SET utf32 DEFAULT NULL 527) ENGINE=MyISAM DEFAULT CHARSET=latin1 528insert into t1 values ('D'); 529insert into t1 values ('E '); 530insert into t1 values ('ä'); 531insert into t1 values ('ö'); 532insert into t1 values ('ü'); 533select a, hex(a) from t1 order by a; 534a hex(a) 535x 00000078 536y 00000079 537z 0000007A 538d 00000064 539e 00000065 540ä 000000E4 541ö 000000F6 542ü 000000FC 543drop table t1; 544create table t1 (a set ('x','y','z','ä','ö','ü') character set utf32); 545show create table t1; 546Table Create Table 547t1 CREATE TABLE `t1` ( 548 `a` set('x','y','z','ä','ö','ü') CHARACTER SET utf32 DEFAULT NULL 549) ENGINE=MyISAM DEFAULT CHARSET=latin1 550insert into t1 values ('x'); 551insert into t1 values ('y'); 552insert into t1 values ('z'); 553insert into t1 values ('x,y'); 554insert into t1 values ('x,y,z,ä,ö,ü'); 555select a, hex(a) from t1 order by a; 556a hex(a) 557x 00000078 558y 00000079 559x,y 000000780000002C00000079 560z 0000007A 561x,y,z,ä,ö,ü 000000780000002C000000790000002C0000007A0000002C000000E40000002C000000F60000002C000000FC 562drop table t1; 563create table t1(a enum('a','b','c')) default character set utf32; 564insert into t1 values('a'),('b'),('c'); 565alter table t1 add b char(1); 566show warnings; 567Level Code Message 568select * from t1 order by a; 569a b 570a NULL 571b NULL 572c NULL 573drop table t1; 574SET NAMES latin1; 575SET collation_connection='utf32_general_ci'; 576create table t1 select repeat('a',4000) a; 577delete from t1; 578insert into t1 values ('a'), ('a '), ('a\t'); 579select collation(a),hex(a) from t1 order by a; 580collation(a) hex(a) 581utf32_general_ci 0000006100000009 582utf32_general_ci 00000061 583utf32_general_ci 0000006100000020 584drop table t1; 585# 586# MDEV-5453 Assertion `src' fails in my_strnxfrm_unicode on GROUP BY MID(..) WITH ROLLUP 587# 588SELECT @@collation_connection; 589@@collation_connection 590utf32_general_ci 591CREATE TABLE t1 (i INT) ENGINE=MyISAM; 592INSERT INTO t1 VALUES (1),(2); 593SELECT * FROM t1 GROUP BY MID(CURRENT_USER,0) WITH ROLLUP; 594i 5951 5961 597SELECT * FROM t1 GROUP BY MID('test',0) WITH ROLLUP; 598i 5991 6001 601DROP TABLE t1; 602# 603# MDEV-6170 Incorrect ordering with utf8_bin and utf8mb4_bin collations 604# 605SELECT @@collation_connection; 606@@collation_connection 607utf32_general_ci 608CREATE TABLE t1 ENGINE=MEMORY AS SELECT REPEAT('a',5) AS a LIMIT 0; 609INSERT INTO t1 (a) VALUES ("a"); 610INSERT INTO t1 (a) VALUES ("b"); 611INSERT INTO t1 (a) VALUES ("c"); 612INSERT INTO t1 (a) VALUES ("d"); 613INSERT INTO t1 (a) VALUES ("e"); 614INSERT INTO t1 (a) VALUES ("f"); 615INSERT INTO t1 (a) VALUES ("g"); 616INSERT INTO t1 (a) VALUES ("h"); 617INSERT INTO t1 (a) VALUES ("i"); 618INSERT INTO t1 (a) VALUES ("j"); 619INSERT INTO t1 (a) VALUES ("k"); 620INSERT INTO t1 (a) VALUES ("l"); 621INSERT INTO t1 (a) VALUES ("m"); 622SELECT * FROM t1 ORDER BY LOWER(a); 623a 624a 625b 626c 627d 628e 629f 630g 631h 632i 633j 634k 635l 636m 637SELECT * FROM t1 ORDER BY LOWER(a) DESC; 638a 639m 640l 641k 642j 643i 644h 645g 646f 647e 648d 649c 650b 651a 652DROP TABLE t1; 653select @@collation_connection; 654@@collation_connection 655utf32_general_ci 656create table t1 ROW_FORMAT=DYNAMIC select repeat('a',50) as c1 ; 657insert into t1 values('abcdef'); 658insert into t1 values('_bcdef'); 659insert into t1 values('a_cdef'); 660insert into t1 values('ab_def'); 661insert into t1 values('abc_ef'); 662insert into t1 values('abcd_f'); 663insert into t1 values('abcde_'); 664select c1 as c1u from t1 where c1 like 'ab\_def'; 665c1u 666ab_def 667select c1 as c2h from t1 where c1 like 'ab#_def' escape '#'; 668c2h 669ab_def 670drop table t1; 671SELECT @@collation_connection; 672@@collation_connection 673utf32_general_ci 674SELECT '\%b' LIKE '%\%'; 675'\%b' LIKE '%\%' 6760 677SET NAMES latin1; 678SET collation_connection='utf32_bin'; 679create table t1 select repeat('a',4000) a; 680delete from t1; 681insert into t1 values ('a'), ('a '), ('a\t'); 682select collation(a),hex(a) from t1 order by a; 683collation(a) hex(a) 684utf32_bin 0000006100000009 685utf32_bin 00000061 686utf32_bin 0000006100000020 687drop table t1; 688# 689# MDEV-5453 Assertion `src' fails in my_strnxfrm_unicode on GROUP BY MID(..) WITH ROLLUP 690# 691SELECT @@collation_connection; 692@@collation_connection 693utf32_bin 694CREATE TABLE t1 (i INT) ENGINE=MyISAM; 695INSERT INTO t1 VALUES (1),(2); 696SELECT * FROM t1 GROUP BY MID(CURRENT_USER,0) WITH ROLLUP; 697i 6981 6991 700SELECT * FROM t1 GROUP BY MID('test',0) WITH ROLLUP; 701i 7021 7031 704DROP TABLE t1; 705# 706# MDEV-6170 Incorrect ordering with utf8_bin and utf8mb4_bin collations 707# 708SELECT @@collation_connection; 709@@collation_connection 710utf32_bin 711CREATE TABLE t1 ENGINE=MEMORY AS SELECT REPEAT('a',5) AS a LIMIT 0; 712INSERT INTO t1 (a) VALUES ("a"); 713INSERT INTO t1 (a) VALUES ("b"); 714INSERT INTO t1 (a) VALUES ("c"); 715INSERT INTO t1 (a) VALUES ("d"); 716INSERT INTO t1 (a) VALUES ("e"); 717INSERT INTO t1 (a) VALUES ("f"); 718INSERT INTO t1 (a) VALUES ("g"); 719INSERT INTO t1 (a) VALUES ("h"); 720INSERT INTO t1 (a) VALUES ("i"); 721INSERT INTO t1 (a) VALUES ("j"); 722INSERT INTO t1 (a) VALUES ("k"); 723INSERT INTO t1 (a) VALUES ("l"); 724INSERT INTO t1 (a) VALUES ("m"); 725SELECT * FROM t1 ORDER BY LOWER(a); 726a 727a 728b 729c 730d 731e 732f 733g 734h 735i 736j 737k 738l 739m 740SELECT * FROM t1 ORDER BY LOWER(a) DESC; 741a 742m 743l 744k 745j 746i 747h 748g 749f 750e 751d 752c 753b 754a 755DROP TABLE t1; 756# 757# Bug#55980 Character sets: supplementary character _bin ordering is wrong 758# 759CREATE TABLE t1 AS SELECT REPEAT('a',1) AS a LIMIT 0; 760SHOW CREATE TABLE t1; 761Table Create Table 762t1 CREATE TABLE `t1` ( 763 `a` varchar(1) CHARACTER SET utf32 COLLATE utf32_bin DEFAULT NULL 764) ENGINE=MyISAM DEFAULT CHARSET=latin1 765INSERT INTO t1 VALUES (_utf8mb4 0xEFBE9D),(_utf8mb4 0xF0908E84); 766INSERT INTO t1 VALUES (_utf8mb4 0xCE85),(_utf8mb4 0xF4808080); 767SELECT HEX(a), HEX(CONVERT(a USING utf8mb4)) FROM t1 ORDER BY a; 768HEX(a) HEX(CONVERT(a USING utf8mb4)) 76900000385 CE85 7700000FF9D EFBE9D 77100010384 F0908E84 77200100000 F4808080 773ALTER TABLE t1 ADD KEY(a); 774SELECT HEX(a), HEX(CONVERT(a USING utf8mb4)) FROM t1 ORDER BY a; 775HEX(a) HEX(CONVERT(a USING utf8mb4)) 77600000385 CE85 7770000FF9D EFBE9D 77800010384 F0908E84 77900100000 F4808080 780DROP TABLE IF EXISTS t1; 781# 782# BUG#16691598 - ORDER BY LOWER(COLUMN) PRODUCES 783# OUT-OF-ORDER RESULTS 784# 785CREATE TABLE t1 SELECT ('a a') as n; 786INSERT INTO t1 VALUES('a b'); 787SELECT * FROM t1 ORDER BY LOWER(n) ASC; 788n 789a a 790a b 791SELECT * FROM t1 ORDER BY LOWER(n) DESC; 792n 793a b 794a a 795DROP TABLE t1; 796select @@collation_connection; 797@@collation_connection 798utf32_bin 799create table t1 ROW_FORMAT=DYNAMIC select repeat('a',50) as c1 ; 800insert into t1 values('abcdef'); 801insert into t1 values('_bcdef'); 802insert into t1 values('a_cdef'); 803insert into t1 values('ab_def'); 804insert into t1 values('abc_ef'); 805insert into t1 values('abcd_f'); 806insert into t1 values('abcde_'); 807select c1 as c1u from t1 where c1 like 'ab\_def'; 808c1u 809ab_def 810select c1 as c2h from t1 where c1 like 'ab#_def' escape '#'; 811c2h 812ab_def 813drop table t1; 814SELECT @@collation_connection; 815@@collation_connection 816utf32_bin 817SELECT '\%b' LIKE '%\%'; 818'\%b' LIKE '%\%' 8190 820select hex(substr(_utf32 0x000000e4000000e500000068,1)); 821hex(substr(_utf32 0x000000e4000000e500000068,1)) 822000000E4000000E500000068 823select hex(substr(_utf32 0x000000e4000000e500000068,2)); 824hex(substr(_utf32 0x000000e4000000e500000068,2)) 825000000E500000068 826select hex(substr(_utf32 0x000000e4000000e500000068,3)); 827hex(substr(_utf32 0x000000e4000000e500000068,3)) 82800000068 829select hex(substr(_utf32 0x000000e4000000e500000068,-1)); 830hex(substr(_utf32 0x000000e4000000e500000068,-1)) 83100000068 832select hex(substr(_utf32 0x000000e4000000e500000068,-2)); 833hex(substr(_utf32 0x000000e4000000e500000068,-2)) 834000000E500000068 835select hex(substr(_utf32 0x000000e4000000e500000068,-3)); 836hex(substr(_utf32 0x000000e4000000e500000068,-3)) 837000000E4000000E500000068 838CREATE TABLE t1 ( 839a varchar(250) NOT NULL default '', 840KEY a (a) 841) ENGINE=MyISAM DEFAULT CHARSET=utf32 COLLATE utf32_general_ci; 842insert into t1 values (0x803d); 843insert into t1 values (0x005b); 844select hex(a) from t1; 845hex(a) 8460000005B 8470000803D 848drop table t1; 849create table t1 (utext varchar(20) character set utf32); 850insert into t1 values ("lily"); 851insert into t1 values ("river"); 852prepare stmt from 'select utext from t1 where utext like ?'; 853set @param1='%%'; 854execute stmt using @param1; 855utext 856lily 857river 858execute stmt using @param1; 859utext 860lily 861river 862select utext from t1 where utext like '%%'; 863utext 864lily 865river 866drop table t1; 867deallocate prepare stmt; 868create table t1 ( 869a char(10) character set utf32 not null, 870index a (a) 871) engine=myisam; 872insert into t1 values (repeat(0x0000201f, 10)); 873insert into t1 values (repeat(0x00002020, 10)); 874insert into t1 values (repeat(0x00002021, 10)); 875explain select hex(a) from t1 order by a; 876id select_type table type possible_keys key key_len ref rows Extra 8771 SIMPLE t1 index NULL a 40 NULL 3 Using index 878select hex(a) from t1 order by a; 879hex(a) 8800000201F0000201F0000201F0000201F0000201F0000201F0000201F0000201F0000201F0000201F 88100002020000020200000202000002020000020200000202000002020000020200000202000002020 88200002021000020210000202100002021000020210000202100002021000020210000202100002021 883alter table t1 drop index a; 884select hex(a) from t1 order by a; 885hex(a) 8860000201F0000201F0000201F0000201F0000201F0000201F0000201F0000201F0000201F0000201F 88700002020000020200000202000002020000020200000202000002020000020200000202000002020 88800002021000020210000202100002021000020210000202100002021000020210000202100002021 889drop table t1; 890CREATE TABLE t1 ( 891status enum('active','passive') character set utf32 collate utf32_general_ci 892NOT NULL default 'passive' 893); 894SHOW CREATE TABLE t1; 895Table Create Table 896t1 CREATE TABLE `t1` ( 897 `status` enum('active','passive') CHARACTER SET utf32 NOT NULL DEFAULT 'passive' 898) ENGINE=MyISAM DEFAULT CHARSET=latin1 899ALTER TABLE t1 ADD a int NOT NULL AFTER status; 900SHOW CREATE TABLE t1; 901Table Create Table 902t1 CREATE TABLE `t1` ( 903 `status` enum('active','passive') CHARACTER SET utf32 NOT NULL DEFAULT 'passive', 904 `a` int(11) NOT NULL 905) ENGINE=MyISAM DEFAULT CHARSET=latin1 906DROP TABLE t1; 907End of 4.1 tests 908CREATE TABLE t1 (a varchar(64) character set utf32, b decimal(10,3)); 909INSERT INTO t1 VALUES ("1.1", 0), ("2.1", 0); 910update t1 set b=a; 911SELECT *, hex(a) FROM t1; 912a b hex(a) 9131.1 1.100 000000310000002E00000031 9142.1 2.100 000000320000002E00000031 915DROP TABLE t1; 916create table t1 (utext varchar(20) character set utf32); 917insert into t1 values ("lily"); 918insert into t1 values ("river"); 919prepare stmt from 'select utext from t1 where utext like ?'; 920set @param1='%%'; 921execute stmt using @param1; 922utext 923lily 924river 925execute stmt using @param1; 926utext 927lily 928river 929select utext from t1 where utext like '%%'; 930utext 931lily 932river 933drop table t1; 934deallocate prepare stmt; 935set names latin1; 936set character_set_connection=utf32; 937select soundex(''),soundex('he'),soundex('hello all folks'),soundex('#3556 in bugdb'); 938soundex('') soundex('he') soundex('hello all folks') soundex('#3556 in bugdb') 939 H000 H4142 I51231 940select hex(soundex('')),hex(soundex('he')),hex(soundex('hello all folks')),hex(soundex('#3556 in bugdb')); 941hex(soundex('')) hex(soundex('he')) hex(soundex('hello all folks')) hex(soundex('#3556 in bugdb')) 942 00000048000000300000003000000030 0000004800000034000000310000003400000032 000000490000003500000031000000320000003300000031 943select 'mood' sounds like 'mud'; 944'mood' sounds like 'mud' 9451 946select hex(soundex(_utf32 0x000004100000041100000412)); 947hex(soundex(_utf32 0x000004100000041100000412)) 94800000410000000300000003000000030 949select hex(soundex(_utf32 0x000000BF000000C0)); 950hex(soundex(_utf32 0x000000BF000000C0)) 951000000C0000000300000003000000030 952set names latin1; 953create table t1(a blob, b text charset utf32); 954select data_type, character_octet_length, character_maximum_length 955from information_schema.columns where table_name='t1'; 956data_type character_octet_length character_maximum_length 957blob 65535 65535 958text 65535 16383 959drop table t1; 960set names latin1; 961set collation_connection=utf32_general_ci; 962select position('bb' in 'abba'); 963position('bb' in 'abba') 9642 965create table t1 (a varchar(10) character set utf32) engine=heap; 966insert into t1 values ('a'),('A'),('b'),('B'); 967select * from t1 where a='a' order by binary a; 968a 969A 970a 971select hex(min(binary a)),count(*) from t1 group by a; 972hex(min(binary a)) count(*) 97300000041 2 97400000042 2 975drop table t1; 976select char_length('abcd'), octet_length('abcd'); 977char_length('abcd') octet_length('abcd') 9784 16 979select left('abcd',2); 980left('abcd',2) 981ab 982create table t1 (a varchar(10) character set utf32); 983insert into t1 values (_utf32 0x0010FFFF); 984insert into t1 values (_utf32 0x00110000); 985ERROR HY000: Invalid utf32 character string: '001100' 986insert into t1 values (_utf32 0x00110101); 987ERROR HY000: Invalid utf32 character string: '001101' 988insert into t1 values (_utf32 0x01000101); 989ERROR HY000: Invalid utf32 character string: '010001' 990insert into t1 values (_utf32 0x11000101); 991ERROR HY000: Invalid utf32 character string: '110001' 992select hex(a) from t1; 993hex(a) 9940010FFFF 995drop table t1; 996create table t1 (utf32 varchar(2) character set utf32); 997Wrong character with pad 998insert ignore into t1 values (0x110000); 999Warnings: 1000Warning 1366 Incorrect string value: '\x11\x00\x00' for column `test`.`t1`.`utf32` at row 1 1001Wrong chsaracter without pad 1002insert ignore into t1 values (0x00110000); 1003Warnings: 1004Warning 1366 Incorrect string value: '\x00\x11\x00\x00' for column `test`.`t1`.`utf32` at row 1 1005Wrong character with pad followed by another wrong character 1006insert ignore into t1 values (0x11000000110000); 1007Warnings: 1008Warning 1366 Incorrect string value: '\x11\x00\x00\x00\x11\x00...' for column `test`.`t1`.`utf32` at row 1 1009Good character with pad followed by bad character 1010insert ignore into t1 values (0x10000000110000); 1011Warnings: 1012Warning 1366 Incorrect string value: '\x00\x11\x00\x00' for column `test`.`t1`.`utf32` at row 1 1013Good character without pad followed by bad character 1014insert ignore into t1 values (0x0010000000110000); 1015Warnings: 1016Warning 1366 Incorrect string value: '\x00\x11\x00\x00' for column `test`.`t1`.`utf32` at row 1 1017Wrong character with the second byte higher than 0x10 1018insert ignore into t1 values (0x00800037); 1019Warnings: 1020Warning 1366 Incorrect string value: '\x00\x80\x007' for column `test`.`t1`.`utf32` at row 1 1021Wrong character with pad with the second byte higher than 0x10 1022insert ignore into t1 values (0x00800037); 1023Warnings: 1024Warning 1366 Incorrect string value: '\x00\x80\x007' for column `test`.`t1`.`utf32` at row 1 1025drop table t1; 1026select _utf32'a' collate utf32_general_ci = 0xfffd; 1027_utf32'a' collate utf32_general_ci = 0xfffd 10280 1029select hex(concat(_utf32 0x0410 collate utf32_general_ci, 0x61)); 1030hex(concat(_utf32 0x0410 collate utf32_general_ci, 0x61)) 10310000041000000061 1032create table t1 (s1 varchar(5) character set utf32); 1033insert into t1 values (0xfffd); 1034select case when s1 = 0xfffd then 1 else 0 end from t1; 1035case when s1 = 0xfffd then 1 else 0 end 10361 1037select hex(s1) from t1 where s1 = 0xfffd; 1038hex(s1) 10390000FFFD 1040drop table t1; 1041create table t1 (a char(10)) character set utf32; 1042insert into t1 values ('a '); 1043select hex(a) from t1; 1044hex(a) 104500000061 1046drop table t1; 1047select upper('abcd'), lower('ABCD'); 1048upper('abcd') lower('ABCD') 1049ABCD abcd 1050create table t1 (a varchar(10) character set utf32); 1051insert into t1 values (123456); 1052select a, hex(a) from t1; 1053a hex(a) 1054123456 000000310000003200000033000000340000003500000036 1055drop table t1; 1056select hex(soundex('a')); 1057hex(soundex('a')) 105800000041000000300000003000000030 1059create table t1 (a enum ('a','b','c')) character set utf32; 1060insert into t1 values ('1'); 1061select * from t1; 1062a 1063a 1064drop table t1; 1065set names latin1; 1066select hex(conv(convert('123' using utf32), -10, 16)); 1067hex(conv(convert('123' using utf32), -10, 16)) 10683742 1069select hex(conv(convert('123' using utf32), 10, 16)); 1070hex(conv(convert('123' using utf32), 10, 16)) 10713742 1072set names latin1; 1073set character_set_connection=utf32; 1074select 1.1 + '1.2'; 10751.1 + '1.2' 10762.3 1077select 1.1 + '1.2xxx'; 10781.1 + '1.2xxx' 10792.3 1080Warnings: 1081Warning 1292 Truncated incorrect DOUBLE value: '1.2xxx' 1082select left('aaa','1'); 1083left('aaa','1') 1084a 1085# 1086# Testing strtoll10() 1087# 1088SELECT @@character_set_connection; 1089@@character_set_connection 1090utf32 1091SELECT CAST('1' AS UNSIGNED); 1092CAST('1' AS UNSIGNED) 10931 1094SELECT CAST('12' AS UNSIGNED); 1095CAST('12' AS UNSIGNED) 109612 1097SELECT CAST('123' AS UNSIGNED); 1098CAST('123' AS UNSIGNED) 1099123 1100SELECT CAST('1234' AS UNSIGNED); 1101CAST('1234' AS UNSIGNED) 11021234 1103SELECT CAST('12345' AS UNSIGNED); 1104CAST('12345' AS UNSIGNED) 110512345 1106SELECT CAST('123456' AS UNSIGNED); 1107CAST('123456' AS UNSIGNED) 1108123456 1109SELECT CAST('1234567' AS UNSIGNED); 1110CAST('1234567' AS UNSIGNED) 11111234567 1112SELECT CAST('12345678' AS UNSIGNED); 1113CAST('12345678' AS UNSIGNED) 111412345678 1115SELECT CAST('123456789' AS UNSIGNED); 1116CAST('123456789' AS UNSIGNED) 1117123456789 1118SELECT CAST('1234567891' AS UNSIGNED); 1119CAST('1234567891' AS UNSIGNED) 11201234567891 1121SELECT CAST('12345678912' AS UNSIGNED); 1122CAST('12345678912' AS UNSIGNED) 112312345678912 1124SELECT CAST('123456789123' AS UNSIGNED); 1125CAST('123456789123' AS UNSIGNED) 1126123456789123 1127SELECT CAST('1234567891234' AS UNSIGNED); 1128CAST('1234567891234' AS UNSIGNED) 11291234567891234 1130SELECT CAST('12345678912345' AS UNSIGNED); 1131CAST('12345678912345' AS UNSIGNED) 113212345678912345 1133SELECT CAST('123456789123456' AS UNSIGNED); 1134CAST('123456789123456' AS UNSIGNED) 1135123456789123456 1136SELECT CAST('1234567891234567' AS UNSIGNED); 1137CAST('1234567891234567' AS UNSIGNED) 11381234567891234567 1139SELECT CAST('12345678912345678' AS UNSIGNED); 1140CAST('12345678912345678' AS UNSIGNED) 114112345678912345678 1142SELECT CAST('123456789123456789' AS UNSIGNED); 1143CAST('123456789123456789' AS UNSIGNED) 1144123456789123456789 1145SELECT CAST('1234567891234567891' AS UNSIGNED); 1146CAST('1234567891234567891' AS UNSIGNED) 11471234567891234567891 1148SELECT CAST('12345678912345678912' AS UNSIGNED); 1149CAST('12345678912345678912' AS UNSIGNED) 115012345678912345678912 1151SELECT CAST('123456789123456789123' AS UNSIGNED); 1152CAST('123456789123456789123' AS UNSIGNED) 115318446744073709551615 1154Warnings: 1155Warning 1292 Truncated incorrect INTEGER value: '123456789123456789123' 1156SELECT CAST('1x' AS UNSIGNED); 1157CAST('1x' AS UNSIGNED) 11581 1159Warnings: 1160Warning 1292 Truncated incorrect INTEGER value: '1x' 1161SELECT CAST('12x' AS UNSIGNED); 1162CAST('12x' AS UNSIGNED) 116312 1164Warnings: 1165Warning 1292 Truncated incorrect INTEGER value: '12x' 1166SELECT CAST('123x' AS UNSIGNED); 1167CAST('123x' AS UNSIGNED) 1168123 1169Warnings: 1170Warning 1292 Truncated incorrect INTEGER value: '123x' 1171SELECT CAST('1234x' AS UNSIGNED); 1172CAST('1234x' AS UNSIGNED) 11731234 1174Warnings: 1175Warning 1292 Truncated incorrect INTEGER value: '1234x' 1176SELECT CAST('12345x' AS UNSIGNED); 1177CAST('12345x' AS UNSIGNED) 117812345 1179Warnings: 1180Warning 1292 Truncated incorrect INTEGER value: '12345x' 1181SELECT CAST('123456x' AS UNSIGNED); 1182CAST('123456x' AS UNSIGNED) 1183123456 1184Warnings: 1185Warning 1292 Truncated incorrect INTEGER value: '123456x' 1186SELECT CAST('1234567x' AS UNSIGNED); 1187CAST('1234567x' AS UNSIGNED) 11881234567 1189Warnings: 1190Warning 1292 Truncated incorrect INTEGER value: '1234567x' 1191SELECT CAST('12345678x' AS UNSIGNED); 1192CAST('12345678x' AS UNSIGNED) 119312345678 1194Warnings: 1195Warning 1292 Truncated incorrect INTEGER value: '12345678x' 1196SELECT CAST('123456789x' AS UNSIGNED); 1197CAST('123456789x' AS UNSIGNED) 1198123456789 1199Warnings: 1200Warning 1292 Truncated incorrect INTEGER value: '123456789x' 1201SELECT CAST('1234567891x' AS UNSIGNED); 1202CAST('1234567891x' AS UNSIGNED) 12031234567891 1204Warnings: 1205Warning 1292 Truncated incorrect INTEGER value: '1234567891x' 1206SELECT CAST('12345678912x' AS UNSIGNED); 1207CAST('12345678912x' AS UNSIGNED) 120812345678912 1209Warnings: 1210Warning 1292 Truncated incorrect INTEGER value: '12345678912x' 1211SELECT CAST('123456789123x' AS UNSIGNED); 1212CAST('123456789123x' AS UNSIGNED) 1213123456789123 1214Warnings: 1215Warning 1292 Truncated incorrect INTEGER value: '123456789123x' 1216SELECT CAST('1234567891234x' AS UNSIGNED); 1217CAST('1234567891234x' AS UNSIGNED) 12181234567891234 1219Warnings: 1220Warning 1292 Truncated incorrect INTEGER value: '1234567891234x' 1221SELECT CAST('12345678912345x' AS UNSIGNED); 1222CAST('12345678912345x' AS UNSIGNED) 122312345678912345 1224Warnings: 1225Warning 1292 Truncated incorrect INTEGER value: '12345678912345x' 1226SELECT CAST('123456789123456x' AS UNSIGNED); 1227CAST('123456789123456x' AS UNSIGNED) 1228123456789123456 1229Warnings: 1230Warning 1292 Truncated incorrect INTEGER value: '123456789123456x' 1231SELECT CAST('1234567891234567x' AS UNSIGNED); 1232CAST('1234567891234567x' AS UNSIGNED) 12331234567891234567 1234Warnings: 1235Warning 1292 Truncated incorrect INTEGER value: '1234567891234567x' 1236SELECT CAST('12345678912345678x' AS UNSIGNED); 1237CAST('12345678912345678x' AS UNSIGNED) 123812345678912345678 1239Warnings: 1240Warning 1292 Truncated incorrect INTEGER value: '12345678912345678x' 1241SELECT CAST('123456789123456789x' AS UNSIGNED); 1242CAST('123456789123456789x' AS UNSIGNED) 1243123456789123456789 1244Warnings: 1245Warning 1292 Truncated incorrect INTEGER value: '123456789123456789x' 1246SELECT CAST('1234567891234567891x' AS UNSIGNED); 1247CAST('1234567891234567891x' AS UNSIGNED) 12481234567891234567891 1249Warnings: 1250Warning 1292 Truncated incorrect INTEGER value: '1234567891234567891x' 1251SELECT CAST('12345678912345678912x' AS UNSIGNED); 1252CAST('12345678912345678912x' AS UNSIGNED) 125312345678912345678912 1254Warnings: 1255Warning 1292 Truncated incorrect INTEGER value: '12345678912345678912x' 1256SELECT CAST('123456789123456789123x' AS UNSIGNED); 1257CAST('123456789123456789123x' AS UNSIGNED) 125818446744073709551615 1259Warnings: 1260Warning 1292 Truncated incorrect INTEGER value: '123456789123456789123x' 1261create table t1 (a int); 1262insert into t1 values ('-1234.1e2'); 1263insert ignore into t1 values ('-1234.1e2xxxx'); 1264Warnings: 1265Warning 1265 Data truncated for column 'a' at row 1 1266insert into t1 values ('-1234.1e2 '); 1267Warnings: 1268Note 1265 Data truncated for column 'a' at row 1 1269select * from t1; 1270a 1271-123410 1272-123410 1273-123410 1274drop table t1; 1275create table t1 (a int); 1276insert into t1 values ('1 '); 1277Warnings: 1278Note 1265 Data truncated for column 'a' at row 1 1279insert ignore into t1 values ('1 x'); 1280Warnings: 1281Warning 1265 Data truncated for column 'a' at row 1 1282select * from t1; 1283a 12841 12851 1286drop table t1; 1287SET STATEMENT sql_mode = 'NO_ENGINE_SUBSTITUTION' FOR 1288create table t1 (a varchar(17000) character set utf32); 1289Warnings: 1290Note 1246 Converting column 'a' from VARCHAR to TEXT 1291show create table t1; 1292Table Create Table 1293t1 CREATE TABLE `t1` ( 1294 `a` mediumtext CHARACTER SET utf32 DEFAULT NULL 1295) ENGINE=MyISAM DEFAULT CHARSET=latin1 1296drop table t1; 1297create table t1 (a varchar(250) character set utf32 primary key); 1298show create table t1; 1299Table Create Table 1300t1 CREATE TABLE `t1` ( 1301 `a` varchar(250) CHARACTER SET utf32 NOT NULL, 1302 PRIMARY KEY (`a`) 1303) ENGINE=MyISAM DEFAULT CHARSET=latin1 1304drop table t1; 1305create table t1 (a varchar(334) character set utf32 primary key); 1306ERROR 42000: Specified key was too long; max key length is 1000 bytes 1307create table t1 (a varchar(333) character set utf32, key(a)); 1308Warnings: 1309Note 1071 Specified key was too long; max key length is 1000 bytes 1310insert into t1 values (repeat('a',333)), (repeat('b',333)); 1311flush tables; 1312check table t1; 1313Table Op Msg_type Msg_text 1314test.t1 check status OK 1315drop table t1; 1316SET collation_connection=utf32_general_ci; 1317# 1318# Bug#32390 Character sets: casting utf32 to/from date doesn't work 1319# 1320CREATE TABLE t1 AS SELECT repeat('a',20) AS s1 LIMIT 0; 1321SET time_zone=_latin1'+03:00'; 1322SET timestamp=1216359724; 1323INSERT INTO t1 VALUES (current_date); 1324INSERT INTO t1 VALUES (current_time); 1325INSERT INTO t1 VALUES (current_timestamp); 1326SELECT s1, hex(s1) FROM t1; 1327s1 hex(s1) 13282008-07-18 000000320000003000000030000000380000002D00000030000000370000002D0000003100000038 132908:42:04 00000030000000380000003A00000034000000320000003A0000003000000034 13302008-07-18 08:42:04 000000320000003000000030000000380000002D00000030000000370000002D00000031000000380000002000000030000000380000003A00000034000000320000003A0000003000000034 1331DROP TABLE t1; 1332SET timestamp=0; 1333SET time_zone=default; 1334# 1335# MDEV-5298 Illegal mix of collations on timestamp 1336# 1337SELECT CHARSET('2013-11-15 00:41:28' - INTERVAL 7 DAY); 1338CHARSET('2013-11-15 00:41:28' - INTERVAL 7 DAY) 1339utf32 1340SELECT COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY); 1341COERCIBILITY('2013-11-15 00:41:28' - INTERVAL 7 DAY) 13424 1343SELECT CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY); 1344CHARSET(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY) 1345binary 1346SELECT COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY); 1347COERCIBILITY(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY) 13485 1349SELECT CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY)); 1350CHARSET(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY)) 1351utf32 1352SELECT COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY)); 1353COERCIBILITY(CONCAT('2013-11-15 00:41:28' - INTERVAL 7 DAY)) 13544 1355SELECT CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)); 1356CHARSET(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)) 1357utf32 1358SELECT COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)); 1359COERCIBILITY(CONCAT(TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY)) 13604 1361SELECT CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY)); 1362CHARSET(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY)) 1363utf32 1364SELECT COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY)); 1365COERCIBILITY(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY)) 13664 1367SELECT HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY)); 1368HEX(CONCAT('','2001-01-08 00:00:00' - INTERVAL 7 DAY)) 1369000000320000003000000030000000310000002D00000030000000310000002D00000030000000310000002000000030000000300000003A00000030000000300000003A0000003000000030 1370SELECT CHARSET(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY)); 1371CHARSET(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY)) 1372utf32 1373SELECT COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY)); 1374COERCIBILITY(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY)) 13754 1376SELECT HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY)); 1377HEX(CONCAT('',TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY)) 1378000000320000003000000030000000310000002D00000030000000310000002D00000030000000310000002000000030000000300000003A00000030000000300000003A0000003000000030 1379CREATE TABLE t1 AS SELECT REPEAT('a', 64) AS a LIMIT 0; 1380SHOW CREATE TABLE t1; 1381Table Create Table 1382t1 CREATE TABLE `t1` ( 1383 `a` varchar(64) CHARACTER SET utf32 DEFAULT NULL 1384) ENGINE=MyISAM DEFAULT CHARSET=latin1 1385INSERT INTO t1 VALUES (''); 1386SELECT CHARSET(CONCAT(a,'2001-01-08 00:00:00' - INTERVAL 7 DAY)) FROM t1; 1387CHARSET(CONCAT(a,'2001-01-08 00:00:00' - INTERVAL 7 DAY)) 1388utf32 1389SELECT COERCIBILITY(CONCAT(a,'2001-01-08 00:00:00' - INTERVAL 7 DAY)) FROM t1; 1390COERCIBILITY(CONCAT(a,'2001-01-08 00:00:00' - INTERVAL 7 DAY)) 13912 1392SELECT HEX(CONCAT(a,'2001-01-08 00:00:00' - INTERVAL 7 DAY)) FROM t1; 1393HEX(CONCAT(a,'2001-01-08 00:00:00' - INTERVAL 7 DAY)) 1394000000320000003000000030000000310000002D00000030000000310000002D00000030000000310000002000000030000000300000003A00000030000000300000003A0000003000000030 1395SELECT CHARSET(CONCAT(a,TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY)) FROM t1; 1396CHARSET(CONCAT(a,TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY)) 1397utf32 1398SELECT COERCIBILITY(CONCAT(a,TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY)) FROM t1; 1399COERCIBILITY(CONCAT(a,TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY)) 14002 1401SELECT HEX(CONCAT(a,TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY)) FROM t1; 1402HEX(CONCAT(a,TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY)) 1403000000320000003000000030000000310000002D00000030000000310000002D00000030000000310000002000000030000000300000003A00000030000000300000003A0000003000000030 1404DROP TABLE t1; 1405CREATE TABLE t1 (t TIMESTAMP NOT NULL); 1406INSERT INTO t1 VALUES ('2001-01-01 00:00:00'); 1407SELECT * FROM t1 WHERE t < '2013-11-15 00:41:28' - INTERVAL 7 DAY; 1408t 14092001-01-01 00:00:00 1410SELECT * FROM t1 WHERE t = '2001-01-08 00:00:00' - INTERVAL 7 DAY; 1411t 14122001-01-01 00:00:00 1413SELECT * FROM t1 WHERE t < CONCAT('2013-11-15 00:41:28',LEFT(RAND(),0)) - INTERVAL 7 DAY; 1414t 14152001-01-01 00:00:00 1416SELECT * FROM t1 WHERE t = CONCAT('2001-01-08 00:00:00',LEFT(RAND(),0)) - INTERVAL 7 DAY; 1417t 14182001-01-01 00:00:00 1419SELECT * FROM t1 WHERE t < TIMESTAMP'2013-11-15 00:41:28' - INTERVAL 7 DAY; 1420t 14212001-01-01 00:00:00 1422SELECT * FROM t1 WHERE t = TIMESTAMP'2001-01-08 00:00:00' - INTERVAL 7 DAY; 1423t 14242001-01-01 00:00:00 1425DROP TABLE t1; 1426SET NAMES latin1; 1427set collation_connection=utf32_general_ci; 1428drop table if exists t1; 1429create table t1 as 1430select repeat(' ', 64) as s1, repeat(' ',64) as s2 1431union 1432select null, null; 1433show create table t1; 1434Table Create Table 1435t1 CREATE TABLE `t1` ( 1436 `s1` varchar(64) CHARACTER SET utf32 DEFAULT NULL, 1437 `s2` varchar(64) CHARACTER SET utf32 DEFAULT NULL 1438) ENGINE=MyISAM DEFAULT CHARSET=latin1 1439delete from t1; 1440insert into t1 values('aaa','aaa'); 1441insert into t1 values('aaa|qqq','qqq'); 1442insert into t1 values('gheis','^[^a-dXYZ]+$'); 1443insert into t1 values('aab','^aa?b'); 1444insert into t1 values('Baaan','^Ba*n'); 1445insert into t1 values('aaa','qqq|aaa'); 1446insert into t1 values('qqq','qqq|aaa'); 1447insert into t1 values('bbb','qqq|aaa'); 1448insert into t1 values('bbb','qqq'); 1449insert into t1 values('aaa','aba'); 1450insert into t1 values(null,'abc'); 1451insert into t1 values('def',null); 1452insert into t1 values(null,null); 1453insert into t1 values('ghi','ghi['); 1454select HIGH_PRIORITY s1 regexp s2 from t1; 1455s1 regexp s2 14560 14570 14580 14591 14601 14611 14621 14631 14641 14651 1466NULL 1467NULL 1468NULL 1469NULL 1470drop table t1; 1471set names latin1; 1472select hex(char(0x01 using utf32)); 1473hex(char(0x01 using utf32)) 147400000001 1475select hex(char(0x0102 using utf32)); 1476hex(char(0x0102 using utf32)) 147700000102 1478select hex(char(0x010203 using utf32)); 1479hex(char(0x010203 using utf32)) 148000010203 1481select hex(char(0x01020304 using utf32)); 1482hex(char(0x01020304 using utf32)) 1483NULL 1484Warnings: 1485Warning 1300 Invalid utf32 character string: '010203' 1486create table t1 (s1 varchar(1) character set utf32, s2 text character set utf32); 1487create index i on t1 (s1); 1488insert into t1 values (char(256 using utf32), char(256 using utf32)); 1489select hex(s1), hex(s2) from t1; 1490hex(s1) hex(s2) 149100000100 00000100 1492drop table t1; 1493SET collation_connection=utf32_general_ci; 1494CREATE TABLE t1 AS SELECT repeat('a',2) as s1 LIMIT 0; 1495SHOW CREATE TABLE t1; 1496Table Create Table 1497t1 CREATE TABLE `t1` ( 1498 `s1` varchar(2) CHARACTER SET utf32 DEFAULT NULL 1499) ENGINE=MyISAM DEFAULT CHARSET=latin1 1500INSERT INTO t1 VALUES ('ab'),('AE'),('ab'),('AE'); 1501SELECT * FROM t1 ORDER BY s1; 1502s1 1503ab 1504ab 1505AE 1506AE 1507SET max_sort_length=8; 1508Warnings: 1509Warning 1292 Truncated incorrect max_sort_length value: '8' 1510SELECT * FROM t1 ORDER BY s1; 1511s1 1512ab 1513ab 1514AE 1515AE 1516DROP TABLE t1; 1517SET max_sort_length=DEFAULT; 1518SET NAMES latin1; 1519# 1520# Bug#52520 Difference in tinytext utf column metadata 1521# 1522CREATE TABLE t1 ( 1523s1 TINYTEXT CHARACTER SET utf32, 1524s2 TEXT CHARACTER SET utf32, 1525s3 MEDIUMTEXT CHARACTER SET utf32, 1526s4 LONGTEXT CHARACTER SET utf32 1527); 1528SET NAMES utf8mb4, @@character_set_results=NULL; 1529SELECT *, HEX(s1) FROM t1; 1530Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr 1531def test t1 t1 s1 s1 252 255 0 Y 16 0 60 1532def test t1 t1 s2 s2 252 65535 0 Y 16 0 60 1533def test t1 t1 s3 s3 252 16777215 0 Y 16 0 60 1534def test t1 t1 s4 s4 252 4294967295 0 Y 16 0 60 1535def HEX(s1) 253 8160 0 Y 0 0 45 1536s1 s2 s3 s4 HEX(s1) 1537SET NAMES latin1; 1538SELECT *, HEX(s1) FROM t1; 1539Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr 1540def test t1 t1 s1 s1 252 63 0 Y 16 0 8 1541def test t1 t1 s2 s2 252 16383 0 Y 16 0 8 1542def test t1 t1 s3 s3 252 4194303 0 Y 16 0 8 1543def test t1 t1 s4 s4 252 1073741823 0 Y 16 0 8 1544def HEX(s1) 253 2040 0 Y 0 0 8 1545s1 s2 s3 s4 HEX(s1) 1546SET NAMES utf8mb4; 1547SELECT *, HEX(s1) FROM t1; 1548Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr 1549def test t1 t1 s1 s1 252 252 0 Y 16 0 45 1550def test t1 t1 s2 s2 252 65532 0 Y 16 0 45 1551def test t1 t1 s3 s3 252 16777212 0 Y 16 0 45 1552def test t1 t1 s4 s4 252 4294967292 0 Y 16 0 45 1553def HEX(s1) 253 8160 0 Y 0 0 45 1554s1 s2 s3 s4 HEX(s1) 1555CREATE TABLE t2 AS SELECT CONCAT(s1) FROM t1; 1556SHOW CREATE TABLE t2; 1557Table Create Table 1558t2 CREATE TABLE `t2` ( 1559 `CONCAT(s1)` varchar(255) CHARACTER SET utf32 DEFAULT NULL 1560) ENGINE=MyISAM DEFAULT CHARSET=latin1 1561DROP TABLE t1, t2; 1562# 1563# Bug#45263 utf32_general_ci, bad effects around CREATE TABLE AS SELECT 1564# 1565SET collation_connection=utf32_general_ci; 1566CREATE TABLE t1 AS SELECT HEX(0x00) AS my_col; 1567SELECT * FROM t1; 1568my_col 156900 1570DROP TABLE t1; 1571# 1572# Bug#32859 Character sets: no warning with non-fitting chariot wheel 1573# 1574CREATE TABLE t1 (utf32 CHAR(5) CHARACTER SET utf32, latin1 CHAR(5) CHARACTER SET latin1); 1575INSERT INTO t1 (utf32) VALUES (0xc581); 1576UPDATE IGNORE t1 SET latin1 = utf32; 1577Warnings: 1578Warning 1366 Incorrect string value: '\x00\x00\xC5\x81' for column `test`.`t1`.`latin1` at row 1 1579DELETE FROM t1; 1580INSERT INTO t1 (utf32) VALUES (0x100cc); 1581UPDATE IGNORE t1 SET latin1 = utf32; 1582Warnings: 1583Warning 1366 Incorrect string value: '\x00\x01\x00\xCC' for column `test`.`t1`.`latin1` at row 1 1584DROP TABLE t1; 1585# 1586# Bug#55912 FORMAT with locale set fails for numbers < 1000 1587# 1588SET collation_connection=utf32_general_ci; 1589CREATE TABLE t1 AS SELECT format(123,2,'no_NO'); 1590SHOW CREATE TABLE t1; 1591Table Create Table 1592t1 CREATE TABLE `t1` ( 1593 `format(123,2,'no_NO')` varchar(17) CHARACTER SET utf32 DEFAULT NULL 1594) ENGINE=MyISAM DEFAULT CHARSET=latin1 1595SELECT * FROM t1; 1596format(123,2,'no_NO') 1597123,00 1598DROP TABLE t1; 1599# 1600# Bug#42511 mysqld: ctype-ucs2.c:2044: my_strnncollsp_utf32: Assertion (tlen % 4) == 0' faied 1601# 1602CREATE TABLE t1 ( 1603b char(250) CHARACTER SET utf32, 1604key (b) 1605) ENGINE=MYISAM; 1606INSERT INTO t1 VALUES ('d'),('f'); 1607SELECT * FROM t1 WHERE b BETWEEN 'a' AND 'z'; 1608b 1609d 1610f 1611DROP TABLE t1; 1612# 1613# Bug#11753363 (Bug#44793) Character sets: case clause, ucs2 or utf32, failure 1614# 1615SELECT CASE _latin1'a' WHEN _utf32'a' THEN 'A' END; 1616CASE _latin1'a' WHEN _utf32'a' THEN 'A' END 1617A 1618SELECT CASE _utf32'a' WHEN _latin1'a' THEN 'A' END; 1619CASE _utf32'a' WHEN _latin1'a' THEN 'A' END 1620A 1621CREATE TABLE t1 (s1 CHAR(5) CHARACTER SET utf32); 1622INSERT INTO t1 VALUES ('a'); 1623SELECT CASE s1 WHEN 'a' THEN 'b' ELSE 'c' END FROM t1; 1624CASE s1 WHEN 'a' THEN 'b' ELSE 'c' END 1625b 1626DROP TABLE t1; 1627# 1628# Bug#11750518 41090: ORDER BY TRUNCATES GROUP_CONCAT RESULT 1629# 1630SET NAMES utf8, @@character_set_connection=utf32; 1631SET STATEMENT group_concat_max_len=1024 FOR 1632SELECT id, CHAR_LENGTH(GROUP_CONCAT(body)) AS l 1633FROM (SELECT 'a' AS id, REPEAT('foo bar', 100) AS body 1634UNION ALL 1635SELECT 'a' AS id, REPEAT('bla bla', 100) AS body) t1 1636GROUP BY id 1637ORDER BY l DESC; 1638id l 1639a 256 1640Warnings: 1641Warning 1260 Row 1 was cut by GROUP_CONCAT() 1642# 1643# incorrect charset for val_str_ascii 1644# 1645SELECT '2010-10-10 10:10:10' + INTERVAL GeometryType(GeomFromText('POINT(1 1)')) hour_second; 1646'2010-10-10 10:10:10' + INTERVAL GeometryType(GeomFromText('POINT(1 1)')) hour_second 16472010-10-10 10:10:10 1648# 1649# MDEV-5745 analyze MySQL fix for bug#12368495 1650# 1651SELECT CHAR_LENGTH(TRIM(LEADING 0x0000000000 FROM _utf32 0x00000061)); 1652CHAR_LENGTH(TRIM(LEADING 0x0000000000 FROM _utf32 0x00000061)) 16534 1654SELECT CHAR_LENGTH(TRIM(LEADING 0x0001 FROM _utf32 0x00000061)); 1655CHAR_LENGTH(TRIM(LEADING 0x0001 FROM _utf32 0x00000061)) 16564 1657SELECT CHAR_LENGTH(TRIM(LEADING 0x00 FROM _utf32 0x00000061)); 1658CHAR_LENGTH(TRIM(LEADING 0x00 FROM _utf32 0x00000061)) 16591 1660SELECT CHAR_LENGTH(TRIM(TRAILING 0x0000000000 FROM _utf32 0x00000061)); 1661CHAR_LENGTH(TRIM(TRAILING 0x0000000000 FROM _utf32 0x00000061)) 16624 1663SELECT CHAR_LENGTH(TRIM(TRAILING 0x0001 FROM _utf32 0x00000061)); 1664CHAR_LENGTH(TRIM(TRAILING 0x0001 FROM _utf32 0x00000061)) 16654 1666SELECT CHAR_LENGTH(TRIM(TRAILING 0x61 FROM _utf32 0x00000061)); 1667CHAR_LENGTH(TRIM(TRAILING 0x61 FROM _utf32 0x00000061)) 16683 1669SELECT CHAR_LENGTH(TRIM(BOTH 0x0000000000 FROM _utf32 0x00000061)); 1670CHAR_LENGTH(TRIM(BOTH 0x0000000000 FROM _utf32 0x00000061)) 16714 1672SELECT CHAR_LENGTH(TRIM(BOTH 0x0001 FROM _utf32 0x00000061)); 1673CHAR_LENGTH(TRIM(BOTH 0x0001 FROM _utf32 0x00000061)) 16744 1675SELECT CHAR_LENGTH(TRIM(BOTH 0x61 FROM _utf32 0x00000061)); 1676CHAR_LENGTH(TRIM(BOTH 0x61 FROM _utf32 0x00000061)) 16773 1678SELECT CHAR_LENGTH(TRIM(BOTH 0x00 FROM _utf32 0x00000061)); 1679CHAR_LENGTH(TRIM(BOTH 0x00 FROM _utf32 0x00000061)) 16801 1681select hex(lower(cast(0xffff0000 as char character set utf32))) as c; 1682c 16830000003F0000003F0000003F0000003F 1684Warnings: 1685Warning 1300 Invalid utf32 character string: '\xFF\xFF\x00\x00' 1686# 1687# MDEV-11685: sql_mode can't be set with non-ascii connection charset 1688# 1689SET character_set_connection=utf32; 1690SET sql_mode='NO_ENGINE_SUBSTITUTION'; 1691SELECT @@sql_mode; 1692@@sql_mode 1693NO_ENGINE_SUBSTITUTION 1694SET sql_mode=DEFAULT; 1695SET NAMES utf8; 1696# 1697# MDEV-13530 VARBINARY doesn't convert to to BLOB for sizes 65533, 65534 and 65535 1698# 1699set sql_mode=''; 1700CREATE TABLE t1 (c1 VARCHAR(16383) CHARACTER SET utf32); 1701DESCRIBE t1; 1702Field Type Null Key Default Extra 1703c1 varchar(16383) YES NULL 1704DROP TABLE t1; 1705CREATE TABLE t1 (c1 VARCHAR(16384) CHARACTER SET utf32); 1706Warnings: 1707Note 1246 Converting column 'c1' from VARCHAR to TEXT 1708DESCRIBE t1; 1709Field Type Null Key Default Extra 1710c1 mediumtext YES NULL 1711DROP TABLE t1; 1712set sql_mode=default; 1713# 1714# End of 5.5 tests 1715# 1716# 1717# Start of 5.6 tests 1718# 1719# 1720# WL#3664 WEIGHT_STRING 1721# 1722set collation_connection=utf32_general_ci; 1723select @@collation_connection; 1724@@collation_connection 1725utf32_general_ci 1726CREATE TABLE t1 AS SELECT 'a' AS a; 1727SHOW CREATE TABLE t1; 1728Table Create Table 1729t1 CREATE TABLE `t1` ( 1730 `a` varchar(1) CHARACTER SET utf32 NOT NULL 1731) ENGINE=MyISAM DEFAULT CHARSET=latin1 1732CREATE TABLE t2 AS SELECT WEIGHT_STRING(a) AS ws FROM t1; 1733SHOW CREATE TABLE t2; 1734Table Create Table 1735t2 CREATE TABLE `t2` ( 1736 `ws` varbinary(2) DEFAULT NULL 1737) ENGINE=MyISAM DEFAULT CHARSET=latin1 1738SELECT HEX(WEIGHT_STRING(a)) FROM t1; 1739HEX(WEIGHT_STRING(a)) 17400041 1741SELECT HEX(ws) FROM t2; 1742HEX(ws) 17430041 1744DROP TABLE t2; 1745DROP TABLE t1; 1746CREATE TABLE t1 AS SELECT REPEAT('a',5) AS a; 1747SHOW CREATE TABLE t1; 1748Table Create Table 1749t1 CREATE TABLE `t1` ( 1750 `a` varchar(5) CHARACTER SET utf32 DEFAULT NULL 1751) ENGINE=MyISAM DEFAULT CHARSET=latin1 1752CREATE TABLE t2 AS SELECT WEIGHT_STRING(a) AS ws FROM t1; 1753SHOW CREATE TABLE t2; 1754Table Create Table 1755t2 CREATE TABLE `t2` ( 1756 `ws` varbinary(10) DEFAULT NULL 1757) ENGINE=MyISAM DEFAULT CHARSET=latin1 1758SELECT HEX(WEIGHT_STRING(a)) FROM t1; 1759HEX(WEIGHT_STRING(a)) 176000410041004100410041 1761SELECT HEX(ws) FROM t2; 1762HEX(ws) 176300410041004100410041 1764DROP TABLE t2; 1765CREATE TABLE t2 AS SELECT WEIGHT_STRING(a AS CHAR(3)) AS ws FROM t1; 1766SHOW CREATE TABLE t2; 1767Table Create Table 1768t2 CREATE TABLE `t2` ( 1769 `ws` varbinary(6) DEFAULT NULL 1770) ENGINE=MyISAM DEFAULT CHARSET=latin1 1771SELECT HEX(WEIGHT_STRING(a AS CHAR(3))) FROM t1; 1772HEX(WEIGHT_STRING(a AS CHAR(3))) 1773004100410041 1774SELECT HEX(ws) FROM t2; 1775HEX(ws) 1776004100410041 1777DROP TABLE t2; 1778CREATE TABLE t2 AS SELECT WEIGHT_STRING(a AS CHAR(10)) AS ws FROM t1; 1779SHOW CREATE TABLE t2; 1780Table Create Table 1781t2 CREATE TABLE `t2` ( 1782 `ws` varbinary(20) DEFAULT NULL 1783) ENGINE=MyISAM DEFAULT CHARSET=latin1 1784SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1; 1785HEX(WEIGHT_STRING(a AS CHAR(10))) 17860041004100410041004100200020002000200020 1787SELECT HEX(ws) FROM t2; 1788HEX(ws) 17890041004100410041004100200020002000200020 1790DROP TABLE t2; 1791DROP TABLE t1; 1792select hex(weight_string('a')); 1793hex(weight_string('a')) 17940041 1795select hex(weight_string('A')); 1796hex(weight_string('A')) 17970041 1798select hex(weight_string('abc')); 1799hex(weight_string('abc')) 1800004100420043 1801select hex(weight_string('abc' as char(2))); 1802hex(weight_string('abc' as char(2))) 180300410042 1804select hex(weight_string('abc' as char(3))); 1805hex(weight_string('abc' as char(3))) 1806004100420043 1807select hex(weight_string('abc' as char(5))); 1808hex(weight_string('abc' as char(5))) 180900410042004300200020 1810select hex(weight_string('abc', 1, 2, 0xC0)); 1811hex(weight_string('abc', 1, 2, 0xC0)) 181200 1813select hex(weight_string('abc', 2, 2, 0xC0)); 1814hex(weight_string('abc', 2, 2, 0xC0)) 18150041 1816select hex(weight_string('abc', 3, 2, 0xC0)); 1817hex(weight_string('abc', 3, 2, 0xC0)) 1818004100 1819select hex(weight_string('abc', 4, 2, 0xC0)); 1820hex(weight_string('abc', 4, 2, 0xC0)) 182100410042 1822select hex(weight_string('abc', 5, 2, 0xC0)); 1823hex(weight_string('abc', 5, 2, 0xC0)) 18240041004200 1825select hex(weight_string('abc',25, 2, 0xC0)); 1826hex(weight_string('abc',25, 2, 0xC0)) 182700410042002000200020002000200020002000200020002000 1828select hex(weight_string('abc', 1, 3, 0xC0)); 1829hex(weight_string('abc', 1, 3, 0xC0)) 183000 1831select hex(weight_string('abc', 2, 3, 0xC0)); 1832hex(weight_string('abc', 2, 3, 0xC0)) 18330041 1834select hex(weight_string('abc', 3, 3, 0xC0)); 1835hex(weight_string('abc', 3, 3, 0xC0)) 1836004100 1837select hex(weight_string('abc', 4, 3, 0xC0)); 1838hex(weight_string('abc', 4, 3, 0xC0)) 183900410042 1840select hex(weight_string('abc', 5, 3, 0xC0)); 1841hex(weight_string('abc', 5, 3, 0xC0)) 18420041004200 1843select hex(weight_string('abc',25, 3, 0xC0)); 1844hex(weight_string('abc',25, 3, 0xC0)) 184500410042004300200020002000200020002000200020002000 1846select hex(weight_string('abc', 1, 4, 0xC0)); 1847hex(weight_string('abc', 1, 4, 0xC0)) 184800 1849select hex(weight_string('abc', 2, 4, 0xC0)); 1850hex(weight_string('abc', 2, 4, 0xC0)) 18510041 1852select hex(weight_string('abc', 3, 4, 0xC0)); 1853hex(weight_string('abc', 3, 4, 0xC0)) 1854004100 1855select hex(weight_string('abc', 4, 4, 0xC0)); 1856hex(weight_string('abc', 4, 4, 0xC0)) 185700410042 1858select hex(weight_string('abc', 5, 4, 0xC0)); 1859hex(weight_string('abc', 5, 4, 0xC0)) 18600041004200 1861select hex(weight_string('abc',25, 4, 0xC0)); 1862hex(weight_string('abc',25, 4, 0xC0)) 186300410042004300200020002000200020002000200020002000 1864select @@collation_connection; 1865@@collation_connection 1866utf32_general_ci 1867select hex(weight_string(cast(_latin1 0x80 as char))); 1868hex(weight_string(cast(_latin1 0x80 as char))) 186920AC 1870select hex(weight_string(cast(_latin1 0x808080 as char))); 1871hex(weight_string(cast(_latin1 0x808080 as char))) 187220AC20AC20AC 1873select hex(weight_string(cast(_latin1 0x808080 as char) as char(2))); 1874hex(weight_string(cast(_latin1 0x808080 as char) as char(2))) 187520AC20AC 1876select hex(weight_string(cast(_latin1 0x808080 as char) as char(3))); 1877hex(weight_string(cast(_latin1 0x808080 as char) as char(3))) 187820AC20AC20AC 1879select hex(weight_string(cast(_latin1 0x808080 as char) as char(5))); 1880hex(weight_string(cast(_latin1 0x808080 as char) as char(5))) 188120AC20AC20AC00200020 1882select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0)); 1883hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0)) 188420 1885select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0)); 1886hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0)) 188720AC 1888select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0)); 1889hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0)) 189020AC20 1891select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0)); 1892hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0)) 189320AC20AC 1894select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0)); 1895hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0)) 189620AC20AC00 1897select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0)); 1898hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0)) 189920AC20AC002000200020002000200020002000200020002000 1900select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0)); 1901hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0)) 190220 1903select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0)); 1904hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0)) 190520AC 1906select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0)); 1907hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0)) 190820AC20 1909select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0)); 1910hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0)) 191120AC20AC 1912select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0)); 1913hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0)) 191420AC20AC20 1915select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0)); 1916hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0)) 191720AC20AC20AC00200020002000200020002000200020002000 1918select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0)); 1919hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0)) 192020 1921select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0)); 1922hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0)) 192320AC 1924select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0)); 1925hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0)) 192620AC20 1927select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0)); 1928hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0)) 192920AC20AC 1930select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0)); 1931hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0)) 193220AC20AC20 1933select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0)); 1934hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0)) 193520AC20AC20AC00200020002000200020002000200020002000 1936select hex(weight_string(_utf32 0x10000)); 1937hex(weight_string(_utf32 0x10000)) 1938FFFD 1939select hex(weight_string(_utf32 0x10001)); 1940hex(weight_string(_utf32 0x10001)) 1941FFFD 1942select @@collation_connection; 1943@@collation_connection 1944utf32_general_ci 1945select hex(weight_string('a' LEVEL 1)); 1946hex(weight_string('a' LEVEL 1)) 19470041 1948select hex(weight_string('A' LEVEL 1)); 1949hex(weight_string('A' LEVEL 1)) 19500041 1951select hex(weight_string('abc' LEVEL 1)); 1952hex(weight_string('abc' LEVEL 1)) 1953004100420043 1954select hex(weight_string('abc' as char(2) LEVEL 1)); 1955hex(weight_string('abc' as char(2) LEVEL 1)) 195600410042 1957select hex(weight_string('abc' as char(3) LEVEL 1)); 1958hex(weight_string('abc' as char(3) LEVEL 1)) 1959004100420043 1960select hex(weight_string('abc' as char(5) LEVEL 1)); 1961hex(weight_string('abc' as char(5) LEVEL 1)) 196200410042004300200020 1963select hex(weight_string('abc' as char(5) LEVEL 1 REVERSE)); 1964hex(weight_string('abc' as char(5) LEVEL 1 REVERSE)) 196520002000430042004100 1966select hex(weight_string('abc' as char(5) LEVEL 1 DESC)); 1967hex(weight_string('abc' as char(5) LEVEL 1 DESC)) 1968FFBEFFBDFFBCFFDFFFDF 1969select hex(weight_string('abc' as char(5) LEVEL 1 DESC REVERSE)); 1970hex(weight_string('abc' as char(5) LEVEL 1 DESC REVERSE)) 1971DFFFDFFFBCFFBDFFBEFF 1972set collation_connection=utf32_bin; 1973select @@collation_connection; 1974@@collation_connection 1975utf32_bin 1976CREATE TABLE t1 AS SELECT 'a' AS a; 1977SHOW CREATE TABLE t1; 1978Table Create Table 1979t1 CREATE TABLE `t1` ( 1980 `a` varchar(1) CHARACTER SET utf32 COLLATE utf32_bin NOT NULL 1981) ENGINE=MyISAM DEFAULT CHARSET=latin1 1982CREATE TABLE t2 AS SELECT WEIGHT_STRING(a) AS ws FROM t1; 1983SHOW CREATE TABLE t2; 1984Table Create Table 1985t2 CREATE TABLE `t2` ( 1986 `ws` varbinary(3) DEFAULT NULL 1987) ENGINE=MyISAM DEFAULT CHARSET=latin1 1988SELECT HEX(WEIGHT_STRING(a)) FROM t1; 1989HEX(WEIGHT_STRING(a)) 1990000061 1991SELECT HEX(ws) FROM t2; 1992HEX(ws) 1993000061 1994DROP TABLE t2; 1995DROP TABLE t1; 1996CREATE TABLE t1 AS SELECT REPEAT('a',5) AS a; 1997SHOW CREATE TABLE t1; 1998Table Create Table 1999t1 CREATE TABLE `t1` ( 2000 `a` varchar(5) CHARACTER SET utf32 COLLATE utf32_bin DEFAULT NULL 2001) ENGINE=MyISAM DEFAULT CHARSET=latin1 2002CREATE TABLE t2 AS SELECT WEIGHT_STRING(a) AS ws FROM t1; 2003SHOW CREATE TABLE t2; 2004Table Create Table 2005t2 CREATE TABLE `t2` ( 2006 `ws` varbinary(15) DEFAULT NULL 2007) ENGINE=MyISAM DEFAULT CHARSET=latin1 2008SELECT HEX(WEIGHT_STRING(a)) FROM t1; 2009HEX(WEIGHT_STRING(a)) 2010000061000061000061000061000061 2011SELECT HEX(ws) FROM t2; 2012HEX(ws) 2013000061000061000061000061000061 2014DROP TABLE t2; 2015CREATE TABLE t2 AS SELECT WEIGHT_STRING(a AS CHAR(3)) AS ws FROM t1; 2016SHOW CREATE TABLE t2; 2017Table Create Table 2018t2 CREATE TABLE `t2` ( 2019 `ws` varbinary(9) DEFAULT NULL 2020) ENGINE=MyISAM DEFAULT CHARSET=latin1 2021SELECT HEX(WEIGHT_STRING(a AS CHAR(3))) FROM t1; 2022HEX(WEIGHT_STRING(a AS CHAR(3))) 2023000061000061000061 2024SELECT HEX(ws) FROM t2; 2025HEX(ws) 2026000061000061000061 2027DROP TABLE t2; 2028CREATE TABLE t2 AS SELECT WEIGHT_STRING(a AS CHAR(10)) AS ws FROM t1; 2029SHOW CREATE TABLE t2; 2030Table Create Table 2031t2 CREATE TABLE `t2` ( 2032 `ws` varbinary(30) DEFAULT NULL 2033) ENGINE=MyISAM DEFAULT CHARSET=latin1 2034SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1; 2035HEX(WEIGHT_STRING(a AS CHAR(10))) 2036000061000061000061000061000061000020000020000020000020000020 2037SELECT HEX(ws) FROM t2; 2038HEX(ws) 2039000061000061000061000061000061000020000020000020000020000020 2040DROP TABLE t2; 2041DROP TABLE t1; 2042select hex(weight_string('a')); 2043hex(weight_string('a')) 2044000061 2045select hex(weight_string('A')); 2046hex(weight_string('A')) 2047000041 2048select hex(weight_string('abc')); 2049hex(weight_string('abc')) 2050000061000062000063 2051select hex(weight_string('abc' as char(2))); 2052hex(weight_string('abc' as char(2))) 2053000061000062 2054select hex(weight_string('abc' as char(3))); 2055hex(weight_string('abc' as char(3))) 2056000061000062000063 2057select hex(weight_string('abc' as char(5))); 2058hex(weight_string('abc' as char(5))) 2059000061000062000063000020000020 2060select hex(weight_string('abc', 1, 2, 0xC0)); 2061hex(weight_string('abc', 1, 2, 0xC0)) 206200 2063select hex(weight_string('abc', 2, 2, 0xC0)); 2064hex(weight_string('abc', 2, 2, 0xC0)) 20650000 2066select hex(weight_string('abc', 3, 2, 0xC0)); 2067hex(weight_string('abc', 3, 2, 0xC0)) 2068000061 2069select hex(weight_string('abc', 4, 2, 0xC0)); 2070hex(weight_string('abc', 4, 2, 0xC0)) 207100006100 2072select hex(weight_string('abc', 5, 2, 0xC0)); 2073hex(weight_string('abc', 5, 2, 0xC0)) 20740000610000 2075select hex(weight_string('abc',25, 2, 0xC0)); 2076hex(weight_string('abc',25, 2, 0xC0)) 207700006100006200002000002000002000002000002000002000 2078select hex(weight_string('abc', 1, 3, 0xC0)); 2079hex(weight_string('abc', 1, 3, 0xC0)) 208000 2081select hex(weight_string('abc', 2, 3, 0xC0)); 2082hex(weight_string('abc', 2, 3, 0xC0)) 20830000 2084select hex(weight_string('abc', 3, 3, 0xC0)); 2085hex(weight_string('abc', 3, 3, 0xC0)) 2086000061 2087select hex(weight_string('abc', 4, 3, 0xC0)); 2088hex(weight_string('abc', 4, 3, 0xC0)) 208900006100 2090select hex(weight_string('abc', 5, 3, 0xC0)); 2091hex(weight_string('abc', 5, 3, 0xC0)) 20920000610000 2093select hex(weight_string('abc',25, 3, 0xC0)); 2094hex(weight_string('abc',25, 3, 0xC0)) 209500006100006200006300002000002000002000002000002000 2096select hex(weight_string('abc', 1, 4, 0xC0)); 2097hex(weight_string('abc', 1, 4, 0xC0)) 209800 2099select hex(weight_string('abc', 2, 4, 0xC0)); 2100hex(weight_string('abc', 2, 4, 0xC0)) 21010000 2102select hex(weight_string('abc', 3, 4, 0xC0)); 2103hex(weight_string('abc', 3, 4, 0xC0)) 2104000061 2105select hex(weight_string('abc', 4, 4, 0xC0)); 2106hex(weight_string('abc', 4, 4, 0xC0)) 210700006100 2108select hex(weight_string('abc', 5, 4, 0xC0)); 2109hex(weight_string('abc', 5, 4, 0xC0)) 21100000610000 2111select hex(weight_string('abc',25, 4, 0xC0)); 2112hex(weight_string('abc',25, 4, 0xC0)) 211300006100006200006300002000002000002000002000002000 2114select @@collation_connection; 2115@@collation_connection 2116utf32_bin 2117select hex(weight_string(cast(_latin1 0x80 as char))); 2118hex(weight_string(cast(_latin1 0x80 as char))) 21190020AC 2120select hex(weight_string(cast(_latin1 0x808080 as char))); 2121hex(weight_string(cast(_latin1 0x808080 as char))) 21220020AC0020AC0020AC 2123select hex(weight_string(cast(_latin1 0x808080 as char) as char(2))); 2124hex(weight_string(cast(_latin1 0x808080 as char) as char(2))) 21250020AC0020AC 2126select hex(weight_string(cast(_latin1 0x808080 as char) as char(3))); 2127hex(weight_string(cast(_latin1 0x808080 as char) as char(3))) 21280020AC0020AC0020AC 2129select hex(weight_string(cast(_latin1 0x808080 as char) as char(5))); 2130hex(weight_string(cast(_latin1 0x808080 as char) as char(5))) 21310020AC0020AC0020AC000020000020 2132select hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0)); 2133hex(weight_string(cast(_latin1 0x808080 as char), 1, 2, 0xC0)) 213400 2135select hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0)); 2136hex(weight_string(cast(_latin1 0x808080 as char), 2, 2, 0xC0)) 21370020 2138select hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0)); 2139hex(weight_string(cast(_latin1 0x808080 as char), 3, 2, 0xC0)) 21400020AC 2141select hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0)); 2142hex(weight_string(cast(_latin1 0x808080 as char), 4, 2, 0xC0)) 21430020AC00 2144select hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0)); 2145hex(weight_string(cast(_latin1 0x808080 as char), 5, 2, 0xC0)) 21460020AC0020 2147select hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0)); 2148hex(weight_string(cast(_latin1 0x808080 as char),25, 2, 0xC0)) 21490020AC0020AC00002000002000002000002000002000002000 2150select hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0)); 2151hex(weight_string(cast(_latin1 0x808080 as char), 1, 3, 0xC0)) 215200 2153select hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0)); 2154hex(weight_string(cast(_latin1 0x808080 as char), 2, 3, 0xC0)) 21550020 2156select hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0)); 2157hex(weight_string(cast(_latin1 0x808080 as char), 3, 3, 0xC0)) 21580020AC 2159select hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0)); 2160hex(weight_string(cast(_latin1 0x808080 as char), 4, 3, 0xC0)) 21610020AC00 2162select hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0)); 2163hex(weight_string(cast(_latin1 0x808080 as char), 5, 3, 0xC0)) 21640020AC0020 2165select hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0)); 2166hex(weight_string(cast(_latin1 0x808080 as char),25, 3, 0xC0)) 21670020AC0020AC0020AC00002000002000002000002000002000 2168select hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0)); 2169hex(weight_string(cast(_latin1 0x808080 as char), 1, 4, 0xC0)) 217000 2171select hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0)); 2172hex(weight_string(cast(_latin1 0x808080 as char), 2, 4, 0xC0)) 21730020 2174select hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0)); 2175hex(weight_string(cast(_latin1 0x808080 as char), 3, 4, 0xC0)) 21760020AC 2177select hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0)); 2178hex(weight_string(cast(_latin1 0x808080 as char), 4, 4, 0xC0)) 21790020AC00 2180select hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0)); 2181hex(weight_string(cast(_latin1 0x808080 as char), 5, 4, 0xC0)) 21820020AC0020 2183select hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0)); 2184hex(weight_string(cast(_latin1 0x808080 as char),25, 4, 0xC0)) 21850020AC0020AC0020AC00002000002000002000002000002000 2186select @@collation_connection; 2187@@collation_connection 2188utf32_bin 2189select hex(weight_string('a' LEVEL 1)); 2190hex(weight_string('a' LEVEL 1)) 2191000061 2192select hex(weight_string('A' LEVEL 1)); 2193hex(weight_string('A' LEVEL 1)) 2194000041 2195select hex(weight_string('abc' LEVEL 1)); 2196hex(weight_string('abc' LEVEL 1)) 2197000061000062000063 2198select hex(weight_string('abc' as char(2) LEVEL 1)); 2199hex(weight_string('abc' as char(2) LEVEL 1)) 2200000061000062 2201select hex(weight_string('abc' as char(3) LEVEL 1)); 2202hex(weight_string('abc' as char(3) LEVEL 1)) 2203000061000062000063 2204select hex(weight_string('abc' as char(5) LEVEL 1)); 2205hex(weight_string('abc' as char(5) LEVEL 1)) 2206000061000062000063000020000020 2207select hex(weight_string('abc' as char(5) LEVEL 1 REVERSE)); 2208hex(weight_string('abc' as char(5) LEVEL 1 REVERSE)) 2209200000200000630000620000610000 2210select hex(weight_string('abc' as char(5) LEVEL 1 DESC)); 2211hex(weight_string('abc' as char(5) LEVEL 1 DESC)) 2212FFFF9EFFFF9DFFFF9CFFFFDFFFFFDF 2213select hex(weight_string('abc' as char(5) LEVEL 1 DESC REVERSE)); 2214hex(weight_string('abc' as char(5) LEVEL 1 DESC REVERSE)) 2215DFFFFFDFFFFF9CFFFF9DFFFF9EFFFF 2216# 2217# End of 5.6 tests 2218# 2219# 2220# Start of 10.0 tests 2221# 2222# 2223# MDEV-6661 PI() does not work well in UCS2/UTF16/UTF32 context 2224# 2225SELECT CONCAT(CONVERT('pi=' USING utf32),PI()) AS PI; 2226PI 2227pi=3.141593 2228# 2229# MDEV-6666 Malformed result for CONCAT(utf8_column, binary_string) 2230# 2231SET NAMES utf8mb4; 2232CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET utf32); 2233INSERT INTO t1 VALUES ('a'); 2234SELECT CONCAT(a,0x20FFFF) FROM t1; 2235ERROR HY000: Invalid utf32 character string: '0020FF' 2236SELECT CONCAT(a,0x010000) FROM t1; 2237CONCAT(a,0x010000) 2238a 2239SELECT CONCAT(a,0x00FF) FROM t1; 2240CONCAT(a,0x00FF) 2241aÿ 2242DROP TABLE t1; 2243SELECT CONCAT(_utf32'a' COLLATE utf32_unicode_ci, _binary 0x20FFFF); 2244ERROR HY000: Invalid utf32 character string: '0020FF' 2245PREPARE stmt FROM "SELECT CONCAT(_utf32'a' COLLATE utf32_unicode_ci, ?)"; 2246SET @arg00=_binary 0x20FFFF; 2247EXECUTE stmt USING @arg00; 2248ERROR HY000: Invalid utf32 character string: '0020FF' 2249SET @arg00=_binary 0x010000; 2250EXECUTE stmt USING @arg00; 2251CONCAT(_utf32'a' COLLATE utf32_unicode_ci, ?) 2252a 2253SET @arg00=_binary 0x00FF; 2254EXECUTE stmt USING @arg00; 2255CONCAT(_utf32'a' COLLATE utf32_unicode_ci, ?) 2256aÿ 2257DEALLOCATE PREPARE stmt; 2258SET NAMEs utf8, character_set_connection=utf32; 2259# 2260# MDEV-13118 Wrong results with LOWER and UPPER and subquery 2261# 2262SET @save_optimizer_switch=@@optimizer_switch; 2263SET optimizer_switch=_latin1'derived_merge=on'; 2264CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS t LIMIT 0; 2265SHOW CREATE TABLE t1; 2266Table Create Table 2267t1 CREATE TABLE `t1` ( 2268 `t` varchar(10) CHARACTER SET utf32 DEFAULT NULL 2269) ENGINE=MyISAM DEFAULT CHARSET=latin1 2270INSERT INTO t1 VALUES ('abcdefghi'),('ABCDEFGHI'); 2271SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT LOWER(t) t2 FROM t1) sub; 2272c2 2273abcdefghi-abcdefghi 2274abcdefghi-abcdefghi 2275SELECT CONCAT(t2,'-',t2) c2 FROM (SELECT UPPER(t) t2 FROM t1) sub; 2276c2 2277ABCDEFGHI-ABCDEFGHI 2278ABCDEFGHI-ABCDEFGHI 2279DROP TABLE t1; 2280SET optimizer_switch=@save_optimizer_switch; 2281# 2282# End of 10.0 tests 2283# 2284# 2285# Start of 10.1 tests 2286# 2287# 2288# MDEV-8419 utf32: compare broken bytes as "greater than any non-broken character" 2289# 2290CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET utf32, KEY(a)); 2291INSERT INTO t1 VALUES (0x10000),(0x10001),(0x10002); 2292SELECT COUNT(DISTINCT a) FROM t1; 2293COUNT(DISTINCT a) 22941 2295DROP TABLE t1; 2296SELECT _utf32 0x10001=_utf32 0x10002; 2297_utf32 0x10001=_utf32 0x10002 22981 2299# 2300# MDEV-9178 Wrong result for CAST(CONVERT('1IJ3' USING ucs2) AS SIGNED) 2301# 2302SET NAMES utf8; 2303SELECT CAST(CONVERT('1IJ3' USING utf32) AS SIGNED); 2304CAST(CONVERT('1IJ3' USING utf32) AS SIGNED) 23051 2306Warnings: 2307Warning 1292 Truncated incorrect INTEGER value: '1IJ3' 2308# 2309# End of 10.1 tests 2310# 2311# 2312# Start of 10.2 tests 2313# 2314# 2315# MDEV-9711 NO PAD Collatons 2316# 2317SET character_set_connection=utf32; 2318SET DEFAULT_STORAGE_ENGINE=MyISAM; 2319# 2320# Start of ctype_pad.inc 2321# 2322# 2323# Unique indexes 2324# 2325CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf32_general_nopad_ci'; 2326SHOW CREATE TABLE t1; 2327Table Create Table 2328t1 CREATE TABLE `t1` ( 2329 `a` varchar(10) COLLATE utf32_general_nopad_ci NOT NULL, 2330 PRIMARY KEY (`a`) 2331) ENGINE=MyISAM DEFAULT CHARSET=utf32 COLLATE=utf32_general_nopad_ci 2332INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a '); 2333SELECT HEX(a), a FROM t1 ORDER BY a; 2334HEX(a) a 23350000002000000061 a 2336000000200000006100000020 a 233700000061000000200000002000000020 a 2338000000610000006200000063 abc 23390000006100000062000000630000002000000020 abc 2340SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a; 2341HEX(a) a 23420000002000000061 a 2343000000200000006100000020 a 234400000061000000200000002000000020 a 2345000000610000006200000063 abc 23460000006100000062000000630000002000000020 abc 2347SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC; 2348HEX(a) a 23490000006100000062000000630000002000000020 abc 2350000000610000006200000063 abc 235100000061000000200000002000000020 a 2352000000200000006100000020 a 23530000002000000061 a 2354# 2355# UNION 2356# 2357CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf32_general_nopad_ci'; 2358INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a '); 2359SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td; 2360HEX(a) a 23610000002000000061 a 2362000000200000006100000020 a 23630000006100000020 a 236400000061000000200000002000000020 a 2365000000610000006200000063 abc 236600000061000000620000006300000020 abc 23670000006100000062000000630000002000000020 abc 2368DROP TABLE t1; 2369DROP TABLE t2; 2370# 2371# DISTINCT, COUNT, MAX 2372# 2373CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf32_general_nopad_ci'; 2374INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a '); 2375SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td; 2376HEX(a) a 23770000002000000061 a 2378000000200000006100000020 a 237900000061 a 2380000000610000002000000020 a 238100000061000000200000002000000020 a 2382SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a; 2383COUNT(DISTINCT a) 23845 2385SELECT HEX(MAX(a)), MAX(a) FROM t1; 2386HEX(MAX(a)) MAX(a) 238700000061000000200000002000000020 a 2388# 2389# GROUP BY 2390# 2391CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf32_general_nopad_ci'; 2392INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er '); 2393SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td; 2394HEX(a) cnt 23950000006100000061 1 239600000061000000610000002000000020 1 23970000006100000062 2 2398DROP TABLE t2; 2399# 2400# Weights 2401# 2402SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1; 2403HEX(WEIGHT_STRING(a AS CHAR(10))) 24040041000000000000000000000000000000000000 24050041002000200000000000000000000000000000 24060020004100000000000000000000000000000000 24070020004100200000000000000000000000000000 24080041002000200020000000000000000000000000 2409DROP TABLE t1; 2410# 2411# IF, CASE, LEAST 2412# 2413SELECT IF('abc' COLLATE 'utf32_general_nopad_ci' = 'abc ', 'pad', 'nopad'); 2414IF('abc' COLLATE 'utf32_general_nopad_ci' = 'abc ', 'pad', 'nopad') 2415nopad 2416SELECT CASE 'abc' COLLATE 'utf32_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; 2417CASE 'abc' COLLATE 'utf32_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END 2418nopad 2419SELECT CASE WHEN 'abc' COLLATE 'utf32_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; 2420CASE WHEN 'abc' COLLATE 'utf32_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END 2421nopad 2422SELECT HEX(LEAST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')); 2423HEX(LEAST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')) 242400000061000000620000006300000020 2425SELECT HEX(GREATEST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')); 2426HEX(GREATEST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')) 24270000006100000062000000630000002000000020 2428# 2429# Collation mix 2430# 2431CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf32_general_ci'; 2432INSERT INTO t1 VALUES ('a'),('a '); 2433SELECT COUNT(*) FROM t1 WHERE a='a'; 2434COUNT(*) 24352 2436SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_general_ci'; 2437COUNT(*) 24382 2439SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_general_nopad_ci'; 2440COUNT(*) 24411 2442ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf32_general_nopad_ci'; 2443SELECT COUNT(*) FROM t1 WHERE a='a'; 2444COUNT(*) 24451 2446SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_general_ci'; 2447COUNT(*) 24482 2449SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_general_nopad_ci'; 2450COUNT(*) 24511 2452DROP TABLE t1; 2453# 2454# End of ctype_pad.inc 2455# 2456SET DEFAULT_STORAGE_ENGINE=HEAP; 2457# 2458# Start of ctype_pad.inc 2459# 2460# 2461# Unique indexes 2462# 2463CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf32_general_nopad_ci'; 2464SHOW CREATE TABLE t1; 2465Table Create Table 2466t1 CREATE TABLE `t1` ( 2467 `a` varchar(10) COLLATE utf32_general_nopad_ci NOT NULL, 2468 PRIMARY KEY (`a`) 2469) ENGINE=MEMORY DEFAULT CHARSET=utf32 COLLATE=utf32_general_nopad_ci 2470INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a '); 2471SELECT HEX(a), a FROM t1 ORDER BY a; 2472HEX(a) a 24730000002000000061 a 2474000000200000006100000020 a 247500000061000000200000002000000020 a 2476000000610000006200000063 abc 24770000006100000062000000630000002000000020 abc 2478SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a; 2479HEX(a) a 24800000002000000061 a 2481000000200000006100000020 a 248200000061000000200000002000000020 a 2483000000610000006200000063 abc 24840000006100000062000000630000002000000020 abc 2485SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC; 2486HEX(a) a 24870000006100000062000000630000002000000020 abc 2488000000610000006200000063 abc 248900000061000000200000002000000020 a 2490000000200000006100000020 a 24910000002000000061 a 2492# 2493# UNION 2494# 2495CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf32_general_nopad_ci'; 2496INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a '); 2497SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td; 2498HEX(a) a 24990000002000000061 a 2500000000200000006100000020 a 25010000006100000020 a 250200000061000000200000002000000020 a 2503000000610000006200000063 abc 250400000061000000620000006300000020 abc 25050000006100000062000000630000002000000020 abc 2506DROP TABLE t1; 2507DROP TABLE t2; 2508# 2509# DISTINCT, COUNT, MAX 2510# 2511CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf32_general_nopad_ci'; 2512INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a '); 2513SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td; 2514HEX(a) a 25150000002000000061 a 2516000000200000006100000020 a 251700000061 a 2518000000610000002000000020 a 251900000061000000200000002000000020 a 2520SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a; 2521COUNT(DISTINCT a) 25225 2523SELECT HEX(MAX(a)), MAX(a) FROM t1; 2524HEX(MAX(a)) MAX(a) 252500000061000000200000002000000020 a 2526# 2527# GROUP BY 2528# 2529CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf32_general_nopad_ci'; 2530INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er '); 2531SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td; 2532HEX(a) cnt 25330000006100000061 1 253400000061000000610000002000000020 1 25350000006100000062 2 2536DROP TABLE t2; 2537# 2538# Weights 2539# 2540SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1; 2541HEX(WEIGHT_STRING(a AS CHAR(10))) 25420041000000000000000000000000000000000000 25430041002000200000000000000000000000000000 25440020004100000000000000000000000000000000 25450020004100200000000000000000000000000000 25460041002000200020000000000000000000000000 2547DROP TABLE t1; 2548# 2549# IF, CASE, LEAST 2550# 2551SELECT IF('abc' COLLATE 'utf32_general_nopad_ci' = 'abc ', 'pad', 'nopad'); 2552IF('abc' COLLATE 'utf32_general_nopad_ci' = 'abc ', 'pad', 'nopad') 2553nopad 2554SELECT CASE 'abc' COLLATE 'utf32_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; 2555CASE 'abc' COLLATE 'utf32_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END 2556nopad 2557SELECT CASE WHEN 'abc' COLLATE 'utf32_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; 2558CASE WHEN 'abc' COLLATE 'utf32_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END 2559nopad 2560SELECT HEX(LEAST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')); 2561HEX(LEAST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')) 256200000061000000620000006300000020 2563SELECT HEX(GREATEST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')); 2564HEX(GREATEST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')) 25650000006100000062000000630000002000000020 2566# 2567# Collation mix 2568# 2569CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf32_general_ci'; 2570INSERT INTO t1 VALUES ('a'),('a '); 2571SELECT COUNT(*) FROM t1 WHERE a='a'; 2572COUNT(*) 25732 2574SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_general_ci'; 2575COUNT(*) 25762 2577SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_general_nopad_ci'; 2578COUNT(*) 25791 2580ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf32_general_nopad_ci'; 2581SELECT COUNT(*) FROM t1 WHERE a='a'; 2582COUNT(*) 25831 2584SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_general_ci'; 2585COUNT(*) 25862 2587SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_general_nopad_ci'; 2588COUNT(*) 25891 2590DROP TABLE t1; 2591# 2592# End of ctype_pad.inc 2593# 2594SET DEFAULT_STORAGE_ENGINE=Default; 2595SET DEFAULT_STORAGE_ENGINE=MyISAM; 2596# 2597# Start of ctype_pad.inc 2598# 2599# 2600# Unique indexes 2601# 2602CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf32_nopad_bin'; 2603SHOW CREATE TABLE t1; 2604Table Create Table 2605t1 CREATE TABLE `t1` ( 2606 `a` varchar(10) COLLATE utf32_nopad_bin NOT NULL, 2607 PRIMARY KEY (`a`) 2608) ENGINE=MyISAM DEFAULT CHARSET=utf32 COLLATE=utf32_nopad_bin 2609INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a '); 2610SELECT HEX(a), a FROM t1 ORDER BY a; 2611HEX(a) a 26120000002000000061 a 2613000000200000006100000020 a 261400000061000000200000002000000020 a 2615000000610000006200000063 abc 26160000006100000062000000630000002000000020 abc 2617SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a; 2618HEX(a) a 26190000002000000061 a 2620000000200000006100000020 a 262100000061000000200000002000000020 a 2622000000610000006200000063 abc 26230000006100000062000000630000002000000020 abc 2624SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC; 2625HEX(a) a 26260000006100000062000000630000002000000020 abc 2627000000610000006200000063 abc 262800000061000000200000002000000020 a 2629000000200000006100000020 a 26300000002000000061 a 2631# 2632# UNION 2633# 2634CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf32_nopad_bin'; 2635INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a '); 2636SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td; 2637HEX(a) a 26380000002000000061 a 2639000000200000006100000020 a 26400000006100000020 a 264100000061000000200000002000000020 a 2642000000610000006200000063 abc 264300000061000000620000006300000020 abc 26440000006100000062000000630000002000000020 abc 2645DROP TABLE t1; 2646DROP TABLE t2; 2647# 2648# DISTINCT, COUNT, MAX 2649# 2650CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf32_nopad_bin'; 2651INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a '); 2652SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td; 2653HEX(a) a 26540000002000000061 a 2655000000200000006100000020 a 265600000061 a 2657000000610000002000000020 a 265800000061000000200000002000000020 a 2659SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a; 2660COUNT(DISTINCT a) 26615 2662SELECT HEX(MAX(a)), MAX(a) FROM t1; 2663HEX(MAX(a)) MAX(a) 266400000061000000200000002000000020 a 2665# 2666# GROUP BY 2667# 2668CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf32_nopad_bin'; 2669INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er '); 2670SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td; 2671HEX(a) cnt 26720000006100000061 1 267300000061000000610000002000000020 1 26740000006100000062 2 2675DROP TABLE t2; 2676# 2677# Weights 2678# 2679SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1; 2680HEX(WEIGHT_STRING(a AS CHAR(10))) 2681000061000000000000000000000000000000000000000000000000000000 2682000061000020000020000000000000000000000000000000000000000000 2683000020000061000000000000000000000000000000000000000000000000 2684000020000061000020000000000000000000000000000000000000000000 2685000061000020000020000020000000000000000000000000000000000000 2686DROP TABLE t1; 2687# 2688# IF, CASE, LEAST 2689# 2690SELECT IF('abc' COLLATE 'utf32_nopad_bin' = 'abc ', 'pad', 'nopad'); 2691IF('abc' COLLATE 'utf32_nopad_bin' = 'abc ', 'pad', 'nopad') 2692nopad 2693SELECT CASE 'abc' COLLATE 'utf32_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; 2694CASE 'abc' COLLATE 'utf32_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END 2695nopad 2696SELECT CASE WHEN 'abc' COLLATE 'utf32_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; 2697CASE WHEN 'abc' COLLATE 'utf32_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END 2698nopad 2699SELECT HEX(LEAST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')); 2700HEX(LEAST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')) 270100000061000000620000006300000020 2702SELECT HEX(GREATEST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')); 2703HEX(GREATEST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')) 27040000006100000062000000630000002000000020 2705# 2706# Collation mix 2707# 2708CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf32_bin'; 2709INSERT INTO t1 VALUES ('a'),('a '); 2710SELECT COUNT(*) FROM t1 WHERE a='a'; 2711COUNT(*) 27122 2713SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_bin'; 2714COUNT(*) 27152 2716SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_nopad_bin'; 2717COUNT(*) 27181 2719ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf32_nopad_bin'; 2720SELECT COUNT(*) FROM t1 WHERE a='a'; 2721COUNT(*) 27221 2723SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_bin'; 2724COUNT(*) 27252 2726SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_nopad_bin'; 2727COUNT(*) 27281 2729DROP TABLE t1; 2730# 2731# End of ctype_pad.inc 2732# 2733SET DEFAULT_STORAGE_ENGINE=HEAP; 2734# 2735# Start of ctype_pad.inc 2736# 2737# 2738# Unique indexes 2739# 2740CREATE TABLE t1 (a VARCHAR(10) PRIMARY KEY) COLLATE 'utf32_nopad_bin'; 2741SHOW CREATE TABLE t1; 2742Table Create Table 2743t1 CREATE TABLE `t1` ( 2744 `a` varchar(10) COLLATE utf32_nopad_bin NOT NULL, 2745 PRIMARY KEY (`a`) 2746) ENGINE=MEMORY DEFAULT CHARSET=utf32 COLLATE=utf32_nopad_bin 2747INSERT INTO t1 VALUES ('abc'),('abc '),(' a'),(' a '),('a '); 2748SELECT HEX(a), a FROM t1 ORDER BY a; 2749HEX(a) a 27500000002000000061 a 2751000000200000006100000020 a 275200000061000000200000002000000020 a 2753000000610000006200000063 abc 27540000006100000062000000630000002000000020 abc 2755SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a; 2756HEX(a) a 27570000002000000061 a 2758000000200000006100000020 a 275900000061000000200000002000000020 a 2760000000610000006200000063 abc 27610000006100000062000000630000002000000020 abc 2762SELECT HEX(a), a FROM t1 IGNORE INDEX(PRIMARY) ORDER BY a DESC; 2763HEX(a) a 27640000006100000062000000630000002000000020 abc 2765000000610000006200000063 abc 276600000061000000200000002000000020 a 2767000000200000006100000020 a 27680000002000000061 a 2769# 2770# UNION 2771# 2772CREATE TABLE t2 (a VARCHAR(10)) COLLATE 'utf32_nopad_bin'; 2773INSERT INTO t2 VALUES ('abc '),('abc '),(' a'),('a '); 2774SELECT HEX(a),a FROM (SELECT * FROM t1 UNION SELECT * FROM t2 ORDER BY a) td; 2775HEX(a) a 27760000002000000061 a 2777000000200000006100000020 a 27780000006100000020 a 277900000061000000200000002000000020 a 2780000000610000006200000063 abc 278100000061000000620000006300000020 abc 27820000006100000062000000630000002000000020 abc 2783DROP TABLE t1; 2784DROP TABLE t2; 2785# 2786# DISTINCT, COUNT, MAX 2787# 2788CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf32_nopad_bin'; 2789INSERT INTO t1 VALUES ('a'),('a '),(' a'),(' a '),('a '); 2790SELECT HEX(a), a FROM (SELECT DISTINCT a FROM t1 ORDER BY a) td; 2791HEX(a) a 27920000002000000061 a 2793000000200000006100000020 a 279400000061 a 2795000000610000002000000020 a 279600000061000000200000002000000020 a 2797SELECT COUNT(DISTINCT a) FROM t1 ORDER BY a; 2798COUNT(DISTINCT a) 27995 2800SELECT HEX(MAX(a)), MAX(a) FROM t1; 2801HEX(MAX(a)) MAX(a) 280200000061000000200000002000000020 a 2803# 2804# GROUP BY 2805# 2806CREATE TABLE t2 (a VARCHAR(10), b int, c varchar(10)) COLLATE 'utf32_nopad_bin'; 2807INSERT t2 values('ab', 12, 'cd'), ('ab', 2, 'ed'), ('aa', 20, 'er'), ('aa ', 0, 'er '); 2808SELECT HEX(a), cnt FROM (SELECT a, COUNT(a) AS cnt FROM t2 GROUP BY a ORDER BY a) AS td; 2809HEX(a) cnt 28100000006100000061 1 281100000061000000610000002000000020 1 28120000006100000062 2 2813DROP TABLE t2; 2814# 2815# Weights 2816# 2817SELECT HEX(WEIGHT_STRING(a AS CHAR(10))) FROM t1; 2818HEX(WEIGHT_STRING(a AS CHAR(10))) 2819000061000000000000000000000000000000000000000000000000000000 2820000061000020000020000000000000000000000000000000000000000000 2821000020000061000000000000000000000000000000000000000000000000 2822000020000061000020000000000000000000000000000000000000000000 2823000061000020000020000020000000000000000000000000000000000000 2824DROP TABLE t1; 2825# 2826# IF, CASE, LEAST 2827# 2828SELECT IF('abc' COLLATE 'utf32_nopad_bin' = 'abc ', 'pad', 'nopad'); 2829IF('abc' COLLATE 'utf32_nopad_bin' = 'abc ', 'pad', 'nopad') 2830nopad 2831SELECT CASE 'abc' COLLATE 'utf32_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; 2832CASE 'abc' COLLATE 'utf32_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END 2833nopad 2834SELECT CASE WHEN 'abc' COLLATE 'utf32_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; 2835CASE WHEN 'abc' COLLATE 'utf32_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END 2836nopad 2837SELECT HEX(LEAST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')); 2838HEX(LEAST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')) 283900000061000000620000006300000020 2840SELECT HEX(GREATEST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')); 2841HEX(GREATEST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')) 28420000006100000062000000630000002000000020 2843# 2844# Collation mix 2845# 2846CREATE TABLE t1 (a VARCHAR(10)) COLLATE 'utf32_bin'; 2847INSERT INTO t1 VALUES ('a'),('a '); 2848SELECT COUNT(*) FROM t1 WHERE a='a'; 2849COUNT(*) 28502 2851SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_bin'; 2852COUNT(*) 28532 2854SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_nopad_bin'; 2855COUNT(*) 28561 2857ALTER TABLE t1 MODIFY a VARCHAR(10) COLLATE 'utf32_nopad_bin'; 2858SELECT COUNT(*) FROM t1 WHERE a='a'; 2859COUNT(*) 28601 2861SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_bin'; 2862COUNT(*) 28632 2864SELECT COUNT(*) FROM t1 WHERE a='a' COLLATE 'utf32_nopad_bin'; 2865COUNT(*) 28661 2867DROP TABLE t1; 2868# 2869# End of ctype_pad.inc 2870# 2871SET DEFAULT_STORAGE_ENGINE=Default; 2872# 2873# MDEV-22111 ERROR 1064 & 1033 and SIGSEGV on CREATE TABLE w/ various charsets on 10.4/5 optimized builds | Assertion `(uint) (table_check_constraints - share->check_constraints) == (uint) (share->table_check_constraints - share->field_check_constraints)' failed 2874# 10.2 tests 2875# 2876SET NAMES utf8, COLLATION_CONNECTION=utf32_bin; 2877CREATE TABLE t1(c1 ENUM('a','b','ac') CHARACTER SET 'Binary',c2 JSON,c3 INT); 2878SHOW CREATE TABLE t1; 2879Table Create Table 2880t1 CREATE TABLE `t1` ( 2881 `c1` enum('\0\0\0a','\0\0\0b','\0\0\0a\0\0\0c') CHARACTER SET binary DEFAULT NULL, 2882 `c2` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`c2`)), 2883 `c3` int(11) DEFAULT NULL 2884) ENGINE=MyISAM DEFAULT CHARSET=latin1 2885INSERT INTO t1 (c1) VALUES (1),(2),(3); 2886SELECT HEX(c1) FROM t1 ORDER BY c1; 2887HEX(c1) 288800000061 288900000062 28900000006100000063 2891DROP TABLE t1; 2892# 2893# End of 10.2 tests 2894# 2895