↑↓ 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 15.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

15.0

2022-10-13

Export JSON
184changesFeatures, fixes, improvements
1releaseGrouped by release
1CVEVulnerability IDs mentioned in these notes

15.0 SupportedSupport ends 2027-11-11

Security records mentioned in this release 1 CVE
CVEs mentioned in these notes, including possible follow-up fixes for earlier vulnerabilities
CVE / issueSeverityFixed version
CVE-2018-1058

Remove PUBLIC creation permission on the public schema

8.8

PostgreSQL 15.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 15 contains a number of changes that may affect compatibility with previous releases. Observe the following incompatibilities:

SecurityRemove PUBLIC creation permission on the public schema

Compatibility

Remove PUBLIC creation permission on the public schema (Noah Misch) §

The new default is one of the secure schema usage patterns that Section 5.9.6 has recommended since the security release for CVE-2018-1058. The change applies to new database clusters and to newly-created databases in existing clusters. Upgrading a cluster or restoring a database dump will preserve public's existing permissions.

For existing databases, especially those having multiple users, consider revoking CREATE permission on the public schema to adopt this new default. For new databases having no need to defend against insider threats, granting CREATE permission will yield the behavior of prior releases.

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.

CompatibilityChange the owner of the public schema to be the new pg_database_owner role

Compatibility

Change the owner of the public schema to be the new pg_database_owner role (Noah Misch) §

This allows each database's owner to have ownership privileges on the public schema within their database. Previously it was owned by the bootstrap superuser, so that non-superuser database owners could not do anything with it.

This change applies to new database clusters and to newly-created databases in existing clusters. Upgrading a cluster or restoring a database dump will preserve public's existing ownership specification.

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.

CompatibilityRemove long-deprecated exclusive backup mode

Compatibility

Remove long-deprecated exclusive backup mode (David Steele, Nathan Bossart) §

If the database server stops abruptly while in this mode, the server could fail to start. The non-exclusive backup mode is considered superior for all purposes. Functions pg_start_backup()/pg_stop_backup() have been renamed to pg_backup_start()/pg_backup_stop(), and the functions pg_backup_start_time() and pg_is_in_backup() have been removed.

CompatibilityIncrease hash_mem_multiplier default to 2.0

Compatibility

Increase hash_mem_multiplier default to 2.0 (Peter Geoghegan) §

This allows query hash operations to use more work_mem memory than other operations.

CompatibilityRemove server-side language plpython2u and generic Python language plpythonu

Compatibility

Remove server-side language plpython2u and generic Python language plpythonu (Andres Freund) §

Python 2.x is no longer supported. While the original intent of plpythonu was that it could eventually refer to plpython3u, changing it now seems more likely to cause problems than solve them, so it's just been removed.

CompatibilityGenerate an error if array_to_tsvector() is passed an empty-string array element

Compatibility

Generate an error if array_to_tsvector() is passed an empty-string array element (Jean-Christophe Arnu) §

This is prohibited because lexemes should never be empty. Users of previous Postgres releases should verify that no empty lexemes are stored because they can lead to dump/restore failures and inconsistent results.

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.

CompatibilityGenerate an error when chr() is supplied with a negative argument

Compatibility

Generate an error when chr() is supplied with a negative argument (Peter Eisentraut) §

CompatibilityPrevent CREATE OR REPLACE VIEW from changing the collation of an output column

Compatibility

Prevent CREATE OR REPLACE VIEW from changing the collation of an output column (Tom Lane) §

CompatibilityDisallow zero-length Unicode identifiers, e.g., U&""

Compatibility

Disallow zero-length Unicode identifiers, e.g., U&"" (Peter Eisentraut) §

Non-Unicode zero-length identifiers were already disallowed.

CompatibilityPrevent numeric literals from having non-numeric trailing characters

Compatibility

Prevent numeric literals from having non-numeric trailing characters (Peter Eisentraut) §

Previously, query text like 123abc would be interpreted as 123 followed by a separate token abc.

CompatibilityAdjust JSON numeric literal processing to match the SQL/JSON-standard

Compatibility

Adjust JSON numeric literal processing to match the SQL/JSON-standard (Peter Eisentraut) §

This accepts numeric formats like .1 and 1., and disallows trailing junk after numeric literals, like 1.type().

CompatibilityWhen interval input provides a fractional value for a unit greater than months, round to the nearest month

Compatibility

When interval input provides a fractional value for a unit greater than months, round to the nearest month (Bruce Momjian) §

For example, convert 1.99 years to 2 years, not 1 year 11 months as before.

CompatibilityImprove consistency of interval parsing with trailing periods

Compatibility

Improve consistency of interval parsing with trailing periods (Tom Lane) §

Numbers with trailing periods were rejected on some platforms.

CompatibilityMark the interval output function as stable, not immutable, since it depends on IntervalStyle

Compatibility

Mark the interval output function as stable, not immutable, since it depends on IntervalStyle (Tom Lane) §

This will, for example, cause creation of indexes relying on the text output of interval values to fail.

CompatibilityDetect integer overflow in interval justification functions

Compatibility

Detect integer overflow in interval justification functions (Joe Koshakow) §

The affected functions are justify_interval(), justify_hours(), and justify_days().

CompatibilityChange the I/O format of type "char" for non-ASCII characters

Compatibility

Change the I/O format of type "char" for non-ASCII characters (Tom Lane) §

Bytes with the high bit set are now output as a backslash and three octal digits, to avoid encoding issues.

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.

CompatibilityRemove the default ADMIN OPTION privilege a login role has on its own role membership

Compatibility

Remove the default ADMIN OPTION privilege a login role has on its own role membership (Robert Haas) §

Previously, a login role could add/remove members of its own role, even without ADMIN OPTION privilege.

CompatibilityAllow logical replication to run as the owner of the subscription

Compatibility

Allow logical replication to run as the owner of the subscription (Mark Dilger) §

Because row-level security policies are not checked, only superusers, roles with bypassrls, and table owners can replicate into tables with row-level security policies.

