Skip to content
Snippets Groups Projects
release-9.2.sgml 299 KiB
Newer Older
     </para>
    </listitem>

    <listitem>
     <para>
      Ensure we do crash recovery before entering archive recovery, if the
      database was not stopped cleanly and a <filename>recovery.conf</> file
      is present (Heikki Linnakangas, Kyotaro Horiguchi, Mitsumasa Kondo)
     </para>

     <para>
      This is needed to ensure that the database is consistent in certain
      scenarios, such as initializing a standby server with a filesystem
      snapshot from a running server.
     </para>
    </listitem>

    <listitem>
     <para>
      Avoid deleting not-yet-archived WAL files during crash recovery
      (Heikki Linnakangas, Fujii Masao)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix race condition in <command>DELETE RETURNING</> (Tom Lane)
     </para>

     <para>
      Under the right circumstances, <command>DELETE RETURNING</> could
      attempt to fetch data from a shared buffer that the current process
      no longer has any pin on.  If some other process changed the buffer
      meanwhile, this would lead to garbage <literal>RETURNING</> output, or
      even a crash.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix infinite-loop risk in regular expression compilation (Tom Lane,
      Don Porter)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix potential null-pointer dereference in regular expression compilation
      (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <function>to_char()</> to use ASCII-only case-folding rules where
      appropriate (Tom Lane)
     </para>

     <para>
      This fixes misbehavior of some template patterns that should be
      locale-independent, but mishandled <quote><literal>I</></quote> and
      <quote><literal>i</></quote> in Turkish locales.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix unwanted rejection of timestamp <literal>1999-12-31 24:00:00</>
      (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix SQL-language functions to be safely usable as support
      functions for range types (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix logic error when a single transaction does <command>UNLISTEN</>
      then <command>LISTEN</> (Tom Lane)
     </para>

     <para>
      The session wound up not listening for notify events at all, though it
      surely should listen in this case.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix possible planner crash after columns have been added to a view
      that's depended on by another view (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix performance issue in <literal>EXPLAIN (ANALYZE, TIMING OFF)</>
      (Pavel Stehule)
     </para>
    </listitem>

    <listitem>
     <para>
      Remove useless <quote>picksplit doesn't support secondary split</> log
      messages (Josh Hansen, Tom Lane)
     </para>

     <para>
      This message seems to have been added in expectation of code that was
      never written, and probably never will be, since GiST's default
      handling of secondary splits is actually pretty good.  So stop nagging
      end users about it.
     </para>
    </listitem>

    <listitem>
     <para>
      Remove vestigial secondary-split support in
      <function>gist_box_picksplit()</> (Tom Lane)
     </para>

     <para>
      Not only was this implementation of secondary-split not better than the
      default implementation, it's actually worse.  So remove it and let the
      default code path handle the case.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix possible failure to send a session's last few transaction
      commit/abort counts to the statistics collector (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Eliminate memory leaks in PL/Perl's <function>spi_prepare()</> function
      (Alex Hunsaker, Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <application>pg_dumpall</> to handle database names containing
      <quote><literal>=</></quote> correctly (Heikki Linnakangas)
     </para>
    </listitem>

    <listitem>
     <para>
      Avoid crash in <application>pg_dump</> when an incorrect connection
      string is given (Heikki Linnakangas)
     </para>
    </listitem>

    <listitem>
     <para>
      Ignore invalid indexes in <application>pg_dump</> and
      <application>pg_upgrade</> (Michael Paquier, Bruce Momjian)
     </para>

     <para>
      Dumping invalid indexes can cause problems at restore time, for example
      if the reason the index creation failed was because it tried to enforce
      a uniqueness condition not satisfied by the table's data.  Also, if the
      index creation is in fact still in progress, it seems reasonable to
      consider it to be an uncommitted DDL change, which
      <application>pg_dump</> wouldn't be expected to dump anyway.
      <application>pg_upgrade</> now also skips invalid indexes rather than
      failing.
     </para>
    </listitem>

    <listitem>
     <para>
      In <application>pg_basebackup</>, include only the current server
      version's subdirectory when backing up a tablespace (Heikki
      Linnakangas)
     </para>
    </listitem>

    <listitem>
     <para>
      Add a server version check in <application>pg_basebackup</> and
      <application>pg_receivexlog</>, so they fail cleanly with version
      combinations that won't work (Heikki Linnakangas)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <filename>contrib/dblink</> to handle inconsistent settings of
      <varname>DateStyle</> or <varname>IntervalStyle</> safely (Daniel
      Farina, Tom Lane)
     </para>

     <para>
      Previously, if the remote server had different settings of these
      parameters, ambiguous dates might be read incorrectly.  This fix
      ensures that datetime and interval columns fetched by a
      <filename>dblink</> query will be interpreted correctly.  Note however
      that inconsistent settings are still risky, since literal values
      appearing in SQL commands sent to the remote server might be
      interpreted differently than they would be locally.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <filename>contrib/pg_trgm</>'s <function>similarity()</> function
      to return zero for trigram-less strings (Tom Lane)
     </para>

     <para>
      Previously it returned <literal>NaN</> due to internal division by zero.
     </para>
    </listitem>

    <listitem>
     <para>
      Enable building <productname>PostgreSQL</> with Microsoft Visual
      Studio 2012 (Brar Piening, Noah Misch)
     </para>
    </listitem>

    <listitem>
     <para>
      Update time zone data files to <application>tzdata</> release 2013b
      for DST law changes in Chile, Haiti, Morocco, Paraguay, and some
      Russian areas.  Also, historical zone data corrections for numerous
      places.
     </para>

     <para>
      Also, update the time zone abbreviation files for recent changes in
      Russia and elsewhere: <literal>CHOT</>, <literal>GET</>,
      <literal>IRKT</>, <literal>KGT</>, <literal>KRAT</>, <literal>MAGT</>,
      <literal>MAWT</>, <literal>MSK</>, <literal>NOVT</>, <literal>OMST</>,
      <literal>TKT</>, <literal>VLAT</>, <literal>WST</>, <literal>YAKT</>,
      <literal>YEKT</> now follow their current meanings, and
      <literal>VOLT</> (Europe/Volgograd) and <literal>MIST</>
      (Antarctica/Macquarie) are added to the default abbreviations list.
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-9-2-3">
  <title>Release 9.2.3</title>

  <note>
  <title>Release Date</title>
  <simpara>2013-02-07</simpara>
  </note>

  <para>
   This release contains a variety of fixes from 9.2.2.
   For information about new features in the 9.2 major release, see
   <xref linkend="release-9-2">.
  </para>

  <sect2>
   <title>Migration to Version 9.2.3</title>

   <para>
    A dump/restore is not required for those running 9.2.X.
   </para>

   <para>
    However, if you are upgrading from a version earlier than 9.2.2,
    see <xref linkend="release-9-2-2">.
    <listitem>
     <para>
      Prevent execution of <function>enum_recv</> from SQL (Tom Lane)
     </para>

     <para>
      The function was misdeclared, allowing a simple SQL command to crash the
      server.  In principle an attacker might be able to use it to examine the
      contents of server memory.  Our thanks to Sumit Soni (via Secunia SVCRP)
      for reporting this issue.  (CVE-2013-0255)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix multiple problems in detection of when a consistent database
      state has been reached during WAL replay (Fujii Masao, Heikki
      Linnakangas, Simon Riggs, Andres Freund)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix detection of end-of-backup point when no actual redo work is
      required (Heikki Linnakangas)
     </para>

     <para>
      This mistake could result in incorrect <quote>WAL ends before end of
      online backup</> errors.
     </para>
    </listitem>

    <listitem>
     <para>
      Update minimum recovery point when truncating a relation file (Heikki
      Linnakangas)
     </para>

     <para>
      Once data has been discarded, it's no longer safe to stop recovery at
      an earlier point in the timeline.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix recycling of WAL segments after changing recovery target timeline
      (Heikki Linnakangas)
     </para>
    </listitem>

    <listitem>
     <para>
      Properly restore timeline history files from archive on cascading
      standby servers (Heikki Linnakangas)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix lock conflict detection on hot-standby servers (Andres Freund,
      Robert Haas)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix missing cancellations in hot standby mode (Noah Misch, Simon Riggs)
     </para>

     <para>
      The need to cancel conflicting hot-standby queries would sometimes be
      missed, allowing those queries to see inconsistent data.
     </para>
    </listitem>

    <listitem>
     <para>
      Prevent recovery pause feature from pausing before users can connect
      (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix SQL grammar to allow subscripting or field selection from a
      sub-SELECT result (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix performance problems with autovacuum truncation in busy workloads
      (Jan Wieck)
     </para>

     <para>
      Truncation of empty pages at the end of a table requires exclusive
      lock, but autovacuum was coded to fail (and release the table lock)
      when there are conflicting lock requests.  Under load, it is easily
      possible that truncation would never occur, resulting in table bloat.
      Fix by performing a partial truncation, releasing the lock, then
      attempting to re-acquire the lock and continue.  This fix also greatly
      reduces the average time before autovacuum releases the lock after a
      conflicting request arrives.
     </para>
    </listitem>

    <listitem>
     <para>
      Improve performance of <function>SPI_execute</> and related
      functions, thereby improving PL/pgSQL's <literal>EXECUTE</>
      (Heikki Linnakangas, Tom Lane)
     </para>

     <para>
      Remove some data-copying overhead that was added in 9.2 as a
      consequence of revisions in the plan caching mechanism.  This
      eliminates a performance regression compared to 9.1, and also saves
      memory, especially when the query string to be executed contains many
      SQL statements.
     </para>

     <para>
      A side benefit is that multi-statement query strings are now
      processed fully serially, that is we complete execution of earlier
      statements before running parse analysis and planning on the
      following ones.  This eliminates a long-standing issue, in that DDL
      that should affect the behavior of a later statement will now behave as
      expected.
     </para>
    </listitem>

    <listitem>
     <para>
      Restore pre-9.2 cost estimates for index usage (Tom Lane)
     </para>

     <para>
      An ill-considered change of a fudge factor led to undesirably high
      cost estimates for use of very large indexes.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix intermittent crash in <literal>DROP INDEX CONCURRENTLY</> (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix potential corruption of shared-memory lock table during
      <command>CREATE/DROP INDEX CONCURRENTLY</> (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <command>COPY</>'s multiple-tuple-insertion code for the case of
      a tuple larger than page size minus fillfactor (Heikki Linnakangas)
     </para>

     <para>
      The previous coding could get into an infinite loop.
     </para>
    </listitem>

    <listitem>
     <para>
      Protect against race conditions when scanning
      <structname>pg_tablespace</> (Stephen Frost, Tom Lane)
     </para>

     <para>
      <command>CREATE DATABASE</> and <command>DROP DATABASE</> could
      misbehave if there were concurrent updates of
      <structname>pg_tablespace</> entries.
     </para>
    </listitem>

    <listitem>
     <para>
      Prevent <command>DROP OWNED</> from trying to drop whole databases or
      tablespaces (&Aacute;lvaro Herrera)
     </para>

     <para>
      For safety, ownership of these objects must be reassigned, not dropped.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix error in <link
      linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
      implementation (Andres Freund)
     </para>

     <para>
      In installations that have existed for more than <link
      linkend="guc-vacuum-freeze-min-age"><varname>vacuum_freeze_min_age</></link>
      transactions, this mistake prevented autovacuum from using partial-table
      scans, so that a full-table scan would always happen instead.
     </para>
    </listitem>

    <listitem>
     <para>
      Prevent misbehavior when a <symbol>RowExpr</> or <symbol>XmlExpr</>
      is parse-analyzed twice (Andres Freund, Tom Lane)
     </para>

     <para>
      This mistake could be user-visible in contexts such as
      <literal>CREATE TABLE LIKE INCLUDING INDEXES</>.
     </para>
    </listitem>

    <listitem>
     <para>
      Improve defenses against integer overflow in hashtable sizing
      calculations (Jeff Davis)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix some bugs associated with privileges on datatypes (Tom Lane)
     </para>

     <para>
      There were some issues with default privileges for types, and
      <application>pg_dump</> failed to dump such privileges at all.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix failure to ignore leftover temporary tables after a server crash
      (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix failure to rotate postmaster log files for size reasons on
      Windows (Jeff Janes, Heikki Linnakangas)
     </para>
    </listitem>

    <listitem>
     <para>
      Reject out-of-range dates in <function>to_date()</> (Hitoshi Harada)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <function>pg_extension_config_dump()</> to handle
      extension-update cases properly (Tom Lane)
     </para>

     <para>
      This function will now replace any existing entry for the target
      table, making it usable in extension update scripts.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix PL/pgSQL's reporting of plan-time errors in possibly-simple
      expressions (Tom Lane)
     </para>

     <para>
      The previous coding resulted in sometimes omitting the first line in
      the <literal>CONTEXT</> traceback for the error.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix PL/Python's handling of functions used as triggers on multiple
      tables (Andres Freund)
     </para>
    </listitem>

    <listitem>
     <para>
      Ensure that non-ASCII prompt strings are translated to the correct
      code page on Windows (Alexander Law, Noah Misch)
     </para>

     <para>
      This bug affected <application>psql</> and some other client programs.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix possible crash in <application>psql</>'s <command>\?</> command
      when not connected to a database (Meng Qingzhong)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix possible error if a relation file is removed while
      <application>pg_basebackup</> is running (Heikki Linnakangas)
     </para>
    </listitem>

    <listitem>
     <para>
      Tolerate timeline switches while <literal>pg_basebackup -X fetch</>
      is backing up a standby server (Heikki Linnakangas)
     </para>
    </listitem>

    <listitem>
     <para>
      Make <application>pg_dump</> exclude data of unlogged tables when
      running on a hot-standby server (Magnus Hagander)
     </para>

     <para>
      This would fail anyway because the data is not available on the standby
      server, so it seems most convenient to assume
      <option>--no-unlogged-table-data</> automatically.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <application>pg_upgrade</> to deal with invalid indexes safely
      (Bruce Momjian)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <application>pg_upgrade</>'s -O/-o options (Marti Raudsepp)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix one-byte buffer overrun in <application>libpq</>'s
      <function>PQprintTuples</> (Xi Wang)
     </para>

     <para>
      This ancient function is not used anywhere by
      <productname>PostgreSQL</> itself, but it might still be used by some
      client code.
     </para>
    </listitem>

    <listitem>
     <para>
      Make <application>ecpglib</> use translated messages properly
      (Chen Huajun)
     </para>
    </listitem>

    <listitem>
     <para>
      Properly install <application>ecpg_compat</> and
      <application>pgtypes</> libraries on MSVC (Jiang Guiqing)
     </para>
    </listitem>

    <listitem>
     <para>
      Include our version of <function>isinf()</> in
      <application>libecpg</> if it's not provided by the system
      (Jiang Guiqing)
     </para>
    </listitem>

    <listitem>
     <para>
      Rearrange configure's tests for supplied functions so it is not
      fooled by bogus exports from libedit/libreadline (Christoph Berg)
     </para>
    </listitem>

    <listitem>
     <para>
      Ensure Windows build number increases over time (Magnus Hagander)
     </para>
    </listitem>

    <listitem>
     <para>
      Make <application>pgxs</> build executables with the right
      <literal>.exe</> suffix when cross-compiling for Windows
      (Zoltan Boszormenyi)
     </para>
    </listitem>

    <listitem>
     <para>
      Add new timezone abbreviation <literal>FET</> (Tom Lane)
     </para>

     <para>
      This is now used in some eastern-European time zones.
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

 <sect1 id="release-9-2-2">
  <title>Release 9.2.2</title>

  <note>
  <title>Release Date</title>
  <simpara>2012-12-06</simpara>
  </note>

  <para>
   This release contains a variety of fixes from 9.2.1.
   For information about new features in the 9.2 major release, see
   <xref linkend="release-9-2">.
  </para>

  <sect2>
   <title>Migration to Version 9.2.2</title>

   <para>
    A dump/restore is not required for those running 9.2.X.
   </para>

   <para>
    However, you may need to perform <command>REINDEX</> operations to
    correct problems in concurrently-built indexes, as described in the first
    changelog item below.
   </para>

   <para>
    Also, if you are upgrading from version 9.2.0,
    see <xref linkend="release-9-2-1">.
   </para>

  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
     <para>
      Fix multiple bugs associated with <command>CREATE/DROP INDEX
      CONCURRENTLY</> (Andres Freund, Tom Lane, Simon Riggs, Pavan Deolasee)
     </para>

     <para>
      An error introduced while adding <command>DROP INDEX CONCURRENTLY</>
      allowed incorrect indexing decisions to be made during the initial
      phase of <command>CREATE INDEX CONCURRENTLY</>; so that indexes built
      by that command could be corrupt.  It is recommended that indexes
      built in 9.2.X with <command>CREATE INDEX CONCURRENTLY</> be rebuilt
      after applying this update.
     </para>

     <para>
      In addition, fix <command>CREATE/DROP INDEX CONCURRENTLY</> to use
      in-place updates when changing the state of an index's
      <structname>pg_index</> row.  This prevents race conditions that could
      cause concurrent sessions to miss updating the target index, thus
      again resulting in corrupt concurrently-created indexes.
     </para>

     <para>
      Also, fix various other operations to ensure that they ignore
      invalid indexes resulting from a failed <command>CREATE INDEX
      CONCURRENTLY</> command.  The most important of these is
      <command>VACUUM</>, because an auto-vacuum could easily be launched
      on the table before corrective action can be taken to fix or remove
      the invalid index.
     </para>

     <para>
      Also fix <command>DROP INDEX CONCURRENTLY</> to not disable
      insertions into the target index until all queries using it are done.
     </para>

     <para>
      Also fix misbehavior if <command>DROP INDEX CONCURRENTLY</> is
      canceled: the previous coding could leave an un-droppable index behind.
     </para>
    </listitem>

    <listitem>
     <para>
      Correct predicate locking for <command>DROP INDEX CONCURRENTLY</>
      (Kevin Grittner)
     </para>

     <para>
      Previously, SSI predicate locks were processed at the wrong time,
      possibly leading to incorrect behavior of serializable transactions
      executing in parallel with the <command>DROP</>.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix buffer locking during WAL replay (Tom Lane)
     </para>

     <para>
      The WAL replay code was insufficiently careful about locking buffers
      when replaying WAL records that affect more than one page.  This could
      result in hot standby queries transiently seeing inconsistent states,
      resulting in wrong answers or unexpected failures.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix an error in WAL generation logic for GIN indexes (Tom Lane)
     </para>

     <para>
      This could result in index corruption, if a torn-page failure occurred.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix an error in WAL replay logic for SP-GiST indexes (Tom Lane)
     </para>

     <para>
      This could result in index corruption after a crash, or on a standby
      server.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix incorrect detection of end-of-base-backup location during WAL
      recovery (Heikki Linnakangas)
     </para>

     <para>
      This mistake allowed hot standby mode to start up before the database
      reaches a consistent state.
     </para>
    </listitem>

    <listitem>
     <para>
      Properly remove startup process's virtual XID lock when promoting a
      hot standby server to normal running (Simon Riggs)
     </para>

     <para>
      This oversight could prevent subsequent execution of certain
      operations such as <command>CREATE INDEX CONCURRENTLY</>.
     </para>
    </listitem>

    <listitem>
     <para>
      Avoid bogus <quote>out-of-sequence timeline ID</> errors in standby
      mode (Heikki Linnakangas)
     </para>
    </listitem>

    <listitem>
     <para>
      Prevent the postmaster from launching new child processes after it's
      received a shutdown signal (Tom Lane)
     </para>

     <para>
      This mistake could result in shutdown taking longer than it should, or
      even never completing at all without additional user action.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix the syslogger process to not fail when
      <varname>log_rotation_age</> exceeds 2^31 milliseconds (about 25 days)
      (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <function>WaitLatch()</> to return promptly when the requested
      timeout expires (Jeff Janes, Tom Lane)
     </para>

     <para>
      With the previous coding, a steady stream of non-wait-terminating
      interrupts could delay return from <function>WaitLatch()</>
      indefinitely.  This has been shown to be a problem for the autovacuum
      launcher process, and might cause trouble elsewhere as well.
     </para>
    </listitem>

    <listitem>
     <para>
      Avoid corruption of internal hash tables when out of memory
      (Hitoshi Harada)
     </para>
    </listitem>

    <listitem>
     <para>
      Prevent file descriptors for dropped tables from being held open past
      transaction end (Tom Lane)
     </para>

     <para>
      This should reduce problems with long-since-dropped tables continuing
      to occupy disk space.
     </para>
    </listitem>

    <listitem>
     <para>
      Prevent database-wide crash and restart when a new child process is
      unable to create a pipe for its latch (Tom Lane)
     </para>

     <para>
      Although the new process must fail, there is no good reason to force a
      database-wide restart, so avoid that.  This improves robustness when
      the kernel is nearly out of file descriptors.
     </para>
    </listitem>

    <listitem>
     <para>
      Avoid planner crash with joins to unflattened subqueries (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix planning of non-strict equivalence clauses above outer joins
      (Tom Lane)
     </para>

     <para>
      The planner could derive incorrect constraints from a clause equating
      a non-strict construct to something else, for example
      <literal>WHERE COALESCE(foo, 0) = 0</>
      when <literal>foo</> is coming from the nullable side of an outer join.
      9.2 showed this type of error in more cases than previous releases,
      but the basic bug has been there for a long time.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <command>SELECT DISTINCT</> with index-optimized
      <function>MIN</>/<function>MAX</> on an inheritance tree (Tom Lane)
     </para>

     <para>
      The planner would fail with <quote>failed to re-find MinMaxAggInfo
      record</> given this combination of factors.
     </para>
    </listitem>

    <listitem>
     <para>
      Make sure the planner sees implicit and explicit casts as equivalent
      for all purposes, except in the minority of cases where there's
      actually a semantic difference (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Include join clauses when considering whether partial indexes can be
      used for a query (Tom Lane)
     </para>

     <para>
      A strict join clause can be sufficient to establish an
      <replaceable>x</> <literal>IS NOT NULL</> predicate, for example.
      This fixes a planner regression in 9.2, since previous versions could
      make comparable deductions.
     </para>
    </listitem>

    <listitem>
     <para>
      Limit growth of planning time when there are many indexable join
      clauses for the same index (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Improve planner's ability to prove exclusion constraints from
      equivalence classes (Tom Lane)
     </para>