<< Platform ports | Firebird 2.5 Release Notes | Firebird 2.5 project teams >>

Bugs fixed

Firebird 2.5.3 release

The following improvements and bug fixes were reported as fixed prior to the v.2.5.3 release:

Core engine

(CORE-4460) Expressions containing some built-in functions might not have been optimized well.

fixed by D. Yemanov

~ ~ ~

(CORE-4444) The engine could hang and block all attachments in an out-of-disk-space condition during physical backup.

fixed by V. Khorsun

~ ~ ~

(CORE-2648) Writes to nBackup's delta file were ignoring the Forced Writes database setting.

fixed by V. Khorsun

~ ~ ~

(CORE-4433) The global read/write lock (GlobalRWLock) could not downgrade EX lock to SH if readers were present.

fixed by V. Khorsun

~ ~ ~

(CORE-4372) Deadlock was possible when two data pages contained record fragments pointing to each other.

fixed by V. Khorsun

~ ~ ~

(CORE-4353) Sorting records were unnecessarily large.

fixed by D. Yemanov

~ ~ ~

(CORE-4302) Lookup (or scan) in a descending index could be very inefficient for some keys.

fixed by V. Khorsun

~ ~ ~

(CORE-4299) Error Inappropriate self-reference of column when using WITH CHECK OPTION with the EXTRACT() function.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-4283) Resource temporarily unavailable errors while registering events simultaneously.

fixed by A. Peshkov

~ ~ ~

(CORE-4251) The Guardian service could write garbage after the end of the message in the Event Log.

fixed by V. Khorsun

~ ~ ~

(CORE-4250) An access violation could occur in the Guardian at process shutdown.

fixed by V. Khorsun

~ ~ ~

(CORE-4216) Memory leak with TRIGGER ON TRANSACTION COMMIT.

fixed by V. Khorsun

~ ~ ~

(CORE-4214) A global temporary table (GTT) could refer to a permanent relation, which it should not be able to do.

fixed by V. Khorsun

~ ~ ~

(CORE-4211) The embedded engine could hang for 5 seconds while closing, with errors about timeout in shutdown process and invalid mutex placed in firebird.log.

fixed by A. Peshkov

~ ~ ~

(CORE-4198) An incorrect token unknown error was raised when an SQL string ended with a hex number literal.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-4145) Memory would leak during preparation of an EXECUTE BLOCK that used domains.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-4144) The error context already in use (BLR error) was raised when preparing a query with UNION.

fixed by V. Khorsun

~ ~ ~

(CORE-4143) Memory was leaking in fbembed.dll.

fixed by V. Khorsun

~ ~ ~

(CORE-4139) The error invalid stream could be raised in some cases while matching a computed index.

fixed by D. Yemanov

~ ~ ~

(CORE-4135) Sweep was blocking establishment of concurrent attachments in Superserver.

fixed by V. Khorsun

~ ~ ~

(CORE-4134) Race conditions could arise when auto-sweep was started.

fixed by V. Khorsun

~ ~ ~

(CORE-4118) An expression index might not be used for derived fields or view fields.

fixed by D. Yemanov

~ ~ ~

(CORE-4117) A COMPUTED BY field was being evaluated as NULL if used as an exception parameter directly.

fixed by D. Yemanov

~ ~ ~

(CORE-4113) EXECUTE BLOCK prepare was failing.

fixed by D. Yemanov

~ ~ ~

(CORE-4102) Optimization of OR predicates was poor when applied to unions.

fixed by D. Yemanov

~ ~ ~

(CORE-4101) Invalid I/O error during write operation entries would appear in the firebird.log when no such database error existed.

fixed by V. Khorsun

~ ~ ~

(CORE-4100) Automatic sweep could be run when there was no need for it.

fixed by V. Khorsun

~ ~ ~

(CORE-4083) Full outer join in derived table with COALESCE (or IIF) was not returning NULLs correctly.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-4058) Remote stack buffer overflow in the server.

fixed by A. Peshkov and released in the special release Firebird 2.5.2 Update 1 (details below).

~ ~ ~

(CORE-4050) SQL Dialect was not being set in internal connections to the security database.

fixed by A. Peshkov

~ ~ ~

(CORE-4051) Memory was leaked when sorting records larger than 32 KB.

fixed by V. Khorsun

~ ~ ~

(CORE-4038) Optimization for stored DBKEYs was broken.

fixed by D. Yemanov

~ ~ ~

(CORE-4036) Bugcheck or database corruption could occur when attempting to store long, incompressible data into a table.

fixed by D. Yemanov

~ ~ ~

(CORE-4005) A failing recursive CTE would return the wrong error message.

fixed by V. Khorsun

~ ~ ~

(CORE-4004) Sometimes long-running operations could not be interrupted by asynchronous shutdown / cancellation requests.

fixed by D. Yemanov

~ ~ ~

(CORE-4002) The error message index unexpectedly deleted could appear in a database trigger ON COMMIT TRANSACTION.

fixed by V. Khorsun

~ ~ ~

(CORE-3989) Bad performance or slow response were exhibited when many concurrent sorts were being executed.

fixed by D. Yemanov, V. Khorsun

~ ~ ~

(CORE-3981) Predicate checking was sub-optimal while selecting from a view.

fixed by D. Yemanov

~ ~ ~

(CORE-3978) Invalid transaction counters could be reported in firebird.log during a sweep.

fixed by D. Yemanov

~ ~ ~

(CORE-3940) I/O error during GetFileSize operation for file XXXX.

fixed by V. Khorsun

~ ~ ~

(CORE-3924) Bugcheck 291 (cannot find record back version) if a global temporary table (GTT) was modified concurrently with at least one read-committed read-only transaction.

fixed by D. Yemanov

~ ~ ~

(CORE-3921) Error record disappeared (186), file: vio.cpp line: 408, in company with CPU at 100 per cent (when bugcheckabort=1 and sweep starts at gap ~21000).

fixed by V. Khorsun

~ ~ ~

(CORE-3916) A false validation error could occur for large tables, viz., Index x is corrupt (missing entries) in table ...

fixed by V. Khorsun

~ ~ ~

(CORE-3902) Derived fields might not be optimized by use of an index.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3874) Computed column was appearing in non-existent rows of a left-joined set.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3817) Forced database shutdown did not work if a non-zero delay was specified.

fixed by D. Yemanov

~ ~ ~

(CORE-3360) UPDATE ... RETURNING ... would raise error -551 (no permission to update) for a column present only in the RETURNING clause.

fixed by A. Peshkov

~ ~ ~

(CORE-3305) BLOB not found error was being raised after creating or altering an invalid trigger.

fixed by D. Yemanov

~ ~ ~

(CORE-2848) lock conversion denied or lock denied error was being raised when contention was relatively high.

fixed by V. Khorsun

~ ~ ~

(CORE-2648) Writes to nBackup's delta file were ignoring the Forced Writes database setting.

fixed by V. Khorsun

~ ~ ~

(CORE-2165) An unnecessary index read could occur when using a strict inequality condition.

fixed by V. Khorsun

~ ~ ~

(CORE-1604) An error would be raised at database creation if the user had a non-ascii name.

fixed by D. Yemanov

~ ~ ~

(CORE-1475) A database which had active attachments could not be replaced from a gbak backup file even after the database was shut down.

fixed by D. Yemanov

~ ~ ~

(CORE-1295) Queries with DB_KEY were poorly optimized.

fixed by D. Yemanov

~ ~ ~

Improvements

(CORE-4445) Physical backup (using ALTER DATABASE BEGIN/END BACKUP or the nBackup utility) was improved to speed up extension of the main database file when backup state changes from stalled to merge.

implemented by V. Khorsun

~ ~ ~

(CORE-4443) Fast file growth has been enabled on Linux systems that support fallocate().

implemented by V. Khorsun

~ ~ ~

(CORE-4432) Attachments no longer block others when the allocation table is being read for the first time.

implemented by V. Khorsun

~ ~ ~

(CORE-4431) Contention for the allocation table lock while a database is in the stalled physical backup state has been reduced.

implemented by V. Khorsun

~ ~ ~

(CORE-4386) More details are now reported for object in use errors.

implemented by D. Yemanov

~ ~ ~

(CORE-4252) The relation name is now added to the text of validation contraint error messages, to help identify the error context.

implemented by V. Khorsun

~ ~ ~

(CORE-4215) Execution of a SET STATISTICS INDEX statement no longer blocks or slows down concurrent attachments.

implemented by V. Khorsun

~ ~ ~

(CORE-3994) The scan for limbo transactions scan at the end of a sweep has been improved.

implemented by D. Yemanov

~ ~ ~

(CORE-3881) Error reporting for index and constraint violations has been extended to include the problematic key value.

implemented by D. Yemanov

~ ~ ~

(CORE-3704) New context variables have been added to the SYSTEM namespace to retrieve more information about the current connection and current transaction.

The added variables: SYSTEM::CLIENT_PID and SYSTEM::CLIENT_PROCESS for the current connection, SYSTEM::LOCK_TIMEOUT and SYSTEM::READ_ONLY for the current transaction.

implemented by D. Yemanov

~ ~ ~

(CORE-4438) Support for the UPDATE OR INSERT statement has been implemented for Embedded SQL (ESQL).

implemented by D. Yemanov

~ ~ ~

(CORE-4437) Support for the RETURNING clause has been implemented for Embedded SQL (ESQL).

implemented by D. Yemanov

~ ~ ~

(CORE-4047) The maximum number of input parameters for external functions (UDFs) has been increased to 15.

implemented by A. dos Santos Fernandes

~ ~ ~

back to top of page

Server crashes

(CORE-4319) The engine could crash when the trace config contained the line connection_id=NN and an attempt was made to connect to a non-existent database/alias.

fixed by V. Khorsun

~ ~ ~

(CORE-4300) The server would terminate abnormally when iscDatabaseInfo() was called with buffer size = 0.

fixed by D. Yemanov

~ ~ ~

(CORE-4267) The server could crash while sweeping a database.

fixed by D. Yemanov

~ ~ ~

(CORE-4212) Dropping a foreign key constraint on a global temporary table (GTT) would crash the server.