CompatibilityPrevent UPDATE and DELETE logical replication operations on tables where the subscription owner does not have SELECT permission on the table

Compatibility

Prevent UPDATE and DELETE logical replication operations on tables where the subscription owner does not have SELECT permission on the table (Jeff Davis) §

UPDATE and DELETE commands typically involve reading the table as well, so require the subscription owner to have table SELECT permission.

CompatibilityWhen EXPLAIN references the session's temporary object schema, refer to it as pg_temp

Compatibility

When EXPLAIN references the session's temporary object schema, refer to it as pg_temp (Amul Sul) §

Previously the actual schema name was reported, leading to inconsistencies across sessions.

CompatibilityFix pg_statio_all_tables to sum values for the rare case of TOAST tables with multiple indexes

Compatibility

Fix pg_statio_all_tables to sum values for the rare case of TOAST tables with multiple indexes (Andrei Zubkov) §

Previously such cases would show one row for each index.

CompatibilityDisallow setting custom options that match the name of an installed extension, but are not one of the extension's declared variables

Compatibility

Disallow setting custom options that match the name of an installed extension, but are not one of the extension's declared variables (Florin Irion, Tom Lane) § § §

This change causes any such pre-existing variables to be deleted during extension load, and then prevents new ones from being created later in the session. The intent is to prevent confusion about whether a variable is associated with an extension or not.

CompatibilityRemove obsolete server variable stats_temp_directory

Compatibility

Remove obsolete server variable stats_temp_directory (Andres Freund, Kyotaro Horiguchi) §

CompatibilityImprove the algorithm used to compute random()

Compatibility

Improve the algorithm used to compute random() (Fabien Coelho) § §

This will cause random()'s results to differ from what was emitted by prior versions, even for the same seed value.

Compatibilitylibpq's PQsendQuery() function is no longer supported in pipeline mode

Compatibility

libpq's PQsendQuery() function is no longer supported in pipeline mode (Álvaro Herrera) §

Applications that are using that combination will need to be modified to use PQsendQueryParams() instead.

CompatibilityOn non-Windows platforms, consult the HOME environment variable to find the user's home directory

Compatibility

On non-Windows platforms, consult the HOME environment variable to find the user's home directory (Anders Kaseorg) §

If HOME is empty or unset, fall back to the previous method of checking the <pwd.h> database. This change affects libpq (for example, while looking up ~/.pgpass) as well as various client application programs.

CompatibilityRemove pg_dump's --no-synchronized-snapshots option

Compatibility

Remove pg_dump's --no-synchronized-snapshots option (Tom Lane) §

All still-supported server versions support synchronized snapshots, so there's no longer a need for this option.

CompatibilityAfter an error is detected in psql's --single-transaction mode, change the final COMMIT command to ROLLBACK only if ON_ERROR_STOP is set

Compatibility

After an error is detected in psql's --single-transaction mode, change the final COMMIT command to ROLLBACK only if ON_ERROR_STOP is set (Michael Paquier) §

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.

CompatibilityAvoid unnecessary casting of constants in queries sent by postgres_fdw

Compatibility

Avoid unnecessary casting of constants in queries sent by postgres_fdw (Dian Fay) §

When column types are intentionally different between local and remote databases, such casts could cause errors.

CompatibilityRemove xml2's xml_is_well_formed() function

Compatibility

Remove xml2's xml_is_well_formed() function (Tom Lane) §

This function has been implemented in the core backend since Postgres 9.1.

CompatibilityAllow custom scan providers to indicate if they support projections

Compatibility

Allow custom scan providers to indicate if they support projections (Sven Klemm) §

The default is now that custom scan providers are assumed to not support projections; those that do will need to be updated for this release.

FeaturesRecord and check the collation version of each database

Server

Record and check the collation version of each database (Peter Eisentraut) §

This feature is designed to detect collation version changes to avoid index corruption. Function pg_database_collation_actual_version() reports the underlying operating system collation version, and ALTER DATABASE ... REFRESH sets the recorded database collation version to match the operating system collation version.

FeaturesAllow ICU collations to be set as the default for clusters and databases

Server

Allow ICU collations to be set as the default for clusters and databases (Peter Eisentraut) §

Previously, only libc-based collations could be selected at the cluster and database levels. ICU collations could only be used via explicit COLLATE clauses.

FeaturesAdd system view pg_ident_file_mappings to report pg_ident.conf information

Server

Add system view pg_ident_file_mappings to report pg_ident.conf information (Julien Rouhaud) §

FeaturesImprove planning time for queries referencing partitioned tables

Server / Partitioning

Improve planning time for queries referencing partitioned tables (David Rowley) §

This change helps when only a few of many partitions are relevant.

FeaturesAllow ordered scans of partitions to avoid sorting in more cases

Server / Partitioning

Allow ordered scans of partitions to avoid sorting in more cases (David Rowley) §

Previously, a partitioned table with a DEFAULT partition or a LIST partition containing multiple values could not be used for ordered partition scans. Now they can be used if such partitions are pruned during planning.

FeaturesImprove foreign key behavior of updates on partitioned tables that move rows between partitions

Server / Partitioning

Improve foreign key behavior of updates on partitioned tables that move rows between partitions (Amit Langote) §

Previously, such updates ran a delete action on the source partition and an insert action on the target partition. PostgreSQL will now run an update action on the partition root, providing cleaner semantics.

FeaturesAllow CLUSTER on partitioned tables

Server / Partitioning

Allow CLUSTER on partitioned tables (Justin Pryzby) § §

Bug fixesFix ALTER TRIGGER RENAME on partitioned tables to properly rename triggers on all partitions

Server / Partitioning

Fix ALTER TRIGGER RENAME on partitioned tables to properly rename triggers on all partitions (Arne Roland, Álvaro Herrera) §

Also prohibit cloned triggers from being renamed.

FeaturesAllow btree indexes on system and TOAST tables to efficiently store duplicates

Server / Indexes

Allow btree indexes on system and TOAST tables to efficiently store duplicates (Peter Geoghegan) §

Previously de-duplication was disabled for these types of indexes.

PerformanceImprove lookup performance of GiST indexes that were built using sorting

Server / Indexes

Improve lookup performance of GiST indexes that were built using sorting (Aliaksandr Kalenik, Sergei Shoulbakov, Andrey Borodin) §

FeaturesAllow unique constraints and indexes to treat NULL values as not distinct

Server / Indexes

Allow unique constraints and indexes to treat NULL values as not distinct (Peter Eisentraut) §

Previously NULL entries were always treated as distinct values, but this can now be changed by creating constraints and indexes using UNIQUE NULLS NOT DISTINCT.

FeaturesAllow the ^@ starts-with operator and the starts_with() function to use btree indexes if using the C collation

Server / Indexes

Allow the ^@ starts-with operator and the starts_with() function to use btree indexes if using the C collation (Tom Lane) §

Previously these could only use SP-GiST indexes.

FeaturesAllow extended statistics to record statistics for a parent with all its children

Server / Optimizer

Allow extended statistics to record statistics for a parent with all its children (Tomas Vondra, Justin Pryzby) §

Regular statistics already tracked parent and parent-plus-all-children statistics separately.

FeaturesAdd server variable recursive_worktable_factor to allow the user to specify the expected size of the working table of a recursive query

Server / Optimizer

Add server variable recursive_worktable_factor to allow the user to specify the expected size of the working table of a recursive query (Simon Riggs) §

PerformanceAllow hash lookup for NOT IN clauses with many constants

Server / General Performance

Allow hash lookup for NOT IN clauses with many constants (David Rowley, James Coleman) §

Previously the code always sequentially scanned the list of values.

PerformanceAllow SELECT DISTINCT to be parallelized

Server / General Performance

Allow SELECT DISTINCT to be parallelized (David Rowley) §

PerformanceSpeed up encoding validation of UTF-8 text by processing 16 bytes at a time

Server / General Performance

Speed up encoding validation of UTF-8 text by processing 16 bytes at a time (John Naylor, Heikki Linnakangas) §

This will improve text-heavy operations like COPY FROM.

PerformanceImprove performance for sorts that exceed work_mem

Server / General Performance

Improve performance for sorts that exceed work_mem (Heikki Linnakangas) § §

When the sort data no longer fits in work_mem, switch to a batch sorting algorithm that uses more output streams than before.

PerformanceImprove performance and reduce memory consumption of in-memory sorts

Server / General Performance

Improve performance and reduce memory consumption of in-memory sorts (Ronan Dunklau, David Rowley, Thomas Munro, John Naylor) § § §

PerformanceAllow WAL full page writes to use LZ4 and Zstandard compression

Server / General Performance

Allow WAL full page writes to use LZ4 and Zstandard compression (Andrey Borodin, Justin Pryzby) § §

This is controlled by the wal_compression server setting.

PerformanceAdd support for writing WAL using direct I/O on macOS

Server / General Performance

Add support for writing WAL using direct I/O on macOS (Thomas Munro) §

This only works if max_wal_senders = 0 and wal_level = minimal.

PerformanceAllow vacuum to be more aggressive in setting the oldest frozen and multi transaction id

Server / General Performance

Allow vacuum to be more aggressive in setting the oldest frozen and multi transaction id (Peter Geoghegan) §

PerformanceAllow a query referencing multiple foreign tables to perform parallel foreign table scans in more cases

Server / General Performance

Allow a query referencing multiple foreign tables to perform parallel foreign table scans in more cases (Andrey Lepikhov, Etsuro Fujita) §

PerformanceImprove the performance of window functions that use row_number(), rank(), dense_rank() and count()

Server / General Performance

Improve the performance of window functions that use row_number(), rank(), dense_rank() and count() (David Rowley) §

PerformanceImprove the performance of spinlocks on high-core-count ARM64 systems

Server / General Performance

Improve the performance of spinlocks on high-core-count ARM64 systems (Geoffrey Blake) §

FeaturesEnable default logging of checkpoints and slow autovacuum operations

Server / Monitoring

Enable default logging of checkpoints and slow autovacuum operations (Bharath Rupireddy) §

This changes the default of log_checkpoints to on and that of log_autovacuum_min_duration to 10 minutes. This will cause even an idle server to generate some log output, which might cause problems on resource-constrained servers without log file rotation. These defaults should be changed in such cases.

FeaturesGenerate progress messages in the server log during slow server starts

Server / Monitoring

Generate progress messages in the server log during slow server starts (Nitin Jadhav, Robert Haas) § §

The messages report the cause of the delay. The time interval for notification is controlled by the new server variable log_startup_progress_interval.

FeaturesStore cumulative statistics system data in shared memory

Server / Monitoring

Store cumulative statistics system data in shared memory (Kyotaro Horiguchi, Andres Freund, Melanie Plageman) § §

Previously this data was sent to a statistics collector process via UDP packets, and could only be read by sessions after transferring it via the file system. There is no longer a separate statistics collector process.

FeaturesAdd additional information to VACUUM VERBOSE and autovacuum logging messages

Server / Monitoring

Add additional information to VACUUM VERBOSE and autovacuum logging messages (Peter Geoghegan) § § §

FeaturesAdd EXPLAIN (BUFFERS) output for temporary file block I/O

Server / Monitoring

Add EXPLAIN (BUFFERS) output for temporary file block I/O (Masahiko Sawada) §

FeaturesAllow log output in JSON format

Server / Monitoring

Allow log output in JSON format (Sehrope Sarkuni, Michael Paquier) §

The new setting is log_destination = jsonlog.

FeaturesAllow pg_stat_reset_single_table_counters() to reset the counters of relations shared across all databases

Server / Monitoring

Allow pg_stat_reset_single_table_counters() to reset the counters of relations shared across all databases (Sadhuprasad Patro) §

FeaturesAdd wait events for local shell commands

Server / Monitoring

Add wait events for local shell commands (Fujii Masao) §

The new wait events are used when calling archive_command, archive_cleanup_command, restore_command and recovery_end_command.

FeaturesAllow table accesses done by a view to optionally be controlled by privileges of the view's caller

Server / Privileges

Allow table accesses done by a view to optionally be controlled by privileges of the view's caller (Christoph Heiss) §

Previously, view accesses were always treated as being done by the view's owner. That's still the default.

FeaturesAllow members of the pg_write_server_files predefined role to perform server-side base backups

Server / Privileges

Allow members of the pg_write_server_files predefined role to perform server-side base backups (Dagfinn Ilmari Mannsåker) §

Previously only superusers could perform such backups.

FeaturesAllow GRANT to grant permissions to change individual server variables via SET and ALTER SYSTEM

Server / Privileges

Allow GRANT to grant permissions to change individual server variables via SET and ALTER SYSTEM (Mark Dilger) § §

The new function has_parameter_privilege() reports on this privilege.

FeaturesAdd predefined role pg_checkpoint that allows members to run CHECKPOINT

Server / Privileges

Add predefined role pg_checkpoint that allows members to run CHECKPOINT (Jeff Davis) § §

Previously checkpoints could only be run by superusers.

FeaturesAllow members of the pg_read_all_stats predefined role to access the views pg_backend_memory_contexts and pg_shmem_allocations

Server / Privileges

Allow members of the pg_read_all_stats predefined role to access the views pg_backend_memory_contexts and pg_shmem_allocations (Bharath Rupireddy) §

Previously these views could only be accessed by superusers.

FeaturesAllow GRANT to grant permissions on pg_log_backend_memory_contexts()

Server / Privileges

Allow GRANT to grant permissions on pg_log_backend_memory_contexts() (Jeff Davis) §

Previously this function could only be run by superusers.

FeaturesAdd server variable shared_memory_size to report the size of allocated shared memory

Server / Server Configuration

Add server variable shared_memory_size to report the size of allocated shared memory (Nathan Bossart) § §

FeaturesAdd server variable shared_memory_size_in_huge_pages to report the number of huge memory pages required

Server / Server Configuration

Add server variable shared_memory_size_in_huge_pages to report the number of huge memory pages required (Nathan Bossart) § §

This is only supported on Linux.

FeaturesHonor server variable shared_preload_libraries in single-user mode

Server / Server Configuration

Honor server variable shared_preload_libraries in single-user mode (Jeff Davis) §

This change supports use of shared_preload_libraries to load custom access methods and WAL resource managers, which would be essential for database access even in single-user mode.

FeaturesOn Solaris, make the default setting of dynamic_shared_memory_type be sysv

Server / Server Configuration

On Solaris, make the default setting of dynamic_shared_memory_type be sysv (Thomas Munro) §

The previous default choice, posix, can result in spurious failures on this platform.

FeaturesAllow postgres -C to properly report runtime-computed values

Server / Server Configuration

Allow postgres -C to properly report runtime-computed values (Nathan Bossart) §

Previously runtime-computed values data_checksums, wal_segment_size, and data_directory_mode would report values that would not be accurate on the running server. However, this does not work on a running server.

FeaturesAdd support for LZ4 and Zstandard compression of server-side base backups

Streaming Replication and Recovery

