Re: Variable substitution in psql backtick expansion
Greg Stark <stark@mit.edu>
From: Greg Stark <stark@mit.edu>
To: Fabien COELHO <coelho@cri.ensmp.fr>
Cc: Daniel Verite <daniel@manitou-mail.org>, Tom Lane <tgl@sss.pgh.pa.us>, PostgreSQL Developers <pgsql-hackers@postgresql.org>
Date: 2017-04-10T11:07:21Z
Lists: pgsql-hackers
On 2 April 2017 at 07:53, Fabien COELHO <coelho@cri.ensmp.fr> wrote: > Note that this is already available indirectly, as show in the > documentation. > > SELECT some-boolean-expression AS okay \gset > \if :okay > \echo boolean expression was true > \else > \echo boolean expression was false > \endif Am I the only one who thinks that even if \if got the ability to evaluate arbitrary SQL queries I would probably still always write things as above? I think putting arbitrary SQL expressions (let alone queries) would make scripts just a total mess and impossible for humans to parse. Whereas storing the results in psql variables and then using those variables in \if makes even fairly complex queries and nested \if structures straightforward. It would also make it far clearer in what order the queries will be evaluated and under which set of conditions. I don't think taking a simple command line execution environment like psql and trying to embed a complete complex language parser in it is going to result in a sensible programming environment. Having a simple \if <single variable> is already pushing it. If someone wanted anything more complex I would strongly recommend switching to perl or python before trying to code up nesting arbitrary sql in nested expressions. -- greg
Commits
-
Add psql variables showing server version and psql version.
- a6c678f018d3 10.0 landed
- 9ae9d8c1549c 11.0 landed
-
Reformat psql's --help=variables output.
- 3955c8c4eda2 11.0 landed
-
Remove reinvention of stringify macro.
- cd6baed78150 10.0 landed
-
Allow psql variable substitution to occur in backtick command strings.
- f833c847b8fa 10.0 landed