On 2024-02-07 05:13 +0100, Maiquel Grassi wrote: > On Tue, Feb 06, 2024 at 09:45:54PM +0000, Maiquel Grassi wrote: > > My initial idea has always been that they should continue to appear > > because \conninfo+ should show all the things that \conninfo shows and > > add more information. I think that's the purpose of the 'plus.' Now we're > > on a better path than the initial one. We can still add the socket > > directory and the host. > > Agreed. > > --//-- > > I believe it's resolved reasonably well this way: > > SELECT > pg_catalog.current_database() AS "Database", > current_user AS "User", > pg_catalog.current_setting('server_version') AS "Server Version", > CASE > WHEN pg_catalog.inet_server_addr() IS NULL > THEN 'NULL' > ELSE pg_catalog.inet_server_addr()::text > END AS "Server Address",
Should be NULL instead of string 'NULL'. So the entire CASE expression is redundant and you can just return pg_catalog.inet_server_addr(). > pg_catalog.current_setting('port') AS "Port", > CASE > WHEN pg_catalog.inet_client_addr() IS NULL > THEN 'NULL' > ELSE pg_catalog.inet_client_addr()::text > END AS "Client Address", > CASE > WHEN pg_catalog.inet_client_port() IS NULL > THEN 'NULL' > ELSE pg_catalog.inet_client_port()::text > END AS "Client Port", Same here. > pg_catalog.pg_backend_pid() AS "Session PID", > CASE > WHEN pg_catalog.current_setting('unix_socket_directories') = '' > THEN 'NULL' > ELSE pg_catalog.current_setting('unix_socket_directories') > END AS "Socket Directory", The CASE expression can be simplified to: nullif(pg_catalog.current_setting('unix_socket_directories'), '') > CASE > WHEN > pg_catalog.inet_server_addr() IS NULL > AND pg_catalog.inet_client_addr() IS NULL > THEN 'NULL' > WHEN > pg_catalog.inet_server_addr() = pg_catalog.inet_client_addr() > THEN 'localhost' Is it safe to assume localhost here? \conninfo prints localhost only when I connect with psql -hlocalhost: $ psql -hlocalhost postgres psql (16.1) postgres=# \conninfo You are connected to database "postgres" as user "ewie" on host "localhost" (address "::1") at port "5432". postgres=# \q $ psql -h127.0.0.1 postgres psql (16.1) postgres=# \conninfo You are connected to database "postgres" as user "ewie" on host "127.0.0.1" at port "5432". > ELSE pg_catalog.inet_server_addr()::text > END AS "Host"; --//-- There really was no need for the CASES. However, they helped visualize the psql output since for the null value, no word is printed on the screen. I made the adjustment by removing this redundancy. Regarding the "Host" column, the most reliable way to solve this, I believe, is by using the "host" variable. So it's necessary to declare char *host = PQhost(pset.db); in listConnectionInformation() and use it in the SQL (see patch v5). This way, we have the same return from \conninfo reliably. Once again, I ran a series of tests. [postgres@localhost bin]$ ./psql psql (17devel) Type "help" for help. postgres=# \conninfo You are connected to database "postgres" as user "postgres" via socket in "/tmp" at port "5432". postgres=# \conninfo+ Current Connection Information Database | User | Server Version | Server Address | Server Port | Client Address | Client Port | Session PID | Socket Directory | Host ----------+----------+----------------+----------------+-------------+----------------+-------------+-------------+------------------+------ postgres | postgres | 17devel | | 5432 | | | 15898 | /tmp | (1 row) postgres=# \q [postgres@localhost bin]$ ./psql -h localhost psql (17devel) Type "help" for help. postgres=# \conninfo You are connected to database "postgres" as user "postgres" on host "localhost" (address "::1") at port "5432". postgres=# \conninfo+ Current Connection Information Database | User | Server Version | Server Address | Server Port | Client Address | Client Port | Session PID | Socket Directory | Host ----------+----------+----------------+----------------+-------------+----------------+-------------+-------------+------------------+----------- postgres | postgres | 17devel | ::1 | 5432 | ::1 | 47012 | 15900 | /tmp | localhost (1 row) postgres=# \q [postgres@localhost bin]$ ./psql -h ::1 psql (17devel) Type "help" for help. postgres=# \conninfo You are connected to database "postgres" as user "postgres" on host "::1" at port "5432". postgres=# \conninfo+ Current Connection Information Database | User | Server Version | Server Address | Server Port | Client Address | Client Port | Session PID | Socket Directory | Host ----------+----------+----------------+----------------+-------------+----------------+-------------+-------------+------------------+------ postgres | postgres | 17devel | ::1 | 5432 | ::1 | 47014 | 15905 | /tmp | ::1 (1 row) postgres=# \q [postgres@localhost bin]$ ./psql -h 127.0.0.1 psql (17devel) Type "help" for help. postgres=# \conninfo You are connected to database "postgres" as user "postgres" on host "127.0.0.1" at port "5432". postgres=# \conninfo+ Current Connection Information Database | User | Server Version | Server Address | Server Port | Client Address | Client Port | Session PID | Socket Directory | Host ----------+----------+----------------+----------------+-------------+----------------+-------------+-------------+------------------+----------- postgres | postgres | 17devel | 127.0.0.1 | 5432 | 127.0.0.1 | 35066 | 15908 | /tmp | 127.0.0.1 (1 row) postgres=# \q [postgres@localhost bin]$ ./psql -h 192.168.0.5 -p 5432 -d postgres -U postgres psql (17devel, server 14.3) Type "help" for help. postgres=# \conninfo You are connected to database "postgres" as user "postgres" on host "192.168.0.5" at port "5432". postgres=# \conninfo+ Current Connection Information Database | User | Server Version | Server Address | Server Port | Client Address | Client Port | Session PID | Socket Directory | Host ----------+----------+----------------+----------------+-------------+----------------+-------------+-------------+------------------+------------- postgres | postgres | 14.3 | 192.168.0.5 | 5432 | 192.168.0.5 | 60904 | 29264 | | 192.168.0.5 Regards, Maiquel O. Grassi.
v5-0001-psql-meta-command-conninfo-plus.patch
Description: v5-0001-psql-meta-command-conninfo-plus.patch