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_disableconfiguration parameter to forbid DDL operations that change the schema when upgrading Postgres Pro Shardman.Added
sqlhashto thepgpro_stats_sdm_statementsview.Added the
shardman.get_topology()function and the correspondingshardman.topologyview 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_committedconfiguration 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.
Added support for managed functions to the
CREATE FUNCTIONandALTER FUNCTIONcommands.Added support for managed
enumtypes to theCREATE TYPEcommand.Added support for managed domains to the
CREATE DOMAINcommand.
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
\dmeta-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_onlyparameter to theshardman.silk_statinfo_reset()function. Also added thestats_resetandmax_stats_resetfields to theshardman.silk_statinfoview.Added support for ROSA Chrome 12.7.
Moved the
foreign_stat_recv_bytesfield from theshardman.pg_stat_foreign_stat_bytesview toshardman.pg_stat_netusage. Deleted theshardman.pg_stat_foreign_stat_bytesandshardman.gv_stat_foreign_bytesviews.Improved performance of the
shardman.get_partition_for_value()function with recurring queries to the same sharded table. Removedrgidfrom the values that theshardman.get_partition_for_value()function returns.Renamed the
CSNXidMap_head_*andCSNXidMap_tail_*fields of theshardman.pg_stat_csnview toCSNXidMap_latest_*andCSNXidMap_oldest_*.Renamed the
overall_committed_xact_timeandoverall_aborted_xact_timefields of theshardman.pg_stat_xact_timeview tooverall_committed_xact_durationandoverall_aborted_xact_duration.Renamed the
noneandtextoptions of theshardman.query_engine_modeconfiguration parameter tolibpqandsilk_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
UPDATEoperations on the same record in multiple concurrent threads can result in the following error:x_min.IDis uncommitted in tuple to be updated in tableFixed 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 equivalentIS NOT NULLcheck 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
PGDATAand updated theopenandstatsystem 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-diroption.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 DATABASEcommand with a duplicatedlocale_providerparameter. 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
--statisticsor--statistics-onlyoption. 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 BYclause 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_estimatefunction.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 DATABASEexecution. The issue occurred because system interrupts were not processed properly while the command was waiting to acquire a lock forcfs_gc_lock_file.
Removed the functionality of the optimizer for adding
Index Only Scanplan nodes belowAppendnodes that are generated forORclauses if the enable_appendorpath parameter is set toon. 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_datastorage that was caused by exclusive locks on the underlying hash table and resulted in constant growing ofidle in transactionsessions 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
AUTHENTICATEevents 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
dstfield for events logged in CEF format.Fixed an issue with excessive memory usage when processing
DISCONNECTevents. 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-pathoption to exclude specific files or directories from backup inPROmode.Optimized the backup performance by excluding temporary files of the
postmasterprocess.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 thelibpb3-encoderpackage instead of the erroneouslibpgprobackup3.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
PROmode. 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
BLCKSZparameter 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 the
shardmanctl datactl repackcommand to change the compression algorithm and/or compression level of CFS files on shard nodes.Added the
shardmanctl datactl statcommand to collect statistics on compressed tablespaces in the cluster.Added the
shardmanctl datactl tablespacescommand to list information about tablespaces in the Postgres Pro Shardman cluster.Added the
shardmanctl datactl unpackcommand to uncompress CFS files on shard nodes.
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/-sand--node/-noptions to theshardmanctl config update --patchcommand for updating PostgreSQL parameters at the shard or node level.Added the
--node,--shard, and--allparameters for theshardmanctl params unsetcommand.Added the
--nodeand--shardparameters for theshardmanctl params setcommand.Added the
shardmanctl params getcommand 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 updatecommand that updates a full cluster configuration. Now this command deletes all custom parameters in the shards and nodes.Changed the behavior of the
shardmanctl initcommand. Now this command deletes all custom parameters in the shards and nodes.
Added support for all probackup3 logging levels to
shardmanctl probackupcommands. Previously these commands used only thedebugandinfolevels 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 deletecommand 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_HOSTvariable that defines whether an instance belongs to shardmand. Also added support of several hosts with theshardmanctl --server-hostcommand.Added log details for the
initdbcommand output in case ofshardmanctl cluster initfailure.Added support for passing environment variables to PostgreSQL processes. Environment variables that have the
A3SYNC_orA3VERBS_prefix in their names are passed automatically. Added theAllowedEnvsfield 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 rmcommand 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 --versionandshardmand --versioncommands.Changed the way the output of the
shardmanctl probackup showcommand 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 disablecommand. 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 generateandshardmanctl config verifycommands. Now they can be executed even if the shardmand daemon is not running.Improved the
shardmanctl cluster statuscommand output that now shows information about shards that may be in the disabled BiHA update mode.Enabled the output of the
shardmanctl forallandshardmanctl scriptcommands in the JSON format using--format=json.Improved the output of the
shardmanctl cluster topologyfor standby clusters. Now the command outputs theSYNC_OK,SYNC_WAITINGorREFEREEstatus for standby nodes instead ofUNKNOWN.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 theshardmanctl cluster restart rolling --upgradecommand.Optimized handling of value lists in the distributed storage.
Fixed an issue with deleting a BiHA node using the
shardmanctl nodes rmcommand. Previously, BiHA would return an error if the status of the node to be removed was notoffline.Fixed an issue that resulted in the
shardmanctl cluster statuscommand problems after the configuration update via SSL.Fixed an issue with status display if the BiHA was unavailable. Fixed the
shardmanctl replicas reinitcommand failure for the nodes where BiHA was in theNODE_ERRORstate.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 rollingcommand 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 probackupbackup 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.