Complete In Firebird 5.0 Release Candidate 2
- Allow to configure Firebird in POSIX using relative directories with options
--with-fb -
#7918by Adriano dos Santos Fernandes
- Add backward compatibility option that disables joins transformation
-
#7910by Dmitry Yemanov
For more details, see [rnfb50-config-outer-join-conversion].
- Resolve performance issue with time zones
-
#7854by Adriano dos Santos Fernandes, Vlad Khorsun
- Resolve difficulty returning the product version with the legacy connection
-
#7819by Vlad Khorsun
- Extend
RDB$GET_CONTEXT('SYSTEM', '*')with other info fromMON$ATTACHMENTS -
#7818by Vlad Khorsun
- Don’t update database-level statistics on every page cache operation
-
#7814by Vlad Khorsun
- Improve
SKIP LOCKEDimplementation -
#7810by Vlad Khorsun
For more details, see [rnfb50-dml-skip-locked].
- Update Windows distribution with new zlib version 1.3 (released 2023-08-18)
-
#7755by Vlad Khorsun
Complete In Firebird 5.0 Release Candidate 1
- Avoid truncation of the access path information inside the
PLG$PROF_RECORD_SOURCEStable to 255 characters -
#7752by Adriano dos Santos Fernandes
- MacOS: build libicu and static libc++ using vcpkg
-
#7720by Adriano dos Santos Fernandes
- Better processing and optimization of
IN <list>predicates -
#7707by Dmitry Yemanov
For more details, see [rnfb50-dml-in].
- Make trace config parser resolve symlinks in database file path in trace configuration
-
#7692by Vlad Khorsun
Allow tracing database events even if the trace/audit is configured using a symbolic link instead of a real database file path.
- Profiler should not miss query’s top-level access paths nodes
-
#7688by Adriano dos Santos Fernandes
- Add
LEVELcolumn toPLG$PROF_RECORD_SOURCESandPLG$PROF_RECORD_SOURCE_STATS_VIEW -
#7687by Adriano dos Santos Fernandes
Column
LEVELis added to the profiler record source tables/views.It returns the actual indentation level that allows proper reconstruction of multi-line access path nodes. - Add overload
FbVarChar::setfunction for non null-terminated string -
#7685by Adriano dos Santos Fernandes
- Use ParallelWorkers setting from firebird.conf as default for all parallelized operations
-
#7682by Vlad Khorsun
This allows utilities started via the Service Manager to use the server-side ParallelWorkers setting without a need to specify the number of workers explicitly.
- Make boot build on Windows a bit more user-friendly
-
#7680by Vlad Khorsun
- Make the profiler store aggregated requests by default, with an option for the detailed store
-
#7652by Adriano dos Santos Fernandes
Make the profiler data aggregated at the statement level by default (with
REQUEST_ID = 0), thus making the flushing faster.A detailed (non-aggregated) data may be requested explicitly by specifying the 'DETAILED_REQUESTS' value in thePLUGIN_OPTIONSparameter of theRDB$PROFILER.START_SESSIONfunction. - Getting the current
DECFLOAT ROUND/TRAPSsettings -
#7642by Alexander Peshkov
New context variables
DECFLOAT_ROUNDandDECFLOAT_TRAPSare added to theSYSTEMnamespace of theRDB$GET_CONTEXTfunction.They return the current settings of the corresponding session options. - Run as application not specifying switch
-a -
#7637by Vlad Khorsun
Command-line switch
-ais no longer required on Windows to start the Firebird server as an application. - Include Performance Cores only in default affinity mask
-
#7634by Vlad Khorsun
Some modern CPUs may contain two sets of cores - Efficient (E) and Performance (P).By default Firebird runs on all available cores and that may cause performance degradation in CPU-bound tasks.Now, E-cores are excluded from the default affinity mask.If the AffinityMask configuration setting is used explicitly, please pay attention which types of cores are specified to be enabled.
- Allow nested parenthesized joined table
-
#7576by Mark Rotteveel
- Optimize creation of expression and partial indices
-
#7559by Dmitry Yemanov
- Add support for
-parallelin combination withgfix -icu -
#7550by Vlad Khorsun
gfix -icurebuilds indexes and thus can benefit from parallelization.Now it’s allowed to use the-icuand-parallelswitches together, to override the ParallelWorkers setting used by default. - Compiler warnings raise when build cloop-generated Firebird.pas in RAD Studio 11.3
-
#7542by Vlad Khorsun
RDB$GET/SET_CONTEXT()— enclosing in apostrophes or double quotes of a missed namespace/variable will make output more readable-
#7539by Vlad Khorsun
- Add ability to query current value of parallel workers for an attachment
-
#7536by Vlad Khorsun
-
New column
MON$PARALLEL_WORKERS INTEGERwas added intoMON$ATTACHMENTStable. -
New variable
PARALLEL_WORKERSis now available in theSYSTEMcontext of theRDB$GET_CONTEXTfunction. -
New tag fb_info_parallel_workers (value 149) is available in
IAttachment::getInfo()andisc_database_info()API calls.
-
- Reduce output of the
SHOW GRANTScommand -
#7506by Artyom Ivanov
- Firebird performance issue — unnecessary index reads
-
#7494by Vlad Khorsun
Index scan algorithm has been improved to avoid unnecessary record reads for partial lookups in compound indices.
SHOW SYSTEMcommand: provide list of functions belonging to system packages-
#7475by Alexander Peshkov
- Make Android port (client/embedded) work inside apps
-
#7469by Adriano dos Santos Fernandes
- Add COMPILE trace events for procedures/functions/triggers
-
#7466by Dmitry Yemanov
Allows to trace parse/compile events for the stored modules, corresponding elapsed time and also plans for queries inside those PSQL modules.
- Add REPLICA MODE to the output of the isql
SHOW DATABASEcommand -
#7425by Dmitry Yemanov
- Surface internal optimization modes (all rows vs first rows) at the SQL and configuration levels
-
#7405by Dmitry Yemanov
For more details, see [rnfb50-config-optimize-mode], [rnfb50-dml-select-optimize], and [rnfb50-msql-optimize-set].
- Use Windows private namespace for kernel objects used in server-to-server IPC
-
#7213by Vlad Khorsun
This improvement allows to synchronize Firebird processes across different Windows sessions.
- Add ability to add comment to mapping (
COMMENT ON MAPPING … IS …) -
#7046by Alexander Peshkov
For more details, see [rnfb50-ddl-comment-mapping].
- ISQL showing publication status
-
#7001by Dmitry Yemanov
- Add support for
QUARTERtoEXTRACT,FIRST_DAYandLAST_DAYfunctions -
#5959by Adriano dos Santos Fernandes
For more details, see [rnfb50-dml-quarter].
Complete In Firebird 5.0 Beta 1
- Parallel (multi-threaded) operations
-
#1783, #3374, #7447by Vlad Khorsun
Such operations as logical backup/restore, sweeping and
CREATE INDEXstatement execution can be executed in parallel by multiple threads, thus decreasing the total operation time.See chapters [rnfb50-engine-parallel], [rnfb50-utils-gbak-parallel] and [rnfb50-utils-gfix-parallel] for more details.
- Support for partial indices
-
#7257by Dmitry Yemanov
The
CREATE INDEXDDL statement has been extended to support partial indices, i.e. an index may now declare a condition that defines the subset of records to be indexed. SKIP LOCKEDclause-
#7350by Adriano dos Santos Fernandes
New clause
SKIP LOCKEDwas introduced for statementsSELECT WITH LOCK,UPDATEandDELETE.It allows to skip the already locked records while reading the table. - Inline minor ODS upgrade
-
#7397by Dmitry Yemanov
An ability to upgrade the database to the latest minor ODS version has been introduced, it does not require a backup/restore cycle.
- Compiled statement cache
-
#7144by Adriano dos Santos Fernandes
A per-attachment cache of compiled SQL statements has been implemented.
- PSQL and SQL profiler
-
#7086by Adriano dos Santos Fernandes
A built-in ability to profile SQL and PSQL statements has been added, making it possible to measure execution time at different levels.
- Support for
WHEN NOT MATCHED BY SOURCEin theMERGEstatement -
#6681by Adriano dos Santos Fernandes
The
MERGEstatement has been extended to support theWHEN NOT MATCHED BY SOURCEclause. - Built-in functions
UNICODE_CHARandUNICODE_VAL -
#6798by Adriano dos Santos Fernandes
New built-in functions
UNICODE_CHARandUNICODE_VALhave been added to allow conversion between Unicode code point and character. RDB$BLOB_UTILnew system package-
#281by Adriano dos Santos Fernandes
New system package
RDB$BLOB_UTILhas been added to allow various operations with BLOBs in the PSQL modules. - Support multiple rows being returned by DML with the
RETURNINGclause -
#6815by Adriano dos Santos Fernandes
The
RETURNINGclause, if used in DSQL queries, now allows multiple rows to be returned. - Optimize the record-level RLE algorithm for a denser compression of shorter-than-declared strings and sets of subsequent NULLs
-
#4723by Dmitry Yemanov
The built-in compression algorithm has been improved to allow denser compression of records.
- More cursor-related details in the plan output
-
#7441by Dmitry Yemanov
Execution plan now contains more information about cursors.
Other improvements are briefly listed below, please follow the tracker references for more information.
- Unify display of system procedures & packages with other system objects
-
#7411by Alexander Peshkov
System procedures and packages are now shown by
SHOW SYSTEM. - Simplify client library build
-
#7399by Adriano dos Santos Fernandes
- Performance improvement for BLOB copying
-
#7382by Adriano dos Santos Fernandes
- Cost-based choice between nested loop join and hash join
-
#7331by Dmitry Yemanov
- Create Android packages with all necessary files in all architectures (x86, x64, arm32, arm64)
-
#7293by Adriano dos Santos Fernandes
- Unify release filenames
-
#7284by Adriano dos Santos Fernandes
- Improve ICU version mismatch diagnostics
-
#7169by Adriano dos Santos Fernandes
- Provide ability to see in the trace log events related to missing security context
-
#7165by Alexander Peshkov
For more details, see [rnfb50-security-trace-ctx].
ResultSet.getInfo()new API method-
#7083by Dmitry Yemanov
- Network support for scrollable cursors
-
#7051by Dmitry Yemanov
- Add table
MON$COMPILED_STATEMENTSand also columnMON$COMPILED_STATEMENT_IDto bothMON$STATEMENTSandMON$CALL_STACKtables -
#7050by Adriano dos Santos Fernandes
- Results of negation must be the same for each datatype (
SMALLINT/INT/BIGINT/INT128) when argument is minimum value for this type -
#7025by Alexander Peshkov
- Transform OUTER joins into INNER ones if the WHERE condition violates the outer join rules
-
#6992by Dmitry Yemanov
- Add way to retrieve statement BLR with
Statement.getInfo()and ISQL'sSET EXEC_PATH_DISPLAY BLR -
#6910by Adriano dos Santos Fernandes
For isql, see [rnfb50-utils-exec-path-blr].
SIMILAR TOshould use index when pattern starts with non-wildcard character (asLIKEdoes)-
#6873by Adriano dos Santos Fernandes
- Add column
MON$SESSION_TIMEZONEto the tableMON$ATTACHMENTS -
#6794by Adriano dos Santos Fernandes
- Allow parenthesized query expression for standard-compliance
-
#6740by Adriano dos Santos Fernandes
For more details, see [rnfb50-dml-parens-query].
- System table with keywords
-
#6713by Adriano dos Santos Fernandes
- Support full SQL standard character string literal syntax
-
#5589by Adriano dos Santos Fernandes
For more details, see [rnfb50-dml-literals-char].
- Support full SQL standard binary string literal syntax
-
#5588by Adriano dos Santos Fernandes
For more details, see [rnfb50-dml-literals-binary].
- Allow subroutines to access variables/parameters defined at the outer/parent level
-
#4769by Adriano dos Santos Fernandes
For more details, see [rnfb50-psql-subroutine-param-access].
- Avoid data retrieval if the
WHEREclause always evaluates toFALSE -
#1708by Dmitry Yemanov