From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | "Daniel Verite" <daniel(at)manitou-mail(dot)org> |
Cc: | "Corey Huinker" <corey(dot)huinker(at)gmail(dot)com>, "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>, "Fabien COELHO" <coelho(at)cri(dot)ensmp(dot)fr>, "Greg Stark" <stark(at)mit(dot)edu>, "Erik Rijkers" <er(at)xs4all(dot)nl>, "Robert Haas" <robertmhaas(at)gmail(dot)com>, "Jim Nasby" <Jim(dot)Nasby(at)bluetreble(dot)com>, "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-03-17 13:33:24 |
Message-ID: | 28273.1489757604@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
"Daniel Verite" <daniel(at)manitou-mail(dot)org> writes:
> Tom Lane wrote:
>> OT_WHOLE_LINE is not what you want because that results in verbatim
>> copying, without variable expansion or anything
> But if we want to implement "\if defined :foo" in the future
> isn't it just what we need?
I don't think that should mean what you think. I believe an appropriate
spelling of what you mean is "\if defined foo". What you wrote should
result in foo being expanded and then a defined-ness test being performed
on whatever variable name results.
> Also we could leave open the option to accept an SQL expression
> here. I expect people will need SQL as the evaluator in a lot of cases.
Right, and they'll also want to insert variable references into that
SQL. In the short term though, `expr ...` is going to be the solution,
and that means we'd better not throw away the behavior of expanding
back-ticks.
> There's a precedent with \copy accepting a query inside parentheses,
> using OT_WHOLE_LINE.
IMV, \copy is just about completely broken in this regard, precisely
because it fails to expand variable references. I don't want to
emulate that brain-damage for \if. (I believe, btw, that part
of the reason for \copy behaving this way is that we wanted to
preserve an ancient behavior whereby Windows users were not forced
to double backslashes in \windows\style\path\names. Fortunately,
that bit of silliness need not be considered for \if.)
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Robert Haas | 2017-03-17 13:36:54 | Re: [PATCH] Remove defunct and unnecessary link |
Previous Message | Robert Haas | 2017-03-17 13:31:30 | Re: scram and \password |