- IMPROVEMENT: The statement CREATE OR ALTER USER SYSDBA PASSWORD <password> can now be used to initialize an empty securityN.fdb security - IMPROVEMENT: Nesting of keys in a plug-in configuration was enabled. - IMPROVEMENT: For URL-like connection strings on Windows, restriction of lookup to IPv4 only was enabled. - IMPROVEMENT: Line and column numbers (location context) are now provided for runtime errors raised inside EXECUTE BLOCK. - IMPROVEMENT: A switch was added to build POSIX binaries with a built-in libtommath library. - IMPROVEMENT: gbak now returns a non-zero result code when restore fails on creating and activating a deferred user index. - IMPROVEMENT: Implicit conversion between Boolean and string is now done automatically when a string for 'true' or 'false' is used as a value in an expression. Case-insensitive. Not valid when used with a Boolean operator—IS, NOT, AND or OR; not available for UNKNOWN. * Bug Fixex:# Core Engine: - XpbBuilder was failing to create a new TPB.- LEFT JOIN would incorrectly push a UDF into the inner stream, causing wrong results.- A user-defined collation failed to work with BLOBs.- An assertion could occur in createDatabase() when doing the overwrite check.- A subquery in the insert list expression was ignoring changes made earlier in the same executable block.- A database could suffer partial corruption in the “use all space” (no-reserve) mode.- BUGCHECK 165 (cannot find tip page)- Cascade deletion in a self-referencing table could raise the error “no current record for fetch operation”.- A “Data type unknown” error was occurring with the LIST operation.- Random “invalid transaction handle” errors were being returned from the engine.- ON UPDATE CASCADE was failing for a self-referencing Foreign Key.- REGRESSION: Performance was degraded when bulk inserting into a table with indices.- Trying to encrypt a database in the absence of the the appropriate key could corrupt it.- A small memory leak could occur when an empty result set was returned.- Granting of privileges to views was broken.- Parameters with multi-byte character sets were being allowed to exceed the length limit for VARCHAR fields.- Expression index could become inconsistent if CREATE INDEX was interrupted after b-tree creation but before committing.- Nested OR conditions could lead to incorrest results.- Consistency between roles and privileges in GRANT syntax needed improving in accordance with the SQL standard.- An attempt to execute a SELECT statement using isc_dsql_execute_immediate() would produce the wrong error message.- Affected rows were not being counted for some update operations with views.- IN/ANY/ALL predicates could cause sub-optimal execution (late filtering) of joins.- Unaligned memory access in MET_format() would cause segfault on big-endian machines.- 32-bit locks on big-endian systems would lead to deadlock.- EXECUTE STATEMENT would throw a BLR error if the number of output parameters exceeded 256.- An incorrect result set (missing records) could be returned by an ORDER plan query navigating on a descending index.- Authentication was ending with first plug-in that had the user but would fail there, instead of continuing with the next plug-in.- SELECT WITH LOCK could raise unexpected update conflict errors under concurrent load.- A database could get decrypted after changing a couple of bytes in the database header without 'agreement' from the crypt plug-in.- POST_EVENT was not working with the Fb 3.0 server and client.- The operator IS exhibited a precedence problem.- REGRESSION: line/column numbering in error messages were being garbled if alias.name syntax was used in the offending statement.- The error “no current record to fetch” was thrown if some record was to be deleted both by the statement itself and by some trigger fired during statement execution.- An expression index could be created while inserts into the table were in progress.# Server Crashes:- Access violation from certain UDFs would cause the server to crash.# API/Remote Interface:- Race conditions could arise when initializing wire compression.- A network protocol error was exhibited when performing a callback to a client for the database crypt key.- Some SPB parameters were failing in FB 3.0.- Transaction id tags for the Services API did not support new 48-bit transaction ids.- The Services API would not work with non-ASCII database names.# Utilities - fbsvcmgr was not producing any error when it attempted to shut down a database without a specified timeout (prp_force_shutdown N).- Restore could hang if the database contained more than 4 billion records.- Validation could read after the end-of-file when operating on a multi-file database.* isql:- The BLOBVIEW command was causing isql to hang.- isql would leak memory when SHOW GRANTS was used on a new, empty database.- isql -[e]X[tract_metadata] output was omitting double quotes for the COLLATE <collation> clause of a CREATE DOMAIN statement when <collation> was for any non-ascii character set.- isql -[e]X[tract_metadata] was not exporting explicitly defined names for NOT NULL constraints for Dialect 3 databases.- isql -[e]X[tract_metadata] could crash while exporting an exception with message text length longer than 127 bytes.- isql -[e]X[tract_metadata] could generate invalid GRANT USAGE statements for domains.* Monitoring and Trace:- A string truncation error would occur while selecting from the MON$ tables if some user-defined context variable was longer than 255 bytes.- A trace session could fully utilize a single CPU core.* nBackup:- A database located on a raw device could not be unlocked from an nBackup-locked state.* Builds - Databases created during the process of the Windows builds were owned by a Windows administrator, not SYSDBA.- Firebird failed to build with USE_VALGRIND* POSIX-Specific - A segfault could occur when op_que_events was used on a port that was not prepared for events processing.- A segfault could occur if an attachment was closed while requests were still open.- Incorrect use of the system call readlink().