Commit fad73711 authored by Alexander Barkov's avatar Alexander Barkov

Merging xxx_unicode_520_ci and xxx_vietnamese_ci from MySQL-5.6.

parent 55de9b04
#
# WL#2673 Unicode collation algorithm new version
#
CREATE TABLE t1 AS SELECT repeat('a', 10) as c LIMIT 0;
SHOW CREATE TABLE t1;
#
# Unicode-5.0.0 characters
#
# Latin Extended-B and IP extensions
INSERT INTO t1 VALUES (_utf32 0x0180),(_utf32 0x023A);
INSERT INTO t1 VALUES (_utf32 0x023B),(_utf32 0x023C);
INSERT INTO t1 VALUES (_utf32 0x023D),(_utf32 0x023E);
INSERT INTO t1 VALUES (_utf32 0x0241),(_utf32 0x0242);
INSERT INTO t1 VALUES (_utf32 0x0243),(_utf32 0x0244);
INSERT INTO t1 VALUES (_utf32 0x0245),(_utf32 0x0246);
INSERT INTO t1 VALUES (_utf32 0x0247),(_utf32 0x0248);
INSERT INTO t1 VALUES (_utf32 0x0249),(_utf32 0x024A);
INSERT INTO t1 VALUES (_utf32 0x024B),(_utf32 0x024C);
INSERT INTO t1 VALUES (_utf32 0x024D),(_utf32 0x024E);
INSERT INTO t1 VALUES (_utf32 0x024F),(_utf32 0x026B);
INSERT INTO t1 VALUES (_utf32 0x027D),(_utf32 0x0289);
INSERT INTO t1 VALUES (_utf32 0x028C);
# Greek and Coptic
INSERT INTO t1 VALUES (_utf32 0x037B), (_utf32 0x037C);
INSERT INTO t1 VALUES (_utf32 0x037D), (_utf32 0x03FD);
INSERT INTO t1 VALUES (_utf32 0x03FE), (_utf32 0x03FF);
# Cyrillic
INSERT INTO t1 VALUES (_utf32 0x04C0), (_utf32 0x04CF);
INSERT INTO t1 VALUES (_utf32 0x04F6), (_utf32 0x04F7);
INSERT INTO t1 VALUES (_utf32 0x04FA), (_utf32 0x04FB);
INSERT INTO t1 VALUES (_utf32 0x04FC), (_utf32 0x04FD);
INSERT INTO t1 VALUES (_utf32 0x04FE), (_utf32 0x04FF);
INSERT INTO t1 VALUES (_utf32 0x0510), (_utf32 0x0511);
INSERT INTO t1 VALUES (_utf32 0x0512), (_utf32 0x0513);
# Georgian, Georgian Supplement
INSERT INTO t1 VALUES (_utf32 0x10A0), (_utf32 0x10A1);
INSERT INTO t1 VALUES (_utf32 0x10A2), (_utf32 0x10A3);
INSERT INTO t1 VALUES (_utf32 0x10A4), (_utf32 0x10A5);
INSERT INTO t1 VALUES (_utf32 0x10A6), (_utf32 0x10A7);
INSERT INTO t1 VALUES (_utf32 0x2D00), (_utf32 0x2D01);
INSERT INTO t1 VALUES (_utf32 0x2D02), (_utf32 0x2D03);
INSERT INTO t1 VALUES (_utf32 0x2D04), (_utf32 0x2D05);
INSERT INTO t1 VALUES (_utf32 0x2D06), (_utf32 0x2D07);
# Phonetic Extensions
INSERT INTO t1 VALUES (_utf32 0x1D7D);
# Letterlike Symbols
INSERT INTO t1 VALUES (_utf32 0x2132),(_utf32 0x214E);
# Number Forms
INSERT INTO t1 VALUES (_utf32 0x2183),(_utf32 0x2184);
# Coptic
INSERT INTO t1 VALUES (_utf32 0x2C80), (_utf32 0x2C81);
INSERT INTO t1 VALUES (_utf32 0x2C82), (_utf32 0x2C83);
INSERT INTO t1 VALUES (_utf32 0x2C84), (_utf32 0x2C85);
INSERT INTO t1 VALUES (_utf32 0x2C86), (_utf32 0x2C87);
INSERT INTO t1 VALUES (_utf32 0x2C88), (_utf32 0x2C89);
INSERT INTO t1 VALUES (_utf32 0x2C8A), (_utf32 0x2C8B);
INSERT INTO t1 VALUES (_utf32 0x2C8C), (_utf32 0x2C8D);
INSERT INTO t1 VALUES (_utf32 0x2C8E), (_utf32 0x2C8F);
# Latin Extended-C
INSERT INTO t1 VALUES (_utf32 0x2C60), (_utf32 0x2C61);
INSERT INTO t1 VALUES (_utf32 0x2C62), (_utf32 0x2C63);
INSERT INTO t1 VALUES (_utf32 0x2C64), (_utf32 0x2C65);
INSERT INTO t1 VALUES (_utf32 0x2C66), (_utf32 0x2C67);
INSERT INTO t1 VALUES (_utf32 0x2C68), (_utf32 0x2C69);
INSERT INTO t1 VALUES (_utf32 0x2C6A), (_utf32 0x2C6B);
INSERT INTO t1 VALUES (_utf32 0x2C6C), (_utf32 0x2C75);
INSERT INTO t1 VALUES (_utf32 0x2C76);
# Glagolitic
INSERT INTO t1 VALUES (_utf32 0x2C00), (_utf32 0x2C01);
INSERT INTO t1 VALUES (_utf32 0x2C02), (_utf32 0x2C03);
INSERT INTO t1 VALUES (_utf32 0x2C04), (_utf32 0x2C05);
INSERT INTO t1 VALUES (_utf32 0x2C06), (_utf32 0x2C07);
INSERT INTO t1 VALUES (_utf32 0x2C30), (_utf32 0x2C31);
INSERT INTO t1 VALUES (_utf32 0x2C32), (_utf32 0x2C33);
INSERT INTO t1 VALUES (_utf32 0x2C34), (_utf32 0x2C35);
INSERT INTO t1 VALUES (_utf32 0x2C36), (_utf32 0x2C37);
# Deseret
INSERT INTO t1 VALUES (_utf32 0x10400), (_utf32 0x10401);
INSERT INTO t1 VALUES (_utf32 0x10402), (_utf32 0x10403);
INSERT INTO t1 VALUES (_utf32 0x10404), (_utf32 0x10405);
INSERT INTO t1 VALUES (_utf32 0x10406), (_utf32 0x10407);
INSERT INTO t1 VALUES (_utf32 0x10428), (_utf32 0x10429);
INSERT INTO t1 VALUES (_utf32 0x1042A), (_utf32 0x1042B);
INSERT INTO t1 VALUES (_utf32 0x1042C), (_utf32 0x1042D);
INSERT INTO t1 VALUES (_utf32 0x1042E), (_utf32 0x1042F);
#
# Unicode 5.1.0 characters
#
INSERT INTO t1 VALUES (_utf32 0x0370); # GREEK CAPITAL LETTER HETA
INSERT INTO t1 VALUES (_utf32 0x0371); # GREEK SMALL LETTER HETA
INSERT INTO t1 VALUES (_utf32 0x0372); # GREEK CAPITAL LETTER ARCHAIC SAMPI
INSERT INTO t1 VALUES (_utf32 0x0373); # GREEK SMALL LETTER ARCHAIC SAMPI
INSERT INTO t1 VALUES (_utf32 0x0514); # CYRILLIC CAPITAL LETTER LHA
INSERT INTO t1 VALUES (_utf32 0x0515); # CYRILLIC SMALL LETTER LHA
INSERT INTO t1 VALUES (_utf32 0x0516); # CYRILLIC CAPITAL LETTER RHA
INSERT INTO t1 VALUES (_utf32 0x0517); # CYRILLIC SMALL LETTER RHA
INSERT INTO t1 VALUES (_utf32 0xA640); # CYRILLIC CAPITAL LETTER ZEMLYA
INSERT INTO t1 VALUES (_utf32 0xA641); # CYRILLIC SMALL LETTER ZEMLYA
INSERT INTO t1 VALUES (_utf32 0xA642); # CYRILLIC CAPITAL LETTER DZELO
INSERT INTO t1 VALUES (_utf32 0xA643); # CYRILLIC SMALL LETTER DZELO
INSERT INTO t1 VALUES (_utf32 0xA722); # LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
INSERT INTO t1 VALUES (_utf32 0xA723); # LATIN SMALL LETTER EGYPTOLOGICAL ALEF
INSERT INTO t1 VALUES (_utf32 0xA724); # LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
INSERT INTO t1 VALUES (_utf32 0xA725); # LATIN SMALL LETTER EGYPTOLOGICAL AIN
INSERT INTO t1 VALUES (_utf32 0xA726); # LATIN CAPITAL LETTER HENG
INSERT INTO t1 VALUES (_utf32 0xA727); # LATIN SMALL LETTER HENG
INSERT INTO t1 VALUES (_utf32 0xA728); # LATIN CAPITAL LETTER TZ
INSERT INTO t1 VALUES (_utf32 0xA729); # LATIN SMALL LETTER TZ
INSERT INTO t1 VALUES (_utf32 0xA72A); # LATIN CAPITAL LETTER TRESILLO
INSERT INTO t1 VALUES (_utf32 0xA72B); # LATIN SMALL LETTER TRESILLO
#
# Unicode 5.2.0 characters
#
INSERT INTO t1 VALUES (_utf32 0x2CEB); # COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI;Lu;0;L;;;;;N;;;;2CEC;
INSERT INTO t1 VALUES (_utf32 0x2CEC); # COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI;Ll;0;L;;;;;N;;;2CEB;;2CEB
INSERT INTO t1 VALUES (_utf32 0x2CED); # COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA;Lu;0;L;;;;;N;;;;2CEE;
INSERT INTO t1 VALUES (_utf32 0x2CEE); # COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA;Ll;0;L;;;;;N;;;2CED;;2CED
#
# Check case folding and UCA weights
#
SELECT hex(c), hex(lower(c)), hex(upper(c)), hex(weight_string(c)), c
FROM t1 ORDER BY c, BINARY c;
#
# Check that LIKE works fine with and without index.
# This test makes sure that cs->min_sort_char and cs->max_sort_char
# are set properly
# Also check that LIKE is case insensitive for supplementary characters
#
INSERT INTO t1 VALUES ('a');
INSERT INTO t1 VALUES (concat(_utf32 0x61, _utf32 0xFFFF));
INSERT INTO t1 VALUES (concat(_utf32 0x61, _utf32 0x10FFFF));
INSERT INTO t1 VALUES (concat(_utf32 0x61, _utf32 0x10400));
SELECT hex(c), hex(weight_string(c)) FROM t1 WHERE c LIKE 'a%' ORDER BY c;
SELECT hex(c), hex(weight_string(c)), c FROM t1 WHERE c LIKE _utf32 0x10400 ORDER BY c, BINARY c;
SELECT hex(c), hex(weight_string(c)), c FROM t1 WHERE c LIKE _utf32 0x10428 ORDER BY c, BINARY c;
ALTER TABLE t1 ADD KEY(c);
EXPLAIN SELECT hex(c) FROM t1 WHERE c LIKE 'a%' ORDER BY c;
SELECT hex(c), hex(weight_string(c)) FROM t1 WHERE c LIKE 'a%' ORDER BY c;
SELECT hex(c), hex(weight_string(c)), c FROM t1 WHERE c LIKE _utf32 0x10400 ORDER BY c, BINARY c;
SELECT hex(c), hex(weight_string(c)), c FROM t1 WHERE c LIKE _utf32 0x10428 ORDER BY c, BINARY c;
DROP TABLE t1;
...@@ -1331,6 +1331,137 @@ id name val ...@@ -1331,6 +1331,137 @@ id name val
32 mn 63616109090909090909090909090909 32 mn 63616109090909090909090909090909
32 mx 636161EFBFBFEFBFBFEFBFBFEFBFBF20 32 mx 636161EFBFBFEFBFBFEFBFBFEFBFBF20
32 sp -------------------------------- 32 sp --------------------------------
ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
SELECT * FROM v1;
id name val
1 a
1 mn
1 mx
1 sp --------------------------------
2 a _
2 mn 09090909090909090909090909090909
2 mx F48FBFBFF48FBFBFF48FBFBFF48FBFBF
2 sp --------------------------------
3 a %
3 mn 09090909090909090909090909090909
3 mx F48FBFBFF48FBFBFF48FBFBFF48FBFBF
3 sp --------------------------------
4 a \_
4 mn 5F
4 mx 5F
4 sp --------------------------------
5 a \%
5 mn 25
5 mx 25
5 sp --------------------------------
6 a \
6 mn 5C
6 mx 5C
6 sp --------------------------------
7 a a
7 mn 61
7 mx 61
7 sp --------------------------------
8 a c
8 mn 63
8 mx 63
8 sp --------------------------------
9 a a_
9 mn 61090909090909090909090909090909
9 mx 61F48FBFBFF48FBFBFF48FBFBF202020
9 sp --------------------------------
10 a c_
10 mn 63090909090909090909090909090909
10 mx 63F48FBFBFF48FBFBFF48FBFBF202020
10 sp --------------------------------
11 a a%
11 mn 61090909090909090909090909090909
11 mx 61F48FBFBFF48FBFBFF48FBFBF202020
11 sp --------------------------------
12 a c%
12 mn 63090909090909090909090909090909
12 mx 63F48FBFBFF48FBFBFF48FBFBF202020
12 sp --------------------------------
13 a aa
13 mn 6161
13 mx 6161
13 sp --------------------------------
14 a cc
14 mn 6363
14 mx 6363
14 sp --------------------------------
15 a ch
15 mn 6368
15 mx 6368
15 sp --------------------------------
16 a aa_
16 mn 61610909090909090909090909090909
16 mx 6161F48FBFBFF48FBFBFF48FBFBF2020
16 sp --------------------------------
17 a cc_
17 mn 63630909090909090909090909090909
17 mx 6363F48FBFBFF48FBFBFF48FBFBF2020
17 sp --------------------------------
18 a ch_
18 mn 63680909090909090909090909090909
18 mx 6368F48FBFBFF48FBFBFF48FBFBF2020
18 sp --------------------------------
19 a aa%
19 mn 61610909090909090909090909090909
19 mx 6161F48FBFBFF48FBFBFF48FBFBF2020
19 sp --------------------------------
20 a cc%
20 mn 63630909090909090909090909090909
20 mx 6363F48FBFBFF48FBFBFF48FBFBF2020
20 sp --------------------------------
21 a ch%
21 mn 63680909090909090909090909090909
21 mx 6368F48FBFBFF48FBFBFF48FBFBF2020
21 sp --------------------------------
22 a aaa
22 mn 616161
22 mx 616161
22 sp --------------------------------
23 a ccc
23 mn 636363
23 mx 636363
23 sp --------------------------------
24 a cch
24 mn 636368
24 mx 636368
24 sp --------------------------------
25 a aaa_
25 mn 61616109090909090909090909090909
25 mx 616161F48FBFBFF48FBFBFF48FBFBF20
25 sp --------------------------------
26 a ccc_
26 mn 63636309090909090909090909090909
26 mx 636363F48FBFBFF48FBFBFF48FBFBF20
26 sp --------------------------------
27 a cch_
27 mn 63636809090909090909090909090909
27 mx 636368F48FBFBFF48FBFBFF48FBFBF20
27 sp --------------------------------
28 a aaa%
28 mn 61616109090909090909090909090909
28 mx 616161F48FBFBFF48FBFBFF48FBFBF20
28 sp --------------------------------
29 a ccc%
29 mn 63636309090909090909090909090909
29 mx 636363F48FBFBFF48FBFBFF48FBFBF20
29 sp --------------------------------
30 a cch%
30 mn 63636809090909090909090909090909
30 mx 636368F48FBFBFF48FBFBFF48FBFBF20
30 sp --------------------------------
31 a aaaaaaaaaaaaaaaaaaaa
31 mn 61616161
31 mx 61616161
31 sp --------------------------------
32 a caaaaaaaaaaaaaaaaaaa
32 mn 63616161
32 mx 63616161
32 sp --------------------------------
ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET ucs2; ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET ucs2;
SELECT * FROM v1; SELECT * FROM v1;
id name val id name val
...@@ -2379,6 +2510,137 @@ id name val ...@@ -2379,6 +2510,137 @@ id name val
32 mn 00630061006100090009000900090009 32 mn 00630061006100090009000900090009
32 mx 006300610061FFFFFFFFFFFFFFFFFFFF 32 mx 006300610061FFFFFFFFFFFFFFFFFFFF
32 sp -------------------------------- 32 sp --------------------------------
ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET utf16 COLLATE utf16_unicode_520_ci;
SELECT * FROM v1;
id name val
1 a
1 mn
1 mx
1 sp --------------------------------
2 a _
2 mn 0009
2 mx DBFFDFFF
2 sp --------------------------------
3 a %
3 mn 00090009000900090009000900090009
3 mx DBFFDFFFDBFFDFFFDBFFDFFFDBFFDFFF
3 sp --------------------------------
4 a \_
4 mn 005F
4 mx 005F
4 sp --------------------------------
5 a \%
5 mn 0025
5 mx 0025
5 sp --------------------------------
6 a \
6 mn 005C
6 mx 005C
6 sp --------------------------------
7 a a
7 mn 0061
7 mx 0061
7 sp --------------------------------
8 a c
8 mn 0063
8 mx 0063
8 sp --------------------------------
9 a a_
9 mn 00610009
9 mx 0061DBFFDFFF
9 sp --------------------------------
10 a c_
10 mn 00630009
10 mx 0063DBFFDFFF
10 sp --------------------------------
11 a a%
11 mn 00610009000900090009000900090009
11 mx 0061DBFFDFFFDBFFDFFFDBFFDFFF0000
11 sp --------------------------------
12 a c%
12 mn 00630009000900090009000900090009
12 mx 0063DBFFDFFFDBFFDFFFDBFFDFFF0000
12 sp --------------------------------
13 a aa
13 mn 00610061
13 mx 00610061
13 sp --------------------------------
14 a cc
14 mn 00630063
14 mx 00630063
14 sp --------------------------------
15 a ch
15 mn 00630068
15 mx 00630068
15 sp --------------------------------
16 a aa_
16 mn 006100610009
16 mx 00610061DBFFDFFF
16 sp --------------------------------
17 a cc_
17 mn 006300630009
17 mx 00630063DBFFDFFF
17 sp --------------------------------
18 a ch_
18 mn 006300680009
18 mx 00630068DBFFDFFF
18 sp --------------------------------
19 a aa%
19 mn 00610061000900090009000900090009
19 mx 00610061DBFFDFFFDBFFDFFFDBFFDFFF
19 sp --------------------------------
20 a cc%
20 mn 00630063000900090009000900090009
20 mx 00630063DBFFDFFFDBFFDFFFDBFFDFFF
20 sp --------------------------------
21 a ch%
21 mn 00630068000900090009000900090009
21 mx 00630068DBFFDFFFDBFFDFFFDBFFDFFF
21 sp --------------------------------
22 a aaa
22 mn 006100610061
22 mx 006100610061
22 sp --------------------------------
23 a ccc
23 mn 006300630063
23 mx 006300630063
23 sp --------------------------------
24 a cch
24 mn 006300630068
24 mx 006300630068
24 sp --------------------------------
25 a aaa_
25 mn 0061006100610009
25 mx 006100610061DBFFDFFF
25 sp --------------------------------
26 a ccc_
26 mn 0063006300630009
26 mx 006300630063DBFFDFFF
26 sp --------------------------------
27 a cch_
27 mn 0063006300680009
27 mx 006300630068DBFFDFFF
27 sp --------------------------------
28 a aaa%
28 mn 00610061006100090009000900090009
28 mx 006100610061DBFFDFFFDBFFDFFF0000
28 sp --------------------------------
29 a ccc%
29 mn 00630063006300090009000900090009
29 mx 006300630063DBFFDFFFDBFFDFFF0000
29 sp --------------------------------
30 a cch%
30 mn 00630063006800090009000900090009
30 mx 006300630068DBFFDFFFDBFFDFFF0000
30 sp --------------------------------
31 a aaaaaaaaaaaaaaaaaaaa
31 mn 0061006100610061
31 mx 0061006100610061
31 sp --------------------------------
32 a caaaaaaaaaaaaaaaaaaa
32 mn 0063006100610061
32 mx 0063006100610061
32 sp --------------------------------
ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET utf32; ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET utf32;
SELECT * FROM v1; SELECT * FROM v1;
id name val id name val
...@@ -2903,5 +3165,136 @@ id name val ...@@ -2903,5 +3165,136 @@ id name val
32 mn 00000063000000610000006100000009 32 mn 00000063000000610000006100000009
32 mx 0000006300000061000000610000FFFF 32 mx 0000006300000061000000610000FFFF
32 sp -------------------------------- 32 sp --------------------------------
ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET utf32 COLLATE utf32_unicode_520_ci;
SELECT * FROM v1;
id name val
1 a
1 mn
1 mx
1 sp --------------------------------
2 a _
2 mn 00000009
2 mx 0010FFFF
2 sp --------------------------------
3 a %
3 mn 00000009000000090000000900000009
3 mx 0010FFFF0010FFFF0010FFFF0010FFFF
3 sp --------------------------------
4 a \_
4 mn 0000005F
4 mx 0000005F
4 sp --------------------------------
5 a \%
5 mn 00000025
5 mx 00000025
5 sp --------------------------------
6 a \
6 mn 0000005C
6 mx 0000005C
6 sp --------------------------------
7 a a
7 mn 00000061
7 mx 00000061
7 sp --------------------------------
8 a c
8 mn 00000063
8 mx 00000063
8 sp --------------------------------
9 a a_
9 mn 0000006100000009
9 mx 000000610010FFFF
9 sp --------------------------------
10 a c_
10 mn 0000006300000009
10 mx 000000630010FFFF
10 sp --------------------------------
11 a a%
11 mn 00000061000000090000000900000009
11 mx 000000610010FFFF0010FFFF0010FFFF
11 sp --------------------------------
12 a c%
12 mn 00000063000000090000000900000009
12 mx 000000630010FFFF0010FFFF0010FFFF
12 sp --------------------------------
13 a aa
13 mn 0000006100000061
13 mx 0000006100000061
13 sp --------------------------------
14 a cc
14 mn 0000006300000063
14 mx 0000006300000063
14 sp --------------------------------
15 a ch
15 mn 0000006300000068
15 mx 0000006300000068
15 sp --------------------------------
16 a aa_
16 mn 000000610000006100000009
16 mx 00000061000000610010FFFF
16 sp --------------------------------
17 a cc_
17 mn 000000630000006300000009
17 mx 00000063000000630010FFFF
17 sp --------------------------------
18 a ch_
18 mn 000000630000006800000009
18 mx 00000063000000680010FFFF
18 sp --------------------------------
19 a aa%
19 mn 00000061000000610000000900000009
19 mx 00000061000000610010FFFF0010FFFF
19 sp --------------------------------
20 a cc%
20 mn 00000063000000630000000900000009
20 mx 00000063000000630010FFFF0010FFFF
20 sp --------------------------------
21 a ch%
21 mn 00000063000000680000000900000009
21 mx 00000063000000680010FFFF0010FFFF
21 sp --------------------------------
22 a aaa
22 mn 000000610000006100000061
22 mx 000000610000006100000061
22 sp --------------------------------
23 a ccc
23 mn 000000630000006300000063
23 mx 000000630000006300000063
23 sp --------------------------------
24 a cch
24 mn 000000630000006300000068
24 mx 000000630000006300000068
24 sp --------------------------------
25 a aaa_
25 mn 00000061000000610000006100000009
25 mx 0000006100000061000000610010FFFF
25 sp --------------------------------
26 a ccc_
26 mn 00000063000000630000006300000009
26 mx 0000006300000063000000630010FFFF
26 sp --------------------------------
27 a cch_
27 mn 00000063000000630000006800000009
27 mx 0000006300000063000000680010FFFF
27 sp --------------------------------
28 a aaa%
28 mn 00000061000000610000006100000009
28 mx 0000006100000061000000610010FFFF
28 sp --------------------------------
29 a ccc%
29 mn 00000063000000630000006300000009
29 mx 0000006300000063000000630010FFFF
29 sp --------------------------------
30 a cch%
30 mn 00000063000000630000006800000009
30 mx 0000006300000063000000680010FFFF
30 sp --------------------------------
31 a aaaaaaaaaaaaaaaaaaaa
31 mn 00000061000000610000006100000061
31 mx 00000061000000610000006100000061
31 sp --------------------------------
32 a caaaaaaaaaaaaaaaaaaa
32 mn 00000063000000610000006100000061
32 mx 00000063000000610000006100000061
32 sp --------------------------------
DROP VIEW v1; DROP VIEW v1;
DROP TABLE t1; DROP TABLE t1;
...@@ -2497,6 +2497,215 @@ Z,z,Ź,ź,Ż,ż,Ž,ž ...@@ -2497,6 +2497,215 @@ Z,z,Ź,ź,Ż,ż,Ž,ž
ǁ ǁ
ǂ ǂ
ǃ ǃ
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_unicode_520_ci;
group_concat(c1 order by c1)
÷
×
A,a,À,Á,Â,Ã,Ä,Å,à,á,â,ã,ä,å,Ā,ā,Ă,ă,Ą,ą,Ǎ,ǎ,Ǟ,ǟ,Ǡ,ǡ,Ǻ,ǻ,Ạ,ạ,Ả,ả,Ấ,ấ,Ầ,ầ,Ẩ,ẩ,Ẫ,ẫ,Ậ,ậ,Ắ,ắ,Ằ,ằ,Ẳ,ẳ,Ẵ,ẵ,Ặ,ặ
AA,Aa,aA,aa
AE,Ae,aE,ae,Æ,æ,Ǣ,ǣ,Ǽ,ǽ
B,b
ƀ
Ɓ
Ƃ,ƃ
C,c,Ç,ç,Ć,ć,Ĉ,ĉ,Ċ,ċ,Č,č
CH,Ch,cH,ch
Ƈ,ƈ
D,d,Ð,ð,Ď,ď,Đ,đ
DZ,Dz,DŽ,Dž,dZ,dz,dŽ,dž,DŽ,Dž,dž,DZ,Dz,dz
Ɖ
Ɗ
Ƌ,ƌ
E,e,È,É,Ê,Ë,è,é,ê,ë,Ē,ē,Ĕ,ĕ,Ė,ė,Ę,ę,Ě,ě,Ẹ,ẹ,Ẻ,ẻ,Ẽ,ẽ,Ế,ế,Ề,ề,Ể,ể,Ễ,ễ,Ệ,ệ
Ǝ,ǝ
Ə
Ɛ
F,f
Ƒ,ƒ
G,g,Ĝ,ĝ,Ğ,ğ,Ġ,ġ,Ģ,ģ,Ǧ,ǧ,Ǵ,ǵ
Ǥ,ǥ
Ɠ
Ɣ
Ƣ,ƣ
H,h,Ĥ,ĥ,Ħ,ħ
ƕ,Ƕ
I,i,Ì,Í,Î,Ï,ì,í,î,ï,Ĩ,ĩ,Ī,ī,Ĭ,ĭ,Į,į,İ,Ǐ,ǐ,Ỉ,ỉ,Ị,ị
IJ,Ij,iJ,ij,IJ,ij
ı
Ɨ
Ɩ
J,j,Ĵ,ĵ,ǰ
K,k,Ķ,ķ,Ǩ,ǩ
Ƙ,ƙ
L,l,Ĺ,ĺ,Ļ,ļ,Ľ,ľ,Ŀ,ŀ,Ł,ł
LJ,Lj,lJ,lj,LJ,Lj,lj
LL,Ll,lL,ll
ƚ
ƛ
M,m
N,n,Ñ,ñ,Ń,ń,Ņ,ņ,Ň,ň,Ǹ,ǹ
NJ,Nj,nJ,nj,NJ,Nj,nj
Ɲ
ƞ
Ŋ,ŋ
O,o,Ò,Ó,Ô,Õ,Ö,Ø,ò,ó,ô,õ,ö,ø,Ō,ō,Ŏ,ŏ,Ő,ő,Ơ,ơ,Ǒ,ǒ,Ǫ,ǫ,Ǭ,ǭ,Ǿ,ǿ,Ọ,ọ,Ỏ,ỏ,Ố,ố,Ồ,ồ,Ổ,ổ,Ỗ,ỗ,Ộ,ộ,Ớ,ớ,Ờ,ờ,Ở,ở,Ỡ,ỡ,Ợ,ợ
OE,Oe,oE,oe,Œ,œ
Ɔ
Ɵ
P,p
Ƥ,ƥ
Q,q
ĸ
R,r,Ŕ,ŕ,Ŗ,ŗ,Ř,ř
RR,Rr,rR,rr
Ʀ
S,s,Ś,ś,Ŝ,ŝ,Ş,ş,Š,š,ſ
SS,Ss,sS,ss,ß
Ʃ
ƪ
T,t,Ţ,ţ,Ť,ť
ƾ
Ŧ,ŧ
ƫ
Ƭ,ƭ
Ʈ
U,u,Ù,Ú,Û,Ü,ù,ú,û,ü,Ũ,ũ,Ū,ū,Ŭ,ŭ,Ů,ů,Ű,ű,Ų,ų,Ư,ư,Ǔ,ǔ,Ǖ,ǖ,Ǘ,ǘ,Ǚ,ǚ,Ǜ,ǜ,Ụ,ụ,Ủ,ủ,Ứ,ứ,Ừ,ừ,Ử,ử,Ữ,ữ,Ự,ự
Ɯ
Ʊ
V,v
Ʋ
W,w,Ŵ,ŵ
X,x
Y,y,Ý,ý,ÿ,Ŷ,ŷ,Ÿ
Ƴ,ƴ
Z,z,Ź,ź,Ż,ż,Ž,ž
ƍ
Ƶ,ƶ
Ʒ,Ǯ,ǯ
Ƹ,ƹ
ƺ
Þ,þ
ƿ,Ƿ
ƻ
Ƨ,ƨ
Ƽ,ƽ
Ƅ,ƅ
ʼn
ǀ
ǁ
ǂ
ǃ
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_vietnamese_ci;
group_concat(c1 order by c1)
÷
×
A,a,À,Á,Ã,Ä,Å,à,á,ã,ä,å,Ā,ā,Ą,ą,Ǎ,ǎ,Ǟ,ǟ,Ǡ,ǡ,Ǻ,ǻ,Ạ,ạ,Ả,ả
AA,Aa,aA,aa
AE,Ae,aE,ae
Ă,ă,Ắ,ắ,Ằ,ằ,Ẳ,ẳ,Ẵ,ẵ,Ặ,ặ
Â,â,Ấ,ấ,Ầ,ầ,Ẩ,ẩ,Ẫ,ẫ,Ậ,ậ
Æ,æ,Ǣ,ǣ,Ǽ,ǽ
B,b
ƀ
Ɓ
Ƃ,ƃ
C,c,Ç,ç,Ć,ć,Ĉ,ĉ,Ċ,ċ,Č,č
CH,Ch,cH,ch
Ƈ,ƈ
D,d,Ď,ď
DZ,Dz,DŽ,Dž,dZ,dz,dŽ,dž,DŽ,Dž,dž,DZ,Dz,dz
Đ,đ
Ɖ
Ɗ
Ƌ,ƌ
Ð,ð
E,e,È,É,Ë,è,é,ë,Ē,ē,Ĕ,ĕ,Ė,ė,Ę,ę,Ě,ě,Ẹ,ẹ,Ẻ,ẻ,Ẽ,ẽ
Ê,ê,Ế,ế,Ề,ề,Ể,ể,Ễ,ễ,Ệ,ệ
Ǝ,ǝ
Ə
Ɛ
F,f
Ƒ,ƒ
G,g,Ĝ,ĝ,Ğ,ğ,Ġ,ġ,Ģ,ģ,Ǧ,ǧ,Ǵ,ǵ
Ǥ,ǥ
Ɠ
Ɣ
Ƣ,ƣ
H,h,Ĥ,ĥ
ƕ,Ƕ
Ħ,ħ
I,i,Ì,Í,Î,Ï,ì,í,î,ï,Ĩ,ĩ,Ī,ī,Ĭ,ĭ,Į,į,İ,Ǐ,ǐ,Ỉ,ỉ,Ị,ị
IJ,Ij,iJ,ij,IJ,ij
ı
Ɨ
Ɩ
J,j,Ĵ,ĵ,ǰ
K,k,Ķ,ķ,Ǩ,ǩ
Ƙ,ƙ
L,l,Ĺ,ĺ,Ļ,ļ,Ľ,ľ
Ŀ,ŀ
LJ,Lj,lJ,lj,LJ,Lj,lj
LL,Ll,lL,ll
Ł,ł
ƚ
ƛ
M,m
N,n,Ñ,ñ,Ń,ń,Ņ,ņ,Ň,ň,Ǹ,ǹ
NJ,Nj,nJ,nj,NJ,Nj,nj
Ɲ
ƞ
Ŋ,ŋ
O,o,Ò,Ó,Õ,Ö,ò,ó,õ,ö,Ō,ō,Ŏ,ŏ,Ő,ő,Ǒ,ǒ,Ǫ,ǫ,Ǭ,ǭ,Ọ,ọ,Ỏ,ỏ
OE,Oe,oE,oe,Œ,œ
Ô,ô,Ố,ố,Ồ,ồ,Ổ,ổ,Ỗ,ỗ,Ộ,ộ
Ơ,ơ,Ớ,ớ,Ờ,ờ,Ở,ở,Ỡ,ỡ,Ợ,ợ
Ø,ø,Ǿ,ǿ
Ɔ
Ɵ
P,p
Ƥ,ƥ
Q,q
ĸ
R,r,Ŕ,ŕ,Ŗ,ŗ,Ř,ř
RR,Rr,rR,rr
Ʀ
S,s,Ś,ś,Ŝ,ŝ,Ş,ş,Š,š,ſ
SS,Ss,sS,ss,ß
Ʃ
ƪ
T,t,Ţ,ţ,Ť,ť
ƾ
Ŧ,ŧ
ƫ
Ƭ,ƭ
Ʈ
U,u,Ù,Ú,Û,Ü,ù,ú,û,ü,Ũ,ũ,Ū,ū,Ŭ,ŭ,Ů,ů,Ű,ű,Ų,ų,Ǔ,ǔ,Ǖ,ǖ,Ǘ,ǘ,Ǚ,ǚ,Ǜ,ǜ,Ụ,ụ,Ủ,ủ
Ư,ư,Ứ,ứ,Ừ,ừ,Ử,ử,Ữ,ữ,Ự,ự
Ɯ
Ʊ
V,v
Ʋ
W,w,Ŵ,ŵ
X,x
Y,y,Ý,ý,ÿ,Ŷ,ŷ,Ÿ
Ƴ,ƴ
Z,z,Ź,ź,Ż,ż,Ž,ž
ƍ
Ƶ,ƶ
Ʒ,Ǯ,ǯ
Ƹ,ƹ
ƺ
Þ,þ
ƿ,Ƿ
ƻ
Ƨ,ƨ
Ƽ,ƽ
Ƅ,ƅ
ʼn
ǀ
ǁ
ǂ
ǃ
ALTER TABLE t1 CONVERT TO CHARACTER SET ucs2 COLLATE ucs2_bin; ALTER TABLE t1 CONVERT TO CHARACTER SET ucs2 COLLATE ucs2_bin;
SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_unicode_ci; SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_unicode_ci;
GROUP_CONCAT(c1 ORDER BY c1) GROUP_CONCAT(c1 ORDER BY c1)
...@@ -4806,6 +5015,215 @@ Z,z,Ź,ź,Ż,ż,Ž,ž ...@@ -4806,6 +5015,215 @@ Z,z,Ź,ź,Ż,ż,Ž,ž
ǁ ǁ
ǂ ǂ
ǃ ǃ
SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_unicode_520_ci;
GROUP_CONCAT(c1 ORDER BY c1)
÷
×
A,a,À,Á,Â,Ã,Ä,Å,à,á,â,ã,ä,å,Ā,ā,Ă,ă,Ą,ą,Ǎ,ǎ,Ǟ,ǟ,Ǡ,ǡ,Ǻ,ǻ,Ạ,ạ,Ả,ả,Ấ,ấ,Ầ,ầ,Ẩ,ẩ,Ẫ,ẫ,Ậ,ậ,Ắ,ắ,Ằ,ằ,Ẳ,ẳ,Ẵ,ẵ,Ặ,ặ
AA,Aa,aA,aa
AE,Ae,aE,ae,Æ,æ,Ǣ,ǣ,Ǽ,ǽ
B,b
ƀ
Ɓ
Ƃ,ƃ
C,c,Ç,ç,Ć,ć,Ĉ,ĉ,Ċ,ċ,Č,č
CH,Ch,cH,ch
Ƈ,ƈ
D,d,Ð,ð,Ď,ď,Đ,đ
DZ,Dz,DŽ,Dž,dZ,dz,dŽ,dž,DŽ,Dž,dž,DZ,Dz,dz
Ɖ
Ɗ
Ƌ,ƌ
E,e,È,É,Ê,Ë,è,é,ê,ë,Ē,ē,Ĕ,ĕ,Ė,ė,Ę,ę,Ě,ě,Ẹ,ẹ,Ẻ,ẻ,Ẽ,ẽ,Ế,ế,Ề,ề,Ể,ể,Ễ,ễ,Ệ,ệ
Ǝ,ǝ
Ə
Ɛ
F,f
Ƒ,ƒ
G,g,Ĝ,ĝ,Ğ,ğ,Ġ,ġ,Ģ,ģ,Ǧ,ǧ,Ǵ,ǵ
Ǥ,ǥ
Ɠ
Ɣ
Ƣ,ƣ
H,h,Ĥ,ĥ,Ħ,ħ
ƕ,Ƕ
I,i,Ì,Í,Î,Ï,ì,í,î,ï,Ĩ,ĩ,Ī,ī,Ĭ,ĭ,Į,į,İ,Ǐ,ǐ,Ỉ,ỉ,Ị,ị
IJ,Ij,iJ,ij,IJ,ij
ı
Ɨ
Ɩ
J,j,Ĵ,ĵ,ǰ
K,k,Ķ,ķ,Ǩ,ǩ
Ƙ,ƙ
L,l,Ĺ,ĺ,Ļ,ļ,Ľ,ľ,Ŀ,ŀ,Ł,ł
LJ,Lj,lJ,lj,LJ,Lj,lj
LL,Ll,lL,ll
ƚ
ƛ
M,m
N,n,Ñ,ñ,Ń,ń,Ņ,ņ,Ň,ň,Ǹ,ǹ
NJ,Nj,nJ,nj,NJ,Nj,nj
Ɲ
ƞ
Ŋ,ŋ
O,o,Ò,Ó,Ô,Õ,Ö,Ø,ò,ó,ô,õ,ö,ø,Ō,ō,Ŏ,ŏ,Ő,ő,Ơ,ơ,Ǒ,ǒ,Ǫ,ǫ,Ǭ,ǭ,Ǿ,ǿ,Ọ,ọ,Ỏ,ỏ,Ố,ố,Ồ,ồ,Ổ,ổ,Ỗ,ỗ,Ộ,ộ,Ớ,ớ,Ờ,ờ,Ở,ở,Ỡ,ỡ,Ợ,ợ
OE,Oe,oE,oe,Œ,œ
Ɔ
Ɵ
P,p
Ƥ,ƥ
Q,q
ĸ
R,r,Ŕ,ŕ,Ŗ,ŗ,Ř,ř
RR,Rr,rR,rr
Ʀ
S,s,Ś,ś,Ŝ,ŝ,Ş,ş,Š,š,ſ
SS,Ss,sS,ss,ß
Ʃ
ƪ
T,t,Ţ,ţ,Ť,ť
ƾ
Ŧ,ŧ
ƫ
Ƭ,ƭ
Ʈ
U,u,Ù,Ú,Û,Ü,ù,ú,û,ü,Ũ,ũ,Ū,ū,Ŭ,ŭ,Ů,ů,Ű,ű,Ų,ų,Ư,ư,Ǔ,ǔ,Ǖ,ǖ,Ǘ,ǘ,Ǚ,ǚ,Ǜ,ǜ,Ụ,ụ,Ủ,ủ,Ứ,ứ,Ừ,ừ,Ử,ử,Ữ,ữ,Ự,ự
Ɯ
Ʊ
V,v
Ʋ
W,w,Ŵ,ŵ
X,x
Y,y,Ý,ý,ÿ,Ŷ,ŷ,Ÿ
Ƴ,ƴ
Z,z,Ź,ź,Ż,ż,Ž,ž
ƍ
Ƶ,ƶ
Ʒ,Ǯ,ǯ
Ƹ,ƹ
ƺ
Þ,þ
ƿ,Ƿ
ƻ
Ƨ,ƨ
Ƽ,ƽ
Ƅ,ƅ
ʼn
ǀ
ǁ
ǂ
ǃ
SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_vietnamese_ci;
GROUP_CONCAT(c1 ORDER BY c1)
÷
×
A,a,À,Á,Ã,Ä,Å,à,á,ã,ä,å,Ā,ā,Ą,ą,Ǎ,ǎ,Ǟ,ǟ,Ǡ,ǡ,Ǻ,ǻ,Ạ,ạ,Ả,ả
AA,Aa,aA,aa
AE,Ae,aE,ae
Ă,ă,Ắ,ắ,Ằ,ằ,Ẳ,ẳ,Ẵ,ẵ,Ặ,ặ
Â,â,Ấ,ấ,Ầ,ầ,Ẩ,ẩ,Ẫ,ẫ,Ậ,ậ
Æ,æ,Ǣ,ǣ,Ǽ,ǽ
B,b
ƀ
Ɓ
Ƃ,ƃ
C,c,Ç,ç,Ć,ć,Ĉ,ĉ,Ċ,ċ,Č,č
CH,Ch,cH,ch
Ƈ,ƈ
D,d,Ď,ď
DZ,Dz,DŽ,Dž,dZ,dz,dŽ,dž,DŽ,Dž,dž,DZ,Dz,dz
Đ,đ
Ɖ
Ɗ
Ƌ,ƌ
Ð,ð
E,e,È,É,Ë,è,é,ë,Ē,ē,Ĕ,ĕ,Ė,ė,Ę,ę,Ě,ě,Ẹ,ẹ,Ẻ,ẻ,Ẽ,ẽ
Ê,ê,Ế,ế,Ề,ề,Ể,ể,Ễ,ễ,Ệ,ệ
Ǝ,ǝ
Ə
Ɛ
F,f
Ƒ,ƒ
G,g,Ĝ,ĝ,Ğ,ğ,Ġ,ġ,Ģ,ģ,Ǧ,ǧ,Ǵ,ǵ
Ǥ,ǥ
Ɠ
Ɣ
Ƣ,ƣ
H,h,Ĥ,ĥ
ƕ,Ƕ
Ħ,ħ
I,i,Ì,Í,Î,Ï,ì,í,î,ï,Ĩ,ĩ,Ī,ī,Ĭ,ĭ,Į,į,İ,Ǐ,ǐ,Ỉ,ỉ,Ị,ị
IJ,Ij,iJ,ij,IJ,ij
ı
Ɨ
Ɩ
J,j,Ĵ,ĵ,ǰ
K,k,Ķ,ķ,Ǩ,ǩ
Ƙ,ƙ
L,l,Ĺ,ĺ,Ļ,ļ,Ľ,ľ
Ŀ,ŀ
LJ,Lj,lJ,lj,LJ,Lj,lj
LL,Ll,lL,ll
Ł,ł
ƚ
ƛ
M,m
N,n,Ñ,ñ,Ń,ń,Ņ,ņ,Ň,ň,Ǹ,ǹ
NJ,Nj,nJ,nj,NJ,Nj,nj
Ɲ
ƞ
Ŋ,ŋ
O,o,Ò,Ó,Õ,Ö,ò,ó,õ,ö,Ō,ō,Ŏ,ŏ,Ő,ő,Ǒ,ǒ,Ǫ,ǫ,Ǭ,ǭ,Ọ,ọ,Ỏ,ỏ
OE,Oe,oE,oe,Œ,œ
Ô,ô,Ố,ố,Ồ,ồ,Ổ,ổ,Ỗ,ỗ,Ộ,ộ
Ơ,ơ,Ớ,ớ,Ờ,ờ,Ở,ở,Ỡ,ỡ,Ợ,ợ
Ø,ø,Ǿ,ǿ
Ɔ
Ɵ
P,p
Ƥ,ƥ
Q,q
ĸ
R,r,Ŕ,ŕ,Ŗ,ŗ,Ř,ř
RR,Rr,rR,rr
Ʀ
S,s,Ś,ś,Ŝ,ŝ,Ş,ş,Š,š,ſ
SS,Ss,sS,ss,ß
Ʃ
ƪ
T,t,Ţ,ţ,Ť,ť
ƾ
Ŧ,ŧ
ƫ
Ƭ,ƭ
Ʈ
U,u,Ù,Ú,Û,Ü,ù,ú,û,ü,Ũ,ũ,Ū,ū,Ŭ,ŭ,Ů,ů,Ű,ű,Ų,ų,Ǔ,ǔ,Ǖ,ǖ,Ǘ,ǘ,Ǚ,ǚ,Ǜ,ǜ,Ụ,ụ,Ủ,ủ
Ư,ư,Ứ,ứ,Ừ,ừ,Ử,ử,Ữ,ữ,Ự,ự
Ɯ
Ʊ
V,v
Ʋ
W,w,Ŵ,ŵ
X,x
Y,y,Ý,ý,ÿ,Ŷ,ŷ,Ÿ
Ƴ,ƴ
Z,z,Ź,ź,Ż,ż,Ž,ž
ƍ
Ƶ,ƶ
Ʒ,Ǯ,ǯ
Ƹ,ƹ
ƺ
Þ,þ
ƿ,Ƿ
ƻ
Ƨ,ƨ
Ƽ,ƽ
Ƅ,ƅ
ʼn
ǀ
ǁ
ǂ
ǃ
drop table t1; drop table t1;
SET NAMES utf8; SET NAMES utf8;
CREATE TABLE t1 (c varchar(255) NOT NULL COLLATE utf8_general_ci, INDEX (c)); CREATE TABLE t1 (c varchar(255) NOT NULL COLLATE utf8_general_ci, INDEX (c));
...@@ -6902,5 +7320,302 @@ s 0 ...@@ -6902,5 +7320,302 @@ s 0
DROP TABLE t1; DROP TABLE t1;
"END ctype_german.inc" "END ctype_german.inc"
# #
# WL#2673 Unicode Collation Algorithm new version
#
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_520_ci;
CREATE TABLE t1 AS SELECT repeat('a', 10) as c LIMIT 0;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
INSERT INTO t1 VALUES (_utf32 0x0180),(_utf32 0x023A);
INSERT INTO t1 VALUES (_utf32 0x023B),(_utf32 0x023C);
INSERT INTO t1 VALUES (_utf32 0x023D),(_utf32 0x023E);
INSERT INTO t1 VALUES (_utf32 0x0241),(_utf32 0x0242);
INSERT INTO t1 VALUES (_utf32 0x0243),(_utf32 0x0244);
INSERT INTO t1 VALUES (_utf32 0x0245),(_utf32 0x0246);
INSERT INTO t1 VALUES (_utf32 0x0247),(_utf32 0x0248);
INSERT INTO t1 VALUES (_utf32 0x0249),(_utf32 0x024A);
INSERT INTO t1 VALUES (_utf32 0x024B),(_utf32 0x024C);
INSERT INTO t1 VALUES (_utf32 0x024D),(_utf32 0x024E);
INSERT INTO t1 VALUES (_utf32 0x024F),(_utf32 0x026B);
INSERT INTO t1 VALUES (_utf32 0x027D),(_utf32 0x0289);
INSERT INTO t1 VALUES (_utf32 0x028C);
INSERT INTO t1 VALUES (_utf32 0x037B), (_utf32 0x037C);
INSERT INTO t1 VALUES (_utf32 0x037D), (_utf32 0x03FD);
INSERT INTO t1 VALUES (_utf32 0x03FE), (_utf32 0x03FF);
INSERT INTO t1 VALUES (_utf32 0x04C0), (_utf32 0x04CF);
INSERT INTO t1 VALUES (_utf32 0x04F6), (_utf32 0x04F7);
INSERT INTO t1 VALUES (_utf32 0x04FA), (_utf32 0x04FB);
INSERT INTO t1 VALUES (_utf32 0x04FC), (_utf32 0x04FD);
INSERT INTO t1 VALUES (_utf32 0x04FE), (_utf32 0x04FF);
INSERT INTO t1 VALUES (_utf32 0x0510), (_utf32 0x0511);
INSERT INTO t1 VALUES (_utf32 0x0512), (_utf32 0x0513);
INSERT INTO t1 VALUES (_utf32 0x10A0), (_utf32 0x10A1);
INSERT INTO t1 VALUES (_utf32 0x10A2), (_utf32 0x10A3);
INSERT INTO t1 VALUES (_utf32 0x10A4), (_utf32 0x10A5);
INSERT INTO t1 VALUES (_utf32 0x10A6), (_utf32 0x10A7);
INSERT INTO t1 VALUES (_utf32 0x2D00), (_utf32 0x2D01);
INSERT INTO t1 VALUES (_utf32 0x2D02), (_utf32 0x2D03);
INSERT INTO t1 VALUES (_utf32 0x2D04), (_utf32 0x2D05);
INSERT INTO t1 VALUES (_utf32 0x2D06), (_utf32 0x2D07);
INSERT INTO t1 VALUES (_utf32 0x1D7D);
INSERT INTO t1 VALUES (_utf32 0x2132),(_utf32 0x214E);
INSERT INTO t1 VALUES (_utf32 0x2183),(_utf32 0x2184);
INSERT INTO t1 VALUES (_utf32 0x2C80), (_utf32 0x2C81);
INSERT INTO t1 VALUES (_utf32 0x2C82), (_utf32 0x2C83);
INSERT INTO t1 VALUES (_utf32 0x2C84), (_utf32 0x2C85);
INSERT INTO t1 VALUES (_utf32 0x2C86), (_utf32 0x2C87);
INSERT INTO t1 VALUES (_utf32 0x2C88), (_utf32 0x2C89);
INSERT INTO t1 VALUES (_utf32 0x2C8A), (_utf32 0x2C8B);
INSERT INTO t1 VALUES (_utf32 0x2C8C), (_utf32 0x2C8D);
INSERT INTO t1 VALUES (_utf32 0x2C8E), (_utf32 0x2C8F);
INSERT INTO t1 VALUES (_utf32 0x2C60), (_utf32 0x2C61);
INSERT INTO t1 VALUES (_utf32 0x2C62), (_utf32 0x2C63);
INSERT INTO t1 VALUES (_utf32 0x2C64), (_utf32 0x2C65);
INSERT INTO t1 VALUES (_utf32 0x2C66), (_utf32 0x2C67);
INSERT INTO t1 VALUES (_utf32 0x2C68), (_utf32 0x2C69);
INSERT INTO t1 VALUES (_utf32 0x2C6A), (_utf32 0x2C6B);
INSERT INTO t1 VALUES (_utf32 0x2C6C), (_utf32 0x2C75);
INSERT INTO t1 VALUES (_utf32 0x2C76);
INSERT INTO t1 VALUES (_utf32 0x2C00), (_utf32 0x2C01);
INSERT INTO t1 VALUES (_utf32 0x2C02), (_utf32 0x2C03);
INSERT INTO t1 VALUES (_utf32 0x2C04), (_utf32 0x2C05);
INSERT INTO t1 VALUES (_utf32 0x2C06), (_utf32 0x2C07);
INSERT INTO t1 VALUES (_utf32 0x2C30), (_utf32 0x2C31);
INSERT INTO t1 VALUES (_utf32 0x2C32), (_utf32 0x2C33);
INSERT INTO t1 VALUES (_utf32 0x2C34), (_utf32 0x2C35);
INSERT INTO t1 VALUES (_utf32 0x2C36), (_utf32 0x2C37);
INSERT INTO t1 VALUES (_utf32 0x10400), (_utf32 0x10401);
INSERT INTO t1 VALUES (_utf32 0x10402), (_utf32 0x10403);
INSERT INTO t1 VALUES (_utf32 0x10404), (_utf32 0x10405);
INSERT INTO t1 VALUES (_utf32 0x10406), (_utf32 0x10407);
INSERT INTO t1 VALUES (_utf32 0x10428), (_utf32 0x10429);
INSERT INTO t1 VALUES (_utf32 0x1042A), (_utf32 0x1042B);
INSERT INTO t1 VALUES (_utf32 0x1042C), (_utf32 0x1042D);
INSERT INTO t1 VALUES (_utf32 0x1042E), (_utf32 0x1042F);
INSERT INTO t1 VALUES (_utf32 0x0370);
INSERT INTO t1 VALUES (_utf32 0x0371);
INSERT INTO t1 VALUES (_utf32 0x0372);
INSERT INTO t1 VALUES (_utf32 0x0373);
INSERT INTO t1 VALUES (_utf32 0x0514);
INSERT INTO t1 VALUES (_utf32 0x0515);
INSERT INTO t1 VALUES (_utf32 0x0516);
INSERT INTO t1 VALUES (_utf32 0x0517);
INSERT INTO t1 VALUES (_utf32 0xA640);
INSERT INTO t1 VALUES (_utf32 0xA641);
INSERT INTO t1 VALUES (_utf32 0xA642);
INSERT INTO t1 VALUES (_utf32 0xA643);
INSERT INTO t1 VALUES (_utf32 0xA722);
INSERT INTO t1 VALUES (_utf32 0xA723);
INSERT INTO t1 VALUES (_utf32 0xA724);
INSERT INTO t1 VALUES (_utf32 0xA725);
INSERT INTO t1 VALUES (_utf32 0xA726);
INSERT INTO t1 VALUES (_utf32 0xA727);
INSERT INTO t1 VALUES (_utf32 0xA728);
INSERT INTO t1 VALUES (_utf32 0xA729);
INSERT INTO t1 VALUES (_utf32 0xA72A);
INSERT INTO t1 VALUES (_utf32 0xA72B);
INSERT INTO t1 VALUES (_utf32 0x2CEB);
INSERT INTO t1 VALUES (_utf32 0x2CEC);
INSERT INTO t1 VALUES (_utf32 0x2CED);
INSERT INTO t1 VALUES (_utf32 0x2CEE);
SELECT hex(c), hex(lower(c)), hex(upper(c)), hex(weight_string(c)), c
FROM t1 ORDER BY c, BINARY c;
hex(c) hex(lower(c)) hex(upper(c)) hex(weight_string(c)) c
C8BA C8BA 1214 Ⱥ
E2B1A5 E2B1A5 C8BA 1214 ⱥ
C680 C680 C983 122D ƀ
C983 C680 C983 122D Ƀ
C8BB C8BC C8BB 1242 Ȼ
C8BC C8BC C8BB 1242 ȼ
E28683 E28684 E28683 124E Ↄ
E28684 E28684 E28683 124E ↄ
C986 C987 C986 1270 Ɇ
C987 C987 C986 1270 ɇ
E284B2 E2858E E284B2 12AE Ⅎ
E2858E E2858E E284B2 12AE ⅎ
E2B1A7 E2B1A8 E2B1A7 12E3 Ⱨ
E2B1A8 E2B1A8 E2B1A7 12E3 ⱨ
E2B1B5 E2B1B6 E2B1B5 12E4 Ⱶ
E2B1B6 E2B1B6 E2B1B5 12E4 ⱶ
EA9CA6 EA9CA7 EA9CA6 12E5 Ꜧ
EA9CA7 EA9CA7 EA9CA6 12E5 ꜧ
C988 C989 C988 130E Ɉ
C989 C989 C988 130E ɉ
E2B1A9 E2B1AA E2B1A9 1328 Ⱪ
E2B1AA E2B1AA E2B1A9 1328 ⱪ
C8BD C69A C8BD 133B Ƚ
E2B1A0 E2B1A1 E2B1A0 133F Ⱡ
E2B1A1 E2B1A1 E2B1A0 133F ⱡ
C9AB C9AB 1340 ɫ
E2B1A2 C9AB E2B1A2 1340 Ɫ
E1B5BD E1B5BD E2B1A3 13B8 ᵽ
E2B1A3 E1B5BD E2B1A3 13B8 Ᵽ
C98A C98B C98A 13D2 Ɋ
C98B C98B C98A 13D2 ɋ
C98C C98D C98C 13E4 Ɍ
C98D C98D C98C 13E4 ɍ
C9BD C9BD 13FC ɽ
E2B1A4 C9BD E2B1A4 13FC Ɽ
EA9CA8 EA9CA9 EA9CA8 143314AD Ꜩ
EA9CA9 EA9CA9 EA9CA8 143314AD ꜩ
C8BE C8BE 143C Ⱦ
E2B1A6 E2B1A6 C8BE 143C ⱦ
C984 CA89 C984 145B Ʉ
CA89 CA89 C984 145B ʉ
C985 CA8C C985 1489 Ʌ
CA8C CA8C C985 1489 ʌ
C98E C98F C98E 14A4 Ɏ
C98F C98F C98E 14A4 ɏ
E2B1AB E2B1AC E2B1AB 14C8 Ⱬ
E2B1AC E2B1AC E2B1AB 14C8 ⱬ
EA9CAA EA9CAB EA9CAA 14F3 Ꜫ
EA9CAB EA9CAB EA9CAA 14F3 ꜫ
C981 C982 C981 1506 Ɂ
C982 C982 C981 1506 ɂ
EA9CA2 EA9CA3 EA9CA2 150E Ꜣ
EA9CA3 EA9CA3 EA9CA2 150E ꜣ
EA9CA4 EA9CA5 EA9CA4 1518 Ꜥ
EA9CA5 EA9CA5 EA9CA4 1518 ꜥ
CDB0 CDB1 CDB0 154F Ͱ
CDB1 CDB1 CDB0 154F ͱ
CDBC CDBC CFBE 1564 ͼ
CFBE CDBC CFBE 1564 Ͼ
CDBB CDBB CFBD 1565 ͻ
CFBD CDBB CFBD 1565 Ͻ
CDBD CDBD CFBF 1566 ͽ
CFBF CDBD CFBF 1566 Ͽ
CDB2 CDB3 CDB2 156F Ͳ
CDB3 CDB3 CDB2 156F ͳ
E2B280 E2B281 E2B280 1571 Ⲁ
E2B281 E2B281 E2B280 1571 ⲁ
E2B282 E2B283 E2B282 1572 Ⲃ
E2B283 E2B283 E2B282 1572 ⲃ
E2B284 E2B285 E2B284 1573 Ⲅ
E2B285 E2B285 E2B284 1573 ⲅ
E2B286 E2B287 E2B286 1574 Ⲇ
E2B287 E2B287 E2B286 1574 ⲇ
E2B288 E2B289 E2B288 1575 Ⲉ
E2B289 E2B289 E2B288 1575 ⲉ
E2B28A E2B28B E2B28A 1577 Ⲋ
E2B28B E2B28B E2B28A 1577 ⲋ
E2B28C E2B28D E2B28C 1578 Ⲍ
E2B28D E2B28D E2B28C 1578 ⲍ
E2B28E E2B28F E2B28E 1579 Ⲏ
E2B28F E2B28F E2B28E 1579 ⲏ
E2B3AB E2B3AC E2B3AB 1591 Ⳬ
E2B3AC E2B3AC E2B3AB 1591 ⳬ
E2B3AD E2B3AE E2B3AD 15A0 Ⳮ
E2B3AE E2B3AE E2B3AD 15A0 ⳮ
D3BA D3BB D3BA 15D4 Ӻ
D3BB D3BB D3BA 15D4 ӻ
D3B6 D3B7 D3B6 15DC Ӷ
D3B7 D3B7 D3B6 15DC ӷ
EA9980 EA9981 EA9980 1611 Ꙁ
EA9981 EA9981 EA9980 1611 ꙁ
D490 D491 D490 1613 Ԑ
D491 D491 D490 1613 ԑ
EA9982 EA9983 EA9982 1618 Ꙃ
EA9983 EA9983 EA9982 1618 ꙃ
D492 D493 D492 1666 Ԓ
D493 D493 D492 1666 ԓ
D494 D495 D494 166E Ԕ
D495 D495 D494 166E ԕ
D496 D497 D496 16B7 Ԗ
D497 D497 D496 16B7 ԗ
D3BC D3BD D3BC 16F9 Ӽ
D3BD D3BD D3BC 16F9 ӽ
D3BE D3BF D3BE 16FD Ӿ
D3BF D3BF D3BE 16FD ӿ
D380 D38F D380 17B1 Ӏ
D38F D38F D380 17B1 ӏ
E2B080 E2B0B0 E2B080 17B5 Ⰰ
E2B0B0 E2B0B0 E2B080 17B5 ⰰ
E2B081 E2B0B1 E2B081 17B6 Ⰱ
E2B0B1 E2B0B1 E2B081 17B6 ⰱ
E2B082 E2B0B2 E2B082 17B7 Ⰲ
E2B0B2 E2B0B2 E2B082 17B7 ⰲ
E2B083 E2B0B3 E2B083 17B8 Ⰳ
E2B0B3 E2B0B3 E2B083 17B8 ⰳ
E2B084 E2B0B4 E2B084 17B9 Ⰴ
E2B0B4 E2B0B4 E2B084 17B9 ⰴ
E2B085 E2B0B5 E2B085 17BA Ⰵ
E2B0B5 E2B0B5 E2B085 17BA ⰵ
E2B086 E2B0B6 E2B086 17BB Ⰶ
E2B0B6 E2B0B6 E2B086 17BB ⰶ
E2B087 E2B0B7 E2B087 17BC Ⰷ
E2B0B7 E2B0B7 E2B087 17BC ⰷ
E182A0 E2B480 E182A0 17E5 Ⴀ
E2B480 E2B480 E182A0 17E5 ⴀ
E182A1 E2B481 E182A1 17E7 Ⴁ
E2B481 E2B481 E182A1 17E7 ⴁ
E182A2 E2B482 E182A2 17E9 Ⴂ
E2B482 E2B482 E182A2 17E9 ⴂ
E182A3 E2B483 E182A3 17EB Ⴃ
E2B483 E2B483 E182A3 17EB ⴃ
E182A4 E2B484 E182A4 17ED Ⴄ
E2B484 E2B484 E182A4 17ED ⴄ
E182A5 E2B485 E182A5 17EF Ⴅ
E2B485 E2B485 E182A5 17EF ⴅ
E182A6 E2B486 E182A6 17F1 Ⴆ
E2B486 E2B486 E182A6 17F1 ⴆ
E182A7 E2B487 E182A7 17F5 Ⴇ
E2B487 E2B487 E182A7 17F5 ⴇ
F0909080 F09090A8 F0909080 30D2 𐐀
F09090A8 F09090A8 F0909080 30D2 𐐨
F0909081 F09090A9 F0909081 30D3 𐐁
F09090A9 F09090A9 F0909081 30D3 𐐩
F0909082 F09090AA F0909082 30D4 𐐂
F09090AA F09090AA F0909082 30D4 𐐪
F0909083 F09090AB F0909083 30D5 𐐃
F09090AB F09090AB F0909083 30D5 𐐫
F0909084 F09090AC F0909084 30D6 𐐄
F09090AC F09090AC F0909084 30D6 𐐬
F0909085 F09090AD F0909085 30D7 𐐅
F09090AD F09090AD F0909085 30D7 𐐭
F0909086 F09090AE F0909086 30D8 𐐆
F09090AE F09090AE F0909086 30D8 𐐮
F0909087 F09090AF F0909087 30D9 𐐇
F09090AF F09090AF F0909087 30D9 𐐯
INSERT INTO t1 VALUES ('a');
INSERT INTO t1 VALUES (concat(_utf32 0x61, _utf32 0xFFFF));
INSERT INTO t1 VALUES (concat(_utf32 0x61, _utf32 0x10FFFF));
INSERT INTO t1 VALUES (concat(_utf32 0x61, _utf32 0x10400));
SELECT hex(c), hex(weight_string(c)) FROM t1 WHERE c LIKE 'a%' ORDER BY c;
hex(c) hex(weight_string(c))
61 120F
61F0909080 120F30D2
61EFBFBF 120FFBC1FFFF
61F48FBFBF 120FFBE1FFFF
SELECT hex(c), hex(weight_string(c)), c FROM t1 WHERE c LIKE _utf32 0x10400 ORDER BY c, BINARY c;
hex(c) hex(weight_string(c)) c
F0909080 30D2 𐐀
F09090A8 30D2 𐐨
SELECT hex(c), hex(weight_string(c)), c FROM t1 WHERE c LIKE _utf32 0x10428 ORDER BY c, BINARY c;
hex(c) hex(weight_string(c)) c
F0909080 30D2 𐐀
F09090A8 30D2 𐐨
ALTER TABLE t1 ADD KEY(c);
EXPLAIN SELECT hex(c) FROM t1 WHERE c LIKE 'a%' ORDER BY c;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 42 NULL 3 Using where; Using index
SELECT hex(c), hex(weight_string(c)) FROM t1 WHERE c LIKE 'a%' ORDER BY c;
hex(c) hex(weight_string(c))
61 120F
61F0909080 120F30D2
61EFBFBF 120FFBC1FFFF
61F48FBFBF 120FFBE1FFFF
SELECT hex(c), hex(weight_string(c)), c FROM t1 WHERE c LIKE _utf32 0x10400 ORDER BY c, BINARY c;
hex(c) hex(weight_string(c)) c
F0909080 30D2 𐐀
F09090A8 30D2 𐐨
SELECT hex(c), hex(weight_string(c)), c FROM t1 WHERE c LIKE _utf32 0x10428 ORDER BY c, BINARY c;
hex(c) hex(weight_string(c)) c
F0909080 30D2 𐐀
F09090A8 30D2 𐐨
DROP TABLE t1;
#
# End of 5.6 tests # End of 5.6 tests
# #
...@@ -2506,6 +2506,215 @@ ZzŹźŻżŽž ...@@ -2506,6 +2506,215 @@ ZzŹźŻżŽž
ǁ ǁ
ǂ ǂ
ǃ ǃ
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf16_unicode_520_ci;
group_concat(c1 order by binary c1 separator '')
÷
×
AaÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặ
AAAaaAaa
AEAeaEaeÆæǢǣǼǽ
Bb
ƀ
Ɓ
Ƃƃ
CcÇçĆćĈĉĊċČč
CHChcHch
Ƈƈ
DdÐðĎďĐđ
DZDzDŽDždZdzdŽdžDŽDždžDZDzdz
Ɖ
Ɗ
Ƌƌ
EeÈÉÊËèéêëĒēĔĕĖėĘęĚěẸẹẺẻẼẽẾếỀềỂểỄễỆệ
Ǝǝ
Ə
Ɛ
Ff
Ƒƒ
GgĜĝĞğĠġĢģǦǧǴǵ
Ǥǥ
Ɠ
Ɣ
Ƣƣ
HhĤĥĦħ
ƕǶ
IiÌÍÎÏìíîïĨĩĪīĬĭĮįİǏǐỈỉỊị
IJIjiJijIJij
ı
Ɨ
Ɩ
JjĴĵǰ
KkĶķǨǩ
Ƙƙ
LlĹĺĻļĽľĿŀŁł
LJLjlJljLJLjlj
LLLllLll
ƚ
ƛ
Mm
NnÑñŃńŅņŇňǸǹ
NJNjnJnjNJNjnj
Ɲ
ƞ
Ŋŋ
OoÒÓÔÕÖØòóôõöøŌōŎŏŐőƠơǑǒǪǫǬǭǾǿỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợ
OEOeoEoeŒœ
Ɔ
Ɵ
Pp
Ƥƥ
Qq
ĸ
RrŔŕŖŗŘř
RRRrrRrr
Ʀ
SsŚśŜŝŞşŠšſ
SSSssSssß
Ʃ
ƪ
TtŢţŤť
ƾ
Ŧŧ
ƫ
Ƭƭ
Ʈ
UuÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜỤụỦủỨứỪừỬửỮữỰự
Ɯ
Ʊ
Vv
Ʋ
WwŴŵ
Xx
YyÝýÿŶŷŸ
Ƴƴ
ZzŹźŻżŽž
ƍ
Ƶƶ
ƷǮǯ
Ƹƹ
ƺ
Þþ
ƿǷ
ƻ
Ƨƨ
Ƽƽ
Ƅƅ
ʼn
ǀ
ǁ
ǂ
ǃ
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf16_vietnamese_ci;
group_concat(c1 order by binary c1 separator '')
÷
×
AaÀÁÃÄÅàáãäåĀāĄąǍǎǞǟǠǡǺǻẠạẢả
AAAaaAaa
AEAeaEae
ĂăẮắẰằẲẳẴẵẶặ
ÂâẤấẦầẨẩẪẫẬậ
ÆæǢǣǼǽ
Bb
ƀ
Ɓ
Ƃƃ
CcÇçĆćĈĉĊċČč
CHChcHch
Ƈƈ
DdĎď
DZDzDŽDždZdzdŽdžDŽDždžDZDzdz
Đđ
Ɖ
Ɗ
Ƌƌ
Ðð
EeÈÉËèéëĒēĔĕĖėĘęĚěẸẹẺẻẼẽ
ÊêẾếỀềỂểỄễỆệ
Ǝǝ
Ə
Ɛ
Ff
Ƒƒ
GgĜĝĞğĠġĢģǦǧǴǵ
Ǥǥ
Ɠ
Ɣ
Ƣƣ
HhĤĥ
ƕǶ
Ħħ
IiÌÍÎÏìíîïĨĩĪīĬĭĮįİǏǐỈỉỊị
IJIjiJijIJij
ı
Ɨ
Ɩ
JjĴĵǰ
KkĶķǨǩ
Ƙƙ
LlĹĺĻļĽľ
Ŀŀ
LJLjlJljLJLjlj
LLLllLll
Łł
ƚ
ƛ
Mm
NnÑñŃńŅņŇňǸǹ
NJNjnJnjNJNjnj
Ɲ
ƞ
Ŋŋ
OoÒÓÕÖòóõöŌōŎŏŐőǑǒǪǫǬǭỌọỎỏ
OEOeoEoeŒœ
ÔôỐốỒồỔổỖỗỘộ
ƠơỚớỜờỞởỠỡỢợ
ØøǾǿ
Ɔ
Ɵ
Pp
Ƥƥ
Qq
ĸ
RrŔŕŖŗŘř
RRRrrRrr
Ʀ
SsŚśŜŝŞşŠšſ
SSSssSssß
Ʃ
ƪ
TtŢţŤť
ƾ
Ŧŧ
ƫ
Ƭƭ
Ʈ
UuÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųǓǔǕǖǗǘǙǚǛǜỤụỦủ
ƯưỨứỪừỬửỮữỰự
Ɯ
Ʊ
Vv
Ʋ
WwŴŵ
Xx
YyÝýÿŶŷŸ
Ƴƴ
ZzŹźŻżŽž
ƍ
Ƶƶ
ƷǮǯ
Ƹƹ
ƺ
Þþ
ƿǷ
ƻ
Ƨƨ
Ƽƽ
Ƅƅ
ʼn
ǀ
ǁ
ǂ
ǃ
drop table t1; drop table t1;
SET NAMES utf8; SET NAMES utf8;
CREATE TABLE t1 (c varchar(200) CHARACTER SET utf16 COLLATE utf16_general_ci NOT NULL, INDEX (c)); CREATE TABLE t1 (c varchar(200) CHARACTER SET utf16 COLLATE utf16_general_ci NOT NULL, INDEX (c));
...@@ -3432,5 +3641,303 @@ s 0 ...@@ -3432,5 +3641,303 @@ s 0
DROP TABLE t1; DROP TABLE t1;
"END ctype_german.inc" "END ctype_german.inc"
# #
# WL#2673 Unicode Collation Algorithm new version
#
SET NAMES utf8mb4;
SET collation_connection=utf16_unicode_520_ci;
CREATE TABLE t1 AS SELECT repeat('a', 10) as c LIMIT 0;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c` varchar(10) CHARACTER SET utf16 COLLATE utf16_unicode_520_ci NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
INSERT INTO t1 VALUES (_utf32 0x0180),(_utf32 0x023A);
INSERT INTO t1 VALUES (_utf32 0x023B),(_utf32 0x023C);
INSERT INTO t1 VALUES (_utf32 0x023D),(_utf32 0x023E);
INSERT INTO t1 VALUES (_utf32 0x0241),(_utf32 0x0242);
INSERT INTO t1 VALUES (_utf32 0x0243),(_utf32 0x0244);
INSERT INTO t1 VALUES (_utf32 0x0245),(_utf32 0x0246);
INSERT INTO t1 VALUES (_utf32 0x0247),(_utf32 0x0248);
INSERT INTO t1 VALUES (_utf32 0x0249),(_utf32 0x024A);
INSERT INTO t1 VALUES (_utf32 0x024B),(_utf32 0x024C);
INSERT INTO t1 VALUES (_utf32 0x024D),(_utf32 0x024E);
INSERT INTO t1 VALUES (_utf32 0x024F),(_utf32 0x026B);
INSERT INTO t1 VALUES (_utf32 0x027D),(_utf32 0x0289);
INSERT INTO t1 VALUES (_utf32 0x028C);
INSERT INTO t1 VALUES (_utf32 0x037B), (_utf32 0x037C);
INSERT INTO t1 VALUES (_utf32 0x037D), (_utf32 0x03FD);
INSERT INTO t1 VALUES (_utf32 0x03FE), (_utf32 0x03FF);
INSERT INTO t1 VALUES (_utf32 0x04C0), (_utf32 0x04CF);
INSERT INTO t1 VALUES (_utf32 0x04F6), (_utf32 0x04F7);
INSERT INTO t1 VALUES (_utf32 0x04FA), (_utf32 0x04FB);
INSERT INTO t1 VALUES (_utf32 0x04FC), (_utf32 0x04FD);
INSERT INTO t1 VALUES (_utf32 0x04FE), (_utf32 0x04FF);
INSERT INTO t1 VALUES (_utf32 0x0510), (_utf32 0x0511);
INSERT INTO t1 VALUES (_utf32 0x0512), (_utf32 0x0513);
INSERT INTO t1 VALUES (_utf32 0x10A0), (_utf32 0x10A1);
INSERT INTO t1 VALUES (_utf32 0x10A2), (_utf32 0x10A3);
INSERT INTO t1 VALUES (_utf32 0x10A4), (_utf32 0x10A5);
INSERT INTO t1 VALUES (_utf32 0x10A6), (_utf32 0x10A7);
INSERT INTO t1 VALUES (_utf32 0x2D00), (_utf32 0x2D01);
INSERT INTO t1 VALUES (_utf32 0x2D02), (_utf32 0x2D03);
INSERT INTO t1 VALUES (_utf32 0x2D04), (_utf32 0x2D05);
INSERT INTO t1 VALUES (_utf32 0x2D06), (_utf32 0x2D07);
INSERT INTO t1 VALUES (_utf32 0x1D7D);
INSERT INTO t1 VALUES (_utf32 0x2132),(_utf32 0x214E);
INSERT INTO t1 VALUES (_utf32 0x2183),(_utf32 0x2184);
INSERT INTO t1 VALUES (_utf32 0x2C80), (_utf32 0x2C81);
INSERT INTO t1 VALUES (_utf32 0x2C82), (_utf32 0x2C83);
INSERT INTO t1 VALUES (_utf32 0x2C84), (_utf32 0x2C85);
INSERT INTO t1 VALUES (_utf32 0x2C86), (_utf32 0x2C87);
INSERT INTO t1 VALUES (_utf32 0x2C88), (_utf32 0x2C89);
INSERT INTO t1 VALUES (_utf32 0x2C8A), (_utf32 0x2C8B);
INSERT INTO t1 VALUES (_utf32 0x2C8C), (_utf32 0x2C8D);
INSERT INTO t1 VALUES (_utf32 0x2C8E), (_utf32 0x2C8F);
INSERT INTO t1 VALUES (_utf32 0x2C60), (_utf32 0x2C61);
INSERT INTO t1 VALUES (_utf32 0x2C62), (_utf32 0x2C63);
INSERT INTO t1 VALUES (_utf32 0x2C64), (_utf32 0x2C65);
INSERT INTO t1 VALUES (_utf32 0x2C66), (_utf32 0x2C67);
INSERT INTO t1 VALUES (_utf32 0x2C68), (_utf32 0x2C69);
INSERT INTO t1 VALUES (_utf32 0x2C6A), (_utf32 0x2C6B);
INSERT INTO t1 VALUES (_utf32 0x2C6C), (_utf32 0x2C75);
INSERT INTO t1 VALUES (_utf32 0x2C76);
INSERT INTO t1 VALUES (_utf32 0x2C00), (_utf32 0x2C01);
INSERT INTO t1 VALUES (_utf32 0x2C02), (_utf32 0x2C03);
INSERT INTO t1 VALUES (_utf32 0x2C04), (_utf32 0x2C05);
INSERT INTO t1 VALUES (_utf32 0x2C06), (_utf32 0x2C07);
INSERT INTO t1 VALUES (_utf32 0x2C30), (_utf32 0x2C31);
INSERT INTO t1 VALUES (_utf32 0x2C32), (_utf32 0x2C33);
INSERT INTO t1 VALUES (_utf32 0x2C34), (_utf32 0x2C35);
INSERT INTO t1 VALUES (_utf32 0x2C36), (_utf32 0x2C37);
INSERT INTO t1 VALUES (_utf32 0x10400), (_utf32 0x10401);
INSERT INTO t1 VALUES (_utf32 0x10402), (_utf32 0x10403);
INSERT INTO t1 VALUES (_utf32 0x10404), (_utf32 0x10405);
INSERT INTO t1 VALUES (_utf32 0x10406), (_utf32 0x10407);
INSERT INTO t1 VALUES (_utf32 0x10428), (_utf32 0x10429);
INSERT INTO t1 VALUES (_utf32 0x1042A), (_utf32 0x1042B);
INSERT INTO t1 VALUES (_utf32 0x1042C), (_utf32 0x1042D);
INSERT INTO t1 VALUES (_utf32 0x1042E), (_utf32 0x1042F);
INSERT INTO t1 VALUES (_utf32 0x0370);
INSERT INTO t1 VALUES (_utf32 0x0371);
INSERT INTO t1 VALUES (_utf32 0x0372);
INSERT INTO t1 VALUES (_utf32 0x0373);
INSERT INTO t1 VALUES (_utf32 0x0514);
INSERT INTO t1 VALUES (_utf32 0x0515);
INSERT INTO t1 VALUES (_utf32 0x0516);
INSERT INTO t1 VALUES (_utf32 0x0517);
INSERT INTO t1 VALUES (_utf32 0xA640);
INSERT INTO t1 VALUES (_utf32 0xA641);
INSERT INTO t1 VALUES (_utf32 0xA642);
INSERT INTO t1 VALUES (_utf32 0xA643);
INSERT INTO t1 VALUES (_utf32 0xA722);
INSERT INTO t1 VALUES (_utf32 0xA723);
INSERT INTO t1 VALUES (_utf32 0xA724);
INSERT INTO t1 VALUES (_utf32 0xA725);
INSERT INTO t1 VALUES (_utf32 0xA726);
INSERT INTO t1 VALUES (_utf32 0xA727);
INSERT INTO t1 VALUES (_utf32 0xA728);
INSERT INTO t1 VALUES (_utf32 0xA729);
INSERT INTO t1 VALUES (_utf32 0xA72A);
INSERT INTO t1 VALUES (_utf32 0xA72B);
INSERT INTO t1 VALUES (_utf32 0x2CEB);
INSERT INTO t1 VALUES (_utf32 0x2CEC);
INSERT INTO t1 VALUES (_utf32 0x2CED);
INSERT INTO t1 VALUES (_utf32 0x2CEE);
SELECT hex(c), hex(lower(c)), hex(upper(c)), hex(weight_string(c)), c
FROM t1 ORDER BY c, BINARY c;
hex(c) hex(lower(c)) hex(upper(c)) hex(weight_string(c)) c
023A 2C65 023A 1214 Ⱥ
2C65 2C65 023A 1214 ⱥ
0180 0180 0243 122D ƀ
0243 0180 0243 122D Ƀ
023B 023C 023B 1242 Ȼ
023C 023C 023B 1242 ȼ
2183 2184 2183 124E Ↄ
2184 2184 2183 124E ↄ
0246 0247 0246 1270 Ɇ
0247 0247 0246 1270 ɇ
2132 214E 2132 12AE Ⅎ
214E 214E 2132 12AE ⅎ
2C67 2C68 2C67 12E3 Ⱨ
2C68 2C68 2C67 12E3 ⱨ
2C75 2C76 2C75 12E4 Ⱶ
2C76 2C76 2C75 12E4 ⱶ
A726 A727 A726 12E5 Ꜧ
A727 A727 A726 12E5 ꜧ
0248 0249 0248 130E Ɉ
0249 0249 0248 130E ɉ
2C69 2C6A 2C69 1328 Ⱪ
2C6A 2C6A 2C69 1328 ⱪ
023D 019A 023D 133B Ƚ
2C60 2C61 2C60 133F Ⱡ
2C61 2C61 2C60 133F ⱡ
026B 026B 2C62 1340 ɫ
2C62 026B 2C62 1340 Ɫ
1D7D 1D7D 2C63 13B8 ᵽ
2C63 1D7D 2C63 13B8 Ᵽ
024A 024B 024A 13D2 Ɋ
024B 024B 024A 13D2 ɋ
024C 024D 024C 13E4 Ɍ
024D 024D 024C 13E4 ɍ
027D 027D 2C64 13FC ɽ
2C64 027D 2C64 13FC Ɽ
A728 A729 A728 143314AD Ꜩ
A729 A729 A728 143314AD ꜩ
023E 2C66 023E 143C Ⱦ
2C66 2C66 023E 143C ⱦ
0244 0289 0244 145B Ʉ
0289 0289 0244 145B ʉ
0245 028C 0245 1489 Ʌ
028C 028C 0245 1489 ʌ
024E 024F 024E 14A4 Ɏ
024F 024F 024E 14A4 ɏ
2C6B 2C6C 2C6B 14C8 Ⱬ
2C6C 2C6C 2C6B 14C8 ⱬ
A72A A72B A72A 14F3 Ꜫ
A72B A72B A72A 14F3 ꜫ
0241 0242 0241 1506 Ɂ
0242 0242 0241 1506 ɂ
A722 A723 A722 150E Ꜣ
A723 A723 A722 150E ꜣ
A724 A725 A724 1518 Ꜥ
A725 A725 A724 1518 ꜥ
0370 0371 0370 154F Ͱ
0371 0371 0370 154F ͱ
037C 037C 03FE 1564 ͼ
03FE 037C 03FE 1564 Ͼ
037B 037B 03FD 1565 ͻ
03FD 037B 03FD 1565 Ͻ
037D 037D 03FF 1566 ͽ
03FF 037D 03FF 1566 Ͽ
0372 0373 0372 156F Ͳ
0373 0373 0372 156F ͳ
2C80 2C81 2C80 1571 Ⲁ
2C81 2C81 2C80 1571 ⲁ
2C82 2C83 2C82 1572 Ⲃ
2C83 2C83 2C82 1572 ⲃ
2C84 2C85 2C84 1573 Ⲅ
2C85 2C85 2C84 1573 ⲅ
2C86 2C87 2C86 1574 Ⲇ
2C87 2C87 2C86 1574 ⲇ
2C88 2C89 2C88 1575 Ⲉ
2C89 2C89 2C88 1575 ⲉ
2C8A 2C8B 2C8A 1577 Ⲋ
2C8B 2C8B 2C8A 1577 ⲋ
2C8C 2C8D 2C8C 1578 Ⲍ
2C8D 2C8D 2C8C 1578 ⲍ
2C8E 2C8F 2C8E 1579 Ⲏ
2C8F 2C8F 2C8E 1579 ⲏ
2CEB 2CEC 2CEB 1591 Ⳬ
2CEC 2CEC 2CEB 1591 ⳬ
2CED 2CEE 2CED 15A0 Ⳮ
2CEE 2CEE 2CED 15A0 ⳮ
04FA 04FB 04FA 15D4 Ӻ
04FB 04FB 04FA 15D4 ӻ
04F6 04F7 04F6 15DC Ӷ
04F7 04F7 04F6 15DC ӷ
A640 A641 A640 1611 Ꙁ
A641 A641 A640 1611 ꙁ
0510 0511 0510 1613 Ԑ
0511 0511 0510 1613 ԑ
A642 A643 A642 1618 Ꙃ
A643 A643 A642 1618 ꙃ
0512 0513 0512 1666 Ԓ
0513 0513 0512 1666 ԓ
0514 0515 0514 166E Ԕ
0515 0515 0514 166E ԕ
0516 0517 0516 16B7 Ԗ
0517 0517 0516 16B7 ԗ
04FC 04FD 04FC 16F9 Ӽ
04FD 04FD 04FC 16F9 ӽ
04FE 04FF 04FE 16FD Ӿ
04FF 04FF 04FE 16FD ӿ
04C0 04CF 04C0 17B1 Ӏ
04CF 04CF 04C0 17B1 ӏ
2C00 2C30 2C00 17B5 Ⰰ
2C30 2C30 2C00 17B5 ⰰ
2C01 2C31 2C01 17B6 Ⰱ
2C31 2C31 2C01 17B6 ⰱ
2C02 2C32 2C02 17B7 Ⰲ
2C32 2C32 2C02 17B7 ⰲ
2C03 2C33 2C03 17B8 Ⰳ
2C33 2C33 2C03 17B8 ⰳ
2C04 2C34 2C04 17B9 Ⰴ
2C34 2C34 2C04 17B9 ⰴ
2C05 2C35 2C05 17BA Ⰵ
2C35 2C35 2C05 17BA ⰵ
2C06 2C36 2C06 17BB Ⰶ
2C36 2C36 2C06 17BB ⰶ
2C07 2C37 2C07 17BC Ⰷ
2C37 2C37 2C07 17BC ⰷ
10A0 2D00 10A0 17E5 Ⴀ
2D00 2D00 10A0 17E5 ⴀ
10A1 2D01 10A1 17E7 Ⴁ
2D01 2D01 10A1 17E7 ⴁ
10A2 2D02 10A2 17E9 Ⴂ
2D02 2D02 10A2 17E9 ⴂ
10A3 2D03 10A3 17EB Ⴃ
2D03 2D03 10A3 17EB ⴃ
10A4 2D04 10A4 17ED Ⴄ
2D04 2D04 10A4 17ED ⴄ
10A5 2D05 10A5 17EF Ⴅ
2D05 2D05 10A5 17EF ⴅ
10A6 2D06 10A6 17F1 Ⴆ
2D06 2D06 10A6 17F1 ⴆ
10A7 2D07 10A7 17F5 Ⴇ
2D07 2D07 10A7 17F5 ⴇ
D801DC00 D801DC28 D801DC00 30D2 𐐀
D801DC28 D801DC28 D801DC00 30D2 𐐨
D801DC01 D801DC29 D801DC01 30D3 𐐁
D801DC29 D801DC29 D801DC01 30D3 𐐩
D801DC02 D801DC2A D801DC02 30D4 𐐂
D801DC2A D801DC2A D801DC02 30D4 𐐪
D801DC03 D801DC2B D801DC03 30D5 𐐃
D801DC2B D801DC2B D801DC03 30D5 𐐫
D801DC04 D801DC2C D801DC04 30D6 𐐄
D801DC2C D801DC2C D801DC04 30D6 𐐬
D801DC05 D801DC2D D801DC05 30D7 𐐅
D801DC2D D801DC2D D801DC05 30D7 𐐭
D801DC06 D801DC2E D801DC06 30D8 𐐆
D801DC2E D801DC2E D801DC06 30D8 𐐮
D801DC07 D801DC2F D801DC07 30D9 𐐇
D801DC2F D801DC2F D801DC07 30D9 𐐯
INSERT INTO t1 VALUES ('a');
INSERT INTO t1 VALUES (concat(_utf32 0x61, _utf32 0xFFFF));
INSERT INTO t1 VALUES (concat(_utf32 0x61, _utf32 0x10FFFF));
INSERT INTO t1 VALUES (concat(_utf32 0x61, _utf32 0x10400));
SELECT hex(c), hex(weight_string(c)) FROM t1 WHERE c LIKE 'a%' ORDER BY c;
hex(c) hex(weight_string(c))
0061 120F
0061D801DC00 120F30D2
0061FFFF 120FFBC1FFFF
0061DBFFDFFF 120FFBE1FFFF
SELECT hex(c), hex(weight_string(c)), c FROM t1 WHERE c LIKE _utf32 0x10400 ORDER BY c, BINARY c;
hex(c) hex(weight_string(c)) c
D801DC00 30D2 𐐀
D801DC28 30D2 𐐨
SELECT hex(c), hex(weight_string(c)), c FROM t1 WHERE c LIKE _utf32 0x10428 ORDER BY c, BINARY c;
hex(c) hex(weight_string(c)) c
D801DC00 30D2 𐐀
D801DC28 30D2 𐐨
ALTER TABLE t1 ADD KEY(c);
EXPLAIN SELECT hex(c) FROM t1 WHERE c LIKE 'a%' ORDER BY c;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 42 NULL 2 Using where; Using index
SELECT hex(c), hex(weight_string(c)) FROM t1 WHERE c LIKE 'a%' ORDER BY c;
hex(c) hex(weight_string(c))
0061 120F
0061D801DC00 120F30D2
0061FFFF 120FFBC1FFFF
0061DBFFDFFF 120FFBE1FFFF
SELECT hex(c), hex(weight_string(c)), c FROM t1 WHERE c LIKE _utf32 0x10400 ORDER BY c, BINARY c;
hex(c) hex(weight_string(c)) c
D801DC00 30D2 𐐀
D801DC28 30D2 𐐨
SELECT hex(c), hex(weight_string(c)), c FROM t1 WHERE c LIKE _utf32 0x10428 ORDER BY c, BINARY c;
hex(c) hex(weight_string(c)) c
D801DC00 30D2 𐐀
D801DC28 30D2 𐐨
DROP TABLE t1;
#
# End of 5.6 tests # End of 5.6 tests
# #
...@@ -2506,6 +2506,215 @@ ZzŹźŻżŽž ...@@ -2506,6 +2506,215 @@ ZzŹźŻżŽž
ǁ ǁ
ǂ ǂ
ǃ ǃ
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf32_unicode_520_ci;
group_concat(c1 order by binary c1 separator '')
÷
×
AaÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặ
AAAaaAaa
AEAeaEaeÆæǢǣǼǽ
Bb
ƀ
Ɓ
Ƃƃ
CcÇçĆćĈĉĊċČč
CHChcHch
Ƈƈ
DdÐðĎďĐđ
DZDzDŽDždZdzdŽdžDŽDždžDZDzdz
Ɖ
Ɗ
Ƌƌ
EeÈÉÊËèéêëĒēĔĕĖėĘęĚěẸẹẺẻẼẽẾếỀềỂểỄễỆệ
Ǝǝ
Ə
Ɛ
Ff
Ƒƒ
GgĜĝĞğĠġĢģǦǧǴǵ
Ǥǥ
Ɠ
Ɣ
Ƣƣ
HhĤĥĦħ
ƕǶ
IiÌÍÎÏìíîïĨĩĪīĬĭĮįİǏǐỈỉỊị
IJIjiJijIJij
ı
Ɨ
Ɩ
JjĴĵǰ
KkĶķǨǩ
Ƙƙ
LlĹĺĻļĽľĿŀŁł
LJLjlJljLJLjlj
LLLllLll
ƚ
ƛ
Mm
NnÑñŃńŅņŇňǸǹ
NJNjnJnjNJNjnj
Ɲ
ƞ
Ŋŋ
OoÒÓÔÕÖØòóôõöøŌōŎŏŐőƠơǑǒǪǫǬǭǾǿỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợ
OEOeoEoeŒœ
Ɔ
Ɵ
Pp
Ƥƥ
Qq
ĸ
RrŔŕŖŗŘř
RRRrrRrr
Ʀ
SsŚśŜŝŞşŠšſ
SSSssSssß
Ʃ
ƪ
TtŢţŤť
ƾ
Ŧŧ
ƫ
Ƭƭ
Ʈ
UuÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜỤụỦủỨứỪừỬửỮữỰự
Ɯ
Ʊ
Vv
Ʋ
WwŴŵ
Xx
YyÝýÿŶŷŸ
Ƴƴ
ZzŹźŻżŽž
ƍ
Ƶƶ
ƷǮǯ
Ƹƹ
ƺ
Þþ
ƿǷ
ƻ
Ƨƨ
Ƽƽ
Ƅƅ
ʼn
ǀ
ǁ
ǂ
ǃ
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf32_vietnamese_ci;
group_concat(c1 order by binary c1 separator '')
÷
×
AaÀÁÃÄÅàáãäåĀāĄąǍǎǞǟǠǡǺǻẠạẢả
AAAaaAaa
AEAeaEae
ĂăẮắẰằẲẳẴẵẶặ
ÂâẤấẦầẨẩẪẫẬậ
ÆæǢǣǼǽ
Bb
ƀ
Ɓ
Ƃƃ
CcÇçĆćĈĉĊċČč
CHChcHch
Ƈƈ
DdĎď
DZDzDŽDždZdzdŽdžDŽDždžDZDzdz
Đđ
Ɖ
Ɗ
Ƌƌ
Ðð
EeÈÉËèéëĒēĔĕĖėĘęĚěẸẹẺẻẼẽ
ÊêẾếỀềỂểỄễỆệ
Ǝǝ
Ə
Ɛ
Ff
Ƒƒ
GgĜĝĞğĠġĢģǦǧǴǵ
Ǥǥ
Ɠ
Ɣ
Ƣƣ
HhĤĥ
ƕǶ
Ħħ
IiÌÍÎÏìíîïĨĩĪīĬĭĮįİǏǐỈỉỊị
IJIjiJijIJij
ı
Ɨ
Ɩ
JjĴĵǰ
KkĶķǨǩ
Ƙƙ
LlĹĺĻļĽľ
Ŀŀ
LJLjlJljLJLjlj
LLLllLll
Łł
ƚ
ƛ
Mm
NnÑñŃńŅņŇňǸǹ
NJNjnJnjNJNjnj
Ɲ
ƞ
Ŋŋ
OoÒÓÕÖòóõöŌōŎŏŐőǑǒǪǫǬǭỌọỎỏ
OEOeoEoeŒœ
ÔôỐốỒồỔổỖỗỘộ
ƠơỚớỜờỞởỠỡỢợ
ØøǾǿ
Ɔ
Ɵ
Pp
Ƥƥ
Qq
ĸ
RrŔŕŖŗŘř
RRRrrRrr
Ʀ
SsŚśŜŝŞşŠšſ
SSSssSssß
Ʃ
ƪ
TtŢţŤť
ƾ
Ŧŧ
ƫ
Ƭƭ
Ʈ
UuÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųǓǔǕǖǗǘǙǚǛǜỤụỦủ
ƯưỨứỪừỬửỮữỰự
Ɯ
Ʊ
Vv
Ʋ
WwŴŵ
Xx
YyÝýÿŶŷŸ
Ƴƴ
ZzŹźŻżŽž
ƍ
Ƶƶ
ƷǮǯ
Ƹƹ
ƺ
Þþ
ƿǷ
ƻ
Ƨƨ
Ƽƽ
Ƅƅ
ʼn
ǀ
ǁ
ǂ
ǃ
drop table t1; drop table t1;
SET NAMES utf8; SET NAMES utf8;
CREATE TABLE t1 (c varchar(200) CHARACTER SET utf32 COLLATE utf32_general_ci NOT NULL, INDEX (c)); CREATE TABLE t1 (c varchar(200) CHARACTER SET utf32 COLLATE utf32_general_ci NOT NULL, INDEX (c));
...@@ -3452,5 +3661,303 @@ s 0 ...@@ -3452,5 +3661,303 @@ s 0
DROP TABLE t1; DROP TABLE t1;
"END ctype_german.inc" "END ctype_german.inc"
# #
# WL#2673 Unicode Collation Algorithm new version
#
SET NAMES utf8mb4;
SET collation_connection=utf32_unicode_520_ci;
CREATE TABLE t1 AS SELECT repeat('a', 10) as c LIMIT 0;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c` varchar(10) CHARACTER SET utf32 COLLATE utf32_unicode_520_ci NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
INSERT INTO t1 VALUES (_utf32 0x0180),(_utf32 0x023A);
INSERT INTO t1 VALUES (_utf32 0x023B),(_utf32 0x023C);
INSERT INTO t1 VALUES (_utf32 0x023D),(_utf32 0x023E);
INSERT INTO t1 VALUES (_utf32 0x0241),(_utf32 0x0242);
INSERT INTO t1 VALUES (_utf32 0x0243),(_utf32 0x0244);
INSERT INTO t1 VALUES (_utf32 0x0245),(_utf32 0x0246);
INSERT INTO t1 VALUES (_utf32 0x0247),(_utf32 0x0248);
INSERT INTO t1 VALUES (_utf32 0x0249),(_utf32 0x024A);
INSERT INTO t1 VALUES (_utf32 0x024B),(_utf32 0x024C);
INSERT INTO t1 VALUES (_utf32 0x024D),(_utf32 0x024E);
INSERT INTO t1 VALUES (_utf32 0x024F),(_utf32 0x026B);
INSERT INTO t1 VALUES (_utf32 0x027D),(_utf32 0x0289);
INSERT INTO t1 VALUES (_utf32 0x028C);
INSERT INTO t1 VALUES (_utf32 0x037B), (_utf32 0x037C);
INSERT INTO t1 VALUES (_utf32 0x037D), (_utf32 0x03FD);
INSERT INTO t1 VALUES (_utf32 0x03FE), (_utf32 0x03FF);
INSERT INTO t1 VALUES (_utf32 0x04C0), (_utf32 0x04CF);
INSERT INTO t1 VALUES (_utf32 0x04F6), (_utf32 0x04F7);
INSERT INTO t1 VALUES (_utf32 0x04FA), (_utf32 0x04FB);
INSERT INTO t1 VALUES (_utf32 0x04FC), (_utf32 0x04FD);
INSERT INTO t1 VALUES (_utf32 0x04FE), (_utf32 0x04FF);
INSERT INTO t1 VALUES (_utf32 0x0510), (_utf32 0x0511);
INSERT INTO t1 VALUES (_utf32 0x0512), (_utf32 0x0513);
INSERT INTO t1 VALUES (_utf32 0x10A0), (_utf32 0x10A1);
INSERT INTO t1 VALUES (_utf32 0x10A2), (_utf32 0x10A3);
INSERT INTO t1 VALUES (_utf32 0x10A4), (_utf32 0x10A5);
INSERT INTO t1 VALUES (_utf32 0x10A6), (_utf32 0x10A7);
INSERT INTO t1 VALUES (_utf32 0x2D00), (_utf32 0x2D01);
INSERT INTO t1 VALUES (_utf32 0x2D02), (_utf32 0x2D03);
INSERT INTO t1 VALUES (_utf32 0x2D04), (_utf32 0x2D05);
INSERT INTO t1 VALUES (_utf32 0x2D06), (_utf32 0x2D07);
INSERT INTO t1 VALUES (_utf32 0x1D7D);
INSERT INTO t1 VALUES (_utf32 0x2132),(_utf32 0x214E);
INSERT INTO t1 VALUES (_utf32 0x2183),(_utf32 0x2184);
INSERT INTO t1 VALUES (_utf32 0x2C80), (_utf32 0x2C81);
INSERT INTO t1 VALUES (_utf32 0x2C82), (_utf32 0x2C83);
INSERT INTO t1 VALUES (_utf32 0x2C84), (_utf32 0x2C85);
INSERT INTO t1 VALUES (_utf32 0x2C86), (_utf32 0x2C87);
INSERT INTO t1 VALUES (_utf32 0x2C88), (_utf32 0x2C89);
INSERT INTO t1 VALUES (_utf32 0x2C8A), (_utf32 0x2C8B);
INSERT INTO t1 VALUES (_utf32 0x2C8C), (_utf32 0x2C8D);
INSERT INTO t1 VALUES (_utf32 0x2C8E), (_utf32 0x2C8F);
INSERT INTO t1 VALUES (_utf32 0x2C60), (_utf32 0x2C61);
INSERT INTO t1 VALUES (_utf32 0x2C62), (_utf32 0x2C63);
INSERT INTO t1 VALUES (_utf32 0x2C64), (_utf32 0x2C65);
INSERT INTO t1 VALUES (_utf32 0x2C66), (_utf32 0x2C67);
INSERT INTO t1 VALUES (_utf32 0x2C68), (_utf32 0x2C69);
INSERT INTO t1 VALUES (_utf32 0x2C6A), (_utf32 0x2C6B);
INSERT INTO t1 VALUES (_utf32 0x2C6C), (_utf32 0x2C75);
INSERT INTO t1 VALUES (_utf32 0x2C76);
INSERT INTO t1 VALUES (_utf32 0x2C00), (_utf32 0x2C01);
INSERT INTO t1 VALUES (_utf32 0x2C02), (_utf32 0x2C03);
INSERT INTO t1 VALUES (_utf32 0x2C04), (_utf32 0x2C05);
INSERT INTO t1 VALUES (_utf32 0x2C06), (_utf32 0x2C07);
INSERT INTO t1 VALUES (_utf32 0x2C30), (_utf32 0x2C31);
INSERT INTO t1 VALUES (_utf32 0x2C32), (_utf32 0x2C33);
INSERT INTO t1 VALUES (_utf32 0x2C34), (_utf32 0x2C35);
INSERT INTO t1 VALUES (_utf32 0x2C36), (_utf32 0x2C37);
INSERT INTO t1 VALUES (_utf32 0x10400), (_utf32 0x10401);
INSERT INTO t1 VALUES (_utf32 0x10402), (_utf32 0x10403);
INSERT INTO t1 VALUES (_utf32 0x10404), (_utf32 0x10405);
INSERT INTO t1 VALUES (_utf32 0x10406), (_utf32 0x10407);
INSERT INTO t1 VALUES (_utf32 0x10428), (_utf32 0x10429);
INSERT INTO t1 VALUES (_utf32 0x1042A), (_utf32 0x1042B);
INSERT INTO t1 VALUES (_utf32 0x1042C), (_utf32 0x1042D);
INSERT INTO t1 VALUES (_utf32 0x1042E), (_utf32 0x1042F);
INSERT INTO t1 VALUES (_utf32 0x0370);
INSERT INTO t1 VALUES (_utf32 0x0371);
INSERT INTO t1 VALUES (_utf32 0x0372);
INSERT INTO t1 VALUES (_utf32 0x0373);
INSERT INTO t1 VALUES (_utf32 0x0514);
INSERT INTO t1 VALUES (_utf32 0x0515);
INSERT INTO t1 VALUES (_utf32 0x0516);
INSERT INTO t1 VALUES (_utf32 0x0517);
INSERT INTO t1 VALUES (_utf32 0xA640);
INSERT INTO t1 VALUES (_utf32 0xA641);
INSERT INTO t1 VALUES (_utf32 0xA642);
INSERT INTO t1 VALUES (_utf32 0xA643);
INSERT INTO t1 VALUES (_utf32 0xA722);
INSERT INTO t1 VALUES (_utf32 0xA723);
INSERT INTO t1 VALUES (_utf32 0xA724);
INSERT INTO t1 VALUES (_utf32 0xA725);
INSERT INTO t1 VALUES (_utf32 0xA726);
INSERT INTO t1 VALUES (_utf32 0xA727);
INSERT INTO t1 VALUES (_utf32 0xA728);
INSERT INTO t1 VALUES (_utf32 0xA729);
INSERT INTO t1 VALUES (_utf32 0xA72A);
INSERT INTO t1 VALUES (_utf32 0xA72B);
INSERT INTO t1 VALUES (_utf32 0x2CEB);
INSERT INTO t1 VALUES (_utf32 0x2CEC);
INSERT INTO t1 VALUES (_utf32 0x2CED);
INSERT INTO t1 VALUES (_utf32 0x2CEE);
SELECT hex(c), hex(lower(c)), hex(upper(c)), hex(weight_string(c)), c
FROM t1 ORDER BY c, BINARY c;
hex(c) hex(lower(c)) hex(upper(c)) hex(weight_string(c)) c
0000023A 00002C65 0000023A 1214 Ⱥ
00002C65 00002C65 0000023A 1214 ⱥ
00000180 00000180 00000243 122D ƀ
00000243 00000180 00000243 122D Ƀ
0000023B 0000023C 0000023B 1242 Ȼ
0000023C 0000023C 0000023B 1242 ȼ
00002183 00002184 00002183 124E Ↄ
00002184 00002184 00002183 124E ↄ
00000246 00000247 00000246 1270 Ɇ
00000247 00000247 00000246 1270 ɇ
00002132 0000214E 00002132 12AE Ⅎ
0000214E 0000214E 00002132 12AE ⅎ
00002C67 00002C68 00002C67 12E3 Ⱨ
00002C68 00002C68 00002C67 12E3 ⱨ
00002C75 00002C76 00002C75 12E4 Ⱶ
00002C76 00002C76 00002C75 12E4 ⱶ
0000A726 0000A727 0000A726 12E5 Ꜧ
0000A727 0000A727 0000A726 12E5 ꜧ
00000248 00000249 00000248 130E Ɉ
00000249 00000249 00000248 130E ɉ
00002C69 00002C6A 00002C69 1328 Ⱪ
00002C6A 00002C6A 00002C69 1328 ⱪ
0000023D 0000019A 0000023D 133B Ƚ
00002C60 00002C61 00002C60 133F Ⱡ
00002C61 00002C61 00002C60 133F ⱡ
0000026B 0000026B 00002C62 1340 ɫ
00002C62 0000026B 00002C62 1340 Ɫ
00001D7D 00001D7D 00002C63 13B8 ᵽ
00002C63 00001D7D 00002C63 13B8 Ᵽ
0000024A 0000024B 0000024A 13D2 Ɋ
0000024B 0000024B 0000024A 13D2 ɋ
0000024C 0000024D 0000024C 13E4 Ɍ
0000024D 0000024D 0000024C 13E4 ɍ
0000027D 0000027D 00002C64 13FC ɽ
00002C64 0000027D 00002C64 13FC Ɽ
0000A728 0000A729 0000A728 143314AD Ꜩ
0000A729 0000A729 0000A728 143314AD ꜩ
0000023E 00002C66 0000023E 143C Ⱦ
00002C66 00002C66 0000023E 143C ⱦ
00000244 00000289 00000244 145B Ʉ
00000289 00000289 00000244 145B ʉ
00000245 0000028C 00000245 1489 Ʌ
0000028C 0000028C 00000245 1489 ʌ
0000024E 0000024F 0000024E 14A4 Ɏ
0000024F 0000024F 0000024E 14A4 ɏ
00002C6B 00002C6C 00002C6B 14C8 Ⱬ
00002C6C 00002C6C 00002C6B 14C8 ⱬ
0000A72A 0000A72B 0000A72A 14F3 Ꜫ
0000A72B 0000A72B 0000A72A 14F3 ꜫ
00000241 00000242 00000241 1506 Ɂ
00000242 00000242 00000241 1506 ɂ
0000A722 0000A723 0000A722 150E Ꜣ
0000A723 0000A723 0000A722 150E ꜣ
0000A724 0000A725 0000A724 1518 Ꜥ
0000A725 0000A725 0000A724 1518 ꜥ
00000370 00000371 00000370 154F Ͱ
00000371 00000371 00000370 154F ͱ
0000037C 0000037C 000003FE 1564 ͼ
000003FE 0000037C 000003FE 1564 Ͼ
0000037B 0000037B 000003FD 1565 ͻ
000003FD 0000037B 000003FD 1565 Ͻ
0000037D 0000037D 000003FF 1566 ͽ
000003FF 0000037D 000003FF 1566 Ͽ
00000372 00000373 00000372 156F Ͳ
00000373 00000373 00000372 156F ͳ
00002C80 00002C81 00002C80 1571 Ⲁ
00002C81 00002C81 00002C80 1571 ⲁ
00002C82 00002C83 00002C82 1572 Ⲃ
00002C83 00002C83 00002C82 1572 ⲃ
00002C84 00002C85 00002C84 1573 Ⲅ
00002C85 00002C85 00002C84 1573 ⲅ
00002C86 00002C87 00002C86 1574 Ⲇ
00002C87 00002C87 00002C86 1574 ⲇ
00002C88 00002C89 00002C88 1575 Ⲉ
00002C89 00002C89 00002C88 1575 ⲉ
00002C8A 00002C8B 00002C8A 1577 Ⲋ
00002C8B 00002C8B 00002C8A 1577 ⲋ
00002C8C 00002C8D 00002C8C 1578 Ⲍ
00002C8D 00002C8D 00002C8C 1578 ⲍ
00002C8E 00002C8F 00002C8E 1579 Ⲏ
00002C8F 00002C8F 00002C8E 1579 ⲏ
00002CEB 00002CEC 00002CEB 1591 Ⳬ
00002CEC 00002CEC 00002CEB 1591 ⳬ
00002CED 00002CEE 00002CED 15A0 Ⳮ
00002CEE 00002CEE 00002CED 15A0 ⳮ
000004FA 000004FB 000004FA 15D4 Ӻ
000004FB 000004FB 000004FA 15D4 ӻ
000004F6 000004F7 000004F6 15DC Ӷ
000004F7 000004F7 000004F6 15DC ӷ
0000A640 0000A641 0000A640 1611 Ꙁ
0000A641 0000A641 0000A640 1611 ꙁ
00000510 00000511 00000510 1613 Ԑ
00000511 00000511 00000510 1613 ԑ
0000A642 0000A643 0000A642 1618 Ꙃ
0000A643 0000A643 0000A642 1618 ꙃ
00000512 00000513 00000512 1666 Ԓ
00000513 00000513 00000512 1666 ԓ
00000514 00000515 00000514 166E Ԕ
00000515 00000515 00000514 166E ԕ
00000516 00000517 00000516 16B7 Ԗ
00000517 00000517 00000516 16B7 ԗ
000004FC 000004FD 000004FC 16F9 Ӽ
000004FD 000004FD 000004FC 16F9 ӽ
000004FE 000004FF 000004FE 16FD Ӿ
000004FF 000004FF 000004FE 16FD ӿ
000004C0 000004CF 000004C0 17B1 Ӏ
000004CF 000004CF 000004C0 17B1 ӏ
00002C00 00002C30 00002C00 17B5 Ⰰ
00002C30 00002C30 00002C00 17B5 ⰰ
00002C01 00002C31 00002C01 17B6 Ⰱ
00002C31 00002C31 00002C01 17B6 ⰱ
00002C02 00002C32 00002C02 17B7 Ⰲ
00002C32 00002C32 00002C02 17B7 ⰲ
00002C03 00002C33 00002C03 17B8 Ⰳ
00002C33 00002C33 00002C03 17B8 ⰳ
00002C04 00002C34 00002C04 17B9 Ⰴ
00002C34 00002C34 00002C04 17B9 ⰴ
00002C05 00002C35 00002C05 17BA Ⰵ
00002C35 00002C35 00002C05 17BA ⰵ
00002C06 00002C36 00002C06 17BB Ⰶ
00002C36 00002C36 00002C06 17BB ⰶ
00002C07 00002C37 00002C07 17BC Ⰷ
00002C37 00002C37 00002C07 17BC ⰷ
000010A0 00002D00 000010A0 17E5 Ⴀ
00002D00 00002D00 000010A0 17E5 ⴀ
000010A1 00002D01 000010A1 17E7 Ⴁ
00002D01 00002D01 000010A1 17E7 ⴁ
000010A2 00002D02 000010A2 17E9 Ⴂ
00002D02 00002D02 000010A2 17E9 ⴂ
000010A3 00002D03 000010A3 17EB Ⴃ
00002D03 00002D03 000010A3 17EB ⴃ
000010A4 00002D04 000010A4 17ED Ⴄ
00002D04 00002D04 000010A4 17ED ⴄ
000010A5 00002D05 000010A5 17EF Ⴅ
00002D05 00002D05 000010A5 17EF ⴅ
000010A6 00002D06 000010A6 17F1 Ⴆ
00002D06 00002D06 000010A6 17F1 ⴆ
000010A7 00002D07 000010A7 17F5 Ⴇ
00002D07 00002D07 000010A7 17F5 ⴇ
00010400 00010428 00010400 30D2 𐐀
00010428 00010428 00010400 30D2 𐐨
00010401 00010429 00010401 30D3 𐐁
00010429 00010429 00010401 30D3 𐐩
00010402 0001042A 00010402 30D4 𐐂
0001042A 0001042A 00010402 30D4 𐐪
00010403 0001042B 00010403 30D5 𐐃
0001042B 0001042B 00010403 30D5 𐐫
00010404 0001042C 00010404 30D6 𐐄
0001042C 0001042C 00010404 30D6 𐐬
00010405 0001042D 00010405 30D7 𐐅
0001042D 0001042D 00010405 30D7 𐐭
00010406 0001042E 00010406 30D8 𐐆
0001042E 0001042E 00010406 30D8 𐐮
00010407 0001042F 00010407 30D9 𐐇
0001042F 0001042F 00010407 30D9 𐐯
INSERT INTO t1 VALUES ('a');
INSERT INTO t1 VALUES (concat(_utf32 0x61, _utf32 0xFFFF));
INSERT INTO t1 VALUES (concat(_utf32 0x61, _utf32 0x10FFFF));
INSERT INTO t1 VALUES (concat(_utf32 0x61, _utf32 0x10400));
SELECT hex(c), hex(weight_string(c)) FROM t1 WHERE c LIKE 'a%' ORDER BY c;
hex(c) hex(weight_string(c))
00000061 120F
0000006100010400 120F30D2
000000610000FFFF 120FFBC1FFFF
000000610010FFFF 120FFBE1FFFF
SELECT hex(c), hex(weight_string(c)), c FROM t1 WHERE c LIKE _utf32 0x10400 ORDER BY c, BINARY c;
hex(c) hex(weight_string(c)) c
00010400 30D2 𐐀
00010428 30D2 𐐨
SELECT hex(c), hex(weight_string(c)), c FROM t1 WHERE c LIKE _utf32 0x10428 ORDER BY c, BINARY c;
hex(c) hex(weight_string(c)) c
00010400 30D2 𐐀
00010428 30D2 𐐨
ALTER TABLE t1 ADD KEY(c);
EXPLAIN SELECT hex(c) FROM t1 WHERE c LIKE 'a%' ORDER BY c;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 range c c 42 NULL 2 Using where; Using index
SELECT hex(c), hex(weight_string(c)) FROM t1 WHERE c LIKE 'a%' ORDER BY c;
hex(c) hex(weight_string(c))
00000061 120F
0000006100010400 120F30D2
000000610000FFFF 120FFBC1FFFF
000000610010FFFF 120FFBE1FFFF
SELECT hex(c), hex(weight_string(c)), c FROM t1 WHERE c LIKE _utf32 0x10400 ORDER BY c, BINARY c;
hex(c) hex(weight_string(c)) c
00010400 30D2 𐐀
00010428 30D2 𐐨
SELECT hex(c), hex(weight_string(c)), c FROM t1 WHERE c LIKE _utf32 0x10428 ORDER BY c, BINARY c;
hex(c) hex(weight_string(c)) c
00010400 30D2 𐐀
00010428 30D2 𐐨
DROP TABLE t1;
#
# End of 5.6 tests # End of 5.6 tests
# #
...@@ -2467,6 +2467,215 @@ ZzŹźŻżŽž ...@@ -2467,6 +2467,215 @@ ZzŹźŻżŽž
ǁ ǁ
ǂ ǂ
ǃ ǃ
SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf8mb4_unicode_520_ci;
GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '')
÷
×
AaÀÁÂÃÄÅàáâãäåĀāĂ㥹ǍǎǞǟǠǡǺǻẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặ
AAAaaAaa
AEAeaEaeÆæǢǣǼǽ
Bb
ƀ
Ɓ
Ƃƃ
CcÇçĆćĈĉĊċČč
CHChcHch
Ƈƈ
DdÐðĎďĐđ
DZDzDŽDždZdzdŽdžDŽDždžDZDzdz
Ɖ
Ɗ
Ƌƌ
EeÈÉÊËèéêëĒēĔĕĖėĘęĚěẸẹẺẻẼẽẾếỀềỂểỄễỆệ
Ǝǝ
Ə
Ɛ
Ff
Ƒƒ
GgĜĝĞğĠġĢģǦǧǴǵ
Ǥǥ
Ɠ
Ɣ
Ƣƣ
HhĤĥĦħ
ƕǶ
IiÌÍÎÏìíîïĨĩĪīĬĭĮįİǏǐỈỉỊị
IJIjiJijIJij
ı
Ɨ
Ɩ
JjĴĵǰ
KkĶķǨǩ
Ƙƙ
LlĹĺĻļĽľĿŀŁł
LJLjlJljLJLjlj
LLLllLll
ƚ
ƛ
Mm
NnÑñŃńŅņŇňǸǹ
NJNjnJnjNJNjnj
Ɲ
ƞ
Ŋŋ
OoÒÓÔÕÖØòóôõöøŌōŎŏŐőƠơǑǒǪǫǬǭǾǿỌọỎỏỐốỒồỔổỖỗỘộỚớỜờỞởỠỡỢợ
OEOeoEoeŒœ
Ɔ
Ɵ
Pp
Ƥƥ
Qq
ĸ
RrŔŕŖŗŘř
RRRrrRrr
Ʀ
SsŚśŜŝŞşŠšſ
SSSssSssß
Ʃ
ƪ
TtŢţŤť
ƾ
Ŧŧ
ƫ
Ƭƭ
Ʈ
UuÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųƯưǓǔǕǖǗǘǙǚǛǜỤụỦủỨứỪừỬửỮữỰự
Ɯ
Ʊ
Vv
Ʋ
WwŴŵ
Xx
YyÝýÿŶŷŸ
Ƴƴ
ZzŹźŻżŽž
ƍ
Ƶƶ
ƷǮǯ
Ƹƹ
ƺ
Þþ
ƿǷ
ƻ
Ƨƨ
Ƽƽ
Ƅƅ
ʼn
ǀ
ǁ
ǂ
ǃ
SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf8mb4_vietnamese_ci;
GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '')
÷
×
AaÀÁÃÄÅàáãäåĀāĄąǍǎǞǟǠǡǺǻẠạẢả
AAAaaAaa
AEAeaEae
ĂăẮắẰằẲẳẴẵẶặ
ÂâẤấẦầẨẩẪẫẬậ
ÆæǢǣǼǽ
Bb
ƀ
Ɓ
Ƃƃ
CcÇçĆćĈĉĊċČč
CHChcHch
Ƈƈ
DdĎď
DZDzDŽDždZdzdŽdžDŽDždžDZDzdz
Đđ
Ɖ
Ɗ
Ƌƌ
Ðð
EeÈÉËèéëĒēĔĕĖėĘęĚěẸẹẺẻẼẽ
ÊêẾếỀềỂểỄễỆệ
Ǝǝ
Ə
Ɛ
Ff
Ƒƒ
GgĜĝĞğĠġĢģǦǧǴǵ
Ǥǥ
Ɠ
Ɣ
Ƣƣ
HhĤĥ
ƕǶ
Ħħ
IiÌÍÎÏìíîïĨĩĪīĬĭĮįİǏǐỈỉỊị
IJIjiJijIJij
ı
Ɨ
Ɩ
JjĴĵǰ
KkĶķǨǩ
Ƙƙ
LlĹĺĻļĽľ
Ŀŀ
LJLjlJljLJLjlj
LLLllLll
Łł
ƚ
ƛ
Mm
NnÑñŃńŅņŇňǸǹ
NJNjnJnjNJNjnj
Ɲ
ƞ
Ŋŋ
OoÒÓÕÖòóõöŌōŎŏŐőǑǒǪǫǬǭỌọỎỏ
OEOeoEoeŒœ
ÔôỐốỒồỔổỖỗỘộ
ƠơỚớỜờỞởỠỡỢợ
ØøǾǿ
Ɔ
Ɵ
Pp
Ƥƥ
Qq
ĸ
RrŔŕŖŗŘř
RRRrrRrr
Ʀ
SsŚśŜŝŞşŠšſ
SSSssSssß
Ʃ
ƪ
TtŢţŤť
ƾ
Ŧŧ
ƫ
Ƭƭ
Ʈ
UuÙÚÛÜùúûüŨũŪūŬŭŮůŰűŲųǓǔǕǖǗǘǙǚǛǜỤụỦủ
ƯưỨứỪừỬửỮữỰự
Ɯ
Ʊ
Vv
Ʋ
WwŴŵ
Xx
YyÝýÿŶŷŸ
Ƴƴ
ZzŹźŻżŽž
ƍ
Ƶƶ
ƷǮǯ
Ƹƹ
ƺ
Þþ
ƿǷ
ƻ
Ƨƨ
Ƽƽ
Ƅƅ
ʼn
ǀ
ǁ
ǂ
ǃ
DROP TABLE t1; DROP TABLE t1;
# #
# Start of 5.5 tests # Start of 5.5 tests
......
...@@ -140,7 +140,7 @@ ...@@ -140,7 +140,7 @@
</rules> </rules>
</collation> </collation>
<collation name="utf8_maxuserid_ci" id="2047"> <collation name="utf8_maxuserid_ci" id="2047" version="4.0.0">
<rules> <rules>
<reset>a</reset> <reset>a</reset>
<s>b</s> <s>b</s>
...@@ -150,10 +150,20 @@ ...@@ -150,10 +150,20 @@
<charset name="utf8mb4"> <charset name="utf8mb4">
<collation name="utf8mb4_test_ci" id="326"> <collation name="utf8mb4_test_ci" id="326" version="5.2.0">
<rules> <rules>
<reset>a</reset> <reset>a</reset>
<s>b</s> <s>b</s>
<!-- check shift for a supplementary character -->
<i>\u10062</i>
<!-- check reset to a supplementaty character-->
<reset>\u10400</reset>
<i>\u100400</i>
<!-- check contractions with non-ascii characters -->
<reset>d</reset>
<p>d\u017e</p>
<t>D\u017e</t>
<t>D\u017d</t>
</rules> </rules>
</collation> </collation>
<collation name="utf8mb4_test_400_ci" id="328" version="4.0.0"> <collation name="utf8mb4_test_400_ci" id="328" version="4.0.0">
......
...@@ -33,6 +33,7 @@ latin7 ISO 8859-13 Baltic latin7_general_ci 1 ...@@ -33,6 +33,7 @@ latin7 ISO 8859-13 Baltic latin7_general_ci 1
utf8mb4 UTF-8 Unicode utf8mb4_general_ci 4 utf8mb4 UTF-8 Unicode utf8mb4_general_ci 4
cp1251 Windows Cyrillic cp1251_general_ci 1 cp1251 Windows Cyrillic cp1251_general_ci 1
utf16 UTF-16 Unicode utf16_general_ci 4 utf16 UTF-16 Unicode utf16_general_ci 4
utf16le UTF-16LE Unicode utf16le_general_ci 4
cp1256 Windows Arabic cp1256_general_ci 1 cp1256 Windows Arabic cp1256_general_ci 1
cp1257 Windows Baltic cp1257_general_ci 1 cp1257 Windows Baltic cp1257_general_ci 1
utf32 UTF-32 Unicode utf32_general_ci 4 utf32 UTF-32 Unicode utf32_general_ci 4
......
...@@ -79,6 +79,8 @@ utf8_hungarian_ci utf8 210 # # ...@@ -79,6 +79,8 @@ utf8_hungarian_ci utf8 210 # #
utf8_sinhala_ci utf8 211 # # utf8_sinhala_ci utf8 211 # #
utf8_german2_ci utf8 212 # # utf8_german2_ci utf8 212 # #
utf8_croatian_mysql561_ci utf8 213 # # utf8_croatian_mysql561_ci utf8 213 # #
utf8_unicode_520_ci utf8 214 # #
utf8_vietnamese_ci utf8 215 # #
utf8_general_mysql500_ci utf8 223 # # utf8_general_mysql500_ci utf8 223 # #
utf8_croatian_ci utf8 576 # # utf8_croatian_ci utf8 576 # #
ucs2_general_ci ucs2 35 Yes # # ucs2_general_ci ucs2 35 Yes # #
...@@ -105,6 +107,8 @@ ucs2_hungarian_ci ucs2 146 # # ...@@ -105,6 +107,8 @@ ucs2_hungarian_ci ucs2 146 # #
ucs2_sinhala_ci ucs2 147 # # ucs2_sinhala_ci ucs2 147 # #
ucs2_german2_ci ucs2 148 # # ucs2_german2_ci ucs2 148 # #
ucs2_croatian_mysql561_ci ucs2 149 # # ucs2_croatian_mysql561_ci ucs2 149 # #
ucs2_unicode_520_ci ucs2 150 # #
ucs2_vietnamese_ci ucs2 151 # #
ucs2_general_mysql500_ci ucs2 159 # # ucs2_general_mysql500_ci ucs2 159 # #
ucs2_croatian_ci ucs2 640 # # ucs2_croatian_ci ucs2 640 # #
cp866_general_ci cp866 36 Yes # # cp866_general_ci cp866 36 Yes # #
...@@ -145,6 +149,8 @@ utf8mb4_hungarian_ci utf8mb4 242 # # ...@@ -145,6 +149,8 @@ utf8mb4_hungarian_ci utf8mb4 242 # #
utf8mb4_sinhala_ci utf8mb4 243 # # utf8mb4_sinhala_ci utf8mb4 243 # #
utf8mb4_german2_ci utf8mb4 244 # # utf8mb4_german2_ci utf8mb4 244 # #
utf8mb4_croatian_mysql561_ci utf8mb4 245 # # utf8mb4_croatian_mysql561_ci utf8mb4 245 # #
utf8mb4_unicode_520_ci utf8mb4 246 # #
utf8mb4_vietnamese_ci utf8mb4 247 # #
utf8mb4_croatian_ci utf8mb4 608 # # utf8mb4_croatian_ci utf8mb4 608 # #
cp1251_bulgarian_ci cp1251 14 # # cp1251_bulgarian_ci cp1251 14 # #
cp1251_ukrainian_ci cp1251 23 # # cp1251_ukrainian_ci cp1251 23 # #
...@@ -175,6 +181,8 @@ utf16_hungarian_ci utf16 119 # # ...@@ -175,6 +181,8 @@ utf16_hungarian_ci utf16 119 # #
utf16_sinhala_ci utf16 120 # # utf16_sinhala_ci utf16 120 # #
utf16_german2_ci utf16 121 # # utf16_german2_ci utf16 121 # #
utf16_croatian_mysql561_ci utf16 122 # # utf16_croatian_mysql561_ci utf16 122 # #
utf16_unicode_520_ci utf16 123 # #
utf16_vietnamese_ci utf16 124 # #
utf16_croatian_ci utf16 672 # # utf16_croatian_ci utf16 672 # #
utf16le_general_ci utf16le 56 Yes # # utf16le_general_ci utf16le 56 Yes # #
utf16le_bin utf16le 62 # # utf16le_bin utf16le 62 # #
...@@ -207,6 +215,8 @@ utf32_hungarian_ci utf32 178 # # ...@@ -207,6 +215,8 @@ utf32_hungarian_ci utf32 178 # #
utf32_sinhala_ci utf32 179 # # utf32_sinhala_ci utf32 179 # #
utf32_german2_ci utf32 180 # # utf32_german2_ci utf32 180 # #
utf32_croatian_mysql561_ci utf32 181 # # utf32_croatian_mysql561_ci utf32 181 # #
utf32_unicode_520_ci utf32 182 # #
utf32_vietnamese_ci utf32 183 # #
utf32_croatian_ci utf32 736 # # utf32_croatian_ci utf32 736 # #
binary binary 63 Yes # # binary binary 63 Yes # #
geostd8_general_ci geostd8 92 Yes # # geostd8_general_ci geostd8 92 Yes # #
......
...@@ -79,6 +79,8 @@ utf8_hungarian_ci utf8 210 # # ...@@ -79,6 +79,8 @@ utf8_hungarian_ci utf8 210 # #
utf8_sinhala_ci utf8 211 # # utf8_sinhala_ci utf8 211 # #
utf8_german2_ci utf8 212 # # utf8_german2_ci utf8 212 # #
utf8_croatian_mysql561_ci utf8 213 # # utf8_croatian_mysql561_ci utf8 213 # #
utf8_unicode_520_ci utf8 214 # #
utf8_vietnamese_ci utf8 215 # #
utf8_general_mysql500_ci utf8 223 # # utf8_general_mysql500_ci utf8 223 # #
utf8_croatian_ci utf8 576 # # utf8_croatian_ci utf8 576 # #
ucs2_general_ci ucs2 35 Yes # # ucs2_general_ci ucs2 35 Yes # #
...@@ -105,6 +107,8 @@ ucs2_hungarian_ci ucs2 146 # # ...@@ -105,6 +107,8 @@ ucs2_hungarian_ci ucs2 146 # #
ucs2_sinhala_ci ucs2 147 # # ucs2_sinhala_ci ucs2 147 # #
ucs2_german2_ci ucs2 148 # # ucs2_german2_ci ucs2 148 # #
ucs2_croatian_mysql561_ci ucs2 149 # # ucs2_croatian_mysql561_ci ucs2 149 # #
ucs2_unicode_520_ci ucs2 150 # #
ucs2_vietnamese_ci ucs2 151 # #
ucs2_general_mysql500_ci ucs2 159 # # ucs2_general_mysql500_ci ucs2 159 # #
ucs2_croatian_ci ucs2 640 # # ucs2_croatian_ci ucs2 640 # #
cp866_general_ci cp866 36 Yes # # cp866_general_ci cp866 36 Yes # #
...@@ -145,6 +149,8 @@ utf8mb4_hungarian_ci utf8mb4 242 # # ...@@ -145,6 +149,8 @@ utf8mb4_hungarian_ci utf8mb4 242 # #
utf8mb4_sinhala_ci utf8mb4 243 # # utf8mb4_sinhala_ci utf8mb4 243 # #
utf8mb4_german2_ci utf8mb4 244 # # utf8mb4_german2_ci utf8mb4 244 # #
utf8mb4_croatian_mysql561_ci utf8mb4 245 # # utf8mb4_croatian_mysql561_ci utf8mb4 245 # #
utf8mb4_unicode_520_ci utf8mb4 246 # #
utf8mb4_vietnamese_ci utf8mb4 247 # #
utf8mb4_croatian_ci utf8mb4 608 # # utf8mb4_croatian_ci utf8mb4 608 # #
cp1251_bulgarian_ci cp1251 14 # # cp1251_bulgarian_ci cp1251 14 # #
cp1251_ukrainian_ci cp1251 23 # # cp1251_ukrainian_ci cp1251 23 # #
...@@ -175,6 +181,8 @@ utf16_hungarian_ci utf16 119 # # ...@@ -175,6 +181,8 @@ utf16_hungarian_ci utf16 119 # #
utf16_sinhala_ci utf16 120 # # utf16_sinhala_ci utf16 120 # #
utf16_german2_ci utf16 121 # # utf16_german2_ci utf16 121 # #
utf16_croatian_mysql561_ci utf16 122 # # utf16_croatian_mysql561_ci utf16 122 # #
utf16_unicode_520_ci utf16 123 # #
utf16_vietnamese_ci utf16 124 # #
utf16_croatian_ci utf16 672 # # utf16_croatian_ci utf16 672 # #
utf16le_general_ci utf16le 56 Yes # # utf16le_general_ci utf16le 56 Yes # #
utf16le_bin utf16le 62 # # utf16le_bin utf16le 62 # #
...@@ -207,6 +215,8 @@ utf32_hungarian_ci utf32 178 # # ...@@ -207,6 +215,8 @@ utf32_hungarian_ci utf32 178 # #
utf32_sinhala_ci utf32 179 # # utf32_sinhala_ci utf32 179 # #
utf32_german2_ci utf32 180 # # utf32_german2_ci utf32 180 # #
utf32_croatian_mysql561_ci utf32 181 # # utf32_croatian_mysql561_ci utf32 181 # #
utf32_unicode_520_ci utf32 182 # #
utf32_vietnamese_ci utf32 183 # #
utf32_croatian_ci utf32 736 # # utf32_croatian_ci utf32 736 # #
binary binary 63 Yes # # binary binary 63 Yes # #
geostd8_general_ci geostd8 92 Yes # # geostd8_general_ci geostd8 92 Yes # #
......
...@@ -61,6 +61,28 @@ insert into t1 values ('a'); ...@@ -61,6 +61,28 @@ insert into t1 values ('a');
select * from t1 where c1='b'; select * from t1 where c1='b';
drop table t1; drop table t1;
# make sure utf8_test_ci is Unicode-5.0.0
SELECT hex(weight_string(_utf8mb4'a' collate utf8mb4_test_ci));
SELECT hex(weight_string(convert(_utf32 0x10002 using utf8mb4) collate utf8mb4_test_ci));
SELECT hex(@a:=convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_ci), hex(lower(@a));
SELECT hex(@a:=convert(_utf32 0x10428 using utf8mb4) collate utf8mb4_test_ci), hex(upper(@a));
SELECT hex(@a:=convert(_utf32 0x2C00 using utf8mb4) collate utf8mb4_test_ci), hex(lower(@a));
SELECT hex(@a:=convert(_utf32 0x2C30 using utf8mb4) collate utf8mb4_test_ci), hex(upper(@a));
# check that it works with supplementary characters
SELECT hex(weight_string(convert(_utf32 0x61 using utf8mb4) collate utf8mb4_test_ci));
SELECT hex(weight_string(convert(_utf32 0x62 using utf8mb4) collate utf8mb4_test_ci));
SELECT hex(weight_string(convert(_utf32 0x10062 using utf8mb4) collate utf8mb4_test_ci));
SELECT hex(weight_string(convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_ci));
SELECT hex(weight_string(convert(_utf32 0x100400 using utf8mb4) collate utf8mb4_test_ci));
# check contractions with non-ascii characters
SELECT hex(weight_string(_utf8mb4 0x64 collate utf8mb4_test_ci));
SELECT hex(weight_string(convert(_ucs2 0x0064017e using utf8mb4) collate utf8mb4_test_ci));
SELECT hex(weight_string(convert(_ucs2 0x0044017e using utf8mb4) collate utf8mb4_test_ci));
SELECT hex(weight_string(convert(_ucs2 0x0044017d using utf8mb4) collate utf8mb4_test_ci));
# #
# Bug#41084 full-text index added to custom UCA collation not working # Bug#41084 full-text index added to custom UCA collation not working
# #
......
...@@ -67,6 +67,9 @@ SELECT * FROM v1; ...@@ -67,6 +67,9 @@ SELECT * FROM v1;
ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_danish_ci; ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_danish_ci;
SELECT * FROM v1; SELECT * FROM v1;
ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
SELECT * FROM v1;
ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET ucs2; ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET ucs2;
SELECT * FROM v1; SELECT * FROM v1;
...@@ -94,6 +97,9 @@ SELECT * FROM v1; ...@@ -94,6 +97,9 @@ SELECT * FROM v1;
ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET utf16 COLLATE utf16_danish_ci; ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET utf16 COLLATE utf16_danish_ci;
SELECT * FROM v1; SELECT * FROM v1;
ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET utf16 COLLATE utf16_unicode_520_ci;
SELECT * FROM v1;
ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET utf32; ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET utf32;
SELECT * FROM v1; SELECT * FROM v1;
...@@ -106,5 +112,8 @@ SELECT * FROM v1; ...@@ -106,5 +112,8 @@ SELECT * FROM v1;
ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET utf32 COLLATE utf32_danish_ci; ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET utf32 COLLATE utf32_danish_ci;
SELECT * FROM v1; SELECT * FROM v1;
ALTER TABLE t1 MODIFY a VARCHAR(32) CHARACTER SET utf32 COLLATE utf32_unicode_520_ci;
SELECT * FROM v1;
DROP VIEW v1; DROP VIEW v1;
DROP TABLE t1; DROP TABLE t1;
...@@ -68,6 +68,8 @@ select group_concat(c1 order by c1) from t1 group by c1 collate utf8_hungarian_c ...@@ -68,6 +68,8 @@ select group_concat(c1 order by c1) from t1 group by c1 collate utf8_hungarian_c
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_croatian_mysql561_ci; select group_concat(c1 order by c1) from t1 group by c1 collate utf8_croatian_mysql561_ci;
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_croatian_ci; select group_concat(c1 order by c1) from t1 group by c1 collate utf8_croatian_ci;
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_german2_ci; select group_concat(c1 order by c1) from t1 group by c1 collate utf8_german2_ci;
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_unicode_520_ci;
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_vietnamese_ci;
ALTER TABLE t1 CONVERT TO CHARACTER SET ucs2 COLLATE ucs2_bin; ALTER TABLE t1 CONVERT TO CHARACTER SET ucs2 COLLATE ucs2_bin;
SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_unicode_ci; SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_unicode_ci;
...@@ -91,6 +93,8 @@ SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_hungarian_c ...@@ -91,6 +93,8 @@ SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_hungarian_c
SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_croatian_mysql561_ci; SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_croatian_mysql561_ci;
SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_croatian_ci; SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_croatian_ci;
SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_german2_ci; SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_german2_ci;
SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_unicode_520_ci;
SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_vietnamese_ci;
drop table t1; drop table t1;
...@@ -551,6 +555,11 @@ DROP TABLE t1; ...@@ -551,6 +555,11 @@ DROP TABLE t1;
SET collation_connection=utf8_german2_ci; SET collation_connection=utf8_german2_ci;
--source include/ctype_german.inc --source include/ctype_german.inc
--echo #
--echo # WL#2673 Unicode Collation Algorithm new version
--echo #
SET NAMES utf8mb4 COLLATE utf8mb4_unicode_520_ci;
--source include/ctype_unicode520.inc
--echo # --echo #
--echo # End of 5.6 tests --echo # End of 5.6 tests
......
...@@ -55,6 +55,8 @@ select group_concat(c1 order by binary c1 separator '') from t1 group by c1 coll ...@@ -55,6 +55,8 @@ select group_concat(c1 order by binary c1 separator '') from t1 group by c1 coll
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf16_croatian_mysql561_ci; select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf16_croatian_mysql561_ci;
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf16_croatian_ci; select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf16_croatian_ci;
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf16_german2_ci; select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf16_german2_ci;
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf16_unicode_520_ci;
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf16_vietnamese_ci;
drop table t1; drop table t1;
...@@ -178,6 +180,13 @@ SET NAMES utf8; ...@@ -178,6 +180,13 @@ SET NAMES utf8;
SET collation_connection=utf16_german2_ci; SET collation_connection=utf16_german2_ci;
--source include/ctype_german.inc --source include/ctype_german.inc
--echo #
--echo # WL#2673 Unicode Collation Algorithm new version
--echo #
SET NAMES utf8mb4;
SET collation_connection=utf16_unicode_520_ci;
--source include/ctype_unicode520.inc
--echo # --echo #
--echo # End of 5.6 tests --echo # End of 5.6 tests
--echo # --echo #
...@@ -56,6 +56,8 @@ select group_concat(c1 order by binary c1 separator '') from t1 group by c1 coll ...@@ -56,6 +56,8 @@ select group_concat(c1 order by binary c1 separator '') from t1 group by c1 coll
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf32_croatian_mysql561_ci; select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf32_croatian_mysql561_ci;
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf32_croatian_ci; select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf32_croatian_ci;
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf32_german2_ci; select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf32_german2_ci;
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf32_unicode_520_ci;
select group_concat(c1 order by binary c1 separator '') from t1 group by c1 collate utf32_vietnamese_ci;
drop table t1; drop table t1;
...@@ -200,6 +202,13 @@ SET NAMES utf8; ...@@ -200,6 +202,13 @@ SET NAMES utf8;
SET collation_connection=utf32_german2_ci; SET collation_connection=utf32_german2_ci;
--source include/ctype_german.inc --source include/ctype_german.inc
--echo #
--echo # WL#2673 Unicode Collation Algorithm new version
--echo #
SET NAMES utf8mb4;
SET collation_connection=utf32_unicode_520_ci;
--source include/ctype_unicode520.inc
--echo # --echo #
--echo # End of 5.6 tests --echo # End of 5.6 tests
--echo # --echo #
...@@ -35,6 +35,8 @@ SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf ...@@ -35,6 +35,8 @@ SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf
SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf8mb4_croatian_mysql561_ci; SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf8mb4_croatian_mysql561_ci;
SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf8mb4_croatian_ci; SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf8mb4_croatian_ci;
SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf8mb4_german2_ci; SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf8mb4_german2_ci;
SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf8mb4_unicode_520_ci;
SELECT GROUP_CONCAT(c1 ORDER BY c1 SEPARATOR '') FROM t1 GROUP BY c1 COLLATE utf8mb4_vietnamese_ci;
DROP TABLE t1; DROP TABLE t1;
......
...@@ -45,6 +45,8 @@ extern struct charset_info_st my_charset_ucs2_esperanto_uca_ci; ...@@ -45,6 +45,8 @@ extern struct charset_info_st my_charset_ucs2_esperanto_uca_ci;
extern struct charset_info_st my_charset_ucs2_hungarian_uca_ci; extern struct charset_info_st my_charset_ucs2_hungarian_uca_ci;
extern struct charset_info_st my_charset_ucs2_croatian_mysql561_uca_ci; extern struct charset_info_st my_charset_ucs2_croatian_mysql561_uca_ci;
extern struct charset_info_st my_charset_ucs2_sinhala_uca_ci; extern struct charset_info_st my_charset_ucs2_sinhala_uca_ci;
extern struct charset_info_st my_charset_ucs2_unicode_520_ci;
extern struct charset_info_st my_charset_ucs2_vietnamese_ci;
extern struct charset_info_st my_charset_ucs2_croatian_uca_ci; extern struct charset_info_st my_charset_ucs2_croatian_uca_ci;
#endif #endif
...@@ -71,6 +73,8 @@ extern struct charset_info_st my_charset_utf32_esperanto_uca_ci; ...@@ -71,6 +73,8 @@ extern struct charset_info_st my_charset_utf32_esperanto_uca_ci;
extern struct charset_info_st my_charset_utf32_hungarian_uca_ci; extern struct charset_info_st my_charset_utf32_hungarian_uca_ci;
extern struct charset_info_st my_charset_utf32_croatian_mysql561_uca_ci; extern struct charset_info_st my_charset_utf32_croatian_mysql561_uca_ci;
extern struct charset_info_st my_charset_utf32_sinhala_uca_ci; extern struct charset_info_st my_charset_utf32_sinhala_uca_ci;
extern struct charset_info_st my_charset_utf32_unicode_520_ci;
extern struct charset_info_st my_charset_utf32_vietnamese_ci;
extern struct charset_info_st my_charset_utf32_croatian_uca_ci; extern struct charset_info_st my_charset_utf32_croatian_uca_ci;
#endif /* HAVE_CHARSET_utf32 */ #endif /* HAVE_CHARSET_utf32 */
...@@ -97,6 +101,8 @@ extern struct charset_info_st my_charset_utf16_esperanto_uca_ci; ...@@ -97,6 +101,8 @@ extern struct charset_info_st my_charset_utf16_esperanto_uca_ci;
extern struct charset_info_st my_charset_utf16_hungarian_uca_ci; extern struct charset_info_st my_charset_utf16_hungarian_uca_ci;
extern struct charset_info_st my_charset_utf16_croatian_mysql561_uca_ci; extern struct charset_info_st my_charset_utf16_croatian_mysql561_uca_ci;
extern struct charset_info_st my_charset_utf16_sinhala_uca_ci; extern struct charset_info_st my_charset_utf16_sinhala_uca_ci;
extern struct charset_info_st my_charset_utf16_unicode_520_ci;
extern struct charset_info_st my_charset_utf16_vietnamese_ci;
extern struct charset_info_st my_charset_utf16_croatian_uca_ci; extern struct charset_info_st my_charset_utf16_croatian_uca_ci;
#endif /* HAVE_CHARSET_utf16 */ #endif /* HAVE_CHARSET_utf16 */
...@@ -123,6 +129,8 @@ extern struct charset_info_st my_charset_utf8_esperanto_uca_ci; ...@@ -123,6 +129,8 @@ extern struct charset_info_st my_charset_utf8_esperanto_uca_ci;
extern struct charset_info_st my_charset_utf8_hungarian_uca_ci; extern struct charset_info_st my_charset_utf8_hungarian_uca_ci;
extern struct charset_info_st my_charset_utf8_croatian_mysql561_uca_ci; extern struct charset_info_st my_charset_utf8_croatian_mysql561_uca_ci;
extern struct charset_info_st my_charset_utf8_sinhala_uca_ci; extern struct charset_info_st my_charset_utf8_sinhala_uca_ci;
extern struct charset_info_st my_charset_utf8_unicode_520_ci;
extern struct charset_info_st my_charset_utf8_vietnamese_ci;
extern struct charset_info_st my_charset_utf8_croatian_uca_ci; extern struct charset_info_st my_charset_utf8_croatian_uca_ci;
#ifdef HAVE_UTF8_GENERAL_CS #ifdef HAVE_UTF8_GENERAL_CS
extern struct charset_info_st my_charset_utf8_general_cs; extern struct charset_info_st my_charset_utf8_general_cs;
...@@ -151,6 +159,8 @@ extern struct charset_info_st my_charset_utf8mb4_esperanto_uca_ci; ...@@ -151,6 +159,8 @@ extern struct charset_info_st my_charset_utf8mb4_esperanto_uca_ci;
extern struct charset_info_st my_charset_utf8mb4_hungarian_uca_ci; extern struct charset_info_st my_charset_utf8mb4_hungarian_uca_ci;
extern struct charset_info_st my_charset_utf8mb4_croatian_mysql561_uca_ci; extern struct charset_info_st my_charset_utf8mb4_croatian_mysql561_uca_ci;
extern struct charset_info_st my_charset_utf8mb4_sinhala_uca_ci; extern struct charset_info_st my_charset_utf8mb4_sinhala_uca_ci;
extern struct charset_info_st my_charset_utf8mb4_unicode_520_ci;
extern struct charset_info_st my_charset_utf8mb4_vietnamese_ci;
extern struct charset_info_st my_charset_utf8mb4_croatian_uca_ci; extern struct charset_info_st my_charset_utf8mb4_croatian_uca_ci;
#endif /* HAVE_CHARSET_utf8mb4 */ #endif /* HAVE_CHARSET_utf8mb4 */
...@@ -242,6 +252,8 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused))) ...@@ -242,6 +252,8 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused)))
add_compiled_collation(&my_charset_ucs2_hungarian_uca_ci); add_compiled_collation(&my_charset_ucs2_hungarian_uca_ci);
add_compiled_collation(&my_charset_ucs2_croatian_mysql561_uca_ci); add_compiled_collation(&my_charset_ucs2_croatian_mysql561_uca_ci);
add_compiled_collation(&my_charset_ucs2_sinhala_uca_ci); add_compiled_collation(&my_charset_ucs2_sinhala_uca_ci);
add_compiled_collation(&my_charset_ucs2_unicode_520_ci);
add_compiled_collation(&my_charset_ucs2_vietnamese_ci);
add_compiled_collation(&my_charset_ucs2_croatian_uca_ci); add_compiled_collation(&my_charset_ucs2_croatian_uca_ci);
#endif #endif
#endif #endif
...@@ -281,6 +293,8 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused))) ...@@ -281,6 +293,8 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused)))
add_compiled_collation(&my_charset_utf8_hungarian_uca_ci); add_compiled_collation(&my_charset_utf8_hungarian_uca_ci);
add_compiled_collation(&my_charset_utf8_croatian_mysql561_uca_ci); add_compiled_collation(&my_charset_utf8_croatian_mysql561_uca_ci);
add_compiled_collation(&my_charset_utf8_sinhala_uca_ci); add_compiled_collation(&my_charset_utf8_sinhala_uca_ci);
add_compiled_collation(&my_charset_utf8_unicode_520_ci);
add_compiled_collation(&my_charset_utf8_vietnamese_ci);
add_compiled_collation(&my_charset_utf8_croatian_uca_ci); add_compiled_collation(&my_charset_utf8_croatian_uca_ci);
#endif #endif
#endif /* HAVE_CHARSET_utf8 */ #endif /* HAVE_CHARSET_utf8 */
...@@ -312,6 +326,8 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused))) ...@@ -312,6 +326,8 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused)))
add_compiled_collation(&my_charset_utf8mb4_hungarian_uca_ci); add_compiled_collation(&my_charset_utf8mb4_hungarian_uca_ci);
add_compiled_collation(&my_charset_utf8mb4_croatian_mysql561_uca_ci); add_compiled_collation(&my_charset_utf8mb4_croatian_mysql561_uca_ci);
add_compiled_collation(&my_charset_utf8mb4_sinhala_uca_ci); add_compiled_collation(&my_charset_utf8mb4_sinhala_uca_ci);
add_compiled_collation(&my_charset_utf8mb4_unicode_520_ci);
add_compiled_collation(&my_charset_utf8mb4_vietnamese_ci);
add_compiled_collation(&my_charset_utf8mb4_croatian_uca_ci); add_compiled_collation(&my_charset_utf8mb4_croatian_uca_ci);
#endif /* HAVE_UCA_COLLATIONS */ #endif /* HAVE_UCA_COLLATIONS */
#endif /* HAVE_CHARSET_utf8mb4 */ #endif /* HAVE_CHARSET_utf8mb4 */
...@@ -345,6 +361,8 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused))) ...@@ -345,6 +361,8 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused)))
add_compiled_collation(&my_charset_utf16_hungarian_uca_ci); add_compiled_collation(&my_charset_utf16_hungarian_uca_ci);
add_compiled_collation(&my_charset_utf16_croatian_mysql561_uca_ci); add_compiled_collation(&my_charset_utf16_croatian_mysql561_uca_ci);
add_compiled_collation(&my_charset_utf16_sinhala_uca_ci); add_compiled_collation(&my_charset_utf16_sinhala_uca_ci);
add_compiled_collation(&my_charset_utf16_unicode_520_ci);
add_compiled_collation(&my_charset_utf16_vietnamese_ci);
add_compiled_collation(&my_charset_utf16_croatian_uca_ci); add_compiled_collation(&my_charset_utf16_croatian_uca_ci);
#endif /* HAVE_UCA_COLLATIONS */ #endif /* HAVE_UCA_COLLATIONS */
#endif /* HAVE_CHARSET_utf16 */ #endif /* HAVE_CHARSET_utf16 */
...@@ -376,6 +394,8 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused))) ...@@ -376,6 +394,8 @@ my_bool init_compiled_charsets(myf flags __attribute__((unused)))
add_compiled_collation(&my_charset_utf32_hungarian_uca_ci); add_compiled_collation(&my_charset_utf32_hungarian_uca_ci);
add_compiled_collation(&my_charset_utf32_croatian_mysql561_uca_ci); add_compiled_collation(&my_charset_utf32_croatian_mysql561_uca_ci);
add_compiled_collation(&my_charset_utf32_sinhala_uca_ci); add_compiled_collation(&my_charset_utf32_sinhala_uca_ci);
add_compiled_collation(&my_charset_utf32_unicode_520_ci);
add_compiled_collation(&my_charset_utf32_vietnamese_ci);
add_compiled_collation(&my_charset_utf32_croatian_uca_ci); add_compiled_collation(&my_charset_utf32_croatian_uca_ci);
#endif /* HAVE_UCA_COLLATIONS */ #endif /* HAVE_UCA_COLLATIONS */
#endif /* HAVE_CHARSET_utf32 */ #endif /* HAVE_CHARSET_utf32 */
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment