Version 8.2-510 (2009-07-01)
* fix The Statement and Connection proxies used for connection pooling code relied on the underlying real connection and statement code for equals and hashcode support. When the proxies are closed we discard the references to the real objects, so we can't rely on them for this support because we'll get a NullPointerException. (jurka) Thanks to Radu Buzila.
* fix Retrieve columns' default values from pg_attrdef.adbin rather than adsrc because adsrc can get out of date when dependent objects are renamed while adbin stays up to date. (jurka) Thanks to Dickson Guedes, Tom Lane.
* fix Fix parsing of integer and long data. Some malformed inputs (only a negative sign) got treated as valid data. (jurka) Thanks to Heiiki Linnakangas.
* fix Initialize BatchUpdateExceptions with the SQLState of the SQLException that they are wrapping. Code that inspects the SQLStates of SQLExceptions, but doesn't unwrap the nested exception will not understand the underlying cause and may make incorrect decisions about the severity of the error. (jurka) Thanks to Fujii Masao.
Version 8.2-509 (2008-11-16)
* update Make the build system aware of the 1.7 JDK (which icedtea reports itself as) and add an explicit check and complaint if we find a JDK that we don't support. (jurka)
* update Updated German translation. (jurka) Thanks to Andre Bialojahn.
* fix Do comparison of identifiers in a known Locale (specificially US). In Turkish for example "id".toLowerCase().equals("ID".toLowerCase()) is false which makes looking up a column name case insensitively a problem. (jurka) Thanks to Mikko Tiihonen.
* fix Fix a deadlock that occurs when retrieving notifications. Normal query execution enters the QueryExecutor monitor and then calls a synchronized method in the ProtocolConnection to update the transaction state. Notification retrieval operates in the reverse order, entering the ProtocolConnection monitor and then calling a synchronized method in the QueryExecutor. Remove the QueryExecutor call from ProtocolConnection and make the higher level code responsible for calling it so we always acquire locks in the same order. (jurka) Thanks to Joao Rui Leal.
* fix CallableStatement#getUpdateCount was returning 1 when a function returned a ResultSet. Return -1 instead. (jurka) Thanks to Sam Lawrence, Albe Laurenz.
* fix Accept UTF8 as an equivalent of UNICODE when trying to detect if client_encoding has changed to something the driver doesn't understand. Don't try to accept every possible spelling (UTF-8) as UTF8 is the server's canonical name and people shouldn't be messing with this anyway. (jurka)
* fix Adjust the deadlock avoidance code for the V3 protocol to be concerned with many statements in a single execute call in addition to the existing worry about many statements from an executeBatch call. This doesn't prevent all possible deadlocks as the deadlock avoidance calculation was written for batch execution which should not be returning ResultSets. If many long queries that return significant results are issued with a single execute we will still deadlock. (jurka)
* fix DatabaseMetaData.getTypeInfo was reporting whether the type was signed or not, but the output column is really supposed to indicate whether the the type is unsigned or not. (jurka) Thanks to Mythili Gopalakrishnan.
* fix Support a parameter (?) for the amount part of the timestampadd function. Previously we only supported literals. (jurka) Thanks to Christophe Janton.
This is a pure Java (Type IV) JDBC driver for the PostgreSQL
database. It allows Java programs to connect to a PostgreSQL
database using standard, database independent Java code.
The driver provides a reasonably complete implementation of the
JDBC 3 specification in addition to some PostgreSQL specific
extensions.
Version 8.2-507 (2007-12-02)
* fix When doing batch execution we can have multiple Parse
and DescribeStatement messages on the wire at the same time.
When we finally get around to collecting the DescribeStatement
results we must check whether they still apply to the currently
parsed query. Otherwise we'll overwrite our type information
with stale data that will cause failures down the line. (jurka)
Thanks to Eric Faulhaber.
* fix CallableStatements with OUT parameters that get executed
more than prepareThreshold times failed if clearParameters()
was called in between executions. When we've hit the
prepareThreshold, we no longer send Parse messages which invoke
SimpleParameterList.getTypeOID which has side effects required
to setup the parameters correctly. Add an explicit
convertFunctionOutParameters method to do this work instead
that we call in all execution paths. (jurka) Thanks to Ludovico
Bianchini.
* fix The driver was incorrectly parsing identifiers that had
parts that look like dollar quotes. Things like a$b$c are valid
identifiers, not dollar quotes. When determining if a $ we've
found is a dollar quote start, look at the preceding character
and see if it is a valid identifier part to determine if we're
in the midst of an identifier or are starting a new token.
(jurka) Thanks to Michael Paesold.
* fix Multiple calls to XAConnection.getConnection within the
same user transaction ended up restarting the transaction on
the server side as a result of manipulating the autocommit
state. When retrieving a Connection, we must pay attention to
whether a user transaction is in progress when setting the
autocommit state. (jurka) Thanks to Heikki Linnakangas.
* fix Support NULL array elements. (jurka) Thanks to Christian
Schröder.
* fix Make code that parses queries for updateable resultsets
aware of the ONLY clause. (jurka) Thanks to Oleg Vasylenko.
* fix While custom type maps are not implemented, the code to
detect the caller trying to use them threw a ClassCastException.
Correctly detect the attempted use of custom types and bail
out with a SQLException. (jurka)
Version 8.2-506 (2007-07-31)
* add Make setObject recognize a parameter of type java.lang.Byte.
(jurka) Thanks to Boom Roos.
* update Brazilian Portuguese translation update. (jurka) Thanks
to Euler Taveira de Oliveira.
* update Serbian translation updates. (jurka) Thanks to Bojan
Skaljac.
* fix Updatable ResultSets did not work when updating bytea
data and then retrieving it because we send the data to the
server in binary format, but the ResultSet was expecting to
read it in text format. So we need to convert the data from
binary to text format before stuffing it into the ResultSet.
(jurka) Thanks to Mikko Tiihonen.
* fix ResultSet.updateNClob(String, Reader) goes into an infinite
loop. It really meant to call updateNClob(int, Reader), but
was calling itself instead. (jurka) Thanks to Mikko Tiihonen.
* fix Do escape processing on batch Statements prior to execution.
This already worked for PreparedStatements, but not plain
Statements. (jurka) Thanks to Hui Ye.
* fix Don't return quotes around identifiers in the results of
DatabaseMetaData.getIndexInfo even if they would require quoting
in SQL. (jurka) Thanks to Andrei Badea.
* fix When retrieving the columns of a function that returns
a complex type, don't retrieve system columns (like xmin/xmax/...)
that you'll find if the type is from a table. (jurka)
* fix The previous fix to try and set a XA based Connection's
autocommit property correctly didn't quite work. Calling
XAConnection.getConnection set autocommit to true even if we
already had a transaction in progress. (jurka) Thanks to Luca
Ferrari, Heikki Linnakangas.
* fix Error message was reporting the wrong parameter type
value in the V3 protocol's SimpleParameterList implementation.
(jurka) Thanks to Nathan Keynes.
* fix Explicitly state which source level we are compiling.
Newer versions of gij/gcj run a 1.5 VM, but default to a 1.4
source level compile which tricks up our build system. This
still doens't fix the case of running with a newer VM than
compiler, but I don't see what we can do about that. (jurka)
Thanks to Tom Lane, Oliver Jowett.
Version 8.2-505 (2007-04-18)
* add Initial Serbian translation. (jurka) Thanks to Bojan
Skaljac.
* add Implement ResultSet.updateArray by simply mapping it to
updateObject which now works for arrays. (jurka)
* fix Statement.getTime, .getDate, and .getTimestamp methods
which are passed a Calendar object were rotating the timezone
in the wrong direction. Rewrite this code to use the existing
TimestampUtils methods to match the working code in ResultSets.
(jurka) Thanks to Ravi Periasmy.
* fix Produce the timezone that we send to the server in the
same format that we can parse. This is important for updatable
ResultSets as we must be able to parse the format we produce.
(jurka) Thanks to Leon Do.
* fix Make Large Object handling work when the oid counter has
exceeded Integer.MAX_VALUE by handling oids as longs. (jurka)
* fix Fix persistence of XA datasources. PGObjectFactory wasn't
aware of PGXADataSource and can't be because of the requirements
for different build versions. Add a new PGXADataSourceFactory
to provide this functionality. (jurka) Thanks to Heikki
Linnakangas.
* fix Fix the error message generated by a CallableStatement
not getting results that match the registered out parameters
to report the correct parameter position. (jurka)
* fix Interval formatting didn't work for negative seconds
values greater than -1. It would format it as -.5, but interval
input doesn't accept this, so write it as -0.5 instead. (jurka)
* fix Change DatabaseMetaData.getSearchStringEscape to always
return "\\" instead of "\\\\". Previously it was assuming that
it would be fed directly into a query and it needed to escape
itself for the backend's input parser. This doesn't work for
things like PreparedStatement parameters or DatabaseMetaData
methods that take patterns. (jurka) Thanks to Valery Meshkov.
* fix Allow updatable ResultSets to update arrays. (jurka)
Thanks to Vasylenko.
* fix In an error message reporting an unparseable timestamp
value the code was trying to put the unparseable portion into
the error message, but used the wrong variable to get the
correct length. (jurka)
* fix Parse timezones that have offsets in seconds. 8.2 servers
now return this information so we must be able to handle it.
(jurka)
This is a pure Java (Type IV) JDBC driver for the PostgreSQL
database. It allows Java programs to connect to a PostgreSQL
database using standard, database independent Java code.
The driver provides a reasonably complete implementation of the
JDBC 3 specification in addition to some PostgreSQL specific
extensions.