Re: [HACKERS] UTF8 or Unicode - Mailing list pgsql-patches

From Bruce Momjian
Subject Re: [HACKERS] UTF8 or Unicode
Date
Msg-id 200502262050.j1QKoNi10358@candle.pha.pa.us
Whole thread Raw
Responses Re: [HACKERS] UTF8 or Unicode
Re: [HACKERS] UTF8 or Unicode
Re: [HACKERS] UTF8 or Unicode
Re: [HACKERS] UTF8 or Unicode
List pgsql-patches
Peter Eisentraut wrote:
> Am Freitag, 25. Februar 2005 05:51 schrieb Bruce Momjian:
> > so I see what he is saying.  We are not consistent in favoring the
> > official names vs. the common names.
> >
> > I will work on a patch that people can review and test.
>
> I think this is what we should do:
>
> UNICODE => UTF8
> ALT => WIN866
> WIN => WIN1251
> TCVN => WIN1258
>
> That should clear it up.

OK, here is a patch that makes those changes.

The only uncertainty I have is with the the use of the TCVN conversion
routine names, e.g.:

    SELECT CONVERT('foo' USING tcvn_to_utf_8);

I assume this is the same as:

    SELECT CONVERT('foo', 'WIN1258', 'UTF8');
and
    SELECT CONVERT('foo', 'TCVN', 'UTF8');   -- alias usage

So, why would people use the routine name?  Both forms are documented.
The first one with USING does not accept aliases, while the others do.

I think this should be renamed to win1258_to_utf_8.  However, this would
be an incompatibility.  We should mention it in the release notes.

Other than that the other conversion files were already named fine, e.g.
ascii_to_utf_8 (no UNICODE), however it is utf_8 and not utf8.  I am
unsure how to handle these.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: doc/src/sgml/charset.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/charset.sgml,v
retrieving revision 2.48
diff -c -c -r2.48 charset.sgml
*** doc/src/sgml/charset.sgml    4 Jan 2005 00:05:44 -0000    2.48
--- doc/src/sgml/charset.sgml    26 Feb 2005 20:46:03 -0000
***************
*** 285,291 ****
     allows you to store text in a variety of character sets, including
     single-byte character sets such as the ISO 8859 series and
     multiple-byte character sets such as <acronym>EUC</> (Extended Unix
!    Code), Unicode, and Mule internal code.  All character sets can be
     used transparently throughout the server.  (If you use extension
     functions from other sources, it depends on whether they wrote
     their code correctly.)  The default character set is selected while
--- 285,291 ----
     allows you to store text in a variety of character sets, including
     single-byte character sets such as the ISO 8859 series and
     multiple-byte character sets such as <acronym>EUC</> (Extended Unix
!    Code), UTF8, and Mule internal code.  All character sets can be
     used transparently throughout the server.  (If you use extension
     functions from other sources, it depends on whether they wrote
     their code correctly.)  The default character set is selected while
***************
*** 339,346 ****
           <entry>Taiwan <acronym>EUC</acronym></entry>
          </row>
          <row>
!          <entry><literal>UNICODE</literal></entry>
!          <entry>Unicode (<acronym>UTF</acronym>-8)</entry>
          </row>
          <row>
           <entry><literal>MULE_INTERNAL</literal></entry>
--- 339,346 ----
           <entry>Taiwan <acronym>EUC</acronym></entry>
          </row>
          <row>
!          <entry><literal>UTF8</literal></entry>
!          <entry>UTF8 (Unicode, 8-bit)</entry>
          </row>
          <row>
           <entry><literal>MULE_INTERNAL</literal></entry>
***************
*** 407,413 ****
           <entry><acronym>KOI</acronym>8-R(U)</entry>
          </row>
          <row>
!          <entry><literal>ALT</literal></entry>
           <entry>Windows CP866</entry>
          </row>
          <row>
--- 407,413 ----
           <entry><acronym>KOI</acronym>8-R(U)</entry>
          </row>
          <row>
!          <entry><literal>WIN866</literal></entry>
           <entry>Windows CP866</entry>
          </row>
          <row>
***************
*** 419,425 ****
           <entry>Windows CP1250</entry>
          </row>
          <row>
!          <entry><literal>WIN</literal></entry>
           <entry>Windows CP1251</entry>
          </row>
          <row>
--- 419,425 ----
           <entry>Windows CP1250</entry>
          </row>
          <row>
!          <entry><literal>WIN1251</literal></entry>
           <entry>Windows CP1251</entry>
          </row>
          <row>
***************
*** 427,434 ****
           <entry>Windows CP1256 (Arabic)</entry>
          </row>
          <row>
!          <entry><literal>TCVN</literal></entry>
!          <entry><acronym>TCVN</>-5712/Windows CP1258 (Vietnamese)</entry>
          </row>
         </tbody>
        </tgroup>
--- 427,434 ----
           <entry>Windows CP1256 (Arabic)</entry>
          </row>
          <row>
!          <entry><literal>WIN1258</literal></entry>
!          <entry>Windows CP1258 (Vietnamese)/<acronym>TCVN</>-5712</entry>
          </row>
         </tbody>
        </tgroup>
***************
*** 504,510 ****
   regression    | t-ishii | SQL_ASCII
   template1     | t-ishii | EUC_JP
   test          | t-ishii | EUC_JP
!  unicode       | t-ishii | UNICODE
  (9 rows)
  </screen>
      </para>
--- 504,510 ----
   regression    | t-ishii | SQL_ASCII
   template1     | t-ishii | EUC_JP
   test          | t-ishii | EUC_JP
!  utf8          | t-ishii | UTF8
  (9 rows)
  </screen>
      </para>
***************
*** 561,686 ****
         <tbody>
          <row>
           <entry><literal>SQL_ASCII</literal></entry>
!          <entry><literal>SQL_ASCII</literal>, <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>EUC_JP</literal></entry>
           <entry><literal>EUC_JP</literal>, <literal>SJIS</literal>,
!          <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>EUC_CN</literal></entry>
!          <entry><literal>EUC_CN</literal>, <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>EUC_KR</literal></entry>
!          <entry><literal>EUC_KR</literal>, <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>JOHAB</literal></entry>
!          <entry><literal>JOHAB</literal>, <literal>UNICODE</literal>
           </entry>
          </row>
          <row>
           <entry><literal>EUC_TW</literal></entry>
           <entry><literal>EUC_TW</literal>, <literal>BIG5</literal>,
!          <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN1</literal></entry>
!          <entry><literal>LATIN1</literal>, <literal>UNICODE</literal>
           <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN2</literal></entry>
           <entry><literal>LATIN2</literal>, <literal>WIN1250</literal>,
!          <literal>UNICODE</literal>,
           <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN3</literal></entry>
!          <entry><literal>LATIN3</literal>, <literal>UNICODE</literal>,
           <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN4</literal></entry>
!          <entry><literal>LATIN4</literal>, <literal>UNICODE</literal>,
           <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN5</literal></entry>
!          <entry><literal>LATIN5</literal>, <literal>UNICODE</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN6</literal></entry>
!          <entry><literal>LATIN6</literal>, <literal>UNICODE</literal>,
           <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN7</literal></entry>
!          <entry><literal>LATIN7</literal>, <literal>UNICODE</literal>,
           <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN8</literal></entry>
!          <entry><literal>LATIN8</literal>, <literal>UNICODE</literal>,
           <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN9</literal></entry>
!          <entry><literal>LATIN9</literal>, <literal>UNICODE</literal>,
           <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN10</literal></entry>
!          <entry><literal>LATIN10</literal>, <literal>UNICODE</literal>,
           <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>ISO_8859_5</literal></entry>
           <entry><literal>ISO_8859_5</literal>,
!          <literal>UNICODE</literal>,
           <literal>MULE_INTERNAL</literal>,
!          <literal>WIN</literal>,
!          <literal>ALT</literal>,
           <literal>KOI8</literal>
           </entry>
          </row>
          <row>
           <entry><literal>ISO_8859_6</literal></entry>
           <entry><literal>ISO_8859_6</literal>,
!          <literal>UNICODE</literal>
           </entry>
          </row>
          <row>
           <entry><literal>ISO_8859_7</literal></entry>
           <entry><literal>ISO_8859_7</literal>,
!          <literal>UNICODE</literal>
           </entry>
          </row>
          <row>
           <entry><literal>ISO_8859_8</literal></entry>
           <entry><literal>ISO_8859_8</literal>,
!          <literal>UNICODE</literal>
           </entry>
          </row>
          <row>
!          <entry><literal>UNICODE</literal></entry>
           <entry>
           <literal>EUC_JP</literal>, <literal>SJIS</literal>,
           <literal>EUC_KR</literal>, <literal>UHC</literal>, <literal>JOHAB</literal>,
--- 561,686 ----
         <tbody>
          <row>
           <entry><literal>SQL_ASCII</literal></entry>
!          <entry><literal>SQL_ASCII</literal>, <literal>UTF8</literal>, <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>EUC_JP</literal></entry>
           <entry><literal>EUC_JP</literal>, <literal>SJIS</literal>,
!          <literal>UTF8</literal>, <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>EUC_CN</literal></entry>
!          <entry><literal>EUC_CN</literal>, <literal>UTF8</literal>, <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>EUC_KR</literal></entry>
!          <entry><literal>EUC_KR</literal>, <literal>UTF8</literal>, <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>JOHAB</literal></entry>
!          <entry><literal>JOHAB</literal>, <literal>UTF8</literal>
           </entry>
          </row>
          <row>
           <entry><literal>EUC_TW</literal></entry>
           <entry><literal>EUC_TW</literal>, <literal>BIG5</literal>,
!          <literal>UTF8</literal>, <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN1</literal></entry>
!          <entry><literal>LATIN1</literal>, <literal>UTF8</literal>
           <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN2</literal></entry>
           <entry><literal>LATIN2</literal>, <literal>WIN1250</literal>,
!          <literal>UTF8</literal>,
           <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN3</literal></entry>
!          <entry><literal>LATIN3</literal>, <literal>UTF8</literal>,
           <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN4</literal></entry>
!          <entry><literal>LATIN4</literal>, <literal>UTF8</literal>,
           <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN5</literal></entry>
!          <entry><literal>LATIN5</literal>, <literal>UTF8</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN6</literal></entry>
!          <entry><literal>LATIN6</literal>, <literal>UTF8</literal>,
           <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN7</literal></entry>
!          <entry><literal>LATIN7</literal>, <literal>UTF8</literal>,
           <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN8</literal></entry>
!          <entry><literal>LATIN8</literal>, <literal>UTF8</literal>,
           <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN9</literal></entry>
!          <entry><literal>LATIN9</literal>, <literal>UTF8</literal>,
           <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>LATIN10</literal></entry>
!          <entry><literal>LATIN10</literal>, <literal>UTF8</literal>,
           <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>ISO_8859_5</literal></entry>
           <entry><literal>ISO_8859_5</literal>,
!          <literal>UTF8</literal>,
           <literal>MULE_INTERNAL</literal>,
!          <literal>WIN1251</literal>,
!          <literal>WIN866</literal>,
           <literal>KOI8</literal>
           </entry>
          </row>
          <row>
           <entry><literal>ISO_8859_6</literal></entry>
           <entry><literal>ISO_8859_6</literal>,
!          <literal>UTF8</literal>
           </entry>
          </row>
          <row>
           <entry><literal>ISO_8859_7</literal></entry>
           <entry><literal>ISO_8859_7</literal>,
!          <literal>UTF8</literal>
           </entry>
          </row>
          <row>
           <entry><literal>ISO_8859_8</literal></entry>
           <entry><literal>ISO_8859_8</literal>,
!          <literal>UTF8</literal>
           </entry>
          </row>
          <row>
!          <entry><literal>UTF8</literal></entry>
           <entry>
           <literal>EUC_JP</literal>, <literal>SJIS</literal>,
           <literal>EUC_KR</literal>, <literal>UHC</literal>, <literal>JOHAB</literal>,
***************
*** 691,700 ****
           <literal>ISO_8859_6</literal>,
           <literal>ISO_8859_7</literal>,
           <literal>ISO_8859_8</literal>,
!          <literal>WIN</literal>, <literal>ALT</literal>,
           <literal>KOI8</literal>,
           <literal>WIN1256</literal>,
!          <literal>TCVN</literal>,
           <literal>WIN874</literal>,
           <literal>GB18030</literal>,
           <literal>WIN1250</literal>
--- 691,700 ----
           <literal>ISO_8859_6</literal>,
           <literal>ISO_8859_7</literal>,
           <literal>ISO_8859_8</literal>,
!          <literal>WIN1251</literal>, <literal>WIN866</literal>,
           <literal>KOI8</literal>,
           <literal>WIN1256</literal>,
!          <literal>WIN1258</literal>,
           <literal>WIN874</literal>,
           <literal>GB18030</literal>,
           <literal>WIN1250</literal>
***************
*** 704,756 ****
           <entry><literal>MULE_INTERNAL</literal></entry>
           <entry><literal>EUC_JP</literal>, <literal>SJIS</literal>, <literal>EUC_KR</literal>,
<literal>EUC_CN</literal>, 
            <literal>EUC_TW</literal>, <literal>BIG5</literal>, <literal>LATIN1</literal> to <literal>LATIN5</literal>,

!           <literal>WIN</literal>, <literal>ALT</literal>,
           <literal>WIN1250</literal>,
            <literal>BIG5</literal>, <literal>ISO_8859_5</literal>, <literal>KOI8</literal></entry>
          </row>
          <row>
           <entry><literal>KOI8</literal></entry>
!          <entry><literal>ISO_8859_5</literal>, <literal>WIN</literal>,
!          <literal>ALT</literal>, <literal>KOI8</literal>,
!          <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
!          <entry><literal>ALT</literal></entry>
!          <entry><literal>ISO_8859_5</literal>, <literal>WIN</literal>,
!          <literal>ALT</literal>, <literal>KOI8</literal>,
!          <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>WIN874</literal></entry>
           <entry><literal>WIN874</literal>,
!          <literal>UNICODE</literal>
           </entry>
          </row>
          <row>
           <entry><literal>WIN1250</literal></entry>
           <entry><literal>LATIN2</literal>, <literal>WIN1250</literal>,
!          <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
!          <entry><literal>WIN</literal></entry>
!          <entry><literal>ISO_8859_5</literal>, <literal>WIN</literal>,
!          <literal>ALT</literal>, <literal>KOI8</literal>,
!          <literal>UNICODE</literal>, <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>WIN1256</literal></entry>
           <entry><literal>WIN1256</literal>,
!          <literal>UNICODE</literal>
           </entry>
          </row>
          <row>
!          <entry><literal>TCVN</literal></entry>
!          <entry><literal>TCVN</literal>,
!          <literal>UNICODE</literal>
           </entry>
          </row>
         </tbody>
--- 704,756 ----
           <entry><literal>MULE_INTERNAL</literal></entry>
           <entry><literal>EUC_JP</literal>, <literal>SJIS</literal>, <literal>EUC_KR</literal>,
<literal>EUC_CN</literal>, 
            <literal>EUC_TW</literal>, <literal>BIG5</literal>, <literal>LATIN1</literal> to <literal>LATIN5</literal>,

!           <literal>WIN1251</literal>, <literal>WIN866</literal>,
           <literal>WIN1250</literal>,
            <literal>BIG5</literal>, <literal>ISO_8859_5</literal>, <literal>KOI8</literal></entry>
          </row>
          <row>
           <entry><literal>KOI8</literal></entry>
!          <entry><literal>ISO_8859_5</literal>, <literal>WIN1251</literal>,
!          <literal>WIN866</literal>, <literal>KOI8</literal>,
!          <literal>UTF8</literal>, <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
!          <entry><literal>WIN866</literal></entry>
!          <entry><literal>ISO_8859_5</literal>, <literal>WIN1251</literal>,
!          <literal>WIN866</literal>, <literal>KOI8</literal>,
!          <literal>UTF8</literal>, <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>WIN874</literal></entry>
           <entry><literal>WIN874</literal>,
