E.1. Postgres Pro Enterprise 14.17.1

Release Date: 2025-03-05

E.1.1. Overview

This release is based on PostgreSQL 14.17 and Postgres Pro Enterprise 14.15.1. All changes inherited from PostgreSQL 14.17 are listed in PostgreSQL 14.17 Release Notes. As compared with Postgres Pro Enterprise 14.15.1, this version also provides the following changes:

  • Added details, like current working directory, the PGDATA directory, etc., to crash_info output files.

  • Added the increased security requirements for the CREATE PROFILE command. Now the PASSWORD_REQUIRE_COMPLEX parameter requires characters from three different groups. Also, all characters of languages without case distinction (Hindi, Chinese, etc.) in the UTF-8 encoding are considered lowercase.

  • Implemented the following enhancements and bug fixes for CFS:

    • Changed the default value for the cfs_gc_threshold configuration parameter from 50 to 30 percent.

    • Fixed an issue with CFS garbage collector being blocked by the backup process. If backup took ran too long, this could lead to write locks, preventing writes to compressed tablespaces. Now both processes lock only specific data files briefly, avoiding mutual blocking.

    • Fixed an issue with missing compression settings for tablespaces on standby servers by adding a new WAL record type. Previously, standby servers did not receive such compression settings because ALTER TABLESPACE ... SET (compression=true) was not logged in WAL.

    • Fixed the cfs_start_gc function to reject invalid values of the n_workers argument.

  • Fixed an issue with upgrading Postgres Pro Standard to Postgres Pro Enterprise using pg_upgrade, which could fail if the old cluster had an epoch greater than 1 with an error like could not open file.

  • Fixed the pg_upgrade --check option to correctly check that pg_upgrade is run on a standby. Previously, it would fail with errors like cannot assign TransactionIds during recovery.

  • Fixed a segmentation fault caused by foreign data wrapper invalidation during autonomous transactions if an autonomous transaction reset global variables while registered callback functions remained active. Now callback functions check for global variables and invalidation data is preserved for parent transactions.

  • Fixed an issue that caused the server to crash with PANIC instead of returning an appropriate error when deleting tuples from a page where the difference between the minimum transaction ID and the current transaction ID exceeded 2^31.

  • Fixed pg_multixact bloating by introducing soft limits that trigger autovacuum earlier.

  • Fixed an issue where crash_info could fail to write diagnostic files when handling a stack overflow. Previously, the signal handler ran on the same stack that had overflowed, which could prevent it from executing due to lack of available stack space. Now the handler runs on an alternate signal stack.

  • Fixed a memory context issue, which could previously cause emitting garbage in logs instead of the host and port details when disconnecting from the remote server.

  • Fixed an issue that could occur when a custom scan was used, which could cause an incorrect state of the query plan and could result in an error when pgpro_stats was involved.

  • Fixed an issue where roles without explicitly set VALID UNTIL attribute and associated with a profile that had PASSWORD_GRACE_TIME set to 0 and PASSWORD_LIFE_TIME set to UNLIMITED incorrectly received password expiration warnings. Now they are correctly considered valid indefinitely.

  • Upgraded the apache_age extension to version 1.5.1.

  • Optimized fasttrun to skip unnecessary truncate operations on empty temporary relations.

  • Upgraded mamonsu to version 3.5.11 to provide support for pgpro_stats version 1.8.

  • Upgraded multimaster to add the ability to specify the catchup mode for reconnected nodes using the multimaster.catchup_algorithm configuration parameter. Supported the parallel catchup mode, in which non-conflicting replicated transactions are applied in parallel.

  • Upgraded pgbadger to version 13.0.

  • Upgraded pgbouncer to version 1.24.0.

  • Upgraded pg_hint_plan to version 1.4.3.2.

  • Upgraded pg_portal_modify to version 0.3.5.

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

    • Added a new event field: session user name. Now an event contains the information about both session_user and current_user attributes of an SQL session.

    • Added support for new event classes: ALL_DDL_NONTEMP and ALL_DML_NONTEMP. The scope of these classes is limited to the objects that are not contained in pg_temp_nnn temporary schemas.

    • Fixed logging of SELECT FOR UPDATE and SELECT FOR KEY SHARE events as SELECT, rather than UPDATE.

  • Upgraded pg_probackup to version 2.8.7 Enterprise, which provides the following optimizations and bug fixes:

    • Reduced the log level for checking WAL file name messages that are issued when the show with the --archive option is executed from INFO to VERBOSE.

    • Updated the add-instance command logic to make the -D option that specifies the path to the catalog mandatory. add-instance no longer relies on the PGDATA environment variable for the catalog location, but requires explicitly specifying the path to the catalog as the command option.

    • Improved the garbage collection mechanism in CFS used when a backup copy is created. File-system level locks resolve an issue with the concurrent access to files from compressed tablespaces during copying to a backup and during the defragmentation.

    • Fixed an issue of the multi-threaded file copying technique that prevents repeated copying of one file. This issue could previously stop the backup creation under high load on the server.

  • Upgraded pgpro_pwr to version 4.8, which provides new features and bug fixes. Notable changes are as follows:

    • Added tracking of extension versions installed in the cluster through a new report section.

    • Added a possibility to hide data for certain databases in the report. To this end, a new parameter that accepts an array of databases to be excluded was added to report generation functions.

  • Upgraded pgpro_scheduler to version 2.11.1 to fix a segmentation fault, which could occur when pgpro_scheduler did not terminate its processes when the associated extension or schema was dropped. Now it terminates with an error instead of crashing.

  • Upgraded pgpro_stats to version 1.8.1, which provides the following bug fixes and improvements:

    • Fixed an issue that could occur during session tracing and cause errors could not write file ""pg_stat/pgpro_stats_filters.trace.tmp"": No such file or directory. Concurrent writing from different sessions to a trace file is fixed now, so processes can write to the trace file in parallel without collisions.

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

    • Implemented an optimization that lowers the locking time in some cases when copying metrics from the local memory to the shared memory.

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

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

  • Upgraded pg_variables. The DISCARD ALL command now discards all packages and variables in pg_variables.

  • Upgraded the rum module to update an error message for an error that can occur in the case when a SELECT query uses ORDER BY.

