diff options
Diffstat (limited to 'doc/src/sgml/html/release-15-5.html')
-rw-r--r-- | doc/src/sgml/html/release-15-5.html | 468 |
1 files changed, 468 insertions, 0 deletions
diff --git a/doc/src/sgml/html/release-15-5.html b/doc/src/sgml/html/release-15-5.html new file mode 100644 index 0000000..2f887fd --- /dev/null +++ b/doc/src/sgml/html/release-15-5.html @@ -0,0 +1,468 @@ +<?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.1. Release 15.5</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.html" title="Appendix E. Release Notes" /><link rel="next" href="release-15-4.html" title="E.2. Release 15.4" /></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.1. Release 15.5</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="release.html" title="Appendix E. Release Notes">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 15.5 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="release-15-4.html" title="E.2. Release 15.4">Next</a></td></tr></table><hr /></div><div class="sect1" id="RELEASE-15-5"><div class="titlepage"><div><div><h2 class="title" style="clear: both">E.1. Release 15.5</h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="sect2"><a href="release-15-5.html#id-1.11.6.5.4">E.1.1. Migration to Version 15.5</a></span></dt><dt><span class="sect2"><a href="release-15-5.html#id-1.11.6.5.5">E.1.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 15.4. + For information about new features in major release 15, see + <a class="xref" href="release-15.html" title="E.6. Release 15">Section E.6</a>. + </p><div class="sect2" id="id-1.11.6.5.4"><div class="titlepage"><div><div><h3 class="title">E.1.1. Migration to Version 15.5</h3></div></div></div><p> + A dump/restore is not required for those running 15.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><p> + Also, if you are upgrading from a version earlier than 15.4, + see <a class="xref" href="release-15-4.html" title="E.2. Release 15.4">Section E.2</a>. + </p></div><div class="sect2" id="id-1.11.6.5.5"><div class="titlepage"><div><div><h3 class="title">E.1.2. Changes</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> + 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> + Fix <code class="function">pg_stat_reset_single_table_counters()</code> to do + the right thing for a shared catalog (Masahiro Ikeda) + </p><p> + Previously the reset would be ineffective. + </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> + Fix incorrect coding in <code class="function">gtsvector_picksplit()</code> + (Alexander Lakhin) + </p><p> + This could lead to poor page-split decisions in GiST indexes + on <code class="type">tsvector</code> columns. + </p></li><li class="listitem"><p> + Improve checks for corrupt PGLZ compressed data (Flavien Guedez) + </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> + 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> + 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> + Fix assertion failure when logical decoding is retried in the same + session after an error (Hou Zhijie) + </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 race condition in database dropping that could lead to the + autovacuum launcher getting stuck (Andres Freund, Will Mortensen, + Jacob Speidel) + </p><p> + The race could lead to a statistics entry for the removed database + remaining present, confusing the launcher's selection of which + database to process. + </p></li><li class="listitem"><p> + Fix datatype size confusion in logical tape management + (Ranier Vilela) + </p><p> + 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. + </p></li><li class="listitem"><p> + Avoid unintended close of syslogger process's stdin + (Heikki Linnakangas) + </p></li><li class="listitem"><p> + Avoid doing plan cache revalidation of utility statements + that do not receive interesting processing during parse analysis + (Tom Lane) + </p><p> + Aside from saving a few cycles, this prevents failure after a cache + invalidation for statements that must not set a snapshot, such + as <code class="command">SET TRANSACTION ISOLATION LEVEL</code>. + </p></li><li class="listitem"><p> + Keep by-reference <code class="structfield">attmissingval</code> values in + a long-lived context while they are being used (Andrew Dunstan) + </p><p> + This avoids possible use of dangling pointers when a tuple slot + outlives the tuple descriptor with which its value was constructed. + </p></li><li class="listitem"><p> + Recalculate the effective value of <code class="varname">search_path</code> + after <code class="command">ALTER ROLE</code> (Jeff Davis) + </p><p> + This ensures that after renaming a role, the meaning of the special + string <code class="literal">$user</code> is re-determined. + </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 assertion failure in <span class="application">pg_dump</span> when + it's asked to dump the <code class="literal">pg_catalog</code> schema (Peter + Eisentraut) + </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 generating invalid temporary slot names + in <span class="application">pg_basebackup</span> (Jelte Fennema) + </p><p> + This has only been seen to occur when the server connection runs + through <span class="application">pgbouncer</span>. + </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> + 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.html" title="Appendix E. Release Notes">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-15-4.html" title="E.2. Release 15.4">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix E. Release Notes </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 15.5 Documentation">Home</a></td><td width="40%" align="right" valign="top"> E.2. Release 15.4</td></tr></table></div></body></html>
\ No newline at end of file |