↑↓ select ↵ open ⌫ change scope Open full search

PG.CENTER connects PostgreSQL documentation, reference, and ecosystem knowledge. Maintained by Pigsty.

DocumentationVersion comparison

POSTGRESQL · VERSION COMPARE

PostgreSQL 16.0 release changes

All features, fixes, and compatibility notes in this release, with related records from other versions.

All changes in this release
All changes in this release

Includes changes after the source version through the target. A major version name means its initial release.

From PostgreSQL 9.0 onward: 17 major branches and 352 release notes. Updated 2026-09-26.

Complete release changes

16.0

2023-09-14

Export JSON
206changesFeatures, fixes, improvements
1releaseGrouped by release
0CVEsVulnerability IDs mentioned in these notes

16.0 SupportedSupport ends 2028-11-09

PostgreSQL 16.0

Migration and compatibility

A dump/restore using pg_dumpall or use of pg_upgrade or logical replication is required for those wishing to migrate data from any previous release. See Section 19.6 for general information on migrating to new major releases.

Version 16 contains a number of changes that may affect compatibility with previous releases. Observe the following incompatibilities:

CompatibilityChange assignment rules for PL/pgSQL bound cursor variables

Compatibility

Change assignment rules for PL/pgSQL bound cursor variables (Tom Lane) §

Previously, the string value of such variables was set to match the variable name during cursor assignment; now it will be assigned during OPEN, and will not match the variable name. To restore the previous behavior, assign the desired portal name to the cursor variable before OPEN.

CompatibilityDisallow NULLS NOT DISTINCT indexes for primary keys

Compatibility

Disallow NULLS NOT DISTINCT indexes for primary keys (Daniel Gustafsson) §

CompatibilityChange REINDEX DATABASE and reindexdb to not process indexes on system catalogs

Compatibility

Change REINDEX DATABASE and reindexdb to not process indexes on system catalogs (Simon Riggs) § §

Processing such indexes is still possible using REINDEX SYSTEM and reindexdb --system.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

CompatibilityTighten GENERATED expression restrictions on inherited and partitioned tables

Compatibility

Tighten GENERATED expression restrictions on inherited and partitioned tables (Amit Langote, Tom Lane) §

Columns of parent/partitioned and child/partition tables must all have the same generation status, though now the actual generation expressions can be different.

CompatibilityRemove pg_walinspect functions pg_get_wal_records_info_till_end_of_wal() and pg_get_wal_stats_till_end_of_wal()

Compatibility

Remove pg_walinspect functions pg_get_wal_records_info_till_end_of_wal() and pg_get_wal_stats_till_end_of_wal() (Bharath Rupireddy) §

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

CompatibilityRename server variable force_parallel_mode to debug_parallel_query

Compatibility

Rename server variable force_parallel_mode to debug_parallel_query (David Rowley) § §

CompatibilityRemove the ability to create views manually with ON SELECT rules

Compatibility

Remove the ability to create views manually with ON SELECT rules (Tom Lane) §

CompatibilityRemove the server variable vacuum_defer_cleanup_age

Compatibility

Remove the server variable vacuum_defer_cleanup_age (Andres Freund) §

This has been unnecessary since hot_standby_feedback and replication slots were added.

CompatibilityRemove server variable promote_trigger_file

Compatibility

Remove server variable promote_trigger_file (Simon Riggs) §

This was used to promote a standby to primary, but is now more easily accomplished with pg_ctl promote or pg_promote().

CompatibilityRemove read-only server variables lc_collate and lc_ctype

Compatibility

Remove read-only server variables lc_collate and lc_ctype (Peter Eisentraut) §

Collations and locales can vary between databases so having them as read-only server variables was unhelpful.

CompatibilityRole inheritance now controls the default inheritance status of member roles added during GRANT

Compatibility

Role inheritance now controls the default inheritance status of member roles added during GRANT (Robert Haas) §

The role's default inheritance behavior can be overridden with the new GRANT ... WITH INHERIT clause. This allows inheritance of some roles and not others because the members' inheritance status is set at GRANT time. Previously the inheritance status of member roles was controlled only by the role's inheritance status, and changes to a role's inheritance status affected all previous and future member roles.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

CompatibilityRestrict the privileges of CREATEROLE and its ability to modify other roles

Compatibility

Restrict the privileges of CREATEROLE and its ability to modify other roles (Robert Haas) § §

Previously roles with CREATEROLE privileges could change many aspects of any non-superuser role. Such changes, including adding members, now require the role requesting the change to have ADMIN OPTION permission. For example, they can now change the CREATEDB, REPLICATION, and BYPASSRLS properties only if they also have those permissions.

CompatibilityRemove symbolic links for the postmaster binary

Compatibility

Remove symbolic links for the postmaster binary (Peter Eisentraut) §

FeaturesAllow incremental sorts in more cases, including DISTINCT

Server / Optimizer

Allow incremental sorts in more cases, including DISTINCT (David Rowley) § §

FeaturesAdd the ability for aggregates having ORDER BY or DISTINCT to use pre-sorted data

Server / Optimizer

Add the ability for aggregates having ORDER BY or DISTINCT to use pre-sorted data (David Rowley) § § §

The new server variable enable_presorted_aggregate can be used to disable this.

FeaturesAllow memoize atop a UNION ALL

Server / Optimizer

Allow memoize atop a UNION ALL (Richard Guo) §

FeaturesAllow anti-joins to be performed with the non-nullable input as the inner relation

Server / Optimizer

Allow anti-joins to be performed with the non-nullable input as the inner relation (Richard Guo) §

FeaturesAllow parallelization of FULL and internal right OUTER hash joins

Server / Optimizer

Allow parallelization of FULL and internal right OUTER hash joins (Melanie Plageman, Thomas Munro) §

FeaturesImprove the accuracy of GIN index access optimizer costs

Server / Optimizer

Improve the accuracy of GIN index access optimizer costs (Ronan Dunklau) §

PerformanceAllow more efficient addition of heap and index pages

Server / General Performance

Allow more efficient addition of heap and index pages (Andres Freund) § §

