E.1. Postgres Pro Shardman 18.4.1 #

Release date: 2026-07-01

This release is based on Postgres Pro Shardman 18.3.3 and PostgreSQL 18.4. It also inherits a number of enhancements and bugfixes from Postgres Pro Enterprise 18.4.1. All changes inherited from PostgreSQL 18.4 are listed in PostgreSQL 18 Release Notes. As compared to Postgres Pro Shardman 18.3.3, the following differences are worth mentioning:

E.1.1. Core and Extensions #

Compared to Postgres Pro Shardman 18.3.3:

  • Added the shardman.ddl_disable configuration parameter to forbid DDL operations that change the schema when upgrading Postgres Pro Shardman.

  • Added sqlhash to the pgpro_stats_sdm_statements view.

  • Added the shardman.get_topology() function and the corresponding shardman.topology view to output the cluster topology based on information from shardmand.

  • Added support for using specially marked check constraints for query planning.

  • Added support for setting the enable_csn_snapshot_for_read_committed configuration parameter on a session level.

  • Extended support for executing datetime comparison functions on remote nodes.

  • Improved performance of distributed deadlock search in huge lock graphs.

  • Improved support for managed (formerly called global) types.

  • Implemented the ability to hide the underlying tables of a sharded table. This allows suppressing any additional information for a sharded table when using the \d meta-command in psql. To restore the old behavior, use the new shardman.hide_shards configuration parameter.

  • Added support for pg_hint_plan.

  • Added the max_only parameter to the shardman.silk_statinfo_reset() function. Also added the stats_reset and max_stats_reset fields to the shardman.silk_statinfo view.

  • Added support for ROSA Chrome 12.7.

  • Moved the foreign_stat_recv_bytes field from the shardman.pg_stat_foreign_stat_bytes view to shardman.pg_stat_netusage. Deleted the shardman.pg_stat_foreign_stat_bytes and shardman.gv_stat_foreign_bytes views.

  • Improved performance of the shardman.get_partition_for_value() function with recurring queries to the same sharded table. Removed rgid from the values that the shardman.get_partition_for_value() function returns.

  • Renamed the CSNXidMap_head_* and CSNXidMap_tail_* fields of the shardman.pg_stat_csn view to CSNXidMap_latest_* and CSNXidMap_oldest_*.

  • Renamed the overall_committed_xact_time and overall_aborted_xact_time fields of the shardman.pg_stat_xact_time view to overall_committed_xact_duration and overall_aborted_xact_duration.

  • Renamed the none and text options of the shardman.query_engine_mode configuration parameter to libpq and silk_ro.

  • Upgraded pg_dump to support dumping definitions (schema) of the subset of distributed objects that are managed by Postgres Pro Shardman.

  • Upgraded pgpro_datactl to version 1.5.1.

  • Upgraded pg_probackup3 to version 3.4.0.

  • Upgraded biha-utils to version 2.2.1.

  • Fixed an issue where data modification commands for managed tables did not respect an encoding that was set on the client side.

  • Fixed an issue where many UPDATE operations on the same record in multiple concurrent threads can result in the following error: x_min ID is uncommitted in tuple to be updated in table.

  • Fixed an issue with the slow application of WAL files on standby instances.

  • Fixed the following vulnerabilities: CVE-2026-6472, CVE-2026-6473, CVE-2026-6474, CVE-2026-6475, CVE-2026-6476, CVE-2026-6477, CVE-2026-6478, CVE-2026-6479, CVE-2026-6575, CVE-2026-6637, CVE-2026-6638.

Enhancements inherited from Postgres Pro Enterprise 18.4.1:

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

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

  • Optimized the mechanism of selectivity estimation for the query planner with the functionality enabled by the planner_upper_limit_estimation configuration parameter.

  • Optimized instant truncation of temporary tables.

  • Restricted changes to the hba_file configuration parameter in the certified edition of Postgres Pro Shardman. 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.

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

  • 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 that could cause pg_dump to fail when trying to dump data with the --statistics or --statistics-only option. The issue could occur if a table had more than one index and one of them was an index on expressions.

  • 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 excessive memory usage that could cause significant increase in query execution time and server crashes with subsequent recovery when updating rows in tables with generated columns.

  • Fixed an issue where the optimizer did not recognize a join between a relation and the same relation with the GROUP BY clause as a self join, which could cause erroneously high selectivity estimations of join conditions.

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

  • Upgraded aqo to version 4.1, 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 ODBC driver to version 18.00.0001.

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

    • Fixed an issue with parallel backups in PRO mode. Previously, each backup created a replication slot with the same default name, causing parallel backups to conflict and terminate with an error.

  • 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 pgpro_pwr to version 4.13, which adds support for cluster-wide Postgres Pro Shardman statistics and provides optimizations and bug fixes.

  • Removed support for the pg_tsparser extension.

E.1.2. Management Utilities #

