New version of JDBC driver - Mailing list pgsql-interfaces

From Peter T Mount
Subject New version of JDBC driver
Date
Msg-id Pine.LNX.4.04.9812292022080.8386-100000@maidast.retep.org.uk
Whole thread Raw
List pgsql-interfaces
I've just posted to the patches list a new version of the JDBC driver.
This version now compiles under JDK 1.2 and later.

To do this, I've had to move come classes, and rewrite others, due to the
changes between JDBC 1 & JDBC 2 (loads of new methods, and some are now
deprecated).

The main difference is that the Makefile now tests the version of the JDK
being used, and builds the JDBC 1 driver for JDK 1.1.x or JDBC 2 for later
JDK's.

A nice additional feature, is that if you first use JDK 1.1.x to compile,
then compile using JDK 1.2 or later, you'll have both sets of classes in
the postgresql.jar file (adds about 64K to the file size) which can then
be used on either version of the JVM.

A pre-compiled copy of postgresql.jar will appear on my website shortly.

Here's the CHANGELOG:

Tue Dec 29 15:45:00 GMT 1998
    - Refreshed the README (which was way out of date)

Tue Dec 29 15:45:00 GMT 1998
    - Finished adding the additional methods into the JDBC2 driver.
    - Had to add some explicit package references for the JDK1.2 Javac to
      cope with the driver

Tue Dec 29 12:40:00 GMT 1998
    - Fixed package imports and some references to java.sql.ResultSet in
      various files. Compiled and tested the JDBC1 driver.

Mon Dec 28 19:01:37 GMT 1998
    - created a new package postgresql.jdbc2 which will contain the JDBC 2
      specific classes. A similar new package (postgresql.jdbc1) has been
      created to hold the JDBC 1 specific classes.
    - modified Makefile to allow compilation of the JDBC 1 & 2 drivers,
      with the possibility of building a dual-spec driver.
    - changed the version number in postgresql.Driver to 6.5
    - modified postgresql.Driver class to initiate the correct driver when
      used under a 1.1 or 1.2+ JVM.
    - postgresql.Connection and postgresql.jdbc2.Connection now extends the
      new class postgresql.ConnectionStub, which allows us to dynamically
      open the JDBC1 or JDBC2 drivers.
    - enabled compilation of the driver under Win32 when using the Make
      from the CygWin package (Cygnus B20.1 was used).
    - To make future development easier (now we have 2 specifications to
      work with) the following classes have moved from the postgresql to
      the postgresql.jdbc1 package:
        CallableStatement    Connection
        DatabaseMetaData    PreparedStatement
        ResultSet        ResultSetMetaData
        Statement
      Some of these classes have common code that is not dependent on
      either JDBC specification. These common code are still in the
      postgresql package.
        Ie: postgresql.jdbc1.Connection extends postgresql.Connection
        and postgresql.jdbc2.Connection extends postgresql.Connection

Web Oct  7 22:00:00 BST 1998
    - removed syncronised from Connection.ExecSQL(). See next entry.
    - added new syncronised locking in the Connection.ExecSQL() and
      FastPath.fastpath() methods. They now lock against the PG_Steam
      object for the connection, which now provides full Thread Safety.
    - Reposted ChangeLog as it's missing from CVS.

Modifications done since 6.3.2 was released and Sun Aug 30 11:33:06 BST 1998

    - Fixed PreparedStatement.setObject as it didn't handle shorts
    - ResultSet.getDate() now handles null dates (returns null ratrher
      than a NullPointerException)
    - ResultSetMetaData.getPrecision() new returns 0 for VARCHAR
    - Field now caches the typename->oid in a Hashtable to speed things
      up. It removes the need for some unnecessary queries to the backend.
    - PreparedStatement.toString() now returns the SQL statement that it
      will send to the backend. Before it did nothing.
    - DatabaseMetaData.getTypeInfo() now does something.
    - Connection now throws an exception if either of the user or password
      properties are missing, as they are required for JDBC to work.
      This occasionally occurs when the client uses the properties version
      of getConnection(), and is a common question on the email lists.

Sun Aug 30 11:33:06 BST 1998

    - Created ChangeLog file, and entered stuff done since 6.3.2 and today
    - Change version number to 6.4 in Driver.java
    - Added fix to DatabaseMetaData.getTables() submitted by
      Stefan Andreasen <stefan@linux.kapow.dk>
    - Added fix to DatabaseMetaData.getColumns() to handle patterns
      submitted by Stefan Andreasen <stefan@linux.kapow.dk>
    - Set TcpNoDelay on the connection, as this gives us a 10x speed
      improvement on FreeBSD (caused by a bug in their TCP Stack). They
      should fix the bug before 6.4 is released, but will keep this
      in here unless it causes more problems.
      Submitted by Jason Venner <jason@idiom.com>
    - Removed a duplicate definition of fieldCache
    - Added a more meaningful message when the connection is refused. It
      now says:
        Connection refused. Check that the hostname and port is
        correct, and that the postmaster is running with the -i flag,
        which enables TCP/IP networking.
    - Removed kludge in PreparedStatement.setDate() that acted as a
      temporary fix to a bug in SimpleDateFormat, as it broke date
      handling in JDK 1.1.6.
    - Modified PG_Stream and Connection, so that outbound data is now
      buffered. This should give us a speed improvement, and reduce the
      ammount of network packets generated.
    - Removed duplicate code and optimised PG_Stream.
    - PG_Stream now returns a more meaningful message when the connection
      is broken by the backend. It now returns:
        The backend has broken the connection. Possibly the action you
        have attempted has caused it to close.
    - Removed obsolete code from Connection.
    - The error message returned when the authentication scheme is unknown
      has been extended. It now reads:
        Authentication type ### not supported. Check that you have
        configured the pg_hba.conf file to include the client's IP
        address or Subnet, and is using a supported authentication
        scheme.
    - Connection.getMetaData() now caches the instance returned, so
      multiple calls will return the same instance.
    - Created a test application that tests the DatabaseMetaData and
      ResultSetMetaData classes.
    - Replaced getString(#).getBytes() with getBytes(#) which should speed
      things up, and reduce memory useage.
    - Optimised DatabaseMetaData.getProcedures(), and implemented patterns
    - Fixed NullPointerExceptions thrown when a field is null (Internal
      to the driver, not caused by results from the backend.
      DatabaseMetaData.getProcedures() is an example of a method that
      causes this):
        - ResultSetMetaData.getColumnName() now returns field# where
          # is the column name.
        - ResultSet.getObject() fixed
        - Fixed bug in psql example that was affected by null fields
        - DatabaseMetaData.getTables()
    - DatabaseMetaData.getPrimaryKeys() ran a query with an ambiguous field
      fixed.
    - getTypeInfo() optimised to increase speed and reduce memory useage
    - ResultSetMetaData.isCurrency() optimised and is now smaller.
    - Removed unnecessary code fromResultSetMetaData.getCatalogName()
      and getSchemaName().
    - Created new class postgresql.util.PGmoney to map the money type
    - Created new class postgresql.geometric.PGline to map the line type


--
       Peter T Mount peter@retep.org.uk
      Main Homepage: http://www.retep.org.uk
PostgreSQL JDBC Faq: http://www.retep.org.uk/postgres
 Java PDF Generator: http://www.retep.org.uk/pdf


pgsql-interfaces by date:

Previous
From: Peter T Mount
Date:
Subject: Re: [INTERFACES] How to connect with JDBC to another machine ?
Next
From: Constantin Teodorescu
Date:
Subject: JDBC example is not working with Kaffe 1.0b3