!          <literal>UTF8</literal>
           </entry>
          </row>
          <row>
           <entry><literal>WIN1250</literal></entry>
           <entry><literal>LATIN2</literal>, <literal>WIN1250</literal>,
!          <literal>UTF8</literal>, <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
!          <entry><literal>WIN1251</literal></entry>
!          <entry><literal>ISO_8859_5</literal>, <literal>WIN1251</literal>,
!          <literal>WIN866</literal>, <literal>KOI8</literal>,
!          <literal>UTF8</literal>, <literal>MULE_INTERNAL</literal>
           </entry>
          </row>
          <row>
           <entry><literal>WIN1256</literal></entry>
           <entry><literal>WIN1256</literal>,
!          <literal>UTF8</literal>
           </entry>
          </row>
          <row>
!          <entry><literal>WIN1258</literal></entry>
!          <entry><literal>WIN1258</literal>,
!          <literal>UTF8</literal>
           </entry>
          </row>
         </tbody>
Index: doc/src/sgml/func.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/func.sgml,v
retrieving revision 1.238
diff -c -c -r1.238 func.sgml
*** doc/src/sgml/func.sgml    11 Feb 2005 04:31:54 -0000    1.238
--- doc/src/sgml/func.sgml    26 Feb 2005 20:46:11 -0000
***************
*** 934,940 ****
          names.
         </entry>
         <entry><literal>convert('PostgreSQL' using iso_8859_1_to_utf_8)</literal></entry>
!        <entry><literal>'PostgreSQL'</literal> in Unicode (UTF-8) encoding</entry>
        </row>

        <row>
--- 934,940 ----
          names.
         </entry>
         <entry><literal>convert('PostgreSQL' using iso_8859_1_to_utf_8)</literal></entry>
!        <entry><literal>'PostgreSQL'</literal> in UTF8 (Unicode, 8-bit) encoding</entry>
        </row>

        <row>
***************
*** 1105,1112 ****
          <parameter>src_encoding</parameter> is omitted, database
          encoding is assumed.
         </entry>
!        <entry><literal>convert( 'text_in_unicode', 'UNICODE', 'LATIN1')</literal></entry>
!        <entry><literal>text_in_unicode</literal> represented in ISO 8859-1 encoding</entry>
        </row>

        <row>
--- 1105,1112 ----
          <parameter>src_encoding</parameter> is omitted, database
          encoding is assumed.
         </entry>
!        <entry><literal>convert( 'text_in_utf8', 'UTF8', 'LATIN1')</literal></entry>
!        <entry><literal>text_in_utf8</literal> represented in ISO 8859-1 encoding</entry>
        </row>

        <row>
***************
*** 1423,1429 ****
        <row>
         <entry><literal>ascii_to_utf_8</literal></entry>
         <entry><literal>SQL_ASCII</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
--- 1423,1429 ----
        <row>
         <entry><literal>ascii_to_utf_8</literal></entry>
         <entry><literal>SQL_ASCII</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
***************
*** 1441,1447 ****
        <row>
         <entry><literal>big5_to_utf_8</literal></entry>
         <entry><literal>BIG5</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
--- 1441,1447 ----
        <row>
         <entry><literal>big5_to_utf_8</literal></entry>
         <entry><literal>BIG5</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
***************
*** 1453,1459 ****
        <row>
         <entry><literal>euc_cn_to_utf_8</literal></entry>
         <entry><literal>EUC_CN</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
--- 1453,1459 ----
        <row>
         <entry><literal>euc_cn_to_utf_8</literal></entry>
         <entry><literal>EUC_CN</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
***************
*** 1471,1477 ****
        <row>
         <entry><literal>euc_jp_to_utf_8</literal></entry>
         <entry><literal>EUC_JP</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
--- 1471,1477 ----
        <row>
         <entry><literal>euc_jp_to_utf_8</literal></entry>
         <entry><literal>EUC_JP</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
***************
*** 1483,1489 ****
        <row>
         <entry><literal>euc_kr_to_utf_8</literal></entry>
         <entry><literal>EUC_KR</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
--- 1483,1489 ----
        <row>
         <entry><literal>euc_kr_to_utf_8</literal></entry>
         <entry><literal>EUC_KR</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
***************
*** 1501,1549 ****
        <row>
         <entry><literal>euc_tw_to_utf_8</literal></entry>
         <entry><literal>EUC_TW</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>gb18030_to_utf_8</literal></entry>
         <entry><literal>GB18030</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>gbk_to_utf_8</literal></entry>
         <entry><literal>GBK</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_10_to_utf_8</literal></entry>
         <entry><literal>LATIN6</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_13_to_utf_8</literal></entry>
         <entry><literal>LATIN7</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_14_to_utf_8</literal></entry>
         <entry><literal>LATIN8</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_15_to_utf_8</literal></entry>
         <entry><literal>LATIN9</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_16_to_utf_8</literal></entry>
         <entry><literal>LATIN10</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
--- 1501,1549 ----
        <row>
         <entry><literal>euc_tw_to_utf_8</literal></entry>
         <entry><literal>EUC_TW</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>gb18030_to_utf_8</literal></entry>
         <entry><literal>GB18030</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>gbk_to_utf_8</literal></entry>
         <entry><literal>GBK</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_10_to_utf_8</literal></entry>
         <entry><literal>LATIN6</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_13_to_utf_8</literal></entry>
         <entry><literal>LATIN7</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_14_to_utf_8</literal></entry>
         <entry><literal>LATIN8</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_15_to_utf_8</literal></entry>
         <entry><literal>LATIN9</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_16_to_utf_8</literal></entry>
         <entry><literal>LATIN10</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
***************
*** 1555,1561 ****
        <row>
         <entry><literal>iso_8859_1_to_utf_8</literal></entry>
         <entry><literal>LATIN1</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
--- 1555,1561 ----
        <row>
         <entry><literal>iso_8859_1_to_utf_8</literal></entry>
         <entry><literal>LATIN1</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
***************
*** 1567,1573 ****
        <row>
         <entry><literal>iso_8859_2_to_utf_8</literal></entry>
         <entry><literal>LATIN2</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
--- 1567,1573 ----
        <row>
         <entry><literal>iso_8859_2_to_utf_8</literal></entry>
         <entry><literal>LATIN2</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
***************
*** 1585,1591 ****
        <row>
         <entry><literal>iso_8859_3_to_utf_8</literal></entry>
         <entry><literal>LATIN3</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
--- 1585,1591 ----
        <row>
         <entry><literal>iso_8859_3_to_utf_8</literal></entry>
         <entry><literal>LATIN3</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
***************
*** 1597,1603 ****
        <row>
         <entry><literal>iso_8859_4_to_utf_8</literal></entry>
         <entry><literal>LATIN4</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
--- 1597,1603 ----
        <row>
         <entry><literal>iso_8859_4_to_utf_8</literal></entry>
         <entry><literal>LATIN4</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
***************
*** 1615,1663 ****
        <row>
         <entry><literal>iso_8859_5_to_utf_8</literal></entry>
         <entry><literal>ISO_8859_5</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_5_to_windows_1251</literal></entry>
         <entry><literal>ISO_8859_5</literal></entry>
!        <entry><literal>WIN</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_5_to_windows_866</literal></entry>
         <entry><literal>ISO_8859_5</literal></entry>
!        <entry><literal>ALT</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_6_to_utf_8</literal></entry>
         <entry><literal>ISO_8859_6</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_7_to_utf_8</literal></entry>
         <entry><literal>ISO_8859_7</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_8_to_utf_8</literal></entry>
         <entry><literal>ISO_8859_8</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_9_to_utf_8</literal></entry>
         <entry><literal>LATIN5</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>johab_to_utf_8</literal></entry>
         <entry><literal>JOHAB</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
--- 1615,1663 ----
        <row>
         <entry><literal>iso_8859_5_to_utf_8</literal></entry>
         <entry><literal>ISO_8859_5</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_5_to_windows_1251</literal></entry>
         <entry><literal>ISO_8859_5</literal></entry>
!        <entry><literal>WIN1251</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_5_to_windows_866</literal></entry>
         <entry><literal>ISO_8859_5</literal></entry>
!        <entry><literal>WIN866</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_6_to_utf_8</literal></entry>
         <entry><literal>ISO_8859_6</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_7_to_utf_8</literal></entry>
         <entry><literal>ISO_8859_7</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_8_to_utf_8</literal></entry>
         <entry><literal>ISO_8859_8</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>iso_8859_9_to_utf_8</literal></entry>
         <entry><literal>LATIN5</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>johab_to_utf_8</literal></entry>
         <entry><literal>JOHAB</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
***************
*** 1675,1693 ****
        <row>
         <entry><literal>koi8_r_to_utf_8</literal></entry>
         <entry><literal>KOI8</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>koi8_r_to_windows_1251</literal></entry>
         <entry><literal>KOI8</literal></entry>
!        <entry><literal>WIN</literal></entry>
        </row>

        <row>
         <entry><literal>koi8_r_to_windows_866</literal></entry>
         <entry><literal>KOI8</literal></entry>
!        <entry><literal>ALT</literal></entry>
        </row>

        <row>
--- 1675,1693 ----
        <row>
         <entry><literal>koi8_r_to_utf_8</literal></entry>
         <entry><literal>KOI8</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>koi8_r_to_windows_1251</literal></entry>
         <entry><literal>KOI8</literal></entry>
!        <entry><literal>WIN1251</literal></entry>
        </row>

        <row>
         <entry><literal>koi8_r_to_windows_866</literal></entry>
         <entry><literal>KOI8</literal></entry>
!        <entry><literal>WIN866</literal></entry>
        </row>

        <row>
***************
*** 1777,1789 ****
        <row>
         <entry><literal>mic_to_windows_1251</literal></entry>
         <entry><literal>MULE_INTERNAL</literal></entry>
!        <entry><literal>WIN</literal></entry>
        </row>

        <row>
         <entry><literal>mic_to_windows_866</literal></entry>
         <entry><literal>MULE_INTERNAL</literal></entry>
!        <entry><literal>ALT</literal></entry>
        </row>

        <row>
--- 1777,1789 ----
        <row>
         <entry><literal>mic_to_windows_1251</literal></entry>
         <entry><literal>MULE_INTERNAL</literal></entry>
!        <entry><literal>WIN1251</literal></entry>
        </row>

        <row>
         <entry><literal>mic_to_windows_866</literal></entry>
         <entry><literal>MULE_INTERNAL</literal></entry>
!        <entry><literal>WIN866</literal></entry>
        </row>

        <row>
***************
*** 1801,2010 ****
        <row>
         <entry><literal>sjis_to_utf_8</literal></entry>
         <entry><literal>SJIS</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>tcvn_to_utf_8</literal></entry>
!        <entry><literal>TCVN</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>uhc_to_utf_8</literal></entry>
         <entry><literal>UHC</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_ascii</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>SQL_ASCII</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_big5</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>BIG5</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_euc_cn</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>EUC_CN</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_euc_jp</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>EUC_JP</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_euc_kr</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>EUC_KR</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_euc_tw</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>EUC_TW</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_gb18030</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>GB18030</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_gbk</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>GBK</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_1</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>LATIN1</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_10</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>LATIN6</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_13</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>LATIN7</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_14</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>LATIN8</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_15</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>LATIN9</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_16</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>LATIN10</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_2</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>LATIN2</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_3</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>LATIN3</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_4</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>LATIN4</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_5</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>ISO_8859_5</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_6</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>ISO_8859_6</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_7</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>ISO_8859_7</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_8</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>ISO_8859_8</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_9</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>LATIN5</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_johab</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>JOHAB</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_koi8_r</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>KOI8</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_sjis</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>SJIS</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_tcvn</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
!        <entry><literal>TCVN</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_uhc</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>UHC</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_windows_1250</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>WIN1250</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_windows_1251</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
!        <entry><literal>WIN</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_windows_1256</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>WIN1256</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_windows_866</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
!        <entry><literal>ALT</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_windows_874</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
         <entry><literal>WIN874</literal></entry>
        </row>

--- 1801,2010 ----
        <row>
         <entry><literal>sjis_to_utf_8</literal></entry>
         <entry><literal>SJIS</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>tcvn_to_utf_8</literal></entry>
!        <entry><literal>WIN1258</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>uhc_to_utf_8</literal></entry>
         <entry><literal>UHC</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_ascii</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>SQL_ASCII</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_big5</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>BIG5</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_euc_cn</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>EUC_CN</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_euc_jp</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>EUC_JP</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_euc_kr</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>EUC_KR</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_euc_tw</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>EUC_TW</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_gb18030</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>GB18030</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_gbk</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>GBK</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_1</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>LATIN1</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_10</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>LATIN6</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_13</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>LATIN7</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_14</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>LATIN8</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_15</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>LATIN9</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_16</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>LATIN10</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_2</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>LATIN2</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_3</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>LATIN3</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_4</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>LATIN4</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_5</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>ISO_8859_5</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_6</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>ISO_8859_6</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_7</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>ISO_8859_7</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_8</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>ISO_8859_8</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_iso_8859_9</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>LATIN5</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_johab</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>JOHAB</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_koi8_r</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>KOI8</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_sjis</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>SJIS</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_tcvn</literal></entry>
!        <entry><literal>UTF8</literal></entry>
!        <entry><literal>WIN1258</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_uhc</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>UHC</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_windows_1250</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>WIN1250</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_windows_1251</literal></entry>
!        <entry><literal>UTF8</literal></entry>
!        <entry><literal>WIN1251</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_windows_1256</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>WIN1256</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_windows_866</literal></entry>
!        <entry><literal>UTF8</literal></entry>
!        <entry><literal>WIN866</literal></entry>
        </row>

        <row>
         <entry><literal>utf_8_to_windows_874</literal></entry>
!        <entry><literal>UTF8</literal></entry>
         <entry><literal>WIN874</literal></entry>
        </row>

***************
*** 2023,2101 ****
        <row>
         <entry><literal>windows_1250_to_utf_8</literal></entry>
         <entry><literal>WIN1250</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>windows_1251_to_iso_8859_5</literal></entry>
!        <entry><literal>WIN</literal></entry>
         <entry><literal>ISO_8859_5</literal></entry>
        </row>

        <row>
         <entry><literal>windows_1251_to_koi8_r</literal></entry>
!        <entry><literal>WIN</literal></entry>
         <entry><literal>KOI8</literal></entry>
        </row>

        <row>
         <entry><literal>windows_1251_to_mic</literal></entry>
!        <entry><literal>WIN</literal></entry>
         <entry><literal>MULE_INTERNAL</literal></entry>
        </row>

        <row>
         <entry><literal>windows_1251_to_utf_8</literal></entry>
!        <entry><literal>WIN</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>windows_1251_to_windows_866</literal></entry>
!        <entry><literal>WIN</literal></entry>
!        <entry><literal>ALT</literal></entry>
        </row>

        <row>
         <entry><literal>windows_1256_to_utf_8</literal></entry>
         <entry><literal>WIN1256</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>windows_866_to_iso_8859_5</literal></entry>
!        <entry><literal>ALT</literal></entry>
         <entry><literal>ISO_8859_5</literal></entry>
        </row>

        <row>
         <entry><literal>windows_866_to_koi8_r</literal></entry>
!        <entry><literal>ALT</literal></entry>
         <entry><literal>KOI8</literal></entry>
        </row>

        <row>
         <entry><literal>windows_866_to_mic</literal></entry>
!        <entry><literal>ALT</literal></entry>
         <entry><literal>MULE_INTERNAL</literal></entry>
        </row>

        <row>
         <entry><literal>windows_866_to_utf_8</literal></entry>
!        <entry><literal>ALT</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

        <row>
         <entry><literal>windows_866_to_windows_1251</literal></entry>
