Bugs fixed Firebird 2.5.1 release

<< Firebird 2.5.2 release | Firebird 2.5.3 Release Notes | Firebird 2.5.0 release >>

Bugs fixed


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

~ ~ ~

(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

~ ~ ~

(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

~ ~ ~

(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

~ ~ ~

(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

~ ~ ~

(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

~ ~ ~

(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

~ ~ ~

(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

~ ~ ~

(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

~ ~ ~

(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.2 release | Firebird 2.5.3 Release Notes | Firebird 2.5.0 release >>