summaryrefslogtreecommitdiff
path: root/src/backend/utils/mb/wchar.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2009-03-02 21:19:14 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2009-03-02 21:19:14 +0000
commit40df3efa763cd00c0ee4fe0cec3a650afb710e46 (patch)
treed20f5d4cae09d075df9bb778e2ac400fa5706f3d /src/backend/utils/mb/wchar.c
parent5f1f0db8727d8f0377f530ba1b05741891166a57 (diff)
When we are in error recursion trouble, arrange to suppress translation and
encoding conversion of any elog/ereport message being sent to the frontend. This generalizes a patch that I put in last October, which suppressed translation of only specific messages known to be associated with recursive can't-translate-the-message behavior. As shown in bug #4680, we need a more general answer in order to have some hope of coping with broken encoding conversion setups. This approach seems a good deal less klugy anyway. Patch in all supported branches.
Diffstat (limited to 'src/backend/utils/mb/wchar.c')
-rw-r--r--src/backend/utils/mb/wchar.c17
1 files changed, 2 insertions, 15 deletions
diff --git a/src/backend/utils/mb/wchar.c b/src/backend/utils/mb/wchar.c
index 0d1086f959c..4b8f2f221c2 100644
--- a/src/backend/utils/mb/wchar.c
+++ b/src/backend/utils/mb/wchar.c
@@ -1,7 +1,7 @@
/*
* conversion functions between pg_wchar and multibyte streams.
* Tatsuo Ishii
- * $PostgreSQL: pgsql/src/backend/utils/mb/wchar.c,v 1.40.4.6 2009/01/29 19:25:01 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/mb/wchar.c,v 1.40.4.7 2009/03/02 21:19:13 tgl Exp $
*
* WIN1250 client encoding updated by Pavel Behal
*
@@ -1385,20 +1385,7 @@ report_untranslatable_char(int src_encoding, int dest_encoding,
for (j = 0; j < jlimit; j++)
p += sprintf(p, "%02x", (unsigned char) mbstr[j]);
- /*
- * In an error recursion situation, don't try to translate the message.
- * This gets us out of trouble if the problem is failure to convert
- * this very message (after translation) to the client encoding.
- */
- if (in_error_recursion_trouble())
- ereport(ERROR,
- (errcode(ERRCODE_UNTRANSLATABLE_CHARACTER),
- errmsg_internal("character 0x%s of encoding \"%s\" has no equivalent in \"%s\"",
- buf,
- pg_enc2name_tbl[src_encoding].name,
- pg_enc2name_tbl[dest_encoding].name)));
- else
- ereport(ERROR,
+ ereport(ERROR,
(errcode(ERRCODE_UNTRANSLATABLE_CHARACTER),
errmsg("character 0x%s of encoding \"%s\" has no equivalent in \"%s\"",
buf,