Firebird Changelog

What's new in Firebird 3.0.2

Jul 28, 2017
  • New Feature:
  • (CORE-4563) - Support was added for fast/low-latency “TCP Loopback Fast Path” functionality introduced in Windows 8 and Server 2012.
  • This feature is said to improve the performance of the TCP stack for local loopback connections, by short-circuiting the TCP stack for local calls. The details of the feature can be found in this Microsoft Technet blog.
  • Improvements:
  • (CORE-5475) - IMPROVEMENT: It is now possible to filter out info and warnings from the trace log.
  • (CORE-5442) - IMPROVEMENT: Enhanced control capability when sharing the database crypt key between Superserver attachments.
  • (CORE-5441) - IMPROVEMENT: The physical numbers of frequently used data pages are now cached to reduce the number of fetches of pointer pages.
  • (CORE-5434) - IMPROVEMENT: A read-only transaction will no longer force write the HeaderTIP page content to disk immediately after a change. This improvement gives a significant performance gain where there are numerous light read-only transactions. At this stage, it affects only servers in SS mode. For CS and SC it is more complex to implement and should appear in Firebird 4.0.
  • (CORE-5374) - IMPROVEMENT: The database name was made available to an encryption plug-in.
  • (CORE-5332) - IMPROVEMENT: libfbclient.so was compiled for Android (x86/x86-64/arm64).
  • (CORE-5257) - IMPROVEMENT: Nesting of keys in a plug-in configuration was enabled.
  • (CORE-5204) - IMPROVEMENT: The Linux code is now built with --enable-binreloc and an option was included in the installer script to install in locations other than /opt/firebird.
  • (CORE-4486) - IMPROVEMENT: For Trace, a filter has been provided to INCLUDE / EXCLUDE errors by their mnemonical names.
  • (CORE-3885) - IMPROVEMENT: Android port (arm32).
  • (CORE-3637) - IMPROVEMENT: A port was done and tested for Linux on the ancient Motorola 680000 CPU platform to satisfy some requirement from Debian.
  • (CORE-1095) - IMPROVEMENT: Support has been added to enable SELECT expressions to be valid operands for the BETWEEN predicate.

New in Firebird 3.0.1 (Jul 28, 2017)

  • (CORE-5266) - IMPROVEMENT: The statement CREATE OR ALTER USER SYSDBA PASSWORD can now be used to initialize an empty securityN.fdb security database.
  • (CORE-5257) - IMPROVEMENT: Nesting of keys in a plug-in configuration was enabled.
  • (CORE-5229) - IMPROVEMENT: For URL-like connection strings on Windows, restriction of lookup to IPv4 only was enabled.
  • (CORE-5216) - IMPROVEMENT: Line and column numbers (location context) are now provided for runtime errors raised inside EXECUTE BLOCK.
  • (CORE-5205) - IMPROVEMENT: A switch was added to build POSIX binaries with a built-in libtommath library.
  • (CORE-5201) - IMPROVEMENT: gbak now returns a non-zero result code when restore fails on creating and activating a deferred user index.
  • (CORE-5167) - IMPROVEMENT: Implicit conversion between Boolean and string is now done automatically when a string for 'true' or 'false' is used as a value in an expression. Case-insensitive. Not valid when used with a Boolean operator—IS, NOT, AND or OR; not available for UNKNOWN.

