Red Database 3.0 - v3.0.9

July 1, 2022, 5:25 p.m.

Changelog

Improvements:

  • A "verbose" option has been added to the replication configuration to log detailed information about asynchronous replication operation. RS-70819.
  • LDAP error diagnostics have been improved.
  • The stability of gfix is improved. RS-71591.

Changes:

  • DefaultDbCachePages default value increased to 1024 for Classic/SuperClassic and to 32768 for Super RS-69307
  • Now you do not have to specify option -B O[VERWRITE] in gbak when backing up to FIFO RS-43334
  • Temporary tables file is now deleted immediately after closing connections which used temporary tables RS-67781
  • Maximum length of ISQL error text increased to 8192 characters. RS-71232.
  • Default length of context variables is increased to 8192 characters. RS-71426.

Added:

  • Ability to connect to ActiveDirectory with an "as is" user name (bind method) without using a service account (LDAPUserDn). RS-71303.
  • New LDAPDomain parameter in firebird.conf that allows setting the domain for user authentication in ActiveDirectory and the base for user lookups. RS-71303.
  • GSTAT outputs the transaction difference, which determines whether garbage collection is needed RS-56624
  • "rotate_log" parameter in trace to rotate log when it reaches "max_log_size" RS-66090
  • Support for locking users in Legacy Authentication RS-67826 Note: security database update from previous versions 3.0 with security_database_3.0.9.sql script
  • Ability to change COLLATE for "ALTER TABLE <table> ALTER <column> COLLATE <collate>" field RS-67405
  • Different connections can now use different temporary table files to reduce their sprawl (SeparateTempTableFiles parameter in firebird.conf) RS-67781

FBJava has been updated to 1.1.18:

  • ASM library required for indexing files stored in BLOBs has been added to the distribution. RS-82611.
  • Jaybird driver updated to version 3.0.31. RS-74811.
  • Unused jna-platform-4.5.0.jar and xml-apis-1.0.b2.jar libraries were removed from the distribution. RS-74811.
  • Fixed passing an exception to the client when initializing the JVM
  • Debug symbols for FBJava have been added to the distribution. RS-71111.
  • Blank lines are not printed to stdout and stderr when it's disabled by "disable_output" option RS-66433
  • The existence of configuration file is checked before reading options RS-67445
  • Remove libraries not used by plugin RS-68297

