Firebird Documentation IndexFirebird 1.5.6 Release Notes → Bugfixes and Additions since Release 1.0
Firebird Home Firebird Home Prev: DocumentationFirebird Documentation IndexUp: Firebird 1.5.6 Release NotesNext: Release 1.5, 1.5.1, 1.5.2, 1.5.3, 1.5.4 and 1.5.5 Bugs Fixed in v.1.5.6

Bugfixes and Additions since Release 1.0

Table of Contents

Improvements
Release 1.5, 1.5.1, 1.5.2, 1.5.3, 1.5.4 and 1.5.5 Bugs Fixed in v.1.5.6
Release 1.5, 1.5.1, 1.5.2, 1.5.3 and 1.5.4 Bugs Fixed in v.1.5.5
Release 1.5, 1.5.1, 1.5.2 and 1.5.3 Bugs Fixed in v.1.5.4
Release 1.5, 1.5.1 and 1.5.2 Bugs Fixed in v.1.5.3
Release 1.5 and 1.5.1 Bugs Fixed in v.1.5.2
Release 1.5 Bugs Fixed in v.1.5.1
Old Bugs Fixed
Known Issues

The figure in brackets, e.g. (1.5) indicates the first release or sub-release in which the described improvement or bug-fix was distributed.

Improvements

instsvc/instreg executables

By O. Mascia

(1.5) Enhanced Win32 install tools instsvc.exe and instreg.exe

Increased # of indexes per table

By A. Harrison, ported to 1.5 by N.Samofatov

(1.5) Maximum number of indices per table increased from 64 to (DB_PAGE_SIZE/16)-2

Better message detail

By D. Yemanov, A. Brinkman, A. Peshkoff

(1.5) Added new (more specific) error messages for some of v1.5 changes.

Security fix on Windows

By A. Peshkoff

(1.5) Added -login switch to instsvc allowing FB service to be installed as non-localsystem account.

Varchar trimming over wire

By D. Yemanov

(1.5) Re-introduced trimming of VARCHAR fields in the remote protocols.

Configuration improvement

By A. Peshkoff

(1.5) Made path management in firebird.conf conform to the OS requirements.

POSIX Tweak

By N. Samofatov

(1.5) Allow easy adjustment of LockSemCount on POSIX platforms, without need to use gds_drop or reboot machine to make new setting take effect

Keyword reduction

By N. Samofatov

(1.5) Make FIRST/SKIP keywords non-reserved.

PSQL Extensions for Loop Breakout

By D. Yemanov

(1.5) BREAK/LEAVE and EXIT statements are now available for usage in triggers.

Mix Aggregate Contexts

By A. Brinkman

(1.5) Enabled aggregate functions from different parent context to be used inside another aggregate function.

Example:

  SELECT MAX((SELECT COUNT(*) FROM RDB$RELATIONS))
  FROM RDB$RELATIONS
      
INTL improvement: UPPER()

By N. Samofatov, D. Yemanov

(1.5) Make UPPER function work for WIN1251 charset without explicit collations.

Configuration Manager change

By A. Peshkoff

(1.5) Now the server will exit from encountering a missing or wrong firebird.conf by sending an error report to the system log.

Parser changes

By D. Yemanov

(1.5) Changed parser.-

  1. ROWS_AFFECTED is renamed to ROW_COUNT

  2. CONNECTION_ID/TRANSACTION_ID are renamed to CURRENT_CONNECTION/CURRENT_TRANSACTION

  3. Some of the newly introduced tokens are made non-reserved

Improved lock manager

By N. Samofatov

(1.5) Deadlocks are now detected and reported as soon all blocking processes received notifications, i.e. instantly in all normal cases.

Advanced security capabilities

By A. Peshkoff

(1.5) Implemented configurable access for databases, external tables and UDF libraries.

SQL Enhancement

By D. Yemanov, N. Samofatov

(1.5) Allow NULLs in unique constraints and indices (SQL-99 spec).