!        <entry><literal>ALT</literal></entry>
         <entry><literal>WIN</literal></entry>
        </row>

        <row>
         <entry><literal>windows_874_to_utf_8</literal></entry>
         <entry><literal>WIN874</literal></entry>
!        <entry><literal>UNICODE</literal></entry>
        </row>

       </tbody>
--- 2023,2101 ----
        <row>
         <entry><literal>windows_1250_to_utf_8</literal></entry>
         <entry><literal>WIN1250</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>windows_1251_to_iso_8859_5</literal></entry>
!        <entry><literal>WIN1251</literal></entry>
         <entry><literal>ISO_8859_5</literal></entry>
        </row>

        <row>
         <entry><literal>windows_1251_to_koi8_r</literal></entry>
!        <entry><literal>WIN1251</literal></entry>
         <entry><literal>KOI8</literal></entry>
        </row>

        <row>
         <entry><literal>windows_1251_to_mic</literal></entry>
!        <entry><literal>WIN1251</literal></entry>
         <entry><literal>MULE_INTERNAL</literal></entry>
        </row>

        <row>
         <entry><literal>windows_1251_to_utf_8</literal></entry>
!        <entry><literal>WIN1251</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>windows_1251_to_windows_866</literal></entry>
!        <entry><literal>WIN1251</literal></entry>
!        <entry><literal>WIN866</literal></entry>
        </row>

        <row>
         <entry><literal>windows_1256_to_utf_8</literal></entry>
         <entry><literal>WIN1256</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>windows_866_to_iso_8859_5</literal></entry>
!        <entry><literal>WIN866</literal></entry>
         <entry><literal>ISO_8859_5</literal></entry>
        </row>

        <row>
         <entry><literal>windows_866_to_koi8_r</literal></entry>
!        <entry><literal>WIN866</literal></entry>
         <entry><literal>KOI8</literal></entry>
        </row>

        <row>
         <entry><literal>windows_866_to_mic</literal></entry>
!        <entry><literal>WIN866</literal></entry>
         <entry><literal>MULE_INTERNAL</literal></entry>
        </row>

        <row>
         <entry><literal>windows_866_to_utf_8</literal></entry>
!        <entry><literal>WIN866</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

        <row>
         <entry><literal>windows_866_to_windows_1251</literal></entry>
!        <entry><literal>WIN866</literal></entry>
         <entry><literal>WIN</literal></entry>
        </row>

        <row>
         <entry><literal>windows_874_to_utf_8</literal></entry>
         <entry><literal>WIN874</literal></entry>
!        <entry><literal>UTF8</literal></entry>
        </row>

       </tbody>
***************
*** 3372,3378 ****
         <row>
         <entry> <literal>\u</><replaceable>wxyz</> </entry>
         <entry> (where <replaceable>wxyz</> is exactly four hexadecimal digits)
!        the Unicode character <literal>U+</><replaceable>wxyz</>
         in the local byte ordering </entry>
         </row>

--- 3372,3378 ----
         <row>
         <entry> <literal>\u</><replaceable>wxyz</> </entry>
         <entry> (where <replaceable>wxyz</> is exactly four hexadecimal digits)
!        the UTF16 (Unicode, 16-bit) character <literal>U+</><replaceable>wxyz</>
         in the local byte ordering </entry>
         </row>

Index: doc/src/sgml/ref/comment.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/ref/comment.sgml,v
retrieving revision 1.26
diff -c -c -r1.26 comment.sgml
*** doc/src/sgml/ref/comment.sgml    4 Jan 2005 00:39:53 -0000    1.26
--- doc/src/sgml/ref/comment.sgml    26 Feb 2005 20:46:12 -0000
***************
*** 195,201 ****
  COMMENT ON AGGREGATE my_aggregate (double precision) IS 'Computes sample variance';
  COMMENT ON CAST (text AS int4) IS 'Allow casts from text to int4';
  COMMENT ON COLUMN my_table.my_column IS 'Employee ID number';
! COMMENT ON CONVERSION my_conv IS 'Conversion to Unicode';
  COMMENT ON DATABASE my_database IS 'Development Database';
  COMMENT ON DOMAIN my_domain IS 'Email Address Domain';
  COMMENT ON FUNCTION my_function (timestamp) IS 'Returns Roman Numeral';
--- 195,201 ----
  COMMENT ON AGGREGATE my_aggregate (double precision) IS 'Computes sample variance';
  COMMENT ON CAST (text AS int4) IS 'Allow casts from text to int4';
  COMMENT ON COLUMN my_table.my_column IS 'Employee ID number';
! COMMENT ON CONVERSION my_conv IS 'Conversion to UTF8';
  COMMENT ON DATABASE my_database IS 'Development Database';
  COMMENT ON DOMAIN my_domain IS 'Email Address Domain';
  COMMENT ON FUNCTION my_function (timestamp) IS 'Returns Roman Numeral';
Index: doc/src/sgml/ref/create_conversion.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/ref/create_conversion.sgml,v
retrieving revision 1.14
diff -c -c -r1.14 create_conversion.sgml
*** doc/src/sgml/ref/create_conversion.sgml    29 Nov 2003 19:51:38 -0000    1.14
--- doc/src/sgml/ref/create_conversion.sgml    26 Feb 2005 20:46:12 -0000
***************
*** 136,145 ****
    <title>Examples</title>

    <para>
!    To create a conversion from encoding <literal>UNICODE</literal> to
     <literal>LATIN1</literal> using <function>myfunc</>:
  <programlisting>
! CREATE CONVERSION myconv FOR 'UNICODE' TO 'LATIN1' FROM myfunc;
  </programlisting>
    </para>
   </refsect1>
--- 136,145 ----
    <title>Examples</title>

    <para>
!    To create a conversion from encoding <literal>UTF8</literal> to
     <literal>LATIN1</literal> using <function>myfunc</>:
  <programlisting>
! CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;
  </programlisting>
    </para>
   </refsect1>
Index: src/backend/utils/adt/selfuncs.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/adt/selfuncs.c,v
retrieving revision 1.171
diff -c -c -r1.171 selfuncs.c
*** src/backend/utils/adt/selfuncs.c    1 Feb 2005 23:07:58 -0000    1.171
--- src/backend/utils/adt/selfuncs.c    26 Feb 2005 20:46:15 -0000
***************
*** 4035,4041 ****
   *
   * NOTE: at present this assumes we are in the C locale, so that simple
   * bytewise comparison applies.  However, we might be in a multibyte
!  * encoding such as UTF-8, so we do have to watch out for generating
   * invalid encoding sequences.
   */
  Const *
--- 4035,4041 ----
   *
   * NOTE: at present this assumes we are in the C locale, so that simple
   * bytewise comparison applies.  However, we might be in a multibyte
!  * encoding such as UTF8, so we do have to watch out for generating
   * invalid encoding sequences.
   */
  Const *
Index: src/backend/utils/mb/conv.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conv.c,v
retrieving revision 1.51
diff -c -c -r1.51 conv.c
*** src/backend/utils/mb/conv.c    31 Dec 2004 22:01:42 -0000    1.51
--- src/backend/utils/mb/conv.c    26 Feb 2005 20:46:15 -0000
***************
*** 303,309 ****

  /*
   * comparison routine for bsearch()
!  * this routine is intended for UTF-8 -> local code
   */
  static int
  compare1(const void *p1, const void *p2)
--- 303,309 ----

  /*
   * comparison routine for bsearch()
!  * this routine is intended for UTF8 -> local code
   */
  static int
  compare1(const void *p1, const void *p2)
***************
*** 318,324 ****

  /*
   * comparison routine for bsearch()
!  * this routine is intended for local code -> UTF-8
   */
  static int
  compare2(const void *p1, const void *p2)
--- 318,324 ----

  /*
   * comparison routine for bsearch()
!  * this routine is intended for local code -> UTF8
   */
  static int
  compare2(const void *p1, const void *p2)
