codekingpro/portable-devtools
114k
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>2<!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>3 This release contains a variety of fixes from 16.0.4 For information about new features in major release 16, see5 <a class="xref" href="release-16.html" title="E.4. Release 16">Section E.4</a>.6 </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>7 A dump/restore is not required for those running 16.X.8 </p><p>9 However, several mistakes have been discovered that could lead to10 certain types of indexes yielding wrong search results or being11 unnecessarily inefficient. It is advisable12 to <code class="command">REINDEX</code> potentially-affected indexes after13 installing this update. See the fourth through seventh changelog14 entries below.15 </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>16 Fix handling of unknown-type arguments17 in <code class="literal">DISTINCT</code> <code class="type">"any"</code> aggregate18 functions (Tom Lane)19 </p><p>20 This error led to a <code class="type">text</code>-type value being interpreted21 as an <code class="type">unknown</code>-type value (that is, a zero-terminated22 string) at runtime. This could result in disclosure of server23 memory following the <code class="type">text</code> value.24 </p><p>25 The <span class="productname">PostgreSQL</span> Project thanks Jingzhou Fu26 for reporting this problem.27 (CVE-2023-5868)28 </p></li><li class="listitem"><p>29 Detect integer overflow while computing new array dimensions30 (Tom Lane)31 </p><p>32 When assigning new elements to array subscripts that are outside the33 current array bounds, an undetected integer overflow could occur in34 edge cases. Memory stomps that are potentially exploitable for35 arbitrary code execution are possible, and so is disclosure of36 server memory.37 </p><p>38 The <span class="productname">PostgreSQL</span> Project thanks Pedro39 Gallegos for reporting this problem.40 (CVE-2023-5869)41 </p></li><li class="listitem"><p>42 Prevent the <code class="literal">pg_signal_backend</code> role from43 signalling background workers and autovacuum processes44 (Noah Misch, Jelte Fennema-Nio)45 </p><p>46 The documentation says that <code class="literal">pg_signal_backend</code>47 cannot issue signals to superuser-owned processes. It was able to48 signal these background processes, though, because they advertise a49 role OID of zero. Treat that as indicating superuser ownership.50 The security implications of cancelling one of these process types51 are fairly small so far as the core code goes (we'll just start52 another one), but extensions might add background workers that are53 more vulnerable.54 </p><p>55 Also ensure that the <code class="varname">is_superuser</code> parameter is56 set correctly in such processes. No specific security consequences57 are known for that oversight, but it might be significant for some58 extensions.59 </p><p>60 The <span class="productname">PostgreSQL</span> Project thanks61 Hemanth Sandrana and Mahendrakar Srinivasarao62 for reporting this problem.63 (CVE-2023-5870)64 </p></li><li class="listitem"><p>65 Fix misbehavior during recursive page split in GiST index build66 (Heikki Linnakangas)67 </p><p>68 Fix a case where the location of a page downlink was incorrectly69 tracked, and introduce some logic to allow recovering from such70 situations rather than silently doing the wrong thing. This error71 could result in incorrect answers from subsequent index searches.72 It may be advisable to reindex all GiST indexes after installing73 this update.74 </p></li><li class="listitem"><p>75 Prevent de-duplication of btree index entries76 for <code class="type">interval</code> columns (Noah Misch)77 </p><p>78 There are <code class="type">interval</code> values that are distinguishable but79 compare equal, for example <code class="literal">24:00:00</code>80 and <code class="literal">1 day</code>. This breaks assumptions made by btree81 de-duplication, so <code class="type">interval</code> columns need to be excluded82 from de-duplication. This oversight can cause incorrect results83 from index-only scans. Moreover, after84 updating <span class="application">amcheck</span> will report an error for85 almost all such indexes. Users should reindex any btree indexes86 on <code class="type">interval</code> columns.87 </p></li><li class="listitem"><p>88 Process <code class="type">date</code> values more sanely in89 BRIN <code class="literal">datetime_minmax_multi_ops</code> indexes90 (Tomas Vondra)91 </p><p>92 The distance calculation for dates was backward, causing poor93 decisions about which entries to merge. The index still produces94 correct results, but is much less efficient than it should be.95 Reindexing BRIN <code class="literal">minmax_multi</code> indexes96 on <code class="type">date</code> columns is advisable.97 </p></li><li class="listitem"><p>98 Process large <code class="type">timestamp</code> and <code class="type">timestamptz</code>99 values more sanely in100 BRIN <code class="literal">datetime_minmax_multi_ops</code> indexes101 (Tomas Vondra)102 </p><p>103 Infinities were mistakenly treated as having distance zero rather104 than a large distance from other values, causing poor decisions105 about which entries to merge. Also, finite-but-very-large values106 (near the endpoints of the representable timestamp range) could107 result in internal overflows, again causing poor decisions. The108 index still produces correct results, but is much less efficient109 than it should be. Reindexing BRIN <code class="literal">minmax_multi</code>110 indexes on <code class="type">timestamp</code> and <code class="type">timestamptz</code>111 columns is advisable if the column contains, or has contained,112 infinities or large finite values.113 </p></li><li class="listitem"><p>114 Avoid calculation overflows in115 BRIN <code class="literal">interval_minmax_multi_ops</code> indexes with116 extreme interval values (Tomas Vondra)117 </p><p>118 This bug might have caused unexpected failures while trying to119 insert large interval values into such an index.120 </p></li><li class="listitem"><p>121 Fix partition step generation and runtime partition pruning for122 hash-partitioned tables with multiple partition keys (David Rowley)123 </p><p>124 Some cases involving an <code class="literal">IS NULL</code> condition on one125 of the partition keys could result in a crash.126 </p></li><li class="listitem"><p>127 Fix inconsistent rechecking of concurrently-updated rows128 during <code class="command">MERGE</code> (Dean Rasheed)129 </p><p>130 In <code class="literal">READ COMMITTED</code> mode, an update that finds that131 its target row was just updated by a concurrent transaction will132 recheck the query's <code class="literal">WHERE</code> conditions on the133 updated row. <code class="command">MERGE</code> failed to ensure that the134 proper rows of other joined tables were used during this recheck,135 possibly resulting in incorrect decisions about whether the136 newly-updated row should be updated again137 by <code class="command">MERGE</code>.138 </p></li><li class="listitem"><p>139 Correctly identify the target table in an140 inherited <code class="command">UPDATE</code>/<code class="command">DELETE</code>/<code class="command">MERGE</code>141 even when the parent table is excluded by constraints (Amit Langote,142 Tom Lane)143 </p><p>144 If the initially-named table is excluded by constraints, but not all145 its inheritance descendants are, the first non-excluded descendant146 was identified as the primary target table. This would lead to147 firing statement-level triggers associated with that table, rather148 than the initially-named table as should happen. In v16, the same149 oversight could also lead to <span class="quote">“<span class="quote">invalid perminfoindex 0 in RTE150 with relid NNNN</span>”</span> errors.151 </p></li><li class="listitem"><p>152 Fix edge case in btree mark/restore processing of ScalarArrayOpExpr153 clauses (Peter Geoghegan)154 </p><p>155 When restoring an indexscan to a previously marked position, the156 code could miss required setup steps if the scan had advanced157 exactly to the end of the matches for a ScalarArrayOpExpr (that is,158 an <code class="literal">indexcol = ANY(ARRAY[])</code>) clause. This could159 result in missing some rows that should have been fetched.160 </p></li><li class="listitem"><p>161 Fix intra-query memory leak in Memoize execution162 (Orlov Aleksej, David Rowley)163 </p></li><li class="listitem"><p>164 Fix intra-query memory leak when a set-returning function repeatedly165 returns zero rows (Tom Lane)166 </p></li><li class="listitem"><p>167 Don't crash if <code class="function">cursor_to_xmlschema()</code> is applied168 to a non-data-returning Portal (Boyu Yang)169 </p></li><li class="listitem"><p>170 Fix improper sharing of origin filter condition across171 successive <code class="function">pg_logical_slot_get_changes()</code> calls172 (Hou Zhijie)173 </p><p>174 The origin condition set by one call of this function would be175 re-used by later calls that did not specify the origin argument.176 This was not intended.177 </p></li><li class="listitem"><p>178 Throw the intended error if <code class="function">pgrowlocks()</code> is179 applied to a partitioned table (David Rowley)180 </p><p>181 Previously, a not-on-point complaint <span class="quote">“<span class="quote">only heap AM is182 supported</span>”</span> would be raised.183 </p></li><li class="listitem"><p>184 Handle invalid indexes more cleanly in assorted SQL functions185 (Noah Misch)186 </p><p>187 Report an error if <code class="function">pgstatindex()</code>,188 <code class="function">pgstatginindex()</code>,189 <code class="function">pgstathashindex()</code>,190 or <code class="function">pgstattuple()</code> is applied to an invalid191 index. If <code class="function">brin_desummarize_range()</code>,192 <code class="function">brin_summarize_new_values()</code>,193 <code class="function">brin_summarize_range()</code>,194 or <code class="function">gin_clean_pending_list()</code> is applied to an195 invalid index, do nothing except to report a debug-level message.196 Formerly these functions attempted to process the index, and might197 fail in strange ways depending on what the failed <code class="command">CREATE198 INDEX</code> had left behind.199 </p></li><li class="listitem"><p>200 Avoid premature memory allocation failure with long inputs201 to <code class="function">to_tsvector()</code> (Tom Lane)202 </p></li><li class="listitem"><p>203 Fix over-allocation of the constructed <code class="type">tsvector</code>204 in <code class="function">tsvectorrecv()</code> (Denis Erokhin)205 </p><p>206 If the incoming vector includes position data, the binary receive207 function left wasted space (roughly equal to the size of the208 position data) in the finished <code class="type">tsvector</code>. In extreme209 cases this could lead to <span class="quote">“<span class="quote">maximum total lexeme length210 exceeded</span>”</span> failures for vectors that were under the length211 limit when emitted. In any case it could lead to wasted space212 on-disk.213 </p></li><li class="listitem"><p>214 Improve checks for corrupt PGLZ compressed data (Flavien Guedez)215 </p></li><li class="listitem"><p>216 Fix <code class="command">ALTER SUBSCRIPTION</code> so that a commanded change217 in the <code class="literal">run_as_owner</code> option is actually applied218 (Hou Zhijie)219 </p></li><li class="listitem"><p>220 Fix bulk table insertion into partitioned tables (Andres Freund)221 </p><p>222 Improper sharing of insertion state across partitions could result223 in failures during <code class="command">COPY FROM</code>, typically224 manifesting as <span class="quote">“<span class="quote">could not read block NNNN in file XXXX: read225 only 0 of 8192 bytes</span>”</span> errors.226 </p></li><li class="listitem"><p>227 In <code class="command">COPY FROM</code>, avoid evaluating column default228 values that will not be needed by the command (Laurenz Albe)229 </p><p>230 This avoids a possible error if the default value isn't actually231 valid for the column, or if the default's expression would fail in232 the current execution context. Such edge cases sometimes arise233 while restoring dumps, for example. Previous releases did not fail234 in this situation, so prevent v16 from doing so.235 </p></li><li class="listitem"><p>236 In <code class="command">COPY FROM</code>, fail cleanly when an unsupported237 encoding conversion is needed (Tom Lane)238 </p><p>239 Recent refactoring accidentally removed the intended error check for240 this, such that it ended in <span class="quote">“<span class="quote">cache lookup failed for function241 0</span>”</span> instead of a useful error message.242 </p></li><li class="listitem"><p>243 Avoid crash in <code class="command">EXPLAIN</code> if a parameter marked to244 be displayed by <code class="command">EXPLAIN</code> has a NULL boot-time245 value (Xing Guo, Aleksander Alekseev, Tom Lane)246 </p><p>247 No built-in parameter fits this description, but an extension could248 define such a parameter.249 </p></li><li class="listitem"><p>250 Ensure we have a snapshot while dropping <code class="literal">ON COMMIT251 DROP</code> temp tables (Tom Lane)252 </p><p>253 This prevents possible misbehavior if any catalog entries for the254 temp tables have fields wide enough to require toasting (such as a255 very complex <code class="literal">CHECK</code> condition).256 </p></li><li class="listitem"><p>257 Avoid improper response to shutdown signals in child processes258 just forked by <code class="function">system()</code> (Nathan Bossart)259 </p><p>260 This fix avoids a race condition in which a child process that has261 been forked off by <code class="function">system()</code>, but hasn't yet262 exec'd the intended child program, might receive and act on a signal263 intended for the parent server process. That would lead to264 duplicate cleanup actions being performed, which will not end well.265 </p></li><li class="listitem"><p>266 Cope with torn reads of <code class="filename">pg_control</code> in frontend267 programs (Thomas Munro)268 </p><p>269 On some file systems, reading <code class="filename">pg_control</code> may270 not be an atomic action when the server concurrently writes that271 file. This is detectable via a bad CRC. Retry a few times to see272 if the file becomes valid before we report error.273 </p></li><li class="listitem"><p>274 Avoid torn reads of <code class="filename">pg_control</code> in relevant SQL275 functions (Thomas Munro)276 </p><p>277 Acquire the appropriate lock before278 reading <code class="filename">pg_control</code>, to ensure we get a279 consistent view of that file.280 </p></li><li class="listitem"><p>281 Fix <span class="quote">“<span class="quote">could not find pathkey item to sort</span>”</span> errors282 occurring while planning aggregate functions with <code class="literal">ORDER283 BY</code> or <code class="literal">DISTINCT</code> options (David Rowley)284 </p></li><li class="listitem"><p>285 Avoid integer overflow when computing size of backend activity286 string array (Jakub Wartak)287 </p><p>288 On 64-bit machines we will allow values289 of <code class="varname">track_activity_query_size</code> large enough to290 cause 32-bit overflow when multiplied by the allowed number of291 connections. The code actually allocating the per-backend local292 array was careless about this though, and allocated the array293 incorrectly.294 </p></li><li class="listitem"><p>295 Fix briefly showing inconsistent progress statistics296 for <code class="command">ANALYZE</code> on inherited tables297 (Heikki Linnakangas)298 </p><p>299 The block-level counters should be reset to zero at the same time we300 update the current-relation field.301 </p></li><li class="listitem"><p>302 Fix the background writer to report any WAL writes it makes to the303 statistics counters (Nazir Bilal Yavuz)304 </p></li><li class="listitem"><p>305 Fix confusion about forced-flush behavior306 in <code class="function">pgstat_report_wal()</code>307 (Ryoga Yoshida, Michael Paquier)308 </p><p>309 This could result in some statistics about WAL I/O being forgotten310 in a shutdown.311 </p></li><li class="listitem"><p>312 Fix statistics tracking of temporary-table extensions (Karina313 Litskevich, Andres Freund)314 </p><p>315 These were counted as normal-table writes when they should be316 counted as temp-table writes.317 </p></li><li class="listitem"><p>318 When <code class="varname">track_io_timing</code> is enabled, include the319 time taken by relation extension operations as write time320 (Nazir Bilal Yavuz)321 </p></li><li class="listitem"><p>322 Track the dependencies of cached <code class="command">CALL</code> statements,323 and re-plan them when needed (Tom Lane)324 </p><p>325 DDL commands, such as replacement of a function that has been326 inlined into a <code class="command">CALL</code> argument, can create the need327 to re-plan a <code class="command">CALL</code> that has been cached by328 PL/pgSQL. That was not happening, leading to misbehavior or strange329 errors such as <span class="quote">“<span class="quote">cache lookup failed</span>”</span>.330 </p></li><li class="listitem"><p>331 Avoid a possible pfree-a-NULL-pointer crash after an error in332 OpenSSL connection setup (Sergey Shinderuk)333 </p></li><li class="listitem"><p>334 Track nesting depth correctly when335 inspecting <code class="type">RECORD</code>-type Vars from outer query levels336 (Richard Guo)337 </p><p>338 This oversight could lead to assertion failures, core dumps,339 or <span class="quote">“<span class="quote">bogus varno</span>”</span> errors.340 </p></li><li class="listitem"><p>341 Track hash function and negator function dependencies of342 ScalarArrayOpExpr plan nodes (David Rowley)343 </p><p>344 In most cases this oversight was harmless, since these functions345 would be unlikely to disappear while the node's original operator346 remains present.347 </p></li><li class="listitem"><p>348 Fix error-handling bug in <code class="type">RECORD</code> type cache management349 (Thomas Munro)350 </p><p>351 An out-of-memory error occurring at just the wrong point could leave352 behind inconsistent state that would lead to an infinite loop.353 </p></li><li class="listitem"><p>354 Treat out-of-memory failures as fatal while reading WAL355 (Michael Paquier)356 </p><p>357 Previously this would be treated as a bogus-data condition, leading358 to the conclusion that we'd reached the end of WAL, which is359 incorrect and could lead to inconsistent WAL replay.360 </p></li><li class="listitem"><p>361 Fix possible recovery failure due to trying to allocate memory based362 on a bogus WAL record length field (Thomas Munro, Michael Paquier)363 </p></li><li class="listitem"><p>364 Fix <span class="quote">“<span class="quote">could not duplicate handle</span>”</span> error occurring on365 Windows when <code class="varname">min_dynamic_shared_memory</code> is set366 above zero (Thomas Munro)367 </p></li><li class="listitem"><p>368 Fix order of operations in <code class="function">GenericXLogFinish</code>369 (Jeff Davis)370 </p><p>371 This code violated the conditions required for crash safety by372 writing WAL before marking changed buffers dirty. No core code uses373 this function, but extensions do (<code class="filename">contrib/bloom</code>374 does, for example).375 </p></li><li class="listitem"><p>376 Remove incorrect assertion in PL/Python exception handling377 (Alexander Lakhin)378 </p></li><li class="listitem"><p>379 Fix <span class="application">pg_dump</span> to dump the380 new <code class="literal">run_as_owner</code> option of subscriptions381 (Philip Warner)382 </p><p>383 Due to this oversight, subscriptions would always be restored384 with <code class="literal">run_as_owner</code> set385 to <code class="literal">false</code>, which is not equivalent to their386 behavior in pre-v16 releases.387 </p></li><li class="listitem"><p>388 Fix <span class="application">pg_restore</span> so that selective restores389 will include both table-level and column-level ACLs for selected390 tables (Euler Taveira, Tom Lane)391 </p><p>392 Formerly, only the table-level ACL would get restored if both types393 were present.394 </p></li><li class="listitem"><p>395 Add logic to <span class="application">pg_upgrade</span> to check for use396 of <code class="type">abstime</code>, <code class="type">reltime</code>,397 and <code class="type">tinterval</code> data types (Álvaro Herrera)398 </p><p>399 These obsolete data types were removed400 in <span class="productname">PostgreSQL</span> version 12, so check to401 make sure they aren't present in an older database before claiming402 it can be upgraded.403 </p></li><li class="listitem"><p>404 Avoid false <span class="quote">“<span class="quote">too many client connections</span>”</span> errors405 in <span class="application">pgbench</span> on Windows (Noah Misch)406 </p></li><li class="listitem"><p>407 Fix <span class="application">vacuumdb</span>'s handling of408 multiple <code class="option">-N</code> switches (Nathan Bossart, Kuwamura409 Masaki)410 </p><p>411 Multiple <code class="option">-N</code> switches should exclude tables412 in multiple schemas, but in fact excluded nothing due to faulty413 construction of a generated query.414 </p></li><li class="listitem"><p>415 Fix <span class="application">vacuumdb</span> to honor416 its <code class="option">--buffer-usage-limit</code> option in analyze-only417 mode (Ryoga Yoshida, David Rowley)418 </p></li><li class="listitem"><p>419 In <code class="filename">contrib/amcheck</code>, do not report interrupted420 page deletion as corruption (Noah Misch)421 </p><p>422 This fix prevents false-positive reports of <span class="quote">“<span class="quote">the first child423 of leftmost target page is not leftmost of its424 level</span>”</span>, <span class="quote">“<span class="quote">block NNNN is not leftmost</span>”</span>425 or <span class="quote">“<span class="quote">left link/right link pair in index XXXX not in426 agreement</span>”</span>. They appeared427 if <span class="application">amcheck</span> ran after an unfinished btree428 index page deletion and before <code class="command">VACUUM</code> had cleaned429 things up.430 </p></li><li class="listitem"><p>431 Fix failure of <code class="filename">contrib/btree_gin</code> indexes432 on <code class="type">interval</code> columns,433 when an indexscan using the <code class="literal"><</code>434 or <code class="literal"><=</code> operator is performed (Dean Rasheed)435 </p><p>436 Such an indexscan failed to return all the entries it should.437 </p></li><li class="listitem"><p>438 Add support for LLVM 16 and 17 (Thomas Munro, Dmitry Dolgov)439 </p></li><li class="listitem"><p>440 Suppress assorted build-time warnings on441 recent <span class="productname">macOS</span> (Tom Lane)442 </p><p>443 <span class="productname">Xcode 15</span> (released444 with <span class="productname">macOS Sonoma</span>) changed the linker's445 behavior in a way that causes many duplicate-library warnings while446 building <span class="productname">PostgreSQL</span>. These were447 harmless, but they're annoying so avoid citing the same libraries448 twice. Also remove use of the <code class="option">-multiply_defined449 suppress</code> linker switch, which apparently has been a no-op450 for a long time, and is now actively complained of.451 </p></li><li class="listitem"><p>452 When building <code class="filename">contrib/unaccent</code>'s rules file,453 fall back to using <code class="literal">python</code>454 if <code class="literal">--with-python</code> was not given and make455 variable <code class="literal">PYTHON</code> was not set (Japin Li)456 </p></li><li class="listitem"><p>457 Remove <code class="literal">PHOT</code> (Phoenix Islands Time) from the458 default timezone abbreviations list (Tom Lane)459 </p><p>460 Presence of this abbreviation in the default list can cause failures461 on recent Debian and Ubuntu releases, as they no longer install the462 underlying tzdb entry by default. Since this is a made-up463 abbreviation for a zone with a total human population of about two464 dozen, it seems unlikely that anyone will miss it. If someone does,465 they can put it back via a custom abbreviations file.466 </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>