????
Current Path : C:/opt/pgsql/doc/postgresql/html/ |
Current File : C:/opt/pgsql/doc/postgresql/html/release-16-1.html |
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>E.3. Release 16.1</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot" /><link rel="prev" href="release-16-2.html" title="E.2. Release 16.2" /><link rel="next" href="release-16.html" title="E.4. Release 16" /></head><body id="docContent" class="container-fluid col-10"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">E.3. Release 16.1</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="release-16-2.html" title="E.2. Release 16.2">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="release.html" title="Appendix E. Release Notes">Up</a></td><th width="60%" align="center">Appendix E. Release Notes</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 16.3 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="release-16.html" title="E.4. Release 16">Next</a></td></tr></table><hr /></div><div class="sect1" id="RELEASE-16-1"><div class="titlepage"><div><div><h2 class="title" style="clear: both">E.3. Release 16.1 <a href="#RELEASE-16-1" class="id_link">#</a></h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="sect2"><a href="release-16-1.html#RELEASE-16-1-MIGRATION">E.3.1. Migration to Version 16.1</a></span></dt><dt><span class="sect2"><a href="release-16-1.html#RELEASE-16-1-CHANGES">E.3.2. Changes</a></span></dt></dl></div><p><strong>Release date: </strong>2023-11-09</p><p> This release contains a variety of fixes from 16.0. For information about new features in major release 16, see <a class="xref" href="release-16.html" title="E.4. Release 16">Section E.4</a>. </p><div class="sect2" id="RELEASE-16-1-MIGRATION"><div class="titlepage"><div><div><h3 class="title">E.3.1. Migration to Version 16.1 <a href="#RELEASE-16-1-MIGRATION" class="id_link">#</a></h3></div></div></div><p> A dump/restore is not required for those running 16.X. </p><p> 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 <code class="command">REINDEX</code> potentially-affected indexes after installing this update. See the fourth through seventh changelog entries below. </p></div><div class="sect2" id="RELEASE-16-1-CHANGES"><div class="titlepage"><div><div><h3 class="title">E.3.2. Changes <a href="#RELEASE-16-1-CHANGES" class="id_link">#</a></h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> Fix handling of unknown-type arguments in <code class="literal">DISTINCT</code> <code class="type">"any"</code> aggregate functions (Tom Lane) </p><p> This error led to a <code class="type">text</code>-type value being interpreted as an <code class="type">unknown</code>-type value (that is, a zero-terminated string) at runtime. This could result in disclosure of server memory following the <code class="type">text</code> value. </p><p> The <span class="productname">PostgreSQL</span> Project thanks Jingzhou Fu for reporting this problem. (CVE-2023-5868) </p></li><li class="listitem"><p> Detect integer overflow while computing new array dimensions (Tom Lane) </p><p> 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. </p><p> The <span class="productname">PostgreSQL</span> Project thanks Pedro Gallegos for reporting this problem. (CVE-2023-5869) </p></li><li class="listitem"><p> Prevent the <code class="literal">pg_signal_backend</code> role from signalling background workers and autovacuum processes (Noah Misch, Jelte Fennema-Nio) </p><p> The documentation says that <code class="literal">pg_signal_backend</code> 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. </p><p> Also ensure that the <code class="varname">is_superuser</code> parameter is set correctly in such processes. No specific security consequences are known for that oversight, but it might be significant for some extensions. </p><p> The <span class="productname">PostgreSQL</span> Project thanks Hemanth Sandrana and Mahendrakar Srinivasarao for reporting this problem. (CVE-2023-5870) </p></li><li class="listitem"><p> Fix misbehavior during recursive page split in GiST index build (Heikki Linnakangas) </p><p> 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. </p></li><li class="listitem"><p> Prevent de-duplication of btree index entries for <code class="type">interval</code> columns (Noah Misch) </p><p> There are <code class="type">interval</code> values that are distinguishable but compare equal, for example <code class="literal">24:00:00</code> and <code class="literal">1 day</code>. This breaks assumptions made by btree de-duplication, so <code class="type">interval</code> columns need to be excluded from de-duplication. This oversight can cause incorrect results from index-only scans. Moreover, after updating <span class="application">amcheck</span> will report an error for almost all such indexes. Users should reindex any btree indexes on <code class="type">interval</code> columns. </p></li><li class="listitem"><p> Process <code class="type">date</code> values more sanely in BRIN <code class="literal">datetime_minmax_multi_ops</code> indexes (Tomas Vondra) </p><p> 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 <code class="literal">minmax_multi</code> indexes on <code class="type">date</code> columns is advisable. </p></li><li class="listitem"><p> Process large <code class="type">timestamp</code> and <code class="type">timestamptz</code> values more sanely in BRIN <code class="literal">datetime_minmax_multi_ops</code> indexes (Tomas Vondra) </p><p> 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 <code class="literal">minmax_multi</code> indexes on <code class="type">timestamp</code> and <code class="type">timestamptz</code> columns is advisable if the column contains, or has contained, infinities or large finite values. </p></li><li class="listitem"><p> Avoid calculation overflows in BRIN <code class="literal">interval_minmax_multi_ops</code> indexes with extreme interval values (Tomas Vondra) </p><p> This bug might have caused unexpected failures while trying to insert large interval values into such an index. </p></li><li class="listitem"><p> Fix partition step generation and runtime partition pruning for hash-partitioned tables with multiple partition keys (David Rowley) </p><p> Some cases involving an <code class="literal">IS NULL</code> condition on one of the partition keys could result in a crash. </p></li><li class="listitem"><p> Fix inconsistent rechecking of concurrently-updated rows during <code class="command">MERGE</code> (Dean Rasheed) </p><p> In <code class="literal">READ COMMITTED</code> mode, an update that finds that its target row was just updated by a concurrent transaction will recheck the query's <code class="literal">WHERE</code> conditions on the updated row. <code class="command">MERGE</code> 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 <code class="command">MERGE</code>. </p></li><li class="listitem"><p> Correctly identify the target table in an inherited <code class="command">UPDATE</code>/<code class="command">DELETE</code>/<code class="command">MERGE</code> even when the parent table is excluded by constraints (Amit Langote, Tom Lane) </p><p> 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 <span class="quote">“<span class="quote">invalid perminfoindex 0 in RTE with relid NNNN</span>”</span> errors. </p></li><li class="listitem"><p> Fix edge case in btree mark/restore processing of ScalarArrayOpExpr clauses (Peter Geoghegan) </p><p> 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 <code class="literal">indexcol = ANY(ARRAY[])</code>) clause. This could result in missing some rows that should have been fetched. </p></li><li class="listitem"><p> Fix intra-query memory leak in Memoize execution (Orlov Aleksej, David Rowley) </p></li><li class="listitem"><p> Fix intra-query memory leak when a set-returning function repeatedly returns zero rows (Tom Lane) </p></li><li class="listitem"><p> Don't crash if <code class="function">cursor_to_xmlschema()</code> is applied to a non-data-returning Portal (Boyu Yang) </p></li><li class="listitem"><p> Fix improper sharing of origin filter condition across successive <code class="function">pg_logical_slot_get_changes()</code> calls (Hou Zhijie) </p><p> 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. </p></li><li class="listitem"><p> Throw the intended error if <code class="function">pgrowlocks()</code> is applied to a partitioned table (David Rowley) </p><p> Previously, a not-on-point complaint <span class="quote">“<span class="quote">only heap AM is supported</span>”</span> would be raised. </p></li><li class="listitem"><p> Handle invalid indexes more cleanly in assorted SQL functions (Noah Misch) </p><p> Report an error if <code class="function">pgstatindex()</code>, <code class="function">pgstatginindex()</code>, <code class="function">pgstathashindex()</code>, or <code class="function">pgstattuple()</code> is applied to an invalid index. If <code class="function">brin_desummarize_range()</code>, <code class="function">brin_summarize_new_values()</code>, <code class="function">brin_summarize_range()</code>, or <code class="function">gin_clean_pending_list()</code> 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 <code class="command">CREATE INDEX</code> had left behind. </p></li><li class="listitem"><p> Avoid premature memory allocation failure with long inputs to <code class="function">to_tsvector()</code> (Tom Lane) </p></li><li class="listitem"><p> Fix over-allocation of the constructed <code class="type">tsvector</code> in <code class="function">tsvectorrecv()</code> (Denis Erokhin) </p><p> 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 <code class="type">tsvector</code>. In extreme cases this could lead to <span class="quote">“<span class="quote">maximum total lexeme length exceeded</span>”</span> failures for vectors that were under the length limit when emitted. In any case it could lead to wasted space on-disk. </p></li><li class="listitem"><p> Improve checks for corrupt PGLZ compressed data (Flavien Guedez) </p></li><li class="listitem"><p> Fix <code class="command">ALTER SUBSCRIPTION</code> so that a commanded change in the <code class="literal">run_as_owner</code> option is actually applied (Hou Zhijie) </p></li><li class="listitem"><p> Fix bulk table insertion into partitioned tables (Andres Freund) </p><p> Improper sharing of insertion state across partitions could result in failures during <code class="command">COPY FROM</code>, typically manifesting as <span class="quote">“<span class="quote">could not read block NNNN in file XXXX: read only 0 of 8192 bytes</span>”</span> errors. </p></li><li class="listitem"><p> In <code class="command">COPY FROM</code>, avoid evaluating column default values that will not be needed by the command (Laurenz Albe) </p><p> 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. </p></li><li class="listitem"><p> In <code class="command">COPY FROM</code>, fail cleanly when an unsupported encoding conversion is needed (Tom Lane) </p><p> Recent refactoring accidentally removed the intended error check for this, such that it ended in <span class="quote">“<span class="quote">cache lookup failed for function 0</span>”</span> instead of a useful error message. </p></li><li class="listitem"><p> Avoid crash in <code class="command">EXPLAIN</code> if a parameter marked to be displayed by <code class="command">EXPLAIN</code> has a NULL boot-time value (Xing Guo, Aleksander Alekseev, Tom Lane) </p><p> No built-in parameter fits this description, but an extension could define such a parameter. </p></li><li class="listitem"><p> Ensure we have a snapshot while dropping <code class="literal">ON COMMIT DROP</code> temp tables (Tom Lane) </p><p> This prevents possible misbehavior if any catalog entries for the temp tables have fields wide enough to require toasting (such as a very complex <code class="literal">CHECK</code> condition). </p></li><li class="listitem"><p> Avoid improper response to shutdown signals in child processes just forked by <code class="function">system()</code> (Nathan Bossart) </p><p> This fix avoids a race condition in which a child process that has been forked off by <code class="function">system()</code>, 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. </p></li><li class="listitem"><p> Cope with torn reads of <code class="filename">pg_control</code> in frontend programs (Thomas Munro) </p><p> On some file systems, reading <code class="filename">pg_control</code> 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. </p></li><li class="listitem"><p> Avoid torn reads of <code class="filename">pg_control</code> in relevant SQL functions (Thomas Munro) </p><p> Acquire the appropriate lock before reading <code class="filename">pg_control</code>, to ensure we get a consistent view of that file. </p></li><li class="listitem"><p> Fix <span class="quote">“<span class="quote">could not find pathkey item to sort</span>”</span> errors occurring while planning aggregate functions with <code class="literal">ORDER BY</code> or <code class="literal">DISTINCT</code> options (David Rowley) </p></li><li class="listitem"><p> Avoid integer overflow when computing size of backend activity string array (Jakub Wartak) </p><p> On 64-bit machines we will allow values of <code class="varname">track_activity_query_size</code> 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. </p></li><li class="listitem"><p> Fix briefly showing inconsistent progress statistics for <code class="command">ANALYZE</code> on inherited tables (Heikki Linnakangas) </p><p> The block-level counters should be reset to zero at the same time we update the current-relation field. </p></li><li class="listitem"><p> Fix the background writer to report any WAL writes it makes to the statistics counters (Nazir Bilal Yavuz) </p></li><li class="listitem"><p> Fix confusion about forced-flush behavior in <code class="function">pgstat_report_wal()</code> (Ryoga Yoshida, Michael Paquier) </p><p> This could result in some statistics about WAL I/O being forgotten in a shutdown. </p></li><li class="listitem"><p> Fix statistics tracking of temporary-table extensions (Karina Litskevich, Andres Freund) </p><p> These were counted as normal-table writes when they should be counted as temp-table writes. </p></li><li class="listitem"><p> When <code class="varname">track_io_timing</code> is enabled, include the time taken by relation extension operations as write time (Nazir Bilal Yavuz) </p></li><li class="listitem"><p> Track the dependencies of cached <code class="command">CALL</code> statements, and re-plan them when needed (Tom Lane) </p><p> DDL commands, such as replacement of a function that has been inlined into a <code class="command">CALL</code> argument, can create the need to re-plan a <code class="command">CALL</code> that has been cached by PL/pgSQL. That was not happening, leading to misbehavior or strange errors such as <span class="quote">“<span class="quote">cache lookup failed</span>”</span>. </p></li><li class="listitem"><p> Avoid a possible pfree-a-NULL-pointer crash after an error in OpenSSL connection setup (Sergey Shinderuk) </p></li><li class="listitem"><p> Track nesting depth correctly when inspecting <code class="type">RECORD</code>-type Vars from outer query levels (Richard Guo) </p><p> This oversight could lead to assertion failures, core dumps, or <span class="quote">“<span class="quote">bogus varno</span>”</span> errors. </p></li><li class="listitem"><p> Track hash function and negator function dependencies of ScalarArrayOpExpr plan nodes (David Rowley) </p><p> In most cases this oversight was harmless, since these functions would be unlikely to disappear while the node's original operator remains present. </p></li><li class="listitem"><p> Fix error-handling bug in <code class="type">RECORD</code> type cache management (Thomas Munro) </p><p> An out-of-memory error occurring at just the wrong point could leave behind inconsistent state that would lead to an infinite loop. </p></li><li class="listitem"><p> Treat out-of-memory failures as fatal while reading WAL (Michael Paquier) </p><p> 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. </p></li><li class="listitem"><p> Fix possible recovery failure due to trying to allocate memory based on a bogus WAL record length field (Thomas Munro, Michael Paquier) </p></li><li class="listitem"><p> Fix <span class="quote">“<span class="quote">could not duplicate handle</span>”</span> error occurring on Windows when <code class="varname">min_dynamic_shared_memory</code> is set above zero (Thomas Munro) </p></li><li class="listitem"><p> Fix order of operations in <code class="function">GenericXLogFinish</code> (Jeff Davis) </p><p> 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 (<code class="filename">contrib/bloom</code> does, for example). </p></li><li class="listitem"><p> Remove incorrect assertion in PL/Python exception handling (Alexander Lakhin) </p></li><li class="listitem"><p> Fix <span class="application">pg_dump</span> to dump the new <code class="literal">run_as_owner</code> option of subscriptions (Philip Warner) </p><p> Due to this oversight, subscriptions would always be restored with <code class="literal">run_as_owner</code> set to <code class="literal">false</code>, which is not equivalent to their behavior in pre-v16 releases. </p></li><li class="listitem"><p> Fix <span class="application">pg_restore</span> so that selective restores will include both table-level and column-level ACLs for selected tables (Euler Taveira, Tom Lane) </p><p> Formerly, only the table-level ACL would get restored if both types were present. </p></li><li class="listitem"><p> Add logic to <span class="application">pg_upgrade</span> to check for use of <code class="type">abstime</code>, <code class="type">reltime</code>, and <code class="type">tinterval</code> data types (Álvaro Herrera) </p><p> These obsolete data types were removed in <span class="productname">PostgreSQL</span> version 12, so check to make sure they aren't present in an older database before claiming it can be upgraded. </p></li><li class="listitem"><p> Avoid false <span class="quote">“<span class="quote">too many client connections</span>”</span> errors in <span class="application">pgbench</span> on Windows (Noah Misch) </p></li><li class="listitem"><p> Fix <span class="application">vacuumdb</span>'s handling of multiple <code class="option">-N</code> switches (Nathan Bossart, Kuwamura Masaki) </p><p> Multiple <code class="option">-N</code> switches should exclude tables in multiple schemas, but in fact excluded nothing due to faulty construction of a generated query. </p></li><li class="listitem"><p> Fix <span class="application">vacuumdb</span> to honor its <code class="option">--buffer-usage-limit</code> option in analyze-only mode (Ryoga Yoshida, David Rowley) </p></li><li class="listitem"><p> In <code class="filename">contrib/amcheck</code>, do not report interrupted page deletion as corruption (Noah Misch) </p><p> This fix prevents false-positive reports of <span class="quote">“<span class="quote">the first child of leftmost target page is not leftmost of its level</span>”</span>, <span class="quote">“<span class="quote">block NNNN is not leftmost</span>”</span> or <span class="quote">“<span class="quote">left link/right link pair in index XXXX not in agreement</span>”</span>. They appeared if <span class="application">amcheck</span> ran after an unfinished btree index page deletion and before <code class="command">VACUUM</code> had cleaned things up. </p></li><li class="listitem"><p> Fix failure of <code class="filename">contrib/btree_gin</code> indexes on <code class="type">interval</code> columns, when an indexscan using the <code class="literal"><</code> or <code class="literal"><=</code> operator is performed (Dean Rasheed) </p><p> Such an indexscan failed to return all the entries it should. </p></li><li class="listitem"><p> Add support for LLVM 16 and 17 (Thomas Munro, Dmitry Dolgov) </p></li><li class="listitem"><p> Suppress assorted build-time warnings on recent <span class="productname">macOS</span> (Tom Lane) </p><p> <span class="productname">Xcode 15</span> (released with <span class="productname">macOS Sonoma</span>) changed the linker's behavior in a way that causes many duplicate-library warnings while building <span class="productname">PostgreSQL</span>. These were harmless, but they're annoying so avoid citing the same libraries twice. Also remove use of the <code class="option">-multiply_defined suppress</code> linker switch, which apparently has been a no-op for a long time, and is now actively complained of. </p></li><li class="listitem"><p> When building <code class="filename">contrib/unaccent</code>'s rules file, fall back to using <code class="literal">python</code> if <code class="literal">--with-python</code> was not given and make variable <code class="literal">PYTHON</code> was not set (Japin Li) </p></li><li class="listitem"><p> Remove <code class="literal">PHOT</code> (Phoenix Islands Time) from the default timezone abbreviations list (Tom Lane) </p><p> 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. </p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="release-16-2.html" title="E.2. Release 16.2">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="release.html" title="Appendix E. Release Notes">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="release-16.html" title="E.4. Release 16">Next</a></td></tr><tr><td width="40%" align="left" valign="top">E.2. Release 16.2 </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 16.3 Documentation">Home</a></td><td width="40%" align="right" valign="top"> E.4. Release 16</td></tr></table></div></body></html>