New in Firebird 2.5.5 Build 26952 (Nov 19, 2015)

  • Bug fixes:
  • IMPROVEMENT: Improve validation and fixup of lost data pages
  • Casting DATE to string would break in Dialect 1 in the presence a domain with a CHECK constraint
  • A view or subquery with UNION would not use a computed index
  • IIF function was preventing the condition from being pushed into the union for better optimization
  • Predicate IS [NOT] DISTINCT FROM was not being pushed into unions/aggregates, resulting in sub-optimal plans
  • ALTER DOMAIN ... TO would allows the to be specified in the same pattern as domains generated by the system, i.e., matching to 'RDB$[[:DIGIT:]]*'
  • MERGE / HASH JOINs would produce incorrect results when VARCHAR join keys differed only by trailing spaces
  • The server could hang on simultaneous connection to the Services API and a database
  • An invalid internal BLR filter conversion was detected
  • Index corruption could occur while inserting data into a long-key-indexed field
  • Preparing a query with a PLAN clause in a CTE could crash the server
  • A memory leak was detected in Superserver
  • MERGE JOIN could be used for expressions involving RDB$DB_KEY
  • MERGE JOIN was not being used for more than two streams if they were joined via USING/NATURAL clauses
  • Timestamps could be cast to strings that were beyond the valid range for VARCHAR
  • The full text of the problem value was not being returned in the message “Problematic key value (attempting to insert duplicate in PK/UK)” when the length of the offending key was 127 characters or longer
  • ON CONNECT triggers would sometimes fail to execute
  • A request synchronization error could occur while building an expression index
  • Bugcheck 167 (invalid SEND request) could occur while working with a GTT from several attachments, using EXECUTE STATEMENT ... ON EXTERNAL and different roles
  • EXECUTE STATEMENT using BLOB parameters could result in an “Invalid BLOB ID” error
  • The error “invalid BLOB ID” could occur when retrieving MON$STATEMENTS.MON$SQL_TEXT using EXECUTE STATEMENT against an EXTERNAL DATA SOURCE and the argument db_connect was not specified
  • Deadlock could occur during attachment
  • The server could hang while chasing dead record versions.
  • CREATE TABLE would throw an error if a column was being defined with the character set DOS775
  • COUNT(DISTINCT ...) was too slow

New in Firebird 2.5.4 Build 26856 (Mar 31, 2015)

  • This sub-release of Firebird 2.5 adds one useful new feature and an improvement in the management of internal BLOBs:
  • From this sub-release forward, it is now possible to perform table and index validation whilst the database is on-line.
  • For details, refer to the topic Perform Some Validation Services On-line in the chapter entitled Changes to the Firebird API and ODS.
  • (CORE-4671) : Internal BLOBs are released earlier, to free up memory and disk space.

New in Firebird 2.5.3 Build 26780 (Dec 30, 2014)

  • The Superserver and Superclassic servers could crash with a segmentation fault caused by a malformed network packet, opening a vulnerability. It does not affect the Classic server.
  • The vulnerability was patched by Alex Peshkov. All Firebird Superserver and Superclassic binaries released with build numbers 26778 or lower and all SS and SC snapshot builds before 2014.12.03 have this vulnerability.

New in Firebird 2.5.3 (Jul 18, 2014)

  • New context variables have been added to the SYSTEM namespace to retrieve more information about the current connection and current transaction. The added variables: SYSTEM::CLIENT_PID and SYSTEM::CLIENT_PROCESS for the current connection, SYSTEM::LOCK_TIMEOUT and SYSTEM::READ_ONLY for the current transaction.
  • Some limits have increased:
  • The maximum number of connections on Windows for Superserver and Superclassic has been raised from 1024 to 2048 connections.
  • The maximum number of input parameters for external functions (UDFs) has increased to 15.
  • Error reporting improvements, including:
  • More details are now reported for “object in use” errors.
  • The relation name is now added to the text of validation contraint error messages, to help identify the error context.
  • Error reporting for index and constraint violations has been extended to include the problematic key value.
  • Physical backup (using ALTER DATABASE BEGIN/END BACKUP or the nBackup utility) was improved to speed up extension of the main database file when backup state changes from stalled to merge:
  • Contention for the allocation table lock while a database is in the stalled physical backup state has been reduced.
  • Faster file growth has been enabled on Linux systems that support fallocate().
  • Attachments no longer block others when the allocation table is being read for the first time.
  • Execution of a SET STATISTICS INDEX statement no longer blocks or slows down concurrent attachments.
  • The scan for limbo transactions scan at the end of a sweep has been improved.
  • Support for the UPDATE OR INSERT statement and the RETURNING clause have been implemented for Embedded SQL (ESQL).

New in Firebird 2.5.2 RC 1 (Oct 5, 2012)

  • Some welcome improvements were made to the Trace services, viz.,
  • Sessions can now be configured to log user and automatic sweep activity. Documentation for this option
  • can be found on the Tracker ticket CORE-3656.
  • TRACE now produces statistics of actions that happen after a transaction has finished. See Tracker ticket
  • CORE-3598.
  • TRACE now provides the ability to log errors that occur in runtime (lock conflicts, key violations, et al.).
  • See Tracker ticket CORE-3539.
  • It is now possible to use the API to do a remote backup/restore.
  • See Back Up to or Restore from a Remote Backup File.
  • A note is now written into firebird.log when an automatic sweep is started.
  • Support was added for C preprocessor flags in the Firebird build system.

