The v.2.0 release cycle of Firebird brought a large collection of long-awaited enhancements under the hood that significantly improved performance, security and support for international languages. Several annoying limitations, along with a huge pile of old bugs inherited from the legacy code, have gone. Many of the command-line tools have been refurbished and this release introduces the all-new incremental backup tools NBak and NBackup.
Many new additions have been made to the SQL language, including support for derived tables (SELECT ... FROM ( SELECT ... FROM), PSQL blocks in dynamic SQL through the new EXECUTE BLOCK syntax and some handy new extensions in PSQL itself.
This sub-release, likely to be the last for the 2.0-series, does not add any new functionality to the database engine. It incorporates a number of bug fixes that did not make it into the v.2.0.6 sub-release in June 2010 or have been backported from subsequent 2.1.x and 2.5.x releases.
A long-standing, legacy loophole in the handling of DPB parameters enabled ordinary users to make connection settings that could lead to database corruptions or give them access to SYSDBA-only operations. The loophole has been closed, a change that could affect several existing applications, database tools and connectivity layers (drivers, components). Details are in Chapter 3, Changes to the Firebird API and ODS.
It has been discovered that the gfix utility has a legacy bug (CORE-2271) that exhibits itself during the database validation/repair routines on large databases. The bug has been fixed in version 2.1.2 and affects all preceding versions of Firebird, including this sub-release. The privilege level of the user running these routines is checked too late in the operation, thus allowing a non-privileged user (i.e., not SYSDBA or Owner) to start a validation operation. Once the privilege check occurs, the database validation can be halted in mid-operation and thus be left unfinished, resulting in logical corruption that might not have been there otherwise.
This sub-release does not add any new functionality to the database engine. Several important bugs have been fixed, including a number of unregistered nbackup bugs that were found to cause database corruptions under high-load conditions.
During Firebird 2.1 development it was discovered that Forced Writes had never worked on Linux, in either the InterBase or the Firebird era. That was fixed in V.2.1 and backported to this sub-release.
The issue with events over WNet protocol reported below for v.2.0.3 has been fixed. The full list of bugs fixed in V.2.0.4 is in the bugfixes chapter and also in the separate bug fixes document associated with V.2.1, which you can download from the Documentation Index at the Firebird website.
To all intents and purposes, therefore, this is the sub-release following sub-release 2.0.1. However, in the interim, the port of Firebird 2.0.3 to Solaris 2.10 (Solaris 10) has been completed for both Intel and SPARC platforms.
Please be sure to uninstall Firebird 2.0.2. It should not be necessary to revert databases to pre-2.0.2 state but, if you used EXECUTE STATEMENT to operate on varchars, varchar data written from results might have suffered truncation.
In response to a situation reported in the Tracker as CORE-1148, whereby the Services API gave ordinary users access to the firebird.log, Alex Peshkoff made the log accessible only if the logged-in user is SYSDBA.
Since Firebird 1.5.3, neither the relation name nor the alias was being returned for columns participating in a GROUP BY aggregation with joins. It has been fixed, particularly to assist the IB Object data access layer to properly support its column search features on output sets.
Bugfix (CORE-1133) "The XNET (IPC) communication protocol would not work across session boundaries" affects those attempting to access databases using the local protocol on Windows Vista as well as those using remote terminal services locally on XP or Server 2003. This fix, done in v.2.0.1, should remove the problems encountered under these conditions.
The on-disk structure (ODS) of the databases created under Firebird has changed. Although Firebird 2.0 will connect to databases having older ODS versions, most of the new features will not be available to them.
Make transportable gbak backups of your existing databases--including your old security.fdb or (even older) isc4.gdb security databases--before you uninstall the older Firebird server and set out to install Firebird 2.0. Before you proceed, restore these backups in a temporary location, using the old gbak, and verify that the backups are good.
Naturally, with so much bug-removal and closing of holes, there are sure to be things that worked before and now no longer work. A collection of Known Compatibility Issues is provided to assist you to work out what needs to be done in your existing system to make it compatible with Firebird 2.0.
64-bit builds for both Superserver and Classic are ready and available for installing on Linux. Note that the 64-bit ports have been done and tested for AMD64 only. These builds should also work on Intel EM64T. The Intel IA-64 platform is not supported in this release. A FreeBSD port of the 64-bit builds has also been done.
Win64 hosts are running without problems and the MS VC8 final release seems to work satisfactorily, so we are able to say we are no longer hampered by problems with the Microsoft compiler. The Win64 port is complete and into testing, but is still considered experimental. It will become publicly available in a subsequent v.2.x release.
Although the capability to run multiple Firebird servers simultaneously on a single host has been present since Firebird 1.5, we still do not provide the ability to set them up through our installer programs and scripts.
During Firebird 2 development, a capability to create and access databases on raw devices on POSIX systems was enabled to assist an obscure platform port. To date it is undocumented, has not been subjected to rigorous QA or field testing and is known to present problems for calculating disk usage statistics. A Readme text will be made available in the CVS tree for those who wish to give it a try and would like to make a case for its becoming a feature in a future release.
If you think you have discovered a bug in this release, please make a point of reading the instructions for bug reporting in the article How to Report Bugs Effectively, at the Firebird Project website.
Write detailed bug reports, supplying the exact server model and build number of your Firebird kit. Also provide details of the OS platform. Include reproducible test data in your report and post it to our Tracker.
Firebird-devel is not for discussing bugs in your software! If you are a novice with Firebird and need help with any issue, you can subscribe to the firebird-support list and email your questions to firebird-support@yahoogroups. com.
A full, integrated manual for Firebird 2.0 and preceding releases is well on the way, but it's not quite with us yet. Meanwhile, there is plenty of documentation around for Firebird if you know where to look. Study the Novices Guide and Knowledgebase pages at the Firebird website for links to papers and other documents to read on-line and/or download.
The Firebird Project has an integral user documentation project, a team of volunteers who are writing, editing and adapting user manuals, white papers and HowTos. At the time of this release, the hard-working coordinator of the Docs project is Paul Vinkenoog.
An index of available documents can be found in the on-line documentation index. Published docs currently include the essential Quick Start Guides for Firebird versions 1.5 and 2.0 in English and several other languages.
For the official documentation we use a Docbook XML format for sources and build PDF and HTML output using a suite of Java utilities customised for our purposes. These notes were developed and built under this system.
Paul Vinkenoog has written comprehensive, easy-to-follow manuals for writing Firebird documentation and for using our tools. You can find links to these manuals in the aforementioned index. New team members who want to do some writing or translating are always more than welcome. For information about the team's activities and progress you can visit the Docs Project's homepage. We have a lab forum for documenters and translators, firebird-docs, which you can join by visiting the Lists and Newsgroups page at the Firebird web site.
These release notes are your main documentation for Firebird 2. However, if you are unfamiliar with previous Firebird versions, you will also need the release notes for Firebird 1.5.3. For convenience, copies of both sets of release notes are included in the binary kits. They will be installed in the /doc directory beneath the Firebird root directory. Several other useful README documents are also installed there.
For future reference, if you ever need to get a copy of the latest release notes before beginning installation, you can download them from the Firebird web site. The link can be found on the same page that linked you to the binary kits, towards the bottom of the page.
If you do not own a copy of The Firebird Book, by Helen Borrie, then you will also need to find the beta documentation for InterBase 6.0. It consists of several volumes in PDF format, of which the most useful will be the Language Reference (LangRef.pdf) and the Data Definition Guide (DataDef.pdf). The Firebird Project is not allowed to distribute these documents but they are easily found at several download sites on the Web using Google and the search key "LangRef.pdf". When you find one, you usually find them all!
Implemented support for derived tables in DSQL (subqueries in FROM clause) as defined by SQL200X. A derived table is a set, derived from a dynamic SELECT statement. Derived tables can be nested, if required, to build complex queries and they can be involved in joins as though they were normal tables or views.
b37509886e