diff --git a/doc/src/sgml/release-14.sgml b/doc/src/sgml/release-14.sgml
index 0c76ddd2c95..82f961d2281 100644
--- a/doc/src/sgml/release-14.sgml
+++ b/doc/src/sgml/release-14.sgml
@@ -1,6 +1,1213 @@
+
+ Release 14.2
+
+
+ Release date:
+ 2022-02-10
+
+
+
+ This release contains a variety of fixes from 14.1.
+ For information about new features in major release 14, see
+ .
+
+
+
+ Migration to Version 14.2
+
+
+ A dump/restore is not required for those running 14.X.
+
+
+
+ However, some bugs have been found that may have resulted in
+ corrupted indexes, as explained in the first two changelog entries.
+ If any of those cases apply to you, it's recommended to reindex
+ possibly-affected indexes after updating.
+
+
+
+ Also, if you are upgrading from a version earlier than 14.1,
+ see .
+
+
+
+
+ Changes
+
+
+
+
+
+
+ Fix corruption of HOT chains when a RECENTLY_DEAD tuple changes
+ state to fully DEAD during page pruning (Andres Freund)
+
+
+
+ This happens when the last transaction that could see
+ the tuple ends while the page is being pruned. It was then possible
+ to remove a tuple that is pointed to by a redirect item elsewhere on
+ the page. While that causes no immediate problem, when the item slot
+ is re-used by some new tuple, that tuple would be thought to be part
+ of the pre-existing HOT chain, creating a form of index corruption.
+ If this seems to have affected a table, REINDEX
+ should repair the damage.
+
+
+
+
+
+
+ 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 crash in EvalPlanQual rechecks for tables with a mix of local
+ and foreign partitions (Etsuro Fujita)
+
+
+
+
+
+
+ Fix dangling pointer in COPY TO
+ (Bharath Rupireddy)
+
+
+
+ This oversight could cause an incorrect error message or a crash
+ after an error in COPY.
+
+
+
+
+
+
+ Avoid null-pointer crash in ALTER STATISTICS
+ when the statistics object is dropped concurrently (Tomas Vondra)
+
+
+
+
+
+
+ Correctly handle alignment padding when extracting a range from a
+ multirange (Alexander Korotkov)
+
+
+
+ This error could cause crashes when handling multiranges over
+ variable-length data types.
+
+
+
+
+
+
+ Fix over-optimistic use of hashing for
+ anonymous RECORD data types (Tom Lane)
+
+
+
+ This prevents some cases of could not identify a hash
+ function for type record
errors.
+
+
+
+
+
+
+ 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.
+
+
+
+
+
+
+ Fix Memoize plan nodes to handle subplans that use parameters
+ coming from above the Memoize (David Rowley)
+
+
+
+
+
+
+ Fix Memoize plan nodes to work correctly with non-hashable join
+ operators (David Rowley)
+
+
+
+
+
+
+ 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 checking of anycompatible-family data type matches
+ (Tom Lane)
+
+
+
+ In some cases the parser would think that a function or operator
+ with anycompatible-family polymorphic parameters
+ matches a set of arguments that it really shouldn't match. In
+ reported cases, that led to matching more than one operator to a
+ call, leading to ambiguous-operator errors; but a failure later on
+ is also possible.
+
+
+
+
+
+
+ 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.
+
+
+
+
+
+
+ In logical replication, avoid double transmission of a child table's
+ data (Hou Zhijie)
+
+
+
+ If a publication includes both child and parent tables, and has
+ the publish_via_partition_root option set,
+ subscribers uselessly initiated synchronization on both child and
+ parent tables. Ensure that only the parent table is synchronized in
+ such cases.
+
+
+
+
+
+
+ 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.
+
+
+
+
+
+
+ Ensure that replication origin timestamp is set while replicating
+ a ROLLBACK PREPARED operation (Masahiko Sawada)
+
+
+
+
+
+
+ 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.
+ If you have created statistics objects for partitioned tables, you
+ may wish to explicitly ANALYZE those tables after
+ installing this update, rather than waiting for auto-analyze to do it.
+
+
+
+
+
+
+ Ignore extended statistics for inheritance trees (Justin Pryzby)
+
+
+
+ A previous bug fix disabled building of extended statistics for
+ old-style inheritance trees, but any existing statistics data was
+ not removed, and that data would become more and more out-of-date
+ over time. Adjust the planner to ignore such data. Extended
+ statistics for the individual child tables are still built and used,
+ however.
+
+
+
+
+
+
+ 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.
+
+
+
+
+
+
+ Fix failure of SP-GiST indexes when indexed column's data type is
+ binary-compatible with the declared input type of the operator class
+ (Tom Lane)
+
+
+
+ Such cases should work, but failed with compress method must
+ be defined when leaf type is different from input type
.
+
+
+
+
+
+
+ Allow parallel vacuuming and concurrent index building to be ignored
+ while computing oldest xmin (Masahiko Sawada)
+
+
+
+ Non-parallelized instances of these operations were already ignored,
+ but the logic did not work for parallelized cases. Holding back the
+ xmin horizon has undesirable effects such as delaying vacuum
+ cleanup.
+
+
+
+
+
+
+ Fix memory leak when updating expression indexes (Peter Geoghegan)
+
+
+
+ An UPDATE affecting many rows could consume
+ significant amounts of memory.
+
+
+
+
+
+
+ Avoid leaking memory during REASSIGN OWNED BY
+ operations that reassign ownership of many objects (Justin Pryzby)
+
+
+
+
+
+
+ Improve performance of walsenders sending logical changes by
+ avoiding unnecessary cache accesses (Hou Zhijie)
+
+
+
+
+
+
+ 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.
+
+
+
+
+
+
+ Ensure that the session targeted
+ by pg_log_backend_memory_contexts() sends its
+ results only to the server's log (Fujii Masao)
+
+
+
+ Previously, a sufficiently high setting
+ of client_min_messages could result in the log
+ message also being sent to the connected client. Since that client
+ hadn't requested it, that would be surprising (and possibly a wire
+ protocol violation).
+
+
+
+
+
+
+ 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.
+
+
+
+
+
+
+ When reverse-listing a SQL-standard function body, display function
+ parameters appropriately within INSERT ... SELECT
+ (Tom Lane)
+
+
+
+ Previously, they'd come out
+ as $N even when the
+ parameter had a name.
+
+
+
+
+
+
+ Fix one-byte buffer overrun when applying Unicode string
+ normalization to an empty string (Michael Paquier)
+
+
+
+ The practical impact of this is limited thanks to alignment
+ considerations; but in debug builds, a warning was raised.
+
+
+
+
+
+
+ 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 reduce confusion, the role name to be acted on is now always
+ included in the password prompt.
+
+
+
+
+
+
+ Fix psql \d command's
+ query for identifying parent triggers (Justin Pryzby)
+
+
+
+ The previous coding failed with more than one row returned by
+ a subquery used as an expression
if a partition had triggers
+ and there were unrelated statement-level triggers of the same name
+ on some parent partitioned table.
+
+
+
+
+
+
+ Make psql's \d command
+ sort a table's extended statistics objects by name not OID (Justin
+ Pryzby)
+
+
+
+
+
+
+ Fix psql's tab-completion of label values
+ for enum types (Tom Lane)
+
+
+
+
+
+
+ Fix failures on Windows when using the terminal as data source
+ or destination (Dmitry Koval, Juan José SantamarÃa Flecha, Michael
+ Paquier)
+
+
+
+ This affects psql's
+ \copy command, as well
+ as pg_recvlogical with
+ .
+
+
+
+
+
+
+ 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 happens because
+ that's how it's stored in the index. This fix changes the logic to
+ store char(N) values with
+ the expected amount of space padding. The behavior of the 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.
+
+
+
+
+
+
+ Fix edge cases in postgres_fdw's handling of
+ asynchronous queries (Etsuro Fujita)
+
+
+
+ These errors could lead to crashes or incorrect results when
+ attempting to parallelize scans of foreign tables.
+
+
+
+
+
+
+ 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.
+
+
+
+
+
+
+ Re-allow cross-compilation
+ without OpenSSL (Tom Lane)
+
+
+
+ configure should assume
+ that /dev/urandom will be available on the
+ target system, but it failed instead.
+
+
+
+
+
+
+ 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 14.1