Thread
-
Set notice receiver before libpq connection startup
Chao Li <li.evan.chao@gmail.com> — 2026-05-20T07:21:08Z
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/