fixed by V. Khorsun

~ ~ ~

(CORE-4127) When encountering an oversized key, the server would crash instead of reporting the error key size exceeds implementation restriction.

fixed by D. Yemanov

~ ~ ~

(CORE-4123) The server could crash when executing a stored procedure called by a trigger that converts string to uppercase.

fixed by D. Yemanov

~ ~ ~

(CORE-4121) A segmentation fault could occur when the engine was shutting down inside a BLOB GET/PUT function that was invoked from a UDF.

fixed by A. Peshkov

~ ~ ~

(CORE-4093) The server would crash while converting an overscaled numeric to a string.

fixed by D. Yemanov

~ ~ ~

(CORE-4045) The server could crash during database shutdown.

fixed by D. Yemanov

~ ~ ~

(CORE-3996) Firebird would crash when trying to create a database in a restricted path.

fixed by A. Peshkov

~ ~ ~

(CORE-3993) The server could terminate or crash while shutting down a database with in-progress attachments.

fixed by A. Peshkov

~ ~ ~

(CORE-3988) The engine could crash when trace or audit was active.

fixed by V. Khorsun

~ ~ ~

(CORE-3979) The server could crash while unwinding changes in an autonomous transaction.

fixed by D. Yemanov

~ ~ ~

(CORE-3944) The server would crash when running a script that deleted attachments and moved the database offline.

fixed by A. Peshkov

~ ~ ~

([[http://tracker.firebirdsql.org/browse/CORE-3908 | CORE-3908]9) The engine could leak memory and crash when a large number of autonomous transactions had been started and finished.

fixed by A. Peshkov

~ ~ ~

back to top of page

Stored procedure/trigger language (PSQL)

(CORE-4247) DELETE WHERE CURRENT OF {cursor} was failing for tables with newly added fields.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-4244) Problem with creating a procedure that entailed concatenating text in the DOS864 character set.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-4233) In PSQL modules with declared cursors, the engine could assign a value to the wrong variable.

fixed by V. Khorsun

~ ~ ~

(CORE-4210) Comments for output parameters were not being preserved after altering procedures.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-4204) An error would be raised when compiling a procedure containing the statement IF (x = (SELECT ...)).

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3054) User role was not being passed through the external EXECUTE STATEMENT call.

fixed by V. Khorsun

~ ~ ~

(CORE-3998) Parameterized EXECUTE STATEMENT calls could fail.

fixed by V. Khorsun

~ ~ ~

(CORE-3895) High memory usage was exhibited when PSQL code selected from a stored procedure that had modified some data.

fixed by V. Khorsun

~ ~ ~

back to top of page

International language support

(CORE-4136) The Sharp-S character was treated incorrectly in the UNICODE_CI_AI collation.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-4125) Using COLLATE UNICODE_CI_AI in a non-indexed WHERE clause was extremely slow.

fixed by A. dos Santos Fernandes, T. Martir

~ ~ ~

(CORE-3949) UNICODE collations would not work with ICU 49.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-2912) An exception would be raised when uppercasing a string containing lowercase y trema (code 0xFF in ISO8859_1).

fixed by A. dos Santos Fernandes

~ ~ ~

back to top of page

Command-line utilities

gfix

(CORE-4297) gfix would crash when the description of a limbo transaction in RDB$TRANSACTIONS had a size larger than 1KB.

fixed by V. Khorsun

~ ~ ~

fbsvcmgr

(CORE-4298) fbsvcmgr was failing to recognise sts_record_versions and other sts switches.

fixed by A. Peshkov

~ ~ ~

(CORE-3969) Memory would leak when doing a lot of iterations of fbsvcmgr with action_trace_start, _list and _stop.

fixed by V. Khorsun

~ ~ ~

fbtracemgr

gbak

(CORE-4417) gbak was unable to commit an index or primary key containing characters with the German umlaut.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3995) Switches -V and -Y were partially broken in v.2.5.2.

fixed by A. Peshkov

~ ~ ~

gsec

(CORE-3932) Using gsec, one could create but not delete a user with user name containing double quotes.

fixed by A. Peshkov

~ ~ ~

qli

(CORE-4327) Error in qli when copying NULL blobs between databases.

fixed by A. Peshkov

~ ~ ~

isql

(CORE-4137) isql was returning erroneous metadata from -extract. Specifically, it would omit the space between the data type and character set arguments of a PSQL variable definition, thus causing a syntax error in the output script.

fixed by A. dos Santos Fernandes

~ ~ ~

Database monitoring/administration

(CORE-4010) Fetch could not be subsequently interrupted via DELETE FROM MON$STATEMENTS.

fixed by D. Yemanov

~ ~ ~

(CORE-3977) DELETE FROM MON$STATEMENTS would not interrupt a statement that was engaged in a fairly long fetch. fixed by D. Yemanov ~ ~ ~ (CORE-3935) Could not connect to database via TCP/IP after DELETE FROM MON$ATTACHMENTS had been issued on a different database on the same machine. fixed by A. Peshkov ~ ~ ~ Trace/Audit (CORE-4225) The server could crash when attempting to trace activity on a database having a databaselevel trigger. fixed by V. Khorsun ~ ~ ~

[END OF PDF PAGE 129]

back to top of page

Firebird 2.5.1 release

The following improvements and bug fixes were reported as fixed prior to the v.2.5.1 release:

Core engine/API

(CORE-3537) Improvement: The "undoing" on transaction rollback of changes made to global temporary tables created with the ON COMMIT DELETE ROWS option was unnecessary and was removed.

implemented by V. Khorsun

~ ~ ~

(CORE-3536) Improvement: Garbage collection in global temporary tables was being delayed unnecessarily by active transactions in other attachments.

implemented by V. Khorsun

~ ~ ~

(CORE-3457) Improvement: The temporary space manager has been made more optimal with regard to small chunk allocations.

implemented by D. Yemanov

~ ~ ~

(CORE-3323) Improvement: Lock Manager was provided with the capability to cancel waiting.

Considering the following example:

 tx1: update table t ... where id = 1
 tx2: update table t ... where id = 1

If transaction tx2 is in WAIT mode, it will wait for the end of tx1 forever and this wait cannot be broken using either a DELETE FROM MON$xxx or a fb_cancel_operation request.

The improvement provides Lock Manager with the ability to break such interminable waits.

implemented by V. Khorsun

~ ~ ~

back to top of page

(CORE-3295) Improvement: Estimate the actual record compression ratio in the optimizer, thus allowing a more precise guess about table cardinalities (number of stored records).

implemented by D. Yemanov

~ ~ ~

(CORE-3560) The v.2.5 Classic Server was using more memory than v.2.1.5 when caching metadata.

fixed by A. Peshkov

~ ~ ~

(CORE-3549) Database corruption could occur at the end of a session, throwing the error page xxx is of wrong type expected 4 found 7.

fixed by V. Khorsun

~ ~ ~

(CORE-3547) A floating-point negative zero was not the same as a positive zero in indexes.

fixed by D. Yemanov

~ ~ ~

(CORE-3535) The write target of a dirty page could be undefined if an error occurred when the nbackup state was changed.

fixed by V. Khorsun

~ ~ ~

(CORE-3533) On SuperServer, a memory leak would occur if a connection was terminated without explicitly releasing the handles for all the statements prepared and cached by the client application.

fixed by V. Khorsun

~ ~ ~

(CORE-3532) The server would hang on starting a new session when a trace was running.

fixed by A. Peshkov

~ ~ ~

(CORE-3525) Autonomous transactions were wrongly inheriting the run-time flags of the "parent" transaction.

fixed by V. Khorsun

~ ~ ~

(CORE-3515) Index corruption could occur under a complex set of conditions that was causing index updates to get out of synch and lose entries. Validation would pick it up and write the "missing entries" message into the firebird.log.

fixed by V. Khorsun

~ ~ ~

back to top of page

(CORE-3512) The server could hang when a trace was running.

fixed by A. Peshkov

~ ~ ~

(CORE-3509) ALTER PROCEDURE was permitting the addition of a parameter with the same name as an existing one.

fixed by V. Khorsun

~ ~ ~

(CORE-3502) DROP VIEW was ignoring the existing non-column dependencies.

fixed by V. Khorsun

~ ~ ~

(CORE-3494) Attach would fail anyway, after a shutdown had been rejected by the handler installed in fb_shutdown_callback().

fixed by A. Peshkov

~ ~ ~

(CORE-3491) Altering a TYPE OF COLUMN parameter in a PSQL module would affect the original column.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3461) DDL operations would fail after a backup and restore.

fixed by A. Peshkov

~ ~ ~

(CORE-3443) Race conditions could occur during UDF library lookup.

fixed by A. Peshkov

~ ~ ~

(CORE-3418) Database trigger created as INACTIVE was coming up active.

fixed by V. Khorsun

~ ~ ~

(CORE-3398) GRANT ADMIN ROLE was not being accepted.

fixed by A. Peshkov

~ ~ ~

back to top of page

(CORE-3397) Unresolved symbols were found in intl and trace libraries.

fixed by A. Peshkov

~ ~ ~

(CORE-3394) Failed attempt to violate a unique constraint could leave an unnecessary "lock conflict" error in the status vector.

fixed by V. Khorsun

~ ~ ~

(CORE-3341) Events posted from inside an autonomous transaction could get lost and never be delivered to the listening client.

fixed by D. Yemanov

~ ~ ~

(CORE-3340) In an autonomous transaction with an empty exception handler, duplicate values could be inserted into a primary of unique key column, leading to an unrestorable backup.

fixed by D. Yemanov

~ ~ ~

(CORE-3327) The thread pool in a network server could create more threads than were necessary.

fixed by V. Khorsun

~ ~ ~

(CORE-3326) A fast mutex could be left in locked state by a dead process.

fixed by V. Khorsun

~ ~ ~

(CORE-3325) Under high load it was possible that a new process would fail to map shared memory.

fixed by V. Khorsun

~ ~ ~

(CORE-3315) The audit plugin would record a second *FAILED* EXECUTE_STATEMENT_FINISH after a "normal" one.

fixed by V. Khorsun

~ ~ ~

(CORE-3314) Dependencies were not being removed after a procedure and the table it depended on were dropped in the same transaction.

