Re: Enhance pg_stat_wal_receiver view to display connected host

Haribabu Kommi <kommi.haribabu@gmail.com>

From: Haribabu Kommi <kommi.haribabu@gmail.com>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: Michael Paquier <michael.paquier@gmail.com>, Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2018-01-15T06:51:58Z
Lists: pgsql-hackers

Attachments

On Mon, Jan 8, 2018 at 3:32 PM, Haribabu Kommi <kommi.haribabu@gmail.com>
wrote:

>
>
> On Fri, Jan 5, 2018 at 11:15 PM, Alvaro Herrera <alvherre@alvh.no-ip.org>
> wrote:
>
>> Haribabu Kommi wrote:
>>
>> > or
>> >
>> > write two new functions PQconnhost() and PQconnhostaddr() to return the
>> > connected host and hostaddr and reuse the PQport() function.
>>
>> How about using an API similar to PQconninfo, where we return an array
>> of connection options used?  Say, PQeffectiveConninfo().  This seems to
>> me to reduce ugliness in the API, and be more generally useful.
>>
>
> OK. Added the new API PQeffectiveConninfo() that returns all the connection
> options that are actively used. Currently the connection options host,
> hostaddr
> and port may change based on the active connection and rest of the options
> may be same.
>
> walrecvr could display as an array or just flatten to a string -- not
>> sure what's the better option there.
>
>
> Currently I went with a string model to display all the effective_conninfo
> options. I feel if we go with string approach, adding a new option that
> gets
> updated in future is simple.
>
> postgres=# select conninfo, effective_conninfo from pg_stat_wal_receiver;
> -[ RECORD 1 ]------+----------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> -------------------------------------------------
> conninfo           | user=kommih passfile=/home/kommih/.pgpass
> dbname=replication hostaddr=127.0.0.1,127.0.0.1 port=5434,5432
> application_name=s2 fallback_application_name=walreceiver sslmode=disable
> sslcompression=1 target_session_attrs=any
> effective_conninfo | user=kommih passfile=/home/kommih/.pgpass
> dbname=replication hostaddr=127.0.0.1 port=5432 application_name=s2
> fallback_application_name=walreceiver sslmode=disable sslcompression=1
> target_session_attrs=any
>
>
> Majority of the options are same in both conninfo and effective_conninfo
> columns.
> Instead of "effective_conninfo" column, how about something like
> "remote_server"
> as string that displays only the host, hostaddr and port options that
> differs with
> each connection?
>

Instead of effective_conninfo, I changed the column name as
remote_serve_info and
display only the host, hostaddr and port details. These are the only values
that differs
with each remote connection.

patches attached.

Regards,
Hari Babu
Fujitsu Australia

Commits

  1. Enhance pg_stat_wal_receiver view to display host and port of sender server.

  2. Allow multiple hostaddrs to go with multiple hostnames.

  3. libpq: Fix inadvertent change in PQhost() behavior.

  4. libpq: Allow connection strings and URIs to specify multiple hosts.