This wiki has moved to

See also

We no longer update this wiki, please update your bookmarks!


Jaybird 2.2

Please check and for the latest version

Jaybird 2.2.8 is the latest version of the Firebird JDBC driver. See the full Jaybird 2.2.8 release notes for all information. These release notes are also included in the download.

The download includes javadoc, which are also available online (Java 8 version).

As an additional resource, you can use the Jaybird 2.1 JDBC Driver Java Programmer's Manual.


You can download Jaybird 2.2.8 from:

Java 8 (JDBC 4.2)
Java 7 (JDBC 4.1)
Java 6 (JDBC 4.0)


Jaybird 2.2.8 is also available on Maven

Depency info:


Where jdkXX is either jdk18, jdk17, or jdk16.

Other links

Older Jaybird releases can be downloaded from GitHub or - up to Jaybird 2.2.7 - from SourceForge.

There is also an Android port of Jaybird 2.2 available. This is a separate project

Version history

Jaybird 2.2.8

Changes since Jaybird 2.2.7:

  • Support for Java 5 has been dropped
  • Fixed: LibreOffice doesn’t display tables with more than 41 records (JDBC-383)
  • Improvement: Don’t use Firebird provided IP address for connecting event channel (JDBC-384)
  • Fixed: Connection.getMetaData().getColumns result set contains wrong (empty) COLUMN_DEF if column type was defined using domain (JDBC-388))
  • Fixed: Unable to retrieve update count after result set (JDBC-390)

After executing a query that produces a result set, calling getMoreResults will allow getUpdateCount to actually return the update count where previously it always returned -1. This also allows obtaining the update count after a select query (even when executed using executeQuery). For selects the result will usually be 0.

  • Fixed: SELECT statements are processed for getGeneratedKeys by appending RETURNING (+ all columnnames) (JDBC-391)
  • Fixed: Generated key grammar does not correctly handle quoted table names (JDBC-392)
  • Fixed: Generated key grammar does not detect returning clause in update and delete (JDBC-393)

The following are known in issues in Jaybird 2.2.8 (and earlier):

  • ResultSets opened with CLOSE_CURSORS_AT_COMMIT aren’t correctly closed on commit when auto-commit is off (JDBC-307)
  • Using FBEventManager with Firebird 3, NATIVE (or EMBEDDED) protocol and a Firebird 3 fbclient/fbembed can crash the JVM with an access violation (JDBC-398)

This list is not exhaustive, see the Jaybird tracker for a full list of open bugs.

Jaybird 2.2.7

Changes since Jaybird 2.2.6:

  • Fixed: blob return value of executable procedure obtained through getters on CallableStatement is 8 byte blob id, instead of expected blob content (JDBC-381)

Jaybird 2.2.6

Changes since Jaybird 2.2.5:

  • Reverted Firebird 3 workaround for updatable result sets as bug has been fixed in Firebird (JDBC-330)
  • Fixed: Processing and closing the ResultSet from callable statement and then using the getters throws NullPointerException (JDBC-350)
  • Fixed: FBManagedConnectionFactory.tryCompleteInLimboTransaction doesn’t work with recent Firebird 3 builds (JDBC-353)
  • Fixed: Jaybird can throw a NullPointerException when a fatal connection error has occurred (JDBC-359)
  • Fixed: Calling close on a JCA connection triggers exception Connection enlisted in distributed transaction (JDBC-362)
  • Fixed: Potential memory-leak when using a lot of different connection strings and/or properties (JDBC-364)
  • Fixed: FBRowUpdater.buildInsertStatement doesn’t quote column names (JDBC-370)
  • Fixed: EncodingFactory doesn’t handle UnsupportedCharsetException (JDBC-371)
  • Fixed: Current method of quoting in FBRowUpdater incorrect for dialect 1 (JDBC-372)

Jaybird 2.2.5

Changes since Jaybird 2.2.4:

  • Fixed: getCrossReference broken by changes of JDBC-331 (JDBC-335)
  • Added: basic support for Java 8 java.time in PreparedStatement.setObject() and ResultSet.updateObject() (JDBC-339)
  • As part of the previous change the supported sub-second precision for java.sql.Timestamp has been increased from 1 millisecond to the maximum Firebird precision of 100 microseconds (or 0.1 millisecond).
  • Fixed: Deadlocks and other thread safety issues with classes in org.firebirdsql.pool (JDBC-341)

Jaybird 2.2.4

Changes since Jaybird 2.2.3:

  • 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.

Jaybird 2.2.3

Changes since Jaybird 2.2.2:

  • Fixed incorrect synchronization in native and embedded protocol (JNI) implementation for iscBlobInfo and iscSeekBlob (JDBC-300)

