E.1. Postgres Pro Shardman 17.9.2 #

Release date: 2026-04-06

This release is based on Postgres Pro Shardman 17.7.1 and PostgreSQL 17.9. It also inherits a number of enhancements and bugfixes from Postgres Pro Enterprise 17.9.2. All changes inherited from PostgreSQL 17.9 are listed in PostgreSQL 17 Release Notes. As compared with Postgres Pro Shardman 17.7.1, the following differences are worth mentioning:

E.1.1. Core and Extensions #

Compared to Postgres Pro Shardman 17.7.1:

  • Ended support for Debian 11.

  • Fixed a bug with the foreign server update after restoring from a backup.

Enhancements and bugfixes inherited from Postgres Pro Enterprise 17.9.2:

  • Implemented the ability for the optimizer to add Index Only Scan plan nodes below Append nodes that are generated for OR clauses if the enable_appendorpath parameter is set to on. This allows producing more efficient query plans and improving performance.

  • Implemented the ability for the optimizer to simplify NOT NOT expression constructions to expression in correlated subqueries, which allows pulling up these subqueries into the main query plan and improving performance.

  • Added a possibility for the optimizer to transform correlated subqueries with an equality expression into IN correlated subqueries when the enable_extra_transformations parameter is set to on. This allows the optimizer to pull up the resulting subqueries and improve performance.

  • Added the ability for the query planner to transform OR clauses into UNION ALL queries. Such transformations can significantly improve performance and may be especially useful for queries referencing multiple tables. To enable this functionality, use the new enable_orunion_transformation configuration parameter.

  • Extended the use of the in-memory system catalog to include temporary functions, procedures, and sequences. Previously, it was used only for temporary tables and their indexes.

  • Improved performance of non-transactional truncate operations on temporary tables. Now if all pages of the temporary table main data fork are located only in the temp_buffers cache, this table may be instantly truncated.

  • Implemented the experimental multi-segment insertion feature that allows bulk data insertion to the same table in multiple threads simultaneously. This feature is not recommended for using in production for now.

  • Reduced the amount of debugging information sent to the client or written to the server log. DEBUG1 severity level messages about operations with temporary tables are no longer returned.

  • Optimized performance of page tuple freezing.

  • Introduced the following changes to the implementation of crash_info:

    • Changed the name format of crash_info output files to specify date and time with microseconds.

    • Fixed a bug that could occur when trying to write a query text to crash_info output files.

  • Implemented the following enhancements and bug fixes for CFS:

    • Improved CFS performance that now uses compression contexts with the default compression library of zstd.

    • Changed the behavior of the cfs_compression_ratio function. Now the function returns NaN for uncompressed relations.

    • Fixed an issue where pg_rewind could fail when used with unlogged tables containing TOAST data in a compressed tablespace. The issue was caused by missing cleanup of the *.cfm files when copying the init fork for the unlogged table.

    • Fixed an issue with stopping CFS garbage collection when it would continue running after being disabled by setting cfs_gc to false.

  • Fixed a possible segmentation fault in the autovacuum launcher caused by accessing an invalid pointer.

  • Fixed a segmentation fault that could occur when trying to add an entry to the catalog cache.

  • Fixed an issue in the skip_temp_rel_lock configuration parameter operation logic, which could cause the lock skipping for temporary relations to fail. The issue could occur after the transaction rollback and wraparound of OIDs.

  • Fixed an issue where the messages generated during lock capture contained incorrect 64-bit XIDs.

  • Fixed an issue, which could cause autovacuum to cycle through some databases while failing to vacuum others. This happened due to autovacuum soft limits, which could be set by the vacuum_freeze_table_age and vacuum_multixact_freeze_table_age configuration parameters. These limits were removed. They are no longer required, since the autovacuum_freeze_max_age and autovacuum_multixact_freeze_max_age parameters can now be changed without restarting the server.

  • Fixed an issue that could occur during collection of vacuum interruption statistics for relations and indexes shared across all databases in a cluster. Also, the number of parallel vacuum interrupts is now taken into account in the statistics.

  • Fixed an issue with parallel query execution mechanism for queries that involve at least one temporary table. Previously, only temporary table pages were flushed to the disk, excluding other related pages (index pages, TOAST table pages, etc.). Now, before executing any plan or subplan in parallel mode, all temporary relations are also flushed.

  • Added support for SUSE Linux Enterprise Server (SLES) 16.

  • Upgraded pg_proaudit to provide the following enhancements:

    • Added the pg_proaudit.log_rows configuration parameter that enables or disables logging of the number of rows affected by an SQL command.

    • Added a new event log field: connection duration. DISCONNECT events now contain the total connection duration alongside other connection parameters.

  • Upgraded pg_probackup to version 2.8.13 Enterprise, which provides the following new features, optimizations, and bug fixes:

    • Added verification and validation of recovery-target-name in the WAL archive during recovery. This prevents situations where the Postgres Pro Shardman cluster fails to start due to an unreachable recovery target. If a named recovery target was created before the last backup, the recovery process now correctly checks its existence.

    • Added the ability to pass parameters to a remote agent in a configuration file format to improve flexibility when working with backup agents in distributed environments.

    • Added support for virtual-hosted-style requests for S3 storages, including automatic detection of virtual-hosted-style based on the hostname format (when the hostname starts with the bucket name) and improved compatibility with various S3 API implementations (AWS S3, SberCloud, and others). In virtual-hosted-style URLs, the bucket name is included in the hostname, eliminating the need to add it to the file path.

    • Fixed an issue where the --skip-block-validation flag was being ignored during backup. Previously, this resulted in an error if the cluster contained pages with invalid checksums in their headers. This is critically important when enabling checksums in older clusters that may have pre-existing checksum issues. Also, a warning is now displayed when --skip-block-validation is used.

    • Improved backup status reporting. The backup status is now set to DONE before the validation phase. Backup metadata is written twice: before validation and after backup completion. The show command now displays a more accurate backup status during long-running validation checks.

    • Fixed an issue that could result in a crash if the backup_content.control file was deleted before the DELTA backup.

  • Upgraded pgpro_controldata to version 18.2.0.

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

    • Restored the possibility to track aggregate statistics for sessions, which had previously been removed as unused. Whether aggregate statistics for the sessions are tracked is controlled by the pgpro_stats.track_sessions configuration parameter.

    • Improved the behavior of session-tracing functions. The pgpro_stats_trace_insert and pgpro_stats_trace_update functions now fail with an error if some filter attribute is listed in the passed sequence of key-value pairs more than once. If a wrong argument is passed to the pgpro_stats_trace_update function, the filter no longer gets updated. The pgpro_stats_trace_show function now returns exactly the values of explain* attributes that were specified for the filter.

    • Fixed an issue to avoid crash when two or more constants are marked as having the same location in the SQL statement text.

  • Fixed an issue that could cause operations attempting to evict a buffer from the temp_buffers cache to fail with the block N of table_name is still referenced message.

  • Fixed an issue that allowed memory allocation in a critical section, which could cause errors to be reported with PANIC severity level instead of ERROR.

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

