--
-- create user defined conversion
--
CREATE USER foo WITH NOCREATEDB NOCREATEUSER;
SET SESSION AUTHORIZATION foo;
CREATE CONVERSION myconv FOR 'LATIN1' TO 'UNICODE' FROM iso8859_1_to_utf8;
--
-- cannot make same name conversion in same schema
--
CREATE CONVERSION myconv FOR 'LATIN1' TO 'UNICODE' FROM iso8859_1_to_utf8;
ERROR:  conversion name "myconv" already exists
--
-- create default conversion with qualified name
--
CREATE DEFAULT CONVERSION public.mydef FOR 'LATIN1' TO 'UNICODE' FROM iso8859_1_to_utf8;
--
-- cannot make default conversion with same shcema/for_encoding/to_encoding
--
CREATE DEFAULT CONVERSION public.mydef2 FOR 'LATIN1' TO 'UNICODE' FROM iso8859_1_to_utf8;
ERROR:  default conversion for LATIN1 to UNICODE already exists
--
-- drop user defined conversion
--
DROP CONVERSION myconv;
DROP CONVERSION mydef;
--
-- make sure all pre-defined conversions are fine.
--
-- UNICODE -> SQL_ASCII
SELECT CONVERT('foo', 'UNICODE', 'SQL_ASCII');
 convert 
---------
 foo
(1 row)

-- SQL_ASCII -> UNICODE
SELECT CONVERT('foo', 'SQL_ASCII', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> LATIN1
SELECT CONVERT('foo', 'UNICODE', 'LATIN1');
 convert 
---------
 foo
(1 row)

-- LATIN1 -> UNICODE
SELECT CONVERT('foo', 'LATIN1', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- EUC_JP -> UNICODE
SELECT CONVERT('foo', 'EUC_JP', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> EUC_JP
SELECT CONVERT('foo', 'UNICODE', 'EUC_JP');
 convert 
---------
 foo
(1 row)

-- EUC_KR -> UNICODE
SELECT CONVERT('foo', 'EUC_KR', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> EUC_KR
SELECT CONVERT('foo', 'UNICODE', 'EUC_KR');
 convert 
---------
 foo
(1 row)

-- EUC_CN -> UNICODE
SELECT CONVERT('foo', 'EUC_CN', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> EUC_CN
SELECT CONVERT('foo', 'UNICODE', 'EUC_CN');
 convert 
---------
 foo
(1 row)

-- EUC_TW -> UNICODE
SELECT CONVERT('foo', 'EUC_TW', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> EUC_TW
SELECT CONVERT('foo', 'UNICODE', 'EUC_TW');
 convert 
---------
 foo
(1 row)

-- SJIS -> UNICODE
SELECT CONVERT('foo', 'SJIS', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> SJIS
SELECT CONVERT('foo', 'UNICODE', 'SJIS');
 convert 
---------
 foo
(1 row)

-- BIG5 -> UNICODE
SELECT CONVERT('foo', 'BIG5', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> BIG5
SELECT CONVERT('foo', 'UNICODE', 'BIG5');
 convert 
---------
 foo
(1 row)

-- GBK -> UNICODE
SELECT CONVERT('foo', 'GBK', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> GBK
SELECT CONVERT('foo', 'UNICODE', 'GBK');
 convert 
---------
 foo
(1 row)

-- GB18030 -> UNICODE
SELECT CONVERT('foo', 'GB18030', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> GB18030
SELECT CONVERT('foo', 'UNICODE', 'GB18030');
 convert 
---------
 foo
(1 row)

-- UHC -> UNICODE
SELECT CONVERT('foo', 'UHC', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> UHC
SELECT CONVERT('foo', 'UNICODE', 'UHC');
 convert 
---------
 foo
(1 row)

-- JOHAB -> UNICODE
SELECT CONVERT('foo', 'JOHAB', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> JOHAB
SELECT CONVERT('foo', 'UNICODE', 'JOHAB');
 convert 
---------
 foo
(1 row)

-- TCVN -> UNICODE
SELECT CONVERT('foo', 'TCVN', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> TCVN
SELECT CONVERT('foo', 'UNICODE', 'TCVN');
 convert 
---------
 foo
(1 row)

-- UNICODE -> LATIN2
SELECT CONVERT('foo', 'UNICODE', 'LATIN2');
 convert 
---------
 foo
(1 row)

-- LATIN2 -> UNICODE
SELECT CONVERT('foo', 'LATIN2', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> LATIN3
SELECT CONVERT('foo', 'UNICODE', 'LATIN3');
 convert 
---------
 foo
(1 row)

-- LATIN3 -> UNICODE
SELECT CONVERT('foo', 'LATIN3', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> LATIN4
SELECT CONVERT('foo', 'UNICODE', 'LATIN4');
 convert 
---------
 foo
(1 row)

-- LATIN4 -> UNICODE
SELECT CONVERT('foo', 'LATIN4', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> LATIN5
SELECT CONVERT('foo', 'UNICODE', 'LATIN5');
 convert 
---------
 foo
(1 row)

-- LATIN5 -> UNICODE
SELECT CONVERT('foo', 'LATIN5', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> LATIN6
SELECT CONVERT('foo', 'UNICODE', 'LATIN6');
 convert 
---------
 foo
(1 row)

-- LATIN6 -> UNICODE
SELECT CONVERT('foo', 'LATIN6', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> LATIN7
SELECT CONVERT('foo', 'UNICODE', 'LATIN7');
 convert 
---------
 foo
(1 row)

-- LATIN7 -> UNICODE
SELECT CONVERT('foo', 'LATIN7', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> LATIN8
SELECT CONVERT('foo', 'UNICODE', 'LATIN8');
 convert 
---------
 foo
(1 row)

-- LATIN8 -> UNICODE
SELECT CONVERT('foo', 'LATIN8', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> LATIN9
SELECT CONVERT('foo', 'UNICODE', 'LATIN9');
 convert 
---------
 foo
(1 row)

-- LATIN9 -> UNICODE
SELECT CONVERT('foo', 'LATIN9', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> LATIN10
SELECT CONVERT('foo', 'UNICODE', 'LATIN10');
 convert 
---------
 foo
(1 row)

-- LATIN10 -> UNICODE
SELECT CONVERT('foo', 'LATIN10', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> ISO-8859-5
SELECT CONVERT('foo', 'UNICODE', 'ISO-8859-5');
 convert 
---------
 foo
(1 row)

-- ISO-8859-5 -> UNICODE
SELECT CONVERT('foo', 'ISO-8859-5', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> ISO-8859-6
SELECT CONVERT('foo', 'UNICODE', 'ISO-8859-6');
 convert 
---------
 foo
(1 row)

-- ISO-8859-6 -> UNICODE
SELECT CONVERT('foo', 'ISO-8859-6', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> ISO-8859-7
SELECT CONVERT('foo', 'UNICODE', 'ISO-8859-7');
 convert 
---------
 foo
(1 row)

-- ISO-8859-7 -> UNICODE
SELECT CONVERT('foo', 'ISO-8859-7', 'UNICODE');
 convert 
---------
 foo
(1 row)

-- UNICODE -> ISO-8859-8
SELECT CONVERT('foo', 'UNICODE', 'ISO-8859-8');
 convert 
---------
 foo
(1 row)

-- ISO-8859-8 -> UNICODE
SELECT CONVERT('foo', 'ISO-8859-8', 'UNICODE');
 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_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)

RESET SESSION AUTHORIZATION;
DROP USER foo;
