Re: Variable substitution in psql backtick expansion

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Fabien COELHO <coelho@cri.ensmp.fr>
Cc: Robert Haas <robertmhaas@gmail.com>, Pavel Stehule <pavel.stehule@gmail.com>, Corey Huinker <corey.huinker@gmail.com>, Daniel Verite <daniel@manitou-mail.org>, PostgreSQL Developers <pgsql-hackers@postgresql.org>
Date: 2017-08-26T15:08:56Z
Lists: pgsql-hackers
Fabien COELHO <coelho@cri.ensmp.fr> writes:
>> OK, but if human-friendly display is the use-case then it ought to
>> duplicate what psql itself would print in, eg, the startup message about
>> server version mismatch.  The v4 patch does not, in particular it neglects
>> PQparameterStatus(pset.db, "server_version").  This would result in
>> printing, eg, "11.0" when the user would likely rather see "11devel".

> I understand that you would prefer VERSION_NAME to show something like
>    "11devel, server 9.6.4"

No, that's not what I said.  I'm just complaining that as the patch stands
it will set SERVER_NAME to "11.0", where I think it should say "11devel"
(as of today).

> In summary, my prefered option is to have:
>    CLIENT_VERSION "PostgreSQL 11devel on ..."
>    CLIENT_VERSION_NAME "11devel"
>    CLIENT_VERSION_NUM 110000

I don't think we want to drop :VERSION; that would accomplish little
beyond breaking existing scripts.  Plausible choices include duplicating
it, like:

   VERSION "PostgreSQL 11devel on ..."
   CLIENT_VERSION "PostgreSQL 11devel on ..."
   CLIENT_VERSION_NAME "11devel"
   CLIENT_VERSION_NUM 110000

or just ignoring the discrepancy:

   VERSION "PostgreSQL 11devel on ..."
   CLIENT_VERSION_NAME "11devel"
   CLIENT_VERSION_NUM 110000

or just leaving "CLIENT" implicit for all of these variables:

   VERSION "PostgreSQL 11devel on ..."
   VERSION_NAME "11devel"
   VERSION_NUM 110000

Robert seems to prefer the last of those, and that'd be fine with me.
(Note that CLIENT is ambiguous anyway: does it mean psql itself, or
libpq?)

>    SERVER_VERSION_NAME "9.6.4"
>    SERVER_VERSION_NUM 090604

I'm on board with this, except I don't think we should have any leading
zero in the numeric form.  There are contexts where somebody might think
that means octal.

			regards, tom lane


Commits

  1. Add psql variables showing server version and psql version.

  2. Reformat psql's --help=variables output.

  3. Remove reinvention of stringify macro.

  4. Allow psql variable substitution to occur in backtick command strings.