E.1. Postgres Pro Enterprise 17.10.1 #

Date: 2026-06-15

E.1.1. Overview #

This release is based on PostgreSQL 17.10 and Postgres Pro Enterprise 17.9.2. All changes inherited from PostgreSQL 17.10 are listed in PostgreSQL 17.10 Release Notes. As compared with Postgres Pro Enterprise 17.9.2, this version also provides the following changes:

  • Implemented the ability for the query planner to push down join conditions of an outer query into subqueries, which allows choosing more effective join paths in query plans and improving query performance. This optimization can be enabled using the new enable_join_predicate_pushdown configuration parameter and can be useful for 1C workloads.

  • Added the log_parameter_types configuration parameter that controls whether each bind parameter value for a prepared statement in log messages is prefixed with its data type. For example, [integer] $1 = '42'.

  • Added the enable_background_freezer_worker configuration parameter that enables or disables launching the background freezer worker. The parameter may be useful if using UDP sockets is not allowed, for example, due to security requirements.

  • Optimized the mechanism for join selectivity estimation to work with large MCV lists (most common values). Its algorithmic complexity was quadratic and caused poor performance while working with large target values for table column statistics. This optimization can be useful for 1C workloads.

  • Provided interoperability of the in-memory system catalog and the parallel query execution mechanism for temporary tables. This interoperability is useful for 1C.

  • Optimized the usage of shared memory buffers by temporary tables. Now, the records of pg_statistic, pg_index, and pg_depend system catalogs related to temporary tables are stored in the in‑memory system catalog.

    Additionally, when the in‑memory catalog is used, no permanent objects can now depend on temporary objects. For example, creating a permanent table with a column of a temporary type is no longer allowed, as well as any other dependencies between permanent and temporary metadata. Previously, such dependencies were permitted.

    The in-memory system catalog functionality may be useful for 1C.

  • Optimized the mechanism of selectivity estimation for the query planner with the functionality enabled by the planner_upper_limit_estimation configuration parameter. This optimization can be useful for 1C.

  • Optimized instant truncation of temporary tables.

  • Restricted changes to the hba_file configuration parameter in the certified edition of Postgres Pro Enterprise. For enhanced security, it is also recommended to use pg_integrity_check, which automatically verifies the integrity of critical files before server startup.

  • Added build IDs of executables and shared libraries to crash_info output files.

  • Added notifications of using Postgres Pro trial builds, which are provided for a limited period of time. The new configuration parameter pgpro_trial_expiration_date reports the expiration date of a trial build. Upon expiration, the database becomes read-only.

  • Improved planning for self-comparison conditions, such as col = col. Previously, these constructions could lead to incorrect cardinality estimation and cause a sequential scan to be chosen instead of a more optimal plan. Such strict comparisons are now transformed into an equivalent IS NOT NULL check when it is safe to do so, resulting in better plan choices and more accurate cardinality estimation.

  • Improved standby promotion performance by properly accounting for all changes to free space map blocks on a standby server during write operations. Previously, buffer page eviction could cause free space map inconsistencies during promotion under certain workloads, leading to standby slowdowns after promotion without causing errors.

  • Implemented the ability to cache file descriptors for directories in PGDATA and updated the open and stat system calls to use these cached descriptors to reduce CPU usage when planning SQL queries.

  • Fixed an issue with pg_dump failing to dump data due to the dependency on custom data types if executed with the --transfer-dir option.

  • Fixed an issue that could occur when using autopreparing for queries containing hints. Now autopreparing skips such queries, allowing you to use it concurrently with pg_hint_plan and pgpro_result_cache.

  • Fixed an issue that could cause a backend to stop when calling the pg_diagdump function with the disabled crash_info configuration parameter. Now an error message is returned.

  • Fixed an issue with restoring a cluster using pg_dump/pg_dumpall. Previously, pg_dump/pg_dumpall could generate an invalid CREATE DATABASE command with a duplicated locale_provider parameter. Now, the parameter is produced only once, avoiding restore and upgrade errors.

  • Fixed an issue with estimating the number of join rows when the enable_compound_index_stats parameter is set to on.

  • Fixed false positives for checks enabled by the wal_consistency_checking option.

  • Fixed a memory leak that could occur while processing the EXCEPTION clause when user PL/pgSQL code executed an autonomous transaction.

  • Fixed memory estimation for hash joins by accounting for the memory used by batches. Previously, this memory was not included in total memory consumption. Hash joins now also balance the in-memory hash table size depending on the number of batches, which prevents excessive disk usage.

  • Fixed an issue that could cause resource prioritization to be disabled in a session after any error during a query.

  • Implemented the following enhancements and bug fixes for CFS:

    • Added support for indexes and TOAST-tables when estimating their compression ratio using the cfs_estimate function.

    • Improved error messages that are logged for damaged CFS blocks. Now the error message includes an exit code and an error message from the corresponding compression library.

    • Fixed an issue where enabled CFS could slow the DROP DATABASE execution. The issue occurred because system interrupts were not processed properly while the command was waiting to acquire a lock for cfs_gc_lock_file.

  • Removed the functionality of the optimizer for adding Index Only Scan plan nodes below Append nodes that are generated for OR clauses if the enable_appendorpath parameter is set to on. This functionality could cause incorrect query execution plans and resulting data.

  • Added the pgbouncer_exporter utility to export Prometheus metrics for pgbouncer.

  • Added the pgpro_logical_slot extension to manage logical replication slots.

  • Added the pgpro_temp_stats extension that collects multicolumn statistics on temporary tables referenced by queries.

  • Added the pgpro_validate utility to check data integrity of a Postgres Pro instance.

  • Upgraded aqo to version 3.2, which provides the following enhancements and bug fixes:

    • Added the new aqo_storage_usage function that allows you to get current and maximum sizes of aqo storage and allocated dynamic shared memory.

    • Optimized the internal structure of the aqo_data storage, as well as improved the mechanisms for allocating dynamic shared memory and lock usage when working with storage data. These enhancements allowed fixing an issue with updating aqo_data storage that was caused by exclusive locks on the underlying hash table and resulted in constant growing of idle in transaction sessions and unstable aqo operation.

    • Optimized operation of the least recently used (LRU) cache mechanism for the auto mode.

    • Fixed a segmentation fault that could occur after aborting a nested autonomous transaction for which aqo was used. Now aqo checks the nesting level of autonomous transactions and does not clear its local cache when aborting nested transactions.

  • Upgraded the BiHA solution to provide the following features, optimizations, and bug fixes:

    • Upgraded biha to version 1.8.

    • Stabilized the multi-level geographical distribution and disaster resilience functionality. It is no longer considered experimental.

    • Added the --username option of the bihactl utility. You can use the new option in the following cases:

      • When you initialize a BiHA cluster from scratch and want to set the bootstrap superuser name other than postgres.

      • When you convert an existing node where the bootstrap superuser name is not postgres.

    • Implemented a set of optimizations and fixes for the multi-level geographical distribution and disaster resilience functionality connected with replication, manual leader nomination, and autorewind.

    • Implemented a set of internal optimizations and fixes for the cascading replication functionality to improve its reliability.

    • Added the biha.ssl_certificate and biha.ssl_private_key configuration parameters. You can use these parameters to change paths to the SSL public certificate and private key used to secure service connections between nodes of the initialized BiHA cluster. For more information, refer to Managing SSL for Service Connections.

    • Added the biha_replication_user role presence check when converting a node using bihactl cluster init --convert.

    • Enhanced the bihactl error message clarity when executing the bihactl node add --convert-standby command with an empty --pgdata value.

    • Fixed a bug where BIHA_CLUSTER_MANAGEMENT_ROLE had no privileges to execute BiHA functions after update of the biha extension version during the cluster upgrade.

    • Fixed a bug where failover was not executed because the LSN of the referee in the referee mode was considered during elections if it was higher than the follower's LSN.

    • Fixed an issue where the [BiHA BC] NC config list getter failed warning frequently appeared in the log when calling the biha.config function or querying the biha.status_v view.

    • Fixed a bug where an attempt to remove a running node from the cluster caused a process termination on a node being removed.

    • Fixed a bug where an attempt to delete a segment caused a process termination.

    • Fixed a bug where the leader could not be manually set using the biha.set_leader function if there was a node in the NODE_ERROR state in the cluster.

    • Fixed an issue of the pg_rewind tool where a BiHA cluster node failed to be recovered correctly in the single user mode if the node was stopped in the immediate mode.

    • Fixed incorrect behavior of the --use-leader option of bihactl where the utility accessed all cluster nodes instead of the leader only.

    • Fixed a bug where adding a follower using pg_probackup failed.

    • Fixed a bug where the password_encryption value was not considered by bihactl when creating the pg_hba.biha.conf file.

  • Upgraded the ODBC driver to version 18.00.0001.

  • Upgraded orafce to version 4.16.5.

  • Upgraded pg_hint_plan to change the handling of multiple blocks of /*+ ... */ comments. Previously, pg_hint_plan always raised an error. Now the behavior in this case is managed by the pg_hint_plan.parse_messages parameter.

  • Upgraded pg_query_state to fix an issue that could cause the module to hang while waiting for the response from the backend that executes the investigated query.

  • Upgraded pg_proaudit to provide the following enhancements and bug fixes:

    • Added the pg_proaudit.log_file_mode configuration parameter that specifies permissions for new event log files created by pg_proaudit. Note that regardless of this parameter, the server owner always retains access to the log files.

    • Added a new event field for all types of events logged in CSV files and syslog: IP address of the event source. Previously, this field was displayed only for AUTHENTICATE events logged in the CEF format.

    • Extended the use of the pg_proaudit.log_rows configuration parameter that enables or disables logging of the number of rows affected by an SQL command. Now the number of affected rows is written for all formats of logged events.

    • Added validation of the unique ID of the event (UUID) to avoid invalid memory access.

    • Fixed an issue with incorrect filling of the dst field for events logged in CEF format.

    • Fixed an issue with excessive memory usage when processing DISCONNECT events. Previously, a hash table sized proportionally to max_connections caused unnecessary memory consumption when the value was large. The data is now stored more efficiently.

    • Fixed a parser error in pg_proaudit. Previously, pg_proaudit left some characters unescaped when logging events in the CEF format. Now, symbols are escaped correctly in accordance with the CEF specification.

  • Upgraded pg_probackup to version 2.8.14 Enterprise to provide the following improvements and bug fixes:

    • Added support for Virtual Host for S3 requests.

    • Added support for absolute paths in the --wal-file-path option.

    • Fixed incremental backups in PAGE mode with the --stream option. With this combination of parameters, WAL files are now correctly saved both inside the backup and in a separate archive.

  • Upgraded the pgpro_bindump module to include the following improvements and bug fixes:

    • Added support for the --exclude-path option to exclude specific files or directories from backup in PRO mode.

    • Optimized the backup performance by excluding temporary files of the postmaster process.

    • Fixed an incorrect package name in the error message that appeared when the pgpro_bindump failed to load libpb3_encoder.so. The message now correctly recommends installing the libpb3-encoder package instead of the erroneous libpgprobackup3.

    • Fixed an issue with the CFS garbage collector (GC) being blocked by the backup process, potentially causing write locks during long backups. Both processes now lock only specific data files briefly, avoiding mutual blocking.

  • Upgraded pgpro_datactl to version 1.5 to fix an issue with compressing uncompressed tablespaces. Previously, compression would fail if any block size exceeded the BLCKSZ parameter value.

  • Upgraded the pgpro_gbtree extension to include the following enhancements and bug fixes:

    • Added the ability to use the ON CONFLICT clause to specify an action alternative to raising a unique constraint violation error for the unique global index.

    • Added the ability to create a global index on a column included in a primary key.

    • Added the ability to specify the CONCURRENTLY option when creating or rebuilding a global index. This allows a global index to be built without taking any locks that prevent concurrent inserts, updates, or deletes on the table.

    • Added the gbtree.usage_partition_fraction and gbtree.partitions_number_threshold configuration parameters that control whether a global index is used by specifying the percentage or the number of table partitions, respectively.

    • Added the ability to perform autovacuum for global indexes.

    • Fixed a segmentation fault that could occur when trying to execute the ALTER TABLE ... ATTACH PARTITION command if a parent partitioned table had a global index and the table being attached had a column order different from that of the parent table.

    • Fixed an issue that could cause high memory consumption and occur when trying to update millions of rows of a partitioned table with a global index.

    • Fixed an issue with global indexes failing to be rebuilt for columns whose type was changed during the ALTER COLUMN ... TYPE ... USING ... command execution. Now global indexes are rebuilt correctly.

  • Upgraded pgpro_multiplan to version 1.6, which provides the following enhancements and bug fixes:

    • Implemented the ability to restore baselines and template plans from plan backups. For this, the pgpro_multiplan_restore function now accepts the baseline and template values for the plan_type argument and contains the new wildcards argument for template plans. Also added the following arguments to this function: sample_string to specify the query with constants and status for future usage.

    • Implemented the ability to add plans to a baseline using the pgpro_multiplan_register_query and pgpro_multiplan_freeze functions. The last function now can accept the baseline value for the plan_type argument.

    • Implemented the ability for pgpro_multiplan to register executed prepared statements automatically when the pgpro_multiplan.auto_tracking parameter to is set to on.

    • Added the new pgpro_multiplan_enable, pgpro_multiplan_enable_baseline, and pgpro_multiplan_enable_template functions that allow enabling and disabling certain existing plans.

    • Renamed the following functions:

    • Removed all the functionality related to storing and sharing global prepared statements for multiple sessions.

    • Removed the constants and prep_consts fields from the pgpro_multiplan_captured_queries view. These fields were redundant since query constants are contained in the sample_string field value.

    • Fixed an issue that could cause an assertion failure when trying to freeze the same plan for the second time.

    • Fixed an issue that could cause an assertion failure when trying to register a query with the DO NOTHING rule.

    • Fixed an issue that could cause an assertion failure when using the pgpro_multiplan_register_query function with incorrect optional arguments specifying types of query parameters.

    • Fixed a segmentation fault that could occur when trying to register a query with a common table expression (CTE) or INSERT ... SELECT.

    • Fixed an issue where the sample_string values for baselines were saved with parameters rather than constants, which could cause errors when managing these baselines, in particular, when updating their costs using the pgpro_multiplan_update_baseline_cost function.

    • Fixed an issue where baselines did not save non-default values of configuration parameters, which could cause queries to produce plans different from fixed plans in another environment.

    • Fixed an issue with incorrect check of the table_hash value for template plans, which could cause applying these plans to inappropriate queries.

  • Upgraded pgpro-orautl to version 2.3.

  • Upgraded pgpro_planner to version 1.2 to fix an issue that could result in certain problems of extension operation if the aqo module was loaded before this extension.

  • Upgraded pgpro_pwr to version 4.13, which adds support for cluster-wide Postgres Pro Shardman statistics and provides optimizations and bug fixes.

  • Upgraded pgpro_result_cache to provide the following bug fixes:

    • Fixed an issue with memory allocation that could occur in pgpro_result_cache with the enabled pgpro_result_cache.consistent parameter when executing a very large number of queries in one transaction.

    • Fixed an issue that could occur when using the result_cache hint with the offset and limit arguments if the size of the returned result set exceeded the pgpro_result_cache.max_entry_size limit.

  • Upgraded pgpro_scheduler to version 2.13.0, which provides the following changes:

    • Improved logging mechanism. Log messages are more consistent and informative. When a cron job executor background worker is started, the database manager now writes a log message containing the worker's process identifier (PID). This makes it easier to trace worker activity and correlate log entries.

    • Extended the use of resource prioritization to pgpro_scheduler background workers. Previously, this functionality affected only regular client backends. Now it is also possible to set resource usage weight for scheduler workers, providing more flexibility in allocating system resources.

    • Fixed an issue with the schedule.get_self_id() function returning an incorrect job ID for cron jobs. Now schedule.get_self_id() works as expected in both scheduled and one-time jobs, returning the proper job ID.

    • Fixed an issue with deactivating a cron job with next_time_statement. Previously, if this job was deactivated while being executed, it could still remain active. Now, the job is immediately deactivated regardless of its execution state.

  • Upgraded pgpro_sfile to fix a file descriptor leak in case of errors.

  • Upgraded pgpro_stats to provide the following bug fixes:

    • Fixed excessive memory consumption by a query that used pgpro_stats with pgpro_stats.track set to all. With this setting, a function that assigned plan IDs was called multiple times, and the accumulated memory was not optimally released.

    • Updated autopreparing and pgpro_stats to fix issues that could occur with autoprepared query normalization in pgpro_stats. Now for proper query normalization, autopreparing stores the cached plan together with certain additional information to be passed to pgpro_stats when the query is executed.

  • Upgraded pgpro_tune to provide the following enhancements:

    • Improved the utility output to include the used preset and display the correct format of date and time when configuration parameters were applied.

    • Updated presets to improve performance of Postgres Pro.

    • Fixed an issue where the shared_buffers configuration parameter was calculated incorrectly when using initdb with the enabled pgpro_tune extension. This issue could cause the command to run slower.

  • Upgraded pg_variables to support Postgres Pro/ PostgreSQL 18.

  • Upgraded pgvector to version 0.8.2.

  • Upgraded plpgsql_check to version 2.9.1.

  • Upgraded proxima to provide the following features, enhancements, and bug fixes:

    • Extended proxima capabilities to accept incoming connections. Previously, proxima was able to accept incoming connections either on a single specified IPv4 address, or any available IPv4 addresses of the host. Currently, proxima can accept incoming connections on multiple addresses. You can use IPv4 or IPv6 addresses, as well as paths to Unix socket directories. For more information, refer to the description of the proxima.address configuration parameter.

    • Implemented the adaptive balancing algorithm, which determines how CPU, RAM, and disk I/O load impacts node selection during balancing. To specify a share of each resource, use the proxima.load_balancer_cpu_weight, proxima.load_balancer_io_weight, and proxima.load_balancer_ram_weight configuration parameters. For more information about the new balancing algorithm, refer to the description of the proxima.load_balancer_algorithm configuration parameter.

    • Implemented the adaptive-ram and adaptive-io balancing algorithms, where workloads are distributed across replicas depending on RAM and disk I/O load respectively. For more information, refer to the description of the proxima.load_balancer_algorithm configuration parameter.

    • Implemented new counters for system metrics: system.avail_ram_b, system.total_ram_b, and system.io_avg_latency_ms. For the full list of available counters, refer to the System Counters table.

    • Implemented support for the certificate authentication method. You can specify the path to the file containing public CA certificates using the new proxima.ssl_ca configuration parameter. For more information, refer to Enabling SSL for Incoming Client Connections.

    • Implemented the ability to proxy user authentication to the primary (leader) node. You can specify where to perform user authentication for each node using the new proxima.auth_policy configuration parameter. For the BiHA referee node, the authentication is now proxied to the leader by default.

    • Enhanced operation of proxima in a GDBiHA cluster. The proxima extension can now redirect queries from the P2F port to the front follower.

    • Implemented the experimental functionality of the internal prepared statement storage, which allows proxima to avoid establishing dynamic dedicated sessions for prepared statements. Previously, this functionality was supported via integration with multiplan. Now, you can manage the prepared statement storage using the new configuration parameters of proxima: proxima.ps_enabled, proxima.ps_shared, and proxima.ps_cache_size.

    • Implemented a range of internal fixes and optimizations to improve performance and reliability of the proxima extension.

    • Fixed a bug where proxima endlessly restarted when its SSL configuration was incorrect.

    • Fixed a bug where proxima would hang when addressing several databases simultaneously.

  • Upgraded rum to improve performance of RUM index search using the index operators <=| and |=> when the order_by_attach index storage parameter is set to true.

E.1.2. Migration to Version 17.10.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.

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.

To upgrade your BiHA cluster from Postgres Pro Enterprise 17.9 or earlier to Postgres Pro Enterprise 17.10, refer to the upgrade and migration instructions for BiHA.

To upgrade Postgres Pro Enterprise from version 16.X to version 17.X together with the citus extension of version 13.0, see the upgrade instructions.

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 17.