First-draft release notes for 14.2.
authorTom Lane
Fri, 4 Feb 2022 19:55:00 +0000 (14:55 -0500)
committerTom Lane
Fri, 4 Feb 2022 19:55:00 +0000 (14:55 -0500)
As usual, the release notes for older branches will be made by cutting
these down, but put them up for community review first.

doc/src/sgml/release-14.sgml

index 0c76ddd2c95bd74d47f7ae44bb3e24a57e39643a..82f961d228198eb1d1354a89b5b5f1bfc6cdde48 100644 (file)
 
 
 
+  Release 14.2
+
+  
+  Release date:
+  2022-02-10
+  
+
+  
+   This release contains a variety of fixes from 14.1.
+   For information about new features in major release 14, see
+   .
+  
+
+  
+   Migration to Version 14.2
+
+   
+    A dump/restore is not required for those running 14.X.
+   
+
+   
+    However, some bugs have been found that may have resulted in
+    corrupted indexes, as explained in the first two changelog entries.
+    If any of those cases apply to you, it's recommended to reindex
+    possibly-affected indexes after updating.
+   
+
+   
+    Also, if you are upgrading from a version earlier than 14.1,
+    see .
+   
+  
+
+  
+   Changes
+
+   
+
+    
+
+     
+      Fix corruption of HOT chains when a RECENTLY_DEAD tuple changes
+      state to fully DEAD during page pruning (Andres Freund)
+     
+
+     
+      This happens when the last transaction that could see
+      the tuple ends while the page is being pruned.  It was then possible
+      to remove a tuple that is pointed to by a redirect item elsewhere on
+      the page.  While that causes no immediate problem, when the item slot
+      is re-used by some new tuple, that tuple would be thought to be part
+      of the pre-existing HOT chain, creating a form of index corruption.
+      If this seems to have affected a table, REINDEX
+      should repair the damage.
+     
+    
+
+    
+
+     
+      Enforce standard locking protocol for TOAST table updates, to prevent
+      problems with REINDEX CONCURRENTLY (Michael Paquier)
+     
+
+     
+      If applied to a TOAST table or TOAST table's index, REINDEX
+      CONCURRENTLY tended to produce a corrupted index.  This
+      happened because sessions updating TOAST entries released
+      their ROW EXCLUSIVE locks immediately, rather
+      than holding them until transaction commit as all other updates do.
+      The fix is to make TOAST updates hold the table lock according to the
+      normal rule.  Any existing corrupted indexes can be repaired by
+      reindexing again.
+     
+    
+
+    
+
+     
+      Fix crash in EvalPlanQual rechecks for tables with a mix of local
+      and foreign partitions (Etsuro Fujita)
+     
+    
+
+    
+
+     
+      Fix dangling pointer in COPY TO
+      (Bharath Rupireddy)
+     
+
+     
+      This oversight could cause an incorrect error message or a crash
+      after an error in COPY.
+     
+    
+
+    
+
+     
+      Avoid null-pointer crash in ALTER STATISTICS
+      when the statistics object is dropped concurrently (Tomas Vondra)
+     
+    
+
+    
+
+     
+      Correctly handle alignment padding when extracting a range from a
+      multirange (Alexander Korotkov)
+     
+
+     
+      This error could cause crashes when handling multiranges over
+      variable-length data types.
+     
+    
+
+    
+
+     
+      Fix over-optimistic use of hashing for
+      anonymous RECORD data types (Tom Lane)
+     
+
+     
+      This prevents some cases of could not identify a hash
+      function for type record errors.
+     
+    
+
+    
+
+     
+      Fix incorrect plan creation for parallel single-child Append nodes
+      (David Rowley)
+     
+
+     
+      In some cases the Append would be simplified away when it should not
+      be, leading to wrong query results (duplicated rows).
+     
+    
+
+    
+
+     
+      Fix index-only scan plans for cases where not all index columns can
+      be returned (Tom Lane)
+     
+
+     
+      If an index has both returnable and non-returnable columns, and one
+      of the non-returnable columns is an expression using a table column
+      that appears in a returnable index column, then a query using that
+      expression could result in an index-only scan plan that attempts to
+      read the non-returnable column, instead of recomputing the
+      expression from the returnable column as intended.  The
+      non-returnable column would read as NULL, resulting in wrong query
+      results.
+     
+    
+
+    
+
+     
+      Fix Memoize plan nodes to handle subplans that use parameters
+      coming from above the Memoize (David Rowley)
+     
+    
+
+    
+
+     
+      Fix Memoize plan nodes to work correctly with non-hashable join
+      operators (David Rowley)
+     
+    
+
+    
+
+     
+      Ensure that casting to an unspecified typmod generates a RelabelType
+      node rather than a length-coercion function call (Tom Lane)
+     
+
+     
+      While the coercion function should do the right thing (nothing),
+      this translation is undesirably inefficient.
+     
+    
+
+    
+
+     
+      Fix checking of anycompatible-family data type matches
+      (Tom Lane)
+     
+
+     
+      In some cases the parser would think that a function or operator
+      with anycompatible-family polymorphic parameters
+      matches a set of arguments that it really shouldn't match.  In
+      reported cases, that led to matching more than one operator to a
+      call, leading to ambiguous-operator errors; but a failure later on
+      is also possible.
+     
+    
+
+    
+
+     
+      Fix WAL replay failure when database consistency is reached exactly
+      at a WAL page boundary (Álvaro Herrera)
+     
+    
+
+    
+
+     
+      Fix startup of a physical replica to tolerate transaction ID
+      wraparound (Abhijit Menon-Sen, Tomas Vondra)
+     
+
+     
+      If a replica server is started while the set of active transactions
+      on the primary crosses a wraparound boundary (so that there are some
+      newer transactions with smaller XIDs than older ones), the replica
+      would fail with out-of-order XID insertion in
+      KnownAssignedXids.  The replica would retry, but could never
+      get past that error.
+     
+    
+
+    
+
+     
+      In logical replication, avoid double transmission of a child table's
+      data (Hou Zhijie)
+     
+
+     
+      If a publication includes both child and parent tables, and has
+      the publish_via_partition_root option set,
+      subscribers uselessly initiated synchronization on both child and
+      parent tables.  Ensure that only the parent table is synchronized in
+      such cases.
+     
+    
+
+    
+
+     
+      Remove lexical limitations for SQL commands issued on a logical
+      replication connection (Tom Lane)
+     
+
+     
+      The walsender process would fail for a SQL command containing an
+      unquoted semicolon, or with dollar-quoted literals containing odd
+      numbers of single or double quote marks, or when the SQL command
+      starts with a comment.  Moreover, faulty error recovery could lead
+      to unexpected errors in later commands too.
+     
+    
+
+    
+
+     
+      Ensure that replication origin timestamp is set while replicating
+      a ROLLBACK PREPARED operation (Masahiko Sawada)
+     
+    
+
+    
+
+     
+      Fix possible loss of the commit timestamp for the last
+      subtransaction of a transaction (Alex Kingsborough, Kyotaro Horiguchi)
+     
+    
+
+    
+
+     
+      Be sure to fsync
+      the pg_logical/mappings subdirectory during
+      checkpoints (Nathan Bossart)
+     
+
+     
+      On some filesystems this oversight could lead to losing logical
+      rewrite status files after a system crash.
+     
+    
+
+    
+
+     
+      Build extended statistics for partitioned tables (Justin Pryzby)
+     
+
+     
+      A previous bug fix disabled building of extended statistics for
+      old-style inheritance trees, but it also prevented building them for
+      partitioned tables, which was an unnecessary restriction.
+      If you have created statistics objects for partitioned tables, you
+      may wish to explicitly ANALYZE those tables after
+      installing this update, rather than waiting for auto-analyze to do it.
+     
+    
+
+    
+
+     
+      Ignore extended statistics for inheritance trees (Justin Pryzby)
+     
+
+     
+      A previous bug fix disabled building of extended statistics for
+      old-style inheritance trees, but any existing statistics data was
+      not removed, and that data would become more and more out-of-date
+      over time.  Adjust the planner to ignore such data.  Extended
+      statistics for the individual child tables are still built and used,
+      however.
+     
+    
+
+    
+
+     
+      Disallow altering data type of a partitioned table's columns when
+      the partitioned table's row type is used as a composite type
+      elsewhere (Tom Lane)
+     
+
+     
+      This restriction has long existed for regular tables, but through an
+      oversight it was not checked for partitioned tables.
+     
+    
+
+    
+
+     
+      Disallow ALTER TABLE ... DROP NOT NULL for a
+      column that is part of a replica identity index (Haiying Tang, Hou
+      Zhijie)
+     
+
+     
+      The same prohibition already existed for primary key indexes.
+     
+    
+
+    
+
+     
+      Correctly update cached table state during ALTER TABLE ADD
+      PRIMARY KEY USING INDEX (Hou Zhijie)
+     
+
+     
+      Concurrent sessions failed to update their opinion of whether the
+      table has a primary key, possibly causing incorrect logical
+      replication behavior.
+     
+    
+
+    
+
+     
+      Correctly update cached table state when switching REPLICA
+      IDENTITY index (Tang Haiying, Hou Zhijie)
+     
+
+     
+      Concurrent sessions failed to update their opinion of which index is
+      the replica identity one, possibly causing incorrect logical
+      replication behavior.
+     
+    
+
+    
+
+     
+      Fix failure of SP-GiST indexes when indexed column's data type is
+      binary-compatible with the declared input type of the operator class
+      (Tom Lane)
+     
+
+     
+      Such cases should work, but failed with compress method must
+      be defined when leaf type is different from input type.
+     
+    
+
+    
+
+     
+      Allow parallel vacuuming and concurrent index building to be ignored
+      while computing oldest xmin (Masahiko Sawada)
+     
+
+     
+      Non-parallelized instances of these operations were already ignored,
+      but the logic did not work for parallelized cases.  Holding back the
+      xmin horizon has undesirable effects such as delaying vacuum
+      cleanup.
+     
+    
+
+    
+
+     
+      Fix memory leak when updating expression indexes (Peter Geoghegan)
+     
+
+     
+      An UPDATE affecting many rows could consume
+      significant amounts of memory.
+     
+    
+
+    
+
+     
+      Avoid leaking memory during REASSIGN OWNED BY
+      operations that reassign ownership of many objects (Justin Pryzby)
+     
+    
+
+    
+
+     
+      Improve performance of walsenders sending logical changes by
+      avoiding unnecessary cache accesses (Hou Zhijie)
+     
+    
+
+    
+
+     
+      Fix display of cert authentication method's
+      options in pg_hba_file_rules view (Magnus
+      Hagander)
+     
+
+     
+      The cert authentication method implies
+      clientcert=verify-full, but the
+      pg_hba_file_rules view incorrectly reported
+      clientcert=verify-ca.
+     
+    
+
+    
+
+     
+      Ensure that the session targeted
+      by pg_log_backend_memory_contexts() sends its
+      results only to the server's log (Fujii Masao)
+     
+
+     
+      Previously, a sufficiently high setting
+      of client_min_messages could result in the log
+      message also being sent to the connected client.  Since that client
+      hadn't requested it, that would be surprising (and possibly a wire
+      protocol violation).
+     
+    
+
+    
+
+     
+      Fix display of whole-row variables appearing
+      in INSERT ... VALUES rules (Tom Lane)
+     
+
+     
+      A whole-row variable would be printed as var.*,
+      but that allows it to be expanded to individual columns when
+      the rule is reloaded, resulting in different semantics.
+      Attach an explicit cast to prevent that, as we do elsewhere.
+     
+    
+
+    
+
+     
+      When reverse-listing a SQL-standard function body, display function
+      parameters appropriately within INSERT ... SELECT
+      (Tom Lane)
+     
+
+     
+      Previously, they'd come out
+      as $N even when the
+      parameter had a name.
+     
+    
+
+    
+
+     
+      Fix one-byte buffer overrun when applying Unicode string
+      normalization to an empty string (Michael Paquier)
+     
+
+     
+      The practical impact of this is limited thanks to alignment
+      considerations; but in debug builds, a warning was raised.
+     
+    
+
+    
+
+     
+      Fix or remove some incorrect assertions (Simon Riggs, Michael
+      Paquier, Alexander Lakhin)
+     
+
+     
+      These errors should affect only debug builds, not production.
+     
+    
+
+    
+
+     
+      Fix race condition that could lead to failure to localize error
+      messages that are reported early in multi-threaded use
+      of libpq
+      or ecpglib (Tom Lane)
+     
+    
+
+    
+
+     
+      Avoid calling strerror
+      from libpq's PQcancel
+      function (Tom Lane)
+     
+
+     
+      PQcancel is supposed to be safe to call from a
+      signal handler, but strerror is not safe.  The
+      faulty usage only occurred in the unlikely event of failure to
+      send the cancel message to the server, perhaps explaining the lack
+      of reports.
+     
+    
+
+    
+
+     
+      Make psql's \password
+      command default to setting the password
+      for CURRENT_USER, not the connection's original
+      user name (Tom Lane)
+     
+
+     
+      This agrees with the documented behavior, and avoids probable
+      permissions failure if SET ROLE or SET
+      SESSION AUTHORIZATION has been done since the session began.
+      To reduce confusion, the role name to be acted on is now always
+      included in the password prompt.
+     
+    
+
+    
+
+     
+      Fix psql \d command's
+      query for identifying parent triggers (Justin Pryzby)
+     
+
+     
+      The previous coding failed with more than one row returned by
+      a subquery used as an expression if a partition had triggers
+      and there were unrelated statement-level triggers of the same name
+      on some parent partitioned table.
+     
+    
+
+    
+
+     
+      Make psql's \d command
+      sort a table's extended statistics objects by name not OID (Justin
+      Pryzby)
+     
+    
+
+    
+
+     
+      Fix psql's tab-completion of label values
+      for enum types (Tom Lane)
+     
+    
+
+    
+
+     
+      Fix failures on Windows when using the terminal as data source
+      or destination (Dmitry Koval, Juan José Santamaría Flecha, Michael
+      Paquier)
+     
+
+     
+      This affects psql's
+      \copy command, as well
+      as pg_recvlogical with
+      .
+     
+    
+
+    
+
+     
+      In psql and some other client programs,
+      avoid trying to invoke gettext() from a
+      control-C signal handler (Tom Lane)
+     
+
+     
+      While no reported failures have been traced to this mistake, it seems
+      highly unlikely to be a safe thing to do.
+     
+    
+
+    
+
+     
+      Allow canceling the initial password prompt
+      in pg_receivewal
+      and pg_recvlogical (Tom Lane, Nathan
+      Bossart)
+     
+
+     
+      Previously it was impossible to terminate these programs via control-C
+      while they were prompting for a password.
+     
+    
+
+    
+
+     
+      Fix pg_dump's dump ordering for
+      user-defined casts (Tom Lane)
+     
+
+     
+      In rare cases, the output script might refer to a user-defined cast
+      before it had been created.
+     
+    
+
+    
+
+     
+      Fix pg_dump's 
+      and   modes to handle tables
+      containing both generated columns and dropped columns (Tom Lane)
+     
+    
+
+    
+
+     
+      Fix possible mis-reporting of errors
+      in pg_dump
+      and pg_basebackup (Tom Lane)
+     
+
+     
+      The previous code failed to check for errors from some kernel calls,
+      and could report the wrong errno values in other cases.
+     
+    
+
+    
+
+     
+      Fix results of index-only scans
+      on contrib/btree_gist indexes
+      on char(N) columns (Tom Lane)
+     
+
+     
+      Index-only scans returned column values with trailing spaces
+      removed, which is not the expected behavior.  That happens because
+      that's how it's stored in the index.  This fix changes the logic to
+      store char(N) values with
+      the expected amount of space padding.  The behavior of the index
+      will not change immediately unless you REINDEX
+      it; otherwise space-stripped values will be gradually replaced over
+      time during updates.  Queries that do not use index-only scan plans
+      will be unaffected in any case.
+     
+    
+
+    
+
+     
+      Fix edge cases in postgres_fdw's handling of
+      asynchronous queries (Etsuro Fujita)
+     
+
+     
+      These errors could lead to crashes or incorrect results when
+      attempting to parallelize scans of foreign tables.
+     
+    
+
+    
+
+     
+      Change configure to use
+      Python's sysconfig module, rather than
+      the deprecated distutils module, to
+      determine how to build PL/Python (Peter Eisentraut, Tom Lane, Andres
+      Freund)
+     
+
+     
+      With Python 3.10, this
+      avoids configure-time warnings
+      about distutils being deprecated and
+      scheduled for removal in Python 3.12.  Presumably, once 3.12 is
+      out, configure --with-python would fail
+      altogether.  This future-proofing does come at a
+      cost: sysconfig did not exist before
+      Python 2.7, nor before 3.2 in the Python 3 branch, so it is no
+      longer possible to build PL/Python against long-dead Python
+      versions.
+     
+    
+
+    
+
+     
+      Re-allow cross-compilation
+      without OpenSSL (Tom Lane)
+     
+
+     
+      configure should assume
+      that /dev/urandom will be available on the
+      target system, but it failed instead.
+     
+    
+
+    
+
+     
+      Fix PL/Perl compile failure on Windows with Perl 5.28 and later
+      (Victor Wagner)
+     
+    
+
+    
+
+     
+      Fix PL/Python compile failure with Python 3.11 and later (Peter
+      Eisentraut)
+     
+    
+
+    
+
+     
+      Add support for building with Visual Studio 2022 (Hans Buschmann)
+     
+    
+
+    
+
+     
+      Allow the .bat wrapper scripts in our MSVC
+      build system to be called without first changing into their
+      directory (Anton Voloshin, Andrew Dunstan)
+     
+    
+
+   
+
+  
+
  
   Release 14.1