On 2025/06/03 20:22, Robert Treat wrote:
+1 on the idea to put it there; if someone gets confused about the
behavior, that seems like the place they'd go to look it up. Though I
would wordsmith the patch a little:

+          Note that the <structfield>Client User</structfield> field
shows the user at the time
+          of connection, while the
<structfield>Superuser</structfield> field indicates
+          whether the current user (in the current execution context) has
+          superuser privileges. These users are usually the same, but they can
+          differ, for example, if the current user was changed with the
+          <command>SET ROLE</command> command.

This looks good to me, thanks for the review! I've updated the patch (0002)
as you suggested and attached it.

I've also re-attached the 0001 patch that makes \conninfo report the full
protocol version, it's the same as the one I posted earlier in the thread.

Regards,

--
Fujii Masao
NTT DATA Japan Corporation
From fd2af2d3e2d98f015afecd532a33985b2758f0b3 Mon Sep 17 00:00:00 2001
From: Fujii Masao <fu...@postgresql.org>
Date: Mon, 2 Jun 2025 13:22:36 +0900
Subject: [PATCH v2 1/2] psql: Report full protocol version in \conninfo
 output.

Commit bba2fbc6238 modified \conninfo to display the protocol version
used by the current connection, but it only showed the major version (e.g., 3).

This commit updates \conninfo to display the full protocol version (e.g., 3.2).
Since support for new version 3.2 was added in v18, and the server supports
both 3.0 and 3.2, showing the complete version helps users understand
exactly which protocol version the current session is using.
---
 src/bin/psql/command.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c
index 81a5ba844ba..1f7635d0c23 100644
--- a/src/bin/psql/command.c
+++ b/src/bin/psql/command.c
@@ -778,6 +778,7 @@ exec_command_conninfo(PsqlScanState scan_state, bool 
active_branch)
        int                     ssl_in_use,
                                password_used,
                                gssapi_used;
+       int                     version_num;
        char       *paramval;
 
        if (!active_branch)
@@ -793,7 +794,9 @@ exec_command_conninfo(PsqlScanState scan_state, bool 
active_branch)
        /* Get values for the parameters */
        host = PQhost(pset.db);
        hostaddr = PQhostaddr(pset.db);
-       protocol_version = psprintf("%d", PQprotocolVersion(pset.db));
+       version_num = PQfullProtocolVersion(pset.db);
+       protocol_version = psprintf("%d.%d", version_num / 10000,
+                                                               version_num % 
10000);
        ssl_in_use = PQsslInUse(pset.db);
        password_used = PQconnectionUsedPassword(pset.db);
        gssapi_used = PQconnectionUsedGSSAPI(pset.db);
-- 
2.49.0

From ed85ff0365ab30f629415dc9fa9a141b84cd08ff Mon Sep 17 00:00:00 2001
From: Fujii Masao <fu...@postgresql.org>
Date: Tue, 3 Jun 2025 16:39:50 +0900
Subject: [PATCH v2 2/2] doc: Add note about "Client User" and "Superuser"
 fields in \conninfo output.

In the \conninfo psql command, the "Client User" column shows the user who
established the connection, while the "Superuser" column reflects whether
the current user in the current execution context is a superuser. This means
the users referred to in these columns can differ, for example, if the current
user was changed with the SET ROLE command.

This commit adds a note to the \conninfo documentation to clarify
this behavior and avoid potential confusion.
---
 doc/src/sgml/ref/psql-ref.sgml | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index 8f7d8758ca0..97d6327ed3b 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -1103,6 +1103,15 @@ SELECT $1 \parse stmt1
           Outputs information about the current database connection,
           including TLS-related information if TLS is in use.
          </para>
+         <para>
+          Note that the <structfield>Client User</structfield> field shows
+          the user at the time of connection, while the
+          <structfield>Superuser</structfield> field indicates whether
+          the current user (in the current execution context) has
+          superuser privileges. These users are usually the same, but they can
+          differ, for example, if the current user was changed with the
+          <command>SET ROLE</command> command.
+         </para>
         </listitem>
       </varlistentry>
 
-- 
2.49.0

Reply via email to