Release date: 2016-10-27
This release contains a variety of fixes from 9.3.14. For information about new features in the 9.3 major release, see Section E.78.
A dump/restore is not required for those running 9.3.X.
However, if your installation has been affected by the bug described in the first changelog entry below, then after updating you may need to take action to repair corrupted free space maps.
Also, if you are upgrading from a version earlier than 9.3.9, see Section E.69.
Fix WAL-logging of truncation of relation free space maps and visibility maps (Pavan Deolasee, Heikki Linnakangas)
It was possible for these files to not be correctly
restored during crash recovery, or to be written
incorrectly on a standby server. Bogus entries in a free
space map could lead to attempts to access pages that
have been truncated away from the relation itself,
typically producing errors like “could not read block
XXX: read only
0 of 8192 bytes”. Checksum failures in the
visibility map are also possible, if checksumming is
Procedures for determining whether there is a problem and repairing it if so are discussed at https://wiki.postgresql.org/wiki/Free_Space_Map_Problems.
UPDATE/SHARE to correctly lock tuples that have
been updated by a subsequently-aborted transaction
In 9.5 and later, the
SELECT would sometimes fail to return
such tuples at all. A failure has not been proven to
occur in earlier releases, but might be possible with
Fix EvalPlanQual rechecks involving CTE scans (Tom Lane)
The recheck would always see the CTE as returning no rows, typically leading to failure to update rows that were recently updated.
Fix improper repetition of previous results from hashed aggregation in a subquery (Andrew Gierth)
The test to see if we can reuse a previously-computed hash table of the aggregate state values neglected the possibility of an outer query reference appearing in an aggregate argument expression. A change in the value of such a reference should lead to recalculating the hash table, but did not.
EXPLAIN to emit valid
XML when track_io_timing
is on (Markus Winand)
Previously the XML output-format option produced
syntactically invalid tags such as
<I/O-Read-Time>. That is now
Suppress printing of zeroes for unmeasured times in
Certain option combinations resulted in printing zero
values for times that actually aren't ever measured in
that combination. Our general policy in
EXPLAIN is not to print such fields at
all, so do that consistently in all cases.
Fix timeout length when
VACUUM is waiting for exclusive table
lock so that it can truncate the table (Simon Riggs)
The timeout was meant to be 50 milliseconds, but it
was actually only 50 microseconds, causing
VACUUM to give up on truncation much
more easily than intended. Set it to the intended
Fix bugs in merging inherited
CHECK constraints while creating or
altering a table (Tom Lane, Amit Langote)
constraints to be added to a parent and child table in
either order. Prevent merging of a valid constraint from
the parent table with a
VALID constraint on the child. Likewise, prevent
merging of a
child constraint with an inherited constraint.
Remove artificial restrictions on the values accepted
We allow numeric values up to the limit of the storage
format (more than
so it seems fairly pointless that
scientific-notation exponents above 1000. Likewise, it
was silly for
numeric_recv() to reject more than 1000
digits in an input value.
Avoid very-low-probability data corruption due to testing tuple visibility without holding buffer lock (Thomas Munro, Peter Geoghegan, Tom Lane)
Fix file descriptor leakage when truncating a temporary relation of more than 1GB (Andres Freund)
Disallow starting a standalone backend with
standby_mode turned on
This can't do anything useful, since there will be no WAL receiver process to fetch more WAL data; and it could result in misbehavior in code that wasn't designed with this situation in mind.
Don't try to share SSL contexts across multiple connections in libpq (Heikki Linnakangas)
This led to assorted corner-case bugs, particularly when trying to use different SSL parameters for different connections.
Avoid corner-case memory leak in libpq (Tom Lane)
The reported problem involved leaking an error report
PQreset(), but there
might be related cases.
--version options work consistently with
our other executables (Haribabu Kommi)
In pg_dump, never dump range constructor functions (Tom Lane)
This oversight led to pg_upgrade failures with extensions containing range types, due to duplicate creation of the constructor functions.
In pg_xlogdump, retry
opening new WAL segments when using
--follow option (Magnus Hagander)
This allows for a possible delay in the server's creation of the next segment.
Fix pg_xlogdump to cope with a WAL file that begins with a continuation record spanning more than one page (Pavan Deolasee)
print the results of the
EXPLAIN it does when given the
-e option (Daniel
Update Windows time zone mapping to recognize some time zone names added in recent Windows versions (Michael Paquier)
Prevent failure of obsolete dynamic time zone abbreviations (Tom Lane)
If a dynamic time zone abbreviation does not match any
entry in the referenced time zone, treat it as equivalent
to the time zone name. This avoids unexpected failures
when IANA removes abbreviations from their time zone
database, as they did in tzdata release 2016f and seem likely
to do again in the future. The consequences were not
limited to not recognizing the individual abbreviation;
any mismatch caused the
pg_timezone_abbrevs view to fail
Update time zone data files to tzdata release 2016h for DST law changes in Palestine and Turkey, plus historical corrections for Turkey and some regions of Russia. Switch to numeric abbreviations for some time zones in Antarctica, the former Soviet Union, and Sri Lanka.
The IANA time zone database previously provided
textual abbreviations for all time zones, sometimes
making up abbreviations that have little or no currency
among the local population. They are in process of
reversing that policy in favor of using numeric UTC
offsets in zones where there is no evidence of real-world
use of an English abbreviation. At least for the time
being, PostgreSQL will
continue to accept such removed abbreviations for
timestamp input. But they will not be shown in the
nor used for output.
In this update,
AMT is no
longer shown as being in use to mean Armenia Time.
Therefore, we have changed the
Default abbreviation set to interpret it
as Amazon Time, thus UTC-4 not UTC+4.
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.