Performance improvement

By N. Samofatov

(1.5) VIO undo log now uses B+ tree to store savepoint record data. It improves performance when doing multiple updates of record in a single transaction just a little (usually 2-3 orders of magnitude for 100000 records).

Improved EXECUTE STATEMENT

By A. Peshkoff

(1.5) Now it's possible to return values from the dynamic SQL using the INTO <variables> syntax.

Syntax:

  EXECUTE STATEMENT <value> INTO <var_list>; (singleton form)
      

or

  FOR EXECUTE STATEMENT <value>
    INTO <var_list>
    DO <stmt_list>;
      
Improved optimizer

By A. Brinkman

(1.5) Subselects in SET clause of UPDATE now can use indices.

(1.5)When an equal-node and other nodes (geq, leq, between...) are available for an index retrieval, then prefer the equal node.

(1.5) Better optimizations of "complex" JOIN queries (LEFT JOIN, views, SPs, etc).

Enhanced isc_database_info capability

By N. Samofatov

(1.5) List of currently active transactions is now available via isc_database_info call.

Performance improvement

By Mike Nordell

(1.5) Implemented shortcut boolean evaluation. Behaviour is controlled by "CompleteBooleanEvaluation" option of firebird.conf. Default is 0 (shortcut evaluation).

Performance improvement for IA32 CPU

By Mike Nordell

(1.5) Speed-up for index operations on IA32 CPU architecture.

Generic cleanup

By Blas Rodriguez Somoza, Erik Kunze

(1.5) Removed a lot of unused code.

Improved control when FW=OFF

By Blas Rodriguez Somoza

(1.5) Changed behaviour of the forced writes mode: now, if FW=off (disabled), you can control how often dirty pages are flushed on disk (allows better reliability when FW is disabled on Win32 platforms).

File Changes

By D. Yemanov

(1.5) The security database has been renamed to security.fdb and this version of Firebird has a new configuration file (firebird.conf).

New UDFs

By Juan Guerrero

(1.5) New user-defined functions LPAD and RPAD added to IB_UDF library.

Security connection cache

By D. Yemanov

(1.5) Connection to the security database is now cached, thus allowing to decrease time of subsequent database attachments.

Performance Improvements

By D. Yemanov

(1.5) 1. Reduce memory usage by the server.

(1.5) 2. Direct external I/O when the memory is not available for the sorting.

(1.5) 3. Increased number of streams and predicates supported by the optimizer.

New Character Sets

By Blas Rodriguez Somoza

(1.5) New character sets: DOS737, DOS775, DOS858, DOS862, DOS864, DOS866, DOS869, WIN1255, WIN1256, WIN1257, ISO8859_3, ISO8859_4, ISO8859_5, ISO8859_6, ISO8859_7, ISO8859_8, ISO8859_9, ISO8859_13. No collations are available yet for these charsets.

CREATE VIEW changes

By D. Yemanov

(1.5) Disallowed PLAN subclause.

Changed aggregate tracking behavior

By A. Brinkman

(1.5) Introduced backwards compatibility within aggregates. Deepest field inside aggregate determines where an aggregate-context should belong.

New API functions

By D. Yemanov

(1.5) IB7-compliant functions to return version of the client library--isc_get_client_version(), isc_get_client_major_version(), isc_get_client_minor_version()

Sort/merge improvement

By D. Yemanov

(1.5) Merging (SORT MERGE plans) is now done via in-memory sorting module.

Performance improvement

By N. Samofatov

(1.5) New memory manager's internals have been changed to give us better performance.

Win32 build changes

By D. Yemanov

(1.5) Changes.-

  1. Changed names of USER32 objects to allow the server to run simultaneously with IB/FB1.

  2. Map name for local (IPC) protocol is changed, so v1.5 client library is no longer compatible with the previous versions via IPC.

  3. All transport protocol names (INET port and service, WNET pipe, IPC map) are now configurable via firebird.conf.

Triggers improvement

By D. Yemanov

