From 1272af45d6230803eb1cf03a84b98fd6c4173a9f Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 5 May 2024 13:31:09 -0400 Subject: [PATCH] Release notes for 16.3, 15.7, 14.12, 13.15, 12.19. --- doc/src/sgml/release-12.sgml | 806 +++++++++++++++++++++++++++++++++++ 1 file changed, 806 insertions(+) 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/pgSQL CASE + 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