DocumentationVersion comparison
POSTGRESQL · VERSION COMPARE
All features, fixes, and compatibility notes in this release, with related records from other versions.
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.
PostgreSQL 19beta4 has not been released. These notes describe the indicated preview build.
Complete release changes
Snapshot 2026-09-14
19.0 Preview
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 19 contains a number of changes that may affect compatibility with previous releases. Observe the following incompatibilities:
Compatibility
Add server variable password_expiration_warning_threshold to warn about password expiration (Gilles Darold, Nathan Bossart) §
The default warning period is seven days.
Compatibility
Issue a warning after successful MD5 password authentication (Nathan Bossart) §
The warning can be disabled via server variable md5_password_warnings. MD5 passwords were marked as deprecated in PostgreSQL 18.
Compatibility
Remove RADIUS support (Thomas Munro) §
PostgreSQL only supported RADIUS over UDP, which is unfixably insecure.
Compatibility
Force standard_conforming_strings to always be on in the database server (Tom Lane) §
Dumps created using pre-PostgreSQL 19 versions of pg_dump or pg_dumpall, and using standard_conforming_strings = off, will not properly load into PostgreSQL 19 and later servers. Users should create dumps using PostgreSQL 19 or later versions of these applications, or use standard_conforming_strings = on.
Client applications still support operations with servers having standard_conforming_strings = off, for compatibility with old servers. The server variable escape_string_warning has been removed as unnecessary.
Compatibility
Disallow carriage returns and line feeds in database, role, and tablespace names (Mahendra Singh Thalor) §
pg_upgrade will also disallow upgrading of clusters that use such names. This was changed to avoid security problems.
Compatibility
Change the default index opclasses for inet and cidr data types from btree_gist to GiST (Tom Lane) § §
The btree_gist inet/cidr opclasses are broken because they can exclude rows that should be returned. pg_upgrade will disallow upgrading of clusters with btree_gist inet/cidr indexes.
Compatibility
Disallow system columns from being used in COPY FROM ... WHERE (Tom Lane) §
The values of such columns were not well-defined.
Compatibility
Change a json_array() call which returns no rows to return an empty JSON array (Richard Guo) §
This previously returned NULL.
Compatibility
Cause transactions to pass their READ ONLY and DEFERRABLE status to postgres_fdw sessions (Etsuro Fujita) §
This means READ ONLY transactions can no longer modify rows processed by postgres_fdw sessions.
Compatibility
Change default of max_locks_per_transaction from 64 to 128 (Heikki Linnakangas) §
Lock size allocation has changed, so effectively settings must now be doubled to match their capacity in previous releases.
Compatibility
Compatibility
Rename column sync_error_count to sync_table_error_count in system view pg_stat_subscription_stats (Vignesh C) §
This is necessary since sequence errors are now tracked separately.
“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.
Compatibility
Rename wait event type BUFFERPIN to BUFFER (Andres Freund) §
Compatibility
Change index access method handlers to use a static IndexAmRoutines structure, rather than dynamically allocated ones (Matthias van de Meent) §
Compatibility
Remove optimizer hook get_relation_info_hook and add better-placed hook build_simple_rel_hook (Robert Haas) §
Compatibility
Remove MULE_INTERNAL encoding (Thomas Munro) §
This encoding was complex and rarely used. Databases using it will need to be dumped and restored with a different encoding.
Server / Optimizer
Allow NOT IN clauses to be converted to more efficient ANTI JOINs when NULLs are not present (Richard Guo) §
Server / Optimizer
Allow more LEFT JOINs to be converted to ANTI JOINs (Tender Wang, Richard Guo) §
Server / Optimizer
Allow use of Memoize for ANTI JOINs with unique inner sides (Richard Guo) §
Server / Optimizer
Improve hash join's handling of tuples with NULL join keys (Tom Lane) §
Server / Optimizer
Improve the planning of semijoins (Richard Guo) §
Server / Optimizer
Allow Append and MergeAppend to consider explicit incremental sorts (Richard Guo) §
Server / Optimizer
Convert IS [NOT] DISTINCT FROM NULL to IS [NOT] NULL during constant folding (Richard Guo) §
The latter form is more easily optimized.
Server / Optimizer
Simplify IS [NOT] DISTINCT FROM to equality/inequality operators when inputs are proven non-nullable (Richard Guo) §
Server / Optimizer
Perform earlier constant folding of var IS [NOT] NULL in the optimizer (Richard Guo) §
This allows for later optimizations.
Server / Optimizer
Simplify COALESCE() and ROW(...) IS [NOT] NULL to avoid evaluating unnecessary arguments (Richard Guo) § §
Server / Optimizer
Simplify IS [NOT] TRUE/FALSE/UNKNOWN to plain boolean expressions when the input is proven non-nullable (Richard Guo) §
Server / Optimizer
Speed up join selectivity computations for large optimizer statistics targets (Ilia Evdokimov, David Geier) §
Server / Optimizer
Enable proper optimizer statistics for functions returning boolean values (Tom Lane) §
Server / Optimizer
Allow extended statistics on virtual generated columns (Yugo Nagata) §
Server / Optimizer
Allow function pg_restore_extended_stats() to restore optimizer extended statistics (Corey Huinker, Michael Paquier, Chao Li) § § § §
Server / Optimizer
Add function pg_clear_extended_stats() to remove extended statistics (Corey Huinker, Michael Paquier) §
Server / Optimizer
Adjust the optimizer to consider startup costs of partial paths (Robert Haas, Tomas Vondra) §
Server / Optimizer
Allow negative values of pg_aggregate.aggtransspace to indicate unbounded memory usage (Richard Guo) §
This information is used by the optimizer in planning memory usage.
Server / General Performance
Improve asynchronous I/O read-ahead scheduling for large requests (Andres Freund) § § §
Server / General Performance
Allow io_method method worker to automatically control needed background workers (Thomas Munro) §
The new server variables are io_min_workers, io_max_workers, io_worker_idle_timeout, and io_worker_launch_interval.
Server / General Performance
Allow query table scans to mark pages as all-visible in the visibility map (Melanie Plageman) §
Previously only VACUUM and COPY ... FREEZE could do this.
Server / General Performance
Allow autovacuum to use parallel autovacuum workers (Daniil Davydov) § §
The maximum number of workers is controlled by server variable autovacuum_max_parallel_workers and per-table storage parameter autovacuum_parallel_workers.
Server / General Performance
Change wal_compression equals on to use the best WAL compression method available (wenhui qiu) §
Previously this always used pglz.
Server / General Performance
Change the default TOAST compression method from pglz to the more efficient lz4 (Euler Taveira) §
This is done by changing the default for server variable default_toast_compression.
Server / General Performance
Improve performance of internal row deformation (David Rowley) §
Server / General Performance
Improve performance of repeated UTF-8 case-folding operations (Andreas Karlsson) §
Server / General Performance
Improve sort performance using radix sort (John Naylor) §
Server / General Performance
Improve timing performance measurements (Lukas Fittl, Andres Freund, David Geier) § §
This benefits EXPLAIN (ANALYZE, TIMING) and pg_test_timing, and is controlled via server variable timing_clock_source.
Server / System Views
Add system view pg_stat_lock and function pg_stat_get_lock() to report per-lock-type statistics (Bertrand Drouvot) §
Server / System Views
Add system view pg_stat_recovery to report recovery status (Xuneng Zhou, Shinya Kato) § §
Server / System Views
Add system view pg_stat_autovacuum_scores to report per-table autovacuum details (Sami Imseih) §
Server / System Views
Add system view pg_dsm_registry_allocations to report dynamic shared memory details (Florents Tselai, Nathan Bossart) § §
Server / System Views
Add vacuum initiation details to system view pg_stat_progress_vacuum (Shinya Kato) §
The new started_by column reports the initiator of the vacuum, and mode indicates its aggressiveness.
Server / System Views
Add analyze initiation details to system view pg_stat_progress_analyze (Shinya Kato) §
The new started_by column reports the initiator of the analyze.
Server / System Views
Add mem_exceeded_count column to system view pg_stat_replication_slots (Bertrand Drouvot) §
This reports the number of times that logical_decoding_work_mem was exceeded.
Server / System Views
Add slot synchronization skip information to pg_stat_replication_slots and pg_replication_slots (Shlok Kyal) § § §
The new columns are slotsync_skip_count, slotsync_last_skip, and slotsync_skip_reason.
Server / System Views
Add update_deleted column to system view pg_stat_subscription_stats (Zhijie Hou) §
This reports the number of rows where updates were ignored due to concurrent deletes. This requires the subscriber have retain_dead_tuples enabled.
Server / System Views
Add sync_seq_error_count column to system view pg_stat_subscription_stats to report sequence synchronization errors (Vignesh C) § §
“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.
Server / System Views
Add stats_reset column to system views pg_stat_all_tables, pg_stat_all_indexes, and pg_statio_all_sequences (Bertrand Drouvot, Sami Imseih, Shihao Zhong) §
It also appears in the sys and user view variants.
Server / System Views
Add stats_reset column to system views pg_stat_user_functions and pg_stat_database_conflicts (Bertrand Drouvot, Shihao Zhong) § §
Server / System Views
Add location column to system views pg_available_extensions and pg_available_extension_versions to report the file system directory of extensions (Matheus Alcantara) §
Server / System Views
Add backup_type column to system view pg_stat_progress_basebackup to report the type of backup (Shinya Kato) §
Possible values are full or incremental.
Server / System Views
Add connecting value to system view column pg_stat_wal_receiver.status (Xuneng Zhou) §
Server / System Views
Add reporting of the bytes written to WAL for full page images (Shinya Kato) §
This is accessible via system view pg_stat_wal and function pg_stat_get_backend_wal().
Server / System Views
Add columns to system views pg_stats, pg_stats_ext, and pg_stats_ext_exprs (Corey Huinker) §
Adds table OID and attribute number columns to pg_stats, and table OID and statistics object OID columns to the other two.
Server / System Views
Add information about range type extended statistics to system view pg_stats_ext_exprs (Corey Huinker, Michael Paquier) §
Server / Monitoring
Allow log_min_messages log levels to be specified by process type (Euler Taveira) §
The new format is type:level. A value without a colon controls all process types, allowing backward compatibility.
Server / Monitoring
Add server variable log_autoanalyze_min_duration to log long-running analyze operations by autovacuum operations (Shinya Kato) §
Server variable log_autovacuum_min_duration now only controls logging of vacuum operations by autovacuum.
Server / Monitoring
Enable server variable log_lock_waits by default (Laurenz Albe) §
Server / Monitoring
Add server variable debug_print_raw_parse to log raw parse trees (Chao Li) §
This is also enabled when the server is started with debug level three and higher.
Server / Monitoring
Make messages coming from remote servers appear in the server logs in the same format as local server messages (Vignesh C) §
These include replication, postgres_fdw, and dblink servers.
Server / Monitoring
Add reporting of WAL full-page write bytes to VACUUM and ANALYZE logging (Shinya Kato) §
Server / Monitoring
Add IO wait events for COPY FROM/TO on a pipe, file, or program (Nikolay Samokhvalov) §
Server / Monitoring
Add wait events for commit_delay and for WAL write and flush LSNs (Xuneng Zhou) § §
Server / Monitoring
Have pg_get_sequence_data() return the sequence page LSN (Vignesh C) §
Server / Monitoring
Add function pg_get_multixact_stats() to report multixact activity (Naga Appani) §
Server / Monitoring
Issue warnings when the wraparound of xid and multi-xids is less than 100 million (Nathan Bossart) §
The previous warning was 40 million. Warnings are issued to clients and in the server log.
Server / Server Configuration
Add scoring system to control the order that tables are processed by autovacuum (Nathan Bossart) §
The new server variables are autovacuum_freeze_score_weight, autovacuum_multixact_freeze_score_weight, autovacuum_vacuum_score_weight, autovacuum_vacuum_insert_score_weight, and autovacuum_analyze_score_weight.
Server / Server Configuration
Add server-side support for SNI (Server Name Indication) (Daniel Gustafsson, Jacob Champion) §
New configuration file PGDATA/pg_hosts.conf specifies hostname/key pairs.
Server / Server Configuration
Allow OAuth validators to register custom pg_hba.conf authentication options (Jacob Champion, Zsolt Parragi) §
Server / Server Configuration
Allow roles pg_read_all_data and pg_write_all_data to read/write large objects (Nitin Motiani, Nathan Bossart) §
These roles are designed to allow non-super users to run pg_dump.
Server / Server Configuration
Allow background workers to be configured to terminate before database-level operations (Aya Iwata) §
This allows database-level operations to complete more quickly since blocking background workers can now be terminated.
Server / Server Configuration
Allow server variables that represent lists to be emptied by setting the value to NULL (Tom Lane) §
Server / Server Configuration
Update GB18030 encoding from version 2000 to 2022 (Chao Li, Zheng Tao) §
See the commit message for compatibility details.
Server / Streaming Replication and Recovery
Improve function pg_sync_replication_slots() to wait for replication synchronization completion (Ajin Cherian, Zhijie Hou) §
Previously, certain synchronization failures would not be reported.
Server / Streaming Replication and Recovery
Add server variable wal_sender_shutdown_timeout to limit replica synchronization waits during shutdown (Andrey Silitskiy, Hayato Kuroda) §
By default, senders still wait forever for synchronization.
Server / Logical Replication
Allow sequence values stored in subscribers to match the publisher (Vignesh C) § § §
This is enabled during CREATE SUBSCRIPTION, ALTER SUBSCRIPTION ... REFRESH PUBLICATION, and ALTER SUBSCRIPTION ... REFRESH SEQUENCES. The latter only updates values, not sequence existence. Function pg_get_sequence_data() allows inspection of sequence synchronization.
“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.
Server / Logical Replication
Allow CREATE/ALTER PUBLICATION to publish all sequences (Vignesh C, Tomas Vondra) §
This is enabled with the ALL SEQUENCES clause.
Server / Logical Replication
Allow ALTER SUBSCRIPTION on publications to synchronize the existence of sequences on subscribers to match the publisher (Vignesh C) §
This is enabled with the REFRESH SEQUENCES clause.
“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.
Server / Logical Replication
Add CREATE/ALTER SUBSCRIPTION setting retain_dead_tuples to retain information needed for conflict detection (Zhijie Hou) § § §
Also add setting max_retention_duration to limit retain_dead_tuples retention.
Server / Logical Replication
Allow CREATE SUBSCRIPTION to use postgres_fdw foreign data wrapper connection parameters (Jeff Davis) §
The connection parameters are referenced via CREATE SUBSCRIPTION ... SERVER.
“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.
Server / Logical Replication
When server variable wal_level is replica, allow automatic enablement of logical replication when needed (Masahiko Sawada) §
New server variable effective_wal_level, application pg_controldata, and function pg_control_checkpoint() report the effective WAL level.
Server / Logical Replication
Allow wal_receiver_timeout to be set per-subscription and user (Fujii Masao) § §
This allows subscribers to use different wal_receiver_timeout values.
Server / Logical Replication
Add optional pid parameter to pg_replication_origin_session_setup() to allow parallelization of SQL-level replication solutions (Doruk Yilmaz, Hayato Kuroda) §
Query Commands
Allow GROUP BY to process target list subqueries that have expressions referencing non-subquery columns (Tom Lane) §
Also fix a bug in how GROUPING() handles target list subquery aliases.
Query Commands
Allow window functions to ignore NULLs with the IGNORE NULLS/RESPECT NULLS clause (Oliver Ford, Tatsuo Ishii) §
Supported window functions are lead(), lag(), first_value(), last_value(), and nth_value().
Query Commands
Add support for INSERT ... ON CONFLICT DO SELECT ... RETURNING (Andreas Karlsson, Marko Tiikkaja, Viktor Holmberg) §
This allows conflicting rows to be returned, and optionally locked with FOR UPDATE/SHARE.
Utility Commands
Add REPACK command which replaces VACUUM FULL and CLUSTER (Antonin Houska) §
The two former commands did similar things, but with confusing names, so unify them as REPACK. The old commands have been retained for compatibility.
Utility Commands
Allow REPACK to rebuild tables without access-exclusive locking (Antonin Houska, Mihail Nikalayeu, Álvaro Herrera) § § §
This is enabled via the CONCURRENTLY option. Server variable max_repack_replication_slots was also added.
Utility Commands
Support forward references in FOREIGN KEY constraint clauses within CREATE SCHEMA (Jian He, Tom Lane) §
Utility Commands
Allow CHECKPOINT to accept a list of options (Christoph Berg) § § §
Supported options are MODE and FLUSH_UNLOGGED.
Utility Commands
Add CONNECTION clause to CREATE FOREIGN DATA WRAPPER to specify a function to be called for subscription connection parameters (Jeff Davis, Noriyoshi Shinoda) § §
“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.
Utility Commands
Add SUPPORT clause to CREATE AGGREGATE so extensions can specify support functions to optimize aggregate calls (Tom Lane) §
Utility Commands
Add memory usage and parallelism reporting to VACUUM (VERBOSE) and autovacuum logs (Tatsuya Kawata, Daniil Davydov) § §
Utility Commands / Constraints
Allow ALTER TABLE ALTER CONSTRAINT ... [NOT] ENFORCED for CHECK constraints (Jian He) §
Previously enforcement changes were only supported for foreign key constraints.
Utility Commands / Constraints
Allow ALTER TABLE ... COLUMN SET EXPRESSION to succeed on virtual columns with CHECK constraints (Jian He) §
This was previously prohibited.
Utility Commands / COPY
Allow COPY TO to process partitioned tables (Jian He, Ajin Cherian) § §
Previously COPY (SELECT ...) had to be used to output partitioned tables. This also improves logical replication table synchronization.
Utility Commands / EXPLAIN
Add EXPLAIN ANALYZE option IO to report asynchronous IO activity (Tomas Vondra) § § §
Utility Commands / EXPLAIN
Add reporting of WAL full-page write bytes to EXPLAIN (ANALYZE, WAL) output (Shinya Kato) §
Data Types
Add ability to cast between database names and oids using regdatabase (Ian Lawrence Barwick) §
Data Types
Add functions tid_block() and tid_offset() to extract block numbers and offsets from tid values (Ayush Tiwari) §
Functions
Add date, timestamp, and timestamptz versions of random(min, max) (Damien Clochard, Dean Rasheed) § §
Functions
Add functions to return a set of ranges resulting from range subtraction (Paul A. Jungwirth) §
The functions are range_minus_multi() and multirange_minus_multi(). This is useful to represent range subtraction results with gaps.
Functions
Add function error_on_null() to return the supplied parameter, or error on NULL input (Joel Jacobson) §
Functions
Add full text stemmers for Polish and Esperanto (Tom Lane) §
The Dutch stemmer has also been updated. The old Dutch stemmer is available via dutch_porter.
Libpq
Allow libpq connections to specify a service file via servicefile (Torsten Förtsch, Ryo Kanbayashi) §
Libpq
Add special libpq protocol parameters for compatibility testing (Jelte Fennema-Nio, Jacob Champion) §
Otherwise known as protocol grease, which was active during the 19 beta period. These will no longer be sent as of the PostgreSQL 19 official release, but the parameter reservations will remain for potential use in the future.
Libpq
Add libpq connection parameter oauth_ca_file to specify an alternate certificate authority when communicating with OAuth providers (Jonathan Gonzalez V., Jacob Champion) §
This can also be set via the PGOAUTHCAFILE environment variable. The default is to use curl's built-in certificates.
Libpq
Allow libpq environment variable PGOAUTHDEBUG to specify particular debug options (Zsolt Parragi, Jacob Champion) §
The UNSAFE option still generates all debugging output.
Libpq
Improve custom OAuth client flows (Jacob Champion) § §
Previously, libpq reported only a generic error message during custom flow failures, and each flow implementation was required to calculate the issuer identifier independently. Add a new authdata hook type PQAUTHDATA_OAUTH_BEARER_TOKEN_V2 that precomputes the issuer ID and lets hooks provide error details.
Libpq
Add libpq function PQgetThreadLock() to retrieve the current locking callback (Jacob Champion) §
psql
Allow control over how booleans are displayed in psql (David G. Johnston) §
The \pset variables are display_true and display_false.
psql
Add psql variable SERVICEFILE to reference the service file location (Ryo Kanbayashi) §
Server Applications
Allow pg_verifybackup to read WAL files stored in tar archives (Amul Sul) §
Add option --wal-path as an alias for the existing and deprecated --wal-directory option.
Server Applications
Allow pg_waldump to read WAL files stored in tar archives (Amul Sul) §
Server Applications
Improve performance of pg_upgrade copying large object metadata (Nathan Bossart) § § § §
Various methods are used, depending on the PostgreSQL version of the old cluster.
Server Applications
Allow pg_upgrade to process non-default tablespaces stored in the PGDATA directory (Nathan Bossart) §
Previously such tablespaces generated an error.
Server Applications
Improve the usability of pg_test_timing (Hannu Krosing, Tom Lane) § §
Report nanoseconds instead of microseconds. In addition to histogram output, output a second table that reports exact timings, with an optional cutoff set by --cutoff.
Server Applications / pg_createsubscriber
Allow pg_createsubscriber to ignore specified publications that already exist (Shubham Khanna) §
Previously this generated an error.
Server Applications / pg_createsubscriber
Change the way pg_createsubscriber stores recovery parameters (Alyona Vinter) §
Changes are stored in optionally-included pg_createsubscriber.conf rather than directly in postgresql.auto.conf.
Server Applications / pg_createsubscriber
Add pg_createsubscriber option -l/--logdir to redirect output to files (Gyan Sreejith, Hayato Kuroda) §
Source Code
Require Visual Studio 2019 or later (Peter Eisentraut) §
Source Code
Use standard C23 and C++ attributes if available (Peter Eisentraut) §
Source Code
Use AVX2 CPU instructions for calculating page checksums (Matthew Sterrett, Andrew Kim) §
Source Code
Use ARM Crypto Extension to Compute CRC32C (John Naylor) §
Source Code
Change hex_encode() and hex_decode() to use SIMD CPU instructions (Nathan Bossart, Chiranmoy Bhattacharya) §
Source Code
Add Meson option to build both shared and static libraries, or only shared (Peter Eisentraut) §
Source Code
Allow extensions to replace set-returning functions in the FROM clause with SQL queries (Paul A. Jungwirth) §
Source Code
Make multixid members 64-bit (Maxim Orlov) §
Source Code
Change function prototypes to use uint* instead of bit* typedefs (Nathan Bossart) §
Source Code
Allow logical decoding plugins to specify if they do not access shared catalogs (Antonin Houska) §
Source Code
Allow OAuth validators to supply failure details (Jacob Champion) §
This is done by setting the ValidatorModuleResult structure member error_detail.
Source Code
Add simplified and improved shared memory registration function ShmemRequestStruct() (Heikki Linnakangas, Ashutosh Bapat) §
Functions ShmemInitStruct() and ShmemInitHash() remain for backward compatibility.
Source Code
Add server variable debug_exec_backend to report how parameters are passed to new backends (Daniel Gustafsson) §
Source Code
Add documentation section about temporal tables (Paul A. Jungwirth) §
Source Code
Document the environment variables that control the regression tests (Michael Paquier) §
Source Code
Update documented systemd example to include a restart setting (Andrew Jackson) §
Additional Modules
Add pg_plan_advice module to stabilize and control planner decisions (Robert Haas) § §
Additional Modules
Add extension pg_stash_advice to allow per-query-id advice to be specified (Robert Haas, Lukas Fittl) § §
Additional Modules
Show sizes of FETCH queries as constants in pg_stat_statements (Sami Imseih) §
Fetches of different sizes will now be grouped together in pg_stat_statements output.
Additional Modules
Add generic and custom plan counts to pg_stat_statements (Sami Imseih) §
Additional Modules
Refactor pg_buffercache reporting of shared memory mapping (Bertrand Drouvot) §
New function pg_buffercache_os_pages() and system view pg_buffercache_os_pages allow reporting of shared memory mapping; the function optionally includes NUMA details. Function pg_buffercache_numa_pages() remains for backward compatibility.
Additional Modules
Add functions to pg_buffercache to mark buffers as dirty (Nazir Bilal Yavuz) §
The functions are pg_buffercache_mark_dirty(), pg_buffercache_mark_dirty_relation(), and pg_buffercache_mark_dirty_all().
Additional Modules
Allow pushdown of array comparisons in prepared statements to postgres_fdw foreign servers (Alexander Pyhalov) §
Additional Modules
Allow the retrieval of statistics from foreign data wrapper servers (Corey Huinker, Etsuro Fujita) § §
This is enabled for postgres_fdw by using the option import_stats. The default is for ANALYZE to retrieve rows from the remote server to locally generate statistics.
Additional Modules
Add server variable auto_explain.log_io to add IO reporting to auto_explain (Tomas Vondra) §
Additional Modules
Allow auto_explain to add extension-specific EXPLAIN options via server variable auto_explain.log_extension_options (Robert Haas) §
Additional Modules
Improve performance of pgstattuple by using streaming reads (Xuneng Zhou) § §
Additional Modules
Allow fuzzystrmatch's dmetaphone() to use single-byte encodings beyond ASCII (Peter Eisentraut) §
Try another search, or .
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.