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 LOCKED
implementation -
#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_SOURCES
table 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
LEVEL
column toPLG$PROF_RECORD_SOURCES
andPLG$PROF_RECORD_SOURCE_STATS_VIEW
-
#7687by Adriano dos Santos Fernandes
Column
LEVEL
is 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::set
function 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_OPTIONS
parameter of theRDB$PROFILER.START_SESSION
function. - Getting the current
DECFLOAT ROUND/TRAPS
settings -
#7642by Alexander Peshkov
New context variables
DECFLOAT_ROUND
andDECFLOAT_TRAPS
are added to theSYSTEM
namespace of theRDB$GET_CONTEXT
function.They return the current settings of the corresponding session options. - Run as application not specifying switch
-a
-
#7637by Vlad Khorsun
Command-line switch
-a
is 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
-parallel
in combination withgfix -icu
-
#7550by Vlad Khorsun
gfix -icu
rebuilds indexes and thus can benefit from parallelization.Now it’s allowed to use the-icu
and-parallel
switches 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 INTEGER
was added intoMON$ATTACHMENTS
table. -
New variable
PARALLEL_WORKERS
is now available in theSYSTEM
context of theRDB$GET_CONTEXT
function. -
New tag fb_info_parallel_workers (value 149) is available in
IAttachment::getInfo()
andisc_database_info()
API calls.
-
- Reduce output of the
SHOW GRANTS
command -
#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 SYSTEM
command: 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 DATABASE
command -
#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
QUARTER
toEXTRACT
,FIRST_DAY
andLAST_DAY
functions -
#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 INDEX
statement 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 INDEX
DDL 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 LOCKED
clause-
#7350by Adriano dos Santos Fernandes
New clause
SKIP LOCKED
was introduced for statementsSELECT WITH LOCK
,UPDATE
andDELETE
.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 SOURCE
in theMERGE
statement -
#6681by Adriano dos Santos Fernandes
The
MERGE
statement has been extended to support theWHEN NOT MATCHED BY SOURCE
clause. - Built-in functions
UNICODE_CHAR
andUNICODE_VAL
-
#6798by Adriano dos Santos Fernandes
New built-in functions
UNICODE_CHAR
andUNICODE_VAL
have been added to allow conversion between Unicode code point and character. RDB$BLOB_UTIL
new system package-
#281by Adriano dos Santos Fernandes
New system package
RDB$BLOB_UTIL
has been added to allow various operations with BLOBs in the PSQL modules. - Support multiple rows being returned by DML with the
RETURNING
clause -
#6815by Adriano dos Santos Fernandes
The
RETURNING
clause, 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_STATEMENTS
and also columnMON$COMPILED_STATEMENT_ID
to bothMON$STATEMENTS
andMON$CALL_STACK
tables -
#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 TO
should use index when pattern starts with non-wildcard character (asLIKE
does)-
#6873by Adriano dos Santos Fernandes
- Add column
MON$SESSION_TIMEZONE
to 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
WHERE
clause always evaluates toFALSE
-
#1708by Dmitry Yemanov