diff --git a/doc/src/sgml/release-12.sgml b/doc/src/sgml/release-12.sgml
index b28295f616..3d866e8197 100644
--- a/doc/src/sgml/release-12.sgml
+++ b/doc/src/sgml/release-12.sgml
@@ -1,6 +1,800 @@
+
+ Release 12.10
+
+
+ Release date:
+ 2022-02-10
+
+
+
+ This release contains a variety of fixes from 12.9.
+ For information about new features in major release 12, see
+ .
+
+
+
+ Migration to Version 12.10
+
+
+ A dump/restore is not required for those running 12.X.
+
+
+
+ However, if you have applied REINDEX CONCURRENTLY
+ to a TOAST table's index, or observe failures to access TOAST datums,
+ see the first changelog entry below.
+
+
+
+ Also, if you are upgrading from a version earlier than 12.9,
+ see .
+
+
+
+
+ Changes
+
+
+
+
+
+
+ Enforce standard locking protocol for TOAST table updates, to prevent
+ problems with REINDEX CONCURRENTLY (Michael Paquier)
+
+
+
+ If applied to a TOAST table or TOAST table's index, REINDEX
+ CONCURRENTLY tended to produce a corrupted index. This
+ happened because sessions updating TOAST entries released
+ their ROW EXCLUSIVE locks immediately, rather
+ than holding them until transaction commit as all other updates do.
+ The fix is to make TOAST updates hold the table lock according to the
+ normal rule. Any existing corrupted indexes can be repaired by
+ reindexing again.
+
+
+
+
+
+
+ Fix incorrect plan creation for parallel single-child Append nodes
+ (David Rowley)
+
+
+
+ In some cases the Append would be simplified away when it should not
+ be, leading to wrong query results (duplicated rows).
+
+
+
+
+
+
+ Fix index-only scan plans for cases where not all index columns can
+ be returned (Tom Lane)
+
+
+
+ If an index has both returnable and non-returnable columns, and one
+ of the non-returnable columns is an expression using a table column
+ that appears in a returnable index column, then a query using that
+ expression could result in an index-only scan plan that attempts to
+ read the non-returnable column, instead of recomputing the
+ expression from the returnable column as intended. The
+ non-returnable column would read as NULL, resulting in wrong query
+ results.
+
+
+
+
+
+
+ Ensure that casting to an unspecified typmod generates a RelabelType
+ node rather than a length-coercion function call (Tom Lane)
+
+
+
+ While the coercion function should do the right thing (nothing),
+ this translation is undesirably inefficient.
+
+
+
+
+
+
+ Fix WAL replay failure when database consistency is reached exactly
+ at a WAL page boundary (Álvaro Herrera)
+
+
+
+
+
+
+ Fix startup of a physical replica to tolerate transaction ID
+ wraparound (Abhijit Menon-Sen, Tomas Vondra)
+
+
+
+ If a replica server is started while the set of active transactions
+ on the primary crosses a wraparound boundary (so that there are some
+ newer transactions with smaller XIDs than older ones), the replica
+ would fail with out-of-order XID insertion in
+ KnownAssignedXids. The replica would retry, but could never
+ get past that error.
+
+
+
+
+
+
+ Remove lexical limitations for SQL commands issued on a logical
+ replication connection (Tom Lane)
+
+
+
+ The walsender process would fail for a SQL command containing an
+ unquoted semicolon, or with dollar-quoted literals containing odd
+ numbers of single or double quote marks, or when the SQL command
+ starts with a comment. Moreover, faulty error recovery could lead
+ to unexpected errors in later commands too.
+
+
+
+
+
+
+ Fix possible loss of the commit timestamp for the last
+ subtransaction of a transaction (Alex Kingsborough, Kyotaro Horiguchi)
+
+
+
+
+
+
+ Be sure to fsync
+ the pg_logical/mappings subdirectory during
+ checkpoints (Nathan Bossart)
+
+
+
+ On some filesystems this oversight could lead to losing logical
+ rewrite status files after a system crash.
+
+
+
+
+
+
+ Build extended statistics for partitioned tables (Justin Pryzby)
+
+
+
+ A previous bug fix disabled building of extended statistics for
+ old-style inheritance trees, but it also prevented building them for
+ partitioned tables, which was an unnecessary restriction.
+ This change allows ANALYZE to compute values for
+ statistics objects for partitioned tables. (But note that
+ autovacuum does not process partitioned tables as such, so you must
+ periodically issue manual ANALYZE on the
+ partitioned table if you want to maintain such statistics.)
+
+
+
+
+
+
+ Ignore extended statistics for inheritance trees (Justin Pryzby)
+
+
+
+ Currently, extended statistics values are only computed locally for
+ each table, not for entire inheritance trees. However the values
+ were mistakenly consulted when planning queries across inheritance
+ trees, possibly resulting in worse-than-default estimates.
+
+
+
+
+
+
+ Disallow altering data type of a partitioned table's columns when
+ the partitioned table's row type is used as a composite type
+ elsewhere (Tom Lane)
+
+
+
+ This restriction has long existed for regular tables, but through an
+ oversight it was not checked for partitioned tables.
+
+
+
+
+
+
+ Disallow ALTER TABLE ... DROP NOT NULL for a
+ column that is part of a replica identity index (Haiying Tang, Hou
+ Zhijie)
+
+
+
+ The same prohibition already existed for primary key indexes.
+
+
+
+
+
+
+ Correctly update cached table state during ALTER TABLE ADD
+ PRIMARY KEY USING INDEX (Hou Zhijie)
+
+
+
+ Concurrent sessions failed to update their opinion of whether the
+ table has a primary key, possibly causing incorrect logical
+ replication behavior.
+
+
+
+
+
+
+ Correctly update cached table state when switching REPLICA
+ IDENTITY index (Tang Haiying, Hou Zhijie)
+
+
+
+ Concurrent sessions failed to update their opinion of which index is
+ the replica identity one, possibly causing incorrect logical
+ replication behavior.
+
+
+
+
+
+
+ Avoid leaking memory during REASSIGN OWNED BY
+ operations that reassign ownership of many objects (Justin Pryzby)
+
+
+
+
+
+
+ Fix display of cert authentication method's
+ options in pg_hba_file_rules view (Magnus
+ Hagander)
+
+
+
+ The cert authentication method implies
+ clientcert=verify-full, but the
+ pg_hba_file_rules view incorrectly reported
+ clientcert=verify-ca.
+
+
+
+
+
+
+ Fix display of whole-row variables appearing
+ in INSERT ... VALUES rules (Tom Lane)
+
+
+
+ A whole-row variable would be printed as var.*,
+ but that allows it to be expanded to individual columns when
+ the rule is reloaded, resulting in different semantics.
+ Attach an explicit cast to prevent that, as we do elsewhere.
+
+
+
+
+
+
+ Fix or remove some incorrect assertions (Simon Riggs, Michael
+ Paquier, Alexander Lakhin)
+
+
+
+ These errors should affect only debug builds, not production.
+
+
+
+
+
+
+ Fix race condition that could lead to failure to localize error
+ messages that are reported early in multi-threaded use
+ of libpq
+ or ecpglib (Tom Lane)
+
+
+
+
+
+
+ Avoid calling strerror
+ from libpq's PQcancel
+ function (Tom Lane)
+
+
+
+ PQcancel is supposed to be safe to call from a
+ signal handler, but strerror is not safe. The
+ faulty usage only occurred in the unlikely event of failure to
+ send the cancel message to the server, perhaps explaining the lack
+ of reports.
+
+
+
+
+
+
+ Make psql's \password
+ command default to setting the password
+ for CURRENT_USER, not the connection's original
+ user name (Tom Lane)
+
+
+
+ This agrees with the documented behavior, and avoids probable
+ permissions failure if SET ROLE or SET
+ SESSION AUTHORIZATION has been done since the session began.
+ To prevent confusion, the role name to be acted on is now
+ included in the password prompt.
+
+
+
+
+
+
+ In psql and some other client programs,
+ avoid trying to invoke gettext() from a
+ control-C signal handler (Tom Lane)
+
+
+
+ While no reported failures have been traced to this mistake, it seems
+ highly unlikely to be a safe thing to do.
+
+
+
+
+
+
+ Allow canceling the initial password prompt
+ in pg_receivewal
+ and pg_recvlogical (Tom Lane, Nathan
+ Bossart)
+
+
+
+ Previously it was impossible to terminate these programs via control-C
+ while they were prompting for a password.
+
+
+
+
+
+
+ Fix pg_dump's dump ordering for
+ user-defined casts (Tom Lane)
+
+
+
+ In rare cases, the output script might refer to a user-defined cast
+ before it had been created.
+
+
+
+
+
+
+ Fix pg_dump's
+ and modes to handle tables
+ containing both generated columns and dropped columns (Tom Lane)
+
+
+
+
+
+
+ Fix possible mis-reporting of errors
+ in pg_dump
+ and pg_basebackup (Tom Lane)
+
+
+
+ The previous code failed to check for errors from some kernel calls,
+ and could report the wrong errno values in other cases.
+
+
+
+
+
+
+ Fix results of index-only scans
+ on contrib/btree_gist indexes
+ on char(N) columns (Tom Lane)
+
+
+
+ Index-only scans returned column values with trailing spaces
+ removed, which is not the expected behavior. That happened because
+ that's how the data was stored in the index. This fix changes the
+ code to store char(N) values
+ with the expected amount of space padding.
+ The behavior of such an index will not change immediately unless
+ you REINDEX it; otherwise space-stripped values
+ will be gradually replaced over time during updates. Queries that
+ do not use index-only scan plans will be unaffected in any case.
+
+
+
+
+
+
+ Change configure to use
+ Python's sysconfig module, rather than
+ the deprecated distutils module, to
+ determine how to build PL/Python (Peter Eisentraut, Tom Lane, Andres
+ Freund)
+
+
+
+ With Python 3.10, this
+ avoids configure-time warnings
+ about distutils being deprecated and
+ scheduled for removal in Python 3.12. Presumably, once 3.12 is
+ out, configure --with-python would fail
+ altogether. This future-proofing does come at a
+ cost: sysconfig did not exist before
+ Python 2.7, nor before 3.2 in the Python 3 branch, so it is no
+ longer possible to build PL/Python against long-dead Python
+ versions.
+
+
+
+
+
+
+ Fix PL/Perl compile failure on Windows with Perl 5.28 and later
+ (Victor Wagner)
+
+
+
+
+
+
+ Fix PL/Python compile failure with Python 3.11 and later (Peter
+ Eisentraut)
+
+
+
+
+
+
+ Add support for building with Visual Studio 2022 (Hans Buschmann)
+
+
+
+
+
+
+ Allow the .bat wrapper scripts in our MSVC
+ build system to be called without first changing into their
+ directory (Anton Voloshin, Andrew Dunstan)
+
+
+
+
+
+
+
+
Release 12.9