<< Firebird 2.0 | Firebird 2.0.7 Release Notes | Services Manager >>

Bugs fixed


Firebird 2.0: General engine bugs


(CORE-911) Leaving a Classic server process idle for a long period while a read-only, Read Committed transaction was active could cause segmentation faults/AVs.

fixed by V. Horsun

~ ~ ~

(CORE-902) The server could crash intermittently during execution of DDL or DML statements.

fixed by V. Horsun

~ ~ ~

Not registered Assignments to columns deleted by a concurrent transaction were being improperly allowed.

fixed by D. Yemanov

~ ~ ~

Not registered Error invalid transaction handle would be thrown when calling isc_array_lookup_bounds() from multiple threads.

fixed by D. Yemanov

~ ~ ~

Not registered Heavy concurrent load could cause index data corruption.

fixed by V. Horsun

~ ~ ~

SF #1446987 BLOBs could appear to be damaged during operations in PSQL, causing a BLOB not found error.

fixed by V. Horsun

~ ~ ~

SF #1434147 Bugs with COUNT (DISTINCT XXXX) when XXXX was a high integer.

fixed by V. Horsun

~ ~ ~

SF #1435997 A bug was causing a close database error -901 on the embedded server.

fixed by D. Yemanov

~ ~ ~

SF #1436066 Adding an index during database activity could cause logical errors in structure that GFIX would detect.

fixed by V. Horsun

~ ~ ~

Not registered A few types of subqueries were being wrongly treated as variant, causing performance issues.

fixed by D. Yemanov

~ ~ ~

Not registered Previously, the Transaction ID would silently (and dangerously) overflow. Now it will throw a consistency check when it reaches the limit (which is still 231).

fixed by V. Horsun

~ ~ ~

Not registered Read committed transactions would block garbage collection unnecessarily.

fixed by V. Horsun

~ ~ ~

Not registered The ALL predicate could return wrong results.

fixed by D. Yemanov

~ ~ ~

SF #1404157 DFW was not ready for RECREATE TABLE/VIEW.

fixed by D. Yemanov

~ ~ ~

Not registered Restored the code which replaces ROLLBACK with COMMIT if a transaction has not modified any data.

fixed by D. Yemanov

~ ~ ~

Not registered There were some bugs producing wrong statistics:

  • with relation/index data longer than 232 bytes
  • when the average index key length rounded to an integer value

fixed by V. Horsun

~ ~ ~

Not registered Attaching with the isc_dpb_no_garbage_collect option was forcing a sweep.

fixed by V. Horsun

~ ~ ~

Not registered The system transaction was being reported as dead.

fixed by A. dos Santos Fernandes, V. Horsun

~ ~ ~

Not registered The server would lock up after an unsuccessful attach to the security database.

fixed by D. Yemanov, C. Valderrama

~ ~ ~

SF #1076858 Source of possible corruption in Classic server.

fixed by V. Horsun

~ ~ ~

SF #1116809 Incorrect data type conversion.

fixed by A. dos Santos Fernandes

~ ~ ~

SF #1111570 Problem dropping a table having a check constraint referencing more than one column.

fixed by C. Valderrama

Not registered Usage of an invalid index in an explicit plan caused garbage to be shown in the error message instead of the rejected index name.

fixed by C. Valderrama

~ ~ ~

SF #543106 Bug with ALL keyword. MORE INFO REQUIRED.

fixed by D. Yemanov

~ ~ ~

Not registered System users AUTHENTICATOR and SWEEPER were lost, causing SQL SERVER to be reported instead.

fixed by A. Peshkov

~ ~ ~

Not registered Don't rollback prepared 2PC sub-transaction. (Description needs clarifying, Vlad!)

fixed by V. Horsun

~ ~ ~

Not registered Memory consumption became exorbitant when blobs were converted from strings during request processing. For example, the problem would appear when running a script with a series of statements like insert into t(a,b) values(N, <literal_string>); when b was blob and the engine was performing the conversion internally.

fixed by N. Samofatov

~ ~ ~

Not registered Materialization of BLOBs was not invalidating temporary BLOB IDs soon enough. A blob is created as an orphan. This blob has a blob id of {0,slot}. It is volatile, meaning that, if the connection terminates, it will become eligible for garbage collection. Once a blob is assigned to field in a table, it is said to be materialized. If the transaction that did the assignment commits, the blob has an anchor in the table and will be considered permanent. Its blob id is {relation_id,slot}. In situations where internal code is referencing the blob by its old, volatile blob id, the references are routed to the materialized blob, until the session is closed.

fixed by N. Samofatov

~ ~ ~

Solution Now, the references to a volatile blob are checked and, when there are no more references to it, it is invalidated.

Not registered Conversion from string to blob had a memory leak.

fixed by N. Samofatov

~ ~ ~

SF #750664 Issues with read-only databases and transactions.

fixed by N. Samofatov

~ ~ ~

Not registered When one classic process dropped a foreign key and another process was trying to delete master record, the error 'partner index not found' would be thrown.

