Add the database name to the ps display of logical WAL senders
authorMichael Paquier <[email protected]>
Thu, 24 Nov 2022 07:07:59 +0000 (16:07 +0900)
committerMichael Paquier <[email protected]>
Thu, 24 Nov 2022 07:07:59 +0000 (16:07 +0900)
Logical WAL senders display now as follows, gaining a database name:
postgres: walsender USER DATABASE HOST(PORT) STATE

Physical WAL senders show up the same, as of:
postgres: walsender USER HOST(PORT) STATE

This information was missing, hence it was not possible to know from ps
if a WAL sender was a logical or a physical one, and on which database
it is connected when it is logical.

Author: Tatsuhiro Nakamori
Reviewed-by: Fujii Masao, Bharath Rupireddy
Discussion: https://postgr.es/m/36a3b137e82e0ea9fe7e4234f03b64a1@oss.nttdata.com

src/backend/postmaster/postmaster.c

index c83cc8cc6cd3e557e7f23a0f344443332148a935..a8a246921f2377a8caa718f96e676bd8b075b336 100644 (file)
@@ -4365,7 +4365,7 @@ BackendInitialize(Port *port)
    if (am_walsender)
        appendStringInfo(&ps_data, "%s ", GetBackendTypeDesc(B_WAL_SENDER));
    appendStringInfo(&ps_data, "%s ", port->user_name);
-   if (!am_walsender)
+   if (port->database_name[0] != '\0')
        appendStringInfo(&ps_data, "%s ", port->database_name);
    appendStringInfoString(&ps_data, port->remote_host);
    if (port->remote_port[0] != '\0')