E.1.2. Management Utilities #

Compared to Postgres Pro Shardman 17.7.1:

  • Added the shared_xmin_raw metric to the shardman.pg_stat_csn view that shows the oldest XID disregarding the catalog transaction ID horizon.

  • Added the --for-upgrade parameter for the shardmanctl restart command. Also added the --with-restart parameter for the shardmanctl upgrade command.

  • Improved the protection of Postgres Pro Shardman dictionaries against modifications by malicious users.

  • Updated the manual shard switching mechanism to take into account node priorities.

  • Updated the etcd version to 3.6.8 and fixed a corresponding bug for the cases when the etcd node did not send its version.

  • Fixed the shardmanctl shard rm command failure with non-standard instance ports.

  • Fixed a bug with status display if the BiHA was unavailable. Fixed the shardmanctl replicas reinit command failure for the nodes where BiHA was in the NODE_ERROR state.

  • Fixed the following vulnerabilities: CVE-2025-61724, CVE-2025-58187, CVE-2025-47912, CVE-2025-58183, CVE-2025-61723, CVE-2025-58186, CVE-2025-58185, CVE-2025-58188, CVE-2025-61725, CVE-2025-61727, CVE-2025-61729, CVE-2025-61726, CVE-2025-68121, CVE-2026-33186.

  • Provided the following bugfixes for checkup manager:

    • Fixed the shardmanctl schema verify --filter sequences command failure to detect sequence inconsistencies across shards.

    • Fixed the shardman.check_sharded_tables function failure to detect sharded table issues.

  • Fixed visibility issues when reading and updating data in the same query.