PerformanceDuring non-freeze operations, perform page freezing where appropriate

Server / General Performance

During non-freeze operations, perform page freezing where appropriate (Peter Geoghegan) § § §

This makes full-table freeze vacuums less necessary.

PerformanceAllow window functions to use the faster ROWS mode internally when RANGE mode is active but unnecessary

Server / General Performance

Allow window functions to use the faster ROWS mode internally when RANGE mode is active but unnecessary (David Rowley) §

PerformanceAllow optimization of always-increasing window functions ntile(), cume_dist() and percent_rank()

Server / General Performance

Allow optimization of always-increasing window functions ntile(), cume_dist() and percent_rank() (David Rowley) §

PerformanceAllow aggregate functions string_agg() and array_agg() to be parallelized

Server / General Performance

Allow aggregate functions string_agg() and array_agg() to be parallelized (David Rowley) §

PerformanceImprove performance by caching RANGE and LIST partition lookups

Server / General Performance

Improve performance by caching RANGE and LIST partition lookups (Amit Langote, Hou Zhijie, David Rowley) §

PerformanceAllow control of the shared buffer usage by vacuum and analyze

Server / General Performance

Allow control of the shared buffer usage by vacuum and analyze (Melanie Plageman) § § §

The VACUUM/ANALYZE option is BUFFER_USAGE_LIMIT, and the vacuumdb option is --buffer-usage-limit. The default value is set by server variable vacuum_buffer_usage_limit, which also controls autovacuum.

PerformanceSupport wal_sync_method=fdatasync on Windows

Server / General Performance

Support wal_sync_method=fdatasync on Windows (Thomas Munro) §

PerformanceAllow HOT updates if only BRIN-indexed columns are updated

Server / General Performance

Allow HOT updates if only BRIN-indexed columns are updated (Matthias van de Meent, Josef Simanek, Tomas Vondra) §

PerformanceImprove the speed of updating the process title

Server / General Performance

Improve the speed of updating the process title (David Rowley) §

PerformanceAllow xid/subxid searches and ASCII string detection to use vector operations

Server / General Performance

Allow xid/subxid searches and ASCII string detection to use vector operations (Nathan Bossart, John Naylor) § § § §

ASCII detection is particularly useful for COPY FROM. Vector operations are also used for some C array searches.

PerformanceReduce overhead of memory allocations

Server / General Performance

Reduce overhead of memory allocations (Andres Freund, David Rowley) §

FeaturesAdd system view pg_stat_io view to track I/O statistics

Server / Monitoring

Add system view pg_stat_io view to track I/O statistics (Melanie Plageman) § § § § §

FeaturesRecord statistics on the last sequential and index scans on tables

Server / Monitoring

Record statistics on the last sequential and index scans on tables (Dave Page) §

This information appears in pg_stat_*_tables and pg_stat_*_indexes.

FeaturesRecord statistics on the occurrence of updated rows moving to new pages

Server / Monitoring

Record statistics on the occurrence of updated rows moving to new pages (Corey Huinker) §

The pg_stat_*_tables column is n_tup_newpage_upd.

FeaturesAdd speculative lock information to the pg_locks system view

Server / Monitoring

Add speculative lock information to the pg_locks system view (Masahiko Sawada, Noriyoshi Shinoda) §

The transaction id is displayed in the transactionid column and the speculative insertion token is displayed in the objid column.

FeaturesAdd the display of prepared statement result types to the pg_prepared_statements view

Server / Monitoring

Add the display of prepared statement result types to the pg_prepared_statements view (Dagfinn Ilmari Mannsåker) § §

FeaturesCreate subscription statistics entries at subscription creation time so stats_reset is accurate

Server / Monitoring

Create subscription statistics entries at subscription creation time so stats_reset is accurate (Andres Freund) §

Previously entries were created only when the first statistics were reported.

Bug fixesCorrect the I/O accounting for temp relation writes shown in pg_stat_database

Server / Monitoring

Correct the I/O accounting for temp relation writes shown in pg_stat_database (Melanie Plageman) §

FeaturesAdd function pg_stat_get_backend_subxact() to report on a session's subtransaction cache

Server / Monitoring

Add function pg_stat_get_backend_subxact() to report on a session's subtransaction cache (Dilip Kumar) §

FeaturesHave pg_stat_get_backend_idset(), pg_stat_get_backend_activity(), and related functions use the unchanging backend id

Server / Monitoring

Have pg_stat_get_backend_idset(), pg_stat_get_backend_activity(), and related functions use the unchanging backend id (Nathan Bossart) §

Previously the index values might change during the lifetime of the session.

FeaturesReport stand-alone backends with a special backend type

Server / Monitoring

Report stand-alone backends with a special backend type (Melanie Plageman) §

FeaturesAdd wait event SpinDelay to report spinlock sleep delays

Server / Monitoring

Add wait event SpinDelay to report spinlock sleep delays (Andres Freund) §

FeaturesCreate new wait event DSMAllocate to indicate waiting for dynamic shared memory allocation

Server / Monitoring

Create new wait event DSMAllocate to indicate waiting for dynamic shared memory allocation (Thomas Munro) §

Previously this type of wait was reported as DSMFillZeroWrite, which was also used by mmap() allocations.

FeaturesAdd the database name to the process title of logical WAL senders

Server / Monitoring

Add the database name to the process title of logical WAL senders (Tatsuhiro Nakamori) §

Physical WAL senders do not display a database name.

FeaturesAdd checkpoint and REDO LSN information to log_checkpoints messages

Server / Monitoring

Add checkpoint and REDO LSN information to log_checkpoints messages (Bharath Rupireddy, Kyotaro Horiguchi) §

FeaturesProvide additional details during client certificate failures

Server / Monitoring

Provide additional details during client certificate failures (Jacob Champion) §

FeaturesAdd predefined role pg_create_subscription with permission to create subscriptions

Server / Privileges

Add predefined role pg_create_subscription with permission to create subscriptions (Robert Haas) §

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAllow subscriptions to not require passwords

Server / Privileges

Allow subscriptions to not require passwords (Robert Haas) § § §

This is accomplished with the option password_required=false.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesSimplify permissions for LOCK TABLE

Server / Privileges

Simplify permissions for LOCK TABLE (Jeff Davis) §

Previously a user's ability to perform LOCK TABLE at various lock levels was limited to the lock levels required by the commands they had permission to execute on the table. For example, someone with UPDATE permission could perform all lock levels except ACCESS SHARE, even though it was a lesser lock level. Now users can issue lesser lock levels if they already have permission for greater lock levels.

FeaturesAllow ALTER GROUP group_name ADD USER user_name to be performed with ADMIN OPTION

Server / Privileges

Allow ALTER GROUP group_name ADD USER user_name to be performed with ADMIN OPTION (Robert Haas) §

Previously CREATEROLE permission was required.

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAllow GRANT to use WITH ADMIN TRUE/FALSE syntax

Server / Privileges

Allow GRANT to use WITH ADMIN TRUE/FALSE syntax (Robert Haas) §

Previously only the WITH ADMIN OPTION syntax was supported.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAllow roles that create other roles to automatically inherit the new role's rights or the ability to SET ROLE to the new role

Server / Privileges

Allow roles that create other roles to automatically inherit the new role's rights or the ability to SET ROLE to the new role (Robert Haas, Shi Yu) § §

This is controlled by server variable createrole_self_grant.

FeaturesPrevent users from changing the default privileges of non-inherited roles

Server / Privileges

Prevent users from changing the default privileges of non-inherited roles (Robert Haas) §

This is now only allowed for inherited roles.

FeaturesWhen granting role membership, require the granted-by role to be a role that has appropriate permissions

Server / Privileges

When granting role membership, require the granted-by role to be a role that has appropriate permissions (Robert Haas) §

This is a requirement even when a non-bootstrap superuser is granting role membership.

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAllow non-superusers to grant permissions using a granted-by user that is not the current user

Server / Privileges

Allow non-superusers to grant permissions using a granted-by user that is not the current user (Robert Haas) §

The current user still must have sufficient permissions given by the specified granted-by user.

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAdd GRANT to control permission to use SET ROLE

Server / Privileges

Add GRANT to control permission to use SET ROLE (Robert Haas) §

This is controlled by a new GRANT ... SET option.

FeaturesAdd dependency tracking to roles which have granted privileges

Server / Privileges

Add dependency tracking to roles which have granted privileges (Robert Haas) §

For example, removing ADMIN OPTION will fail if there are privileges using that option; CASCADE must be used to revoke dependent permissions.

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAdd dependency tracking of grantors for GRANT records

Server / Privileges

Add dependency tracking of grantors for GRANT records (Robert Haas) §

This guarantees that pg_auth_members.grantor values are always valid.

FeaturesAllow multiple role membership records

Server / Privileges

Allow multiple role membership records (Robert Haas) § §

Previously a new membership grant would remove a previous matching membership grant, even if other aspects of the grant did not match.

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesPrevent removal of superuser privileges for the bootstrap user

Server / Privileges

Prevent removal of superuser privileges for the bootstrap user (Robert Haas) §

Restoring such users could lead to errors.

FeaturesAllow makeaclitem() to accept multiple privilege names

Server / Privileges

Allow makeaclitem() to accept multiple privilege names (Robins Tharakan) §

Previously only a single privilege name, like SELECT, was accepted.

FeaturesAdd support for Kerberos credential delegation

Server / Server Configuration

Add support for Kerberos credential delegation (Stephen Frost) § § § §

This is enabled with server variable gss_accept_delegation and libpq connection parameter gssdelegation.

FeaturesAllow the SCRAM iteration count to be set with server variable scram_iterations

Server / Server Configuration

Allow the SCRAM iteration count to be set with server variable scram_iterations (Daniel Gustafsson) §

PerformanceImprove performance of server variable management

Server / Server Configuration

Improve performance of server variable management (Tom Lane) § §

FeaturesTighten restrictions on which server variables can be reset

Server / Server Configuration

Tighten restrictions on which server variables can be reset (Masahiko Sawada) §

Previously, while certain variables, like transaction_isolation, were not affected by RESET ALL, they could be individually reset in inappropriate situations.

FeaturesMove various postgresql.conf items into new categories

Server / Server Configuration

Move various postgresql.conf items into new categories (Shinya Kato) §

This also affects the categories displayed in the pg_settings view.

FeaturesPrevent configuration file recursion beyond 10 levels

Server / Server Configuration

Prevent configuration file recursion beyond 10 levels (Julien Rouhaud) §

FeaturesAllow autovacuum to more frequently honor changes to delay settings

Server / Server Configuration

Allow autovacuum to more frequently honor changes to delay settings (Melanie Plageman) § §

Rather than honor changes only at the start of each relation, honor them at the start of each block.

FeaturesRemove restrictions that archive files be durably renamed

Server / Server Configuration

Remove restrictions that archive files be durably renamed (Nathan Bossart) § §

The archive_command command is now more likely to be called with already-archived files after a crash.

FeaturesPrevent archive_library and archive_command from being set at the same time

Server / Server Configuration

Prevent archive_library and archive_command from being set at the same time (Nathan Bossart) §

Previously archive_library would override archive_command.

FeaturesAllow the postmaster to terminate children with an abort signal

Server / Server Configuration

Allow the postmaster to terminate children with an abort signal (Tom Lane) §

This allows collection of a core dump for a stuck child process. This is controlled by send_abort_for_crash and send_abort_for_kill. The postmaster's -T switch is now the same as setting send_abort_for_crash.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesRemove the non-functional postmaster -n option

Server / Server Configuration

Remove the non-functional postmaster -n option (Tom Lane) §

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAllow the server to reserve backend slots for roles with pg_use_reserved_connections membership

Server / Server Configuration

Allow the server to reserve backend slots for roles with pg_use_reserved_connections membership (Nathan Bossart) §

The number of reserved slots is set by server variable reserved_connections.

FeaturesAllow huge pages to work on newer versions of Windows 10

Server / Server Configuration

Allow huge pages to work on newer versions of Windows 10 (Thomas Munro) §

This adds the special handling required to enable huge pages on newer versions of Windows 10.

