Re: BUG #10794: psql sometimes ignores .psqlrc

Поиск
Список
Период
Сортировка
От Stephen Frost
Тема Re: BUG #10794: psql sometimes ignores .psqlrc
Дата
Msg-id 20140716020514.GU16422@tamriel.snowman.net
обсуждение исходный текст
Ответ на Re: BUG #10794: psql sometimes ignores .psqlrc  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: BUG #10794: psql sometimes ignores .psqlrc  (Tom Lane <tgl@sss.pgh.pa.us>)
Список 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 по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: BUG #10794: psql sometimes ignores .psqlrc
Следующее
От: Tom Lane
Дата:
Сообщение: Re: BUG #10794: psql sometimes ignores .psqlrc