From: | Corey Huinker <corey(dot)huinker(at)gmail(dot)com> |
---|---|
To: | Robert Haas <robertmhaas(at)gmail(dot)com> |
Cc: | Fabien COELHO <coelho(at)cri(dot)ensmp(dot)fr>, Erik Rijkers <er(at)xs4all(dot)nl>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Jim Nasby <Jim(dot)Nasby(at)bluetreble(dot)com>, Daniel Verite <daniel(at)manitou-mail(dot)org>, PostgreSQL <pgsql-hackers(at)postgresql(dot)org>, pgsql-hackers-owner(at)postgresql(dot)org |
Subject: | Re: \if, \elseif, \else, \endif (was Re: PSQL commands: \quit_if, \quit_unless) |
Date: | 2017-02-03 21:24:35 |
Message-ID: | CADkLM=ej2aqCH8=s2T_cMm7Eh7LRLMF54q55WdQDvyhH50kOYw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Fri, Feb 3, 2017 at 3:49 PM, Robert Haas <robertmhaas(at)gmail(dot)com> wrote:
> On Fri, Feb 3, 2017 at 11:08 AM, Corey Huinker <corey(dot)huinker(at)gmail(dot)com>
> wrote:
> > I could bulk up the error message on if/elif like such:
> >
> > if: true, executing commands.
> > if: false, ignoring commands until next \else, \elif, or \endif.
> > if: error, ignoring all commands until next \endif
> > else: true, executing commands
> > else: false, ignoring commands until next \endif
> > else: error, ignoring commands until next \endif
> > endif: now executing commands
> > endif: ignoring commands until next [\else, [\elif [, \endif]]
> >
> > Basically, I'd tailor the message to as closely reflect what is possible
> for
> > the user at this moment.
>
> I think that this is kinda hairy. When I see "endif: now executing
> commands", my reaction is "oh crap, which commands are you
> executing?". What you really mean is that future command are expected
> to be executed unless things change (for example, due to another \if
> in the meantime), but somebody might have a different interpretation
> of these messages.
>
> I think that the messages you are proposing for "if" and "else" are
> reasonable, but for "endif" I would just say "endif: exiting if" or
> something like that. If the user doesn't know to what state they are
> returning, c'est la vie.
>
That might be what we end up doing. I'm willing to see how unwieldy it gets
before rolling back to "endif: peace out".
The state logic has stuff to do anyway, so for the moment I've added
psql_error() messages at each endpoint. My current (unsubmitted) work has:
if you were in a true branch and leave it (i.e yes->yes)
+ psql_error("exited \\if to true
parent branch, \n"
+ "continuing
executing commands\n");
if you were in a false branch beneath a true branch and leave it (no->yes)
+ psql_error("exited \\if to true
parent branch, \n"
+ "resuming executing
commands\n");
And if you were in a branch that was a child of a false branch (no->no):
+ psql_error("exited \\if to false parent
branch, \n"
+ "ignoring commands until
next \\endif\n");
And the (yes->no) is an impossibility, so no message there.
I'm not too concerned about what wording we finally go with, and as the
coder I realize I'm too close to know the wording that will be most helpful
to an outsider, so I'm very much trusting others to guide me.
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2017-02-03 21:35:19 | Re: [COMMITTERS] pgsql: pageinspect: Try to fix some bugs in previous commit. |
Previous Message | Alvaro Herrera | 2017-02-03 21:17:20 | Re: new autovacuum criterion for visible pages |