History of Changes
Introduction and explanation of symbols
Version 8.4-702 (2010-05-11)
-
Add support for returning the new TRUNCATE privilege, that was
added in 8.4, to the list of known table privileges.
Committed by jurka. Thanks to Thomas Kellerer.
-
Add the partial index constraint to the FILTER_CONDITION column
returned by DatabaseMetaData.getIndexInfo.
Committed by jurka. Thanks to Mark Kirkwood.
-
Japanese translation of error messages.
Committed by jurka. Thanks to Hiroshi Saito.
-
Bulgarian translation of error messages.
Committed by jurka. Thanks to Viktor Usunov.
-
Add some more specific types to the return value for
DatabaseMetaData.getTables. Return composite types, temporary
views, and temporary sequences with TABLE_TYPE values
specifically for them.
Committed by jurka. Thanks to Thomas Kellerer.
-
Remove an unused Sun specific import that prevented compilation on non-Sun JDKs.
Committed by jurka. Thanks to Tom Lane.
-
Change the processing of Statement.executeUpdate to complain
if any of the results of a multi-statement query string return
a ResultSet. Previously we were only checking the first result
which resulted in silent partial execution of later SELECT
statements.
Committed by jurka. Thanks to Joseph Shraibman.
-
When a COPY operation is the first statement issued in a transaction,
it was not sending the BEGIN necessary to start the transaction.
Committed by jurka. Thanks to Maciek Sakrejda.
-
The 8.4 release added some
code to avoid re-describing a statement if we already had the
type information available by copying the resolved type
information from the query to the parameters. Its goal was just
to overwrite parameters without a type (unknown), but it was
actually overwriting all types which could change the query's
desired behavior.
Committed by jurka. Thanks to Hiroshi Saito.
-
Fix the ORDINAL_POSITION in the DatabaseMetaData.getColumns.
Previously we were returning
simply pg_attribute.attnum, but that doesn't work in the presence
of dropped columns because later columns don't get their attnum
decremented if a preceding column is dropped. Instead use the
row_number window function for 8.4 and later servers to figure
out the live column position.
Committed by jurka.
-
Always specify an XA error code when creating an XAException.
Otherwise a transaction manager won't know what to do with
the error and may have to assume the worst.
Committed by jurka. Thanks to Heikki Linnakangas, Justin Bertram.
-
LOB truncation didn't allow truncating to zero length because
it was improperly using the positioning length checks which
don't allow a zero length.
Committed by jurka. Thanks to Simon Kissane.
-
Protocol sync was lost when a batch statement parameter had an
embedded null byte.
Committed by jurka. Thanks to Pierre Queinnec.
-
Fix a problem using the Copy API to copy data to the server from
a Reader. After reading data out of the Reader and into a
buffer, we were sending the entire buffer on to the server, not
just the subset of it that was filled by the read operation.
Committed by jurka. Thanks to Leonardo F.
-
A XA transaction should not change the autocommit setting of a
Connection. Ensure that we restore this property correctly after
the XA transaction completes.
Committed by jurka. Thanks to Heikki Linnakangas, Achilleas Mantzios.
-
PoolingDataSources were not picking up all of the properties
that were set for them. Notably it would not give you a SSL
connection when asked.
Committed by jurka. Thanks to Eric Jain.
-
When setNull is called with a TIME or TIMESTAMP type we cannot
pass that type information on to the backend because we really
don't know whether it is with or without a time zone. For a NULL
value it doesn't matter, but we can't establish a type because a
later call with a non-null value using the same PreparedStatement
can potentially end up using a specific type that is incorrect.
Committed by jurka. Thanks to Martti Jeenicke.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Eric Jain, Heikki Linnakangas, Achilleas Mantzios, Heikki Linnakangas, Justin Bertram, Hiroshi Saito, Joseph Shraibman, Leonardo F, Maciek Sakrejda, Mark Kirkwood, Martti Jeenicke, Pierre Queinnec, Simon Kissane, Thomas Kellerer, Tom Lane, Viktor Usunov.
Version 8.3-606 (2010-05-11)
-
Add some more specific types to the return value for
DatabaseMetaData.getTables. Return composite types, temporary
views, and temporary sequences with TABLE_TYPE values
specifically for them.
Committed by jurka. Thanks to Thomas Kellerer.
-
Change the processing of Statement.executeUpdate to complain
if any of the results of a multi-statement query string return
a ResultSet. Previously we were only checking the first result
which resulted in silent partial execution of later SELECT
statements.
Committed by jurka. Thanks to Joseph Shraibman.
-
Always specify an XA error code when creating an XAException.
Otherwise a transaction manager won't know what to do with
the error and may have to assume the worst.
Committed by jurka. Thanks to Heikki Linnakangas, Justin Bertram.
-
LOB truncation didn't allow truncating to zero length because
it was improperly using the positioning length checks which
don't allow a zero length.
Committed by jurka. Thanks to Simon Kissane.
-
A XA transaction should not change the autocommit setting of a
Connection. Ensure that we restore this property correctly after
the XA transaction completes.
Committed by jurka. Thanks to Heikki Linnakangas, Achilleas Mantzios.
-
PoolingDataSources were not picking up all of the properties
that were set for them. Notably it would not give you a SSL
connection when asked.
Committed by jurka. Thanks to Eric Jain.
-
When setNull is called with a TIME or TIMESTAMP type we cannot
pass that type information on to the backend because we really
don't know whether it is with or without a time zone. For a NULL
value it doesn't matter, but we can't establish a type because a
later call with a non-null value using the same PreparedStatement
can potentially end up using a specific type that is incorrect.
Committed by jurka. Thanks to Martti Jeenicke.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Eric JainHeikki Linnakangas, Achilleas Mantzios, Heikki Linnakangas, Justin Bertram, Joseph Shraibman, Martti Jeenicke, Simon Kissane, Thomas Kellerer.
Version 8.2-511 (2010-05-11)
-
Add some more specific types to the return value for
DatabaseMetaData.getTables. Return composite types, temporary
views, and temporary sequences with TABLE_TYPE values
specifically for them.
Committed by jurka. Thanks to Thomas Kellerer.
-
Change the processing of Statement.executeUpdate to complain
if any of the results of a multi-statement query string return
a ResultSet. Previously we were only checking the first result
which resulted in silent partial execution of later SELECT
statements.
Committed by jurka. Thanks to Joseph Shraibman.
-
Always specify an XA error code when creating an XAException.
Otherwise a transaction manager won't know what to do with
the error and may have to assume the worst.
Committed by jurka. Thanks to Heikki Linnakangas, Justin Bertram.
-
A XA transaction should not change the autocommit setting of a
Connection. Ensure that we restore this property correctly after
the XA transaction completes.
Committed by jurka. Thanks to Heikki Linnakangas, Achilleas Mantzios.
-
PoolingDataSources were not picking up all of the properties
that were set for them. Notably it would not give you a SSL
connection when asked.
Committed by jurka. Thanks to Eric Jain.
-
When setNull is called with a TIME or TIMESTAMP type we cannot
pass that type information on to the backend because we really
don't know whether it is with or without a time zone. For a NULL
value it doesn't matter, but we can't establish a type because a
later call with a non-null value using the same PreparedStatement
can potentially end up using a specific type that is incorrect.
Committed by jurka. Thanks to Martti Jeenicke.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Eric JainHeikki Linnakangas, Achilleas Mantzios, Heikki Linnakangas, Justin Bertram, Joseph Shraibman, Martti Jeenicke, Thomas Kellerer.
Version 8.1-415 (2010-05-11)
-
Change the processing of Statement.executeUpdate to complain
if any of the results of a multi-statement query string return
a ResultSet. Previously we were only checking the first result
which resulted in silent partial execution of later SELECT
statements.
Committed by jurka. Thanks to Joseph Shraibman.
-
Always specify an XA error code when creating an XAException.
Otherwise a transaction manager won't know what to do with
the error and may have to assume the worst.
Committed by jurka. Thanks to Heikki Linnakangas, Justin Bertram.
-
A XA transaction should not change the autocommit setting of a
Connection. Ensure that we restore this property correctly after
the XA transaction completes.
Committed by jurka. Thanks to Heikki Linnakangas, Achilleas Mantzios.
-
When setNull is called with a TIME or TIMESTAMP type we cannot
pass that type information on to the backend because we really
don't know whether it is with or without a time zone. For a NULL
value it doesn't matter, but we can't establish a type because a
later call with a non-null value using the same PreparedStatement
can potentially end up using a specific type that is incorrect.
Committed by jurka. Thanks to Martti Jeenicke.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Heikki Linnakangas, Achilleas MantziosHeikki Linnakangas, Justin Bertram, Joseph Shraibman, Martti Jeenicke.
Version 8.0-325 (2010-05-11)
-
Change the processing of Statement.executeUpdate to complain
if any of the results of a multi-statement query string return
a ResultSet. Previously we were only checking the first result
which resulted in silent partial execution of later SELECT
statements.
Committed by jurka. Thanks to Joseph Shraibman.
-
When setNull is called with a TIME or TIMESTAMP type we cannot
pass that type information on to the backend because we really
don't know whether it is with or without a time zone. For a NULL
value it doesn't matter, but we can't establish a type because a
later call with a non-null value using the same PreparedStatement
can potentially end up using a specific type that is incorrect.
Committed by jurka. Thanks to Martti Jeenicke.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Joseph ShraibmanMartti Jeenicke.
Version 8.4-701 (2009-07-01)
-
Add support for GSSAPI authentication.
Committed by jurka.
-
Implement support for generated keys for PreparedStatements in addition
to the earlier support for plain Statements.
Committed by jurka.
-
Speed up parsing of BigDecimal values in the common case of reasonably short,
simple numbers.
Committed by jurka. Thanks to Heikki Linnakangas.
-
Avoid sending extra Describe Portal messages to the server when
we've already done this for the query. Caching the Field objects
across executions will also speed up ResultSetMetaData calls.
Committed by jurka. Thanks to Heiiki Linnakangas.
-
Avoid sending extra Describe Statement messages to the server
when we've already done this for the query.
Committed by jurka.
-
Add a connection
parameter for setting a socket read timeout. This acts like a
global query timeout that shuts down the connection if exceeded.
This can be used to detect dead network connections if you can
reasonably estimate the upper bound of your queries.
Committed by jurka. Thanks to Art Gramlich.
-
Provide a way for the user to specify the desired length return value for
metadata about types of unknown length. We've tried a number of things
and can't keep everyone happy, so it's their problem now.
Committed by jurka.
-
Implement support for COPY in the JDBC driver with a non-standard
postgresql CopyManager API. This provides support for both copy from
the server and to the server and operating in either a source or sink
mode.
Committed by jurka. Thanks to Kalle Hallivuori.
-
Don't list toast table types in the output of DatabaseMetaData.getTypeInfo.
Committed by jurka.
-
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.
Committed by jurka. Thanks to Radu Buzila.
-
Not all datatypes use a comma for the array element delimiter. Lookup
the appropriate delimiter in the system catalogs.
Committed by jurka.
-
DatabaseMetaData.getColumns was broken for the JDBC 3 and 4 drivers when
running against 7.2 or older servers.
Committed by jurka.
-
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.
Committed by jurka. Thanks to Dickson Guedes, Tom Lane.
-
Fix parsing of integer and long data. Some malformed inputs (only a negative
sign) got treated as valid data.
Committed by jurka. Thanks to Heiiki Linnakangas.
-
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.
Committed by jurka. Thanks to Fujii Masao.
-
Initialize the prepareThreshold parameter for datasources to the same
value that would be used by a non-DataSource created connection. By not
setting it, it effectively turned off the use of named statements.
Committed by jurka.
-
Updated Serbian translation.
Committed by jurka. Thanks to Bojan Skaljac.
-
Updated Brazilian Portuguese translation.
Committed by jurka. Thanks to Euler Taveira de Oliveira.
-
Updated Turkish translation.
Committed by jurka. Thanks to Devrim Gunduz.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Art Gramlich, Bojan Skaljac, Devrim Gunduz, Dickson Guedes, Tom Lane, Euler Taveira de Oliveira, Fujii Masao, Heiiki Linnakangas, Heikki Linnakangas, Kalle Hallivuori, Radu Buzila.
Version 8.3-605 (2009-07-01)
Version 8.2-510 (2009-07-01)
-
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.
Committed by jurka. Thanks to Radu Buzila.
-
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.
Committed by jurka. Thanks to Dickson Guedes, Tom Lane.
-
Fix parsing of integer and long data. Some malformed inputs (only a negative
sign) got treated as valid data.
Committed by jurka. Thanks to Heiiki Linnakangas.
-
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.
Committed by jurka. Thanks to Fujii Masao.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Dickson Guedes, Tom LaneFujii Masao, Heiiki Linnakangas, Radu Buzila.
Version 8.1-414 (2009-07-01)
-
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.
Committed by jurka. Thanks to Radu Buzila.
-
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.
Committed by jurka. Thanks to Dickson Guedes, Tom Lane.
-
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.
Committed by jurka. Thanks to Fujii Masao.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Dickson Guedes, Tom LaneFujii Masao, Radu Buzila.
Version 8.0-324 (2009-07-01)
-
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.
Committed by jurka. Thanks to Radu Buzila.
-
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.
Committed by jurka. Thanks to Dickson Guedes, Tom Lane.
-
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.
Committed by jurka. Thanks to Fujii Masao.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Dickson Guedes, Tom LaneFujii Masao, Radu Buzila.
Version 8.4dev-700 (2008-11-16)
-
Add a configuration option to enable tcp keep alives.
Committed by jurka. Thanks to Toru Shimogaki.
-
For array types, return information about their base types for things
like getPrecision.
Committed by jurka.
-
Add more detail to the exception when interpreting a server error
message.
Committed by jurka. Thanks to Daniel Migowski.
-
Make datasources support the compatible parameter.
Committed by jurka. Thanks to Achilleas Mantzios.
-
Send initial connection startup parameters
in UTF-8 rather than US-ASCII. The initial connection encoding
is poorly defined as "whatever encoding the database is in" which
we don't know until after the authentication phase is complete.
UTF-8 supports everything ascii did and will now allow database
names, user names, and passwords to contain non-ascii characters
as long as their database is in UTF-8, which is the most common
case.
Committed by jurka.
-
Map the database uuid type to java.util.UUID. This only works for
relatively new server (8.3) and JDK (1.5) versions.
Committed by jurka.
-
Change the output of PreparedStatement.toString for V3 protocol
connections to output a textual representation of the query that is a
legal query in most cases. Previously it didn't quote or escape
parameters. It still doesn't correctly handle binary data and it may
not be exactly the same as executing it by the PreparedStatement (which
will have extra type information), but it is a nicer to work
with.
Committed by jurka. Thanks to Michael Enke.
-
Implement support for
SQLXML. All of the underlying XML tools don't seem to support
handling fragments, but these are allowed in the server xml type.
I'm also not sure there aren't any encoding problems, but it
mostly seems to work.
Committed by jurka.
-
Implement basic generated keys
support. It does not support returning columns by index because
that requires complicated parsing of the query to determine the
table being used. Right now it supports returning all columns
and columns by name.
Committed by jurka.
-
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.
Committed by jurka. Thanks to Mikko Tiihonen.
-
Avoid making a copy of the current row after each positioning command,
for example next(). This is only needed if we have an updatable
ResultSet and is just a waste otherwise.
Committed by jurka. Thanks to Gustav Trede.
-
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.
Committed by jurka. Thanks to Joao Rui Leal.
-
CallableStatement#getUpdateCount was returning 1 when a function
returned a ResultSet. Return -1 instead.
Committed by jurka. Thanks to Sam Lawrence, Albe Laurenz.
-
The DataSource options for ssl where not
correctly being serialized or included in the Reference.
Committed by jurka.
-
DatabaseMetaData.getTypeInfo provides two columns for indicating
the prefix and suffix that should be wrapped around a literal
when putting it into a query. Return the correct quoting (') for
all non-numeric types.
Committed by jurka. Thanks to Mats Ekelund.
-
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.
Committed by jurka.
-
Avoid looking up the UTF-8
Charset by name. When using multiple Charsets, this is a minor
performance hit in the single threaded case and a big point of
contention for multiple threads.
Committed by jurka. Thanks to Paul Lindner.
-
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.
Committed by jurka.
-
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.
Committed by jurka. Thanks to Mythili Gopalakrishnan.
-
Support a parameter (?) for the amount part of the timestampadd
function. Previously we only supported literals.
Committed by jurka. Thanks to Christophe Janton.
-
Kill off JDBC2 specific code. Simplify the build system now that we
require a 1.4 or higher JDK.
Committed by jurka.
-
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.
Committed by jurka.
-
Refactor type information functions into a dedicated interface. This
avoids making BaseConnection expose these and AbstractJdbc2Connection
just proxy these to the real type information handing. Additionally
now type information can be setup differently for each JDBC
version which will be required for things like SQLXML support
because the JDBC2 code can't use the java.sql.Types values for
JDBC4.
This removes the long deprecated functions in the public
PGConnection interface, but hopefully no one is still using that.
Committed by jurka.
-
Updated German translation.
Committed by jurka. Thanks to Andre Bialojahn.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Achilleas Mantzios, Andre Bialojahn, Christophe Janton, Daniel Migowski, Gustav Trede, Joao Rui Leal, Mats Ekelund, Michael Enke, Mikko Tiihonen, Mythili Gopalakrishnan, Paul Lindner, Sam Lawrence, Albe Laurenz, Toru Shimogaki.
Version 8.3-604 (2008-11-16)
Version 8.2-509 (2008-11-16)
Version 8.1-413 (2008-11-16)
Version 8.0-323 (2008-11-16)
Version 8.3-603 (2008-01-31)
-
When PreparedStatement.setObject(int, Object, Types.OTHER) is issued,
bind the String version of the object with an unspecified type.
This makes it easier to use types that Java doesn't have a
mapping for without enabling stringtype=unspecified for all
driver calls.
Committed by jurka. Thanks to Matt Magoffin.
-
Implement the new JDBC3 + JDBC4 columns that are now returned by
DatabaseMetaData.getColumns.
Committed by jurka. Thanks to Christian Schroder.
-
Throw an exception if people try to use setQueryTimeout with a
non-zero value as it is not implemented.
Committed by jurka.
-
The JDBC spec says that when you have two duplicately named
columns in a ResultSet, a search by name should return the first
one. Previously our code was returning the second match.
Committed by jurka. Thanks to Magne Mahre.
-
While the driver currently doesn't support the copy protocol, it
needs to understand it enough to ignore it. Now the connection
will not be irreparably broken when a COPY request is sent.
Committed by jurka. Thanks to Altaf Malik.
-
Updated simplified and traditional Chinese translations.
Committed by jurka. Thanks to Kuo ChaoYi.
-
Updated Brazilian Portuguese translation.
Committed by jurka. Thanks to Euler Taveira de Oliveira.
-
Updated Turkish translation.
Committed by jurka. Thanks to Devrim Gunduz.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Altaf Malik, Christian Schroder, Devrim Gunduz, Euler Taveira de Oliveira, Kuo ChaoYi, Magne Mahre, Matt Magoffin.
Version 8.2-508 (2008-01-31)
-
While the driver currently doesn't support the copy protocol, it
needs to understand it enough to ignore it. Now the connection
will not be irreparably broken when a COPY request is sent.
Committed by jurka. Thanks to Altaf Malik.
-
Fix batch execution of CallableStatements.
Committed by davec.
-
The JDBC spec says that when you have two duplicately named
columns in a ResultSet, a search by name should return the first
one. Previously our code was returning the second match.
Committed by jurka. Thanks to Magne Mahre.
-
Updated Brazilian Portuguese translation.
Committed by jurka. Thanks to Euler Taveira de Oliveira.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Dave Cramer (davec), Kris Jurka (jurka).
This is a list of other contributors:
Altaf Malik, Euler Taveira de Oliveira, Magne Mahre.
Version 8.1-412 (2008-01-31)
-
While the driver currently doesn't support the copy protocol, it
needs to understand it enough to ignore it. Now the connection
will not be irreparably broken when a COPY request is sent.
Committed by jurka. Thanks to Altaf Malik.
-
The JDBC spec says that when you have two duplicately named
columns in a ResultSet, a search by name should return the first
one. Previously our code was returning the second match.
Committed by jurka. Thanks to Magne Mahre.
-
Updated Brazilian Portuguese translation.
Committed by jurka. Thanks to Euler Taveira de Oliveira.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Altaf MalikEuler Taveira de Oliveira, Magne Mahre.
Version 8.0-322 (2008-01-31)
-
While the driver currently doesn't support the copy protocol, it
needs to understand it enough to ignore it. Now the connection
will not be irreparably broken when a COPY request is sent.
Committed by jurka. Thanks to Altaf Malik.
-
The JDBC spec says that when you have two duplicately named
columns in a ResultSet, a search by name should return the first
one. Previously our code was returning the second match.
Committed by jurka. Thanks to Magne Mahre.
-
Updated Brazilian Portuguese translation.
Committed by jurka. Thanks to Euler Taveira de Oliveira.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Altaf MalikEuler Taveira de Oliveira, Magne Mahre.
Version 8.3-dev602 (2007-12-02)
-
Provide a minimal ClientInfo implementation because of complaints
about exceptions continually being thrown on glassfish.
Committed by jurka.
-
Set extra_float_digits=2 on connection startup so we get as much
data about floats as possible.
Committed by jurka.
-
Support multi-dimensional arrays and returning arrays of primitive
server types as wrapped java Objects so that NULL values can be
detected. Backwards compatibility is provided using the
compatible=8.2 URL option to return arrays of primitive types.
Committed by jurka. Thanks to Marek Lewczuk.
-
Implement the JDBC4 method Connection.createArrayOf. Now people can
portably and easily handle array data.
Committed by jurka.
-
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.
Committed by jurka. Thanks to Eric Faulhaber.
-
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.
Committed by jurka. Thanks to Ludovico Bianchini.
-
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.
Committed by jurka. Thanks to Michael Paesold.
-
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.
Committed by jurka. Thanks to Heikki Linnakangas.
-
Make code that parses queries for updateable resultsets aware of
the ONLY clause.
Committed by jurka. Thanks to Oleg Vasylenko.
-
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.
Committed by jurka.
-
When dealing with OIDs larger than 2^31 we can't retrieve these as
Java ints. Using long throughout the driver would be a pain, one
reason is that you can't use a switch on a long variable. PG supports
representing OIDs as signed ints (select '3000000000'::oid::int4), so
retrieve the values as longs, but then cast to int to get the signed
representation.
Committed by jurka. Thanks to Tom Lane, Quinton Dolan.
-
Assorted cleanups to the source tree based on findbugs output.
Committed by jurka. Thanks to Mikko Tiihonen.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Eric Faulhaber, Heikki Linnakangas, Ludovico Bianchini, Marek Lewczuk, Michael Paesold, Mikko Tiihonen, Oleg Vasylenko, Tom Lane, Quinton Dolan.
Version 8.2-507 (2007-12-02)
-
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.
Committed by jurka. Thanks to Eric Faulhaber.
-
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.
Committed by jurka. Thanks to Ludovico Bianchini.
-
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.
Committed by jurka. Thanks to Michael Paesold.
-
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.
Committed by jurka. Thanks to Heikki Linnakangas.
-
Support NULL array elements.
Committed by jurka. Thanks to Christian Schröder.
-
Make code that parses queries for updateable resultsets aware of
the ONLY clause.
Committed by jurka. Thanks to Oleg Vasylenko.
-
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.
Committed by jurka.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Christian Schröder, Eric Faulhaber, Heikki Linnakangas, Ludovico Bianchini, Michael Paesold, Oleg Vasylenko.
Version 8.1-411 (2007-12-02)
Version 8.0-321 (2007-12-02)
-
Make code that parses queries for updateable resultsets aware of
the ONLY clause.
Committed by jurka. Thanks to Oleg Vasylenko.
-
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.
Committed by jurka.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Oleg Vasylenko.
Version 8.3-dev601 (2007-07-31)
-
Add SSL as an option for DataSources.
Committed by jurka. Thanks to Albe Laurenz.
-
Add the proper META-INF entry for the driver jar file so that JDBC4
applications no longer have to say Class.forName() as the driver
gets loaded automatically.
Committed by jurka.
-
Pull the default login timeout from DriverManager.getLoginTimeout()
if none has been specified as a URL parameter.
Committed by jurka. Thanks to Adrian Custer.
-
Add support for returning function parameter names and directions
to getProcedureColumns.
Committed by jurka. Thanks to Jeffrey Cox.
-
Make setObject recognize a parameter of type java.lang.Byte.
Committed by jurka. Thanks to Boom Roos.
-
Allow CallableStatements to use batch execution.
Committed by davec.
-
Empty finalize method still has a performance impact, so comment
it out entirely.
Committed by jurka. Thanks to Mikko Tiihonen.
-
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.
Committed by jurka. Thanks to Mikko Tiihonen.
-
ResultSet.updateNClob(String, Reader) goes into an infinite loop.
It really meant to call updateNClob(int, Reader), but was
calling itself instead.
Committed by jurka. Thanks to Mikko Tiihonen.
-
Do escape processing on batch Statements prior to execution.
This already worked for PreparedStatements, but not plain Statements.
Committed by jurka. Thanks to Hui Ye.
-
Don't return quotes around identifiers in the results of
DatabaseMetaData.getIndexInfo even if they would require quoting
in SQL.
Committed by jurka. Thanks to Andrei Badea.
-
Change how PGobject and
children support clone(), to get more reasonable behavior when
extending these classes. Don't implement clone by calling the
constructor because you get the wrong class when cloning a
subclass.
Committed by jurka. Thanks to Russell Francis.
-
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.
Committed by jurka.
-
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.
Committed by jurka. Thanks to Luca Ferrari, Heikki Linnakangas.
-
Error message was reporting the wrong parameter type value in the V3
protocol's SimpleParameterList implementation.
Committed by jurka. Thanks to Nathan Keynes.
-
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.
Committed by jurka. Thanks to Tom Lane, Oliver Jowett.
-
Brazilian Portuguese translation update.
Committed by jurka. Thanks to Euler Taveira de Oliveira.
-
French translation update.
Committed by jurka. Thanks to Xavier Poinsard.
-
Make inner classes static where possible.
Committed by jurka. Thanks to Mikko Tiihonen.
-
Serbian translation updates.
Committed by jurka. Thanks to Bojan Skaljac.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Dave Cramer (davec), Kris Jurka (jurka).
This is a list of other contributors:
Adrian Custer, Albe Laurenz, Andrei Badea, Bojan Skaljac, Boom Roos, Euler Taveira de Oliveira, Hui Ye, Jeffrey Cox, Luca Ferrari, Heikki Linnakangas, Mikko Tiihonen, Nathan Keynes, Russell Francis, Tom Lane, Oliver Jowett, Xavier Poinsard.
Version 8.2-506 (2007-07-31)
-
Make setObject recognize a parameter of type java.lang.Byte.
Committed by jurka. Thanks to Boom Roos.
-
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.
Committed by jurka. Thanks to Mikko Tiihonen.
-
ResultSet.updateNClob(String, Reader) goes into an infinite loop.
It really meant to call updateNClob(int, Reader), but was
calling itself instead.
Committed by jurka. Thanks to Mikko Tiihonen.
-
Do escape processing on batch Statements prior to execution.
This already worked for PreparedStatements, but not plain Statements.
Committed by jurka. Thanks to Hui Ye.
-
Don't return quotes around identifiers in the results of
DatabaseMetaData.getIndexInfo even if they would require quoting
in SQL.
Committed by jurka. Thanks to Andrei Badea.
-
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.
Committed by jurka.
-
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.
Committed by jurka. Thanks to Luca Ferrari, Heikki Linnakangas.
-
Error message was reporting the wrong parameter type value in the V3
protocol's SimpleParameterList implementation.
Committed by jurka. Thanks to Nathan Keynes.
-
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 doesn't fix the case of running with a newer
VM than compiler, but I don't see what we can do about that.
Committed by jurka. Thanks to Tom Lane, Oliver Jowett.
-
Brazilian Portuguese translation update.
Committed by jurka. Thanks to Euler Taveira de Oliveira.
-
Serbian translation updates.
Committed by jurka. Thanks to Bojan Skaljac.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Andrei Badea, Bojan Skaljac, Boom Roos, Euler Taveira de Oliveira, Hui Ye, Luca Ferrari, Heikki Linnakangas, Mikko Tiihonen, Nathan Keynes, Tom Lane, Oliver Jowett.
Version 8.1-410 (2007-07-31)
-
Make setObject recognize a parameter of type java.lang.Byte.
Committed by jurka. Thanks to Boom Roos.
-
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.
Committed by jurka. Thanks to Mikko Tiihonen.
-
Do escape processing on batch Statements prior to execution.
This already worked for PreparedStatements, but not plain Statements.
Committed by jurka. Thanks to Hui Ye.
-
Don't return quotes around identifiers in the results of
DatabaseMetaData.getIndexInfo even if they would require quoting
in SQL.
Committed by jurka. Thanks to Andrei Badea.
-
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.
Committed by jurka.
-
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.
Committed by jurka. Thanks to Luca Ferrari, Heikki Linnakangas.
-
Error message was reporting the wrong parameter type value in the V3
protocol's SimpleParameterList implementation.
Committed by jurka. Thanks to Nathan Keynes.
-
Backpatch fix to 8.1: Allow XAResource.start
with TMJOIN in a limited set of circumstances to work with
WebLogic. We allow TMJOIN only if the resource was previously
ended and the Xid is the same as the current Xid.
Committed by jurka. Thanks to Jan de Visser and Heikki Linnakangas.
-
Backpatch fix to 8.1: A XAConnections default
autocommit state should be true. The driver was previously
setting autocommit to false and assuming it would stay that way.
This caused two problems. First, some applications expected to
be able to issue local autocommit transactions prior to begin().
Second, some TMs (Geronimo) set the autocommit state to true
themselves, which causes problems as the driver did not expect it
to be changed. This patch correctly disables and enables
autocommit around begin, prepare, commit, and rollback methods.
Committed by jurka. Thanks to Allan Saddi.
-
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.
Committed by jurka. Thanks to Tom Lane, Oliver Jowett.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Allan Saddi, Andrei Badea, Boom Roos, Hui Ye, Jan de Visser and Heikki Linnakangas, Luca Ferrari, Heikki Linnakangas, Mikko Tiihonen, Nathan Keynes, Tom Lane, Oliver Jowett.
Version 8.0-320 (2007-07-31)
-
Make setObject recognize a parameter of type java.lang.Byte.
Committed by jurka. Thanks to Boom Roos.
-
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.
Committed by jurka. Thanks to Mikko Tiihonen.
-
Do escape processing on batch Statements prior to execution.
This already worked for PreparedStatements, but not plain Statements.
Committed by jurka. Thanks to Hui Ye.
-
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.
Committed by jurka.
-
Error message was reporting the wrong parameter type value in the V3
protocol's SimpleParameterList implementation.
Committed by jurka. Thanks to Nathan Keynes.
-
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 doesn't fix the case of running with a newer
VM than compiler, but I don't see what we can do about that.
Committed by jurka. Thanks to Tom Lane, Oliver Jowett.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Boom Roos, Hui Ye, Mikko Tiihonen, Nathan Keynes, Tom Lane, Oliver Jowett.
Version 8.3-dev600 (2007-04-18)
-
Initial Serbian translation.
Committed by jurka. Thanks to Bojan Skaljac.
-
Implement the JDBC4 Blob/Clob free method.
Committed by jurka.
-
Improve performance of PGStream code by reducing function call
and casting overhead.
Committed by jurka. Thanks to Stephen Denne, Nelson Arape.
-
Replace ad-hoc and missing identifier escaping with a utility
method.
Committed by jurka.
-
Implement large object truncation for 8.3 servers. Currently we
truncate Clobs with a byte length instead of a character length
until we figure out how to represent character sets in Clobs.
Committed by jurka.
-
Add methods to PGInterval to combine and scale intervals.
Committed by jurka.
-
Save JUnit output into files so they can be processed
by tools. The given example is the Hudson CI tool, but it's
likely that other tools also need a file to work on.
Committed by jurka. Thanks to Frank Spies.
-
Implement ResultSet.updateArray by simply mapping it to
updateObject which now works for arrays.
Committed by jurka.
-
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.
Committed by jurka. Thanks to Ravi Periasmy.
-
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.
Committed by jurka. Thanks to Leon Do.
-
Make the default object return type of oids to be a Java Long
instead of Integer because oids are unsigned and exceed the
range of Integer.
Committed by jurka.
-
Make Large Object handling work when the oid counter has exceeded
Integer.MAX_VALUE by handling oids as longs.
Committed by jurka.
-
Allow multiple streams on the same large object to be used in
parallel by assigning each stream its own large object handle.
Committed by jurka.
-
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.
Committed by jurka. Thanks to Heikki Linnakangas.
-
Close ref cursors immediately after fetching the rows. In long
running transactions leaving them open results in memory
consumption.
Committed by davec. Thanks to Guillaume Smet.
-
Fix the error message generated by a CallableStatement not getting
results that match the registered out parameters to report the
correct parameter position.
Committed by jurka.
-
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.
Committed by jurka.
-
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.
Committed by jurka. Thanks to Valery Meshkov.
-
Remove mapping of the rand escape function. Due to the change in
the setseed backend function return value from int to void we
cannot implement in the same way as for previous server versions.
Also per discussion the old implementation looked wrong and the
spec gives us very little insight into what it should actually
do.
Committed by jurka.
-
Allow updatable ResultSets to update arrays.
Committed by jurka. Thanks to Vasylenko.
-
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.
Committed by jurka.
-
Parse timezones that have offsets in seconds. 8.2 servers now return
this information so we must be able to handle it.
Committed by jurka.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Dave Cramer (davec), Kris Jurka (jurka).
This is a list of other contributors:
Bojan Skaljac, Frank Spies, Guillaume Smet, Heikki Linnakangas, Leon Do, Ravi Periasmy, Stephen Denne, Nelson Arape, Valery Meshkov, Vasylenko.
Version 8.2-505 (2007-04-18)
-
Initial Serbian translation.
Committed by jurka. Thanks to Bojan Skaljac.
-
Implement ResultSet.updateArray by simply mapping it to
updateObject which now works for arrays.
Committed by jurka.
-
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.
Committed by jurka. Thanks to Ravi Periasmy.
-
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.
Committed by jurka. Thanks to Leon Do.
-
Make Large Object handling work when the oid counter has exceeded
Integer.MAX_VALUE by handling oids as longs.
Committed by jurka.
-
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.
Committed by jurka. Thanks to Heikki Linnakangas.
-
Fix the error message generated by a CallableStatement not getting
results that match the registered out parameters to report the
correct parameter position.
Committed by jurka.
-
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.
Committed by jurka.
-
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.
Committed by jurka. Thanks to Valery Meshkov.
-
Allow updatable ResultSets to update arrays.
Committed by jurka. Thanks to Vasylenko.
-
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.
Committed by jurka.
-
Parse timezones that have offsets in seconds. 8.2 servers now return
this information so we must be able to handle it.
Committed by jurka.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Bojan Skaljac, Heikki Linnakangas, Leon Do, Ravi Periasmy, Valery Meshkov, Vasylenko.
Version 8.1-409 (2007-04-18)
Version 8.0-319 (2007-04-18)
-
Implement ResultSet.updateArray by simply mapping it to
updateObject which now works for arrays.
Committed by jurka.
-
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.
Committed by jurka. Thanks to Leon Do.
-
Allow updatable ResultSets to update arrays.
Committed by jurka. Thanks to Vasylenko.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Leon Do, Vasylenko.
Version 8.2-504 (2006-12-01)
-
Make the driver build under the 1.6 JDK.
Committed by jurka.
-
Reduce memory usage when bytea
data is retrieved from ResultSet.getBytes by using an extra pass
over the data to determine the output buffer size ahead of time.
Committed by jurka. Thanks to Luis Vilar Flores.
-
Improve performance when
retrieving large ResultSets consisting of Strings, ints, and
longs. Improve String retrieval by avoiding a copy from the
network buffer and using it directly to create the String
instance. Improve integer retrieval by using a custom byte to
number conversion that uses knowledge of the encoding to avoid
creating an intermediate String representation first.
Committed by jurka. Thanks to Mikko Tiihonen.
-
Add support for parsing dollar quotes and comments.
Committed by jurka. Thanks to Michael Paesold.
-
Improve the
performance of getBoolean for false values by explicitly checking
for false rather than generating a NumberFormatException.
Committed by jurka. Thanks to Eberhard Schulte.
-
Make the driver operate correctly
when standard_conforming_strings is on.
Committed by jurka. Thanks to Michael Paesold.
-
Allow XAResource.start with TMJOIN in a limited set of circumstances
to work with WebLogic. We allow TMJOIN only if the resource was
previously ended and the Xid is the same as the current Xid.
Committed by jurka. Thanks to Jan de Visser and Heikki Linnakangas.
-
When issuing multiple queries on
one statement the driver was not clearing some intermediate state
between executions. When an update, insert, or delete followed a
select, the select's results were still available and would be
returned instead of the non-query's affected row count.
Committed by jurka. Thanks to Gilles Rayrat.
-
When the
driver asks the server to resolve a type the resolved type is
stored in the SimpleQuery object. When the statement is executed
again the driver determines whether the existing types match or
if it needs to be re-prepared by comparing the current Statement's
settings with the SimpleQuery. The Statement will have the
unspecified oid while the SimpleQuery will have the resolved oid,
so there will not be a match and the statement will needlessly be
re-prepared. Allow an unspecified oid to match any resolved type.
Committed by jurka. Thanks to Akira Sato.
-
When creating a ResultSet from a refcursor, respect the creating
ResultSet's scrollability setting. The way the ResultSet is
created means that it will always be scrollable anyway, so
there's no downside. We cannot support updatable refcursor
ResultSets until we get updatable cursors.
Committed by jurka.
-
Fix a bug in function escape
processing. When dealing with an invalid escape the code
attempted to read until it hit the escape end and press on, but
it forgot to increment its position counter. This lead to an
infinite loop that eventually resulted in an out of memory error.
Committed by jurka.
-
Update the documentation to reflect the fact that the
default prepareThreshold is five, not zero.
Committed by jurka.
-
Improve handling of incorrectly written user code using
CallableStatements. Defend against trying to retrieve data
before the statement is executed.
Committed by jurka.
-
Adjust precision returned by meta data methods to reflect the
latest javadocs additional documentation.
Committed by jurka.
-
Correct error message in CallableStatement to identify the mismatch
with the registered return type.
Committed by jurka.
-
Correct escaping of named savepoints which follow identifier, not
literal rules.
Committed by jurka. Thanks to Michael Paesold.
-
XAConnections default autocommit state
should be true. The driver was previously setting autocommit to
false and assuming it would stay that way. This caused two
problems. First, some applications expected to be able to issue
local autocommit transactions prior to begin(). Second, some TMs
(Geronimo) set the autocommit state to true themselves, which
causes problems as the driver did not expect it to be changed.
This patch correctly disables and enables autocommit around
start, prepare, commit, and rollback methods.
Committed by jurka. Thanks to Allan Saddi.
-
Italian translation update.
Committed by jurka. Thanks to Giuseppe Sacco.
-
Brazilian Portuguese translation update.
Committed by jurka. Thanks to Euler Taveira de Oliveira.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Akira Sato, Allan Saddi, Eberhard Schulte, Euler Taveira de Oliveira, Gilles Rayrat, Giuseppe Sacco, Jan de Visser and Heikki Linnakangas, Luis Vilar Flores, Michael Paesold, Mikko Tiihonen.
Version 8.1-408 (2006-12-01)
-
When issuing multiple queries on
one statement the driver was not clearing some intermediate state
between executions. When an update, insert, or delete followed a
select, the select's results were still available and would be
returned instead of the non-query's affected row count.
Committed by jurka. Thanks to Gilles Rayrat.
-
When the
driver asks the server to resolve a type the resolved type is
stored in the SimpleQuery object. When the statement is executed
again the driver determines whether the existing types match or
if it needs to be re-prepared by comparing the current Statement's
settings with the SimpleQuery. The Statement will have the
unspecified oid while the SimpleQuery will have the resolved oid,
so there will not be a match and the statement will needlessly be
re-prepared. Allow an unspecified oid to match any resolved type.
Committed by jurka. Thanks to Akira Sato.
-
When creating a ResultSet from a refcursor, respect the creating
ResultSet's scrollability setting. The way the ResultSet is
created means that it will always be scrollable anyway, so
there's no downside. We cannot support updatable refcursor
ResultSets until we get updatable cursors.
Committed by jurka.
-
Fix a bug in function escape
processing. When dealing with an invalid escape the code
attempted to read until it hit the escape end and press on, but
it forgot to increment its position counter. This lead to an
infinite loop that eventually resulted in an out of memory error.
Committed by jurka.
-
Update the documentation to reflect the fact that the
default prepareThreshold is five, not zero.
Committed by jurka.
-
Correct error message in CallableStatement to identify the mismatch
with the registered return type.
Committed by jurka.
-
Correct escaping of named savepoints which follow identifier, not
literal rules.
Committed by jurka. Thanks to Michael Paesold.
-
Italian translation update.
Committed by jurka. Thanks to Giuseppe Sacco.
-
Brazilian Portuguese translation update.
Committed by jurka. Thanks to Euler Taveira de Oliveira.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Akira Sato, Euler Taveira de Oliveira, Gilles Rayrat, Giuseppe Sacco, Michael Paesold.
Version 8.0-318 (2006-12-01)
-
When issuing multiple queries on
one statement the driver was not clearing some intermediate state
between executions. When an update, insert, or delete followed a
select, the select's results were still available and would be
returned instead of the non-query's affected row count.
Committed by jurka. Thanks to Gilles Rayrat.
-
When the
driver asks the server to resolve a type the resolved type is
stored in the SimpleQuery object. When the statement is executed
again the driver determines whether the existing types match or
if it needs to be re-prepared by comparing the current Statement's
settings with the SimpleQuery. The Statement will have the
unspecified oid while the SimpleQuery will have the resolved oid,
so there will not be a match and the statement will needlessly be
re-prepared. Allow an unspecified oid to match any resolved type.
Committed by jurka. Thanks to Akira Sato.
-
When creating a ResultSet from a refcursor, respect the creating
ResultSet's scrollability setting. The way the ResultSet is
created means that it will always be scrollable anyway, so
there's no downside. We cannot support updatable refcursor
ResultSets until we get updatable cursors.
Committed by jurka.
-
Fix a bug in function escape
processing. When dealing with an invalid escape the code
attempted to read until it hit the escape end and press on, but
it forgot to increment its position counter. This lead to an
infinite loop that eventually resulted in an out of memory error.
Committed by jurka.
-
Update the documentation to reflect the fact that the
default prepareThreshold is five, not zero.
Committed by jurka.
-
Correct escaping of named savepoints which follow identifier, not
literal rules.
Committed by jurka. Thanks to Michael Paesold.
-
Brazilian Portuguese translation update.
Committed by jurka. Thanks to Euler Taveira de Oliveira.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Akira Sato, Euler Taveira de Oliveira, Gilles Rayrat, Michael Paesold.
Version 8.2-dev503 (2006-05-23)
-
Using callable
statements against older server versions (7.4 or 8.0) did not
work because of recent changes to output parameter handling. 7.4
and 8.0 do not support function output parameters, but they still
must support the functions return value. Every function must
have either a return value or an output parameter so we force the
minimum output parameter count to one.
Committed by jurka.
-
Remove documentation's claim that we don't support functions
with out parameters.
Committed by jurka.
-
Updated German translation.
Committed by jurka. Thanks to Andre Bialojahn.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Andre Bialojahn.
Version 8.1-407 (2006-05-23)
-
Using callable
statements against older server versions (7.4 or 8.0) did not
work because of recent changes to output parameter handling. 7.4
and 8.0 do not support function output parameters, but they still
must support the functions return value. Every function must
have either a return value or an output parameter so we force the
minimum output parameter count to one.
Committed by jurka.
-
When running against a 8.1+ server with protocol version 2
we cannot handle output parameters and can only handle the
traditional function return value.
Committed by jurka.
-
Remove documentation's claim that we don't support functions
with out parameters.
Committed by jurka.
-
Updated German translation.
Committed by jurka. Thanks to Andre Bialojahn.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Andre Bialojahn.
Version 8.0-317 (2006-05-23)
-
A bad merge of out of memory
detection and zero testing resulted in incorrectly handing of
null values.
Committed by jurka. Thanks to Glenn Holmer.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Glenn Holmer.
Version 8.2-dev502 (2006-05-22)
-
Add a protocolVersion
parameter to the test suite runner. This allows testing the V2
protocol path on newer server versions. Also fix tests that were
incorrectly using the server version for protocol version
dependent results. To give it a try, just add protocolVersion=2
to your build.local.properties.
Committed by jurka.
-
Add escape sequences for timestamp addition and difference.
Committed by davec. Thanks to Xavier Poinsard.
-
Fix a couple of bugs in CallableStatement outputs. An oversight in
the checking of actual results vs. what the caller specified for
registerOutParameter was checking all register parameters against the
first out parameter, not the parameter it actually corresponded with.
Also with a function that has an in parameter and an out parameter,
the out parameter will be registered at position 2, but will be
returned in a result at position 1 because the first input parameter
generates no output. The driver needs to correctly map between these
two parameter offsets.
Committed by davec. Thanks to Luis Londono.
-
Error messages were not run
through MessageFormat if it didn't have any parameters. This was
a problem because all error messages are written expecting to be
run through the formatter and use two single quotes when only one
is desired in the output. Without being run through the
formatter the two quotes appeared in the output.
Committed by jurka. Thanks to Giuseppe Sacco.
-
Add some more synchronization to the
TypeInfoCache. We need synchronization around the
PreparedStatements because they may not be used by two threads at
the same time. Additional synchronization is applied to the maps
to ensure that they are in sync with each other. Make
_pgNameToSQLType static.
Committed by jurka. Thanks to Till Toenges.
-
An OutOfMemoryError during fe<->be communication leaves the
protocol in an unknown state. This prevents the caller from even
closing the connection. Checking every allocation is a lot of
work, but the most likely error location is going to be when
receiving large result sets. Put in checks around receiving row
data to detect memory exhaustion, keep the protocol in a known
state, and report the failure back to the user.
Committed by jurka. Thanks to David Blasby.
-
When we're unable to parse a timestamp
value, the error message should print out the bad value. It was
printing a char array which showed up as a useless [C@xxxx.
Committed by jurka. Thanks to Oliver Jowett.
-
gij/gcj has some JDK1.5 classes in it, but it only supports
JDK1.4 as the default source level. This confuses older ant
versions and our build script tries to compile a JDK1.5 version.
Instead of letting ant detect the java version, let the jvm tell
us that itself using java.specification.version as suggested by
Heikki Linnakangas. Also put in a check for a JDK1.6 compile
attempt and bail out with an explanatory unsupported error
message instead of just failing at some random point.
Committed by jurka.
-
When a
prepared statement uses different parameter types than what the
statement was originally prepared for, the driver must replan the
query for the new types. When doing this in batches the driver
was not correctly freeing old plans.
To cleanup prepared statements the driver records a reference to
a query object in response to the ParseComplete message. The
problem in this case was that since the driver sends multiple
Parse messages before a Sync, when the driver receives the first
ParseComplete message the query object now contains a reference
to the latest parsed statement, not the first. So it was only
cleaning up the last parsed statement not all of them.
Committed by jurka. Thanks to Peter Eisentraut.
-
When the
Connection retrieved from XAConnection.getConnection() is closed
we do not want to rollback the transaction because the underlying
connection is not closed and the transaction is being managed by
the XAResource, not the Connection.
Committed by jurka. Thanks to Niels Beekman.
-
Updated German translation.
Committed by jurka. Thanks to Andre Bialojahn.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Dave Cramer (davec), Kris Jurka (jurka).
This is a list of other contributors:
Andre Bialojahn, David Blasby, Giuseppe Sacco, Luis Londono, Niels Beekman, Oliver Jowett, Peter Eisentraut, Till Toenges, Xavier Poinsard.
Version 8.1-406 (2006-05-22)
-
Fix a couple of bugs in CallableStatement outputs. An oversight in
the checking of actual results vs. what the caller specified for
registerOutParameter was checking all register parameters against the
first out parameter, not the parameter it actually corresponded with.
Also with a function that has an in parameter and an out parameter,
the out parameter will be registered at position 2, but will be
returned in a result at position 1 because the first input parameter
generates no output. The driver needs to correctly map between these
two parameter offsets.
Committed by davec. Thanks to Luis Londono.
-
Error messages were not run
through MessageFormat if it didn't have any parameters. This was
a problem because all error messages are written expecting to be
run through the formatter and use two single quotes when only one
is desired in the output. Without being run through the
formatter the two quotes appeared in the output.
Committed by jurka. Thanks to Giuseppe Sacco.
-
Add some more synchronization to the
TypeInfoCache. We need synchronization around the
PreparedStatements because they may not be used by two threads at
the same time. Additional synchronization is applied to the maps
to ensure that they are in sync with each other. Make
_pgNameToSQLType static.
Committed by jurka. Thanks to Till Toenges.
-
An OutOfMemoryError during fe<->be communication leaves the
protocol in an unknown state. This prevents the caller from even
closing the connection. Checking every allocation is a lot of
work, but the most likely error location is going to be when
receiving large result sets. Put in checks around receiving row
data to detect memory exhaustion, keep the protocol in a known
state, and report the failure back to the user.
Committed by jurka. Thanks to David Blasby.
-
When we're unable to parse a timestamp
value, the error message should print out the bad value. It was
printing a char array which showed up as a useless [C@xxxx.
Committed by jurka. Thanks to Oliver Jowett.
-
gij/gcj has some JDK1.5 classes in it, but it only supports
JDK1.4 as the default source level. This confuses older ant
versions and our build script tries to compile a JDK1.5 version.
Instead of letting ant detect the java version, let the jvm tell
us that itself using java.specification.version as suggested by
Heikki Linnakangas. Also put in a check for a JDK1.6 compile
attempt and bail out with an explanatory unsupported error
message instead of just failing at some random point.
Committed by jurka.
-
When a
prepared statement uses different parameter types than what the
statement was originally prepared for, the driver must replan the
query for the new types. When doing this in batches the driver
was not correctly freeing old plans.
To cleanup prepared statements the driver records a reference to
a query object in response to the ParseComplete message. The
problem in this case was that since the driver sends multiple
Parse messages before a Sync, when the driver receives the first
ParseComplete message the query object now contains a reference
to the latest parsed statement, not the first. So it was only
cleaning up the last parsed statement not all of them.
Committed by jurka. Thanks to Peter Eisentraut.
-
When the
Connection retrieved from XAConnection.getConnection() is closed
we do not want to rollback the transaction because the underlying
connection is not closed and the transaction is being managed by
the XAResource, not the Connection.
Committed by jurka. Thanks to Niels Beekman.
-
Updated German translation.
Committed by jurka. Thanks to Andre Bialojahn.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Dave Cramer (davec), Kris Jurka (jurka).
This is a list of other contributors:
Andre Bialojahn, David Blasby, Giuseppe Sacco, Luis Londono, Niels Beekman, Oliver Jowett, Peter Eisentraut, Till Toenges.
Version 8.0-316 (2006-05-22)
-
Error messages were not run
through MessageFormat if it didn't have any parameters. This was
a problem because all error messages are written expecting to be
run through the formatter and use two single quotes when only one
is desired in the output. Without being run through the
formatter the two quotes appeared in the output.
Committed by jurka. Thanks to Giuseppe Sacco.
-
An OutOfMemoryError during fe<->be communication leaves the
protocol in an unknown state. This prevents the caller from even
closing the connection. Checking every allocation is a lot of
work, but the most likely error location is going to be when
receiving large result sets. Put in checks around receiving row
data to detect memory exhaustion, keep the protocol in a known
state, and report the failure back to the user.
Committed by jurka. Thanks to David Blasby.
-
gij/gcj has some JDK1.5 classes in it, but it only supports
JDK1.4 as the default source level. This confuses older ant
versions and our build script tries to compile a JDK1.5 version.
Instead of letting ant detect the java version, let the jvm tell
us that itself using java.specification.version as suggested by
Heikki Linnakangas. Also put in a check for a JDK1.6 compile
attempt and bail out with an explanatory unsupported error
message instead of just failing at some random point.
Committed by jurka.
-
When a
prepared statement uses different parameter types than what the
statement was originally prepared for, the driver must replan the
query for the new types. When doing this in batches the driver
was not correctly freeing old plans.
To cleanup prepared statements the driver records a reference to
a query object in response to the ParseComplete message. The
problem in this case was that since the driver sends multiple
Parse messages before a Sync, when the driver receives the first
ParseComplete message the query object now contains a reference
to the latest parsed statement, not the first. So it was only
cleaning up the last parsed statement not all of them.
Committed by jurka. Thanks to Peter Eisentraut.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
David Blasby, Giuseppe Sacco, Peter Eisentraut.
Version 8.2-dev501 (2006-02-09)
-
Unify type metadata functions in TypeInfoCache. Previously
ResultSetMetaData and DatabaseMetaData had their own
inconsistent versions of these. Do not use pg_type.typlen when
calculating display sizes. The backend storage size is unlikely
to relate to the textual display size of a datatype.
Add information for some more types interval, bit, varbit and do
some recalculation of the display sizes for numeric, time, and
timestamp datetypes.
Committed by jurka.
-
Update getObject and getArray methods that take a map to only
bail out with a not implemented exception if the supplied map
is not null and not empty. Apparently Sun's WebRowSet
implementation passes empty Maps to these methods.
Committed by jurka. Thanks to Gunnar Stefansson.
-
Statement.cancel was prone to race conditions even with a single
threaded client. It would fire off a cancel message without
waiting for an acknowledgement of its success. This resulted in
future queries being cancelled when the cancel message was
received by the backend. Ensure we get an EOF from the server
before returning from the cancel call. This still does nothing
about multi-threaded race conditions.
Committed by jurka. Thanks to Oliver Jowett.
-
Fix the parameter indexing on CallableStatements that do not
return any parameters.
Committed by davec.
-
The V2 protocol wasn't correctly handling EmptyQuery messages.
It expected a four byte message length after the EmptyQuery
message, but there is only a single null byte sent by the backend.
Committed by jurka.
-
When performing replace processing we must continue processing
until we hit the end of a user supplied query, not just once
we've detected the end of a valid query. Consider the example:
SELECT a FROM t WHERE (1>0)) ORDER BY a; We must send the whole
query to the backend, not just the section before the last
closing parenthesis.
Committed by jurka. Thanks to Senden Kris.
-
escapeQuotes() in DatabaseMetaData was not correctly handling
backslashes which would result in incorrect searches and has the
potential for a SQL injection attack.
Committed by jurka. Thanks to Paolo Predonzani.
-
The TypeInfoCache had a static Map for the pg
type name to java.sql.Types conversion, but it was being
reinitialized for each new Connection. Even though its content
is static make this an instance variable for simplicity.
Committed by jurka. Thanks to Till Toenges.
-
Remove the length argument from Field constructor for manually
created Fields. The length was inconsistently and incorrectly
used and it is of little to us, so don't clutter things up by
requiring one.
Committed by jurka.
-
Italian translation updates.
Committed by jurka. Thanks to Giuseppe Sacco.
-
Brazilian Portuguese translation updates.
Committed by jurka. Thanks to Euler Taveira de Oliveira.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Dave Cramer (davec), Kris Jurka (jurka).
This is a list of other contributors:
Euler Taveira de Oliveira, Giuseppe Sacco, Gunnar Stefansson, Oliver Jowett, Paolo Predonzani, Senden Kris, Till Toenges.
Version 8.1-405 (2006-02-09)
-
Add scale information for time/timestamp/interval to
DatabaseMetaData.getColumns. Include knowledge of interval in
ResultSetMetaData.
Committed by jurka.
-
Update getObject and getArray methods that take a map to only
bail out with a not implemented exception if the supplied map
is not null and not empty. Apparently Sun's WebRowSet
implementation passes empty Maps to these methods.
Committed by jurka. Thanks to Gunnar Stefansson.
-
Correct the display size calculations for numeric data. Don't
add precision and scale because scale is just a subset of
precision.
Committed by jurka.
-
DatabaseMetaData.getTables should return all table type if passed
null as for the types array. It was previously returning only
those tables that psql's \d command would for a null type filter.
Committed by jurka. Thanks to Thomas Kellerer.
-
Statement.cancel was prone to race conditions even with a single
threaded client. It would fire off a cancel message without
waiting for an acknowledgement of its success. This resulted in
future queries being cancelled when the cancel message was
received by the backend. Ensure we get an EOF from the server
before returning from the cancel call. This still does nothing
about multi-threaded race conditions.
Committed by jurka. Thanks to Oliver Jowett.
-
Fix the parameter indexing on CallableStatements that do not
return any parameters.
Committed by davec.
-
The V2 protocol wasn't correctly handling EmptyQuery messages.
It expected a four byte message length after the EmptyQuery
message, but there is only a single null byte sent by the backend.
Committed by jurka.
-
When performing replace processing we must continue processing
until we hit the end of a user supplied query, not just once
we've detected the end of a valid query. Consider the example:
SELECT a FROM t WHERE (1>0)) ORDER BY a; We must send the whole
query to the backend, not just the section before the last
closing parenthesis.
Committed by jurka. Thanks to Senden Kris.
-
escapeQuotes() in DatabaseMetaData was not correctly handling
backslashes which would result in incorrect searches and has the
potential for a SQL injection attack.
Committed by jurka. Thanks to Paolo Predonzani.
-
The TypeInfoCache had a static Map for the pg
type name to java.sql.Types conversion, but it was being
reinitialized for each new Connection. Even though its content
is static make this an instance variable for simplicity.
Committed by jurka. Thanks to Till Toenges.
-
Italian translation updates.
Committed by jurka. Thanks to Giuseppe Sacco.
-
Brazilian Portuguese translation updates.
Committed by jurka. Thanks to Euler Taveira de Oliveira.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Dave Cramer (davec), Kris Jurka (jurka).
This is a list of other contributors:
Euler Taveira de Oliveira, Giuseppe Sacco, Gunnar Stefansson, Oliver Jowett, Paolo Predonzani, Senden Kris, Thomas Kellerer, Till Toenges.
Version 8.0-315 (2006-02-09)
Version 8.2-dev500 (2005-11-29)
-
Add a URL parameter to enable logging of Connections which are
finalized, but not closed. This will help people debug leaks.
Committed by jurka. Thanks to rupa.
-
Add a new parameter 'stringtype' (values 'varchar' or 'unspecified')
to control how parameters set via setString() are bound.
Fix V3 parameter logic so that prepared statements are not reused
when a non-NULL UNSPECIFIED parameter is set over the top of a
previous parameter.
Committed by oliver.
-
Adjust ResultSetMetaData.getColumnDisplaySize to return
Integer.MAX_VALUE instead of -1 for variable length fields.
Committed by jurka.
-
Correct the display size calculations for numeric data. Don't
add precision and scale because scale is just a subset of
precision.
Committed by jurka.
-
DatabaseMetaData.getTables should return all table type if passed
null as for the types array. It was previously returning only
those tables that psql's \d command would for a null type filter.
Committed by jurka. Thanks to Thomas Kellerer.
-
Strip out call
tracing debugging from DatabaseMetaData -- it is only half there,
and it isn't really much use for debugging the driver. There are
better approaches for tracing application calls into the driver,
e.g. JTrace. Update comments. Update what the metadata claims
in a couple of places: getMaxStatements() returns 0 -- we are only
limited by heap size, not by e.g. a hard limit on the number of
simultaneous statements on the DB side - supportsMultipleResultSets()
returns true -- we support multiple results from execute(), e.g.
multiple SELECT statements in one query.
Committed by oliver.
-
Debug logging overhaul:
Support for setting loglevel when running tests. Tests log to a
separate file to avoid making ant run out of heap. Misc test
tweaks to play nicely with logging.
Add a Logger class that handles logging a per-connection ID and
timestamp on each log line. There is one Logger instance per
Connection, and one for the Driver itself.
Rearrange per-connection initialization of log levels so it only
affects logging on that one particular connection. Default log
levels are taken from whatever is specified in the defaults
property file, or the current driver-wide loglevel if no default
is present. The driver-wide log level is also take from the
default property file unless explicitly overridden by
Driver.setLogLevel().
Committed by oliver.
-
Break most of AbstractJdbc2ResultSet.findColumn out into a separate
findColumnIndex() method that does not throw if the column isn't
found. Use that method directly in isUpdateable() when looking
for the OID column to avoid creating/throwing/catching/discarding
an exception unnecessarily. Clean up redundant try/catch and
unnecessary nesting in updateRow().
Committed by oliver. Thanks to Kevin Grittner.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka), Oliver Jowett (oliver).
This is a list of other contributors:
Kevin Grittner, rupa, Thomas Kellerer.
Version 8.1-404 (2005-11-06)
Version 8.0-314 (2005-11-06)
-
When I added bounds checking for ResultSet.updateXXX methods, I
accidentally removed bounds checking for getXXX methods. This
resulted in an ArrayIndexOutOfBoundsException being thrown instead
of the desired SQLException.
Committed by jurka.
-
The driver needs to break a statement into individual queries to
use the V3 extended query protocol. The parsing code did not
recognize multiple rule actions separated by semi-colons as one
query.
Committed by jurka. Thanks to Jolly Chen.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Jolly Chen.
Version 8.1-dev403 (2005-10-30)
Version 404 (2005-11-06)
Version 314 (2005-11-06)
-
When I added bounds checking for ResultSet.updateXXX methods, I
accidentally removed bounds checking for getXXX methods. This
resulted in an ArrayIndexOutOfBoundsException being thrown instead
of the desired SQLException.
Committed by jurka.
-
The driver needs to break a statement into individual queries to
use the V3 extended query protocol. The parsing code did not
recognize multiple rule actions separated by semi-colons as one
query.
Committed by jurka. Thanks to Jolly Chen.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
Jolly Chen.
Version 8.1-dev403 (2005-10-30)
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
This is a list of other contributors:
Version 8.1-dev402 (2005-10-04)
-
Initial Czech translation.
Committed by jurka. Thanks to Petr Dittrich.
-
Add the Detail: field to the default error message string. This is
often includes valuable information that shouldn't require adjusting
the loglevel to receive.
Committed by jurka.
-
Fix a multitude of timestamp, timezone, and Calendar problems
resulting from the mismatch of Java's Timestamp object and the
SQL specs timestamp with and without time zone datatypes.
Committed by oliver.
-
getWarnings() should throw a SQLException if called on a closed
Statement.
Committed by jurka.
-
Make callable statements work again for JDK 1.5 builds. Any code
in the jdbc3/Jdbc3 classes also needs to get into the corresponding
jdbc3g/Jdbc3g class.
Committed by jurka.
-
Every execution of a Statement clears the warning chain from the
previous execution. This was causing a memory leak by endlessly
chaining warnings together that should have been discarded.
Committed by jurka. Thanks to Albe Laurenz.
-
Fix updateRow() involving Date, Time, or Timestamp.
Committed by oliver.
-
Remove direct manipulation of org.postgresql.Driver.logDebug in
tests for no apparent reason.
Committed by jurka.
-
Adjust DatabaseMetaData.getCatalogs to only return the current
connection's catalog. PG doesn't support multiple catalogs on a
single connection and making this information available only confuses
people and applications. Per discussion of Jan 2004.
Committed by jurka.
-
Map setObject calls for Types.BLOB, CLOB, and ARRAY to call the
related setXXX method if we don't need to do any conversion.
Committed by jurka. Thanks to Marc Herbert.
-
8.1 servers store interval day and hour information separately, so
we have to be prepared for more than two digits worth of hour data.
Also pre-7.4 servers do not return second information if it is zero,
so we cannot parse this field unless it is actually there.
Committed by jurka. Thanks to Jean-Pierre Pelletier.
-
Add checks to prevent ResultSet.updateXXX methods from throwing
an ArrayIndexOutOfBoundsException. We should only throw SQLExceptions
from here.
Committed by jurka.
-
ResultSet.getObject().getClass().getName() should match up with
ResultSetMetaData.getColumnClassName(). This wasn't true for the
java.sql.Types.SMALLINT case.
Committed by jurka. Thanks to Karl von Randow.
-
Make setObject(int, Object) aware of the Blob, Clob, and Array types
when trying to infer the incoming object type.
Committed by jurka. Thanks to Marc Herbert.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka), Oliver Jowett (oliver).
This is a list of other contributors:
Albe Laurenz, Jean-Pierre Pelletier, Karl von Randow, Marc Herbert, Petr Dittrich.
Version 8.0-313 (2005-10-04)
Version 8.1-dev401 (2005-07-24)
-
Support asynchronous notifications by looking for pending messages
when getNotifications() is called. Doesn't always pick up on them
(it depends if the underlying socket input stream implements
available()) but it's better than the status quo.
Committed by oliver. Thanks to Andras Kadinger.
-
Make PGInterval useful instead of just a placeholder by providing
access to the individual fields.
Committed by jurka. Thanks to Oliver Siegmar.
-
Simplified Chineses translation.
Committed by jurka. Thanks to Weiping.
-
Move the custom UTF-8 decoder into a subclass of Encoding.
Add support to the UTF-8 decoder for Unicode code points above U+FFFF
represented as a surrogate pair in Java). These values can be
generated by the backend from 8.1. The reverse path is already
handled by the JVM's own UTF-8 encoder.
Add a number of unicode encode/decode tests to make sure it's
all working.
Committed by oliver.
-
Modifications to pass JDBC CTS. Added test cases which are
essentially the same as the CTS to make sure we continue to pass it.
Committed by davec.
-
Fixed problem with calendar being modified in setDate, setTimestamp.
Committed by davec.
-
Improve null handling. Allow setNull(1, Types.XXX) for ARRAY,
NULL, DISTINCT, and STRUCT by mapping them to the unknown oid.
Make setArray, setBlob, setClob, and setCharacterStream accept
null parameters.
Committed by jurka.
-
In 8.1 index_max_keys != func_max_args which broke the code for
determining index_max_keys and retreiving foreign key information.
Use the GUC variable max_index_keys and pg_catalog.generate_series
instead of inspecting typlens and using
information_schema._pg_keypositions.
Committed by jurka.
-
Allow jdbc2-optional and jdbc3 test suites to be run on their own
(with a suitably adjusted build.xml). They depended on the jdbc2
tests being run to load the driver for them.
Committed by jurka.
-
In Blob.getBytes(long position, int length) position is an offset
starting at 1, not zero as the driver was previously doing.
Committed by jurka. Thanks to Emmanuel Bernard.
-
Add a test case to detect if we modify a passed in Calendar object
to things like PreparedStatement.setTimestamp. This shows the
fix for setDate had an error and that the corresponding ResultSet.get
methods had the same problems.
Committed by jurka.
-
Remove redundant javadoc comments (getter/setter methods don't need
@param @return tags). Many of which caused warnings because of
mismatches between @param and the actual parameter name.
Committed by jurka.
-
Added conversions for cts tests.
Committed by davec.
-
Java message format strings need to double 's.
Committed by jurka.
-
Fix ResultSet.getObject(..., Types.SMALLINT) to return an Integer
per the JDBC3 typemapping appendix. Add support for several more
types to ResultSet.getObject: BOOLEAN, TINYINT, DECIMAL, LONGVARCHAR,
LONGVARBINARY, CLOB, BLOB.
Committed by oliver. Thanks to Kevin Grittner.
-
CallableStatmentTest.getShort will only work with v3 protocol
exposed the protocol version to AbstractJdbc2Connection,
utility method in TestUtil to enable/disable tests based on
protocol version.
Committed by davec.
-
Check the pg_input buffer, as well as the socket itself, when looking
for pending async notifies -- otherwise we only report the first of
a batch of notifies until more data comes along.
Committed by oliver.
-
Brazilian translation updates.
Committed by jurka. Thanks to Euler Taveira de Oliveira.
-
Polish translation updates.
Committed by jurka. Thanks to Jaroslaw Pyszny.
-
Update comments for getExtraNameCharacters to describe why we can't
list all the possible valid ones.
Committed by jurka.
-
Italian translation updates.
Committed by jurka. Thanks to Giuseppe Sacco.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Dave Cramer (davec), Kris Jurka (jurka), Oliver Jowett (oliver).
This is a list of other contributors:
Andras Kadinger, Emmanuel Bernard, Euler Taveira de Oliveira, Giuseppe Sacco, Jaroslaw Pyszny, Kevin Grittner, Oliver Siegmar, Weiping.
Version 8.0-312 (2005-07-24)
-
Simplified Chineses translation.
Committed by jurka. Thanks to Weiping.
-
Improve null handling. Allow setNull(1, Types.XXX) for ARRAY,
NULL, DISTINCT, and STRUCT by mapping them to the unknown oid.
Make setArray, setBlob, setClob, and setCharacterStream accept
null parameters.
Committed by jurka.
-
In Blob.getBytes(long position, int length) position is an offset
starting at 1, not zero as the driver was previously doing.
Committed by jurka. Thanks to Emmanuel Bernard.
-
Add a test case to detect if we modify a passed in Calendar object
to things like PreparedStatement.setTimestamp. This shows the
fix for setDate had an error and that the corresponding ResultSet.get
methods had the same problems.
Committed by jurka.
-
Fix ResultSet.getObject(..., Types.SMALLINT) to return an Integer
per the JDBC3 typemapping appendix. Add support for several more
types to ResultSet.getObject: BOOLEAN, TINYINT, DECIMAL, LONGVARCHAR,
LONGVARBINARY, CLOB, BLOB.
Committed by oliver. Thanks to Kevin Grittner.
-
Java message format strings need to double 's.
Committed by jurka.
-
CallableStatmentTest.getShort will only work with v3 protocol
exposed the protocol version to AbstractJdbc2Connection,
utility method in TestUtil to enable/disable tests based on
protocol version.
Committed by davec.
-
Brazilian translation updates.
Committed by jurka. Thanks to Euler Taveira de Oliveira.
-
Polish translation updates.
Committed by jurka. Thanks to Jaroslaw Pyszny.
-
Italian translation updates.
Committed by jurka. Thanks to Giuseppe Sacco.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Dave Cramer (davec), Kris Jurka (jurka), Oliver Jowett (oliver).
This is a list of other contributors:
Emmanuel Bernard, Euler Taveira de Oliveira, Giuseppe Sacco, Jaroslaw Pyszny, Kevin Grittner, Weiping.
Version 8.1-dev400 (2005-04-10)
-
Implement basic login timeout support via a 'loginTimeout' URL parameter.
Committed by oliver.
-
Add method names to the not implemented exception to allow
unhelpful client programs that don't provide a stacktrace
to be debugged.
Committed by jurka. Thanks to Xavier Poinsard.
-
Get DatabaseMetaData.getIndexInfo to return useful data for
functional indexes. Return the expression used for the column name.
Committed by jurka. Thanks to Peter Royal.
-
Implement JDBC 3 Blob methods to allow writing.
Committed by jurka. Thanks to Michael Barker.
-
Make all the fields of a server error message available.
Committed by jurka.
-
Put all type info handling into a separate file. This links oids,
pg type names, sql types, and java class names together.
Use this information to implement ParameterMetaData's
getParameterClassName.
Committed by jurka.
-
SQLWarning.getMessage wasn't reporting the message from a Notice
message in the V3 protocol. Make the V2 and V3 cases return a
consistent message and add a test.
Committed by jurka.
-
Restore the ability for the JDBC driver to map infinite timestamp
values by using special constants in PGStatement. The original
implementation was removed for being arbitrary and unidirectional.
Committed by jurka. Thanks to Oliver Siegmar.
-
Support setNull(x, Types.BLOB) and CLOB, reported by Tore Halset.
Committed by jurka. Thanks to Tore Halset.
-
Avoid generating garbage byte[0] objects that we immediately discard in
ReceiveTupleV2 / ReceiveTupleV3. Also some minor rearrangements to avoid
an unnecessary assignment in the null case. This gives a small performance
improvement.
Committed by oliver. Thanks to Ken Geis.
-
When moveToCurrentRow is called and the current row is off the
end of the ResultSet we can't try to load that row because it
doesn't exist and will throw an Exception.
Committed by jurka. Thanks to Prasanth.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka), Oliver Jowett (oliver).
This is a list of other contributors:
Ken Geis, Michael Barker, Oliver Siegmar, Peter Royal, Prasanth, Tore Halset, Xavier Poinsard.
Version 8.0-311 (2005-04-10)
Version 8.0-310 (2005-02-02)
-
Implement Connection.nativeSQL.
Committed by jurka. Thanks to Xavier Poinsard.
-
Document JDBC escape sequences.
Committed by jurka. Thanks to Xavier Poinsard.
-
Add basic support for JDBC escape for escape char in LIKE string
comparisons.
Committed by jurka. Thanks to Xavier Poinsard.
-
Implement the Describe Statement protocol message. Reallow untyped
nulls and get the backend to resolve the type for us (if necessary).
Also use this message and a new non-executing query execution to
implement PreparedStatement.getMetaData() for an unexecuted
statement and PreparedStatement.getParameterMetaData().
Committed by jurka.
-
Bugfixes and tests for two date-related bugs:
The jdbc escaped scalar function dayofweek should return values between
1 and 7 (1 for sunday) unlike the backend "extract dow" function which is
zero-based.
The literal escaped values for date/time/timestamp were not explicitly casted
which causes some problems. For example: extract( dow from '2005-01-17 12:00:00')
Committed by oliver. Thanks to Xavier Poinsard.
-
When locating driver configuration resources, if getClass().getClassLoader()
returns null (i.e. the driver was loaded via the bootstrap classloader)
then try the system classloader instead.
Load driver configuration in a privileged block, in case there is a lower-
privilege caller that does not have read access to the driver's jar.
Committed by oliver.
-
Fix the PGInterval(String) ctor to correctly set the object's postgresql
type.
Committed by oliver. Thanks to Jean-Pierre Pelletier.
-
Don't map the escaped difference function to levenshtein because
that's not the same thing.
Committed by jurka.
-
Bugfix and testcase for NPE when using an updateable resultset obtained from
a PreparedStatement on a v3 connection.
Committed by oliver. Thanks to Martin Keller.
-
Reject attempts to update a CONCUR_READ_ONLY resultset.
Test fixes and testcase for this.
Committed by oliver.
-
Correctly handle changes in parameter types when using server prepared statements,
by freeing the old statement and repreparin with the new types.
Previously, if a statement was prepared with one set of types and then reused
with a different set of types, the driver wouldn't notice and would continue
to (try to) use the original prepared statement.
Committed by oliver.
-
Reenable the refcursor unit test and make it pass.
Add a test and update the documentation to reflect that refcursor
ResultSets do have working MetaData (at least with the V3 protocol).
Committed by jurka.
-
Name documentation files after there id attributes, not chapter
and section numbers, so if people link to them and we reorganize
things they have a better change of pointing to the right place.
Committed by jurka.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka), Oliver Jowett (oliver).
This is a list of other contributors:
Jean-Pierre Pelletier, Martin Keller, Xavier Poinsard.
Version 8.0-309 (2005-01-17)
-
Initial French translation.
Committed by jurka. Thanks to Xavier Poinsard.
-
Initial German translation.
Committed by jurka. Thanks to Andre Bialojahn.
-
Implement holdable ResultSet support by simply avoiding the use of
cursors and fetching all data at once.
Committed by jurka.
-
Implementation of standard escaped functions ( {fn func()} )
by rewriting to existing PostgreSQL functions.
Committed by jurka. Thanks to Xavier Poinsard.
-
Implement CallableStatement.getArray.
Committed by jurka.
-
Add a chapter on SSL configuration to the documentation.
Committed by jurka.
-
Fix warnings on javadoc because the comments were attached to
fields instead of functions.
Committed by jurka.
-
Adjust DatabaseMetaData to acknowledge that 8.0 supports savepoints.
Committed by jurka.
-
Change error message to reflect the driverconfig.properties file name.
Committed by jurka.
-
Minor code rearrangement to avoid warnings from jikes.
Fix several switch-fallthrough bugs detected by jikes.
Committed by oliver.
-
In a java MessageFormat you need to double single quotes to get
them to work correctly.
Committed by jurka.
-
Throw exceptions if cancelRowUpdates() or updateRow() are called
when on the insert row, per javadoc.
Committed by oliver.
-
Add a URL parameter (allowEncodingChanges) which allows a client
to change the client_encoding variable. This is necessary because
server side COPY commands expect the file to be encoded in the
client_encoding.
Committed by jurka.
-
Check to see if a ResultSet is closed before performing operations on
it. This avoids potential NullPointerExceptions and other problems.
Committed by jurka.
-
Rewrite date/time/timestamp parsing code. Instead of trying to jam
it into a format we can use DateFormat.parse on, just read the fields
individually.
This fixes problems with BC dates and dates past 9999.
It now also rejects +/- infinity instead of mapping these to
arbitrary java values. There is no equivalent.
Committed by jurka.
-
Since getURL is not implemented, throw an exception, don't just
return null.
Committed by jurka.
-
When closing a Statement or ResultSet be sure to close the underlying
Query/ResultCursor to release backend resources.
Committed by jurka.
-
Do not use named statements when batch executing a whole bunch of
individual sql statements. We'll never reuse them and they just
take up backend resources.
Committed by jurka.
-
When loading driverconfig.properties files from the classpath, ensure
that settings are read in reverse classpath order. This means that
settings from files earlier in the classpath override settings from
files found at the end of the classpath.
Committed by jurka.
-
Allow the regression tests to pass when running against an 8.0 server
with default_with_oids turned off. Some tests depend on a table
having oids.
Committed by jurka.
-
When retrieving Int8 or Int16 protocol message formats, we need to
correctly truncate the Int32 storage used to sign these narrower
types. This notably appeared in RowDescription message for
variable length datatypes. The Field.length should have been -1, but
was 65535.
Committed by jurka.
-
When calling toString on a Statement, don't go into a infinite loop.
Committed by jurka.
-
When determining if the user has changed the client_encoding to
something other than unicode, the comparison must be done case
insensitively.
Committed by jurka.
-
Add PSQLState codes to all PSQLExceptions thrown by the driver.
Remove the PSQLException ctor that does not take a PSQLState.
Intercept exceptions in PooledConnectionImpl's handlers. When a fatal
exception is seen (determined by looking at the exception's SQL state),
notify any connection event listeners.
Fix rethrowing of exceptions at the Connection level in
PooledConnectionImpl.
Committed by oliver.
-
Updated Turkish translation.
Committed by jurka. Thanks to Nicolai Tufar.
-
Updated Chinese translation.
Committed by jurka. Thanks to Zhenbang Wei.
-
Updated Russian translation.
Committed by jurka. Thanks to Serguei Mokhov.
-
Updated Brazilian Portuguese translation.
Committed by jurka. Thanks to Euler Taveira de Oliveira.
-
Updated French translation.
Committed by jurka. Thanks to Guillame Cottenceau.
-
Reduce number of messages to translate by parameterizing common
error messages.
Committed by jurka. Thanks to Xavier Poinsard.
-
Rename PGConnectionPool to PGConnectionPoolDataSource to try and
better identify it as not actually being a connection pool. Update
the documentation to point to the new common org.postgresql.ds
classes instead of separate jdbc2/jdbc3 implementations.
Committed by jurka.
-
Update copyright year to 2005.
Committed by jurka.
-
Change default autocommit of our CPDS implementation to on, to be
consistent with normal connections.
Committed by oliver.
-
Bail out with a helpful error message if we cannot build or run the
test suite because of missing dependencies, junit or ant's junit task.
Committed by jurka.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka), Oliver Jowett (oliver).
This is a list of other contributors:
Andre Bialojahn, Euler Taveira de Oliveira, Guillame Cottenceau, Nicolai Tufar, Serguei Mokhov, Xavier Poinsard, Zhenbang Wei.
Version 8.0beta1-308 (2004-11-09)
-
New Spanish translation.
Committed by jurka. Thanks to Diego A. Gil..
-
Allow configuration of the driver by a properties file.
All copies of org.postgresql.driverconfig.properties found in the
classpath will be read and used to setup defaults for the driver.
The most prominent use of this is to allow third parties to provide
mappings for custom datatypes.
Committed by oliver.
-
Correctly cast the return value of a CallableStatement when getShort
is called. getByte presents a can't happen situation as no function
can return a TINYINT because pg doesn't have an equivalent type.
Make this throw an exception if we get to this point.
Committed by jurka. Thanks to Christian Niles.
-
Make PreparedStatement.setNull(i, Types.BOOLEAN) strongly typed.
Previously only Types.BIT was used the boolean oid mapping and
Types.BOOLEAN used the unknown oid.
Committed by jurka. Thanks to Alexey Yudichev.
-
When using large objects for binary data (compatibleVersion < 7.2)
support setNull(i, Types.VARBINARY) to set the oid of the large
object to NULL.
Committed by jurka. Thanks to Alexey Yudichev.
-
When calling setNull or setObject with Types.CHAR, use the oid of
the bpchar pg type, not varchar. Correct array creation that was
using char, not bpchar. Type all textual data as varchar instead
of text because it allows the correct comparison to be made with
char data on text with trailing spaces:
SELECT ' '::char = ' '::varchar;
Committed by jurka.
-
Make fastpath/largeobject code aware of transaction state, so that
in autocommit off mode it will start a new transaction if necessary.
Committed by jurka. Thanks to Alexey Yudichev.
-
Bit shifting code had a typo that incorrectly reconstructed an int
from a byte[]. This fixes a problem with large objects on systems
whose oid counter is >= 0x01000000.
Committed by jurka. Thanks to Alexey Yudichev.
-
Make registerOutParameter work with Types.BOOLEAN.
Committed by jurka. Thanks to Christian Niles.
-
Disallow these cases as we have insufficient type information:
setNull(i, Types.OTHER), setObject(i, null),
setObject(i, null, Types.OTHER). Fix updateable result sets so
they pass type information on when setting a column to NULL.
Committed by oliver.
-
Don't allow a negative fetch size to be set on a ResultSet.
Committed by jurka.
-
Make sure that ds/* really is included in the set of files to
compile (fixes some dependency problems with partial builds).
Committed by oliver.
-
Make escape syntax processing {oj (and friends) } case insensitive.
Committed by jurka.
-
Fixes for handling double-quotes and backslashes in single-quoted
literals when parsing queries for parameter placeholders.
Committed by oliver.
-
Updatable ResultSets need to check for an empty ResultSet because
isBeforeFirst and isAfterLast both return false for an empty result
so the checking to make sure the user is on a valid row wasn't
working. Also don't allow an insert without specifying at least
one column value because INSERT INTO tab() values() is a syntax error.
Committed by jurka.
-
When splitting up a multistatement query to be executed individually
do not consider a whitespace only query to be significant. The
original code correctly considered "SELECT 1;" to be one query, but
thought "SELECT 1; " was two queries.
Committed by jurka.
-
When a connection attempt is made that does not provide a username,
then let this go through to the server as the empty string producing
a "no user name specified" error instead of a NullPointerException.
Committed by jurka.
-
When executing a batch statement that has two statements in it, we
get confused and bail out with a "Too many update results" message.
This message construction was producing an
ArrayIndexOutOfBoundsException because it wasn't checking bounds
properly.
Committed by jurka. Thanks to Alan Stange.
-
Updated Russian translation.
Committed by jurka. Thanks to Serguei Mokhov.
-
Update READMEs to reflect the current situation.
Committed by jurka. Thanks to Vadim Nasardinov.
-
Brazilian translation update.
Committed by jurka. Thanks to Euler Taveira de Oliveira.
-
Standardize copyright notices and use of the PostgreSQL cvs
keyword. Update copyright years to 2004.
Committed by jurka.
-
Upgrade website to use forrest 0.6.
Committed by jurka.
-
Set the default prepareThreshold to five per previous discussion.
Committed by jurka.
-
Indent source code with: astyle -j -p --convert-tabs
Committed by jurka.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka), Oliver Jowett (oliver).
This is a list of other contributors:
Alan Stange, Alexey Yudichev, Christian Niles, Diego A. Gil., Euler Taveira de Oliveira, Serguei Mokhov, Vadim Nasardinov.
Version 8.0-dev307 (2004-10-19)
-
Implement ResultSet.isAutoIncrement by retrieving the column's
default value and seeing if there is a "nextval" call in it.
Committed by jurka. Thanks to Jaroslaw J. Pysnzy.
-
Return serial datatypes in DatabaseMetaData getTypeInfo and getColumns.
Committed by jurka. Thanks to Jaroslaw J. Pysnzy.
-
Update the translation system to use gettext instead of property
files.
Committed by jurka.
-
Allow users to customize the SSL connection by providing their
own SSLSocketFactory implementation.
Committed by jurka. Thanks to Ulrich Meis.
-
Initial translation to Turkish.
Committed by jurka. Thanks to Devrim GUNDUZ.
-
Don't use cursor/portal based fetch methods with autocommit on. The
underlying portal will disappear from underneath the driver.
Committed by jurka.
-
ResultSet.getRow on a cursor/portal backed query was not counting
previously discarded data and only returned the row number within
the current chunk of data.
Committed by jurka.
-
Fix setArray when using the v3 protocol. We can't bind arrays as
text, we need the correct type. This gets the array type from the
Array.getBaseType method. This is a fragile means that depends on
a specific Array implementation, but we already depend on a very
specific implementation (toString() returning a correctly
formatted pg array) that we can live with this.
Committed by oliver.
-
For updateable ResultSets make insertRow and deleteRow quote column
names like updateRow already does. This makes these methods work
on mixed case identifiers.
Committed by jurka. Thanks to Ulrich Meis.
-
PreparedStatement.setCharacterStream somehow escaped getting fixed
for the old problem of assuming a stream can be read completely
in one read() call.
Committed by jurka.
-
Speed up ResultSet.findColumn by caching the column name to index
mapping.
Committed by jurka. Thanks to Phill Tornroth and Peter Mount.
-
Contstruct the backing hash for updateable resultsets on demand
because the vast majority of resultsets aren't updateable. Also
change it from a Hashtable to a HashMap because two threads shouldn't
be updating the same resultset at the same time.
Committed by jurka.
-
Fix typos in error messages and update the pt_BR translation.
Committed by jurka. Thanks to Euler Taveira de Oliveira.
-
In 8.0 arrays with non-standard bounds (beginning index != 1) the
dimensions are returned in the data like so "[0:3]={0,1,2,3,4}".
Add some code to ignore these bounds and match previous server
version behavior.
Committed by jurka.
-
Restructure DataSource code to provide a generic interface in
org.postgresql.ds.*. No longer is the jdbc version we compiled
for relevent. This allows the driver and regression suite to be
compiled with the 1.5 jdk.
Committed by jurka.
-
When streaming data from setBinaryStream to the backend, do not
allow Exceptions or bad length parameters to cause the connection
state to get confused destroying the connection.
Committed by jurka.
-
Some general code cleanups. Remove unnecessary imports and a couple
unused variables. In the test suite ensure that assertEquals() uses
the correct order for expected and actual arguments. Also remove
pointless try/catch blocks.
Committed by jurka.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka), Oliver Jowett (oliver).
This is a list of other contributors:
Devrim GUNDUZ, Euler Taveira de Oliveira, Jaroslaw J. Pysnzy, Phill Tornroth and Peter Mount, Ulrich Meis.
Version 8.0-dev306 (2004-09-16)
-
Implement support for the Savepoint interface.
Committed by jurka.
-
Add a new file to hold the build number to avoid filling the
Driver.java.in commit log with just build number changes.
Also add a utility program to print out the driver version and where
it was loaded from.
Committed by jurka.
-
ResultSet.moveToCurrentRow was checking the cached updateability flag
assuming it had been set instead of correctly calling the
isUpdateable() method which sets the flag if needed. This usually
worked because moveToCurrentRow is only useful after a
moveToInsertRow call which would set the flag, but this is not
required.
Committed by jurka. Thanks to David Bucciarelli.
-
Fix NullPointerException when doing a multiple query execution in
one statement using the V3 protocol. For example
Statement.execute("SELECT 1; SELECT 2"); would not have any
parameters set and try to iterate over a null array.
Committed by jurka.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Kris Jurka (jurka).
This is a list of other contributors:
David Bucciarelli.
Version 8.0-dev305 (2004-08-12)
-
Add ODBC style escape sequences for function {fn ...} and outer join
{oj ...}.
Committed by davec.
-
My version of junit (3.7) doesn't have assertFalse. ArrayTest uses
it in a couple of places. This patch changes assertFalse(condition)
to assertTrue(!condition).
Committed by oliver.
-
Ensure the encoding test drops its table at the end of the run to
make sure other tests do not see it and get confused.
Committed by oliver.
-
Don't make the driver begin a transaction for certain calls.
Notably we don't want Connection.getTransactionIsolation() to start
a transaction because this is often a check put in before trying to
change it and you can't change it in mid-transaction.
Committed by oliver.
-
Don't report the hashcode of our error message key into the
properties file as the vendor error code. This number is completely
random and undocumented and ties us into using the current error
message keys and implementation to maintain the same codes. Further
error messages from the server will not provide this value, so it's
best to leave it alone entirely and tell people to use getSQLState().
Committed by jurka.
-
The maxRows variable was preventing using a portal based fetch when
it was actually desired. maxRows == 0 is a special case meaning
return all rows and needs to be handled differently.
Committed by jurka.
-
I recently made a change to report a numeric type that had no size
information as numeric(1000,1000) thinking this meant 1000 digits to
the right and left of the decimal point. This not the case. I had
considered 1000,1000 because 1000 is the limit for both of these
arguments and that made some sense although still arbitrary. Moving
to something like (1000,500) seems verging on completely random, so
I've backpedalled and made it return (-1,-1) because we don't have
this information and don't have the ability to return NULL.
Committed by jurka.
-
Now that ResultSetMetaData returns different results for
getColumnName and getColumnLabel, use the underlying table's column
name (getColumnName) when working on an updatable ResultSet.
Committed by oliver.
-
Revert ResultSetMetaData methods getColumnName, getTableName and
getSchemaName to previous implementation that returned the column's
alias if available and "" for the table and schema. Move the new
functionality to access the underlying sources of the query to a
new PGResultSetMetaData interface which offers getBaseXXXName.
Committed by jurka. Thanks to Mike Martin.
-
DatabaseMetaData.getSearchString escape was a \ short of working
because both Java's String constructor and pg's input parser strip
off backslashes.
Committed by jurka.
-
Change the escape syntax test for functions to actually call a
function.
Committed by jurka.
-
Modify version checking code and descriptions to match the decision
that 8.0 will be the next release, not 7.5.
Committed by jurka.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Dave Cramer (davec), Kris Jurka (jurka), Oliver Jowett (oliver).
This is a list of other contributors:
Mike Martin.
Version 8.0-dev304 (2004-07-17)
-
Make the driver generate errors on unknown
transaction states in a ReadyForQuery message, rather than silently
ignoring them (and probably getting confused).
Committed by oliver.
-
Added getXXX optional method functionality, allows user to use getXXX
to get a byte, short, int, long, double, char via the preferred
method as well as the non-preferred. For instance getByte can get a
short, int, long, double, or varchar.
Committed by davec.
-
Some ResultSetMetaData fixes.
Remove completely duplicated code in the jdbc1/jdbc2 implementations.
Recognize "time with timezone" as a java.sql.Types.TIME.
Report time/timestamp fractional seconds in getScale().
For unspecified numeric precision/scale use 1000,1000 which is the
maximum pg will allow you to specify.
Correct getColumnDisplaySize to aware of fractional seconds and
timezones for time/timestamp types.
Committed by jurka. Thanks to Dario V. Fassi.
-
When retrieving an array of numerics it attempted to set the scale on
the retrieved data to zero, which doesn't work for non-integer values.
Also allow a ResultSet created from an Array to be scrolled and add
some test cases to make sure things work.
Committed by jurka. Thanks to Oliver Dauben.
-
Add the ability to compile with the 1.5 Beta 2 JDK. Sun has altered
the JDBC API without altering the version number, so I've created a
new jdbc3g subdirectory for a "JDBC3 w/ Generics" implementation.
This doesn't support compiling the DataSource implementations as they
don't have the same multi-version architecture that the core driver
does.
Committed by jurka.
-
Fix decodeUTF8 that was broken in build 303.
Committed by oliver.
-
Now that JDBC1 is no longer supported merge the implemention of
JDBC1 methods into the JDBC2 classes.
Committed by jurka.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Dave Cramer (davec), Kris Jurka (jurka), Oliver Jowett (oliver).
This is a list of other contributors:
Dario V. Fassi, Oliver Dauben.
Version 8.0-dev303 (2004-07-01)
Version 8.0-dev302 (2004-06-15)
-
Added a cvsignore for PSQLException.java since this file is now
generated.
Committed by blind.
-
Allow enabling server side prepared statements globally without
writing pg specific code by setting the prepared statement
threshold in the connection url or datasource. Instead of a
simple on/off flag, the prepared statement mechanism is an
execution count threshold, so ideally it will turn itself on for
frequently used queries while not getting in the way of one time
use executions.
Committed by oliver.
-
Add documentation for using listen/notify with JDBC.
Committed by jurka.
-
Implement DatabaseMetaData.getUDT
Committed by davec.
-
Enforce the requirement that you must have a scrollable resultset
to call some methods (last(),
absolute(), etc). Without this patch, these methods
complete "normally" but can return incorrect data if the resultset
is backed by a cursor. It also adds tests for this behaviour, and
fixes a number of tests and one case in the driver itself that try
to use these methods with the wrong resultset type.
Committed by oliver.
-
Fix TimeTests for jdk1.2 and 1.3. Pre 1.4 JVMs consider the
nanoseconds field of a java.sql.Timestamp completely separate and
do not return the milliseconds in getTime(). Add a new JVM version
test in TestUtil to allow both cases.
Committed by jurka.
-
Fix the various ResultSet position querying methods (isFirst, isLast,
isBeforeFirst, isAfterLast) to work on TYPE_FORWARD_ONLY ResultSets
that are backed by a cursor.
Committed by oliver.
-
When calling stmt.executeUpdate the statement only returns a row count
with INSERT/UPDATE/DELETE/MOVE, other statments should return zero as
the affected row count. The existing driver behavior was to return
whatever the last count was instead of resetting to zero.
Committed by jurka.
-
Track transaction status and only issue a BEGIN command on the first
statement executed, not immediately after the previous commit or
rollback. This should help the long standing, but recently very
unpopular "idle in transaction" behavior.
Committed by jurka.
-
Fix failures in TimeTest for timezones ahead of GMT. This produces a
Time value before the epoch which came up with negative values.
Committed by oliver.
-
Allow the regression tests to run successfully against a 7.2 server.
7.2 apparently doesn't like casting a timestamp with time zone to
time without time zone, so we've got to cast through an intermediate
timestamp without time zone.
Committed by jurka.
-
Allow updateable ResultSets to support types that aren't directly
mappable to Java types, for example cidr.
Committed by jurka. Thanks to Moray Taylor.
-
While ResultSets created by
ResultSet rs = connection.createStatement().executeQuery(sql);
default to TYPE_FORWARD_ONLY per spec, ResultSets created as the
result of a DatabaseMetaData call should be more flexible and
allow scrollable calls to be made.
Committed by jurka. Thanks to Moray Taylor.
-
Update the build.xml file to support building with the new 1.5 jdk
and ant 1.6. Rename the 1.4 specific replacement variable in
PSQLException to describe it's true meaning (the existence of
Throwable.initCause()).
Committed by jurka.
-
Allow public access to radius field to match other geometric types
behavior.
Committed by jurka. Thanks to Declan Lynch.
-
When deleteRow() is called on an updateable ResultSet the ResultSet
should be positioned on the previous row.
Committed by jurka. Thanks to Bob Messenger and Chris Pesarchick.
-
Remove the old style javadoc entries for extensions that were copy
and pasted into the documentation. Add a javadoc build target to
produce documentation for the external API. At the moment this
leaves the extensions chapter pretty bare, but it would be better
to fill that in with helpful examples than simply regurgitating the
API in an inconvenient format.
Committed by jurka.
-
Update the expected foreign key name results to match the new 7.5
backend behavior. Generated foreign key names are now usefully
named based on the table and columns instead of things like $1.
Committed by jurka.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Barry Lind (blind), Dave Cramer (davec), Kris Jurka (jurka), Oliver Jowett (oliver).
This is a list of other contributors:
Bob Messenger and Chris Pesarchick, Declan Lynch, Moray Taylor.
Version 8.0-dev301 (2004-03-29)
-
Use the new information available in the V3 protocol to implement
ResultSetMetaData methods describing the underlying tables:
getSchemaName, getTableName, getColumnName,
getColumnLabel, and isNullable.
Committed by jurka. Thanks to Jan-Andre le Roux.
-
Added xml docbook documentation.
Committed by davec. Thanks to Peter Eisentraut.
-
Add documentation validation target which doesn't require additional
xml libraries beyond those that come with ant. Also add the ability
to customize a local build via a build.local.properties file. In this
file you can set the necessary parameters for the docbook dtds and
stylesheets to match your installation.
Committed by jurka.
-
Added documentation for Tomcat setup.
Committed by davec.
-
Added rudimentary PGInterval class to deal with retrieving intervals
via getObject.
Committed by davec.
-
Support JDK 1.4-style exception chaining in PSQLException.
Various cleanups to PSQLException constructors, don't override where
not necessary.
Committed by oliver.
-
Modified ResultSet.getTime routines to use a calendar if available.
Committed by davec.
-
Update documentation to reflect the current build process.
Note the restrictions on using cursor based ResultSets.
Committed by jurka.
-
Document the additional connection parameters that specify pg
specific behavior: ssl, compatible, loglevel, and charSet.
Committed by jurka.
-
Newer versions of the 1.4.2 jdk give warnings about having return in a
finally clause.
Committed by jurka.
-
Be spec compliant in creating ResultSets that are of TYPE_FORWARD_ONLY
by default. This allows us to be more aggressive in using scrollable
ResultSets because they are usable by default. Also correctly track
the values for result set type, concurrency, and fetch direction in
both the ResultSet and Statement.
Committed by oliver.
-
Fix the setXXXStream methods. If passed a null InputStream, convert
this to a setNull call. The code originally would try to read the
whole stream in one call to read(), but this doesn't work. The
InputStream API makes it clear you must be prepared to loop and
continue reading if you didn't get the whole request on the first
try.
Committed by jurka. Thanks to Martin Holz.
-
ResultSet.next() and previous() incremented or decremented the
internal current_row variable regardless of wether they succeeded or
not. This generated some ArrayIndexOutOfBoundsExceptions when the
errorneous adjustment current_row led to out of range values.
Committed by jurka.
-
ConnectionPool and SimpleDataSource are marked Serializable, but their
superclass (which contains a number of state variables) is not. To
correctly serialize these objects we need to manually implement
writeObject and readObject.
Committed by jurka. Thanks to R. Lemos.
-
V3 NotificationResonse messages were trying to be received as V2
messages. Also the PID was being read in the wrong byte order.
Additionally add a stub for the currently unimplemented notify
parameter. Finally add a test case for listen/notify.
Committed by jurka.
-
Added StatementTest to test for statement re-use, fixed
ResultSetTest to pass this test.
Committed by davec.
-
Added a check to make sure statements weren't being re-used after
being closed.
Committed by davec.
-
Improve V3 protocol startup to reduce roundtrips to the server.
Committed by jurka. Thanks to Chris Smith.
-
Added functionality to deal with the timetz datatype, and handle
msec better.
Committed by davec.
-
If the user has requested a SSL connection and the driver has not
been compiled with SSL support throw an Exception instead of silently
falling back to a non SSL connection.
Committed by jurka.
-
Closing a Connection or Statement object twice should be a no-op
instead of throwing an Exception.
Committed by jurka. Thanks to Victor Sergienko.
-
Added additional tests for time, timestamps, and fixed code to pass.
Committed by davec.
-
Hungarian translation update.
Committed by davec. Thanks to Lazlo Hornyak.
-
Fixed bug where the V3 protocol support was not properly handling
binary cursors. Also fixed a compile problem with the test suite
under jdk1.2 and 1.3. Also fixed a problem with OID74Test which
wasn't commiting a table drop so it was leaving a table in the
database after the test run.
Committed by blind.
-
Now that we are out of the main tree, we can't rely on the makefile
system to tell us about versions and ports and other options so we
are at least temporarily back to using a hardcoded build.properties
file.
Committed by jurka.
-
Modify various testcases and test support code so they
do not catch-and-rethrow SQLExceptions as assertion failures. This
means you actually see the original exception (and under 1.4, any
nested exception) without any extra work; it also makes the code a
bit easier to read.
Committed by oliver.
-
Enable test cases related to server
side prepare and transforming to a cursor based fetch which
previously were failing.
Committed by oliver.
Contributors to this release
We thank the following people for their contributions to this release.
This is a list of all people who participated as committers:
Barry Lind (blind), Dave Cramer (davec), Kris Jurka (jurka), Oliver Jowett (oliver).
This is a list of other contributors:
Chris Smith, Jan-Andre le Roux, Lazlo Hornyak, Martin Holz, Peter Eisentraut, R. Lemos, Victor Sergienko.