fixed by D. Yemanov

~ ~ ~

back to top of page

(CORE-3312) The join plan was sub-optimal when the slave table depended on the master one by means of the OR predicate.

fixed by D. Yemanov

~ ~ ~

(CORE-3306) An invariant sub-query was being treated as variant, causing multiple invocations of a nested stored procedure.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3283) A bad plan was produced with a query using a LEFT OUTER JOIN in a sub-query.

fixed by D. Yemanov

~ ~ ~

(CORE-3282) EXECUTE STATEMENT was using the wrong character set when parsing the SQL text argument.

fixed by V. Khorsun

~ ~ ~

(CORE-3266) A race condition could occur between the asynchronous service detach request and a running user trace service.

fixed by V. Khorsun

~ ~ ~

(CORE-3256) Error request depth exceeded could appear while preparing a select query against a view with explicit plan.

fixed by D. Yemanov

~ ~ ~

(CORE-3237) Stored procedures were being compiled too slowly.

fixed by D. Yemanov

~ ~ ~

(CORE-3207) AccessViolationException inside FB_965910463_Class.isc_start_multiple on beginning transaction.

fixed by D. Yemanov

~ ~ ~

(CORE-3205) isc_dsql_exec_immed2() was not returning error codes isc_stream_eof and isc_sing_select_err when they occurred.

fixed by D. Yemanov

~ ~ ~

back to top of page

(CORE-3188) Error Page 0 is of wrong type (expected 6, found 1) was occurring unexpectedly.

fixed by V. Khorsun

~ ~ ~

(CORE-3176) A view with a column derived from a sub-query would join the sub-query output to the table without using an index.

fixed by D. Yemanov

~ ~ ~

(CORE-3168) The exclude_filter was not working for the <services> section of the trace facility.

fixed by V. Khorsun

~ ~ ~

(CORE-3157) Adding a parameter description to a stored procedure could lead to heavy memory consumption and protracted execution time.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3151) Memory allocated in sqlda_sup could be left unreleased in some cases.

fixed by A. Peshkov

~ ~ ~

(CORE-3148) Dangerous code was discovered in SQZ_apply_differences.

fixed by D. Kovalenko, A. Peshkov

~ ~ ~

(CORE-3140) Comments for parameters were not being preserved after altering procedures.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3137) Partial rollback was possible for a selectable procedure that was modifying data.

fixed by D. Yemanov

~ ~ ~

(CORE-3131) WIN1257_LV (Latvian) collation was wrong for the four letters A, E, I and U.

fixed by D. Yemanov

~ ~ ~

back to top of page

(CORE-3125) An access violation was occurring in the routine Worker: shutdown().

fixed by V. Khorsun

~ ~ ~

(CORE-3058) New generators were being created with wrong values when more than 32,767 generators had been created previously.

fixed by D. Yemanov

~ ~ ~

(CORE-3029) Bugcheck Too many savepoints (287) at rollback after an exception from @@EXECUTE BLOCK@@ that contained an exception handler.

fixed by D. Yemanov

~ ~ ~

(CORE-3024) Error no current record for fetch operation would occur after ALTER VIEW.

fixed by A. Peshkov

~ ~ ~

(CORE-2835) Natural was being used to select, when the primary key index should have been used.

fixed by D. Yemanov

~ ~ ~

(CORE-2827) Prepare was very slow for complex interrelated metadata when the operation being prepared indirectly involved many triggers.

fixed by D. Yemanov

~ ~ ~

(CORE-2709) Indexed reads in a compound index with NULLs were excessive.

fixed by D. Yemanov

~ ~ ~

(CORE-1752) Results of a join with different collations exhibited variations according to the execution plan used.

fixed by D. Yemanov

~ ~ ~

(CORE-1274) Results would be wrong when PLAN MERGE was chosen and the data types of the equality predicate arguments were different.

fixed by D. Yemanov

~ ~ ~

back to top of page

Server Crashes

(CORE-3554) Passing an empty SQL query remotely could crash the server during the prepare or throw an incorrect parsing error.

fixed by D. Yemanov

~ ~ ~

(CORE-3557) The server could crash while preparing a query against a table that was in the process of being dropped.

fixed by V. Khorsun

~ ~ ~

(CORE-3524) The server would crash while recompiling a stored procedure that was in use.

fixed by V. Khorsun

~ ~ ~

(CORE-3503) ALTER VIEW would crash the server if the new version had an artificial (aggregate or union) stream at the position of a regular context in the older version.

fixed by V. Khorsun

~ ~ ~

(CORE-3477) The server would crash whenever non-existent SQL parameters were passed to it.

fixed by D. Yemanov

~ ~ ~

(CORE-3440) The server would crash if isc_que_events() had queued 0 events.

fixed by V. Khorsun

~ ~ ~

(CORE-3247) The server was crashing with BLOBs in character set UTF8.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3419) Server could hang or crash when an autonomous transaction was rolled back.

fixed by V. Khorsun

~ ~ ~

(CORE-3400) Server crashes were occurring frequently on FreeBSD8.2R.

fixed by A. Peshkov

~ ~ ~

back to top of page

(CORE-3374) The server could crash or corrupt data if SELECT WITH LOCK was issued against records not in the latest format.

fixed by D. Yemanov

~ ~ ~

(CORE-3320) A certain MERGE syntax was able to crash the server. Details are not published.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3255) The server could crash using views with GROUP BY.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3219) Trace manager would crash the server with DSQL_unprepare.

fixed by V. Khorsun

~ ~ ~

(CORE-3217) The server would crash inside the Lock Manager when multiple connections were attaching or detaching simultaneously.

fixed by D. Yemanov

~ ~ ~

(CORE-3202) execute_immediate API call family could crash the remote server.

fixed by D. Yemanov

~ ~ ~

(CORE-3180) ALTER VIEW with non-matched columns in the declaration and selection would crash the server.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3138) An internal error or a crash would occur when accessing any MON$ table after altering its structure.

fixed by D. Yemanov

~ ~ ~

(CORE-3064) Using both the identifier of a procedure and its alias in an explicit plan would crash the server.

fixed by D. Yemanov

~ ~ ~

back to top of page

Data Manipulation Language

(CORE-3523) SIMILAR TO was giving false matches on descending ranges.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3493) Adding a value to a timestamp earlier than '16.11.1858 00:00:01' would throw the error value exceeds the range for valid timestamp.

fixed by D. Yemanov

~ ~ ~

(CORE-3489) Blob transliteration sometimes failed to happen inside a union.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3479) The ASCII_VAL() function would raise an error for empty strings instead of returning 0.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3355) Comparison of DATE and TIMESTAMP would be wrong if an index was used.

fixed by D. Yemanov

~ ~ ~

(CORE-3353) Predicate (blob_field LIKE ?) was describing the parameter as VARCHAR(30) rather than as BLOB.

fixed by D. Yemanov

~ ~ ~

(CORE-3335) Internal wrapping was occurring for the multi-byte blob SUBSTRING function and its boundary arguments, causing wrong results.

fixed by D. Yemanov

~ ~ ~

(CORE-3311) The error data type unknown would be thrown while preparing an UPDATE or DELETE statement with a parameterized ROWS clause.

fixed by D. Yemanov

~ ~ ~

(CORE-3302) DISTINCT aggregates were returning wrong (duplicated) data.

fixed by D. Yemanov

~ ~ ~

back to top of page

(CORE-3277) The RIGHT() function was giving a wrong result for varchars of character set UTF8.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3245) A SUBSTRING() operation on a long text BLOB would return a BLOB containing only 32767 characters if the optional third argument was not present.

fixed by D. Yemanov

~ ~ ~

(CORE-3244) The result of POSITION() was wrong for an empty string ('') if the third argument was present.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3233) LIKE, STARTING and CONTAINING would fail if the second operand was 32KB or more.

fixed by A. dos Santos Fernandes, D. Yemanov

~ ~ ~

(CORE-3228) The RIGHT() function would fail with multi-byte text blobs more than 1024 bytes in length.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3227) The ASCII_VAL() function would fail if the argument contained multi-byte characters anywhere.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3222) A view with WITH CHECK OPTION did not like a TRIM() function call in the WHERE clause.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3211) String truncation would occur when selecting from a view that contained a NOT IN condition.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3210) Error no current record for fetch operation would occur unexpectedly in a SELECT query.

fixed by D. Yemanov

~ ~ ~

back to top of page

(CORE-3208) Recursive queries were exhibiting significant memory leaks.

fixed by D. Yemanov

~ ~ ~

(CORE-3203) UPDATE OR INSERT with RETURNING would cause an Invalid Cursor error.

fixed by D. Yemanov

~ ~ ~

(CORE-3173) Selecting from a stored procedure that contained two Common Table Expressions, the second with a GROUP BY clause, as well as an inner join, would wrongly return nothing in the result.

fixed by D. Yemanov

~ ~ ~

(CORE-3164) Parameterized requests involving BLOB fields would fail when the client was connected using character set UTF8.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3141) The last column in a view was being returned as NULL, even when it should contain a value.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3091) The built-in function POWER(X, Y) did not work when the X argument was negative and the Y value was a scaled numeric of scale 0.

fixed by A. dos Santos Fernandes

~ ~ ~

back to top of page

Command-line utilities

gbak

(CORE-3236) gbak would throw the unavailable database error when both the service manager switch and localhost:db were specified.

fixed by A. Peshkov

~ ~ ~

(CORE-3249) If an already existing file was used as the output file for gbak -b and the size of the new backup file was smaller than the existing one, the backup file was not being truncated.

fixed by A. Peshkov

~ ~ ~

(CORE-3232) A non-transportable backup created without the -se service_mgr switch would produce a backup file that was about 50 percent larger than the source database.

fixed by A. Peshkov

~ ~ ~

back to top of page

nBackup

(CORE-3521) nBackup delta file contents were not being flushed to disk.

fixed by V. Khorsun

~ ~ ~

(CORE-3482) nBackup on Linux would segfault on Ctrl-C and leave the database locked and thus the delta file continuing to grow.

fixed by A. Peshkov

~ ~ ~

