pg.ddx.io  pgsql-interfaces@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Anders Bengtsson <anders@lecando.com>
To: pgsql-interfaces@postgresql.org
Subject: JDBC getDatabaseProductVersion() patch
Date: Wed, 13 Sep 2000 21:28:14 +0200
Message-ID: <39BFD54E.48D0E627@lecando.com> (raw)

Hello,
I don't know if this list is the correct way to contribute patches, but
here we go:

I've implemented getDatabaseProductVersion() for DatabaseMetaData so
that it retreives tha version number from the database server, instead
of using a hard coded constant in the driver.
Attached are patches for jdbc1 and jdbc2.
I've only been able to test the jdbc2 driver, but I hope someone can
check that the jdbc1 version works.

(By the way, has anyone tried to merge the identical parts of the jdbc1
and jdbc2 code?).

/Anders
_____________________________________________________________________
A n d e r s  B e n g t s s o n                     anders@lecando.com
Stockholm, Sweden

Attachments: download all (2 files, .tar.gz)

productversion1.patch (text/plain, 1.3K) download diff -u -r1.6 DatabaseMetaData.java --- src/interfaces/jdbc/org/postgresql/jdbc1/DatabaseMetaData.java 2000/09/12 18:56:03 1.6 +++ src/interfaces/jdbc/org/postgresql/jdbc1/DatabaseMetaData.java 2000/09/13 19:14:53 @@ -167,19 +167,23 @@ /** * What is the version of this database product. * - * <p>Note that PostgreSQL 6.3 has a system catalog called pg_version - - * however, select * from pg_version on any database retrieves - * no rows. - * - * <p>For now, we will return the version 6.3 (in the hope that we change - * this driver as often as we change the database) - * * @return the database version * @exception SQLException if a database access error occurs */ public String getDatabaseProductVersion() throws SQLException { - return ("7.0.2"); + /* The function "version()" has had the format "PostgreSQL X.Y.Z on ..." + * since at least 6.5.x, so this should be a safe assumption. + */ + + java.sql.ResultSet resultSet = connection.ExecSQL("select version()"); + resultSet.next(); + + StringTokenizer versionParts = new StringTokenizer(resultSet.getString(1)); + versionParts.nextToken(); /* "PostgreSQL" */ + String versionNumber = versionParts.nextToken(); /* "X.Y.Z" */ + + return versionNumber; } /**
productversion2.patch (text/plain, 1.3K) download diff -u -r1.6 DatabaseMetaData.java --- src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java 2000/09/12 18:56:04 1.6 +++ src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java 2000/09/13 19:15:06 @@ -167,19 +167,23 @@ /** * What is the version of this database product. * - * <p>Note that PostgreSQL 6.3 has a system catalog called pg_version - - * however, select * from pg_version on any database retrieves - * no rows. - * - * <p>For now, we will return the version 6.3 (in the hope that we change - * this driver as often as we change the database) - * * @return the database version * @exception SQLException if a database access error occurs */ public String getDatabaseProductVersion() throws SQLException { - return ("7.0.2"); + /* The function "version()" has had the format "PostgreSQL X.Y.Z on ..." + * since at least 6.5.x, so this should be a safe assumption. + */ + + java.sql.ResultSet resultSet = connection.ExecSQL("select version()"); + resultSet.next(); + + StringTokenizer versionParts = new StringTokenizer(resultSet.getString(1)); + versionParts.nextToken(); /* "PostgreSQL" */ + String versionNumber = versionParts.nextToken(); /* "X.Y.Z" */ + + return versionNumber; } /**

view thread (2+ messages)  latest in thread

Message-ID: <39BFD54E.48D0E627@lecando.com>
Permalink:  ../39BFD54E.48D0E627@lecando.com/
Also on:    postgresql.org/message-id/39BFD54E.48D0E627@lecando.com

 ·  · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-interfaces@postgresql.org
  Cc: anders@lecando.com
  Subject: Re: JDBC getDatabaseProductVersion() patch
  In-Reply-To: <39BFD54E.48D0E627@lecando.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox