E.1. Postgres Pro Enterprise 14.15.1

Release Date: 2024-12-06

E.1.1. Overview

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

  • Added the ability to form the MergeAppend operation instead of Append, which allows omitting additional sorting needed to ensure that the data is in fact sorted. Now MergeAppend is formed specifying the columns to sort by. The new ability applies only when the enable_appendorpath option is set to ON.

  • Improved performance of CFS by reducing the number of invalidation messages for tables, which previously caused multiple file reopen events. Now invalidation is targeted at the specific segments affected by the garbage collector.

  • Allowed transformation of correlated IN subqueries into joins.

  • Implemented the ability to dump the state of a single backend process by sending the dump signal.

  • Added a validation step to check for non-zero values in unused header fields of *.cfm files by pg_upgrade.

  • Changed the error level to calculate the statistics on vacuum interrupts to ERROR (PGERROR) only. Calculating vacuum interrupts for the PANIC error level could cause unpredictable system behavior, and the statistics could not be calculated anyway because of the server crash.

  • Fixed cfs_gc_relation to return the actual number of processed segments of the relation.

  • Fixed an issue with upgrading from PostgreSQL or Postgres Pro Standard to Postgres Pro Enterprise using pg_upgrade when a multitransaction offset counter overflow occurred.

  • Fixed the processing of 64-bit transaction IDs with proper encoding and decoding of the transaction ID.

  • Fixed an issue with upgrading from PostgreSQL or Postgres Pro Standard to Postgres Pro Enterprise using pg_upgrade that could occur when attempting to convert heap pages to the double xmax page format in cases where there was insufficient free space to accommodate the special area. In the presence of multitransactions, this could lead to errors like MultiXactId XXXXX has not been created yet or could not access status of transaction XXXXXX, depending on the server version. No data loss is expected as the actual conversion did not occur. Pages will now be safely converted upon first access.

  • Fixed a memory leak that could occur when the EXPLAIN command's output produced over 64 columns.

  • Fixed a segmentation fault, which could occur while executing the COPY TO command when using the online_analyze module.

  • Fixed an issue where EXPLAIN ANALYZE showed incorrect counts of inserted and conflicted tuples during row inserts with conflicting primary keys when using ON CONFLICT DO NOTHING.

  • Fixed an issue that could slow down query execution. The reason was that the optimizer selected a suboptimal index due to the lack of its cost estimation after removing redundant clauses with the enable_appendorpath option set to ON.

  • Upgraded aqo to include the following optimizations and bug fixes:

    • Enhanced aqo wide search (aqo.wide_search = on) to utilize data from multiple neighbors simultaneously. Also, revised its interaction with aqo.min_neighbors_for_predicting to allow queries with fewer than the specified number of data samples to participate in wide search. Previously, such queries were excluded from consideration.

    • Fixed an array index out-of-bounds issue in the aqo smart statement timeout update logic, as well as incorrect statistics insertion into aqo_query_stats when the arrays were full. In previous releases, using aqo_query_stat_update with arrays of size 20 or more could lead to subsequent statistics updates being written to uncontrolled memory segments. Make sure to install the Postgres Pro on both primary and standby servers to avoid similar memory corruption problems.

  • Upgraded mamonsu to version 3.5.9, which provides optimizations and bug fixes. Notable changes are as follows:

    • Added support for systems where setuptools version greater than 67.7.2 is installed.

    • Ended the use of dotted user:group specification at the RPM pre-install stage.

  • Upgraded multimaster to version 1.2.0. Significantly increased catchup performance by enabling asynchronous commit operations on a lagging node syncing with the donor node, controlled by the multimaster.enable_async_3pc_on_catchup parameter.

  • Upgraded oracle_fdw to version 2.7.0.

  • Upgraded orafce to version 4.13.5.

  • Upgraded pg_filedump to version 17.1, which specifically fixed an issue that could cause pg_filedump to crash with a segmentation fault when handling incomplete pages.

  • Upgraded pg_hint_plan to version 1.4.3.

  • Upgraded pg_integrity_check to display actual checksum values, if the checksums differ, only with the --verbose option.

  • Upgraded pg_portal_modify to version 0.3.4.

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

    • Added logging of security events related to operations with profiles: CREATE PROFILE, ALTER PROFILE, and DROP PROFILE.

    • Changed the distribution of security events related to functions and stored procedures among the groups of security events: the ALL_DDL group now includes no events related to functions and stored procedures, ALL_PROC includes CREATE, ALTER, and DROP, while ALL_DML includes EXECUTE.

    • Fixed compatibility with the connection pooler. Previously, issues could be encountered when logging AUTHENTICATE and DISCONNECT security events.

    • Fixed logging of security events on partitioned tables by pg_proaudit. Now the SELECT/UPDATE/INSERT/DELETE/TRUNCATE events on a partitioned table get logged if logging rules imply logging of appropriate events for this table. Previously, only events on individual partitions were logged.

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

    • Enabled the output of the version command in the JSON format using --format=json.

    • Added the --all option to the amcheck command, which allows performing all the checks in a single command.

    • Added support for the include parameter in the configuration file. The contents of the file specified in include gets added to the configuration file instead of this parameter.

    • Added a possibility to specify an individual number of threads for execution of a backup and its subsequent validation by specifying the --backup-threads and --validate-threads option, respectively.

    • Changed the priority of setting PGDATA and BACKUP_PATH. Now the values from the command-line options take precedence.

    • Added validation of WAL files for backups to be merged by the merge command.

    • An error message that was issued when the validate command run with the --wal option found an archive in the DEGRADED status has been replaced with a warning since backups in this status do not affect the restore correctness as a whole.

    • Added support for the --s3-config-file option of restore_command. postgresql.auto.conf must include the restore_command with the --s3-config-file option if the backup was created with this option.

    • The default value of PG_PROBACKUP_S3_IGNORE_CERT_VER is set to on according to the documentation.

    • Fixed an issue that could occur if the command line was too long.

    • Fixed an issue that could occur during validation or restore when the PITR from a previous timeline was performed.

    • Fixed an issue that could occur when the S3 connection port was specified both in PG_PROBACKUP_S3_PORT and PG_PROBACKUP_S3_HOST. Now the value specified in PG_PROBACKUP_S3_HOST, together with the address, has higher priority.

  • Upgraded pgpro_controldata to version 17.1.0.

  • Upgraded pgpro_stats to version 1.8, which supports Postgres Pro 17. Notable changes are as follows:

    • Updated pgpro_stats_statements and pgpro_stats_totals views to include fields added to pg_stat_statements. Related functions were updated accordingly.

    • Streamlined access to views and functions. Specifically, access to the pgpro_stats_archiver, pgpro_stats_vacuum_database, pgpro_stats_vacuum_tables, and pgpro_stats_vacuum_indexes views was granted to all users. Previously, these views required explicitly granting access rights. Access to execution of the pgpro_stats_trace_reset function, which could previously be executed by any user, was restricted to superusers.

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

    • Eliminated an excessive check of holding the lock when accessing the hash table of session-tracing filters.

    • Fixed processing of the pgpro_stats.stats_temp_directory configuration parameter. Previously after the server restart for changes to this parameter value to take effect, the fatal error pfree called with invalid pointer could occur when processing this parameter.

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

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

    • A subsample feature to collect relatively fast changing data.

    • New report tables, specifically regarding session states.

    • Support for new Postgres Pro 17 statistics.

    • A possibility not to reset statistics of the statistics collecting extension during taking a sample.

    • The change of the type for the field that tracks transaction IDs in a certain table from xid to text. The use of the xid type could previously cause a failure of pg_upgrade when upgrading from Postgres Pro Standard to Postgres Pro Enterprise.

  • Upgraded pgpro_scheduler to version 2.10, which provides the following changes:

    • Fixed an issue with automatic restart of one-time jobs after job interruption.

    • Fixed schedule.get_active_jobs to properly return the list of currently executed cron jobs.

    • Fixed an issue where errors occurring during job execution were not properly logged due to a primary key constraint preventing multiple log entries.

    • Fixed an issue where at job executor would fail when the database manager prematurely released the shared memory segment before the worker had connected to it.

    • Fixed an issue where schedule.timetable did not display the next execution time of cron jobs with either next_time_statement or an array of dates. Fixed an issue with calculating next execution time for cron jobs that caused job instances to be skipped.

    • Fixed an issue causing database crashes due to segmentation faults in the job executor background worker.

  • Upgraded pg_repack to version 1.5.1.

  • Upgraded pg_wait_sampling to provide tracking of subquery IDs and utility statements and to add the new pg_wait_sampling.sample_cpu parameter, which allows specifying the sampling mode that determines whether to perform sampling of on-CPU backends.

  • Upgraded the PLV8 extension to version 3.2.3.

  • Ensured compatibility of postgres_fdw with autonomous transactions.

  • Upgraded PTRACK to prevent possible issues with PTRACK backups by setting the ptrack.map file for automatic deletion when PTRACK is disabled.

  • Upgraded tds_fdw to version 2.0.4.

  • Achieved compatibility with TimescaleDB, which is an open-source database designed to make SQL scalable for time-series data.

E.1.2. Migration to Version 14.15.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.