http://www.perlmonks.org?node_id=850812


in reply to Finding database version from handle?

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.