diff --git a/doc/src/sgml/release-13.sgml b/doc/src/sgml/release-13.sgml
index 33c400492e3..165d7067ac3 100644
--- a/doc/src/sgml/release-13.sgml
+++ b/doc/src/sgml/release-13.sgml
@@ -1,6 +1,700 @@
+
+ Release 13.21
+
+
+ Release date:
+ 2025-05-08
+
+
+
+ This release contains a variety of fixes from 13.20.
+ For information about new features in major release 13, see
+ .
+
+
+
+ The PostgreSQL community will stop
+ releasing updates for the 13.X release series in November 2025.
+ Users are encouraged to update to a newer release branch soon.
+
+
+
+ Migration to Version 13.21
+
+
+ A dump/restore is not required for those running 13.X.
+
+
+
+ However, if you have any self-referential foreign key constraints on
+ partitioned tables, it may be necessary to recreate those constraints
+ to ensure that they are being enforced correctly. See the first
+ changelog entry below.
+
+
+
+ Also, if you are upgrading from a version earlier than 13.17,
+ see .
+
+
+
+
+ Changes
+
+
+
+
+
+
+ Handle self-referential foreign keys on partitioned tables correctly
+ (Álvaro Herrera)
+ §
+
+
+
+ Creating or attaching partitions failed to make the required catalog
+ entries for a foreign-key constraint, if the table referenced by the
+ constraint was the same partitioned table. This resulted in failure
+ to enforce the constraint fully.
+
+
+
+ To fix this, you should drop and recreate any self-referential
+ foreign keys on partitioned tables, if partitions have been created
+ or attached since the constraint was created. Bear in mind that
+ violating rows might already be present, in which case recreating
+ the constraint will fail, and you'll need to fix up those rows
+ before trying again.
+
+
+
+
+
+
+ Fix unexpected attribute has wrong type errors
+ in UPDATE, DELETE,
+ and MERGE queries that use whole-row table
+ references to views or functions in FROM
+ (Tom Lane)
+ §
+ §
+ §
+
+
+
+
+
+
+ Correctly process references to outer CTE names that appear within
+ a WITH clause attached to
+ an INSERT/UPDATE/DELETE/MERGE
+ command that's inside WITH (Tom Lane)
+ §
+
+
+
+ The parser failed to detect disallowed recursion cases, nor did it
+ account for such references when sorting CTEs into a usable order.
+
+
+
+
+
+
+ Fix ARRAY(subquery)
+ and ARRAY[expression, ...]
+ constructs to produce sane results when the input is of
+ type int2vector or oidvector (Tom Lane)
+ §
+
+
+
+ This patch restores the behavior that existed
+ before PostgreSQL 9.5: the result is of
+ type int2vector[] or oidvector[].
+
+
+
+
+
+
+ Fix possible erroneous reports of invalid affixes while parsing
+ Ispell dictionaries (Jacob Brazeal)
+ §
+
+
+
+
+
+
+ Fix ALTER TABLE ADD COLUMN to correctly handle
+ the case of a domain type that has a default
+ (Jian He, Tom Lane, Tender Wang)
+ §
+ §
+
+
+
+ If a domain type has a default, adding a column of that type (without
+ any explicit DEFAULT
+ clause) failed to install the domain's default
+ value in existing rows, instead leaving the new column null.
+
+
+
+
+
+
+ Improve the error message for disallowed attempts to alter the
+ properties of a foreign key constraint (Álvaro Herrera)
+ §
+
+
+
+
+
+
+ Avoid error when resetting
+ the relhassubclass flag of a temporary
+ table that's marked ON COMMIT DELETE ROWS
+ (Noah Misch)
+ §
+
+
+
+
+
+
+ Disable skip fetch optimization in bitmap heap scan
+ (Matthias van de Meent)
+ §
+
+
+
+ It turns out that this optimization can result in returning dead
+ tuples when a concurrent vacuum marks a page all-visible.
+
+
+
+
+
+
+ Fix performance issues in GIN index search startup when there are
+ many search keys (Tom Lane, Vinod Sridharan)
+ §
+ §
+
+
+
+ An indexable clause with many keys (for example, jsonbcol
+ ?| array[...] with tens of thousands of array elements)
+ took O(N2) time to start up, and was
+ uncancelable for that interval too.
+
+
+
+
+
+
+ Detect missing support procedures in a BRIN index operator class,
+ and report an error instead of crashing (Álvaro Herrera)
+ §
+
+
+
+
+
+
+ Fix race condition in handling
+ of synchronous_standby_names immediately after
+ startup (Melnikov Maksim, Michael Paquier)
+ §
+
+
+
+ For a short period after system startup, backends might fail to wait
+ for synchronous commit even
+ though synchronous_standby_names is enabled.
+
+
+
+
+
+
+ Fix pg_strtof() to not crash with null endptr
+ (Alexander Lakhin, Tom Lane)
+ §
+
+
+
+
+
+
+ Avoid crash when a Snowball stemmer encounters an out-of-memory
+ condition (Maksim Korotkov)
+ §
+
+
+
+
+
+
+ Skip WAL recycling and preallocation during archive recovery, to
+ avoid corruption of WAL files that were restored from the archive
+ (Noah Misch, Arun Thirupathi)
+ §
+ §
+ §
+ §
+ §
+ §
+ §
+
+
+
+ This change back-patches v15-era fixes that were considered largely
+ cosmetic at the time, but turn out to prevent data corruption in the
+ wake of subsequent fixes.
+
+
+
+
+
+
+ Prevent over-advancement of catalog xmin in fast
+ forward mode of logical decoding (Zhijie Hou)
+ §
+
+
+
+ This mistake could allow deleted catalog entries to be vacuumed away
+ even though they were still potentially needed by the WAL-reading
+ process.
+
+
+
+
+
+
+ Avoid data loss when DDL operations that don't take a strong lock
+ affect tables that are being logically replicated (Shlok Kyal,
+ Hayato Kuroda)
+ §
+ §
+
+
+
+ The catalog changes caused by the DDL command were not reflected
+ into WAL-decoding processes, allowing them to decode subsequent
+ changes using stale catalog data, probably resulting in data
+ corruption.
+
+
+
+
+
+
+ Avoid duplicate snapshot creation in logical replication index
+ lookups (Heikki Linnakangas)
+ §
+ §
+
+
+
+
+
+
+ Fix overly-strict assertion
+ in gistFindCorrectParent() (Heikki Linnakangas)
+ §
+
+
+
+
+
+
+ In PL/pgSQL, avoid unexpected plan node type error
+ when a scrollable cursor is defined on a
+ simple SELECT expression
+ query (Andrei Lepikhov)
+ §
+
+
+
+
+
+
+ Don't try to drop individual index partitions
+ in pg_dump's
+ mode (Jian He)
+ §
+
+
+
+ The server rejects such DROP commands. That has
+ no real consequences, since the partitions will go away anyway in
+ the subsequent DROPs of either their parent
+ tables or their partitioned index. However, the error reported for
+ the attempted drop causes problems when restoring
+ in mode.
+
+
+
+
+
+
+ In pg_dumpall, avoid emitting invalid
+ role GRANT commands
+ if pg_auth_members contains invalid role
+ OIDs (Tom Lane)
+ §
+
+
+
+ Instead, print a warning and skip the entry. This copes better with
+ catalog corruption that has been seen to occur in back branches as a
+ result of race conditions between GRANT
+ and DROP ROLE.
+
+
+
+
+
+
+ Allow contrib/dblink queries to be interrupted
+ by query cancel (Noah Misch)
+ §
+ §
+
+
+
+ This change back-patches a v17-era fix. It prevents possible hangs
+ in CREATE DATABASE and DROP
+ DATABASE due to failure to detect deadlocks.
+
+
+
+
+
+
+ Avoid crashing with corrupt input data
+ in contrib/pageinspect's
+ heap_page_items() (Dmitry Kovalenko)
+ §
+
+
+
+
+
+
+ Prevent assertion failure
+ in contrib/pg_freespacemap's
+ pg_freespacemap() (Tender Wang)
+ §
+
+
+
+ Applying pg_freespacemap() to a relation
+ lacking storage (such as a view) caused an assertion failure,
+ although there was no ill effect in non-assert builds.
+ Add an error check to reject that case.
+
+
+
+
+
+
+ Fix build failure on macOS 15.4 (Tom Lane, Peter Eisentraut)
+ §
+
+
+
+ This macOS update broke our configuration probe
+ for strchrnul().
+
+
+
+
+
+
+ Update time zone data files to tzdata
+ release 2025b for DST law changes in Chile, plus historical
+ corrections for Iran (Tom Lane)
+ §
+
+
+
+ There is a new time zone America/Coyhaique for Chile's Aysén Region,
+ to account for it changing to UTC-03 year-round and thus diverging
+ from America/Santiago.
+
+
+
+
+
+
+
+
Release 13.20