Re: Variable substitution in psql backtick expansion

Fabien COELHO <coelho@cri.ensmp.fr>

From: Fabien COELHO <coelho@cri.ensmp.fr>
To: Tom Lane <tgl@sss.pgh.pa.us>
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-26T18:39:36Z
Lists: pgsql-hackers

Attachments

Hello Tom,

> I think you are taking unreasonable shortcuts here:
>
> +	SetVariable(pset.vars, "SERVER_VERSION_NAME", PQparameterStatus(pset.db, "server_version"));
>
> The existing code in connection_warnings() does this:
>
>            const char *server_version;
>
>            /* Try to get full text form, might include "devel" etc */
>            server_version = PQparameterStatus(pset.db, "server_version");
>            /* Otherwise fall back on pset.sversion */
>            if (!server_version)
>            {
>                formatPGVersionNumber(pset.sversion, true,
>                                      sverbuf, sizeof(sverbuf));
>                server_version = sverbuf;
>            }
>
> and I think you should duplicate that logic verbatim.  Now admittedly,
> server_version has been available for a long time, so that this might
> never matter in practice.  But we shouldn't be doing this one way
> in one place and differently somewhere else.

Hmmm. I think this code may have been justified around version 6/7. This 
code could probably be removed: according to the online documentation, 
"server_version" seems supported at least back to 7.4. Greping old sources 
suggest that it is not implemented in 7.3, though.

Spending developer time to write code for the hypothetical someone running 
a psql version 11 linked to a libpq < 7.4, if it can even link, does not 
look like a very good investment... Anyway, here is required the update.

-- 
Fabien.

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.