Compared to Postgres Pro Shardman 18.3.3:

  • Added data file-related commands.

  • Added support for overriding PostgreSQL parameters on a shard level or a specific cluster instance level.

    • Added support for overriding PostgreSQL parameters on a shard level or a specific cluster instance level. Custom parameters are applied as overlays with following priority: database configuration, then shard-level, then instance-level. Custom parameters are cleared on full configuration update and preserved on partial (patch) update.

    • Added the --shard/-s and --node/-n options to the shardmanctl config update --patch command for updating PostgreSQL parameters at the shard or node level.

    • Added the --node, --shard, and --all parameters for the shardmanctl params unset command.

    • Added the --node and --shard parameters for the shardmanctl params set command.

    • Added the shardmanctl params get command that shows custom PostgreSQL options in the Postgres Pro Shardman cluster.

    • Implemented handling custom PostgreSQL parameters for keepers in a standby cluster.

    • Changed the behavior of the shardmanctl config update command that updates a full cluster configuration. Now this command deletes all custom parameters in the shards and nodes.

    • Changed the behavior of the shardmanctl init command. Now this command deletes all custom parameters in the shards and nodes.

  • Added support for all probackup3 logging levels to shardmanctl probackup commands. Previously these commands used only the debug and info levels in probackup3.

  • Added locale validation for cluster nodes. Such validation allows maintaining consistent locale settings on all cluster nodes, ensuring stable cluster operation after changing its topology.

  • Added the shardmanctl store delete command for deleting keys from the store.

  • Added a monitor for prepared transactions that block the rebalancing process. The monitor checks if a prepared transaction blocks the replication slot creation each 15 seconds and logs a warning message if such a transaction exists.

  • Added support for the SDM_SERVER_HOST variable that defines whether an instance belongs to shardmand. Also added support of several hosts with the shardmanctl --server-host command.

  • Added log details for the initdb command output in case of shardmanctl cluster init failure.

  • Added support for passing environment variables to PostgreSQL processes. Environment variables that have the A3SYNC_ or A3VERBS_ prefix in their names are passed automatically. Added the AllowedEnvs field to ShardSpec that contains the names of environment variables to be passed to the PostgreSQL process.

  • Added check for unsafe values in the options of shardmanctl commands.

  • Added a safeguard to the shardmanctl nodes rm command to prevent deleting the only leader node in a shard if the shard includes a referee node.

  • Added a commit hash to the output of the shardmanctl --version and shardmand --version commands.

  • Changed the way the output of the shardmanctl probackup show command is displayed: now the list of backups is sorted by the recovery time from the oldest backups (at the top of the list) to the newest ones.

  • Changed the behavior of the shardmanctl cluster standby disable command. Now it waits until all cluster instances are restored to the same syncpoint before switching the cluster from the standby mode back to the main.

  • Improved the shardmanctl config generate and shardmanctl config verify commands. Now they can be executed even if the shardmand daemon is not running.

  • Improved the shardmanctl cluster status command output that now shows information about shards that may be in the disabled BiHA update mode.

  • Enabled the output of the shardmanctl forall and shardmanctl script commands in the JSON format using --format=json.

  • Improved the output of the shardmanctl cluster topology for standby clusters. Now the command outputs the SYNC_OK, SYNC_WAITING or REFEREE status for standby nodes instead of UNKNOWN.

  • Improved logging mechanism in shardmanctl and shardmand. Log messages are more consistent and informative.

  • Improved handling of the consistent promotion mechanism (pre_promote_mode) when performing a rolling restart using the shardmanctl cluster restart rolling --upgrade command.

  • Optimized handling of value lists in the distributed storage.

  • Fixed an issue with deleting a BiHA node using the shardmanctl nodes rm command. Previously, BiHA would return an error if the status of the node to be removed was not offline.

  • Fixed an issue that resulted in the shardmanctl cluster status command problems after the configuration update via SSL.

  • Fixed an issue 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 ring buffer issues that previously resulted in the revision history showing the new revisions at the beginning of the list instead of its end once the 20 records limit was reached.

  • Fixed the shardmanctl restart rolling command behavior that previously resulted in an instance error.

  • Fixed an issue with an outdated syncpoint caused by a race condition when switching the cluster back to the standby mode.

  • Fixed an issue with the shardmanctl probackup backup and restore commands for the clusters that work with SSL.

  • Fixed the following vulnerabilities: CVE-2026-27137, CVE-2026-27138, CVE-2026-25679, CVE-2026-27139, CVE-2026-27142, CVE-2026-32282, CVE-2026-32288, CVE-2026-32283, CVE-2026-27140, CVE-2026-32289, CVE-2026-27143, CVE-2026-33810, CVE-2026-32280, CVE-2026-32281, CVE-2026-33814, CVE-2026-39836, CVE-2026-33811, CVE-2026-39823, CVE-2026-39826, CVE-2026-39825, CVE-2026-39820, CVE-2026-39882, CVE-2026-42501.

  • Upgraded golang to version 1.26.4 and its dependencies to fix the following vulnerabilities: GO-2026-5005, GO-2026-5006, GO-2026-5013, GO-2026-5014, GO-2026-5015, GO-2026-5016, GO-2026-5017, GO-2026-5018, GO-2026-5019, GO-2026-5020, GO-2026-5021, GO-2026-5023, GO-2026-5033, GO-2026-5037, GO-2026-5039.