Re: Improving psql's \password command
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: "Bossart, Nathan" <bossartn@amazon.com>
Cc: "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>
Date: 2021-11-20T21:57:56Z
Lists: pgsql-hackers
Attachments
- delay-setting-up-signal-handlers.patch (text/x-diff) patch
"Bossart, Nathan" <bossartn@amazon.com> writes: > On 11/19/21, 9:17 AM, "Tom Lane" <tgl@sss.pgh.pa.us> wrote: >> Hmm, initdb's prompt-for-superuser-password might need it. > I'm able to cancel the superuser password prompt in initdb already. > It looks like the signal handlers aren't set up until after > get_su_pwd(). Right; I misread that code in an overly hasty scan. > I did find some missing control-C handling in > pg_receivewal/pg_recvlogical, though. Attached is a patch for those. Meh ... I'm inclined to fix those programs by just moving their pqsignal calls down to after their initial GetConnection calls, as attached. This'd be simple enough to back-patch, for one thing. It could be argued that this doesn't provide a nice experience if (a) somebody changes your password mid-run and (b) you actually need to make a new connection for some reason and (c) you want to give up at that point instead of putting in the new password. But I doubt it's worth so much extra complication to address that edge case. We've had about zero field complaints about the existing behavior in those programs, so the cost/benefit ratio seems poor. regards, tom lane PS: I noticed that StreamLogicalLog leaks its query buffer if GetConnection fails. Probably not very exciting, but we might as well fix that, as included below.
Commits
-
pg_receivewal, pg_recvlogical: allow canceling initial password prompt.
- c2242d3640ea 11.15 landed
- 93295932d1f4 12.10 landed
- 3ce5d0884c56 10.20 landed
- 3bd7556bbe0a 14.2 landed
- 33edf4a3ca4c 13.6 landed
- 282b6d00abf5 15.0 landed
-
Allow psql's other uses of simple_prompt() to be interrupted by ^C.
- 46d665bc26ce 15.0 landed
-
Provide a variant of simple_prompt() that can be interrupted by ^C.
- 5f1148224bd7 15.0 landed
-
Make psql's \password default to CURRENT_USER, not PQuser(conn).
- d6eb5a0c258d 15.0 landed
- b062ca508cd4 11.15 landed
- 99389cb66bb7 14.2 landed
- 843925fadbd8 13.6 landed
- 523adcc12900 12.10 landed
- 3bc46e4e9d7a 10.20 landed