Re: Variable substitution in psql backtick expansion
Michael Paquier <michael.paquier@gmail.com>
From: Michael Paquier <michael.paquier@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: PostgreSQL mailing lists <pgsql-hackers@postgresql.org>
Date: 2017-03-31T03:28:40Z
Lists: pgsql-hackers
On Fri, Mar 31, 2017 at 2:33 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Awhile back in the discussion about the \if feature for psql, > I'd pointed out that you shouldn't really need very much in > the way of boolean-expression evaluation smarts, because you > ought to be able to use a backtick shell escape: > > \if `expr :foo \> :bar` > \echo :foo is greater than :bar > \endif > > Now that the basic feature is in, I went to play around with this, > and was disappointed to find out that it doesn't work. The reason > is not far to seek: we do not do variable substitution within the > text between backticks. psqlscanslash.l already foresaw that some > day we'd want to do that: > > /* > * backticked text: copy everything until next backquote, then evaluate. > * > * XXX Possible future behavioral change: substitute for :VARIABLE? > */ > > I think today is that day, because it's going to make a material > difference to the usability of this feature. > > I propose extending backtick processing so that > > 1. :VARIABLE is replaced by the contents of the variable > > 2. :'VARIABLE' is replaced by the contents of the variable, > single-quoted according to Unix shell conventions. (So the > processing would be a bit different from what it is for the > same notation in SQL contexts.) > > This doesn't look like it would take very much new code to do. > > Thoughts? In short, +1. -- Michael
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