Improve dblink error message when remote does not provide it
authorJoe Conway
Wed, 21 Dec 2016 23:48:40 +0000 (15:48 -0800)
committerJoe Conway
Wed, 21 Dec 2016 23:51:46 +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 af062fa6113f2a029d4dc0e2aeec3964dcf1daef..300fc380fed15bda69eb580ff803ee08c2a3a7e9 100644 (file)
@@ -2710,7 +2710,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 39d2922455453f77e7e02fd3e0f3635722943c79..a2734681433b91ba278d8fd2b7eba04c9252fb78 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,