]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Make psql's \password default to CURRENT_USER, not PQuser(conn).
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 12 Nov 2021 19:55:32 +0000 (14:55 -0500)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 12 Nov 2021 19:55:32 +0000 (14:55 -0500)
commit843925fadbd8d450d00229647b1d6933a4aae5e8
tree53b9f5b2ff6a31ee16f268648496f5cbedf15289
parenta691a229831ad3b72d933b1858c76be44b508400
Make psql's \password default to CURRENT_USER, not PQuser(conn).

The documentation says plainly that \password acts on "the current user"
by default.  What it actually acted on, or tried to, was the username
used to log into the current session.  This is not the same thing if
one has since done SET ROLE or SET SESSION AUTHENTICATION.  Aside from
the possible surprise factor, it's quite likely that the current role
doesn't have permissions to set the password of the original role.

To fix, use "SELECT CURRENT_USER" to get the role name to act on.
(This syntax works with servers at least back to 7.0.)  Also, in
hopes of reducing confusion, include the role name that will be
acted on in the password prompt.

The discrepancy from the documentation makes this a bug, so
back-patch to all supported branches.

Patch by me; thanks to Nathan Bossart for review.

Discussion: https://postgr.es/m/747443.1635536754@sss.pgh.pa.us
src/bin/psql/command.c