First-draft release notes for 12.1.
authorTom Lane
Sat, 9 Nov 2019 01:12:59 +0000 (20:12 -0500)
committerTom Lane
Sat, 9 Nov 2019 01:13:10 +0000 (20:13 -0500)
As usual, the release notes for other branches will be made by cutting
these down, but put them up for community review first.  Note that a
fair percentage of the entries apply only to prior branches because
their issue was already fixed in 12.0.  I'll remove those from the 12.1
list later.

doc/src/sgml/release-12.sgml

index 337a7a28a717b092c6a0eef3e2d30373bf672943..577a5d7173f106a5164592c9f1d0b31cccd0b50a 100644 (file)
 
 
 
+  Release 12.1
+
+  
+  Release date:
+  2019-11-14
+  
+
+  
+   This release contains a variety of fixes from 12.0.
+   For information about new features in major release 12, see
+   .
+  
+
+  
+   Migration to Version 12.1
+
+   
+    A dump/restore is not required for those running 12.X.
+   
+  
+
+  
+   Changes
+
+   
+
+    
+
+     
+      Fix crash when ALTER TABLE adds a column without
+      a default value along with making other changes that require a table
+      rewrite (Andres Freund)
+     
+    
+
+    
+
+     
+      Fix failure of ALTER TABLE SET with a custom
+      relation option (Michael Paquier)
+     
+    
+
+    
+
+     
+      Disallow changing a multiply-inherited column's type if not all
+      parent tables were changed (Tom Lane)
+     
+
+     
+      Previously, this was allowed, whereupon queries on the
+      now-out-of-sync parent would fail.
+     
+    
+
+    
+
+     
+      Avoid failure if the same target table is specified twice in
+      an ANALYZE command inside a transaction block
+      (Tom Lane)
+     
+    
+
+    
+
+     
+      Fix lock handling in REINDEX CONCURRENTLY
+      (Michael Paquier)
+     
+
+     
+      REINDEX CONCURRENTLY neglected to take a
+      session-level lock on the new index version, potentially allowing
+      other sessions to manipulate it too soon.
+      Also, a query-cancel or session-termination interrupt arriving at the
+      wrong time could result in failure to release the session-level
+      locks that REINDEX CONCURRENTLY does hold.
+     
+    
+
+    
+
+     
+      Avoid crash due to race condition when reporting the progress of
+      a CREATE INDEX CONCURRENTLY or REINDEX
+      CONCURRENTLY command (Álvaro Herrera)
+     
+    
+
+    
+
+     
+      Avoid creating duplicate dependency entries during REINDEX
+      CONCURRENTLY (Michael Paquier)
+     
+
+     
+      This bug resulted in bloat in pg_depend,
+      but no worse consequences than that.
+     
+    
+
+    
+
+     
+      Prevent VACUUM from trying to freeze
+      an old multixact ID involving a still-running transaction
+      (Nathan Bossart, Jeremy Schneider)
+     
+
+     
+      This case would lead to VACUUM failing until the
+      old transaction terminates.
+     
+    
+
+    
+
+     
+      Fix wrong type of slot error when trying
+      to CLUSTER on an expression index (Andres Freund)
+     
+    
+
+    
+
+     
+      SET CONSTRAINTS ... DEFERRED failed on
+      partitioned tables, incorrectly complaining about lack of triggers
+      (Álvaro Herrera)
+     
+    
+
+    
+
+     
+      Fix failure when creating indexes for a partition, if the parent
+      partitioned table contains any dropped columns (Michael Paquier)
+     
+    
+
+    
+
+     
+      Fix dropping of indexed columns in partitioned tables
+      (Amit Langote, Michael Paquier)
+     
+
+     
+      Previously this might fail with an error message complaining about
+      the dependencies of the indexes.  It should automatically drop the
+      indexes, instead.
+     
+    
+
+    
+
+     
+      Ensure that a partition index can be dropped after a failure to
+      reindex it concurrently (Michael Paquier)
+     
+
+     
+      The
+      index's pg_class.relispartition
+      flag was left in the wrong state in such a case,
+      causing DROP INDEX to fail.
+     
+    
+
+    
+
+     
+      Fix handling of equivalence class members for partition-wise joins
+      (Amit Langote)
+     
+
+     
+      This oversight could lead either to failure to use a feasible
+      partition-wise join plan, or to a could not find pathkey item
+      to sort planner failure.
+     
+    
+
+    
+
+     
+      Fix planner's test for case-foldable characters
+      in ILIKE with an ICU collation (Tom Lane)
+     
+
+     
+      This mistake caused the planner to treat too much of the pattern as
+      being a fixed prefix, so that indexscans derived from
+      an ILIKE clause might miss entries that they
+      should find.
+     
+    
+
+    
+
+     
+      Ensure that offset expressions in WINDOW clauses
+      are processed when a query's expressions are manipulated (Andrew Gierth)
+     
+
+     
+      This oversight could result in assorted failures when the offsets
+      are nontrivial expressions.  One example is that a function
+      parameter reference in such an expression would fail if the function
+      was inlined.
+     
+    
+
+    
+
+     
+      Fix handling of whole-row variables in WITH CHECK
+      OPTION expressions and row-level-security policy expressions
+      (Andres Freund)
+     
+
+     
+      Previously, such usage might result in bogus errors about row type
+      mismatches.
+     
+    
+
+    
+
+     
+      Avoid postmaster failure if a parallel query requests a background
+      worker when no postmaster child process array slots remain free
+      (Tom Lane)
+     
+    
+
+    
+
+     
+      Fix crash triggered by an EvalPlanQual recheck on a table with
+      a BEFORE UPDATE trigger (Andres Freund)
+     
+    
+
+    
+
+     
+      Prevent possible double-free if a BEFORE UPDATE
+      trigger returns the old tuple as-is, and it is not the last such
+      trigger (Thomas Munro)
+     
+    
+
+    
+
+     
+      Fix crash if x = ANY
+      (array), or related operations,
+      contains a constant-null array (Tom Lane)
+     
+    
+
+    
+
+     
+      Fix unexpected relkind error when a query tries to
+      access a TOAST table (John Hsu, Michael Paquier, Tom Lane)
+     
+
+     
+      The error should say that permission is denied, but this case got
+      broken during code refactoring.
+     
+    
+
+    
+
+     
+      Provide a relevant error context line when an error occurs while
+      setting GUC parameters during parallel worker startup (Thomas Munro)
+     
+    
+
+    
+
+     
+      In serializable mode, ensure that row-level predicate locks are
+      acquired on the correct version of the row (Thomas Munro, Heikki
+      Linnakangas)
+     
+
+     
+      If the visible version of the row is HOT-updated, the lock might be
+      taken on its now-dead predecessor, resulting in subtle failures to
+      guarantee serialization.
+     
+    
+
+    
+
+     
+      Ensure that fsync() is applied only to files
+      that are opened read/write (Andres Freund, Michael Paquier)
+     
+
+     
+      Some code paths tried to do this after opening a file read-only,
+      which works on many platforms, but others give bad file
+      descriptor or related errors.
+     
+    
+
+    
+
+     
+      Allow encoding conversion to succeed on longer strings than before
+      (Álvaro Herrera, Tom Lane)
+     
+
+     
+      Previously, there was a hard limit of 0.25GB on the input string,
+      but now it will work as long as the converted output is not over 1GB.
+     
+    
+
+    
+
+     
+      Avoid an unnecessary catalog lookup during heap page pruning
+      (Thomas Munro)
+     
+
+     
+      It's no longer necessary to check for unlogged indexes here, and the
+      check caused significant performance problems in some workloads.
+      There's also at least a theoretical possibility of deadlock.
+     
+    
+
+    
+
+     
+      Avoid creating unnecessarily-bulky tuple stores for window functions
+      (Andrew Gierth)
+     
+
+     
+      In some cases the tuple storage would include all columns of the
+      source table(s), not just the ones that are needed by the query.
+     
+    
+
+    
+
+     
+      Fix failure to JIT-compile equality comparisons for grouping hash
+      tables, leading to performance loss (Andres Freund)
+     
+    
+
+    
+
+     
+      Allow repalloc() to give back space when a
+      large chunk is reduced in size (Tom Lane)
+     
+    
+
+    
+
+     
+      Ensure that temporary WAL and history files are removed at the end
+      of archive recovery (Sawada Masahiko)
+     
+    
+
+    
+
+     
+      Avoid failure in archive recovery
+      if recovery_min_apply_delay is enabled
+      (Fujii Masao)
+     
+
+     
+      recovery_min_apply_delay is not typically used in
+      this configuration, but it should work.
+     
+    
+
+    
+
+     
+      Ignore restore_command,
+      recovery_end_command,
+      and recovery_min_apply_delay settings during
+      crash recovery (Fujii Masao)
+     
+
+     
+      Now that these settings can be specified
+      in postgresql.conf, they could be turned on
+      during crash recovery, but honoring them then is undesirable.
+      Ignore these settings until crash recovery is complete.
+     
+    
+
+    
+
+     
+      Avoid unwanted delay during shutdown of a logical replication
+      walsender (Craig Ringer, Álvaro Herrera)
+     
+    
+
+    
+
+     
+      Fix timeout handling in logical replication walreceiver processes
+      (Julien Rouhaud)
+     
+
+     
+      Erroneous logic prevented wal_receiver_timeout
+      from working in logical replication deployments.
+     
+    
+
+    
+
+     
+      Correctly time-stamp replication messages for logical
+      decoding (Jeff Janes)
+     
+
+     
+      This oversight resulted, for example,
+      in pg_stat_subscription.last_msg_send_time
+      usually reading as NULL.
+     
+    
+
+    
+
+     
+      In logical decoding, ensure that sub-transactions are correctly
+      accounted for when reconstructing a snapshot (Masahiko Sawada)
+     
+
+     
+      This error leads to assertion failures; it's unclear whether any
+      bad effects exist in production builds.
+     
+    
+
+    
+
+     
+      Fix race condition during backend exit, when the backend process has
+      previously waited for synchronous replication to occur (Dongming Liu)
+     
+    
+
+    
+
+     
+      Fix ALTER SYSTEM to cope with duplicate entries
+      in postgresql.auto.conf (Ian Barwick)
+     
+
+     
+      ALTER SYSTEM itself will not generate such a state,
+      but external tools that modify postgresql.auto.conf
+      could do so.  Duplicate entries for the target variable will now be
+      removed, and then the new setting (if any) will be appended at the end.
+     
+    
+
+    
+
+     
+      Reject include directives with empty file names in configuration
+      files, and report include-file recursion more clearly
+      (Ian Barwick, Tom Lane)
+     
+    
+
+    
+
+     
+      Avoid logging complaints about abandoned connections when using PAM
+      authentication (Tom Lane)
+     
+
+     
+      libpq-based clients will typically make two connection attempts when
+      a password is required, since they don't prompt their user for a
+      password until their first connection attempt fails.  Therefore the
+      server is coded not to generate useless log spam when a client
+      closes the connection upon being asked for a password.  However,
+      the PAM authentication code hadn't gotten that memo, and would
+      generate several messages about a phantom authentication failure.
+     
+    
+
+    
+
+     
+      Fix some cases where an incomplete date specification is not
+      detected in time with time zone input (Alexander Lakhin)
+     
+
+     
+      If a time zone is provided, a date must be as well (since the UTC
+      offset implied by the zone might be time-varying).  Depending on the
+      syntax used, this check was not enforced in all cases.
+     
+    
+
+    
+
+     
+      Fix misbehavior of bitshiftright() (Tom Lane)
+     
+
+     
+      The bitstring right shift operator failed to zero out padding space
+      that exists in the last byte of the result when the bitstring length
+      is not a multiple of 8.  While invisible to most operations, any
+      nonzero bits there would result in unexpected comparison behavior,
+      since bitstring comparisons don't bother to ignore the extra bits,
+      expecting them to always be zero.
+     
+
+     
+      If you have inconsistent data as a result of saving the output
+      of bitshiftright() in a table, it's possible to
+      fix it with something like
+
+UPDATE mytab SET bitcol = ~(~bitcol) WHERE bitcol != ~(~bitcol);
+
+     
+    
+
+    
+
+     
+      Fix result of text position() function (also
+      known as strpos()) for an empty search string
+      (Tom Lane)
+     
+
+     
+      Historically, and per the SQL standard, the result should be one in
+      such cases, but 12.0 returned zero.
+     
+    
+
+    
+
+     
+      Restore the ability to take type information from
+      an AS clause
+      in json[b]_populate_record()
+      and json[b]_populate_recordset()
+      (Tom Lane)
+     
+
+     
+      If the record argument is NULL and has no declared composite type,
+      try to use the AS clause instead.  This isn't
+      recommended usage, but it used to work, and now does again.
+     
+    
+
+    
+
+     
+      Avoid crash when selecting a namespace node
+      in XMLTABLE (Chapman Flack)
+     
+    
+
+    
+
+     
+      Fix detection of edge-case integer overflow in interval
+      multiplication (Yuya Watari)
+     
+    
+
+    
+
+     
+      Fix memory leaks
+      in lower()upper(),
+      and initcap() functions when using ICU
+      collations (Konstantin Knizhnik)
+     
+    
+
+    
+
+     
+      Avoid crashes if ispell text search dictionaries
+      contain wrong affix data (Arthur Zakirov)
+     
+    
+
+    
+
+     
+      Fix incorrect compression logic for GIN posting lists
+      (Heikki Linnakangas)
+     
+
+     
+      A GIN posting list item can require 7 bytes if the distance between
+      adjacent indexed TIDs exceeds 16TB.  One step in the logic was out
+      of sync with that, and might try to write the value into a 6-byte
+      buffer.  In principle this could cause a stack overrun, but on most
+      architectures it's likely that the next byte would be unused
+      alignment padding, making the bug harmless.  In any case the bug
+      would be very difficult to hit.
+     
+    
+
+    
+
+     
+      Fix handling of infinity, NaN, and NULL values in KNN-GiST
+      (Alexander Korotkov)
+     
+
+     
+      The query's output order could be wrong (different from a plain
+      sort's result) if some distances computed for non-null column values
+      are infinity or NaN.
+     
+    
+
+    
+
+     
+      Avoid memory leak while vacuuming a GiST index (Dilip Kumar)
+     
+    
+
+    
+
+     
+      Fix handling of searches for NULL in KNN-SP-GiST (Nikita Glukhov)
+     
+    
+
+    
+
+     
+      On Windows, recognize additional spellings of the Norwegian
+      (Bokmål) locale name (Tom Lane)
+     
+    
+
+    
+
+     
+      Fix libpq to allow trailing whitespace in
+      the string values of integer parameters (Michael Paquier)
+     
+
+     
+      Version 12 tightened libpq's validation
+      of integer parameters, but disallowing trailing whitespace seems
+      undesirable.
+     
+    
+
+    
+
+     
+      In libpq, correctly
+      report CONNECTION_BAD connection status after a
+      failure caused by a syntactically
+      invalid  parameter value (Lars Kanis)
+     
+    
+
+    
+
+     
+      Avoid compile failure if an ECPG client
+      includes ecpglib.h while
+      having ENABLE_NLS defined (Tom Lane)
+     
+
+     
+      This risk was created by a misplaced
+      declaration: ecpg_gettext() should not be
+      visible to client code.
+     
+    
+
+    
+
+     
+      In psql, resynchronize internal state
+      about the server after an unexpected connection loss and successful
+      reconnection (Peter Billen, Tom Lane)
+     
+
+     
+      Ordinarily this is unnecessary since the state would be the same
+      anyway.  But it can matter in corner cases, such as where the
+      connection might lead to one of several servers.  This change
+      causes psql to re-issue any interactive
+      messages that it would have issued at startup, for example about
+      whether SSL is in use.
+     
+    
+
+    
+
+     
+      Avoid platform-specific null pointer dereference
+      in psql (Quentin Rameau)
+     
+    
+
+    
+
+     
+      Fix pg_dump's handling of circular
+      dependencies in views (Tom Lane)
+     
+
+     
+      In some cases a view may depend on an object
+      that pg_dump needs to dump later than the
+      view; the most common example is that a query using GROUP
+      BY on a primary-key column may be semantically invalid
+      without the primary key.  This is now handled by emitting a
+      dummy CREATE VIEW command that just establishes
+      the view's column names and types, and then later
+      emitting CREATE OR REPLACE VIEW with the full
+      view definition.  Previously, the dummy definition was actually
+      a CREATE TABLE command, and this was
+      automagically converted to a view by a later CREATE
+      RULE command.  The new approach has been used successfully
+      in PostgreSQL version 10 and later.  We
+      are back-patching it into older releases now because of reports that
+      the previous method causes bogus error messages about the view's
+      replica identity status.  This change also avoids problems when
+      trying to use the  option during a restore
+      involving such a view.
+     
+    
+
+    
+
+     
+      Fix scheduling of parallel restore of a foreign key constraint on a
+      partitioned table (Álvaro Herrera)
+     
+
+     
+      pg_dump failed to emit full dependency
+      information for partitioned tables' foreign keys.  This could allow
+      parallel pg_restore to try to recreate a
+      foreign key constraint too soon.
+     
+    
+
+    
+
+     
+      In pg_dump, ensure stable output order
+      for similarly-named triggers and row-level-security policy objects
+      (Benjie Gillam)
+     
+
+     
+      Previously, if two triggers on different tables had the same names,
+      they would be sorted in OID-based order, which is less desirable
+      than sorting by name.  Likewise for RLS policies.
+     
+    
+
+    
+
+     
+      Fix pg_dump to again work with pre-8.3
+      source servers (Tom Lane)
+     
+
+     
+      A previous fix caused pg_dump to always
+      try to query pg_opfamily, but that catalog
+      doesn't exist before 8.3.
+     
+    
+
+    
+
+     
+      In pg_restore, treat
+       as meaning output to stdout
+      (Álvaro Herrera)
+     
+
+     
+      This synchronizes pg_restore's behavior
+      with some other applications, and in particular makes pre-v12 branches
+      act similarly to v12's pg_restore,
+      simplifying creation of dump/restore scripts that work across
+      multiple PostgreSQL versions.  Before this
+      change, pg_restore interpreted such a
+      switch as meaning output to a file
+      named -, but few people would want that.
+     
+    
+
+    
+
+     
+      In pg_upgrade, reject tables with
+      columns of type sql_identifier, as that has changed
+      representation in v12 (Tomas Vondra)
+     
+    
+
+    
+
+     
+      Improve pg_upgrade's checks for the use
+      of a data type that has changed representation, such
+      as line (Tomas Vondra)
+     
+
+     
+      The previous coding could be fooled by cases where the data type of
+      interest underlies a domain or composite type.
+     
+    
+
+    
+
+     
+      Detect file read errors
+      during pg_basebackup (Jeevan Chalke)
+     
+    
+
+    
+
+     
+      In pg_basebackup, don't fsync output files
+      until the end of backup (Michael Paquier)
+     
+
+     
+      The previous coding could result in timeout failures if fsync was slow.
+     
+    
+
+    
+
+     
+      In pg_rewind
+      with the  option, avoid
+      updating pg_control
+      (Alexey Kondratov)
+     
+
+     
+      This could lead to failures in
+      subsequent pg_rewind attempts.
+     
+    
+
+    
+
+     
+      In pg_rewind with an online source
+      cluster, disable timeouts, much
+      as pg_dump does (Alexander Kukushkin)
+     
+    
+
+    
+
+     
+      Fix failure in pg_waldump with
+      the  option, when a continuation WAL record ends
+      exactly at a page boundary (Andrey Lepikhov)
+     
+    
+
+    
+
+     
+      In pg_waldump,
+      include the newitemoff field in btree page split
+      records (Peter Geoghegan)
+     
+    
+
+    
+
+     
+      In pg_waldump with
+      the  option, avoid emitting extra
+      newlines for WAL records involving full-page writes (Andres Freund)
+     
+    
+
+    
+
+     
+      Fix small memory leak in pg_waldump
+      (Andres Freund)
+     
+    
+
+    
+
+     
+      Fix vacuumdb with a
+      high  option to handle running out of file
+      descriptors better (Michael Paquier)
+     
+    
+
+    
+
+     
+      Fix PL/pgSQL to handle replacements of composite types better
+      (Tom Lane)
+     
+
+     
+      Cover the case where a composite type is dropped entirely, and
+      then a new type of the same name is created, between executions
+      of a PL/pgSQL function.  Variables of the composite type will now
+      update to match the new definition.
+     
+    
+
+    
+
+     
+      Fix contrib/amcheck to skip unlogged indexes
+      during hot standby (Andrey Borodin, Peter Geoghegan)
+     
+
+     
+      An unlogged index won't necessarily contain valid data in this
+      context, so don't try to check it.
+     
+    
+
+    
+
+     
+      Fix contrib/intarray's GiST opclasses to not
+      fail for empty arrays with <@ (Tom Lane)
+     
+
+     
+      A clause like array_column
+      <@ constant_array is
+      considered indexable, but the index search may not find index
+      entries for empty arrays in the array column; of course, such
+      entries should trivially match the search.
+     
+
+     
+      The only practical back-patchable fix for this requires
+      making <@ index searches scan the whole index,
+      which is what this patch does.  This is unfortunate: it means that
+      the query performance is likely worse than a plain sequential scan
+      would be.
+     
+
+     
+      Applications whose performance is adversely impacted by this change
+      have a couple of options.  They could switch to a GIN index, which
+      doesn't have this bug, or they could replace
+      array_column
+      <@ constant_array
+      with array_column
+      <@ constant_array
+      AND array_column
+      && constant_array.
+      That will provide about the same performance as before, and it will
+      find all non-empty subsets of the given constant array, which is all
+      that could reliably be expected of the query before.
+     
+    
+
+    
+
+     
+      Put back pqsignal() as an
+      exported libpq symbol (Tom Lane)
+     
+
+     
+      This function was removed on the grounds that no clients should be
+      using it, but that turns out to break usage of
+      current libpq with very old versions
+      of psql, and perhaps other applications.
+     
+    
+
+    
+
+     
+      Allow configure --with-python to succeed when
+      only python3 or
+      only python2 can be found (Peter Eisentraut,
+      Tom Lane)
+     
+
+     
+      Search for python,
+      then python3,
+      then python2, so
+      that configure will succeed in the
+      increasingly more common situation where no executable named
+      simply python exists.  It's still possible to
+      override the choice by setting the PYTHON environment
+      variable.
+     
+    
+
+    
+
+     
+      Fix configure's test for presence of
+      libperl so that it works on recent Red Hat releases (Tom Lane)
+     
+
+     
+      Previously, it could fail if the user sets CFLAGS
+      to -O0.
+     
+    
+
+    
+
+     
+      Ensure correct code generation for spinlocks on PowerPC (Noah Misch)
+     
+
+     
+      The previous spinlock coding allowed the compiler to select register
+      zero for use with an assembly instruction that does not accept that
+      register, causing a build failure.  We have seen only one long-ago
+      report that matches this bug, but it could cause problems for people
+      trying to build modified code or use atypical compiler options.
+     
+    
+
+    
+
+     
+      On PowerPC, avoid depending on the xlc
+      compiler's __fetch_and_add() function
+      (Noah Misch)
+     
+
+     
+      xlc 13 and newer interpret this function in a way incompatible with
+      our usage, resulting in an unusable build
+      of PostgreSQL.  Fix by using custom
+      assembly code instead.
+     
+    
+
+    
+
+     
+      On AIX, don't use the compiler option 
+      (Noah Misch)
+     
+
+     
+      This avoids an internal compiler error with xlc v16.1.0, with little
+      consequence other than changing the format of compiler error messages.
+     
+    
+
+    
+
+     
+      Fix MSVC build process to cope with spaces in the file path of
+      OpenSSL (Andrew Dunstan)
+     
+    
+
+    
+
+     
+      Update time zone data files to tzdata
+      release 2019c for DST law changes in Fiji and Norfolk Island, plus
+      historical corrections for Alberta, Austria, Belgium, British
+      Columbia, Cambodia, Hong Kong, Indiana (Perry County), Kaliningrad,
+      Kentucky, Michigan, Norfolk Island, South Korea, and Turkey.
+     
+    
+
+   
+
+  
+
  
   Release 12
 
@@ -663,7 +2452,7 @@ Author: Michael Paquier 
      
       Parse libpq integer connection parameters more strictly (Fabien
       Coelho)
-      
+     
 
      
       In previous releases, using an incorrect integer value for
@@ -673,9 +2462,9 @@ Author: Michael Paquier 
       keepalives_interval and port
       resulted in libpq either ignoring those values or failing with
       incorrect error messages.
-      
+     
     
-    
+