Firebird Project HOME       Back to Novice's Guide
This is an overview of some of the most important changes in Version 1.5 against the 1.0 release of Firebird. It is assumed that you are familiar with Firebird 1.0. The complete list of changes and enhancements is long. Here are just some of the highlights. For the full story, please refer to the Release Notes for Firebird 1.5 (in six languages, PDF files HERE).

New codebase

This release was built from code ported from the original C to C++, a process that begun back in 2000. Extensive code cleanup and bug�fixing has continued, along with new memory management and language enhancements.

Enhanced Optimizer

During the v.1.5 development process, the SQL query optimizer has undergone several enhancements and fixes, resulting in reported speed improvement of 30 to 60 percent and more.

New Architectures

Two significant new additions for Windows platforms are Classic server and Embedded server. There has not been a Classic server on Windows for nearly eight years. This one can utilize multiple processors, something which still eludes the Windows SuperServer. Though usable, Classic on Windows should be regarded as experimental. Embedded server is a dll that merges a single client attachment with a Firebird SuperServer for building very quick and efficient stand�alone and briefcase applications.

New language features

Several important new language features have been added, including the SQL�92 case expression functions CASE, COALESCE and NULLIF. For syntax of these and other new language implementations, please refer to the Language Enhancements section in the Release Notes.

Universal Triggers

Now you can write conditional insert / update / delete actions in one Before or After trigger to have the one trigger cover all DML actions for that trigger's phase. This cuts down the composition and maintenance of triggers without deprecating the ability to have multiple triggers per phase.

Database Aliases

In the new aliases.conf file you can specify server� side aliases for your databases, so you don't have to store the full path to the database on the client side. You can connect from a client app with the new Server[/Port]:Alias syntax.

Varchar Trimming

Varchars now cross the wire right�trimmed to actual length plus two bytes. NOTE: As it is the client that requests the server to trim varchars, the Firebird 1.5 client (fbclient.dll or libfbclient.so) will trim, even if connected to a pre�1.5 server version. If you use an old client, you will not get trimming, even if you are connected to a 1.5 or later server.

Max. Number of Indexes

Now in both Release 1.0 and 1.5 the maximum number of indexes you can define for a table has been increased from 64 to 256.

Execute Statement

This PSQL extension takes a string which is a valid dynamic SQL statement and executes it as if it had been submitted to DSQL. Available in Triggers and Stored Procedures.

New context variables

Among those are CURRENT_CONNECTION and CURRENT_TRANSACTION: Each of these integer context variables returns the system identifier of the active connection or the current transaction context, respectively. Available in DSQL and PSQL.

Enh. Named Constraints

Indexes that enforce named integrity constraints may now be named with user�defined identifiers. Warning: if you use this feature, your database will not be downgradable to v.1.0.x or InterBase�.

Transaction Savepoints

New SQL99�compliant user Savepoints (a.k.a. nested transactions) provide a convenient method to handle business logic errors without needing to roll back the transaction. Available only in DSQL.

New Configuration File

Several files have been renamed in this release. In most cases, the new names involve some variant of "firebird" or "fb", e.g. the old gds32.dll is now called fbclient.dll. One of them is the extended configuration file now named firebird.conf. Firebird 1.5 provides enhanced security settings and several tuning options available through settings in this file.