Querying PostgreSQL, timtowtdi:
-- versions 7.4 thru 9:
# select substring(version() from E'^PostgreSQL (\\S+)') ;
substring
-----------
8.4.4
(1 row)
-- versions 7.4 thru 9:
# select current_setting('server_version');
current_setting
-----------------
8.4.4
(1 row)
-- versions 8.2 thru 9:
# select current_setting('server_version_num');
current_setting
-----------------
80404
(1 row)
DBIx-Version looks unmaintained, but maybe it has some useful examples.
(update) There is info in DBD::Pg attributes as well:
perl -MDBI -e'my$dbh=DBI->connect("dbi:Pg:"); print $dbh->{pg_server_v
+ersion}, "\n"';
80404
Then, the 2008 SQL standard prescribes a SQL_IMPLEMENTATION_INFO view which (in postgres) has this information:
select implementation_info_name, character_value
from information_schema.sql_implementation_info
where implementation_info_name ~ 'DBMS';
implementation_info_name | character_value
--------------------------+-----------------
DBMS NAME | PostgreSQL
DBMS VERSION | 08.04.0004
(2 rows)
I seem to remember that, alas, this latter solution (although standard and therefore in principle the 'best') is not very widely available. |