diff options
Diffstat (limited to 'doc/src/sgml/html/release-15-2.html')
-rw-r--r-- | doc/src/sgml/html/release-15-2.html | 433 |
1 files changed, 433 insertions, 0 deletions
diff --git a/doc/src/sgml/html/release-15-2.html b/doc/src/sgml/html/release-15-2.html new file mode 100644 index 0000000..63e98fa --- /dev/null +++ b/doc/src/sgml/html/release-15-2.html @@ -0,0 +1,433 @@ +<?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 15.2</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-15-3.html" title="E.2. Release 15.3" /><link rel="next" href="release-15-1.html" title="E.4. Release 15.1" /></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 15.2</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="release-15-3.html" title="E.2. Release 15.3">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.4 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="release-15-1.html" title="E.4. Release 15.1">Next</a></td></tr></table><hr /></div><div class="sect1" id="RELEASE-15-2"><div class="titlepage"><div><div><h2 class="title" style="clear: both">E.3. Release 15.2</h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="sect2"><a href="release-15-2.html#id-1.11.6.7.4">E.3.1. Migration to Version 15.2</a></span></dt><dt><span class="sect2"><a href="release-15-2.html#id-1.11.6.7.5">E.3.2. Changes</a></span></dt></dl></div><p><strong>Release date: </strong>2023-02-09</p><p> + This release contains a variety of fixes from 15.1. + For information about new features in major release 15, see + <a class="xref" href="release-15.html" title="E.5. Release 15">Section E.5</a>. + </p><div class="sect2" id="id-1.11.6.7.4"><div class="titlepage"><div><div><h3 class="title">E.3.1. Migration to Version 15.2</h3></div></div></div><p> + A dump/restore is not required for those running 15.X. + </p><p> + However, if you are upgrading from a version earlier than 15.1, + see <a class="xref" href="release-15-1.html" title="E.4. Release 15.1">Section E.4</a>. + </p></div><div class="sect2" id="id-1.11.6.7.5"><div class="titlepage"><div><div><h3 class="title">E.3.2. Changes</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> + <span class="application">libpq</span> can leak memory contents after + GSSAPI transport encryption initiation fails (Jacob Champion) + </p><p> + A modified server, or an unauthenticated man-in-the-middle, can + send a not-zero-terminated error message during setup of GSSAPI + (Kerberos) transport encryption. <span class="application">libpq</span> + will then copy that string, as well as following bytes in + application memory up to the next zero byte, to its error report. + Depending on what the calling application does with the error + report, this could result in disclosure of application memory + contents. There is also a small probability of a crash due to + reading beyond the end of memory. Fix by properly zero-terminating + the server message. + (CVE-2022-41862) + </p></li><li class="listitem"><p> + Fix calculation of which <code class="literal">GENERATED</code> columns need + to be updated in child tables during an <code class="command">UPDATE</code> on + a partitioned table or inheritance tree (Amit Langote, Tom Lane) + </p><p> + This fixes failure to update <code class="literal">GENERATED</code> columns + that do not exist in the parent table, or that have different + dependencies than are in the parent column's generation expression. + </p></li><li class="listitem"><p> + Fix possible failure of <code class="command">MERGE</code> to compute + <code class="literal">GENERATED</code> columns (Dean Rasheed) + </p><p> + When the first row-level action of the <code class="command">MERGE</code> was + an <code class="literal">UPDATE</code>, any + subsequent <code class="literal">INSERT</code> actions would fail to + compute <code class="literal">GENERATED</code> columns that were deemed + unnecessary to compute for the <code class="literal">UPDATE</code> action + (due to not depending on any of the <code class="literal">UPDATE</code> target + columns). + </p></li><li class="listitem"><p> + Fix <code class="command">MERGE</code>'s check for + unreachable <code class="literal">WHEN</code> clauses (Dean Rasheed) + </p><p> + A <code class="literal">WHEN</code> clause following an + unconditional <code class="literal">WHEN</code> clause should be rejected as + unreachable, but this case was not always detected. + </p></li><li class="listitem"><p> + Fix <code class="command">MERGE</code>'s rule-detection test (Dean Rasheed) + </p><p> + <code class="command">MERGE</code> is not supported on tables with rules; + but it also failed on tables that once had rules but no longer do. + </p></li><li class="listitem"><p> + In <code class="command">MERGE</code>, don't count a <code class="literal">DO + NOTHING</code> action as a processed tuple (Álvaro Herrera) + </p><p> + This makes the code's behavior match the documentation. + </p></li><li class="listitem"><p> + Allow a <code class="literal">WITH RECURSIVE ... CYCLE</code> CTE + to access its output column (Tom Lane) + </p><p> + A reference to the <code class="literal">SET</code> column from within the CTE + would fail with <span class="quote">“<span class="quote">cache lookup failed for type 0</span>”</span>. + </p></li><li class="listitem"><p> + Fix handling of pending inserts when doing a bulk insertion to a + foreign table (Etsuro Fujita) + </p><p> + In some cases pending insertions were not flushed to the FDW soon + enough, leading to logical inconsistencies, for + example <code class="literal">BEFORE ROW</code> triggers not seeing rows they + should be able to see. + </p></li><li class="listitem"><p> + Allow <code class="literal">REPLICA IDENTITY</code> + to be set on an index that's not (yet) valid (Tom Lane) + </p><p> + When <span class="application">pg_dump</span> dumps a partitioned index + that's marked <code class="literal">REPLICA IDENTITY</code>, it generates a + command sequence that applies <code class="literal">REPLICA IDENTITY</code> + before the partitioned index has been marked valid, causing restore + to fail. There seems no very good reason to prohibit doing it in + that order, so allow it. The marking will have no effect anyway + until the index becomes valid. + </p></li><li class="listitem"><p> + Fix handling of <code class="literal">DEFAULT</code> markers in rules that + perform an <code class="command">INSERT</code> from a + multi-row <code class="literal">VALUES</code> list (Dean Rasheed) + </p><p> + In some cases a <code class="literal">DEFAULT</code> marker would not get + replaced with the proper default-value expression, leading to + an <span class="quote">“<span class="quote">unrecognized node type</span>”</span> error. + </p></li><li class="listitem"><p> + Reject uses of undefined variables in <code class="type">jsonpath</code> + existence checks (Alexander Korotkov, David G. Johnston) + </p><p> + While <code class="type">jsonpath</code> match operators threw an error for an + undefined variable in the path pattern, the existence operators + silently treated it as a match. + </p></li><li class="listitem"><p> + Fix <code class="type">jsonb</code> subscripting to cope with toasted subscript + values (Tom Lane, David G. Johnston) + </p><p> + Using a text value fetched directly from a table as + a <code class="type">jsonb</code> subscript was likely to fail. + Fetches would usually not find any matching element. + Assignments could store the value with a garbage key, + although keys long enough to cause that problem are probably rare in + the field. + </p></li><li class="listitem"><p> + Fix edge-case data corruption in parallel hash joins (Dmitry Astapov) + </p><p> + If the final chunk of a large tuple being written out to a temporary + file was exactly 32760 bytes, it would be corrupted due to a + fencepost bug. The query would typically fail later with + corrupted-data symptoms. + </p></li><li class="listitem"><p> + Honor non-default settings + of <code class="varname">checkpoint_completion_target</code> + (Bharath Rupireddy) + </p><p> + Internal state was not updated after a change + in <code class="varname">checkpoint_completion_target</code>, possibly + resulting in performing checkpoint I/O faster or slower than + desired, especially if that setting was changed on-the-fly. + </p></li><li class="listitem"><p> + Log the correct ending timestamp + in <code class="varname">recovery_target_xid</code> mode (Tom Lane) + </p><p> + When ending recovery based on the <code class="varname">recovery_target_xid</code> + setting with <code class="varname">recovery_target_inclusive</code> + = <code class="literal">off</code>, we printed an incorrect timestamp (always + 2000-01-01) in the <span class="quote">“<span class="quote">recovery stopping before + ... transaction</span>”</span> log message. + </p></li><li class="listitem"><p> + Improve error reporting for some buffered file read failures + (Peter Eisentraut) + </p><p> + Correctly report a short read, giving the numbers of bytes desired + and actually read, instead of reporting an irrelevant error code. + Most places got this right already, but some recently-written + replication logic did not. + </p></li><li class="listitem"><p> + Remove arbitrary limit on number of elements + in <code class="type">int2vector</code> and <code class="type">oidvector</code> (Tom Lane) + </p><p> + The input functions for these types previously rejected more than + 100 elements. With the introduction of the logical replication + column list feature, it's necessary to + accept <code class="type">int2vector</code>s having up to 1600 columns, + otherwise long column lists cause logical-replication failures. + </p></li><li class="listitem"><p> + In extended query protocol, avoid an immediate commit + after <code class="command">ANALYZE</code> if we're running a pipeline + (Tom Lane) + </p><p> + If there's not been an explicit <code class="command">BEGIN + TRANSACTION</code>, <code class="command">ANALYZE</code> would take it on + itself to commit, which should not happen within a pipelined series + of commands. + </p></li><li class="listitem"><p> + Reject cancel request packets having the wrong length + (Andrey Borodin) + </p><p> + The server would process a cancel request even if its length word + was too small. This led to reading beyond the end of the allocated + buffer. In theory that could cause a segfault, but it seems quite + unlikely to happen in practice, since the buffer would have to be + very close to the end of memory. The more likely outcome was a bogus + log message about wrong backend PID or cancel code. Complain about + the wrong length, instead. + </p></li><li class="listitem"><p> + Fix planner preprocessing oversights for window function run-condition + expressions (Richard Guo, David Rowley) + </p><p> + This could lead to planner errors such as <span class="quote">“<span class="quote">WindowFunc not + found in subplan target lists</span>”</span>. + </p></li><li class="listitem"><p> + Fix possible dangling-pointer access during execution of window + function run-condition expressions (David Rowley) + </p><p> + In practice, because the run-condition optimization is only applied + to certain window functions that happen to all + return <code class="type">int8</code>, this only manifested as a problem on + 32-bit builds. + </p></li><li class="listitem"><p> + Add recursion and looping defenses in subquery pullup (Tom Lane) + </p><p> + A contrived query can result in deep recursion and unreasonable + amounts of time spent trying to flatten subqueries. A proper fix + for that seems unduly invasive for a back-patch, but we can at least + add stack depth checks and an interrupt check to allow the query to + be cancelled. + </p></li><li class="listitem"><p> + Fix planner issues when combining Memoize nodes with partitionwise + joins or parameterized nestloops (Richard Guo) + </p><p> + These errors could lead to not using Memoize in contexts where it + would be useful, or possibly to wrong query plans. + </p></li><li class="listitem"><p> + Fix partitionwise-join code to tolerate failure to produce a plan for + each partition (Tom Lane) + </p><p> + This could result in <span class="quote">“<span class="quote">could not devise a query plan for the + given query</span>”</span> errors. + </p></li><li class="listitem"><p> + Limit the amount of cleanup work done + by <code class="function">get_actual_variable_range</code> (Simon Riggs) + </p><p> + Planner runs occurring just after deletion of a large number of + tuples appearing at the end of an index could expend significant + amounts of work setting the <span class="quote">“<span class="quote">killed</span>”</span> bits for those + index entries. Limit the amount of work done in any one query by + giving up on this process after examining 100 heap pages. All the + cleanup will still happen eventually, but without so large a + performance hiccup. + </p></li><li class="listitem"><p> + Prevent the statistics machinery from getting confused when a + relation's relkind changes (Andres Freund) + </p><p> + Converting a table to a view could lead to crashes or assertion + failures. + </p></li><li class="listitem"><p> + Fix under-parenthesized display of <code class="literal">AT TIME ZONE</code> + constructs (Tom Lane) + </p><p> + This could result in dump/restore failures for rules or views in + which an argument of <code class="literal">AT TIME ZONE</code> is itself an + expression. + </p></li><li class="listitem"><p> + Prevent clobbering of cached parsetrees for utility statements in + SQL functions (Tom Lane, Daniel Gustafsson) + </p><p> + If a SQL-language function executes the same utility command more + than once within a single calling query, it could crash or report + strange errors such as <span class="quote">“<span class="quote">unrecognized node type</span>”</span>. + </p></li><li class="listitem"><p> + Ensure that execution of full-text-search queries can be cancelled + while they are performing phrase matches (Tom Lane) + </p></li><li class="listitem"><p> + Fix memory leak in hashing strings with nondeterministic collations + (Jeff Davis) + </p></li><li class="listitem"><p> + Fix deadlock between <code class="command">DROP DATABASE</code> and logical + replication worker process (Hou Zhijie) + </p><p> + This was caused by an ill-advised choice to block interrupts while + creating a logical replication slot in the worker. In version 15 + that could lead to an undetected deadlock. In version 14, no + deadlock has been observed, but it's still a bad idea to block + interrupts while waiting for network I/O. + </p></li><li class="listitem"><p> + Clean up the <span class="application">libpq</span> connection object + after a failed replication connection attempt (Andres Freund) + </p><p> + The previous coding leaked the connection object. In background + code paths that's pretty harmless because the calling process will + give up and exit. But in commands such as <code class="command">CREATE + SUBSCRIPTION</code>, such a failure resulted in a small + session-lifespan memory leak. + </p></li><li class="listitem"><p> + In hot-standby servers, reduce processing effort for tracking XIDs + known to be active on the primary (Simon Riggs, Michail Nikolaev) + </p><p> + Insufficiently-aggressive cleanup of the KnownAssignedXids array + could lead to poor performance, particularly + when <code class="varname">max_connections</code> is set to a large value on + the standby. + </p></li><li class="listitem"><p> + Ignore invalidated logical-replication slots while determining + oldest catalog xmin (Sirisha Chamarthi) + </p><p> + A replication slot could prevent cleanup of dead tuples in the + system catalogs even after it becomes invalidated due to + exceeding <code class="varname">max_slot_wal_keep_size</code>. Thus, failure + of a replication consumer could lead to indefinitely-large catalog + bloat. + </p></li><li class="listitem"><p> + In logical decoding, notify the remote node when a transaction is + detected to have crashed (Hou Zhijie) + </p><p> + After a server restart, we'll re-stream the changes for transactions + occurring shortly before the restart. Some of these transactions + probably never completed; when we realize that one didn't we throw + away the relevant decoding state locally, but we neglected to tell + the subscriber about it. That led to the subscriber keeping useless + streaming files until it's next restarted. + </p></li><li class="listitem"><p> + Fix uninitialized-memory usage in logical decoding (Masahiko Sawada) + </p><p> + In certain cases, resumption of logical decoding could try to re-use + XID data that had already been freed, leading to unpredictable + behavior. + </p></li><li class="listitem"><p> + Acquire spinlock while updating shared state during logical decoding + context creation (Masahiko Sawada) + </p><p> + We neglected to acquire the appropriate lock while updating data + about two-phase transactions, potentially allowing other processes + to see inconsistent data. + </p></li><li class="listitem"><p> + Fix <span class="application">pgoutput</span> replication plug-in to not + send columns not listed in a table's replication column list + (Hou Zhijie) + </p><p> + <code class="literal">UPDATE</code> and <code class="literal">DELETE</code> events did + not pay attention to the configured column list, thus sending more + data than expected. This did not cause a problem when the receiver + is our built-in logical replication code, but it might confuse other + receivers, and in any case it wasted network bandwidth. + </p></li><li class="listitem"><p> + Avoid rare <span class="quote">“<span class="quote">failed to acquire cleanup lock</span>”</span> panic + during WAL replay of hash-index page split operations (Robert Haas) + </p></li><li class="listitem"><p> + Advance a heap page's LSN when setting its all-visible bit during + WAL replay (Jeff Davis) + </p><p> + Failure to do this left the page possibly different on standby + servers than the primary, and violated some other expectations about + when the LSN changes. This seems only a theoretical hazard so + far as <span class="productname">PostgreSQL</span> itself is concerned, + but it could upset third-party tools. + </p></li><li class="listitem"><p> + Fix <code class="function">int64_div_fast_to_numeric()</code> to work for a + wider range of inputs (Dean Rasheed) + </p><p> + This function misbehaved with some values of its second argument. + No such usages exist in core <span class="productname">PostgreSQL</span>, + but it's clearly a hazard for external modules, so repair. + </p></li><li class="listitem"><p> + Fix latent buffer-overrun problem in <code class="literal">WaitEventSet</code> + logic (Thomas Munro) + </p><p> + The <code class="function">epoll</code>-based + and <code class="function">kqueue</code>-based implementations could ask the + kernel for too many events if the size of their internal buffer was + different from the size of the caller's output buffer. That case is + not known to occur in released <span class="productname">PostgreSQL</span> + versions, but this error is a hazard for external modules and future + bug fixes. + </p></li><li class="listitem"><p> + Avoid nominally-undefined behavior when accessing shared memory in + 32-bit builds (Andres Freund) + </p><p> + clang's undefined-behavior sanitizer complained about use of a + pointer that was less aligned than it should be. It's very unlikely + that this would cause a problem in non-debug builds, but it's worth + fixing for testing purposes. + </p></li><li class="listitem"><p> + Fix assertion failure in BRIN minmax-multi opclasses (Tomas Vondra) + </p><p> + The assertion was overly strict, so this mistake was harmless in + non-assert builds. + </p></li><li class="listitem"><p> + Remove faulty assertion in useless-RESULT-RTE optimization logic + (Tom Lane) + </p></li><li class="listitem"><p> + Fix copy-and-paste errors in cache-lookup-failure messages for ACL + checks (Justin Pryzby) + </p><p> + In principle these errors should never be reached. But if they are, + some of them reported the wrong type of object. + </p></li><li class="listitem"><p> + Fix possible corruption of very large tablespace map files + in <span class="application">pg_basebackup</span> (Antonin Houska) + </p></li><li class="listitem"><p> + Avoid harmless warning from <span class="application">pg_dump</span> + in <code class="option">--if-exists</code> mode (Tom Lane) + </p><p> + If the <code class="literal">public</code> schema has a non-default owner then + use of <span class="application">pg_dump</span>'s <code class="option">--if-exists</code> + option resulted in a warning message <span class="quote">“<span class="quote">warning: could not find + where to insert IF EXISTS in statement "-- *not* dropping schema, + since initdb creates it"</span>”</span>. The dump output was okay, though. + </p></li><li class="listitem"><p> + Fix <span class="application">psql</span>'s <code class="literal">\sf</code> + and <code class="literal">\ef</code> commands to handle SQL-language functions + that have <acronym class="acronym">SQL</acronym>-standard function bodies (Tom Lane) + </p><p> + These commands misidentified the start of the function body when it + used new-style syntax. + </p></li><li class="listitem"><p> + Fix tab completion of <code class="command">ALTER + FUNCTION/PROCEDURE/ROUTINE</code> ... <code class="command">SET + SCHEMA</code> (Dean Rasheed) + </p></li><li class="listitem"><p> + Update <code class="filename">contrib/pageinspect</code> to mark its + disk-accessing functions as <code class="literal">PARALLEL RESTRICTED</code> + (Tom Lane) + </p><p> + This avoids possible failure if one of these functions is used to + examine a temporary table, since a session's temporary tables are not + accessible from parallel workers. + </p></li><li class="listitem"><p> + Fix <code class="filename">contrib/seg</code> to not crash or print garbage + if an input number has more than 127 digits (Tom Lane) + </p></li><li class="listitem"><p> + Fix build on Microsoft Visual Studio 2013 (Tom Lane) + </p><p> + A previous patch supposed that all platforms of interest + have <code class="function">snprintf()</code>, but MSVC 2013 isn't quite + there yet. Revert to using <code class="function">sprintf()</code> on that + platform. + </p></li><li class="listitem"><p> + Fix compile failure in building PL/Perl with MSVC when using + Strawberry Perl (Andrew Dunstan) + </p></li><li class="listitem"><p> + Fix mismatch of PL/Perl built with MSVC versus a Perl library built + with gcc (Andrew Dunstan) + </p><p> + Such combinations could previously fail with <span class="quote">“<span class="quote">loadable library + and perl binaries are mismatched</span>”</span> errors. + </p></li><li class="listitem"><p> + Suppress compiler warnings from Perl's header files (Andres Freund) + </p><p> + Our preferred compiler options provoke warnings about constructs + appearing in recent versions of Perl's header files. When using + <span class="application">gcc</span>, we can suppress these warnings with + a pragma. + </p></li><li class="listitem"><p> + Fix <span class="application">pg_waldump</span> to build on compilers that + don't discard unused static-inline functions (Tom Lane) + </p></li><li class="listitem"><p> + Update time zone data files to <span class="application">tzdata</span> + release 2022g for DST law changes in Greenland and Mexico, + plus historical corrections for northern Canada, Colombia, and + Singapore. + </p><p> + Notably, a new timezone America/Ciudad_Juarez has been split off + from America/Ojinaga. + </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-15-3.html" title="E.2. Release 15.3">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-1.html" title="E.4. Release 15.1">Next</a></td></tr><tr><td width="40%" align="left" valign="top">E.2. Release 15.3 </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 15.4 Documentation">Home</a></td><td width="40%" align="right" valign="top"> E.4. Release 15.1</td></tr></table></div></body></html>
\ No newline at end of file |