Skip to content

Commit 4d44b7c

Browse files
committed
Add MariaDB 10.2 collations. Fixes #338
1 parent 83c1cea commit 4d44b7c

File tree

2 files changed

+206
-0
lines changed

2 files changed

+206
-0
lines changed

src/MySqlConnector/Serialization/CharacterSet.cs

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,5 +277,108 @@ internal enum CharacterSet : ushort
277277
Utf8Mb4Uca900AccentSensitiveCaseInsensitive = 305,
278278
Utf8Mb4RussianUca900AccentInsensitiveCaseInsensitive = 306,
279279
Utf8Mb4RussianUca900AccentSensitiveCaseSensitive = 307,
280+
Utf8CroatianCaseInsensitiveMariaDb = 576,
281+
Utf8MyanmarCaseInsensitive = 577,
282+
Utf8ThaiUnicode520Weight2 = 578,
283+
Utf8Mb4CroatianCaseInsensitiveMariaDb = 608,
284+
Utf8Mb4MyanmarCaseInsensitive = 609,
285+
Utf8Mb4ThaiUnicode520Weight2 = 610,
286+
Ucs2CroatianCaseInsensitiveMariaDb = 640,
287+
Ucs2MyanmarCaseInsensitive = 641,
288+
Ucs2ThaiUnicode520Weight2 = 642,
289+
Utf16CroatianCaseInsensitiveMariaDb = 672,
290+
Utf16MyanmarCaseInsensitive = 673,
291+
Utf16ThaiUnicode520Weight2 = 674,
292+
Utf32CroatianCaseInsensitiveMariaDb = 736,
293+
Utf32MyanmarCaseInsensitive = 737,
294+
Utf32ThaiUnicode520Weight2 = 738,
295+
Big5ChineseNoPadCaseInsensitive = 1025,
296+
Dec8SwedishNoPadCaseInsensitive = 1027,
297+
Cp850GeneralNoPadCaseInsensitive = 1028,
298+
Hp8EnglishNoPadCaseInsensitive = 1030,
299+
Koi8rGeneralNoPadCaseInsensitive = 1031,
300+
Latin1SwedishNoPadCaseInsensitive = 1032,
301+
Latin2GeneralNoPadCaseInsensitive = 1033,
302+
Swe7SwedishNoPadCaseInsensitive = 1034,
303+
AsciiGeneralNoPadCaseInsensitive = 1035,
304+
UjisJapaneseNoPadCaseInsensitive = 1036,
305+
SjisJapaneseNoPadCaseInsensitive = 1037,
306+
HebrewGeneralNoPadCaseInsensitive = 1040,
307+
Tis620ThaiNoPadCaseInsensitive = 1042,
308+
EuckrKoreanNoPadCaseInsensitive = 1043,
309+
Koi8uGeneralNoPadCaseInsensitive = 1046,
310+
Gb2312ChineseNoPadCaseInsensitive = 1048,
311+
GreekGeneralNoPadCaseInsensitive = 1049,
312+
Cp1250GeneralNoPadCaseInsensitive = 1050,
313+
GbkChineseNoPadCaseInsensitive = 1052,
314+
Latin5TurkishNoPadCaseInsensitive = 1054,
315+
Armscii8GeneralNoPadCaseInsensitive = 1056,
316+
Utf8GeneralNoPadCaseInsensitive = 1057,
317+
Ucs2GeneralNoPadCaseInsensitive = 1059,
318+
Cp866GeneralNoPadCaseInsensitive = 1060,
319+
Keybcs2GeneralNoPadCaseInsensitive = 1061,
320+
MacCentralEuropeanGeneralNoPadCaseInsensitive = 1062,
321+
MacRomanGeneralNoPadCaseInsensitive = 1063,
322+
Cp852GeneralNoPadCaseInsensitive = 1064,
323+
Latin7GeneralNoPadCaseInsensitive = 1065,
324+
MacCentralEuropeanNoPadBinary = 1067,
325+
Utf8Mb4GeneralNoPadCaseInsensitive = 1069,
326+
Utf8Mb4NoPadBinary = 1070,
327+
Latin1NoPadBinary = 1071,
328+
Cp1251NoPadBinary = 1074,
329+
Cp1251GeneralNoPadCaseInsensitive = 1075,
330+
MacRomanNoPadBinary = 1077,
331+
Utf16GeneralNoPadCaseInsensitive = 1078,
332+
Utf16NoPadBinary = 1079,
333+
Utf16leGeneralNoPadCaseInsensitive = 1080,
334+
Cp1256GeneralNoPadCaseInsensitive = 1081,
335+
Cp1257NoPadBinary = 1082,
336+
Cp1257GeneralNoPadCaseInsensitive = 1083,
337+
Utf32GeneralNoPadCaseInsensitive = 1084,
338+
Utf32NoPadBinary = 1085,
339+
Utf16leNoPadBinary = 1086,
340+
Armscii8NoPadBinary = 1088,
341+
AsciiNoPadBinary = 1089,
342+
Cp1250NoPadBinary = 1090,
343+
Cp1256NoPadBinary = 1091,
344+
Cp866NoPadBinary = 1092,
345+
Dec8NoPadBinary = 1093,
346+
GreekNoPadBinary = 1094,
347+
HebrewNoPadBinary = 1095,
348+
Hp8NoPadBinary = 1096,
349+
Keybcs2NoPadBinary = 1097,
350+
Koi8rNoPadBinary = 1098,
351+
Koi8uNoPadBinary = 1099,
352+
Latin2NoPadBinary = 1101,
353+
Latin5NoPadBinary = 1102,
354+
Latin7NoPadBinary = 1103,
355+
Cp850NoPadBinary = 1104,
356+
Cp852NoPadBinary = 1105,
357+
Swe7NoPadBinary = 1106,
358+
Utf8NoPadBinary = 1107,
359+
Big5NoPadBinary = 1108,
360+
EuckrNoPadBinary = 1109,
361+
Gb2312NoPadBinary = 1110,
362+
GbkNoPadBinary = 1111,
363+
SjisNoPadBinary = 1112,
364+
Tis620NoPadBinary = 1113,
365+
Ucs2NoPadBinary = 1114,
366+
UjisNoPadBinary = 1115,
367+
Geostd8GeneralNoPadCaseInsensitive = 1116,
368+
Geostd8NoPadBinary = 1117,
369+
Cp932JapaneseNoPadCaseInsensitive = 1119,
370+
Cp932NoPadBinary = 1120,
371+
EucjpmsJapaneseNoPadCaseInsensitive = 1121,
372+
EucjpmsNoPadBinary = 1122,
373+
Utf16UnicodeNoPadCaseInsensitive = 1125,
374+
Utf16Unicode520NoPadCaseInsensitive = 1147,
375+
Ucs2UnicodeNoPadCaseInsensitive = 1152,
376+
Ucs2Unicode520NoPadCaseInsensitive = 1174,
377+
Utf32UnicodeNoPadCaseInsensitive = 1184,
378+
Utf32Unicode520NoPadCaseInsensitive = 1206,
379+
Utf8UnicodeNoPadCaseInsensitive = 1216,
380+
Utf8Unicode520NoPadCaseInsensitive = 1238,
381+
Utf8Mb4UnicodeNoPadCaseInsensitive = 1248,
382+
Utf8Mb4Unicode520NoPadCaseInsensitive = 1270,
280383
}
281384
}