New in Firebird 2.5.1 (Oct 5, 2012)

  • Some welcome improvements were made to the Trace services, viz.,
  • Sessions can now be configured to log user and automatic sweep activity. Documentation for this option
  • can be found on the Tracker ticket CORE-3656.
  • TRACE now produces statistics of actions that happen after a transaction has finished. See Tracker ticket
  • CORE-3598.
  • TRACE now provides the ability to log errors that occur in runtime (lock conflicts, key violations, et al.).
  • See Tracker ticket CORE-3539.
  • It is now possible to use the API to do a remote backup/restore.
  • See Back Up to or Restore from a Remote Backup File.
  • A note is now written into firebird.log when an automatic sweep is started.
  • Support was added for C preprocessor flags in the Firebird build system.

New in Firebird 2.5.1 RC 1 (Sep 12, 2011)

  • The SQLSTATE code has been made available as a PSQL context variable, for use in WHEN .. exception blocks, in the same manner as GDSCODE and SQLCODE
  • Now it is possible to write to global temporary tables in a read-only database
  • Diagnostics for internal trace errors were improved
  • The fbtracemgr utility will now do a periodic flush to output
  • Performance of gbak restore at the data insertion stages has improved
  • Conversions between BLOBs and other data types can now be effected in the API functions
  • The Services API now supports the “metadata-only” restore
  • A “silent install” switch has been implemented for make install on POSIX
  • The unused bytes of VARCHAR values in the message buffer are now set to zero
  • The actual record compression ratio is now estimated in the optimizer
  • The MON$STATEMENT_ID value now stays constant among monitoring snapshots
  • The SO_KEEPALIVE option on the client TCP socket will now be set, as a measure to guard against aggressive timing out of sockets by newer Windows systems
  • Lock Manager can now cancel waits that become interminable
  • A platform port of v.2.5.1 for HPPA has been done for both Linux and Alpha

New in Firebird 2.5.0 (Oct 6, 2010)

  • New SuperClassic Architecture: Firebird 2.5 introduces a new architecture, tagged "SuperClassic", to gain better leverage from multi-core and multi-CPU hardware environments and improve resource usage for systems with large numbers of users and huge databases.
  • Audit: System audit tracing and user trace sessions via the Services API enable nearly real-time monitoring and analysis of everything going on in a database
  • Cross-database queries: Firebird 2.5 opens the way for Firebird database instances to query one another and to exchange information
  • Enhanced user management: User management becomes accessible and flexible through SQL requests submitted from user databases
  • Other features include autonomous transactions within PSQL modules (stored procedures, triggers, SQL blocks), support for regular expressions as arguments in SQL using the SIMILAR TO predicate, asynchronous cancellation of connections, enhancements of monitoring capabilities and much more.

