↑↓ select ↵ open ⌫ change scope Open full search

PG.CENTER connects PostgreSQL documentation, reference, and ecosystem knowledge. Maintained by Pigsty.

DocumentationVersion comparison

POSTGRESQL · VERSION COMPARE

PostgreSQL 9.2.2 release changes

All features, fixes, and compatibility notes in this release, with related records from other versions.

All changes in this release
All changes in this release

Includes changes after the source version through the target. A major version name means its initial release.

From PostgreSQL 9.0 onward: 17 major branches and 352 release notes. Updated 2026-09-26.

Complete release changes

9.2.2

2012-12-06

Export JSON
60changesFeatures, fixes, improvements
1releaseGrouped by release
0CVEsVulnerability IDs mentioned in these notes

9.2.2 HistoricalSupport ends 2017-11-09

PostgreSQL 9.2.2

Migration and compatibility

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

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

Also, if you are upgrading from version 9.2.0, see Section E.24.

Bug fixesFix multiple bugs associated with CREATE/DROP INDEX CONCURRENTLY

Changes

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

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

In addition, fix CREATE/DROP INDEX CONCURRENTLY to use in-place updates when changing the state of an index's 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 CREATE INDEX CONCURRENTLY command. The most important of these is 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.

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

Also fix misbehavior if DROP INDEX CONCURRENTLY is canceled: the previous coding could leave an un-droppable index behind.

Bug fixesCorrect predicate locking for DROP INDEX CONCURRENTLY

Changes

Correct predicate locking for DROP INDEX CONCURRENTLY (Kevin Grittner)

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

Bug fixesFix buffer locking during WAL replay

Changes

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.

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix an error in WAL generation logic for GIN indexes

Changes

Fix an error in WAL generation logic for GIN indexes (Tom Lane)

This could result in index corruption, if a torn-page failure occurred.

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix an error in WAL replay logic for SP-GiST indexes

Changes

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 server.

Bug fixesFix incorrect detection of end-of-base-backup location during WAL recovery

Changes

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.

ImprovementsProperly remove startup process's virtual XID lock when promoting a hot standby server to normal running

Changes

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 CREATE INDEX CONCURRENTLY.

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsAvoid bogus "out-of-sequence timeline ID" errors in standby mode

Changes

Avoid bogus "out-of-sequence timeline ID" errors in standby mode (Heikki Linnakangas)

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsPrevent the postmaster from launching new child processes after it's received a shutdown signal

Changes

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.

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix the syslogger process to not fail when log_rotation_age exceeds 2^31 milliseconds (about 25 days)

Changes

Fix the syslogger process to not fail when log_rotation_age exceeds 2^31 milliseconds (about 25 days) (Tom Lane)

Bug fixesFix WaitLatch() to return promptly when the requested timeout expires

Changes

Fix 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 WaitLatch() indefinitely. This has been shown to be a problem for the autovacuum launcher process, and might cause trouble elsewhere as well.

Bug fixesAvoid corruption of internal hash tables when out of memory

Changes

Avoid corruption of internal hash tables when out of memory (Hitoshi Harada)

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsPrevent file descriptors for dropped tables from being held open past transaction end

Changes

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 to occupy disk space.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesPrevent database-wide crash and restart when a new child process is unable to create a pipe for its latch

Changes

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.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesAvoid planner crash with joins to unflattened subqueries

Changes

Avoid planner crash with joins to unflattened subqueries (Tom Lane)

Bug fixesFix planning of non-strict equivalence clauses above outer joins

Changes

Fix planning of non-strict equivalence clauses above outer joins (Tom Lane)

The planner could derive incorrect constraints from a clause equating a non-strict construct to something else, for example WHERE COALESCE(foo, 0) = 0 when 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.

Bug fixesFix SELECT DISTINCT with index-optimized MIN/MAX on an inheritance tree

Changes

Fix SELECT DISTINCT with index-optimized MIN/MAX on an inheritance tree (Tom Lane)

The planner would fail with "failed to re-find MinMaxAggInfo record" given this combination of factors.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsMake 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

Changes

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)

ImprovementsInclude join clauses when considering whether partial indexes can be used for a query

Changes

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 x IS NOT NULL predicate, for example. This fixes a planner regression in 9.2, since previous versions could make comparable deductions.

ImprovementsLimit growth of planning time when there are many indexable join clauses for the same index

Changes

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