src/MySqlConnector/Serialization/SerializationUtility.cs

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,56 @@ public static int GetBytesPerCharacter(CharacterSet characterSet)
9595
case CharacterSet.Geostd8Binary:
9696
case CharacterSet.Latin1SpanishCaseInsensitive:
9797
case CharacterSet.Cp1250PolishCaseInsensitive:
98+
case CharacterSet.Dec8SwedishNoPadCaseInsensitive:
99+
case CharacterSet.Cp850GeneralNoPadCaseInsensitive:
100+
case CharacterSet.Hp8EnglishNoPadCaseInsensitive:
101+
case CharacterSet.Koi8rGeneralNoPadCaseInsensitive:
102+
case CharacterSet.Latin1SwedishNoPadCaseInsensitive:
103+
case CharacterSet.Latin2GeneralNoPadCaseInsensitive:
104+
case CharacterSet.Swe7SwedishNoPadCaseInsensitive:
105+
case CharacterSet.AsciiGeneralNoPadCaseInsensitive:
106+
case CharacterSet.HebrewGeneralNoPadCaseInsensitive:
107+
case CharacterSet.Tis620ThaiNoPadCaseInsensitive:
108+
case CharacterSet.Koi8uGeneralNoPadCaseInsensitive:
109+
case CharacterSet.GreekGeneralNoPadCaseInsensitive:
110+
case CharacterSet.Cp1250GeneralNoPadCaseInsensitive:
111+
case CharacterSet.Latin5TurkishNoPadCaseInsensitive:
112+
case CharacterSet.Armscii8GeneralNoPadCaseInsensitive:
113+
case CharacterSet.Cp866GeneralNoPadCaseInsensitive:
114+
case CharacterSet.Keybcs2GeneralNoPadCaseInsensitive:
115+
case CharacterSet.MacCentralEuropeanGeneralNoPadCaseInsensitive:
116+
case CharacterSet.MacRomanGeneralNoPadCaseInsensitive:
117+
case CharacterSet.Cp852GeneralNoPadCaseInsensitive:
118+
case CharacterSet.Latin7GeneralNoPadCaseInsensitive:
119+
case CharacterSet.MacCentralEuropeanNoPadBinary:
120+
case CharacterSet.Latin1NoPadBinary:
121+
case CharacterSet.Cp1251NoPadBinary:
122+
case CharacterSet.Cp1251GeneralNoPadCaseInsensitive:
123+
case CharacterSet.MacRomanNoPadBinary:
124+
case CharacterSet.Cp1256GeneralNoPadCaseInsensitive:
125+
case CharacterSet.Cp1257NoPadBinary:
126+
case CharacterSet.Cp1257GeneralNoPadCaseInsensitive:
127+
case CharacterSet.Armscii8NoPadBinary:
128+
case CharacterSet.AsciiNoPadBinary:
129+
case CharacterSet.Cp1250NoPadBinary:
130+
case CharacterSet.Cp1256NoPadBinary:
131+
case CharacterSet.Cp866NoPadBinary:
132+
case CharacterSet.Dec8NoPadBinary:
133+
case CharacterSet.GreekNoPadBinary:
134+
case CharacterSet.HebrewNoPadBinary:
135+
case CharacterSet.Hp8NoPadBinary:
136+
case CharacterSet.Keybcs2NoPadBinary:
137+
case CharacterSet.Koi8rNoPadBinary:
138+
case CharacterSet.Koi8uNoPadBinary:
139+
case CharacterSet.Latin2NoPadBinary:
140+
case CharacterSet.Latin5NoPadBinary:
141+
case CharacterSet.Latin7NoPadBinary:
142+
case CharacterSet.Cp850NoPadBinary:
143+
case CharacterSet.Cp852NoPadBinary:
144+
case CharacterSet.Swe7NoPadBinary:
145+
case CharacterSet.Tis620NoPadBinary:
146+
case CharacterSet.Geostd8GeneralNoPadCaseInsensitive:
147+
case CharacterSet.Geostd8NoPadBinary:
98148
return 1;
99149

