Thread: Re: [HACKERS] \if, \elseif, \else, \endif (was Re: PSQL commands:\quit_if, \quit_unless)
Re: [HACKERS] \if, \elseif, \else, \endif (was Re: PSQL commands:\quit_if, \quit_unless)
From
Robert Haas
Date:
On Mon, Apr 3, 2017 at 3:32 PM, Daniel Verite <daniel@manitou-mail.org> wrote: > In interactive mode, the warning in untaken branches is misleading > when \endif is on the same line as the commands that > are skipped. For instance: > > postgres=# \if false \echo NOK \endif > \echo command ignored; use \endif or Ctrl-C to exit current \if block > postgres=# > > From the point of view of the user, the execution flow has exited > the branch already when this warning is displayed. > Of course issuing the recommended \endif at this point doesn't work: > > postgres=# \endif > \endif: no matching \if > > Maybe that part of the message: > "use \endif or Ctrl-C to exit current \if block" > should be displayed only when coming back at the prompt, > and if the flow is still in an untaken branch at this point? Is this an open item, or do we not care about fixing it? -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Re: [HACKERS] \if, \elseif, \else, \endif (was Re: PSQL commands:\quit_if, \quit_unless)
From
Fabien COELHO
Date:
> On Mon, Apr 3, 2017 at 3:32 PM, Daniel Verite <daniel@manitou-mail.org> wrote: >> In interactive mode, the warning in untaken branches is misleading >> when \endif is on the same line as the commands that >> are skipped. For instance: >> >> postgres=# \if false \echo NOK \endif >> \echo command ignored; use \endif or Ctrl-C to exit current \if block >> postgres=# >> >> From the point of view of the user, the execution flow has exited >> the branch already when this warning is displayed. >> Of course issuing the recommended \endif at this point doesn't work: >> >> postgres=# \endif >> \endif: no matching \if >> >> Maybe that part of the message: >> "use \endif or Ctrl-C to exit current \if block" >> should be displayed only when coming back at the prompt, >> and if the flow is still in an untaken branch at this point? > > Is this an open item, or do we not care about fixing it? I would suggest that this is not important enough to block anything. Otherwise, I agree that displaying this interactive message only when it is pertinent is desirable, but this might change the underlying logic significantly: it may mean holding somewhere a message to be shown at next prompt, and being able to decide when to clear it. There is also the question of what happens if there are multiple such messages, should they all be shown? Only the first? The last? Should it avoid repeats? So I propose to call it a feature for now, especially that we do not expect people to write a lot of one-liner multiple-backslash-commands in interactive mode. -- Fabien.