Fixes:

  • When an exception is handled in the gstat utility, the correct return code is set. RS-76712.
  • Enterprise edition installer now uses components. Fixed Windows compatibility for installers of different editions. RS-45574.
  • If there are errors in replmgr, output them when the utility terminates. RS-70819.
  • Status-vector is used to report some replication errors. RS-70819.
  • Crash on timer release during server shutdown. RS-74745.
  • Time() is used instead of a timer when disabling idle LDAP connections, which should eliminate the crash during a server shutdown. RS-73290.
  • DWARF-2 debug information format is used on ARM64 architecture.
  • The "delete" operators are not declared as "inline" as this can cause memory corruption.
  • After multifactor authentication and policy handling, cached connections to the security database are terminated. RS-74745.
  • When searching for roles in LDAP, the brackets in the user's DN are replaced by their ASCII codes. RS-35932.
  • LDAP session initialization is performed in the critical section. This should eliminate a possible crash during multi-threaded initialization. RS-70970.
  • Errors in "ON DISCONNECT" triggers are output to trace if the log_errors parameter is set in its configuration.
  • Changed the mechanism of binding sort buffers to their owners. That should fix the memory corruption when releasing sorts. RS-73597.
  • Temporary page space release is done earlier to avoid memory corruption. RS-71697.
  • Server crash when LDAP_ATTR is called with empty LDAPServer parameter. RS-73851.
  • Add dependency between pages of a large record to avoid integrity violations when the server crashes.
  • Determining the length of a line with the server version derived from isc_info_firebird_version when the line is longer than 127 bytes. RS-72200.
  • Release page lock after a failed read. RS-72076.
  • Variable dbbStats is incremented only for superserver. RS-72067.
  • If the libtinfo library is missing, the installer will display a warning rather than terminate with an error. RS-72881.
  • Trace improperly counted the memory used for sorts. RS-67319.
  • "Invalid clumplet buffer structure" error on binary trace fetch. RS-71982.
  • In SuperServer, page buffer size change was logged incorrectly if there were active connections. RS-70119.
  • LDAP server disconnect timer is started only for actions performed after a connection is established. RS-73290.
  • The index node is inserted in the correct position on the nonleaf level after a page split on the level below. RS-73437.
  • The maximum input string size for regexp_substr is increased. RS-73363.
  • The isc_dpb_version2 tag is used for the DPB buffer to get away from the 255 byte limit for isb_dpb_auth_block. RS-73189.
  • Now on Windows, isql works in non-interactive mode when it retrieves data from stdin. RS-35237.
  • Server crash after fixing RS-73189 because of uninitialized variable.
  • Server crash when reading a file blob. RS-70752.
  • Server crash during server shutdown. RS-69835.
  • Server crash when lock table reached 2Gb limit. RS-67930
  • Sorting did not work when using HASH JOIN and CROSS JOIN for joins under FOR FIRST ROWS strategy. RS-69855 RS-70616
  • Sorting did not work correctly in some cases when using a simple UNION for a FOR FIRST ROWS strategy. RS-70005
  • Disconnecting the server from a security database that does not have multifactor tables caused an error. CORE-6339.
  • Incorrect header size of the last chunk of a large record was detected. RS-53938.
  • Installer may have migrated configuration files incorrectly when upgrading. RS-70351 RS-70348 RS-70233
  • Incorrect query plan on repeated runs RS-69343
  • Bug when changing LDAP password RS-69634
  • LDAP role search did not work if username has brackets RS-35932
  • Using standard sorting in union queries containing evaluated expressions RS-68233
  • Invalid parsing of regular expression when repeating group RS-69273
  • Legacy users remained inactive (PLG$USERS.PLG$ACTIVE) after security.fdb update RS-67826
  • Compatibility with security.fdb for versions <3.0.9 RS-67826
  • Triggers on system tables remained after restore backup from 2.6
  • Trash values in trace stats RS-67240
  • Server crash when creating UDR function during asynchronous replication RS-68652
  • Server crash on LDAP authentication error RS-68555
  • Server crash on error during multithreaded backup RS-68436
  • Possible omissions or duplicate PRIVILEGES_CHANGE entries in audit file RS-21230
  • Failure to display error message when restore incomplete (corrupted) backup file via services RS-64379
  • Audit ignoring when logging fails RS-41387
  • Invalid "sorting memory usage" trace output RS-67319
  • Temporary files grow while creating, filling and deleting several temporary tables
  • Fixed default archive command (log_archive_command) for Linux to skip empty archive files RS-49790
  • Possible server crash if MAC address cannot be determined
  • If there are multiple warnings in a message, they were not displayed
  • Ability to restore backup from FIFO RS-43334
  • Optimizer regression when converting LEFT JOIN to INNER RS-68100

