Improvements in this release:
Return nonzero result code when restore fails on activating and creating deferred user index.
Provide location context (line/column numbers) for runtime errors raised inside EXECUTE BLOCK.
Improvements in this release:
Timestamps and runtime statistics is optionally available in GBAK output.
Better validation and fixup of lost data pages by GFIX.
Improvements in this release:
Online validation for user-defined tables and indices.
Optimized handling for internal temporary blobs.
Improvements in this release:
New context variables added to the SYSTEM namespace.
Some limits increased:
Maximum number of connections in SuperServer/SuperClassic raised from 1024 to 2048 connections.
Maximum number of input parameters for user-defined functions (UDFs) raised from 10 to 15.
Error reporting improvements.
Physical backup improved to address performance and reliability issues.
SET STATISTICS no longer blocks concurrent connections.
UPDATE OR INSERT statement and the RETURNING clause added to Embedded SQL.
As well as many bug fixes accumulated over the months since v2.5.1, this sub-release provides a few minor improvements, particularly of help to administrators. In summary:
Some welcome improvements were made to the trace services, viz.,
Sessions can now be configured to log user and automatic sweep activity.
Trace now produces statistics of actions that happen after a transaction has finished.
Trace now provides the ability to log errors that occur in runtime (lock conflicts, key violations, et al.)
It is now possible to use the API to do a remote backup/restore.
A note is now written into firebird.log when an automatic sweep is started.
As well as 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.