New in Firebird 2.5 RC1 (Dec 16, 2009)

  • The primary goal for Firebird 2.5 was to establish the basics for a new threading architecture that is almost entirely common to the Superserver, Classic and Embedded models, taking in lower level synchronization and thread safety generally.
  • Although SQL enhancements are not a primary objective of this release, for the first time, user management becomes accessible through SQL CREATE/ALTER/DROP USER statements and syntaxes for ALTER VIEW and CREATE OR ALTER VIEW are implemented. PSQL improvements include the introduction of autonomous transactions and ability to query another database via EXECUTE STATEMENT.
  • Administrative Enhancements:
  • System audit tracing and user trace sessions via the Services API, making it possible to monitor and analyse everything going on in a database in real time
  • New system role RDB$ADMIN in the ODS 11.2 database allows SYSDBA to transfer its privileges to another user on a per-database basis
  • More information in the monitoring tables
  • Asynchronous cancellation of connections
  • Capability for ordinary users to monitor any of their own attachments as well as CURRENT_CONNECTION
  • Other SQL Language Additions and Enhancements:
  • Regular expression support using the SIMILAR TO predicate
  • ALTER COLUMN for computed columns
  • Autonomous transactions within a PSQL module (stored procedure, trigger or dynamically executable PSQL block)
  • Enhanced access to stored procedures in view definitions
  • Optional GRANTED BY or GRANTED AS for GRANT and REVOKE statements, enabling the grantor to be a user other than the CURRENT_USER (the default).
  • REVOKE ALL syntax to dispose of all privileges for a user or role at once
  • Support for WHERE SOME_COL = ? OR ? IS NULL predications
  • Removal of “reserved” status for all but a handful of keywords that are not reserved in the SQL standard
  • Data-handling Enhancements:
  • New built-in functions for converting UUID CHAR(16) OCTETS strings to RFC4122-compliant format and vice versa
  • Ability to pass 32-bit and 64-bit integers as hexadecimal in numeric literal and X-prefixed binary string literal formats
  • API Additions:
  • Statements now return an SQL-2003 standard 5-alphanumeric SQLSTATE completion code
  • New constant DSQL_unprepare available for use with isc_dsql_free_statement for efficient unpreparing of statements
  • International Language Support:
  • Default COLLATE clause for CREATE DATABASE
  • Ability to change the default COLLATE for a used character set
  • GBAK restore switches FIX_FSS_DATA and FIX_FSS_METADATA to restore legacy databases with UNICODE_FSS data and/or metadata correctly without resorting to scripts and manual techniques
  • Accent-insensitive collation for Unicode

New in Firebird 2.1.3 (Sep 10, 2009)

  • Firebird 2.1.3 is a patch release addressing several bugs that have surfaced since the original v.2.1 and the v.2.1.2 sub-release some months ago.
  • The default authentication method on Windows platforms is no longer mixed. It has been changed to native. For more information, see the release notes on the configuration parameter Authentication.
  • A fix in Firebird 2.5 that alleviates the "hogging" behaviour of the nBackup utility has been backported to this patch release. For more information, see the Improvement in V.2.1.3 note in the nBackup section of the Utilities chapter of the release notes.
  • There are no v.2.1.3 non-NPTL builds for 32-bit Linux Superserver and no more will be made. If you are still using a 2003 or earlier Linux distribution that does not support the New POSIX Threading Model then you will need to upgrade your OS to use Firebird 2.1.3 and any future Superserver releases.
  • By popular request, Dmitry Yemanov added some helpful performance guidelines pertaining to the internals of the database monitoring system (a.k.a. "MON$") to the release notes.
  • Known issue :: Since V.2.1 (and still), although the engine will use the first space listed in TempDirectories, it fails to “hand on” sets to the any of the other configured spaces if the first space is exhausted. (Tracker reference CORE-2422). Because of the impact on related code, this regression could not be fixed for the V.2.1.3 patch release. The workaround for now is to ensure that you configure enough space in the single location that the engine can address.

New in Firebird 2.1.2 (Apr 8, 2009)

  • Firebird 2.1.2 is a patch release addressing a large collection of bugs that have surfaced since the original v.2.1 a year ago and the v.2.1.1 sub-release of Summer 2008. This release contains no new functionality but particular attention should be paid to a change in the availability of several parameters in the database parameter buffer (DPB) to ordinary users. It will cause authority errors in applications where, in the past, ordinary users were wrongly given access to operations that must be restricted to SYSDBA and the database owner.

New in Firebird 2.1.1 (Jul 15, 2008)

New in Firebird 2.1.0 (May 8, 2008)

  • Bugfix CORE-1820. Setup program doesn't detect a running server. Contributor(s): Paul Reeves; Dmitry Yemanov
  • Bugfix CORE-1818. Temporary files used for temporary page spaces are not deleted after use on Posix platform. Contributor(s): Alex Peshkov
  • Bugfix CORE-1680 display shows some first users when there are many users in the security database Contributor(s): Alex Peshkov

