Jaybird 4.0.1 released

Jaybird 4.0.1 has been released. 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)
  • 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 type NUMERIC) (JDBC-624)
    See also Firebird 4 INT128 support.
  • Added: A static utility method FBDriver.normalizeProperties which, given a JDBC url and a Properties object, returns a Map<String, String> containing the merged properties normalized to common property name. (JDBC-627)
  • 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 the org.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)
  • New feature: Added support for java.time.ZonedDateTime for the WITH TIME ZONE types (JDBC-630)
  • Fixed: Connection.setNetworkTimeout incorrectly used the provided Executor to set the timeout (JDBC-631)

Jaybird 4 supports Firebird 2.5 and higher, on Java 7, 8, 11 and 14 (using the Java 11 version of the driver).

See also:

Jaybird 3.0.9 released

Jaybird 3.0.9 has been released. This release contains the following changes:

  • 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)
  • New feature: Firebird 4 data type bind configuration support (JDBC-603)
  • New feature: Jaybird now supports UTF-8 URL encoding for connection properties in the JDBC url. (JDBC-604)
  • Fixed: When updating a row through an updatable result set, selected but not updated blob fields were set to NULL (JDBC-623)

Jaybird 3.0 supports Firebird 2.0 and higher, on Java 7, 8, 11 and 14. Basic Java 9 and higher compatibility is provided through the Java 8 version of the driver.

See also:

Jaybird 4.0.0 released

We are happy to announce the first release of Jaybird 4.

Jaybird 4 is – compared to Jaybird 3 – an incremental release that builds on the foundations of Jaybird 3. The focus of this release has been on further improving JDBC support and adding support for the new data types and features of Firebird 4.

The main new features are:

  • Wire encryption support (backported to Jaybird 3.0.4)
  • Database encryption support (backported to Jaybird 3.0.4)
  • Wire compression support
  • Authentication plugin improvements
  • Firebird 4 data type bind configuration support (since Jaybird 4.0.0-beta-2)
  • Firebird 4 DECFLOAT support
  • Firebird 4 extended numeric precision support
  • Firebird 4 time zone support
  • Firebird 4 statement timeout support (since Jaybird 4.0.0-beta-2)
  • JDBC RowId support
  • DatabaseMetaData getPseudoColumns implemented
  • DatabaseMetaData getVersionColumns implemented
  • DatabaseMetaData getFunctions implemented (since Jaybird 4.0.0-beta-2)
  • DatabaseMetaData getFunctionColumns implemented (since Jaybird 4.0.0-beta-2)
  • Improved JDBC function escape support
  • New JDBC protocol prefix jdbc:firebird:
  • URL encoding in query part of JDBC URL (backported to Jaybird 3.0.9)
  • Generated keys support improvements
  • Operation monitoring

See also:

Jaybird 4.0.0-beta-2 available for testing

We are happy to announce the second beta for Jaybird 4.

We’d really appreciate it if you take the time to test this version of Jaybird with your applications. 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.

Jaybird 4 is – compared to Jaybird 3 – an incremental release that builds on the foundations of Jaybird 3. The focus of this release has been on further improving JDBC support and adding support for the new data types and features of Firebird 4.

The main new features are:

  • Wire encryption support (backported to Jaybird 3.0.4)
  • Database encryption support (backported to Jaybird 3.0.4)
  • Wire compression support
  • Authentication plugin improvements
  • Firebird 4 data type bind configuration support (since Jaybird 4.0.0-beta-2)
  • Firebird 4 DECFLOAT support
  • Firebird 4 extended numeric precision support
  • Firebird 4 time zone support
  • Firebird 4 statement timeout support (since Jaybird 4.0.0-beta-2)
  • JDBC RowId support
  • DatabaseMetaData getPseudoColumns implemented
  • DatabaseMetaData getVersionColumns implemented
  • DatabaseMetaData getFunctions implemented (since Jaybird 4.0.0-beta-2)
  • DatabaseMetaData getFunctionColumns implemented (since Jaybird 4.0.0-beta-2)
  • Improved JDBC function escape support
  • New JDBC protocol prefix jdbc:firebird:
  • URL encoding in query part of JDBC URL (backported to Jaybird 3.0.9)
  • Generated keys support improvements
  • Operation monitoring

Jaybird 4.0.0-beta-2 is for testing purposes only, and not intended for production use.

See also:

Jaybird 3.0.8 released

