Release Date: 2024-09-09
This release is based on PostgreSQL 16.4 and Postgres Pro Enterprise 16.3.2. All changes inherited from PostgreSQL 16.4 are listed in PostgreSQL 16.4 Release Notes. As compared with Postgres Pro Enterprise 16.3.2, this version also provides the following changes:
Enhanced performance of segment search by implementing a new search strategy, allowing faster detection of the last segment.
Lowered the number of unneeded replanning attempts by adding the backend memory consumption trigger, whose value is defined by the replan_memory_limit configuration parameter, and changing the replanning behavior triggered by the number of processed node tuples.
Implemented the interaction of the
PASSWORD_GRACE_TIME
profile parameter with the VALID UNTIL role
attribute. Now if both of them are set, the warning about password
expiration will be displayed.
Prevented potential authentication delays due to locking by not
updating role's last login time if the role's profile
USER_INACTIVE_TIME is set to unlimited
(see Section 56.40 for details).
Optimized the logic of pruning, which is now delayed until a page
is nearly full, rather than relying solely on the
fill factor. This reduces
the frequency of pruning during UPDATE operations,
leading to better performance in tables with frequent updates.
Fixed an issue with statistics handling in autonomous transactions. Previously, statistics changes were only saved if both the autonomous transaction and the parent transaction were committed successfully. This oversight was usually pretty harmless since no reported failures have been traced.
Fixed an issue with nested loop parameters that forced Memoize to constantly purge the cache. This bugfix speeds up query execution.
Fixed issues related to processing of data structures in CFS by pg_rewind. Previously, pg_rewind did not fully support CFS, which could result in data corruption.
Fixed a segmentation fault that could occur when a connection to the built-in connection pooler was reset before a new session was created in the backend.
Fixed an issue with freezing 64-bit multitransaction IDs, which could manifest itself in PANIC-level errors like “xid XXX does not fit into valid range for base YYY” during autovacuum.
Fixed an issue related to suboptimal handling of
pd_prune_xid. This issue did not result in any
significant operation problems but caused unnecessary page pruning,
which might have produced extra WAL records.
Fixed an issue, which could manifest itself in errors like “invalid FSM request size”. The code was adjusted to reflect the changes in heap page structure, removing reliance on a constant related to maximum free heap page space where it is no longer applicable.
Fixed a bug that caused the optimizer to ignore columns from query conditions. Previously, when partially using a composite index, the number of rows could be overestimated, which led to an incorrect plan creation. The bug occurred due to a malfunction of the multi-column statistics elements.
Fixed a bug in
ANALYZE that
could occur because it was impossible to display the
pg_statistic system catalog. For the fix to
work, if your database has indexes with INCLUDE
columns, after upgrading Postgres Pro, it is
recommended to do another ANALYZE for these columns.
Added support for ALT 11.
Upgraded the PostgreSQL ODBC driver to version 16.00.0005.
Improved the built-in high-availability feature to provide the following optimizations and bug fixes:
Upgraded biha to version 1.3.
Optimized the automatic rewind logic. Now if the
biha.autorewind
configuration parameter is set to false on
the node and cluster timelines diverge, this node stops
accepting WAL records after it goes into the
NODE_ERROR state. Based on the new logic, to
execute queries on the node, remove biha from
shared_preload_libraries on this node and/or
run the manual rewind. The rewind results can now be checked in
the rewind_state field of the
biha.state file.
Optimized behavior of the synchronous
referee node in the
referee_with_wal mode, which now depends on
the synchronous_commit value.
Fixed an issue that could cause the leader node to accidentally demote. This happened because all follower nodes, which were executing queries, crashed due to a conflict between a query and the recovery process. Now the extension throws a warning instead of crashing.
Fixed a segmentation fault that could occur in the control channel while trying to remove a node from the cluster.
Fixed memory leaks in bihactl.
Upgraded citus to version 12.1.5.1, which now supports the ability to use the extension together with the enabled enable_group_by_reordering configuration parameter.
Upgraded dbms_lob to version 1.2, which now supports reading and writing blocks up to 1GB, an increase from the previous 32KB limit.
Added the hypopg extension, which provides support for hypothetical indexes in Postgres Pro.
Upgraded the mchar
extension to fix a bug that caused the mchar and
mvarchar data types to ignore control characters during
string comparison.
Implemented the ability to slow down transaction execution on the
donor node in multimaster using the
multimaster.tx_delay_on_slow_catchup
configuration
parameter. This is useful when a lagging node is catching up to
the donor node and cannot apply changes as quickly.
Added support for COPY to the online_analyze
module.
Upgraded pg_filedump to version 17.0, which provides optimizations and bug fixes. In particular, contents of meta pages for GIN and SP-GiST indexes are now displayed correctly, and an issue of lacking memory for encoding and decompression is resolved.
Upgraded pg_proaudit to provide the following optimizations and bug fixes:
Improved performance and added the
pg_proaudit.max_rules_count
parameter, which allows specifying the maximum number of rules
allowed.
Corrected support of database names including uppercase symbols by
the pg_proaudit_set_rule function.
Upgraded pg_probackup to version 2.8.3 Enterprise, which provides the following bug fixes:
Fixed backup validation for databases containing an OID larger than 10^9. Previously, the validation status could be displayed incorrectly in such cases.
Fixed a bug that could occur when
pg_probackup was run as a
user included in the postgres group in
case the database used CFS.
Upgraded the pgpro_rp extension to version 1.1, which now supports plan assignment groups. The database administrator can now create plan assignment groups for different roles to control resource prioritization across large amounts of database users.
Upgraded
pgpro_sfile
to version 1.2, which adds the sf_md5 function
that calculates MD5 hash for an sfile object.
Upgraded pgvector to version 0.7.4.
Fixed incorrect behavior of pg_wait_sampling when used with the extended query protocol.
Upgraded sr_plan to provide new features and optimizations. Notable changes are as follows:
Added the sr_plan.sandbox configuration parameter that allows testing and analyzing queries without affecting the node operation by reserving a separate area in shared memory for the nodes.
Added three configuration parameters
sr_plan.auto_capturing,
sr_plan.max_captured_items,
and
sr_plan.max_consts_len
that allow you to configure query capturing.
Added the sr_captured_queries view that displays information about queries captured in sessions.
Added the sr_captured_clean
function that removes all records from the
sr_captured_queries view.
Renamed the sr_plan.max configuration
parameter to
sr_plan.fs_ctr_max.
Replaced queryid with
sql_hash to reflect the new query
identification logic.
Upgraded
utl_http to
provide support for PUT, UPLOAD,
PATCH, HEAD,
OPTIONS, DELETE,
TRACE, as well as any custom HTTP methods.
If you are upgrading from a Postgres Pro Enterprise release based on the same PostgreSQL major version, it is enough to install the new version into your current installation directory.
To upgrade your BiHA cluster from Postgres Pro Enterprise 16.3 or earlier to Postgres Pro Enterprise 16.4, see migration instructions for BiHA.
When upgrading your high-availability cluster from Postgres Pro Enterprise versions 16.3.x or lower, first disable automatic failover if it was enabled and upgrade all the standby servers, then upgrade the primary server, promote a standby, and restart the former primary (possibly with pg_rewind).
If you take backups using pg_probackup and you have previously upgraded it to version 2.8.0 Enterprise or 2.8.1 Enterprise, make sure to upgrade it to version 2.8.2 Enterprise or higher and retake a full backup after upgrade, since backups taken using those versions might be corrupted. If you suspect that your backups taken with versions 2.8.0 or 2.8.1 may be corrupted, you can validate them using version 2.8.2.