Re: BUG #10794: psql sometimes ignores .psqlrc - Mailing list pgsql-bugs
From | Stephen Frost |
---|---|
Subject | Re: BUG #10794: psql sometimes ignores .psqlrc |
Date | |
Msg-id | 20140716020514.GU16422@tamriel.snowman.net Whole thread Raw |
In response to | Re: BUG #10794: psql sometimes ignores .psqlrc (Tom Lane <tgl@sss.pgh.pa.us>) |
Responses |
Re: BUG #10794: psql sometimes ignores .psqlrc
|
List | pgsql-bugs |
* Tom Lane (tgl@sss.pgh.pa.us) wrote: > Marko Tiikkaja <marko@joh.to> writes: > > On 6/28/14, 11:13 PM, marko@joh.to wrote: > >> If I press ctrl-C while psql is prompting for a password but then log = in > >> (either because I used -W and the server isn't expecting a password or= if I > >> subsequently typed in the correct password), .psqlrc isn't processed. = This > >> seems quite dangerous if the user is e.g. assuming a specific value for > >> AUTOCOMMIT. >=20 > > (seeing that back branch releases are upcoming..) Ping? >=20 > I can reproduce that in 9.3, but not in 9.4/HEAD: now, if you control-C at > the password prompt, the program just exits instantly. That's evidently a > result of commit 9099e4afe, which postponed the installation of the SIGINT > handler till after the password prompt. What is happening in the earlier > branches is that the SIGINT handler is setting cancel_pressed, which > doesn't affect collection of the password, but which the main loop then > takes as an indication that you wanted to abandon processing of the script > file (ie, .psqlrc). >=20 > There's a bit of a race condition here, in that if you press control-C > just *after* connection setup, it will still allow psql to start up after > having not processed the .psqlrc file. I think though that we'd be ill > advised to try to prevent that by postponing control-C setup even further; > what if the .psqlrc file is broken and initiates some long-running > operation? This I agree with. > So I'm satisfied with the behavior of HEAD in this area. There's a case > to be made for back-patching commit 9099e4afe into older branches, but > I'm not sure if that'd be a good idea or not. People might be depending > on the old behavior. I've not looked at this closely, but I have to say that I've always felt that ignoring ctrl-c at the password prompt is really bad form- it's confusing to those who don't understand what's going on and really annoying for those who do. While we're at it, we should fix the complaint about .psql_history being missing.. This isn't an error, imv: could not save history to file "/home/sfrost/.psql_history": No such file o= r directory Not sure where we started doing that. > A different line of thought would be to reset cancel_pressed before > starting the processing of any script file, so that you actually have to > press control-C *during* the processing of a file to cancel it. That's > just narrowing the race condition window some more, but it might be > worth doing. Narrowing the window would probably be good to do, but I don't see a need to back-patch that. > In any case, I'm disinclined to mess with this in the back branches ... If we have a simple/clean patch to fix the "Ctrl-C ignored at password prompt", such that, instead, psql exits more-or-less immediately then I'd be for back-patching just that as it certainly has always felt like a wart or even a bug to me, but I agree that we don't want to introduce other behavior changes beyond that in back-branches. Thanks, Stephen
pgsql-bugs by date: