2017-04-02 13:13 GMT+02:00 Fabien COELHO <coe...@cri.ensmp.fr>: > > Hello Pavel, > > \echo :VERSION >>> PostgreSQL 10devel on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu >>> 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609, 64-bit >>> >>> Probably some :VERSION_NUM would make some sense. See attached PoC patch. >>> Would it make sense? >>> >> >> Maybe better name for you CLIENT_VERSION_NUM >> > > If it was starting from nothing I would tend to agree with you, but there > is already an existing :VERSION variable, so it seemed logical to keep on > and create variants with the same prefix.
you have true - so VERSION_NUM should be client side version > > > Can be SERVER_VERSION_NUM taken from connection info? >> > > Probably it could. It seems a little less straightforward than defining a > client-side string at compile time. The information is displayed when the > connection is established, so the information is there somewhere. > It is not too hard diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 94a3cfce90..d1ae81646f 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -3320,16 +3320,21 @@ checkWin32Codepage(void) void SyncVariables(void) { + char buffer[100]; + /* get stuff from connection */ pset.encoding = PQclientEncoding(pset.db); pset.popt.topt.encoding = pset.encoding; pset.sversion = PQserverVersion(pset.db); + snprintf(buffer, 100, "%d", pset.sversion); + SetVariable(pset.vars, "DBNAME", PQdb(pset.db)); SetVariable(pset.vars, "USER", PQuser(pset.db)); SetVariable(pset.vars, "HOST", PQhost(pset.db)); SetVariable(pset.vars, "PORT", PQport(pset.db)); SetVariable(pset.vars, "ENCODING", pg_encoding_to_char(pset.encoding)); + SetVariable(pset.vars, "SVERSION_NUM", buffer); /* send stuff to it, too */ PQsetErrorVerbosity(pset.db, pset.verbosity); Regards Pavel > > psql (10devel, server 9.6.2) > > -- > Fabien. >