First-draft release notes for 9.3.3.
authorTom Lane
Sun, 16 Feb 2014 05:40:37 +0000 (00:40 -0500)
committerTom Lane
Sun, 16 Feb 2014 05:40:37 +0000 (00:40 -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-9.3.sgml

index 2f51d677db8a955e030ca27f91cbcf6668b63b36..95939ee3036bf77b61b0b5dbc169e7258f9d8e6c 100644 (file)
 
 
 
+  Release 9.3.3
+
+  
+  Release Date
+  2014-02-20
+  
+
+  
+   This release contains a variety of fixes from 9.3.2.
+   For information about new features in the 9.3 major release, see
+   .
+  
+
+  
+   Migration to Version 9.3.3
+
+   
+    A dump/restore is not required for those running 9.3.X.
+   
+
+   
+    However, several of the issues corrected in this release could have
+    resulted in corruption of foreign-key constraints; that is, there
+    might now be referencing rows for which there is no matching row in
+    the referenced table.  It may be worthwhile to recheck such
+    constraints after installing this update.  The simplest way to do that
+    is to drop and recreate each suspect constraint; however, that will
+    require taking an exclusive lock on both tables, so it is unlikely to
+    be acceptable in production databases.  Alternatively, you can do a
+    manual join query between the two tables to look for unmatched rows.
+   
+
+   
+    Note also the requirement for replication standby servers to be
+    upgraded before their master server is upgraded.
+   
+
+   
+    Also, if you are upgrading from a version earlier than 9.3.2,
+    see .
+   
+
+  
+
+  
+   Changes
+
+   
+
+
+
+    
+     
+      Rework tuple freezing protocol
+      (Álvaro Herrera, Andres Freund)
+     
+
+     
+      The method for tuple freezing was unable to handle some cases
+      involving freezing of multixact IDs, with the practical
+      effect that shared row-level locks might be forgotten once old enough.
+     
+
+     
+      Fixing this required changing the WAL logging format for tuple freezing.
+      While this is unimportant for standalone servers, in replication
+      environments it means that standby servers must be upgraded
+      to 9.3.3 or later before their masters are.  An older standby will
+      be unable to interpret freeze records generated by a newer master,
+      and will fail with a PANIC message.  (In such a case, upgrading the
+      standby should be sufficient to let it resume execution.)
+     
+    
+
+
+
+    
+     
+      Create separate GUC parameters to control multixact freezing
+      (Álvaro Herrera)
+     
+
+     
+      9.3 requires multixact tuple labels to be frozen before
+      they grow too old, in the same fashion as plain transaction ID labels
+      have been frozen for some time.  Previously, the transaction ID
+      freezing parameters were used for multixact IDs too; but since
+      the consumption rates of transaction IDs and multixact IDs can be
+      quite different, this did not work very well.  Introduce new settings
+      ,
+      , and
+      
+      to control when to freeze multixacts.
+     
+    
+
+
+
+    
+     
+      Fix multixact freezing of tuples that predate
+      a pg_upgrade to 9.3
+      (Álvaro Herrera)
+     
+
+     
+      This oversight would result in complaints such as ERROR:
+      MultiXactId 11415437 does no longer exist -- apparent wraparound.
+     
+    
+
+
+
+    
+     
+      Account for remote row locks propagated by local updates
+      (Álvaro Herrera)
+     
+
+     
+      If a row was locked by transaction A, and transaction B updated it,
+      the new version of the row created by B would be locked by A, yet
+      visible only to B.  This case is new in 9.3 since prior versions did
+      not have any types of row locking that would permit another
+      transaction to update the row at all.  If transaction B then deleted
+      or key-updated the row, A's lock wouldn't get checked, thus possibly
+      allowing B to complete when it shouldn't.
+     
+
+     
+      This oversight could allow referential integrity checks to give false
+      positives (that is, allow deletes that should have been rejected).
+      Applications using the new commands SELECT FOR KEY SHARE
+      and SELECT FOR NO KEY UPDATE might also have suffered
+      locking failures of this kind.
+     
+    
+
+
+
+    
+     
+      Prevent forgetting valid row locks when one of several
+      holders of a row lock aborts (Álvaro Herrera)
+     
+    
+
+
+
+    
+     
+      Fix incorrect logic during update chain locking
+      (Álvaro Herrera)
+     
+
+     
+      This mistake could result in spurious could not serialize access
+      due to concurrent update errors in REPEATABLE READ
+      and SERIALIZABLE transaction isolation modes.
+     
+    
+
+
+
+    
+     
+      Fix handling of 5-digit filenames in pg_multixact/members
+      (Álvaro Herrera)
+     
+
+     
+      As of 9.3, these names can be more than 4 digits, but the directory
+      cleanup code ignored such files.
+     
+    
+
+
+
+    
+     
+      Handle wraparound correctly during extension or truncation
+      of pg_multixact/members
+      (Andres Freund, Álvaro Herrera)
+     
+    
+
+
+
+    
+     
+      Improve performance of multixact cache code
+      (Álvaro Herrera)
+     
+    
+
+
+
+    
+     
+      Optimize updating a row that's already locked by the same transaction
+      (Andres Freund, Álvaro Herrera)
+     
+
+     
+      This fixes a performance regression from pre-9.3 versions when doing
+      SELECT FOR UPDATE followed by UPDATE/DELETE.
+     
+    
+
+
+
+    
+     
+      During archive recovery, prefer highest timeline number when WAL
+      segments with the same ID are present in both the archive
+      and pg_xlog/ (Kyotaro Horiguchi)
+     
+
+     
+      Previously, not-yet-archived segments could get ignored during replay.
+      This reverts an undesirable behavioral change in 9.3.0 back to the
+      way things worked pre-9.3.
+     
+    
+
+
+
+    
+     
+      Fix possible mis-replay of WAL records when some segments of a
+      relation aren't full size (Greg Stark, Tom Lane)
+     
+
+     
+      The WAL update could be applied to the wrong page, potentially many
+      pages past where it should have been.  Aside from corrupting data,
+      this error has been observed to result in significant bloat
+      of standby servers compared to their masters, due to updates being
+      applied far beyond where the end-of-file should have been.  This
+      failure mode does not appear to be a significant risk during crash
+      recovery, only when initially synchronizing a standby created from a
+      base backup taken from an actively-changing master.
+     
+    
+
+
+
+    
+     
+      Fix bug in determining when recovery has reached consistency
+      (Tomonari Katsumata, Heikki Linnakangas)
+     
+
+     
+      In some cases WAL replay would mistakenly conclude that the database
+      was already consistent at the start of replay, thus possibly allowing
+      queries before the database was really consistent.  Other symptoms
+      such as PANIC: WAL contains references to invalid pages
+      were also possible.
+     
+    
+
+
+
+    
+     
+      Fix WAL logging of visibility map changes (Heikki Linnakangas)
+     
+    
+
+
+
+    
+     
+      Fix improper locking of btree index pages while replaying
+      a VACUUM operation in Hot Standby mode (Andres Freund,
+      Heikki Linnakangas, Tom Lane)
+     
+
+     
+      This error could result in PANIC: WAL contains references to
+      invalid pages failures.
+     
+    
+
+
+
+    
+     
+      Ensure that insertions into non-leaf GIN index pages make a full-page
+      WAL record when appropriate (Heikki Linnakangas)
+     
+
+     
+      The previous coding risked data corruption in the event of a
+      torn-page update.
+     
+    
+
+
+
+    
+     
+      When pause_at_recovery_target
+      and recovery_target_inclusive are both set, ensure the
+      target record is applied before pausing, not after (Heikki
+      Linnakangas)
+     
+    
+
+
+
+    
+     
+      Ensure walreceiver sends Hot Standby feedback messages on time even
+      when there is a continuous stream of data (Andres Freund, Amit
+      Kapila)
+     
+    
+
+
+
+    
+     
+      Fix race conditions in walsender shutdown logic and walreceiver
+      SIGHUP signal handler (Tom Lane)
+     
+    
+
+
+
+    
+     
+      Fix race conditions during server process exit (Robert Haas)
+     
+
+     
+      Ensure that signal handlers don't attempt to use
+      the process's MyProc pointer after it's no longer valid.
+     
+    
+
+
+
+    
+     
+      Fix unsafe references to errno within error messaging
+      logic (Christian Kruse)
+     
+
+     
+      This would typically lead to odd behaviors such as missing or
+      inappropriate HINT fields.
+     
+    
+
+
+
+    
+     
+      Fix possible crashes from using ereport() too early
+      during server startup (Tom Lane)
+     
+
+     
+      The principal case we've seen in the field is a crash if the server
+      is started in a directory it doesn't have permission to read.
+     
+    
+
+
+
+    
+     
+      Prevent timeout interrupts from taking control away from mainline
+      code unless ImmediateInterruptOK is set
+      (Andres Freund, Tom Lane)
+     
+
+     
+      This was initially reported as a stuck spinlock failure,
+      but many other misbehaviors are possible after a statement timeout.
+     
+    
+
+
+
+    
+     
+      Clear retry flags properly in replacement OpenSSL socket write
+      function (Alexander Kukushkin)
+     
+
+     
+      This omission resulted in a server lockup after unexpected loss of an
+      SSL-encrypted connection.
+     
+    
+
+
+
+    
+     
+      Fix length checking for Unicode identifiers (U&"..."
+      syntax) containing escapes (Tom Lane)
+     
+
+     
+      A spurious truncation warning would be printed for such identifiers
+      if the escaped form of the identifier was too long, but the
+      identifier actually didn't need truncation after de-escaping.
+     
+    
+
+
+
+    
+     
+      Fix parsing of Unicode literals and identifiers just before the end
+      of a command string or function body (Tom Lane)
+     
+    
+
+
+
+    
+     
+      Allow keywords that are type names to be used in lists of roles
+      (Stephen Frost)
+     
+
+     
+      A previous patch allowed such keywords to be used without quoting
+      in places such as role identifiers; but it missed cases where a
+      list of role identifiers was permitted, such as DROP ROLE.
+     
+    
+
+
+
+    
+     
+      Fix parser crash for EXISTS(SELECT * FROM
+      zero_column_table) (Tom Lane)
+     
+    
+
+
+
+    
+     
+      Fix possible crash due to invalid plan for nested sub-selects, such
+      as WHERE (... x IN (SELECT ...) ...) IN (SELECT ...)
+      (Tom Lane)
+     
+    
+
+
+
+    
+     
+      Fix mishandling of WHERE conditions pulled up from
+      a LATERAL subquery (Tom Lane)
+     
+
+     
+      The typical symptom of this bug was a JOIN qualification
+      cannot refer to other relations error, though subtle logic
+      errors in created plans seem possible as well.
+     
+    
+
+
+
+    
+     
+      Disallow LATERAL references to the target table of
+      an UPDATE/DELETE (Tom Lane)
+     
+
+     
+      While this might be allowed in some future release, it was
+      unintentional in 9.3, and didn't work quite right anyway.
+     
+    
+
+
+
+    
+     
+      Fix UPDATE/DELETE of an inherited target table
+      that has UNION ALL subqueries (Tom Lane)
+     
+
+     
+      Without this fix, UNION ALL subqueries aren't correctly
+      inserted into the update plans for inheritance child tables after the
+      first one, typically resulting in no update happening for those child
+      table(s).
+     
+    
+
+
+
+    
+     
+      Fix ANALYZE to not fail on a column that's a domain over
+      a range type (Tom Lane)
+     
+    
+
+
+
+    
+     
+      Ensure that ANALYZE creates statistics for a table column
+      even when all the values in it are too wide (Tom Lane)
+     
+
+     
+      ANALYZE intentionally omits very wide values from its
+      histogram and most-common-value calculations, but it neglected to do
+      something sane in the case that all the sampled entries are too wide.
+     
+    
+
+
+
+    
+     
+      In ALTER TABLE ... SET TABLESPACE, allow the database's
+      default tablespace to be used without a permissions check
+      (Stephen Frost)
+     
+
+     
+      CREATE TABLE works this way, but ALTER TABLE
+      didn't get the memo.
+     
+    
+
+
+
+    
+     
+      Fix support for extensions containing event triggers (Tom Lane)
+     
+    
+
+
+
+    
+     
+      Fix cannot accept a set error when some arms of a CASE
+      return a set and others don't (Tom Lane)
+     
+    
+
+
+
+    
+     
+      Fix memory leakage in JSON functions (Craig Ringer)
+     
+    
+
+
+
+    
+     
+      Properly distinguish numbers from non-numbers when generating JSON
+      output (Andrew Dunstan)
+     
+    
+
+
+
+    
+     
+      Fix checks for all-zero client addresses in pgstat functions (Kevin
+      Grittner)
+     
+    
+
+
+
+    
+     
+      Fix possible misclassification of multibyte characters by the text
+      search parser (Tom Lane)
+     
+
+     
+      Non-ASCII characters could be misclassified when using C locale with
+      a multibyte encoding.  On Cygwin, non-C locales could fail as well.
+     
+    
+
+
+
+    
+     
+      Fix possible misbehavior in plainto_tsquery()
+      (Heikki Linnakangas)
+     
+
+     
+      Use memmove() not memcpy() for copying
+      overlapping memory regions.  There have been no field reports of
+      this actually causing trouble, but it's certainly risky.
+     
+    
+
+
+
+    
+     
+      Fix placement of permissions checks in pg_start_backup()
+      and pg_stop_backup() (Andres Freund, Magnus Hagander)
+     
+
+     
+      The previous coding might attempt to do catalog access when it
+      shouldn't.
+     
+    
+
+
+
+    
+     
+      Accept SHIFT_JIS as an encoding name for locale checking
+      (Tatsuo Ishii)
+     
+    
+
+
+
+    
+     
+      Fix *-qualification of named parameters in SQL-language
+      functions (Tom Lane)
+     
+
+     
+      Given a composite-type parameter
+      named foo, $1.* worked fine,
+      but foo.* not so much.
+     
+    
+
+
+
+    
+     
+      Fix misbehavior of PQhost() on Windows (Fujii Masao)
+     
+
+     
+      It should return localhost if no host has been specified.
+     
+    
+
+
+
+    
+     
+      Improve error handling in psql and libpq
+      for failures during COPY TO STDOUT/FROM STDIN (Tom Lane)
+     
+
+     
+      In particular this fixes an infinite loop that could occur in 9.2 and
+      up if the server connection was lost during COPY FROM
+      STDIN.  Variants of that scenario might be possible in older
+      versions, or with other client applications.
+     
+    
+
+
+
+    
+     
+      Fix incorrect translation handling in
+      some psql \d commands
+      (Peter Eisentraut, Tom Lane)
+     
+
+     
+     
+    
+
+
+
+    
+     
+      Avoid including tablespaces inside PGDATA twice in base backups
+      (Dimitri Fontaine, Magnus Hagander)
+     
+    
+
+
+
+    
+     
+      Ensure pg_basebackup's background process is killed
+      when exiting its foreground process (Magnus Hagander)
+     
+    
+
+
+
+    
+     
+      Fix possible incorrect printing of filenames
+      in pg_basebackup's verbose mode (Magnus Hagander)
+     
+    
+
+
+
+    
+     
+      Fix misaligned descriptors in ecpg (MauMau)
+     
+    
+
+
+
+    
+     
+      In ecpg, handle lack of a hostname in the connection
+      parameters properly (Michael Meskes)
+     
+    
+
+
+
+    
+     
+      Fix performance regression in contrib/dblink connection
+      setup (Joe Conway)
+     
+
+     
+      Avoid an unnecessary round trip when client and server encodings match.
+     
+    
+
+
+
+    
+     
+      In contrib/isn, fix incorrect calculation of the check
+      digit for ISMN values (Fabien Coelho)
+     
+    
+
+
+
+    
+     
+      Fix contrib/pgbench's progress logging to avoid overflow
+      when the scale factor is large (Tatsuo Ishii)
+     
+    
+
+
+
+    
+     
+      Fix contrib/pg_stat_statement's handling
+      of CURRENT_DATE and related constructs (Kyotaro
+      Horiguchi)
+     
+    
+
+
+
+    
+     
+      Improve lost-connection error handling
+      in contrib/postgres_fdw (Tom Lane)
+     
+    
+
+
+
+    
+     
+      Ensure client-code-only installation procedure works as documented
+      (Peter Eisentraut)
+     
+    
+
+
+
+    
+     
+      Avoid using the deprecated dllwrap tool in Cygwin builds
+      (Marco Atzeri)
+     
+    
+
+
+
+    
+     
+      In Mingw and Cygwin builds, install the libpq DLL
+      in the bin directory (Andrew Dunstan)
+     
+
+     
+      This duplicates what the MSVC build has long done.  It should fix
+      problems with programs like psql failing to start
+      because they can't find the DLL.
+     
+    
+
+
+
+    
+     
+      Enable building with Visual Studio 2013 (Brar Piening)
+     
+    
+
+
+
+    
+     
+      Don't generate plain-text HISTORY
+      and src/test/regress/README files anymore (Tom Lane)
+     
+
+     
+      These text files duplicated the main HTML and PDF documentation
+      formats.  The trouble involved in maintaining them greatly outweighs
+      the likely audience for this format.  Distribution tarballs will
+      still contain files by these names, but they'll just be stubs
+      directing the reader to consult the main documentation.
+      The plain-text INSTALL file will still be maintained, as
+      there is arguably an audience for that.
+     
+    
+
+
+
+    
+     
+      Update time zone data files to tzdata release 2013i
+      for DST law changes in Jordan and historical changes in Cuba.
+     
+
+     
+      In addition, the zones Asia/Riyadh87, Asia/Riyadh88, and
+      Asia/Riyadh89 have been removed, as they are no longer maintained by
+      IANA, and never represented actual civil timekeeping practice.
+     
+    
+
+   
+
+  
+
  
   Release 9.3.2