Release date: 2016-03-31
This release contains a variety of fixes from 9.4.6. For information about new features in the 9.4 major release, see Section E.58.
A dump/restore is not required for those running 9.4.X.
However, if you are upgrading from a version earlier than 9.4.6, see Section E.52.
Fix incorrect handling of NULL index entries in
An index search using a row comparison such as
ROW(a, b) > ROW('x', 'y')
would stop upon reaching a NULL entry in the
b column, ignoring the fact that
there might be non-NULL
b values associated with later
Avoid unlikely data-loss scenarios due to renaming
files without adequate
fsync() calls before and after (Michael
Paquier, Tomas Vondra, Andres Freund)
Fix bug in
json_to_record() when a field of its
input object contains a sub-object with a field name
matching one of the requested output column names (Tom
Fix misformatting of negative time zone offsets by
OF format code (Thomas Munro, Tom
Ignore recovery_min_apply_delay parameter until recovery has reached a consistent state (Michael Paquier)
Previously, standby servers would delay application of
WAL records in response to
recovery_min_apply_delay even while
replaying the initial portion of WAL needed to make their
database state valid. Since the standby is useless until
it's reached a consistent database state, this was deemed
Correctly handle cases where
pg_subtrans is close to XID wraparound
during server startup (Jeff Janes)
Fix assorted bugs in logical decoding (Andres Freund)
Trouble cases included tuples larger than one page
when replica identity is
UPDATEs that change a primary key within
a transaction large enough to be spooled to disk,
incorrect reports of “subxact logged without previous toplevel
record”, and incorrect reporting of a
transaction's commit time.
Fix planner error with nested security barrier views
when the outer view has a
WHERE clause containing a correlated
subquery (Dean Rasheed)
Fix corner-case crash due to trying to free
localeconv() output strings
more than once (Tom Lane)
Fix parsing of affix files for
ispell dictionaries (Tom Lane)
The code could go wrong if the affix file contained
any characters whose byte length changes during
case-folding, for example
in Turkish UTF8 locales.
Avoid use of
files (Artur Zakirov)
This dodges a portability problem on FreeBSD-derived platforms (including macOS).
Avoid a crash on old Windows versions (before 7SP1/2008R2SP1) with an AVX2-capable CPU and a Postgres build done with Visual Studio 2013 (Christian Ullrich)
This is a workaround for a bug in Visual Studio 2013's runtime library, which Microsoft have stated they will not fix in that version.
Fix psql's tab completion logic to handle multibyte characters properly (Kyotaro Horiguchi, Robert Haas)
Fix psql's tab
LABEL (Tom Lane)
Pressing TAB after
LABEL might cause a crash or offering of
Make pg_ctl accept a
wait timeout from the
PGCTLTIMEOUT environment variable, if none
is specified on the command line (Noah Misch)
This eases testing of slower buildfarm members by allowing them to globally specify a longer-than-normal timeout for postmaster startup and shutdown.
Fix incorrect test for Windows service status in pg_ctl (Manuel Mathar)
The previous set of minor releases attempted to fix pg_ctl to properly determine whether to send log messages to Window's Event Log, but got the test backwards.
Fix pgbench to
correctly handle the combination of
prepared options (Tom Lane)
In pg_upgrade, skip creating a deletion script when the new data directory is inside the old data directory (Bruce Momjian)
Blind application of the script in such cases would result in loss of the new data directory.
In PL/Perl, properly translate empty Postgres arrays into empty Perl arrays (Alex Hunsaker)
Make PL/Python cope with function names that aren't valid Python identifiers (Jim Nasby)
Fix multiple mistakes in the statistics returned by
pgstatindex() function (Tom
Remove dependency on
in MSVC builds, since it's no longer provided by core
Perl (Michael Paquier, Andrew Dunstan)
Update time zone data files to tzdata release 2016c for DST law changes in Azerbaijan, Chile, Haiti, Palestine, and Russia (Altai, Astrakhan, Kirov, Sakhalin, Ulyanovsk regions), plus historical corrections for Lithuania, Moldova, and Russia (Kaliningrad, Samara, Volgograd).
If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.