]> granicus.if.org Git - postgresql/commitdiff
Improve dblink error message when remote does not provide it
authorJoe Conway <mail@joeconway.com>
Wed, 21 Dec 2016 23:48:05 +0000 (15:48 -0800)
committerJoe Conway <mail@joeconway.com>
Wed, 21 Dec 2016 23:52:01 +0000 (15:52 -0800)
When dblink or postgres_fdw detects an error on the remote side of the
connection, it will try to construct a local error message as best it
can using libpq's PQresultErrorField(). When no primary message is
available, it was bailing out with an unhelpful "unknown error". Make
that message better and more style guide compliant. Per discussion
on hackers.

Backpatch to 9.2 except postgres_fdw which didn't exist before 9.3.

Discussion: https://postgr.es/m/19872.1482338965%40sss.pgh.pa.us

contrib/dblink/dblink.c
contrib/postgres_fdw/connection.c

index d4f9090f062a06b72dfc49ccd11473f2fda21d37..ee45cd244c60153c82d666e3d35f7d2af9f95e93 100644 (file)
@@ -2705,7 +2705,7 @@ dblink_res_error(const char *conname, PGresult *res, const char *dblink_context_
        ereport(level,
                        (errcode(sqlstate),
                         message_primary ? errmsg_internal("%s", message_primary) :
-                        errmsg("unknown error"),
+                        errmsg("could not obtain message string for remote error"),
                         message_detail ? errdetail_internal("%s", message_detail) : 0,
                         message_hint ? errhint("%s", message_hint) : 0,
                         message_context ? errcontext("%s", message_context) : 0,
index 8ca1c1c89869e52e8261b52ab5403ca5547b84fa..ff04f43cf20e205738555a56b3323516f3390e8b 100644 (file)
@@ -567,7 +567,7 @@ pgfdw_report_error(int elevel, PGresult *res, PGconn *conn,
                ereport(elevel,
                                (errcode(sqlstate),
                                 message_primary ? errmsg_internal("%s", message_primary) :
-                                errmsg("unknown error"),
+                                errmsg("could not obtain message string for remote error"),
                           message_detail ? errdetail_internal("%s", message_detail) : 0,
                                 message_hint ? errhint("%s", message_hint) : 0,
                                 message_context ? errcontext("%s", message_context) : 0,