Jaybird 3.0.8 has been released. This release contains one bug fix:

  • Fixed: On Firebird 3 and 4 with WireCrypt=Enabled, the connection could hang or throw exceptions like “Unsupported or unexpected operation code”. (JDBC-599)

Jaybird 3.0 supports Firebird 2.0 and higher, on Java 7, 8, 11 and 13. Basic Java 9 and higher compatibility is provided through the Java 8 version of the driver.
See also:

Jaybird 3.0.7 released

Jaybird 3.0.7 has been released. This release contains a new feature and two bug fixes:

  • Fixed: attempts to use a blob after it was freed or after transaction end could throw a NullPointerException or just work depending on whether the connection had a new transaction. (JDBC-587)
  • Fixed: Instances of java.sql.Blob and java.sql.Clob obtained from a result set were freed after calls to ResultSet.next(). (JDBC-588)
  • New feature: added FBEventManager.createFor(Connection) to create an EventManager for an existing connection. Backported from Jaybird 4. (JDBC-594)

Jaybird 3.0 supports Firebird 2.0 and higher, on Java 7, 8, 11 and 13. Basic Java 9 and higher compatibility is provided through the Java 8 version of the driver.

See also:

Jaybird 3.0.6 released

We are happy to announce the release of Jaybird 3.0.6.

This release is largely a bugfix release, but contains additional support for Firebird 4.

Jaybird 3.0.6 contains the following fixes and changes:

  • Fixed: Exceptions during fetch of cached result sets (holdable over commit, scrollable and metadata) prevented prepared statement reuse/re-execute with error “Statement state CURSOR_OPEN only allows next states [CLOSING, PREPARED, ERROR], received EXECUTING” (JDBC-531)
  • Improvement: Added FBManager.setDefaultCharacterSet to set default database character set during database creation (JDBC-541)
  • New feature: Support for Firebird 3 case sensitive user names (JDBC-549)
  • Fixed: Savepoints did not work in connection dialect 1 as savepoint names were always quoted (JDBC-556)
  • Changed: The DatabaseMetaData statement cache introduced in Jaybird 3 was unlimited, it is now limited to 12 prepared statements; the least recently used statement will be closed and removed when a new statement is added (JDBC-557)
  • Fixed: UPDATE OR INSERT with existing RETURNING clause handled incorrectly for generated keys (JDBC-566)
  • Fixed: Exceptions during initialization of result sets would not properly close the database cursor leading to error “Current statement state (CURSOR_OPEN) does not allow call to prepare” on reuse of the statement (or errors similar to described for JDBC-531 above). (JDBC-571)
  • New feature: boolean connection property ignoreProcedureType to disable usage of metadata for stored procedure types in CallableStatement When set to true>, call escapes and EXECUTE PROCEDURE will default to use EXECUTE PROCEDURE and not switch to SELECT for selectable stored procedures. (JDBC-576)
  • New feature: connection properties timeZoneBind and sessionTimeZone for limited support for Firebird 4 TIME(STAMP) WITH TIME ZONE types, and decfloatBind for limited support for Firebird 4 DECFLOAT types. (JDBC-538)
  • Fixed: Connection property defaultIsolation/isolation did not work through DriverManager, but only on DataSource implementations. (JDBC-584)

Jaybird 3.0 supports Firebird 2.0 and higher, on Java 7, 8 and 9 and higher. Basic Java 9 and higher compatibility is provided through the Java 8 version of the driver.

See also:

Jaybird 4.0.0-beta-1 available for testing

The first beta for Jaybird 4 is available for testing.

We’d really appreciate it if you take the time to test this version of Jaybird with your applications. 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.

Jaybird 4 is – compared to Jaybird 3 – an incremental release that builds on the foundations of Jaybird 3. The focus of this release has been on further improving JDBC support and adding support for the new data types and features of Firebird 4.

The main new features are:

  • Wire encryption support (backported to Jaybird 3.0.4)
  • Database encryption support (backported to Jaybird 3.0.4)
  • Authentication plugin improvements
  • Firebird 4 DECFLOAT support
  • Firebird 4 extended numeric precision support
  • Firebird 4 time zone support
  • JDBC RowId support
  • JDBC DatabaseMetaData.getPseudoColumns implemented
  • JDBC DatabaseMetaData.getVersionColumns implemented
  • Improved JDBC function escape support
  • New JDBC protocol prefix jdbc:firebird:
  • Generated keys support improvements

Jaybird 4.0.0-beta-1 is for testing purposes only, and not intended for production use.

See also:

Jaybird 3.0.0-alpha-1 release for testing