FeaturesAdd debug_io_direct setting for developer usage

Server / Server Configuration

Add debug_io_direct setting for developer usage (Thomas Munro, Andres Freund, Bharath Rupireddy) § §

While primarily for developers, wal_sync_method=open_sync/open_datasync has been modified to not use direct I/O with wal_level=minimal; this is now enabled with debug_io_direct=wal.

FeaturesAdd function pg_split_walfile_name() to report the segment and timeline values of WAL file names

Server / Server Configuration

Add function pg_split_walfile_name() to report the segment and timeline values of WAL file names (Bharath Rupireddy) § §

FeaturesAdd support for regular expression matching on database and role entries in pg_hba.conf

Server / pg_hba.conf

Add support for regular expression matching on database and role entries in pg_hba.conf (Bertrand Drouvot) §

Regular expression patterns are prefixed with a slash. Database and role names that begin with slashes need to be double-quoted if referenced in pg_hba.conf.

FeaturesImprove user-column handling of pg_ident.conf to match pg_hba.conf

Server / pg_hba.conf

Improve user-column handling of pg_ident.conf to match pg_hba.conf (Jelte Fennema) §

Specifically, add support for all, role membership with +, and regular expressions with a leading slash. Any user name that matches these patterns must be double-quoted.

FeaturesAllow include files in pg_hba.conf and pg_ident.conf

Server / pg_hba.conf

Allow include files in pg_hba.conf and pg_ident.conf (Julien Rouhaud) §

These are controlled by include, include_if_exists, and include_dir. System views pg_hba_file_rules and pg_ident_file_mappings now display the file name.

FeaturesAllow pg_hba.conf tokens to be of unlimited length

Server / pg_hba.conf

Allow pg_hba.conf tokens to be of unlimited length (Tom Lane) §

Related records (5)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAdd rule and map numbers to the system view pg_hba_file_rules

Server / pg_hba.conf

Add rule and map numbers to the system view pg_hba_file_rules (Julien Rouhaud) §

FeaturesDetermine the default encoding from the locale when using ICU

Server / Localization

Determine the default encoding from the locale when using ICU (Jeff Davis) §

Previously the default was always UTF-8.

FeaturesHave CREATE DATABASE and CREATE COLLATION's LOCALE options, and initdb and createdb --locale options, control non-libc collation providers

Server / Localization

Have CREATE DATABASE and CREATE COLLATION's LOCALE options, and initdb and createdb --locale options, control non-libc collation providers (Jeff Davis)

Previously they only controlled libc providers.

FeaturesAdd predefined collations unicode and ucs_basic

Server / Localization

Add predefined collations unicode and ucs_basic (Peter Eisentraut) §

This only works if ICU support is enabled.

FeaturesAllow custom ICU collation rules to be created

Server / Localization

Allow custom ICU collation rules to be created (Peter Eisentraut) §

This is done using CREATE COLLATION's new RULES clause, as well as new options for CREATE DATABASE, createdb, and initdb.

FeaturesAllow Windows to import system locales automatically

Server / Localization

Allow Windows to import system locales automatically (Juan José Santamaría Flecha) §

Previously, only ICU locales could be imported on Windows.

FeaturesAllow logical decoding on standbys

Logical Replication

Allow logical decoding on standbys (Bertrand Drouvot, Andres Freund, Amit Khandekar) § § §

Snapshot WAL records are required for logical slot creation but cannot be created on standbys. To avoid delays, the new function pg_log_standby_snapshot() allows creation of such records.

FeaturesAdd server variable to control how logical decoding publishers transfer changes and how subscribers apply them

Logical Replication

Add server variable to control how logical decoding publishers transfer changes and how subscribers apply them (Shi Yu) § § §

The variable is debug_logical_replication_streaming.

FeaturesAllow logical replication initial table synchronization to copy rows in binary format

Logical Replication

Allow logical replication initial table synchronization to copy rows in binary format (Melih Mutlu) §

This is only possible for subscriptions marked as binary.

FeaturesAllow parallel application of logical replication

Logical Replication

Allow parallel application of logical replication (Hou Zhijie, Wang Wei, Amit Kapila) § § §

The CREATE SUBSCRIPTION STREAMING option now supports parallel to enable application of large transactions by parallel workers. The number of parallel workers is controlled by the new server variable max_parallel_apply_workers_per_subscription. Wait events LogicalParallelApplyMain, LogicalParallelApplyStateChange, and LogicalApplySendData were also added. Column leader_pid was added to system view pg_stat_subscription to track parallel activity.

PerformanceImprove performance for logical replication apply without a primary key

Logical Replication

Improve performance for logical replication apply without a primary key (Onder Kalaci, Amit Kapila) §

Specifically, REPLICA IDENTITY FULL can now use btree indexes rather than sequentially scanning the table to find matches.

FeaturesAllow logical replication subscribers to process only changes that have no origin

Logical Replication

Allow logical replication subscribers to process only changes that have no origin (Vignesh C, Amit Kapila) § §

This can be used to avoid replication loops. This is controlled by the new CREATE SUBSCRIPTION ... ORIGIN option.

FeaturesPerform logical replication SELECT and DML actions as the table owner

Logical Replication

Perform logical replication SELECT and DML actions as the table owner (Robert Haas) § §

This improves security and now requires subscription owners to be either superusers or to have SET ROLE permission on all roles owning tables in the replication set. The previous behavior of performing all operations as the subscription owner can be enabled with the subscription run_as_owner option.

FeaturesHave wal_retrieve_retry_interval operate on a per-subscription basis

Logical Replication

Have wal_retrieve_retry_interval operate on a per-subscription basis (Nathan Bossart) §

Previously the retry time was applied globally. This also adds wait events >LogicalRepLauncherDSA and LogicalRepLauncherHash.

FeaturesAdd EXPLAIN option GENERIC_PLAN to display the generic plan for a parameterized query

Utility Commands

Add EXPLAIN option GENERIC_PLAN to display the generic plan for a parameterized query (Laurenz Albe) §

FeaturesAllow a COPY FROM value to map to a column's DEFAULT

