Jaybird 4.0.1
What's new
Jaybird 4.0.1 is the first maintenance release of Jaybird 4, and introduces support for INT128
(a new type in Firebird 4), improves support for the Firebird 4 WITH TIME ZONE
types by adding support for java.time.ZonedDateTime
and making some of the derivation rules more consistent with Firebird. It also provides some bug fixes and other changes.
The following has been changed or fixed since Jaybird 4.0.0
- Fixed: Changes to the transaction configuration (transaction parameter buffer configuration) of one connection are no longer propagated to other connections with the same connection properties (JDBC-386)
This change introduces a binary incompatibility as methodsetTransactionParameters(int, TransactionParameterBuffer)
inFBManagedConnection
can now throwResourceException
where previously it did not. Under the assumption that most users of Jaybird are not directly using this class, the change should not break anything. - Fixed: Search index of Javadoc in Java 11 version used incorrect links (JDBC-619)
- Fixed: The cleanup of native resources didn't dispose the native library held by JNA, as a change in implementation no longer allowed directly access to the JNA
NativeLibrary
(JDBC-620) - Fixed: When updating a row through an updatable result set, selected but not updated blob fields were set to
NULL
(JDBC-623) - Added: Support for type
INT128
(reported as JDBC typeNUMERIC
) (JDBC-624
See also Firebird 4 INT128 support. - Added: A static utility method
FBDriver.normalizeProperties
which, given a JDBC url and aProperties
object, returns aMap<String, String>
containing the merged properties normalized to common property name. (JDBC-627)
The current implementation normalizes known property names to the long-formisc_dpb
name, and removes thedatabase
property. These are both implementation details that might change in future versions.
This feature is also backported to Jaybird 3.0.10. - Fixed: Use of
isc_dpb_no_db_triggers
no longer logs a warning (JDBC-628) - Incompatible change: While making changes to time zone support, the API of
org.firebirdsql.gds.ng.tz.TimeZoneDatatypeCoder
was made almost entirely private. This should not affect normal user code.
Although we try to avoid these types of incompatible changes in point releases, we explicitly allow them for theorg.firebirdsql.gds.ng
package and sub-packages. - Changed: conversions from
TIME WITH TIME ZONE
now use 2020-01-01 as base date for named zones (JDBC-629)
There are some caveats with this conversion, especially betweenOffsetTime
andOffsetDateTime
for named zones. ForOffsetTime
, we will always use the offset as it was on 2020-01-01, while forOffsetDateTime
we will first rebase the time in the named zone to the current date, and then derive the offset.
See also jdp-2020-06 OffsetTime derivation for named zone - New feature: Added support for
java.time.ZonedDateTime
for theWITH TIME ZONE
types (JDBC-630)
To preserve named zones, we have added support for getting and setting bothTIME WITH TIME ZONE
andTIMESTAMP WITH TIME ZONE
as aZonedDateTime
.
ForTIME WITH TIME ZONE
, the returned value is rebased on the current date. - Fixed:
Connection.setNetworkTimeout
incorrectly used the providedExecutor
to set the timeout (JDBC-631)
This caused a race condition where the timeout was possibly applied too late, and whenconnection.close()
was called immediately after, this could trigger aNullPointerException
that would bubble up into the executor.
Bug reports about undocumented changes in behavior are appreciated. Feedback can be sent to the Firebird-java mailing list or reported on the issue tracker http://tracker.firebirdsql.org/browse/JDBC.
See also the full Jaybird 4.0.1 release notes.
Maven
The release is also available on maven(*):
<groupId>org.firebirdsql.jdbc</groupId>
<artifactId>jaybird</artifactId>
<version>4.0.1.javaXX</version>
* The version depends on your target Java version: 4.0.1.java7
, 4.0.1.java8
or 4.0.1.java11
.