From 293913568e6a7a86fd1479e1cff8e2ecb58d6568 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 13 Apr 2024 15:44:03 +0200 Subject: Adding upstream version 16.2. Signed-off-by: Daniel Baumann --- doc/src/sgml/html/release-16-1.html | 466 ++++++++++++++++++++++++++++++++++++ 1 file changed, 466 insertions(+) create mode 100644 doc/src/sgml/html/release-16-1.html (limited to 'doc/src/sgml/html/release-16-1.html') diff --git a/doc/src/sgml/html/release-16-1.html b/doc/src/sgml/html/release-16-1.html new file mode 100644 index 0000000..4d0163b --- /dev/null +++ b/doc/src/sgml/html/release-16-1.html @@ -0,0 +1,466 @@ + +E.2. Release 16.1

E.2. Release 16.1 #

Release date: 2023-11-09

+ This release contains a variety of fixes from 16.0. + For information about new features in major release 16, see + Section E.3. +

E.2.1. Migration to Version 16.1 #

+ A dump/restore is not required for those running 16.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 fourth through seventh changelog + entries below. +

E.2.2. Changes #

  • + Fix handling of unknown-type arguments + in DISTINCT "any" aggregate + functions (Tom Lane) +

    + This error led to a text-type value being interpreted + as an unknown-type value (that is, a zero-terminated + string) at runtime. This could result in disclosure of server + memory following the text value. +

    + The PostgreSQL Project thanks Jingzhou Fu + for reporting this problem. + (CVE-2023-5868) +

  • + Detect integer overflow while computing new array dimensions + (Tom Lane) +

    + When assigning new elements to array subscripts that are outside the + current array bounds, an undetected integer overflow could occur in + edge cases. Memory stomps that are potentially exploitable for + arbitrary code execution are possible, and so is disclosure of + server memory. +

    + The PostgreSQL Project thanks Pedro + Gallegos for reporting this problem. + (CVE-2023-5869) +

  • + Prevent the pg_signal_backend role from + signalling background workers and autovacuum processes + (Noah Misch, Jelte Fennema-Nio) +

    + The documentation says that pg_signal_backend + cannot issue signals to superuser-owned processes. It was able to + signal these background processes, though, because they advertise a + role OID of zero. Treat that as indicating superuser ownership. + The security implications of cancelling one of these process types + are fairly small so far as the core code goes (we'll just start + another one), but extensions might add background workers that are + more vulnerable. +

    + Also ensure that the is_superuser parameter is + set correctly in such processes. No specific security consequences + are known for that oversight, but it might be significant for some + extensions. +

    + The PostgreSQL Project thanks + Hemanth Sandrana and Mahendrakar Srinivasarao + for reporting this problem. + (CVE-2023-5870) +

  • + 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. +

  • + Fix inconsistent rechecking of concurrently-updated rows + during MERGE (Dean Rasheed) +

    + In READ COMMITTED mode, an update that finds that + its target row was just updated by a concurrent transaction will + recheck the query's WHERE conditions on the + updated row. MERGE failed to ensure that the + proper rows of other joined tables were used during this recheck, + possibly resulting in incorrect decisions about whether the + newly-updated row should be updated again + by MERGE. +

  • + 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) +

  • + Fix improper sharing of origin filter condition across + successive pg_logical_slot_get_changes() calls + (Hou Zhijie) +

    + The origin condition set by one call of this function would be + re-used by later calls that did not specify the origin argument. + This was not intended. +

  • + 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. +

  • + Improve checks for corrupt PGLZ compressed data (Flavien Guedez) +

  • + Fix ALTER SUBSCRIPTION so that a commanded change + in the run_as_owner option is actually applied + (Hou Zhijie) +

  • + Fix bulk table insertion into partitioned tables (Andres Freund) +

    + Improper sharing of insertion state across partitions could result + in failures during COPY FROM, typically + manifesting as could not read block NNNN in file XXXX: read + only 0 of 8192 bytes errors. +

  • + In COPY FROM, avoid evaluating column default + values that will not be needed by the command (Laurenz Albe) +

    + This avoids a possible error if the default value isn't actually + valid for the column, or if the default's expression would fail in + the current execution context. Such edge cases sometimes arise + while restoring dumps, for example. Previous releases did not fail + in this situation, so prevent v16 from doing so. +

  • + 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. +

  • + Fix could not find pathkey item to sort errors + occurring while planning aggregate functions with ORDER + BY or DISTINCT options (David Rowley) +

  • + 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) +

  • + Fix confusion about forced-flush behavior + in pgstat_report_wal() + (Ryoga Yoshida, Michael Paquier) +

    + This could result in some statistics about WAL I/O being forgotten + in a shutdown. +

  • + Fix statistics tracking of temporary-table extensions (Karina + Litskevich, Andres Freund) +

    + These were counted as normal-table writes when they should be + counted as temp-table writes. +

  • + When track_io_timing is enabled, include the + time taken by relation extension operations as write time + (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. +

  • + Avoid a possible pfree-a-NULL-pointer crash after an error in + OpenSSL connection setup (Sergey Shinderuk) +

  • + 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. +

  • + 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) +

  • + 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_dump to dump the + new run_as_owner option of subscriptions + (Philip Warner) +

    + Due to this oversight, subscriptions would always be restored + with run_as_owner set + to false, which is not equivalent to their + behavior in pre-v16 releases. +

  • + 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 false too many client connections errors + in pgbench on Windows (Noah Misch) +

  • + Fix vacuumdb's handling of + multiple -N switches (Nathan Bossart, Kuwamura + Masaki) +

    + Multiple -N switches should exclude tables + in multiple schemas, but in fact excluded nothing due to faulty + construction of a generated query. +

  • + Fix vacuumdb to honor + its --buffer-usage-limit option in analyze-only + mode (Ryoga Yoshida, David Rowley) +

  • + 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 -multiply_defined + suppress 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. +

\ No newline at end of file -- cgit v1.2.3