E.2. Postgres Pro Shardman 17.6.1 #

Release date: 2025-11-17

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

E.2.1. Core and Extensions #

  • Added the fast path optimization for queries that work with data located on the same partition. SELECT,UPDATE, DELETE commands and prepared statements are supported with Silk. Fast path cannot be used if the extra_float_digits configuration parameter is less than 0. Disabled by default.

  • Added the public.list_always_shippable() function to the postgres_fdw that returns a list of always shippable procedures.

  • Added support for the Postgres Pro Shardman metadata reading in pgpro_controldata.

  • Allowed displaying statistics on size of the MT_SPI message components (bytes) sent from the node with the shardman.pg_stat_silk_msg_components view.

  • Added a limitation for the local tables that now cannot inherit global tables.

  • Added a feature to assign a row-level security (RLS) policy to global and sharded tables.

  • Added support for the extended password policies and global profiles with the shardman.extended_password_policies configuration parameter and the shardman.extended_password_policies_skip_users configuration parameter to specify system users for which no exchange of information on authorization events between Postgres Pro Shardman cluster nodes takes place and which cannot be locked. They, however, can be authorized on a Postgres Pro Shardman standby.

  • Added support for resolving multiple addresses when configuring a foreign server for Silk.

  • Added two READ COMMITTED modes to avoid dirty reads, with or without the support of the CSN snapshot per top-level statement managed by the enable_csn_snapshot_for_read_committed configuration parameter.

  • Limited the shardman.sync_schema editing to the superuser privileges.

  • Introduced SSL support for Silk.

  • Updated functions of the shardman.try_advisory_xact_lock*() type that now return false instead of throwing an error.

  • Updated the shard creating process, now the postgres DB is automatically created on a referee node.

  • Updated the supported version of pgpro_pwr to 4.10.

  • Updated the supported version of amcheck to 1.4.

  • Updated the supported version of aqo to 3.1.

  • Updated the supported version of dblink to 1.2.

  • Updated the supported version of pg_proaudit to 2.0.

  • Updated the supported version of pgpro_stats to 1.9-sdm4.

  • Updated the supported version of pg_filedump to 18.0.

  • Updated the supported version of pgpro_controldata to 18.1.

  • Updated the supported version of postgres_fdw to 1.4.

  • Updated the supported version of ptrack to 2.5.

Enhancements and bugfixes inherited from Postgres Pro Enterprise 17.6.1:

  • Added the share_lock_fk storage parameter that enables or disables acquisition of a single SHARE lock on the table during foreign key constraint checks.

  • Added a possibility for the optimizer to use memoize nodes for parameterized ANTI JOINs when the enable_extra_transformations parameter is set to on.

  • Improved performance by reducing the number of lock requests for the pg_attribute and pg_statistic tables for queries with a large number of relations that are not present in the system cache. This may be useful for some usage scenarios with 1C.

  • Improved the efficiency of parallel processing of table indexes in a parallel mode by refactoring the parallel autovacuum code.

  • Updated CREATE DATABASE, createdb, and initdb to display an information message when the value of lc_collate is used as the default for icu_locale or --icu-locale.

  • Optimized the behavior when working with the COALESCE function. Now this function is replaced with one of its arguments if all other arguments were evaluated to null. This allows improving the selectivity of query clauses and producing better execution plans.

  • Introduced the following changes to the implementation of crash_info:

    • Added the crash_info_timer, crash_info_timer_interval, and crash_info_query_threshold configuration parameters that allow profiling long queries in crash_info output files.

    • Extended the diagnostic information that the crash_info_dump configuration parameter can specify to write in case of a backend crash. By default, now the general information on the signal is dumped and for Linux x64, also the information on the processor state and bytes near RIP (return instruction pointer). All this ensures better diagnostics, in particular, in case of SIGILL (illegal instruction) signals. The way of dumping stack files in case of crashes has also been changed for Linux x64. Besides, memory_context has been removed from the default list of sources to be dumped in order to avoid failures that could occur when writing the diagnostic information.

  • Implemented the following enhancements and bug fixes for CFS:

    • Improved compressed tablespace operations on s390/s390x architectures.

    • Improved the compression ratio estimation for tables using the cfs_estimate(relation) function. Note that cfs_estimate(relation) should be used only after a checkpoint to avoid incorrect estimations.

    • Disabled truncation for compressed relations during vacuum operations.

    • Removed encryption support for CFS, including the cfs_encryption configuration parameter.

  • Fixed page image inconsistency during heap insert on an empty page. Previously, this could result in incorrect page contents on standby servers.

  • Fixed a possible race condition in the walreceiver process.

  • Fixed an issue in LISTEN/NOTIFY queue handling, which caused failure to obtain transaction status. Previously, VACUUM FREEZE could advance datfrozenxid too far forward.

  • Fixed replication issues caused by incorrect WAL horizon advancement. Previously, if transaction freeze was initiated when calculating the page base for 64-bit XIDs rather than by VACUUM, an incorrect horizon value was written to WAL. This could result in invalidation of logical replication slots or replication lag on physical standbys.

  • Fixed a possible segmentation fault, which could occur when handling an error during global index creation.

  • Upgraded aqo to provide the following enhancements and bugfixes:

    • Added the tmpoids field to the aqo_data view and the tmpoids parameter to the aqo_data_update function to support queries that involve temporary tables along with persistent tables.

    • Fixed the race condition when calling the aqo_cleanup function from different sessions.

    • Fixed an issue where aqo learning data was not saved for queries that use materialization.

    • Fixed an issue with learning on early terminated nodes. Now for these nodes, if the number of actual rows exceeds the number of predicted rows, aqo learns but with the minimum reliability value. Otherwise, learning on these nodes is disabled.

  • Implemented the ability to configure LDAP authentication for pgbouncer by means of PAM (Pluggable Authentication Modules). For more information, see LDAP Authentication Configuration for pgbouncer.

  • Upgraded pg_proaudit to provide the following enhancements:

    • Added support for CEF format for event log files.

    • Adjusted pg_proaudit output. xid and vxid fields are no longer displayed if they are zero.

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

    • Implemented the ability to track utility commands by their query_id, as it is done in pg_stat_statements. Previously, utility commands were tracked based on strict comparison of their textual query strings, and therefore could not be properly normalized.

    • Fixed a segmentation fault that could occur when defining custom metrics. The error originated from a memory allocation issue, which was fixed.

  • Upgraded pg_query_state to version 1.2 to add the pg_progress_bar and pg_progress_bar_visual functions that allow monitoring the current progress of query execution.

  • Improved the pg_waldump utility behavior when used with a segment containing an unfinished WAL record. Previously, if an unfinished WAL record was found, the utility displayed a misguiding log message about an invalid page header. Now, the log message clearly informs about an unfinished WAL record found providing the beginning LSN of the record, as well as the lost part LSN.