WARNING: Although Jaybird strives for correct synchronization, a JDBC Connection, and its dependent objects should be used from a single Thread at a time, sharing on multiple threads concurrently is not advisable.

  • Fixed holdable ResultSet is closed on auto-commit (JDBC-304, JDBC-305)
  • Fixed table names missing or padded with spaces in Database view of IntelliJ IDEA (JDBC-308, IDEA-100786)
  • Fixed incorrect JDBC minor version reported under Java 7; this resulted in an incorrect column name (for Java 7) in the metadata of DatabaseMetaData.getColumns(...) (JDBC-309)
  • Added IOException to cause of GDSException with error 335544721; “Unable to complete network request to host ““” for further investigation (JDBC-306)

Jaybird 2.2.2

Changes since Jaybird 2.2.1:

  • Fixed: FBMaintenanceManager.listLimboTransactions() reports incorrect transaction id when the result contains multi-site transactions in limbo (JDBC-266)
  • Fixed: Calling PreparedStatement.setClob(int, Clob) with a non-Firebird Clob (eg like Hibernate does) or calling PreparedStatement.setClob(int, Reader) throws FBSQLException: “You can’t start before the beginning of the blob” (JDBC-281)
  • Fixed: Connection property types not properly processed from (JDBC-284
  • Fixed: JNI implementation of parameter buffer writes incorrect integers (JDBC-285, JDBC-286)
  • Changed: Throw SQLException when calling execute, executeQuery, executeUpdate and addBatch methods accepting a query string on a PreparedStatement or CallableStatement as required by JDBC 4.0 (JDBC-288)
  • Fixed: LIKE escape character JDBC escape ({escape '<char>'}) doesn’t work (JDBC-290)
  • Added: Support for a connect timeout using connection property connectTimeout. This property can be specified in the JDBC URL or Properties object or on the DataSource. If the connectTimeout property is not specified, the general DriverManager property loginTimeout is used. The value is the timeout in seconds. (JDBC-295)

Jaybird 2.2.1

Changes since Jaybird 2.2.0:

  • Fixed: UnsatisfiedLinkError in libjaybird22(_x64).so undefined symbol: _ZTVN10__cxxabiv117__class_type_infoE on Linux (JDBC-259)
  • Added connection property columnLabelForName for backwards compatible behavior of ResultSetMetaData#getColumnName(int) and compatibility with bug in com.sun.rowset.CachedRowSetImpl (JDBC-260)

Set property to true for backwards compatible behavior (getColumnName() returns the column label); don’t set the property or set it to false for JDBC-compliant behavior (recommended).

  • Fixed: setString(column, null) on “? IS (NOT) NULL” condition does not set parameter to NULL (JDBC-264)
  • The charSet connection property now accepts all aliases of the supported Java character sets (eg instead of only Cp1252 now windows-1252 is also accepted) (JDBC-267)
  • Fixed: values of charSet property are case-sensitive (JDBC-268)
  • Fixed: setting a parameter as NULL with the native protocol does not work when Firebird describes the parameter as not nullable (JDBC-271)

Jaybird 2.2.0

New features:

  • Enhanced support for JDBC 4.0 (Java 6),
  • Support for JDBC 4.1 (Java 7) - including try-with-resources support,
  • Implementation of getGeneratedKeys(),
  • Enhanced support for the services API,
  • Support for 64 bit native libraries for Type 2 / Embedded,
  • A number of bug fixes.

Changes since Jaybird 2.2.0-beta-1:

  • ConcurrentModificationException when closing connection obtained from org.firebirdsql.ds.FBConnectionPoolDataSource with statements open (JDBC-250),
  • Memory leak when obtaining multiple connections for the same URL (JDBC-249),
  • CPU spikes to 100% when using events and Firebird Server is stopped or unreachable (JDBC-232),
  • Events do not work on Embedded (JDBC-247),
  • Provide workaround for characterset transliteration problems in database filenames and other connection properties (JDBC-253),
  • FBBackupManager does not allow 16kb page size for restore (JDBC-255),
  • Log warning and add warning on Connection when no explicit connection character set is specified (JDBC-257)

Older Versions


Jaybird 3.0.0-SNAPSHOT

A snapshot of Jaybird 3.0 is available for testing purposes. This is a very early snapshot, a lot of work still needs to be done before Jaybird 3.0 will be release-ready. We’d appreciate your feedback, but we’d like to emphasize that this version is unstable and not ready for production.

Read the release notes for more details. The download includes javadoc, which are also available online (Java 8 version).

Downloads (updated 2014-07-12):

Java 8 (JDBC 4.2)
Java 7 (JDBC 4.1)
Java 6 (JDBC 4.0)

Jaybird 3.0.0 is also available on Maven on the Sonatype snapshot repository

Depency info:


Where jdkXX is either jdk18, jdk17 or jdk16.

  • IronEyeSQL 1.2.358 - binary version of IronEyeSQL tool (some time ago was available on under the name IronGrid)
download/start.txt · Last modified: 2016/04/19 21:55 by mrotteveel