<!-- doc/src/sgml/release-9.2.sgml -->
<!-- See header comment in release.sgml about typical markup -->
+ <sect1 id="release-9-2-2">
+ <title>Release 9.2.2</title>
+ <title>Release Date</title>
+ 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">.
+ <title>Migration to Version 9.2.2</title>
+ A dump/restore is not required for those running 9.2.X.
+ However, you may need to perform <command>REINDEX</> operations to
+ correct problems in concurrently-built indexes, as described in the first
+ Also, if you are upgrading from version 9.2.0,
+ see the release notes for 9.2.1.
+ Fix multiple bugs associated with <command>CREATE/DROP INDEX
+ CONCURRENTLY</> (Andres Freund, Tom Lane, Simon Riggs, Pavan Deolasee)
+ 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.
+ 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.
+ 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
+ Also fix <command>DROP INDEX CONCURRENTLY</> to not disable
+ insertions into the target index until all queries using it are done.
+ Also fix misbehavior if <command>DROP INDEX CONCURRENTLY</> is
+ canceled: the previous coding could leave an un-droppable index behind.
+ Correct predicate locking for <command>DROP INDEX CONCURRENTLY</>
+ 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</>.
+ Fix buffer locking during WAL replay (Tom Lane)
+ 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.
+ Fix an error in WAL generation logic for GIN indexes (Tom Lane)
+ This could result in index corruption, if a torn-page failure occurred.
+ Fix an error in WAL replay logic for SP-GiST indexes (Tom Lane)
+ This could result in index corruption after a crash, or on a standby
+ Fix incorrect detection of end-of-base-backup location during WAL
+ recovery (Heikki Linnakangas)
+ This mistake allowed hot standby mode to start up before the database
+ reaches a consistent state.
+ Properly remove startup process's virtual XID lock when promoting a
+ hot standby server to normal running (Simon Riggs)
+ This oversight could prevent subsequent execution of certain
+ operations such as <command>CREATE INDEX CONCURRENTLY</>.
+ Avoid bogus <quote>out-of-sequence timeline ID</> errors in standby
+ mode (Heikki Linnakangas)
+ Prevent the postmaster from launching new child processes after it's
+ received a shutdown signal (Tom Lane)
+ This mistake could result in shutdown taking longer than it should, or
+ even never completing at all without additional user action.
+ Fix the syslogger process to not fail when
+ <varname>log_rotation_age</> exceeds 2^31 milliseconds (about 25 days)
+ Fix <function>WaitLatch()</> to return promptly when the requested
+ timeout expires (Jeff Janes, Tom Lane)
+ 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.
+ Avoid corruption of internal hash tables when out of memory
+ Prevent file descriptors for dropped tables from being held open past
+ transaction end (Tom Lane)
+ This should reduce problems with long-since-dropped tables continuing
+ Prevent database-wide crash and restart when a new child process is
+ unable to create a pipe for its latch (Tom Lane)
+ 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.
+ Avoid planner crash with joins to unflattened subqueries (Tom Lane)
+ Fix planning of non-strict equivalence clauses above outer joins
+ 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.
+ Fix <command>SELECT DISTINCT</> with index-optimized
+ <function>MIN</>/<function>MAX</> on an inheritance tree (Tom Lane)
+ The planner would fail with <quote>failed to re-find MinMaxAggInfo
+ record</> given this combination of factors.
+ 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)
+ Include join clauses when considering whether partial indexes can be
+ used for a query (Tom Lane)
+ 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.
+ Limit growth of planning time when there are many indexable join
+ clauses for the same index (Tom Lane)
+ Improve planner's ability to prove exclusion constraints from
+ equivalence classes (Tom Lane)
+ Fix partial-row matching in hashed subplans to handle cross-type cases
+ 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.
+ Fix btree mark/restore functions to handle array keys (Tom Lane)
+ 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.
+ Revert patch for taking fewer snapshots (Tom Lane)
+ 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.
+ Acquire buffer lock when re-fetching the old tuple for an
+ <literal>AFTER ROW UPDATE/DELETE</> trigger (Andres Freund)
+ 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
+ Fix <command>ALTER COLUMN TYPE</> to handle inherited check
+ constraints properly (Pavan Deolasee)
+ This worked correctly in pre-8.4 releases, and now works correctly
+ Fix <command>ALTER EXTENSION SET SCHEMA</>'s failure to move some
+ subsidiary objects into the new schema (Álvaro Herrera, Dimitri
+ Handle <command>CREATE TABLE AS EXECUTE</> correctly in extended query
+ Don't modify the input parse tree in <command>DROP RULE IF NOT
+ EXISTS</> and <command>DROP TRIGGER IF NOT EXISTS</> (Tom Lane)
+ This mistake would cause errors if a cached statement of one of these
+ Fix <command>REASSIGN OWNED</> to handle grants on tablespaces
+ (Álvaro Herrera)
+ Ignore incorrect <structname>pg_attribute</> entries for system
+ columns for views (Tom Lane)
+ 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.
+ Fix rule printing to dump <literal>INSERT INTO <replaceable>table</>
+ DEFAULT VALUES</literal> correctly (Tom Lane)
+ Guard against stack overflow when there are too many
+ <literal>UNION</>/<literal>INTERSECT</>/<literal>EXCEPT</> clauses
+ Prevent platform-dependent failures when dividing the minimum possible
+ integer value by -1 (Xi Wang, Tom Lane)
+ Fix possible access past end of string in date parsing
+ 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)
+ 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.
+ Fix <function>pg_terminate_backend()</> and
+ <function>pg_cancel_backend()</> to not throw error for a non-existent
+ target process (Josh Kupershmidt)
+ This case already worked as intended when called by a superuser,
+ but not so much when called by ordinary users.
+ <structname>pg_stat_replication</>.<structfield>sync_state</> at a
+ page boundary (Kyotaro Horiguchi)
+ 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)
+ Formerly, this would result in something quite unhelpful, such as
+ <quote>Non-recoverable failure in name resolution</>.
+ Fix memory leaks when sending composite column values to the client
+ Save some cycles by not searching for subtransaction locks at commit
+ In a transaction holding many exclusive locks, this useless activity
+ Make <application>pg_ctl</> more robust about reading the
+ <filename>postmaster.pid</> file (Heikki Linnakangas)
+ This fixes race conditions and possible file descriptor leakage.
+ 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)
+ Make <application>pg_dump</> dump <literal>SEQUENCE SET</> items in
+ the data not pre-data section of the archive (Tom Lane)
+ 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.
+ Fix <application>pg_dump</>'s handling of <command>DROP DATABASE</>
+ commands in <option>--clean</> mode (Guillaume Lelarge)
+ 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
+ Fix <application>pg_dump</> for views with circular dependencies and
+ no relation options (Tom Lane)
+ 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.
+ Fix bugs in the <filename>restore.sql</> script emitted by
+ <application>pg_dump</> in <literal>tar</> output format (Tom Lane)
+ 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.
+ Fix <application>pg_restore</> to accept POSIX-conformant
+ <literal>tar</> files (Brian Weaver, Tom Lane)
+ 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.
+ Fix <literal>tar</> files emitted by <application>pg_basebackup</> to
+ be POSIX conformant (Brian Weaver, Tom Lane)
+ Fix <application>pg_resetxlog</> to locate <filename>postmaster.pid</>
+ correctly when given a relative path to the data directory (Tom Lane)
+ This mistake could lead to <application>pg_resetxlog</> not noticing
+ that there is an active postmaster using the data directory.
+ Fix <application>libpq</>'s <function>lo_import()</> and
+ <function>lo_export()</> functions to report file I/O errors properly
+ Fix <application>ecpg</>'s processing of nested structure pointer
+ variables (Muhammad Usama)
+ Fix <application>ecpg</>'s <function>ecpg_get_data</> function to
+ handle arrays properly (Michael Meskes)
+ Prevent <application>pg_upgrade</> from trying to process TOAST tables
+ for system catalogs (Bruce Momjian)
+ This fixes an error seen when the <literal>information_schema</> has
+ been dropped and recreated. Other failures were also possible.
+ Improve <application>pg_upgrade</> performance by setting
+ <varname>synchronous_commit</> to <literal>off</> in the new cluster
+ Make <filename>contrib/pageinspect</>'s btree page inspection
+ functions take buffer locks while examining pages (Tom Lane)
+ Work around unportable behavior of <literal>malloc(0)</> and
+ <literal>realloc(NULL, 0)</> (Tom Lane)
+ 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
+ Ensure that <literal>make install</> for an extension creates the
+ <filename>extension</> installation directory (Cédric Villemain)
+ Previously, this step was missed if <varname>MODULEDIR</> was set in
+ the extension's Makefile.
+ Fix <application>pgxs</> support for building loadable modules on AIX
+ Building modules outside the original source tree didn't work on AIX.
+ 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.