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 bugfixing 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 standalone and briefcase applications.
New language features
Several important new language features have been added, including the SQL92 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 righttrimmed 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 pre1.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 userdefined identifiers. Warning: if you use this feature, your database will not be downgradable to v.1.0.x or InterBase®.
Transaction Savepoints
New SQL99compliant 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.