Release date: 2018-08-09
This release contains a variety of fixes from 9.3.23. For information about new features in the 9.3 major release, see Section E.82.
The PostgreSQL community will stop releasing updates for the 9.3.X release series shortly after September 2018. Users are encouraged to update to a newer release branch soon.
A dump/restore is not required for those running 9.3.X.
However, if you are upgrading from a version earlier than 9.3.23, see Section E.59.
Fix failure to reset libpq's state fully between connection attempts (Tom Lane)
An unprivileged user of
postgres_fdw could bypass the checks
intended to prevent use of server-side credentials, such as a
~/.pgpass file owned by the
operating-system user running the server. Servers allowing peer
authentication on local connections are particularly vulnerable.
Other attacks such as SQL injection into a
postgres_fdw session are also possible. Attacking
postgres_fdw in this way requires the
ability to create a foreign server object with selected connection
parameters, but any user with access to
dblink could exploit the problem. In general, an
attacker with the ability to select the connection parameters for a
libpq-using application could
cause mischief, though other plausible attack scenarios are harder
to think of. Our thanks to Andrew Krasichkov for reporting this
Ensure that updates to the
relminmxid values for “nailed” system catalogs
are processed in a timely fashion (Andres Freund)
Overoptimistic caching rules could prevent these updates from
being seen by other sessions, leading to spurious errors and/or
data corruption. The problem was significantly worse for shared
catalogs, such as
because the stale cache data could persist into new sessions as
well as existing ones.
Fix case where a freshly-promoted standby crashes before having completed its first post-recovery checkpoint (Michael Paquier, Kyotaro Horiguchi, Pavan Deolasee, Álvaro Herrera)
This led to a situation where the server did not think it had reached a consistent database state during subsequent WAL replay, preventing restart.
Avoid emitting a bogus WAL record when recycling an all-zero btree page (Amit Kapila)
This mistake has been seen to cause assertion failures, and potentially it could result in unnecessary query cancellations on hot standby servers.
Improve performance of WAL replay for transactions that drop many relations (Fujii Masao)
This change reduces the number of times that shared buffers are scanned, so that it is of most benefit when that setting is large.
Improve performance of lock releasing in standby server WAL replay (Thomas Munro)
Ensure a table's cached index list is correctly rebuilt after an index creation fails partway through (Peter Geoghegan)
Previously, the failed index's OID could remain in the list, causing problems later in the same session.
Fix misoptimization of equivalence classes involving composite-type columns (Tom Lane)
This resulted in failure to recognize that an index on a composite column could provide the sort order needed for a mergejoin on that column.
FETCH FIRST syntax
to allow parameters (
$), as the standard expects
Fix failure to schema-qualify some object names in
getObjectDescription output (Kyotaro Horiguchi,
Names of collations, conversions, and text search objects were not schema-qualified when they should be.
current-line-number counter from 32 to 64 bits (David Rowley)
This avoids two problems with input exceeding 4G lines:
COPY FROM WITH HEADER would drop a
line every 4G lines, not only the first line, and error reports
could show a wrong line number.
Add a string freeing function to ecpg's
library, so that cross-module memory management problems can be
avoided on Windows (Takayuki Tsunakawa)
On Windows, crashes can ensue if the
free call for a given chunk of memory is not made
from the same DLL that
pgtypes library sometimes
returns strings that it expects the caller to free, making it
impossible to follow this rule. Add a
PGTYPESchar_free() function that just wraps
free, allowing applications to follow
Fix ecpg's support for
long long variables on Windows, as well
as other platforms that declare
nonstandardly or not at all (Dang Minh Huong, Tom Lane)
Fix misidentification of SQL statement type in PL/pgSQL, when a rule change causes a change in the semantics of a statement intra-session (Tom Lane)
This error led to assertion failures, or in rare cases, failure
to enforce the
INTO STRICT option as
Fix password prompting in client programs so that echo is
properly disabled on Windows when
stdin is not the terminal (Matthew Stickney)
Further fix mis-quoting of values for list-valued GUC variables in dumps (Tom Lane)
The previous fix for quoting of
search_path and other list-valued variables in
pg_dump output turned out to
misbehave for empty-string list elements, and it risked truncation
of long file paths.
Make pg_upgrade check that the old server was shut down cleanly (Bruce Momjian)
The previous check could be fooled by an immediate-mode shutdown.
Fix crash in
lca() function when the input array
is empty (Pierre Ducroquet)
Fix various error-handling code paths in which an incorrect error code might be reported (Michael Paquier, Tom Lane, Magnus Hagander)
Rearrange makefiles to ensure that programs link to
freshly-built libraries (such as
libpq.so) rather than ones that might exist in
the system library directories (Tom Lane)
This avoids problems when building on platforms that supply old copies of PostgreSQL libraries.
Update time zone data files to tzdata release 2018e for DST law changes in North Korea, plus historical corrections for Czechoslovakia.
This update includes a redefinition of “daylight savings” in
Ireland, as well as for some past years in Namibia and
Czechoslovakia. In those jurisdictions, legally standard time is
observed in summer, and daylight savings time in winter, so that
the daylight savings offset is one hour behind standard time not
one hour ahead. This does not affect either the actual UTC offset
or the timezone abbreviations in use; the only known effect is that
is_dst column in the
pg_timezone_names view will now be
true in winter and false in summer in these cases.
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.