diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml index ad463e7..b1508be 100644 --- a/doc/src/sgml/ref/psql-ref.sgml +++ b/doc/src/sgml/ref/psql-ref.sgml @@ -3580,6 +3580,18 @@ bar + SERVER_VERSION_NAME + SERVER_VERSION_NUM + + + These variables are set when connected to reflects the server's version + both in short name (eg "9.6.2", "10.0") and number (eg 90602, 100000). + They can be changed or unset. + + + + + SINGLELINE @@ -3625,10 +3637,13 @@ bar VERSION + VERSION_NAME + VERSION_NUM - This variable is set at program start-up to - reflect psql's version. It can be changed or unset. + These variables are set at program start-up to reflect + psql's version in verbose, short name ("10.0") + and number (100000). They can be changed or unset. diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 94a3cfc..2c58cfb 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -3320,6 +3320,8 @@ checkWin32Codepage(void) void SyncVariables(void) { + char vbuf[32]; + /* get stuff from connection */ pset.encoding = PQclientEncoding(pset.db); pset.popt.topt.encoding = pset.encoding; @@ -3331,6 +3333,12 @@ SyncVariables(void) SetVariable(pset.vars, "PORT", PQport(pset.db)); SetVariable(pset.vars, "ENCODING", pg_encoding_to_char(pset.encoding)); + /* server version information */ + SetVariable(pset.vars, "SERVER_VERSION_NAME", + formatPGVersionNumber(pset.sversion, true, vbuf, sizeof(vbuf))); + 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); @@ -3349,6 +3357,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); } diff --git a/src/bin/psql/startup.c b/src/bin/psql/startup.c index 8068a28..91d6a8f 100644 --- a/src/bin/psql/startup.c +++ b/src/bin/psql/startup.c @@ -161,6 +161,11 @@ main(int argc, char *argv[]) EstablishVariableSpace(); SetVariable(pset.vars, "VERSION", PG_VERSION_STR); + SetVariable(pset.vars, "VERSION_NAME", PG_VERSION); + +#define STRINGIFY2(symbol) #symbol +#define STRINGIFY(symbol) STRINGIFY2(symbol) + SetVariable(pset.vars, "VERSION_NUM", STRINGIFY(PG_VERSION_NUM)); /* Default values for variables (that don't match the result of \unset) */ SetVariableBool(pset.vars, "AUTOCOMMIT");