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 enabled.
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.
Fix SELECT FOR UPDATE/SHARE
to correctly lock tuples that
have been updated by a subsequently-aborted transaction
(Álvaro Herrera)
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 concurrent updates.
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.
Fix 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
rendered as <I-O-Read-Time>
.
Suppress printing of zeroes for unmeasured times
in EXPLAIN
(Maksim Milyutin)
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 value.
Fix bugs in merging inherited CHECK
constraints while
creating or altering a table (Tom Lane, Amit Langote)
Allow identical CHECK
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 NOT VALID
constraint on the child. Likewise, prevent merging of a NO
INHERIT
child constraint with an inherited constraint.
Remove artificial restrictions on the values accepted
by numeric_in()
and numeric_recv()
(Tom Lane)
We allow numeric values up to the limit of the storage format (more
than 1e100000
), so it seems fairly pointless
that numeric_in()
rejected 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 (Michael Paquier)
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
during PQreset()
, but there might be related cases.
Make ecpg's --help
and --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)
Fix contrib/intarray/bench/bench.pl
to print the results
of the EXPLAIN
it does when given the -e
option
(Daniel Gustafsson)
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 altogether.
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 pg_timezone_names
view 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.