24 November 2023
We are happy to announce the release of Jaybird 5.0.3 and Jaybird 4.0.10.
With this release, Jaybird 4 is end-of-life. We recommend upgrading to Jaybird 5.
The following has been changed or fixed since Jaybird 5.0.2:
Improvement: Do not reject attempts to read blob id 0 — backported from Jaybird 6 (#765)
Previously, Jaybird rejected attempts to read blobs with blob id 0
(not on all code paths, for some only when assertions are enabled).
Formally, blob id 0
is not a valid blob id, but in practice they can occur (e.g. due to bugs, or access components/drivers explicitly setting a blob column to id 0
).
Other drivers and tools simply send the requests for blob id 0
to the server, which then treats it as an empty blob.
For consistency, we decided to let Jaybird handle it the same.
Fixed: on CHAR
fields, a too short value could be returned if the string contained one or more codepoints represented by surrogate pairs and the string length in char
exceeded the maximum string length — backported from Jaybird 6 (#770)
We now truncate the returned string if the codepoint count exceeds the maximum string length.
Fixed: CallableStatement.getXXX(String)
could return value from wrong column — backported from Jaybird 6 (#772)
Updated: error messages updated from Firebird 5.0.0.1272
Jaybird 5 supports Firebird 2.5 and higher, on Java 8, 11, 17, and 21 (support for Java 11 and higher using the Java 11 version of the driver).
See also:
Jaybird 4.0.10 is the last release of Jaybird 4, and Jaybird 4 is now end-of-life. We recommend upgrading to Jaybird 5.
The following has been changed or fixed since Jaybird 4.0.9
Jaybird 4 supports Firebird 2.5 and higher, on Java 7, 8, 11, 17, and 21 (support for Java 11 and higher using the Java 11 version of the driver).
See also:
04 November 2023
I am happy to announce the release of version 2.0 of “Firebird External Table Generator” (ext-table-gen for short). (It was released back in September, but I forgot to put up a post on my own website.)
“Firebird External Table Generator” is a commandline tool to transform CSV files to Firebird external table files (a binary format for external table data).
Compared to version 1.0, a lot of new features have been added:
Support for additional data types:
Integral number types:
smallint
integer
bigint
int128
Exact numeric types (fixed point):
numeric
decimal
Datetime types:
date
time (without time zone)
timestamp (without time zone)
Customizing the CSV parser configuration (custom separators, quotes, escapes, etc.)
You can find the 2.0 release at ext-table-gen v2.0.
Documentation and release notes can be found on https://mrotteveel.github.io/ext-table-gen/.
The project itself is hosted on https://github.com/mrotteveel/ext-table-gen.
28 June 2023
I am happy to announce the release of “Firebird External Table Generator” (ext-table-gen for short).
“Firebird External Table Generator” is a commandline tool to transform RFC 4180 CSV files to Firebird external table files (a binary format for external table data).
External tables are a good way for bulk-loading data into Firebird. Unfortunately, external tables use a fixed-width binary format, and not (more) standard formats like CSV. It is not always easy to create an appropriate external table file, and this is where ext-table-gen can be used.
At a high level, ext-table-gen provides the following features:
Derive a CHAR
-based external table definition (i.e. a CREATE TABLE
statement and a configuration for ext-table-gen) from a CSV file
Transform a CSV file to an external table file (either based on the CSV file itself, or based on a configuration file)
The current version only supports CHAR
columns, which makes the generated file essentially a fixed-width text format.
Future versions may introduce support for additional column types.
You can find the 1.0 release at ext-table-gen v1.0.
Documentation and release notes can be found on https://mrotteveel.github.io/ext-table-gen/.
The project itself is hosted on https://github.com/mrotteveel/ext-table-gen.
07 June 2023
We are happy to announce the release of Jaybird 5.0.2.
The following has been fixed since Jaybird 5.0.1:
Fixed: Reconnect transaction with a transaction id exceeding 0x7FFF_FFFF did not work (jaybird#734)
New feature: add connection property parallelWorkers
to set Firebird 5.0 isc_dpb_parallel_workers
(jaybird#737)
New feature: add MaintenanceManager.upgradeOds()
for the Firebird 5.0 gfix/service repair action to perform a minor ODS upgrade of a database (jaybird#738)
New feature: add parallel workers support for BackupManager
(jaybird#739)
New feature: add parallel workers support for sweep in MaintenanceManager
(jaybird#740)
Fixed: DatabaseConnectionProperties.setServerBatchBufferSize(int)
ignored provided value and always set default (0
, or “use server-side maximum”) (jaybird#741)
New feature: add MaintenanceManager.fixIcu()
for the Firebird 3.0 gfix/service repair action “ICU” to update or rebuild collations and indexes when the ICU version changed (jaybird#744)
Fixed: The first call to getTableStatistics()
of a FBTableStatisticsManager
instance returned only a few or even no tables; if no tables were returned, subsequent calls would also return no tables (jaybird#747)
Jaybird 5 supports Firebird 2.5 and higher, on Java 8, 11, 17 and 20 (support for Java 11 and higher using the Java 11 version of the driver).
See also:
31 January 2023
We are happy to announce the release of Jaybird 5.0.1 and Jaybird 4.0.9.
The following has been fixed since Jaybird 5.0.0:
Fixed: Executing DML with a RETURNING clause containing a blob column would return the blob-id instead of the blob value (jaybird#728)
Fixed: CallableStatement.getString
and CallableStatement.getObject
would incorrectly trim string values (jaybird#729)
Fixed: ResultSetMetaData.getPrecision(int)
of a connectionless result set could throw a NullPointerException
if the column was of type FLOAT
or DOUBLE PRECISION
(jaybird#730)
Jaybird 5 supports Firebird 2.5 and higher, on Java 8, 11, 17 and 19 (support for Java 11 and higher using the Java 11 version of the driver).
See also:
The following has been fixed since Jaybird 4.0.8:
Fixed: Some methods of FBClob
threw NullPointerException
when attempting to use after implicit or explicit free()
(jaybird#719)
Improvement: If the default JVM time zone is a GMT offset, e.g. GMT-08:00
, configure sessionTimeZone
with offset only, e.g. -08:00
(jaybird#720)
Fixed: Executing DML with a RETURNING clause containing a blob column would return the blob-id instead of the blob value (jaybird#728)
Fixed: CallableStatement.getString
would incorrectly trim string values (jaybird#729)
Fixed: ResultSetMetaData.getPrecision(int)
of a connectionless result set could throw a NullPointerException
if the column was of type FLOAT
or DOUBLE PRECISION
(jaybird#730)
Jaybird 4 supports Firebird 2.5 and higher, on Java 7, 8, 11, 17 and 19 (support for Java 11 and higher using the Java 11 version of the driver).
See also:
Older posts are available in the archive.