Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
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

+2-1
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

+2-1
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)