Improve dblink error message when remote does not provide it
authorJoe Conway
Wed, 21 Dec 2016 23:48:28 +0000 (15:48 -0800)
committerJoe Conway
Wed, 21 Dec 2016 23:51:52 +0000 (15:51 -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 009b877e47161661baf26805d29e3a7abb8d8d05..b6d6c553d052ca85cd2541c6e55468d857f98817 100644 (file)
@@ -2707,7 +2707,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 116be7ddcb77ce2509e8c4d538fc988d8f80b991..12f736e403a1919be3053183956ba343e095523d 100644 (file)
@@ -496,7 +496,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,