Improve dblink error message when remote does not provide it
authorJoe Conway <[email protected]>
Wed, 21 Dec 2016 23:48:15 +0000 (15:48 -0800)
committerJoe Conway <[email protected]>
Wed, 21 Dec 2016 23:51:57 +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 c5892d37cb3d474ccff54f179be0d9d18b68a5c6..0d9c414a0c4099803d2a98292e02ced67d1239de 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 1a1e5b5eae3b6a76412fe33aea8762faa85bb918..36e95157d49610466d81bc1bb64384f7006c9a8a 100644 (file)
@@ -495,7 +495,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,