(1.5) Added runtime action checks (INSERTING/UPDATING/DELETING predicates).

Example

        if (INSERTING) then
          new.OPER_TYPE = 'I';
        else
          new.OPER_TYPE = 'U';
      
SELECT Improvement

By N. Samofatov

(1.5) Allowed arbitrary expressions in the ORDER BY clause.

Generic code cleanup

By A. Peshkoff, N. Samofatov

(1.5) Cleaned up structures within Y-valve.

Implemented '--' Comments

By D. Yemanov

(1.5) Single-line comments (--) are now allowed in any position of the SQL statement.

FIRST/SKIP and ORDER BY changes

By D. Yemanov

(1.5) Changes --

  1. Implemented ORDER BY clause in subqueries.

  2. Disallowed FIRST/SKIP for views.

  3. Allowed zero as valid argument for FIRST.

Improved optimizer

By A. Brinkman

(1.5) Improvement: let subqueries also use indices when their parent is a stored procedure.

Limitation lifted

By D. Yemanov

(1.5) Removed request size limitation.

Nulls first/last

By N. Samofatov

(1.5) Nulls first/last options for indexes.

Collations in UNIONs

By N. Samofatov

(1.5) Collation handling in "order by" clause of unions.

Generic code cleanup

By Erik Kunze, Ignacio J. Ortega, D. Sibiryakov

(1.5) Renamings, new safe macros, support for mingw.

Explicit record locking

By N. Samofatov

(1.5) Explicit record locking implementation finalized. Should be stable and consistent now.

Improved optimizer

By A. Brinkman

(1.5) Improvement: better handling of AND nodes inside an OR node.

Improved optimizer

By D. Yemanov

(1.5) If a few indices with much different selectivity could be used for index retrieval, only better of them are used while others are ignored.

Classic Server for Win32

By D. Yemanov

(1.5) CS architecture is now supported on Win32, but it still cannot be considered stable, so any feedback is welcome.

Code Cleanup

By N. Samofatov

(1.5) Stored procedures are no longer recompiled before deletion.

New WIN1251_UA Collation

By D. Yemanov

(1.5) New collation for WIN1251 charset: WIN1251_UA for both Ukrainian and Russian languages.

Client library change

By D. Yemanov

(1.5) API routines are no longer exported by ordinals.

New configuration manager

By D. Yemanov

(1.5) Enable the same plain file based configuration for all supported platforms.

Improved optimizer

By A. Brinkman

(1.5) Added better support for using indices with "OR". Pick the best available compound index from all "AND" nodes.

Added support for detecting use of index with sub-selects in aggregate select.

Explicit Savepoints

By N. Samofatov

(1.5) Added support for explicit savepoint management in DSQL.

Protocol cleanup

By Sean Leyne

(1.5) IPX/SPX network protocol is no longer supported.

Obsolete platforms cleanup

By Sean Leyne

(1.5) 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.

Improved thread scheduler for Win32 SS

By A. Peshkoff

(1.5) : now the server should be more responsive under heavy load.

Explicit Locking

By N. Samofatov

(1.5) Added support for explicit locking. Wait behavior in isc_tpb_wait transaction modes is not stable yet.

Syntax

  SELECT <...>
    [FOR UPDATE [OF col [, col ...]]
    [WITH LOCK]]
      
Generic cleanup

By Erik Kunze

(1.5) ISC_STATUS_LENGTH and MAXPATHLEN macros.

Empty BEGIN...END blocks

By D. Yemanov

(1.5) PSQL: enabled support for empty BEGIN...END blocks.

FR # 437859

By D. Yemanov

(1.5) Implemented execute procedure and string concat, allowing any expression to be used as a SP parameter.

FR # 562417

By D. Yemanov

(1.5) Aggregate concatenated empty char.

FR # 451927

By D. Yemanov

(1.5) New ROWS_AFFECTED system variable in PSQL: return number of rows affected by the last INSERT/UPDATE/DELETE statement. For any other statement than INSERT/UPDATE/DELETE, result is always zero.