ImprovementsImprove planner's ability to prove exclusion constraints from equivalence classes

Changes

Improve planner's ability to prove exclusion constraints from equivalence classes (Tom Lane)

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix partial-row matching in hashed subplans to handle cross-type cases correctly

Changes

Fix partial-row matching in hashed subplans to handle cross-type cases correctly (Tom Lane)

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

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix btree mark/restore functions to handle array keys

Changes

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 indexed_column = ANY(array) condition.

ImprovementsRevert patch for taking fewer snapshots

Changes

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.

ImprovementsAcquire buffer lock when re-fetching the old tuple for an AFTER ROW UPDATE/DELETE trigger

Changes

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

In very unusual circumstances, this oversight could result in passing incorrect data to a trigger 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.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix ALTER COLUMN TYPE to handle inherited check constraints properly

Changes

Fix ALTER COLUMN TYPE to handle inherited check constraints properly (Pavan Deolasee)

This worked correctly in pre-8.4 releases, and now works correctly in 8.4 and later.

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix ALTER EXTENSION SET SCHEMA's failure to move some subsidiary objects into the new schema

Changes

Fix ALTER EXTENSION SET SCHEMA's failure to move some subsidiary objects into the new schema (Álvaro Herrera, Dimitri Fontaine)

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsHandle CREATE TABLE AS EXECUTE correctly in extended query protocol

Changes

Handle CREATE TABLE AS EXECUTE correctly in extended query protocol (Tom Lane)

ImprovementsDon't modify the input parse tree in DROP RULE IF NOT EXISTS and DROP TRIGGER IF NOT EXISTS

Changes

Don't modify the input parse tree in DROP RULE IF NOT EXISTS and DROP TRIGGER IF NOT EXISTS (Tom Lane)

This mistake would cause errors if a cached statement of one of these types was re-executed.

Bug fixesFix REASSIGN OWNED to handle grants on tablespaces

Changes

Fix REASSIGN OWNED to handle grants on tablespaces (Álvaro Herrera)

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsIgnore incorrect pg_attribute entries for system columns for views

Changes

Ignore incorrect 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.

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix rule printing to dump INSERT INTO table DEFAULT VALUES correctly

Changes

Fix rule printing to dump INSERT INTO table DEFAULT VALUES correctly (Tom Lane)

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsGuard against stack overflow when there are too many UNION/INTERSECT/EXCEPT clauses in a query

Changes

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

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsPrevent platform-dependent failures when dividing the minimum possible integer value by -1

Changes

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

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix possible access past end of string in date parsing

Changes

Fix possible access past end of string in date parsing (Hitoshi Harada)

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix failure to advance XID epoch if XID wraparound happens during a checkpoint and wal_level is hot_standby

Changes

Fix failure to advance XID epoch if XID wraparound happens during a checkpoint and wal_level is hot_standby (Tom Lane, Andres Freund)

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

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix pg_terminate_backend() and pg_cancel_backend() to not throw error for a non-existent target process

Changes

Fix pg_terminate_backend() and 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.

Bug fixesFix display of pg_stat_replication.sync_state at a page boundary

Changes

Fix display of pg_stat_replication.sync_state at a page boundary (Kyotaro Horiguchi)

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsProduce an understandable error message if the length of the path name for a Unix-domain socket exceeds the platform-specific limit

Changes

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 "Non-recoverable failure in name resolution".

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix memory leaks when sending composite column values to the client

Changes

Fix memory leaks when sending composite column values to the client (Tom Lane)

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsSave some cycles by not searching for subtransaction locks at commit

Changes

Save some cycles by not searching for subtransaction locks at commit (Simon Riggs)

In a transaction holding many exclusive locks, this useless activity could be quite costly.

ImprovementsMake pg_ctl more robust about reading the postmaster.pid file

Changes

Make pg_ctl more robust about reading the postmaster.pid file (Heikki Linnakangas)

This fixes race conditions and possible file descriptor leakage.

Bug fixesFix possible crash in psql if incorrectly-encoded data is presented and the client_encoding setting is a client-only encoding, such as SJIS

Changes

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

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsMake pg_dump dump SEQUENCE SET items in the data not pre-data section of the archive

Changes

Make pg_dump dump SEQUENCE SET items in the data not pre-data section of the archive (Tom Lane)

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

Bug fixesFix pg_dump's handling of DROP DATABASE commands in --clean mode