Utility Commands

Allow a COPY FROM value to map to a column's DEFAULT (Israel Barth Rubio) §

FeaturesAllow COPY into foreign tables to add rows in batches

Utility Commands

Allow COPY into foreign tables to add rows in batches (Andrey Lepikhov, Etsuro Fujita) §

This is controlled by the postgres_fdw option batch_size.

FeaturesAllow the STORAGE type to be specified by CREATE TABLE

Utility Commands

Allow the STORAGE type to be specified by CREATE TABLE (Teodor Sigaev, Aleksander Alekseev) § §

Previously only ALTER TABLE could control this.

FeaturesAllow truncate triggers on foreign tables

Utility Commands

Allow truncate triggers on foreign tables (Yugo Nagata) §

FeaturesAllow VACUUM and vacuumdb to only process TOAST tables

Utility Commands

Allow VACUUM and vacuumdb to only process TOAST tables (Nathan Bossart) §

This is accomplished by having VACUUM turn off PROCESS_MAIN or by vacuumdb using the --no-process-main option.

FeaturesAdd VACUUM options to skip or update all frozen statistics

Utility Commands

Add VACUUM options to skip or update all frozen statistics (Tom Lane, Nathan Bossart) §

The options are SKIP_DATABASE_STATS and ONLY_DATABASE_STATS.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesChange REINDEX DATABASE and REINDEX SYSTEM to no longer require an argument

Utility Commands

Change REINDEX DATABASE and REINDEX SYSTEM to no longer require an argument (Simon Riggs) § §

Previously the database name had to be specified.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAllow CREATE STATISTICS to generate a statistics name if none is specified

Utility Commands

Allow CREATE STATISTICS to generate a statistics name if none is specified (Simon Riggs) §

FeaturesAllow non-decimal integer literals

Data Types

Allow non-decimal integer literals (Peter Eisentraut) §

For example, 0x42F, 0o273, and 0b100101.

FeaturesAllow NUMERIC to process hexadecimal, octal, and binary integers of any size

Data Types

Allow NUMERIC to process hexadecimal, octal, and binary integers of any size (Dean Rasheed) §

Previously only unquoted eight-byte integers were supported with these non-decimal bases.

FeaturesAllow underscores in integer and numeric constants

Data Types

Allow underscores in integer and numeric constants (Peter Eisentraut, Dean Rasheed) §

This can improve readability for long strings of digits.

FeaturesAccept the spelling +infinity in datetime input

Data Types

Accept the spelling +infinity in datetime input (Vik Fearing) §

FeaturesPrevent the specification of epoch and infinity together with other fields in datetime strings

Data Types

Prevent the specification of epoch and infinity together with other fields in datetime strings (Joseph Koshakow) §

FeaturesRemove undocumented support for date input in the form YyearMmonthDday

Data Types

Remove undocumented support for date input in the form YyearMmonthDday (Joseph Koshakow) §

FeaturesAdd functions pg_input_is_valid() and pg_input_error_info() to check for type conversion errors

Data Types

Add functions pg_input_is_valid() and pg_input_error_info() to check for type conversion errors (Tom Lane) § §

FeaturesAllow subqueries in the FROM clause to omit aliases

General Queries

Allow subqueries in the FROM clause to omit aliases (Dean Rasheed) §

FeaturesAdd support for enhanced numeric literals in SQL/JSON paths

General Queries

Add support for enhanced numeric literals in SQL/JSON paths (Peter Eisentraut) §

For example, allow hexadecimal, octal, and binary integers and underscores between digits.

FeaturesAdd SQL/JSON constructors

Functions

Add SQL/JSON constructors (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Amit Langote) §

The new functions JSON_ARRAY(), JSON_ARRAYAGG(), JSON_OBJECT(), and JSON_OBJECTAGG() are part of the SQL standard.

FeaturesAdd SQL/JSON object checks

Functions

Add SQL/JSON object checks (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Amit Langote, Andrew Dunstan) §

The IS JSON checks include checks for values, arrays, objects, scalars, and unique keys.

FeaturesAllow JSON string parsing to use vector operations

Functions

Allow JSON string parsing to use vector operations (John Naylor) §

FeaturesImprove the handling of full text highlighting function ts_headline() for OR and NOT expressions

Functions

Improve the handling of full text highlighting function ts_headline() for OR and NOT expressions (Tom Lane) §

FeaturesAdd functions to add, subtract, and generate timestamptz values in a specified time zone

Functions

Add functions to add, subtract, and generate timestamptz values in a specified time zone (Przemyslaw Sztoch, Gurjeet Singh) §

The functions are date_add(), date_subtract(), and generate_series().

FeaturesChange date_trunc(unit, timestamptz, time_zone) to be an immutable function

Functions

Change date_trunc(unit, timestamptz, time_zone) to be an immutable function (Przemyslaw Sztoch) §

This allows the creation of expression indexes using this function.

FeaturesAdd server variable SYSTEM_USER

Functions

Add server variable SYSTEM_USER (Bertrand Drouvot) §

This reports the authentication method and its authenticated user.

FeaturesAdd functions array_sample() and array_shuffle()

Functions

Add functions array_sample() and array_shuffle() (Martin Kalcher) §

FeaturesAdd aggregate function ANY_VALUE() which returns any value from a set

Functions

Add aggregate function ANY_VALUE() which returns any value from a set (Vik Fearing) §

FeaturesAdd function random_normal() to supply normally-distributed random numbers

Functions

Add function random_normal() to supply normally-distributed random numbers (Paul Ramsey) §

FeaturesAdd error function erf() and its complement erfc()

Functions

Add error function erf() and its complement erfc() (Dean Rasheed) §

FeaturesImprove the accuracy of numeric power() for integer exponents

Functions

Improve the accuracy of numeric power() for integer exponents (Dean Rasheed) §

FeaturesAdd XMLSERIALIZE() option INDENT to pretty-print its output

Functions

Add XMLSERIALIZE() option INDENT to pretty-print its output (Jim Jones) §

FeaturesChange pg_collation_actual_version() to return a reasonable value for the default collation

Functions