Jaybird 3.0.0-alpha-1 has been published for testing. We would really appreciate if you could start testing your applications with this version and provide feedback on stability and behavior, but also on the release notes.

Feedback can be sent to the Firebird-java mailinglist or on the issue tracker http://tracker.firebirdsql.org/browse/JDBC.

Jaybird 3.0 is a big change from Jaybird 2.2 and earlier. We have rewritten the entire low-level implementation to be able to support protocol improvements in newer Firebird versions, made changes with a stricter interpretation of the JDBC requirements, and removed some parts that were either obsolete or not functioning correctly.

We recommend that you do not consider Jaybird 3.0 a drop-in replacement for Jaybird 2.2, and study the release notes carefully.

See:

Jaybird 3.0 Alpha 1 is available from Maven central:

Groupid: org.firebirdsql.jdbc,
Artifactid: jaybird-jdkXX (where XX is 17 or 18).
Version: 3.0.0-alpha-1

For example:

<dependency>
     <groupId>org.firebirdsql.jdbc</groupId>
     <artifactId>jaybird-jdk18</artifactId>
     <version>3.0.0-alpha-1</version>
</dependency>

If your application is deployed to a Java EE application server, you will need to exclude the javax.resource:connector-api dependency, and add it as a provided dependency:

<dependency>
     <groupId>org.firebirdsql.jdbc</groupId>
     <artifactId>jaybird-jdk18</artifactId>
     <version>3.0.0-alpha-1</version>
     <exclusions>
         <exclusion>
             <groupId>javax.resource</groupId>
             <artifactId>connector-api</artifactId>
         </exclusion>
     </exclusions>
</dependency>
<dependency>
     <groupId>javax.resource</groupId>
     <artifactId>connector-api</artifactId>
     <version>1.5</version>
     <scope>provided</scope>
</dependency>

If you want to use Type 2 support (native, local or embedded), you need to explicitly include JNA 4.2.2 as a dependency:

<dependency>
     <groupId>net.java.dev.jna</groupId>
     <artifactId>jna</artifactId>
     <version>4.2.2</version>
</dependency>

Jaybird 2.2.4 released

The Firebird JDBC team is happy to announce the release of Jaybird 2.2.4.

This release contains the following fixes:

  • Fixed: Exceptions during statement preparation leave connection and transaction open after explicit close (JDBC-311)
  • Fixed batch update (or insert) with blob set through setBinaryStream() sets empty blob for all but the first batch entry (JDBC-312)
  • Fixed incomplete checks of database, transaction, statement and blob handle validity before continuing with actions. These incomplete checks could lead to unexpected exceptions (for example a NullPointerException in iscDatabaseInfo) (JDBC-313)
  • Fixed error when setting connection charset equal to "file.encoding" java property (JDBC-314)
  • Fixed connection character set not correctly set when specifying the Java connection characterset (charSet or localEncoding property)  (JDBC-315)
  • Fixed incorrect lengths and/or radix reported by getTypeInfo and getColumns metadata (JDBC-317, JDBC-318)
  • Initial Java 8 / JDBC 4.2 support (JDBC-319)
  • Firebird 3 BOOLEAN type support, see Support for Firebird 3 BOOLEAN type in the release notes for more details (JDBC-321)
  • Added fallback of loading GDSFactoryPlugin implementations to prevent NullPointerException in Hibernate reverse engineering wizard in NetBeans (JDBC-325)
  • Fixed: Jaybird should specify dialect 3 in dpb when no explicit dialect was set (JDBC-327)
  • Fixed: several DatabaseMetaData methods defined by JDBC to only accept the actual table name also accepted a LIKE-pattern or empty string or null. This was changed to conform to JDBC. This change can break applications that relied on the incorrect behavior (JDBC-331)
    Affected methods are: getPrimaryKeys, getBestRowIdentifier, getImportedKeys, getExportedKeys and getCrossReference. As part of this change getIndexInfo now handles names in the wrong case slightly different.
    Jaybird 3.0 will further modify and restrict the pattern matching and case sensitivity of metadata methods. See Future changes to Jaybird in the release notes for more details.

Downloads available from JDBC driver section on the Firebird website.

The release is also available on maven(*):

<groupId>org.firebirdsql.jdbc</groupId>
<artifactId>jaybird-jdkXX</artifactId>
<version>2.2.4</version>

* The artifactId depends on your target Java version: jaybird-jdk15, jaybird-jdk16, jaybird-jdk17 or jaybird-jdk18

1 2