2 -- create user defined conversion
4 CREATE USER conversion_test_user WITH NOCREATEDB NOCREATEUSER;
5 SET SESSION AUTHORIZATION conversion_test_user;
6 CREATE CONVERSION myconv FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8;
8 -- cannot make same name conversion in same schema
10 CREATE CONVERSION myconv FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8;
12 -- create default conversion with qualified name
14 CREATE DEFAULT CONVERSION public.mydef FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8;
16 -- cannot make default conversion with same shcema/for_encoding/to_encoding
18 CREATE DEFAULT CONVERSION public.mydef2 FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8;
20 COMMENT ON CONVERSION myconv_bad IS 'foo';
21 COMMENT ON CONVERSION myconv IS 'bar';
22 COMMENT ON CONVERSION myconv IS NULL;
24 -- drop user defined conversion
26 DROP CONVERSION myconv;
27 DROP CONVERSION mydef;
29 -- make sure all pre-defined conversions are fine.
30 -- SQL_ASCII --> MULE_INTERNAL
31 SELECT CONVERT('foo' USING ascii_to_mic);
32 SELECT CONVERT('foo', 'SQL_ASCII', 'MULE_INTERNAL');
33 -- MULE_INTERNAL --> SQL_ASCII
34 SELECT CONVERT('foo' USING mic_to_ascii);
35 SELECT CONVERT('foo', 'MULE_INTERNAL', 'SQL_ASCII');
36 -- KOI8R --> MULE_INTERNAL
37 SELECT CONVERT('foo' USING koi8_r_to_mic);
38 SELECT CONVERT('foo', 'KOI8R', 'MULE_INTERNAL');
39 -- MULE_INTERNAL --> KOI8R
40 SELECT CONVERT('foo' USING mic_to_koi8_r);
41 SELECT CONVERT('foo', 'MULE_INTERNAL', 'KOI8R');
42 -- ISO-8859-5 --> MULE_INTERNAL
43 SELECT CONVERT('foo' USING iso_8859_5_to_mic);
44 SELECT CONVERT('foo', 'ISO-8859-5', 'MULE_INTERNAL');
45 -- MULE_INTERNAL --> ISO-8859-5
46 SELECT CONVERT('foo' USING mic_to_iso_8859_5);
47 SELECT CONVERT('foo', 'MULE_INTERNAL', 'ISO-8859-5');
48 -- WIN1251 --> MULE_INTERNAL
49 SELECT CONVERT('foo' USING windows_1251_to_mic);
50 SELECT CONVERT('foo', 'WIN1251', 'MULE_INTERNAL');
51 -- MULE_INTERNAL --> WIN1251
52 SELECT CONVERT('foo' USING mic_to_windows_1251);
53 SELECT CONVERT('foo', 'MULE_INTERNAL', 'WIN1251');
54 -- WIN866 --> MULE_INTERNAL
55 SELECT CONVERT('foo' USING windows_866_to_mic);
56 SELECT CONVERT('foo', 'WIN866', 'MULE_INTERNAL');
57 -- MULE_INTERNAL --> WIN866
58 SELECT CONVERT('foo' USING mic_to_windows_866);
59 SELECT CONVERT('foo', 'MULE_INTERNAL', 'WIN866');
61 SELECT CONVERT('foo' USING koi8_r_to_windows_1251);
62 SELECT CONVERT('foo', 'KOI8R', 'WIN1251');
64 SELECT CONVERT('foo' USING windows_1251_to_koi8_r);
65 SELECT CONVERT('foo', 'WIN1251', 'KOI8R');
67 SELECT CONVERT('foo' USING koi8_r_to_windows_866);
68 SELECT CONVERT('foo', 'KOI8R', 'WIN866');
70 SELECT CONVERT('foo' USING windows_866_to_koi8_r);
71 SELECT CONVERT('foo', 'WIN866', 'KOI8R');
73 SELECT CONVERT('foo' USING windows_866_to_windows_1251);
74 SELECT CONVERT('foo', 'WIN866', 'WIN1251');
76 SELECT CONVERT('foo' USING windows_1251_to_windows_866);
77 SELECT CONVERT('foo', 'WIN1251', 'WIN866');
78 -- ISO-8859-5 --> KOI8R
79 SELECT CONVERT('foo' USING iso_8859_5_to_koi8_r);
80 SELECT CONVERT('foo', 'ISO-8859-5', 'KOI8R');
81 -- KOI8R --> ISO-8859-5
82 SELECT CONVERT('foo' USING koi8_r_to_iso_8859_5);
83 SELECT CONVERT('foo', 'KOI8R', 'ISO-8859-5');
84 -- ISO-8859-5 --> WIN1251
85 SELECT CONVERT('foo' USING iso_8859_5_to_windows_1251);
86 SELECT CONVERT('foo', 'ISO-8859-5', 'WIN1251');
87 -- WIN1251 --> ISO-8859-5
88 SELECT CONVERT('foo' USING windows_1251_to_iso_8859_5);
89 SELECT CONVERT('foo', 'WIN1251', 'ISO-8859-5');
90 -- ISO-8859-5 --> WIN866
91 SELECT CONVERT('foo' USING iso_8859_5_to_windows_866);
92 SELECT CONVERT('foo', 'ISO-8859-5', 'WIN866');
93 -- WIN866 --> ISO-8859-5
94 SELECT CONVERT('foo' USING windows_866_to_iso_8859_5);
95 SELECT CONVERT('foo', 'WIN866', 'ISO-8859-5');
96 -- EUC_CN --> MULE_INTERNAL
97 SELECT CONVERT('foo' USING euc_cn_to_mic);
98 SELECT CONVERT('foo', 'EUC_CN', 'MULE_INTERNAL');
99 -- MULE_INTERNAL --> EUC_CN
100 SELECT CONVERT('foo' USING mic_to_euc_cn);
101 SELECT CONVERT('foo', 'MULE_INTERNAL', 'EUC_CN');
103 SELECT CONVERT('foo' USING euc_jp_to_sjis);
104 SELECT CONVERT('foo', 'EUC_JP', 'SJIS');
106 SELECT CONVERT('foo' USING sjis_to_euc_jp);
107 SELECT CONVERT('foo', 'SJIS', 'EUC_JP');
108 -- EUC_JP --> MULE_INTERNAL
109 SELECT CONVERT('foo' USING euc_jp_to_mic);
110 SELECT CONVERT('foo', 'EUC_JP', 'MULE_INTERNAL');
111 -- SJIS --> MULE_INTERNAL
112 SELECT CONVERT('foo' USING sjis_to_mic);
113 SELECT CONVERT('foo', 'SJIS', 'MULE_INTERNAL');
114 -- MULE_INTERNAL --> EUC_JP
115 SELECT CONVERT('foo' USING mic_to_euc_jp);
116 SELECT CONVERT('foo', 'MULE_INTERNAL', 'EUC_JP');
117 -- MULE_INTERNAL --> SJIS
118 SELECT CONVERT('foo' USING mic_to_sjis);
119 SELECT CONVERT('foo', 'MULE_INTERNAL', 'SJIS');
120 -- EUC_KR --> MULE_INTERNAL
121 SELECT CONVERT('foo' USING euc_kr_to_mic);
122 SELECT CONVERT('foo', 'EUC_KR', 'MULE_INTERNAL');
123 -- MULE_INTERNAL --> EUC_KR
124 SELECT CONVERT('foo' USING mic_to_euc_kr);
125 SELECT CONVERT('foo', 'MULE_INTERNAL', 'EUC_KR');
127 SELECT CONVERT('foo' USING euc_tw_to_big5);
128 SELECT CONVERT('foo', 'EUC_TW', 'BIG5');
130 SELECT CONVERT('foo' USING big5_to_euc_tw);
131 SELECT CONVERT('foo', 'BIG5', 'EUC_TW');
132 -- EUC_TW --> MULE_INTERNAL
133 SELECT CONVERT('foo' USING euc_tw_to_mic);
134 SELECT CONVERT('foo', 'EUC_TW', 'MULE_INTERNAL');
135 -- BIG5 --> MULE_INTERNAL
136 SELECT CONVERT('foo' USING big5_to_mic);
137 SELECT CONVERT('foo', 'BIG5', 'MULE_INTERNAL');
138 -- MULE_INTERNAL --> EUC_TW
139 SELECT CONVERT('foo' USING mic_to_euc_tw);
140 SELECT CONVERT('foo', 'MULE_INTERNAL', 'EUC_TW');
141 -- MULE_INTERNAL --> BIG5
142 SELECT CONVERT('foo' USING mic_to_big5);
143 SELECT CONVERT('foo', 'MULE_INTERNAL', 'BIG5');
144 -- LATIN2 --> MULE_INTERNAL
145 SELECT CONVERT('foo' USING iso_8859_2_to_mic);
146 SELECT CONVERT('foo', 'LATIN2', 'MULE_INTERNAL');
147 -- MULE_INTERNAL --> LATIN2
148 SELECT CONVERT('foo' USING mic_to_iso_8859_2);
149 SELECT CONVERT('foo', 'MULE_INTERNAL', 'LATIN2');
150 -- WIN1250 --> MULE_INTERNAL
151 SELECT CONVERT('foo' USING windows_1250_to_mic);
152 SELECT CONVERT('foo', 'WIN1250', 'MULE_INTERNAL');
153 -- MULE_INTERNAL --> WIN1250
154 SELECT CONVERT('foo' USING mic_to_windows_1250);
155 SELECT CONVERT('foo', 'MULE_INTERNAL', 'WIN1250');
156 -- LATIN2 --> WIN1250
157 SELECT CONVERT('foo' USING iso_8859_2_to_windows_1250);
158 SELECT CONVERT('foo', 'LATIN2', 'WIN1250');
159 -- WIN1250 --> LATIN2
160 SELECT CONVERT('foo' USING windows_1250_to_iso_8859_2);
161 SELECT CONVERT('foo', 'WIN1250', 'LATIN2');
162 -- LATIN1 --> MULE_INTERNAL
163 SELECT CONVERT('foo' USING iso_8859_1_to_mic);
164 SELECT CONVERT('foo', 'LATIN1', 'MULE_INTERNAL');
165 -- MULE_INTERNAL --> LATIN1
166 SELECT CONVERT('foo' USING mic_to_iso_8859_1);
167 SELECT CONVERT('foo', 'MULE_INTERNAL', 'LATIN1');
168 -- LATIN3 --> MULE_INTERNAL
169 SELECT CONVERT('foo' USING iso_8859_3_to_mic);
170 SELECT CONVERT('foo', 'LATIN3', 'MULE_INTERNAL');
171 -- MULE_INTERNAL --> LATIN3
172 SELECT CONVERT('foo' USING mic_to_iso_8859_3);
173 SELECT CONVERT('foo', 'MULE_INTERNAL', 'LATIN3');
174 -- LATIN4 --> MULE_INTERNAL
175 SELECT CONVERT('foo' USING iso_8859_4_to_mic);
176 SELECT CONVERT('foo', 'LATIN4', 'MULE_INTERNAL');
177 -- MULE_INTERNAL --> LATIN4
178 SELECT CONVERT('foo' USING mic_to_iso_8859_4);
179 SELECT CONVERT('foo', 'MULE_INTERNAL', 'LATIN4');
180 -- SQL_ASCII --> UTF8
181 SELECT CONVERT('foo' USING ascii_to_utf8);
182 SELECT CONVERT('foo', 'SQL_ASCII', 'UTF8');
183 -- UTF8 --> SQL_ASCII
184 SELECT CONVERT('foo' USING utf8_to_ascii);
185 SELECT CONVERT('foo', 'UTF8', 'SQL_ASCII');
187 SELECT CONVERT('foo' USING big5_to_utf8);
188 SELECT CONVERT('foo', 'BIG5', 'UTF8');
190 SELECT CONVERT('foo' USING utf8_to_big5);
191 SELECT CONVERT('foo', 'UTF8', 'BIG5');
193 SELECT CONVERT('foo' USING utf8_to_koi8_r);
194 SELECT CONVERT('foo', 'UTF8', 'KOI8R');
196 SELECT CONVERT('foo' USING koi8_r_to_utf8);
197 SELECT CONVERT('foo', 'KOI8R', 'UTF8');
199 SELECT CONVERT('foo' USING utf8_to_windows_1251);
200 SELECT CONVERT('foo', 'UTF8', 'WIN1251');
202 SELECT CONVERT('foo' USING windows_1251_to_utf8);
203 SELECT CONVERT('foo', 'WIN1251', 'UTF8');
205 SELECT CONVERT('foo' USING utf8_to_windows_1252);
206 SELECT CONVERT('foo', 'UTF8', 'WIN1252');
208 SELECT CONVERT('foo' USING windows_1252_to_utf8);
209 SELECT CONVERT('foo', 'WIN1252', 'UTF8');
211 SELECT CONVERT('foo' USING utf8_to_windows_866);
212 SELECT CONVERT('foo', 'UTF8', 'WIN866');
214 SELECT CONVERT('foo' USING windows_866_to_utf8);
215 SELECT CONVERT('foo', 'WIN866', 'UTF8');
217 SELECT CONVERT('foo' USING euc_cn_to_utf8);
218 SELECT CONVERT('foo', 'EUC_CN', 'UTF8');
220 SELECT CONVERT('foo' USING utf8_to_euc_cn);
221 SELECT CONVERT('foo', 'UTF8', 'EUC_CN');
223 SELECT CONVERT('foo' USING euc_jp_to_utf8);
224 SELECT CONVERT('foo', 'EUC_JP', 'UTF8');
226 SELECT CONVERT('foo' USING utf8_to_euc_jp);
227 SELECT CONVERT('foo', 'UTF8', 'EUC_JP');
229 SELECT CONVERT('foo' USING euc_kr_to_utf8);
230 SELECT CONVERT('foo', 'EUC_KR', 'UTF8');
232 SELECT CONVERT('foo' USING utf8_to_euc_kr);
233 SELECT CONVERT('foo', 'UTF8', 'EUC_KR');
235 SELECT CONVERT('foo' USING euc_tw_to_utf8);
236 SELECT CONVERT('foo', 'EUC_TW', 'UTF8');
238 SELECT CONVERT('foo' USING utf8_to_euc_tw);
239 SELECT CONVERT('foo', 'UTF8', 'EUC_TW');
241 SELECT CONVERT('foo' USING gb18030_to_utf8);
242 SELECT CONVERT('foo', 'GB18030', 'UTF8');
244 SELECT CONVERT('foo' USING utf8_to_gb18030);
245 SELECT CONVERT('foo', 'UTF8', 'GB18030');
247 SELECT CONVERT('foo' USING gbk_to_utf8);
248 SELECT CONVERT('foo', 'GBK', 'UTF8');
250 SELECT CONVERT('foo' USING utf8_to_gbk);
251 SELECT CONVERT('foo', 'UTF8', 'GBK');
253 SELECT CONVERT('foo' USING utf8_to_iso_8859_2);
254 SELECT CONVERT('foo', 'UTF8', 'LATIN2');
256 SELECT CONVERT('foo' USING iso_8859_2_to_utf8);
257 SELECT CONVERT('foo', 'LATIN2', 'UTF8');
259 SELECT CONVERT('foo' USING utf8_to_iso_8859_3);
260 SELECT CONVERT('foo', 'UTF8', 'LATIN3');
262 SELECT CONVERT('foo' USING iso_8859_3_to_utf8);
263 SELECT CONVERT('foo', 'LATIN3', 'UTF8');
265 SELECT CONVERT('foo' USING utf8_to_iso_8859_4);
266 SELECT CONVERT('foo', 'UTF8', 'LATIN4');
268 SELECT CONVERT('foo' USING iso_8859_4_to_utf8);
269 SELECT CONVERT('foo', 'LATIN4', 'UTF8');
271 SELECT CONVERT('foo' USING utf8_to_iso_8859_9);
272 SELECT CONVERT('foo', 'UTF8', 'LATIN5');
274 SELECT CONVERT('foo' USING iso_8859_9_to_utf8);
275 SELECT CONVERT('foo', 'LATIN5', 'UTF8');
277 SELECT CONVERT('foo' USING utf8_to_iso_8859_10);
278 SELECT CONVERT('foo', 'UTF8', 'LATIN6');
280 SELECT CONVERT('foo' USING iso_8859_10_to_utf8);
281 SELECT CONVERT('foo', 'LATIN6', 'UTF8');
283 SELECT CONVERT('foo' USING utf8_to_iso_8859_13);
284 SELECT CONVERT('foo', 'UTF8', 'LATIN7');
286 SELECT CONVERT('foo' USING iso_8859_13_to_utf8);
287 SELECT CONVERT('foo', 'LATIN7', 'UTF8');
289 SELECT CONVERT('foo' USING utf8_to_iso_8859_14);
290 SELECT CONVERT('foo', 'UTF8', 'LATIN8');
292 SELECT CONVERT('foo' USING iso_8859_14_to_utf8);
293 SELECT CONVERT('foo', 'LATIN8', 'UTF8');
295 SELECT CONVERT('foo' USING utf8_to_iso_8859_15);
296 SELECT CONVERT('foo', 'UTF8', 'LATIN9');
298 SELECT CONVERT('foo' USING iso_8859_15_to_utf8);
299 SELECT CONVERT('foo', 'LATIN9', 'UTF8');
301 SELECT CONVERT('foo' USING utf8_to_iso_8859_16);
302 SELECT CONVERT('foo', 'UTF8', 'LATIN10');
304 SELECT CONVERT('foo' USING iso_8859_16_to_utf8);
305 SELECT CONVERT('foo', 'LATIN10', 'UTF8');
306 -- UTF8 --> ISO-8859-5
307 SELECT CONVERT('foo' USING utf8_to_iso_8859_5);
308 SELECT CONVERT('foo', 'UTF8', 'ISO-8859-5');
309 -- ISO-8859-5 --> UTF8
310 SELECT CONVERT('foo' USING iso_8859_5_to_utf8);
311 SELECT CONVERT('foo', 'ISO-8859-5', 'UTF8');
312 -- UTF8 --> ISO-8859-6
313 SELECT CONVERT('foo' USING utf8_to_iso_8859_6);
314 SELECT CONVERT('foo', 'UTF8', 'ISO-8859-6');
315 -- ISO-8859-6 --> UTF8
316 SELECT CONVERT('foo' USING iso_8859_6_to_utf8);
317 SELECT CONVERT('foo', 'ISO-8859-6', 'UTF8');
318 -- UTF8 --> ISO-8859-7
319 SELECT CONVERT('foo' USING utf8_to_iso_8859_7);
320 SELECT CONVERT('foo', 'UTF8', 'ISO-8859-7');
321 -- ISO-8859-7 --> UTF8
322 SELECT CONVERT('foo' USING iso_8859_7_to_utf8);
323 SELECT CONVERT('foo', 'ISO-8859-7', 'UTF8');
324 -- UTF8 --> ISO-8859-8
325 SELECT CONVERT('foo' USING utf8_to_iso_8859_8);
326 SELECT CONVERT('foo', 'UTF8', 'ISO-8859-8');
327 -- ISO-8859-8 --> UTF8
328 SELECT CONVERT('foo' USING iso_8859_8_to_utf8);
329 SELECT CONVERT('foo', 'ISO-8859-8', 'UTF8');
331 SELECT CONVERT('foo' USING iso_8859_1_to_utf8);
332 SELECT CONVERT('foo', 'LATIN1', 'UTF8');
334 SELECT CONVERT('foo' USING utf8_to_iso_8859_1);
335 SELECT CONVERT('foo', 'UTF8', 'LATIN1');
337 SELECT CONVERT('foo' USING johab_to_utf8);
338 SELECT CONVERT('foo', 'JOHAB', 'UTF8');
340 SELECT CONVERT('foo' USING utf8_to_johab);
341 SELECT CONVERT('foo', 'UTF8', 'JOHAB');
343 SELECT CONVERT('foo' USING sjis_to_utf8);
344 SELECT CONVERT('foo', 'SJIS', 'UTF8');
346 SELECT CONVERT('foo' USING utf8_to_sjis);
347 SELECT CONVERT('foo', 'UTF8', 'SJIS');
349 SELECT CONVERT('foo' USING windows_1258_to_utf8);
350 SELECT CONVERT('foo', 'WIN1258', 'UTF8');
352 SELECT CONVERT('foo' USING utf8_to_windows_1258);
353 SELECT CONVERT('foo', 'UTF8', 'WIN1258');
355 SELECT CONVERT('foo' USING uhc_to_utf8);
356 SELECT CONVERT('foo', 'UHC', 'UTF8');
358 SELECT CONVERT('foo' USING utf8_to_uhc);
359 SELECT CONVERT('foo', 'UTF8', 'UHC');
361 SELECT CONVERT('foo' USING utf8_to_windows_1250);
362 SELECT CONVERT('foo', 'UTF8', 'WIN1250');
364 SELECT CONVERT('foo' USING windows_1250_to_utf8);
365 SELECT CONVERT('foo', 'WIN1250', 'UTF8');
367 SELECT CONVERT('foo' USING utf8_to_windows_1256);
368 SELECT CONVERT('foo', 'UTF8', 'WIN1256');
370 SELECT CONVERT('foo' USING windows_1256_to_utf8);
371 SELECT CONVERT('foo', 'WIN1256', 'UTF8');
373 SELECT CONVERT('foo' USING utf8_to_windows_874);
374 SELECT CONVERT('foo', 'UTF8', 'WIN874');
376 SELECT CONVERT('foo' USING windows_874_to_utf8);
377 SELECT CONVERT('foo', 'WIN874', 'UTF8');
379 SELECT CONVERT('foo' USING utf8_to_windows_1253);
380 SELECT CONVERT('foo', 'UTF8', 'WIN1253');
382 SELECT CONVERT('foo' USING windows_1253_to_utf8);
383 SELECT CONVERT('foo', 'WIN1253', 'UTF8');
385 SELECT CONVERT('foo' USING utf8_to_windows_1254);
386 SELECT CONVERT('foo', 'UTF8', 'WIN1254');
388 SELECT CONVERT('foo' USING windows_1254_to_utf8);
389 SELECT CONVERT('foo', 'WIN1254', 'UTF8');
391 SELECT CONVERT('foo' USING utf8_to_windows_1255);
392 SELECT CONVERT('foo', 'UTF8', 'WIN1255');
394 SELECT CONVERT('foo' USING windows_1255_to_utf8);
395 SELECT CONVERT('foo', 'WIN1255', 'UTF8');
397 SELECT CONVERT('foo' USING utf8_to_windows_1257);
398 SELECT CONVERT('foo', 'UTF8', 'WIN1257');
400 SELECT CONVERT('foo' USING windows_1257_to_utf8);
401 SELECT CONVERT('foo', 'WIN1257', 'UTF8');
402 -- UTF8 --> EUC_JIS_2004
403 SELECT CONVERT('foo' USING utf8_to_euc_jis_2004);
404 SELECT CONVERT('foo', 'UTF8', 'EUC_JIS_2004');
405 -- EUC_JIS_2004 --> UTF8
406 SELECT CONVERT('foo' USING euc_jis_2004_to_utf8);
407 SELECT CONVERT('foo', 'EUC_JIS_2004', 'UTF8');
408 -- UTF8 --> SHIFT_JIS_2004
409 SELECT CONVERT('foo' USING utf8_to_euc_jis_2004);
410 SELECT CONVERT('foo', 'UTF8', 'SHIFT_JIS_2004');
411 -- SHIFT_JIS_2004 --> UTF8
412 SELECT CONVERT('foo' USING shift_jis_2004_to_utf8);
413 SELECT CONVERT('foo', 'SHIFT_JIS_2004', 'UTF8');
414 -- EUC_JIS_2004 --> SHIFT_JIS_2004
415 SELECT CONVERT('foo' USING euc_jis_2004_to_shift_jis_2004);
416 SELECT CONVERT('foo', 'EUC_JIS_2004', 'SHIFT_JIS_2004');
417 -- SHIFT_JIS_2004 --> EUC_JIS_2004
418 SELECT CONVERT('foo' USING shift_jis_2004_to_euc_jis_2004);
419 SELECT CONVERT('foo', 'SHIFT_JIS_2004', 'EUC_JIS_2004');
421 -- return to the super user
423 RESET SESSION AUTHORIZATION;
424 DROP USER conversion_test_user;