******************************************************************************** LIST OF KNOWN INCOMPATIBILITIES between versions 2.0 and 2.1 ******************************************************************************** This document describes all the changes that make v2.1 incompatible in any way as compared with the previous release and hence could affect your databases and applications. Please read the below descriptions carefully before upgrading your software to the new Firebird version. INSTALLATION/CONFIGURATION -------------------------- * The database migration process has changed. If your databases contain text blobs with non-ASCII data inside, then the backup/restore cycle is not enough. Please pay attention to the files in the /misc/upgrade/metadata directory of your installation. * Parameter CreateInternalWindow of firebird.conf is deprecated. You no longer need to disable it if you need to run multiple FB instances simultaneously. SECURITY -------------------------- * On Windows, the default authentication mode is "Mixed" which allows domain users to attach databases without knowing the Firebird login/password. Also, privileged OS users (those included into Local Admins / Domain Admins groups) would be treated as SYSDBA. If you consider this insecure for your setup, change parameter Authentication in firebird.conf. SQL SYNTAX -------------------------- * A number of new reserved keywords are introduced. The full list is available here: /doc/sql.extentions/README.keywords. Please ensure your DSQL statements and procedure/trigger sources don't contain those keywords as identifiers. Otherwise, you'll need to either use them quoted (in Dialect 3 only) or rename them. SQL EXECUTION RESULTS -------------------------- * Malformed UTF8 strings and blobs are no longer allowed. Also, in order to have the metadata stored in the database properly (i.e. in UTF8), please make sure that DDL statements are encoded into the connection charset. Mixed usage of the NONE and other charsets is not recommended and may lead to unexpected runtime errors. PERFORMANCE -------------------------- * Some queries may no longer use indices in this version. This covers cases where an indexed field and an argument have different datatypes and the implicit conversion cannot be performed consistently. Prior versions could return wrong results in these cases. A common example is: STR_FIELD = INT_ARG. As a numeric can be converted to a string in different ways, the indexed scan is not allowed for this predicate anymore. However, the opposite example: INT_FIELD = STR_ARG is allowed for the index scanning, because the conversion is deterministic. * Some date/time expressions in Dialect 1 cannot benefit from available indices either, e.g.: DATE_FIELD > 'NOW' + 1. A workaround is to use CAST or specify the explicit datatype prefix: TIMESTAMP 'NOW' + 1. This issue is expected to be resolved in the first point release.