E.1. Postgres Pro Shardman 18.3.2 #
Release date: 2026-04-02
This is the first Postgres Pro Shardman 18 release. It is based on Postgres Pro Shardman 17.9.2 and PostgreSQL 18.3 and includes all the new features introduced in PostgreSQL 18, as well as bug fixes implemented in PostgreSQL 18.3 update. It also inherits a number of features from Postgres Pro Enterprise 18.3.2. For the detailed description, see PostgreSQL 18 Release Notes, and PostgreSQL 18.3 Release Notes.
For the list of extension modules and utilities specific to Postgres Pro Shardman, as well as the main user-visible core changes over vanilla PostgreSQL, including the inherited Postgres Pro Enterprise features, see Section 2. As compared to PostgreSQL 18.3.2 and Postgres Pro Shardman 17.9.2, the following differences are worth mentioning:
E.1.1. Core and Extensions #
Compared to Postgres Pro Shardman 17.9.2:
Added a new approach for global objects. Now there are managed (distributed/replicated and internal) and unmanaged objects.
Updated the mechanism of creating managed objects.
Added automatic check of the dictionary metadata for DDL operations.
Added the
shared_xmin_rawmetric to theshardman.pg_stat_csnview that shows the oldest XID disregarding the catalog transaction ID horizon.Added a new
shardman.pg_stat_fast_pathview and its global viewshardman.gv_stat_fast_paththat show the number of queries that used or didn't use fast path, including queries to unmanaged tables.Added support for multiple sharding keys for
FastPath.Added the shardman.global_analyze_async procedure for cluster-wide parallel analysis of managed tables.
Added the shardman.pg_stat_reset function that resets some statistics counters to zero, depending on the argument.
Improved simple query deparsing and planning for partitioned tables.
Improved MVCC logic, now it is closer to the PostreSQL behavior.
Improved silkworm to support parallel query execution.
Implemented a foreign data wrapper in Postgres Pro Shardman. Now it is not required to install the postgres_fdw extension to access foreign tables on other Postgres Pro Shardman servers.
Optimized the statistics transfer between nodes.
Reduced the time the horizon is held, which results in less bloating.
Removed the list of replicated tables from foreign server parameters.
Enhancements inherited from Postgres Pro Enterprise 18.3.2:
Implemented the ability for the optimizer to add
Index Only Scanplan nodes belowAppendnodes that are generated forORclauses if the enable_appendorpath parameter is set toon. This allows producing more efficient query plans and improving performance.Implemented the ability for the optimizer to simplify
NOT NOTexpressionconstructions toexpressionin 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
INcorrelated subqueries when the extra_query_transformations parameter is set tofull. This allows the optimizer to “pull up” the resulting subqueries and improve performance.Added the ability for the query planner to transform
ORclauses intoUNION ALLqueries. 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.
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.
DEBUG1severity level messages about operations with temporary tables are no longer returned.Optimized performance of page tuple freezing.
Added the ability to insert rows in bulk from query results when creating a table using
CREATE TABLE ASwith the enabled append_optimized storage parameter.Added the
aggressivevalue of the append_optimized storage parameter. It allows always creating new pages for inserted rows instead of searching for an appropriate page in the free space map. This improvement optimizes bulk insertion for tables where free space is fragmented across many pages.Returned the ability to create temporary objects in permanent tablespaces and specify permanent tablespaces in the temp_tablespaces configuration parameter.
Introduced the following changes to the implementation of crash_info:
Changed the name format of
crash_infooutput files to specify date and time with microseconds.
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
1for uncompressed relations.Added the cfs_is_relation_compressed function to check whether the specified relation is compressed.
Changed the message severity level to
ERRORin case of page conversion errors from 32-bit to 64-bit format. Previously, the server would crash withPANIC.Added the pgpro_wrap utility that obfuscates the PL/pgSQL code to prevent unauthorized modifications of stored procedures and functions.
Upgraded aqo to provide the following enhancements and bugfixes:
Optimized the mechanism of aqo learning. Now aqo ignores plan nodes that do not affect cardinality estimation, for instance
MaterializedandSortnodes. These ignored nodes no longer write aqo details in theEXPLAINoutput and are not added to aqo statistics.Changed the implementation of the least recently used (LRU) cache mechanism for the auto mode. Now aqo uses two distinct caches for
aqo_dataandaqo_query_texts. When the aqo.dsm_size_max limit is reached, the LRU algorithm first removes data fromaqo_query_texts, if any, and only then fromaqo_data.
Upgraded pgbouncer to version 1.25.1 for each OS, except ALT SP 8, for which pgbouncer 1.24.0 is still shipped.
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 the event log field: connection duration.
DISCONNECTevents now contain the total connection duration alongside other connection parameters.
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_sessionsconfiguration parameter.Improved the behavior of session-tracing functions. The
pgpro_stats_trace_insertandpgpro_stats_trace_updatefunctions 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 thepgpro_stats_trace_updatefunction, the filter no longer gets updated. Thepgpro_stats_trace_showfunction now returns exactly the values ofexplain*attributes that were specified for the filter.
E.1.2. Management Utilities #
Compared to Postgres Pro Shardman 17.9.2:
Added support for a disaster recovery cluster that provides a higher level of availability for the distributed systems.
Added the transition from and to the standby mode for the cluster and
keeperwith theshardmanctl cluster standby enableandshardmanctl cluster standby disablecommands.Added automatic creation of replication slots on primary and standby nodes.
Improved the logic of syncpoint file generation based on WAL processing.
Added the feature to view storage files with
shardmanctl files listandshardmanctl files getcommands.Added the stopping of pg_receivewal before a standby cluster is initialized from a backup with
shardmanctl probackup restore.Added automatic update of configuration options of a standby cluster to follow the configuration changes of the primary cluster on the Main data center to further apply them on the Backup data center.
Added the
shardmanctl cluster standby configcommand that creates a configuration file for a Backup data center.Added the ability to manage standby clusters in terms of the primary shards and standby nodes by using options
--lost-shards,--lost-nodes, and-s/--softtoshardmanctl cluster standby disablecommand.Allowed avoiding situations when CSN is not written to the WAL due to no writing load with the
ShardSpec.noopTransactionMonitorTimeoutparameter.Updated the
shardmanctl cluster statuscommand that now can show status of a cluster in standby mode.Added a feature to synchronize the cluster instance on the Backup data center with the cluster instance in the Main data center with the
shardmanctl cluster standby catchupcommand.
Improved the upgrade mechanism.
Added a shardmand mechanism that allows showing the services that are currently running in the system.
Added a feature to convert a
JSONstore dump into binary format of the distributed configuration storage with theshardmanctl store convertcommand.Added the
shardmanctl cluster maintenance setcommand to manage the maintenance mode on the specified PostgreSQL instances in a cluster.Updated logic for working with foreign tools that are initiated with shardmand and shardmanctl by adding new environment variables
SDM_PG_MAJOR,SDM_BIN_PATH, andSDM_PROBACKUP_PATH, and-bin-path,probackup-path, and-pg-majorcommon options.
Created the distributed storage based on shardmand to replace etcd. Each shardmand instance is now a node in the new distributed storage.
Added the
shardmanctl store conflictscommand to show the store conflicts.Improved the revision storage logic by updating the shardmanctl commands.
Updated the
shardmanctl cleanupcommand to work with the new configuration storage.Updated
shardmanctl storecommands to support the distributed storage.Updated the discover mechanism. Added support for two parallel running shardmand on one node.
Updated the node deleting process that now includes deleting information about these nodes from the configuration storage.
Allowed normalizing the distributed storage configuration based on the current node cluster configuration with
shardmanctl store normalize.Allowed deleting of a host from the distributed storage after deleting of the last DB instance on that host.
Removed the
DataDirconfiguration parameter. Now it is required to use the--data-dirparameter or theSDM_DATA_DIRenvironment variable instead.
Added support for the backup process to comply with the pg_probackup version 3, it is considered experimental and is recommended for using in production with caution.
Allowed merging incremental backups with the
shardmanctl probackup merge --merge-from-idandshardmanctl probackup merge --merge-intervalcommand options.Added the buffer management options for the
shardmanctl probackupcommand.Added the
shardmanctl probackup retentioncommand to set the backup retention policy for an instance or directory and launch backup merge or purge according to the specified parameters.Added the pgpro_bindump loading check in
shared_preload_librariesandwalsender_plugin_libraries.Updated
shardmanctl probackup validate,shardmanctl probackup set-config,shardmanctl probackup show-configand deleted theshardmanctl probackup checkdb.Adjusted the backup process to work with the S3-compatible storage.
Improved the utilities usability.
Added a feature that allows keeping or deleting all unmanaged tables with
--copy-local-tableswhen adding a new shard.Added the
--for-upgradeparameter for theshardmanctl restartcommand. Also added the--with-restartparameter for theshardmanctl upgradecommand.Added a feature to send PSQL commands to a specific shard with the
shardmanctl psqlcommand.Added a feature to form the connection string for one specified shard with
shardmanctl getconnstr --shardcommand option.Added a feature to specify the socket with the
--ipc-socketshardmand option.Added occupied port verification for the following commands to prevent their hanging:
shardmanctl init,shardmanctl nodes add,shardmanctl shard add.Added support for the
SDM_SERVER_HOSTvariable that defines whether an instance belongs to shardmand. Also added support for several hosts with theshardmanctl --server-hostcommand.Added a feature to stop or start specific instances with
shardmanctl nodes start,shardmanctl nodes stop,shardmanctl shard start, andshardmanctl shard stopby specifying aPostgreSQLport in--node=host:port.Prohibited to run shardmanctl and shardmand under the root user.
Updated shardmand that now does not start if the directory does not have the required permissions.
Updated the
shardmanctl cluster statuscommand that now does not include the nodes ofrefereeorreferee_with_walinstances from the output, if the command is executed for a cluster in thestandbymode.Updated the
shardmanctl config getandshardmanctl config generatecommand output that now hide the fields with no specified values.Updated the shardmanctl commands to accept the specification file in
YAMLformat and define the format automatically.Improved transferring logic of the environment variable values for the
shardcmanctl benchcommands.Improved logging for the cluster instance management commands.
Updated the cluster and shard stopping process. Now primary node fully stops first, only then followed by standbys when running the commands
shardmanctl cluster stop,shardmanctl shard stop,shardmanctl nodes stop.Updated the
shardmanctl status,shardmanctl status transactions,shardmanctl rebalance,shardmanctl restart, andshardmanctl restart rollingcommands so that they run on the cluster level, thus changing them toshardmanctl cluster status,shardmanctl cluster status transactions,shardmanctl cluster rebalance,shardmanctl cluster restart, andshardmanctl cluster restart rollingUpdated the
shardmanctl setandshardmanctl unsetcommand syntax, now they are shardmanctl params set and shardmanctl params unset.Updated the
shardmanctl params unsetthat now cannot be called forwalsender_plugin_libraries.Adapted the Postgres Pro Shardman utilities to work with shardman_fdw.
Updated the
shardmanctl config getcommand that now runs without meta lock.Improved the dictionary check logic for
shardmanctl cluster statusthat considers the core changes.Improved the consistency check for cluster indexes, extensions, procedure languages, sequence, users, tables, collations, tablespaces, schemas, and functions with different
--filteroptions of theshardmanctl schema verifycommand.Allowed executing commands outside of the transaction block with the
--no-transactionflag of theshardmanctl forallcommand.
Added validation to prevent duplicate users in the
sdmspec.jsonat cluster initialization.Added a feature to transfer environment variable values for the pg_ctl commands.
Allowed specifying the shardmand port when adding nodes.
Improved the promotion logic in case of the quorum loss.
Updated the manual shard switching mechanism to consider node priorities.
Deleted the
syncPointMonitorLimitandsyncPointMonitorEnabledconfiguration parameters.Updated postgres_fdw to work with distributed systems, now it is shardman_fdw. Hence, when upgrading from former Postgres Pro Shardman versions, after running
shardmanctl upgrademind runningdrop extension postgres_fdwon each cluster node. Also it is required to delete postgres_fdw fromshared_preload_libraries.Ended support for the
relationsoption saving for foreign servers.Upgraded supported version for bihactl to 2.
Improved dump storage logic for the
shardmanschema and added data compression.Improved the locking logic for operations that require exclusive cluster access.
Deleted the
shardmanSchemaDumpMonitorDisabledandshardmanSchemaDumpMonitorTickconfiguration parameters as redundant during the dumping and backup process.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.