***************
*** 332,340 ****
  }

  /*
!  * UTF-8 ---> local code
   *
!  * utf: input UTF-8 string. Its length is limited by "len" parameter
   *        or a null terminator.
   * iso: pointer to the output.
   * map: the conversion map.
--- 332,340 ----
  }

  /*
!  * UTF8 ---> local code
   *
!  * utf: input UTF8 string. Its length is limited by "len" parameter
   *        or a null terminator.
   * iso: pointer to the output.
   * map: the conversion map.
***************
*** 373,379 ****
          {
              ereport(WARNING,
                      (errcode(ERRCODE_UNTRANSLATABLE_CHARACTER),
!                   errmsg("ignoring unconvertible UTF-8 character 0x%04x",
                           iutf)));
              continue;
          }
--- 373,379 ----
          {
              ereport(WARNING,
                      (errcode(ERRCODE_UNTRANSLATABLE_CHARACTER),
!                   errmsg("ignoring unconvertible UTF8 character 0x%04x",
                           iutf)));
              continue;
          }
***************
*** 390,396 ****
  }

  /*
!  * local code ---> UTF-8
   */
  void
  LocalToUtf(unsigned char *iso, unsigned char *utf,
--- 390,396 ----
  }

  /*
!  * local code ---> UTF8
   */
  void
  LocalToUtf(unsigned char *iso, unsigned char *utf,
Index: src/backend/utils/mb/encnames.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/encnames.c,v
retrieving revision 1.22
diff -c -c -r1.22 encnames.c
*** src/backend/utils/mb/encnames.c    4 Dec 2004 18:19:31 -0000    1.22
--- src/backend/utils/mb/encnames.c    26 Feb 2005 20:46:15 -0000
***************
*** 27,33 ****
   * isalnum() chars only. It means ISO-8859-1, iso_8859-1 and Iso8859_1
   * are always converted to 'iso88591'. All must be lower case.
   *
!  * The table doesn't contain 'cs' aliases (like csISOLatin1). It's needful?
   *
   * Karel Zak, Aug 2001
   * ----------
--- 27,33 ----
   * isalnum() chars only. It means ISO-8859-1, iso_8859-1 and Iso8859_1
   * are always converted to 'iso88591'. All must be lower case.
   *
!  * The table doesn't contain 'cs' aliases (like csISOLatin1). It's needed?
   *
   * Karel Zak, Aug 2001
   * ----------
***************
*** 35,44 ****
  pg_encname    pg_encname_tbl[] =
  {
      {
!         "abc", PG_TCVN
!     },                            /* alias for TCVN */
      {
!         "alt", PG_ALT
      },                            /* IBM866 */
      {
          "big5", PG_BIG5
--- 35,44 ----
  pg_encname    pg_encname_tbl[] =
  {
      {
!         "abc", PG_WIN1258
!     },                            /* alias for WIN1258 */
      {
!         "alt", PG_WIN866
      },                            /* IBM866 */
      {
          "big5", PG_BIG5
***************
*** 166,188 ****
          "sqlascii", PG_SQL_ASCII
      },
      {
!         "tcvn", PG_TCVN
!     },                            /* TCVN; Vietnamese TCVN-5712 */
      {
!         "tcvn5712", PG_TCVN
!     },                            /* alias for TCVN */
      {
          "uhc", PG_UHC
      },                            /* UHC; Korean Windows CodePage 949 */
      {
          "unicode", PG_UTF8
!     },                            /* alias for UTF-8 */
      {
          "utf8", PG_UTF8
!     },                            /* UTF-8; RFC2279 */
      {
!         "vscii", PG_TCVN
!     },                            /* alias for TCVN */
      {
          "win", PG_WIN1251
      },                            /* _dirty_ alias for windows-1251
--- 166,191 ----
          "sqlascii", PG_SQL_ASCII
      },
      {
!         "tcvn", PG_WIN1258
!     },                            /* alias for WIN1258 */
      {
!         "tcvn5712", PG_WIN1258
!     },                            /* alias for WIN1258 */
      {
          "uhc", PG_UHC
      },                            /* UHC; Korean Windows CodePage 949 */
      {
          "unicode", PG_UTF8
!     },                            /* alias for UTF8 */
!     {
!         "utf-8", PG_UTF8
!     },                            /* UTF8; RFC2279 */
      {
          "utf8", PG_UTF8
!     },                            /* alias for UTF8 */
      {
!         "vscii", PG_WIN1258
!     },                            /* alias for WIN1258 */
      {
          "win", PG_WIN1251
      },                            /* _dirty_ alias for windows-1251
***************
*** 197,205 ****
          "win1256", PG_WIN1256
      },                            /* alias for Windows-1256 */
      {
!         "win1258", PG_TCVN
      },                            /* alias for Windows-1258 */
      {
          "win874", PG_WIN874
      },                            /* alias for Windows-874 */
      {
--- 200,211 ----
          "win1256", PG_WIN1256
      },                            /* alias for Windows-1256 */
      {
!         "win1258", PG_WIN1258
      },                            /* alias for Windows-1258 */
      {
+         "win866", PG_WIN866
+     },                            /* IBM866 */
+     {
          "win874", PG_WIN874
      },                            /* alias for Windows-874 */
      {
***************
*** 224,232 ****
          "windows1256", PG_WIN1256
      },                            /* Windows-1256; Microsoft */
      {
!         "windows1258", PG_TCVN
      },                            /* Windows-1258; Microsoft */
      {
          "windows874", PG_WIN874
      },                            /* Windows-874; Microsoft */
      {
--- 230,241 ----
          "windows1256", PG_WIN1256
      },                            /* Windows-1256; Microsoft */
      {
!         "windows1258", PG_WIN1258
      },                            /* Windows-1258; Microsoft */
      {
+         "windows866", PG_WIN866
+     },                            /* IBM866 */
+     {
          "windows874", PG_WIN874
      },                            /* Windows-874; Microsoft */
      {
***************
*** 275,281 ****
          "JOHAB", PG_JOHAB
      },
      {
!         "UNICODE", PG_UTF8
      },
      {
          "MULE_INTERNAL", PG_MULE_INTERNAL
--- 284,290 ----
          "JOHAB", PG_JOHAB
      },
      {
!         "UTF8", PG_UTF8
      },
      {
          "MULE_INTERNAL", PG_MULE_INTERNAL
***************
*** 314,332 ****
          "WIN1256", PG_WIN1256
      },
      {
!         "TCVN", PG_TCVN
      },
      {
!         "WIN874", PG_WIN874
      },
      {
!         "KOI8", PG_KOI8R
      },
      {
!         "WIN", PG_WIN1251
      },
      {
!         "ALT", PG_ALT
      },
      {
          "ISO_8859_5", PG_ISO_8859_5
--- 323,341 ----
          "WIN1256", PG_WIN1256
      },
      {
!         "WIN1258", PG_WIN1258
      },
      {
!         "WIN866", PG_WIN866
      },
      {
!         "WIN874", PG_WIN874
      },
      {
!         "KOI8", PG_KOI8R
      },
      {
!         "WIN1251", PG_WIN1251
      },
      {
          "ISO_8859_5", PG_ISO_8859_5
Index: src/backend/utils/mb/mbutils.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/mbutils.c,v
retrieving revision 1.48
diff -c -c -r1.48 mbutils.c
*** src/backend/utils/mb/mbutils.c    13 Oct 2004 01:25:12 -0000    1.48
--- src/backend/utils/mb/mbutils.c    26 Feb 2005 20:46:15 -0000
***************
*** 222,228 ****
   *
   * XXX We assume that storage for converted result is 4-to-1 growth in
   * the worst case. The rate for currently supported encoding pares are within 3
!  * (SJIS JIS X0201 half width kanna -> UTF-8 is the worst case).
   * So "4" should be enough for the moment.
   */
  unsigned char *
--- 222,228 ----
   *
   * XXX We assume that storage for converted result is 4-to-1 growth in
   * the worst case. The rate for currently supported encoding pares are within 3
!  * (SJIS JIS X0201 half width kanna -> UTF8 is the worst case).
   * So "4" should be enough for the moment.
   */
  unsigned char *
Index: src/backend/utils/mb/wchar.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/wchar.c,v
retrieving revision 1.40
diff -c -c -r1.40 wchar.c
*** src/backend/utils/mb/wchar.c    3 Dec 2004 01:20:20 -0000    1.40
--- src/backend/utils/mb/wchar.c    26 Feb 2005 20:46:15 -0000
***************
*** 344,350 ****
  }

  /*
!  * convert UTF-8 string to pg_wchar (UCS-2)
   * caller should allocate enough space for "to"
   * len: length of from.
   * "from" not necessarily null terminated.
--- 344,350 ----
  }

  /*
!  * convert UTF8 string to pg_wchar (UCS-2)
   * caller should allocate enough space for "to"
   * len: length of from.
   * "from" not necessarily null terminated.
***************
*** 395,401 ****
  }

  /*
!  * returns the byte length of a UTF-8 word pointed to by s
   */
  int
  pg_utf_mblen(const unsigned char *s)
--- 395,401 ----
  }

  /*
!  * returns the byte length of a UTF8 word pointed to by s
   */
  int
  pg_utf_mblen(const unsigned char *s)
***************
*** 822,828 ****

      while (len > 0 && *mbstr)
      {
!         /* special UTF-8 check */
          if (encoding == PG_UTF8 && (*mbstr & 0xf8) == 0xf0)
          {
              if (noError)
--- 822,828 ----

      while (len > 0 && *mbstr)
      {
!         /* special UTF8 check */
          if (encoding == PG_UTF8 && (*mbstr & 0xf8) == 0xf0)
          {
              if (noError)
Index: src/backend/utils/mb/conversion_procs/cyrillic_and_mic/cyrillic_and_mic.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/cyrillic_and_mic/cyrillic_and_mic.c,v
retrieving revision 1.9
diff -c -c -r1.9 cyrillic_and_mic.c
*** src/backend/utils/mb/conversion_procs/cyrillic_and_mic/cyrillic_and_mic.c    31 Dec 2004 22:01:48 -0000    1.9
--- src/backend/utils/mb/conversion_procs/cyrillic_and_mic/cyrillic_and_mic.c    26 Feb 2005 20:46:16 -0000
***************
*** 182,188 ****
      unsigned char *dest = PG_GETARG_CSTRING(3);
      int            len = PG_GETARG_INT32(4);

!     Assert(PG_GETARG_INT32(0) == PG_ALT);
      Assert(PG_GETARG_INT32(1) == PG_MULE_INTERNAL);
      Assert(len >= 0);

--- 182,188 ----
      unsigned char *dest = PG_GETARG_CSTRING(3);
      int            len = PG_GETARG_INT32(4);

!     Assert(PG_GETARG_INT32(0) == PG_WIN866);
      Assert(PG_GETARG_INT32(1) == PG_MULE_INTERNAL);
      Assert(len >= 0);

***************
*** 199,205 ****
      int            len = PG_GETARG_INT32(4);

      Assert(PG_GETARG_INT32(0) == PG_MULE_INTERNAL);
!     Assert(PG_GETARG_INT32(1) == PG_ALT);
      Assert(len >= 0);

      mic2alt(src, dest, len);
--- 199,205 ----
      int            len = PG_GETARG_INT32(4);

      Assert(PG_GETARG_INT32(0) == PG_MULE_INTERNAL);
!     Assert(PG_GETARG_INT32(1) == PG_WIN866);
      Assert(len >= 0);

      mic2alt(src, dest, len);
***************
*** 256,262 ****
      unsigned char *buf;

      Assert(PG_GETARG_INT32(0) == PG_KOI8R);
!     Assert(PG_GETARG_INT32(1) == PG_ALT);
      Assert(len >= 0);

      buf = palloc(len * ENCODING_GROWTH_RATE);
--- 256,262 ----
      unsigned char *buf;

      Assert(PG_GETARG_INT32(0) == PG_KOI8R);
!     Assert(PG_GETARG_INT32(1) == PG_WIN866);
      Assert(len >= 0);

      buf = palloc(len * ENCODING_GROWTH_RATE);
***************
*** 275,281 ****
      int            len = PG_GETARG_INT32(4);
      unsigned char *buf;

!     Assert(PG_GETARG_INT32(0) == PG_ALT);
      Assert(PG_GETARG_INT32(1) == PG_KOI8R);
      Assert(len >= 0);

--- 275,281 ----
      int            len = PG_GETARG_INT32(4);
      unsigned char *buf;

!     Assert(PG_GETARG_INT32(0) == PG_WIN866);
      Assert(PG_GETARG_INT32(1) == PG_KOI8R);
      Assert(len >= 0);

***************
*** 295,301 ****
      int            len = PG_GETARG_INT32(4);
      unsigned char *buf;

!     Assert(PG_GETARG_INT32(0) == PG_ALT);
      Assert(PG_GETARG_INT32(1) == PG_WIN1251);
      Assert(len >= 0);

--- 295,301 ----
      int            len = PG_GETARG_INT32(4);
      unsigned char *buf;

!     Assert(PG_GETARG_INT32(0) == PG_WIN866);
      Assert(PG_GETARG_INT32(1) == PG_WIN1251);
      Assert(len >= 0);

***************
*** 316,322 ****
      unsigned char *buf;

      Assert(PG_GETARG_INT32(0) == PG_WIN1251);
!     Assert(PG_GETARG_INT32(1) == PG_ALT);
      Assert(len >= 0);

      buf = palloc(len * ENCODING_GROWTH_RATE);
--- 316,322 ----
      unsigned char *buf;

      Assert(PG_GETARG_INT32(0) == PG_WIN1251);
!     Assert(PG_GETARG_INT32(1) == PG_WIN866);
      Assert(len >= 0);

      buf = palloc(len * ENCODING_GROWTH_RATE);
***************
*** 416,422 ****
      unsigned char *buf;

      Assert(PG_GETARG_INT32(0) == PG_ISO_8859_5);
!     Assert(PG_GETARG_INT32(1) == PG_ALT);
      Assert(len >= 0);

      buf = palloc(len * ENCODING_GROWTH_RATE);
--- 416,422 ----
      unsigned char *buf;

      Assert(PG_GETARG_INT32(0) == PG_ISO_8859_5);
!     Assert(PG_GETARG_INT32(1) == PG_WIN866);
      Assert(len >= 0);

      buf = palloc(len * ENCODING_GROWTH_RATE);
***************
*** 435,441 ****
      int            len = PG_GETARG_INT32(4);
      unsigned char *buf;

!     Assert(PG_GETARG_INT32(0) == PG_ALT);
      Assert(PG_GETARG_INT32(1) == PG_ISO_8859_5);
      Assert(len >= 0);

--- 435,441 ----
      int            len = PG_GETARG_INT32(4);
      unsigned char *buf;

!     Assert(PG_GETARG_INT32(0) == PG_WIN866);
      Assert(PG_GETARG_INT32(1) == PG_ISO_8859_5);
      Assert(len >= 0);

Index: src/backend/utils/mb/conversion_procs/utf8_and_ascii/utf8_and_ascii.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_ascii/utf8_and_ascii.c,v
retrieving revision 1.9
diff -c -c -r1.9 utf8_and_ascii.c
*** src/backend/utils/mb/conversion_procs/utf8_and_ascii/utf8_and_ascii.c    31 Dec 2004 22:02:11 -0000    1.9
--- src/backend/utils/mb/conversion_procs/utf8_and_ascii/utf8_and_ascii.c    26 Feb 2005 20:46:16 -0000
***************
*** 1,6 ****
  /*-------------------------------------------------------------------------
   *
!  *      ASCII <--> UTF-8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
--- 1,6 ----
  /*-------------------------------------------------------------------------
   *
!  *      ASCII <--> UTF8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
Index: src/backend/utils/mb/conversion_procs/utf8_and_big5/utf8_and_big5.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_big5/utf8_and_big5.c,v
retrieving revision 1.9
diff -c -c -r1.9 utf8_and_big5.c
*** src/backend/utils/mb/conversion_procs/utf8_and_big5/utf8_and_big5.c    31 Dec 2004 22:02:13 -0000    1.9
--- src/backend/utils/mb/conversion_procs/utf8_and_big5/utf8_and_big5.c    26 Feb 2005 20:46:16 -0000
***************
*** 1,6 ****
  /*-------------------------------------------------------------------------
   *
!  *      BIG5 <--> UTF-8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
--- 1,6 ----
  /*-------------------------------------------------------------------------
   *
!  *      BIG5 <--> UTF8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
Index: src/backend/utils/mb/conversion_procs/utf8_and_cyrillic/utf8_and_cyrillic.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_cyrillic/utf8_and_cyrillic.c,v
retrieving revision 1.9
diff -c -c -r1.9 utf8_and_cyrillic.c
*** src/backend/utils/mb/conversion_procs/utf8_and_cyrillic/utf8_and_cyrillic.c    31 Dec 2004 22:02:14 -0000    1.9
--- src/backend/utils/mb/conversion_procs/utf8_and_cyrillic/utf8_and_cyrillic.c    26 Feb 2005 20:46:16 -0000
***************
*** 122,128 ****
      int            len = PG_GETARG_INT32(4);

      Assert(PG_GETARG_INT32(0) == PG_UTF8);
!     Assert(PG_GETARG_INT32(1) == PG_ALT);
      Assert(len >= 0);

      UtfToLocal(src, dest, ULmap_ALT,
--- 122,128 ----
      int            len = PG_GETARG_INT32(4);

      Assert(PG_GETARG_INT32(0) == PG_UTF8);
!     Assert(PG_GETARG_INT32(1) == PG_WIN866);
      Assert(len >= 0);

      UtfToLocal(src, dest, ULmap_ALT,
***************
*** 138,149 ****
      unsigned char *dest = PG_GETARG_CSTRING(3);
      int            len = PG_GETARG_INT32(4);

!     Assert(PG_GETARG_INT32(0) == PG_ALT);
      Assert(PG_GETARG_INT32(1) == PG_UTF8);
      Assert(len >= 0);

      LocalToUtf(src, dest, LUmapALT,
!                sizeof(LUmapALT) / sizeof(pg_local_to_utf), PG_ALT, len);

      PG_RETURN_VOID();
  }
--- 138,149 ----
      unsigned char *dest = PG_GETARG_CSTRING(3);
      int            len = PG_GETARG_INT32(4);

!     Assert(PG_GETARG_INT32(0) == PG_WIN866);
      Assert(PG_GETARG_INT32(1) == PG_UTF8);
      Assert(len >= 0);

      LocalToUtf(src, dest, LUmapALT,
!                sizeof(LUmapALT) / sizeof(pg_local_to_utf), PG_WIN866, len);

      PG_RETURN_VOID();
  }
Index: src/backend/utils/mb/conversion_procs/utf8_and_euc_cn/utf8_and_euc_cn.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_euc_cn/utf8_and_euc_cn.c,v
retrieving revision 1.9
diff -c -c -r1.9 utf8_and_euc_cn.c
*** src/backend/utils/mb/conversion_procs/utf8_and_euc_cn/utf8_and_euc_cn.c    31 Dec 2004 22:02:16 -0000    1.9
--- src/backend/utils/mb/conversion_procs/utf8_and_euc_cn/utf8_and_euc_cn.c    26 Feb 2005 20:46:16 -0000
***************
*** 1,6 ****
  /*-------------------------------------------------------------------------
   *
!  *      EUC_CN <--> UTF-8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
--- 1,6 ----
  /*-------------------------------------------------------------------------
   *
!  *      EUC_CN <--> UTF8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
Index: src/backend/utils/mb/conversion_procs/utf8_and_euc_jp/utf8_and_euc_jp.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_euc_jp/utf8_and_euc_jp.c,v
retrieving revision 1.9
diff -c -c -r1.9 utf8_and_euc_jp.c
*** src/backend/utils/mb/conversion_procs/utf8_and_euc_jp/utf8_and_euc_jp.c    31 Dec 2004 22:02:17 -0000    1.9
--- src/backend/utils/mb/conversion_procs/utf8_and_euc_jp/utf8_and_euc_jp.c    26 Feb 2005 20:46:16 -0000
***************
*** 1,6 ****
  /*-------------------------------------------------------------------------
   *
!  *      EUC_JP <--> UTF-8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
--- 1,6 ----
  /*-------------------------------------------------------------------------
   *
!  *      EUC_JP <--> UTF8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
Index: src/backend/utils/mb/conversion_procs/utf8_and_euc_kr/utf8_and_euc_kr.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_euc_kr/utf8_and_euc_kr.c,v
retrieving revision 1.9
diff -c -c -r1.9 utf8_and_euc_kr.c
*** src/backend/utils/mb/conversion_procs/utf8_and_euc_kr/utf8_and_euc_kr.c    31 Dec 2004 22:02:19 -0000    1.9
--- src/backend/utils/mb/conversion_procs/utf8_and_euc_kr/utf8_and_euc_kr.c    26 Feb 2005 20:46:16 -0000
***************
*** 1,6 ****
  /*-------------------------------------------------------------------------
   *
!  *      EUC_KR <--> UTF-8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
--- 1,6 ----
  /*-------------------------------------------------------------------------
   *
!  *      EUC_KR <--> UTF8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
Index: src/backend/utils/mb/conversion_procs/utf8_and_euc_tw/utf8_and_euc_tw.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_euc_tw/utf8_and_euc_tw.c,v
retrieving revision 1.9
diff -c -c -r1.9 utf8_and_euc_tw.c
*** src/backend/utils/mb/conversion_procs/utf8_and_euc_tw/utf8_and_euc_tw.c    31 Dec 2004 22:02:20 -0000    1.9
--- src/backend/utils/mb/conversion_procs/utf8_and_euc_tw/utf8_and_euc_tw.c    26 Feb 2005 20:46:16 -0000
***************
*** 1,6 ****
  /*-------------------------------------------------------------------------
   *
!  *      EUC_TW <--> UTF-8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
--- 1,6 ----
  /*-------------------------------------------------------------------------
   *
!  *      EUC_TW <--> UTF8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
Index: src/backend/utils/mb/conversion_procs/utf8_and_gb18030/utf8_and_gb18030.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_gb18030/utf8_and_gb18030.c,v
retrieving revision 1.9
diff -c -c -r1.9 utf8_and_gb18030.c
*** src/backend/utils/mb/conversion_procs/utf8_and_gb18030/utf8_and_gb18030.c    31 Dec 2004 22:02:23 -0000    1.9
--- src/backend/utils/mb/conversion_procs/utf8_and_gb18030/utf8_and_gb18030.c    26 Feb 2005 20:46:16 -0000
***************
*** 1,6 ****
  /*-------------------------------------------------------------------------
   *
!  *      GB18030 <--> UTF-8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
--- 1,6 ----
  /*-------------------------------------------------------------------------
   *
!  *      GB18030 <--> UTF8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
Index: src/backend/utils/mb/conversion_procs/utf8_and_gbk/utf8_and_gbk.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_gbk/utf8_and_gbk.c,v
retrieving revision 1.9
diff -c -c -r1.9 utf8_and_gbk.c
*** src/backend/utils/mb/conversion_procs/utf8_and_gbk/utf8_and_gbk.c    31 Dec 2004 22:02:26 -0000    1.9
--- src/backend/utils/mb/conversion_procs/utf8_and_gbk/utf8_and_gbk.c    26 Feb 2005 20:46:16 -0000
***************
*** 1,6 ****
  /*-------------------------------------------------------------------------
   *
!  *      GBK <--> UTF-8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
--- 1,6 ----
  /*-------------------------------------------------------------------------
   *
!  *      GBK <--> UTF8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
Index: src/backend/utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c,v
retrieving revision 1.11
diff -c -c -r1.11 utf8_and_iso8859.c
*** src/backend/utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c    31 Dec 2004 22:02:27 -0000    1.11
--- src/backend/utils/mb/conversion_procs/utf8_and_iso8859/utf8_and_iso8859.c    26 Feb 2005 20:46:16 -0000
***************
*** 1,6 ****
  /*-------------------------------------------------------------------------
   *
!  *      ISO 8859 2-16 <--> UTF-8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
--- 1,6 ----
  /*-------------------------------------------------------------------------
   *
!  *      ISO 8859 2-16 <--> UTF8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
***************
*** 61,68 ****
  typedef struct
  {
      pg_enc        encoding;
!     pg_local_to_utf *map1;        /* to UTF-8 map name */
!     pg_utf_to_local *map2;        /* from UTF-8 map name */
      int            size1;            /* size of map1 */
      int            size2;            /* size of map2 */
  } pg_conv_map;
--- 61,68 ----
  typedef struct
  {
      pg_enc        encoding;
!     pg_local_to_utf *map1;        /* to UTF8 map name */
!     pg_utf_to_local *map2;        /* from UTF8 map name */
      int            size1;            /* size of map1 */
      int            size2;            /* size of map2 */
  } pg_conv_map;
***************
*** 74,80 ****
      {PG_EUC_KR},                /* EUC for Korean */
      {PG_EUC_TW},                /* EUC for Taiwan */
      {PG_JOHAB},                    /* EUC for Korean JOHAB */
!     {PG_UTF8},                    /* Unicode UTF-8 */
      {PG_MULE_INTERNAL},            /* Mule internal code */
      {PG_LATIN1},                /* ISO-8859-1 Latin 1 */
      {PG_LATIN2, LUmapISO8859_2, ULmapISO8859_2,
--- 74,80 ----
      {PG_EUC_KR},                /* EUC for Korean */
      {PG_EUC_TW},                /* EUC for Taiwan */
      {PG_JOHAB},                    /* EUC for Korean JOHAB */
!     {PG_UTF8},                    /* Unicode UTF8 */
      {PG_MULE_INTERNAL},            /* Mule internal code */
      {PG_LATIN1},                /* ISO-8859-1 Latin 1 */
      {PG_LATIN2, LUmapISO8859_2, ULmapISO8859_2,
***************
*** 105,115 ****
          sizeof(LUmapISO8859_16) / sizeof(pg_local_to_utf),
      sizeof(ULmapISO8859_16) / sizeof(pg_utf_to_local)}, /* ISO-8859-16 Latin 10 */
      {PG_WIN1256},                /* windows-1256 */
!     {PG_TCVN},                    /* TCVN (Windows-1258) */
      {PG_WIN874},                /* windows-874 */
      {PG_KOI8R},                    /* KOI8-R */
      {PG_WIN1251},                /* windows-1251 (was: WIN) */
!     {PG_ALT},                    /* (MS-DOS CP866) */
      {PG_ISO_8859_5, LUmapISO8859_5, ULmapISO8859_5,
          sizeof(LUmapISO8859_5) / sizeof(pg_local_to_utf),
      sizeof(ULmapISO8859_5) / sizeof(pg_utf_to_local)},    /* ISO-8859-5 */
--- 105,115 ----
          sizeof(LUmapISO8859_16) / sizeof(pg_local_to_utf),
      sizeof(ULmapISO8859_16) / sizeof(pg_utf_to_local)}, /* ISO-8859-16 Latin 10 */
      {PG_WIN1256},                /* windows-1256 */
!     {PG_WIN1258},                /* Windows-1258 */
      {PG_WIN874},                /* windows-874 */
      {PG_KOI8R},                    /* KOI8-R */
      {PG_WIN1251},                /* windows-1251 (was: WIN) */
!     {PG_WIN866},                /* (MS-DOS CP866) */
      {PG_ISO_8859_5, LUmapISO8859_5, ULmapISO8859_5,
          sizeof(LUmapISO8859_5) / sizeof(pg_local_to_utf),
      sizeof(ULmapISO8859_5) / sizeof(pg_utf_to_local)},    /* ISO-8859-5 */
Index: src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/utf8_and_iso8859_1.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/utf8_and_iso8859_1.c,v
retrieving revision 1.10
diff -c -c -r1.10 utf8_and_iso8859_1.c
*** src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/utf8_and_iso8859_1.c    31 Dec 2004 22:02:29 -0000    1.10
--- src/backend/utils/mb/conversion_procs/utf8_and_iso8859_1/utf8_and_iso8859_1.c    26 Feb 2005 20:46:16 -0000
***************
*** 1,6 ****
  /*-------------------------------------------------------------------------
   *
!  *      ISO8859_1 <--> UTF-8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
--- 1,6 ----
  /*-------------------------------------------------------------------------
   *
!  *      ISO8859_1 <--> UTF8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
***************
*** 84,90 ****
              len -= 2;
          }
          else if ((c & 0xe0) == 0xe0)
!             elog(ERROR, "could not convert UTF-8 character 0x%04x to ISO8859-1",
                   c);
          else
          {
--- 84,90 ----
              len -= 2;
          }
          else if ((c & 0xe0) == 0xe0)
!             elog(ERROR, "could not convert UTF8 character 0x%04x to ISO8859-1",
                   c);
          else
          {
Index: src/backend/utils/mb/conversion_procs/utf8_and_johab/utf8_and_johab.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_johab/utf8_and_johab.c,v
retrieving revision 1.9
diff -c -c -r1.9 utf8_and_johab.c
*** src/backend/utils/mb/conversion_procs/utf8_and_johab/utf8_and_johab.c    31 Dec 2004 22:02:31 -0000    1.9
--- src/backend/utils/mb/conversion_procs/utf8_and_johab/utf8_and_johab.c    26 Feb 2005 20:46:16 -0000
***************
*** 1,6 ****
  /*-------------------------------------------------------------------------
   *
!  *      JOHAB <--> UTF-8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
--- 1,6 ----
  /*-------------------------------------------------------------------------
   *
!  *      JOHAB <--> UTF8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
Index: src/backend/utils/mb/conversion_procs/utf8_and_sjis/utf8_and_sjis.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_sjis/utf8_and_sjis.c,v
retrieving revision 1.9
diff -c -c -r1.9 utf8_and_sjis.c
*** src/backend/utils/mb/conversion_procs/utf8_and_sjis/utf8_and_sjis.c    31 Dec 2004 22:02:33 -0000    1.9
--- src/backend/utils/mb/conversion_procs/utf8_and_sjis/utf8_and_sjis.c    26 Feb 2005 20:46:16 -0000
***************
*** 1,6 ****
  /*-------------------------------------------------------------------------
   *
!  *      SJIS <--> UTF-8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
--- 1,6 ----
  /*-------------------------------------------------------------------------
   *
!  *      SJIS <--> UTF8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
Index: src/backend/utils/mb/conversion_procs/utf8_and_tcvn/utf8_and_tcvn.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_tcvn/utf8_and_tcvn.c,v
retrieving revision 1.9
diff -c -c -r1.9 utf8_and_tcvn.c
*** src/backend/utils/mb/conversion_procs/utf8_and_tcvn/utf8_and_tcvn.c    31 Dec 2004 22:02:35 -0000    1.9
--- src/backend/utils/mb/conversion_procs/utf8_and_tcvn/utf8_and_tcvn.c    26 Feb 2005 20:46:16 -0000
***************
*** 1,6 ****
  /*-------------------------------------------------------------------------
   *
!  *      TCVN <--> UTF-8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
--- 1,6 ----
  /*-------------------------------------------------------------------------
   *
!  *      TCVN <--> UTF8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
***************
*** 40,51 ****
      unsigned char *dest = PG_GETARG_CSTRING(3);
      int            len = PG_GETARG_INT32(4);

!     Assert(PG_GETARG_INT32(0) == PG_TCVN);
      Assert(PG_GETARG_INT32(1) == PG_UTF8);
      Assert(len >= 0);

      LocalToUtf(src, dest, LUmapTCVN,
!                sizeof(LUmapTCVN) / sizeof(pg_local_to_utf), PG_TCVN, len);

      PG_RETURN_VOID();
  }
--- 40,51 ----
      unsigned char *dest = PG_GETARG_CSTRING(3);
      int            len = PG_GETARG_INT32(4);

!     Assert(PG_GETARG_INT32(0) == PG_WIN1258);
      Assert(PG_GETARG_INT32(1) == PG_UTF8);
      Assert(len >= 0);

      LocalToUtf(src, dest, LUmapTCVN,
!                sizeof(LUmapTCVN) / sizeof(pg_local_to_utf), PG_WIN1258, len);

      PG_RETURN_VOID();
  }
***************
*** 58,64 ****
      int            len = PG_GETARG_INT32(4);

      Assert(PG_GETARG_INT32(0) == PG_UTF8);
!     Assert(PG_GETARG_INT32(1) == PG_TCVN);
      Assert(len >= 0);

      UtfToLocal(src, dest, ULmapTCVN,
--- 58,64 ----
      int            len = PG_GETARG_INT32(4);

      Assert(PG_GETARG_INT32(0) == PG_UTF8);
!     Assert(PG_GETARG_INT32(1) == PG_WIN1258);
      Assert(len >= 0);

      UtfToLocal(src, dest, ULmapTCVN,
Index: src/backend/utils/mb/conversion_procs/utf8_and_uhc/utf8_and_uhc.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_uhc/utf8_and_uhc.c,v
retrieving revision 1.9
diff -c -c -r1.9 utf8_and_uhc.c
*** src/backend/utils/mb/conversion_procs/utf8_and_uhc/utf8_and_uhc.c    31 Dec 2004 22:02:36 -0000    1.9
--- src/backend/utils/mb/conversion_procs/utf8_and_uhc/utf8_and_uhc.c    26 Feb 2005 20:46:16 -0000
***************
*** 1,6 ****
  /*-------------------------------------------------------------------------
   *
!  *      UHC <--> UTF-8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
--- 1,6 ----
  /*-------------------------------------------------------------------------
   *
!  *      UHC <--> UTF8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
Index: src/backend/utils/mb/conversion_procs/utf8_and_win1250/utf8_and_win1250.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_win1250/utf8_and_win1250.c,v
retrieving revision 1.9
diff -c -c -r1.9 utf8_and_win1250.c
*** src/backend/utils/mb/conversion_procs/utf8_and_win1250/utf8_and_win1250.c    31 Dec 2004 22:02:38 -0000    1.9
--- src/backend/utils/mb/conversion_procs/utf8_and_win1250/utf8_and_win1250.c    26 Feb 2005 20:46:17 -0000
***************
*** 1,6 ****
  /*-------------------------------------------------------------------------
   *
!  *      WIN1250 and UTF-8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
--- 1,6 ----
  /*-------------------------------------------------------------------------
   *
!  *      WIN1250 and UTF8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
Index: src/backend/utils/mb/conversion_procs/utf8_and_win1256/utf8_and_win1256.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_win1256/utf8_and_win1256.c,v
retrieving revision 1.9
diff -c -c -r1.9 utf8_and_win1256.c
*** src/backend/utils/mb/conversion_procs/utf8_and_win1256/utf8_and_win1256.c    31 Dec 2004 22:02:39 -0000    1.9
--- src/backend/utils/mb/conversion_procs/utf8_and_win1256/utf8_and_win1256.c    26 Feb 2005 20:46:17 -0000
***************
*** 1,6 ****
  /*-------------------------------------------------------------------------
   *
!  *      WIN1256 and UTF-8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
--- 1,6 ----
  /*-------------------------------------------------------------------------
   *
!  *      WIN1256 and UTF8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
Index: src/backend/utils/mb/conversion_procs/utf8_and_win874/utf8_and_win874.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/mb/conversion_procs/utf8_and_win874/utf8_and_win874.c,v
retrieving revision 1.9
diff -c -c -r1.9 utf8_and_win874.c
*** src/backend/utils/mb/conversion_procs/utf8_and_win874/utf8_and_win874.c    31 Dec 2004 22:02:41 -0000    1.9
--- src/backend/utils/mb/conversion_procs/utf8_and_win874/utf8_and_win874.c    26 Feb 2005 20:46:17 -0000
***************
*** 1,6 ****
  /*-------------------------------------------------------------------------
   *
!  *      WIN874 and UTF-8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
--- 1,6 ----
  /*-------------------------------------------------------------------------
   *
!  *      WIN874 and UTF8
   *
   * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
   * Portions Copyright (c) 1994, Regents of the University of California
Index: src/bin/initdb/initdb.c
===================================================================
RCS file: /cvsroot/pgsql/src/bin/initdb/initdb.c,v
retrieving revision 1.76
diff -c -c -r1.76 initdb.c
*** src/bin/initdb/initdb.c    26 Feb 2005 18:43:34 -0000    1.76
--- src/bin/initdb/initdb.c    26 Feb 2005 20:46:18 -0000
***************
*** 723,729 ****
      {PG_JOHAB, "???"},
  #endif

!     {PG_UTF8, "UTF-8"},
      {PG_UTF8, "utf8"},

      {PG_LATIN1, "ISO-8859-1"},
--- 723,729 ----
      {PG_JOHAB, "???"},
  #endif

!     {PG_UTF8, "UTF8"},
      {PG_UTF8, "utf8"},

      {PG_LATIN1, "ISO-8859-1"},
***************
*** 767,779 ****
      {PG_LATIN10, "iso885916"},

      {PG_WIN1256, "CP1256"},
!     {PG_TCVN, "CP1258"},
  #ifdef NOT_VERIFIED
      {PG_WIN874, "???"},
  #endif
      {PG_KOI8R, "KOI8-R"},
      {PG_WIN1251, "CP1251"},
!     {PG_ALT, "CP866"},

      {PG_ISO_8859_5, "ISO-8859-5"},
      {PG_ISO_8859_5, "ISO8859-5"},
--- 767,779 ----
      {PG_LATIN10, "iso885916"},

      {PG_WIN1256, "CP1256"},
!     {PG_WIN1258, "CP1258"},
  #ifdef NOT_VERIFIED
      {PG_WIN874, "???"},
  #endif
      {PG_KOI8R, "KOI8-R"},
      {PG_WIN1251, "CP1251"},
!     {PG_WIN866, "CP866"},

      {PG_ISO_8859_5, "ISO-8859-5"},
      {PG_ISO_8859_5, "ISO8859-5"},
Index: src/include/mb/pg_wchar.h
===================================================================
RCS file: /cvsroot/pgsql/src/include/mb/pg_wchar.h,v
retrieving revision 1.56
diff -c -c -r1.56 pg_wchar.h
*** src/include/mb/pg_wchar.h    4 Dec 2004 18:19:33 -0000    1.56
--- src/include/mb/pg_wchar.h    26 Feb 2005 20:46:18 -0000
***************
*** 155,161 ****
      PG_EUC_KR,                    /* EUC for Korean */
      PG_EUC_TW,                    /* EUC for Taiwan */
      PG_JOHAB,                    /* EUC for Korean JOHAB */
!     PG_UTF8,                    /* Unicode UTF-8 */
      PG_MULE_INTERNAL,            /* Mule internal code */
      PG_LATIN1,                    /* ISO-8859-1 Latin 1 */
      PG_LATIN2,                    /* ISO-8859-2 Latin 2 */
--- 155,161 ----
      PG_EUC_KR,                    /* EUC for Korean */
      PG_EUC_TW,                    /* EUC for Taiwan */
      PG_JOHAB,                    /* EUC for Korean JOHAB */
!     PG_UTF8,                    /* Unicode UTF8 */
      PG_MULE_INTERNAL,            /* Mule internal code */
      PG_LATIN1,                    /* ISO-8859-1 Latin 1 */
      PG_LATIN2,                    /* ISO-8859-2 Latin 2 */
***************
*** 168,178 ****
      PG_LATIN9,                    /* ISO-8859-15 Latin9 */
      PG_LATIN10,                    /* ISO-8859-16 Latin10 */
      PG_WIN1256,                    /* windows-1256 */
!     PG_TCVN,                    /* TCVN (Windows-1258) */
      PG_WIN874,                    /* windows-874 */
      PG_KOI8R,                    /* KOI8-R */
      PG_WIN1251,                    /* windows-1251 (was: WIN) */
-     PG_ALT,                        /* (MS-DOS CP866) */
      PG_ISO_8859_5,                /* ISO-8859-5 */
      PG_ISO_8859_6,                /* ISO-8859-6 */
      PG_ISO_8859_7,                /* ISO-8859-7 */
--- 168,178 ----
      PG_LATIN9,                    /* ISO-8859-15 Latin9 */
      PG_LATIN10,                    /* ISO-8859-16 Latin10 */
      PG_WIN1256,                    /* windows-1256 */
!     PG_WIN1258,                    /* Windows-1258 */
!     PG_WIN866,                    /* (MS-DOS CP866) */
      PG_WIN874,                    /* windows-874 */
      PG_KOI8R,                    /* KOI8-R */
      PG_WIN1251,                    /* windows-1251 (was: WIN) */
      PG_ISO_8859_5,                /* ISO-8859-5 */
      PG_ISO_8859_6,                /* ISO-8859-6 */
      PG_ISO_8859_7,                /* ISO-8859-7 */
***************
*** 263,283 ****
  extern pg_wchar_tbl pg_wchar_table[];

  /*
!  * UTF-8 to local code conversion map
   */
  typedef struct
  {
!     unsigned int utf;            /* UTF-8 */
      unsigned int code;            /* local code */
  } pg_utf_to_local;

  /*
!  * local code to UTF-8 conversion map
   */
  typedef struct
  {
      unsigned int code;            /* local code */
!     unsigned int utf;            /* UTF-8 */
  } pg_local_to_utf;

  extern int    pg_mb2wchar(const unsigned char *from, pg_wchar *to);
--- 263,283 ----
  extern pg_wchar_tbl pg_wchar_table[];

  /*
!  * UTF8 to local code conversion map
   */
  typedef struct
  {
!     unsigned int utf;            /* UTF8 */
      unsigned int code;            /* local code */
  } pg_utf_to_local;

  /*
!  * local code to UTF8 conversion map
   */
  typedef struct
  {
      unsigned int code;            /* local code */
!     unsigned int utf;            /* UTF8 */
  } pg_local_to_utf;

  extern int    pg_mb2wchar(const unsigned char *from, pg_wchar *to);
Index: src/test/regress/expected/conversion.out
===================================================================
RCS file: /cvsroot/pgsql/src/test/regress/expected/conversion.out,v
retrieving revision 1.9
diff -c -c -r1.9 conversion.out
*** src/test/regress/expected/conversion.out    21 Nov 2003 22:32:49 -0000    1.9
--- src/test/regress/expected/conversion.out    26 Feb 2005 20:46:19 -0000
***************
*** 3,23 ****
  --
  CREATE USER conversion_test_user WITH NOCREATEDB NOCREATEUSER;
  SET SESSION AUTHORIZATION conversion_test_user;
! 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 "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
  -- test comments
  COMMENT ON CONVERSION myconv_bad IS 'foo';
  ERROR:  conversion "myconv_bad" does not exist
--- 3,23 ----
  --
  CREATE USER conversion_test_user WITH NOCREATEDB NOCREATEUSER;
  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
***************
*** 134,160 ****
   foo
  (1 row)

! -- ALT --> MULE_INTERNAL
  SELECT CONVERT('foo' USING windows_866_to_mic);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'ALT', 'MULE_INTERNAL');
   convert
  ---------
   foo
  (1 row)

! -- MULE_INTERNAL --> ALT
  SELECT CONVERT('foo' USING mic_to_windows_866);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'MULE_INTERNAL', 'ALT');
   convert
  ---------
   foo
--- 134,160 ----
   foo
  (1 row)

! -- WIN866 --> MULE_INTERNAL
  SELECT CONVERT('foo' USING windows_866_to_mic);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'WIN866', 'MULE_INTERNAL');
   convert
  ---------
   foo
  (1 row)

! -- MULE_INTERNAL --> WIN866
  SELECT CONVERT('foo' USING mic_to_windows_866);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'MULE_INTERNAL', 'WIN866');
   convert
  ---------
   foo
***************
*** 186,238 ****
   foo
  (1 row)

! -- KOI8R --> ALT
  SELECT CONVERT('foo' USING koi8_r_to_windows_866);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'KOI8R', 'ALT');
   convert
  ---------
   foo
  (1 row)

! -- ALT --> KOI8R
  SELECT CONVERT('foo' USING windows_866_to_koi8_r);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'ALT', 'KOI8R');
   convert
  ---------
   foo
  (1 row)