100150
case CharacterSet.Big5ChineseCaseInsensitive:
@@ -136,6 +186,25 @@ public static int GetBytesPerCharacter(CharacterSet characterSet)
136186
case CharacterSet.Ucs2Unicode520CaseInsensitive:
137187
case CharacterSet.Ucs2VietnameseCaseInsensitive:
138188
case CharacterSet.Ucs2GeneralMySql500CaseInsensitive:
189+
case CharacterSet.Ucs2CroatianCaseInsensitiveMariaDb:
190+
case CharacterSet.Ucs2MyanmarCaseInsensitive:
191+
case CharacterSet.Ucs2ThaiUnicode520Weight2:
192+
case CharacterSet.Big5ChineseNoPadCaseInsensitive:
193+
case CharacterSet.SjisJapaneseNoPadCaseInsensitive:
194+
case CharacterSet.EuckrKoreanNoPadCaseInsensitive:
195+
case CharacterSet.Gb2312ChineseNoPadCaseInsensitive:
196+
case CharacterSet.GbkChineseNoPadCaseInsensitive:
197+
case CharacterSet.Ucs2GeneralNoPadCaseInsensitive:
198+
case CharacterSet.Big5NoPadBinary:
199+
case CharacterSet.EuckrNoPadBinary:
200+
case CharacterSet.Gb2312NoPadBinary:
201+
case CharacterSet.GbkNoPadBinary:
202+
case CharacterSet.SjisNoPadBinary:
203+
case CharacterSet.Ucs2NoPadBinary:
204+
case CharacterSet.Cp932JapaneseNoPadCaseInsensitive:
205+
case CharacterSet.Cp932NoPadBinary:
206+
case CharacterSet.Ucs2UnicodeNoPadCaseInsensitive:
207+
case CharacterSet.Ucs2Unicode520NoPadCaseInsensitive:
139208
return 2;
140209