Changes

Fix pg_dump's handling of DROP DATABASE commands in --clean mode (Guillaume Lelarge)

Beginning in 9.2.0, pg_dump --clean would issue a 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 --clean and --create to work sensibly, i.e., emit DROP DATABASE then CREATE DATABASE before reconnecting to the target database.

Bug fixesFix pg_dump for views with circular dependencies and no relation options

Changes

Fix 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 ALTER VIEW foo SET () which is invalid syntax.

Bug fixesFix bugs in the restore.sql script emitted by pg_dump in tar output format

Changes

Fix bugs in the restore.sql script emitted by pg_dump in 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 --inserts mode as well as the regular COPY mode.

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix pg_restore to accept POSIX-conformant tar files

Changes

Fix pg_restore to accept POSIX-conformant tar files (Brian Weaver, Tom Lane)

The original coding of pg_dump's 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.

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix tar files emitted by pg_basebackup to be POSIX conformant

Changes

Fix tar files emitted by pg_basebackup to be POSIX conformant (Brian Weaver, Tom Lane)

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix pg_resetxlog to locate postmaster.pid correctly when given a relative path to the data directory

Changes

Fix pg_resetxlog to locate postmaster.pid correctly when given a relative path to the data directory (Tom Lane)

This mistake could lead to pg_resetxlog not noticing that there is an active postmaster using the data directory.

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix libpq's lo_import() and lo_export() functions to report file I/O errors properly

Changes

Fix libpq's lo_import() and lo_export() functions to report file I/O errors properly (Tom Lane)

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix ecpg's processing of nested structure pointer variables

Changes

Fix ecpg's processing of nested structure pointer variables (Muhammad Usama)

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix ecpg's ecpg_get_data function to handle arrays properly

Changes

Fix ecpg's ecpg_get_data function to handle arrays properly (Michael Meskes)

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsPrevent pg_upgrade from trying to process TOAST tables for system catalogs

Changes

Prevent pg_upgrade from trying to process TOAST tables for system catalogs (Bruce Momjian)

This fixes an error seen when the information_schema has been dropped and recreated. Other failures were also possible.

PerformanceImprove pg_upgrade performance by setting synchronous_commit to off in the new cluster

Changes

Improve pg_upgrade performance by setting synchronous_commit to off in the new cluster (Bruce Momjian)

ImprovementsMake contrib/pageinspect's btree page inspection functions take buffer locks while examining pages

Changes

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

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsWork around unportable behavior of malloc(0) and realloc(NULL, 0)

Changes

Work around unportable behavior of malloc(0) and realloc(NULL, 0) (Tom Lane)

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

ImprovementsEnsure that make install for an extension creates the extension installation directory

Changes

Ensure that make install for an extension creates the extension installation directory (Cédric Villemain)

Previously, this step was missed if MODULEDIR was set in the extension's Makefile.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix pgxs support for building loadable modules on AIX

Changes

Fix pgxs support for building loadable modules on AIX (Tom Lane)

Building modules outside the original source tree didn't work on AIX.

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsUpdate time zone data files to tzdata release 2012j for DST law changes in Cuba, Israel, Jordan, Libya, Palestine, Western Samoa, and portions of Brazil.

Changes

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

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

How is this comparison generated?

The comparison follows PostgreSQL release notes from just after the source through the target version. For a major upgrade, maintenance releases from each older branch are included only up to the next major release date, and never after the target date. A major version such as 18 means its initial release, 18.0. Previews and development snapshots are labeled separately.

Entries come from the original English manuals. Release coverage and commit evidence are verified against upstream sources. Every entry retains its complete explanation and source link. Categories aid browsing; read the full notes for impact, conditions, and migration steps.

Fixes can be backported to several branches. Confirmed duplicates are merged conservatively, with every branch explanation retained. A note describing several independent fixes is excluded only when all are already present in the source. Major-release features remain distinct from related maintenance patches unless their complete original descriptions match. Uncertain matches are retained. This is a release-note history, not an exhaustive comparison of compiled binaries.

CVE results are calculated independently from the PostgreSQL security registry and vulnerability records. A CVE counts as gained protection only when the source is affected and the target is fixed or unaffected. Remaining vulnerabilities are listed separately. Security entries and distinct CVEs are counted separately.

Interaction inspired by pgversions.com and pgversionreport. Content comes from PostgreSQL release notes. See the release notes archive.