First-draft release notes for 16.1.
authorTom Lane
Fri, 3 Nov 2023 21:54:08 +0000 (17:54 -0400)
committerTom Lane
Fri, 3 Nov 2023 21:54:17 +0000 (17:54 -0400)
As usual, the release notes for other branches will be made by cutting
these down, but put them up for community review first.

Also as usual for a .1 release, there are some entries here that
are not really relevant for v16 because they already appeared in 16.0.
Those'll be removed later.

doc/src/sgml/release-16.sgml

index 5e75127f0c75d02fd4d4ffc765b8f829461dd8b8..cc04f83bd2825c7857dbb3ce56fad921ee80b6e5 100644 (file)
 
 
 
+  Release 16.1
+
+  
+  Release date:
+  2023-11-09
+  
+
+  
+   This release contains a variety of fixes from 16.0.
+   For information about new features in major release 16, see
+   .
+  
+
+  
+   Migration to Version 16.1
+
+   
+    A dump/restore is not required for those running 16.X.
+   
+
+   
+    However, several mistakes have been discovered that could lead to
+    certain types of indexes yielding wrong search results or being
+    unnecessarily inefficient.  It is advisable
+    to REINDEX potentially-affected indexes after
+    installing this update.  See the first through fourth changelog
+    entries below.
+   
+  
+
+  
+   Changes
+
+   
+
+    
+
+     
+      Fix misbehavior during recursive page split in GiST index build
+      (Heikki Linnakangas)
+     
+
+     
+      Fix a case where the location of a page downlink was incorrectly
+      tracked, and introduce some logic to allow recovering from such
+      situations rather than silently doing the wrong thing.  This error
+      could result in incorrect answers from subsequent index searches.
+      It may be advisable to reindex all GiST indexes after installing
+      this update.
+     
+    
+
+    
+
+     
+      Prevent de-duplication of btree index entries
+      for interval columns (Noah Misch)
+     
+
+     
+      There are interval values that are distinguishable but
+      compare equal, for example 24:00:00
+      and 1 day.  This breaks assumptions made by btree
+      de-duplication, so interval columns need to be excluded
+      from de-duplication.  This oversight can cause incorrect results
+      from index-only scans.  Moreover, after
+      updating amcheck will report an error for
+      almost all such indexes.  Users should reindex any btree indexes
+      on interval columns.
+     
+    
+
+    
+
+     
+      Process date values more sanely in
+      BRIN datetime_minmax_multi_ops indexes
+      (Tomas Vondra)
+     
+
+     
+      The distance calculation for dates was backward, causing poor
+      decisions about which entries to merge.  The index still produces
+      correct results, but is much less efficient than it should be.
+      Reindexing BRIN minmax_multi indexes
+      on date columns is advisable.
+     
+    
+
+    
+
+     
+      Process large timestamp and timestamptz
+      values more sanely in
+      BRIN datetime_minmax_multi_ops indexes
+      (Tomas Vondra)
+     
+
+     
+      Infinities were mistakenly treated as having distance zero rather
+      than a large distance from other values, causing poor decisions
+      about which entries to merge.  Also, finite-but-very-large values
+      (near the endpoints of the representable timestamp range) could
+      result in internal overflows, again causing poor decisions.  The
+      index still produces correct results, but is much less efficient
+      than it should be.  Reindexing BRIN minmax_multi
+      indexes on timestamp and timestamptz
+      columns is advisable if the column contains, or has contained,
+      infinities or large finite values.
+     
+    
+
+    
+
+     
+      Avoid calculation overflows in
+      BRIN interval_minmax_multi_ops indexes with
+      extreme interval values (Tomas Vondra)
+     
+
+     
+      This bug might have caused unexpected failures while trying to
+      insert large interval values into such an index.
+     
+    
+
+    
+
+     
+      Fix partition step generation and runtime partition pruning for
+      hash-partitioned tables with multiple partition keys (David Rowley)
+     
+
+     
+      Some cases involving an IS NULL condition on one
+      of the partition keys could result in a crash.
+     
+    
+
+    
+
+     
+      Fix inconsistent rechecking of concurrently-updated rows
+      during MERGE (Dean Rasheed)
+     
+
+     
+      In READ COMMITTED mode, an update that finds that
+      its target row was just updated by a concurrent transaction will
+      recheck the query's WHERE conditions on the
+      updated row.  MERGE failed to ensure that the
+      proper rows of other joined tables were used during this recheck,
+      possibly resulting in incorrect decisions about whether the
+      newly-updated row should be updated again
+      by MERGE.
+     
+    
+
+    
+
+     
+      Correctly identify the target table in an
+      inherited UPDATE/DELETE/MERGE
+      even when the parent table is excluded by constraints (Amit Langote,
+      Tom Lane)
+     
+
+     
+      If the initially-named table is excluded by constraints, but not all
+      its inheritance descendants are, the first non-excluded descendant
+      was identified as the primary target table.  This would lead to
+      firing statement-level triggers associated with that table, rather
+      than the initially-named table as should happen.  In v16, the same
+      oversight could also lead to invalid perminfoindex 0 in RTE
+      with relid NNNN errors.
+     
+    
+
+    
+
+     
+      Fix edge case in btree mark/restore processing of ScalarArrayOpExpr
+      clauses (Peter Geoghegan)
+     
+
+     
+      When restoring an indexscan to a previously marked position, the
+      code could miss required setup steps if the scan had advanced
+      exactly to the end of the matches for a ScalarArrayOpExpr (that is,
+      an indexcol = ANY(ARRAY[])) clause.  This could
+      result in missing some rows that should have been fetched.
+     
+    
+
+    
+
+     
+      Fix intra-query memory leak in Memoize execution
+      (Orlov Aleksej, David Rowley)
+     
+    
+
+    
+
+     
+      Fix intra-query memory leak when a set-returning function repeatedly
+      returns zero rows (Tom Lane)
+     
+    
+
+    
+
+     
+      Don't crash if cursor_to_xmlschema() is applied
+      to a non-data-returning Portal (Boyu Yang)
+     
+    
+
+    
+
+     
+      Fix improper sharing of origin filter condition across
+      successive pg_logical_slot_get_changes() calls
+      (Hou Zhijie)
+     
+
+     
+      The origin condition set by one call of this function would be
+      re-used by later calls that did not specify the origin argument.
+      This was not intended.
+     
+    
+
+    
+
+     
+      Throw the intended error if pgrowlocks() is
+      applied to a partitioned table (David Rowley)
+     
+
+     
+      Previously, a not-on-point complaint only heap AM is
+      supported would be raised.
+     
+    
+
+    
+
+     
+      Handle invalid indexes more cleanly in assorted SQL functions
+      (Noah Misch)
+     
+
+     
+      Report an error if pgstatindex(),
+      pgstatginindex(),
+      pgstathashindex(),
+      or pgstattuple() is applied to an invalid
+      index.  If brin_desummarize_range(),
+      brin_summarize_new_values(),
+      brin_summarize_range(),
+      or gin_clean_pending_list() is applied to an
+      invalid index, do nothing except to report a debug-level message.
+      Formerly these functions attempted to process the index, and might
+      fail in strange ways depending on what the failed CREATE
+      INDEX had left behind.
+     
+    
+
+    
+
+     
+      Fix pg_stat_reset_single_table_counters() to do
+      the right thing for a shared catalog (Masahiro Ikeda)
+     
+
+     
+      Previously the reset would be ineffective.
+     
+    
+
+    
+
+     
+      Avoid premature memory allocation failure with long inputs
+      to to_tsvector() (Tom Lane)
+     
+    
+
+    
+
+     
+      Fix over-allocation of the constructed tsvector
+      in tsvectorrecv() (Denis Erokhin)
+     
+
+     
+      If the incoming vector includes position data, the binary receive
+      function left wasted space (roughly equal to the size of the
+      position data) in the finished tsvector.  In extreme
+      cases this could lead to maximum total lexeme length
+      exceeded failures for vectors that were under the length
+      limit when emitted.  In any case it could lead to wasted space
+      on-disk.
+     
+    
+
+    
+
+     
+      Fix incorrect coding in gtsvector_picksplit()
+      (Alexander Lakhin)
+     
+
+     
+      This could lead to poor page-split decisions in GiST indexes
+      on tsvector columns.
+     
+    
+
+    
+
+     
+      Improve checks for corrupt PGLZ compressed data (Flavien Guedez)
+     
+    
+
+    
+
+     
+      Fix ALTER SUBSCRIPTION so that a commanded change
+      in the run_as_owner option is actually applied
+      (Hou Zhijie)
+     
+    
+
+    
+
+     
+      Fix COMMIT AND CHAIN/ROLLBACK AND
+      CHAIN to work properly when there is an unreleased
+      savepoint (Liu Xiang, Tom Lane)
+     
+
+     
+      Instead of propagating the current transaction's properties to the
+      new transaction, they propagated some previous transaction's
+      properties.
+     
+    
+
+    
+
+     
+      Fix bulk table insertion into partitioned tables (Andres Freund)
+     
+
+     
+      Improper sharing of insertion state across partitions could result
+      in failures during COPY FROM, typically
+      manifesting as could not read block NNNN in file XXXX: read
+      only 0 of 8192 bytes errors.
+     
+    
+
+    
+
+     
+      In COPY FROM, avoid evaluating column default
+      values that will not be needed by the command (Laurenz Albe)
+     
+
+     
+      This avoids a possible error if the default value isn't actually
+      valid for the column, or if the default's expression would fail in
+      the current execution context.  Such edge cases sometimes arise
+      while restoring dumps, for example.  Previous releases did not fail
+      in this situation, so prevent v16 from doing so.
+     
+    
+
+    
+
+     
+      In COPY FROM, fail cleanly when an unsupported
+      encoding conversion is needed (Tom Lane)
+     
+
+     
+      Recent refactoring accidentally removed the intended error check for
+      this, such that it ended in cache lookup failed for function
+      0 instead of a useful error message.
+     
+    
+
+    
+
+     
+      Avoid crash in EXPLAIN if a parameter marked to
+      be displayed by EXPLAIN has a NULL boot-time
+      value (Xing Guo, Aleksander Alekseev, Tom Lane)
+     
+
+     
+      No built-in parameter fits this description, but an extension could
+      define such a parameter.
+     
+    
+
+    
+
+     
+      Ensure we have a snapshot while dropping ON COMMIT
+      DROP temp tables (Tom Lane)
+     
+
+     
+      This prevents possible misbehavior if any catalog entries for the
+      temp tables have fields wide enough to require toasting (such as a
+      very complex CHECK condition).
+     
+    
+
+    
+
+     
+      Avoid improper response to shutdown signals in child processes
+      just forked by system() (Nathan Bossart)
+     
+
+     
+      This fix avoids a race condition in which a child process that has
+      been forked off by system(), but hasn't yet
+      exec'd the intended child program, might receive and act on a signal
+      intended for the parent server process.  That would lead to
+      duplicate cleanup actions being performed, which will not end well.
+     
+    
+
+    
+
+     
+      Cope with torn reads of pg_control in frontend
+      programs (Thomas Munro)
+     
+
+     
+      On some file systems, reading pg_control may
+      not be an atomic action when the server concurrently writes that
+      file.  This is detectable via a bad CRC.  Retry a few times to see
+      if the file becomes valid before we report error.
+     
+    
+
+    
+
+     
+      Avoid torn reads of pg_control in relevant SQL
+      functions (Thomas Munro)
+     
+
+     
+      Acquire the appropriate lock before
+      reading pg_control, to ensure we get a
+      consistent view of that file.
+     
+    
+
+    
+
+     
+      Fix could not find pathkey item to sort errors
+      occurring while planning aggregate functions with ORDER
+      BY or DISTINCT options (David Rowley)
+     
+    
+
+    
+
+     
+      Avoid integer overflow when computing size of backend activity
+      string array (Jakub Wartak)
+     
+
+     
+      On 64-bit machines we will allow values
+      of track_activity_query_size large enough to
+      cause 32-bit overflow when multiplied by the allowed number of
+      connections.  The code actually allocating the per-backend local
+      array was careless about this though, and allocated the array
+      incorrectly.
+     
+    
+
+    
+
+     
+      Fix briefly showing inconsistent progress statistics
+      for ANALYZE on inherited tables
+      (Heikki Linnakangas)
+     
+
+     
+      The block-level counters should be reset to zero at the same time we
+      update the current-relation field.
+     
+    
+
+    
+
+     
+      Fix the background writer to report any WAL writes it makes to the
+      statistics counters (Nazir Bilal Yavuz)
+     
+    
+
+    
+
+     
+      Fix confusion about forced-flush behavior
+      in pgstat_report_wal()
+      (Ryoga Yoshida, Michael Paquier)
+     
+
+     
+      This could result in some statistics about WAL I/O being forgotten
+      in a shutdown.
+     
+    
+
+    
+
+     
+      Fix statistics tracking of temporary-table extensions (Karina
+      Litskevich, Andres Freund)
+     
+
+     
+      These were counted as normal-table writes when they should be
+      counted as temp-table writes.
+     
+    
+
+    
+
+     
+      When track_io_timing is enabled, include the
+      time taken by relation extension operations as write time
+      (Nazir Bilal Yavuz)
+     
+    
+
+    
+
+     
+      Track the dependencies of cached CALL statements,
+      and re-plan them when needed (Tom Lane)
+     
+
+     
+      DDL commands, such as replacement of a function that has been
+      inlined into a CALL argument, can create the need
+      to re-plan a CALL that has been cached by
+      PL/pgSQL.  That was not happening, leading to misbehavior or strange
+      errors such as cache lookup failed.
+     
+    
+
+    
+
+     
+      Avoid a possible pfree-a-NULL-pointer crash after an error in
+      OpenSSL connection setup (Sergey Shinderuk)
+     
+    
+
+    
+
+     
+      Track nesting depth correctly when
+      inspecting RECORD-type Vars from outer query levels
+      (Richard Guo)
+     
+
+     
+      This oversight could lead to assertion failures, core dumps,
+      or bogus varno errors.
+     
+    
+
+    
+
+     
+      Avoid record type has not been registered failure
+      when deparsing a view that contains references to fields of
+      composite constants (Tom Lane)
+     
+    
+
+    
+
+     
+      Allow extracting fields from
+      a RECORD-type ROW() expression
+      (Tom Lane)
+     
+
+     
+      SQL code that knows that we name such
+      fields f1f2, etc can use
+      those names to extract fields from the expression.  This change was
+      originally made in version 13, and is now being back-patched into
+      older branches to support tests for a related bug.
+     
+    
+
+    
+
+     
+      Track hash function and negator function dependencies of
+      ScalarArrayOpExpr plan nodes (David Rowley)
+     
+
+     
+      In most cases this oversight was harmless, since these functions
+      would be unlikely to disappear while the node's original operator
+      remains present.
+     
+    
+
+    
+
+     
+      Fix error-handling bug in RECORD type cache management
+      (Thomas Munro)
+     
+
+     
+      An out-of-memory error occurring at just the wrong point could leave
+      behind inconsistent state that would lead to an infinite loop.
+     
+    
+
+    
+
+     
+      Fix assertion failure when logical decoding is retried in the same
+      session after an error (Hou Zhijie)
+     
+    
+
+    
+
+     
+      Treat out-of-memory failures as fatal while reading WAL
+      (Michael Paquier)
+     
+
+     
+      Previously this would be treated as a bogus-data condition, leading
+      to the conclusion that we'd reached the end of WAL, which is
+      incorrect and could lead to inconsistent WAL replay.
+     
+    
+
+    
+
+     
+      Fix possible recovery failure due to trying to allocate memory based
+      on a bogus WAL record length field (Thomas Munro, Michael Paquier)
+     
+    
+
+    
+
+     
+      Ensure that standby-mode WAL recovery reports an error when an
+      invalid page header is found (Yugo Nagata, Kyotaro Horiguchi)
+     
+    
+
+    
+
+     
+      Fix race condition in database dropping that could lead to the
+      autovacuum launcher getting stuck (Andres Freund, Will Mortensen,
+      Jacob Speidel)
+     
+
+     
+      The race could lead to a statistics entry for the removed database
+      remaining present, confusing the launcher's selection of which
+      database to process.
+     
+    
+
+    
+
+     
+      Fix datatype size confusion in logical tape management
+      (Ranier Vilela)
+     
+
+     
+      Integer overflow was possible on platforms where long is wider than
+      int, although it would take a multiple-terabyte temporary file to
+      cause a problem.
+     
+    
+
+    
+
+     
+      Avoid unintended close of syslogger process's stdin
+      (Heikki Linnakangas)
+     
+    
+
+    
+
+     
+      Avoid doing plan cache revalidation of utility statements
+      that do not receive interesting processing during parse analysis
+      (Tom Lane)
+     
+
+     
+      Aside from saving a few cycles, this prevents failure after a cache
+      invalidation for statements that must not set a snapshot, such
+      as SET TRANSACTION ISOLATION LEVEL.
+     
+    
+
+    
+
+     
+      Keep by-reference attmissingval values in
+      a long-lived context while they are being used (Andrew Dunstan)
+     
+
+     
+      This avoids possible use of dangling pointers when a tuple slot
+      outlives the tuple descriptor with which its value was constructed.
+     
+    
+
+    
+
+     
+      Recalculate the effective value of search_path
+      after ALTER ROLE (Jeff Davis)
+     
+
+     
+      This ensures that after renaming a role, the meaning of the special
+      string $user is re-determined.
+     
+    
+
+    
+
+     
+      Fix could not duplicate handle error occurring on
+      Windows when min_dynamic_shared_memory is set
+      above zero (Thomas Munro)
+     
+    
+
+    
+
+     
+      Fix order of operations in GenericXLogFinish
+      (Jeff Davis)
+     
+
+     
+      This code violated the conditions required for crash safety by
+      writing WAL before marking changed buffers dirty.  No core code uses
+      this function, but extensions do (contrib/bloom
+      does, for example).
+     
+    
+
+    
+
+     
+      Remove incorrect assertion in PL/Python exception handling
+      (Alexander Lakhin)
+     
+    
+
+    
+
+     
+      Fix pg_dump to dump the
+      new run_as_owner option of subscriptions
+      (Philip Warner)
+     
+
+     
+      Due to this oversight, subscriptions would always be restored
+      with run_as_owner set
+      to false, which is not equivalent to their
+      behavior in pre-v16 releases.
+     
+    
+
+    
+
+     
+      Fix assertion failure in pg_dump when
+      it's asked to dump the pg_catalog schema (Peter
+      Eisentraut)
+     
+    
+
+    
+
+     
+      Fix pg_restore so that selective restores
+      will include both table-level and column-level ACLs for selected
+      tables (Euler Taveira, Tom Lane)
+     
+
+     
+      Formerly, only the table-level ACL would get restored if both types
+      were present.
+     
+    
+
+    
+
+     
+      Add logic to pg_upgrade to check for use
+      of abstimereltime,
+      and tinterval data types (Álvaro Herrera)
+     
+
+     
+      These obsolete data types were removed
+      in PostgreSQL version 12, so check to
+      make sure they aren't present in an older database before claiming
+      it can be upgraded.
+     
+    
+
+    
+
+     
+      Avoid generating invalid temporary slot names
+      in pg_basebackup (Jelte Fennema)
+     
+
+     
+      This has only been seen to occur when the server connection runs
+      through pgbouncer.
+     
+    
+
+    
+
+     
+      Avoid false too many client connections errors
+      in pgbench on Windows (Noah Misch)
+     
+    
+
+    
+
+     
+      Fix vacuumdb's handling of
+      multiple  switches (Nathan Bossart, Kuwamura
+      Masaki)
+     
+
+     
+      Multiple  switches should exclude tables
+      in multiple schemas, but in fact excluded nothing due to faulty
+      construction of a generated query.
+     
+    
+
+    
+
+     
+      Fix vacuumdb to honor
+      its  option in analyze-only
+      mode (Ryoga Yoshida, David Rowley)
+     
+    
+
+    
+
+     
+      In contrib/amcheck, do not report interrupted
+      page deletion as corruption (Noah Misch)
+     
+
+     
+      This fix prevents false-positive reports of the first child
+      of leftmost target page is not leftmost of its
+      level, block NNNN is not leftmost
+      or left link/right link pair in index XXXX not in
+      agreement.  They appeared
+      if amcheck ran after an unfinished btree
+      index page deletion and before VACUUM had cleaned
+      things up.
+     
+    
+
+    
+
+     
+      Fix failure of contrib/btree_gin indexes
+      on interval columns,
+      when an indexscan using the <
+      or <= operator is performed (Dean Rasheed)
+     
+
+     
+      Such an indexscan failed to return all the entries it should.
+     
+    
+
+    
+
+     
+      Add support for LLVM 16 and 17 (Thomas Munro, Dmitry Dolgov)
+     
+    
+
+    
+
+     
+      Suppress assorted build-time warnings on
+      recent macOS (Tom Lane)
+     
+
+     
+      Xcode 15 (released
+      with macOS Sonoma) changed the linker's
+      behavior in a way that causes many duplicate-library warnings while
+      building PostgreSQL.  These were
+      harmless, but they're annoying so avoid citing the same libraries
+      twice.  Also remove use of the 
+      suppress linker switch, which apparently has been a no-op
+      for a long time, and is now actively complained of.
+     
+    
+
+    
+
+     
+      When building contrib/unaccent's rules file,
+      fall back to using python
+      if --with-python was not given and make
+      variable PYTHON was not set (Japin Li)
+     
+    
+
+    
+
+     
+      Remove PHOT (Phoenix Islands Time) from the
+      default timezone abbreviations list (Tom Lane)
+     
+
+     
+      Presence of this abbreviation in the default list can cause failures
+      on recent Debian and Ubuntu releases, as they no longer install the
+      underlying tzdb entry by default.  Since this is a made-up
+      abbreviation for a zone with a total human population of about two
+      dozen, it seems unlikely that anyone will miss it.  If someone does,
+      they can put it back via a custom abbreviations file.
+     
+    
+
+   
+
+  
+
  
   Release 16
 
@@ -1328,7 +2884,7 @@ Author: Fujii Masao 
 
 
 
       
@@ -2226,7 +3782,7 @@ Author: John Naylor 
 
 
 
      
@@ -2743,7 +4299,7 @@ Author: Tom Lane 
 Author: Michael Paquier 
 2022-08-15 [f6c750d31] Improve tab completion of ALTER TYPE in psql
 Author: Michael Paquier 
-2022-09-06 [4cbe57974] Add psql tab compression for SET COMPRESSION with ALTER 
+2022-09-06 [4cbe57974] Add psql tab compression for SET COMPRESSION with ALTER
 Author: Michael Paquier 
 2022-09-10 [6afcab6ac] Add psql tab compression for ALTER TABLE .. { OF | NOT O
 Author: Michael Paquier 
@@ -2954,7 +4510,7 @@ Author: Tom Lane 
 
 
 
      
@@ -3512,7 +5068,7 @@ Author: Michael Paquier 
 
 
 
      
@@ -3547,7 +5103,7 @@ Author: Andrew Dunstan