(CORE-3297) nBackup would exit with no information if firebird.conf was missing.

fixed by A. Peshkov

~ ~ ~

(CORE-3199) On POSIX, nBackup would fail if the requesting user was not root or Owner, due to the O_NOATIME flag being open.

fixed by A. Peshkov

~ ~ ~

back to top of page

fbtracemgr

(CORE-3487) The fbtracemgr utility would segfault sometimes when ended with Ctrl-C.

fixed by A. Peshkov

~ ~ ~

back to top of page

fb_lock_prt

(CORE-3454) fb_lock_print -c would cause the server to hang.

fixed by A. Peshkov

~ ~ ~

gpre

(CORE-3486) gpre language modules could not be compiled with gcc 4.4.

fixed by A. Peshkov

~ ~ ~

(CORE-3022) gpre was getting C++ compiler warnings with GCC 4.4.1.

fixed by D. Dodson

~ ~ ~

back to top of page

Database monitoring/administration

(CORE-2305) Improvement :: Make MON$STATEMENT_ID value constant among monitoring snapshots.

implemented by D. Yemanov

~ ~ ~

(CORE-3508) MON$DATABASE_NAME and MON$ATTACHMENT_NAME fields were substituting question marks for non-ASCII characters regardless of the connection character set.

fixed by D. Yemanov

~ ~ ~

(CORE-3218) A statement cancellation request might be silently ignored by the currently running SQL code.

fixed by D. Yemanov

~ ~ ~

back to top of page

Services Manager

(CORE-3261) Assertion when running restore service.

fixed by A. Peshkov

~ ~ ~

back to top of page

POSIX-only bugs

(CORE-3589) On MacOSX and FreeBSD, semaphores were not detached from a shared file when the shared file was closed, causing an internal resource leak. The bug was effectively hidden, due to missing checks of errors returned by the ISC_event_init() function. It showed up on MacOSX 10.7 as failure of Superserver and Superclassic to start.

fixed by A. Peshkov

~ ~ ~

(CORE-3544) make install on Linux was failing.

fixed by A. Peshkov

~ ~ ~

(CORE-3447) Some collations were not being installed on Linux with icu versions greater than 4.2.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3377) During the Firebird build on POSIX, attempts were being made to place records about a missing fbintl.conf in firebird.log in the destination directory instead of the build directory.

fixed by A. Peshkov

~ ~ ~

(CORE-3259) On POSIX, deadlock and SEGV would occur when processing Ctrl-C (terminate) in user code.

fixed by A. Peshkov

~ ~ ~

(CORE-3257) 'make install' would fail on Linux.

fixed by A. Peshkov

~ ~ ~

(CORE-3229) Something was causing error records to appear in the firebird.log Operating system directive open failed, Too many links.

fixed by A. Peshkov

~ ~ ~

(CORE-3212) Compiling for FreeBSD was failing with an error.

fixed by A. Peshkov

~ ~ ~

(CORE-3194) Number of connections to Superclassic on Linux was limited to 508.

fixed by A. Peshkov

~ ~ ~

(CORE-3185) Firebird compilation by a non-root user on a POSIX box that was already running a Firebird server would encounter access conflicts in temporary lock space.

fixed by A. Peshkov

~ ~ ~

(CORE-3166) The script changeMultiConnectMode.sh, for switching from Classic mode to Superclassic on POSIX, was wrongly included in the Superserver installation.

fixed by A. Peshkov

~ ~ ~

(CORE-3150) On Linux, segmentation fault would occur in when gbak was interrupted with Ctrl-C.

fixed by A. Peshkov

~ ~ ~

(CORE-3143) On Linux, segmentation fault could occur when a user interrupted gstat.

fixed by A. Peshkov

~ ~ ~

(CORE-2921) 'make install' would not work in FreeBSD.

fixed by A. Peshkov

~ ~ ~

back to top of page

Windows-only bugs

(CORE-3329) The Windows Administrator was acquiring the RDB$ADMIN role unexpectedly.

fixed by A. Peshkov

~ ~ ~

(CORE-3059) RemoteFileOpenAbility set True on a Windows server would fail.

fixed by D. Yemanov

~ ~ ~

back to top of page

Remote interface/API

(CORE-3248) Improvement: Set unused bytes of varchar values in the message buffer to zero.

implemented by A. Peshkov

~ ~ ~

(CORE-2752) Improvement: Set the SO_KEEPALIVE option on the client TCP socket.

implemented by D. Yemanov

~ ~ ~

(CORE-3511) Unquoted role names with non-ASCII characters were being upper-cased wrongly when passed in the database parameter buffer (DPB).

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-3389) isc_dsql_exec_immed2 with a zero transaction handle could lead to a BUGCHECK(147).

fixed by V. Khorsun

~ ~ ~

(CORE-3387) The client library could hang indefinitely waiting for a reply packet on a forcibly disconnected server socket.

fixed by D. Yemanov

~ ~ ~

(CORE-3351) The Windows client could put 10054 error messages into firebird.log at connection time.

fixed by V. Khorsun

~ ~ ~

(CORE-3328) The client was writing Unsuccessful detach from database error messages into firebird.log when a database was shut down.

fixed by V. Khorsun

~ ~ ~

(CORE-3220) API function isc_info_svc_get_users was returning error messages in the result cluster.

fixed by A. Peshkov

~ ~ ~

(CORE-3170) The engine could enter an infinite loop if EVENTs were posted but no subscribers existed.

fixed by V. Khorsun

~ ~ ~

(CORE-3119) The remote protocol code related to events processing was causing an endless loop and 100 per cent CPU usage.

fixed by V. Khorsun

~ ~ ~

(CORE-3095) Client would receive an event count of one regardless of how many times in the same transaction the event was posted.

fixed by V. Khorsun

~ ~ ~

back to top of page

Firebird 2.5.0 release

The following bugs were reported as fixed prior to the final 2.5.0 release:

Core engine/API

(CORE-3115) The internal record compression routines exhibited some bugs.

fixed by A. Peshkov, D. Kovalenko

 ~ ~ ~

(CORE-3103) A SELECT statement incurred more non-indexed reads in the third v.2.5 release candidate than the same statement in v.2.1.3.

fixed by D. Yemanov

 ~ ~ ~

(CORE-3101) ALTER DOMAIN was not possible in a database that had been migrated from an earlier version.

fixed by A. dos Santos Fernandes, D. Yemanov

 ~ ~ ~

(CORE-3100) The WAIT mode and lock timeout parameters for the external transaction of EXECUTE STATEMENT were not matched to the corresponding parameters of the local transaction.

fixed by V. Khorsun

 ~ ~ ~

(CORE-3096) A regression introduced with the fix for CORE-2893 caused double processing of nodes when preparing a statement, prompting an abort to occur in the debug build.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-3094) Parameters would not work with NOT IN from a selectable stored procedure.

fixed by A. dos Santos Fernandes

 ~ ~ ~

back to top of page

(CORE-3090) Incorrect LEFT JOIN result using table and derived constant subquery.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-3089) Attempt to run EXECUTE STATEMENT on an external data source failed when the data source was an InterBase 4.1 (ODS 8) database.

fixed by V. Khorsun

 ~ ~ ~

(CORE-3079) Batch inserts were noticeably slowed down if they were all executed in a single transaction and involved triggers that posted events.

fixed by V. Khorsun

~ ~ ~

back to top of page

Server crashes

(CORE-3109) The server would crash when isc_dql_exec_immed3_m() was called for CREATE DATABASE ... in a NULL transaction.

fixed by A. dos Santos Fernandes

 ~ ~ ~

Command-line utilities

gsec

(CORE-3116) The gsec utility was sending its output list of users to stderr instead of stdout.

fixed by A. Peshkov

 ~ ~ ~

back to top of page

Old bugs fixed

The following bugs were reported as fixed during Firebird v.2.5 development:

Core engine/API

(CORE-3034) If a request was cancelled for some reason, such as database shutdown or by a user request, while inserting key into an expression index, it could lead to bugcheck 300 (can't find shared latch).

fixed by V. Khorsun

 ~ ~ ~

(CORE-3016) On disconnect a Fatal lock manager error: invalid lock id (0), errno: 0 could show up in firebird.log.

fixed by V. Khorsun

 ~ ~ ~

(CORE-3015) Various Cannot initialize the shared memory region errors were reported.

fixed by V. Khorsun

 ~ ~ ~

(CORE-3003) New checks for the existence of a SUSPEND statement in a procedure being called via SELECT statement were working properly: if the procedure was called via a SELECT statement and SUSPEND was not present, an error would bethrown, e.g., Procedure ... is not selectable (it does not contain a SUSPEND statement).

However, if the same error condition occurred during a RESTORE, it could cause the restore to fail.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2995) A single error in the status vector was being reported twice.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2993) On a highly loaded system, the fatal lock manager error Invalid lock id (NNN) could occur while working with monitoring tables.

fixed by V. Khorsun, D. Yemanov

 ~ ~ ~

(CORE-2900) Using a request containing an aggregated DISTINCT could cause regular but random memory access violations.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2977) The server was working incorrectly with indexed fields of type DATE in databases with ODS lower than 10.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2965) The ROW_COUNT value returned after a subquery involving a SINGULAR predicate was inconsistent with the rules, viz., ROW_COUNT is meant to count rows affected by an update or delete and should not return non-zero value from subqueries.

fixed by D. Yemanov

 ~ ~ ~

back to top of page

(CORE-2956) Problems with requests processing procedure parameters.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2943) An error would occur during parsing of a recursive query with two recursive parts.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2936) If two consecutive leaf index pages were removed (garbage collected) from an index simultaneously by two different connections, the linked list of sibling pages could be broken, with the sibling pointer at another index page left pointing to the freed index page. When the freed page was allocated again, index corruption would be reported as Wrong page type (expected 7 found N]]).

fixed by V. Khorsun

 ~ ~ ~

(CORE-2916) Error handling was broken in the case of a conversion error occurring during index creation.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2893) An expression within a subquery could be treated as invariant and produce incorrect results.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2879) Sweep could raise the error page 0 is of wrong type (expected 6, found 1).

fixed by V. Khorsun

 ~ ~ ~

