E.1. Postgres Pro Enterprise 16.15.1 #
Date: 2026-09-10
E.1.1. Overview #
This release is based on PostgreSQL 16.15 and Postgres Pro Enterprise 16.15.0. All changes inherited from PostgreSQL 16.15 are listed in PostgreSQL 16.15 Release Notes. As compared with Postgres Pro Enterprise 16.15.0, this version provides the following changes:
Stabilized the parallel autovacuum functionality that is controlled by parallel_autovacuum_workers and max_parallel_autovacuum_workers parameters. It is no longer considered experimental. Also, the
max_parallel_autovacuum_workersconfiguration parameter can now be changed without restarting the server.Added the optimizer possibility to transform
EXISTSconstructions toSEMI JOINs between objects of the main queries and the corresponding subqueries when the enable_extra_transformations parameter is set toon.Improved the optimizer functionality of detecting join uniqueness for joins with subqueries. This allows choosing more effective plan nodes. This may be useful for 1C, in particular for queries with using “slice last”.
Improved join selectivity estimation when there is a certain subquery with
DISTINCTorGROUP BYclauses and all fields in them are used in join quals between the subquery and other objects of the main query. This functionality is controlled by the enable_compound_index_stats parameter and is enabled by default. This may be useful for 1C, in particular for queries with using “slice last”.Implemented the ability for real-time query replanning to work together with aqo. Now replanning triggers can fire on queries for which plans are created based on aqo predictions.
Added the enable_oracle_package_emulator configuration parameter that controls the availability of packages, which provide Oracle-compatible functionality for PL/pgSQL.
Added the enable_security_officer configuration parameter that controls whether a security officer can be set for a schema.
Added the wal_sender_shutdown_timeout server variable to limit replica synchronization waits during shutdown. By default, senders still wait forever for synchronization.
Reworked the
pg_stats_vacuum_tables,pg_stats_vacuum_indexes, andpg_stats_vacuum_databasefunctions that provide vacuum statistics. Previously, these functions could returnNULLinstead of an empty result set when no statistics were found for the specified relation or database. Also fixed incorrect inclusion of cluster-wide relation statistics in per-database queries, and added error reporting for invalid input arguments.Introduced the following changes to autopreparing:
Optimized autopreparing for queries with a large number of parameters.
Fixed an issue with incorrect calculation of the memory limit for autopreparing.
Implemented the following enhancements and bug fixes for the in-memory system catalog:
Added support for subtransactions in the in-memory system catalog for temporary objects.
Fixed an issue where temporary catalog was incorrectly caching metadata of multimaster.
Improved the error message produced by
CREATE OR REPLACE PACKAGEwhen a package type cannot be changed. The message now includes the type name and lists dependent objects.Fixed an issue that could cause a significant overestimation of the number of rows in a plan in some corner cases when the planner_upper_limit_estimation parameter was enabled.
Fixed a segmentation fault that could occur in recursive processing of invalidation messages for a relation if the recursion depth exceeded the process stack size. Now added the check for the allowed size of the process stack (the max_stack_depth parameter value).
Implemented the following bug fixes for CFS:
Fixed an issue where orphaned
*.cfmfiles that belonged to empty relation segments were left over after pg_upgrade. These files caused “CFS failed to read map file” warnings and could interfere with garbage collection, increasing disk usage.Fixed a deadlock issue that could occur under write-heavy workloads and was caused by the CFS file lock not being released by server processes. The issue could lead to both primary and standby server hanging.
Fixed an issue with autonomous transactions that could cause incorrect index creation after executing the
CREATE INDEXorREINDEX CONCURRENTLYcommand. Now when these commands are executed, Postgres Pro waits for the end of the autonomous transaction and all its parent transactions.Fixed excessive memory usage that could occur in subtransactions when working with the
in_memoryextension.Returned the vanilla implementation of the hba_file configuration parameter, as the previous fix interfered with Patroni and caused server startup failures.
Inherited the PostgreSQL fix that prevents truncation of CLOG that is still needed by unread
NOTIFYmessages. This fix prevents “could not access status of transaction” errors when a backend is slow to absorbNOTIFYmessages.Reduced the number of cache invalidation messages sent when creating or dropping temporary objects with skip_temp_rel_lock enabled. This improves performance for solutions that intensively use temporary objects, for example, for 1C.
Fixed recovery failures caused by missing intermediate relation segments in backups taken with pg_basebackup. Gaps between the segments are now detected and filled during the recovery process.
Fixed an issue in postgres_fdw where
UPDATEandDELETEcommands on a partitioned table could select tuples for processing only by their IDs without taking into account a partition to which the tuples belong.Updated aqo to provide the following enhancements and bug fixes:
Implemented the ability to learn on queries reoptimized using real-time query replanning.
Simplified the steps to enable aqo. Now you do not need to execute the
CREATE EXTENSIONcommand for aqo operation. This command is required only for using aqo functions and views.Fixed an issue with statistics collection in the
intelligentmode, which caused incorrect aqo learning.
Upgraded the hypopg extension to version 1.4.3.
Upgraded mamonsu to version 3.5.17.
Updated multimaster to provide the following enhancements:
Implemented the ability to skip replication of DDL commands targeting temporary objects. Temporary objects are not replicated to other nodes which helps to accelerate operation with temporary objects. The new logic is available with the version
2of the DDL replication protocol. You can switch to this version using the new multimaster.ddl_replication_protocol_version configuration parameter. Use the protocol version2only after upgrading multimaster to the latest version on all nodes of your cluster.
Upgraded the ODBC driver to version 18.00.0002.
Upgraded orafce to version 4.16.7.
Upgraded the pgbouncer_exporter utility to version 0.12.1.
Updated pgpro_application_info to fix an issue that could occur when reading module and action names due to incorrect processing of too long UTF-8 names. These values are now processed correctly.
Upgraded pg_proaudit to version 2.1 to provide the following enhancements and bug fixes:
Added the
exclude_role_nameparameter to thepg_proaudit_set_rule(),pg_proaudit_remove_rule(), andpg_proaudit_reload()functions, which allows excluding specific roles from logging. This is useful for filtering out actions of technical roles that would otherwise make the audit log overly verbose.Added the
pg_proaudit.csv_split_messagesconfiguration parameter that controls whether security events in CSV and syslog output are written as a single line or multiple lines. When disabled, each security event is written on a single line, which simplifies log analysis and parsing.Fixed an issue with unreadable characters in CSV, CEF, and syslog log entries when using a database with a non-UTF-8 encoding. All string fields in the log output are now converted to UTF-8 regardless of the database encoding.
Upgraded pg_probackup to version 2.8.15 Enterprise to provide the following improvements and bug fixes:
Added multithreading support for the
deletecommand via thej/--threadsoption. Backup deletion according to the retention policy and WAL archive cleanup are now executed in parallel.Fixed an issue where S3 operations that returned retryable status codes were erroneously reported as successful. Now an error is returned, and any unrecognized server response body is written to the log.
Fixed infinite looping on corrupted backups by adding loop detection. ID order is now validated when reading the backup catalog or searching for the parent full backup.
Fixed handling of incorrect S3 XML responses, eliminating crashes on empty documents and memory leaks.
Optimized Postgres Pro port validation. Instead of reading from
postgresql.confandpostgresql.auto.conf, which may contain outdated information, the port is now read from thepostmaster.pidfile of the running server. If the instance port does not match the configuration, pg_probackup issues a warning.Fixed the
checkdbandcatchupcommand termination that could occur when an instance was specified without setting the backup catalog path via the-B/--backup-pathor theBACKUP_PATHenvironment variable. Now a clear error message is displayed.Improved diagnostics of remote connection errors. Previously, specifying an incorrect port that was already in use would cause the process to terminate without an error. Now, the reason for termination is displayed, along with a recommendation to check connection parameters.
Fixed a memory leak that could occur when reading the server configuration files.
Eliminated a potential null pointer dereference by adding out-of-memory handling when parsing the recovery target name in WAL.
Added the
--write-rate-limitoption to thecatchupcommand help output. In other command descriptions, this option's argument,baudrate, is renamed tobitrate.
Updated the pgpro_bindump module to include the following bug fixes:
Fixed an issue with parallel backups. Previously, each backup created a replication slot with the same default name, causing parallel backups to conflict and terminate with an error.
Fixed backup failures that occurred if a file disappeared between scanning a directory and attempting to access it, for example, if it was deleted by Postgres Pro.
Fixed an issue with
PTRACKbackups. Previously, an error would occur ifptrackwas not added toshared_preload_librarieswhileptrack.map_sizewas set to non-zero.Fixed an issue that manifested as a “could not stat file” error and could cause backup or restore processes to crash. Temporary files created by the CFS garbage collector are now skipped during these operations.
Fixed an issue where the
--external-dirsoption failed to process symbolic links correctly, causing the operation to fail with an error.
Updated pgpro_multiplan to provide the following enhancements and bug fixes:
Implemented the ability to apply plans of any types to queries containing hints. In these cases, hints are silently ignored.
Added debugging information for cases when plans cannot be applied to queries. This information is displayed if the log_min_messages parameter is set to
DEBUG1or a lower level.Fixed an issue where a parameterized query could not be registered in the
baselinemode.Fixed an issue that could cause a server failure after changing the plan type to
baseline. Now the pgpro_multiplan_set_plan_type function does not accept thebaselinevalue for theplan_typeparameter.Fixed an issue that could cause a server failure when using the
EXPLAINcommand with theGENERIC_PLANparameter in queries managed by pgpro_multiplan. Now this command works correctly.Fixed an issue that occurred when specifying an invalid plan type in the pgpro_multiplan_restore function. Now the function displays an error about an unsupported type.
Fixed an issue that could occur after dropping an object referenced in an existing registered query. Now pgpro_multiplan invalidates the registered query on any
DROPcommand and displays the corresponding message.Fixed a segmentation fault that could occur when using PL/pgSQL variables as parameters of queries managed by pgpro_multiplan.
Upgraded pgpro_pwr to version 4.15, which provides enhancements and bug fixes. Notable changes are as follows:
Added support for statistics of the PostgreSQL 19 core.
Added support for pg_stat_statements 1.13.
Added support for pg_stat_kcache 2.3.2.
Added new report sections and fields.
Fixed the missing integrity constraint, which prevented the cascade deletion of subsample data due to retention policy and thus caused remaining of now-redundant rows in the session statistics table.
Updated pgpro_result_cache to provide the following changes and bug fixes:
Prohibited specifying negative values for the
OFFSETandLIMITarguments of theresult_cachehint. Previously, specifying negative values caused both arguments to be ignored with warnings. Now such values are treated as errors.Fixed an issue that could occur when using pgpro_result_cache for queries with PL/pgSQL variables as parameters.
Fixed an issue where queries with pgpro_result_cache hints created in functions continued to use the cache after disabling the extension.
Upgraded pgpro_scheduler to version 2.14 to fix an issue with the
clean_log()andclean_at_jobs_done()functions, which failed with an error when called afterSET ROLEto a superuser role. The redundantsession_usercheck is now removed, so the functions work as expected.Upgraded the pgpro_scout utility to version 1.0.4.
Upgraded pgpro_stats to version 1.11 to provide the following enhancements and bug fixes:
Added the
pgpro_stats.enable_warningsconfiguration parameter that adds a warning to theplanfield of thepgpro_stats_statementsview if the plan was executed with partition pruning.Fixed a plan normalization issue that could be observed for queries executed using the
EXPLAIN EXECUTEcommand by adding a hook for saving information needed for the plan normalization. As a result, sensitive information is no longer exposed in query plans displayed in pgpro_stats views and pgpro_pwr reports.
Upgraded pgpro_validate to version 1.2.0 to include the following new features and bug fixes:
Added the
--list-cfm-orphansflag to thedatabase_filescommand to detect and report orphaned CFS map files.Fixed SQL injection vulnerabilities in query generation.
Fixed a quoting issue that led to “relation does not exist” errors when running the
molotilkacommand on tables in schemas whose names contain uppercase or special characters.Fixed false “no matching entry in pg_attribute table” warnings for
pg_shdependrows whose objects belong to other databases of the cluster.
Upgraded pgvector to version 0.8.5.
Upgraded pg_wait_sampling to version 1.1.1 to extend its wait event statistics functionality, previously available only in pgpro_stats, and to provide the following enhancements and bug fixes:
Added the
pg_wait_sampling.history_dimensionsandpg_wait_sampling.profile_dimensionsconfiguration parameters that allow you to customize the set of dimensions recorded in the history and the profile.Extended the
pg_wait_sampling_current,pg_wait_sampling_history, andpg_wait_sampling_profileviews with additional wait event dimensions.Added the
pg_wait_sampling_statementsview that provides wait event statistics grouped by query and plan identifiers.Added the
pg_wait_sampling_objectsview that provides wait event statistics for configurable dimensions, such as database, user, client address, application, backend, or session.Fixed an issue that caused queries to
pg_wait_sampling_profileto hang when the collector process stopped. Hung queries could not be cancelled normally, and the cluster required an emergency restart. The collector now restarts automatically, and queries return an error when the collector is unavailable.Fixed handling of the
pg_wait_sampling.profile_periodconfiguration parameter, which was previously ignored in the collector's timing calculation. Sampling interval accuracy has also been improved.
Upgraded plpgsql_check to version 2.10.3.
Updated rum to fix a crash that could occur during a RUM index scan if a concurrent
VACUUMremoved all items from a posting tree leaf page.
E.1.2. Migration to Version 16.15.1 #
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.13 or earlier to Postgres Pro Enterprise 16.14, refer to the upgrade and migration instructions for BiHA.
To upgrade the citus extension from version 12.1 to version 13.0, see the upgrade instructions.
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.