Re: Psql meta-command conninfo+ - Mailing list pgsql-hackers

From Hunaid Sohail
Subject Re: Psql meta-command conninfo+
Date
Msg-id CAMWA6ybtLkLqmFZxYZ2Cjj73WxBWu5n3Wa3g=3VhBVKs3_9wTw@mail.gmail.com
Whole thread Raw
In response to Re: Psql meta-command conninfo+  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
Hi,

On Mon, Sep 16, 2024 at 8:31 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
Alvaro Herrera <alvherre@alvh.no-ip.org> writes:
> On 2024-Sep-16, Jim Jones wrote:
>> * The value of "Current User" does not match the function current_user()
>> --- as one might expcect. It is a little confusing, as there is no
>> mention of "Current User" in the docs. In case this is the intended
>> behaviour, could you please add it to the docs?

> It is intended.  As Peter said[1], what we wanted was to display
> client-side info, so PQuser() is the right thing to do.  Now maybe
> "Current User" is not the perfect column header, but at least the
> definition seems consistent with the desired end result.

Seems like "Session User" would be closer to being accurate, since
PQuser()'s result does not change when you do SET ROLE etc.

> Now, I think
> the current docs saying to look at session_user() are wrong, they should
> point to the libpq docs for the function instead; something like "The
> name of the current user, as returned by PQuser()" and so on.

Sure, but this does not excuse choosing a misleading column name
when there are better choices readily available.

Maybe we can rename "Current User" to "Authenticated User" just like the previous author because it is a user returned by PQuser().

For the "Session User", I believe it is working as expected, since session_user can be changed with SET SESSION AUTHORIZATION.

```
$ bin/psql "port=5430 sslmode=disable dbname=postgres" -x -h localhost

postgres=# \conninfo+
Connection Information
-[ RECORD 1 ]--------+----------
Database             | postgres
Current User         | hunaid
Session User         | hunaid
Host                 | localhost
Host Address         | 127.0.0.1
Port                 | 5430
Protocol Version     | 3
SSL Connection       | false
GSSAPI Authenticated | false
Client Encoding      | UTF8
Server Encoding      | UTF8
Backend PID          | 1337

postgres=# set SESSION AUTHORIZATION postgres;
SET
postgres=# \conninfo+
Connection Information
-[ RECORD 1 ]--------+----------
Database             | postgres
Current User         | hunaid
Session User         | postgres
Host                 | localhost
Host Address         | 127.0.0.1
Port                 | 5430
Protocol Version     | 3
SSL Connection       | false
GSSAPI Authenticated | false
Client Encoding      | UTF8
Server Encoding      | UTF8
Backend PID          | 1337
```

We can update the docs as follows:
Authenticated User: The name of the user returned by PQuser().
Session User: The session user's name.

Opinions?

Regards,
Hunaid Sohail

pgsql-hackers by date:

Previous
From: Nazir Bilal Yavuz
Date:
Subject: Re: per backend I/O statistics
Next
From: Greg Sabino Mullane
Date:
Subject: Re: Exit walsender before confirming remote flush in logical replication