1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-28 23:42:10 +03:00

Log remote NOTICE, WARNING, and similar messages using ereport().

Previously, NOTICE, WARNING, and similar messages received from remote
servers over replication, postgres_fdw, or dblink connections were printed
directly to stderr on the local server (e.g., the subscriber). As a result,
these messages lacked log prefixes (e.g., timestamp), making them harder
to trace and correlate with other log entries.

This commit addresses the issue by introducing a custom notice receiver
for replication, postgres_fdw, and dblink connections. These messages
are now logged via ereport(), ensuring they appear in the logs with proper
formatting and context, which improves clarity and aids in debugging.

Author: Vignesh C <vignesh21@gmail.com>
Reviewed-by: Álvaro Herrera <alvherre@kurilemu.de>
Reviewed-by: Fujii Masao <masao.fujii@gmail.com>
Discussion: https://postgr.es/m/CALDaNm2xsHpWRtLm-VL_HJCsaE3+1Y_n-jDEAr3-suxVqc3xoQ@mail.gmail.com
This commit is contained in:
Fujii Masao
2025-07-22 14:16:45 +09:00
parent 1b8bbee05d
commit 112faf1378
4 changed files with 43 additions and 0 deletions

View File

@ -240,6 +240,10 @@ dblink_get_conn(char *conname_or_str,
errmsg("could not establish connection"),
errdetail_internal("%s", msg)));
}
PQsetNoticeReceiver(conn, libpqsrv_notice_receiver,
gettext_noop("received message via remote connection"));
dblink_security_check(conn, NULL, connstr);
if (PQclientEncoding(conn) != GetDatabaseEncoding())
PQsetClientEncoding(conn, GetDatabaseEncodingName());
@ -338,6 +342,9 @@ dblink_connect(PG_FUNCTION_ARGS)
errdetail_internal("%s", msg)));
}
PQsetNoticeReceiver(conn, libpqsrv_notice_receiver,
gettext_noop("received message via remote connection"));
/* check password actually used if not superuser */
dblink_security_check(conn, connname, connstr);

View File

@ -625,6 +625,9 @@ connect_pg_server(ForeignServer *server, UserMapping *user)
server->servername),
errdetail_internal("%s", pchomp(PQerrorMessage(conn)))));
PQsetNoticeReceiver(conn, libpqsrv_notice_receiver,
gettext_noop("received message via remote connection"));
/* Perform post-connection security checks. */
pgfdw_security_check(keywords, values, user, conn);