E.1.2. Migration to Version 14.17.1

If you are upgrading from a Postgres Pro Enterprise release based on the same PostgreSQL major version, it is enough to install the new version into your current installation directory.

ABI versions may change between minor releases of Postgres Pro. If this is the case, and you see the ABI mismatch error when trying to run your extension, make sure to install a new version of the extension supplied with a new release of Postgres Pro, or recompile your third-party extension to be able to use it with the current version of Postgres Pro.

When upgrading your high-availability cluster from Postgres Pro Enterprise versions 14.12.x or lower, first disable automatic failover if it was enabled and upgrade all the standby servers, then upgrade the primary server, promote a standby, and restart the former primary (possibly with pg_rewind).

If you take backups using pg_probackup and you have previously upgraded it to version 2.8.0 Enterprise or 2.8.1 Enterprise, make sure to upgrade it to version 2.8.2 Enterprise or higher and retake a full backup after upgrade, since backups taken using those versions might be corrupted. If you suspect that your backups taken with versions 2.8.0 or 2.8.1 may be corrupted, you can validate them using version 2.8.2.

If you are migrating to the current major version of Postgres Pro Enterprise using pg_upgrade, and you want to keep the existing visibility map representation in pageinspect, you should run the VACUUM command before the upgrade.

Starting from Postgres Pro Enterprise 14.10.1, the privileges of CREATEROLE are restricted, and modification of other roles requires the role requesting the change to have the ADMIN OPTION permission.

It is strongly recommended to avoid migrating a cluster with 32-bit transaction IDs to Postgres Pro Enterprise versions below 14.9.2, if there are multitransactions in your database, as it may cause data corruption.

When upgrading to Postgres Pro Enterprise versions starting with 14.8.1, make sure to upgrade pg_probackup Enterprise to version 2.6.4 or higher since lower versions are incompatible with these Postgres Pro Enterprise versions.

To migrate from PostgreSQL, as well as Postgres Pro Standard or Postgres Pro Enterprise based on a previous PostgreSQL major version, see the migration instructions for version 14.