(CORE-2876) Unintelligent error handling when using ALTER DATABASE ADD DIFFERENCE FILE could cause the engine to get confused about the backup mode of a database.

fixed by A. Peshkov

 ~ ~ ~

(CORE-2875) Comparing a CHAR column longer than 4096 bytes with a string constant would cause a string right truncation error.

fixed by A. dos Santos Fernandes

 ~ ~ ~

back to top of page

(CORE-2871) If a derived table or a view contained both a left/right join and an ORDER BY clause and the outer query also contained an ORDER BY clause, the outer ORDER BY clause would have no effect.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2858) Memory trashing was possible when raising some exceptions to signal failed security checks.

fixed by C. Valderrama

 ~ ~ ~

(CORE-2856) A non-NULL key in a unique index could not be found when the key was removed.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2833) Changing data that affected an expression index would fail if that data contained references to null date fields.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2826) Join condition would fail for UTF-8 databases.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1089) Selecting from a view that used DISTINCT and LEFT JOIN returned records in the wrong order if the ORDER BY clause did not include columns from the right-side (non-mandatory]]) table.

fixed by D. Yemanov

 ~ ~ ~

(CORE-195) Regression of an old bug, previously fixed in v.1.5.1, whereby a bugcheck 291 (cannnot find back record version) would occur when updating the same record that had already fired an action in a BEFORE UPDATE trigger. The regression that was reintroduced in v.2.0 was less destructive, insofar as it affected only the record that was physically first in the table.

fixed by A. Peshkov

 ~ ~ ~

(CORE-2822) The error no current row for fetch operation was being thrown when a subquery included a non-trivial derived table.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2820) Queries with PLAN ORDER were exhibiting small memory leaks as a side effect of an earlier, major fix.

fixed by V. Khorsun

 ~ ~ ~

back to top of page

(CORE-2815) Tidy-up of a logic condition that could cause the page inventory page to be marked for change after it was already changed.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2785) An improperly handled BLOB transliteration problem showed up under specific conditions, viz., where an input argument string in single-byte Cyrillic text, for storing as COMMENT with an object definition, overstepped the maximum 64 KB size of a non-initial BLOB segment when transliterated. Its surplus bytes were causing an immediate transliteration error instead of being deferred for inclusion in the subsequent chunk, as they should have been.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2783) An access violation would occur when a recursive query was used as a subquery in the SELECT list and its result was specified as an ORDER BY criterion.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2730) A bus error could occur when working with DB_KEY on RISC machines: when casting from a literal (which has no alignment requirements) to db_key, alignment is necessary at the QWORD boundary and should have been enforced.

fixed by A. Peshkov

 ~ ~ ~

(CORE-2722)

Storage of a malformed blob was being allowed when copying from a blob with NONE/OCTETS character set.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2660) COUNT(*) would incorrectly return 0 when a match was not found for an outer join condition. Now it correctly returns NULL.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2659) The query plan for an outer join involving complex views could be sub-optimal, by not making use of an available index.

fixed by D. Yemanov

 ~ ~ ~

back to top of page

(CORE-2640) Under some conditions, the lock manager could fail to detect a regular deadlock and cause the server to hang.

fixed by V. Khorsun, D. Yemanov

 ~ ~ ~

(CORE-2635) A unique index could be corrupted at level 1 if it contained a lot of NULL keys.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2632) Unexpected Invalid BLOB ID errors could occur when working with the monitoring tables.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2616) Error page <N> is of wrong type (expected 7, found 5]]) could occur under load, giving the impression that something had corrupted the database. On restart, there would be no evidence of corruption.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2608) On latter versions of Windows (64-bit XP or later, 32-bit Vista or later), when Firebird is working with large databases, the operating system dedicates all RAM to the file system cache and stops responding. Windows may also crash. It is a documented issue. For Firebird, it has been addressed by implementing a new parameter, FileSystemCacheSize in firebird.conf to control the amount of RAM used for file system caching.

fixed by N. Samofatov

 ~ ~ ~

(CORE-2602) Attachments using character set NONE could fail to read from the monitoring tables.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2591) High mutex wait ratio and degraded performance would start to show up after a period of normal performance.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2581 and CORE-2582) Infinity and NAN results from any expressions, including internal and external function calls, were not trapped by the engine as exceptions in some circumstances.

fixed by C. Valderrama

 ~ ~ ~

back to top of page

(CORE-2578) Selecting RDB$DBKEY from a view with more than one table joined would return a conversion error.

fixed by A. dos Santos Fernandes, A Peshkov

 ~ ~ ~

(CORE-2514) An error concerning CreateFile was being reported when space on the 'temp' drive was insufficient.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2422 and CORE-2321) The server was not switching between multiple locations configured in TempDirectories. Instead, the sorting would fail when the first configured temporary directory had insufficient free space. Typically, the user would see a sorted or other query that required a large amount of temp space fail with an error like @@operating system directive write failed. Invalid argument.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2315) Firebird FLOAT support did not conform to the original InterBase specification. According to the IB documentation, a FLOAT value should have a range from 1.175E-38 to 3.402E38. Cross-platform tests proved that the largest value that would not overflow was < 3.4E38.

fixed by W. Oliver

 ~ ~ ~

(CORE-1991) When a UDF was declared with BLOB parameters, the engine was storing null in RDB$FUNCTION_PARAMETERS.RDB$FIELD_LENGTH. This was causing a run-time message length error.

fixed by D. Sibiryakov

 ~ ~ ~

(CORE-1781) The engine would throw a consistency check error when a subquery was ordered by an aggregate function from another context.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2564) Bus errors would be thrown when working with the monitoring tables on RISC machines.

fixed by A. Peshkov

 ~ ~ ~

(CORE-2550) Bus errors would be thrown when working with DB_KEY on big-Endian machines.

fixed by A. Peshkov

 ~ ~ ~

back to top of page

(CORE-2538) PSQL would not allow use of a singleton query result as an input parameter to a stored procedure if the procedure was called using EXECUTE PROCEDURE.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2532) Volume sizes in a multi-volume database were being assigned incorrectly.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2526) The server could be shut down without regard to connections to services.

fixed by A. Peshkov, D. Yemanov

 ~ ~ ~

(CORE-2505) Built-in trigonometric functions could produce NaN and Infinity.

fixed by C. Valderrama

 ~ ~ ~

(CORE-2501) Binary shift functions would give wrong results with negative shift values.

fixed by C. Valderrama

 ~ ~ ~

(CORE-2499) The implementation limit of DISTINCT items was not being enforced, causing incorrect BLR to be generated.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2482) Monitoring tables data collection was unstable when the database was accepting attachments or detachments.

fixed by A. Peshkov

 ~ ~ ~

(CORE-2475)External table data was not visible to Classic sessions other than the first to access the table.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2449) An unexpected "lock conflict" error could be thrown in lieu of the expected exception.

fixed by D. Yemanov

 ~ ~ ~

back to top of page

(CORE-2444) The engine could hang when multiple attachments registered their interest in events simultaneously and free space in the events table became exhausted.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2426) ALTER TABLE was not respecting collations.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2416) Preparing a query with aggregation over a derived table would cause an access violation.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2411) The optimizer would choose a slower PLAN for certain types of query than it would in versions 2.0.4 and 2.1.1. (The bug affected versions 2.0.5 and 2.1.2 as well.)

fixed by D. Yemanov

 ~ ~ ~

(CORE-2397) Dropping more than one index on a table within the same transaction could cause corruption.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2359) Logical multibyte maximum string length was not respected when assigning numbers.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2331) ALTER DOMAIN would result in an invalid RDB$FIELD_SUB_TYPE value being stored.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2272) The server would start returning garbage when killing an events connection attempt.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1971) Set the'fixed and documented evaluation order (always left to right) for the WHERE clause and other predicates.

fixed by D. Yemanov

 ~ ~ ~

back to top of page

(CORE-1346) LPAD() and RPAD() functions hit implementation restrictions when applied to more than one column in a statement.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2356) On Windows the listener process of Classic Server was unable to create the necessary resources after restart if any worker process was present.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2355) Incorrect handling of LOWER/UPPER when result string shrinks in terms of byte length.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2351) It was not possible to create a database whose <file specification> was an alias, even though the alias existed.

fixed by A. Peshkov

 ~ ~ ~

(CORE-2349) The Invalid SQLDA error was being falsely thrown.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2348) More database corruption problems showed up resulting from transaction numbers overflowing 32-bit signed integer.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2340) Bugcheck 258 (page slot not empty) could occur under high concurrent load.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2320) A complex recursive query did not always return all rows.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2313) INF_* functions could invalidate the whole output buffer with isc_info_truncated at the beginning, due to a boundary condition.

fixed by C. Valderrama

 ~ ~ ~

back to top of page

(CORE-2311) A WITH RECURSIVE query could cause memory leakage.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2300) The second evaluation of SUBSTRING() would throw an unexpected arithmetic exception, numeric overflow, or string truncation error.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2289) The wrong name was being reported for the referenced primary key when a foreign key violation occurred during foreign key creation.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2242) The engine was incorrectly populating integer containers in the blob parameter buffer (BPB) with integers in machine-local format, causing errors on Big Endian platforms.

fixed by A. Peshkov

 ~ ~ ~

(CORE-2241) If an ALTER TABLE ALTER COLUMN.. operation was performed on a table in the course of a bulk insert operation, minor index corruption could occur causing subsequent queries to return the wrong number of records. The bug was traced to legacy code in BTR\compress_root().

fixed by V. Khorsun

 ~ ~ ~

(CORE-2230) Input parameters for EXECUTE BLOCK were not being domain-checked.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2186) In the Windows embedded server, fbintl.dll was not being unloaded after the sc_dsql_execute_immediate() during the processing for CREATE DATABASE.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2182) It was not possible to drop an existing UDF whose name was duplicated by the name of a new built-in function.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2154) A request synchronization error would occur when calling isc_dsql_sql_info() with the isc_info_sql_records parameter after the last record had been fetched with EXECUTE PROCEDURE.

fixed by V. Khorsun

 ~ ~ ~

back to top of page

