Use C99-designated initializer syntax for arrays related to encodings
authorMichael Paquier <[email protected]>
Thu, 29 Feb 2024 00:54:25 +0000 (09:54 +0900)
committerMichael Paquier <[email protected]>
Thu, 29 Feb 2024 00:54:25 +0000 (09:54 +0900)
This updates the following lookup arrays to use C99-designated
initializer syntax, indexed based on the enum pg_enc:
pg_enc2icu_tbl[]
pg_enc2name_tbl[]
pg_wchar_table[]

This is more readable, and removes problems with ordering mistakes as
this removes dependencies between the arrays and their lookup index in
the enum pg_enc.  So, adding new encodings becomes easier, even if this
does not happen often.

Author: Jelte Fennema-Nio
Reviewed-by: Jian He, Japin Li
Discussion: https://postgr.es/m/CAGECzQT3caUbcCcszNewCCmMbCuyP7XNAm60J3ybd6PN5kH2Dw@mail.gmail.com

src/common/encnames.c
src/common/wchar.c
src/include/mb/pg_wchar.h

index 710b747f6bdbf2774a41979ac9dea27119081c32..dba6bd2c9eef4e1a53db1f90ea6dbcc3c1b071ef 100644 (file)
@@ -297,7 +297,6 @@ static const pg_encname pg_encname_tbl[] =
 
 /* ----------
  * These are "official" encoding names.
- * XXX must be sorted by the same order as enum pg_enc (in mb/pg_wchar.h)
  * ----------
  */
 #ifndef WIN32
