Release date: 2019-08-08
This release contains a variety of fixes from 11.4. For information about new features in major release 11, see Section E.6.
A dump/restore is not required for those running 11.X.
However, if you are upgrading from a version earlier than 11.1, see Section E.5.
Require schema qualification to cast to a temporary type when using functional cast syntax (Noah Misch)
We have long required invocations of temporary functions to
explicitly specify the temporary schema, that
is pg_temp.
.
Require this as well for casting to temporary types using functional
notation, for
example func_name
(args
)pg_temp.
.
Otherwise it's possible to capture a function call using a temporary
object, allowing privilege escalation in much the same ways that we
blocked in CVE-2007-2138.
(CVE-2019-10208)
type_name
(arg
)
Fix execution of hashed subplans that require cross-type comparison (Tom Lane, Andreas Seltenreich)
Hashed subplans used the outer query's original comparison operator to compare entries of the hash table. This is the wrong thing if that operator is cross-type, since all the hash table entries will be of the subquery's output type. For the set of hashable cross-type operators in core PostgreSQL, this mistake seems nearly harmless on 64-bit machines, but it can result in crashes or perhaps unauthorized disclosure of server memory on 32-bit machines. Extensions might provide hashable cross-type operators that create larger risks. (CVE-2019-10209)
Fix failure of ALTER TABLE ... ALTER COLUMN TYPE
when altering multiple columns' types in one command (Tom Lane)
This fixes a regression introduced in the most recent minor releases:
indexes using the altered columns were not processed correctly,
leading to strange failures during ALTER TABLE
.
Prevent dropping a partitioned table's trigger if there are pending trigger events in child partitions (Álvaro Herrera)
This notably applies to foreign key constraints, since those are implemented by triggers.
Include user-specified trigger arguments when copying a trigger definition from a partitioned table to one of its partitions (Patrick McHardy)
Install dependencies to prevent dropping partition key columns (Tom Lane)
ALTER TABLE ... DROP COLUMN
will refuse to drop
a column that is a partition key column. However, indirect drops
(such as a cascade from dropping a key column's data type) had no
such check, allowing the deletion of a key column. This resulted in
a badly broken partitioned table that could neither be accessed nor
dropped.
This fix adds pg_depend
entries that
enforce that the whole partitioned table, not just the key column,
will be dropped if a cascaded drop forces removal of the key column.
However, such entries will only be created when a partitioned table
is created; so this fix does not remove the risk for pre-existing
partitioned tables. The issue can only arise for partition key
columns of non-built-in data types, so it seems not to be a hazard
for most users.
Ensure that column numbers are correctly mapped between a partitioned table and its default partition (Amit Langote)
Some operations misbehaved if the mapping wasn't exactly one-to-one, for example if there were dropped columns in one table and not the other.
Ignore partitions that are foreign tables when creating indexes on partitioned tables (Álvaro Herrera)
Previously an error was thrown on encountering a foreign-table partition, but that's unhelpful and doesn't protect against any actual problem.
Prune a partitioned table's default partition (that is, avoid uselessly scanning it) in more cases (Yuzuko Hosoya)
Fix possible failure to prune partitions when there are
multiple partition key columns of boolean
type
(David Rowley)
Don't optimize away GROUP BY
columns when the
table involved is an inheritance parent (David Rowley)
Normally, if a table's primary key column(s) are included
in GROUP BY
, it's safe to drop any other grouping
columns, since the primary key columns are enough to make the groups
unique. This rule does not work if the query is also reading
inheritance child tables, though; the parent's uniqueness does not
extend to the children.
Avoid incorrect use of parallel hash join for semi-join queries (Thomas Munro)
This error resulted in duplicate result rows from
some EXISTS
queries.
Avoid using unnecessary sort steps for some queries
with GROUPING SETS
(Andrew Gierth, Richard Guo)
Fix possible failure of planner's index endpoint probes (Tom Lane)
When using a recently-created index to determine the minimum or maximum value of a column, the planner could select a recently-dead tuple that does not actually contain the endpoint value. In the worst case the tuple might contain a null, resulting in a visible error “found unexpected null value in index”; more likely we would just end up using the wrong value, degrading the quality of planning estimates.
Fix failure to access trigger transition tables
during EvalPlanQual
rechecks (Alex Aktsipetrov)
Triggers that rely on transition tables sometimes failed in the presence of concurrent updates.
Fix mishandling of multi-column foreign keys when rebuilding a foreign key constraint (Tom Lane)
ALTER TABLE
could make an incorrect decision about
whether revalidation of a foreign key is necessary, if not all
columns of the key are of the same type. It seems likely that the
error would always have been in the conservative direction, that is
revalidating unnecessarily.
Don't build extended statistics for inheritance trees (Tomas Vondra)
This avoids a “tuple already updated by self” error
during ANALYZE
.
Avoid spurious deadlock errors when upgrading a tuple lock (Oleksii Kliukin)
When two or more transactions are waiting for a transaction T1 to release a tuple-level lock, and T1 upgrades its lock to a higher level, a spurious deadlock among the waiting transactions could be reported when T1 finishes.
Fix failure to resolve deadlocks involving multiple parallel worker processes (Rui Hai Jiang)
It is not clear whether this bug is reachable with non-artificial queries, but if it did happen, the queries involved in an otherwise-resolvable deadlock would block until canceled.
Prevent incorrect canonicalization of date ranges
with infinity
endpoints (Laurenz Albe)
It's incorrect to try to convert an open range to a closed one or vice versa by incrementing or decrementing the endpoint value, if the endpoint is infinite; so leave the range alone in such cases.
Fix loss of fractional digits when converting very
large money
values to numeric
(Tom Lane)
Fix printing of BTREE_META_CLEANUP
WAL records
(Michael Paquier)
Prevent assertion failures due to mishandling of version-2 btree metapages (Peter Geoghegan)
Fix spinlock assembly code for MIPS CPUs so that it works on MIPS r6 (YunQiang Su)
Ensure that a record or row value returned from a PL/pgSQL function is marked with the function's declared composite type (Tom Lane)
This avoids problems if the result is stored directly into a table.
Make libpq ignore carriage return
(\r
) in connection service files
(Tom Lane, Michael Paquier)
In some corner cases, service files containing Windows-style newlines could be mis-parsed, resulting in connection failures.
In psql, avoid offering incorrect tab
completion options
after SET
(Tom Lane)
variable
=
Fix a small memory leak in psql's
\d
command (Tom Lane)
Fix pg_dump to ensure that custom operator classes are dumped in the right order (Tom Lane)
If a user-defined opclass is the subtype opclass of a user-defined range type, related objects were dumped in the wrong order, producing an unrestorable dump. (The underlying failure to handle opclass dependencies might manifest in other cases too, but this is the only known case.)
Fix possible lockup in pgbench when
using -R
option (Fabien Coelho)
Improve reliability of contrib/amcheck
's index
verification (Peter Geoghegan)
Fix handling of Perl undef
values
in contrib/jsonb_plperl
(Ivan Panchenko)
Fix contrib/passwordcheck
to coexist with other
users of check_password_hook
(Michael Paquier)
Fix contrib/sepgsql
tests to work under recent
SELinux releases (Mike Palmiotto)
Improve stability of src/test/kerberos
and src/test/ldap
regression tests
(Thomas Munro, Tom Lane)
Improve stability of src/test/recovery
regression tests (Michael Paquier)
Reduce stderr output from pg_upgrade's test script (Tom Lane)
Fix pgbench regression tests to work on Windows (Fabien Coelho)
Fix TAP tests to work with msys Perl, in cases where the build directory is on a non-root msys mount point (Noah Misch)
Support building Postgres with Microsoft Visual Studio 2019 (Haribabu Kommi)
In Visual Studio builds, honor WindowsSDKVersion
environment variable, if that's set (Peifeng Qiu)
This fixes build failures in some configurations.
Support OpenSSL 1.1.0 and newer in Visual Studio builds (Juan José Santamaría Flecha, Michael Paquier)
Allow make options to be passed down to gmake when non-GNU make is invoked at the top level (Thomas Munro)
Avoid choosing localtime
or posixrules
as TimeZone
during initdb (Tom Lane)
In some cases initdb would choose one of these artificial zone names over the “real” zone name. Prefer any other match to the C library's timezone behavior over these two.
Adjust pg_timezone_names
view to show
the Factory
time zone if and only if it has a
short abbreviation (Tom Lane)
Historically, IANA set up this artificial zone with
an “abbreviation” like Local time zone must be
set--see zic manual page
. Modern versions of the tzdb
database show -00
instead, but some platforms
alter the data to show one or another of the historical phrases.
Show this zone only if it uses the modern abbreviation.
Sync our copy of the timezone library with IANA tzcode release 2019b (Tom Lane)
This adds support for zic's new -b
slim
option to reduce the size of the installed zone files.
We are not currently using that, but may enable it in future.
Update time zone data files to tzdata release 2019b for DST law changes in Brazil, plus historical corrections for Hong Kong, Italy, and Palestine.