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.
Includes changes after the source version through the target. A major version name means its initial release.
Detect the source version from your database
Complete release changes
18.0
2025-09-25
18.0stableSupport 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)
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
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
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)
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
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
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
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
FeaturesAllow non-btree unique indexes to be used as partition keys and in materialized views
FeaturesAllow GIN indexes to be created in parallel
FeaturesAllow values to be sorted to speed range-type GiST and btree index builds
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
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
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
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)
- Related commitsPostgreSQL 18.0 · Remove read/sync columns from pg_stat_wal
FeaturesRemove read/sync columns from pg_stat_wal
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)
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
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
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
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
FeaturesAdd memory and disk usage details to Material, Window Aggregate, and common table expression nodes to EXPLAIN output
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
FeaturesImprove Unicode full case mapping and conversion
FeaturesAllow jsonb null values to be cast to scalar types as NULL
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
FeaturesAllow casting between integer types and bytea
FeaturesUpdate Unicode data to Unicode 16.0.0
FeaturesAdd full text search stemming for Estonian
Data Types
Related records (5)
- Related commitsPostgreSQL 17.5 · Avoid crash when a Snowball stemmer encounters an out-of-memory condition
- Related commitsPostgreSQL 16.9 · Avoid crash when a Snowball stemmer encounters an out-of-memory condition
- Related commitsPostgreSQL 15.13 · Avoid crash when a Snowball stemmer encounters an out-of-memory condition
- Related commitsPostgreSQL 14.18 · Avoid crash when a Snowball stemmer encounters an out-of-memory condition
- Related commitsPostgreSQL 13.21 · Avoid crash when a Snowball stemmer encounters an out-of-memory condition
FeaturesImprove the XML error codes to more closely match the SQL standard
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
FeaturesAdd a WEEK option to EXTRACT()
Functions
Related records (1)
FeaturesImprove the output EXTRACT(QUARTER ...) for negative values
Functions
Improve the output EXTRACT(QUARTER ...) for negative values (Tom Lane) §
Related records (1)
- Related commitsPostgreSQL 18.0 · Add a WEEK option to EXTRACT()
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()
FeaturesAdd functions crc32() and crc32c() to compute CRC values
FeaturesAdd math functions gamma() and lgamma()
FeaturesAllow => syntax for named cursor arguments in PL/pgSQL
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
Allow 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 (Jian He) §
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
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
FeaturesAdd function's leakproof indicator to psql's \df+, \do+, \dAo+, and \dC+ outputs
FeaturesAdd access method details for partitioned relations in \dP+
FeaturesAdd default_version to the psql \dx extension output
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
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
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
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
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)
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
FeaturesAllow pg_upgrade to process database checks in parallel
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
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
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)
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)
FeaturesImprove the speed of numeric multiplication and division
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
FeaturesRemove column pg_attribute.attcacheoff
Source Code
Remove column pg_attribute.attcacheoff (David Rowley) §
FeaturesAdd column pg_class.relallfrozen
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
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
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
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
FeaturesAdd on_error and log_verbosity options to file_fdw
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
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
FeaturesAllow extensions to use the server's cumulative statistics API
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
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
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.
No matching changes
Try another search, or .
How is this comparison generated?
The comparison follows PostgreSQL release notes from just after the source through the target version. Confirmed backport duplicates are merged conservatively, with every original explanation retained. Related commits can represent independent changes; they remain separate records.
Release snapshot: 2026-09-26 · Security snapshot: 2026-09-26
Content comes from PostgreSQL release notes. Interaction inspired by pgversions.com and pgversionreport.