! -- ALT --> WIN1251
  SELECT CONVERT('foo' USING windows_866_to_windows_1251);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'ALT', 'WIN1251');
   convert
  ---------
   foo
  (1 row)

! -- WIN1251 --> ALT
  SELECT CONVERT('foo' USING windows_1251_to_windows_866);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'WIN1251', 'ALT');
   convert
  ---------
   foo
--- 186,238 ----
   foo
  (1 row)

! -- KOI8R --> WIN866
  SELECT CONVERT('foo' USING koi8_r_to_windows_866);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'KOI8R', 'WIN866');
   convert
  ---------
   foo
  (1 row)

! -- WIN866 --> KOI8R
  SELECT CONVERT('foo' USING windows_866_to_koi8_r);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'WIN866', 'KOI8R');
   convert
  ---------
   foo
  (1 row)

! -- WIN866 --> WIN1251
  SELECT CONVERT('foo' USING windows_866_to_windows_1251);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'WIN866', 'WIN1251');
   convert
  ---------
   foo
  (1 row)

! -- WIN1251 --> WIN866
  SELECT CONVERT('foo' USING windows_1251_to_windows_866);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'WIN1251', 'WIN866');
   convert
  ---------
   foo
***************
*** 290,316 ****
   foo
  (1 row)

! -- ISO-8859-5 --> ALT
  SELECT CONVERT('foo' USING iso_8859_5_to_windows_866);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'ISO-8859-5', 'ALT');
   convert
  ---------
   foo
  (1 row)