New in Firebird 2.0.4 (May 5, 2008)

  • Fix: Setup program doesn't detect a running server
  • Fix: Bad performance of the security checking during prepare
  • Fix: Problem with collate ES_ES_CI_AI
  • Fix: Expression index can be created while doing inserts into table
  • Fix: Sometimes the engine may 'hang' using 100% CPU load and no IO activity for a few minutes
  • Fix: Failure in isc_service_start()
  • Fix: Wrong record number calculation in garbage collector thread
  • Fix: Garbage data in the incoming remote packet may crash the server
  • Fix: 'gsec display' only shows some first users when there are many users (>50) in security database
  • Fix: Garbage bytes in isc_service_query() output
  • Fix: Wrong access rights in doc subdirectory
  • Fix: AV with long inactive read-only read-commited transaction
  • Fix: Compilation error on GCC 4.1.1
  • Fix: Full shutdown causes database corruption if it happens when SuperServer is running a query modifying data
  • Fix: Possible buffer overflow with long user name
  • Fix: Corrupt BLOB in UDF if followed by a char* that is a timestamp
  • Fix: Error 'multiple rows in singleton select' not reported in a view
  • Fix: Subquery-based predicates are not evaluated early in the join order
  • Fix: JOIN on first record of ordered derived table returns wrong record
  • Fix: Wrong access to SLONG data in dsql_nod
  • Fix: Data in EXECUTE STATEMENT internal buffer is not aligned correctly
  • Fix: Wrong alignment of data, used in INTL converters
  • Fix: AV in fbintl
  • Fix: GFIX may report false errors when using in-memory metadata
  • Fix: Forced writes do not work on Linux
  • Fix: Server crashes with secondary file name > 127 characters
  • Fix: Server crash caused by a buffer overrun in the optimizer when more than 255 relation references exist in the query
  • Fix: Server crashes when client registers its interest in events being connected via Named Pipes
  • Fix: Server crashes attempting to deliver events for the just disconnected session
  • Fix: Wrong events delivery in the case of concurrent XNET connections
  • Fix: Crash in fbclient after unsuccessful user management API call
  • Fix: Client library crashes when attempting to process an event received just prior to disconnection
  • Fix: Buffer overrun when querying for database info on very long path through isc_database_info() API call
  • Fix: fbclient.dll / gds32.dll : readonly database files on isc_attach_database (error code 0 instead of 335544727)
  • Fix: SuperServer can't shutdown immediately after shutdown request after failed login attempt
  • Fix: Wrong current timestamp evaluation for selectable procedures
  • Fix: Firebird SS: internal gds software consistency check (CCH_precedence: block marked (212), file: cch.cpp line: 3640)
  • Fix: Fbclient access violation when handling fbserver shutdown
  • Fix: Singleton isn't respected in COMPUTED BY expressions
  • Fix: Access Violation in fcblient.dll v1.5.3 on disconnecting

New in Firebird 2.1.0.17755 RC2 (Mar 13, 2008)

  • Expression index can be created while doing inserts into table
  • Server process terminates when attempting to select the MON$ data
  • against a heavily loaded system (many concurrent connections)
  • Monitoring tables do not work after fresh linux install
  • Failure in isc_service_start()
  • Common table expressions cannot be used in computed columns and quantified predicates (IN / ANY / ALL)
  • Wrong variable initialization in recursive procedures
  • Incorrect "key size exceeds implementation restriction for index" error
  • Distinct with blob fields. This change restores the legacy behavior of DISTINCT / UNION / GROUP BY and ORDER BY operations. Please beware that they may produce incorrect result set, because the ordering / distinct is performed using blob IDs instead of the blob contents. It implies that changes CORE-859 and CORE-1530 are rolled back.
  • Bug in create/alter database trigger (with Russian comment)

New in Firebird 1.5.5 (Dec 18, 2007)

  • Partially fixed bug reported in CORE-1061 and CORE-1109
  • Fixed bug CORE-1076: Services Manager and gsec truncate First/Middle/Last Name fields to 17 chars instead of 31 chars available in field definition
  • Fixed unregistered bugs: Server crashes when empty DPB or SPB is provided
  • Fixed unregistered bugs: A number of vulnerabilities found and reported by RISE Security
  • Fixed bug CORE-1470: Server crashes with secondary file name > 127 characters
  • Fixed bug CORE-1447: Buffer overrun when querying for database info on very long path through isc_database_info() API call
  • QLI crash: Fix problem with QLI where a crash occurs using the following SQL: insert into relationx select * from relationy
  • Fixed unregistered bug: Fix Core Dump on HPUX when using SQL Dialect 1 and: select distinct(1.0/1) from rdb$database. Alignment issue.