Add support for LZ4 and Zstandard compression of server-side base backups (Jeevan Ladhe, 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.

FeaturesRun the checkpointer and bgwriter processes during crash recovery

Streaming Replication and Recovery

Run the checkpointer and bgwriter processes during crash recovery (Thomas Munro) §

This helps to speed up long crash recoveries.

FeaturesAllow WAL processing to pre-fetch needed file contents

Streaming Replication and Recovery

Allow WAL processing to pre-fetch needed file contents (Thomas Munro) §

This is controlled by the server variable recovery_prefetch.

FeaturesAllow archiving via loadable modules

Streaming Replication and Recovery

Allow archiving via loadable modules (Nathan Bossart) §

Previously, archiving was only done by calling shell commands. The new server variable archive_library can be set to specify a library to be called for archiving.

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.

FeaturesNo longer require IDENTIFY_SYSTEM to be run before START_REPLICATION

Streaming Replication and Recovery

No longer require IDENTIFY_SYSTEM to be run before START_REPLICATION (Jeff Davis) §

FeaturesAllow publication of all tables in a schema

Streaming Replication and Recovery / Logical Replication

Allow publication of all tables in a schema (Vignesh C, Hou Zhijie, Amit Kapila) § § §

For example, this syntax is now supported: CREATE PUBLICATION pub1 FOR TABLES IN SCHEMA s1,s2. ALTER PUBLICATION supports a similar syntax. Tables added later to the listed schemas will also be replicated.

FeaturesAllow publication content to be filtered using a WHERE clause

Streaming Replication and Recovery / Logical Replication

Allow publication content to be filtered using a WHERE clause (Hou Zhijie, Euler Taveira, Peter Smith, Ajin Cherian, Tomas Vondra, Amit Kapila) § § §

Rows not satisfying the WHERE clause are not published.

FeaturesAllow publication content to be restricted to specific columns

Streaming Replication and Recovery / Logical Replication

Allow publication content to be restricted to specific columns (Tomas Vondra, Álvaro Herrera, Rahila Syed) §

FeaturesAllow skipping of transactions on a subscriber using ALTER SUBSCRIPTION ... SKIP

Streaming Replication and Recovery / Logical Replication

Allow skipping of transactions on a subscriber using ALTER SUBSCRIPTION ... SKIP (Masahiko Sawada) §

FeaturesAdd support for prepared (two-phase) transactions to logical replication

Streaming Replication and Recovery / Logical Replication

Add support for prepared (two-phase) transactions to logical replication (Peter Smith, Ajin Cherian, Amit Kapila, Nikhil Sontakke, Stas Kelvich) § § §

The new CREATE_REPLICATION_SLOT option is called TWO_PHASE. pg_recvlogical now supports a new --two-phase option during slot creation.

FeaturesPrevent logical replication of empty transactions

Streaming Replication and Recovery / Logical Replication

Prevent logical replication of empty transactions (Ajin Cherian, Hou Zhijie, Euler Taveira) §

Previously, publishers would send empty transactions to subscribers if subscribed tables were not modified.

FeaturesAdd SQL functions to monitor the directory contents of logical replication slots

Streaming Replication and Recovery / Logical Replication

Add SQL functions to monitor the directory contents of logical replication slots (Bharath Rupireddy) §

The new functions are pg_ls_logicalsnapdir(), pg_ls_logicalmapdir(), and pg_ls_replslotdir(). They can be run by members of the predefined pg_monitor role.

FeaturesAllow subscribers to stop the application of logical replication changes on error

Streaming Replication and Recovery / Logical Replication

Allow subscribers to stop the application of logical replication changes on error (Osumi Takamichi, Mark Dilger) §

This is enabled with the subscriber option disable_on_error and avoids possible infinite error loops during stream application.

FeaturesAdjust subscriber server variables to match the publisher so datetime and float8 values are interpreted consistently

Streaming Replication and Recovery / Logical Replication

Adjust subscriber server variables to match the publisher so datetime and float8 values are interpreted consistently (Japin Li) §

Some publishers might be relying on inconsistent behavior.

FeaturesAdd system view pg_stat_subscription_stats to report on subscriber activity

Streaming Replication and Recovery / Logical Replication

Add system view pg_stat_subscription_stats to report on subscriber activity (Masahiko Sawada) § §

The new function pg_stat_reset_subscription_stats() allows resetting these statistics counters.

FeaturesSuppress duplicate entries in the pg_publication_tables system view

Streaming Replication and Recovery / Logical Replication

Suppress duplicate entries in the pg_publication_tables system view (Hou Zhijie) §

In some cases a partition could appear more than once.

FeaturesAdd SQL MERGE command to adjust one table to match another

Utility Commands

Add SQL MERGE command to adjust one table to match another (Simon Riggs, Pavan Deolasee, Álvaro Herrera, Amit Langote) §

This is similar to INSERT ... ON CONFLICT but more batch-oriented.

FeaturesAdd support for HEADER option in COPY text format

Utility Commands

Add support for HEADER option in COPY text format (Rémi Lapeyre) § §

The new option causes the column names to be output, and optionally verified on input.

FeaturesAdd new WAL-logged method for database creation

Utility Commands

Add new WAL-logged method for database creation (Dilip Kumar) §

This is the new default method for copying the template database, as it avoids the need for checkpoints during database creation. However, it might be slow if the template database is large, so the old method is still available.

FeaturesAllow CREATE DATABASE to set the database OID

Utility Commands

Allow CREATE DATABASE to set the database OID (Shruthi Gowda, Antonin Houska) §

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.

FeaturesPrevent DROP DATABASE, DROP TABLESPACE, and ALTER DATABASE SET TABLESPACE from occasionally failing during concurrent use on Windows

Utility Commands

Prevent DROP DATABASE, DROP TABLESPACE, and ALTER DATABASE SET TABLESPACE from occasionally failing during concurrent use on Windows (Thomas Munro) §

FeaturesAllow foreign key ON DELETE SET actions to affect only specified columns

Utility Commands

Allow foreign key ON DELETE SET actions to affect only specified columns (Paul Martinez) §

Previously, all of the columns in the foreign key were always affected.

FeaturesAllow ALTER TABLE to modify a table's ACCESS METHOD

Utility Commands

Allow ALTER TABLE to modify a table's ACCESS METHOD (Justin Pryzby, Jeff Davis) §

FeaturesProperly call object access hooks when ALTER TABLE causes table rewrites

Utility Commands

Properly call object access hooks when ALTER TABLE causes table rewrites (Michael Paquier) §

FeaturesAllow creation of unlogged sequences

Utility Commands

Allow creation of unlogged sequences (Peter Eisentraut) §

FeaturesTrack dependencies on individual columns in the results of functions returning composite types

Utility Commands

Track dependencies on individual columns in the results of functions returning composite types (Tom Lane) §

Previously, if a view or rule contained a reference to a specific column within the result of a composite-returning function, that was not noted as a dependency; the view or rule was only considered to depend on the composite type as a whole. This meant that dropping the individual column would be allowed, causing problems in later use of the view or rule. The column-level dependency is now also noted, so that dropping such a column will be rejected unless the view is changed or dropped.

FeaturesAllow the scale of a numeric value to be negative, or greater than its precision

Data Types

Allow the scale of a numeric value to be negative, or greater than its precision (Dean Rasheed, Tom Lane) §

This allows rounding of values to the left of the decimal point, e.g., '1234'::numeric(4, -2) returns 1200.

FeaturesImprove overflow detection when casting values to interval

Data Types

Improve overflow detection when casting values to interval (Joe Koshakow) §

FeaturesChange the I/O format of type "char" for non-ASCII characters

Data Types

Change the I/O format of type "char" for non-ASCII characters (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.

FeaturesUpdate the display width information of modern Unicode characters, like emojis

Data Types

Update the display width information of modern Unicode characters, like emojis (Jacob Champion) § §

Also update from Unicode 5.0 to 14.0.0. There is now an automated way to keep Postgres updated with Unicode releases.

FeaturesAdd multirange input to range_agg()

Functions

Add multirange input to range_agg() (Paul Jungwirth) §

FeaturesAdd MIN() and MAX() aggregates for the xid8 data type

Functions

Add MIN() and MAX() aggregates for the xid8 data type (Ken Kato) §

FeaturesAdd regular expression functions for compatibility with other relational systems

Functions

Add regular expression functions for compatibility with other relational systems (Gilles Darold, Tom Lane) §

The new functions are regexp_count(), regexp_instr(), regexp_like(), and regexp_substr(). Some new optional arguments were also added to regexp_replace().

FeaturesAdd the ability to compute the distance between polygons

Functions

Add the ability to compute the distance between polygons (Tom Lane) §

FeaturesAdd to_char() format codes of, tzh, and tzm

Functions

Add to_char() format codes of, tzh, and tzm (Nitin Jadhav) §

The upper-case equivalents of these were already supported.

FeaturesWhen applying AT TIME ZONE to a time with time zone value, use the transaction start time rather than wall clock time to determine whether DST applies

Functions

When applying AT TIME ZONE to a time with time zone value, use the transaction start time rather than wall clock time to determine whether DST applies (Aleksander Alekseev, Tom Lane) §

This allows the conversion to be considered stable rather than volatile, and it saves a kernel call per invocation.

FeaturesIgnore NULL array elements in ts_delete() and setweight() functions with array arguments

Functions

Ignore NULL array elements in ts_delete() and setweight() functions with array arguments (Jean-Christophe Arnu) §

These functions effectively ignore empty-string array elements (since those could never match a valid lexeme). It seems consistent to let them ignore NULL elements too, instead of failing.

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 support for petabyte units to pg_size_pretty() and pg_size_bytes()

Functions

Add support for petabyte units to pg_size_pretty() and pg_size_bytes() (David Christensen) §

FeaturesChange pg_event_trigger_ddl_commands() to output references to other sessions' temporary schemas using the actual schema name

Functions

Change pg_event_trigger_ddl_commands() to output references to other sessions' temporary schemas using the actual schema name (Tom Lane) §

Previously this function reported all temporary schemas as pg_temp, but it's misleading to use that for any but the current session's temporary schema.

Bug fixesFix enforcement of PL/pgSQL variable CONSTANT markings

PL/pgSQL

Fix enforcement of PL/pgSQL variable CONSTANT markings (Tom Lane) §

Previously, a variable could be used as a CALL output parameter or refcursor OPEN variable despite being marked CONSTANT.

FeaturesAllow IP address matching against a server certificate's Subject Alternative Name

libpq

Allow IP address matching against a server certificate's Subject Alternative Name (Jacob Champion) §

FeaturesAllow PQsslAttribute() to report the SSL library type without requiring a libpq connection

libpq

Allow PQsslAttribute() to report the SSL library type without requiring a libpq connection (Jacob Champion) §

FeaturesChange query cancellations sent by the client to use the same TCP settings as normal client connections

libpq

Change query cancellations sent by the client to use the same TCP settings as normal client connections (Jelte Fennema) §

This allows configured TCP timeouts to apply to query cancel connections.

FeaturesPrevent libpq event callback failures from forcing an error result

libpq

Prevent libpq event callback failures from forcing an error result (Tom Lane) § §

FeaturesAllow pgbench to retry after serialization and deadlock failures

Client Applications

Allow pgbench to retry after serialization and deadlock failures (Yugo Nagata, Marina Polyakova) §

PerformanceImprove performance of psql's \copy command, by sending data in larger chunks

Client Applications / psql

Improve performance of psql's \copy command, by sending data in larger chunks (Heikki Linnakangas) §

FeaturesAdd \dconfig command to report server variables

Client Applications / psql

Add \dconfig command to report server variables (Mark Dilger, Tom Lane) § § §

This is similar to the server-side SHOW command, but it can process patterns to show multiple variables conveniently.

FeaturesAdd \getenv command to assign the value of an environment variable to a psql variable

Client Applications / psql

Add \getenv command to assign the value of an environment variable to a psql variable (Tom Lane) §

FeaturesAdd + option to the \lo_list and \dl commands to show large-object privileges

Client Applications / psql

Add + option to the \lo_list and \dl commands to show large-object privileges (Pavel Luzanov) §

FeaturesAdd a pager option for the \watch command

Client Applications / psql

Add a pager option for the \watch command (Pavel Stehule, Thomas Munro) §

This is only supported on Unix and is controlled by the PSQL_WATCH_PAGER environment variable.

FeaturesMake psql include intra-query double-hyphen comments in queries sent to the server

Client Applications / psql

Make psql include intra-query double-hyphen comments in queries sent to the server (Tom Lane, Greg Nancarrow) § §

Previously such comments were removed from the query before being sent. Double-hyphen comments that are before any query text are not sent, and are not recorded as separate psql history entries.

FeaturesAdjust psql so that Readline's meta-# command will insert a double-hyphen comment marker

Client Applications / psql

Adjust psql so that Readline's meta-# command will insert a double-hyphen comment marker (Tom Lane) §

Previously a pound marker was inserted, unless the user had taken the trouble to configure a non-default comment marker.

FeaturesMake psql output all results when multiple queries are passed to the server at once

Client Applications / psql

Make psql output all results when multiple queries are passed to the server at once (Fabien Coelho) §

Previously, only the last query result was displayed. The old behavior can be restored by setting the SHOW_ALL_RESULTS psql variable to off.

FeaturesAfter an error is detected in --single-transaction mode, change the final COMMIT command to ROLLBACK only if ON_ERROR_STOP is set

Client Applications / psql

After an error is detected in --single-transaction mode, change the final COMMIT command to ROLLBACK only if ON_ERROR_STOP is set (Michael Paquier) §

Previously, detection of an error in a -c command or -f script file would lead to issuing ROLLBACK at the end, regardless of the value of ON_ERROR_STOP.

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 psql's tab completion

Client Applications / psql

Improve psql's tab completion (Shinya Kato, Dagfinn Ilmari Mannsåker, Peter Smith, Koyu Tanigawa, Ken Kato, David Fetter, Haiying Tang, Peter Eisentraut, Álvaro Herrera, Tom Lane, Masahiko Sawada) § § § § § § § § § § § § § § § § § § § §

FeaturesLimit support of psql's backslash commands to servers running PostgreSQL 9.2 or later

Client Applications / psql

Limit support of psql's backslash commands to servers running PostgreSQL 9.2 or later (Tom Lane) §

Remove code that was only used when running with an older server. Commands that do not require any version-specific adjustments compared to 9.2 will still work.

FeaturesMake pg_dump dump public schema ownership changes and security labels

Client Applications / pg_dump

Make pg_dump dump public schema ownership changes and security labels (Noah Misch) § §

PerformanceImprove performance of dumping databases with many objects

Client Applications / pg_dump

Improve performance of dumping databases with many objects (Tom Lane) § § §

This will also improve the performance of pg_upgrade.

PerformanceImprove parallel pg_dump's performance for tables with large TOAST tables

Client Applications / pg_dump

Improve parallel pg_dump's performance for tables with large TOAST tables (Tom Lane) §

FeaturesAdd dump/restore option --no-table-access-method to force restore to only use the default table access method

Client Applications / pg_dump

Add dump/restore option --no-table-access-method to force restore to only use the default table access method (Justin Pryzby) §

FeaturesLimit support of pg_dump and pg_dumpall to servers running PostgreSQL 9.2 or later

Client Applications / pg_dump

Limit support of pg_dump and pg_dumpall to servers running PostgreSQL 9.2 or later (Tom Lane) §

FeaturesAdd new pg_basebackup option --target to control the base backup location

Server Applications

Add new pg_basebackup option --target to control the base backup location (Robert Haas) §

The new options are server to write the backup locally and blackhole to discard the backup (for testing).

FeaturesAllow pg_basebackup to do server-side gzip, LZ4, and Zstandard compression and client-side LZ4 and Zstandard compression of base backup files

Server Applications

Allow pg_basebackup to do server-side gzip, LZ4, and Zstandard compression and client-side LZ4 and Zstandard compression of base backup files (Dipesh Pandit, Jeevan Ladhe) § § §

Client-side gzip compression was already supported.

Related records (3)

“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_basebackup to compress on the server side and decompress on the client side before storage

Server Applications

Allow pg_basebackup to compress on the server side and decompress on the client side before storage (Dipesh Pandit) §

This is accomplished by specifying compression on the server side and plain output format.

FeaturesAllow pg_basebackup's --compress option to control the compression location (server or client), compression method, and compression options

Server Applications

Allow pg_basebackup's --compress option to control the compression location (server or client), compression method, and compression options (Michael Paquier, Robert Haas) § § §

Related records (2)

“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 the LZ4 compression method to pg_receivewal

Server Applications

Add the LZ4 compression method to pg_receivewal (Georgios Kokolatos) § §

This is enabled via --compress=lz4 and requires binaries to be built using --with-lz4.

FeaturesAdd additional capabilities to pg_receivewal's --compress option

Server Applications

Add additional capabilities to pg_receivewal's --compress option (Georgios Kokolatos) §

FeaturesImprove pg_receivewal's ability to restart at the proper WAL location

Server Applications

Improve pg_receivewal's ability to restart at the proper WAL location (Ronan Dunklau) §

Previously, pg_receivewal would start based on the WAL file stored in the local archive directory, or at the sending server's current WAL flush location. With this change, if the sending server is running Postgres 15 or later, the local archive directory is empty, and a replication slot is specified, the replication slot's restart point will be used.

FeaturesAdd pg_rewind option --config-file to simplify use when server configuration files are stored outside the data directory

Server Applications

Add pg_rewind option --config-file to simplify use when server configuration files are stored outside the data directory (Gunnar Bluth) §

FeaturesStore pg_upgrade's log and temporary files in a subdirectory of the new cluster called pg_upgrade_output.d

Server Applications / pg_upgrade

Store pg_upgrade's log and temporary files in a subdirectory of the new cluster called pg_upgrade_output.d (Justin Pryzby) § § §

Previously such files were left in the current directory, requiring manual cleanup. Now they are automatically removed on successful completion of pg_upgrade.

FeaturesDisable default status reporting during pg_upgrade operation if the output is not a terminal

Server Applications / pg_upgrade

Disable default status reporting during pg_upgrade operation if the output is not a terminal (Andres Freund) §

The status reporting output can be enabled for non-tty usage by using --verbose.

FeaturesMake pg_upgrade report all databases with invalid connection settings

Server Applications / pg_upgrade

Make pg_upgrade report all databases with invalid connection settings (Jeevan Ladhe) §

Previously only the first database with an invalid connection setting was reported.

FeaturesMake pg_upgrade preserve tablespace and database OIDs, as well as relation relfilenode numbers

Server Applications / pg_upgrade

Make pg_upgrade preserve tablespace and database OIDs, as well as relation relfilenode numbers (Shruthi Gowda, Antonin Houska) § § §

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 a --no-sync option to pg_upgrade

Server Applications / pg_upgrade

Add a --no-sync option to pg_upgrade (Michael Paquier) §

This is recommended only for testing.

FeaturesLimit support of pg_upgrade to old servers running PostgreSQL 9.2 or later

Server Applications / pg_upgrade

Limit support of pg_upgrade to old servers running PostgreSQL 9.2 or later (Tom Lane) §

FeaturesAllow pg_waldump output to be filtered by relation file node, block number, fork number, and full page images

Server Applications / pg_waldump

Allow pg_waldump output to be filtered by relation file node, block number, fork number, and full page images (David Christensen, Thomas Munro) § §

FeaturesMake pg_waldump report statistics before an interrupted exit

Server Applications / pg_waldump

Make pg_waldump report statistics before an interrupted exit (Bharath Rupireddy) §

For example, issuing a control-C in a terminal running pg_waldump --stats --follow will report the current statistics before exiting. This does not work on Windows.

FeaturesImprove descriptions of some transaction WAL records reported by pg_waldump

Server Applications / pg_waldump

Improve descriptions of some transaction WAL records reported by pg_waldump (Masahiko Sawada, Michael Paquier) §

FeaturesAllow pg_waldump to dump information about multiple resource managers

Server Applications / pg_waldump

Allow pg_waldump to dump information about multiple resource managers (Heikki Linnakangas) §

This is enabled by specifying the --rmgr option multiple times.

FeaturesAdd documentation for pg_encoding_to_char() and pg_char_to_encoding()

Documentation

Add documentation for pg_encoding_to_char() and pg_char_to_encoding() (Ian Lawrence Barwick) §

FeaturesDocument the ^@ starts-with operator

Documentation

Document the ^@ starts-with operator (Tom Lane) §

FeaturesAdd support for continuous integration testing using cirrus-ci

Source Code

Add support for continuous integration testing using cirrus-ci (Andres Freund, Thomas Munro, Melanie Plageman) §

FeaturesAdd configure option --with-zstd to enable Zstandard builds

Source Code

Add configure option --with-zstd to enable Zstandard builds (Jeevan Ladhe, Robert Haas, Michael Paquier) §

FeaturesAdd an ABI identifier field to the magic block in loadable libraries, allowing non-community PostgreSQL distributions to identify libraries that are not compatible with other builds

Source Code

Add an ABI identifier field to the magic block in loadable libraries, allowing non-community PostgreSQL distributions to identify libraries that are not compatible with other builds (Peter Eisentraut) §

An ABI field mismatch will generate an error at load time.

FeaturesCreate a new pg_type.typcategory value for "char"

Source Code

Create a new pg_type.typcategory value for "char" (Tom Lane) §

Some other internal-use-only types have also been assigned to this category.

FeaturesAdd new protocol message TARGET to specify a new COPY method to be used for base backups

Source Code

Add new protocol message TARGET to specify a new COPY method to be used for base backups (Robert Haas) §

pg_basebackup now uses this method.

FeaturesAdd new protocol message COMPRESSION and COMPRESSION_DETAIL to specify the compression method and options

Source Code

Add new protocol message COMPRESSION and COMPRESSION_DETAIL to specify the compression method and options (Robert Haas) § §

Related records (2)

“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 server support for old BASE_BACKUP command syntax and base backup protocol

Source Code

Remove server support for old BASE_BACKUP command syntax and base backup protocol (Robert Haas) § §

FeaturesAdd support for extensions to set custom backup targets

Source Code

Add support for extensions to set custom backup targets (Robert Haas) §

FeaturesAllow extensions to define custom WAL resource managers

Source Code

Allow extensions to define custom WAL resource managers (Jeff Davis) §

FeaturesAdd function pg_settings_get_flags() to get the flags of server variables

Source Code

Add function pg_settings_get_flags() to get the flags of server variables (Justin Pryzby) §

FeaturesOn Windows, export all the server's global variables using PGDLLIMPORT markers

Source Code

On Windows, export all the server's global variables using PGDLLIMPORT markers (Robert Haas) §

Previously, only specific variables were accessible to extensions on Windows.

FeaturesRequire GNU make version 3.81 or later to build PostgreSQL

Source Code

Require GNU make version 3.81 or later to build PostgreSQL (Tom Lane) §

FeaturesRequire OpenSSL to build the pgcrypto extension

Source Code

Require OpenSSL to build the pgcrypto extension (Peter Eisentraut) §

FeaturesRequire Perl version 5.8.3 or later

Source Code

Require Perl version 5.8.3 or later (Dagfinn Ilmari Mannsåker) §

FeaturesRequire Python version 3.2 or later

Source Code

Require Python version 3.2 or later (Andres Freund) §

FeaturesAllow amcheck to check sequences

Additional Modules

Allow amcheck to check sequences (Mark Dilger) §

FeaturesImprove amcheck sanity checks for TOAST tables

Additional Modules

Improve amcheck sanity checks for TOAST tables (Mark Dilger) §

FeaturesAdd new module basebackup_to_shell as an example of a custom backup target

Additional Modules

Add new module basebackup_to_shell as an example of a custom backup target (Robert Haas) § §

FeaturesAdd new module basic_archive as an example of performing archiving via a library

Additional Modules

Add new module basic_archive as an example of performing archiving via a library (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.

FeaturesAllow btree_gist indexes on boolean columns

Additional Modules

Allow btree_gist indexes on boolean columns (Emre Hasegeli) § § §

These can be used for exclusion constraints.

Bug fixesFix pageinspect's page_header() to handle 32-kilobyte page sizes

Additional Modules

Fix pageinspect's page_header() to handle 32-kilobyte page sizes (Quan Zongliang) §

Previously, improper negative values could be returned in certain cases.

FeaturesAdd counters for temporary file block I/O to pg_stat_statements

Additional Modules

Add counters for temporary file block I/O to pg_stat_statements (Masahiko Sawada) §

FeaturesAdd JIT counters to pg_stat_statements

Additional Modules

Add JIT counters to pg_stat_statements (Magnus Hagander) §

FeaturesAdd new module pg_walinspect

Additional Modules

Add new module pg_walinspect (Bharath Rupireddy) §

This gives SQL-level output similar to pg_waldump.

FeaturesIndicate the permissive/enforcing state in sepgsql log messages

Additional Modules

Indicate the permissive/enforcing state in sepgsql log messages (Dave Page) §

FeaturesAllow postgres_fdw to push down CASE expressions

Additional Modules / postgres_fdw

Allow postgres_fdw to push down CASE expressions (Alexander Pyhalov) §

FeaturesAdd server variable postgres_fdw.application_name to control the application name of postgres_fdw connections

Additional Modules / postgres_fdw

Add server variable postgres_fdw.application_name to control the application name of postgres_fdw connections (Hayato Kuroda) § § §

Previously the remote session's application_name could only be set on the remote server or via a postgres_fdw connection specification. postgres_fdw.application_name supports some escape sequences for customization, making it easier to tell such connections apart on the remote server.

FeaturesAllow parallel commit on postgres_fdw servers

Additional Modules / postgres_fdw

Allow parallel commit on postgres_fdw servers (Etsuro Fujita) §

This is enabled with the CREATE SERVER option parallel_commit.

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.