Change pg_collation_actual_version() to return a reasonable value for the default collation (Jeff Davis) §

Previously it returned NULL.

FeaturesAllow pg_read_file() and pg_read_binary_file() to ignore missing files

Functions

Allow pg_read_file() and pg_read_binary_file() to ignore missing files (Kyotaro Horiguchi) §

FeaturesAdd byte specification (B) to pg_size_bytes()

Functions

Add byte specification (B) to pg_size_bytes() (Peter Eisentraut) §

FeaturesAllow to_reg* functions to accept numeric OIDs as input

Functions

Allow to_reg* functions to accept numeric OIDs as input (Tom Lane) §

FeaturesAdd the ability to get the current function's OID in PL/pgSQL

PL/pgSQL

Add the ability to get the current function's OID in PL/pgSQL (Pavel Stehule) §

This is accomplished with GET DIAGNOSTICS variable = PG_ROUTINE_OID.

FeaturesAdd libpq connection option require_auth to specify a list of acceptable authentication methods

libpq

Add libpq connection option require_auth to specify a list of acceptable authentication methods (Jacob Champion) §

This can also be used to disallow certain authentication methods.

FeaturesAllow multiple libpq-specified hosts to be randomly selected

libpq

Allow multiple libpq-specified hosts to be randomly selected (Jelte Fennema) § §

This is enabled with load_balance_hosts=random and can be used for load balancing.

FeaturesAdd libpq option sslcertmode to control transmission of the client certificate

libpq

Add libpq option sslcertmode to control transmission of the client certificate (Jacob Champion) §

The option values are disable, allow, and require.

FeaturesAllow libpq to use the system certificate pool for certificate verification

libpq

Allow libpq to use the system certificate pool for certificate verification (Jacob Champion, Thomas Habets) §

This is enabled with sslrootcert=system, which also enables sslmode=verify-full.

FeaturesAllow ECPG variable declarations to use typedef names that match unreserved SQL keywords

Client Applications

Allow ECPG variable declarations to use typedef names that match unreserved SQL keywords (Tom Lane) §

This change does prevent keywords which match C typedef names from being processed as keywords in later EXEC SQL blocks.

FeaturesAllow psql to control the maximum width of header lines in expanded format

Client Applications / psql

Allow psql to control the maximum width of header lines in expanded format (Platon Pronko) §

This is controlled by xheader_width.

FeaturesAdd psql command \drg to show role membership details

Client Applications / psql

Add psql command \drg to show role membership details (Pavel Luzanov) § §

The Member of output column has been removed from \du and \dg because this new command displays this information in more detail.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAllow psql's access privilege commands to show system objects

Client Applications / psql

Allow psql's access privilege commands to show system objects (Nathan Bossart) § §

The options are \dpS and \zS.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAdd FOREIGN designation to psql \d+ for foreign table children and partitions

Client Applications / psql

Add FOREIGN designation to psql \d+ for foreign table children and partitions (Ian Lawrence Barwick) §

FeaturesPrevent \df+ from showing function source code

Client Applications / psql

Prevent \df+ from showing function source code (Isaac Morland) §

Function bodies are more easily viewed with \sf.

FeaturesAllow psql to submit queries using the extended query protocol

Client Applications / psql

Allow psql to submit queries using the extended query protocol (Peter Eisentraut) §

Passing arguments to such queries is done using the new psql \bind command.

FeaturesAllow psql \watch to limit the number of executions

Client Applications / psql

Allow psql \watch to limit the number of executions (Andrey Borodin) §

The \watch options can now be named when specified.

FeaturesDetect invalid values for psql \watch, and allow zero to specify no delay

Client Applications / psql

Detect invalid values for psql \watch, and allow zero to specify no delay (Andrey Borodin) §

FeaturesAllow psql scripts to obtain the exit status of shell commands and queries

Client Applications / psql

Allow psql scripts to obtain the exit status of shell commands and queries (Corey Huinker, Tom Lane) § §

The new psql control variables are SHELL_ERROR and SHELL_EXIT_CODE.

FeaturesVarious psql tab completion improvements

Client Applications / psql

Various psql tab completion improvements (Vignesh C, Aleksander Alekseev, Dagfinn Ilmari Mannsåker, Shi Yu, Michael Paquier, Ken Kato, Peter Smith) § § § § § § § § § § § §

FeaturesAdd pg_dump control of dumping child tables and partitions

Client Applications / pg_dump

Add pg_dump control of dumping child tables and partitions (Gilles Darold) §

The new options are --table-and-children, --exclude-table-and-children, and --exclude-table-data-and-children.

FeaturesAdd LZ4 and Zstandard compression to pg_dump

Client Applications / pg_dump

Add LZ4 and Zstandard compression to pg_dump (Georgios Kokolatos, Justin Pryzby)

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAllow pg_dump and pg_basebackup to use long mode for compression

Client Applications / pg_dump

Allow pg_dump and pg_basebackup to use long mode for compression (Justin Pryzby) § § § §

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesImprove pg_dump to accept a more consistent compression syntax

Client Applications / pg_dump

Improve pg_dump to accept a more consistent compression syntax (Georgios Kokolatos) §

Options like --compress=gzip:5.

FeaturesAdd initdb option to set server variables for the duration of initdb and all future server starts

Server Applications

Add initdb option to set server variables for the duration of initdb and all future server starts (Tom Lane) §

The option is -c name=value.

FeaturesAdd options to createuser to control more user options

Server Applications

Add options to createuser to control more user options (Shinya Kato) § §

Specifically, the new options control the valid-until date, bypassing of row-level security, and role membership.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesDeprecate createuser option --role

Server Applications

Deprecate createuser option --role (Nathan Bossart) § §

This option could be easily confused with new createuser role membership options, so option --member-of has been added with the same functionality. The --role option can still be used.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAllow control of vacuumdb schema processing

Server Applications

Allow control of vacuumdb schema processing (Gilles Darold) §

These are controlled by options --schema and --exclude-schema.

PerformanceUse new VACUUM options to improve the performance of vacuumdb

Server Applications

Use new VACUUM options to improve the performance of vacuumdb (Tom Lane, Nathan Bossart) §

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesHave pg_upgrade set the new cluster's locale and encoding

