1
-- ensure consistent test output regardless of the default bytea format
2
SET bytea_output TO escape;
4
-- create user defined conversion
6
CREATE USER conversion_test_user WITH NOCREATEDB NOCREATEUSER;
7
SET SESSION AUTHORIZATION conversion_test_user;
8
CREATE CONVERSION myconv FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8;
10
-- cannot make same name conversion in same schema
12
CREATE CONVERSION myconv FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8;
13
ERROR: conversion "myconv" already exists
15
-- create default conversion with qualified name
17
CREATE DEFAULT CONVERSION public.mydef FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8;
19
-- cannot make default conversion with same shcema/for_encoding/to_encoding
21
CREATE DEFAULT CONVERSION public.mydef2 FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8;
22
ERROR: default conversion for LATIN1 to UTF8 already exists
24
COMMENT ON CONVERSION myconv_bad IS 'foo';
25
ERROR: conversion "myconv_bad" does not exist
26
COMMENT ON CONVERSION myconv IS 'bar';
27
COMMENT ON CONVERSION myconv IS NULL;
29
-- drop user defined conversion
31
DROP CONVERSION myconv;
32
DROP CONVERSION mydef;
34
-- make sure all pre-defined conversions are fine.
35
-- SQL_ASCII --> MULE_INTERNAL
36
SELECT CONVERT('foo', 'SQL_ASCII', 'MULE_INTERNAL');
42
-- MULE_INTERNAL --> SQL_ASCII
43
SELECT CONVERT('foo', 'MULE_INTERNAL', 'SQL_ASCII');
49
-- KOI8R --> MULE_INTERNAL
50
SELECT CONVERT('foo', 'KOI8R', 'MULE_INTERNAL');
56
-- MULE_INTERNAL --> KOI8R
57
SELECT CONVERT('foo', 'MULE_INTERNAL', 'KOI8R');
63
-- ISO-8859-5 --> MULE_INTERNAL
64
SELECT CONVERT('foo', 'ISO-8859-5', 'MULE_INTERNAL');
70
-- MULE_INTERNAL --> ISO-8859-5
71
SELECT CONVERT('foo', 'MULE_INTERNAL', 'ISO-8859-5');
77
-- WIN1251 --> MULE_INTERNAL
78
SELECT CONVERT('foo', 'WIN1251', 'MULE_INTERNAL');
84
-- MULE_INTERNAL --> WIN1251
85
SELECT CONVERT('foo', 'MULE_INTERNAL', 'WIN1251');
91
-- WIN866 --> MULE_INTERNAL
92
SELECT CONVERT('foo', 'WIN866', 'MULE_INTERNAL');
98
-- MULE_INTERNAL --> WIN866
99
SELECT CONVERT('foo', 'MULE_INTERNAL', 'WIN866');
106
SELECT CONVERT('foo', 'KOI8R', 'WIN1251');
113
SELECT CONVERT('foo', 'WIN1251', 'KOI8R');
120
SELECT CONVERT('foo', 'KOI8R', 'WIN866');
127
SELECT CONVERT('foo', 'WIN866', 'KOI8R');
133
-- WIN866 --> WIN1251
134
SELECT CONVERT('foo', 'WIN866', 'WIN1251');
140
-- WIN1251 --> WIN866
141
SELECT CONVERT('foo', 'WIN1251', 'WIN866');
147
-- ISO-8859-5 --> KOI8R
148
SELECT CONVERT('foo', 'ISO-8859-5', 'KOI8R');
154
-- KOI8R --> ISO-8859-5
155
SELECT CONVERT('foo', 'KOI8R', 'ISO-8859-5');
161
-- ISO-8859-5 --> WIN1251
162
SELECT CONVERT('foo', 'ISO-8859-5', 'WIN1251');
168
-- WIN1251 --> ISO-8859-5
169
SELECT CONVERT('foo', 'WIN1251', 'ISO-8859-5');
175
-- ISO-8859-5 --> WIN866
176
SELECT CONVERT('foo', 'ISO-8859-5', 'WIN866');
182
-- WIN866 --> ISO-8859-5
183
SELECT CONVERT('foo', 'WIN866', 'ISO-8859-5');
189
-- EUC_CN --> MULE_INTERNAL
190
SELECT CONVERT('foo', 'EUC_CN', 'MULE_INTERNAL');
196
-- MULE_INTERNAL --> EUC_CN
197
SELECT CONVERT('foo', 'MULE_INTERNAL', 'EUC_CN');
204
SELECT CONVERT('foo', 'EUC_JP', 'SJIS');
211
SELECT CONVERT('foo', 'SJIS', 'EUC_JP');
217
-- EUC_JP --> MULE_INTERNAL
218
SELECT CONVERT('foo', 'EUC_JP', 'MULE_INTERNAL');
224
-- SJIS --> MULE_INTERNAL
225
SELECT CONVERT('foo', 'SJIS', 'MULE_INTERNAL');
231
-- MULE_INTERNAL --> EUC_JP
232
SELECT CONVERT('foo', 'MULE_INTERNAL', 'EUC_JP');
238
-- MULE_INTERNAL --> SJIS
239
SELECT CONVERT('foo', 'MULE_INTERNAL', 'SJIS');
245
-- EUC_KR --> MULE_INTERNAL
246
SELECT CONVERT('foo', 'EUC_KR', 'MULE_INTERNAL');
252
-- MULE_INTERNAL --> EUC_KR
253
SELECT CONVERT('foo', 'MULE_INTERNAL', 'EUC_KR');
260
SELECT CONVERT('foo', 'EUC_TW', 'BIG5');
267
SELECT CONVERT('foo', 'BIG5', 'EUC_TW');
273
-- EUC_TW --> MULE_INTERNAL
274
SELECT CONVERT('foo', 'EUC_TW', 'MULE_INTERNAL');
280
-- BIG5 --> MULE_INTERNAL
281
SELECT CONVERT('foo', 'BIG5', 'MULE_INTERNAL');
287
-- MULE_INTERNAL --> EUC_TW
288
SELECT CONVERT('foo', 'MULE_INTERNAL', 'EUC_TW');
294
-- MULE_INTERNAL --> BIG5
295
SELECT CONVERT('foo', 'MULE_INTERNAL', 'BIG5');
301
-- LATIN2 --> MULE_INTERNAL
302
SELECT CONVERT('foo', 'LATIN2', 'MULE_INTERNAL');
308
-- MULE_INTERNAL --> LATIN2
309
SELECT CONVERT('foo', 'MULE_INTERNAL', 'LATIN2');
315
-- WIN1250 --> MULE_INTERNAL
316
SELECT CONVERT('foo', 'WIN1250', 'MULE_INTERNAL');
322
-- MULE_INTERNAL --> WIN1250
323
SELECT CONVERT('foo', 'MULE_INTERNAL', 'WIN1250');
329
-- LATIN2 --> WIN1250
330
SELECT CONVERT('foo', 'LATIN2', 'WIN1250');
336
-- WIN1250 --> LATIN2
337
SELECT CONVERT('foo', 'WIN1250', 'LATIN2');
343
-- LATIN1 --> MULE_INTERNAL
344
SELECT CONVERT('foo', 'LATIN1', 'MULE_INTERNAL');
350
-- MULE_INTERNAL --> LATIN1
351
SELECT CONVERT('foo', 'MULE_INTERNAL', 'LATIN1');
357
-- LATIN3 --> MULE_INTERNAL
358
SELECT CONVERT('foo', 'LATIN3', 'MULE_INTERNAL');
364
-- MULE_INTERNAL --> LATIN3
365
SELECT CONVERT('foo', 'MULE_INTERNAL', 'LATIN3');
371
-- LATIN4 --> MULE_INTERNAL
372
SELECT CONVERT('foo', 'LATIN4', 'MULE_INTERNAL');
378
-- MULE_INTERNAL --> LATIN4
379
SELECT CONVERT('foo', 'MULE_INTERNAL', 'LATIN4');
385
-- SQL_ASCII --> UTF8
386
SELECT CONVERT('foo', 'SQL_ASCII', 'UTF8');
392
-- UTF8 --> SQL_ASCII
393
SELECT CONVERT('foo', 'UTF8', 'SQL_ASCII');
400
SELECT CONVERT('foo', 'BIG5', 'UTF8');
407
SELECT CONVERT('foo', 'UTF8', 'BIG5');
414
SELECT CONVERT('foo', 'UTF8', 'KOI8R');
421
SELECT CONVERT('foo', 'KOI8R', 'UTF8');
428
SELECT CONVERT('foo', 'UTF8', 'WIN1251');
435
SELECT CONVERT('foo', 'WIN1251', 'UTF8');
442
SELECT CONVERT('foo', 'UTF8', 'WIN1252');
449
SELECT CONVERT('foo', 'WIN1252', 'UTF8');
456
SELECT CONVERT('foo', 'UTF8', 'WIN866');
463
SELECT CONVERT('foo', 'WIN866', 'UTF8');
470
SELECT CONVERT('foo', 'EUC_CN', 'UTF8');
477
SELECT CONVERT('foo', 'UTF8', 'EUC_CN');
484
SELECT CONVERT('foo', 'EUC_JP', 'UTF8');
491
SELECT CONVERT('foo', 'UTF8', 'EUC_JP');
498
SELECT CONVERT('foo', 'EUC_KR', 'UTF8');
505
SELECT CONVERT('foo', 'UTF8', 'EUC_KR');
512
SELECT CONVERT('foo', 'EUC_TW', 'UTF8');
519
SELECT CONVERT('foo', 'UTF8', 'EUC_TW');
526
SELECT CONVERT('foo', 'GB18030', 'UTF8');
533
SELECT CONVERT('foo', 'UTF8', 'GB18030');
540
SELECT CONVERT('foo', 'GBK', 'UTF8');
547
SELECT CONVERT('foo', 'UTF8', 'GBK');
554
SELECT CONVERT('foo', 'UTF8', 'LATIN2');
561
SELECT CONVERT('foo', 'LATIN2', 'UTF8');
568
SELECT CONVERT('foo', 'UTF8', 'LATIN3');
575
SELECT CONVERT('foo', 'LATIN3', 'UTF8');
582
SELECT CONVERT('foo', 'UTF8', 'LATIN4');
589
SELECT CONVERT('foo', 'LATIN4', 'UTF8');
596
SELECT CONVERT('foo', 'UTF8', 'LATIN5');
603
SELECT CONVERT('foo', 'LATIN5', 'UTF8');
610
SELECT CONVERT('foo', 'UTF8', 'LATIN6');
617
SELECT CONVERT('foo', 'LATIN6', 'UTF8');
624
SELECT CONVERT('foo', 'UTF8', 'LATIN7');
631
SELECT CONVERT('foo', 'LATIN7', 'UTF8');
638
SELECT CONVERT('foo', 'UTF8', 'LATIN8');
645
SELECT CONVERT('foo', 'LATIN8', 'UTF8');
652
SELECT CONVERT('foo', 'UTF8', 'LATIN9');
659
SELECT CONVERT('foo', 'LATIN9', 'UTF8');
666
SELECT CONVERT('foo', 'UTF8', 'LATIN10');
673
SELECT CONVERT('foo', 'LATIN10', 'UTF8');
679
-- UTF8 --> ISO-8859-5
680
SELECT CONVERT('foo', 'UTF8', 'ISO-8859-5');
686
-- ISO-8859-5 --> UTF8
687
SELECT CONVERT('foo', 'ISO-8859-5', 'UTF8');
693
-- UTF8 --> ISO-8859-6
694
SELECT CONVERT('foo', 'UTF8', 'ISO-8859-6');
700
-- ISO-8859-6 --> UTF8
701
SELECT CONVERT('foo', 'ISO-8859-6', 'UTF8');
707
-- UTF8 --> ISO-8859-7
708
SELECT CONVERT('foo', 'UTF8', 'ISO-8859-7');
714
-- ISO-8859-7 --> UTF8
715
SELECT CONVERT('foo', 'ISO-8859-7', 'UTF8');
721
-- UTF8 --> ISO-8859-8
722
SELECT CONVERT('foo', 'UTF8', 'ISO-8859-8');
728
-- ISO-8859-8 --> UTF8
729
SELECT CONVERT('foo', 'ISO-8859-8', 'UTF8');
736
SELECT CONVERT('foo', 'LATIN1', 'UTF8');
743
SELECT CONVERT('foo', 'UTF8', 'LATIN1');
750
SELECT CONVERT('foo', 'JOHAB', 'UTF8');
757
SELECT CONVERT('foo', 'UTF8', 'JOHAB');
764
SELECT CONVERT('foo', 'SJIS', 'UTF8');
771
SELECT CONVERT('foo', 'UTF8', 'SJIS');
778
SELECT CONVERT('foo', 'WIN1258', 'UTF8');
785
SELECT CONVERT('foo', 'UTF8', 'WIN1258');
792
SELECT CONVERT('foo', 'UHC', 'UTF8');
799
SELECT CONVERT('foo', 'UTF8', 'UHC');
806
SELECT CONVERT('foo', 'UTF8', 'WIN1250');
813
SELECT CONVERT('foo', 'WIN1250', 'UTF8');
820
SELECT CONVERT('foo', 'UTF8', 'WIN1256');
827
SELECT CONVERT('foo', 'WIN1256', 'UTF8');
834
SELECT CONVERT('foo', 'UTF8', 'WIN874');
841
SELECT CONVERT('foo', 'WIN874', 'UTF8');
848
SELECT CONVERT('foo', 'UTF8', 'WIN1253');
855
SELECT CONVERT('foo', 'WIN1253', 'UTF8');
862
SELECT CONVERT('foo', 'UTF8', 'WIN1254');
869
SELECT CONVERT('foo', 'WIN1254', 'UTF8');
876
SELECT CONVERT('foo', 'UTF8', 'WIN1255');
883
SELECT CONVERT('foo', 'WIN1255', 'UTF8');
890
SELECT CONVERT('foo', 'UTF8', 'WIN1257');
897
SELECT CONVERT('foo', 'WIN1257', 'UTF8');
903
-- UTF8 --> EUC_JIS_2004
904
SELECT CONVERT('foo', 'UTF8', 'EUC_JIS_2004');
910
-- EUC_JIS_2004 --> UTF8
911
SELECT CONVERT('foo', 'EUC_JIS_2004', 'UTF8');
917
-- UTF8 --> SHIFT_JIS_2004
918
SELECT CONVERT('foo', 'UTF8', 'SHIFT_JIS_2004');
924
-- SHIFT_JIS_2004 --> UTF8
925
SELECT CONVERT('foo', 'SHIFT_JIS_2004', 'UTF8');
931
-- EUC_JIS_2004 --> SHIFT_JIS_2004
932
SELECT CONVERT('foo', 'EUC_JIS_2004', 'SHIFT_JIS_2004');
938
-- SHIFT_JIS_2004 --> EUC_JIS_2004
939
SELECT CONVERT('foo', 'SHIFT_JIS_2004', 'EUC_JIS_2004');
946
-- return to the super user
948
RESET SESSION AUTHORIZATION;
949
DROP USER conversion_test_user;