Skip to content

Commit 557c39b

Browse files
committed
postgres_fdw: Fix unexpected reporting of empty message.
pgfdw_report_error() in postgres_fdw gets a message from PGresult or PGconn to report an error received from a remote server. Previously if it could get a message from neither of them, it reported empty message unexpectedly. The cause of this issue was that pgfdw_report_error() didn't handle properly the case where no message could be obtained and its local variable message_primary was set to '\0'. This commit improves pgfdw_report_error() so that it reports the message "could not obtain ..." when it gets no message and message_primary is set to '\0'. This is the same behavior as when message_primary is NULL. dblink_res_error() in dblink has the same issue, so this commit also improves it in the same way. Back-patch to all supported branches. Author: Fujii Masao Reviewed-by: Bharath Rupireddy Discussion: https://postgr.es/m/477c16c8-7ea4-20fc-38d5-ed3a77ed616c@oss.nttdata.com
1 parent 03774f9 commit 557c39b

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

contrib/dblink/dblink.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2801,7 +2801,8 @@ dblink_res_error(PGconn *conn, const char *conname, PGresult *res,
28012801

28022802
ereport(level,
28032803
(errcode(sqlstate),
2804-
message_primary ? errmsg_internal("%s", message_primary) :
2804+
(message_primary != NULL && message_primary[0] != '\0') ?
2805+
errmsg_internal("%s", message_primary) :
28052806
errmsg("could not obtain message string for remote error"),
28062807
message_detail ? errdetail_internal("%s", message_detail) : 0,
28072808
message_hint ? errhint("%s", message_hint) : 0,

contrib/postgres_fdw/connection.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -824,7 +824,8 @@ pgfdw_report_error(int elevel, PGresult *res, PGconn *conn,
824824

825825
ereport(elevel,
826826
(errcode(sqlstate),
827-
message_primary ? errmsg_internal("%s", message_primary) :
827+
(message_primary != NULL && message_primary[0] != '\0') ?
828+
errmsg_internal("%s", message_primary) :
828829
errmsg("could not obtain message string for remote error"),
829830
message_detail ? errdetail_internal("%s", message_detail) : 0,
830831
message_hint ? errhint("%s", message_hint) : 0,

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy