Firebird Project is happy to announce general availability of Firebird 2.5.1 This sub-release introduces several bug fixes and many important improvements – for example, performance improvements during a database restore, the ability to write to global temporary tables in read-only databases, etc. For the full list of changes please refer to the Release Notes, Chapter 2 “New in Firebird 2.5”. Firebird 2.5.1 has 100% compatible on-disk structure with Firebird 2.5.0, so it is recommended to migrate to 2.5.1 as soon as possible.
There is a substantial number of bug fixes, this sub-release takes in a few minor improvements and optimizations that missed the initial release. In summary:
- Significant for MacOSX 10.7 users was a bug that caused attempts to start Superserver and Superclassic to fail. The bug is described in Tracker ticket CORE-3589 and also in the Bug Fixes list for this sub-release.
- An SQLSTATE context variable is now available in PSQL, parallel to the the context variables GDSCODE and SQLCODE that are used in WHEN blocks to test for error conditions.
- A couple of improvements were made, that should help performance when global temporary tables (GTTs) are being used:
- The “undoing”, on rolling back the transaction, of changes made to GTTs that were created with the ON COMMIT DELETE ROWS option was an unnecessary overhead and has been bypassed.
- Garbage collection in global temporary tables was being delayed unnecessarily by active transactions in other attachments. That bottleneck is gone.
- A needed optimization in the temporary space manager with regard to small chunk allocations has been implemented.
- The Lock Manager has been provided with the capability to cancel waiting, avoiding a condition whereby a transaction in WAIT mode could wait interminably for the end of another transaction that could not be achieved by either a DELETE FROM MON$xxx or an fb_cancel_operation request.
- The query optimizer now estimates the actual record compression ratio, enabling better guesses about the number of stored records in tables.
- Some minor improvements to the remote interface:
- Any unused bytes of varchar values in the message buffer are now set to zero.
- Set the SO_KEEPALIVE option on the client TCP socket
- The MON$STATEMENT_ID value constant is now kept constant among monitoring snapshots.
- Ports of this sub-release were done for Linux/HPPA and Linux/alpha platforms.