@@ -308,48 +307,48 @@ static const pg_encname pg_encname_tbl[] =
 
 const pg_enc2name pg_enc2name_tbl[] =
 {
-   DEF_ENC2NAME(SQL_ASCII, 0),
-   DEF_ENC2NAME(EUC_JP, 20932),
-   DEF_ENC2NAME(EUC_CN, 20936),
-   DEF_ENC2NAME(EUC_KR, 51949),
-   DEF_ENC2NAME(EUC_TW, 0),
-   DEF_ENC2NAME(EUC_JIS_2004, 20932),
-   DEF_ENC2NAME(UTF8, 65001),
-   DEF_ENC2NAME(MULE_INTERNAL, 0),
-   DEF_ENC2NAME(LATIN1, 28591),
-   DEF_ENC2NAME(LATIN2, 28592),
-   DEF_ENC2NAME(LATIN3, 28593),
-   DEF_ENC2NAME(LATIN4, 28594),
-   DEF_ENC2NAME(LATIN5, 28599),
-   DEF_ENC2NAME(LATIN6, 0),
-   DEF_ENC2NAME(LATIN7, 0),
-   DEF_ENC2NAME(LATIN8, 0),
-   DEF_ENC2NAME(LATIN9, 28605),
-   DEF_ENC2NAME(LATIN10, 0),
-   DEF_ENC2NAME(WIN1256, 1256),
-   DEF_ENC2NAME(WIN1258, 1258),
-   DEF_ENC2NAME(WIN866, 866),
-   DEF_ENC2NAME(WIN874, 874),
-   DEF_ENC2NAME(KOI8R, 20866),
-   DEF_ENC2NAME(WIN1251, 1251),
-   DEF_ENC2NAME(WIN1252, 1252),
-   DEF_ENC2NAME(ISO_8859_5, 28595),
-   DEF_ENC2NAME(ISO_8859_6, 28596),
-   DEF_ENC2NAME(ISO_8859_7, 28597),
-   DEF_ENC2NAME(ISO_8859_8, 28598),
-   DEF_ENC2NAME(WIN1250, 1250),
-   DEF_ENC2NAME(WIN1253, 1253),
-   DEF_ENC2NAME(WIN1254, 1254),
-   DEF_ENC2NAME(WIN1255, 1255),
-   DEF_ENC2NAME(WIN1257, 1257),
-   DEF_ENC2NAME(KOI8U, 21866),
-   DEF_ENC2NAME(SJIS, 932),
-   DEF_ENC2NAME(BIG5, 950),
-   DEF_ENC2NAME(GBK, 936),
-   DEF_ENC2NAME(UHC, 949),
-   DEF_ENC2NAME(GB18030, 54936),
-   DEF_ENC2NAME(JOHAB, 0),
-   DEF_ENC2NAME(SHIFT_JIS_2004, 932)
+   [PG_SQL_ASCII] = DEF_ENC2NAME(SQL_ASCII, 0),
+   [PG_EUC_JP] = DEF_ENC2NAME(EUC_JP, 20932),
+   [PG_EUC_CN] = DEF_ENC2NAME(EUC_CN, 20936),
+   [PG_EUC_KR] = DEF_ENC2NAME(EUC_KR, 51949),
+   [PG_EUC_TW] = DEF_ENC2NAME(EUC_TW, 0),
+   [PG_EUC_JIS_2004] = DEF_ENC2NAME(EUC_JIS_2004, 20932),
+   [PG_UTF8] = DEF_ENC2NAME(UTF8, 65001),
+   [PG_MULE_INTERNAL] = DEF_ENC2NAME(MULE_INTERNAL, 0),
+   [PG_LATIN1] = DEF_ENC2NAME(LATIN1, 28591),
+   [PG_LATIN2] = DEF_ENC2NAME(LATIN2, 28592),
+   [PG_LATIN3] = DEF_ENC2NAME(LATIN3, 28593),
+   [PG_LATIN4] = DEF_ENC2NAME(LATIN4, 28594),
+   [PG_LATIN5] = DEF_ENC2NAME(LATIN5, 28599),
+   [PG_LATIN6] = DEF_ENC2NAME(LATIN6, 0),
+   [PG_LATIN7] = DEF_ENC2NAME(LATIN7, 0),
+   [PG_LATIN8] = DEF_ENC2NAME(LATIN8, 0),
+   [PG_LATIN9] = DEF_ENC2NAME(LATIN9, 28605),
+   [PG_LATIN10] = DEF_ENC2NAME(LATIN10, 0),
+   [PG_WIN1256] = DEF_ENC2NAME(WIN1256, 1256),
+   [PG_WIN1258] = DEF_ENC2NAME(WIN1258, 1258),
+   [PG_WIN866] = DEF_ENC2NAME(WIN866, 866),
+   [PG_WIN874] = DEF_ENC2NAME(WIN874, 874),
+   [PG_KOI8R] = DEF_ENC2NAME(KOI8R, 20866),
+   [PG_WIN1251] = DEF_ENC2NAME(WIN1251, 1251),
+   [PG_WIN1252] = DEF_ENC2NAME(WIN1252, 1252),
+   [PG_ISO_8859_5] = DEF_ENC2NAME(ISO_8859_5, 28595),
+   [PG_ISO_8859_6] = DEF_ENC2NAME(ISO_8859_6, 28596),
+   [PG_ISO_8859_7] = DEF_ENC2NAME(ISO_8859_7, 28597),
+   [PG_ISO_8859_8] = DEF_ENC2NAME(ISO_8859_8, 28598),
+   [PG_WIN1250] = DEF_ENC2NAME(WIN1250, 1250),
+   [PG_WIN1253] = DEF_ENC2NAME(WIN1253, 1253),
+   [PG_WIN1254] = DEF_ENC2NAME(WIN1254, 1254),
+   [PG_WIN1255] = DEF_ENC2NAME(WIN1255, 1255),
+   [PG_WIN1257] = DEF_ENC2NAME(WIN1257, 1257),
+   [PG_KOI8U] = DEF_ENC2NAME(KOI8U, 21866),
+   [PG_SJIS] = DEF_ENC2NAME(SJIS, 932),
+   [PG_BIG5] = DEF_ENC2NAME(BIG5, 950),
+   [PG_GBK] = DEF_ENC2NAME(GBK, 936),
+   [PG_UHC] = DEF_ENC2NAME(UHC, 949),
+   [PG_GB18030] = DEF_ENC2NAME(GB18030, 54936),
+   [PG_JOHAB] = DEF_ENC2NAME(JOHAB, 0),
+   [PG_SHIFT_JIS_2004] = DEF_ENC2NAME(SHIFT_JIS_2004, 932),
 };
 
 /* ----------
@@ -414,41 +413,41 @@ const pg_enc2gettext pg_enc2gettext_tbl[] =
  */
 static const char *const pg_enc2icu_tbl[] =
 {
-   NULL,                       /* PG_SQL_ASCII */
-   "EUC-JP",                   /* PG_EUC_JP */
-   "EUC-CN",                   /* PG_EUC_CN */
-   "EUC-KR",                   /* PG_EUC_KR */
-   "EUC-TW",                   /* PG_EUC_TW */
-   NULL,                       /* PG_EUC_JIS_2004 */
-   "UTF-8",                    /* PG_UTF8 */
-   NULL,                       /* PG_MULE_INTERNAL */
-   "ISO-8859-1",               /* PG_LATIN1 */
-   "ISO-8859-2",               /* PG_LATIN2 */
-   "ISO-8859-3",               /* PG_LATIN3 */
-   "ISO-8859-4",               /* PG_LATIN4 */
-   "ISO-8859-9",               /* PG_LATIN5 */
-   "ISO-8859-10",              /* PG_LATIN6 */
-   "ISO-8859-13",              /* PG_LATIN7 */
-   "ISO-8859-14",              /* PG_LATIN8 */
-   "ISO-8859-15",              /* PG_LATIN9 */
-   NULL,                       /* PG_LATIN10 */
-   "CP1256",                   /* PG_WIN1256 */
-   "CP1258",                   /* PG_WIN1258 */
-   "CP866",                    /* PG_WIN866 */
-   NULL,                       /* PG_WIN874 */
-   "KOI8-R",                   /* PG_KOI8R */
-   "CP1251",                   /* PG_WIN1251 */
-   "CP1252",                   /* PG_WIN1252 */
-   "ISO-8859-5",               /* PG_ISO_8859_5 */
-   "ISO-8859-6",               /* PG_ISO_8859_6 */
-   "ISO-8859-7",               /* PG_ISO_8859_7 */
-   "ISO-8859-8",               /* PG_ISO_8859_8 */
-   "CP1250",                   /* PG_WIN1250 */
-   "CP1253",                   /* PG_WIN1253 */
-   "CP1254",                   /* PG_WIN1254 */
-   "CP1255",                   /* PG_WIN1255 */
-   "CP1257",                   /* PG_WIN1257 */
-   "KOI8-U",                   /* PG_KOI8U */
+   [PG_SQL_ASCII] = NULL,
+   [PG_EUC_JP] = "EUC-JP",
+   [PG_EUC_CN] = "EUC-CN",
+   [PG_EUC_KR] = "EUC-KR",
+   [PG_EUC_TW] = "EUC-TW",
+   [PG_EUC_JIS_2004] = NULL,
+   [PG_UTF8] = "UTF-8",
+   [PG_MULE_INTERNAL] = NULL,
+   [PG_LATIN1] = "ISO-8859-1",
+   [PG_LATIN2] = "ISO-8859-2",
+   [PG_LATIN3] = "ISO-8859-3",
+   [PG_LATIN4] = "ISO-8859-4",
+   [PG_LATIN5] = "ISO-8859-9",
+   [PG_LATIN6] = "ISO-8859-10",
+   [PG_LATIN7] = "ISO-8859-13",
+   [PG_LATIN8] = "ISO-8859-14",
+   [PG_LATIN9] = "ISO-8859-15",
+   [PG_LATIN10] = NULL,
+   [PG_WIN1256] = "CP1256",
+   [PG_WIN1258] = "CP1258",
+   [PG_WIN866] = "CP866",
+   [PG_WIN874] = NULL,
+   [PG_KOI8R] = "KOI8-R",
+   [PG_WIN1251] = "CP1251",
+   [PG_WIN1252] = "CP1252",
+   [PG_ISO_8859_5] = "ISO-8859-5",
+   [PG_ISO_8859_6] = "ISO-8859-6",
+   [PG_ISO_8859_7] = "ISO-8859-7",
+   [PG_ISO_8859_8] = "ISO-8859-8",
+   [PG_WIN1250] = "CP1250",
+   [PG_WIN1253] = "CP1253",
+   [PG_WIN1254] = "CP1254",
+   [PG_WIN1255] = "CP1255",
+   [PG_WIN1257] = "CP1257",
+   [PG_KOI8U] = "KOI8-U",
 };
 
 StaticAssertDecl(lengthof(pg_enc2icu_tbl) == PG_ENCODING_BE_LAST + 1,
index 7c5ce5ca081faa388cb42835d63e4f64973b318e..7e7a7507d5cc8d563b325591c1edd050c39d5de7 100644 (file)
@@ -2071,52 +2071,51 @@ pg_utf8_islegal(const unsigned char *source, int length)
 /*
  *-------------------------------------------------------------------
  * encoding info table
- * XXX must be sorted by the same order as enum pg_enc (in mb/pg_wchar.h)
  *-------------------------------------------------------------------
  */
 const pg_wchar_tbl pg_wchar_table[] = {
-   {pg_ascii2wchar_with_len, pg_wchar2single_with_len, pg_ascii_mblen, pg_ascii_dsplen, pg_ascii_verifychar, pg_ascii_verifystr, 1},   /* PG_SQL_ASCII */
-   {pg_eucjp2wchar_with_len, pg_wchar2euc_with_len, pg_eucjp_mblen, pg_eucjp_dsplen, pg_eucjp_verifychar, pg_eucjp_verifystr, 3},  /* PG_EUC_JP */
-   {pg_euccn2wchar_with_len, pg_wchar2euc_with_len, pg_euccn_mblen, pg_euccn_dsplen, pg_euccn_verifychar, pg_euccn_verifystr, 2},  /* PG_EUC_CN */
-   {pg_euckr2wchar_with_len, pg_wchar2euc_with_len, pg_euckr_mblen, pg_euckr_dsplen, pg_euckr_verifychar, pg_euckr_verifystr, 3},  /* PG_EUC_KR */
-   {pg_euctw2wchar_with_len, pg_wchar2euc_with_len, pg_euctw_mblen, pg_euctw_dsplen, pg_euctw_verifychar, pg_euctw_verifystr, 4},  /* PG_EUC_TW */
-   {pg_eucjp2wchar_with_len, pg_wchar2euc_with_len, pg_eucjp_mblen, pg_eucjp_dsplen, pg_eucjp_verifychar, pg_eucjp_verifystr, 3},  /* PG_EUC_JIS_2004 */
-   {pg_utf2wchar_with_len, pg_wchar2utf_with_len, pg_utf_mblen, pg_utf_dsplen, pg_utf8_verifychar, pg_utf8_verifystr, 4},  /* PG_UTF8 */
-   {pg_mule2wchar_with_len, pg_wchar2mule_with_len, pg_mule_mblen, pg_mule_dsplen, pg_mule_verifychar, pg_mule_verifystr, 4},  /* PG_MULE_INTERNAL */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_LATIN1 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_LATIN2 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_LATIN3 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_LATIN4 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_LATIN5 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_LATIN6 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_LATIN7 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_LATIN8 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_LATIN9 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_LATIN10 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_WIN1256 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_WIN1258 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_WIN866 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_WIN874 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_KOI8R */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_WIN1251 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_WIN1252 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* ISO-8859-5 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* ISO-8859-6 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* ISO-8859-7 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* ISO-8859-8 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_WIN1250 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_WIN1253 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_WIN1254 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_WIN1255 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_WIN1257 */
-   {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},  /* PG_KOI8U */
-   {0, 0, pg_sjis_mblen, pg_sjis_dsplen, pg_sjis_verifychar, pg_sjis_verifystr, 2},    /* PG_SJIS */
-   {0, 0, pg_big5_mblen, pg_big5_dsplen, pg_big5_verifychar, pg_big5_verifystr, 2},    /* PG_BIG5 */
-   {0, 0, pg_gbk_mblen, pg_gbk_dsplen, pg_gbk_verifychar, pg_gbk_verifystr, 2},    /* PG_GBK */
-   {0, 0, pg_uhc_mblen, pg_uhc_dsplen, pg_uhc_verifychar, pg_uhc_verifystr, 2},    /* PG_UHC */
-   {0, 0, pg_gb18030_mblen, pg_gb18030_dsplen, pg_gb18030_verifychar, pg_gb18030_verifystr, 4},    /* PG_GB18030 */
-   {0, 0, pg_johab_mblen, pg_johab_dsplen, pg_johab_verifychar, pg_johab_verifystr, 3},    /* PG_JOHAB */
-   {0, 0, pg_sjis_mblen, pg_sjis_dsplen, pg_sjis_verifychar, pg_sjis_verifystr, 2} /* PG_SHIFT_JIS_2004 */
+   [PG_SQL_ASCII] = {pg_ascii2wchar_with_len, pg_wchar2single_with_len, pg_ascii_mblen, pg_ascii_dsplen, pg_ascii_verifychar, pg_ascii_verifystr, 1},
+   [PG_EUC_JP] = {pg_eucjp2wchar_with_len, pg_wchar2euc_with_len, pg_eucjp_mblen, pg_eucjp_dsplen, pg_eucjp_verifychar, pg_eucjp_verifystr, 3},
+   [PG_EUC_CN] = {pg_euccn2wchar_with_len, pg_wchar2euc_with_len, pg_euccn_mblen, pg_euccn_dsplen, pg_euccn_verifychar, pg_euccn_verifystr, 2},
+   [PG_EUC_KR] = {pg_euckr2wchar_with_len, pg_wchar2euc_with_len, pg_euckr_mblen, pg_euckr_dsplen, pg_euckr_verifychar, pg_euckr_verifystr, 3},
+   [PG_EUC_TW] = {pg_euctw2wchar_with_len, pg_wchar2euc_with_len, pg_euctw_mblen, pg_euctw_dsplen, pg_euctw_verifychar, pg_euctw_verifystr, 4},
+   [PG_EUC_JIS_2004] = {pg_eucjp2wchar_with_len, pg_wchar2euc_with_len, pg_eucjp_mblen, pg_eucjp_dsplen, pg_eucjp_verifychar, pg_eucjp_verifystr, 3},
+   [PG_UTF8] = {pg_utf2wchar_with_len, pg_wchar2utf_with_len, pg_utf_mblen, pg_utf_dsplen, pg_utf8_verifychar, pg_utf8_verifystr, 4},
+   [PG_MULE_INTERNAL] = {pg_mule2wchar_with_len, pg_wchar2mule_with_len, pg_mule_mblen, pg_mule_dsplen, pg_mule_verifychar, pg_mule_verifystr, 4},
+   [PG_LATIN1] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_LATIN2] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_LATIN3] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_LATIN4] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_LATIN5] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_LATIN6] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_LATIN7] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_LATIN8] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_LATIN9] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_LATIN10] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_WIN1256] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_WIN1258] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_WIN866] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_WIN874] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_KOI8R] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_WIN1251] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_WIN1252] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_ISO_8859_5] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_ISO_8859_6] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_ISO_8859_7] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_ISO_8859_8] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_WIN1250] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_WIN1253] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_WIN1254] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_WIN1255] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_WIN1257] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_KOI8U] = {pg_latin12wchar_with_len, pg_wchar2single_with_len, pg_latin1_mblen, pg_latin1_dsplen, pg_latin1_verifychar, pg_latin1_verifystr, 1},
+   [PG_SJIS] = {0, 0, pg_sjis_mblen, pg_sjis_dsplen, pg_sjis_verifychar, pg_sjis_verifystr, 2},
+   [PG_BIG5] = {0, 0, pg_big5_mblen, pg_big5_dsplen, pg_big5_verifychar, pg_big5_verifystr, 2},
+   [PG_GBK] = {0, 0, pg_gbk_mblen, pg_gbk_dsplen, pg_gbk_verifychar, pg_gbk_verifystr, 2},
+   [PG_UHC] = {0, 0, pg_uhc_mblen, pg_uhc_dsplen, pg_uhc_verifychar, pg_uhc_verifystr, 2},
+   [PG_GB18030] = {0, 0, pg_gb18030_mblen, pg_gb18030_dsplen, pg_gb18030_verifychar, pg_gb18030_verifystr, 4},
+   [PG_JOHAB] = {0, 0, pg_johab_mblen, pg_johab_dsplen, pg_johab_verifychar, pg_johab_verifystr, 3},
+   [PG_SHIFT_JIS_2004] = {0, 0, pg_sjis_mblen, pg_sjis_dsplen, pg_sjis_verifychar, pg_sjis_verifystr, 2},
 };
 
 /*
index 1d521bea24acb146b126c74495bd08bfbbe0afbf..fd91aefbcb70846e1f5ce63f7d7ccea0820b733d 100644 (file)
@@ -224,11 +224,9 @@ typedef unsigned int pg_wchar;
 /*
  * PostgreSQL encoding identifiers
  *
- * WARNING: the order of this enum must be same as order of entries
- *         in the pg_enc2name_tbl[] array (in src/common/encnames.c), and
- *         in the pg_wchar_table[] array (in src/common/wchar.c)!
- *
- *         If you add some encoding don't forget to check
+ * WARNING: If you add some encoding don't forget to update
+ *         the pg_enc2name_tbl[] array (in src/common/encnames.c) and
+ *         the pg_wchar_table[] array (in src/common/wchar.c) and to check
  *         PG_ENCODING_BE_LAST macro.
  *
  * PG_SQL_ASCII is default encoding and must be = 0.