Release Date: 2025-03-10
This release is based on PostgreSQL 16.8 and Postgres Pro Enterprise 16.6.1. All changes inherited from PostgreSQL 16.8 are listed in PostgreSQL 16.8 Release Notes. As compared with Postgres Pro Enterprise 16.6.1, this version also provides the following changes:
Added details, like current working directory, the
PGDATA directory, etc., to
crash_info output files.
Added the increased security requirements for the
CREATE PROFILE command.
Now the PASSWORD_REQUIRE_COMPLEX parameter requires
characters from three different groups. Also, all characters of
languages without case distinction (Hindi, Chinese, etc.)
in the UTF-8 encoding are considered lowercase.
Added the skip_temp_rel_lock configuration parameter, which allows you to skip locking for temporary relations.
Improved real-time query replanning. Now replan triggers are disabled for future reoptimization, when one of the following conditions is met: no new information was gathered during execution, the newly generated plan matches a plan that was already tried, or the maximum number of reruns, set by the replan_max_attempts configuration parameter, was reached.
Restricted citus operation with
enable_self_join_removal
set to on. Previously, queries to distributed
tables of the extension could return incorrect results.
Now, query planning results in an error if the optimizer decides to
make the query distributed.
Implemented the following enhancements and bug fixes for CFS:
Changed the default value for the cfs_gc_threshold configuration parameter from 50 to 30 percent.
Fixed an issue with CFS garbage collector being blocked by the backup process. If backup took ran too long, this could lead to write locks, preventing writes to compressed tablespaces. Now both processes lock only specific data files briefly, avoiding mutual blocking.
Fixed an issue with missing compression settings for tablespaces
on standby servers by adding a new WAL record type. Previously,
standby servers did not receive such compression settings because
ALTER TABLESPACE ... SET (compression=true)
was not logged in WAL.
Fixed the cfs_start_gc
function to reject invalid values of the n_workers argument.
Fixed an issue with upgrading Postgres Pro Standard to Postgres Pro Enterprise using pg_upgrade, which could fail if the old cluster had an epoch greater than 1 with an error like “could not open file”.
Fixed an issue with handling *.cfm.bck files by
pg_upgrade.
Fixed a segmentation fault caused by foreign data wrapper invalidation during autonomous transactions if an autonomous transaction reset global variables while registered callback functions remained active. Now callback functions check for global variables and invalidation data is preserved for parent transactions.
Fixed an issue that caused the server to crash with PANIC instead of returning an appropriate error when deleting tuples from a page where the difference between the minimum transaction ID and the current transaction ID exceeded 2^31.
Fixed pg_multixact bloating by introducing
“soft” limits that trigger
autovacuum earlier.
Fixed an issue where crash_info could fail to write
diagnostic files when handling a stack overflow. Previously, the
signal handler ran on the same stack that had overflowed, which could
prevent it from executing due to lack of available stack space.
Now the handler runs on an alternate signal stack.
Fixed a memory context issue, which could previously cause emitting garbage in logs instead of the host and port details when disconnecting from the remote server.
Fixed an issue that could occur when a custom scan was used, which could cause an incorrect state of the query plan and could result in an error when pgpro_stats was involved.
Fixed an issue where roles without explicitly set
VALID UNTIL attribute and associated with a profile
that had PASSWORD_GRACE_TIME
set to 0 and PASSWORD_LIFE_TIME set to
UNLIMITED incorrectly received password expiration
warnings. Now they are correctly considered valid indefinitely.
Fixed a bug that caused problems with starting followers added after
execution of ALTER SYSTEM on the initialized leader.
Fixed an issue where temporary tables could fail to grow when their size exceeded a segment boundary, which could manifest itself in “could not open file” errors.
Fixed an issue where parallel apply workers could not apply streaming
transactions in logical replication (streaming = parallel).
This issue occurred when the publisher sent transactions in 32-bit
XID format.
Upgraded the apache_age extension to version 1.5.1.
Upgraded the BiHA solution to provide the following features, optimizations, and bug fixes:
Improved the bihactl
init --convert
command to skip the creation of objects required for
BiHA cluster operation if
these objects already exist in the database. Previously,
the conversion would fail in such cases.
Improved the callbacks
functionality. Added the NODE_ADDED,
NODE_REMOVED, and LEADER_STATE_IS_RW
callback types. Updated the TERM_CHANGED type.
Added the biha_callbacks_user user role as the
default user for callback execution.
Implemented the ability to decrease the max_connections
configuration parameter in a BiHA cluster
without turning off the biha extension.
You can now decrease the parameter value on the leader node and
restart the node for the changes to take effect. Previously,
the max_connections value could only be
decreased if you temporarily remove the biha
extension from shared_preload_libraries.
Fixed a bug that caused the biha.nodes function to return an empty row for the node where it was called on.
Fixed a bug that caused the biha-background-worker
process reboot when removing a replication slot.
Fixed a bug that caused problems with conversion of a cluster with the set shared_preload_libraries variable in the postgresql.auto.conf file into a BiHA cluster.
Fixed a bug that caused problems with conversion of a synchronous
cluster into a BiHA cluster. Resetting the
synchronous_standby_names parameter before
conversion of a synchronous cluster is no longer required.
Upgraded citus to version 12.1.6.1.
Optimized fasttrun to skip unnecessary truncate operations on empty temporary relations.
Upgraded mamonsu to version 3.5.11 to provide support for pgpro_stats version 1.8.
Upgraded multimaster
to add the ability to specify the catchup mode for reconnected nodes
using the
multimaster.catchup_algorithm
configuration parameter. Supported the parallel
catchup mode, in which non-conflicting replicated transactions are
applied in parallel.
Fixed an issue with upgrading pageinspect in some corner cases to 1.10.1 or higher.
Added the pgpro_multiplan extension version 1.1,
which includes the full functionality of the sr_plan
extension as well as new features, such as plan_hash — the
internal plan identifier of a frozen plan. The sr_plan extension
is considered deprecated, and its support will end together with Postgres Pro Enterprise
16. Using pgpro_multiplan together with sr_plan
is not allowed as it will lead to a replica failure in a high-availability cluster.
More changes as compared to sr_plan are as follows:
Added support for template plans and the
wildcards feature. Now
the pgpro_multiplan extension can create a template plan,
which can be applied to the queries with table names matching the POSIX
regular expressions in the pgpro_multiplan.wildcards configuration parameter.
Fixed an issue with query execution when a plan was approved while
pgpro_multiplan.auto_capturing
was enabled, and then the query was executed with a different plan and
pgpro_multiplan.auto_capturing was disabled. The issue
could manifest itself in errors like “cache lookup failed for type”.
Fixed an issue with pgpro_multiplan failing to identify registered query with the parameter used in several places in this query, which prevented plan freezing for such queries.
Upgraded pgbadger to version 13.0.
Upgraded pgbouncer to version 1.24.0.
Upgraded pg_hint_plan to version 1.6.1.2.
Upgraded pg_portal_modify to version 0.3.5.
Upgraded pgpro_anonymizer to version 1.3.2.
Upgraded pg_proaudit to provide the following enhancements:
Added a new event field: session user name. Now an event contains
the information about both session_user
and current_user attributes of an SQL session.
Added support for new event classes: ALL_DDL_NONTEMP
and ALL_DML_NONTEMP. The scope of these classes
is limited to the objects that are not contained in
pg_temp_
temporary schemas.
nnn
Fixed logging of SELECT FOR UPDATE and
SELECT FOR KEY SHARE events as
SELECT, rather than UPDATE.
Upgraded pg_probackup to version 2.8.7 Enterprise, which provides the following optimizations and bug fixes:
Reduced the log level for “checking WAL file name”
messages that are issued when the show with the
--archive option is executed from
INFO to VERBOSE.
Updated the add-instance command logic to make
the -D option that specifies the path to the
catalog mandatory. add-instance no longer relies
on the PGDATA environment variable for the catalog
location, but requires explicitly specifying the path to the
catalog as the command option.
Improved the garbage collection mechanism in CFS used when a backup copy is created. File-system level locks resolve an issue with the concurrent access to files from compressed tablespaces during copying to a backup and during the defragmentation.
Fixed an issue of the multi-threaded file copying technique that prevents repeated copying of one file. This issue could previously stop the backup creation under high load on the server.
Upgraded pgpro_pwr to version 4.8, which provides new features and bug fixes. Notable changes are as follows:
Added tracking of extension versions installed in the cluster through a new report section.
Added a possibility to hide data for certain databases in the report. To this end, a new parameter that accepts an array of databases to be excluded was added to report generation functions.
Upgraded pgpro_sfile
to add a check for the value of the a_sf_index
argument of the sf_write function to be greater
than zero.
Upgraded pgpro_stats to version 1.8.1, which provides the following bug fixes and improvements:
Fixed an issue that could occur during session tracing and cause errors “could not write file ""pg_stat/pgpro_stats_filters.trace.tmp"": No such file or directory”. Concurrent writing from different sessions to a trace file is fixed now, so processes can write to the trace file in parallel without collisions.
Changed the format of the statistics dump file and the corresponding save/load routines.
Implemented an optimization that lowers the locking time in some cases when copying metrics from the local memory to the shared memory.
Aligned the names of the explain_* filter
attributes of the session tracer with the names of session-tracing
configuration parameters.
Implemented turning off the session tracer functionality when no session-tracing filters are specified.
Upgraded pg_variables. The
DISCARD ALL command now discards all packages and
variables in pg_variables.
Upgraded plpgsql_check to version 2.7.12.
Upgraded the rum
module to update an error message for an error that can occur in the
case when a SELECT query uses
ORDER BY.
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.6 or earlier to Postgres Pro Enterprise 16.8, see migration instructions for BiHA.
ABI versions may change between minor releases of
Postgres Pro. If this is the case, and you see
the ABI mismatch error when trying to run your
extension, make sure to install a new version of the extension
supplied with a new release of Postgres Pro,
or recompile your third-party extension to be able to use it with the
current version of Postgres Pro.
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.
To migrate from PostgreSQL, as well as Postgres Pro Standard or Postgres Pro Enterprise based on a previous PostgreSQL major version, see the migration instructions for version 16.