Re: BUG #10794: psql sometimes ignores .psqlrc
От | Tom Lane |
---|---|
Тема | Re: BUG #10794: psql sometimes ignores .psqlrc |
Дата | |
Msg-id | 7716.1405475499@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: BUG #10794: psql sometimes ignores .psqlrc (Marko Tiikkaja <marko@joh.to>) |
Ответы |
Re: BUG #10794: psql sometimes ignores .psqlrc
Re: BUG #10794: psql sometimes ignores .psqlrc |
Список | pgsql-bugs |
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. > (seeing that back branch releases are upcoming..) Ping? 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). 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? 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. 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. In any case, I'm disinclined to mess with this in the back branches ... regards, tom lane
В списке pgsql-bugs по дате отправления: