E.105. Release 9.1.7
Release date: 2012-12-06
This release contains a variety of fixes from 9.1.6. For information about new features in the 9.1 major release, see Section E.112 .
E.105.1. Migration to Version 9.1.7
A dump/restore is not required for those running 9.1.X.
However, if you are upgrading from a version earlier than 9.1.6, see Section E.106 .
E.105.2. Changes
-
Fix multiple bugs associated with
CREATE INDEX CONCURRENTLY(Andres Freund, Tom Lane)Fix
CREATE INDEX CONCURRENTLYto use in-place updates when changing the state of an index'spg_indexrow. This prevents race conditions that could cause concurrent sessions to miss updating the target index, thus resulting in corrupt concurrently-created indexes.Also, fix various other operations to ensure that they ignore invalid indexes resulting from a failed
CREATE INDEX CONCURRENTLYcommand. The most important of these isVACUUM, because an auto-vacuum could easily be launched on the table before corrective action can be taken to fix or remove the invalid index. -
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.
-
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. -
Avoid bogus " 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.
-
Avoid corruption of internal hash tables when out of memory (Hitoshi Harada)
-
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.
-
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.
-
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) = 0whenfoois coming from the nullable side of an outer join. -
Fix
SELECT DISTINCTwith index-optimizedMIN/MAXon an inheritance tree (Tom Lane)The planner would fail with " failed to re-find MinMaxAggInfo record " given this combination of factors.
-
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 correctly (Tom Lane)
This affects multicolumn
NOT INsubplans, such asWHERE (a, b) NOT IN (SELECT x, y FROM ...)when for instancebandyareint4andint8respectively. This mistake led to wrong answers or crashes depending on the specific datatypes involved. -
Acquire buffer lock when re-fetching the old tuple for an
AFTER ROW UPDATE/DELETEtrigger (Andres Freund)In very unusual circumstances, this oversight could result in passing incorrect data to a trigger
WHENcondition, 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. -
Fix
ALTER COLUMN TYPEto handle inherited check constraints properly (Pavan Deolasee)This worked correctly in pre-8.4 releases, and now works correctly in 8.4 and later.
-
Fix
ALTER EXTENSION SET SCHEMA's failure to move some subsidiary objects into the new schema (Álvaro Herrera, Dimitri Fontaine) -
Fix
REASSIGN OWNEDto handle grants on tablespaces (Álvaro Herrera) -
Ignore incorrect
pg_attributeentries 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
INSERT INTOcorrectly (Tom Lane)tableDEFAULT VALUES -
Guard against stack overflow when there are too many
UNION/INTERSECT/EXCEPTclauses in a query (Tom Lane) -
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 (Hitoshi Harada)
-
Fix failure to advance XID epoch if XID wraparound happens during a checkpoint and
wal_levelishot_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. -
Fix display of
pg_stat_replication.sync_stateat 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 " Non-recoverable failure in name resolution " .
-
Fix memory leaks when sending composite column values to the client (Tom Lane)
-
Make pg_ctl more robust about reading the
postmaster.pidfile (Heikki Linnakangas)Fix race conditions and possible file descriptor leakage.
-
Fix possible crash in psql if incorrectly-encoded data is presented and the
client_encodingsetting is a client-only encoding, such as SJIS (Jiang Guiqing) -
Make pg_dump dump
SEQUENCE SETitems in the data not pre-data section of the archive (Tom Lane)This change fixes dumping of sequences that are marked as extension configuration tables.
-
Fix bugs in the
restore.sqlscript emitted by pg_dump intaroutput 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
--insertsmode as well as the regular COPY mode. -
Fix pg_restore to accept POSIX-conformant
tarfiles (Brian Weaver, Tom Lane)The original coding of pg_dump 's
taroutput 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
tarfiles emitted by pg_basebackup to be POSIX conformant (Brian Weaver, Tom Lane) -
Fix pg_resetxlog to locate
postmaster.pidcorrectly 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.
-
Fix libpq 's
lo_import()andlo_export()functions to report file I/O errors properly (Tom Lane) -
Fix ecpg 's processing of nested structure pointer variables (Muhammad Usama)
-
Fix ecpg 's
ecpg_get_datafunction to handle arrays properly (Michael Meskes) -
Make
contrib/pageinspect's btree page inspection functions take buffer locks while examining pages (Tom Lane) -
Ensure that
make installfor an extension creates theextensioninstallation directory (Cédric Villemain)Previously, this step was missed if
MODULEDIRwas set in the extension's Makefile. -
Fix pgxs support for building loadable modules on AIX (Tom Lane)
Building modules outside the original source tree didn't work on AIX.
-
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.