Ported from Firebird:

  • Make it possible to avoid fbclient dependency in pascal programs using firebird.pas. FB-7194.
  • Avoid races in mapping clear delivery init/fini under high load.
  • Avoid reporting an error if it happens due to process termination (provider shutdown). The logic generally follows the one inside fbsvcmgr.
  • Segfault in linux CS after successful detach from database. FB-7197
  • Incorrect error message with isc_sql_interprete(). FB-7128.
  • Wrong detection of must-be-delimited user names. FB-7106.
  • Mapping error when server tries to use mapping rules from database in full shutdown state. FB-7121.
  • Firebird engine randomly fails when delivering mapping clear to other processes. FB-7135.
  • Invalid state of mapping cache after replacement of database. FB-7122.
  • Bad plan (HASH instead of JOIN) is chosen for some inner joins. FB-7137.
  • Partially backported for FB-7138: Problems accessing database, copied from another host. FB-7138.
  • Services manager breaks long lines into 1023 bytes portions when using isc_info_svc_line in Service::query(). FB-7141.
  • Indexed STARTING WITH execution is very slow with UNICODE collation. FB-6872.
  • Improve indexed lookup speed of strings when the last keys characters are part of collated contractions. FB-7093.
  • Incorrect indexed lookup of strings when the last keys characters are part of collated contractions and there is multi-segment insensitive descending index. FB-7094.
  • Wrong select result in case of special sort character. FB-7140.
  • Update zlib to 1.2.12. FB-7161.
  • Serious issue with SYSDBA user with Legacy_Auth in Windows Installer. FB-7158.
  • Attempt to fix recent crashes in oltp-emul test.
  • Incorrect error "Invalid token. Malformed string." with union + blob + non utf8 varchar. FB-7176.
  • Problems with use of big timeout (or no timeout at all) in trace service. FB-7147.
  • gbak output not flushing. FB-7184.
  • Fixed FB-7056 (Fetching from a scrollable cursor may overwrite user-specified buffer and corrupt memory) and FB-7057 (Client-side positioned updates work wrongly with scrollable cursors) with a single shot
  • Deadlock when using not initialized security database. FB-7067.
  • Creating unique constraints on MacOS fails on larger tables. FB-7084.
  • Fix MacOS UDR and Legacy_UserManager plugins not working due to not exported entry point. FB-7088.
  • Content of DB file can be overwritten with zero characters in some (rare) cases. FB-7109.
  • Avoid unload of plugins in MacOS due to problematic reload of them. FB-7112.
  • Server hangs in trace code when it tries to update mapping cache. FB-7115.
  • FB service hangs and can not be stopped after several 'DELETE FROM MON$STATEMENTS' being issued in order to stop ES/EDS which waits record for updating. FB-7103.
  • Database statistics service could not find existing table(s). FB-7119.
  • Deadlock when execute test for CORE-4337. FB-7060
  • Wrong message when user has no access to /tmp/firebird, changes due to older c++ dialect. FB-7043.
  • Status vector for ES() is unstable if another execute block with correct statement was executed before. Affects only LINUX builds in Classic mode. FB-6966.
  • Wrong message when user has no access to /tmp/firebird. FB-7043.
  • Fixed my 6-years old but unnoticed bug with circular strings buffer.
  • Fixes for 64-bit android build.
  • Data page N {sequence M} marked as secondary but contains primary record versions in table T. #7044
  • gbak -b failed with "invalid transaction handle (expecting explicit transaction start)". #7031
  • Scroll cursor server crash. #7034
  • Unexpected messages 'Missing security context ...' in firebird.log. #7036
  • Exception "too few key columns found for index" raises when attempt to create table with PK and immediatelly drop this PK within the same transaction. The situation when the record is not found in RDB$INDICES was not handled correctly in create_index DFW. #5173 #3886 #5082
  • Fixes for fbtrace log rotation #6922
  • Postfix for #6987 - DATEDIFF does not support fractional value for MILLISECOND
  • Add AF_INET_* support for FreeBSD
  • Fixed #6967: PIO_read / PIO_write may falsely return success in a case when block was read / written incompletely
  • Backport improvement #6957: Add database creation time to the output of ISQL's command SHOW DATABASE
  • Fixed bug #6949: On windows, engine may hung on initialization when another instance with different lock directory is running
  • Fixed #1210: I/O error during "open" operation for file "/tmp/firebird/fb_trace_XXXXXX"
  • Fixed bug #6984: Committed transaction could be marked as dead in some very special and rare case.
  • Fix #6987 - DATEDIFF does not support fractional value for MILLISECOND.