(CORE-2132) Indexed retrieval could not be chosen if a stored procedure call was used in the comparison predicate.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2117) Incorrect ROW_COUNT values were being returned with indexed retrieval and subqueries.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2115) For some long queries the query plan could go missing.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2101) A Bugcheck 249 (pointer page vanished) error would be thrown when an attempt was made to fetch beyond the end-of-stream mark of an open PSQL cursor.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2098) It was not possible to create a view that selected from a global temporary table.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2078) If selective non-indexed predicates were involved in a join, the join plan was not optimized as well as it could be.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2075) Parts of the RDB$DB_KEY of views could be inverted when using outer joins.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2073) Expression indices bug: incorrect result for the inverted Boolean.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2069) Incorrect view expansion when RDB$DB_KEY was used inside a view body.

fixed by A. dos Santos Fernandes

 ~ ~ ~

back to top of page

(CORE-2068) Comparision would return a wrong result with the IN <subquery_expression> operand if the <subquery_expression> argument involved the RDB$DB_KEY.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2067) GROUP BY and RDB$DB_KEY problems.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2066) Conversion of SQL_TEXT / SQL_VARCHAR to SQL_TIMESTAMP / SQL_TIME / SQL_DATE.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2053) Computed expressions could suffer from poor optimization if used inside the RETURNING clause of the INSERT statement.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2045) A v.2.1 regression was picked up, whereby references to non-existent system fields with blr_field were not being resolved to NULL, whereas a parallel change involving blr_fld was exhibiting the proper corrective behaviour.

fixed by dos Santos Fernandes

 ~ ~ ~

(CORE-2044) Incorrect result for UPDATE OR INSERT ... RETURNING OLD and non-nullable columns.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2041) UPDATE OR INSERT with GEN_ID() was causing the generator to step by 3.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2039) Domain-level CHECK constraints were processing NULL values wrongly.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2031) NULL in the first record in a condition on RDB$DB_KEY.

fixed by A. dos Santos Fernandes

 ~ ~ ~

back to top of page

(CORE-2027) The buffer size for ORDER BY expressions involving system fields was being calculated wrongly.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2026) Problem with a read-only marked database.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2008) NOT NULL flag for procedure parameters in the system schema.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2002) A conversion error from a UDF result would leave a memory leak if the result was marked with FREE_IT.

fixed by C. Valderrama

 ~ ~ ~

(CORE-2001) When trying to show a conversion error, the message arithmetic exception or string truncation was sometimes appearing instead.

fixed by C. Valderrama

 ~ ~ ~

(CORE-2000) The Lock Manager could report false deadlocks under high load.

fixed by V. Khorsun

 ~ ~ ~

(CORE-1986) Altering the name of a domain was causing dependencies on the domain to be dropped.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1984) The Lock Manager could falsely report a deadlock if one of the alleged participants was waiting with a permitted timeout.

fixed by V. Khorsun

 ~ ~ ~

(CORE-1980) Sweeper could consume 100% of CPU indefinitely.

fixed by V. Khorsun

 ~ ~ ~

back to top of page

(CORE-1970) Lock conversion denied (215) errors could occur.

fixed by V. Khorsun

 ~ ~ ~

(CORE-1962) The function EXTRACT (MILLISECONDS FROM aTimeStampOrTime) was returning incorrect results.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1958) A Bugcheck 179 (decompression overran buffer) consistency check error would be thrown when attempts were made to update the same record multiple times in a transaction.

fixed by D. Yemanov

 ~ ~ ~

(CORE-1957) Long access control lists (ACLs) were being truncated, causing privileges to disappear.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1943) A statement that aggregated on a RAND() expression would return infinite rows.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1938) Bugcheck 243 (missing pointer page) was being thrown on preparing or executing statements that referred to a table being dropped or recreated by another connection.

fixed by D. Yemanov

 ~ ~ ~

(CORE-1936) The built-in function LOG(base, number) was not checking parameters and would deliver NAN values for out-of-range input instead of excepting.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1914) If a problem occurred during table creation, the database could be left in an inconsistent state.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1812) For some date/time expressions in dialect 1, indexes were not being used when they should have been.

fixed by D. Yemanov

 ~ ~ ~

back to top of page

(CORE-1650) An improbable case was demonstrated whereby something like SELECT GEN_ID(..) FROM RDB$DATABASE with a GROUP BY operation would cause rows to be generated infinitely.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1607) A correlated subquery that depended on a UNION stream would be poorly optimized.

fixed by D. Yemanov

 ~ ~ ~

(CORE-1606) Ability to insert child record if parent record is locked but foreign key target unchanged.

fixed by A. Potapchenko, V. Khorsun

 ~ ~ ~

(CORE-1575) Multiple updates to a table in a single transaction would throw up a serious memory bug.

fixed by D. Yemanov

 ~ ~ ~

(CORE-1544) When a user application created "temporary" stored procedures in run-time for some run-time purpose, the internal generator for the RDB$PROCEDURES.RDB$PROCEDURE_ID column could easily overflow the 32K limit (a signed SMALLINT) in its internal generator and cause a "numeric overflow" exception on trying to create the new stored procedure. The fix wraps around the generated value at the 32K boundary, allowing reuse of existing gaps in the ID numbering. A similar fix was applied to RDB$GENERATORS and RDB$EXCEPTIONS as well.

fixed by D. Yemanov

 ~ ~ ~

(CORE-1343) Simple case and a subquery.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1246) Outer joins with derived tables returned incorrect results.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1245) Outer joins with views returned incorrect results.

fixed by A. dos Santos Fernandes

 ~ ~ ~

back to top of page

(CORE-903) Firebird's behaviour with regard to multiple assignments referring to the same column in the SET clause of an UPDATE statement did not comply with the standard.

fixed by D. Yemanov

 ~ ~ ~

(CORE-501) COALESCE exhibited an optimization problem.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-216) Privileges could be lost if a database contained too many.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1421) SuperServer could not shut down immediately if the shutdown request followed a failed login attempt.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1907) Dropping and adding a domain constraint in the same transaction would leave incorrect dependencies.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1905) Hash sign (#) in filenames in aliases.conf was being handled incorrectly.

fixed by C. Valderrama

 ~ ~ ~

(CORE-1887) Newly created databases had wrong access rights.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1869) Roles granting/revoking logic differed between v.2.0 and v.2.1.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1841) If some VIEW used derived tables and long table names/aliases, it was possible to overflow RDB$VIEW_RELATIONS.RDB$CONTEXT_NAME.

fixed by V. Khorsun

 ~ ~ ~

back to top of page

(CORE-1840) Each DDL execution would cause a small memory leak.

fixed by D. Yemanov

 ~ ~ ~

(CORE-1838) SET STATISTICS INDEX on an index for a GTT could wrongly change the index id by the maximum available number for the database page size.

fixed by V. Khorsun

 ~ ~ ~

(CORE-1830) Possible index corruption with multiple updates of the same record in the same transaction with savepoints being used.

fixed by V. Khorsun

 ~ ~ ~

(CORE-1817) TheRelaxedAliasChecking parameter was having no effect with regard to RDB$DB_KEY.

fixed by V. Khorsun

 ~ ~ ~

(CORE-1811) Parser reacted incorrectly to the unquoted usage of the keyword VALUE.

fixed by D. Yemanov

 ~ ~ ~

(CORE-1798) RDB$DB_KEY was being evaluated as NULL in INSERT ... RETURNING.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1797) OLD/NEW.RDB$DB_KEY returned incorrect result in triggers.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1784) Error with EXECUTE PROCEDURE inside EXECUTE STATEMENT.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1777) Conflicting table reservation specifications were being allowed in the TPB.

fixed by C. Valderrama

 ~ ~ ~

(CORE-1775) Security checking was performing poorly during prepare.

fixed by V. Khorsun

 ~ ~ ~

back to top of page

(CORE-1770) Bugcheck 291 in DDL.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1735) Behavour problem with SET DEFAULT action argument in referential integrity triggers.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1731) Sometimes engine would hang for several minutes, using 1000% CPU load but with no I/O activity.

fixed by V. Khorsun

 ~ ~ ~

(CORE-1730) Problems arose if one of the directories specified in the TempDirectories config setting was not available.

fixed by D. Yemanov

 ~ ~ ~

(CORE-1724) Common table expressions could not be used in computed columns nor in quantified predicates (IN / ANY / ALL).

fixed by V. Khorsun

 ~ ~ ~

(CORE-1694) Bug in CREATE/ALTER database trigger, where comments were in Russian.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1693) Error in EXECUTE STATEMENT inside CONNECT / TRANSACTION START triggers.

fixed by A. dos Santos Fernandes, D. Yemanov

 ~ ~ ~

(CORE-1689) There are <n> dependencies error message shows the wrong count of dependent objects.

fixed by C. Valderrama

 ~ ~ ~

(CORE-1357) DummyPacketInterval mechanism was broken.

fixed by D. Yemanov

 ~ ~ ~

(CORE-1307) Switch -s of fb_inet_server was not being processed correctly.

fixed by A. Peshkov

 ~ ~ ~

(CORE-479) Grants would overwrite previous entries in RDB$SECURITY_CLASSES.

fixed by A. Peshkov

 ~ ~ ~

back to top of page

Server/client crashes

(CORE-3011) The server could hang or crash while monitoring connections that were repeatedly attaching and detaching.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2908) The engine could crash or raise unexpected errors when working with an ODS 8.x database.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2888) A source of memory corruption could cause incorrect query evaluation and could even crash the server.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2576) The server could crash when parsing wrong or truncated BLR.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2455) The server would fail when doing DROP DATABASE right after an error occurred in a statistical function.

fixed by A. Peshkov

 ~ ~ ~

(CORE-2441) The server could crash on executing an UPDATE OR INSERT statement.

fixed by A. Peshkov

 ~ ~ ~

(CORE-2306) Superserver could terminate abnormally when some worker thread failed to start.

fixed by A. Peshkov

 ~ ~ ~

back to top of page

(CORE-2368) An access violation would follow the call to isc_cancel_events() if the event was not found.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2222) Storing a text blob with a transliterating blob filter could cause an access violation in the engine.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2137) A database restore could crash the server when the configuration parameter DummyPacketInterval was set explicitly.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2121) The Client library could crash in the course of an operation involving blobs.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1983) An out-of-memory condition in the operating system would cause an access violation.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1965) The Lock Manager would crash with an invalid lock ID under concurrent DDL load.

