diff --git a/doc/src/sgml/release-15.sgml b/doc/src/sgml/release-15.sgml
index 4975d446337..6f99e04a1f7 100644
--- a/doc/src/sgml/release-15.sgml
+++ b/doc/src/sgml/release-15.sgml
@@ -1,6 +1,1555 @@
+
+ Release 15.19
+
+
+ Release date:
+ 2026-08-13
+
+
+
+ This release contains a variety of fixes from 15.18.
+ For information about new features in major release 15, see
+ .
+
+
+
+ Migration to Version 15.19
+
+
+ A dump/restore is not required for those running 15.X.
+
+
+
+ However, if you are upgrading from a version earlier than 15.14,
+ see .
+
+
+
+
+ Changes
+
+
+
+
+
+
+ Fix self-deadlock when replaying WAL generated by an older minor
+ version (Andrey Borodin)
+ §
+
+
+
+ This error was introduced in the previous set of minor releases. It
+ caused standby servers that were following a primary of an older
+ minor release version to get stuck in some scenarios.
+
+
+
+
+
+
+ Fix mis-handling of asynchronous reads when rescanning an
+ asynchronous Append plan node (Alexander Korotkov, Gleb Kashkin,
+ Etsuro Fujita)
+ §
+
+
+
+ When an upper plan node rescans an Append before having read the
+ entire Append output, we need to discard any in-flight requests sent
+ to external servers (by postgres_fdw for
+ example). This was not done correctly in cases where a subplan has
+ parameter changes or is discarded by partition pruning in the next
+ scan. The outcome could be incorrect query results, an infinite
+ loop, or an assertion failure.
+
+
+
+
+
+
+ Fix error in partition pruning for RANGE-partitioned tables
+ (David Rowley)
+ §
+
+
+
+ In some cases the DEFAULT partition would be skipped when it should
+ not be, which could lead to rows missing from query results.
+
+
+
+
+
+
+ Fix planner's nullability and strictness checks
+ for value IN
+ (array) expressions
+ (Ayush Tiwari)
+ §
+
+
+
+ These checks should only succeed if the array operand is known to be
+ non-empty, but that consideration was missed, allowing optimizations
+ to be applied that should not be. This could result in wrong query
+ answers if the array actually was empty.
+
+
+
+
+
+
+ Add missed checks for hashability of equality comparisons on
+ container datatypes (arrays, composites, ranges) (Andrei Lepikhov,
+ Tom Lane)
+ §
+
+
+
+ The planner must verify hashability of the container's component
+ type(s) before deciding it can use a hash-based plan type. This
+ step was missed in some places, leading to could not identify
+ a hash function failures at execution.
+
+
+
+
+
+
+ Fix mis-optimization of COUNT window functions
+ that have an EXCLUDE clause or
+ lack ORDER BY (Chengpeng Yan, David Rowley)
+ §
+
+
+
+ These window functions were treated as monotonic when they should
+ not be, allowing wrong answers to be computed.
+
+
+
+
+
+
+ Fix ALTER COLUMN ... DROP EXPRESSION to work when
+ there are multiple levels of partitions (Alberto Piai)
+ §
+
+
+
+
+
+
+ Disallow renaming a rule to _RETURN (Tom Lane)
+ §
+
+
+
+ That name is reserved for a view's ON SELECT
+ rule, but ALTER RULE allowed renaming other rules
+ to _RETURN, causing trouble later.
+
+
+
+
+
+
+ Fix use of REINDEX CONCURRENTLY with
+ a deferred uniqueness constraint (Nitin Motiani)
+ §
+
+
+
+ The transient index copy created during REINDEX
+ CONCURRENTLY was incorrectly marked as enforcing immediate
+ uniqueness, causing spurious reports of constraint violation.
+
+
+
+
+
+
+ Fix matching of localized month/day names
+ in to_date() (Heikki Linnakangas)
+ §
+
+
+
+ The matching logic misbehaved in cases where case-folding changes
+ the byte length of the string.
+
+
+
+
+
+
+ Fix incorrect NFC recomposition for Hangul U+11A7 (TBASE)
+ (Diego Frias, Michael Paquier)
+ §
+
+
+
+ This character was treated as a valid T syllable, which it is not,
+ and hence silently swallowed during normalization.
+
+
+
+
+
+
+ Avoid possible truncation of output lexemes in case-insensitive
+ synonym dictionaries (Jeff Davis)
+ §
+
+
+
+ If folding to lower case increased the byte length of a lexeme, it
+ was incorrectly truncated to its original byte length when emitted.
+
+
+
+
+
+
+ Fix typo in hash_record_extended() (Man Zeng)
+ §
+
+
+
+ The code failed to initialize the second isnull argument passed to
+ FunctionCallInvoke(). This is harmless for existing in-core
+ extended hash support functions, which will not examine that value.
+ However, extension-provided hash functions could be affected if they
+ inspect PG_ARGISNULL(1).
+
+
+
+
+
+
+ Prevent satisfies_hash_partition() from
+ crashing with VARIADIC NULL (Robert Haas)
+ §
+
+
+
+
+
+
+ Report invalid-weight errors more cleanly and consistently
+ in tsvector_filter() and allied functions
+ (Ewan Young)
+ §
+
+
+
+ In particular, report weight characters that are not printable ASCII
+ in octal form (\nnn),
+ as charout() would render them. This avoids
+ possibly producing an invalidly-encoded error message.
+
+
+
+
+
+
+ Fix mishandling of namespace nodes in xpath()
+ (Michael Paquier)
+ §
+ §
+
+
+
+ This fix avoids an unexpected could not copy node
+ error.
+
+
+
+
+
+
+ Treat an undefined jsonpath variable as an error even when no
+ variables are supplied (Andrey Rachitskiy)
+ §
+
+
+
+ The jsonb@?
+ and @@ operators cannot supply any variables to
+ be used in their jsonpath expressions. This code path erroneously
+ treated an unknown jsonpath variable as a JSON null, rather than
+ raising an error as expected. Aside from not being the expected
+ behavior, this mistake could result in unbounded memory consumption.
+
+
+
+
+
+
+ Avoid machine-dependent behavior when dividing the smallest
+ possible money value by -1 (Andrey Rachitskiy)
+ §
+
+
+
+
+
+
+ Fix crash after out-of-memory failure partway through creation of a
+ cache entry for a text search dictionary (Tom Lane)
+ §
+
+
+
+
+
+
+ Fix memory-safety bugs in processing of incorrect ispell/hunspell
+ dictionary files (Andrey Rachitskiy)
+ §
+
+
+
+
+
+
+ Honor query cancel and vacuum delay during GIN index posting-tree
+ cleanup (Paul Kim, Alexander Korotkov)
+ §
+
+
+
+ The posting tree for a common value can be large, so that this
+ missed check could allow vacuum to run for a long time before
+ noticing an interrupt.
+
+
+
+
+
+
+ Fix possible mis-decoding of index tuples during GiST and SP-GiST
+ index-only scans (Peter Geoghegan)
+ §
+
+
+
+ This error could lead to emitting corrupted data from an index-only
+ scan plan. The only affected core opclass is GiST's range_ops, and
+ it could only fail if the range column were not the first index
+ column.
+
+
+
+
+
+
+ When creating directories, tolerate concurrent creation of the same
+ directory (Andrew Dunstan, Tom Lane)
+ §
+
+
+
+
+
+
+ Prevent creation of dangling object dependencies by acquiring a
+ shared lock on any object being depended on (Bertrand Drouvot)
+ §
+ §
+
+
+
+ The shared lock will conflict with any attempt to drop the
+ depended-on object, eliminating the race condition that formerly
+ existed. For example, if one session drops a schema (that appears
+ empty to it) concurrently with some other session creating a
+ function in that schema, previously both transactions could commit,
+ leaving an invalid function definition behind. Now, one transaction
+ or the other will fail.
+
+
+
+
+
+
+ Fix race condition in conflict detection
+ for SERIALIZABLE isolation mode
+ (Peter Geoghegan)
+ §
+
+
+
+ A conflict could be missed when examining an initially-empty btree
+ index, allowing failure of serializability due to improperly
+ allowing conflicting transactions to commit.
+
+
+
+
+
+
+ Fix race condition in ProcSignalBarrier code (Masahiko Sawada)
+ §
+
+
+
+ This error could result in processes getting stuck, typically after
+ reporting still waiting for backend with
+ PID nnnn to accept
+ ProcSignalBarrier.
+
+
+
+
+
+
+ Fix race conditions when a set of processes that belong to the same
+ lock group exit at the same time (Vlad Lesin)
+ §
+ §
+
+
+
+ These errors could lead to PANIC aborts, with messages such
+ as latch already owned. The issue does not normally
+ arise in regular parallel query, since the leader won't exit before
+ seeing its workers finish; but some extensions reach the problem.
+
+
+
+
+
+
+ Avoid exposing a WAL receiver's full connection string during timeline
+ jumps (Chao Li)
+ §
+
+
+
+ The pg_stat_wal_receiver view should show a
+ sanitized version of the connection string, without sensitive data.
+ But it transiently showed the full string when we re-use an existing
+ WAL receiver.
+
+
+
+
+
+
+ Use run-time checks, not just Asserts, to verify the correct number
+ of columns in tuples received during logical replication (Varik
+ Matevosyan)
+ §
+
+
+
+ A malicious or buggy publisher could send inconsistent numbers of
+ columns. While we could not find a scenario in which this would
+ have serious ill effects, extra caution seems warranted.
+
+
+
+
+
+
+ Clean up quoting of string parameters within constructed replication
+ commands (Tom Lane)
+ §
+
+
+
+ Various places that generate replication commands were not being
+ adequately careful about quoting replication slot names and other
+ parameters that need to be inserted into those commands. This could
+ result in unexpected syntax errors in those commands. In principle,
+ a crafted replication slot name could result in SQL injection; but
+ such a scenario seems very unlikely to occur in practice, since
+ replication operations can only be invoked by highly-privileged
+ users and there is no reason for them to use a slot name coming from
+ an untrustworthy source.
+
+
+
+
+
+
+ Fix logical decoding of empty prepared transactions (Masahiko Sawada)
+ §
+
+
+
+ A prepared transaction that did not cause any decodable updates could
+ result in sending COMMIT/ROLLBACK PREPARED to the
+ output plugin with no preceding PREPARE. For the
+ built-in subscriber this breaks replication, and other plugins will
+ probably not like it either.
+
+
+
+
+
+
+ Fix corruption of unlogged sequences after standby promotion
+ (Fujii Masao)
+ §
+
+
+
+ Previously, if an unlogged sequence was created on the primary and
+ replicated to a standby, accessing the sequence after promoting the
+ standby could fail with bad magic number in sequence
+ or related errors.
+
+
+
+
+
+
+ Fix cascading standby reconnect failure after archive fallback
+ (Marco Nenciarini)
+ §
+
+
+
+ A cascading standby could fail to reconnect to its upstream standby
+ with requested starting point ... is ahead of the WAL flush
+ position after falling back to archive recovery.
+
+
+
+
+
+
+ Avoid race condition while dropping ephemeral replication slots
+ (Zhijie Hou)
+ §
+
+
+
+ The slot-releasing code performed some additional updates to the
+ replication slot's shared-memory entry after releasing the slot.
+ This is unsafe since another session could immediately re-use the
+ dropped slot's shared-memory entry. Skip those updates in the case
+ of an ephemeral slot.
+
+
+
+
+
+
+ Fix stale progress reports during logical replication table
+ synchronization (Shinya Kato)
+ §
+
+
+
+ Previously, the pg_stat_progress_copy view
+ in the subscriber would continue to show the
+ initial COPY operation as active even after the
+ data copy had finished. The stale entry remained visible until
+ synchronization caught up with the publisher.
+
+
+
+
+
+
+ Clear base backup progress on backup failure (Chao Li)
+ §
+ §
+
+
+
+ Previously the pg_stat_progress_basebackup
+ view would continue to show a stale progress entry after a failure,
+ until the replication client
+ disconnected. pg_basebackup normally
+ disconnects immediately, but other clients might not.
+
+
+
+
+
+
+ Fix possible PANIC due to concurrent drop of pgstats entries
+ when track_functions is enabled (Sami Imseih,
+ Michael Paquier)
+ §
+ §
+ §
+
+
+
+
+
+
+ Clean up broken local pgstats entry after failing to obtain space for
+ the corresponding shared hashtable entry (Niall Newman)
+ §
+
+
+
+ Failure to do this led to a null-pointer dereference the next time
+ the local entry was used.
+
+
+
+
+
+
+ In PL/Perl, avoid NULL pointer
+ dereference crash when working with an
+ invalid PostgreSQL::InServer::ARRAY object (Xing Guo)
+ §
+
+
+
+
+
+
+ In PL/Python, properly check for errors
+ when working with sequence and mapping objects (Richard Guo)
+ §
+
+
+
+ Previously, a broken object or an unhandled exception could result
+ in a NULL pointer dereference crash.
+
+
+
+
+
+
+ In libpq, always drain all pending bytes
+ from the SSL or GSS decryption buffer
+ during pqReadData() (Jacob Champion)
+ §
+ §
+ §
+ §
+
+
+
+ This avoids edge cases where libpq or its
+ calling application waits for more data to arrive on the socket, but
+ actually all the data has already arrived.
+
+
+
+
+
+
+ Allow libpq to accept
+ ParameterDescription messages exceeding 30000 bytes (Ning Sun)
+ §
+
+
+
+ Previously, this message type was not among those
+ that libpq's validity heuristics believed
+ could be long. The limit resulted in failure for prepared queries
+ having more than 7498 parameters, which is unlikely but supported.
+
+
+
+
+
+
+ Reject multiple descriptor header items
+ in ecpg's GET/SET
+ DESCRIPTOR statements (Masashi Kamura)
+ §
+
+
+
+ Previously the grammar allowed this syntax, but broken C code was
+ generated. Adjust the grammar and the documentation to allow only
+ one header item.
+
+
+
+
+
+
+ Make line widths match in psql's expanded
+ aligned output format (Pavel Stehule)
+ §
+
+
+
+ When the table's data rows are narrower than the record header lines,
+ widen the data rows to match the headers, avoiding unsightly output.
+
+
+
+
+
+
+ Fix psql's privilege check for showing
+ database size in \l+ (Christoph Berg)
+ §
+
+
+
+ The underlying server function permits users who
+ have pg_read_all_stats privileges to see the
+ sizes of all databases, even if they lack CONNECT
+ privilege. But psql was unaware of that
+ provision and would not call the function unless the user
+ has CONNECT privilege.
+
+
+
+
+
+
+ Fix psql's tab completion
+ for \df to consider procedures too
+ (Erik Wienhold)
+ §
+
+
+
+
+
+
+ Fix thread-safety bug in pgbench
+ (Fujii Masao)
+ §
+
+
+
+ When pgbench runs with multiple threads
+ and the option, different threads
+ could attempt to use the same buffer to construct error messages,
+ leading to corrupted log output.
+
+
+
+
+
+
+ Use the source cluster's group-read file permissions
+ for pg_recvlogical output files
+ (Fujii Masao)
+ §
+
+
+
+ pg_recvlogical was documented to behave
+ this way, but it never actually enabled group-read.
+
+
+
+
+
+
+ In contrib/amcheck, handle short-header varlena
+ datums correctly (Andrey Borodin)
+ §
+
+
+
+ This error could result in doing excess work while verifying a btree
+ index, but seems not to have had any worse consequences.
+
+
+
+
+
+
+ In contrib/btree_gist,
+ fix NaN handling in the float4
+ and float8 opclasses (Bill Kim, Tom Lane)
+ §
+
+
+
+ Comparisons, as well as the GiST penalty and distance functions, did
+ not account for NaN and would give the wrong
+ answer when handed one. It is recommended to
+ reindex btree_gist indexes on float columns
+ after installing this update, if there is any possibility that there
+ are NaN entries in those columns.
+
+
+
+
+
+
+ In contrib/btree_gist, fix searches using a
+ not-equal operator (Ayush Tiwari)
+ §
+
+
+
+ For variable-length data types, the code for scanning non-leaf index
+ pages applied the wrong comparison function, leading to wrong
+ results and potentially crashes.
+
+
+
+
+
+
+ Fix unguarded recursion and loops in
+ contrib/hstore_plperl,
+ contrib/jsonb_plperl, and
+ contrib/jsonb_plpython
+ (Aleksander Alekseev)
+ §
+ §
+
+
+
+ Prevent stack overflow when dealing with deeply
+ nested jsonb values, and allow interruption of the infinite
+ loop caused when attempting to dereference circular chains of Perl
+ object references.
+
+
+
+
+
+
+ Fix missed release of statistics catcache entry
+ in contrib/intarray (Man Zeng)
+ §
+
+
+
+ This oversight led to warnings like resource was not closed:
+ cache pg_statistic.
+
+
+
+
+
+
+ In contrib/ltree, fix integer overflow in
+ comparisons (Ayush Tiwari)
+ §
+
+
+
+ ltree values containing more than about 14,653 labels
+ resulted in wrong comparison answers due to overflow. If a btree
+ index contains such values, it is probably corrupt and should be
+ reindexed after installing this update.
+
+
+
+
+
+
+ Fix array overrun in contrib/pg_surgery's
+ heap_force_kill and
+ heap_force_freeze functions (Michael Paquier)
+ §
+
+
+
+ Attempting to change a TID whose offset number equals
+ MaxHeapTuplesPerPage wrote one byte past the end of the allocated
+ array, potentially crashing the server.
+
+
+
+
+
+
+ In contrib/pg_surgery, avoid infinite loop with
+ TID arrays having more than 64K elements (Andrey Rachitskiy)
+ §
+
+
+
+
+
+
+ Avoid NULL-pointer dereference
+ in contrib/refint's
+ check_foreign_key() (Ayush Tiwari)
+ §
+
+
+
+ In the on-update-cascade case, a null value of a referenced column
+ led to a crash. This is an oversight in the fix for CVE-2026-6637,
+ but the code that was there before that wasn't really right either.
+
+
+
+
+
+
+ Remove the plan cache in contrib/refint
+ (Ayush Tiwari)
+ §
+
+
+
+ This caching behavior has several serious bugs, notably that
+ check_foreign_key() embeds the new key values
+ in its cascade-UPDATE queries, so a cached plan reuses the
+ originally-needed values rather than the key values that should be
+ used. The simplest solution is to remove it.
+
+
+
+
+
+
+ Fix contrib/seg to print segments
+ with ~ certainty indicators correctly
+ (Ewan Young)
+ §
+
+
+
+ Due to a typo, seg_out() did not print
+ a ~ certainty indicator attached to a segment's
+ upper boundary. Worse, if the lower boundary
+ had ~ while the upper boundary had no indicator,
+ the upper boundary was not printed at all, incorrectly converting
+ the value into an open interval.
+
+
+
+
+
+
+ Fix crash with namespace nodes in contrib/xml2's
+ xpath_nodeset() function (Andrey Chernyy,
+ Michael Paquier)
+ §
+
+
+
+
+
+
+ Support building PostgreSQL with Visual
+ Studio 2026 (Andrew Dunstan)
+ §
+
+
+
+
+
+
+ Support building PostgreSQL with
+ OpenSSL 4 (Daniel Gustafsson)
+ §
+
+
+
+
+
+
+ Update time zone data files to tzdata
+ release 2026c (Tom Lane)
+ §
+
+
+
+ Alberta (America/Edmonton) will be on year-round UTC-06
+ (effectively, permanent DST) beginning in November 2026. This
+ release assumes that their TZ abbreviation will
+ be CST from that time forward. That seems likely
+ to change, but it's unclear what new abbreviation will be used.
+
+
+
+ Morocco (Africa/Casablanca) will move to permanent UTC+00,
+ without daylight saving time transitions, on 2026-09-20.
+
+
+
+
+
+
+
+
Release 15.18