-- ensure consistent test output regardless of the default bytea format SET bytea_output TO escape; -- -- create user defined conversion -- CREATE USER conversion_test_user WITH NOCREATEDB NOCREATEROLE; SET SESSION AUTHORIZATION conversion_test_user; CREATE CONVERSION myconv FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8; -- -- cannot make same name conversion in same schema -- CREATE CONVERSION myconv FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8; ERROR: conversion "myconv" already exists -- -- create default conversion with qualified name -- CREATE DEFAULT CONVERSION public.mydef FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8; -- -- cannot make default conversion with same shcema/for_encoding/to_encoding -- CREATE DEFAULT CONVERSION public.mydef2 FOR 'LATIN1' TO 'UTF8' FROM iso8859_1_to_utf8; ERROR: default conversion for LATIN1 to UTF8 already exists -- test comments COMMENT ON CONVERSION myconv_bad IS 'foo'; ERROR: conversion "myconv_bad" does not exist COMMENT ON CONVERSION myconv IS 'bar'; COMMENT ON CONVERSION myconv IS NULL; -- -- drop user defined conversion -- DROP CONVERSION myconv; DROP CONVERSION mydef; -- -- make sure all pre-defined conversions are fine. -- SQL_ASCII --> MULE_INTERNAL SELECT CONVERT('foo', 'SQL_ASCII', 'MULE_INTERNAL'); convert --------- foo (1 row) -- MULE_INTERNAL --> SQL_ASCII SELECT CONVERT('foo', 'MULE_INTERNAL', 'SQL_ASCII'); convert --------- foo (1 row) -- KOI8R --> MULE_INTERNAL SELECT CONVERT('foo', 'KOI8R', 'MULE_INTERNAL'); convert --------- foo (1 row) -- MULE_INTERNAL --> KOI8R SELECT CONVERT('foo', 'MULE_INTERNAL', 'KOI8R'); convert --------- foo (1 row) -- ISO-8859-5 --> MULE_INTERNAL SELECT CONVERT('foo', 'ISO-8859-5', 'MULE_INTERNAL'); convert --------- foo (1 row) -- MULE_INTERNAL --> ISO-8859-5 SELECT CONVERT('foo', 'MULE_INTERNAL', 'ISO-8859-5'); convert --------- foo (1 row) -- WIN1251 --> MULE_INTERNAL SELECT CONVERT('foo', 'WIN1251', 'MULE_INTERNAL'); convert --------- foo (1 row) -- MULE_INTERNAL --> WIN1251 SELECT CONVERT('foo', 'MULE_INTERNAL', 'WIN1251'); convert --------- foo (1 row) -- WIN866 --> MULE_INTERNAL SELECT CONVERT('foo', 'WIN866', 'MULE_INTERNAL'); convert --------- foo (1 row) -- MULE_INTERNAL --> WIN866 SELECT CONVERT('foo', 'MULE_INTERNAL', 'WIN866'); convert --------- foo (1 row) -- KOI8R --> WIN1251 SELECT CONVERT('foo', 'KOI8R', 'WIN1251'); convert --------- foo (1 row) -- WIN1251 --> KOI8R SELECT CONVERT('foo', 'WIN1251', 'KOI8R'); convert --------- foo (1 row) -- KOI8R --> WIN866 SELECT CONVERT('foo', 'KOI8R', 'WIN866'); convert --------- foo (1 row) -- WIN866 --> KOI8R SELECT CONVERT('foo', 'WIN866', 'KOI8R'); convert --------- foo (1 row) -- WIN866 --> WIN1251 SELECT CONVERT('foo', 'WIN866', 'WIN1251'); convert --------- foo (1 row) -- WIN1251 --> WIN866 SELECT CONVERT('foo', 'WIN1251', 'WIN866'); convert --------- foo (1 row) -- ISO-8859-5 --> KOI8R SELECT CONVERT('foo', 'ISO-8859-5', 'KOI8R'); convert --------- foo (1 row) -- KOI8R --> ISO-8859-5 SELECT CONVERT('foo', 'KOI8R', 'ISO-8859-5'); convert --------- foo (1 row) -- ISO-8859-5 --> WIN1251 SELECT CONVERT('foo', 'ISO-8859-5', 'WIN1251'); convert --------- foo (1 row) -- WIN1251 --> ISO-8859-5 SELECT CONVERT('foo', 'WIN1251', 'ISO-8859-5'); convert --------- foo (1 row) -- ISO-8859-5 --> WIN866 SELECT CONVERT('foo', 'ISO-8859-5', 'WIN866'); convert --------- foo (1 row) -- WIN866 --> ISO-8859-5 SELECT CONVERT('foo', 'WIN866', 'ISO-8859-5'); convert --------- foo (1 row) -- EUC_CN --> MULE_INTERNAL SELECT CONVERT('foo', 'EUC_CN', 'MULE_INTERNAL'); convert --------- foo (1 row) -- MULE_INTERNAL --> EUC_CN SELECT CONVERT('foo', 'MULE_INTERNAL', 'EUC_CN'); convert --------- foo (1 row) -- EUC_JP --> SJIS SELECT CONVERT('foo', 'EUC_JP', 'SJIS'); convert --------- foo (1 row) -- SJIS --> EUC_JP SELECT CONVERT('foo', 'SJIS', 'EUC_JP'); convert --------- foo (1 row) -- EUC_JP --> MULE_INTERNAL SELECT CONVERT('foo', 'EUC_JP', 'MULE_INTERNAL'); convert --------- foo (1 row) -- SJIS --> MULE_INTERNAL SELECT CONVERT('foo', 'SJIS', 'MULE_INTERNAL'); convert --------- foo (1 row) -- MULE_INTERNAL --> EUC_JP SELECT CONVERT('foo', 'MULE_INTERNAL', 'EUC_JP'); convert --------- foo (1 row) -- MULE_INTERNAL --> SJIS SELECT CONVERT('foo', 'MULE_INTERNAL', 'SJIS'); convert --------- foo (1 row) -- EUC_KR --> MULE_INTERNAL SELECT CONVERT('foo', 'EUC_KR', 'MULE_INTERNAL'); convert --------- foo (1 row) -- MULE_INTERNAL --> EUC_KR SELECT CONVERT('foo', 'MULE_INTERNAL', 'EUC_KR'); convert --------- foo (1 row) -- EUC_TW --> BIG5 SELECT CONVERT('foo', 'EUC_TW', 'BIG5'); convert --------- foo (1 row) -- BIG5 --> EUC_TW SELECT CONVERT('foo', 'BIG5', 'EUC_TW'); convert --------- foo (1 row) -- EUC_TW --> MULE_INTERNAL SELECT CONVERT('foo', 'EUC_TW', 'MULE_INTERNAL'); convert --------- foo (1 row) -- BIG5 --> MULE_INTERNAL SELECT CONVERT('foo', 'BIG5', 'MULE_INTERNAL'); convert --------- foo (1 row) -- MULE_INTERNAL --> EUC_TW SELECT CONVERT('foo', 'MULE_INTERNAL', 'EUC_TW'); convert --------- foo (1 row) -- MULE_INTERNAL --> BIG5 SELECT CONVERT('foo', 'MULE_INTERNAL', 'BIG5'); convert --------- foo (1 row) -- LATIN2 --> MULE_INTERNAL SELECT CONVERT('foo', 'LATIN2', 'MULE_INTERNAL'); convert --------- foo (1 row) -- MULE_INTERNAL --> LATIN2 SELECT CONVERT('foo', 'MULE_INTERNAL', 'LATIN2'); convert --------- foo (1 row) -- WIN1250 --> MULE_INTERNAL SELECT CONVERT('foo', 'WIN1250', 'MULE_INTERNAL'); convert --------- foo (1 row) -- MULE_INTERNAL --> WIN1250 SELECT CONVERT('foo', 'MULE_INTERNAL', 'WIN1250'); convert --------- foo (1 row) -- LATIN2 --> WIN1250 SELECT CONVERT('foo', 'LATIN2', 'WIN1250'); convert --------- foo (1 row) -- WIN1250 --> LATIN2 SELECT CONVERT('foo', 'WIN1250', 'LATIN2'); convert --------- foo (1 row) -- LATIN1 --> MULE_INTERNAL SELECT CONVERT('foo', 'LATIN1', 'MULE_INTERNAL'); convert --------- foo (1 row) -- MULE_INTERNAL --> LATIN1 SELECT CONVERT('foo', 'MULE_INTERNAL', 'LATIN1'); convert --------- foo (1 row) -- LATIN3 --> MULE_INTERNAL SELECT CONVERT('foo', 'LATIN3', 'MULE_INTERNAL'); convert --------- foo (1 row) -- MULE_INTERNAL --> LATIN3 SELECT CONVERT('foo', 'MULE_INTERNAL', 'LATIN3'); convert --------- foo (1 row) -- LATIN4 --> MULE_INTERNAL SELECT CONVERT('foo', 'LATIN4', 'MULE_INTERNAL'); convert --------- foo (1 row) -- MULE_INTERNAL --> LATIN4 SELECT CONVERT('foo', 'MULE_INTERNAL', 'LATIN4'); convert --------- foo (1 row) -- SQL_ASCII --> UTF8 SELECT CONVERT('foo', 'SQL_ASCII', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> SQL_ASCII SELECT CONVERT('foo', 'UTF8', 'SQL_ASCII'); convert --------- foo (1 row) -- BIG5 --> UTF8 SELECT CONVERT('foo', 'BIG5', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> BIG5 SELECT CONVERT('foo', 'UTF8', 'BIG5'); convert --------- foo (1 row) -- UTF8 --> KOI8R SELECT CONVERT('foo', 'UTF8', 'KOI8R'); convert --------- foo (1 row) -- KOI8R --> UTF8 SELECT CONVERT('foo', 'KOI8R', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> WIN1251 SELECT CONVERT('foo', 'UTF8', 'WIN1251'); convert --------- foo (1 row) -- WIN1251 --> UTF8 SELECT CONVERT('foo', 'WIN1251', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> WIN1252 SELECT CONVERT('foo', 'UTF8', 'WIN1252'); convert --------- foo (1 row) -- WIN1252 --> UTF8 SELECT CONVERT('foo', 'WIN1252', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> WIN866 SELECT CONVERT('foo', 'UTF8', 'WIN866'); convert --------- foo (1 row) -- WIN866 --> UTF8 SELECT CONVERT('foo', 'WIN866', 'UTF8'); convert --------- foo (1 row) -- EUC_CN --> UTF8 SELECT CONVERT('foo', 'EUC_CN', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> EUC_CN SELECT CONVERT('foo', 'UTF8', 'EUC_CN'); convert --------- foo (1 row) -- EUC_JP --> UTF8 SELECT CONVERT('foo', 'EUC_JP', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> EUC_JP SELECT CONVERT('foo', 'UTF8', 'EUC_JP'); convert --------- foo (1 row) -- EUC_KR --> UTF8 SELECT CONVERT('foo', 'EUC_KR', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> EUC_KR SELECT CONVERT('foo', 'UTF8', 'EUC_KR'); convert --------- foo (1 row) -- EUC_TW --> UTF8 SELECT CONVERT('foo', 'EUC_TW', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> EUC_TW SELECT CONVERT('foo', 'UTF8', 'EUC_TW'); convert --------- foo (1 row) -- GB18030 --> UTF8 SELECT CONVERT('Postgres \247\343\247\335\247\340\247\337 \2249\3138 \317\363 \250\246le\2010\2747phant', 'GB18030', 'UTF8'); convert ------------------------------------------------------------------------------------------------- Postgres \321\201\320\273\320\276\320\275 \360\237\220\230 \350\261\241 \303\251le\314\201phant (1 row) -- UTF8 --> GB18030 SELECT CONVERT('Postgres \321\201\320\273\320\276\320\275 \360\237\220\230 \350\261\241 \303\251le\314\201phant', 'UTF-8', 'GB18030'); convert ----------------------------------------------------------------------------------------- Postgres \247\343\247\335\247\340\247\337 \2249\3138 \317\363 \250\246le\2010\2747phant (1 row) -- GBK --> UTF8 SELECT CONVERT('foo', 'GBK', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> GBK SELECT CONVERT('foo', 'UTF8', 'GBK'); convert --------- foo (1 row) -- UTF8 --> LATIN2 SELECT CONVERT('foo', 'UTF8', 'LATIN2'); convert --------- foo (1 row) -- LATIN2 --> UTF8 SELECT CONVERT('foo', 'LATIN2', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> LATIN3 SELECT CONVERT('foo', 'UTF8', 'LATIN3'); convert --------- foo (1 row) -- LATIN3 --> UTF8 SELECT CONVERT('foo', 'LATIN3', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> LATIN4 SELECT CONVERT('foo', 'UTF8', 'LATIN4'); convert --------- foo (1 row) -- LATIN4 --> UTF8 SELECT CONVERT('foo', 'LATIN4', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> LATIN5 SELECT CONVERT('foo', 'UTF8', 'LATIN5'); convert --------- foo (1 row) -- LATIN5 --> UTF8 SELECT CONVERT('foo', 'LATIN5', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> LATIN6 SELECT CONVERT('foo', 'UTF8', 'LATIN6'); convert --------- foo (1 row) -- LATIN6 --> UTF8 SELECT CONVERT('foo', 'LATIN6', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> LATIN7 SELECT CONVERT('foo', 'UTF8', 'LATIN7'); convert --------- foo (1 row) -- LATIN7 --> UTF8 SELECT CONVERT('foo', 'LATIN7', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> LATIN8 SELECT CONVERT('foo', 'UTF8', 'LATIN8'); convert --------- foo (1 row) -- LATIN8 --> UTF8 SELECT CONVERT('foo', 'LATIN8', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> LATIN9 SELECT CONVERT('foo', 'UTF8', 'LATIN9'); convert --------- foo (1 row) -- LATIN9 --> UTF8 SELECT CONVERT('foo', 'LATIN9', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> LATIN10 SELECT CONVERT('foo', 'UTF8', 'LATIN10'); convert --------- foo (1 row) -- LATIN10 --> UTF8 SELECT CONVERT('foo', 'LATIN10', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> ISO-8859-5 SELECT CONVERT('foo', 'UTF8', 'ISO-8859-5'); convert --------- foo (1 row) -- ISO-8859-5 --> UTF8 SELECT CONVERT('foo', 'ISO-8859-5', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> ISO-8859-6 SELECT CONVERT('foo', 'UTF8', 'ISO-8859-6'); convert --------- foo (1 row) -- ISO-8859-6 --> UTF8 SELECT CONVERT('foo', 'ISO-8859-6', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> ISO-8859-7 SELECT CONVERT('foo', 'UTF8', 'ISO-8859-7'); convert --------- foo (1 row) -- ISO-8859-7 --> UTF8 SELECT CONVERT('foo', 'ISO-8859-7', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> ISO-8859-8 SELECT CONVERT('foo', 'UTF8', 'ISO-8859-8'); convert --------- foo (1 row) -- ISO-8859-8 --> UTF8 SELECT CONVERT('foo', 'ISO-8859-8', 'UTF8'); convert --------- foo (1 row) -- LATIN1 --> UTF8 SELECT CONVERT('foo', 'LATIN1', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> LATIN1 SELECT CONVERT('foo', 'UTF8', 'LATIN1'); convert --------- foo (1 row) -- JOHAB --> UTF8 SELECT CONVERT('foo', 'JOHAB', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> JOHAB SELECT CONVERT('foo', 'UTF8', 'JOHAB'); convert --------- foo (1 row) -- SJIS --> UTF8 SELECT CONVERT('foo', 'SJIS', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> SJIS SELECT CONVERT('foo', 'UTF8', 'SJIS'); convert --------- foo (1 row) -- WIN1258 --> UTF8 SELECT CONVERT('foo', 'WIN1258', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> WIN1258 SELECT CONVERT('foo', 'UTF8', 'WIN1258'); convert --------- foo (1 row) -- UHC --> UTF8 SELECT CONVERT('foo', 'UHC', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> UHC SELECT CONVERT('foo', 'UTF8', 'UHC'); convert --------- foo (1 row) -- UTF8 --> WIN1250 SELECT CONVERT('foo', 'UTF8', 'WIN1250'); convert --------- foo (1 row) -- WIN1250 --> UTF8 SELECT CONVERT('foo', 'WIN1250', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> WIN1256 SELECT CONVERT('foo', 'UTF8', 'WIN1256'); convert --------- foo (1 row) -- WIN1256 --> UTF8 SELECT CONVERT('foo', 'WIN1256', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> WIN874 SELECT CONVERT('foo', 'UTF8', 'WIN874'); convert --------- foo (1 row) -- WIN874 --> UTF8 SELECT CONVERT('foo', 'WIN874', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> WIN1253 SELECT CONVERT('foo', 'UTF8', 'WIN1253'); convert --------- foo (1 row) -- WIN1253 --> UTF8 SELECT CONVERT('foo', 'WIN1253', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> WIN1254 SELECT CONVERT('foo', 'UTF8', 'WIN1254'); convert --------- foo (1 row) -- WIN1254 --> UTF8 SELECT CONVERT('foo', 'WIN1254', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> WIN1255 SELECT CONVERT('foo', 'UTF8', 'WIN1255'); convert --------- foo (1 row) -- WIN1255 --> UTF8 SELECT CONVERT('foo', 'WIN1255', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> WIN1257 SELECT CONVERT('foo', 'UTF8', 'WIN1257'); convert --------- foo (1 row) -- WIN1257 --> UTF8 SELECT CONVERT('foo', 'WIN1257', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> EUC_JIS_2004 SELECT CONVERT('foo', 'UTF8', 'EUC_JIS_2004'); convert --------- foo (1 row) -- EUC_JIS_2004 --> UTF8 SELECT CONVERT('foo', 'EUC_JIS_2004', 'UTF8'); convert --------- foo (1 row) -- UTF8 --> SHIFT_JIS_2004 SELECT CONVERT('foo', 'UTF8', 'SHIFT_JIS_2004'); convert --------- foo (1 row) -- SHIFT_JIS_2004 --> UTF8 SELECT CONVERT('foo', 'SHIFT_JIS_2004', 'UTF8'); convert --------- foo (1 row) -- EUC_JIS_2004 --> SHIFT_JIS_2004 SELECT CONVERT('foo', 'EUC_JIS_2004', 'SHIFT_JIS_2004'); convert --------- foo (1 row) -- SHIFT_JIS_2004 --> EUC_JIS_2004 SELECT CONVERT('foo', 'SHIFT_JIS_2004', 'EUC_JIS_2004'); convert --------- foo (1 row) -- -- return to the super user -- RESET SESSION AUTHORIZATION; DROP USER conversion_test_user;