First-draft release notes for 12.4.
authorTom Lane
Thu, 6 Aug 2020 19:49:45 +0000 (15:49 -0400)
committerTom Lane
Thu, 6 Aug 2020 19:49:45 +0000 (15:49 -0400)
As usual, the release notes for other branches will be made by cutting
these down, but put them up for community review first.

doc/src/sgml/release-12.sgml

index d75df12f06ba1e8b96e668341184ddfef60e7dc8..de6855f6ef9905952ede15325cec27913f713c11 100644 (file)
 
 
 
+  Release 12.4
+
+  
+  Release date:
+  2020-08-13
+  
+
+  
+   This release contains a variety of fixes from 12.3.
+   For information about new features in major release 12, see
+   .
+  
+
+  
+   Migration to Version 12.4
+
+   
+    A dump/restore is not required for those running 12.X.
+   
+
+   
+    However, if you are upgrading from a version earlier than 12.2,
+    see .
+   
+  
+
+  
+   Changes
+
+   
+
+    
+
+     
+      Fix edge cases in partition pruning (Etsuro Fujita, Dmitry Dolgov)
+     
+
+     
+      When there are multiple partition key columns, generation of pruning
+      tests could misbehave if some columns had no
+      constraining WHERE clauses or multiple
+      constraining clauses.  This could lead to server crashes, incorrect
+      query results, or assertion failures.
+     
+    
+
+    
+
+     
+      Fix construction of parameterized BitmapAnd and BitmapOr index scans
+      on the inside of partition-wise nestloop joins (Tom Lane)
+     
+
+     
+      A plan in which such a scan needed to use a value from the outside
+      of the join would usually crash at execution.
+     
+    
+
+    
+
+     
+      Fix incorrect plan execution when a partitioned table is subject to
+      both static and run-time partition pruning in the same query, and a
+      new partition is added concurrently with the query (Amit Langote,
+      Tom Lane)
+     
+    
+
+    
+
+     
+      Fix firing of column-specific UPDATE triggers in
+      logical replication subscribers (Tom Lane)
+     
+
+     
+      The code neglected to account for the possibility of column numbers
+      being different between the publisher and subscriber tables, so that
+      if those were indeed different, wrong decisions might be made about
+      which triggers to fire.
+     
+    
+
+    
+
+     
+      Update oldest xmin and LSN values
+      during pg_replication_slot_advance() (Michael
+      Paquier)
+     
+
+     
+      This function previously failed to do that, possibly preventing
+      resource cleanup (such as removal of no-longer-needed WAL segments)
+      after manual advancement of a replication slot.
+     
+    
+
+    
+
+     
+      Fix slow execution of ts_headline() (Tom Lane)
+     
+
+     
+      The phrase-search fix added in our previous set of minor releases
+      could cause ts_headline() to take unreasonable
+      amounts of time for long documents; to make matters worse, the query
+      was not cancellable within the troublesome loop.
+     
+    
+
+    
+
+     
+      Ensure the repeat() function can be interrupted
+      by query cancel (Joe Conway)
+     
+    
+
+    
+
+     
+      Fix pg_current_logfile() to not include a
+      carriage return (\r) in its result on Windows
+      (Tom Lane)
+     
+    
+
+    
+
+     
+      Ensure that pg_read_file() and related
+      functions read until EOF is reached (Joe Conway)
+     
+
+     
+      Previously, if not given a specific data length to read, these
+      functions would stop at whatever file length was reported
+      by stat().  That's unhelpful for pipes and
+      other sorts of virtual files.
+     
+    
+
+    
+
+     
+      Forbid numeric NaN values in jsonpath
+      computations (Alexander Korotkov)
+     
+
+     
+      Neither SQL nor JSON have the concept of NaN
+      (not-a-number), but the jsonpath code attempted to
+      allow such values anyway.  This necessarily leads to nonstandard
+      behavior, so it seems better to reject such values at the outset.
+     
+    
+
+    
+
+     
+      Handle single Inf or NaN
+      inputs correctly in floating-point aggregates (Tom Lane)
+     
+
+     
+      The affected aggregates are
+      corr(),
+      covar_pop(),
+      regr_intercept(),
+      regr_r2(),
+      regr_slope(),
+      regr_sxx(),
+      regr_sxy(),
+      regr_syy(),
+      stddev_pop(), and
+      var_pop().
+      The correct answer in such cases is NaN, but an
+      algorithmic change introduced in PostgreSQL
+      v12 had caused these aggregates to produce zero instead.
+     
+    
+
+    
+
+     
+      Fix mis-handling of NaN inputs during parallel
+      aggregation on numeric-type columns (Tom Lane)
+     
+
+     
+      If some partial aggregation workers found only NaNs
+      while others found only non-NaNs, the results
+      were combined incorrectly, possibly leading to the wrong overall
+      result (i.e., not NaN when it should be).
+     
+    
+
+    
+
+     
+      Reject time-of-day values greater than 24 hours (Tom Lane)
+     
+
+     
+      The intention of the datetime input code is to
+      allow 24:00:00 or
+      equivalently 23:59:60, but no larger value.
+      However, the range check was miscoded so that it would
+      accept 23:59:60.nnn with
+      nonzero fractional-second nnn.  In
+      timestamp values this would result in wrapping into the first second
+      of the next day.  In time and timetz
+      values, the stored value would actually be more than 24 hours,
+      causing dump/reload failures and possibly other misbehavior.
+     
+    
+
+    
+
+     
+      Undo double-quoting of index names in EXPLAIN's
+      non-text output formats (Tom Lane, Euler Taveira)
+     
+    
+
+    
+
+     
+      Fix EXPLAIN's accounting for resource usage,
+      particularly buffer accesses, in parallel workers in a plan
+      using Gather Merge nodes
+      (Jehan-Guillaume de Rorthais)
+     
+    
+
+    
+
+     
+      Fix timing of constraint revalidation in ALTER
+      TABLE (David Rowley)
+     
+
+     
+      If ALTER TABLE needs to fully rewrite the table's
+      contents (for example, due to change of a column's data type) and
+      also needs to scan the table to re-validate foreign keys
+      or CHECK constraints, it sometimes did things in
+      the wrong order, leading to odd errors such as could not read
+      block 0 in file "base/nnnnn/nnnnn": read only 0 of 8192 bytes.
+     
+    
+
+    
+
+     
+      Fix REINDEX CONCURRENTLY to preserve the index's
+      replication identity flag (Michael Paquier)
+     
+
+     
+      Previously, reindexing a table's replica identity index caused the
+      setting to be lost, preventing old tuple values from being included
+      in future logical-decoding output.
+     
+    
+
+    
+
+     
+      Work around incorrect not-null markings for
+      pg_subscription.subslotname
+      and pg_subscription_rel.srsublsn
+      (Tom Lane)
+     
+
+     
+      The bootstrap catalog data incorrectly marks these two catalog
+      columns as always non-null.  There's no easy way to correct that
+      mistake in existing installations (though v13 and later will have
+      the correct markings).  The main place that depends on that marking
+      being correct is JIT-enabled tuple deconstruction, so teach it to
+      explicitly ignore the marking for these two columns.  Also adjust
+      some C code that accessed srsublsn without
+      checking to see if it's null; a crash from that is improbable but
+      perhaps not impossible.
+     
+    
+
+    
+
+     
+      Cope with LATERAL references in restriction
+      clauses attached to an un-flattened sub-SELECT in
+      the FROM clause (Tom Lane)
+     
+
+     
+      This oversight could result in assertion failures or crashes at
+      query execution.
+     
+    
+
+    
+
+     
+      Use the query-specified collation for operators invoked during
+      selectivity estimation (Tom Lane)
+     
+
+     
+      Previously, the collation of the underlying database column was
+      used.  But using the query's collation is arguably more correct.
+      More importantly, now that we have nondeterministic collations,
+      there are cases where an operator will fail outright if given a
+      nondeterministic collation.  We don't want planning to fail in cases
+      where the query itself would work, so this means that we must use
+      the query's collation when invoking operators for estimation
+      purposes.
+     
+    
+
+    
+
+     
+      Avoid believing that a never-analyzed foreign table has zero tuples
+      (Tom Lane)
+     
+
+     
+      This primarily affected the planner's estimate of the number of
+      groups that would be obtained by GROUP BY.
+     
+    
+
+    
+
+     
+      Remove bogus warning about leftover placeholder tuple
+      in BRIN index de-summarization (Álvaro Herrera)
+     
+
+     
+      The case can occur legitimately after a cancelled vacuum, so warning
+      about it is overly noisy.
+     
+    
+
+    
+
+     
+      Fix selection of tablespaces for shared fileset
+      temporary files (Magnus Hagander, Tom Lane)
+     
+
+     
+      If temp_tablespaces is empty or explicitly names
+      the database's primary tablespace, such files got placed into
+      the pg_default tablespace rather than the
+      database's primary tablespace as expected.
+     
+    
+
+    
+
+     
+      Fix corner-case error in masking of SP-GiST index pages during WAL
+      consistency checking (Alexander Korotkov)
+     
+
+     
+      This could cause false failure reports
+      when wal_consistency_checking is enabled.
+     
+    
+
+    
+
+     
+      Improve error handling in the server's buffile
+      module (Thomas Munro)
+     
+
+     
+      Fix some cases where I/O errors were indistinguishable from reaching
+      EOF, or were not reported at all.  Also add details such as block
+      numbers and byte counts where appropriate.
+     
+    
+
+    
+
+     
+      Fix conflict-checking anomalies in SERIALIZABLE
+      isolation mode (Peter Geoghegan)
+     
+
+     
+      If a concurrently-inserted tuple was updated by a different
+      concurrent transaction, and neither tuple version was visible to the
+      current transaction's snapshot, serialization conflict checking
+      could draw the wrong conclusions about whether the tuple was relevant
+      to the results of the current transaction.  This could allow a
+      serializable transaction to commit when it should have failed with a
+      serialization error.
+     
+    
+
+    
+
+     
+      Avoid repeated marking of dead btree index entries as dead (Masahiko
+      Sawada)
+     
+
+     
+      While functionally harmless, this led to useless WAL traffic when
+      checksums are enabled or wal_log_hints is on.
+     
+    
+
+    
+
+     
+      Fix checkpointer process to discard file sync requests
+      when fsync is off (Heikki Linnakangas)
+     
+
+     
+      Such requests are treated as no-ops if fsync is
+      off, but we forgot to remove them from the checkpointer's table of
+      pending actions.  This would lead to bloat of that table, as well as
+      possible assertion failures if fsync is later
+      re-enabled.
+     
+    
+
+    
+
+     
+      Avoid trouble during cleanup of a non-exclusive backup when JIT
+      compilation has been activated during the backup (Robert Haas)
+     
+    
+
+    
+
+     
+      Fix failure of some code paths to acquire the correct lock before
+      modifying pg_control (Nathan Bossart, Fujii
+      Masao)
+     
+
+     
+      This oversight could allow pg_control to be
+      written out with an inconsistent checksum, possibly causing trouble
+      later, including inability to restart the database if it crashed
+      before the next pg_control update.
+     
+    
+
+    
+
+     
+      Fix errors in currtid()
+      and currtid2() (Michael Paquier)
+     
+
+     
+      These functions (which are undocumented and used only by ancient
+      versions of the ODBC driver) contained coding errors that could
+      result in crashes, or in confusing error messages such as could
+      not open file when applied to a relation having no storage.
+     
+    
+
+    
+
+     
+      Avoid calling elog()
+      or palloc() while holding a spinlock (Michael
+      Paquier, Tom Lane)
+     
+
+     
+      Logic associated with replication slots had several violations of
+      this coding rule.  While the odds of trouble are quite low, an error
+      in the called function would lead to a stuck spinlock.
+     
+    
+
+    
+
+     
+      Fix assertion in logical replication subscriber to allow use
+      of REPLICA IDENTITY FULL (Euler Taveira)
+     
+
+     
+      This was just an incorrect assertion, so it has no impact on
+      standard production builds.
+     
+    
+
+    
+
+     
+      Ensure that libpq continues to try to
+      read from the database connection socket after a write failure
+      (Tom Lane)
+     
+
+     
+      This is important not only to ensure that we collect any final error
+      message from a dying server process, but because we do not consider
+      the connection lost until we see a read failure.  This oversight
+      allowed libpq to continue trying to
+      send COPY data indefinitely after a mid-transfer
+      loss of connection, rather than reporting failure to the application.
+     
+    
+
+    
+
+     
+      Fix bugs in libpq's management of GSS
+      encryption state (Tom Lane)
+     
+
+     
+      A connection using GSS encryption could freeze up when attempting to
+      reset it after a server restart, or when moving on to the next one of
+      a list of candidate servers.
+     
+    
+
+    
+
+     
+      Fix ecpg crash with bytea
+      and cursor variables (Jehan-Guillaume de Rorthais)
+     
+    
+
+    
+
+     
+      Report out-of-disk-space errors properly
+      in pg_dump
+      and pg_basebackup (Justin Pryzby, Tom
+      Lane, Álvaro Herrera)
+     
+
+     
+      Some code paths could produce silly reports like could not
+      write file: Success.
+     
+    
+
+    
+
+     
+      Make pg_restore cope with
+      data-offset-less custom-format archive files when it needs to
+      restore data items out of order (David Gilman, Tom Lane)
+     
+
+     
+      pg_dump will produce such files if it
+      cannot seek its output (for example, if the output is piped to
+      something).  This fix primarily improves the ability to do a
+      parallel restore from such a file.
+     
+    
+
+    
+
+     
+      Fix parallel restore of tables having both table-level privileges
+      and per-column privileges (Tom Lane)
+     
+
+     
+      The table-level privilege grants have to be applied first, but a
+      parallel restore did not reliably order them that way; this could
+      lead to tuple concurrently updated errors, or to
+      disappearance of some per-column privilege grants.  The fix for this
+      is to include dependency links between such entries in the archive
+      file, meaning that a new dump has to be taken with a
+      corrected pg_dump to ensure that the
+      problem will not recur.
+     
+    
+
+    
+
+     
+      Ensure that pg_upgrade runs
+      with vacuum_defer_cleanup_age set to zero in the
+      target cluster (Bruce Momjian)
+     
+
+     
+      If the target cluster's configuration has been modified to
+      set vacuum_defer_cleanup_age to a nonzero value,
+      that prevented freezing of the system catalogs from working properly,
+      which caused the upgrade to fail in confusing ways.  Ensure that any
+      such setting is overridden for the duration of the upgrade.
+     
+    
+
+    
+
+     
+      Fix pg_recvlogical to drain pending
+      messages before exiting (Noah Misch)
+     
+
+     
+      Without this, the replication sender might detect a send failure and
+      exit without making the expected final update to the replication
+      slot's LSN position.  That led to re-transmitting data after the
+      next connection.  It was also possible to miss error messages sent
+      after the last data that pg_recvlogical
+      wants to consume.
+     
+    
+
+    
+
+     
+      Fix pg_rewind's handling of just-deleted
+      files in the source data directory (Justin Pryzby, Michael Paquier)
+     
+
+     
+      When working with an on-line source database, concurrent file
+      deletions are possible, but pg_rewind
+      would get confused if deletion happened between seeing a file's
+      directory entry and examining it with stat().
+     
+    
+
+    
+
+     
+      Make pg_test_fsync use binary I/O mode on
+      Windows (Michael Paquier)
+     
+
+     
+      Previously it wrote the test file in text mode, which is not an
+      accurate reflection of PostgreSQL's
+      actual usage.
+     
+    
+
+    
+
+     
+      Fix contrib/amcheck to not complain about
+      deleted index pages that are empty (Alexander Korotkov)
+     
+
+     
+      This state of affairs is normal during WAL replay.
+     
+    
+
+    
+
+     
+      Fix failure to initialize local state correctly
+      in contrib/dblink (Joe Conway)
+     
+
+     
+      With the right combination of circumstances, this could lead to
+      dblink_close() issuing an unexpected
+      remote COMMIT.
+     
+    
+
+    
+
+     
+      Fix contrib/pgcrypto's misuse
+      of deflate() (Tom Lane)
+     
+
+     
+      The pgp_sym_encrypt functions could produce
+      incorrect compressed data due to mishandling
+      of zlib's API requirements.  We have no
+      reports of this error manifesting with
+      stock zlib, but it can be seen when using
+      IBM's zlibNX implementation.
+     
+    
+
+    
+
+     
+      Fix corner case in decompression logic
+      in contrib/pgcrypto's
+      pgp_sym_decrypt functions (Kyotaro Horiguchi,
+      Michael Paquier)
+     
+
+     
+      A compressed stream can validly end with an empty packet, but the
+      decompressor failed to handle this and would complain about corrupt
+      data.
+     
+    
+
+    
+
+     
+      Use POSIX-standard strsignal() in place of the
+      BSD-ish sys_siglist[] (Tom Lane)
+     
+
+     
+      This avoids build failures with very recent versions
+      of glibc.
+     
+    
+
+    
+
+     
+      Support building our NLS code with Microsoft Visual Studio 2015 or
+      later (Juan José Santamaría Flecha, Davinder Singh,
+      Amit Kapila)
+     
+    
+
+    
+
+     
+      Avoid possible failure of our MSVC install script when there is a
+      file named configure several levels above the
+      source code tree (Arnold Müller)
+     
+
+     
+      This could confuse some logic that looked
+      for configure to identify the top level of the
+      source tree.
+     
+    
+
+   
+
+  
+
  
   Release 12.3