Server Applications

Have pg_upgrade set the new cluster's locale and encoding (Jeff Davis) §

This removes the requirement that the new cluster be created with the same locale and encoding settings.

FeaturesAdd pg_upgrade option to specify the default transfer mode

Server Applications

Add pg_upgrade option to specify the default transfer mode (Peter Eisentraut) §

The option is --copy.

FeaturesImprove pg_basebackup to accept numeric compression options

Server Applications

Improve pg_basebackup to accept numeric compression options (Georgios Kokolatos, Michael Paquier) §

Options like --compress=server-5 are now supported.

Bug fixesFix pg_basebackup to handle tablespaces stored in the PGDATA directory

Server Applications

Fix pg_basebackup to handle tablespaces stored in the PGDATA directory (Robert Haas) §

FeaturesAdd pg_waldump option --save-fullpage to dump full page images

Server Applications

Add pg_waldump option --save-fullpage to dump full page images (David Christensen) §

FeaturesAllow pg_waldump options -t/--timeline to accept hexadecimal values

Server Applications

Allow pg_waldump options -t/--timeline to accept hexadecimal values (Peter Eisentraut) §

FeaturesAdd support for progress reporting to pg_verifybackup

Server Applications

Add support for progress reporting to pg_verifybackup (Masahiko Sawada) §

FeaturesAllow pg_rewind to properly track timeline changes

Server Applications

Allow pg_rewind to properly track timeline changes (Heikki Linnakangas) § §

Previously if pg_rewind was run after a timeline switch but before a checkpoint was issued, it might incorrectly determine that a rewind was unnecessary.

FeaturesHave pg_receivewal and pg_recvlogical cleanly exit on SIGTERM

Server Applications

Have pg_receivewal and pg_recvlogical cleanly exit on SIGTERM (Christoph Berg) §

This signal is often used by systemd.

FeaturesBuild ICU support by default

Source Code

Build ICU support by default (Jeff Davis) §

This removes build flag --with-icu and adds flag --without-icu.

FeaturesAdd support for SSE2 (Streaming SIMD Extensions 2) vector operations on x86-64 architectures

Source Code

Add support for SSE2 (Streaming SIMD Extensions 2) vector operations on x86-64 architectures (John Naylor) §

FeaturesAdd support for Advanced SIMD (Single Instruction Multiple Data) (NEON) instructions on ARM architectures

Source Code

Add support for Advanced SIMD (Single Instruction Multiple Data) (NEON) instructions on ARM architectures (Nathan Bossart) §

FeaturesHave Windows binaries built with MSVC use RandomizedBaseAddress (ASLR)

Source Code

Have Windows binaries built with MSVC use RandomizedBaseAddress (ASLR) (Michael Paquier) §

This was already enabled on MinGW builds.

FeaturesPrevent extension libraries from exporting their symbols by default

Source Code

Prevent extension libraries from exporting their symbols by default (Andres Freund, Tom Lane) § §

Functions that need to be called from the core backend or other extensions must now be explicitly marked PGDLLEXPORT.

FeaturesRequire Windows 10 or newer versions

Source Code

Require Windows 10 or newer versions (Michael Paquier, Juan José Santamaría Flecha) §

Previously Windows Vista and Windows XP were supported.

FeaturesRequire Perl version 5.14 or later

Source Code

Require Perl version 5.14 or later (John Naylor) §

FeaturesRequire Bison version 2.3 or later

Source Code

Require Bison version 2.3 or later (John Naylor) §

FeaturesRequire Flex version 2.5.35 or later

Source Code

Require Flex version 2.5.35 or later (John Naylor) §

FeaturesRequire MIT Kerberos for GSSAPI support

Source Code

Require MIT Kerberos for GSSAPI support (Stephen Frost) §

FeaturesRemove support for Visual Studio 2013

Source Code

Remove support for Visual Studio 2013 (Michael Paquier) §

FeaturesRemove support for HP-UX

Source Code

Remove support for HP-UX (Thomas Munro) §

FeaturesRemove support for HP/Intel Itanium

Source Code

Remove support for HP/Intel Itanium (Thomas Munro) §

FeaturesRemove support for M68K, M88K, M32R, and SuperH CPU architectures

Source Code

Remove support for M68K, M88K, M32R, and SuperH CPU architectures (Thomas Munro) § §

FeaturesRemove libpq support for SCM credential authentication

Source Code

Remove libpq support for SCM credential authentication (Michael Paquier) §

Backend support for this authentication method was removed in PostgresSQL 9.1.

FeaturesAdd meson build system

Source Code

Add meson build system (Andres Freund, Nazir Bilal Yavuz, Peter Eisentraut) §

This eventually will replace the Autoconf and Windows-based MSVC build systems.

FeaturesAllow control of the location of the openssl binary used by the build system

Source Code

Allow control of the location of the openssl binary used by the build system (Peter Eisentraut) §

Make finding openssl program a configure or meson option

FeaturesAdd build option to allow testing of small table segment sizes

Source Code

Add build option to allow testing of small table segment sizes (Andres Freund) §

The build options are --with-segsize-blocks and -Dsegsize_blocks.

FeaturesAdd pgindent options

Source Code

Add pgindent options (Andrew Dunstan) § § § § § § §

The new options are --show-diff, --silent-diff, --commit, and --help, and allow multiple --exclude options. Also require the typedef file to be explicitly specified. Options --code-base and --build were also removed.

FeaturesAdd pg_bsd_indent source code to the main tree

Source Code

Add pg_bsd_indent source code to the main tree (Tom Lane) §

FeaturesImprove make_ctags and make_etags

Source Code

Improve make_ctags and make_etags (Yugo Nagata) §

FeaturesAdjust pg_attribute columns for efficiency

Source Code

Adjust pg_attribute columns for efficiency (Peter Eisentraut) §

FeaturesImprove use of extension-based indexes on boolean columns

Additional Modules

Improve use of extension-based indexes on boolean columns (Zongliang Quan, Tom Lane) §

FeaturesAdd support for Daitch-Mokotoff Soundex to fuzzystrmatch

