Hi, While testing “Log remote NOTICE, WARNING, and similar messages using ereport()”, I noticed that libpqsrv_notice_receiver is only installed after libpqsrv_connect() finishes. As a result, NOTICE messages generated during connection establishment are missed by ereport() and are still printed to stderr.
To reproduce the issue, I created a separate database called remotedb and
defined a login trigger that emits a NOTICE message:
```
CREATE DATABASE remotedb;
\c remotedb
CREATE OR REPLACE FUNCTION repro_login_notice()
RETURNS event_trigger
LANGUAGE plpgsql AS $$
BEGIN
RAISE NOTICE 'startup notice from remotedb login trigger';
END;
$$;
CREATE EVENT TRIGGER repro_login_notice_trg
ON login
EXECUTE FUNCTION repro_login_notice();
ALTER EVENT TRIGGER repro_login_notice_trg ENABLE ALWAYS;
```
Then, from another database:
```
evantest=# create extension dblink;
CREATE EXTENSION
evantest=# SELECT dblink_connect('host=127.0.0.1 port=5432 dbname=remotedb
user=chaol sslmode=disable gssencmode=disable');
dblink_connect
----------------
OK
(1 row)
```
In the system log, the NOTICE message is printed directly:
```
2026-05-20 13:02:19.350 CST [24909] STATEMENT: SELECT
dblink_connect('host=127.0.0.1 port=5432 dbname=remotedb user=chaol
sslmode=disable gssencmode=disable');
NOTICE: startup notice from remotedb login trigger
```
To fix that, I think we should install libpqsrv_notice_receiver before
libpqsrv_connect_internal(). In the attached patch, I added two helpers:
libpqsrv_connect_with_notice_receiver() and
libpqsrv_connect_params_with_notice_receiver().
With the fix, the NOTICE message now looks like this:
```
2026-05-20 14:44:49.296 CST [45567] LOG: received message via remote
connection: NOTICE: startup notice from remotedb login trigger
2026-05-20 14:44:49.296 CST [45567] STATEMENT: SELECT
dblink_connect('host=127.0.0.1 port=5432 dbname=remotedb user=chaol
sslmode=disable gssencmode=disable');
```
Please see the attached patch for details.
Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/
v1-0001-Set-notice-receiver-before-libpq-connection-start.patch
Description: Binary data
