diff options
Diffstat (limited to 'doc/src/sgml/html/release-13-4.html')
-rw-r--r-- | doc/src/sgml/html/release-13-4.html | 475 |
1 files changed, 475 insertions, 0 deletions
diff --git a/doc/src/sgml/html/release-13-4.html b/doc/src/sgml/html/release-13-4.html new file mode 100644 index 0000000..a572e79 --- /dev/null +++ b/doc/src/sgml/html/release-13-4.html @@ -0,0 +1,475 @@ +<?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 13.4</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 V1.79.1" /><link rel="prev" href="release.html" title="Appendix E. Release Notes" /><link rel="next" href="release-13-3.html" title="E.2. Release 13.3" /></head><body id="docContent" class="container-fluid col-10"><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">E.1. Release 13.4</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 13.4 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="release-13-3.html" title="E.2. Release 13.3">Next</a></td></tr></table><hr></hr></div><div class="sect1" id="RELEASE-13-4"><div class="titlepage"><div><div><h2 class="title" style="clear: both">E.1. Release 13.4</h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="sect2"><a href="release-13-4.html#id-1.11.6.5.4">E.1.1. Migration to Version 13.4</a></span></dt><dt><span class="sect2"><a href="release-13-4.html#id-1.11.6.5.5">E.1.2. Changes</a></span></dt></dl></div><p><strong>Release date: </strong>2021-08-12</p><p> + This release contains a variety of fixes from 13.3. + For information about new features in major release 13, see + <a class="xref" href="release-13.html" title="E.5. Release 13">Section E.5</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 13.4</h3></div></div></div><p> + A dump/restore is not required for those running 13.X. + </p><p> + However, if you are upgrading from a version earlier than 13.2, + see <a class="xref" href="release-13-2.html" title="E.3. Release 13.2">Section E.3</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 mis-planning of repeated application of a projection step + (Tom Lane) + </p><p> + The planner could create an incorrect plan in cases where two + ProjectionPaths were stacked on top of each other. The only known + way to trigger that situation involves parallel sort operations, but + there may be other instances. The result would be crashes or + incorrect query results. + Disclosure of server memory contents is also possible. + (CVE-2021-3677) + </p></li><li class="listitem"><p> + Disallow SSL renegotiation more completely (Michael Paquier) + </p><p> + SSL renegotiation has been disabled for some time, but the server + would still cooperate with a client-initiated renegotiation request. + A maliciously crafted renegotiation request could result in a server + crash (see OpenSSL issue CVE-2021-3449). Disable the feature + altogether on OpenSSL versions that permit doing so, which are + 1.1.0h and newer. + </p></li><li class="listitem"><p> + Restore the Portal-level snapshot after <code class="command">COMMIT</code> + or <code class="command">ROLLBACK</code> within a procedure (Tom Lane) + </p><p> + This change fixes cases where an attempt to fetch a toasted value + immediately after <code class="command">COMMIT</code>/<code class="command">ROLLBACK</code> + would fail with errors like <span class="quote">“<span class="quote">no known snapshots</span>”</span> or + <span class="quote">“<span class="quote">missing chunk number 0 for toast value</span>”</span>. + </p><p> + Some extensions may attempt to execute SQL code outside of any + Portal. They are responsible for ensuring that an outer snapshot + exists before doing so. Previously, not providing a snapshot might + work or it might not; now it will consistently fail + with <span class="quote">“<span class="quote">cannot execute SQL without an outer snapshot or + portal</span>”</span>. + </p></li><li class="listitem"><p> + Avoid misbehavior when persisting the output of a cursor that's + reading a non-stable query (Tom Lane) + </p><p> + Previously, we'd always rewind and re-read the whole query result, + possibly getting results different from the earlier execution, + causing great confusion later. For a NO SCROLL cursor, we can fix + this by only storing the not-yet-read portion of the query output, + which is sufficient since a NO SCROLL cursor can't be backed up. + Cursors with the SCROLL option remain at hazard, but that was + already documented to be an unsafe option to use with a non-stable + query. Make those documentation warnings stronger. + </p><p> + Also force NO SCROLL mode for the implicit cursor used by + a <span class="application">PL/pgSQL</span> FOR-over-query loop, + to avoid this type of problem when persisting such a cursor + during an intra-procedure commit. + </p></li><li class="listitem"><p> + Reject <code class="literal">SELECT ... GROUP BY GROUPING SETS (()) FOR + UPDATE</code> (Tom Lane) + </p><p> + This should be disallowed, just as <code class="literal">FOR UPDATE</code> + with a plain <code class="literal">GROUP BY</code> is disallowed, but the test + for that failed to handle empty grouping sets correctly. + The end result would be a null-pointer dereference in the executor. + </p></li><li class="listitem"><p> + Reject cases where a query in <code class="literal">WITH</code> + rewrites to just <code class="command">NOTIFY</code> (Tom Lane) + </p><p> + Such cases previously crashed. + </p></li><li class="listitem"><p> + In <code class="type">numeric</code> multiplication, round the result rather than + failing if it would have more than 16383 digits after the decimal + point (Dean Rasheed) + </p></li><li class="listitem"><p> + Fix corner-case errors and loss of precision when + raising <code class="type">numeric</code> values to very large powers + (Dean Rasheed) + </p></li><li class="listitem"><p> + Fix division-by-zero failure in <code class="function">to_char()</code> + with <code class="literal">EEEE</code> format and a <code class="type">numeric</code> input + value less than 10^(-1001) (Dean Rasheed) + </p></li><li class="listitem"><p> + Fix <code class="function">pg_size_pretty(bigint)</code> to round negative + values consistently with the way it rounds positive ones (and + consistently with the <code class="type">numeric</code> version) (Dean Rasheed, + David Rowley) + </p></li><li class="listitem"><p> + Make <code class="literal">pg_filenode_relation(0, 0)</code> return NULL + rather than failing (Justin Pryzby) + </p></li><li class="listitem"><p> + Make <code class="command">ALTER EXTENSION</code> lock the extension when + adding or removing a member object (Tom Lane) + </p><p> + The previous coding allowed <code class="command">ALTER EXTENSION + ADD/DROP</code> to occur concurrently with <code class="command">DROP + EXTENSION</code>, leading to a crash or corrupt catalog entries. + </p></li><li class="listitem"><p> + Fix <code class="command">ALTER SUBSCRIPTION</code> to reject an empty slot + name (Japin Li) + </p></li><li class="listitem"><p> + When cloning a partitioned table's triggers to a new partition, + ensure that their enabled status is copied + (Álvaro Herrera) + </p></li><li class="listitem"><p> + Avoid alias conflicts in queries generated + for <code class="command">REFRESH MATERIALIZED VIEW CONCURRENTLY</code> + (Tom Lane, Bharath Rupireddy) + </p><p> + This command failed on materialized views containing columns with + certain names, notably <code class="structfield">mv</code> + and <code class="structfield">newdata</code>. + </p></li><li class="listitem"><p> + Fix <code class="command">PREPARE TRANSACTION</code> to check correctly + for conflicting session-lifespan and transaction-lifespan locks + (Tom Lane) + </p><p> + A transaction cannot be prepared if it has both session-lifespan and + transaction-lifespan locks on the same advisory-lock ID value. This + restriction was not fully checked, which could lead to a PANIC + during <code class="command">PREPARE TRANSACTION</code>. + </p></li><li class="listitem"><p> + Fix misbehavior of <code class="command">DROP OWNED BY</code> when the target + role is listed more than once in an RLS policy (Tom Lane) + </p></li><li class="listitem"><p> + Skip unnecessary error tests when removing a role from an RLS policy + during <code class="command">DROP OWNED BY</code> (Tom Lane) + </p><p> + Notably, this fixes some cases where it was necessary to be a + superuser to use <code class="command">DROP OWNED BY</code>. + </p></li><li class="listitem"><p> + Re-allow old-style Windows locale names in <code class="command">CREATE + COLLATION</code> commands (Thomas Munro) + </p><p> + Previously we were failing because the operating system can't + provide version information for such locales. At some point + we may decide to require version information, but no such policy + exists yet, so re-allow the case for now. + </p></li><li class="listitem"><p> + Disallow whole-row variables in <code class="literal">GENERATED</code> + expressions (Tom Lane) + </p><p> + Use of a whole-row variable clearly violates the rule that a + generated column cannot depend on itself, so such cases have no + well-defined behavior. The actual behavior frequently included a + crash. + </p></li><li class="listitem"><p> + Fix usage of <code class="structfield">tableoid</code> + in <code class="literal">GENERATED</code> expressions (Tom Lane) + </p><p> + Some code paths failed to provide a valid value for this system + column while evaluating a <code class="literal">GENERATED</code> expression. + </p></li><li class="listitem"><p> + Don't store a <span class="quote">“<span class="quote">fast default</span>”</span> when adding a column to a + foreign table (Andrew Dunstan) + </p><p> + The fast default is useless since no local heap storage exists for + such a table, but it confused subsequent operations. In addition to + suppressing creation of such catalog entries in <code class="command">ALTER + TABLE</code> commands, adjust the downstream code to cope + when one is incorrectly present. + </p></li><li class="listitem"><p> + Allow index state flags to be updated transactionally + (Michael Paquier, Andrey Lepikhov) + </p><p> + This avoids failures when dealing with index predicates that aren't + really immutable. While that's not considered a supported case, the + original reason for using a non-transactional update here is long + gone, so we may as well change it. + </p></li><li class="listitem"><p> + Avoid corrupting the plan cache entry when <code class="command">CREATE + DOMAIN</code> or <code class="command">ALTER DOMAIN</code> appears + in a cached plan (Tom Lane) + </p></li><li class="listitem"><p> + Make walsenders show their latest replication commands + in <code class="structname">pg_stat_activity</code> (Tom Lane) + </p><p> + Previously, a walsender would show its latest SQL command, which was + confusing if it's now doing some replication operation instead. + Now we show replication-protocol commands on the same footing as SQL + commands. + </p></li><li class="listitem"><p> + Make + <code class="structname">pg_settings</code>.<code class="structfield">pending_restart</code> + show as true when the pertinent entry + in <code class="filename">postgresql.conf</code> has been removed + (Álvaro Herrera) + </p><p> + <code class="structfield">pending_restart</code> correctly showed the case + where an entry that cannot be changed without a postmaster restart + has been modified, but not where the entry had been removed + altogether. + </p></li><li class="listitem"><p> + On 64-bit Windows, allow the effective value + of <code class="varname">work_mem</code> + times <code class="varname">hash_mem_multiplier</code> to exceed 2GB + (Tom Lane) + </p><p> + This allows <code class="varname">hash_mem_multiplier</code> to be used for + its intended purpose of preventing large hash aggregations from + spilling to disk, even when <span class="quote">“<span class="quote">large</span>”</span> means multiple + gigabytes. + </p></li><li class="listitem"><p> + Fix mis-planning of queries involving regular tables that are + inheritance children of foreign tables (Amit Langote) + </p><p> + <code class="command">SELECT FOR UPDATE</code> and related commands would fail + with assertion failures or <span class="quote">“<span class="quote">could not find junk column</span>”</span> + errors in such cases. + </p></li><li class="listitem"><p> + Fix pullup of constant function-in-FROM results when the FROM item + is marked <code class="literal">LATERAL</code> (Tom Lane) + </p></li><li class="listitem"><p> + Fix corner-case failure of a new standby to follow a new primary + (Dilip Kumar, Robert Haas) + </p><p> + Under a narrow combination of conditions, the standby could wind up + trying to follow the wrong WAL timeline. + </p></li><li class="listitem"><p> + Update minimum recovery point when WAL replay of a transaction abort + record causes file truncation (Fujii Masao) + </p><p> + File truncation is irreversible, so it's no longer safe to stop + recovery at a point earlier than that record. The corresponding + case for transaction commit was fixed years ago, but this one was + overlooked. + </p></li><li class="listitem"><p> + Advance oldest-required-WAL-segment horizon properly after a + replication slot is invalidated (Kyotaro Horiguchi) + </p><p> + If all slots were invalidated, the horizon would not move again, + eventually allowing the server's WAL storage to run out of space. + </p></li><li class="listitem"><p> + In walreceivers, avoid attempting catalog lookups after an error + (Masahiko Sawada, Bharath Rupireddy) + </p></li><li class="listitem"><p> + Ensure that a standby server's startup process will respond to a + shutdown signal promptly while waiting for WAL to arrive (Fujii + Masao, Soumyadeep Chakraborty) + </p></li><li class="listitem"><p> + Correctly clear shared state after failing to become a member of a + transaction commit group (Amit Kapila) + </p><p> + Given the right timing, this could cause an assertion failure when + some later session re-uses the same PGPROC object. + </p></li><li class="listitem"><p> + Add locking to avoid reading incorrect relmapper data in the face of + a concurrent write from another process (Heikki Linnakangas) + </p></li><li class="listitem"><p> + Improve progress reporting for the sort phase of a parallel btree + index build (Matthias van de Meent) + </p></li><li class="listitem"><p> + Improve checks for violations of replication protocol (Tom Lane) + </p><p> + Logical replication workers frequently used Asserts to check for + cases that could be triggered by invalid or out-of-order replication + commands. This seems unwise, so promote these tests to regular + error checks. + </p></li><li class="listitem"><p> + Fix assorted crash cases in logical replication of partitioned-table + updates (Amit Langote, Tom Lane) + </p></li><li class="listitem"><p> + Fix potential crash when firing AFTER triggers of partitioned tables + in logical replication workers (Tom Lane) + </p></li><li class="listitem"><p> + Fix deadlock when multiple logical replication workers try to + truncate the same table (Peter Smith, Haiying Tang) + </p></li><li class="listitem"><p> + Fix error cases and memory leaks in logical decoding of speculative + insertions (Dilip Kumar) + </p></li><li class="listitem"><p> + Fix memory leak in logical replication output (Amit Langote) + </p></li><li class="listitem"><p> + Avoid leaving an invalid record-type hash table entry behind after + an error (Sait Talha Nisanci) + </p><p> + This could lead to later crashes or memory leakage. + </p></li><li class="listitem"><p> + Fix plan cache reference leaks in some error cases in + <code class="command">CREATE TABLE ... AS EXECUTE</code> (Tom Lane) + </p></li><li class="listitem"><p> + Fix race condition in code for sharing tuple descriptors across + parallel workers (Thomas Munro) + </p><p> + Given the right timing, a crash could result. + </p></li><li class="listitem"><p> + Fix race condition when invalidating an obsolete replication slot + concurrently with an attempt to drop or update it (Andres Freund, + Álvaro Herrera) + </p></li><li class="listitem"><p> + Fix possible race condition when releasing BackgroundWorkerSlots + (Tom Lane) + </p><p> + It's likely that this doesn't fix any observable bug on Intel + hardware, but machines with weaker memory ordering rules could + have problems. + </p></li><li class="listitem"><p> + Fix latent crash in sorting code (Ronan Dunklau) + </p><p> + One code path could attempt to free a null pointer. The case + appears unreachable in the core server's use of sorting, but perhaps + it could be triggered by extensions. + </p></li><li class="listitem"><p> + Harden B-tree posting list split code against corrupt data + (Peter Geoghegan) + </p><p> + Throw an error, rather than crashing, for an attempt to insert an + item with a TID identical to an existing entry. While that + shouldn't ever happen, it has been reported to happen when the index + is inconsistent with its table. + </p></li><li class="listitem"><p> + Prevent infinite loops in SP-GiST index insertion (Tom Lane) + </p><p> + In the event that INCLUDE columns take up enough space to prevent a + leaf index tuple from ever fitting on a page, the text_ops operator + class would get into an infinite loop vainly trying to make the + tuple fit. + While pre-v11 versions don't have INCLUDE columns, back-patch this + anti-looping fix to them anyway, as it seems like a good defense + against bugs in operator classes. + </p></li><li class="listitem"><p> + Ensure that SP-GiST index insertion can be terminated by a query + cancel request (Tom Lane, Álvaro Herrera) + </p></li><li class="listitem"><p> + Fix uninitialized-variable bug that could + cause <span class="application">PL/pgSQL</span> to act as though + an <code class="literal">INTO</code> clause + specified <code class="literal">STRICT</code>, even though it didn't + (Tom Lane) + </p></li><li class="listitem"><p> + Don't abort the process for an out-of-memory failure in libpq's + printing functions (Tom Lane) + </p></li><li class="listitem"><p> + In <span class="application">ecpg</span>, allow the <code class="type">numeric</code> + value <span class="systemitem">INT_MIN</span> (usually -2147483648) to be + converted to integer (John Naylor) + </p></li><li class="listitem"><p> + In <span class="application">psql</span> and other client programs, avoid + overrunning the ends of strings when dealing with invalidly-encoded + data (Tom Lane) + </p><p> + An incorrectly-encoded multibyte character near the end of a string + could cause various processing loops to run past the string's + terminating NUL, with results ranging from no detectable issue to + a program crash, depending on what happens to be in the following + memory. This is reminiscent of CVE-2006-2313, although these + particular cases do not appear to have interesting security + consequences. + </p></li><li class="listitem"><p> + Fix <span class="application">pg_dump</span> to correctly handle triggers + on partitioned tables whose enabled status is different from their + parent triggers' status + (Justin Pryzby, Álvaro Herrera) + </p></li><li class="listitem"><p> + Avoid <span class="quote">“<span class="quote">invalid creation date in header</span>”</span> warnings + observed when running <span class="application">pg_restore</span> on an + archive file created in a different time zone (Tom Lane) + </p></li><li class="listitem"><p> + Make <span class="application">pg_upgrade</span> carry forward the old + installation's <code class="literal">oldestXID</code> value (Bertrand Drouvot) + </p><p> + Previously, the new installation's <code class="literal">oldestXID</code> was + set to a value old enough to (usually) force immediate + anti-wraparound autovacuuming. That's not desirable from a + performance standpoint; what's worse, installations using large + values of <code class="varname">autovacuum_freeze_max_age</code> could suffer + unwanted forced shutdowns soon after an upgrade. + </p></li><li class="listitem"><p> + Extend <span class="application">pg_upgrade</span> to detect and warn + about extensions that should be upgraded (Bruce Momjian) + </p><p> + A script file is now produced containing the <code class="command">ALTER + EXTENSION UPDATE</code> commands needed to bring extensions up to + the versions that are considered default in the new installation. + </p></li><li class="listitem"><p> + Avoid problems when + switching <span class="application">pg_receivewal</span> between + compressed and non-compressed WAL storage (Michael Paquier) + </p></li><li class="listitem"><p> + Fix <code class="filename">contrib/postgres_fdw</code> to work usefully with + generated columns (Etsuro Fujita) + </p><p> + <code class="filename">postgres_fdw</code> will now behave reasonably with + generated columns, so long as a generated column in a foreign table + represents a generated column in the remote table. <code class="command">IMPORT + FOREIGN SCHEMA</code> will now import generated columns that way + by default. + </p></li><li class="listitem"><p> + In <code class="filename">contrib/postgres_fdw</code>, avoid attempting + catalog lookups after an error (Tom Lane) + </p><p> + While this usually worked, it's not very safe since the error might + have been one that made catalog access nonfunctional. A side effect + of the fix is that messages about data conversion errors will now + mention the query's table and column aliases (if used) rather than + the true underlying name of a foreign table or column. + </p></li><li class="listitem"><p> + Improve the isolation-test infrastructure (Tom Lane, Michael Paquier) + </p><p> + Allow isolation test steps to be annotated to show the expected + completion order. This allows getting stable results from + otherwise-racy test cases, without the long delays that we + previously used (not entirely successfully) to fend off race + conditions. + Allow non-quoted identifiers as isolation test session/step names + (formerly, all such names had to be double-quoted). + Detect and warn about unused steps in isolation tests. + Improve display of query results in isolation tests. + Remove isolationtester's <span class="quote">“<span class="quote">dry-run</span>”</span> mode. + Remove memory leaks in isolationtester itself. + </p></li><li class="listitem"><p> + Reduce overhead of cache-clobber testing (Tom Lane) + </p></li><li class="listitem"><p> + Fix <span class="application">PL/Python</span>'s regression tests to pass + with Python 3.10 (Honza Horak) + </p></li><li class="listitem"><p> + Make <code class="literal">printf("%s", NULL)</code> + print <code class="literal">(null)</code> instead of crashing (Tom Lane) + </p><p> + This should improve server robustness in corner cases, and it syncs + our <code class="function">printf</code> implementation with common libraries. + </p></li><li class="listitem"><p> + Fix incorrect log message when point-in-time recovery stops at + a <code class="command">ROLLBACK PREPARED</code> record (Simon Riggs) + </p></li><li class="listitem"><p> + Improve <code class="command">ALTER TABLE</code>'s messages for + wrong-relation-kind errors (Kyotaro Horiguchi) + </p></li><li class="listitem"><p> + Clarify error messages referring to <span class="quote">“<span class="quote">non-negative</span>”</span> + values (Bharath Rupireddy) + </p></li><li class="listitem"><p> + Fix <span class="application">configure</span> to work with OpenLDAP 2.5, + which no longer has a separate <code class="filename">libldap_r</code> + library (Adrian Ho, Tom Lane) + </p><p> + If there is no <code class="filename">libldap_r</code> library, we now + silently assume that <code class="filename">libldap</code> is thread-safe. + </p></li><li class="listitem"><p> + Add new make targets <code class="literal">world-bin</code> + and <code class="literal">install-world-bin</code> (Andrew Dunstan) + </p><p> + These are the same as <code class="literal">world</code> + and <code class="literal">install-world</code> respectively, except that they + do not build or install the documentation. + </p></li><li class="listitem"><p> + Fix make rule for TAP tests (<code class="literal">prove_installcheck</code>) + to work in PGXS usage (Andrew Dunstan) + </p></li><li class="listitem"><p> + Adjust JIT code to prepare for forthcoming LLVM API change + (Thomas Munro, Andres Freund) + </p><p> + LLVM 13 has made an incompatible API change that will cause crashing + of our previous JIT compiler. + </p></li><li class="listitem"><p> + Avoid assuming that strings returned by GSSAPI libraries are + null-terminated (Tom Lane) + </p><p> + The GSSAPI spec provides for a string pointer and length. It seems + that in practice the next byte after the string is usually zero, + so that our previous coding didn't actually fail; but we do have + a report of AddressSanitizer complaints. + </p></li><li class="listitem"><p> + Enable building with GSSAPI on MSVC (Michael Paquier) + </p><p> + Fix various incompatibilities with modern Kerberos builds. + </p></li><li class="listitem"><p> + In MSVC builds, include <code class="option">--with-pgport</code> in the set of + configure options reported by <span class="application">pg_config</span>, + if it had been specified (Andrew Dunstan) + </p></li></ul></div></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></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-13-3.html" title="E.2. Release 13.3">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 13.4 Documentation">Home</a></td><td width="40%" align="right" valign="top"> E.2. Release 13.3</td></tr></table></div></body></html>
\ No newline at end of file |