Re: Variable substitution in psql backtick expansion
Daniel Verite <daniel@manitou-mail.org>
From: "Daniel Verite" <daniel@manitou-mail.org>
To: "Tom Lane" <tgl@sss.pgh.pa.us>
Cc: "Fabien COELHO" <coelho@cri.ensmp.fr>,"PostgreSQL Developers"
<pgsql-hackers@postgresql.org>
Date: 2017-04-03T16:33:06Z
Lists: pgsql-hackers
Tom Lane wrote: > I really dislike this syntax proposal. It would get us into having > to count nested brackets, and distinguish quoted from unquoted brackets, > and so on ... and for what? It's not really better than > > \if sql select 1 from pg_catalog.pg_extension where extname='pgcrypto' > > (ie, "\if sql ...text to send to server..."). That's fine by me. The advantage of enclosing the query is to leave open the possibility of accepting additional contents after the query, like options (as \copy does), or other expression terms to combine with the query's result. But we can live without that. > If you're worried about shaving keystrokes, make the "select" be implicit. > That would be particularly convenient for the common case where you're > just trying to evaluate a boolean expression with no table reference. These expressions look more natural without the SELECT keyword, besides the size, but OTOH "\if sql 1 from table where expr" looks awkward. Given an implicit select, I would prefer "\if exists (select 1 from table where expr)" but now it's not shorter. An advantage of prepending the SELECT automatically, is that it would prevent people from abusing this syntax by putting update/insert/delete or even DDL in there, imagining that this would be a success/failure test for these operations. Having these fail to execute in the first place, when called by \if, seems like a sane failure mode that we would gain incidentally. Best regards, -- Daniel Vérité PostgreSQL-powered mailer: http://www.manitou-mail.org Twitter: @DanielVerite
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