Skip to content
Snippets Groups Projects
release-9.2.sgml 281 KiB
Newer Older
    </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">.
6130 6131 6132 6133 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6332 6333 6334 6335 6336 6337 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6368 6369 6370 6371 6372 6373 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 6398 6399 6400 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6456 6457 6458 6459 6460 6461 6462 6463 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6572 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6812 6813 6814 6815 6816 6817 6818 6819 6820 6821 6822 6823
   </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>
    </listitem>

    <listitem>
     <para>
      Fix partial-row matching in hashed subplans to handle cross-type cases
      correctly (Tom Lane)
     </para>

     <para>
      This affects multicolumn <literal>NOT IN</> subplans, such as
      <literal>WHERE (a, b) NOT IN (SELECT x, y FROM ...)</>
      when for instance <literal>b</> and <literal>y</> are <type>int4</>
      and <type>int8</> respectively.  This mistake led to wrong answers
      or crashes depending on the specific datatypes involved.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix btree mark/restore functions to handle array keys (Tom Lane)
     </para>

     <para>
      This oversight could result in wrong answers from merge joins whose
      inner side is an index scan using an
      <literal><replaceable>indexed_column</> =
      ANY(<replaceable>array</>)</literal> condition.
     </para>
    </listitem>

    <listitem>
     <para>
      Revert patch for taking fewer snapshots (Tom Lane)
     </para>

     <para>
      The 9.2 change to reduce the number of snapshots taken during query
      execution led to some anomalous behaviors not seen in previous
      releases, because execution would proceed with a snapshot acquired
      before locking the tables used by the query.  Thus, for example,
      a query would not be guaranteed to see updates committed by a
      preceding transaction even if that transaction had exclusive lock.
      We'll probably revisit this in future releases, but meanwhile put it
      back the way it was before 9.2.
     </para>
    </listitem>

    <listitem>
     <para>
      Acquire buffer lock when re-fetching the old tuple for an
      <literal>AFTER ROW UPDATE/DELETE</> trigger (Andres Freund)
     </para>

     <para>
      In very unusual circumstances, this oversight could result in passing
      incorrect data to a trigger <literal>WHEN</> condition, or to the
      precheck logic for a foreign-key enforcement trigger.  That could
      result in a crash, or in an incorrect decision about whether to
      fire the trigger.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <command>ALTER COLUMN TYPE</> to handle inherited check
      constraints properly (Pavan Deolasee)
     </para>

     <para>
      This worked correctly in pre-8.4 releases, and now works correctly
      in 8.4 and later.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <command>ALTER EXTENSION SET SCHEMA</>'s failure  to move some
      subsidiary objects into the new schema (&Aacute;lvaro Herrera, Dimitri
      Fontaine)
     </para>
    </listitem>

    <listitem>
     <para>
      Handle <command>CREATE TABLE AS EXECUTE</> correctly in extended query
      protocol (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Don't modify the input parse tree in <command>DROP RULE IF NOT
      EXISTS</> and <command>DROP TRIGGER IF NOT EXISTS</> (Tom Lane)
     </para>

     <para>
      This mistake would cause errors if a cached statement of one of these
      types was re-executed.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <command>REASSIGN OWNED</> to handle grants on tablespaces
      (&Aacute;lvaro Herrera)
     </para>
    </listitem>

    <listitem>
     <para>
      Ignore incorrect <structname>pg_attribute</> entries for system
      columns for views (Tom Lane)
     </para>

     <para>
      Views do not have any system columns.  However, we forgot to
      remove such entries when converting a table to a view.  That's fixed
      properly for 9.3 and later, but in previous branches we need to defend
      against existing mis-converted views.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix rule printing to dump <literal>INSERT INTO <replaceable>table</>
      DEFAULT VALUES</literal> correctly (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Guard against stack overflow when there are too many
      <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> clauses
      in a query (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Prevent platform-dependent failures when dividing the minimum possible
      integer value by -1 (Xi Wang, Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix possible access past end of string in date parsing
      (Hitoshi Harada)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix failure to advance XID epoch if XID wraparound happens during a
      checkpoint and <varname>wal_level</> is <literal>hot_standby</>
      (Tom Lane, Andres Freund)
     </para>

     <para>
      While this mistake had no particular impact on
      <productname>PostgreSQL</productname> itself, it was bad for
      applications that rely on <function>txid_current()</> and related
      functions: the TXID value would appear to go backwards.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <function>pg_terminate_backend()</> and
      <function>pg_cancel_backend()</> to not throw error for a non-existent
      target process (Josh Kupershmidt)
     </para>

     <para>
      This case already worked as intended when called by a superuser,
      but not so much when called by ordinary users.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix display of
      <structname>pg_stat_replication</>.<structfield>sync_state</> at a
      page boundary (Kyotaro Horiguchi)
     </para>
    </listitem>

    <listitem>
     <para>
      Produce an understandable error message if the length of the path name
      for a Unix-domain socket exceeds the platform-specific limit
      (Tom Lane, Andrew Dunstan)
     </para>

     <para>
      Formerly, this would result in something quite unhelpful, such as
      <quote>Non-recoverable failure in name resolution</>.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix memory leaks when sending composite column values to the client
      (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Save some cycles by not searching for subtransaction locks at commit
      (Simon Riggs)
     </para>

     <para>
      In a transaction holding many exclusive locks, this useless activity
      could be quite costly.
     </para>
    </listitem>

    <listitem>
     <para>
      Make <application>pg_ctl</> more robust about reading the
      <filename>postmaster.pid</> file (Heikki Linnakangas)
     </para>

     <para>
      This fixes race conditions and possible file descriptor leakage.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix possible crash in <application>psql</> if incorrectly-encoded data
      is presented and the <varname>client_encoding</> setting is a
      client-only encoding, such as SJIS (Jiang Guiqing)
     </para>
    </listitem>

    <listitem>
     <para>
      Make <application>pg_dump</> dump <literal>SEQUENCE SET</> items in
      the data not pre-data section of the archive (Tom Lane)
     </para>

     <para>
      This fixes an undesirable inconsistency between the meanings of
      <option>--data-only</> and <option>--section=data</>, and also fixes
      dumping of sequences that are marked as extension configuration tables.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <application>pg_dump</>'s handling of <command>DROP DATABASE</>
      commands in <option>--clean</> mode (Guillaume Lelarge)
     </para>

     <para>
      Beginning in 9.2.0, <literal>pg_dump --clean</> would issue a
      <command>DROP DATABASE</> command, which was either useless or
      dangerous depending on the usage scenario.  It no longer does that.
      This change also fixes the combination of <option>--clean</> and
      <option>--create</> to work sensibly, i.e., emit <command>DROP
      DATABASE</> then <command>CREATE DATABASE</> before reconnecting to the
      target database.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <application>pg_dump</> for views with circular dependencies and
      no relation options (Tom Lane)
     </para>

     <para>
      The previous fix to dump relation options when a view is
      involved in a circular dependency didn't work right for the case
      that the view has no options; it emitted <literal>ALTER VIEW foo
      SET ()</> which is invalid syntax.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix bugs in the <filename>restore.sql</> script emitted by
      <application>pg_dump</> in <literal>tar</> output format (Tom Lane)
     </para>

     <para>
      The script would fail outright on tables whose names include
      upper-case characters.  Also, make the script capable of restoring
      data in <option>--inserts</> mode as well as the regular COPY mode.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <application>pg_restore</> to accept POSIX-conformant
      <literal>tar</> files (Brian Weaver, Tom Lane)
     </para>

     <para>
      The original coding of <application>pg_dump</>'s <literal>tar</>
      output mode produced files that are not fully conformant with the
      POSIX standard.  This has been corrected for version 9.3.  This
      patch updates previous branches so that they will accept both the
      incorrect and the corrected formats, in hopes of avoiding
      compatibility problems when 9.3 comes out.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <literal>tar</> files emitted by <application>pg_basebackup</> to
      be POSIX conformant (Brian Weaver, Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <application>pg_resetxlog</> to locate <filename>postmaster.pid</>
      correctly when given a relative path to the data directory (Tom Lane)
     </para>

     <para>
      This mistake could lead to <application>pg_resetxlog</> not noticing
      that there is an active postmaster using the data directory.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <application>libpq</>'s <function>lo_import()</> and
      <function>lo_export()</> functions to report file I/O errors properly
      (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <application>ecpg</>'s processing of nested structure pointer
      variables (Muhammad Usama)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <application>ecpg</>'s <function>ecpg_get_data</> function to
      handle arrays properly (Michael Meskes)
     </para>
    </listitem>

    <listitem>
     <para>
      Prevent <application>pg_upgrade</> from trying to process TOAST tables
      for system catalogs (Bruce Momjian)
     </para>

     <para>
      This fixes an error seen when the <literal>information_schema</> has
      been dropped and recreated.  Other failures were also possible.
     </para>
    </listitem>

    <listitem>
     <para>
      Improve <application>pg_upgrade</> performance by setting
      <varname>synchronous_commit</> to <literal>off</> in the new cluster
      (Bruce Momjian)
     </para>
    </listitem>

    <listitem>
     <para>
      Make <filename>contrib/pageinspect</>'s btree page inspection
      functions take buffer locks while examining pages (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Work around unportable behavior of <literal>malloc(0)</> and
      <literal>realloc(NULL, 0)</> (Tom Lane)
     </para>

     <para>
      On platforms where these calls return <literal>NULL</>, some code
      mistakenly thought that meant out-of-memory.
      This is known to have broken <application>pg_dump</> for databases
      containing no user-defined aggregates.  There might be other cases
      as well.
     </para>
    </listitem>

    <listitem>
     <para>
      Ensure that <literal>make install</> for an extension creates the
      <filename>extension</> installation directory (C&eacute;dric Villemain)
     </para>

     <para>
      Previously, this step was missed if <varname>MODULEDIR</> was set in
      the extension's Makefile.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <application>pgxs</> support for building loadable modules on AIX
      (Tom Lane)
     </para>

     <para>
      Building modules outside the original source tree didn't work on AIX.
     </para>
    </listitem>

    <listitem>
     <para>
      Update time zone data files to <application>tzdata</> release 2012j
      for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western
      Samoa, and portions of Brazil.
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

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

  <note>
  <title>Release Date</title>
  <simpara>2012-09-24</simpara>
  </note>

  <para>
   This release contains a variety of fixes from 9.2.0.
   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.1</title>

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

   <para>
    However, you may need to perform <command>REINDEX</> and/or
    <command>VACUUM</> operations to recover from the effects of the data
    corruption bug described in the first changelog item below.
   </para>

  </sect2>

  <sect2>
   <title>Changes</title>

   <itemizedlist>

    <listitem>
     <para>
      Fix persistence marking of shared buffers during WAL replay
      (Jeff Davis)
     </para>

     <para>
      This mistake can result in buffers not being written out during
      checkpoints, resulting in data corruption if the server later crashes
      without ever having written those buffers.  Corruption can occur on
      any server following crash recovery, but it is significantly more
      likely to occur on standby slave servers since those perform much
      more WAL replay.  There is a low probability of corruption of btree
      and GIN indexes.  There is a much higher probability of corruption
      of table <quote>visibility maps</>, which might lead to wrong answers
      from index-only scans.  Table data proper cannot be corrupted by this
      bug.
     </para>

     <para>
      While no index corruption due to this bug is known to have occurred
      in the field, as a precautionary measure it is recommended that
      production installations <command>REINDEX</> all btree and GIN
      indexes at a convenient time after upgrading to 9.2.1.
     </para>

     <para>
      Also, it is recommended to perform a <command>VACUUM</> of all tables
      while having <link
      linkend="guc-vacuum-freeze-table-age"><varname>vacuum_freeze_table_age</></link>
      set to zero.  This will fix any incorrect visibility map data.  <link
      linkend="guc-vacuum-cost-delay"><varname>vacuum_cost_delay</></link>
      can be adjusted to reduce the performance impact of vacuuming, while
      causing it to take longer to finish.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix possible incorrect sorting of output from queries involving
      <literal>WHERE <replaceable>indexed_column</> IN
      (<replaceable>list_of_values</>)</literal> (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix planner failure for queries involving <literal>GROUP BY</>
      expressions along with window functions and aggregates (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix planner's assignment of executor parameters (Tom Lane)
     </para>

     <para>
      This error could result in wrong answers from queries that scan the
      same <literal>WITH</> subquery multiple times.
     </para>
    </listitem>

    <listitem>
     <para>
      Improve planner's handling of join conditions in index scans (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Improve selectivity estimation for text search queries involving
      prefixes, i.e. <replaceable>word</><literal>:*</> patterns  (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Fix delayed recognition of permissions changes (Tom Lane)
     </para>

     <para>
      A command that needed no locks other than ones its transaction already
      had might fail to notice a concurrent <command>GRANT</> or
      <command>REVOKE</> that committed since the start of its transaction.
     </para>
    </listitem>

    <listitem>
     <para>
      Fix <command>ANALYZE</> to not fail when a column is a domain over an
      array type (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Prevent PL/Perl from crashing if a recursive PL/Perl function is
      redefined while being executed (Tom Lane)
     </para>
    </listitem>

    <listitem>
     <para>
      Work around possible misoptimization in PL/Perl (Tom Lane)
     </para>

     <para>
      Some Linux distributions contain an incorrect version of
      <filename>pthread.h</> that results in incorrect compiled code in
      PL/Perl, leading to crashes if a PL/Perl function calls another one
      that throws an error.
     </para>
    </listitem>

    <listitem>
     <para>
      Remove unnecessary dependency on <application>pg_config</> from
      <application>pg_upgrade</> (Peter Eisentraut)
     </para>
    </listitem>

    <listitem>
     <para>
      Update time zone data files to <application>tzdata</> release 2012f
      for DST law changes in Fiji
     </para>
    </listitem>

   </itemizedlist>

  </sect2>
 </sect1>

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

  <note>
   <title>Release Date</title>
   <simpara>2012-09-10</simpara>