mirror of
https://github.com/postgres/postgres.git
synced 2025-07-02 09:02:37 +03:00
Add psql variables showing server version and psql version.
We already had a psql variable VERSION that shows the verbose form of psql's own version. Add VERSION_NAME to show the short form (e.g., "11devel") and VERSION_NUM to show the numeric form (e.g., 110000). Also add SERVER_VERSION_NAME and SERVER_VERSION_NUM to show the short and numeric forms of the server's version. (We'd probably add SERVER_VERSION with the verbose string if it were readily available; but adding another network round trip to get it seems too expensive.) The numeric forms, in particular, are expected to be useful for scripting purposes, now that psql can do conditional tests. Fabien Coelho, reviewed by Pavel Stehule Discussion: https://postgr.es/m/alpine.DEB.2.20.1704020917220.4632@lancre
This commit is contained in:
@ -3337,6 +3337,9 @@ checkWin32Codepage(void)
|
||||
void
|
||||
SyncVariables(void)
|
||||
{
|
||||
char vbuf[32];
|
||||
const char *server_version;
|
||||
|
||||
/* get stuff from connection */
|
||||
pset.encoding = PQclientEncoding(pset.db);
|
||||
pset.popt.topt.encoding = pset.encoding;
|
||||
@ -3348,6 +3351,20 @@ SyncVariables(void)
|
||||
SetVariable(pset.vars, "PORT", PQport(pset.db));
|
||||
SetVariable(pset.vars, "ENCODING", pg_encoding_to_char(pset.encoding));
|
||||
|
||||
/* this bit should match connection_warnings(): */
|
||||
/* Try to get full text form of version, might include "devel" etc */
|
||||
server_version = PQparameterStatus(pset.db, "server_version");
|
||||
/* Otherwise fall back on pset.sversion */
|
||||
if (!server_version)
|
||||
{
|
||||
formatPGVersionNumber(pset.sversion, true, vbuf, sizeof(vbuf));
|
||||
server_version = vbuf;
|
||||
}
|
||||
SetVariable(pset.vars, "SERVER_VERSION_NAME", server_version);
|
||||
|
||||
snprintf(vbuf, sizeof(vbuf), "%d", pset.sversion);
|
||||
SetVariable(pset.vars, "SERVER_VERSION_NUM", vbuf);
|
||||
|
||||
/* send stuff to it, too */
|
||||
PQsetErrorVerbosity(pset.db, pset.verbosity);
|
||||
PQsetErrorContextVisibility(pset.db, pset.show_context);
|
||||
@ -3366,6 +3383,8 @@ UnsyncVariables(void)
|
||||
SetVariable(pset.vars, "HOST", NULL);
|
||||
SetVariable(pset.vars, "PORT", NULL);
|
||||
SetVariable(pset.vars, "ENCODING", NULL);
|
||||
SetVariable(pset.vars, "SERVER_VERSION_NAME", NULL);
|
||||
SetVariable(pset.vars, "SERVER_VERSION_NUM", NULL);
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user