! -- ALT --> ISO-8859-5
  SELECT CONVERT('foo' USING windows_866_to_iso_8859_5);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'ALT', 'ISO-8859-5');
   convert
  ---------
   foo
--- 290,316 ----
   foo
  (1 row)

! -- ISO-8859-5 --> WIN866
  SELECT CONVERT('foo' USING iso_8859_5_to_windows_866);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'ISO-8859-5', 'WIN866');
   convert
  ---------
   foo
  (1 row)

! -- WIN866 --> ISO-8859-5
  SELECT CONVERT('foo' USING windows_866_to_iso_8859_5);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'WIN866', 'ISO-8859-5');
   convert
  ---------
   foo
***************
*** 680,1512 ****
   foo
  (1 row)

! -- SQL_ASCII --> UNICODE
  SELECT CONVERT('foo' USING ascii_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> SQL_ASCII
  SELECT CONVERT('foo' USING utf_8_to_ascii);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- BIG5 --> UNICODE
  SELECT CONVERT('foo' USING big5_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> BIG5
  SELECT CONVERT('foo' USING utf_8_to_big5);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> KOI8R
  SELECT CONVERT('foo' USING utf_8_to_koi8_r);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UNICODE', 'KOI8R');
   convert
  ---------
   foo
  (1 row)

! -- KOI8R --> UNICODE
  SELECT CONVERT('foo' USING koi8_r_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'KOI8R', 'UNICODE');
   convert
  ---------
   foo
  (1 row)

! -- UNICODE --> WIN1251
  SELECT CONVERT('foo' USING utf_8_to_windows_1251);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UNICODE', 'WIN1251');
   convert
  ---------
   foo
  (1 row)

! -- WIN1251 --> UNICODE
  SELECT CONVERT('foo' USING windows_1251_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'WIN1251', 'UNICODE');
   convert
  ---------
   foo
  (1 row)

! -- UNICODE --> ALT
  SELECT CONVERT('foo' USING utf_8_to_windows_866);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UNICODE', 'ALT');
   convert
  ---------
   foo
  (1 row)

! -- ALT --> UNICODE
  SELECT CONVERT('foo' USING windows_866_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'ALT', 'UNICODE');
   convert
  ---------
   foo
  (1 row)

! -- EUC_CN --> UNICODE
  SELECT CONVERT('foo' USING euc_cn_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> EUC_CN
  SELECT CONVERT('foo' USING utf_8_to_euc_cn);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- EUC_JP --> UNICODE
  SELECT CONVERT('foo' USING euc_jp_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> EUC_JP
  SELECT CONVERT('foo' USING utf_8_to_euc_jp);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- EUC_KR --> UNICODE
  SELECT CONVERT('foo' USING euc_kr_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> EUC_KR
  SELECT CONVERT('foo' USING utf_8_to_euc_kr);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- EUC_TW --> UNICODE
  SELECT CONVERT('foo' USING euc_tw_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> EUC_TW
  SELECT CONVERT('foo' USING utf_8_to_euc_tw);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- GB18030 --> UNICODE
  SELECT CONVERT('foo' USING gb18030_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> GB18030
  SELECT CONVERT('foo' USING utf_8_to_gb18030);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- GBK --> UNICODE
  SELECT CONVERT('foo' USING gbk_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> GBK
  SELECT CONVERT('foo' USING utf_8_to_gbk);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> LATIN2
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_2);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- LATIN2 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_2_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> LATIN3
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_3);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- LATIN3 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_3_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> LATIN4
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_4);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- LATIN4 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_4_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> LATIN5
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_9);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- LATIN5 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_9_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> LATIN6
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_10);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- LATIN6 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_10_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> LATIN7
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_13);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- LATIN7 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_13_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> LATIN8
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_14);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- LATIN8 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_14_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> LATIN9
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_15);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- LATIN9 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_15_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> LATIN10
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_16);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- LATIN10 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_16_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> ISO-8859-5
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_5);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- ISO-8859-5 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_5_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> ISO-8859-6
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_6);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- ISO-8859-6 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_6_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> ISO-8859-7
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_7);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- ISO-8859-7 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_7_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> ISO-8859-8
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- ISO-8859-8 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_8_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- LATIN1 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_1_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> LATIN1
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_1);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- JOHAB --> UNICODE
  SELECT CONVERT('foo' USING johab_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> JOHAB
  SELECT CONVERT('foo' USING utf_8_to_johab);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- SJIS --> UNICODE
  SELECT CONVERT('foo' USING sjis_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> SJIS
  SELECT CONVERT('foo' USING utf_8_to_sjis);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- TCVN --> UNICODE
  SELECT CONVERT('foo' USING tcvn_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> TCVN
  SELECT CONVERT('foo' USING utf_8_to_tcvn);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UHC --> UNICODE
  SELECT CONVERT('foo' USING uhc_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> UHC
  SELECT CONVERT('foo' USING utf_8_to_uhc);
   convert_using
  ---------------
   foo
  (1 row)

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

! -- UNICODE --> WIN1250
  SELECT CONVERT('foo' USING utf_8_to_windows_1250);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UNICODE', 'WIN1250');
   convert
  ---------
   foo
  (1 row)

! -- WIN1250 --> UNICODE
  SELECT CONVERT('foo' USING windows_1250_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'WIN1250', 'UNICODE');
   convert
  ---------
   foo
  (1 row)

! -- UNICODE --> WIN1256
  SELECT CONVERT('foo' USING utf_8_to_windows_1256);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UNICODE', 'WIN1256');
   convert
  ---------
   foo
  (1 row)

! -- WIN1256 --> UNICODE
  SELECT CONVERT('foo' USING windows_1256_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'WIN1256', 'UNICODE');
   convert
  ---------
   foo
  (1 row)

! -- UNICODE --> WIN874
  SELECT CONVERT('foo' USING utf_8_to_windows_874);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UNICODE', 'WIN874');
   convert
  ---------
   foo
  (1 row)

! -- WIN874 --> UNICODE
  SELECT CONVERT('foo' USING windows_874_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'WIN874', 'UNICODE');
   convert
  ---------
   foo
--- 680,1512 ----
   foo
  (1 row)

! -- SQL_ASCII --> UTF8
  SELECT CONVERT('foo' USING ascii_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'SQL_ASCII', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> SQL_ASCII
  SELECT CONVERT('foo' USING utf_8_to_ascii);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'SQL_ASCII');
   convert
  ---------
   foo
  (1 row)

! -- BIG5 --> UTF8
  SELECT CONVERT('foo' USING big5_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'BIG5', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> BIG5
  SELECT CONVERT('foo' USING utf_8_to_big5);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'BIG5');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> KOI8R
  SELECT CONVERT('foo' USING utf_8_to_koi8_r);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'KOI8R');
   convert
  ---------
   foo
  (1 row)

! -- KOI8R --> UTF8
  SELECT CONVERT('foo' USING koi8_r_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'KOI8R', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> WIN1251
  SELECT CONVERT('foo' USING utf_8_to_windows_1251);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'WIN1251');
   convert
  ---------
   foo
  (1 row)

! -- WIN1251 --> UTF8
  SELECT CONVERT('foo' USING windows_1251_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'WIN1251', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> WIN866
  SELECT CONVERT('foo' USING utf_8_to_windows_866);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'WIN866');
   convert
  ---------
   foo
  (1 row)

! -- WIN866 --> UTF8
  SELECT CONVERT('foo' USING windows_866_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'WIN866', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- EUC_CN --> UTF8
  SELECT CONVERT('foo' USING euc_cn_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'EUC_CN', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> EUC_CN
  SELECT CONVERT('foo' USING utf_8_to_euc_cn);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'EUC_CN');
   convert
  ---------
   foo
  (1 row)

! -- EUC_JP --> UTF8
  SELECT CONVERT('foo' USING euc_jp_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'EUC_JP', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> EUC_JP
  SELECT CONVERT('foo' USING utf_8_to_euc_jp);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'EUC_JP');
   convert
  ---------
   foo
  (1 row)

! -- EUC_KR --> UTF8
  SELECT CONVERT('foo' USING euc_kr_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'EUC_KR', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> EUC_KR
  SELECT CONVERT('foo' USING utf_8_to_euc_kr);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'EUC_KR');
   convert
  ---------
   foo
  (1 row)

! -- EUC_TW --> UTF8
  SELECT CONVERT('foo' USING euc_tw_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'EUC_TW', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> EUC_TW
  SELECT CONVERT('foo' USING utf_8_to_euc_tw);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'EUC_TW');
   convert
  ---------
   foo
  (1 row)

! -- GB18030 --> UTF8
  SELECT CONVERT('foo' USING gb18030_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'GB18030', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> GB18030
  SELECT CONVERT('foo' USING utf_8_to_gb18030);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'GB18030');
   convert
  ---------
   foo
  (1 row)

! -- GBK --> UTF8
  SELECT CONVERT('foo' USING gbk_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'GBK', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> GBK
  SELECT CONVERT('foo' USING utf_8_to_gbk);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'GBK');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> LATIN2
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_2);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'LATIN2');
   convert
  ---------
   foo
  (1 row)

! -- LATIN2 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_2_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'LATIN2', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> LATIN3
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_3);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'LATIN3');
   convert
  ---------
   foo
  (1 row)

! -- LATIN3 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_3_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'LATIN3', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> LATIN4
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_4);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'LATIN4');
   convert
  ---------
   foo
  (1 row)

! -- LATIN4 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_4_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'LATIN4', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> LATIN5
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_9);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'LATIN5');
   convert
  ---------
   foo
  (1 row)

! -- LATIN5 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_9_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'LATIN5', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> LATIN6
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_10);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'LATIN6');
   convert
  ---------
   foo
  (1 row)

