From 4fada7def9ee386bd6c89266b4c9be53aa332b84 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sun, 5 Nov 2023 13:14:07 -0500 Subject: [PATCH] Release notes for 16.1, 15.5, 14.10, 13.13, 12.17, 11.22. --- doc/src/sgml/release-14.sgml | 1250 ++++++++++++++++++++++++++++++++++ 1 file changed, 1250 insertions(+) diff --git a/doc/src/sgml/release-14.sgml b/doc/src/sgml/release-14.sgml index f32f4d5f0d..352989e65a 100644 --- a/doc/src/sgml/release-14.sgml +++ b/doc/src/sgml/release-14.sgml @@ -1,6 +1,1256 @@ + + Release 14.10 + + + Release date: + 2023-11-09 + + + + This release contains a variety of fixes from 14.9. + For information about new features in major release 14, see + . + + + + Migration to Version 14.10 + + + A dump/restore is not required for those running 14.X. + + + + However, several mistakes have been discovered that could lead to + certain types of indexes yielding wrong search results or being + unnecessarily inefficient. It is advisable + to REINDEX potentially-affected indexes after + installing this update. See the first through fourth changelog + entries below. + + + + Also, if you are upgrading from a version earlier than 14.9, + see . + + + + + Changes + + + + + + + Fix misbehavior during recursive page split in GiST index build + (Heikki Linnakangas) + + + + Fix a case where the location of a page downlink was incorrectly + tracked, and introduce some logic to allow recovering from such + situations rather than silently doing the wrong thing. This error + could result in incorrect answers from subsequent index searches. + It may be advisable to reindex all GiST indexes after installing + this update. + + + + + + + Prevent de-duplication of btree index entries + for interval columns (Noah Misch) + + + + There are interval values that are distinguishable but + compare equal, for example 24:00:00 + and 1 day. This breaks assumptions made by btree + de-duplication, so interval columns need to be excluded + from de-duplication. This oversight can cause incorrect results + from index-only scans. Moreover, after + updating amcheck will report an error for + almost all such indexes. Users should reindex any btree indexes + on interval columns. + + + + + + + Process date values more sanely in + BRIN datetime_minmax_multi_ops indexes + (Tomas Vondra) + + + + The distance calculation for dates was backward, causing poor + decisions about which entries to merge. The index still produces + correct results, but is much less efficient than it should be. + Reindexing BRIN minmax_multi indexes + on date columns is advisable. + + + + + + + Process large timestamp and timestamptz + values more sanely in + BRIN datetime_minmax_multi_ops indexes + (Tomas Vondra) + + + + Infinities were mistakenly treated as having distance zero rather + than a large distance from other values, causing poor decisions + about which entries to merge. Also, finite-but-very-large values + (near the endpoints of the representable timestamp range) could + result in internal overflows, again causing poor decisions. The + index still produces correct results, but is much less efficient + than it should be. Reindexing BRIN minmax_multi + indexes on timestamp and timestamptz + columns is advisable if the column contains, or has contained, + infinities or large finite values. + + + + + + + Avoid calculation overflows in + BRIN interval_minmax_multi_ops indexes with + extreme interval values (Tomas Vondra) + + + + This bug might have caused unexpected failures while trying to + insert large interval values into such an index. + + + + + + + Fix partition step generation and runtime partition pruning for + hash-partitioned tables with multiple partition keys (David Rowley) + + + + Some cases involving an IS NULL condition on one + of the partition keys could result in a crash. + + + + + + + Correctly identify the target table in an + inherited UPDATE/DELETE/MERGE + even when the parent table is excluded by constraints (Amit Langote, + Tom Lane) + + + + If the initially-named table is excluded by constraints, but not all + its inheritance descendants are, the first non-excluded descendant + was identified as the primary target table. This would lead to + firing statement-level triggers associated with that table, rather + than the initially-named table as should happen. In v16, the same + oversight could also lead to invalid perminfoindex 0 in RTE + with relid NNNN errors. + + + + + + + Fix edge case in btree mark/restore processing of ScalarArrayOpExpr + clauses (Peter Geoghegan) + + + + When restoring an indexscan to a previously marked position, the + code could miss required setup steps if the scan had advanced + exactly to the end of the matches for a ScalarArrayOpExpr (that is, + an indexcol = ANY(ARRAY[])) clause. This could + result in missing some rows that should have been fetched. + + + + + + + Fix intra-query memory leak in Memoize execution + (Orlov Aleksej, David Rowley) + + + + + + + Fix intra-query memory leak when a set-returning function repeatedly + returns zero rows (Tom Lane) + + + + + + + Don't crash if cursor_to_xmlschema() is applied + to a non-data-returning Portal (Boyu Yang) + + + + + + + Throw the intended error if pgrowlocks() is + applied to a partitioned table (David Rowley) + + + + Previously, a not-on-point complaint only heap AM is + supported would be raised. + + + + + + + Handle invalid indexes more cleanly in assorted SQL functions + (Noah Misch) + + + + Report an error if pgstatindex(), + pgstatginindex(), + pgstathashindex(), + or pgstattuple() is applied to an invalid + index. If brin_desummarize_range(), + brin_summarize_new_values(), + brin_summarize_range(), + or gin_clean_pending_list() is applied to an + invalid index, do nothing except to report a debug-level message. + Formerly these functions attempted to process the index, and might + fail in strange ways depending on what the failed CREATE + INDEX had left behind. + + + + + + + Avoid premature memory allocation failure with long inputs + to to_tsvector() (Tom Lane) + + + + + + + Fix over-allocation of the constructed tsvector + in tsvectorrecv() (Denis Erokhin) + + + + If the incoming vector includes position data, the binary receive + function left wasted space (roughly equal to the size of the + position data) in the finished tsvector. In extreme + cases this could lead to maximum total lexeme length + exceeded failures for vectors that were under the length + limit when emitted. In any case it could lead to wasted space + on-disk. + + + + + + + Fix incorrect coding in gtsvector_picksplit() + (Alexander Lakhin) + + + + This could lead to poor page-split decisions in GiST indexes + on tsvector columns. + + + + + + + Improve checks for corrupt PGLZ compressed data (Flavien Guedez) + + + + + + + Fix COMMIT AND CHAIN/ROLLBACK AND + CHAIN to work properly when there is an unreleased + savepoint (Liu Xiang, Tom Lane) + + + + Instead of propagating the current transaction's properties to the + new transaction, they propagated some previous transaction's + properties. + + + + + + + In COPY FROM, fail cleanly when an unsupported + encoding conversion is needed (Tom Lane) + + + + Recent refactoring accidentally removed the intended error check for + this, such that it ended in cache lookup failed for function + 0 instead of a useful error message. + + + + + + + Avoid crash in EXPLAIN if a parameter marked to + be displayed by EXPLAIN has a NULL boot-time + value (Xing Guo, Aleksander Alekseev, Tom Lane) + + + + No built-in parameter fits this description, but an extension could + define such a parameter. + + + + + + + Ensure we have a snapshot while dropping ON COMMIT + DROP temp tables (Tom Lane) + + + + This prevents possible misbehavior if any catalog entries for the + temp tables have fields wide enough to require toasting (such as a + very complex CHECK condition). + + + + + + + Avoid improper response to shutdown signals in child processes + just forked by system() (Nathan Bossart) + + + + This fix avoids a race condition in which a child process that has + been forked off by system(), but hasn't yet + exec'd the intended child program, might receive and act on a signal + intended for the parent server process. That would lead to + duplicate cleanup actions being performed, which will not end well. + + + + + + + Cope with torn reads of pg_control in frontend + programs (Thomas Munro) + + + + On some file systems, reading pg_control may + not be an atomic action when the server concurrently writes that + file. This is detectable via a bad CRC. Retry a few times to see + if the file becomes valid before we report error. + + + + + + + Avoid torn reads of pg_control in relevant SQL + functions (Thomas Munro) + + + + Acquire the appropriate lock before + reading pg_control, to ensure we get a + consistent view of that file. + + + + + + + Avoid integer overflow when computing size of backend activity + string array (Jakub Wartak) + + + + On 64-bit machines we will allow values + of track_activity_query_size large enough to + cause 32-bit overflow when multiplied by the allowed number of + connections. The code actually allocating the per-backend local + array was careless about this though, and allocated the array + incorrectly. + + + + + + + Fix briefly showing inconsistent progress statistics + for ANALYZE on inherited tables + (Heikki Linnakangas) + + + + The block-level counters should be reset to zero at the same time we + update the current-relation field. + + + + + + + Fix the background writer to report any WAL writes it makes to the + statistics counters (Nazir Bilal Yavuz) + + + + + + + Track the dependencies of cached CALL statements, + and re-plan them when needed (Tom Lane) + + + + DDL commands, such as replacement of a function that has been + inlined into a CALL argument, can create the need + to re-plan a CALL that has been cached by + PL/pgSQL. That was not happening, leading to misbehavior or strange + errors such as cache lookup failed. + + + + + + + Track nesting depth correctly when + inspecting RECORD-type Vars from outer query levels + (Richard Guo) + + + + This oversight could lead to assertion failures, core dumps, + or bogus varno errors. + + + + + + + Track hash function and negator function dependencies of + ScalarArrayOpExpr plan nodes (David Rowley) + + + + In most cases this oversight was harmless, since these functions + would be unlikely to disappear while the node's original operator + remains present. + + + + + + + Fix error-handling bug in RECORD type cache management + (Thomas Munro) + + + + An out-of-memory error occurring at just the wrong point could leave + behind inconsistent state that would lead to an infinite loop. + + + + + + + Fix assertion failure when logical decoding is retried in the same + session after an error (Hou Zhijie) + + + + + + + Treat out-of-memory failures as fatal while reading WAL + (Michael Paquier) + + + + Previously this would be treated as a bogus-data condition, leading + to the conclusion that we'd reached the end of WAL, which is + incorrect and could lead to inconsistent WAL replay. + + + + + + + Fix possible recovery failure due to trying to allocate memory based + on a bogus WAL record length field (Thomas Munro, Michael Paquier) + + + + + + + Ensure that standby-mode WAL recovery reports an error when an + invalid page header is found (Yugo Nagata, Kyotaro Horiguchi) + + + + + + + Fix datatype size confusion in logical tape management + (Ranier Vilela) + + + + Integer overflow was possible on platforms where long is wider than + int, although it would take a multiple-terabyte temporary file to + cause a problem. + + + + + + + Avoid unintended close of syslogger process's stdin + (Heikki Linnakangas) + + + + + + + Avoid doing plan cache revalidation of utility statements + that do not receive interesting processing during parse analysis + (Tom Lane) + + + + Aside from saving a few cycles, this prevents failure after a cache + invalidation for statements that must not set a snapshot, such + as SET TRANSACTION ISOLATION LEVEL. + + + + + + + Keep by-reference attmissingval values in + a long-lived context while they are being used (Andrew Dunstan) + + + + This avoids possible use of dangling pointers when a tuple slot + outlives the tuple descriptor with which its value was constructed. + + + + + + + Recalculate the effective value of search_path + after ALTER ROLE (Jeff Davis) + + + + This ensures that after renaming a role, the meaning of the special + string $user is re-determined. + + + + + + + Fix could not duplicate handle error occurring on + Windows when min_dynamic_shared_memory is set + above zero (Thomas Munro) + + + + + + + Fix order of operations in GenericXLogFinish + (Jeff Davis) + + + + This code violated the conditions required for crash safety by + writing WAL before marking changed buffers dirty. No core code uses + this function, but extensions do (contrib/bloom + does, for example). + + + + + + + Remove incorrect assertion in PL/Python exception handling + (Alexander Lakhin) + + + + + + + Fix pg_restore so that selective restores + will include both table-level and column-level ACLs for selected + tables (Euler Taveira, Tom Lane) + + + + Formerly, only the table-level ACL would get restored if both types + were present. + + + + + + + Add logic to pg_upgrade to check for use + of abstime, reltime, + and tinterval data types (Álvaro Herrera) + + + + These obsolete data types were removed + in PostgreSQL version 12, so check to + make sure they aren't present in an older database before claiming + it can be upgraded. + + + + + + + Avoid generating invalid temporary slot names + in pg_basebackup (Jelte Fennema) + + + + This has only been seen to occur when the server connection runs + through pgbouncer. + + + + + + + Avoid false too many client connections errors + in pgbench on Windows (Noah Misch) + + + + + + + In contrib/amcheck, do not report interrupted + page deletion as corruption (Noah Misch) + + + + This fix prevents false-positive reports of the first child + of leftmost target page is not leftmost of its + level, block NNNN is not leftmost + or left link/right link pair in index XXXX not in + agreement. They appeared + if amcheck ran after an unfinished btree + index page deletion and before VACUUM had cleaned + things up. + + + + + + + Fix failure of contrib/btree_gin indexes + on interval columns, + when an indexscan using the < + or <= operator is performed (Dean Rasheed) + + + + Such an indexscan failed to return all the entries it should. + + + + + + + Add support for LLVM 16 and 17 (Thomas Munro, Dmitry Dolgov) + + + + + + + Suppress assorted build-time warnings on + recent macOS (Tom Lane) + + + + Xcode 15 (released + with macOS Sonoma) changed the linker's + behavior in a way that causes many duplicate-library warnings while + building PostgreSQL. These were + harmless, but they're annoying so avoid citing the same libraries + twice. Also remove use of the linker switch, which apparently has been a no-op + for a long time, and is now actively complained of. + + + + + + + When building contrib/unaccent's rules file, + fall back to using python + if --with-python was not given and make + variable PYTHON was not set (Japin Li) + + + + + + + Remove PHOT (Phoenix Islands Time) from the + default timezone abbreviations list (Tom Lane) + + + + Presence of this abbreviation in the default list can cause failures + on recent Debian and Ubuntu releases, as they no longer install the + underlying tzdb entry by default. Since this is a made-up + abbreviation for a zone with a total human population of about two + dozen, it seems unlikely that anyone will miss it. If someone does, + they can put it back via a custom abbreviations file. + + + + + + + + Release 14.9