E.1. Postgres Pro Shardman 17.5.1 #

Release date: 2025-07-02

This is the first Postgres Pro Shardman release, it is based on Postgres Pro Enterprise 17.5.1 and Shardman 14.18.2 and provides new features and optimizations. Major changes are as follows:

E.1.1. Core and Extensions #

  • Implemented the LOCK TABLE support for global and sharded tables.

  • Renamed the is_reply field of the shardman.silk_routing view to is_outgoing. The field value is true if the route was produced by the outgoing network connection, false for incoming network connections.

  • Enhanced Silk performance for higher shardman.silk_unassigned_job_queue_size values.

  • Updated the default values for logging configuration parameters for all new Postgres Pro Shardman installations:

    • logging_collector: on

    • log_directory: {{dataDir}}

    • log_filename: postgres-{{cluster}}-{{shard}}-{{host}}-{{keeperID}}.log

  • Deleted the csn_max_commit_shift and csn_max_snapshot_shift configuration parameters. Added the csn_max_shift and csn_max_shift_error configuration parameters to work with CSN snapshots for the distributed queries and imported snapshots.

  • Added the background freezer feature that vacuums modified and non-locked data pages of permanent tables stored in RAM. Background freezer is managed using new specific configuration parameters.

  • Changed lock logic to reduce CPU consumption significantly in case of startup recovery on physical replicas used as a source for logical replication with many downstreams. Walsenders no longer slow down WAL application as a more efficient synchronization primitive has replaced the previously used spinlock.

  • Added the new planner_upper_limit_estimation configuration parameter that enables the query planner to overestimate the expected number of rows in statements that contain a comparison to an unknown constant.

  • Added a possibility for the autovacuum daemon to process indexes of a table in a parallel mode. The parallel_autovacuum_workers storage parameter of a table controls whether it should be processed in parallel and defines the number of additional parallel autovacuum workers that can be launched for table processing. The number of autovacuum workers per cluster that can be used for parallel table processing is limited by the autovacuum_max_workers configuration parameter. Parallel autovacuum is currently in an experimental phase and is intended for testing purposes only. Do not deploy it in production environments.

  • Added the enable_any_to_lateral_transformation configuration parameter that allows enabling or disabling transformation of ANY subqueries into LATERAL joins.

  • Implemented performance optimization when working with table metadata, which allows obtaining information about attributes using the system cache instead of direct reading from the system catalog.

  • Introduced the following changes to the implementation of crash_info:

    • Added handling of SIGILL signals to crash_info processing.

    • Added details, like process start time and query text at planning, to crash_info output files.

  • Restricted superuser actions with temporary relations of other sessions. Superusers can now only use the DROP TABLE command with such relations. If the skip_temp_rel_lock configuration parameter is set to on, even dropping such relations is not allowed.

  • Upgraded pg_proaudit to provide the following enhancements:

    • Added new object types: CATALOG RELATION and CATALOG FUNCTION.

    • Added new event fields: UUID, XID, and VXID. Now it is possible to identify an event by its UUID and transaction IDs (if applicable).

    • The behavior of the pg_proaudit.log_catalog_access configuration parameter was corrected to reflect the new logic of logging for system catalog objects.

    • Changed the logic of handling disconnection events. Now these events are associated with the corresponding authentication events, so the disconnection events will be logged even in the case when the rule is removed after authentication, but before disconnect.

  • Upgraded pgpro_pwr to version 4.9, which mainly provides optimizations. Notable changes are as follows:

    • Added support for pgpro_stats 1.9-sdm4.

    • Added a possibility to define the mode of collecting relation sizes globally through the pgpro_pwr.relsize_collect_mode extension parameter or for a server through the set_server_size_sampling function parameter.

    • Enabled fine-tuning the server statistics collection by calling the set_server_setting function. It allows you to define which statistics should be collected.

    • Added a preview of storage parameters for tables and indexes in the Schema object statistics report section.

  • Upgraded pgpro_stats to version 1.9-sdm4, which provides the following improvements:

    • Enhanced session tracing to provide more information. Specifically, the new time_info filter attribute controls inclusion of additional information in the session-tracing output, and the pgpro_stats.trace_query_text_size configuration parameter can limit the size of the query in the session-tracing output.

    • Aligned the names of the explain_* filter attributes of the session tracer with the names of session-tracing configuration parameters.

    • Changed the format of the statistics dump file and the corresponding save/load routines.

    • Implemented turning off the session tracer functionality when no session-tracing filters are specified.

    • Prohibited inclusion of both pgpro_stats and pg_stat_statements in the list of shared_preload_libraries. If both are included, the database server will not start.

  • Deprecated the experimental vops extension.

E.1.2. Management Utilities #

  • Changed the default values for the -t (--transactions) and -T (--time) flags of the shardmanctl bench run command to 10 and 0, respectively.

  • Optimized promotion of a standby server to primary.

  • Added a limitation that pg_hba.conf cannot be modified if certVersion is set to true.

  • Added the --reinit-before-restore option that allows reinitializing the cluster with the same topology before restore.

  • Optimized cluster polling timeouts.

  • Added the {rgid} support for the --tablespace-mapping of the shardmanctl probackup restore command.

  • Added the feature to validate a backup on a compatible cluster.

  • Optimized the search for the primary node to avoid cluster hanging.

  • Added boot_uuid to shardmand.

  • Added the feature to modify the max_wal_senders parameter by updating the additionalWalSenders configuration parameter with the shardmanctl config update command.

  • Added the shardmanctl --log-format command to specify the log output format.

  • Updated the shardmanctl cluster stop and shardmanctl restart commands with the --message option to show the reason why a cluster was stopped or restarted.

  • Added the CertVersion field to the sdmspec.json configuration file.

  • Updated the syncPointMonitorEnabled configuration parameter to save the syncpoint history if set to true, with size of this history defined by syncPointMonitorLimit.

  • Updated the keeper error messages that are now cleaned after a successful operation that modifies the configuration.

  • Added the shardmanctl schema verify command that verifies consistency of the information about partitions, extensions, tables, roles, schemas, and sequences.

  • Added an option to use probackup as backup method for BiHA.

  • Added a feature that cluster software does not fail even if writing to pg_hba.conf is forbidden.