From 40df3efa763cd00c0ee4fe0cec3a650afb710e46 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Mon, 2 Mar 2009 21:19:14 +0000 Subject: 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. --- src/backend/utils/mb/wchar.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) (limited to 'src/backend/utils/mb/wchar.c') 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, -- cgit v1.2.3