8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-22 18:03:03 +01:00

Updated docs. Getting prepared for Beta.

This commit is contained in:
dimitr 2009-01-29 12:53:59 +00:00
parent 35c994b2a6
commit 5e10236e75

View File

@ -1,10 +1,10 @@
********************************************************************************
LIST OF KNOWN INCOMPATIBILITIES
between versions 1.5.x and 2.x
between versions 2.x and 2.5
********************************************************************************
This document describes all the changes that make v2.0 incompatible in any way
as compared with the previous release and hence could affect your databases and
This document describes all the changes that make v2.5 incompatible in any way
as compared with the previous releases and hence could affect your databases and
applications.
Please read the below descriptions carefully before upgrading your software to
@ -13,63 +13,17 @@ the new Firebird version.
INSTALLATION/CONFIGURATION
--------------------------
* Security database is renamed to security2.fdb. If you upgrade the existing
installation, please be sure to upgrade the security database using the
provided script in order to keep your users' logins. For more details see
$FBROOT/upgrade/security_database.txt.
Simple 'cp security.fdb security2.fdb' makes it impossible to attach
to the firebird server !
* The database migration process might require some special steps. If the
database restore fails with the error "malformed string" for you, please
pay attention to the files in the /misc/upgrade/metadata directory of your
installation and use the new -fix_fss_data and -fix_fss_metadata command
line switches of GBAK.
* Password hashes are now generated using the SHA-1 algorithm instead of the
old DES one. If you want to preserve the already existing security database
(i.e. upgrade it using security_database.sql script), you'll need to set the
LegacyHash config option to 1 (TRUE). However, it's recommended to return
it's value back to default (after changing user's passwords) in order
to keep your installation safe.
* Priorly deprecated parameters OldParameterOrdering and CreateInternalWindow
of firebird.conf are not supported anymore and have been removed.
* The new client library is not compatible with the older server (and vice
versa) in regard to the local protocol, as the transport internals has been
reimplemented (XNET instead of IPServer). If you need to use the local
protocol, please ensure your server and client binaries are of the same
version.
* Parameter DeadThreadsCollection of firebird.conf is deprecated and will be
ignored if set. Current Firebird version efficiently performs it without
delay.
SECURITY
--------------------------
* Direct connections to the security database are not allowed anymore. This is
done for security reasons and also in order to isolate authentication
mechanisms from the implementation. You should use Services API or GSEC
to configurate user accounts instead. To backup the security database always
use Services API. Switch -SE of gbak utility may be used for this purpose.
* Non-SYSDBA users no longer can see accounts of other users in the security
database. A non-privileged user can only retrieve/modify its own account,
including a password change.
* Remote attachments to the server without login/password are prohibited.
It means, particularly, that all attachments to SuperServer (even by root
without explicit localhost: in database name) without correct login will
be rejected by remote interface. Embedded access without login/password
works fine (unix user name is used to validate access to database's
objects).
UTILITIES
--------------------------
* GBAK -R (former shortcut for "-REPLACE_DATABASE") no longer overwrites an
existing database during restore, it reports an error instead. In order to
use the previous behaviour, you may specify either the full syntax
"GBAK -REPLACE_DATABASE" or use the new command
"-R[ECREATE_DATABASE] OVERWRITE". The "-R" shortcut is now considered to
represent the "-R[ECREATE_DATABASE]" command, while "-REP" is offered as a
new shortcut for "-REP[LACE_DATABASE]". This change is targeted to prevent
accidental database overwrites by the users treating "-R" as "restore".
Those using the full syntax are expected to know what this restore mode
actually means.
* Parameters LockSemCount and LockSignal of firebird.conf don't require tuning
in the new lock manager implementation, so they have been removed as well.
SQL SYNTAX
--------------------------
@ -80,84 +34,32 @@ SQL SYNTAX
identifiers. Otherwise, you'll need to either use them quoted (in Dialect 3
only) or rename them.
SQL CHECKING
--------------------------
* It's now prohibited to reference columns of an aliased table using the table
name, e.g. "SELECT TAB.A FROM TAB T". You should use the table alias
instead: "SELECT T.A FROM TAB T". Such behaviour is declared by the SQL
specification.
* User-specified plans are validated more strictly than previously. So, if you
get an error related to plans (e.g. "table T is not referenced in plan"),
please look through your procedures and triggers and adjust the plans to be
semantically correct. Such errors could also appear during the restore
process (when you migrate databases to the new version) and you'll need to
change the original database before attempting to perform a backup/restore
cycle.
* Assignments to OLD contexts are now prohibited for all kinds of triggers.
Also, assignments to NEW contexts in AFTER-triggers are prohibited as well.
So, if you get an unexpected error "cannot update a read-only column", this
is exactly the reason.
* It's now forbidden to try to insert into the same column more than once in
the same insert statement: INSERT INTO T(A, B, A) ...
It's now forbidden to try to update the same column more than once in
the same update statement: UPDATE T SET A = x, B = y, A = z
SQL EXECUTION RESULTS
--------------------------
* NULLs are now considered the least possible values in terms of the ordering
and they are sorted accordingly. This means that NULLs are placed in the
beginning of the result set for ascending sorts and in the end for
descending sorts. In the previous versions, NULLs were always on top. If
you rely on the legacy NULLs placement, please use the NULLS FIRST option
in your ORDER BY clauses.
* Malformed UNICODE_FSS strings and blobs are no longer allowed.
* Views updatable via triggers no longer perform direct table operations. In
previous versions, a naturally updatable view with triggers passed the DML
operation to the underlying table as well as executed the triggers. So if
you followed the official documentation and used triggers to perform a table
update, this update was actually done twice, causing either performance
issues or errors (if blobs were affected). Now availability of triggers turn
direct table updates off and everything depends on your triggers. If you
rely on the legacy undocumented behaviour (e.g. use triggers for logging
purposes only), you'll need to adjust your triggers to perform actual
updates as well.
* Prior to Firebird 2.5 the SET clause of the UPDATE statement assigned
columns in the user-defined order with the NEW column values being
immediately accessible to the subsequent assignments. This did not
conform to the SQL standard. Starting with Firebird 2.5, only OLD column
values are accessible to all the assignments of the SET clause.
You can revert back to the legacy behavior via the OldSetClauseSemantics
parameter of firebird.conf, if required. Please beware that this parameter
is provided as a temporary solution for backward compatibility issues and
will be deprecated in future Firebird versions.
* CURRENT_TIMESTAMP now returns milliseconds by default, while it returned
truncated seconds value in the previous versions. If you don't need second
fractions here, please specify the required accuracy explicitly, e.g. use
CURRENT_TIMESTAMP(0).
* ORDER BY now expands asterisks in the select list when referencing columns
by ordinal. So now "SELECT T1.*, T2.COL FROM T1, T2 ORDER BY 2" sorts on the
second column of table T1, while the previous versions sorted on T2.COL.
However, this change makes queries like "SELECT * FROM TAB ORDER BY 5"
possible.
PERFORMANCE
UTILITIES
--------------------------
* In SuperServer, garbage collection is now performed in the combined mode
(cooperative + background) by default, whilst previous versions used only
background garbage collection. It means that some queries may return data
slower when there are enough old record versions in the affected tables
(this is especially true for ODS10 and below databases which has ineffective
garbage collection in indices). Please note the new behaviour generally
guarantees better overall performance as the garbage collection is performed
online and it prevents version chains from growing under high load. But you
can rollback to the older behaviour using the GCPolicy config option.
* This version never uses indices for the ALL predicate and it can cause a
performance degradation for some your queries. This is done to fix known
bugs causing wrong results returned by this predicate in cases when index
was involved.
* fb_lock_print now requires a database path name in order to print the lock table.
Use a "-d <path name>" command line switch to specify a database to analyze.
API
--------------------------
* isc_interprete() is deprecated as dangerous. Use fb_interpret() instead.
* Events callback routine declaration fixed.
* Inappropriate TPB (transaction parameter buffer) contents is now rejected
by isc_start_transaction() and isc_start_multiple() API routines. For example,
it's not allowed to specify "no wait" and non-zero "wait timeout" options
together, neither it's possible to specify "no record version" mode along
with "snapshot" transaction isolation mode, etc.