! -- LATIN6 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_10_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'LATIN6', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> LATIN7
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_13);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'LATIN7');
   convert
  ---------
   foo
  (1 row)

! -- LATIN7 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_13_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'LATIN7', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> LATIN8
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_14);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'LATIN8');
   convert
  ---------
   foo
  (1 row)

! -- LATIN8 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_14_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'LATIN8', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> LATIN9
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_15);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'LATIN9');
   convert
  ---------
   foo
  (1 row)

! -- LATIN9 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_15_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'LATIN9', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> LATIN10
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_16);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'LATIN10');
   convert
  ---------
   foo
  (1 row)

! -- LATIN10 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_16_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'LATIN10', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> ISO-8859-5
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_5);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'ISO-8859-5');
   convert
  ---------
   foo
  (1 row)

! -- ISO-8859-5 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_5_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'ISO-8859-5', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> ISO-8859-6
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_6);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'ISO-8859-6');
   convert
  ---------
   foo
  (1 row)

! -- ISO-8859-6 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_6_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'ISO-8859-6', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> ISO-8859-7
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_7);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'ISO-8859-7');
   convert
  ---------
   foo
  (1 row)

! -- ISO-8859-7 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_7_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'ISO-8859-7', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> ISO-8859-8
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'ISO-8859-8');
   convert
  ---------
   foo
  (1 row)

! -- ISO-8859-8 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_8_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'ISO-8859-8', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- LATIN1 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_1_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'LATIN1', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> LATIN1
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_1);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'LATIN1');
   convert
  ---------
   foo
  (1 row)

! -- JOHAB --> UTF8
  SELECT CONVERT('foo' USING johab_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'JOHAB', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> JOHAB
  SELECT CONVERT('foo' USING utf_8_to_johab);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'JOHAB');
   convert
  ---------
   foo
  (1 row)

! -- SJIS --> UTF8
  SELECT CONVERT('foo' USING sjis_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'SJIS', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> SJIS
  SELECT CONVERT('foo' USING utf_8_to_sjis);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'SJIS');
   convert
  ---------
   foo
  (1 row)

! -- WIN1258 --> UTF8
  SELECT CONVERT('foo' USING tcvn_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'WIN1258', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> WIN1258
  SELECT CONVERT('foo' USING utf_8_to_tcvn);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'WIN1258');
   convert
  ---------
   foo
  (1 row)

! -- UHC --> UTF8
  SELECT CONVERT('foo' USING uhc_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UHC', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> UHC
  SELECT CONVERT('foo' USING utf_8_to_uhc);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'UHC');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> WIN1250
  SELECT CONVERT('foo' USING utf_8_to_windows_1250);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'WIN1250');
   convert
  ---------
   foo
  (1 row)

! -- WIN1250 --> UTF8
  SELECT CONVERT('foo' USING windows_1250_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'WIN1250', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> WIN1256
  SELECT CONVERT('foo' USING utf_8_to_windows_1256);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'WIN1256');
   convert
  ---------
   foo
  (1 row)

! -- WIN1256 --> UTF8
  SELECT CONVERT('foo' USING windows_1256_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'WIN1256', 'UTF8');
   convert
  ---------
   foo
  (1 row)

! -- UTF8 --> WIN874
  SELECT CONVERT('foo' USING utf_8_to_windows_874);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'UTF8', 'WIN874');
   convert
  ---------
   foo
  (1 row)

! -- WIN874 --> UTF8
  SELECT CONVERT('foo' USING windows_874_to_utf_8);
   convert_using
  ---------------
   foo
  (1 row)

! SELECT CONVERT('foo', 'WIN874', 'UTF8');
   convert
  ---------
   foo
Index: src/test/regress/sql/conversion.sql
===================================================================
RCS file: /cvsroot/pgsql/src/test/regress/sql/conversion.sql,v
retrieving revision 1.6
diff -c -c -r1.6 conversion.sql
*** src/test/regress/sql/conversion.sql    21 Nov 2003 22:32:49 -0000    1.6
--- src/test/regress/sql/conversion.sql    26 Feb 2005 20:46:20 -0000
***************
*** 3,21 ****
  --
  CREATE USER conversion_test_user WITH NOCREATEDB NOCREATEUSER;
  SET SESSION AUTHORIZATION conversion_test_user;
! 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;
  --
  -- 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;
  -- test comments
  COMMENT ON CONVERSION myconv_bad IS 'foo';
  COMMENT ON CONVERSION myconv IS 'bar';
--- 3,21 ----
  --
  CREATE USER conversion_test_user WITH NOCREATEDB NOCREATEUSER;
  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';
***************
*** 51,80 ****
  -- MULE_INTERNAL --> WIN1251
  SELECT CONVERT('foo' USING mic_to_windows_1251);
  SELECT CONVERT('foo', 'MULE_INTERNAL', 'WIN1251');
! -- ALT --> MULE_INTERNAL
  SELECT CONVERT('foo' USING windows_866_to_mic);
! SELECT CONVERT('foo', 'ALT', 'MULE_INTERNAL');
! -- MULE_INTERNAL --> ALT
  SELECT CONVERT('foo' USING mic_to_windows_866);
! SELECT CONVERT('foo', 'MULE_INTERNAL', 'ALT');
  -- KOI8R --> WIN1251
  SELECT CONVERT('foo' USING koi8_r_to_windows_1251);
  SELECT CONVERT('foo', 'KOI8R', 'WIN1251');
  -- WIN1251 --> KOI8R
  SELECT CONVERT('foo' USING windows_1251_to_koi8_r);
  SELECT CONVERT('foo', 'WIN1251', 'KOI8R');
! -- KOI8R --> ALT
  SELECT CONVERT('foo' USING koi8_r_to_windows_866);
! SELECT CONVERT('foo', 'KOI8R', 'ALT');
! -- ALT --> KOI8R
  SELECT CONVERT('foo' USING windows_866_to_koi8_r);
! SELECT CONVERT('foo', 'ALT', 'KOI8R');
! -- ALT --> WIN1251
  SELECT CONVERT('foo' USING windows_866_to_windows_1251);
! SELECT CONVERT('foo', 'ALT', 'WIN1251');
! -- WIN1251 --> ALT
  SELECT CONVERT('foo' USING windows_1251_to_windows_866);
! SELECT CONVERT('foo', 'WIN1251', 'ALT');
  -- ISO-8859-5 --> KOI8R
  SELECT CONVERT('foo' USING iso_8859_5_to_koi8_r);
  SELECT CONVERT('foo', 'ISO-8859-5', 'KOI8R');
--- 51,80 ----
  -- MULE_INTERNAL --> WIN1251
  SELECT CONVERT('foo' USING mic_to_windows_1251);
  SELECT CONVERT('foo', 'MULE_INTERNAL', 'WIN1251');
! -- WIN866 --> MULE_INTERNAL
  SELECT CONVERT('foo' USING windows_866_to_mic);
! SELECT CONVERT('foo', 'WIN866', 'MULE_INTERNAL');
! -- MULE_INTERNAL --> WIN866
  SELECT CONVERT('foo' USING mic_to_windows_866);
! SELECT CONVERT('foo', 'MULE_INTERNAL', 'WIN866');
  -- KOI8R --> WIN1251
  SELECT CONVERT('foo' USING koi8_r_to_windows_1251);
  SELECT CONVERT('foo', 'KOI8R', 'WIN1251');
  -- WIN1251 --> KOI8R
  SELECT CONVERT('foo' USING windows_1251_to_koi8_r);
  SELECT CONVERT('foo', 'WIN1251', 'KOI8R');
! -- KOI8R --> WIN866
  SELECT CONVERT('foo' USING koi8_r_to_windows_866);
! SELECT CONVERT('foo', 'KOI8R', 'WIN866');
! -- WIN866 --> KOI8R
  SELECT CONVERT('foo' USING windows_866_to_koi8_r);
! SELECT CONVERT('foo', 'WIN866', 'KOI8R');
! -- WIN866 --> WIN1251
  SELECT CONVERT('foo' USING windows_866_to_windows_1251);
! SELECT CONVERT('foo', 'WIN866', 'WIN1251');
! -- WIN1251 --> WIN866
  SELECT CONVERT('foo' USING windows_1251_to_windows_866);
! SELECT CONVERT('foo', 'WIN1251', 'WIN866');
  -- ISO-8859-5 --> KOI8R
  SELECT CONVERT('foo' USING iso_8859_5_to_koi8_r);
  SELECT CONVERT('foo', 'ISO-8859-5', 'KOI8R');
***************
*** 87,98 ****
  -- WIN1251 --> ISO-8859-5
  SELECT CONVERT('foo' USING windows_1251_to_iso_8859_5);
  SELECT CONVERT('foo', 'WIN1251', 'ISO-8859-5');
! -- ISO-8859-5 --> ALT
  SELECT CONVERT('foo' USING iso_8859_5_to_windows_866);
! SELECT CONVERT('foo', 'ISO-8859-5', 'ALT');
! -- ALT --> ISO-8859-5
  SELECT CONVERT('foo' USING windows_866_to_iso_8859_5);
! SELECT CONVERT('foo', 'ALT', 'ISO-8859-5');
  -- EUC_CN --> MULE_INTERNAL
  SELECT CONVERT('foo' USING euc_cn_to_mic);
  SELECT CONVERT('foo', 'EUC_CN', 'MULE_INTERNAL');
--- 87,98 ----
  -- WIN1251 --> ISO-8859-5
  SELECT CONVERT('foo' USING windows_1251_to_iso_8859_5);
  SELECT CONVERT('foo', 'WIN1251', 'ISO-8859-5');
! -- ISO-8859-5 --> WIN866
  SELECT CONVERT('foo' USING iso_8859_5_to_windows_866);
! SELECT CONVERT('foo', 'ISO-8859-5', 'WIN866');
! -- WIN866 --> ISO-8859-5
  SELECT CONVERT('foo' USING windows_866_to_iso_8859_5);
! SELECT CONVERT('foo', 'WIN866', 'ISO-8859-5');
  -- EUC_CN --> MULE_INTERNAL
  SELECT CONVERT('foo' USING euc_cn_to_mic);
  SELECT CONVERT('foo', 'EUC_CN', 'MULE_INTERNAL');
***************
*** 177,374 ****
  -- MULE_INTERNAL --> LATIN4
  SELECT CONVERT('foo' USING mic_to_iso_8859_4);
  SELECT CONVERT('foo', 'MULE_INTERNAL', 'LATIN4');
! -- SQL_ASCII --> UNICODE
  SELECT CONVERT('foo' USING ascii_to_utf_8);
! SELECT CONVERT('foo', 'SQL_ASCII', 'UNICODE');
! -- UNICODE --> SQL_ASCII
  SELECT CONVERT('foo' USING utf_8_to_ascii);
! SELECT CONVERT('foo', 'UNICODE', 'SQL_ASCII');
! -- BIG5 --> UNICODE
  SELECT CONVERT('foo' USING big5_to_utf_8);
! SELECT CONVERT('foo', 'BIG5', 'UNICODE');
! -- UNICODE --> BIG5
  SELECT CONVERT('foo' USING utf_8_to_big5);
! SELECT CONVERT('foo', 'UNICODE', 'BIG5');
! -- UNICODE --> KOI8R
  SELECT CONVERT('foo' USING utf_8_to_koi8_r);
! SELECT CONVERT('foo', 'UNICODE', 'KOI8R');
! -- KOI8R --> UNICODE
  SELECT CONVERT('foo' USING koi8_r_to_utf_8);
! SELECT CONVERT('foo', 'KOI8R', 'UNICODE');
! -- UNICODE --> WIN1251
  SELECT CONVERT('foo' USING utf_8_to_windows_1251);
! SELECT CONVERT('foo', 'UNICODE', 'WIN1251');
! -- WIN1251 --> UNICODE
  SELECT CONVERT('foo' USING windows_1251_to_utf_8);
! SELECT CONVERT('foo', 'WIN1251', 'UNICODE');
! -- UNICODE --> ALT
  SELECT CONVERT('foo' USING utf_8_to_windows_866);
! SELECT CONVERT('foo', 'UNICODE', 'ALT');
! -- ALT --> UNICODE
  SELECT CONVERT('foo' USING windows_866_to_utf_8);
! SELECT CONVERT('foo', 'ALT', 'UNICODE');
! -- EUC_CN --> UNICODE
  SELECT CONVERT('foo' USING euc_cn_to_utf_8);
! SELECT CONVERT('foo', 'EUC_CN', 'UNICODE');
! -- UNICODE --> EUC_CN
  SELECT CONVERT('foo' USING utf_8_to_euc_cn);
! SELECT CONVERT('foo', 'UNICODE', 'EUC_CN');
! -- EUC_JP --> UNICODE
  SELECT CONVERT('foo' USING euc_jp_to_utf_8);
! SELECT CONVERT('foo', 'EUC_JP', 'UNICODE');
! -- UNICODE --> EUC_JP
  SELECT CONVERT('foo' USING utf_8_to_euc_jp);
! SELECT CONVERT('foo', 'UNICODE', 'EUC_JP');
! -- EUC_KR --> UNICODE
  SELECT CONVERT('foo' USING euc_kr_to_utf_8);
! SELECT CONVERT('foo', 'EUC_KR', 'UNICODE');
! -- UNICODE --> EUC_KR
  SELECT CONVERT('foo' USING utf_8_to_euc_kr);
! SELECT CONVERT('foo', 'UNICODE', 'EUC_KR');
! -- EUC_TW --> UNICODE
  SELECT CONVERT('foo' USING euc_tw_to_utf_8);
! SELECT CONVERT('foo', 'EUC_TW', 'UNICODE');
! -- UNICODE --> EUC_TW
  SELECT CONVERT('foo' USING utf_8_to_euc_tw);
! SELECT CONVERT('foo', 'UNICODE', 'EUC_TW');
! -- GB18030 --> UNICODE
  SELECT CONVERT('foo' USING gb18030_to_utf_8);
! SELECT CONVERT('foo', 'GB18030', 'UNICODE');
! -- UNICODE --> GB18030
  SELECT CONVERT('foo' USING utf_8_to_gb18030);
! SELECT CONVERT('foo', 'UNICODE', 'GB18030');
! -- GBK --> UNICODE
  SELECT CONVERT('foo' USING gbk_to_utf_8);
! SELECT CONVERT('foo', 'GBK', 'UNICODE');
! -- UNICODE --> GBK
  SELECT CONVERT('foo' USING utf_8_to_gbk);
