New version of JDBC driver

From: Peter T Mount <peter(at)retep(dot)org(dot)uk>
To: "pgsql-announce(at)postgreSQL(dot)org" <pgsql-announce(at)postgresql(dot)org>
Cc: PostgreSQL Interfaces List <pgsql-interfaces(at)postgresql(dot)org>
Subject: New version of JDBC driver
Date: 1998-12-29 20:29:48
Message-ID: Pine.LNX.4.04.9812292022080.8386-100000@maidast.retep.org.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)linux(dot)kapow(dot)dk>
- Added fix to DatabaseMetaData.getColumns() to handle patterns
submitted by Stefan Andreasen <stefan(at)linux(dot)kapow(dot)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(at)idiom(dot)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(at)retep(dot)org(dot)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

Browse pgsql-interfaces by date

  From Date Subject
Next Message Constantin Teodorescu 1998-12-30 08:13:51 JDBC example is not working with Kaffe 1.0b3
Previous Message Peter T Mount 1998-12-29 20:10:34 Re: [INTERFACES] How to connect with JDBC to another machine ?