fixed by D. Yemanov

 ~ ~ ~

(CORE-1894) Circular dependencies between computed fields would crash the server.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1963) The server could crash on commit when granting/revoking privileges from multiple connections simultaneously.

fixed by D. Yemanov

 ~ ~ ~

(CORE-1506) Server crashes with isc_dsql_execute_immediate() and a zero-length string.

fixed by A. Peshkov

 ~ ~ ~

back to top of page

(CORE-210) The ClassicSserver would crash if the same stored procedure was being altered in two separate processes.

fixed by D. Yemanov

 ~ ~ ~

(CORE-1930) Possible server crash if procedure was altered to have no outputs and dependent procedures were not recompiled.

fixed by V. Khorsun

 ~ ~ ~

(CORE-1919) Memory corruptions in EXECUTE STATEMENT could crash the server.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1884) Random crashes using stored procedures with expressions as default values for input parameters.

fixed by V. Khorsun

 ~ ~ ~

(CORE-1839) Server could crash when sorting by a field that was calculated using a recursive CTE.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1793) Server crashes at prepare of query with unused parameterized CTE.

fixed by V. Khorsun

 ~ ~ ~

(CORE-1512) Server crashes due to the wrong parsing of the DEFAULT clause.

fixed by D. Yemanov

 ~ ~ ~

back to top of page

Database monitoring/administration

(CORE-2209) Monitoring requests in high load conditions could become very slow and even block other activity during that time.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2171) The column MON$CALLER_ID of table MON$CALL_STACK was reporting invalid IDs.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2017) I/O statistics for stored procedures were not being kept account of in the monitoring tables.

fixed by D. Yemanov

 ~ ~ ~

(CORE-1944) On Big Endian platforms, the monitoring tables contained wrong data.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1890) Database monitoring process could hang under high load.

fixed by D. Yemanov

 ~ ~ ~

(CORE-1881) Database monitoring could crash the server or badly affect its page locking logic.

fixed by D. Yemanov

 ~ ~ ~

(CORE-1728) Database monitoring would not work after a fresh Linux install.

fixed by A. Peshkov

 ~ ~ ~

back to top of page

Data Manipulation Language

(CORE-1910) Invalid fields were accepted in the insert clause for MERGE.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1859) Arithmetic overflow or division by zero could occur in MAX() function.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1828) Error with ABS() function in dialect 1.

fixed by A. dos Santos Fernandes

 ~ ~ ~

back to top of page

Command-line utilities

isql

(CORE-2831) Database and user name should not be in the output when a script is extracted.

fixed by C. Valderrama

 ~ ~ ~

(CORE-2741) Metadata extract would misinterpret the DDL of a CHECK constraint if the CHECK keyword was in any character mix other than all lower case or all upper case.

fixed by C. Valderrama

 ~ ~ ~

(CORE-915) The metadata extract tools of isql were doubling line breaks in PSQL body code in cases where the PSQL body had been written in a third-party Windows text editor.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2408) The isql metadata extraction process was placing default values for procedure parameters before the NOT NULL and COLLATE flags.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2407) The isql metadata extraction process was omitting the PAGE_SIZE clause from the CREATE DATABASE statement.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2370) An SQL plan of more than 2048 characters was not printed at all in isql.

fixed by C. Valderrama

 ~ ~ ~

(CORE-2270) When run in a zlogin console, isql would consume all memory and crash.

fixed by J. Swierczynski, A. Peshkov

 ~ ~ ~

(CORE-1891) SHOW VIEW would show nonsense information for view fields with expressions.

fixed by A. dos Santos Fernandes

 ~ ~ ~

back to top of page

(CORE-1875) Errors in scripts with CURRENT_DATE.

fixed by V. Khorsun

 ~ ~ ~

(CORE-1862) Extracted script was unusable with interdependent selectable procedures in FB 2.1.

fixed by C. Valderrama

 ~ ~ ~

(CORE-1782) isql would crash when fetching data for a column having an alias longer than 30 characters.

fixed by D. Yemanov

 ~ ~ ~

(CORE-1749) DDL statement with AUTODDL ON was not showing statistics.

fixed by D. Yemanov

 ~ ~ ~

(CORE-1507) isql linecount facility in scripts goes out of sync after an INPUT command.

fixed by C. Valderrama

 ~ ~ ~

(CORE-1363) isql would crash when the string converted from a double was longer than 23 bytes.

fixed by C. Valderrama

 ~ ~ ~

back to top of page

gsec

(CORE-2928) Buffer overflow in gsec.

fixed by A. Peshkov

For reasons unknown, the gsec code copies the value of the password hash to an internal user data structure during a display operation. Since v.2.0, when the newer hash algorithm made the hash longer than previously, the buffer used for storing it could be too short.

This does not create a vulnerability because the hash value does not travel anywhere. It is harmless, anyway: the buffer overflow cannot be exploited because the first, middle and last names are filled immediately after the password.

It is fixed now, thus avoiding having newer versions of glibc detecting this overflow.

(CORE-2528) The gsec utility did not return error codes to the operating system.

fixed by C. Valderrama

 ~ ~ ~

(CORE-1680) gsec DISPLAY was showing only a few of the first users when the security databases contained more than 50 users.

fixed by A. Peshkov

 ~ ~ ~

back to top of page

gbak

(CORE-2914) Restoring a database having an expression index referencing a non-existent UDF would cause the server to crash.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2793) The binary representation of a backup file was demonstrated to be not consistent from one backup to another, when tested over multiple backup/restore cycles of the same data. It was reported as applicable to all gbak versions since v.1.5.4. To date, it has been fixed here, in v.2.1.4 and in the v.3.0 alpha.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2634) A regression had arisen whereby performance dropped when restoring a database with a large amount of metadata.

fixed by A. Peshkov

 ~ ~ ~

(CORE-2291) The error Bugcheck 284 (cannot restore singleton select datail) would be thrown on bad trigger code involving [FOR] SELECT, when the engine should have been detecting the error and throwing the proper exception.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2285) A database with a large number of grants could become corrupted after a ackup/restore.

fixed by A. Peshkov

 ~ ~ ~

(CORE-2245) A database with long exception messages defined would exhibit errors when being restored from a backup.

fixed by C. Valderrama

 ~ ~ ~

(CORE-2223) gbak was encountering several bugs when operating on the access control lists (ACLs) that store SQL privileges.

fixed by A. Peshkov

~ ~ ~

(CORE-2214) Security classes were being restored incorrectly.

fixed by A. dos Santos Fernandes

~ ~ ~

(CORE-1911) Backup and restore were not thread-safe when using the Services API.

fixed by C. Valderrama

~ ~ ~

(CORE-1843) gbak with Service Manager would not allow paths with spaces.

fixed by A. Peshkov

~ ~ ~

(CORE-1703) Delays/lockups when the gbak output was redirected to another process.

fixed by D. Yemanov

~ ~ ~

back to top of page

nBackup

(CORE-2750) Physical backup could not restart operations after the explicit difference file had been dropped.

fixed by C. Valderrama

~ ~ ~

(CORE-2648) nBackup's delta file was not respecting the Forced Writes database setting.

fixed by V. Khorsun

~ ~ ~

(CORE-2266) nBackup's database locking was not working correctly, causing database file growth to continue when database writes should have been in suspension.

fixed by V. Khorsun

~ ~ ~

(CORE-1696) Deadlock would occur in the Lock Manager when the nBackup utility was in use.

fixed by R. Simakov

 ~ ~ ~

(CORE-1876) Incremental backups with nBackup were broken in v.2.1.

fixed by N. Samofatov

 ~ ~ ~

back to top of page

gfix

(CORE-2846) If gfix -shut <mode> -attach <timeout> failed after the specified timeout due to connections being still active, connection to the database would become impossible.

fixed by D. Yemanov

 ~ ~ ~

(CORE-97) A lock on the database file was being left by gfix -shut -force, preventing a subsequent restore.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2268) Non-valid transaction numbers would cause gfix to throw BUGCHECK errors.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2271) The gfix utility had a legacy bug that exhibited itself during the database validation/repair routines on large databases. The privilege level of the user running these routines was being checked too late in the operation, thus allowing a non-privileged user (i.e., not SYSDBA or Owner) to start a validation operation. Once the privilege check occurred, the database validation could halt in mid-operation and thus be left unfinished, resulting in logical corruption that might not have been there otherwise.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1961) A Bugcheck 210 (page in use during flush) consistency check error would be thrown during database validation.

fixed by D. Yemanov, R. Simakov

 ~ ~ ~

back to top of page

gstat

(CORE-2519) Output from gstat was incorrect for tables with more than 2 billion records.

fixed by V. Khorsun

 ~ ~ ~

(CORE-1412) Some long-standing bugs in gstat's processing of parameters needed fixing.

fixed by C. Valderrama

 ~ ~ ~

back to top of page

fb_lock_print

(CORE-2598) fb_lock_print -c[onsistency] switch was not working on Windows.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2354) fb_lock_print -ia output was not being flushed to the file between iterations.

fixed by A. Peshkov

 ~ ~ ~

back to top of page

qli query utility for GDML

(CORE-2247) In the qli utility, message and descriptor buffers were not properly aligned.

fixed by A. Peshkov

 ~ ~ ~

back to top of page

Services Manager

(CORE-1982) Simultaneous backups or restores invoked through the Services API could interfere with one another.

fixed by A. dos Santos Fernandes

 ~ ~ ~

Remote interface/API

(CORE-2563) It was possible to shut down the Superserver's main port (3050 by default) by ending a malformed packet of some special format, that would lead to a Denial of Service condition for new incoming connections. This exploit could be used by an unauthenticated client. Reported 15-Jul-2009 by Core Security Technologies.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2437) A buffer overflow could occur on the client when receiving events.

fixed by A. Peshkov

 ~ ~ ~

(CORE-2307) API information requests were returning incomplete values in the results.

fixed by D. Yemanov

 ~ ~ ~

