You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

356 lines
15 KiB

  1. /* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
  2. This program is free software; you can redistribute it and/or modify
  3. it under the terms of the GNU General Public License as published by
  4. the Free Software Foundation; version 2 of the License.
  5. This program is distributed in the hope that it will be useful,
  6. but WITHOUT ANY WARRANTY; without even the implied warranty of
  7. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  8. GNU General Public License for more details.
  9. You should have received a copy of the GNU General Public License
  10. along with this program; if not, write to the Free Software
  11. Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
  12. #include "mysys_priv.h"
  13. /*
  14. Include all compiled character sets into the client
  15. If a client don't want to use all of them, he can define his own
  16. init_compiled_charsets() that only adds those that he wants
  17. */
  18. #ifdef HAVE_UCA_COLLATIONS
  19. #ifdef HAVE_CHARSET_ucs2
  20. extern CHARSET_INFO my_charset_ucs2_icelandic_uca_ci;
  21. extern CHARSET_INFO my_charset_ucs2_latvian_uca_ci;
  22. extern CHARSET_INFO my_charset_ucs2_romanian_uca_ci;
  23. extern CHARSET_INFO my_charset_ucs2_slovenian_uca_ci;
  24. extern CHARSET_INFO my_charset_ucs2_polish_uca_ci;
  25. extern CHARSET_INFO my_charset_ucs2_estonian_uca_ci;
  26. extern CHARSET_INFO my_charset_ucs2_spanish_uca_ci;
  27. extern CHARSET_INFO my_charset_ucs2_swedish_uca_ci;
  28. extern CHARSET_INFO my_charset_ucs2_turkish_uca_ci;
  29. extern CHARSET_INFO my_charset_ucs2_czech_uca_ci;
  30. extern CHARSET_INFO my_charset_ucs2_danish_uca_ci;
  31. extern CHARSET_INFO my_charset_ucs2_lithuanian_uca_ci;
  32. extern CHARSET_INFO my_charset_ucs2_slovak_uca_ci;
  33. extern CHARSET_INFO my_charset_ucs2_spanish2_uca_ci;
  34. extern CHARSET_INFO my_charset_ucs2_roman_uca_ci;
  35. extern CHARSET_INFO my_charset_ucs2_persian_uca_ci;
  36. extern CHARSET_INFO my_charset_ucs2_esperanto_uca_ci;
  37. extern CHARSET_INFO my_charset_ucs2_hungarian_uca_ci;
  38. extern CHARSET_INFO my_charset_ucs2_sinhala_uca_ci;
  39. #endif
  40. #ifdef HAVE_CHARSET_utf32
  41. extern CHARSET_INFO my_charset_utf32_icelandic_uca_ci;
  42. extern CHARSET_INFO my_charset_utf32_latvian_uca_ci;
  43. extern CHARSET_INFO my_charset_utf32_romanian_uca_ci;
  44. extern CHARSET_INFO my_charset_utf32_slovenian_uca_ci;
  45. extern CHARSET_INFO my_charset_utf32_polish_uca_ci;
  46. extern CHARSET_INFO my_charset_utf32_estonian_uca_ci;
  47. extern CHARSET_INFO my_charset_utf32_spanish_uca_ci;
  48. extern CHARSET_INFO my_charset_utf32_swedish_uca_ci;
  49. extern CHARSET_INFO my_charset_utf32_turkish_uca_ci;
  50. extern CHARSET_INFO my_charset_utf32_czech_uca_ci;
  51. extern CHARSET_INFO my_charset_utf32_danish_uca_ci;
  52. extern CHARSET_INFO my_charset_utf32_lithuanian_uca_ci;
  53. extern CHARSET_INFO my_charset_utf32_slovak_uca_ci;
  54. extern CHARSET_INFO my_charset_utf32_spanish2_uca_ci;
  55. extern CHARSET_INFO my_charset_utf32_roman_uca_ci;
  56. extern CHARSET_INFO my_charset_utf32_persian_uca_ci;
  57. extern CHARSET_INFO my_charset_utf32_esperanto_uca_ci;
  58. extern CHARSET_INFO my_charset_utf32_hungarian_uca_ci;
  59. extern CHARSET_INFO my_charset_utf32_sinhala_uca_ci;
  60. #endif /* HAVE_CHARSET_utf32 */
  61. #ifdef HAVE_CHARSET_utf16
  62. extern CHARSET_INFO my_charset_utf16_icelandic_uca_ci;
  63. extern CHARSET_INFO my_charset_utf16_latvian_uca_ci;
  64. extern CHARSET_INFO my_charset_utf16_romanian_uca_ci;
  65. extern CHARSET_INFO my_charset_utf16_slovenian_uca_ci;
  66. extern CHARSET_INFO my_charset_utf16_polish_uca_ci;
  67. extern CHARSET_INFO my_charset_utf16_estonian_uca_ci;
  68. extern CHARSET_INFO my_charset_utf16_spanish_uca_ci;
  69. extern CHARSET_INFO my_charset_utf16_swedish_uca_ci;
  70. extern CHARSET_INFO my_charset_utf16_turkish_uca_ci;
  71. extern CHARSET_INFO my_charset_utf16_czech_uca_ci;
  72. extern CHARSET_INFO my_charset_utf16_danish_uca_ci;
  73. extern CHARSET_INFO my_charset_utf16_lithuanian_uca_ci;
  74. extern CHARSET_INFO my_charset_utf16_slovak_uca_ci;
  75. extern CHARSET_INFO my_charset_utf16_spanish2_uca_ci;
  76. extern CHARSET_INFO my_charset_utf16_roman_uca_ci;
  77. extern CHARSET_INFO my_charset_utf16_persian_uca_ci;
  78. extern CHARSET_INFO my_charset_utf16_esperanto_uca_ci;
  79. extern CHARSET_INFO my_charset_utf16_hungarian_uca_ci;
  80. extern CHARSET_INFO my_charset_utf16_sinhala_uca_ci;
  81. #endif /* HAVE_CHARSET_utf16 */
  82. #ifdef HAVE_CHARSET_utf8
  83. extern CHARSET_INFO my_charset_utf8_icelandic_uca_ci;
  84. extern CHARSET_INFO my_charset_utf8_latvian_uca_ci;
  85. extern CHARSET_INFO my_charset_utf8_romanian_uca_ci;
  86. extern CHARSET_INFO my_charset_utf8_slovenian_uca_ci;
  87. extern CHARSET_INFO my_charset_utf8_polish_uca_ci;
  88. extern CHARSET_INFO my_charset_utf8_estonian_uca_ci;
  89. extern CHARSET_INFO my_charset_utf8_spanish_uca_ci;
  90. extern CHARSET_INFO my_charset_utf8_swedish_uca_ci;
  91. extern CHARSET_INFO my_charset_utf8_turkish_uca_ci;
  92. extern CHARSET_INFO my_charset_utf8_czech_uca_ci;
  93. extern CHARSET_INFO my_charset_utf8_danish_uca_ci;
  94. extern CHARSET_INFO my_charset_utf8_lithuanian_uca_ci;
  95. extern CHARSET_INFO my_charset_utf8_slovak_uca_ci;
  96. extern CHARSET_INFO my_charset_utf8_spanish2_uca_ci;
  97. extern CHARSET_INFO my_charset_utf8_roman_uca_ci;
  98. extern CHARSET_INFO my_charset_utf8_persian_uca_ci;
  99. extern CHARSET_INFO my_charset_utf8_esperanto_uca_ci;
  100. extern CHARSET_INFO my_charset_utf8_hungarian_uca_ci;
  101. extern CHARSET_INFO my_charset_utf8_sinhala_uca_ci;
  102. #ifdef HAVE_UTF8_GENERAL_CS
  103. extern CHARSET_INFO my_charset_utf8_general_cs;
  104. #endif
  105. #endif
  106. #ifdef HAVE_CHARSET_utf8mb4
  107. extern CHARSET_INFO my_charset_utf8mb4_icelandic_uca_ci;
  108. extern CHARSET_INFO my_charset_utf8mb4_latvian_uca_ci;
  109. extern CHARSET_INFO my_charset_utf8mb4_romanian_uca_ci;
  110. extern CHARSET_INFO my_charset_utf8mb4_slovenian_uca_ci;
  111. extern CHARSET_INFO my_charset_utf8mb4_polish_uca_ci;
  112. extern CHARSET_INFO my_charset_utf8mb4_estonian_uca_ci;
  113. extern CHARSET_INFO my_charset_utf8mb4_spanish_uca_ci;
  114. extern CHARSET_INFO my_charset_utf8mb4_swedish_uca_ci;
  115. extern CHARSET_INFO my_charset_utf8mb4_turkish_uca_ci;
  116. extern CHARSET_INFO my_charset_utf8mb4_czech_uca_ci;
  117. extern CHARSET_INFO my_charset_utf8mb4_danish_uca_ci;
  118. extern CHARSET_INFO my_charset_utf8mb4_lithuanian_uca_ci;
  119. extern CHARSET_INFO my_charset_utf8mb4_slovak_uca_ci;
  120. extern CHARSET_INFO my_charset_utf8mb4_spanish2_uca_ci;
  121. extern CHARSET_INFO my_charset_utf8mb4_roman_uca_ci;
  122. extern CHARSET_INFO my_charset_utf8mb4_persian_uca_ci;
  123. extern CHARSET_INFO my_charset_utf8mb4_esperanto_uca_ci;
  124. extern CHARSET_INFO my_charset_utf8mb4_hungarian_uca_ci;
  125. extern CHARSET_INFO my_charset_utf8mb4_sinhala_uca_ci;
  126. #endif /* HAVE_CHARSET_utf8mb4 */
  127. #endif /* HAVE_UCA_COLLATIONS */
  128. my_bool init_compiled_charsets(myf flags __attribute__((unused)))
  129. {
  130. CHARSET_INFO *cs;
  131. add_compiled_collation(&my_charset_bin);
  132. add_compiled_collation(&my_charset_filename);
  133. add_compiled_collation(&my_charset_latin1);
  134. add_compiled_collation(&my_charset_latin1_bin);
  135. add_compiled_collation(&my_charset_latin1_german2_ci);
  136. #ifdef HAVE_CHARSET_big5
  137. add_compiled_collation(&my_charset_big5_chinese_ci);
  138. add_compiled_collation(&my_charset_big5_bin);
  139. #endif
  140. #ifdef HAVE_CHARSET_cp1250
  141. add_compiled_collation(&my_charset_cp1250_czech_ci);
  142. #endif
  143. #ifdef HAVE_CHARSET_cp932
  144. add_compiled_collation(&my_charset_cp932_japanese_ci);
  145. add_compiled_collation(&my_charset_cp932_bin);
  146. #endif
  147. #ifdef HAVE_CHARSET_latin2
  148. add_compiled_collation(&my_charset_latin2_czech_ci);
  149. #endif
  150. #ifdef HAVE_CHARSET_eucjpms
  151. add_compiled_collation(&my_charset_eucjpms_japanese_ci);
  152. add_compiled_collation(&my_charset_eucjpms_bin);
  153. #endif
  154. #ifdef HAVE_CHARSET_euckr
  155. add_compiled_collation(&my_charset_euckr_korean_ci);
  156. add_compiled_collation(&my_charset_euckr_bin);
  157. #endif
  158. #ifdef HAVE_CHARSET_gb2312
  159. add_compiled_collation(&my_charset_gb2312_chinese_ci);
  160. add_compiled_collation(&my_charset_gb2312_bin);
  161. #endif
  162. #ifdef HAVE_CHARSET_gbk
  163. add_compiled_collation(&my_charset_gbk_chinese_ci);
  164. add_compiled_collation(&my_charset_gbk_bin);
  165. #endif
  166. #ifdef HAVE_CHARSET_sjis
  167. add_compiled_collation(&my_charset_sjis_japanese_ci);
  168. add_compiled_collation(&my_charset_sjis_bin);
  169. #endif
  170. #ifdef HAVE_CHARSET_tis620
  171. add_compiled_collation(&my_charset_tis620_thai_ci);
  172. add_compiled_collation(&my_charset_tis620_bin);
  173. #endif
  174. #ifdef HAVE_CHARSET_ucs2
  175. add_compiled_collation(&my_charset_ucs2_general_ci);
  176. add_compiled_collation(&my_charset_ucs2_bin);
  177. add_compiled_collation(&my_charset_ucs2_general_mysql500_ci);
  178. #ifdef HAVE_UCA_COLLATIONS
  179. add_compiled_collation(&my_charset_ucs2_unicode_ci);
  180. add_compiled_collation(&my_charset_ucs2_icelandic_uca_ci);
  181. add_compiled_collation(&my_charset_ucs2_latvian_uca_ci);
  182. add_compiled_collation(&my_charset_ucs2_romanian_uca_ci);
  183. add_compiled_collation(&my_charset_ucs2_slovenian_uca_ci);
  184. add_compiled_collation(&my_charset_ucs2_polish_uca_ci);
  185. add_compiled_collation(&my_charset_ucs2_estonian_uca_ci);
  186. add_compiled_collation(&my_charset_ucs2_spanish_uca_ci);
  187. add_compiled_collation(&my_charset_ucs2_swedish_uca_ci);
  188. add_compiled_collation(&my_charset_ucs2_turkish_uca_ci);
  189. add_compiled_collation(&my_charset_ucs2_czech_uca_ci);
  190. add_compiled_collation(&my_charset_ucs2_danish_uca_ci);
  191. add_compiled_collation(&my_charset_ucs2_lithuanian_uca_ci);
  192. add_compiled_collation(&my_charset_ucs2_slovak_uca_ci);
  193. add_compiled_collation(&my_charset_ucs2_spanish2_uca_ci);
  194. add_compiled_collation(&my_charset_ucs2_roman_uca_ci);
  195. add_compiled_collation(&my_charset_ucs2_persian_uca_ci);
  196. add_compiled_collation(&my_charset_ucs2_esperanto_uca_ci);
  197. add_compiled_collation(&my_charset_ucs2_hungarian_uca_ci);
  198. add_compiled_collation(&my_charset_ucs2_sinhala_uca_ci);
  199. #endif
  200. #endif
  201. #ifdef HAVE_CHARSET_ujis
  202. add_compiled_collation(&my_charset_ujis_japanese_ci);
  203. add_compiled_collation(&my_charset_ujis_bin);
  204. #endif
  205. #ifdef HAVE_CHARSET_utf8
  206. add_compiled_collation(&my_charset_utf8_general_ci);
  207. add_compiled_collation(&my_charset_utf8_bin);
  208. add_compiled_collation(&my_charset_utf8_general_mysql500_ci);
  209. #ifdef HAVE_UTF8_GENERAL_CS
  210. add_compiled_collation(&my_charset_utf8_general_cs);
  211. #endif
  212. #ifdef HAVE_UCA_COLLATIONS
  213. add_compiled_collation(&my_charset_utf8_unicode_ci);
  214. add_compiled_collation(&my_charset_utf8_icelandic_uca_ci);
  215. add_compiled_collation(&my_charset_utf8_latvian_uca_ci);
  216. add_compiled_collation(&my_charset_utf8_romanian_uca_ci);
  217. add_compiled_collation(&my_charset_utf8_slovenian_uca_ci);
  218. add_compiled_collation(&my_charset_utf8_polish_uca_ci);
  219. add_compiled_collation(&my_charset_utf8_estonian_uca_ci);
  220. add_compiled_collation(&my_charset_utf8_spanish_uca_ci);
  221. add_compiled_collation(&my_charset_utf8_swedish_uca_ci);
  222. add_compiled_collation(&my_charset_utf8_turkish_uca_ci);
  223. add_compiled_collation(&my_charset_utf8_czech_uca_ci);
  224. add_compiled_collation(&my_charset_utf8_danish_uca_ci);
  225. add_compiled_collation(&my_charset_utf8_lithuanian_uca_ci);
  226. add_compiled_collation(&my_charset_utf8_slovak_uca_ci);
  227. add_compiled_collation(&my_charset_utf8_spanish2_uca_ci);
  228. add_compiled_collation(&my_charset_utf8_roman_uca_ci);
  229. add_compiled_collation(&my_charset_utf8_persian_uca_ci);
  230. add_compiled_collation(&my_charset_utf8_esperanto_uca_ci);
  231. add_compiled_collation(&my_charset_utf8_hungarian_uca_ci);
  232. add_compiled_collation(&my_charset_utf8_sinhala_uca_ci);
  233. #endif
  234. #endif /* HAVE_CHARSET_utf8 */
  235. #ifdef HAVE_CHARSET_utf8mb4
  236. add_compiled_collation(&my_charset_utf8mb4_general_ci);
  237. add_compiled_collation(&my_charset_utf8mb4_bin);
  238. #ifdef HAVE_UCA_COLLATIONS
  239. add_compiled_collation(&my_charset_utf8mb4_unicode_ci);
  240. add_compiled_collation(&my_charset_utf8mb4_icelandic_uca_ci);
  241. add_compiled_collation(&my_charset_utf8mb4_latvian_uca_ci);
  242. add_compiled_collation(&my_charset_utf8mb4_romanian_uca_ci);
  243. add_compiled_collation(&my_charset_utf8mb4_slovenian_uca_ci);
  244. add_compiled_collation(&my_charset_utf8mb4_polish_uca_ci);
  245. add_compiled_collation(&my_charset_utf8mb4_estonian_uca_ci);
  246. add_compiled_collation(&my_charset_utf8mb4_spanish_uca_ci);
  247. add_compiled_collation(&my_charset_utf8mb4_swedish_uca_ci);
  248. add_compiled_collation(&my_charset_utf8mb4_turkish_uca_ci);
  249. add_compiled_collation(&my_charset_utf8mb4_czech_uca_ci);
  250. add_compiled_collation(&my_charset_utf8mb4_danish_uca_ci);
  251. add_compiled_collation(&my_charset_utf8mb4_lithuanian_uca_ci);
  252. add_compiled_collation(&my_charset_utf8mb4_slovak_uca_ci);
  253. add_compiled_collation(&my_charset_utf8mb4_spanish2_uca_ci);
  254. add_compiled_collation(&my_charset_utf8mb4_roman_uca_ci);
  255. add_compiled_collation(&my_charset_utf8mb4_persian_uca_ci);
  256. add_compiled_collation(&my_charset_utf8mb4_esperanto_uca_ci);
  257. add_compiled_collation(&my_charset_utf8mb4_hungarian_uca_ci);
  258. add_compiled_collation(&my_charset_utf8mb4_sinhala_uca_ci);
  259. #endif /* HAVE_UCA_COLLATIONS */
  260. #endif /* HAVE_CHARSET_utf8mb4 */
  261. #ifdef HAVE_CHARSET_utf16
  262. add_compiled_collation(&my_charset_utf16_general_ci);
  263. add_compiled_collation(&my_charset_utf16_bin);
  264. #ifdef HAVE_UCA_COLLATIONS
  265. add_compiled_collation(&my_charset_utf16_unicode_ci);
  266. add_compiled_collation(&my_charset_utf16_icelandic_uca_ci);
  267. add_compiled_collation(&my_charset_utf16_latvian_uca_ci);
  268. add_compiled_collation(&my_charset_utf16_romanian_uca_ci);
  269. add_compiled_collation(&my_charset_utf16_slovenian_uca_ci);
  270. add_compiled_collation(&my_charset_utf16_polish_uca_ci);
  271. add_compiled_collation(&my_charset_utf16_estonian_uca_ci);
  272. add_compiled_collation(&my_charset_utf16_spanish_uca_ci);
  273. add_compiled_collation(&my_charset_utf16_swedish_uca_ci);
  274. add_compiled_collation(&my_charset_utf16_turkish_uca_ci);
  275. add_compiled_collation(&my_charset_utf16_czech_uca_ci);
  276. add_compiled_collation(&my_charset_utf16_danish_uca_ci);
  277. add_compiled_collation(&my_charset_utf16_lithuanian_uca_ci);
  278. add_compiled_collation(&my_charset_utf16_slovak_uca_ci);
  279. add_compiled_collation(&my_charset_utf16_spanish2_uca_ci);
  280. add_compiled_collation(&my_charset_utf16_roman_uca_ci);
  281. add_compiled_collation(&my_charset_utf16_persian_uca_ci);
  282. add_compiled_collation(&my_charset_utf16_esperanto_uca_ci);
  283. add_compiled_collation(&my_charset_utf16_hungarian_uca_ci);
  284. add_compiled_collation(&my_charset_utf16_sinhala_uca_ci);
  285. #endif /* HAVE_UCA_COLLATIOINS */
  286. #endif /* HAVE_CHARSET_utf16 */
  287. #ifdef HAVE_CHARSET_utf32
  288. add_compiled_collation(&my_charset_utf32_general_ci);
  289. add_compiled_collation(&my_charset_utf32_bin);
  290. #ifdef HAVE_UCA_COLLATIONS
  291. add_compiled_collation(&my_charset_utf32_unicode_ci);
  292. add_compiled_collation(&my_charset_utf32_icelandic_uca_ci);
  293. add_compiled_collation(&my_charset_utf32_latvian_uca_ci);
  294. add_compiled_collation(&my_charset_utf32_romanian_uca_ci);
  295. add_compiled_collation(&my_charset_utf32_slovenian_uca_ci);
  296. add_compiled_collation(&my_charset_utf32_polish_uca_ci);
  297. add_compiled_collation(&my_charset_utf32_estonian_uca_ci);
  298. add_compiled_collation(&my_charset_utf32_spanish_uca_ci);
  299. add_compiled_collation(&my_charset_utf32_swedish_uca_ci);
  300. add_compiled_collation(&my_charset_utf32_turkish_uca_ci);
  301. add_compiled_collation(&my_charset_utf32_czech_uca_ci);
  302. add_compiled_collation(&my_charset_utf32_danish_uca_ci);
  303. add_compiled_collation(&my_charset_utf32_lithuanian_uca_ci);
  304. add_compiled_collation(&my_charset_utf32_slovak_uca_ci);
  305. add_compiled_collation(&my_charset_utf32_spanish2_uca_ci);
  306. add_compiled_collation(&my_charset_utf32_roman_uca_ci);
  307. add_compiled_collation(&my_charset_utf32_persian_uca_ci);
  308. add_compiled_collation(&my_charset_utf32_esperanto_uca_ci);
  309. add_compiled_collation(&my_charset_utf32_hungarian_uca_ci);
  310. add_compiled_collation(&my_charset_utf32_sinhala_uca_ci);
  311. #endif /* HAVE_UCA_COLLATIONS */
  312. #endif /* HAVE_CHARSET_utf32 */
  313. /* Copy compiled charsets */
  314. for (cs=compiled_charsets; cs->name; cs++)
  315. add_compiled_collation(cs);
  316. return FALSE;
  317. }