Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
release-16-1.html466 linesDownload Raw Back to html
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">&lt;</code>434      or <code class="literal">&lt;=</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>
codekingpro/portable-devtools · Team Ai