Skip to content

Commit fb35b9a

Browse files
committed
Multi-level collation in UCA, Thai sorting with contraction for UTF8.
1 parent 9c9747f commit fb35b9a

13 files changed

+12590
-76
lines changed

include/m_ctype.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ extern MY_UNICASE_INFO my_unicase_unicode520;
101101
*/
102102
#define MY_UCA_MAX_WEIGHT_SIZE (8+1) /* Including 0 terminator */
103103
#define MY_UCA_CONTRACTION_MAX_WEIGHT_SIZE (2*8+1) /* Including 0 terminator */
104-
#define MY_UCA_WEIGHT_LEVELS 1
104+
#define MY_UCA_WEIGHT_LEVELS 2
105105

106106
typedef struct my_contraction_t
107107
{

mysql-test/r/ctype_uca.result

Lines changed: 255 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2706,6 +2706,261 @@ Z,z,Ź,ź,Ż,ż,Ž,ž
27062706
ǁ
27072707
ǂ
27082708
ǃ
2709+
select group_concat(c1 order by c1) from t1 group by c1 collate utf8_thai_520_w2;
2710+
group_concat(c1 order by c1)
2711+
÷
2712+
×
2713+
A,a
2714+
Á,á
2715+
À,à
2716+
Ă,ă
2717+
Ắ,ắ
2718+
Ằ,ằ
2719+
Ẵ,ẵ
2720+
Ẳ,ẳ
2721+
Â,â
2722+
Ấ,ấ
2723+
Ầ,ầ
2724+
Ẫ,ẫ
2725+
Ẩ,ẩ
2726+
Ǎ,ǎ
2727+
Å,å
2728+
Ǻ,ǻ
2729+
Ä,ä
2730+
Ǟ,ǟ
2731+
Ã,ã
2732+
Ǡ,ǡ
2733+
Ą,ą
2734+
Ā,ā
2735+
Ả,ả
2736+
Ạ,ạ
2737+
Ặ,ặ
2738+
Ậ,ậ
2739+
AA,Aa,aA,aa
2740+
AE,Ae,aE,ae
2741+
Æ,æ
2742+
Ǽ,ǽ
2743+
Ǣ,ǣ
2744+
B,b
2745+
ƀ
2746+
Ɓ
2747+
Ƃ,ƃ
2748+
C,c
2749+
Ć,ć
2750+
Ĉ,ĉ
2751+
Č,č
2752+
Ċ,ċ
2753+
Ç,ç
2754+
CH,Ch,cH,ch
2755+
Ƈ,ƈ
2756+
D,d
2757+
Ď,ď
2758+
Đ,đ
2759+
Ð,ð
2760+
DZ,Dz,dZ,dz,DZ,Dz,dz
2761+
DŽ,Dž,dŽ,dž,DŽ,Dž,dž
2762+
Ɖ
2763+
Ɗ
2764+
Ƌ,ƌ
2765+
E,e
2766+
É,é
2767+
È,è
2768+
Ĕ,ĕ
2769+
Ê,ê
2770+
Ế,ế
2771+
Ề,ề
2772+
Ễ,ễ
2773+
Ể,ể
2774+
Ě,ě
2775+
Ë,ë
2776+
Ẽ,ẽ
2777+
Ė,ė
2778+
Ę,ę
2779+
Ē,ē
2780+
Ẻ,ẻ
2781+
Ẹ,ẹ
2782+
Ệ,ệ
2783+
Ǝ,ǝ
2784+
Ə
2785+
Ɛ
2786+
F,f
2787+
Ƒ,ƒ
2788+
G,g
2789+
Ǵ,ǵ
2790+
Ğ,ğ
2791+
Ĝ,ĝ
2792+
Ǧ,ǧ
2793+
Ġ,ġ
2794+
Ģ,ģ
2795+
Ǥ,ǥ
2796+
Ɠ
2797+
Ɣ
2798+
Ƣ,ƣ
2799+
H,h
2800+
Ĥ,ĥ
2801+
Ħ,ħ
2802+
ƕ,Ƕ
2803+
I,i
2804+
Í,í
2805+
Ì,ì
2806+
Ĭ,ĭ
2807+
Î,î
2808+
Ǐ,ǐ
2809+
Ï,ï
2810+
Ĩ,ĩ
2811+
İ
2812+
Į,į
2813+
Ī,ī
2814+
Ỉ,ỉ
2815+
Ị,ị
2816+
IJ,Ij,iJ,ij,IJ,ij
2817+
ı
2818+
Ɨ
2819+
Ɩ
2820+
J,j
2821+
Ĵ,ĵ
2822+
ǰ
2823+
K,k
2824+
Ǩ,ǩ
2825+
Ķ,ķ
2826+
Ƙ,ƙ
2827+
L,l
2828+
Ĺ,ĺ
2829+
Ľ,ľ
2830+
Ļ,ļ
2831+
Ł,ł
2832+
Ŀ,ŀ
2833+
LJ,Lj,lJ,lj,LJ,Lj,lj
2834+
LL,Ll,lL,ll
2835+
ƚ
2836+
ƛ
2837+
M,m
2838+
N,n
2839+
Ń,ń
2840+
Ǹ,ǹ
2841+
Ň,ň
2842+
Ñ,ñ
2843+
Ņ,ņ
2844+
NJ,Nj,nJ,nj,NJ,Nj,nj
2845+
Ɲ
2846+
ƞ
2847+
Ŋ,ŋ
2848+
O,o
2849+
Ó,ó
2850+
Ò,ò
2851+
Ŏ,ŏ
2852+
Ô,ô
2853+
Ố,ố
2854+
Ồ,ồ
2855+
Ỗ,ỗ
2856+
Ổ,ổ
2857+
Ǒ,ǒ
2858+
Ö,ö
2859+
Ő,ő
2860+
Õ,õ
2861+
Ø,ø
2862+
Ǿ,ǿ
2863+
Ǫ,ǫ
2864+
Ǭ,ǭ
2865+
Ō,ō
2866+
Ỏ,ỏ
2867+
Ơ,ơ
2868+
Ớ,ớ
2869+
Ờ,ờ
2870+
Ỡ,ỡ
2871+
Ở,ở
2872+
Ợ,ợ
2873+
Ọ,ọ
2874+
Ộ,ộ
2875+
OE,Oe,oE,oe
2876+
Œ,œ
2877+
Ɔ
2878+
Ɵ
2879+
P,p
2880+
Ƥ,ƥ
2881+
Q,q
2882+
ĸ
2883+
R,r
2884+
Ŕ,ŕ
2885+
Ř,ř
2886+
Ŗ,ŗ
2887+
RR,Rr,rR,rr
2888+
Ʀ
2889+
S,s
2890+
Ś,ś
2891+
Ŝ,ŝ
2892+
Š,š
2893+
Ş,ş
2894+
ſ
2895+
SS,Ss,sS,ss
2896+
ß
2897+
Ʃ
2898+
ƪ
2899+
T,t
2900+
Ť,ť
2901+
Ţ,ţ
2902+
ƾ
2903+
Ŧ,ŧ
2904+
ƫ
2905+
Ƭ,ƭ
2906+
Ʈ
2907+
U,u
2908+
Ú,ú
2909+
Ù,ù
2910+
Ŭ,ŭ
2911+
Û,û
2912+
Ǔ,ǔ
2913+
Ů,ů
2914+
Ü,ü
2915+
Ǘ,ǘ
2916+
Ǜ,ǜ
2917+
Ǚ,ǚ
2918+
Ǖ,ǖ
2919+
Ű,ű
2920+
Ũ,ũ
2921+
Ų,ų
2922+
Ū,ū
2923+
Ủ,ủ
2924+
Ư,ư
2925+
Ứ,ứ
2926+
Ừ,ừ
2927+
Ữ,ữ
2928+
Ử,ử
2929+
Ự,ự
2930+
Ụ,ụ
2931+
Ɯ
2932+
Ʊ
2933+
V,v
2934+
Ʋ
2935+
W,w
2936+
Ŵ,ŵ
2937+
X,x
2938+
Y,y
2939+
Ý,ý
2940+
Ŷ,ŷ
2941+
ÿ,Ÿ
2942+
Ƴ,ƴ
2943+
Z,z
2944+
Ź,ź
2945+
Ž,ž
2946+
Ż,ż
2947+
ƍ
2948+
Ƶ,ƶ
2949+
Ʒ
2950+
Ǯ,ǯ
2951+
Ƹ,ƹ
2952+
ƺ
2953+
Þ,þ
2954+
ƿ,Ƿ
2955+
ƻ
2956+
Ƨ,ƨ
2957+
Ƽ,ƽ
2958+
Ƅ,ƅ
2959+
ʼn
2960+
ǀ
2961+
ǁ
2962+
ǂ
2963+
ǃ
27092964
ALTER TABLE t1 CONVERT TO CHARACTER SET ucs2 COLLATE ucs2_bin;
27102965
SELECT GROUP_CONCAT(c1 ORDER BY c1) FROM t1 GROUP BY c1 COLLATE ucs2_unicode_ci;
27112966
GROUP_CONCAT(c1 ORDER BY c1)
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
SET NAMES utf8;
2+
CREATE TABLE t1 (c1 VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_thai_520_w2)
3+
PARTITION BY KEY(c1) PARTITIONS 3;
4+
SHOW CREATE TABLE t1;
5+
Table Create Table
6+
t1 CREATE TABLE `t1` (
7+
`c1` varchar(10) CHARACTER SET utf8 COLLATE utf8_thai_520_w2 DEFAULT NULL
8+
) ENGINE=MyISAM DEFAULT CHARSET=latin1
9+
/*!50100 PARTITION BY KEY (c1)
10+
PARTITIONS 3 */
11+
INSERT INTO t1 VALUES ('A'),('À'),('Á'),('Â'),('Ã'),('Ä'),('Å');
12+
INSERT INTO t1 VALUES ('B');
13+
INSERT INTO t1 VALUES ('C');
14+
INSERT INTO t1 VALUES ('D');
15+
INSERT INTO t1 VALUES ('E');
16+
INSERT INTO t1 VALUES ('F');
17+
INSERT INTO t1 VALUES ('G');
18+
INSERT INTO t1 VALUES ('H');
19+
INSERT INTO t1 VALUES ('I');
20+
INSERT INTO t1 VALUES ('J');
21+
INSERT INTO t1 VALUES ('K');
22+
INSERT INTO t1 VALUES ('L'),('Ĺ'),('Ļ'),('Ľ'),('Ŀ'),('Ł');
23+
INSERT INTO t1 VALUES ('M');
24+
INSERT INTO t1 VALUES ('N');
25+
INSERT INTO t1 VALUES ('O'),('Ò'),('Ó'),('Ô'),('Õ'),('Ö'),('Ø');
26+
INSERT INTO t1 VALUES ('P');
27+
INSERT INTO t1 VALUES ('Q');
28+
INSERT INTO t1 VALUES ('R');
29+
INSERT INTO t1 VALUES ('S');
30+
INSERT INTO t1 VALUES ('T');
31+
INSERT INTO t1 VALUES ('U');
32+
INSERT INTO t1 VALUES ('V');
33+
INSERT INTO t1 VALUES ('W');
34+
INSERT INTO t1 VALUES ('X');
35+
INSERT INTO t1 VALUES ('Y');
36+
INSERT INTO t1 VALUES ('Z');
37+
SELECT * FROM t1 PARTITION (p0) ORDER BY c1;
38+
c1
39+
J
40+
K
41+
L
42+
Ĺ
43+
Ľ
44+
Ļ
45+
Ł
46+
Ŀ
47+
M
48+
Q
49+
R
50+
T
51+
V
52+
X
53+
SELECT * FROM t1 PARTITION (p1) ORDER BY c1;
54+
c1
55+
A
56+
Á
57+
À
58+
Â
59+
Å
60+
Ä
61+
Ã
62+
D
63+
E
64+
F
65+
G
66+
I
67+
N
68+
S
69+
U
70+
W
71+
Z
72+
SELECT * FROM t1 PARTITION (p2) ORDER BY c1;
73+
c1
74+
B
75+
C
76+
H
77+
O
78+
Ó
79+
Ò
80+
Ô
81+
Ö
82+
Õ
83+
Ø
84+
P
85+
Y
86+
DROP TABLE t1;

0 commit comments

Comments
 (0)