Release date: 2025-09-25
PostgreSQL 18 contains many new features and enhancements, including:
An asynchronous I/O (AIO) subsystem that can improve performance of sequential scans, bitmap heap scans, vacuums, and other operations.
pg_upgrade now retains optimizer statistics.
Support for "skip scan" lookups that allow usingmulticolumn B-tree indexes in more cases.
Virtualgenerated columns that compute their values during read operations. This is now the default for generated columns.
OAuth authentication support.
OLD
andNEW
support forRETURNING
clauses inINSERT,UPDATE,DELETE, andMERGE commands.
Temporal constraints, or constraints over ranges, forPRIMARY KEY,UNIQUE, andFOREIGN KEY constraints.
The above items and other new features ofPostgreSQL 18 are explained in more detail in the sections below.
A dump/restore usingpg_dumpall or use ofpg_upgrade or logical replication is required for those wishing to migrate data from any previous release. SeeSection 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:
Changeinitdb default to enable data checksums (Greg Sabino Mullane)§
Checksums can be disabled with the newinitdb option--no-data-checksums
.pg_upgrade requires matching cluster checksum settings, so this new option can be useful to upgrade non-checksum old clusters.
Change time zone abbreviation handling (Tom Lane)§
The system will now favor the current session's time zone abbreviations before checking the server variabletimezone_abbreviations. Previouslytimezone_abbreviations
was checked first.
DeprecateMD5 password authentication (Nathan Bossart)§
Support for MD5 passwords will be removed in a future major version release.CREATE ROLE andALTER ROLE now emit deprecation warnings when setting MD5 passwords. These warnings can be disabled by setting themd5_password_warnings parameter tooff
.
ChangeVACUUM andANALYZE to process the inheritance children of a parent (Michael Harris)§
The previous behavior can be performed by using the newONLY
option.
PreventCOPY FROM
from treating\.
as an end-of-file marker when readingCSV files (Daniel Vérité, Tom Lane)§§
psql will still treat\.
as an end-of-file marker when readingCSV files fromSTDIN
. Olderpsql clients connecting toPostgreSQL 18 servers might experience\copy
problems. This release also enforces that\.
must appear alone on a line.
Disallow unlogged partitioned tables (Michael Paquier)§
PreviouslyALTER TABLE SET [UN]LOGGED
did nothing, and the creation of an unlogged partitioned table did not cause its children to be unlogged.
ExecuteAFTER
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., atCOMMIT). This is significant for cases where the role is changed between queue time and transaction commit.
Remove non-functional support for rule privileges inGRANT/REVOKE (Fujii Masao)§
These have been non-functional sincePostgreSQL 8.2.
Remove columnpg_backend_memory_contexts
.parent
(Melih Mutlu)§
This is no longer needed sincepg_backend_memory_contexts
.path
was added.
Changepg_backend_memory_contexts
.level
andpg_log_backend_memory_contexts()
to be one-based (Melih Mutlu, Atsushi Torikoshi, David Rowley, Fujii Masao)§§§
These were previously zero-based.
Changefull 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 thepg_trgm extension. When upgrading such clusters usingpg_upgrade, it is recommended to reindex all indexes related to full-text search andpg_trgm after the upgrade.
Below you will find a detailed account of the changes betweenPostgreSQL 18 and the previous major release.
Automatically remove some unnecessary table self-joins (Andrey Lepikhov, Alexander Kuzmenkov, Alexander Korotkov, Alena Rybakina)§
This optimization can be disabled using server variableenable_self_join_elimination.
Convert someIN (VALUES ...)
tox = ANY ...
for better optimizer statistics (Alena Rybakina, Andrei Lepikhov)§
Allow transformingOR
-clauses to arrays for faster index processing (Alexander Korotkov, Andrey Lepikhov)§
Speed up the processing ofINTERSECT
,EXCEPT
,window aggregates, andview column aliases (Tom Lane, David Rowley)§§§§
Allow the keys ofSELECT DISTINCT
to be internally reordered to avoid sorting (Richard Guo)§
This optimization can be disabled usingenable_distinct_reordering.
IgnoreGROUP BY
columns that are functionally dependent on other columns (Zhang Mingli, Jian He, David Rowley)§
If aGROUP 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.
Allow someHAVING
clauses onGROUPING SETS
to be pushed toWHERE
clauses (Richard Guo)§§§§
This allows earlier row filtering. This release also fixes someGROUPING SETS
queries that used to return incorrect results.
Improve row estimates forgenerate_series()
usingnumeric
andtimestamp
values (David Rowley, Song Jinzhou)§§
Allow the optimizer to useRight Semi Join
plans (Richard Guo)§
Semi-joins are used when needing to find if there is at least one match.
Allow merge joins to useincremental sorts (Richard Guo)§
Improve the efficiency of planning queries accessing many partitions (Ashutosh Bapat, Yuya Watari, David Rowley)§§
Allowpartitionwise joins in more cases, and reduce its memory usage (Richard Guo, Tom Lane, Ashutosh Bapat)§§
Improve cost estimates of partition queries (Nikita Malakhov, Andrei Lepikhov)§
ImproveSQL-language function plan caching (Alexander Pyhalov, Tom Lane)§§
Improve handling of disabled optimizer features (Robert Haas)§
Allow skip scans ofbtree 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.
Allow non-btree unique indexes to be used as partition keys and in materialized views (Mark Dilger)§§
The index type must still support equality.
AllowGIN
indexes to be created in parallel (Tomas Vondra, Matthias van de Meent)§
Allow values to be sorted to speed range-typeGiST andbtree index builds (Bernd Helmle)§
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 variableio_method, with server variablesio_combine_limit andio_max_combine_limit added to control it. This also enableseffective_io_concurrency andmaintenance_io_concurrency values greater than zero for systems withoutfadvise()
support. The new system viewpg_aios
shows the file handles being used for asynchronous I/O.
Improve the locking performance of queries that access many relations (Tomas Vondra)§
Improve the performance and reduce memory usage of hash joins andGROUP BY
(David Rowley, Jeff Davis)§§§§§
This also improves hash set operations used byEXCEPT
, and hash lookups of subplan values.
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 settingvacuum_max_eager_freeze_failure_rate. Previously vacuum never processed all-visible pages until freezing was required.
Add server variablevacuum_truncate to control file truncation duringVACUUM (Nathan Bossart, Gurjeet Singh)§
A storage-level parameter with the same name and behavior already existed.
Increase server variableseffective_io_concurrency's andmaintenance_io_concurrency's default values to 16 (Melanie Plageman)§§
This more accurately reflects modern hardware.
Increase the logging granularity of server variablelog_connections (Melanie Plageman)§
This server variable was previously only boolean, which is still supported.
Addlog_connections
option to report the duration of connection stages (Melanie Plageman)§
Addlog_line_prefix escape%L
to output the clientIP address (Greg Sabino Mullane)§
Add server variablelog_lock_failures to log lock acquisition failures (Yuki Seino, Fujii Masao)§§
Specifically it reportsSELECT ... NOWAIT
lock failures.
Modifypg_stat_all_tables
and its variants to report the time spent inVACUUM,ANALYZE, and theirautomatic variants (Sami Imseih)§
The new columns aretotal_vacuum_time
,total_autovacuum_time
,total_analyze_time
, andtotal_autoanalyze_time
.
Add delay time reporting toVACUUM andANALYZE (Bertrand Drouvot, Nathan Bossart)§§
This information appears in the server log, the system viewspg_stat_progress_vacuum
andpg_stat_progress_analyze
, and the output ofVACUUM andANALYZE when inVERBOSE
mode; tracking must be enabled with the server variabletrack_cost_delay_timing.
AddWAL,CPU, and average read statistics output toANALYZE VERBOSE
(Anthonin Bonnefoy)§§
Add fullWAL buffer count toVACUUM
/ANALYZE (VERBOSE)
and autovacuum log output (Bertrand Drouvot)§
Add per-backend I/O statistics reporting (Bertrand Drouvot)§§
The statistics are accessed viapg_stat_get_backend_io()
. Per-backend I/O statistics can be cleared viapg_stat_reset_backend_stats()
.
Addpg_stat_io
columns to report I/O activity in bytes (Nazir Bilal Yavuz)§
The new columns areread_bytes
,write_bytes
, andextend_bytes
. Theop_bytes
column, which always equaledBLCKSZ
, has been removed.
AddWAL I/O activity rows topg_stat_io
(Nazir Bilal Yavuz, Bertrand Drouvot, Michael Paquier)§§§
This includesWAL receiver activity and a wait event for such writes.
Change server variabletrack_wal_io_timing to control trackingWAL timing inpg_stat_io
instead ofpg_stat_wal
(Bertrand Drouvot)§
Remove read/sync columns frompg_stat_wal
(Bertrand Drouvot)§§
This removes columnswal_write
,wal_sync
,wal_write_time
, andwal_sync_time
.
Add functionpg_stat_get_backend_wal()
to return per-backendWAL statistics (Bertrand Drouvot)§
Per-backendWAL statistics can be cleared viapg_stat_reset_backend_stats()
.
Add functionpg_ls_summariesdir()
to specifically list the contents ofPGDATA
/pg_wal/summaries
(Yushi Ogiwara)§
Add columnpg_stat_checkpointer
.num_done
to report the number of completed checkpoints (Anton A. Melnikov)§
Columnsnum_timed
andnum_requested
count both completed and skipped checkpoints.
Add columnpg_stat_checkpointer
.slru_written
to reportSLRU buffers written (Nitin Jadhav)§
Also, modify the checkpoint server log message to report separate shared buffer andSLRU buffer values.
Add columns topg_stat_database
to report parallel worker activity (Benoit Lobréau)§
The new columns areparallel_workers_to_launch
andparallel_workers_launched
.
Havequery id computation of constant lists consider only the first and last constants (Dmitry Dolgov, Sami Imseih)§§§
Jumbling is used bypg_stat_statements.
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.
Add columnpg_backend_memory_contexts
.type
to report the type of memory context (David Rowley)§
Add columnpg_backend_memory_contexts
.path
to show memory context parents (Melih Mutlu)§
Add functionpg_get_acl()
to retrieve database access control details (Joel Jacobson)§§
Add functionhas_largeobject_privilege()
to check large object privileges (Yugo Nagata)§
AllowALTER DEFAULT PRIVILEGES to define large object default privileges (Takatsuka Haruka, Yugo Nagata, Laurenz Albe)§
Add predefined rolepg_signal_autovacuum_worker
(Kirill Reshke)§
This allows sending signals to autovacuum workers.
Add support for theOAuth authentication method (Jacob Champion, Daniel Gustafsson, Thomas Munro)§
This adds anoauth
authentication method topg_hba.conf
, libpq OAuth options, a server variableoauth_validator_libraries to load token validation libraries, and a configure flag--with-libcurl
to add the required compile-time libraries.
Add server variablessl_tls13_ciphers to allow specification of multiple colon-separated TLSv1.3 cipher suites (Erica Zhang, Daniel Gustafsson)§
Change server variablessl_groups's default to include elliptic curve X25519 (Daniel Gustafsson, Jacob Champion)§
Rename server variablessl_ecdh_curve
tossl_groups and allow multiple colon-separatedECDH curves to be specified (Erica Zhang, Daniel Gustafsson)§
The previous name still works.
Makecancel 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.
Add server variableautovacuum_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.
Allow specification of the fixed number of dead tuples that will trigger anautovacuum (Nathan Bossart, Frédéric Yhuel)§
The server variable isautovacuum_vacuum_max_threshold. Percentages are still used for triggering.
Change server variablemax_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.
Add server variablenum_os_semaphores to report the required number of semaphores (Nathan Bossart)§
This is useful for operating system configuration.
Add server variableextension_control_path to specify the location of extension control files (Peter Eisentraut, Matheus Alcantara)§§
Allow inactive replication slots to be automatically invalidated using server variableidle_replication_slot_timeout (Nisha Moond, Bharath Rupireddy)§
Add server variablemax_active_replication_origins to control the maximum active replication origins (Euler Taveira)§
This was previously controlled bymax_replication_slots, but this new setting allows a higher origin count in cases where fewer slots are required.
Allow the values ofgenerated 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 optionpublish_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.
Change the defaultCREATE SUBSCRIPTION streaming option fromoff
toparallel
(Vignesh C)§
AllowALTER SUBSCRIPTION to change the replication slot's two-phase commit behavior (Hayato Kuroda, Ajin Cherian, Amit Kapila, Zhijie Hou)§§
Logconflicts while applying logical replication changes (Zhijie Hou, Nisha Moond)§§§§§
Also report in new columns ofpg_stat_subscription_stats
.
Allowgenerated 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 theSTORED
option.
AddOLD
/NEW
support toRETURNING
inDML queries (Dean Rasheed)§
PreviouslyRETURNING
only returned new values forINSERT andUPDATE, and old values forDELETE;MERGE would return the appropriate value for the internal query executed. This new syntax allows theRETURNING
list ofINSERT
/UPDATE
/DELETE
/MERGE
to explicitly return old and new values by using the special aliasesold
andnew
. These aliases can be renamed to avoid identifier conflicts.
Allow foreign tables to be created like existing local tables (Zhang Mingli)§
The syntax isCREATE FOREIGN TABLE ... LIKE
.
AllowLIKE
withnondeterministic collations (Peter Eisentraut)§
Allow text position search functions with nondeterministic collations (Peter Eisentraut)§
These used to generate an error.
Add builtin collation providerPG_UNICODE_FAST
(Jeff Davis)§
This locale supports case mapping, but sorts in code point order, not natural language order.
AllowVACUUM andANALYZE to process partitioned tables without processing their children (Michael Harris)§
This is enabled with the newONLY
option. This is useful since autovacuum does not process partitioned tables, just its children.
Add functions to modify per-relation and per-column optimizer statistics (Corey Huinker)§§§
The functions arepg_restore_relation_stats()
,pg_restore_attribute_stats()
,pg_clear_relation_stats()
, andpg_clear_attribute_stats()
.
Add server variablefile_copy_method to control the file copying method (Nazir Bilal Yavuz)§
This controls whetherCREATE DATABASE ... STRATEGY=FILE_COPY
andALTER DATABASE ... SET TABLESPACE
uses file copy or clone.
Allow the specification of non-overlappingPRIMARY KEY
,UNIQUE
, andforeign key constraints (Paul A. Jungwirth)§§
This is specified byWITHOUT OVERLAPS
forPRIMARY KEY
andUNIQUE
, and byPERIOD
for foreign keys, all applied to the last specified column.
AllowCHECK
andforeign key constraints to be specified asNOT ENFORCED
(Amul Sul)§§
This also adds columnpg_constraint
.conenforced
.
Requireprimary/foreign key relationships to use either deterministic collations or the the same nondeterministic collations (Peter Eisentraut)§
The restore of apg_dump, also used bypg_upgrade, will fail if these requirements are not met; schema changes must be made for these upgrade methods to succeed.
Store columnNOT NULL
specifications inpg_constraint
(Álvaro Herrera, Bernd Helmle)§§
This allows names to be specified forNOT NULL
constraint. This also addsNOT NULL
constraints to foreign tables andNOT NULL
inheritance control to local tables.
AllowALTER TABLE to set theNOT VALID
attribute ofNOT NULL
constraints (Rushabh Lathia, Jian He)§
Allow modification of the inheritability ofNOT NULL
constraints (Suraj Kharage, Álvaro Herrera)§§
The syntax isALTER TABLE ... ALTER CONSTRAINT ... [NO] INHERIT
.
AllowNOT VALID
foreign key constraints on partitioned tables (Amul Sul)§
Allowdropping of constraintsONLY
on partitioned tables (Álvaro Herrera)§
This was previously erroneously prohibited.
AddREJECT_LIMIT
to control the number of invalid rowsCOPY FROM
can ignore (Atsushi Torikoshi)§
This is available whenON_ERROR = 'ignore'
.
AllowCOPY TO
to copy rows from populated materialized views (Jian He)§
AddCOPY
LOG_VERBOSITY
levelsilent
to suppress log output of ignored rows (Atsushi Torikoshi)§
This new level suppresses output for discarded input rows whenon_error = 'ignore'
.
DisallowCOPY FREEZE
on foreign tables (Nathan Bossart)§
Previously, theCOPY
worked but theFREEZE
was ignored, so disallow this command.
Automatically includeBUFFERS
output inEXPLAIN ANALYZE
(Guillaume Lelarge, David Rowley)§
Add fullWAL buffer count toEXPLAIN (WAL)
output (Bertrand Drouvot)§
InEXPLAIN ANALYZE
, report the number of index lookups used per index scan node (Peter Geoghegan)§
ModifyEXPLAIN
to output fractional row counts (Ibrar Ahmed, Ilia Evdokimov, Robert Haas)§§
Add memory and disk usage details toMaterial
,Window Aggregate
, and common table expression nodes toEXPLAIN
output (David Rowley, Tatsuo Ishii)§§§§
Add details about window function arguments toEXPLAIN
output (Tom Lane)§
AddParallel Bitmap Heap Scan
worker cache statistics toEXPLAIN ANALYZE
(David Geier, Heikki Linnakangas, Donghang Lin, Alena Rybakina, David Rowley)§
Indicate disabled nodes inEXPLAIN ANALYZE
output (Robert Haas, David Rowley, Laurenz Albe)§§§
ImproveUnicode 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.
Allowjsonb
null
values to be cast to scalar types asNULL
(Tom Lane)§
Previously such casts generated an error.
Add optional parameter tojson{b}_strip_nulls
to allow removal of null array elements (Florents Tselai)§
Add functionarray_sort()
which sorts an array's first dimension (Junwang Zhao, Jian He)§
Add functionarray_reverse()
which reverses an array's first dimension (Aleksander Alekseev)§
Add functionreverse()
to reverse bytea bytes (Aleksander Alekseev)§
Allow casting between integer types andbytea
(Aleksander Alekseev)§
The integer values are stored asbytea
two's complement values.
Improve theXML
error codes to more closely match theSQL standard (Tom Lane)§
These errors are reported viaSQLSTATE
.
Add functioncasefold()
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.
AllowMIN()
/MAX()
aggregates on arrays and composite types (Aleksander Alekseev, Marat Buharov)§§
Improve the outputEXTRACT(QUARTER ...)
for negative values (Tom Lane)§
Add roman numeral support toto_number()
(Hunaid Sohail)§
This is accessed via theRN
pattern.
AddUUID
version 7 generation functionuuidv7()
(Andrey Borodin)§
ThisUUID
value is temporally sortable. Function aliasuuidv4()
has been added to explicitly generate version 4 UUIDs.
Add functionscrc32()
andcrc32c()
to computeCRC values (Aleksander Alekseev)§
Allow=>
syntax for named cursor arguments inPL/pgSQL (Pavel Stehule)§
We previously only accepted:=
.
Allowregexp_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)§
Add functionPQfullProtocolVersion()
to report the full, including minor, protocol version number (Jacob Champion, Jelte Fennema-Nio)§
Add libpq connectionparameters andenvironment variables to specify the minimum and maximum acceptable protocol version for connections (Jelte Fennema-Nio)§§
Reportsearch_path changes to the client (Alexander Kukushkin, Jelte Fennema-Nio, Tomas Vondra)§§
AddPQtrace()
output for all message types, including authentication (Jelte Fennema-Nio)§§§§§
Add libpq connection parametersslkeylogfile
which dumps outSSL key material (Abhishek Chanda, Daniel Gustafsson)§
This is useful for debugging.
Modify some libpq function signatures to useint64_t
(Thomas Munro)§
These previously usedpg_int64
, which is now deprecated.
Allowpsql to parse, bind, and close named prepared statements (Anthonin Bonnefoy, Michael Paquier)§§
This is accomplished with new commands\parse
,\bind_named
, and\close_prepared
.
Addpsql backslash commands to allowing issuance of pipeline queries (Anthonin Bonnefoy)§§§
The new commands are\startpipeline
,\syncpipeline
,\sendpipeline
,\endpipeline
,\flushrequest
,\flush
, and\getresults
.
Allow adding pipeline status to thepsql prompt and add related state variables (Anthonin Bonnefoy)§
The new prompt character is%P
and the newpsql variables arePIPELINE_SYNC_COUNT
,PIPELINE_COMMAND_COUNT
, andPIPELINE_RESULT_COUNT
.
Allow adding the connection service name to thepsql prompt or access it viapsql variable (Michael Banck)§
Addpsql option to use expanded mode on all list commands (Dean Rasheed)§
Adding backslash suffixx
enables this.
Changepsql's\conninfo
to use tabular format and include more information (Álvaro Herrera, Maiquel Grassi, Hunaid Sohail)§
Add function's leakproof indicator topsql's\df+
,\do+
,\dAo+
, and\dC+
outputs (Yugo Nagata)§
Add access method details for partitioned relations in\dP+
(Justin Pryzby)§
Adddefault_version
to thepsql\dx
extension output (Magnus Hagander)§
Addpsql variableWATCH_INTERVAL
to set the default\watch
wait time (Daniel Gustafsson)§
Changeinitdb to default to enabling checksums (Greg Sabino Mullane)§§
The newinitdb option--no-data-checksums
disables checksums.
Addinitdb 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.
Addvacuumdb 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
.
Addpg_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.
Allowpg_verifybackup to verify tar-format backups (Amul Sul)§
Ifpg_rewind's--source-server
specifies a database name, use it in--write-recovery-conf
output (Masahiko Sawada)§
Addpg_resetwal option--char-signedness
to change the defaultchar
signedness (Masahiko Sawada)§
Addpg_dump andpg_dumpall option--sequence-data
to dump sequence data that would normally be excluded (Nathan Bossart)§§
Addpg_dump,pg_dumpall, andpg_restore options--statistics-only
,--no-statistics
,--no-data
, and--no-schema
(Corey Huinker, Jeff Davis)§
Add option--no-policies
to disable row level security policy processing inpg_dump,pg_dumpall,pg_restore (Nikolay Samokhvalov)§
This is useful for migrating to systems with different policies.
Allowpg_upgrade to preserve optimizer statistics (Corey Huinker, Jeff Davis, Nathan Bossart)§§§§
Extended statistics are not preserved. Also addpg_upgrade option--no-statistics
to disable statistics preservation.
Allowpg_upgrade to process database checks in parallel (Nathan Bossart)§§§§§§§§§§§
This is controlled by the existing--jobs
option.
Addpg_upgrade option--swap
to swap directories rather than copy, clone, or link files (Nathan Bossart)§
This mode is potentially the fastest.
Addpg_upgrade option--set-char-signedness
to set the defaultchar
signedness of new cluster (Masahiko Sawada)§§
This is to handle cases where a pre-PostgreSQL 18 cluster's defaultCPU signedness does not match the new cluster.
Addpg_createsubscriber option--all
to create logical replicas for all databases (Shubham Khanna)§
Addpg_createsubscriber option--clean
to remove publications (Shubham Khanna)§§
Addpg_createsubscriber option--enable-two-phase
to enable prepared transactions (Shubham Khanna)§
Addpg_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.
Allowpg_recvlogical--drop-slot
to work without--dbname
(Hayato Kuroda)§
Separate the loading and running ofinjection points (Michael Paquier, Heikki Linnakangas)§§
Injection points can now be created, but not run, viaINJECTION_POINT_LOAD()
, and such injection points can be run viaINJECTION_POINT_CACHED()
.
Support runtime arguments in injection points (Michael Paquier)§
Allow inline injection point test code withIS_INJECTION_POINT_ATTACHED()
(Heikki Linnakangas)§
Improve the performance of processing longJSON
strings usingSIMD (Single Instruction Multiple Data) (David Rowley)§
Speed up CRC32C calculations using x86AVX-512 instructions (Raghuveer Devulapalli, Paul Amonson)§
AddARM Neon andSVE CPU intrinsics for popcount (integer bit counting) (Chiranmoy Bhattacharya, Devanga Susmitha, Rama Malladi)§§
Improve the speed of numeric multiplication and division (Joel Jacobson, Dean Rasheed)§§§§
Add configure option--with-libnuma
to enableNUMA awareness (Jakub Wartak, Bertrand Drouvot)§§§
The functionpg_numa_available()
reports onNUMA awareness, and system viewspg_shmem_allocations_numa
andpg_buffercache_numa
which report on shared memory distribution acrossNUMA nodes.
AddTOAST table topg_index
to allow for very large expression indexes (Nathan Bossart)§
Remove columnpg_attribute
.attcacheoff
(David Rowley)§
Addamgettreeheight
,amconsistentequality
, andamconsistentordering
to the index access methodAPI (Mark Dilger)§§
Add GiST support functionstratnum()
(Paul A. Jungwirth)§
Record the defaultCPU signedness ofchar
inpg_controldata (Masahiko Sawada)§
Add support for Python "LimitedAPI" inPL/Python (Peter Eisentraut)§§
This helps prevent problems caused byPython 3.x version mismatches.
Change the minimum supportedPython version to 3.6.8 (Jacob Champion)§
Remove support forOpenSSL versions older than 1.1.1 (Daniel Gustafsson)§§
IfLLVM is enabled, require version 14 or later (Thomas Munro)§
Add macroPG_MODULE_MAGIC_EXT
to allow extensions to report their name and version (Andrei Lepikhov)§
This information can be access via the new functionpg_get_loaded_modules()
.
Document thatSPI_connect()
/SPI_connect_ext()
always returns success (SPI_OK_CONNECT
) (Stepan Neretin)§
Errors are always reported viaereport()
.
Adddocumentation section aboutAPI andABI compatibility (David Wheeler, Peter Eisentraut)§
Remove the experimental designation ofMeson builds onWindows (Aleksander Alekseev)§
Remove configure options--disable-spinlocks
and--disable-atomics
(Thomas Munro)§§
Thirty-two-bit atomic operations are now required.
Remove support for theHPPA/PA-RISC architecture (Tom Lane)§
Add extensionpg_logicalinspect to inspect logical snapshots (Bertrand Drouvot)§
Add extensionpg_overexplain which adds debug details toEXPLAIN
output (Robert Haas)§
Add output columns topostgres_fdw_get_connections()
(Hayato Kuroda, Sagar Dilip Shedge)§§§§
New output columnused_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, andremote_backend_pid
indicates the remote backend process identifier.
AllowSCRAM authentication from the client to be passed topostgres_fdw servers (Matheus Alcantara, Peter Eisentraut)§
This avoids storingpostgres_fdw authentication information in the database, and is enabled with thepostgres_fdwuse_scram_passthrough
connection option. libpq uses new connection parametersscram_client_key andscram_server_key.
AllowSCRAM authentication from the client to be passed todblink servers (Matheus Alcantara)§
Addon_error
andlog_verbosity
options tofile_fdw (Atsushi Torikoshi)§
These control howfile_fdw handles and reports invalid file rows.
Addreject_limit
to control the number of invalid rowsfile_fdw can ignore (Atsushi Torikoshi)§
This is active whenON_ERROR = 'ignore'
.
Add configurable variablemin_password_length
topasswordcheck (Emanuele Musella, Maurizio Boriani)§
This controls the minimum password length.
Havepgbench report the number of failed, retried, or skipped transactions in per-script reports (Yugo Nagata)§
Addisn server variableweak
to control invalid check digit acceptance (Viktor Holmberg)§
This was previously only controlled by functionisn_weak()
.
Allow values to be sorted to speedbtree_gist index builds (Bernd Helmle, Andrey Borodin)§
Addamcheck check functiongin_index_check()
to verifyGIN
indexes (Grigory Kryachko, Heikki Linnakangas, Andrey Borodin)§
Add functionspg_buffercache_evict_relation()
andpg_buffercache_evict_all()
to evict unpinned shared buffers (Nazir Bilal Yavuz)§
The existing functionpg_buffercache_evict()
now returns the buffer flush status.
Allow extensions to install customEXPLAIN options (Robert Haas, Sami Imseih)§§§
Allow extensions to use the server's cumulative statisticsAPI (Michael Paquier)§§
Allow the queries ofCREATE TABLE AS andDECLARE to be tracked bypg_stat_statements (Anthonin Bonnefoy)§
They are also now assigned query ids.
Allow the parameterization ofSET values inpg_stat_statements (Greg Sabino Mullane, Michael Paquier)§
This reduces the bloat caused bySET
statements with differing constants.
Addpg_stat_statements
columns to report parallel activity (Guillaume Lelarge)§
The new columns areparallel_workers_to_launch
andparallel_workers_launched
.
Addpg_stat_statements
.wal_buffers_full
to report fullWAL buffers (Bertrand Drouvot)§
Addpgcrypto algorithmssha256crypt
andsha512crypt
(Bernd Helmle)§
AddCFB mode topgcrypto encryption and decryption (Umar Hayat)§
Add functionfips_mode()
to report the server'sFIPS mode (Daniel Gustafsson)§
Addpgcrypto server variablebuiltin_crypto_enabled
to allow disabling builtin non-FIPS mode cryptographic functions (Daniel Gustafsson, Joe Conway)§
This is useful for guaranteeingFIPS mode behavior.
The following individuals (in alphabetical order) have contributed to this release as patch authors, committers, reviewers, testers, or reporters of issues.
Abhishek Chanda |
Adam Guo |
Adam Rauch |
Aidar Imamov |
Ajin Cherian |
Alastair Turner |
Alec Cozens |
Aleksander Alekseev |
Alena Rybakina |
Alex Friedman |
Alex Richman |
Alexander Alehin |
Alexander Borisov |
Alexander Korotkov |
Alexander Kozhemyakin |
Alexander Kukushkin |
Alexander Kuzmenkov |
Alexander Kuznetsov |
Alexander Lakhin |
Alexander Pyhalov |
Alexandra Wang |
Alexey Dvoichenkov |
Alexey Makhmutov |
Alexey Shishkin |
Ali Akbar |
Álvaro Herrera |
Álvaro Mongil |
Amit Kapila |
Amit Langote |
Amul Sul |
Andreas Karlsson |
Andreas Scherbaum |
Andreas Ulbrich |
Andrei Lepikhov |
Andres Freund |
Andrew |
Andrew Bille |
Andrew Dunstan |
Andrew Jackson |
Andrew Kane |
Andrew Watkins |
Andrey Borodin |
Andrey Chudnovsky |
Andrey Rachitskiy |
Andrey Rudometov |
Andy Alsup |
Andy Fan |
Anthonin Bonnefoy |
Anthony Hsu |
Anthony Leung |
Anton Melnikov |
Anton Voloshin |
Antonin Houska |
Antti Lampinen |
Arseniy Mukhin |
Artur Zakirov |
Arun Thirupathi |
Ashutosh Bapat |
Asphator |
Atsushi Torikoshi |
Avi Weinberg |
Aya Iwata |
Ayush Tiwari |
Ayush Vatsa |
Bastien Roucariès |
Ben Peachey Higdon |
Benoit Lobréau |
Bernd Helmle |
Bernd Reiß |
Bernhard Wiedemann |
Bertrand Drouvot |
Bertrand Mamasam |
Bharath Rupireddy |
Bogdan Grigorenko |
Boyu Yang |
Braulio Fdo Gonzalez |
Bruce Momjian |
Bykov Ivan |
Cameron Vogt |
Cary Huang |
Cédric Villemain |
Cees van Zeeland |
ChangAo Chen |
Chao Li |
Chapman Flack |
Charles Samborski |
Chengwen Wu |
Chengxi Sun |
Chiranmoy Bhattacharya |
Chris Gooch |
Christian Charukiewicz |
Christoph Berg |
Christophe Courtois |
Christopher Inokuchi |
Clemens Ruck |
Corey Huinker |
Craig Milhiser |
Crisp Lee |
Dagfinn Ilmari Mannsåker |
Daniel Elishakov |
Daniel Gustafsson |
Daniel Vérité |
Daniel Westermann |
Daniele Varrazzo |
Daniil Davydov |
Daria Shanina |
Dave Cramer |
Dave Page |
David Benjamin |
David Christensen |
David Fiedler |
David G. Johnston |
David Geier |
David Rowley |
David Steele |
David Wheeler |
David Zhang |
Davinder Singh |
Dean Rasheed |
Devanga Susmitha |
Devrim Gündüz |
Dian Fay |
Dilip Kumar |
Dimitrios Apostolou |
Dipesh Dhameliya |
Dmitrii Bondar |
Dmitry Dolgov |
Dmitry Koval |
Dmitry Kovalenko |
Dmitry Yurichev |
Dominique Devienne |
Donghang Lin |
Dorjpalam Batbaatar |
Drew Callahan |
Duncan Sands |
Dwayne Towell |
Dzmitry Jachnik |
Egor Chindyaskin |
Egor Rogov |
Emanuel Ionescu |
Emanuele Musella |
Emre Hasegeli |
Eric Cyr |
Erica Zhang |
Erik Nordström |
Erik Rijkers |
Erik Wienhold |
Erki Eessaar |
Ethan Mertz |
Etienne LAFARGE |
Etsuro Fujita |
Euler Taveira |
Evan Si |
Evgeniy Gorbanev |
Fabio R. Sluzala |
Fabrízio de Royes Mello |
Feike Steenbergen |
Feliphe Pozzer |
Felix |
Fire Emerald |
Florents Tselai |
Francesco Degrassi |
Frank Streitzig |
Frédéric Yhuel |
Fredrik Widlert |
Gabriele Bartolini |
Gavin Panella |
Geoff Winkless |
George MacKerron |
Gilles Darold |
Grant Gryczan |
Greg Burd |
Greg Sabino Mullane |
Greg Stark |
Grigory Kryachko |
Guillaume Lelarge |
Gunnar Morling |
Gunnar Wagner |
Gurjeet Singh |
Haifang Wang |
Hajime Matsunaga |
Hamid Akhtar |
Hannu Krosing |
Hari Krishna Sunder |
Haruka Takatsuka |
Hayato Kuroda |
Heikki Linnakangas |
Hironobu Suzuki |
Holger Jakobs |
Hubert Lubaczewski |
Hugo Dubois |
Hugo Zhang |
Hunaid Sohail |
Hywel Carver |
Ian Barwick |
Ibrar Ahmed |
Igor Gnatyuk |
Igor Korot |
Ilia Evdokimov |
Ilya Gladyshev |
Ilyasov Ian |
Imran Zaheer |
Isaac Morland |
Israel Barth Rubio |
Ivan Kush |
Jacob Brazeal |
Jacob Champion |
Jaime Casanova |
Jakob Egger |
Jakub Wartak |
James Coleman |
James Hunter |
Jan Behrens |
Japin Li |
Jason Smith |
Jayesh Dehankar |
Jeevan Chalke |
Jeff Davis |
Jehan-Guillaume de Rorthais |
Jelte Fennema-Nio |
Jian He |
Jianghua Yang |
Jiao Shuntian |
Jim Jones |
Jim Nasby |
Jingtang Zhang |
Jingzhou Fu |
Joe Conway |
Joel Jacobson |
John Hutchins |
John Naylor |
Jonathan Katz |
Jorge Solórzano |
José Villanova |
Josef Šimánek |
Joseph Koshakow |
Julien Rouhaud |
Junwang Zhao |
Justin Pryzby |
Kaido Vaikla |
Kaimeh |
Karina Litskevich |
Karthik S |
Kartyshov Ivan |
Kashif Zeeshan |
Keisuke Kuroda |
Kevin Hale Boyes |
Kevin K Biju |
Kirill Reshke |
Kirill Zdornyy |
Koen De Groote |
Koichi Suzuki |
Koki Nakamura |
Konstantin Knizhnik |
Kouhei Sutou |
Kuntal Ghosh |
Kyotaro Horiguchi |
Lakshmi Narayana Velayudam |
Lars Kanis |
Laurence Parry |
Laurenz Albe |
Lele Gaifax |
Li Yong |
Lilian Ontowhee |
Lingbin Meng |
Luboslav Špilák |
Luca Vallisa |
Lukas Fittl |
Maciek Sakrejda |
Magnus Hagander |
Mahendra Singh Thalor |
Mahendrakar Srinivasarao |
Maiquel Grassi |
Maksim Korotkov |
Maksim Melnikov |
Man Zeng |
Marat Buharov |
Marc Balmer |
Marco Nenciarini |
Marcos Pegoraro |
Marina Polyakova |
Mark Callaghan |
Mark Dilger |
Marlene Brandstaetter |
Marlene Reiterer |
Martin Rakhmanov |
Masahiko Sawada |
Masahiro Ikeda |
Masao Fujii |
Mason Mackaman |
Mat Arye |
Matheus Alcantara |
Mats Kindahl |
Matthew Gabeler-Lee |
Matthew Kim |
Matthew Sterrett |
Matthew Woodcraft |
Matthias van de Meent |
Matthieu Denais |
Maurizio Boriani |
Max Johnson |
Max Madden |
Maxim Boguk |
Maxim Orlov |
Maximilian Chrzan |
Melanie Plageman |
Melih Mutlu |
Mert Alev |
Michael Banck |
Michael Bondarenko |
Michael Christofides |
Michael Guissine |
Michael Harris |
Michaël Paquier |
Michail Nikolaev |
Michal Kleczek |
Michel Pelletier |
Mikaël Gourlaouen |
Mikhail Gribkov |
Mikhail Kot |
Milosz Chmura |
Muralikrishna Bandaru |
Murat Efendioglu |
Mutaamba Maasha |
Naeem Akhter |
Nat Makarevitch |
Nathan Bossart |
Navneet Kumar |
Nazir Bilal Yavuz |
Neil Conway |
Niccolò Fei |
Nick Davies |
Nicolas Maus |
Niek Brasa |
Nikhil Raj |
Nikita |
Nikita Kalinin |
Nikita Malakhov |
Nikolay Samokhvalov |
Nikolay Shaplov |
Nisha Moond |
Nitin Jadhav |
Nitin Motiani |
Noah Misch |
Noboru Saito |
Noriyoshi Shinoda |
Ole Peder Brandtzæg |
Oleg Sibiryakov |
Oleg Tselebrovskiy |
Olleg Samoylov |
Onder Kalaci |
Ondrej Navratil |
Patrick Stählin |
Paul Amonson |
Paul Jungwirth |
Paul Ramsey |
Pavel Borisov |
Pavel Luzanov |
Pavel Nekrasov |
Pavel Stehule |
Peter Eisentraut |
Peter Geoghegan |
Peter Mittere |
Peter Smith |
Phil Eaton |
Philipp Salvisberg |
Philippe Beaudoin |
Pierre Giraud |
Pixian Shi |
Polina Bungina |
Przemyslaw Sztoch |
Quynh Tran |
Rafia Sabih |
Raghuveer Devulapalli |
Rahila Syed |
Rama Malladi |
Ran Benita |
Ranier Vilela |
Renan Alves Fonseca |
Richard Guo |
Richard Neill |
Rintaro Ikeda |
Robert Haas |
Robert Treat |
Robins Tharakan |
Roman Zharkov |
Ronald Cruz |
Ronan Dunklau |
Rui Zhao |
Rushabh Lathia |
Rustam Allakov |
Ryo Kanbayashi |
Ryohei Takahashi |
RyotaK |
Sagar Dilip Shedge |
Salvatore Dipietro |
Sam Gabrielsson |
Sam James |
Sameer Kumar |
Sami Imseih |
Samuel Thibault |
Satyanarayana Narlapuram |
Sebastian Skalacki |
Senglee Choi |
Sergei Kornilov |
Sergey Belyashov |
Sergey Dudoladov |
Sergey Prokhorenko |
Sergey Sargsyan |
Sergey Soloviev |
Sergey Tatarintsev |
Shaik Mohammad Mujeeb |
Shawn McCoy |
Shenhao Wang |
Shihao Zhong |
Shinya Kato |
Shlok Kyal |
Shubham Khanna |
Shveta Malik |
Simon Riggs |
Smolkin Grigory |
Sofia Kopikova |
Song Hongyu |
Song Jinzhou |
Soumyadeep Chakraborty |
Sravan Kumar |
Srinath Reddy |
Stan Hu |
Stepan Neretin |
Stephen Fewer |
Stephen Frost |
Steve Chavez |
Steven Niu |
Suraj Kharage |
Sven Klemm |
Takamichi Osumi |
Takeshi Ideriha |
Tatsuo Ishii |
Ted Yu |
Tels |
Tender Wang |
Teodor Sigaev |
Thom Brown |
Thomas Baehler |
Thomas Krennwallner |
Thomas Munro |
Tim Wood |
Timur Magomedov |
Tobias Wendorff |
Todd Cook |
Tofig Aliev |
Tom Lane |
Tomas Vondra |
Tomasz Rybak |
Tomasz Szypowski |
Torsten Foertsch |
Toshi Harada |
Tristan Partin |
Triveni N |
Umar Hayat |
Vallimaharajan G |
Vasya Boytsov |
Victor Yegorov |
Vignesh C |
Viktor Holmberg |
Vinícius Abrahão |
Vinod Sridharan |
Virender Singla |
Vitaly Davydov |
Vladlen Popolitov |
Vladyslav Nebozhyn |
Walid Ibrahim |
Webbo Han |
Wenhui Qiu |
Will Mortensen |
Will Storey |
Wolfgang Walther |
Xin Zhang |
Xing Guo |
Xuneng Zhou |
Yan Chengpen |
Yang Lei |
Yaroslav Saburov |
Yaroslav Syrytsia |
Yasir Hussain |
Yasuo Honda |
Yogesh Sharma |
Yonghao Lee |
Yoran Heling |
Yu Liang |
Yugo Nagata |
Yuhang Qiu |
Yuki Seino |
Yura Sokolov |
Yurii Rashkovskii |
Yushi Ogiwara |
Yusuke Sugie |
Yuta Katsuragi |
Yuto Sasaki |
Yuuki Fujii |
Yuya Watari |
Zane Duffield |
Zeyuan Hu |
Zhang Mingli |
Zhihong Yu |
Zhijie Hou |
Zsolt Parragi |
If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please usethis form to report a documentation issue.