FR # 446240

By D. Yemanov

(1.5) Dynamic exception messages: allow to throw an exception with a message different to the one the exception was created with.

Syntax

    EXCEPTION name [value];
      
FR # 547383

By D. Yemanov

(1.5) New SQLCODE and GDSCODE system variables providing access to the code of the caught error within the WHEN-block in PSQL. Outside WHEN-block, returns 0 (success).

Exception re-initiate semantics: allows an already caught exception in PSQL to be re-thrown from the WHEN-block.

Syntax

    EXCEPTION;
      

No effect outside WHEN-block.

New NULL order handling

By N. Samofatov

(1.5) Allow user-defined ordering of NULLs.

New Registry key is used on Win32

(1.5) SOFTWARE\FirebirdSQL\Firebird

FR # 451925

By D. Yemanov

(1.5) User-defined constraint index names: allows name of an index enforcing a constraint to be either the same as the constraint name or any user-defined name.

New RECREATE VIEW statement

By D. Yemanov

(1.5) New RECREATE VIEW statement, shorthand for DROP VIEW / CREATE VIEW coupling of statements.

Syntax

    RECREATE VIEW name <view_definition>;
      

By various authors

(1.5) Renamed distribution files to make sure we're Firebird. Now they're fbserver, fbclient, firebird.msg etc. The client library is fbclient now and it should be used in all new FB-based projects.

Minor ODS upgrade (ODS 10.1)

By D. Yemanov, N. Samofatov

(1.5) Added new system indices (RDB$INDEX_41, RDB$INDEX_42, RDB$INDEX_43), now ODS version is 10.1.

FR # 451935

By D. Yemanov

(1.5) New CREATE OR ALTER statement for triggers and stored procedures, allows creating or altering a database object according to whether it exists or not.

Syntax

  CREATE OR ALTER name <object_definition>;
      
Enhanced declaration of local variables in PSQL

By Claudio Valderrama

(1.5) 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;
      
FR ## 555839, 546274

By A. Brinkman

(1.5) Enhanced grouping: allow to GROUP BY internal functions and subqueries. Also allow to GROUP BY ordinal (i.e. column position, a.k.a degree of column in output set).

FR # 451917

By A. Brinkman

(1.5) New COALESCE internal function allowing 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.

FR # 451917

By A. Brinkman

(1.5) New NULLIF internal function returns NULL for a sub-expression if it has a specific value, otherwise returns the value of the sub-expression.

FR # 451917

By A. Brinkman

(1.5) New CASE internal function allows the result of a column to be determined by a the results of a case expression.

Readline

By M. O'Donohue

(1.5) Command history retrieval (like Unix readline) added to ISQL.

FR # 446206

By D. Yemanov

(1.5) New BIGINT datatype allowing native SQL usage of 64-bit exact numerics (Dialect 3 only).

FR # 451922

By D. Yemanov

(1.5) Universal triggers allowing one trigger to be fired for a number of action types.

FR ## 446238, 446243

By D. Yemanov

(1.5) New CONNECTION_ID and TRANSACTION_ID system available in PSQL. Return appropriate internal identifier stored on the database header page.

FR # 446180

By D. Yemanov

(1.5) Server-side database aliases: attach to any database 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 = c:\dbs\my\database.gdb
      

Connection string in application:

    localhost:my_database
      
Plugin Manager

By John Bellardo

(1.5) New plugin manager and INTL interface.

In-memory sorting

By D. Yemanov

(1.5) If SORT plan is used for a SQL statement, the sorting is done in memory. If there's not enough memory for this operation, reverts to old method using temporary file.

FR # 446256

By A. Peshkoff

(1.5) New EXECUTE STATEMENT PSQL extension statement allows execution of dynamic SQL statements in SPs/triggers.

Cleanup

By Sean Leyne, Erik Kunze

(1.5) Major code cleanup.

Memory Optimisation