fixed by V. Horsun

~ ~ ~

Various server bugs

  1. eliminated redundant attempts to get an exclusive database lock during shutdown
  2. corrected inaccurate timeout counting
  3. database lock was not being released after bringing database online in the exclusive mode
  4. removed a 5 sec timeout when bringing database online in the shared mode

fixed by D. Yemanov

~ ~ ~

SF #1186607 Foreign key relation VARCHAR <-> INT should not have caused an exception.

fixed by V. Horsun

~ ~ ~

SF #1211325
fixed problems with BLOBs in external tables.

fixed by V. Horsun

~ ~ ~

Not registered After an attempt to create view v(c1) as select 1 from v all clones of the system request would remain active forever.

fixed by A. Peshkov

~ ~ ~

SF #1191006 Use of WHERE params in SUM would return incorrect results.

fixed by A. Brinkman

~ ~ ~

SF #750662
fixed a bug involving multiple declaration of blob filters.

fixed by D. Yemanov

~ ~ ~

SF #743679 FIRST / SKIP was not as well implemented as it could be.

fixed by D. Yemanov

~ ~ ~

Not registered CPU load would rise to 100% when an I/O error caused a rollover to a non-existent shadow.

fixed by D. Yemanov

~ ~ ~

Not registered Cannot find record fragment bugcheck could occur during garbage collection on the system tables.

fixed by V. Horsun

~ ~ ~

SF #1211328 Error reporting cited maximum BLOB size wrongly.

fixed by D. Yemanov

~ ~ ~

SF #1292007 Duplicated field names in INSERT and UPDATE statements were getting through.

fixed by C. Valderrama

~ ~ ~

Not registered The SQL string was being stored truncated within the RDB$*_SOURCE columns in some cases.

fixed by D. Yemanov

~ ~ ~

Not registered Broken implementation of the MATCHES predicate in GDML.

fixed by D. Yemanov

~ ~ ~

SF bug #1404215 Column dependencies were not being stored for views.

fixed by D. Yemanov

~ ~ ~

SF bug #1191206 A few constraint issues.

fixed by D. Yemanov

~ ~ ~

SF bug #609538 Alter Index on a foreign key index should cause an exception and it did, but the error message was not appropriate.

fixed by D. Yemanov

~ ~ ~

SF bug #1175157 An error in the thread scheduler was causing the server to lock up.

fixed by V. Horsun

~ ~ ~

Not registered

  1. Improper thread data operations were occurring during the protocol port cleanup.
  2. Transaction rollback and attachment cleanup for broken TCP connections was faulty.

fixed by V. Horsun, D. Yemanov

~ ~ ~

Not registered A wrong error message was decoded when firebird.msg was missing or outdated.

fixed by D. Yemanov

~ ~ ~

Not registered Buffer overflows inside the BLR->ASCII blob filter were causing memory corruption and server crashes.

fixed by D. Yemanov

~ ~ ~

Not registered A successful status vector could be reported to the user after a failed DDL operation.

fixed by V. Horsun

~ ~ ~

Not registered Threading issues in the DSQL metadata cache were causing unexpected invalid transaction handle errors under load.

fixed by D. Yemanov

~ ~ ~

Not registered Wrong results would be returned by the division operation after DDL changes.

Example

 create table test(fld numeric(18, 2));
 insert into test (fld) values (1);
 commit;
 alter table test alter fld type numeric(18,3);
 select fld/3 from test; -- returns 0.033 instead of expected 0.333

fixed by D. Yemanov

~ ~ ~

SF #1184099 Incorrect padding was exhibited when using character set OCTETS.

fixed by C. Valderrama, A. dos Santos Fernandes

~ ~ ~

Not registered Unexpected errors were occurring because of improperly handled dead record versions created by the system transaction during DDL operations.

fixed by A. Harrison

~ ~ ~

SF #223060 Processing of the GREATER-THAN operator was too slow.

fixed by V. Horsun

~ ~ ~

Not registered CHECK constraints were not SQL-compliant with regard to the handling of NULL. Until now, if NULL were to be allowed, it had to be specified explicitly in the constraint definition. Under the standard, NULL is allowed unless explicitly constrained by NOT NULL or CHECK (.. IS NOT NULL).

Example of Problem

The following definition now allows NULL in DEPTNO, where previously it did not:

 CHECK (DEPTNO IN (10, 20, 30))

fixed by P. Ruizendaal, D. Yemanov

~ ~ ~

Not registered It was possible to create a primary key constraint on a column consisting of NULLs.

Example of Problem

 create table bug (f1 int not null, f2 int not null);
 insert into bug (f1, f2) values (1, 1);
 commit;
 alter table bug add pk int not null primary key;

fixed by V. Horsun

~ ~ ~

SF #1334034 REVOKE was damaging the ACL (Access Control List).

fixed by D. Yemanov

~ ~ ~

back to top of page
<< Firebird 2.0 | Firebird 2.0.7 Release Notes | Services Manager >>