mirror of
https://git.postgresql.org/git/postgresql.git
synced 2026-02-09 02:57:34 +08:00
Once upon a time we did not have a separate CREATEROLE privilege, and CREATEUSER effectively meant SUPERUSER. When we invented CREATEROLE (in 8.1) we also added SUPERUSER so as to have a less confusing keyword for this role property. However, we left CREATEUSER in place as a deprecated synonym for SUPERUSER, because of backwards-compatibility concerns. It's still there and is still confusing people, as for example in bug #13694 from Justin Catterson. 9.6 will be ten years or so later, which surely ought to be long enough to end the deprecation and just remove these old keywords. Hence, do so.
298 lines
9.8 KiB
SQL
298 lines
9.8 KiB
SQL
-- 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;
|
|
--
|
|
-- 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;
|
|
-- test comments
|
|
COMMENT ON CONVERSION myconv_bad IS 'foo';
|
|
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');
|
|
-- MULE_INTERNAL --> SQL_ASCII
|
|
SELECT CONVERT('foo', 'MULE_INTERNAL', 'SQL_ASCII');
|
|
-- KOI8R --> MULE_INTERNAL
|
|
SELECT CONVERT('foo', 'KOI8R', 'MULE_INTERNAL');
|
|
-- MULE_INTERNAL --> KOI8R
|
|
SELECT CONVERT('foo', 'MULE_INTERNAL', 'KOI8R');
|
|
-- ISO-8859-5 --> MULE_INTERNAL
|
|
SELECT CONVERT('foo', 'ISO-8859-5', 'MULE_INTERNAL');
|
|
-- MULE_INTERNAL --> ISO-8859-5
|
|
SELECT CONVERT('foo', 'MULE_INTERNAL', 'ISO-8859-5');
|
|
-- WIN1251 --> MULE_INTERNAL
|
|
SELECT CONVERT('foo', 'WIN1251', 'MULE_INTERNAL');
|
|
-- MULE_INTERNAL --> WIN1251
|
|
SELECT CONVERT('foo', 'MULE_INTERNAL', 'WIN1251');
|
|
-- WIN866 --> MULE_INTERNAL
|
|
SELECT CONVERT('foo', 'WIN866', 'MULE_INTERNAL');
|
|
-- MULE_INTERNAL --> WIN866
|
|
SELECT CONVERT('foo', 'MULE_INTERNAL', 'WIN866');
|
|
-- KOI8R --> WIN1251
|
|
SELECT CONVERT('foo', 'KOI8R', 'WIN1251');
|
|
-- WIN1251 --> KOI8R
|
|
SELECT CONVERT('foo', 'WIN1251', 'KOI8R');
|
|
-- KOI8R --> WIN866
|
|
SELECT CONVERT('foo', 'KOI8R', 'WIN866');
|
|
-- WIN866 --> KOI8R
|
|
SELECT CONVERT('foo', 'WIN866', 'KOI8R');
|
|
-- WIN866 --> WIN1251
|
|
SELECT CONVERT('foo', 'WIN866', 'WIN1251');
|
|
-- WIN1251 --> WIN866
|
|
SELECT CONVERT('foo', 'WIN1251', 'WIN866');
|
|
-- ISO-8859-5 --> KOI8R
|
|
SELECT CONVERT('foo', 'ISO-8859-5', 'KOI8R');
|
|
-- KOI8R --> ISO-8859-5
|
|
SELECT CONVERT('foo', 'KOI8R', 'ISO-8859-5');
|
|
-- ISO-8859-5 --> WIN1251
|
|
SELECT CONVERT('foo', 'ISO-8859-5', 'WIN1251');
|
|
-- WIN1251 --> ISO-8859-5
|
|
SELECT CONVERT('foo', 'WIN1251', 'ISO-8859-5');
|
|
-- ISO-8859-5 --> WIN866
|
|
SELECT CONVERT('foo', 'ISO-8859-5', 'WIN866');
|
|
-- WIN866 --> ISO-8859-5
|
|
SELECT CONVERT('foo', 'WIN866', 'ISO-8859-5');
|
|
-- EUC_CN --> MULE_INTERNAL
|
|
SELECT CONVERT('foo', 'EUC_CN', 'MULE_INTERNAL');
|
|
-- MULE_INTERNAL --> EUC_CN
|
|
SELECT CONVERT('foo', 'MULE_INTERNAL', 'EUC_CN');
|
|
-- EUC_JP --> SJIS
|
|
SELECT CONVERT('foo', 'EUC_JP', 'SJIS');
|
|
-- SJIS --> EUC_JP
|
|
SELECT CONVERT('foo', 'SJIS', 'EUC_JP');
|
|
-- EUC_JP --> MULE_INTERNAL
|
|
SELECT CONVERT('foo', 'EUC_JP', 'MULE_INTERNAL');
|
|
-- SJIS --> MULE_INTERNAL
|
|
SELECT CONVERT('foo', 'SJIS', 'MULE_INTERNAL');
|
|
-- MULE_INTERNAL --> EUC_JP
|
|
SELECT CONVERT('foo', 'MULE_INTERNAL', 'EUC_JP');
|
|
-- MULE_INTERNAL --> SJIS
|
|
SELECT CONVERT('foo', 'MULE_INTERNAL', 'SJIS');
|
|
-- EUC_KR --> MULE_INTERNAL
|
|
SELECT CONVERT('foo', 'EUC_KR', 'MULE_INTERNAL');
|
|
-- MULE_INTERNAL --> EUC_KR
|
|
SELECT CONVERT('foo', 'MULE_INTERNAL', 'EUC_KR');
|
|
-- EUC_TW --> BIG5
|
|
SELECT CONVERT('foo', 'EUC_TW', 'BIG5');
|
|
-- BIG5 --> EUC_TW
|
|
SELECT CONVERT('foo', 'BIG5', 'EUC_TW');
|
|
-- EUC_TW --> MULE_INTERNAL
|
|
SELECT CONVERT('foo', 'EUC_TW', 'MULE_INTERNAL');
|
|
-- BIG5 --> MULE_INTERNAL
|
|
SELECT CONVERT('foo', 'BIG5', 'MULE_INTERNAL');
|
|
-- MULE_INTERNAL --> EUC_TW
|
|
SELECT CONVERT('foo', 'MULE_INTERNAL', 'EUC_TW');
|
|
-- MULE_INTERNAL --> BIG5
|
|
SELECT CONVERT('foo', 'MULE_INTERNAL', 'BIG5');
|
|
-- LATIN2 --> MULE_INTERNAL
|
|
SELECT CONVERT('foo', 'LATIN2', 'MULE_INTERNAL');
|
|
-- MULE_INTERNAL --> LATIN2
|
|
SELECT CONVERT('foo', 'MULE_INTERNAL', 'LATIN2');
|
|
-- WIN1250 --> MULE_INTERNAL
|
|
SELECT CONVERT('foo', 'WIN1250', 'MULE_INTERNAL');
|
|
-- MULE_INTERNAL --> WIN1250
|
|
SELECT CONVERT('foo', 'MULE_INTERNAL', 'WIN1250');
|
|
-- LATIN2 --> WIN1250
|
|
SELECT CONVERT('foo', 'LATIN2', 'WIN1250');
|
|
-- WIN1250 --> LATIN2
|
|
SELECT CONVERT('foo', 'WIN1250', 'LATIN2');
|
|
-- LATIN1 --> MULE_INTERNAL
|
|
SELECT CONVERT('foo', 'LATIN1', 'MULE_INTERNAL');
|
|
-- MULE_INTERNAL --> LATIN1
|
|
SELECT CONVERT('foo', 'MULE_INTERNAL', 'LATIN1');
|
|
-- LATIN3 --> MULE_INTERNAL
|
|
SELECT CONVERT('foo', 'LATIN3', 'MULE_INTERNAL');
|
|
-- MULE_INTERNAL --> LATIN3
|
|
SELECT CONVERT('foo', 'MULE_INTERNAL', 'LATIN3');
|
|
-- LATIN4 --> MULE_INTERNAL
|
|
SELECT CONVERT('foo', 'LATIN4', 'MULE_INTERNAL');
|
|
-- MULE_INTERNAL --> LATIN4
|
|
SELECT CONVERT('foo', 'MULE_INTERNAL', 'LATIN4');
|
|
-- SQL_ASCII --> UTF8
|
|
SELECT CONVERT('foo', 'SQL_ASCII', 'UTF8');
|
|
-- UTF8 --> SQL_ASCII
|
|
SELECT CONVERT('foo', 'UTF8', 'SQL_ASCII');
|
|
-- BIG5 --> UTF8
|
|
SELECT CONVERT('foo', 'BIG5', 'UTF8');
|
|
-- UTF8 --> BIG5
|
|
SELECT CONVERT('foo', 'UTF8', 'BIG5');
|
|
-- UTF8 --> KOI8R
|
|
SELECT CONVERT('foo', 'UTF8', 'KOI8R');
|
|
-- KOI8R --> UTF8
|
|
SELECT CONVERT('foo', 'KOI8R', 'UTF8');
|
|
-- UTF8 --> WIN1251
|
|
SELECT CONVERT('foo', 'UTF8', 'WIN1251');
|
|
-- WIN1251 --> UTF8
|
|
SELECT CONVERT('foo', 'WIN1251', 'UTF8');
|
|
-- UTF8 --> WIN1252
|
|
SELECT CONVERT('foo', 'UTF8', 'WIN1252');
|
|
-- WIN1252 --> UTF8
|
|
SELECT CONVERT('foo', 'WIN1252', 'UTF8');
|
|
-- UTF8 --> WIN866
|
|
SELECT CONVERT('foo', 'UTF8', 'WIN866');
|
|
-- WIN866 --> UTF8
|
|
SELECT CONVERT('foo', 'WIN866', 'UTF8');
|
|
-- EUC_CN --> UTF8
|
|
SELECT CONVERT('foo', 'EUC_CN', 'UTF8');
|
|
-- UTF8 --> EUC_CN
|
|
SELECT CONVERT('foo', 'UTF8', 'EUC_CN');
|
|
-- EUC_JP --> UTF8
|
|
SELECT CONVERT('foo', 'EUC_JP', 'UTF8');
|
|
-- UTF8 --> EUC_JP
|
|
SELECT CONVERT('foo', 'UTF8', 'EUC_JP');
|
|
-- EUC_KR --> UTF8
|
|
SELECT CONVERT('foo', 'EUC_KR', 'UTF8');
|
|
-- UTF8 --> EUC_KR
|
|
SELECT CONVERT('foo', 'UTF8', 'EUC_KR');
|
|
-- EUC_TW --> UTF8
|
|
SELECT CONVERT('foo', 'EUC_TW', 'UTF8');
|
|
-- UTF8 --> EUC_TW
|
|
SELECT CONVERT('foo', 'UTF8', 'EUC_TW');
|
|
-- GB18030 --> UTF8
|
|
SELECT CONVERT('Postgres \247\343\247\335\247\340\247\337 \2249\3138 \317\363 \250\246le\2010\2747phant', 'GB18030', 'UTF8');
|
|
-- 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');
|
|
-- GBK --> UTF8
|
|
SELECT CONVERT('foo', 'GBK', 'UTF8');
|
|
-- UTF8 --> GBK
|
|
SELECT CONVERT('foo', 'UTF8', 'GBK');
|
|
-- UTF8 --> LATIN2
|
|
SELECT CONVERT('foo', 'UTF8', 'LATIN2');
|
|
-- LATIN2 --> UTF8
|
|
SELECT CONVERT('foo', 'LATIN2', 'UTF8');
|
|
-- UTF8 --> LATIN3
|
|
SELECT CONVERT('foo', 'UTF8', 'LATIN3');
|
|
-- LATIN3 --> UTF8
|
|
SELECT CONVERT('foo', 'LATIN3', 'UTF8');
|
|
-- UTF8 --> LATIN4
|
|
SELECT CONVERT('foo', 'UTF8', 'LATIN4');
|
|
-- LATIN4 --> UTF8
|
|
SELECT CONVERT('foo', 'LATIN4', 'UTF8');
|
|
-- UTF8 --> LATIN5
|
|
SELECT CONVERT('foo', 'UTF8', 'LATIN5');
|
|
-- LATIN5 --> UTF8
|
|
SELECT CONVERT('foo', 'LATIN5', 'UTF8');
|
|
-- UTF8 --> LATIN6
|
|
SELECT CONVERT('foo', 'UTF8', 'LATIN6');
|
|
-- LATIN6 --> UTF8
|
|
SELECT CONVERT('foo', 'LATIN6', 'UTF8');
|
|
-- UTF8 --> LATIN7
|
|
SELECT CONVERT('foo', 'UTF8', 'LATIN7');
|
|
-- LATIN7 --> UTF8
|
|
SELECT CONVERT('foo', 'LATIN7', 'UTF8');
|
|
-- UTF8 --> LATIN8
|
|
SELECT CONVERT('foo', 'UTF8', 'LATIN8');
|
|
-- LATIN8 --> UTF8
|
|
SELECT CONVERT('foo', 'LATIN8', 'UTF8');
|
|
-- UTF8 --> LATIN9
|
|
SELECT CONVERT('foo', 'UTF8', 'LATIN9');
|
|
-- LATIN9 --> UTF8
|
|
SELECT CONVERT('foo', 'LATIN9', 'UTF8');
|
|
-- UTF8 --> LATIN10
|
|
SELECT CONVERT('foo', 'UTF8', 'LATIN10');
|
|
-- LATIN10 --> UTF8
|
|
SELECT CONVERT('foo', 'LATIN10', 'UTF8');
|
|
-- UTF8 --> ISO-8859-5
|
|
SELECT CONVERT('foo', 'UTF8', 'ISO-8859-5');
|
|
-- ISO-8859-5 --> UTF8
|
|
SELECT CONVERT('foo', 'ISO-8859-5', 'UTF8');
|
|
-- UTF8 --> ISO-8859-6
|
|
SELECT CONVERT('foo', 'UTF8', 'ISO-8859-6');
|
|
-- ISO-8859-6 --> UTF8
|
|
SELECT CONVERT('foo', 'ISO-8859-6', 'UTF8');
|
|
-- UTF8 --> ISO-8859-7
|
|
SELECT CONVERT('foo', 'UTF8', 'ISO-8859-7');
|
|
-- ISO-8859-7 --> UTF8
|
|
SELECT CONVERT('foo', 'ISO-8859-7', 'UTF8');
|
|
-- UTF8 --> ISO-8859-8
|
|
SELECT CONVERT('foo', 'UTF8', 'ISO-8859-8');
|
|
-- ISO-8859-8 --> UTF8
|
|
SELECT CONVERT('foo', 'ISO-8859-8', 'UTF8');
|
|
-- LATIN1 --> UTF8
|
|
SELECT CONVERT('foo', 'LATIN1', 'UTF8');
|
|
-- UTF8 --> LATIN1
|
|
SELECT CONVERT('foo', 'UTF8', 'LATIN1');
|
|
-- JOHAB --> UTF8
|
|
SELECT CONVERT('foo', 'JOHAB', 'UTF8');
|
|
-- UTF8 --> JOHAB
|
|
SELECT CONVERT('foo', 'UTF8', 'JOHAB');
|
|
-- SJIS --> UTF8
|
|
SELECT CONVERT('foo', 'SJIS', 'UTF8');
|
|
-- UTF8 --> SJIS
|
|
SELECT CONVERT('foo', 'UTF8', 'SJIS');
|
|
-- WIN1258 --> UTF8
|
|
SELECT CONVERT('foo', 'WIN1258', 'UTF8');
|
|
-- UTF8 --> WIN1258
|
|
SELECT CONVERT('foo', 'UTF8', 'WIN1258');
|
|
-- UHC --> UTF8
|
|
SELECT CONVERT('foo', 'UHC', 'UTF8');
|
|
-- UTF8 --> UHC
|
|
SELECT CONVERT('foo', 'UTF8', 'UHC');
|
|
-- UTF8 --> WIN1250
|
|
SELECT CONVERT('foo', 'UTF8', 'WIN1250');
|
|
-- WIN1250 --> UTF8
|
|
SELECT CONVERT('foo', 'WIN1250', 'UTF8');
|
|
-- UTF8 --> WIN1256
|
|
SELECT CONVERT('foo', 'UTF8', 'WIN1256');
|
|
-- WIN1256 --> UTF8
|
|
SELECT CONVERT('foo', 'WIN1256', 'UTF8');
|
|
-- UTF8 --> WIN874
|
|
SELECT CONVERT('foo', 'UTF8', 'WIN874');
|
|
-- WIN874 --> UTF8
|
|
SELECT CONVERT('foo', 'WIN874', 'UTF8');
|
|
-- UTF8 --> WIN1253
|
|
SELECT CONVERT('foo', 'UTF8', 'WIN1253');
|
|
-- WIN1253 --> UTF8
|
|
SELECT CONVERT('foo', 'WIN1253', 'UTF8');
|
|
-- UTF8 --> WIN1254
|
|
SELECT CONVERT('foo', 'UTF8', 'WIN1254');
|
|
-- WIN1254 --> UTF8
|
|
SELECT CONVERT('foo', 'WIN1254', 'UTF8');
|
|
-- UTF8 --> WIN1255
|
|
SELECT CONVERT('foo', 'UTF8', 'WIN1255');
|
|
-- WIN1255 --> UTF8
|
|
SELECT CONVERT('foo', 'WIN1255', 'UTF8');
|
|
-- UTF8 --> WIN1257
|
|
SELECT CONVERT('foo', 'UTF8', 'WIN1257');
|
|
-- WIN1257 --> UTF8
|
|
SELECT CONVERT('foo', 'WIN1257', 'UTF8');
|
|
-- UTF8 --> EUC_JIS_2004
|
|
SELECT CONVERT('foo', 'UTF8', 'EUC_JIS_2004');
|
|
-- EUC_JIS_2004 --> UTF8
|
|
SELECT CONVERT('foo', 'EUC_JIS_2004', 'UTF8');
|
|
-- UTF8 --> SHIFT_JIS_2004
|
|
SELECT CONVERT('foo', 'UTF8', 'SHIFT_JIS_2004');
|
|
-- SHIFT_JIS_2004 --> UTF8
|
|
SELECT CONVERT('foo', 'SHIFT_JIS_2004', 'UTF8');
|
|
-- EUC_JIS_2004 --> SHIFT_JIS_2004
|
|
SELECT CONVERT('foo', 'EUC_JIS_2004', 'SHIFT_JIS_2004');
|
|
-- SHIFT_JIS_2004 --> EUC_JIS_2004
|
|
SELECT CONVERT('foo', 'SHIFT_JIS_2004', 'EUC_JIS_2004');
|
|
--
|
|
-- return to the super user
|
|
--
|
|
RESET SESSION AUTHORIZATION;
|
|
DROP USER conversion_test_user;
|