diff --git a/doc/src/sgml/release-12.sgml b/doc/src/sgml/release-12.sgml
index 6ca12bc88a..5294289a48 100644
--- a/doc/src/sgml/release-12.sgml
+++ b/doc/src/sgml/release-12.sgml
@@ -1,6 +1,812 @@
+
+ Release 12.19
+
+
+ Release date:
+ 2024-05-09
+
+
+
+ This release contains a variety of fixes from 12.18.
+ For information about new features in major release 12, see
+ .
+
+
+
+ The PostgreSQL community will stop
+ releasing updates for the 12.X release series in November 2024.
+ Users are encouraged to update to a newer release branch soon.
+
+
+
+ Migration to Version 12.19
+
+
+ A dump/restore is not required for those running 12.X.
+
+
+
+ However, if you are upgrading from a version earlier than 12.18,
+ see .
+
+
+
+
+ Changes
+
+
+
+
+
+
+ Fix INSERT from
+ multiple VALUES rows into a target column that is
+ a domain over an array or composite type (Tom Lane)
+
+
+
+ Such cases would either fail with surprising complaints about
+ mismatched datatypes, or insert unexpected coercions that could lead
+ to odd results.
+
+
+
+
+
+
+ Fix incorrect pruning of NULL partition when a table is partitioned
+ on a boolean column and the query has a boolean IS
+ NOT clause (David Rowley)
+
+
+
+ A NULL value satisfies a clause such
+ as boolcol IS NOT
+ FALSE, so pruning away a partition containing NULLs
+ yielded incorrect answers.
+
+
+
+
+
+
+ Make ALTER FOREIGN TABLE SET SCHEMA move any
+ owned sequences into the new schema (Tom Lane)
+
+
+
+ Moving a regular table to a new schema causes any sequences owned by
+ the table to be moved to that schema too (along with indexes and
+ constraints). This was overlooked for foreign tables, however.
+
+
+
+
+
+
+ Fix EXPLAIN's counting of heap pages accessed by
+ a bitmap heap scan (Melanie Plageman)
+
+
+
+ Previously, heap pages that contain no visible tuples were not
+ counted; but it seems more consistent to count all pages returned by
+ the bitmap index scan.
+
+
+
+
+
+
+ Avoid deadlock during removal of orphaned temporary tables
+ (Mikhail Zhilin)
+
+
+
+ If the session that creates a temporary table crashes without
+ removing the table, autovacuum will eventually try to remove the
+ orphaned table. However, an incoming session that's been assigned
+ the same temporary namespace will do that too. If a temporary table
+ has a dependency (such as an owned sequence) then a deadlock could
+ result between these two cleanup attempts.
+
+
+
+
+
+
+ Avoid race condition while examining per-relation frozen-XID values
+ (Noah Misch)
+
+
+
+ VACUUM's computation of per-database frozen-XID
+ values from per-relation values could get confused by a concurrent
+ update of those values by another VACUUM.
+
+
+
+
+
+
+ Disallow converting a table to a view within an outer SQL command
+ that is using that table (Tom Lane)
+
+
+
+ This avoids possible crashes.
+
+
+
+
+
+
+ Ensure that join conditions generated from equivalence classes are
+ applied at the correct plan level (Tom Lane)
+
+
+
+ In versions before PostgreSQL 16, it was
+ possible for generated conditions to be evaluated below outer joins
+ when they should be evaluated above (after) the outer join, leading
+ to incorrect query results. All versions have a similar hazard when
+ considering joins to UNION ALL trees that have
+ constant outputs for the join column in
+ some SELECT arms.
+
+
+
+
+
+
+ Avoid unnecessary use of moving-aggregate mode with a non-moving
+ window frame (Vallimaharajan G)
+
+
+
+ When a plain aggregate is used as a window function, and the window
+ frame start is specified as UNBOUNDED PRECEDING,
+ the frame's head cannot move so we do not need to use the special
+ (and more expensive) moving-aggregate mode. This optimization was
+ intended all along, but due to a coding error it never triggered.
+
+
+
+
+
+
+ Avoid use of already-freed data while planning partition-wise joins
+ under GEQO (Tom Lane)
+
+
+
+ This would typically end in a crash or unexpected error message.
+
+
+
+
+
+
+ Fix incorrectly-reported statistics kind codes in requested
+ statistics kind X is not yet
+ built error messages (David Rowley)
+
+
+
+
+
+
+ Be more careful with RECORD-returning functions
+ in FROM (Tom Lane)
+
+
+
+ The output columns of such a function call must be defined by
+ an AS clause that specifies the column names and
+ data types. If the actual function output value doesn't match that,
+ an error is supposed to be thrown at runtime. However, some code
+ paths would examine the actual value prematurely, and potentially
+ issue strange errors or suffer assertion failures if it doesn't
+ match expectations.
+
+
+
+
+
+
+ Fix confusion about the return rowtype of SQL-language procedures
+ (Tom Lane)
+
+
+
+ A procedure implemented in SQL language that returns a single
+ composite-type column would cause an assertion failure or core dump.
+
+
+
+
+
+
+ Add protective stack depth checks to some recursive functions
+ (Egor Chindyaskin)
+
+
+
+
+
+
+ Detect integer overflow when adding or subtracting
+ an interval to/from a timestamp
+ (Joseph Koshakow)
+
+
+
+ Some cases that should cause an out-of-range error produced an
+ incorrect result instead.
+
+
+
+
+
+
+ Avoid race condition in pg_get_expr()
+ (Tom Lane)
+
+
+
+ If the relation referenced by the argument is dropped concurrently,
+ the function's intention is to return NULL, but sometimes it failed
+ instead.
+
+
+
+
+
+
+ Fix detection of old transaction IDs in XID status functions
+ (Karina Litskevich)
+
+
+
+ Transaction IDs more than 231
+ transactions in the past could be misidentified as recent,
+ leading to misbehavior of pg_xact_status()
+ or txid_status().
+
+
+
+
+
+
+ Fix file descriptor leakage when an error is thrown while waiting
+ in WaitEventSetWait (Etsuro Fujita)
+
+
+
+
+
+
+ Throw an error if an index is accessed while it is being reindexed
+ (Tom Lane)
+
+
+
+ Previously this was just an assertion check, but promote it into a
+ regular runtime error. This will provide a more on-point error
+ message when reindexing a user-defined index expression that
+ attempts to access its own table.
+
+
+
+
+
+
+ Ensure that index-only scans on name columns return a
+ fully-padded value (David Rowley)
+
+
+
+ The value physically stored in the index is truncated, and
+ previously a pointer to that value was returned to callers. This
+ provoked complaints when testing under valgrind. In theory it could
+ result in crashes, though none have been reported.
+
+
+
+
+
+
+ Fix crash with DSM allocations larger than 4GB (Heikki Linnakangas)
+
+
+
+
+
+
+ Disconnect if a new server session's client socket cannot be put
+ into non-blocking mode (Heikki Linnakangas)
+
+
+
+ It was once theoretically possible for us to operate with a socket
+ that's in blocking mode; but that hasn't worked fully in a long
+ time, so fail at connection start rather than misbehave later.
+
+
+
+
+
+
+ Fix inadequate error reporting
+ with OpenSSL 3.0.0 and later (Heikki
+ Linnakangas, Tom Lane)
+
+
+
+ System-reported errors passed through by OpenSSL were reported with
+ a numeric error code rather than anything readable.
+
+
+
+
+
+
+ Avoid concurrent calls to bindtextdomain()
+ in libpq
+ and ecpglib (Tom Lane)
+
+
+
+ Although GNU gettext's implementation
+ seems to be fine with concurrent calls, the version available on
+ Windows is not.
+
+
+
+
+
+
+ Fix crash in ecpg's preprocessor if
+ the program tries to redefine a macro that was defined on the
+ preprocessor command line (Tom Lane)
+
+
+
+
+
+
+ In ecpg, avoid issuing
+ false unsupported feature will be passed to server
+ warnings (Tom Lane)
+
+
+
+
+
+
+ Ensure that the string result
+ of ecpg's intoasc()
+ function is correctly zero-terminated (Oleg Tselebrovskiy)
+
+
+
+
+
+
+ Fix pg_dumpall so that role comments, if
+ present, will be dumped regardless of the setting
+ of (Daniel Gustafsson,
+ Álvaro Herrera)
+
+
+
+
+
+
+ Fix PL/pgSQL's parsing of single-line
+ comments (---style comments) following
+ expressions (Erik Wienhold, Tom Lane)
+
+
+
+ This mistake caused parse errors if such a comment followed
+ a WHEN expression in
+ a PL/pgSQLCASE
+ statement.
+
+
+
+
+
+
+ In contrib/amcheck, don't report false match
+ failures due to short- versus long-header values (Andrey Borodin,
+ Michael Zhilin)
+
+
+
+ A variable-length datum in a heap tuple or index tuple could have
+ either a short or a long header, depending on compression parameters
+ that applied when it was made. Treat these cases as equivalent
+ rather than complaining if there's a difference.
+
+
+
+
+
+
+ In contrib/postgres_fdw, avoid emitting
+ requests to sort by a constant (David Rowley)
+
+
+
+ This could occur in cases involving UNION ALL
+ with constant-emitting subqueries. Sorting by a constant is useless
+ of course, but it also risks being misinterpreted by the remote
+ server, leading to ORDER BY
+ position N is not in select list
+ errors.
+
+
+
+
+
+
+ Make contrib/postgres_fdw set the remote
+ session's time zone to GMT
+ not UTC (Tom Lane)
+
+
+
+ This should have the same results for practical purposes.
+ However, GMT is recognized by hard-wired code in
+ the server, while UTC is looked up in the
+ timezone database. So the old code could fail in the unlikely event
+ that the remote server's timezone database is missing entries.
+
+
+
+
+
+
+ In contrib/xml2, avoid use of library functions
+ that have been deprecated in recent versions
+ of libxml2 (Dmitry Koval)
+
+
+
+
+
+
+ Fix incompatibility with LLVM 18 (Thomas Munro, Dmitry Dolgov)
+
+
+
+
+
+
+ Allow make check to work with
+ the musl C library (Thomas Munro, Bruce
+ Momjian, Tom Lane)
+
+
+
+
+
+
+
+
Release 12.18