By John Bellardo

(1.5) New memory manager.

Exception handling

By Mike Nordell, John Bellardo

(1.5) New exception handling logic.

autoconf build

By John Bellardo, M. O'Donohue, Erik Kunze

(1.5) New autoconf-based build configuration.

Codebase Conversion

By

(1.5) The code port from C to C++.

Bug # 1242982

fixed by A. Brinkman

Compound index key mangling exhibited a bug. Now fixed.

Not registered

fixed by A. Brinkman

Unnecessary evaluation was being performed on the last argument of the COALESCE function.

Bug # 1016969

fixed by A. Brinkman

Using search parameters in a SUM() operation would return incorrect results

Bug # 1016969

fixed by A. Brinkman

UPDATE with a CASE expression involving parameters would throw an SQLCode -804 exception ("Data type unknown").

Not registered

fixed by A. Brinkman

COALESCE/CASE displayed a bug regarding BLOB sub-type.

Not registered

fixed by V. Horsun

The wrong error was being detected when a write failure occurred. (v.1.5 Regression.) Fix was back-ported from Firebird 2 HEAD.

Bug # 1106825

fixed by D. Yemanov

An access violation could occur in fcblient.dll v1.5.2 on disconnecting. (v.1.5.2 Regression.) Fix back-ported from Firebird 2 HEAD.

Not registered

fixed by D. Yemanov

Generators were being initialized with garbage values on restoring from a metadata-only backup. (v.1.5.1 regression.) Fix backported from Firebird 2 HEAD.

Not registered

fixed by D. Yemanov

User savepoints were not being released when commit retaining was issued. Fix back-ported from Firebird 2 HEAD.

Not registered

fixed by C. Valderrama

Back-ported some isql fixes from Firebird 2 HEAD:

  1. Another fix for the -b (Bail On Error) option when SQL commands are issued and no database connection yet existed.

  2. Applied Miroslav Penchev's patch for a bug discovered by Ivan Prenosil, where the -Q switch would always return 1 to the operating system.

  3. Fixed a conflict between single-line and block comments.

Not registered

fixed by D. Yemanov

If a table contained a computed column of BLOB or ARRAY type, the first column of the table could be zeroed during a restore. Fix back-ported from Firebird 2 HEAD.

Not registered

fixed by C. Valderrama, D. Yemanov

The server would lock up if a request to attach to security.fdb was unsuccessful. (v.1.5 regression.) Fix back-ported from Firebird 2 HEAD.

Not registered

fixed by C. Valderrama

The fbudf function AddMonth() exhibited wrong behaviour when facing January. Fix back-ported from Firebird 2 HEAD.

Bug # 1124720

fixed by A. Peshkoff

The FOR EXECUTE STATEMENT ... DO SUSPEND construct in PSQL was exhibiting problems. Fix back-ported from Firebird 2 HEAD.

Not registered

fixed by N. Samofatov

Bugchecks were being exhibited on AMD64 (and possibly other platforms) when a database was copied, rather than migrated using backup/restore. Fix back-ported from Firebird 2 HEAD.

Not registered

fixed by A. Peshkoff

There were issues with descending indices used in referential constraints. Fix back-ported from Firebird 2 HEAD.

Bug # 1242982

fixed by A. Brinkman

An equality search on the first segment of a compound index, if it was an integer type, would result in redundant additional scans on specific values (2^n, e.g. 131072). Fix back-ported from Firebird 2 HEAD.

Not registered

fixed by D. Yemanov

Comparisons between strings in character set NONE and another character set would cause an error. (V. 1.5.2 regression.)

Prev: DocumentationFirebird Documentation IndexUp: Firebird 1.5.6 Release NotesNext: Release 1.5, 1.5.1, 1.5.2, 1.5.3, 1.5.4 and 1.5.5 Bugs Fixed in v.1.5.6
Firebird Documentation IndexFirebird 1.5.6 Release Notes → Bugfixes and Additions since Release 1.0