! SELECT CONVERT('foo', 'UNICODE', 'GBK');
! -- UNICODE --> LATIN2
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_2);
! SELECT CONVERT('foo', 'UNICODE', 'LATIN2');
! -- LATIN2 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_2_to_utf_8);
! SELECT CONVERT('foo', 'LATIN2', 'UNICODE');
! -- UNICODE --> LATIN3
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_3);
! SELECT CONVERT('foo', 'UNICODE', 'LATIN3');
! -- LATIN3 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_3_to_utf_8);
! SELECT CONVERT('foo', 'LATIN3', 'UNICODE');
! -- UNICODE --> LATIN4
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_4);
! SELECT CONVERT('foo', 'UNICODE', 'LATIN4');
! -- LATIN4 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_4_to_utf_8);
! SELECT CONVERT('foo', 'LATIN4', 'UNICODE');
! -- UNICODE --> LATIN5
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_9);
! SELECT CONVERT('foo', 'UNICODE', 'LATIN5');
! -- LATIN5 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_9_to_utf_8);
! SELECT CONVERT('foo', 'LATIN5', 'UNICODE');
! -- UNICODE --> LATIN6
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_10);
! SELECT CONVERT('foo', 'UNICODE', 'LATIN6');
! -- LATIN6 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_10_to_utf_8);
! SELECT CONVERT('foo', 'LATIN6', 'UNICODE');
! -- UNICODE --> LATIN7
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_13);
! SELECT CONVERT('foo', 'UNICODE', 'LATIN7');
! -- LATIN7 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_13_to_utf_8);
! SELECT CONVERT('foo', 'LATIN7', 'UNICODE');
! -- UNICODE --> LATIN8
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_14);
! SELECT CONVERT('foo', 'UNICODE', 'LATIN8');
! -- LATIN8 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_14_to_utf_8);
! SELECT CONVERT('foo', 'LATIN8', 'UNICODE');
! -- UNICODE --> LATIN9
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_15);
! SELECT CONVERT('foo', 'UNICODE', 'LATIN9');
! -- LATIN9 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_15_to_utf_8);
! SELECT CONVERT('foo', 'LATIN9', 'UNICODE');
! -- UNICODE --> LATIN10
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_16);
! SELECT CONVERT('foo', 'UNICODE', 'LATIN10');
! -- LATIN10 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_16_to_utf_8);
! SELECT CONVERT('foo', 'LATIN10', 'UNICODE');
! -- UNICODE --> ISO-8859-5
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_5);
! SELECT CONVERT('foo', 'UNICODE', 'ISO-8859-5');
! -- ISO-8859-5 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_5_to_utf_8);
! SELECT CONVERT('foo', 'ISO-8859-5', 'UNICODE');
! -- UNICODE --> ISO-8859-6
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_6);
! SELECT CONVERT('foo', 'UNICODE', 'ISO-8859-6');
! -- ISO-8859-6 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_6_to_utf_8);
! SELECT CONVERT('foo', 'ISO-8859-6', 'UNICODE');
! -- UNICODE --> ISO-8859-7
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_7);
! SELECT CONVERT('foo', 'UNICODE', 'ISO-8859-7');
! -- ISO-8859-7 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_7_to_utf_8);
! SELECT CONVERT('foo', 'ISO-8859-7', 'UNICODE');
! -- UNICODE --> ISO-8859-8
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_8);
! SELECT CONVERT('foo', 'UNICODE', 'ISO-8859-8');
! -- ISO-8859-8 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_8_to_utf_8);
! SELECT CONVERT('foo', 'ISO-8859-8', 'UNICODE');
! -- LATIN1 --> UNICODE
  SELECT CONVERT('foo' USING iso_8859_1_to_utf_8);
! SELECT CONVERT('foo', 'LATIN1', 'UNICODE');
! -- UNICODE --> LATIN1
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_1);
! SELECT CONVERT('foo', 'UNICODE', 'LATIN1');
! -- JOHAB --> UNICODE
  SELECT CONVERT('foo' USING johab_to_utf_8);
! SELECT CONVERT('foo', 'JOHAB', 'UNICODE');
! -- UNICODE --> JOHAB
  SELECT CONVERT('foo' USING utf_8_to_johab);
! SELECT CONVERT('foo', 'UNICODE', 'JOHAB');
! -- SJIS --> UNICODE
  SELECT CONVERT('foo' USING sjis_to_utf_8);
! SELECT CONVERT('foo', 'SJIS', 'UNICODE');
! -- UNICODE --> SJIS
  SELECT CONVERT('foo' USING utf_8_to_sjis);
! SELECT CONVERT('foo', 'UNICODE', 'SJIS');
! -- TCVN --> UNICODE
  SELECT CONVERT('foo' USING tcvn_to_utf_8);
! SELECT CONVERT('foo', 'TCVN', 'UNICODE');
! -- UNICODE --> TCVN
  SELECT CONVERT('foo' USING utf_8_to_tcvn);
! SELECT CONVERT('foo', 'UNICODE', 'TCVN');
! -- UHC --> UNICODE
  SELECT CONVERT('foo' USING uhc_to_utf_8);
! SELECT CONVERT('foo', 'UHC', 'UNICODE');
! -- UNICODE --> UHC
  SELECT CONVERT('foo' USING utf_8_to_uhc);
! SELECT CONVERT('foo', 'UNICODE', 'UHC');
! -- UNICODE --> WIN1250
  SELECT CONVERT('foo' USING utf_8_to_windows_1250);
! SELECT CONVERT('foo', 'UNICODE', 'WIN1250');
! -- WIN1250 --> UNICODE
  SELECT CONVERT('foo' USING windows_1250_to_utf_8);
! SELECT CONVERT('foo', 'WIN1250', 'UNICODE');
! -- UNICODE --> WIN1256
  SELECT CONVERT('foo' USING utf_8_to_windows_1256);
! SELECT CONVERT('foo', 'UNICODE', 'WIN1256');
! -- WIN1256 --> UNICODE
  SELECT CONVERT('foo' USING windows_1256_to_utf_8);
! SELECT CONVERT('foo', 'WIN1256', 'UNICODE');
! -- UNICODE --> WIN874
  SELECT CONVERT('foo' USING utf_8_to_windows_874);
! SELECT CONVERT('foo', 'UNICODE', 'WIN874');
! -- WIN874 --> UNICODE
  SELECT CONVERT('foo' USING windows_874_to_utf_8);
! SELECT CONVERT('foo', 'WIN874', 'UNICODE');
  --
  -- return to the super user
  --
--- 177,374 ----
  -- MULE_INTERNAL --> LATIN4
  SELECT CONVERT('foo' USING mic_to_iso_8859_4);
  SELECT CONVERT('foo', 'MULE_INTERNAL', 'LATIN4');
! -- SQL_ASCII --> UTF8
  SELECT CONVERT('foo' USING ascii_to_utf_8);
! SELECT CONVERT('foo', 'SQL_ASCII', 'UTF8');
! -- UTF8 --> SQL_ASCII
  SELECT CONVERT('foo' USING utf_8_to_ascii);
! SELECT CONVERT('foo', 'UTF8', 'SQL_ASCII');
! -- BIG5 --> UTF8
  SELECT CONVERT('foo' USING big5_to_utf_8);
! SELECT CONVERT('foo', 'BIG5', 'UTF8');
! -- UTF8 --> BIG5
  SELECT CONVERT('foo' USING utf_8_to_big5);
! SELECT CONVERT('foo', 'UTF8', 'BIG5');
! -- UTF8 --> KOI8R
  SELECT CONVERT('foo' USING utf_8_to_koi8_r);
! SELECT CONVERT('foo', 'UTF8', 'KOI8R');
! -- KOI8R --> UTF8
  SELECT CONVERT('foo' USING koi8_r_to_utf_8);
! SELECT CONVERT('foo', 'KOI8R', 'UTF8');
! -- UTF8 --> WIN1251
  SELECT CONVERT('foo' USING utf_8_to_windows_1251);
! SELECT CONVERT('foo', 'UTF8', 'WIN1251');
! -- WIN1251 --> UTF8
  SELECT CONVERT('foo' USING windows_1251_to_utf_8);
! SELECT CONVERT('foo', 'WIN1251', 'UTF8');
! -- UTF8 --> WIN866
  SELECT CONVERT('foo' USING utf_8_to_windows_866);
! SELECT CONVERT('foo', 'UTF8', 'WIN866');
! -- WIN866 --> UTF8
  SELECT CONVERT('foo' USING windows_866_to_utf_8);
! SELECT CONVERT('foo', 'WIN866', 'UTF8');
! -- EUC_CN --> UTF8
  SELECT CONVERT('foo' USING euc_cn_to_utf_8);
! SELECT CONVERT('foo', 'EUC_CN', 'UTF8');
! -- UTF8 --> EUC_CN
  SELECT CONVERT('foo' USING utf_8_to_euc_cn);
! SELECT CONVERT('foo', 'UTF8', 'EUC_CN');
! -- EUC_JP --> UTF8
  SELECT CONVERT('foo' USING euc_jp_to_utf_8);
! SELECT CONVERT('foo', 'EUC_JP', 'UTF8');
! -- UTF8 --> EUC_JP
  SELECT CONVERT('foo' USING utf_8_to_euc_jp);
! SELECT CONVERT('foo', 'UTF8', 'EUC_JP');
! -- EUC_KR --> UTF8
  SELECT CONVERT('foo' USING euc_kr_to_utf_8);
! SELECT CONVERT('foo', 'EUC_KR', 'UTF8');
! -- UTF8 --> EUC_KR
  SELECT CONVERT('foo' USING utf_8_to_euc_kr);
! SELECT CONVERT('foo', 'UTF8', 'EUC_KR');
! -- EUC_TW --> UTF8
  SELECT CONVERT('foo' USING euc_tw_to_utf_8);
! SELECT CONVERT('foo', 'EUC_TW', 'UTF8');
! -- UTF8 --> EUC_TW
  SELECT CONVERT('foo' USING utf_8_to_euc_tw);
! SELECT CONVERT('foo', 'UTF8', 'EUC_TW');
! -- GB18030 --> UTF8
  SELECT CONVERT('foo' USING gb18030_to_utf_8);
! SELECT CONVERT('foo', 'GB18030', 'UTF8');
! -- UTF8 --> GB18030
  SELECT CONVERT('foo' USING utf_8_to_gb18030);
! SELECT CONVERT('foo', 'UTF8', 'GB18030');
! -- GBK --> UTF8
  SELECT CONVERT('foo' USING gbk_to_utf_8);
! SELECT CONVERT('foo', 'GBK', 'UTF8');
! -- UTF8 --> GBK
  SELECT CONVERT('foo' USING utf_8_to_gbk);
! SELECT CONVERT('foo', 'UTF8', 'GBK');
! -- UTF8 --> LATIN2
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_2);
! SELECT CONVERT('foo', 'UTF8', 'LATIN2');
! -- LATIN2 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_2_to_utf_8);
! SELECT CONVERT('foo', 'LATIN2', 'UTF8');
! -- UTF8 --> LATIN3
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_3);
! SELECT CONVERT('foo', 'UTF8', 'LATIN3');
! -- LATIN3 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_3_to_utf_8);
! SELECT CONVERT('foo', 'LATIN3', 'UTF8');
! -- UTF8 --> LATIN4
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_4);
! SELECT CONVERT('foo', 'UTF8', 'LATIN4');
! -- LATIN4 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_4_to_utf_8);
! SELECT CONVERT('foo', 'LATIN4', 'UTF8');
! -- UTF8 --> LATIN5
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_9);
! SELECT CONVERT('foo', 'UTF8', 'LATIN5');
! -- LATIN5 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_9_to_utf_8);
! SELECT CONVERT('foo', 'LATIN5', 'UTF8');
! -- UTF8 --> LATIN6
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_10);
! SELECT CONVERT('foo', 'UTF8', 'LATIN6');
! -- LATIN6 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_10_to_utf_8);
! SELECT CONVERT('foo', 'LATIN6', 'UTF8');
! -- UTF8 --> LATIN7
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_13);
! SELECT CONVERT('foo', 'UTF8', 'LATIN7');
! -- LATIN7 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_13_to_utf_8);
! SELECT CONVERT('foo', 'LATIN7', 'UTF8');
! -- UTF8 --> LATIN8
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_14);
! SELECT CONVERT('foo', 'UTF8', 'LATIN8');
! -- LATIN8 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_14_to_utf_8);
! SELECT CONVERT('foo', 'LATIN8', 'UTF8');
! -- UTF8 --> LATIN9
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_15);
! SELECT CONVERT('foo', 'UTF8', 'LATIN9');
! -- LATIN9 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_15_to_utf_8);
! SELECT CONVERT('foo', 'LATIN9', 'UTF8');
! -- UTF8 --> LATIN10
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_16);
! SELECT CONVERT('foo', 'UTF8', 'LATIN10');
! -- LATIN10 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_16_to_utf_8);
! SELECT CONVERT('foo', 'LATIN10', 'UTF8');
! -- UTF8 --> ISO-8859-5
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_5);
! SELECT CONVERT('foo', 'UTF8', 'ISO-8859-5');
! -- ISO-8859-5 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_5_to_utf_8);
! SELECT CONVERT('foo', 'ISO-8859-5', 'UTF8');
! -- UTF8 --> ISO-8859-6
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_6);
! SELECT CONVERT('foo', 'UTF8', 'ISO-8859-6');
! -- ISO-8859-6 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_6_to_utf_8);
! SELECT CONVERT('foo', 'ISO-8859-6', 'UTF8');
! -- UTF8 --> ISO-8859-7
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_7);
! SELECT CONVERT('foo', 'UTF8', 'ISO-8859-7');
! -- ISO-8859-7 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_7_to_utf_8);
! SELECT CONVERT('foo', 'ISO-8859-7', 'UTF8');
! -- UTF8 --> ISO-8859-8
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_8);
! SELECT CONVERT('foo', 'UTF8', 'ISO-8859-8');
! -- ISO-8859-8 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_8_to_utf_8);
! SELECT CONVERT('foo', 'ISO-8859-8', 'UTF8');
! -- LATIN1 --> UTF8
  SELECT CONVERT('foo' USING iso_8859_1_to_utf_8);
! SELECT CONVERT('foo', 'LATIN1', 'UTF8');
! -- UTF8 --> LATIN1
  SELECT CONVERT('foo' USING utf_8_to_iso_8859_1);
! SELECT CONVERT('foo', 'UTF8', 'LATIN1');
! -- JOHAB --> UTF8
  SELECT CONVERT('foo' USING johab_to_utf_8);
! SELECT CONVERT('foo', 'JOHAB', 'UTF8');
! -- UTF8 --> JOHAB
  SELECT CONVERT('foo' USING utf_8_to_johab);
! SELECT CONVERT('foo', 'UTF8', 'JOHAB');
! -- SJIS --> UTF8
  SELECT CONVERT('foo' USING sjis_to_utf_8);
! SELECT CONVERT('foo', 'SJIS', 'UTF8');
! -- UTF8 --> SJIS
  SELECT CONVERT('foo' USING utf_8_to_sjis);
! SELECT CONVERT('foo', 'UTF8', 'SJIS');
! -- WIN1258 --> UTF8
  SELECT CONVERT('foo' USING tcvn_to_utf_8);
! SELECT CONVERT('foo', 'WIN1258', 'UTF8');
! -- UTF8 --> WIN1258
  SELECT CONVERT('foo' USING utf_8_to_tcvn);
! SELECT CONVERT('foo', 'UTF8', 'WIN1258');
! -- UHC --> UTF8
  SELECT CONVERT('foo' USING uhc_to_utf_8);
! SELECT CONVERT('foo', 'UHC', 'UTF8');
! -- UTF8 --> UHC
  SELECT CONVERT('foo' USING utf_8_to_uhc);
! SELECT CONVERT('foo', 'UTF8', 'UHC');
! -- UTF8 --> WIN1250
  SELECT CONVERT('foo' USING utf_8_to_windows_1250);
! SELECT CONVERT('foo', 'UTF8', 'WIN1250');
! -- WIN1250 --> UTF8
  SELECT CONVERT('foo' USING windows_1250_to_utf_8);
! SELECT CONVERT('foo', 'WIN1250', 'UTF8');
! -- UTF8 --> WIN1256
  SELECT CONVERT('foo' USING utf_8_to_windows_1256);
! SELECT CONVERT('foo', 'UTF8', 'WIN1256');
! -- WIN1256 --> UTF8
  SELECT CONVERT('foo' USING windows_1256_to_utf_8);
! SELECT CONVERT('foo', 'WIN1256', 'UTF8');
! -- UTF8 --> WIN874
  SELECT CONVERT('foo' USING utf_8_to_windows_874);
! SELECT CONVERT('foo', 'UTF8', 'WIN874');
! -- WIN874 --> UTF8
  SELECT CONVERT('foo' USING windows_874_to_utf_8);
! SELECT CONVERT('foo', 'WIN874', 'UTF8');
  --
  -- return to the super user
  --

pgsql-patches by date:

Previous
From: Ron Mayer
Date:
Subject: Re: A way to let Vacuum warn if FSM settings are low.
Next
From: Bruce Momjian
Date:
Subject: Re: [HACKERS] UTF8 or Unicode