141210
case CharacterSet.UjisJapaneseCaseInsensitive:
@@ -170,6 +239,17 @@ public static int GetBytesPerCharacter(CharacterSet characterSet)
170239
case CharacterSet.Utf8Unicode520CaseInsensitive:
171240
case CharacterSet.Utf8VietnameseCaseInsensitive:
172241
case CharacterSet.Utf8GeneralMySql500CaseInsensitive:
242+
case CharacterSet.Utf8CroatianCaseInsensitiveMariaDb:
243+
case CharacterSet.Utf8MyanmarCaseInsensitive:
244+
case CharacterSet.Utf8ThaiUnicode520Weight2:
245+
case CharacterSet.UjisJapaneseNoPadCaseInsensitive:
246+
case CharacterSet.Utf8GeneralNoPadCaseInsensitive:
247+
case CharacterSet.Utf8NoPadBinary:
248+
case CharacterSet.UjisNoPadBinary:
249+
case CharacterSet.EucjpmsJapaneseNoPadCaseInsensitive:
250+
case CharacterSet.EucjpmsNoPadBinary:
251+
case CharacterSet.Utf8UnicodeNoPadCaseInsensitive:
252+
case CharacterSet.Utf8Unicode520NoPadCaseInsensitive:
173253
return 3;
174254

175255
case CharacterSet.Utf8Mb4GeneralCaseInsensitive:
@@ -302,6 +382,29 @@ public static int GetBytesPerCharacter(CharacterSet characterSet)
302382
case CharacterSet.Utf8Mb4Uca900AccentSensitiveCaseInsensitive:
303383
case CharacterSet.Utf8Mb4RussianUca900AccentInsensitiveCaseInsensitive:
304384
case CharacterSet.Utf8Mb4RussianUca900AccentSensitiveCaseSensitive:
385+
case CharacterSet.Utf8Mb4CroatianCaseInsensitiveMariaDb:
386+
case CharacterSet.Utf8Mb4MyanmarCaseInsensitive:
387+
case CharacterSet.Utf8Mb4ThaiUnicode520Weight2:
388+
case CharacterSet.Utf16CroatianCaseInsensitiveMariaDb:
389+
case CharacterSet.Utf16MyanmarCaseInsensitive:
390+
case CharacterSet.Utf16ThaiUnicode520Weight2:
391+
case CharacterSet.Utf32CroatianCaseInsensitiveMariaDb:
392+
case CharacterSet.Utf32MyanmarCaseInsensitive:
393+
case CharacterSet.Utf32ThaiUnicode520Weight2:
394+
case CharacterSet.Utf8Mb4GeneralNoPadCaseInsensitive:
395+
case CharacterSet.Utf8Mb4NoPadBinary:
396+
case CharacterSet.Utf16GeneralNoPadCaseInsensitive:
397+
case CharacterSet.Utf16NoPadBinary:
398+
case CharacterSet.Utf16leGeneralNoPadCaseInsensitive:
399+
case CharacterSet.Utf32GeneralNoPadCaseInsensitive:
400+
case CharacterSet.Utf32NoPadBinary:
401+
case CharacterSet.Utf16leNoPadBinary:
402+
case CharacterSet.Utf16UnicodeNoPadCaseInsensitive:
403+
case CharacterSet.Utf16Unicode520NoPadCaseInsensitive:
404+
case CharacterSet.Utf32UnicodeNoPadCaseInsensitive:
405+
case CharacterSet.Utf32Unicode520NoPadCaseInsensitive:
406+
case CharacterSet.Utf8Mb4UnicodeNoPadCaseInsensitive:
407+
case CharacterSet.Utf8Mb4Unicode520NoPadCaseInsensitive:
305408
return 4;
306409

307410
default:

0 commit comments

Comments
 (0)