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

18.0

2025-09-25

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

18.0 SupportedSupport ends 2030-11-14

PostgreSQL 18.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 18.6 for general information on migrating to new major releases.

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

CompatibilityChange initdb default to enable data checksums

Compatibility

Change initdb default to enable data checksums (Greg Sabino Mullane) §

Checksums can be disabled with the new initdb option --no-data-checksums. pg_upgrade requires matching cluster checksum settings, so this new option can be useful to upgrade non-checksum old clusters.

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 time zone abbreviation handling

Compatibility

Change time zone abbreviation handling (Tom Lane) §

The system will now favor the current session's time zone abbreviations before checking the server variable timezone_abbreviations. Previously timezone_abbreviations was checked first.

CompatibilityDeprecate MD5 password authentication

Compatibility

Deprecate MD5 password authentication (Nathan Bossart) §

Support for MD5 passwords will be removed in a future major version release. CREATE ROLE and ALTER ROLE now emit deprecation warnings when setting MD5 passwords. These warnings can be disabled by setting the md5_password_warnings parameter to off.

CompatibilityChange VACUUM and ANALYZE to process the inheritance children of a parent

Compatibility

Change VACUUM and ANALYZE to process the inheritance children of a parent (Michael Harris) §

The previous behavior can be performed by using the new ONLY option.

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.

CompatibilityPrevent COPY FROM from treating \. as an end-of-file marker when reading CSV files

Compatibility

Prevent COPY FROM from treating \. as an end-of-file marker when reading CSV files (Daniel Vérité, Tom Lane) § §

psql will still treat \. as an end-of-file marker when reading CSV files from STDIN. Older psql clients connecting to PostgreSQL 18 servers might experience \copy problems. This release also enforces that \. must appear alone on a line.

CompatibilityDisallow unlogged partitioned tables

Compatibility

Disallow unlogged partitioned tables (Michael Paquier) §

Previously ALTER TABLE SET [UN]LOGGED did nothing, and the creation of an unlogged partitioned table did not cause its children to be unlogged.

CompatibilityExecute AFTER triggers as the role that was active when trigger events were queued

Compatibility

Execute AFTER triggers as the role that was active when trigger events were queued (Laurenz Albe) §

Previously such triggers were run as the role that was active at trigger execution time (e.g., at COMMIT). This is significant for cases where the role is changed between queue time and transaction commit.

CompatibilityRemove non-functional support for rule privileges in GRANT/REVOKE

Compatibility

Remove non-functional support for rule privileges in GRANT/REVOKE (Fujii Masao) §

These have been non-functional since PostgreSQL 8.2.

CompatibilityRemove column pg_backend_memory_contexts.parent

Compatibility

Remove column pg_backend_memory_contexts.parent (Melih Mutlu) §

This is no longer needed since pg_backend_memory_contexts.path was added.

CompatibilityChange pg_backend_memory_contexts.level and pg_log_backend_memory_contexts() to be one-based

Compatibility

Change pg_backend_memory_contexts.level and pg_log_backend_memory_contexts() to be one-based (Melih Mutlu, Atsushi Torikoshi, David Rowley, Fujii Masao) § § §

These were previously zero-based.

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 full text search to use the default collation provider of the cluster to read configuration files and dictionaries, rather than always using libc

Compatibility

Change full text search to use the default collation provider of the cluster to read configuration files and dictionaries, rather than always using libc (Peter Eisentraut) §

Clusters that default to non-libc collation providers (e.g., ICU, builtin) that behave differently than libc for characters processed by LC_CTYPE could observe changes in behavior of some full-text search functions, as well as the pg_trgm extension. When upgrading such clusters using pg_upgrade, it is recommended to reindex all indexes related to full-text search and pg_trgm after the upgrade.

FeaturesAutomatically remove some unnecessary table self-joins

Server / Optimizer

Automatically remove some unnecessary table self-joins (Andrey Lepikhov, Alexander Kuzmenkov, Alexander Korotkov, Alena Rybakina) §

This optimization can be disabled using server variable enable_self_join_elimination.

FeaturesConvert some IN (VALUES ...) to x = ANY ... for better optimizer statistics

Server / Optimizer

Convert some IN (VALUES ...) to x = ANY ... for better optimizer statistics (Alena Rybakina, Andrei Lepikhov) §

PerformanceAllow transforming OR-clauses to arrays for faster index processing

Server / Optimizer

Allow transforming OR-clauses to arrays for faster index processing (Alexander Korotkov, Andrey Lepikhov) §

PerformanceSpeed up the processing of INTERSECT, EXCEPT, window aggregates, and view column aliases

Server / Optimizer

Speed up the processing of INTERSECT, EXCEPT, window aggregates, and view column aliases (Tom Lane, David Rowley) § § § §

FeaturesAllow the keys of SELECT DISTINCT to be internally reordered to avoid sorting

Server / Optimizer

Allow the keys of SELECT DISTINCT to be internally reordered to avoid sorting (Richard Guo) §

This optimization can be disabled using enable_distinct_reordering.

FeaturesIgnore GROUP BY columns that are functionally dependent on other columns

Server / Optimizer

Ignore GROUP BY columns that are functionally dependent on other columns (Zhang Mingli, Jian He, David Rowley) §

If a GROUP BY clause includes all columns of a unique index, as well as other columns of the same table, those other columns are redundant and can be dropped from the grouping. This was already true for non-deferred primary keys.

FeaturesAllow some HAVING clauses on GROUPING SETS to be pushed to WHERE clauses

Server / Optimizer

Allow some HAVING clauses on GROUPING SETS to be pushed to WHERE clauses (Richard Guo) § § § §

This allows earlier row filtering. This release also fixes some GROUPING SETS queries that used to return incorrect results.

FeaturesImprove row estimates for generate_series() using numeric and timestamp values

Server / Optimizer

Improve row estimates for generate_series() using numeric and timestamp values (David Rowley, Song Jinzhou) § §

FeaturesAllow the optimizer to use Right Semi Join plans

Server / Optimizer

Allow the optimizer to use Right Semi Join plans (Richard Guo) §

Semi-joins are used when needing to find if there is at least one match.

FeaturesAllow merge joins to use incremental sorts

Server / Optimizer

Allow merge joins to use incremental sorts (Richard Guo) §

FeaturesImprove the efficiency of planning queries accessing many partitions

Server / Optimizer

Improve the efficiency of planning queries accessing many partitions (Ashutosh Bapat, Yuya Watari, David Rowley) § §

FeaturesAllow partitionwise joins in more cases, and reduce its memory usage

Server / Optimizer

Allow partitionwise joins in more cases, and reduce its memory usage (Richard Guo, Tom Lane, Ashutosh Bapat) § §

FeaturesImprove cost estimates of partition queries

Server / Optimizer

Improve cost estimates of partition queries (Nikita Malakhov, Andrei Lepikhov) §

FeaturesImprove SQL-language function plan caching

Server / Optimizer

Improve SQL-language function plan caching (Alexander Pyhalov, Tom Lane) § §

FeaturesImprove handling of disabled optimizer features

Server / Optimizer

Improve handling of disabled optimizer features (Robert Haas) §

FeaturesAllow skip scans of btree indexes

Server / Indexes

Allow skip scans of btree indexes (Peter Geoghegan) § §

This allows multi-column btree indexes to be used in more cases such as when there are no restrictions on the first or early indexed columns (or there are non-equality ones), and there are useful restrictions on later indexed columns.

FeaturesAllow non-btree unique indexes to be used as partition keys and in materialized views

Server / Indexes

Allow non-btree unique indexes to be used as partition keys and in materialized views (Mark Dilger) § §

The index type must still support equality.

FeaturesAllow GIN indexes to be created in parallel

Server / Indexes

Allow GIN indexes to be created in parallel (Tomas Vondra, Matthias van de Meent) §

FeaturesAllow values to be sorted to speed range-type GiST and btree index builds

Server / Indexes

Allow values to be sorted to speed range-type GiST and btree index builds (Bernd Helmle) §

PerformanceAdd an asynchronous I/O subsystem

Server / General Performance

Add an asynchronous I/O subsystem (Andres Freund, Thomas Munro, Nazir Bilal Yavuz, Melanie Plageman) § § § § § § § § § § §

This feature allows backends to queue multiple read requests, which allows for more efficient sequential scans, bitmap heap scans, vacuums, etc. This is enabled by server variable io_method, with server variables io_combine_limit and io_max_combine_limit added to control it. This also enables effective_io_concurrency and maintenance_io_concurrency values greater than zero for systems without fadvise() support. The new system view pg_aios shows the file handles being used for asynchronous I/O.

PerformanceImprove the locking performance of queries that access many relations

Server / General Performance

Improve the locking performance of queries that access many relations (Tomas Vondra) §

PerformanceImprove the performance and reduce memory usage of hash joins and GROUP BY

Server / General Performance

Improve the performance and reduce memory usage of hash joins and GROUP BY (David Rowley, Jeff Davis) § § § § §

This also improves hash set operations used by EXCEPT, and hash lookups of subplan values.

PerformanceAllow normal vacuums to freeze some pages, even though they are all-visible

Server / General Performance

Allow normal vacuums to freeze some pages, even though they are all-visible (Melanie Plageman) § §

This reduces the overhead of later full-relation freezing. The aggressiveness of this can be controlled by server variable and per-table setting vacuum_max_eager_freeze_failure_rate. Previously vacuum never processed all-visible pages until freezing was required.

PerformanceAdd server variable vacuum_truncate to control file truncation during VACUUM

Server / General Performance

Add server variable vacuum_truncate to control file truncation during VACUUM (Nathan Bossart, Gurjeet Singh) §

A storage-level parameter with the same name and behavior already existed.

PerformanceIncrease server variables effective_io_concurrency's and maintenance_io_concurrency's default values to 16

Server / General Performance

Increase server variables effective_io_concurrency's and maintenance_io_concurrency's default values to 16 (Melanie Plageman) § §

This more accurately reflects modern hardware.

FeaturesIncrease the logging granularity of server variable log_connections

Server / Monitoring

Increase the logging granularity of server variable log_connections (Melanie Plageman) §

This server variable was previously only boolean, which is still supported.

FeaturesAdd log_connections option to report the duration of connection stages

Server / Monitoring

Add log_connections option to report the duration of connection stages (Melanie Plageman) §

FeaturesAdd log_line_prefix escape %L to output the client IP address

Server / Monitoring

Add log_line_prefix escape %L to output the client IP address (Greg Sabino Mullane) §

FeaturesAdd server variable log_lock_failures to log lock acquisition failures

Server / Monitoring

Add server variable log_lock_failures to log lock acquisition failures (Yuki Seino, Fujii Masao) § §

Specifically it reports SELECT ... NOWAIT lock failures.

FeaturesModify pg_stat_all_tables and its variants to report the time spent in VACUUM, ANALYZE, and their automatic variants

Server / Monitoring

Modify pg_stat_all_tables and its variants to report the time spent in VACUUM, ANALYZE, and their automatic variants (Sami Imseih) §

The new columns are total_vacuum_time, total_autovacuum_time, total_analyze_time, and total_autoanalyze_time.

FeaturesAdd delay time reporting to VACUUM and ANALYZE

Server / Monitoring

Add delay time reporting to VACUUM and ANALYZE (Bertrand Drouvot, Nathan Bossart) § §

This information appears in the server log, the system views pg_stat_progress_vacuum and pg_stat_progress_analyze, and the output of VACUUM and ANALYZE when in VERBOSE mode; tracking must be enabled with the server variable track_cost_delay_timing.

FeaturesAdd WAL, CPU, and average read statistics output to ANALYZE VERBOSE

Server / Monitoring

Add WAL, CPU, and average read statistics output to ANALYZE VERBOSE (Anthonin Bonnefoy) § §

FeaturesAdd full WAL buffer count to VACUUM/ANALYZE (VERBOSE) and autovacuum log output

Server / Monitoring

Add full WAL buffer count to VACUUM/ANALYZE (VERBOSE) and autovacuum log output (Bertrand Drouvot) §

FeaturesAdd per-backend I/O statistics reporting

Server / Monitoring

Add per-backend I/O statistics reporting (Bertrand Drouvot) § §

The statistics are accessed via pg_stat_get_backend_io(). Per-backend I/O statistics can be cleared via pg_stat_reset_backend_stats().

FeaturesAdd pg_stat_io columns to report I/O activity in bytes

Server / Monitoring

Add pg_stat_io columns to report I/O activity in bytes (Nazir Bilal Yavuz) §

The new columns are read_bytes, write_bytes, and extend_bytes. The op_bytes column, which always equaled BLCKSZ, has been removed.

FeaturesAdd WAL I/O activity rows to pg_stat_io

Server / Monitoring

Add WAL I/O activity rows to pg_stat_io (Nazir Bilal Yavuz, Bertrand Drouvot, Michael Paquier) § § §

This includes WAL receiver activity and a wait event for such writes.

FeaturesChange server variable track_wal_io_timing to control tracking WAL timing in pg_stat_io instead of pg_stat_wal

Server / Monitoring

Change server variable track_wal_io_timing to control tracking WAL timing in pg_stat_io instead of pg_stat_wal (Bertrand Drouvot) §

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 read/sync columns from pg_stat_wal

Server / Monitoring

Remove read/sync columns from pg_stat_wal (Bertrand Drouvot) § §

This removes columns wal_write, wal_sync, wal_write_time, and wal_sync_time.

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 function pg_stat_get_backend_wal() to return per-backend WAL statistics

Server / Monitoring

Add function pg_stat_get_backend_wal() to return per-backend WAL statistics (Bertrand Drouvot) §

Per-backend WAL statistics can be cleared via pg_stat_reset_backend_stats().

FeaturesAdd function pg_ls_summariesdir() to specifically list the contents of PGDATA/pg_wal/summaries

Server / Monitoring

Add function pg_ls_summariesdir() to specifically list the contents of PGDATA/pg_wal/summaries (Yushi Ogiwara) §

FeaturesAdd column pg_stat_checkpointer.num_done to report the number of completed checkpoints

Server / Monitoring

Add column pg_stat_checkpointer.num_done to report the number of completed checkpoints (Anton A. Melnikov) §

Columns num_timed and num_requested count both completed and skipped checkpoints.

FeaturesAdd column pg_stat_checkpointer.slru_written to report SLRU buffers written

Server / Monitoring

Add column pg_stat_checkpointer.slru_written to report SLRU buffers written (Nitin Jadhav) §

Also, modify the checkpoint server log message to report separate shared buffer and SLRU buffer values.

FeaturesAdd columns to pg_stat_database to report parallel worker activity

Server / Monitoring

Add columns to pg_stat_database to report parallel worker activity (Benoit Lobréau) §

The new columns are parallel_workers_to_launch and parallel_workers_launched.

FeaturesHave query id computation of constant lists consider only the first and last constants

Server / Monitoring

Have query id computation of constant lists consider only the first and last constants (Dmitry Dolgov, Sami Imseih) § § §

Jumbling is used by pg_stat_statements.

FeaturesAdjust query id computations to group together queries using the same relation name

Server / Monitoring

Adjust query id computations to group together queries using the same relation name (Michael Paquier, Sami Imseih) §

This is true even if the tables in different schemas have different column names.

FeaturesAdd column pg_backend_memory_contexts.type to report the type of memory context

Server / Monitoring

Add column pg_backend_memory_contexts.type to report the type of memory context (David Rowley) §

FeaturesAdd column pg_backend_memory_contexts.path to show memory context parents

Server / Monitoring

Add column pg_backend_memory_contexts.path to show memory context parents (Melih Mutlu) §

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 function pg_get_acl() to retrieve database access control details

Server / Privileges

Add function pg_get_acl() to retrieve database access control details (Joel Jacobson) § §

FeaturesAdd function has_largeobject_privilege() to check large object privileges

Server / Privileges

Add function has_largeobject_privilege() to check large object privileges (Yugo Nagata) §

FeaturesAllow ALTER DEFAULT PRIVILEGES to define large object default privileges

Server / Privileges

Allow ALTER DEFAULT PRIVILEGES to define large object default privileges (Takatsuka Haruka, Yugo Nagata, Laurenz Albe) §

FeaturesAdd predefined role pg_signal_autovacuum_worker

Server / Privileges

Add predefined role pg_signal_autovacuum_worker (Kirill Reshke) §

This allows sending signals to autovacuum workers.

FeaturesAdd support for the OAuth authentication method

Server / Server Configuration

Add support for the OAuth authentication method (Jacob Champion, Daniel Gustafsson, Thomas Munro) §

This adds an oauth authentication method to pg_hba.conf, libpq OAuth options, a server variable oauth_validator_libraries to load token validation libraries, and a configure flag --with-libcurl to add the required compile-time libraries.

FeaturesAdd server variable ssl_tls13_ciphers to allow specification of multiple colon-separated TLSv1.3 cipher suites

Server / Server Configuration

Add server variable ssl_tls13_ciphers to allow specification of multiple colon-separated TLSv1.3 cipher suites (Erica Zhang, Daniel Gustafsson) §

FeaturesChange server variable ssl_groups's default to include elliptic curve X25519

Server / Server Configuration

Change server variable ssl_groups's default to include elliptic curve X25519 (Daniel Gustafsson, Jacob Champion) §

FeaturesRename server variable ssl_ecdh_curve to ssl_groups and allow multiple colon-separated ECDH curves to be specified

Server / Server Configuration

Rename server variable ssl_ecdh_curve to ssl_groups and allow multiple colon-separated ECDH curves to be specified (Erica Zhang, Daniel Gustafsson) §

The previous name still works.

FeaturesMake cancel request keys 256 bits

Server / Server Configuration

Make cancel request keys 256 bits (Heikki Linnakangas, Jelte Fennema-Nio) § §

This is only possible when the server and client support wire protocol version 3.2, introduced in this release.

FeaturesAdd server variable autovacuum_worker_slots to specify the maximum number of background workers

Server / Server Configuration

Add server variable autovacuum_worker_slots to specify the maximum number of background workers (Nathan Bossart) §

With this variable set, autovacuum_max_workers can be adjusted at runtime up to this maximum without a server restart.

Bug fixesAllow specification of the fixed number of dead tuples that will trigger an autovacuum

Server / Server Configuration

Allow specification of the fixed number of dead tuples that will trigger an autovacuum (Nathan Bossart, Frédéric Yhuel) §

The server variable is autovacuum_vacuum_max_threshold. Percentages are still used for triggering.

FeaturesChange server variable max_files_per_process to limit only files opened by a backend

Server / Server Configuration

Change server variable max_files_per_process to limit only files opened by a backend (Andres Freund) §

Previously files opened by the postmaster were also counted toward this limit.

FeaturesAdd server variable num_os_semaphores to report the required number of semaphores

Server / Server Configuration

Add server variable num_os_semaphores to report the required number of semaphores (Nathan Bossart) §

This is useful for operating system configuration.

FeaturesAdd server variable extension_control_path to specify the location of extension control files

Server / Server Configuration

Add server variable extension_control_path to specify the location of extension control files (Peter Eisentraut, Matheus Alcantara) § §

FeaturesAllow inactive replication slots to be automatically invalidated using server variable idle_replication_slot_timeout

Server / Streaming Replication and Recovery

Allow inactive replication slots to be automatically invalidated using server variable idle_replication_slot_timeout (Nisha Moond, Bharath Rupireddy) §

FeaturesAdd server variable max_active_replication_origins to control the maximum active replication origins

Server / Streaming Replication and Recovery

Add server variable max_active_replication_origins to control the maximum active replication origins (Euler Taveira) §

This was previously controlled by max_replication_slots, but this new setting allows a higher origin count in cases where fewer slots are required.

FeaturesAllow the values of generated columns to be logically replicated

Server / Logical Replication

Allow the values of generated columns to be logically replicated (Shubham Khanna, Vignesh C, Zhijie Hou, Shlok Kyal, Peter Smith) § § § §

If the publication specifies a column list, all specified columns, generated and non-generated, are published. Without a specified column list, publication option publish_generated_columns controls whether generated columns are published. Previously generated columns were not replicated and the subscriber had to compute the values if possible; this is particularly useful for non-PostgreSQL subscribers which lack such a capability.

FeaturesChange the default CREATE SUBSCRIPTION streaming option from off to parallel

Server / Logical Replication

Change the default CREATE SUBSCRIPTION streaming option from off to parallel (Vignesh C) §

FeaturesAllow ALTER SUBSCRIPTION to change the replication slot's two-phase commit behavior

Server / Logical Replication

Allow ALTER SUBSCRIPTION to change the replication slot's two-phase commit behavior (Hayato Kuroda, Ajin Cherian, Amit Kapila, Zhijie Hou) § §

FeaturesLog conflicts while applying logical replication changes

Server / Logical Replication

Log conflicts while applying logical replication changes (Zhijie Hou, Nisha Moond) § § § § §

Also report in new columns of pg_stat_subscription_stats.

FeaturesAllow generated columns to be virtual, and make them the default

Utility Commands

Allow generated columns to be virtual, and make them the default (Peter Eisentraut, Jian He, Richard Guo, Dean Rasheed) § § §

Virtual generated columns generate their values when the columns are read, not written. The write behavior can still be specified via the STORED option.

FeaturesAdd OLD/NEW support to RETURNING in DML queries

Utility Commands

Add OLD/NEW support to RETURNING in DML queries (Dean Rasheed) §

Previously RETURNING only returned new values for INSERT and UPDATE, and old values for DELETE; MERGE would return the appropriate value for the internal query executed. This new syntax allows the RETURNING list of INSERT/UPDATE/DELETE/MERGE to explicitly return old and new values by using the special aliases old and new. These aliases can be renamed to avoid identifier conflicts.

FeaturesAllow foreign tables to be created like existing local tables

Utility Commands

Allow foreign tables to be created like existing local tables (Zhang Mingli) §

The syntax is CREATE FOREIGN TABLE ... LIKE.

FeaturesAllow LIKE with nondeterministic collations

Utility Commands

Allow LIKE with nondeterministic collations (Peter Eisentraut) §

FeaturesAllow text position search functions with nondeterministic collations

Utility Commands

Allow text position search functions with nondeterministic collations (Peter Eisentraut) §

These used to generate an error.

FeaturesAdd builtin collation provider PG_UNICODE_FAST

Utility Commands

Add builtin collation provider PG_UNICODE_FAST (Jeff Davis) §

This locale supports case mapping, but sorts in code point order, not natural language order.

FeaturesAllow VACUUM and ANALYZE to process partitioned tables without processing their children

Utility Commands

Allow VACUUM and ANALYZE to process partitioned tables without processing their children (Michael Harris) §

This is enabled with the new ONLY option. This is useful since autovacuum does not process partitioned tables, just its children.

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 functions to modify per-relation and per-column optimizer statistics

Utility Commands

Add functions to modify per-relation and per-column optimizer statistics (Corey Huinker) § § §

The functions are pg_restore_relation_stats(), pg_restore_attribute_stats(), pg_clear_relation_stats(), and pg_clear_attribute_stats().

FeaturesAdd server variable file_copy_method to control the file copying method

Utility Commands

Add server variable file_copy_method to control the file copying method (Nazir Bilal Yavuz) §

This controls whether CREATE DATABASE ... STRATEGY=FILE_COPY and ALTER DATABASE ... SET TABLESPACE uses file copy or clone.

FeaturesAllow the specification of non-overlapping PRIMARY KEY, UNIQUE, and foreign key constraints

Utility Commands / Constraints

Allow the specification of non-overlapping PRIMARY KEY, UNIQUE, and foreign key constraints (Paul A. Jungwirth) § §

This is specified by WITHOUT OVERLAPS for PRIMARY KEY and UNIQUE, and by PERIOD for foreign keys, all applied to the last specified column.

FeaturesAllow CHECK and foreign key constraints to be specified as NOT ENFORCED

Utility Commands / Constraints

Allow CHECK and foreign key constraints to be specified as NOT ENFORCED (Amul Sul) § §

This also adds column pg_constraint.conenforced.

FeaturesRequire primary/foreign key relationships to use either deterministic collations or the the same nondeterministic collations

Utility Commands / Constraints

Require primary/foreign key relationships to use either deterministic collations or the the same nondeterministic collations (Peter Eisentraut) §

The restore of a pg_dump, also used by pg_upgrade, will fail if these requirements are not met; schema changes must be made for these upgrade methods to succeed.

FeaturesStore column NOT NULL specifications in pg_constraint

Utility Commands / Constraints

Store column NOT NULL specifications in pg_constraint (Álvaro Herrera, Bernd Helmle) § §

This allows names to be specified for NOT NULL constraint. This also adds NOT NULL constraints to foreign tables and NOT NULL inheritance control to local tables.

FeaturesAllow ALTER TABLE to set the NOT VALID attribute of NOT NULL constraints

Utility Commands / Constraints

Allow ALTER TABLE to set the NOT VALID attribute of NOT NULL constraints (Rushabh Lathia, Jian He) §

FeaturesAllow modification of the inheritability of NOT NULL constraints

Utility Commands / Constraints

Allow modification of the inheritability of NOT NULL constraints (Suraj Kharage, Álvaro Herrera) § §

The syntax is ALTER TABLE ... ALTER CONSTRAINT ... [NO] INHERIT.

FeaturesAllow NOT VALID foreign key constraints on partitioned tables

Utility Commands / Constraints

Allow NOT VALID foreign key constraints on partitioned tables (Amul Sul) §

FeaturesAllow dropping of constraints ONLY on partitioned tables

Utility Commands / Constraints

Allow dropping of constraints ONLY on partitioned tables (Álvaro Herrera) §

This was previously erroneously prohibited.

FeaturesAdd REJECT_LIMIT to control the number of invalid rows COPY FROM can ignore

Utility Commands / COPY

Add REJECT_LIMIT to control the number of invalid rows COPY FROM can ignore (Atsushi Torikoshi) §

This is available when ON_ERROR = 'ignore'.

FeaturesAllow COPY TO to copy rows from populated materialized views

Utility Commands / COPY

Allow COPY TO to copy rows from populated materialized views (Jian He) §

FeaturesAdd COPY LOG_VERBOSITY level silent to suppress log output of ignored rows

Utility Commands / COPY

Add COPY LOG_VERBOSITY level silent to suppress log output of ignored rows (Atsushi Torikoshi) §

This new level suppresses output for discarded input rows when on_error = 'ignore'.

FeaturesDisallow COPY FREEZE on foreign tables

Utility Commands / COPY

Disallow COPY FREEZE on foreign tables (Nathan Bossart) §

Previously, the COPY worked but the FREEZE was ignored, so disallow this command.

FeaturesAutomatically include BUFFERS output in EXPLAIN ANALYZE

Utility Commands / EXPLAIN

Automatically include BUFFERS output in EXPLAIN ANALYZE (Guillaume Lelarge, David Rowley) §

FeaturesAdd full WAL buffer count to EXPLAIN (WAL) output

Utility Commands / EXPLAIN

Add full WAL buffer count to EXPLAIN (WAL) output (Bertrand Drouvot) §

FeaturesIn EXPLAIN ANALYZE, report the number of index lookups used per index scan node

Utility Commands / EXPLAIN

In EXPLAIN ANALYZE, report the number of index lookups used per index scan node (Peter Geoghegan) §

FeaturesModify EXPLAIN to output fractional row counts

Utility Commands / EXPLAIN

Modify EXPLAIN to output fractional row counts (Ibrar Ahmed, Ilia Evdokimov, Robert Haas) § §

FeaturesAdd memory and disk usage details to Material, Window Aggregate, and common table expression nodes to EXPLAIN output

Utility Commands / EXPLAIN

Add memory and disk usage details to Material, Window Aggregate, and common table expression nodes to EXPLAIN output (David Rowley, Tatsuo Ishii) § § § §

FeaturesAdd details about window function arguments to EXPLAIN output

Utility Commands / EXPLAIN

Add details about window function arguments to EXPLAIN output (Tom Lane) §

FeaturesAdd Parallel Bitmap Heap Scan worker cache statistics to EXPLAIN ANALYZE

Utility Commands / EXPLAIN

Add Parallel Bitmap Heap Scan worker cache statistics to EXPLAIN ANALYZE (David Geier, Heikki Linnakangas, Donghang Lin, Alena Rybakina, David Rowley) §

FeaturesIndicate disabled nodes in EXPLAIN ANALYZE output

Utility Commands / EXPLAIN

Indicate disabled nodes in EXPLAIN ANALYZE output (Robert Haas, David Rowley, Laurenz Albe) § § §

FeaturesImprove Unicode full case mapping and conversion

Data Types

Improve Unicode full case mapping and conversion (Jeff Davis) § §

This adds the ability to do conditional and title case mapping, and case map single characters to multiple characters.

FeaturesAllow jsonb null values to be cast to scalar types as NULL

Data Types

Allow jsonb null values to be cast to scalar types as NULL (Tom Lane) §

Previously such casts generated an error.

FeaturesAdd optional parameter to json{b}_strip_nulls to allow removal of null array elements

Data Types

Add optional parameter to json{b}_strip_nulls to allow removal of null array elements (Florents Tselai) §

FeaturesAdd function array_sort() which sorts an array's first dimension

Data Types

Add function array_sort() which sorts an array's first dimension (Junwang Zhao, Jian He) §

FeaturesAdd function array_reverse() which reverses an array's first dimension

Data Types

Add function array_reverse() which reverses an array's first dimension (Aleksander Alekseev) §

FeaturesAdd function reverse() to reverse bytea bytes

Data Types

Add function reverse() to reverse bytea bytes (Aleksander Alekseev) §

FeaturesAllow casting between integer types and bytea

Data Types

Allow casting between integer types and bytea (Aleksander Alekseev) §

The integer values are stored as bytea two's complement values.

FeaturesUpdate Unicode data to Unicode 16.0.0

Data Types

Update Unicode data to Unicode 16.0.0 (Peter Eisentraut) §

FeaturesAdd full text search stemming for Estonian

Data Types

Add full text search stemming for Estonian (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.

FeaturesImprove the XML error codes to more closely match the SQL standard

Data Types

Improve the XML error codes to more closely match the SQL standard (Tom Lane) §

These errors are reported via SQLSTATE.

FeaturesAdd function casefold() to allow for more sophisticated case-insensitive matching

Functions

Add function casefold() to allow for more sophisticated case-insensitive matching (Jeff Davis) §

This allows more accurate comparisons, i.e., a character can have multiple upper or lower case equivalents, or upper or lower case conversion changes the number of characters.

FeaturesAllow MIN()/MAX() aggregates on arrays and composite types

Functions

Allow MIN()/MAX() aggregates on arrays and composite types (Aleksander Alekseev, Marat Buharov) § §

FeaturesAdd a WEEK option to EXTRACT()

Functions

Add a WEEK option to EXTRACT() (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.

FeaturesImprove the output EXTRACT(QUARTER ...) for negative values

Functions

Improve the output EXTRACT(QUARTER ...) for negative values (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.

FeaturesAdd roman numeral support to to_number()

Functions

Add roman numeral support to to_number() (Hunaid Sohail) §

This is accessed via the RN pattern.

FeaturesAdd UUID version 7 generation function uuidv7()

Functions

Add UUID version 7 generation function uuidv7() (Andrey Borodin) §

This UUID value is temporally sortable. Function alias uuidv4() has been added to explicitly generate version 4 UUIDs.

FeaturesAdd functions crc32() and crc32c() to compute CRC values

Functions

Add functions crc32() and crc32c() to compute CRC values (Aleksander Alekseev) §

FeaturesAdd math functions gamma() and lgamma()

Functions

Add math functions gamma() and lgamma() (Dean Rasheed) §

FeaturesAllow => syntax for named cursor arguments in PL/pgSQL

Functions

Allow => syntax for named cursor arguments in PL/pgSQL (Pavel Stehule) §

We previously only accepted :=.

FeaturesAllow regexp_match[es]()/regexp_like()/regexp_replace()/regexp_count()/regexp_instr()/regexp_substr()/regexp_split_to_table()/regexp_split_to_array() to use named arguments

Functions

FeaturesAdd function PQfullProtocolVersion() to report the full, including minor, protocol version number

Libpq

Add function PQfullProtocolVersion() to report the full, including minor, protocol version number (Jacob Champion, Jelte Fennema-Nio) §

FeaturesAdd libpq connection parameters and environment variables to specify the minimum and maximum acceptable protocol version for connections

Libpq

Add libpq connection parameters and environment variables to specify the minimum and maximum acceptable protocol version for connections (Jelte Fennema-Nio) § §

FeaturesReport search_path changes to the client

Libpq

Report search_path changes to the client (Alexander Kukushkin, Jelte Fennema-Nio, Tomas Vondra) § §

FeaturesAdd PQtrace() output for all message types, including authentication

Libpq

Add PQtrace() output for all message types, including authentication (Jelte Fennema-Nio) § § § § §

FeaturesAdd libpq connection parameter sslkeylogfile which dumps out SSL key material

Libpq

Add libpq connection parameter sslkeylogfile which dumps out SSL key material (Abhishek Chanda, Daniel Gustafsson) §

This is useful for debugging.

FeaturesModify some libpq function signatures to use int64_t

Libpq

Modify some libpq function signatures to use int64_t (Thomas Munro) §

These previously used pg_int64, which is now deprecated.

FeaturesAllow psql to parse, bind, and close named prepared statements

psql

Allow psql to parse, bind, and close named prepared statements (Anthonin Bonnefoy, Michael Paquier) § §

This is accomplished with new commands \parse, \bind_named, and \close_prepared.

FeaturesAdd psql backslash commands to allowing issuance of pipeline queries

psql

Add psql backslash commands to allowing issuance of pipeline queries (Anthonin Bonnefoy) § § §

The new commands are \startpipeline, \syncpipeline, \sendpipeline, \endpipeline, \flushrequest, \flush, and \getresults.

FeaturesAllow adding pipeline status to the psql prompt and add related state variables

psql

Allow adding pipeline status to the psql prompt and add related state variables (Anthonin Bonnefoy) §

The new prompt character is %P and the new psql variables are PIPELINE_SYNC_COUNT, PIPELINE_COMMAND_COUNT, and PIPELINE_RESULT_COUNT.

FeaturesAllow adding the connection service name to the psql prompt or access it via psql variable

psql

Allow adding the connection service name to the psql prompt or access it via psql variable (Michael Banck) §

FeaturesAdd psql option to use expanded mode on all list commands

psql

Add psql option to use expanded mode on all list commands (Dean Rasheed) §

Adding backslash suffix x enables this.

FeaturesChange psql's \conninfo to use tabular format and include more information

psql

Change psql's \conninfo to use tabular format and include more information (Álvaro Herrera, Maiquel Grassi, Hunaid Sohail) §

FeaturesAdd function's leakproof indicator to psql's \df+, \do+, \dAo+, and \dC+ outputs

psql

Add function's leakproof indicator to psql's \df+, \do+, \dAo+, and \dC+ outputs (Yugo Nagata) §

FeaturesAdd access method details for partitioned relations in \dP+

psql

Add access method details for partitioned relations in \dP+ (Justin Pryzby) §

FeaturesAdd default_version to the psql \dx extension output

psql

Add default_version to the psql \dx extension output (Magnus Hagander) §

FeaturesAdd psql variable WATCH_INTERVAL to set the default \watch wait time

psql

Add psql variable WATCH_INTERVAL to set the default \watch wait time (Daniel Gustafsson) §

FeaturesChange initdb to default to enabling checksums

Server Applications

Change initdb to default to enabling checksums (Greg Sabino Mullane) § §

The new initdb option --no-data-checksums disables checksums.

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 initdb option --no-sync-data-files to avoid syncing heap/index files

Server Applications

Add initdb option --no-sync-data-files to avoid syncing heap/index files (Nathan Bossart) §

initdb option --no-sync is still available to avoid syncing any files.

FeaturesAdd vacuumdb option --missing-stats-only to compute only missing optimizer statistics

Server Applications

Add vacuumdb option --missing-stats-only to compute only missing optimizer statistics (Corey Huinker, Nathan Bossart) § §

This option can only be run by superusers and can only be used with options --analyze-only and --analyze-in-stages.

FeaturesAdd pg_combinebackup option -k/--link to enable hard linking

Server Applications

Add pg_combinebackup option -k/--link to enable hard linking (Israel Barth Rubio, Robert Haas) §

Only some files can be hard linked. This should not be used if the backups will be used independently.

FeaturesAllow pg_verifybackup to verify tar-format backups

Server Applications

Allow pg_verifybackup to verify tar-format backups (Amul Sul) §

FeaturesIf pg_rewind's --source-server specifies a database name, use it in --write-recovery-conf output

Server Applications

If pg_rewind's --source-server specifies a database name, use it in --write-recovery-conf output (Masahiko Sawada) §

FeaturesAdd pg_resetwal option --char-signedness to change the default char signedness

Server Applications

Add pg_resetwal option --char-signedness to change the default char signedness (Masahiko Sawada) §

FeaturesAdd pg_dump option --statistics

Server Applications / pg_dump/pg_dumpall/pg_restore

Add pg_dump option --statistics (Jeff Davis) § §

FeaturesAdd pg_dump and pg_dumpall option --sequence-data to dump sequence data that would normally be excluded

Server Applications / pg_dump/pg_dumpall/pg_restore

Add pg_dump and pg_dumpall option --sequence-data to dump sequence data that would normally be excluded (Nathan Bossart) § §

FeaturesAdd pg_dump, pg_dumpall, and pg_restore options --statistics-only, --no-statistics, --no-data, and --no-schema

Server Applications / pg_dump/pg_dumpall/pg_restore

Add pg_dump, pg_dumpall, and pg_restore options --statistics-only, --no-statistics, --no-data, and --no-schema (Corey Huinker, Jeff Davis) §

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 option --no-policies to disable row level security policy processing in pg_dump, pg_dumpall, pg_restore

Server Applications / pg_dump/pg_dumpall/pg_restore

Add option --no-policies to disable row level security policy processing in pg_dump, pg_dumpall, pg_restore (Nikolay Samokhvalov) §

This is useful for migrating to systems with different policies.

FeaturesAllow pg_upgrade to preserve optimizer statistics

Server Applications / pg_upgrade

Allow pg_upgrade to preserve optimizer statistics (Corey Huinker, Jeff Davis, Nathan Bossart) § § § §

Extended statistics are not preserved. Also add pg_upgrade option --no-statistics to disable statistics preservation.

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_upgrade to process database checks in parallel

Server Applications / pg_upgrade

Allow pg_upgrade to process database checks in parallel (Nathan Bossart) § § § § § § § § § § §

This is controlled by the existing --jobs option.

FeaturesAdd pg_upgrade option --swap to swap directories rather than copy, clone, or link files

Server Applications / pg_upgrade

Add pg_upgrade option --swap to swap directories rather than copy, clone, or link files (Nathan Bossart) §

This mode is potentially the fastest.

FeaturesAdd pg_upgrade option --set-char-signedness to set the default char signedness of new cluster

Server Applications / pg_upgrade

Add pg_upgrade option --set-char-signedness to set the default char signedness of new cluster (Masahiko Sawada) § §

This is to handle cases where a pre-PostgreSQL 18 cluster's default CPU signedness does not match the new cluster.

FeaturesAdd pg_createsubscriber option --all to create logical replicas for all databases

Server Applications / Logical Replication Applications

Add pg_createsubscriber option --all to create logical replicas for all databases (Shubham Khanna) §

FeaturesAdd pg_createsubscriber option --clean to remove publications

Server Applications / Logical Replication Applications

Add pg_createsubscriber option --clean to remove publications (Shubham Khanna) § §

FeaturesAdd pg_createsubscriber option --enable-two-phase to enable prepared transactions

Server Applications / Logical Replication Applications

Add pg_createsubscriber option --enable-two-phase to enable prepared transactions (Shubham Khanna) §

FeaturesAdd pg_recvlogical option --enable-failover to specify failover slots

Server Applications / Logical Replication Applications

Add pg_recvlogical option --enable-failover to specify failover slots (Hayato Kuroda) §

Also add option --enable-two-phase as a synonym for --two-phase, and deprecate the latter.

FeaturesAllow pg_recvlogical --drop-slot to work without --dbname

Server Applications / Logical Replication Applications

Allow pg_recvlogical --drop-slot to work without --dbname (Hayato Kuroda) §

FeaturesSeparate the loading and running of injection points

Source Code

Separate the loading and running of injection points (Michael Paquier, Heikki Linnakangas) § §

Injection points can now be created, but not run, via INJECTION_POINT_LOAD(), and such injection points can be run via INJECTION_POINT_CACHED().

FeaturesSupport runtime arguments in injection points

Source Code

Support runtime arguments in injection points (Michael Paquier) §

FeaturesAllow inline injection point test code with IS_INJECTION_POINT_ATTACHED()

Source Code

Allow inline injection point test code with IS_INJECTION_POINT_ATTACHED() (Heikki Linnakangas) §

PerformanceImprove the performance of processing long JSON strings using SIMD (Single Instruction Multiple Data)

Source Code

Improve the performance of processing long JSON strings using SIMD (Single Instruction Multiple Data) (David Rowley) §

PerformanceSpeed up CRC32C calculations using x86 AVX-512 instructions

Source Code

Speed up CRC32C calculations using x86 AVX-512 instructions (Raghuveer Devulapalli, Paul Amonson) §

FeaturesAdd ARM Neon and SVE CPU intrinsics for popcount (integer bit counting)

Source Code

Add ARM Neon and SVE CPU intrinsics for popcount (integer bit counting) (Chiranmoy Bhattacharya, Devanga Susmitha, Rama Malladi) § §

FeaturesImprove the speed of numeric multiplication and division

Source Code

Improve the speed of numeric multiplication and division (Joel Jacobson, Dean Rasheed) § § § §

FeaturesAdd configure option --with-libnuma to enable NUMA awareness

Source Code

Add configure option --with-libnuma to enable NUMA awareness (Jakub Wartak, Bertrand Drouvot) § § §

The function pg_numa_available() reports on NUMA awareness, and system views pg_shmem_allocations_numa and pg_buffercache_numa which report on shared memory distribution across NUMA nodes.

FeaturesAdd TOAST table to pg_index to allow for very large expression indexes

Source Code

Add TOAST table to pg_index to allow for very large expression indexes (Nathan Bossart) §

FeaturesRemove column pg_attribute.attcacheoff

Source Code

Remove column pg_attribute.attcacheoff (David Rowley) §

FeaturesAdd column pg_class.relallfrozen

Source Code

Add column pg_class.relallfrozen (Melanie Plageman) §

FeaturesAdd amgettreeheight, amconsistentequality, and amconsistentordering to the index access method API

Source Code

Add amgettreeheight, amconsistentequality, and amconsistentordering to the index access method API (Mark Dilger) § §

FeaturesAdd GiST support function stratnum()

Source Code

Add GiST support function stratnum() (Paul A. Jungwirth) §

FeaturesRecord the default CPU signedness of char in pg_controldata

Source Code

Record the default CPU signedness of char in pg_controldata (Masahiko Sawada) §

FeaturesAdd support for Python "Limited API" in PL/Python

Source Code

Add support for Python "Limited API" in PL/Python (Peter Eisentraut) § §

This helps prevent problems caused by Python 3.x version mismatches.

FeaturesChange the minimum supported Python version to 3.6.8

Source Code

Change the minimum supported Python version to 3.6.8 (Jacob Champion) §

FeaturesRemove support for OpenSSL versions older than 1.1.1

Source Code

Remove support for OpenSSL versions older than 1.1.1 (Daniel Gustafsson) § §

FeaturesIf LLVM is enabled, require version 14 or later

Source Code

If LLVM is enabled, require version 14 or later (Thomas Munro) §

FeaturesAdd macro PG_MODULE_MAGIC_EXT to allow extensions to report their name and version

Source Code

Add macro PG_MODULE_MAGIC_EXT to allow extensions to report their name and version (Andrei Lepikhov) §

This information can be access via the new function pg_get_loaded_modules().

FeaturesDocument that SPI_connect()/SPI_connect_ext() always returns success (SPI_OK_CONNECT)

Source Code

Document that SPI_connect()/SPI_connect_ext() always returns success (SPI_OK_CONNECT) (Stepan Neretin) §

Errors are always reported via ereport().

FeaturesAdd documentation section about API and ABI compatibility

Source Code

Add documentation section about API and ABI compatibility (David Wheeler, Peter Eisentraut) §

FeaturesRemove the experimental designation of Meson builds on Windows

Source Code

Remove the experimental designation of Meson builds on Windows (Aleksander Alekseev) §

FeaturesRemove configure options --disable-spinlocks and --disable-atomics

Source Code

Remove configure options --disable-spinlocks and --disable-atomics (Thomas Munro) § §

Thirty-two-bit atomic operations are now required.

FeaturesRemove support for the HPPA/PA-RISC architecture

Source Code

Remove support for the HPPA/PA-RISC architecture (Tom Lane) §

FeaturesAdd extension pg_logicalinspect to inspect logical snapshots

Additional Modules

Add extension pg_logicalinspect to inspect logical snapshots (Bertrand Drouvot) §

FeaturesAdd extension pg_overexplain which adds debug details to EXPLAIN output

Additional Modules

Add extension pg_overexplain which adds debug details to EXPLAIN output (Robert Haas) §

FeaturesAdd output columns to postgres_fdw_get_connections()

Additional Modules

Add output columns to postgres_fdw_get_connections() (Hayato Kuroda, Sagar Dilip Shedge) § § § §

New output column used_in_xact indicates if the foreign data wrapper is being used by a current transaction, closed indicates if it is closed, user_name indicates the user name, and remote_backend_pid indicates the remote backend process identifier.

FeaturesAllow SCRAM authentication from the client to be passed to postgres_fdw servers

Additional Modules

Allow SCRAM authentication from the client to be passed to postgres_fdw servers (Matheus Alcantara, Peter Eisentraut) §

This avoids storing postgres_fdw authentication information in the database, and is enabled with the postgres_fdw use_scram_passthrough connection option. libpq uses new connection parameters scram_client_key and scram_server_key.

FeaturesAllow SCRAM authentication from the client to be passed to dblink servers

Additional Modules

Allow SCRAM authentication from the client to be passed to dblink servers (Matheus Alcantara) §

FeaturesAdd on_error and log_verbosity options to file_fdw

Additional Modules

Add on_error and log_verbosity options to file_fdw (Atsushi Torikoshi) §

These control how file_fdw handles and reports invalid file rows.

FeaturesAdd reject_limit to control the number of invalid rows file_fdw can ignore

Additional Modules

Add reject_limit to control the number of invalid rows file_fdw can ignore (Atsushi Torikoshi) §

This is active when ON_ERROR = 'ignore'.

FeaturesAdd configurable variable min_password_length to passwordcheck

Additional Modules

Add configurable variable min_password_length to passwordcheck (Emanuele Musella, Maurizio Boriani) §

This controls the minimum password length.

FeaturesHave pgbench report the number of failed, retried, or skipped transactions in per-script reports

Additional Modules

Have pgbench report the number of failed, retried, or skipped transactions in per-script reports (Yugo Nagata) §

FeaturesAdd isn server variable weak to control invalid check digit acceptance

Additional Modules

Add isn server variable weak to control invalid check digit acceptance (Viktor Holmberg) §

This was previously only controlled by function isn_weak().

FeaturesAllow values to be sorted to speed btree_gist index builds

Additional Modules

Allow values to be sorted to speed btree_gist index builds (Bernd Helmle, Andrey Borodin) §

FeaturesAdd amcheck check function gin_index_check() to verify GIN indexes

Additional Modules

Add amcheck check function gin_index_check() to verify GIN indexes (Grigory Kryachko, Heikki Linnakangas, Andrey Borodin) §

FeaturesAdd functions pg_buffercache_evict_relation() and pg_buffercache_evict_all() to evict unpinned shared buffers

Additional Modules

Add functions pg_buffercache_evict_relation() and pg_buffercache_evict_all() to evict unpinned shared buffers (Nazir Bilal Yavuz) §

The existing function pg_buffercache_evict() now returns the buffer flush status.

FeaturesAllow extensions to install custom EXPLAIN options

Additional Modules

Allow extensions to install custom EXPLAIN options (Robert Haas, Sami Imseih) § § §

FeaturesAllow extensions to use the server's cumulative statistics API

Additional Modules

Allow extensions to use the server's cumulative statistics API (Michael Paquier) § §

FeaturesAllow the queries of CREATE TABLE AS and DECLARE to be tracked by pg_stat_statements

Additional Modules / pg_stat_statements

Allow the queries of CREATE TABLE AS and DECLARE to be tracked by pg_stat_statements (Anthonin Bonnefoy) §

They are also now assigned query ids.

FeaturesAllow the parameterization of SET values in pg_stat_statements

Additional Modules / pg_stat_statements

Allow the parameterization of SET values in pg_stat_statements (Greg Sabino Mullane, Michael Paquier) §

This reduces the bloat caused by SET statements with differing constants.

FeaturesAdd pg_stat_statements columns to report parallel activity

Additional Modules / pg_stat_statements

Add pg_stat_statements columns to report parallel activity (Guillaume Lelarge) §

The new columns are parallel_workers_to_launch and parallel_workers_launched.

FeaturesAdd pg_stat_statements.wal_buffers_full to report full WAL buffers

Additional Modules / pg_stat_statements

Add pg_stat_statements.wal_buffers_full to report full WAL buffers (Bertrand Drouvot) §

FeaturesAdd pgcrypto algorithms sha256crypt and sha512crypt

Additional Modules / pgcrypto

Add pgcrypto algorithms sha256crypt and sha512crypt (Bernd Helmle) §

FeaturesAdd CFB mode to pgcrypto encryption and decryption

Additional Modules / pgcrypto

Add CFB mode to pgcrypto encryption and decryption (Umar Hayat) §

FeaturesAdd function fips_mode() to report the server's FIPS mode

Additional Modules / pgcrypto

Add function fips_mode() to report the server's FIPS mode (Daniel Gustafsson) §

FeaturesAdd pgcrypto server variable builtin_crypto_enabled to allow disabling builtin non-FIPS mode cryptographic functions

Additional Modules / pgcrypto

Add pgcrypto server variable builtin_crypto_enabled to allow disabling builtin non-FIPS mode cryptographic functions (Daniel Gustafsson, Joe Conway) §

This is useful for guaranteeing FIPS mode behavior.

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.