8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-22 20:43:02 +01:00
firebird-mirror/doc/WhatsNew
2002-11-14 16:23:03 +00:00

591 lines
21 KiB
Plaintext

**************
* v1.5 Alpha 4
**************
* Fixed Alpha 3 bug.
Database cannot be restored properly in some situations.
Contributor(s):
Nickolay Samofatov <skidder@bssys.com>
* Fixed Alpha 3 bug.
Dynamic exception messages don't work properly.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Fixed unregistered bug.
Exceptions inside for/while loop in triggers are not handled correctly.
Contributor(s):
Alexander Peshkoff <peshkoff@hotmail.ru>
* Fixed bug SF #623992.
Double forward slash in connection string.
Contributor(s):
Paul Reeves <preeves@ibphoenix.com>,
Mark O'Donohue <mark.odonohue@cytopia.com.au>
* Fixed unregistered bug.
Deadlock during some database operations.
Contributor(s):
Alexander Peshkoff <peshkoff@hotmail.ru>
* Improved optimizer.
If a few indices with much different selectivity could be used for index retrieval, only better of them are used while others are ignored.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Fixed Alpha 3 bug.
Memory corruption that prevented restore of databases with procedures using plan expressions with long index names.
Contributor(s):
Nickolay Samofatov <skidder@bssys.com>
* Fixed unregistered bug.
Quoted identifiers problem in plan expressions.
Contributor(s):
Nickolay Samofatov <skidder@bssys.com>
* Win32 Classic Server.
CS architecture is now supported on Win32 as well, but it still cannot be considered stable, so any feedback is welcome.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Fixed Alpha 3 bug.
API routines are not accessible if gds32.dll is explicitly loaded.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Fixed unregistered bug.
Stored procedures are no longer recompiled before deletion.
Contributor(s):
Nickolay Samofatov <skidder@bssys.com>
* New collation for WIN1251 charset.
WIN1251_UA for both Ukrainian and Russian languages.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Client library change.
API routines are no longer exported by ordinals.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* New configuration manager.
Enable the same plain file based configuration for all supported platforms. Default configuration file will be released in the first beta build.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Improved optimizer.
Added better support for using indices with "OR". Pick the best available compound index from all "AND" nodes.
Contributor(s):
Arno Brinkman <firebird@abvisie.nl>
* Fixed Alpha 3 bug.
Database appears corrupted (damaged BLOB pages).
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Savepoints.
Added support for explicit savepoint management.
Syntax:
SAVEPOINT savepoint_name; (create savepoint)
ROLLBACK [WORK] TO [SAVEPOINT] savepoint_name; (rollback to previously created savepoint)
Notes:
Not available in PSQL.
Contributor(s):
Nickolay Samofatov <skidder@bssys.com>
* Protocol cleanup.
IPX/SPX network protocol is no longer supported.
Contributor(s):
Sean Leyne <sleyne@atkin.com>
* Fixed Alpha 3 bug.
Memory corruption when working with long record verion chains.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Obsolete platforms cleanup.
Some platform are no longer supported by the current source code.
DELTA, IMP, DG_X86, M88K, UNIXWARE, Ultrix, NeXT, ALPHA_NT, DGUX, MPE/XL, DecOSF, SGI, HP700, Netware, MSDOS, SUN3_3
Contributor(s):
Sean Leyne <sleyne@atkin.com>
* Improved optimizer.
Added support for detecting use of index with sub-selects in aggregate select.
Contributor(s):
Arno Brinkman <firebird@abvisie.nl>
* Improved thread scheduler for Win32 SS.
Now the server should be more responsible under heavy load.
Contributor(s):
Alexander Peshkoff <peshkoff@hotmail.ru>
* Explicit record locking.
Added support for explicit locking.
Syntax:
SELECT <...> [FOR UPDATE [OF col [, col ...]] [WITH LOCK]]
Contributor(s):
Nickolay Samofatov <skidder@bssys.com>
**************
* v1.5 Alpha 3
**************
* Fixed bug SF #558364.
Triggers fail to compile if PLAN used.
Note:
Now you can use plans in triggers.
Contributor(s):
Ignacio J. Ortega <nacho@siapi.es>
* Fixed unregistered bug.
Distributed (2PC) transaction cannot be properly rolled back due to network errors.
Contributor(s):
Vlad Horsun <horsun@kdb.dp.ua>,
Erik Kunze <erik.kunze@philosys.de>
* Fixed Alpha 2 bug.
Possible buffer overrun if dynamic exception messages are used.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Fixed Alpha 2 bug.
Problem with sub-select and GROUP BY clause.
Contributor(s):
Arno Brinkman <firebird@abvisie.nl>
* Fixed Alpha 2 bug.
The server hangs with a bugcheck #284 (cannot restore singleton select data).
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Generic cleanup.
ISC_STATUS_LENGTH and MAXPATHLEN macros.
Contributor(s):
Erik Kunze <erik.kunze@philosys.de>
* Fixed Alpha 2 bug.
Version information is missing in libraries and tools.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Fixed Alpha 2 bug.
Backported a few bits of FB1 code which have been lost.
Contributor(s):
Claudio Varderrama <cvalde@usa.net>,
Dmitry Yemanov <yemanov@yandex.ru>
* Fixed bug SF #496784.
When optimizer find indexes for LEFT JOIN, work like INNER JOIN.
Note:
Fixed problem which caused complex outer joins to produce wrong results.
Contributor(s):
Nickolay Samofatov <skidder@bssys.com>
* Fixed Alpha 2 bug.
Changes in aliases.conf are not applied until the server is restarted.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
**************
* v1.5 Alpha 2
**************
* Fixed unregistered bug.
BLOB subtype is ignored in system domains generated for expression fields in views.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Fixed installation bug.
instreg.exe doesn't create "GuardianOptions" registry value.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Fixed unregistered bug.
Resource leaks in DDL recursive procedure handling which caused some DDL to fail.
Contributor(s):
Nickolay Samofatov <skidder@bssys.com>
* Fixed unregistered bug.
Check constraint which uses only one table field is now dropped automatically when this field is dropped.
Contributor(s):
Nickolay Samofatov <skidder@bssys.com>
* Fixed Alpha 1 bug.
GROUP BY ordinal doesn't work with column aliases.
Contributor(s):
Arno Brinkman <firebird@abvisie.nl>
* Fixed Alpha 1 bug.
Views are not being created correctly (missing records in RDB$VIEW_RELATIONS).
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
**************
* v1.5 Alpha 1
**************
* Fixed unregistered bug.
A well-known "decompression overran buffer" error appears during the schema creation.
Contributor(s):
Evgeny Kilin <john@citycard.izhnet.ru>
* New ROWS_AFFECTED system variable (SF #451927).
Return number of rows affected by the last INSERT/UPDATE/DELETE statement.
Notes:
1. Available in PSQL only.
2. For any other statement than INSERT/UPDATE/DELETE, result is always zero.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Dynamic exception messages (SF #446240).
Allow to throw an exception with another message than this exception has been created with.
Syntax:
EXCEPTION name [value];
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* New SQLCODE and GDSCODE system variables (SF #547383).
Provide an access to a code of the catched error within the WHEN-block.
Notes:
1. Available in PSQL only.
2. Makes sense in WHEN-block only, in other places returns 0 (success).
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Exception re-initiate semantics.
Allow an already catched exception to be re-thrown from the WHEN-block.
Syntax:
EXCEPTION;
Note:
Makes sense in WHEN-block only, in other places evaluates to no-op.
Contributor(s):
Digitman <digitman@hotbox.ru>
* Fixed unregistered bug.
The server crashes during the garbage collection under heavy load.
Contributor(s):
Nickolay Samofatov <skidder@bssys.com>
* Deferred metadata compilation.
Solve a lot of reasons of the well-known "object in use" error.
Contributor(s):
Nickolay Samofatov <skidder@bssys.com>
* New NULL order handling.
Allow user-defined ordering of NULLs.
Syntax:
[ORDER BY <order_list>]
<order_list> = {col | int} [COLLATE collation]
[ASC[ENDING] | DESC[ENDING]] [NULLS {FIRST | LAST}]
[, <order_list> ...]
Note:
Default behaviour is NULLS LAST.
Contributor(s):
Nickolay Samofatov <skidder@bssys.com>
* Fixed unregistered bug.
gstat shows wrong value for maxdup element.
Contributor(s):
Dmitry Kuzmenko <kdv@ibase.ru>
* New registry key is used on win32.
Currently it's SOFTWARE\FirebirdSQL\Firebird.
Contributor(s):
-
* User-defined constraint index names (SF #451925).
Allow an index name to be either constraint name or user-defined name.
Syntax:
<col_constraint> = [CONSTRAINT constraint]
{UNIQUE [<constraint_index>]
| PRIMARY KEY [<constraint_index>]
| REFERENCES other_table [( other_col [, other_col ...])]
[ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
[ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
[<constraint_index>]
| CHECK ( <search_condition>)}
<tconstraint> = [CONSTRAINT constraint]
{{PRIMARY KEY | UNIQUE} ( col [, col ...]) [<constraint_index>]
| FOREIGN KEY ( col [, col ...]) REFERENCES other_table
[ON DELETE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
[ON UPDATE {NO ACTION|CASCADE|SET DEFAULT|SET NULL}]
[<constraint_index>]
| CHECK ( <search_condition>)}
<constraint_index> = USING [ASC[ENDING] | DESC[ENDING]] INDEX name
Note:
Index is named the same way as a constraint by default.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* New RECREATE VIEW statement.
A shorthand for DROP VIEW / CREATE VIEW couple of statements.
Syntax:
RECREATE VIEW name <view_definition>;
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Fixed unregistered bug.
Trigger which name starts with 'RDB$' cannot be altered or dropped at all.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Changed file names.
Renamed distribution files to make sure we're Firebird. Now they're fbserver, fbclient, firebird.msg etc.
Note:
The client library is fbclient now and it should be used in all new FB-based projects. gds32 contains nothing but redirected exports and is provided for compatibility only.
Contributor(s):
-
* Minor ODS upgrade.
Added new system indices (RDB$INDEX_41, RDB$INDEX_42, RDB$INDEX_43), now ODS version is 10.1.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>,
Nickolay Samofatov <skidder@bssys.com>
* New CREATE OR ALTER statement (SF #451935).
Allow either creating or altering a database object depending on its existance.
Syntax:
CREATE OR ALTER name <object_definition>;
Notes:
1. Applicable to SPs/triggers only.
2. The statement has the same meaning as CREATE OR REPLACE one in Oracle.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Fixed unregistered bug.
Broken dependencies (like DB$34) appear in the database after metadata changes.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Enhanced declaration of local variables.
Simplify syntax and allow declaring and defining variable at the same time.
Syntax:
DECLARE [VARIABLE] name <variable_type> [{'=' | DEFAULT} value];
Example:
DECLARE my_var INTEGER = 123;
Contributor(s):
Claudio Valderrama <cvalde@usa.net>
* Disabled BREAK statement for triggers (like EXIT) due to known internal limitations.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Enhanced grouping (SF #555839, #546274).
Allow to GROUP BY internal functions and subqueries. Also allow to GROUP BY ordinal (i.e. column position).
Contributor(s):
Arno Brinkman <firebird@abvisie.nl>
* New COALESCE internal function (SF #451917).
Allow a column value to be calculated by a number of expressions, the first expression returning a non NULL value is returned as the column value.
Syntax:
COALESCE (value {, value} ... )
Notes:
1. COALESCE (V1, V2) is equivalent to the following case specification:
CASE WHEN V1 IS NOT NULL THEN V1 ELSE V2 END
2. COALESCE (V1, V2, ..., Vn), for n >= 3, is equivalent to the following case specification:
CASE WHEN V1 IS NOT NULL THEN V1 ELSE COALESCE (V2, ..., Vn) END
3. The function has the same meaning as NVL one in Oracle.
Example:
SELECT
PROJ_NAME AS Projectname,
COALESCE(e.FULL_NAME, '[> not assigned <]') AS Employeename
FROM
PROJECT p LEFT JOIN EMPLOYEE e ON (e.EMP_NO = p.TEAM_LEADER)
Contributor(s):
Arno Brinkman <firebird@abvisie.nl>
* New NULLIF internal function (SF #451917).
Return a NULL value for a sub-expression if it has a specific value, otherwise return the value of the sub-expression.
Syntax:
NULLIF (value, value)
Note:
NULLIF (V1, V2) is equivalent to the following case specification:
CASE WHEN V1 = V2 THEN NULL ELSE V1 END
Example:
UPDATE PRODUCTS
SET STOCK = NULLIF(STOCK, 0)
Contributor(s):
Arno Brinkman <firebird@abvisie.nl>
* New CASE internal function (SF #451917).
Allow the result of a column to be determined by a the results of a case expression.
Syntax:
<case_specification> = <simple_case> | <searched_case>
<simple_case> = CASE value <simple_when_clause> ... [ELSE value] END
<simple_when_clause> = WHEN value THEN value
<searched_case> = CASE <searched_when_clause> ... [ELSE value] END
<searched_when_clause> = WHEN <search_condition> THEN value
Note:
The function has the same meaning as DECODE one in Oracle.
Examples:
1. Simple case:
SELECT
o.ID,
o.Description,
CASE o.Status
WHEN 1 THEN 'confirmed'
WHEN 2 THEN 'in production'
WHEN 3 THEN 'ready'
WHEN 4 THEN 'shipped'
ELSE 'unknown status ''' || o.Status || ''''
END
FROM
Orders o
2. Searched case:
SELECT
o.ID,
o.Description,
CASE
WHEN (o.Status IS NULL) THEN 'new'
WHEN (o.Status = 1) THEN 'confirmed'
WHEN (o.Status = 3) THEN 'in production'
WHEN (o.Status = 4) THEN 'ready'
WHEN (o.Status = 5) THEN 'shipped'
ELSE 'unknown status ''' || o.Status || ''''
END
FROM
Orders o
Contributor(s):
Arno Brinkman <firebird@abvisie.nl>
* Fixed bug SF #545725.
Automatic/background sweep hangs.
Contributor(s):
Alexander Peshkoff <peshkoff@hotmail.ru>
* Fixed unregistered bug.
The server crashes when XSQLDA structures are prepared for not all statement parameters.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Enabled support for empty BEGIN...END blocks.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Partially fixed bug SF #567931.
Metadata security hole.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Fixed unregistered bug.
INT64 arrays don't work.
Contributor(s):
Artem Petkevych <artem@protec.kiev.ua>
* Fixed bug SF #437859.
Execute procedure and string concat.
Note:
This change allows any expression to be used as a SP parameter.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Fixed bug SF #562417.
Aggregate concatenated empty char.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Readline (cmd history) support added to ISQL.
Contributor(s):
Mark O'Donohue <mark.odonohue@cytopia.com.au>
* New BIGINT datatype (SF #446206).
Allow native SQL usage of 64-bit exact numerics.
Note:
Available in dialect 3 only.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Universal triggers (SF #451922).
Allow one trigger to be fired for a number of action types.
Syntax:
CREATE TRIGGER name FOR table
[ACTIVE | INACTIVE]
<trigger_action_prefix>
<trigger_action_suffix> [OR <trigger_action_suffix>] [OR <trigger_action_suffix>]
[POSITION number]
AS <trigger_body>
<trigger_action_prefix> = {BEFORE | AFTER}
<trigger_action_suffix> = {DELETE | INSERT | UPDATE}
Example:
CREATE TRIGGER my_trigger FOR my_table BEFORE INSERT OR UPDATE
AS BEGIN
IF (NEW.DOC_ID IS NULL) THEN
EXCEPTION my_exception;
END
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* New CONNECTION_ID and TRANSACTION_ID system variables (SF #446238, #446243).
Return appropriate internal identifier stored on the database header page.
Notes:
1. Available in SQL/PSQL.
2. The values are reset after a database is restored.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Server-side database aliases (SF #446180).
Any database can be attached to using an "alias" name instead of its physical pathname.
The list of known database aliases is stored in aliases.conf file under the server installation root.
Example:
alias entry in the configuration file: my_database = d:\dbs\my\database.gdb
connection string: localhost:my_database
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* New plugin manager and INTL interface.
Contributor(s):
John Bellardo <bellardo@cs.ucsd.edu>
* In-memory sorting.
If SORT plan is used for a SQL statement, the sorting is done in memory.
If there's not enough memory for this operation, old temporary file based method is used.
Contributor(s):
Dmitry Yemanov <yemanov@yandex.ru>
* Fixed bug SF #538201.
Crash with extract from null as date.
Contributor(s):
Claudio Varderrama <cvalde@usa.net>
* New EXECUTE VARCHAR statement (SF #446256).
Allow execution of dynamic SQL statements in SPs/triggers.
Syntax:
EXECUTE VARCHAR value;
Notes:
1. Available in PSQL only.
2. Currently cannot return values, so SELECT statements are not allowed.
3. Recursion level is limited to 50 (hardcoded).
Example:
EXECUTE VARCHAR my_var;
Contributor(s):
Alexander Peshkoff <peshkoff@hotmail.ru>
* Major code cleanup.
Contributor(s):
Sean Leyne <sleyne@atkin.com>,
Erik Kunze <erik.kunze@philosys.de>
* New memory manager.
Contributor(s):
John Bellardo <bellardo@cs.ucsd.edu>
* New exception handling logic.
Contributor(s):
Mike Nordell <tamlin@algonet.se>,
John Bellardo <bellardo@cs.ucsd.edu>
* New autoconf-based build configuration.
Contributor(s):
John Bellardo <bellardo@cs.ucsd.edu>,
Mark O'Donohue <mark.odonohue@cytopia.com.au>,
Erik Kunze <erik.kunze@philosys.de>
* The code port from C to C++.
Contributor(s):
Mike Nordell <tamlin@algonet.se>,
John Bellardo <bellardo@cs.ucsd.edu>,
Mark O'Donohue <mark.odonohue@cytopia.com.au>