From 4b0b8dadd271ae0a36cffe796f66e1d31290b743 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Thu, 27 Mar 2003 16:53:15 +0000 Subject: [PATCH] Add new files. --- src/backend/executor/tstoreReceiver.c | 89 ++++ .../mb/conversion_procs/conversion_create.sql | 456 ++++++++++++++++++ 2 files changed, 545 insertions(+) create mode 100644 src/backend/executor/tstoreReceiver.c create mode 100644 src/backend/utils/mb/conversion_procs/conversion_create.sql diff --git a/src/backend/executor/tstoreReceiver.c b/src/backend/executor/tstoreReceiver.c new file mode 100644 index 0000000000..fe82cc8c92 --- /dev/null +++ b/src/backend/executor/tstoreReceiver.c @@ -0,0 +1,89 @@ +/*------------------------------------------------------------------------- + * + * tstore_receiver.c + * an implementation of DestReceiver that stores the result tuples in + * a Tuplestore + * + * + * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * IDENTIFICATION + * $Header: /cvsroot/pgsql/src/backend/executor/tstoreReceiver.c,v 1.1 2003/03/27 16:53:15 momjian Exp $ + * + *------------------------------------------------------------------------- + */ + +#include "postgres.h" + +#include "executor/tstoreReceiver.h" +#include "utils/memutils.h" +#include "utils/portal.h" + +typedef struct +{ + DestReceiver pub; + Tuplestorestate *tstore; + MemoryContext cxt; +} TStoreState; + +/* + * Receive a tuple from the executor and store it in the tuplestore. + * + * XXX: As currently implemented, this routine is a hack: there should + * be no tie between this code and the portal system. Instead, the + * receiver function that is part of DestFunction should be passed a + * QueryDesc, so that the call site of ExecutorRun can "sub-class" + * QueryDesc and pass in any necessary addition information (in this + * case, the Tuplestore to use). + */ +static void +tstoreSetupReceiver(DestReceiver *self, int operation, + const char *portalname, TupleDesc typeinfo) +{ + TStoreState *myState = (TStoreState *) self; + Portal portal; + + if (operation != CMD_SELECT) + elog(ERROR, "Unexpected operation type: %d", operation); + + portal = GetPortalByName(portalname); + + if (portal == NULL) + elog(ERROR, "Specified portal does not exist: %s", portalname); + + myState->tstore = portal->holdStore; + myState->cxt = portal->holdContext; +} + +static void +tstoreReceiveTuple(HeapTuple tuple, TupleDesc typeinfo, DestReceiver *self) +{ + TStoreState *myState = (TStoreState *) self; + MemoryContext oldcxt = MemoryContextSwitchTo(myState->cxt); + + tuplestore_puttuple(myState->tstore, tuple); + + MemoryContextSwitchTo(oldcxt); +} + +static void +tstoreCleanupReceiver(DestReceiver *self) +{ + ; /* do nothing */ +} + +DestReceiver * +tstoreReceiverCreateDR(void) +{ + TStoreState *self = (TStoreState *) palloc(sizeof(TStoreState)); + + self->pub.receiveTuple = tstoreReceiveTuple; + self->pub.setup = tstoreSetupReceiver; + self->pub.cleanup = tstoreCleanupReceiver; + + self->tstore = NULL; + self->cxt = NULL; + + return (DestReceiver *) self; +} diff --git a/src/backend/utils/mb/conversion_procs/conversion_create.sql b/src/backend/utils/mb/conversion_procs/conversion_create.sql new file mode 100644 index 0000000000..4b779bfd86 --- /dev/null +++ b/src/backend/utils/mb/conversion_procs/conversion_create.sql @@ -0,0 +1,456 @@ +-- SQL_ASCII --> MULE_INTERNAL +CREATE OR REPLACE FUNCTION ascii_to_mic (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/ascii_and_mic', 'ascii_to_mic' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.ascii_to_mic; +CREATE DEFAULT CONVERSION pg_catalog.ascii_to_mic FOR 'SQL_ASCII' TO 'MULE_INTERNAL' FROM ascii_to_mic; +-- MULE_INTERNAL --> SQL_ASCII +CREATE OR REPLACE FUNCTION mic_to_ascii (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/ascii_and_mic', 'mic_to_ascii' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.mic_to_ascii; +CREATE DEFAULT CONVERSION pg_catalog.mic_to_ascii FOR 'MULE_INTERNAL' TO 'SQL_ASCII' FROM mic_to_ascii; +-- KOI8R --> MULE_INTERNAL +CREATE OR REPLACE FUNCTION koi8r_to_mic (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'koi8r_to_mic' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.koi8_r_to_mic; +CREATE DEFAULT CONVERSION pg_catalog.koi8_r_to_mic FOR 'KOI8R' TO 'MULE_INTERNAL' FROM koi8r_to_mic; +-- MULE_INTERNAL --> KOI8R +CREATE OR REPLACE FUNCTION mic_to_koi8r (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'mic_to_koi8r' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.mic_to_koi8_r; +CREATE DEFAULT CONVERSION pg_catalog.mic_to_koi8_r FOR 'MULE_INTERNAL' TO 'KOI8R' FROM mic_to_koi8r; +-- ISO-8859-5 --> MULE_INTERNAL +CREATE OR REPLACE FUNCTION iso_to_mic (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'iso_to_mic' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_5_to_mic; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_5_to_mic FOR 'ISO-8859-5' TO 'MULE_INTERNAL' FROM iso_to_mic; +-- MULE_INTERNAL --> ISO-8859-5 +CREATE OR REPLACE FUNCTION mic_to_iso (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'mic_to_iso' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.mic_to_iso_8859_5; +CREATE DEFAULT CONVERSION pg_catalog.mic_to_iso_8859_5 FOR 'MULE_INTERNAL' TO 'ISO-8859-5' FROM mic_to_iso; +-- WIN1251 --> MULE_INTERNAL +CREATE OR REPLACE FUNCTION win1251_to_mic (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'win1251_to_mic' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.windows_1251_to_mic; +CREATE DEFAULT CONVERSION pg_catalog.windows_1251_to_mic FOR 'WIN1251' TO 'MULE_INTERNAL' FROM win1251_to_mic; +-- MULE_INTERNAL --> WIN1251 +CREATE OR REPLACE FUNCTION mic_to_win1251 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'mic_to_win1251' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.mic_to_windows_1251; +CREATE DEFAULT CONVERSION pg_catalog.mic_to_windows_1251 FOR 'MULE_INTERNAL' TO 'WIN1251' FROM mic_to_win1251; +-- ALT --> MULE_INTERNAL +CREATE OR REPLACE FUNCTION alt_to_mic (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'alt_to_mic' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.windows_866_to_mic; +CREATE DEFAULT CONVERSION pg_catalog.windows_866_to_mic FOR 'ALT' TO 'MULE_INTERNAL' FROM alt_to_mic; +-- MULE_INTERNAL --> ALT +CREATE OR REPLACE FUNCTION mic_to_alt (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'mic_to_alt' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.mic_to_windows_866; +CREATE DEFAULT CONVERSION pg_catalog.mic_to_windows_866 FOR 'MULE_INTERNAL' TO 'ALT' FROM mic_to_alt; +-- KOI8R --> WIN1251 +CREATE OR REPLACE FUNCTION koi8r_to_win1251 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'koi8r_to_win1251' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.koi8_r_to_windows_1251; +CREATE DEFAULT CONVERSION pg_catalog.koi8_r_to_windows_1251 FOR 'KOI8R' TO 'WIN1251' FROM koi8r_to_win1251; +-- WIN1251 --> KOI8R +CREATE OR REPLACE FUNCTION win1251_to_koi8r (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'win1251_to_koi8r' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.windows_1251_to_koi8_r; +CREATE DEFAULT CONVERSION pg_catalog.windows_1251_to_koi8_r FOR 'WIN1251' TO 'KOI8R' FROM win1251_to_koi8r; +-- KOI8R --> ALT +CREATE OR REPLACE FUNCTION koi8r_to_alt (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'koi8r_to_alt' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.koi8_r_to_windows_866; +CREATE DEFAULT CONVERSION pg_catalog.koi8_r_to_windows_866 FOR 'KOI8R' TO 'ALT' FROM koi8r_to_alt; +-- ALT --> KOI8R +CREATE OR REPLACE FUNCTION alt_to_koi8r (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'alt_to_koi8r' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.windows_866_to_koi8_r; +CREATE DEFAULT CONVERSION pg_catalog.windows_866_to_koi8_r FOR 'ALT' TO 'KOI8R' FROM alt_to_koi8r; +-- ALT --> WIN1251 +CREATE OR REPLACE FUNCTION alt_to_win1251 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'alt_to_win1251' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.windows_866_to_windows_1251; +CREATE DEFAULT CONVERSION pg_catalog.windows_866_to_windows_1251 FOR 'ALT' TO 'WIN1251' FROM alt_to_win1251; +-- WIN1251 --> ALT +CREATE OR REPLACE FUNCTION win1251_to_alt (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'win1251_to_alt' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.windows_1251_to_windows_866; +CREATE DEFAULT CONVERSION pg_catalog.windows_1251_to_windows_866 FOR 'WIN1251' TO 'ALT' FROM win1251_to_alt; +-- ISO-8859-5 --> KOI8R +CREATE OR REPLACE FUNCTION iso_to_koi8r (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'iso_to_koi8r' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_5_to_koi8_r; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_5_to_koi8_r FOR 'ISO-8859-5' TO 'KOI8R' FROM iso_to_koi8r; +-- KOI8R --> ISO-8859-5 +CREATE OR REPLACE FUNCTION koi8r_to_iso (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'koi8r_to_iso' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.koi8_r_to_iso_8859_5; +CREATE DEFAULT CONVERSION pg_catalog.koi8_r_to_iso_8859_5 FOR 'KOI8R' TO 'ISO-8859-5' FROM koi8r_to_iso; +-- ISO-8859-5 --> WIN1251 +CREATE OR REPLACE FUNCTION iso_to_win1251 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'iso_to_win1251' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_5_to_windows_1251; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_5_to_windows_1251 FOR 'ISO-8859-5' TO 'WIN1251' FROM iso_to_win1251; +-- WIN1251 --> ISO-8859-5 +CREATE OR REPLACE FUNCTION win1251_to_iso (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'win1251_to_iso' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.windows_1251_to_iso_8859_5; +CREATE DEFAULT CONVERSION pg_catalog.windows_1251_to_iso_8859_5 FOR 'WIN1251' TO 'ISO-8859-5' FROM win1251_to_iso; +-- ISO-8859-5 --> ALT +CREATE OR REPLACE FUNCTION iso_to_alt (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'iso_to_alt' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_5_to_windows_866; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_5_to_windows_866 FOR 'ISO-8859-5' TO 'ALT' FROM iso_to_alt; +-- ALT --> ISO-8859-5 +CREATE OR REPLACE FUNCTION alt_to_iso (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/cyrillic_and_mic', 'alt_to_iso' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.windows_866_to_iso_8859_5; +CREATE DEFAULT CONVERSION pg_catalog.windows_866_to_iso_8859_5 FOR 'ALT' TO 'ISO-8859-5' FROM alt_to_iso; +-- EUC_CN --> MULE_INTERNAL +CREATE OR REPLACE FUNCTION euc_cn_to_mic (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/euc_cn_and_mic', 'euc_cn_to_mic' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.euc_cn_to_mic; +CREATE DEFAULT CONVERSION pg_catalog.euc_cn_to_mic FOR 'EUC_CN' TO 'MULE_INTERNAL' FROM euc_cn_to_mic; +-- MULE_INTERNAL --> EUC_CN +CREATE OR REPLACE FUNCTION mic_to_euc_cn (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/euc_cn_and_mic', 'mic_to_euc_cn' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.mic_to_euc_cn; +CREATE DEFAULT CONVERSION pg_catalog.mic_to_euc_cn FOR 'MULE_INTERNAL' TO 'EUC_CN' FROM mic_to_euc_cn; +-- EUC_JP --> SJIS +CREATE OR REPLACE FUNCTION euc_jp_to_sjis (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/euc_jp_and_sjis', 'euc_jp_to_sjis' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.euc_jp_to_sjis; +CREATE DEFAULT CONVERSION pg_catalog.euc_jp_to_sjis FOR 'EUC_JP' TO 'SJIS' FROM euc_jp_to_sjis; +-- SJIS --> EUC_JP +CREATE OR REPLACE FUNCTION sjis_to_euc_jp (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/euc_jp_and_sjis', 'sjis_to_euc_jp' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.sjis_to_euc_jp; +CREATE DEFAULT CONVERSION pg_catalog.sjis_to_euc_jp FOR 'SJIS' TO 'EUC_JP' FROM sjis_to_euc_jp; +-- EUC_JP --> MULE_INTERNAL +CREATE OR REPLACE FUNCTION euc_jp_to_mic (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/euc_jp_and_sjis', 'euc_jp_to_mic' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.euc_jp_to_mic; +CREATE DEFAULT CONVERSION pg_catalog.euc_jp_to_mic FOR 'EUC_JP' TO 'MULE_INTERNAL' FROM euc_jp_to_mic; +-- SJIS --> MULE_INTERNAL +CREATE OR REPLACE FUNCTION sjis_to_mic (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/euc_jp_and_sjis', 'sjis_to_mic' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.sjis_to_mic; +CREATE DEFAULT CONVERSION pg_catalog.sjis_to_mic FOR 'SJIS' TO 'MULE_INTERNAL' FROM sjis_to_mic; +-- MULE_INTERNAL --> EUC_JP +CREATE OR REPLACE FUNCTION mic_to_euc_jp (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/euc_jp_and_sjis', 'mic_to_euc_jp' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.mic_to_euc_jp; +CREATE DEFAULT CONVERSION pg_catalog.mic_to_euc_jp FOR 'MULE_INTERNAL' TO 'EUC_JP' FROM mic_to_euc_jp; +-- MULE_INTERNAL --> SJIS +CREATE OR REPLACE FUNCTION mic_to_sjis (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/euc_jp_and_sjis', 'mic_to_sjis' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.mic_to_sjis; +CREATE DEFAULT CONVERSION pg_catalog.mic_to_sjis FOR 'MULE_INTERNAL' TO 'SJIS' FROM mic_to_sjis; +-- EUC_KR --> MULE_INTERNAL +CREATE OR REPLACE FUNCTION euc_kr_to_mic (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/euc_kr_and_mic', 'euc_kr_to_mic' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.euc_kr_to_mic; +CREATE DEFAULT CONVERSION pg_catalog.euc_kr_to_mic FOR 'EUC_KR' TO 'MULE_INTERNAL' FROM euc_kr_to_mic; +-- MULE_INTERNAL --> EUC_KR +CREATE OR REPLACE FUNCTION mic_to_euc_kr (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/euc_kr_and_mic', 'mic_to_euc_kr' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.mic_to_euc_kr; +CREATE DEFAULT CONVERSION pg_catalog.mic_to_euc_kr FOR 'MULE_INTERNAL' TO 'EUC_KR' FROM mic_to_euc_kr; +-- EUC_TW --> BIG5 +CREATE OR REPLACE FUNCTION euc_tw_to_big5 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/euc_tw_and_big5', 'euc_tw_to_big5' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.euc_tw_to_big5; +CREATE DEFAULT CONVERSION pg_catalog.euc_tw_to_big5 FOR 'EUC_TW' TO 'BIG5' FROM euc_tw_to_big5; +-- BIG5 --> EUC_TW +CREATE OR REPLACE FUNCTION big5_to_euc_tw (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/euc_tw_and_big5', 'big5_to_euc_tw' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.big5_to_euc_tw; +CREATE DEFAULT CONVERSION pg_catalog.big5_to_euc_tw FOR 'BIG5' TO 'EUC_TW' FROM big5_to_euc_tw; +-- EUC_TW --> MULE_INTERNAL +CREATE OR REPLACE FUNCTION euc_tw_to_mic (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/euc_tw_and_big5', 'euc_tw_to_mic' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.euc_tw_to_mic; +CREATE DEFAULT CONVERSION pg_catalog.euc_tw_to_mic FOR 'EUC_TW' TO 'MULE_INTERNAL' FROM euc_tw_to_mic; +-- BIG5 --> MULE_INTERNAL +CREATE OR REPLACE FUNCTION big5_to_mic (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/euc_tw_and_big5', 'big5_to_mic' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.big5_to_mic; +CREATE DEFAULT CONVERSION pg_catalog.big5_to_mic FOR 'BIG5' TO 'MULE_INTERNAL' FROM big5_to_mic; +-- MULE_INTERNAL --> EUC_TW +CREATE OR REPLACE FUNCTION mic_to_euc_tw (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/euc_tw_and_big5', 'mic_to_euc_tw' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.mic_to_euc_tw; +CREATE DEFAULT CONVERSION pg_catalog.mic_to_euc_tw FOR 'MULE_INTERNAL' TO 'EUC_TW' FROM mic_to_euc_tw; +-- MULE_INTERNAL --> BIG5 +CREATE OR REPLACE FUNCTION mic_to_big5 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/euc_tw_and_big5', 'mic_to_big5' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.mic_to_big5; +CREATE DEFAULT CONVERSION pg_catalog.mic_to_big5 FOR 'MULE_INTERNAL' TO 'BIG5' FROM mic_to_big5; +-- LATIN2 --> MULE_INTERNAL +CREATE OR REPLACE FUNCTION latin2_to_mic (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/latin2_and_win1250', 'latin2_to_mic' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_2_to_mic; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_2_to_mic FOR 'LATIN2' TO 'MULE_INTERNAL' FROM latin2_to_mic; +-- MULE_INTERNAL --> LATIN2 +CREATE OR REPLACE FUNCTION mic_to_latin2 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/latin2_and_win1250', 'mic_to_latin2' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.mic_to_iso_8859_2; +CREATE DEFAULT CONVERSION pg_catalog.mic_to_iso_8859_2 FOR 'MULE_INTERNAL' TO 'LATIN2' FROM mic_to_latin2; +-- WIN1250 --> MULE_INTERNAL +CREATE OR REPLACE FUNCTION win1250_to_mic (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/latin2_and_win1250', 'win1250_to_mic' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.windows_1250_to_mic; +CREATE DEFAULT CONVERSION pg_catalog.windows_1250_to_mic FOR 'WIN1250' TO 'MULE_INTERNAL' FROM win1250_to_mic; +-- MULE_INTERNAL --> WIN1250 +CREATE OR REPLACE FUNCTION mic_to_win1250 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/latin2_and_win1250', 'mic_to_win1250' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.mic_to_windows_1250; +CREATE DEFAULT CONVERSION pg_catalog.mic_to_windows_1250 FOR 'MULE_INTERNAL' TO 'WIN1250' FROM mic_to_win1250; +-- LATIN2 --> WIN1250 +CREATE OR REPLACE FUNCTION latin2_to_win1250 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/latin2_and_win1250', 'latin2_to_win1250' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_2_to_windows_1250; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_2_to_windows_1250 FOR 'LATIN2' TO 'WIN1250' FROM latin2_to_win1250; +-- WIN1250 --> LATIN2 +CREATE OR REPLACE FUNCTION win1250_to_latin2 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/latin2_and_win1250', 'win1250_to_latin2' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.windows_1250_to_iso_8859_2; +CREATE DEFAULT CONVERSION pg_catalog.windows_1250_to_iso_8859_2 FOR 'WIN1250' TO 'LATIN2' FROM win1250_to_latin2; +-- LATIN1 --> MULE_INTERNAL +CREATE OR REPLACE FUNCTION latin1_to_mic (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/latin_and_mic', 'latin1_to_mic' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_1_to_mic; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_1_to_mic FOR 'LATIN1' TO 'MULE_INTERNAL' FROM latin1_to_mic; +-- MULE_INTERNAL --> LATIN1 +CREATE OR REPLACE FUNCTION mic_to_latin1 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/latin_and_mic', 'mic_to_latin1' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.mic_to_iso_8859_1; +CREATE DEFAULT CONVERSION pg_catalog.mic_to_iso_8859_1 FOR 'MULE_INTERNAL' TO 'LATIN1' FROM mic_to_latin1; +-- LATIN3 --> MULE_INTERNAL +CREATE OR REPLACE FUNCTION latin3_to_mic (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/latin_and_mic', 'latin3_to_mic' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_3_to_mic; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_3_to_mic FOR 'LATIN3' TO 'MULE_INTERNAL' FROM latin3_to_mic; +-- MULE_INTERNAL --> LATIN3 +CREATE OR REPLACE FUNCTION mic_to_latin3 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/latin_and_mic', 'mic_to_latin3' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.mic_to_iso_8859_3; +CREATE DEFAULT CONVERSION pg_catalog.mic_to_iso_8859_3 FOR 'MULE_INTERNAL' TO 'LATIN3' FROM mic_to_latin3; +-- LATIN4 --> MULE_INTERNAL +CREATE OR REPLACE FUNCTION latin4_to_mic (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/latin_and_mic', 'latin4_to_mic' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_4_to_mic; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_4_to_mic FOR 'LATIN4' TO 'MULE_INTERNAL' FROM latin4_to_mic; +-- MULE_INTERNAL --> LATIN4 +CREATE OR REPLACE FUNCTION mic_to_latin4 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/latin_and_mic', 'mic_to_latin4' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.mic_to_iso_8859_4; +CREATE DEFAULT CONVERSION pg_catalog.mic_to_iso_8859_4 FOR 'MULE_INTERNAL' TO 'LATIN4' FROM mic_to_latin4; +-- SQL_ASCII --> UNICODE +CREATE OR REPLACE FUNCTION ascii_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_ascii', 'ascii_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.ascii_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.ascii_to_utf_8 FOR 'SQL_ASCII' TO 'UNICODE' FROM ascii_to_utf8; +-- UNICODE --> SQL_ASCII +CREATE OR REPLACE FUNCTION utf8_to_ascii (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_ascii', 'utf8_to_ascii' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_ascii; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_ascii FOR 'UNICODE' TO 'SQL_ASCII' FROM utf8_to_ascii; +-- BIG5 --> UNICODE +CREATE OR REPLACE FUNCTION big5_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_big5', 'big5_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.big5_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.big5_to_utf_8 FOR 'BIG5' TO 'UNICODE' FROM big5_to_utf8; +-- UNICODE --> BIG5 +CREATE OR REPLACE FUNCTION utf8_to_big5 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_big5', 'utf8_to_big5' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_big5; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_big5 FOR 'UNICODE' TO 'BIG5' FROM utf8_to_big5; +-- UNICODE --> KOI8R +CREATE OR REPLACE FUNCTION utf8_to_koi8r (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_cyrillic', 'utf8_to_koi8r' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_koi8_r; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_koi8_r FOR 'UNICODE' TO 'KOI8R' FROM utf8_to_koi8r; +-- KOI8R --> UNICODE +CREATE OR REPLACE FUNCTION koi8r_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_cyrillic', 'koi8r_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.koi8_r_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.koi8_r_to_utf_8 FOR 'KOI8R' TO 'UNICODE' FROM koi8r_to_utf8; +-- UNICODE --> WIN1251 +CREATE OR REPLACE FUNCTION utf8_to_win1251 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_cyrillic', 'utf8_to_win1251' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_windows_1251; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_windows_1251 FOR 'UNICODE' TO 'WIN1251' FROM utf8_to_win1251; +-- WIN1251 --> UNICODE +CREATE OR REPLACE FUNCTION win1251_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_cyrillic', 'win1251_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.windows_1251_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.windows_1251_to_utf_8 FOR 'WIN1251' TO 'UNICODE' FROM win1251_to_utf8; +-- UNICODE --> ALT +CREATE OR REPLACE FUNCTION utf8_to_alt (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_cyrillic', 'utf8_to_alt' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_windows_866; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_windows_866 FOR 'UNICODE' TO 'ALT' FROM utf8_to_alt; +-- ALT --> UNICODE +CREATE OR REPLACE FUNCTION alt_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_cyrillic', 'alt_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.windows_866_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.windows_866_to_utf_8 FOR 'ALT' TO 'UNICODE' FROM alt_to_utf8; +-- EUC_CN --> UNICODE +CREATE OR REPLACE FUNCTION euc_cn_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_euc_cn', 'euc_cn_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.euc_cn_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.euc_cn_to_utf_8 FOR 'EUC_CN' TO 'UNICODE' FROM euc_cn_to_utf8; +-- UNICODE --> EUC_CN +CREATE OR REPLACE FUNCTION utf8_to_euc_cn (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_euc_cn', 'utf8_to_euc_cn' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_euc_cn; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_euc_cn FOR 'UNICODE' TO 'EUC_CN' FROM utf8_to_euc_cn; +-- EUC_JP --> UNICODE +CREATE OR REPLACE FUNCTION euc_jp_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_euc_jp', 'euc_jp_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.euc_jp_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.euc_jp_to_utf_8 FOR 'EUC_JP' TO 'UNICODE' FROM euc_jp_to_utf8; +-- UNICODE --> EUC_JP +CREATE OR REPLACE FUNCTION utf8_to_euc_jp (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_euc_jp', 'utf8_to_euc_jp' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_euc_jp; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_euc_jp FOR 'UNICODE' TO 'EUC_JP' FROM utf8_to_euc_jp; +-- EUC_KR --> UNICODE +CREATE OR REPLACE FUNCTION euc_kr_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_euc_kr', 'euc_kr_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.euc_kr_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.euc_kr_to_utf_8 FOR 'EUC_KR' TO 'UNICODE' FROM euc_kr_to_utf8; +-- UNICODE --> EUC_KR +CREATE OR REPLACE FUNCTION utf8_to_euc_kr (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_euc_kr', 'utf8_to_euc_kr' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_euc_kr; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_euc_kr FOR 'UNICODE' TO 'EUC_KR' FROM utf8_to_euc_kr; +-- EUC_TW --> UNICODE +CREATE OR REPLACE FUNCTION euc_tw_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_euc_tw', 'euc_tw_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.euc_tw_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.euc_tw_to_utf_8 FOR 'EUC_TW' TO 'UNICODE' FROM euc_tw_to_utf8; +-- UNICODE --> EUC_TW +CREATE OR REPLACE FUNCTION utf8_to_euc_tw (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_euc_tw', 'utf8_to_euc_tw' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_euc_tw; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_euc_tw FOR 'UNICODE' TO 'EUC_TW' FROM utf8_to_euc_tw; +-- GB18030 --> UNICODE +CREATE OR REPLACE FUNCTION gb18030_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_gb18030', 'gb18030_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.gb18030_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.gb18030_to_utf_8 FOR 'GB18030' TO 'UNICODE' FROM gb18030_to_utf8; +-- UNICODE --> GB18030 +CREATE OR REPLACE FUNCTION utf8_to_gb18030 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_gb18030', 'utf8_to_gb18030' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_gb18030; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_gb18030 FOR 'UNICODE' TO 'GB18030' FROM utf8_to_gb18030; +-- GBK --> UNICODE +CREATE OR REPLACE FUNCTION gbk_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_gbk', 'gbk_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.gbk_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.gbk_to_utf_8 FOR 'GBK' TO 'UNICODE' FROM gbk_to_utf8; +-- UNICODE --> GBK +CREATE OR REPLACE FUNCTION utf8_to_gbk (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_gbk', 'utf8_to_gbk' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_gbk; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_gbk FOR 'UNICODE' TO 'GBK' FROM utf8_to_gbk; +-- UNICODE --> LATIN2 +CREATE OR REPLACE FUNCTION utf8_to_iso8859 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'utf8_to_iso8859' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_iso_8859_2; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_iso_8859_2 FOR 'UNICODE' TO 'LATIN2' FROM utf8_to_iso8859; +-- LATIN2 --> UNICODE +CREATE OR REPLACE FUNCTION iso8859_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'iso8859_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_2_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_2_to_utf_8 FOR 'LATIN2' TO 'UNICODE' FROM iso8859_to_utf8; +-- UNICODE --> LATIN3 +CREATE OR REPLACE FUNCTION utf8_to_iso8859 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'utf8_to_iso8859' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_iso_8859_3; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_iso_8859_3 FOR 'UNICODE' TO 'LATIN3' FROM utf8_to_iso8859; +-- LATIN3 --> UNICODE +CREATE OR REPLACE FUNCTION iso8859_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'iso8859_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_3_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_3_to_utf_8 FOR 'LATIN3' TO 'UNICODE' FROM iso8859_to_utf8; +-- UNICODE --> LATIN4 +CREATE OR REPLACE FUNCTION utf8_to_iso8859 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'utf8_to_iso8859' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_iso_8859_4; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_iso_8859_4 FOR 'UNICODE' TO 'LATIN4' FROM utf8_to_iso8859; +-- LATIN4 --> UNICODE +CREATE OR REPLACE FUNCTION iso8859_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'iso8859_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_4_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_4_to_utf_8 FOR 'LATIN4' TO 'UNICODE' FROM iso8859_to_utf8; +-- UNICODE --> LATIN5 +CREATE OR REPLACE FUNCTION utf8_to_iso8859 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'utf8_to_iso8859' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_iso_8859_9; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_iso_8859_9 FOR 'UNICODE' TO 'LATIN5' FROM utf8_to_iso8859; +-- LATIN5 --> UNICODE +CREATE OR REPLACE FUNCTION iso8859_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'iso8859_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_9_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_9_to_utf_8 FOR 'LATIN5' TO 'UNICODE' FROM iso8859_to_utf8; +-- UNICODE --> LATIN6 +CREATE OR REPLACE FUNCTION utf8_to_iso8859 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'utf8_to_iso8859' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_iso_8859_10; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_iso_8859_10 FOR 'UNICODE' TO 'LATIN6' FROM utf8_to_iso8859; +-- LATIN6 --> UNICODE +CREATE OR REPLACE FUNCTION iso8859_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'iso8859_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_10_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_10_to_utf_8 FOR 'LATIN6' TO 'UNICODE' FROM iso8859_to_utf8; +-- UNICODE --> LATIN7 +CREATE OR REPLACE FUNCTION utf8_to_iso8859 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'utf8_to_iso8859' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_iso_8859_13; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_iso_8859_13 FOR 'UNICODE' TO 'LATIN7' FROM utf8_to_iso8859; +-- LATIN7 --> UNICODE +CREATE OR REPLACE FUNCTION iso8859_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'iso8859_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_13_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_13_to_utf_8 FOR 'LATIN7' TO 'UNICODE' FROM iso8859_to_utf8; +-- UNICODE --> LATIN8 +CREATE OR REPLACE FUNCTION utf8_to_iso8859 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'utf8_to_iso8859' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_iso_8859_14; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_iso_8859_14 FOR 'UNICODE' TO 'LATIN8' FROM utf8_to_iso8859; +-- LATIN8 --> UNICODE +CREATE OR REPLACE FUNCTION iso8859_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'iso8859_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_14_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_14_to_utf_8 FOR 'LATIN8' TO 'UNICODE' FROM iso8859_to_utf8; +-- UNICODE --> LATIN9 +CREATE OR REPLACE FUNCTION utf8_to_iso8859 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'utf8_to_iso8859' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_iso_8859_15; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_iso_8859_15 FOR 'UNICODE' TO 'LATIN9' FROM utf8_to_iso8859; +-- LATIN9 --> UNICODE +CREATE OR REPLACE FUNCTION iso8859_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'iso8859_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_15_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_15_to_utf_8 FOR 'LATIN9' TO 'UNICODE' FROM iso8859_to_utf8; +-- UNICODE --> LATIN10 +CREATE OR REPLACE FUNCTION utf8_to_iso8859 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'utf8_to_iso8859' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_iso_8859_16; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_iso_8859_16 FOR 'UNICODE' TO 'LATIN10' FROM utf8_to_iso8859; +-- LATIN10 --> UNICODE +CREATE OR REPLACE FUNCTION iso8859_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'iso8859_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_16_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_16_to_utf_8 FOR 'LATIN10' TO 'UNICODE' FROM iso8859_to_utf8; +-- UNICODE --> ISO-8859-5 +CREATE OR REPLACE FUNCTION utf8_to_iso8859 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'utf8_to_iso8859' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_iso_8859_5; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_iso_8859_5 FOR 'UNICODE' TO 'ISO-8859-5' FROM utf8_to_iso8859; +-- ISO-8859-5 --> UNICODE +CREATE OR REPLACE FUNCTION iso8859_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'iso8859_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_5_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_5_to_utf_8 FOR 'ISO-8859-5' TO 'UNICODE' FROM iso8859_to_utf8; +-- UNICODE --> ISO-8859-6 +CREATE OR REPLACE FUNCTION utf8_to_iso8859 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'utf8_to_iso8859' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_iso_8859_6; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_iso_8859_6 FOR 'UNICODE' TO 'ISO-8859-6' FROM utf8_to_iso8859; +-- ISO-8859-6 --> UNICODE +CREATE OR REPLACE FUNCTION iso8859_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'iso8859_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_6_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_6_to_utf_8 FOR 'ISO-8859-6' TO 'UNICODE' FROM iso8859_to_utf8; +-- UNICODE --> ISO-8859-7 +CREATE OR REPLACE FUNCTION utf8_to_iso8859 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'utf8_to_iso8859' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_iso_8859_7; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_iso_8859_7 FOR 'UNICODE' TO 'ISO-8859-7' FROM utf8_to_iso8859; +-- ISO-8859-7 --> UNICODE +CREATE OR REPLACE FUNCTION iso8859_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'iso8859_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_7_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_7_to_utf_8 FOR 'ISO-8859-7' TO 'UNICODE' FROM iso8859_to_utf8; +-- UNICODE --> ISO-8859-8 +CREATE OR REPLACE FUNCTION utf8_to_iso8859 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'utf8_to_iso8859' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_iso_8859_8; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_iso_8859_8 FOR 'UNICODE' TO 'ISO-8859-8' FROM utf8_to_iso8859; +-- ISO-8859-8 --> UNICODE +CREATE OR REPLACE FUNCTION iso8859_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859', 'iso8859_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_8_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_8_to_utf_8 FOR 'ISO-8859-8' TO 'UNICODE' FROM iso8859_to_utf8; +-- LATIN1 --> UNICODE +CREATE OR REPLACE FUNCTION iso8859_1_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859_1', 'iso8859_1_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.iso_8859_1_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.iso_8859_1_to_utf_8 FOR 'LATIN1' TO 'UNICODE' FROM iso8859_1_to_utf8; +-- UNICODE --> LATIN1 +CREATE OR REPLACE FUNCTION utf8_to_iso8859_1 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_iso8859_1', 'utf8_to_iso8859_1' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_iso_8859_1; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_iso_8859_1 FOR 'UNICODE' TO 'LATIN1' FROM utf8_to_iso8859_1; +-- JOHAB --> UNICODE +CREATE OR REPLACE FUNCTION johab_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_johab', 'johab_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.johab_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.johab_to_utf_8 FOR 'JOHAB' TO 'UNICODE' FROM johab_to_utf8; +-- UNICODE --> JOHAB +CREATE OR REPLACE FUNCTION utf8_to_johab (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_johab', 'utf8_to_johab' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_johab; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_johab FOR 'UNICODE' TO 'JOHAB' FROM utf8_to_johab; +-- SJIS --> UNICODE +CREATE OR REPLACE FUNCTION sjis_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_sjis', 'sjis_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.sjis_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.sjis_to_utf_8 FOR 'SJIS' TO 'UNICODE' FROM sjis_to_utf8; +-- UNICODE --> SJIS +CREATE OR REPLACE FUNCTION utf8_to_sjis (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_sjis', 'utf8_to_sjis' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_sjis; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_sjis FOR 'UNICODE' TO 'SJIS' FROM utf8_to_sjis; +-- TCVN --> UNICODE +CREATE OR REPLACE FUNCTION tcvn_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_tcvn', 'tcvn_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.tcvn_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.tcvn_to_utf_8 FOR 'TCVN' TO 'UNICODE' FROM tcvn_to_utf8; +-- UNICODE --> TCVN +CREATE OR REPLACE FUNCTION utf8_to_tcvn (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_tcvn', 'utf8_to_tcvn' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_tcvn; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_tcvn FOR 'UNICODE' TO 'TCVN' FROM utf8_to_tcvn; +-- UHC --> UNICODE +CREATE OR REPLACE FUNCTION uhc_to_utf8 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_uhc', 'uhc_to_utf8' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.uhc_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.uhc_to_utf_8 FOR 'UHC' TO 'UNICODE' FROM uhc_to_utf8; +-- UNICODE --> UHC +CREATE OR REPLACE FUNCTION utf8_to_uhc (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_uhc', 'utf8_to_uhc' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_uhc; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_uhc FOR 'UNICODE' TO 'UHC' FROM utf8_to_uhc; +-- UNICODE --> WIN1250 +CREATE OR REPLACE FUNCTION utf_to_win1250 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_win1250', 'utf_to_win1250' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_windows_1250; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_windows_1250 FOR 'UNICODE' TO 'WIN1250' FROM utf_to_win1250; +-- WIN1250 --> UNICODE +CREATE OR REPLACE FUNCTION win1250_to_utf (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_win1250', 'win1250_to_utf' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.windows_1250_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.windows_1250_to_utf_8 FOR 'WIN1250' TO 'UNICODE' FROM win1250_to_utf; +-- UNICODE --> WIN1256 +CREATE OR REPLACE FUNCTION utf_to_win1256 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_win1256', 'utf_to_win1256' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_windows_1256; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_windows_1256 FOR 'UNICODE' TO 'WIN1256' FROM utf_to_win1256; +-- WIN1256 --> UNICODE +CREATE OR REPLACE FUNCTION win1256_to_utf (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_win1256', 'win1256_to_utf' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.windows_1256_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.windows_1256_to_utf_8 FOR 'WIN1256' TO 'UNICODE' FROM win1256_to_utf; +-- UNICODE --> WIN874 +CREATE OR REPLACE FUNCTION utf_to_win874 (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_win874', 'utf_to_win874' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.utf_8_to_windows_874; +CREATE DEFAULT CONVERSION pg_catalog.utf_8_to_windows_874 FOR 'UNICODE' TO 'WIN874' FROM utf_to_win874; +-- WIN874 --> UNICODE +CREATE OR REPLACE FUNCTION win874_to_utf (INTEGER, INTEGER, CSTRING, CSTRING, INTEGER) RETURNS VOID AS '$libdir/utf8_and_win874', 'win874_to_utf' LANGUAGE 'c'; +DROP CONVERSION pg_catalog.windows_874_to_utf_8; +CREATE DEFAULT CONVERSION pg_catalog.windows_874_to_utf_8 FOR 'WIN874' TO 'UNICODE' FROM win874_to_utf; -- GitLab