Additional Modules

Add support for Daitch-Mokotoff Soundex to fuzzystrmatch (Dag Lem) §

FeaturesAllow auto_explain to log values passed to parameterized statements

Additional Modules

Allow auto_explain to log values passed to parameterized statements (Dagfinn Ilmari Mannsåker) §

This affects queries using server-side PREPARE/EXECUTE and client-side parse/bind. Logging is controlled by auto_explain.log_parameter_max_length; by default query parameters will be logged with no length restriction.

FeaturesHave auto_explain's log_verbose mode honor the value of compute_query_id

Additional Modules

Have auto_explain's log_verbose mode honor the value of compute_query_id (Atsushi Torikoshi) §

Previously even if compute_query_id was enabled, log_verbose was not showing the query identifier.

FeaturesChange the maximum length of ltree labels from 256 to 1000 and allow hyphens

Additional Modules

Change the maximum length of ltree labels from 256 to 1000 and allow hyphens (Garen Torikian) §

FeaturesHave pg_stat_statements normalize constants used in utility commands

Additional Modules

Have pg_stat_statements normalize constants used in utility commands (Michael Paquier) §

Previously constants appeared instead of placeholders, e.g., $1.

FeaturesAdd pg_walinspect function pg_get_wal_block_info() to report WAL block information

Additional Modules

Add pg_walinspect function pg_get_wal_block_info() to report WAL block information (Michael Paquier, Melanie Plageman, Bharath Rupireddy) § § § §

FeaturesChange how pg_walinspect functions pg_get_wal_records_info() and pg_get_wal_stats() interpret ending LSNs

Additional Modules

Change how pg_walinspect functions pg_get_wal_records_info() and pg_get_wal_stats() interpret ending LSNs (Bharath Rupireddy) §

Previously ending LSNs which represent nonexistent WAL locations would generate an error, while they will now be interpreted as the end of the WAL.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAdd detailed descriptions of WAL records in pg_walinspect and pg_waldump

Additional Modules

Add detailed descriptions of WAL records in pg_walinspect and pg_waldump (Melanie Plageman, Peter Geoghegan) § § § §

FeaturesAdd pageinspect function bt_multi_page_stats() to report statistics on multiple pages

Additional Modules

Add pageinspect function bt_multi_page_stats() to report statistics on multiple pages (Hamid Akhtar) §

This is similar to bt_page_stats() except it can report on a range of pages.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAdd empty range output column to pageinspect function brin_page_items()

Additional Modules

Add empty range output column to pageinspect function brin_page_items() (Tomas Vondra) §

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesRedesign archive modules to be more flexible

Additional Modules

Redesign archive modules to be more flexible (Nathan Bossart) §

Initialization changes will require modules written for older versions of Postgres to be updated.

Bug fixesCorrect inaccurate pg_stat_statements row tracking extended query protocol statements

Additional Modules

Correct inaccurate pg_stat_statements row tracking extended query protocol statements (Sami Imseih) §

FeaturesAdd pg_buffercache function pg_buffercache_usage_counts() to report usage totals

Additional Modules

Add pg_buffercache function pg_buffercache_usage_counts() to report usage totals (Nathan Bossart) §

FeaturesAdd pg_buffercache function pg_buffercache_summary() to report summarized buffer statistics

Additional Modules

Add pg_buffercache function pg_buffercache_summary() to report summarized buffer statistics (Melih Mutlu) §

FeaturesAllow the schemas of required extensions to be referenced in extension scripts using the new syntax @extschema:referenced_extension_name@

Additional Modules

Allow the schemas of required extensions to be referenced in extension scripts using the new syntax @extschema:referenced_extension_name@ (Regina Obe) §

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAllow required extensions to be marked as non-relocatable using no_relocate

Additional Modules

Allow required extensions to be marked as non-relocatable using no_relocate (Regina Obe) §

This allows @extschema:referenced_extension_name@ to be treated as a constant for the lifetime of the extension.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

FeaturesAllow postgres_fdw to do aborts in parallel

Additional Modules / postgres_fdw

Allow postgres_fdw to do aborts in parallel (Etsuro Fujita) §

This is enabled with postgres_fdw option parallel_abort.

FeaturesMake ANALYZE on foreign postgres_fdw tables more efficient

Additional Modules / postgres_fdw

Make ANALYZE on foreign postgres_fdw tables more efficient (Tomas Vondra) §

The postgres_fdw option analyze_sampling controls the sampling method.

FeaturesRestrict shipment of reg* type constants in postgres_fdw to those referencing built-in objects or extensions marked as shippable

Additional Modules / postgres_fdw

Restrict shipment of reg* type constants in postgres_fdw to those referencing built-in objects or extensions marked as shippable (Tom Lane) §

FeaturesHave postgres_fdw and dblink handle interrupts during connection establishment

Additional Modules / postgres_fdw

Have postgres_fdw and dblink handle interrupts during connection establishment (Andres Freund) §

How is this comparison generated?

The comparison follows PostgreSQL release notes from just after the source through the target version. For a major upgrade, maintenance releases from each older branch are included only up to the next major release date, and never after the target date. A major version such as 18 means its initial release, 18.0. Previews and development snapshots are labeled separately.

Entries come from the original English manuals. Release coverage and commit evidence are verified against upstream sources. Every entry retains its complete explanation and source link. Categories aid browsing; read the full notes for impact, conditions, and migration steps.

Fixes can be backported to several branches. Confirmed duplicates are merged conservatively, with every branch explanation retained. A note describing several independent fixes is excluded only when all are already present in the source. Major-release features remain distinct from related maintenance patches unless their complete original descriptions match. Uncertain matches are retained. This is a release-note history, not an exhaustive comparison of compiled binaries.

CVE results are calculated independently from the PostgreSQL security registry and vulnerability records. A CVE counts as gained protection only when the source is affected and the target is fixed or unaffected. Remaining vulnerabilities are listed separately. Security entries and distinct CVEs are counted separately.

Interaction inspired by pgversions.com and pgversionreport. Content comes from PostgreSQL release notes. See the release notes archive.