E.2.2. Management Utilities #

  • Added support for the protected mode on the biha control channel.

  • Added a feature of a cluster restart with minimum downtime by means of the shardmanctl restart rolling command.

  • Added a shardmand mechanism that allows showing the services that are currently running in the system.

  • Added new configuration parameters to work with syncpoints: syncpointInterval that allows specifying how often is a syncpoint created (in seconds), syncpointEnabled that enables monitor that periodically creates syncpoints, and syncpointLimit that specifies the amount of the most recent syncpoints stored.

  • Allowed executing commands outside of the transaction block with the --no-transaction flag of the shardmanctl forall command.

  • Allowed viewing a list of sharded and global table information with the shardmand endpoint /shardmand/v1/tables.

  • Added a feature to start a cluster with SSL certificate-based authentication.

  • Added a maintenance user option under which deadlock detector and monitor of hanging transactions can be run.

  • Allowed defining a variable for use by a custom script with a new shardmanctl bench run -D flag.

  • Changed the BiHA configuration update algorithm. Now the follower and referee nodes wait until the configuration is updated on the leader and only then update their own configuration. This allows decreasing the max_wal_senders parameter value.

  • Disabled coloring of the log level when executing any shardmanctl command.

  • Guaranteed the data consistency when forming user lists.

  • Improved the shardmanctl config update command output wording in case of an error.

  • Lifted a limitation, now global and sharded tables can be created during a backup process.

  • Lifted the limitation for decreasing of sensitive specification parameters, such as max_connections, max_prepared_transactions, and max_worker_processes. Previously it could result in the configuration rollback issues.

  • Updated the integrity check that now can be run after every configuration update if certVersion is set to true.

  • Updated the keeper connection behavior, now it is held instead of being closed.

  • Updated the consistency and user schema check mechanisms.

  • Updated the shardmanctl config update command that now can modify specifically the certVersion parameter.

  • Updated the admin role privileges, it can now modify the shardman.sync_schema configuration parameter.

  • Updated the etcd client version to 3.6.4.

  • Updated the smart restoration of the shardman schema. Now shardmanctl schema restore --smart checks and restores all lacking PostgreSQL extensions correctly.

  • Updated the system behavior for the shardmanctl probackup backup. Now, when creating a backup, it waits for the leader and standbys to be ready, thus avoiding the leader switching to the RO (Read-only) state when the command is executed.

  • Fixed the PANIC-level error when running shardmanctl set.

  • Fixed a bug that previously resulted in the referee_with_wal failure at a Postgres Pro Shardman cluster with tablespaces startup.

  • Fixed the BDU:2025-02344 and GHSA-fv92-fjc5-jj9h vulnerabilities.

  • Fixed the GO-2025-3770 vulnerability.

  • Fixed a bug that, in some rare cases, resulted in shardmanctl status failure.

  • Fixed a bug that previously resulted in adding new nodes failure if the shardman schema had global tables with data.

  • Fixed the behavior that previously resulted in replication failure if BiHA and postgres user passwords were different.

  • Fixed a bug, previously it was impossible to add new cluster nodes if the shardman schema contained global sequences.

  • Fixed the referee nodes failure in cases when the following parameters were changed: max_connections, max_wal_senders shared_buffers, max_prepared_transactions, max_worker_processes.

  • Fixed extensions restore, now all extensions are restored and not only those of Postgres Pro Shardman.

  • Fixed a bug that resulted in PANIC during the rebalance process.

  • Fixed an issue that could result in instances restart due to a short connection loss with etcd.

  • Fixed the displaying of the restoring progress indicators.

  • Fixed a bug that previously resulted in the single shard restore process hanging.

  • Fixed the initialization failure in cases when svt5 was enabled.