(CORE-2234) Sometimes, terminated worker processes in Classic on Windows were still considered to be alive after termination, due to improper checks on the Firebird server's part. The same bug could cause the Firebird server to misbehave with prolonged deadlocks when under load.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2151) When a temporary directory path had spaces within it, it was (wrongly) being truncated at the rightmost space.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2033) The symbol _Unwind_GetIP in the client library was being left unresolved due to a missing static library linkage.

fixed by A. Peshkov

 ~ ~ ~

(CORE-2018) Only a single client could access a read-only database.

fixed by V. Khorsun

 ~ ~ ~

(CORE-1972) A non-SYSDBA user was able to change the Forced Writes mode of any database, along with several other database characteristics that should be restricted to the SYSDBA. This long-standing, legacy loophole in the handling of DPB parameters could lead to database corruptions or give ordinary users access to SYSDBA-only operations. The changes could affect several existing applications, database tools and connectivity layers (drivers, components). Same fix was backported to v.2.1.2 and v.2.0.5.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1868) Client library was crashing inside isc_dsql_free_statement().

fixed by A. Peshkov

 ~ ~ ~

back to top of page

(CORE-1763) The client library was not setting the options SO_KEEPALIVE nor TCP_NODELAY for the socket at connection.

fixed by V. Khorsun

 ~ ~ ~

(CORE-1755 and CORE-1756). A couple of crash scenarios could occur in isc_start_transaction().

fixed by D. Kovalenko, A. Peshkov

 ~ ~ ~

(CORE-1726) Failure in isc_service_start().

fixed by A. Peshkov

 ~ ~ ~

(CORE-1079) Every attach of fbclient/fbembed library to the host process would leak 64KB of memory.

fixed by A. Peshkov

 ~ ~ ~

back to top of page

Security

(CORE-2657) A poorly documented SPB tag provided the undesirable ability to pass an arbitrary trusted user name to a service and enable that user to acquire any permissions, including those of SYSDBA.

fixed by A. Peshkov

 ~ ~ ~

(CORE-2087) When the configuration parameter RemoteBindAddress specified a hostname instead of an IP address, or specified a non-existent IP address, it would be silently ignored and the server would bind to all interfaces, without any notification in firebird.log or the system log. This was considered a potential security risk if the system had ports open to the Internet. Now, an invalid or unavailable IP address will be resolved to localhost (127.0.0.1).

fixed by A. Peshkov

 ~ ~ ~

(CORE-2055) Buffer overflow in Firebird client library.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1845) Some standard calls would show the server installation directory to regular users.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1810) Some issues appeared concerning usernames with '.' characters.

fixed by A. Peshkov

 ~ ~ ~

back to top of page

International language support

(CORE-2642) An obscure ICU initialization problem on Windows could cause misbehaviour in a multi-threaded environment.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2607) Introducer syntax(_charset) problems were occurring when it was used in association with monitoring queries or PSQL modules.

For information about the problem and a workaround provided for it, see the topic Introducer Syntax usage under Other improvements in the international language support chapter.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2361) String truncation was occurring when reading a character set 8859_1 Spanish column using isc_dsql_fetch() with a UTF8 connection.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2227) Problems were occurring in some environments when creating triggers that referred to column names with accented characters.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-2123) Problem with getting UNICODE_FSS data in the CP943C connection charset.

fixed by A. dos Santos Fernandes, D. Kovalenko

 ~ ~ ~

(CORE-2122) Translation of large text blobs between UNICODE_FSS / UTF8 and other charsets.

fixed by A. dos Santos Fernandes, D. Kovalenko

 ~ ~ ~

back to top of page

(CORE-2095) Bug in CVJIS_eucj_to_unicode().

fixed by A. dos Santos Fernandes, D. Kovalenko

 ~ ~ ~

(CORE-2019) A UTF-8 conversion error (string truncation) was being thrown unexpectedly.

fixed by dos Santos Fernandes

 ~ ~ ~

(CORE-1989) A column with UNICODE_CI collation for UTF8 could not be used in a foreign key constraint.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1927) The procedure sp_register_character_set could generate a negative value for RDB$CHARACTER_SETS.RDB$CHARACTER_SET_ID.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1690) A condition in tables with UTF8 text was causing the error Arithmetic exception, numeric overflow, or string truncation.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1596) Bug in CsConvert::convert.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1432) The collation attribute of columns was not being propagated between record formats.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-316) A database with multi-byte characters in its name could not be opened.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1802) Some issues were reported concerning maximum key size using the PXW_CSY collation.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1774) A problem appeared with collate ES_ES_CI_AI.

fixed by A. dos Santos Fernandes

 ~ ~ ~

(CORE-1254) Problem with DISTINCT and insensitive collations.

fixed by A. dos Santos Fernandes

 ~ ~ ~

back to top of page

POSIX-specific

(CORE-3067) On 64-bit POSIX, except HP-UX, objects were not being unmapped when shared memory was closed.

The 64-bit pointer had been masked with a 32-bit mask, which turned out to be a really bad idea: with Object ==0x7FAB12345678 and page size == 4K, the upper bits were lost and the starting address would be at 0x12345000 instead of the intended 0x7FAB12345000.

fixed by A. Peshkov

 ~ ~ ~

(CORE-3019) On a recent version of Gentoo Linux, an attempt to source the function library /etc/init.d/functions.sh would fail with the message * ERROR: firebird does not have a start function and neither Superserver nor Superclassic would start.

fixed by A. Peshkov

 ~ ~ ~

(CORE-3001) Install was failing to create the firebird user and group.

fixed by A. Peshkov

 ~ ~ ~

(CORE-2919) The Linux installation script was ignoring non-standard ports.

fixed by A. Peshkov

 ~ ~ ~

(CORE-2845) The build process on Solaris would stop with the message: need to use SFIO. On the whole, Solaris 10 no longer requires SFIO - the 64-bit builds do not suffer the issue with the maximum 255 file descriptors and there are simple work-arounds for 32-bit builds. See this article for details.

However, the issue still affects Solaris 10 3/05 through Solaris 10 11/06. Some patches are needed to correct the problem.

For the time being, the easiest solution is to leave the define in the code, but comment it with the relevant information for Solaris 10. The define can be removed if the patches have been applied or the user is running an unaffected version of Solaris 10.

Updated information concerning this issue has been inserted into common.h. Anyone building 32-bit Firebird on Solaris 10 will have to make an informed decision according to the version and build/patch level of Solaris before uncommenting the SFIO define.

fixed by P. Beach

 ~ ~ ~

back to top of page

(CORE-2814) On SPARC, the server was crashing in the routine map_sort_data with a bus error.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2601) A lot of the standard configure switches for fine-tuning the installation directories on POSIX platforms do not work for Firebird.

It was close to impossible to make the standard GNU switches work without changing the defaults for them, a rigmarole that is far from obvious or easy. Instead, a set of new switches for the configure has been added to enable fine-level configuration of the locations of Firebird's files.

The switches are listed in the Installation chapter, in the topic Dedicated Firebird switches for 'configure'.

fixed by A. Peshkoff

 ~ ~ ~

(CORE-2572) Locks of type LCK_page_space were being processed incorrectly on big-endian machines.

fixed by A. Peshkov

 ~ ~ ~

(CORE-2221) On POSIX platforms, any attachment to any database would fail after the access rights for security2.fdb were modified from 0660 to 0666.

fixed by P. Beach, A. Peshkov

 ~ ~ ~

(CORE-2093) SuperServer startup would fail on Solaris 64-bit.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1909) Garbage in firebird.log on linux/amd64.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1885) CREATE COLLATION caused lost connection under Posix.

fixed by A. dos Santos Fernandes, A. Peshkov

 ~ ~ ~

back to top of page

(CORE-1854) Value of CURRENT_USER might not be in upper case when using Unix OS authentication.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1826) changeRunUser.sh and restoreRootRunUser.sh scripts were not changing the run user in the init.d scripts.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1818) Temporary files used for temporary page spaces were not deleted after use on Posix platforms.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1807) Server was being assigned to a non-canonical port after abnormal termination.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1766) Owner and group of isc_monitor1 file on Linux classic server were incorrect.

fixed by A. Peshkov

 ~ ~ ~

(CORE-1671) atexit() calls in client libraries cause segfaults if the libraries were used in dl opened (?) modules.

fixed by A. Peshkov

 ~ ~ ~

back to top of page

Windows-specific

(CORE-2769) On heavily loaded Windows systems, local connect (XNET) could fail due to the client timing out while waiting for the server to set the xnet_response_event. To help with this problem, the ConnectionTimeout parameter in firebird.conf has been activated for XNET connections.

Improvement made by D. Yemanov

 ~ ~ ~

(CORE-2108) When using the Windows local protocol (XNET), the next available map number was calculated incorrectly, thus allowing the server to try to reuse a map number that already existed. If the new map's timestamp was equal to the timestamp of the pre-existing map, it would cause the get_free_slot() function to fail.

fixed by V. Khorsun

 ~ ~ ~

(CORE-2107) Establishing a TCP\IP connection to the Windows Classic Server could fail under high load.

fixed by V. Khorsun

 ~ ~ ~

(CORE-1923) Successful execution of instsvc.exe remove was returning 1 as its completion code, instead of 0.

fixed by D. Yemanov

 ~ ~ ~

(CORE-1820) Setup program was failing to detect a running server.

fixed by P. Reeves, D. Yemanov

 ~ ~ ~

(CORE-1105, CORE-1390, CORE-1566 & CORE-1639) Aliases would not work properly for XNET connections.

fixed by D. Yemanov

 ~ ~ ~

back to top of page

MacOSX-specific

(CORE-2065) The MacOSX installation package was in violation of platform rules by not including the client library in the dynamic loader search paths.

fixed by P. Beach

 ~ ~ ~

Miscellaneous bugs

(CORE-2282) Truncating UDFs were broken for negative numbers below -1.

fixed by C. Valderrama

 ~ ~ ~

(CORE-2281) Rounding UDFs were broken for negative numbers.

fixed by C. Valderrama

 ~ ~ ~

back to top of page
<< Platform ports | Firebird 2.5 Release Notes | Firebird 2.5 project teams >>