↑↓ select ↵ open ⌫ change scope Open full search

PG.CENTER connects PostgreSQL documentation, reference, and ecosystem knowledge. Maintained by Pigsty.

DocumentationVersion comparison

POSTGRESQL · VERSION COMPARE

PostgreSQL 11.5 release changes

All features, fixes, and compatibility notes in this release, with related records from other versions.

All changes in this release
All changes in this release

Includes changes after the source version through the target. A major version name means its initial release.

From PostgreSQL 9.0 onward: 17 major branches and 352 release notes. Updated 2026-09-26.

Complete release changes

11.5

2019-08-08

Export JSON
47changesFeatures, fixes, improvements
1releaseGrouped by release
3CVEsVulnerability IDs mentioned in these notes

11.5 HistoricalSupport ends 2023-11-09

Security records mentioned in this release 3 CVEs
CVEs mentioned in these notes, including possible follow-up fixes for earlier vulnerabilities
CVE / issueSeverityFixed version
CVE-2019-10208

Require schema qualification to cast to a temporary type when using functional cast syntax

7.511.5
CVE-2019-10209

Fix execution of hashed subplans that require cross-type comparison

3.111.5
CVE-2007-2138

Require schema qualification to cast to a temporary type when using functional cast syntax

—

PostgreSQL 11.5

Migration and compatibility

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.22.

SecurityRequire schema qualification to cast to a temporary type when using functional cast syntax

Changes

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.func_name(args). Require this as well for casting to temporary types using functional notation, for example pg_temp.type_name(arg). 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)

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

SecurityFix execution of hashed subplans that require cross-type comparison

Changes

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)

Bug fixesFix failure of ALTER TABLE ... ALTER COLUMN TYPE when altering multiple columns' types in one command

Changes

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.

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsPrevent dropping a partitioned table's trigger if there are pending trigger events in child partitions

Changes

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.

ImprovementsInclude user-specified trigger arguments when copying a trigger definition from a partitioned table to one of its partitions

Changes

Include user-specified trigger arguments when copying a trigger definition from a partitioned table to one of its partitions (Patrick McHardy)

ImprovementsInstall dependencies to prevent dropping partition key columns

Changes

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.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsEnsure that column numbers are correctly mapped between a partitioned table and its default partition

Changes

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.

ImprovementsIgnore partitions that are foreign tables when creating indexes on partitioned tables

Changes

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.

ImprovementsPrune a partitioned table's default partition (that is, avoid uselessly scanning it) in more cases

Changes

Prune a partitioned table's default partition (that is, avoid uselessly scanning it) in more cases (Yuzuko Hosoya)

Bug fixesFix possible failure to prune partitions when there are multiple partition key columns of boolean type

Changes

Fix possible failure to prune partitions when there are multiple partition key columns of boolean type (David Rowley)

ImprovementsDon't optimize away GROUP BY columns when the table involved is an inheritance parent

Changes

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.

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsAvoid incorrect use of parallel hash join for semi-join queries

Changes

Avoid incorrect use of parallel hash join for semi-join queries (Thomas Munro)

This error resulted in duplicate result rows from some EXISTS queries.

ImprovementsAvoid using unnecessary sort steps for some queries with GROUPING SETS

Changes

Avoid using unnecessary sort steps for some queries with GROUPING SETS (Andrew Gierth, Richard Guo)

Related records (3)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix possible failure of planner's index endpoint probes

Changes

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.

Bug fixesFix failure to access trigger transition tables during EvalPlanQual rechecks

Changes

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.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix mishandling of multi-column foreign keys when rebuilding a foreign key constraint

Changes

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.

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsDon't build extended statistics for inheritance trees

Changes

Don't build extended statistics for inheritance trees (Tomas Vondra)

This avoids a “tuple already updated by self” error during ANALYZE.

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesAvoid spurious deadlock errors when upgrading a tuple lock

Changes

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.

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix failure to resolve deadlocks involving multiple parallel worker processes

Changes

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.

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsPrevent incorrect canonicalization of date ranges with infinity endpoints

Changes

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.

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix loss of fractional digits when converting very large money values to numeric

Changes

Fix loss of fractional digits when converting very large money values to numeric (Tom Lane)

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix printing of BTREE_META_CLEANUP WAL records

Changes

Fix printing of BTREE_META_CLEANUP WAL records (Michael Paquier)

ImprovementsPrevent assertion failures due to mishandling of version-2 btree metapages

Changes

Prevent assertion failures due to mishandling of version-2 btree metapages (Peter Geoghegan)

Bug fixesFix spinlock assembly code for MIPS CPUs so that it works on MIPS r6

Changes

Fix spinlock assembly code for MIPS CPUs so that it works on MIPS r6 (YunQiang Su)

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsEnsure that a record or row value returned from a PL/pgSQL function is marked with the function's declared composite type

Changes

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.

ImprovementsMake libpq ignore carriage return (\r) in connection service files

Changes

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.

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsIn psql, avoid offering incorrect tab completion options after SET variable =

Changes

In psql, avoid offering incorrect tab completion options after SET variable = (Tom Lane)

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix a small memory leak in psql's \d command

Changes

Fix a small memory leak in psql's \d command (Tom Lane)

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix pg_dump to ensure that custom operator classes are dumped in the right order

Changes

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.)

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix possible lockup in pgbench when using -R option

Changes

Fix possible lockup in pgbench when using -R option (Fabien Coelho)

Related records (1)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsImprove reliability of contrib/amcheck's index verification

Changes

Improve reliability of contrib/amcheck's index verification (Peter Geoghegan)

Bug fixesFix handling of Perl undef values in contrib/jsonb_plperl

Changes

Fix handling of Perl undef values in contrib/jsonb_plperl (Ivan Panchenko)

Bug fixesFix contrib/passwordcheck to coexist with other users of check_password_hook

Changes

Fix contrib/passwordcheck to coexist with other users of check_password_hook (Michael Paquier)

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix contrib/sepgsql tests to work under recent SELinux releases

Changes

Fix contrib/sepgsql tests to work under recent SELinux releases (Mike Palmiotto)

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsImprove stability of src/test/kerberos and src/test/ldap regression tests

Changes

Improve stability of src/test/kerberos and src/test/ldap regression tests (Thomas Munro, Tom Lane)

ImprovementsImprove stability of src/test/recovery regression tests

Changes

Improve stability of src/test/recovery regression tests (Michael Paquier)

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsReduce stderr output from pg_upgrade's test script

Changes

Reduce stderr output from pg_upgrade's test script (Tom Lane)

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

Bug fixesFix pgbench regression tests to work on Windows

Changes

Fix pgbench regression tests to work on Windows (Fabien Coelho)

Bug fixesFix TAP tests to work with msys Perl, in cases where the build directory is on a non-root msys mount point

Changes

Fix TAP tests to work with msys Perl, in cases where the build directory is on a non-root msys mount point (Noah Misch)

Related records (2)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsSupport building Postgres with Microsoft Visual Studio 2019

Changes

Support building Postgres with Microsoft Visual Studio 2019 (Haribabu Kommi)

Related records (5)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsIn Visual Studio builds, honor WindowsSDKVersion environment variable, if that's set

Changes

In Visual Studio builds, honor WindowsSDKVersion environment variable, if that's set (Peifeng Qiu)

This fixes build failures in some configurations.

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsSupport OpenSSL 1.1.0 and newer in Visual Studio builds

Changes

Support OpenSSL 1.1.0 and newer in Visual Studio builds (Juan José Santamaría Flecha, Michael Paquier)

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsAllow make options to be passed down to gmake when non-GNU make is invoked at the top level

Changes

Allow make options to be passed down to gmake when non-GNU make is invoked at the top level (Thomas Munro)

Related records (3)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsAvoid choosing localtime or posixrules as TimeZone during initdb

Changes

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.

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsAdjust pg_timezone_names view to show the Factory time zone if and only if it has a short abbreviation

Changes

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.

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsSync our copy of the timezone library with IANA tzcode release 2019b

Changes

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.

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

ImprovementsUpdate time zone data files to tzdata release 2019b for DST law changes in Brazil, plus historical corrections for Hong Kong, Italy, and Palestine.

Changes

Update time zone data files to tzdata release 2019b for DST law changes in Brazil, plus historical corrections for Hong Kong, Italy, and Palestine.

Related records (4)

“Same change” requires complete matching evidence. “Related commits” can cover independent changes, a partial backport, or a follow-up correction; each release keeps its own explanation.

How is this comparison generated?

The comparison follows PostgreSQL release notes from just after the source through the target version. For a major upgrade, maintenance releases from each older branch are included only up to the next major release date, and never after the target date. A major version such as 18 means its initial release, 18.0. Previews and development snapshots are labeled separately.

Entries come from the original English manuals. Release coverage and commit evidence are verified against upstream sources. Every entry retains its complete explanation and source link. Categories aid browsing; read the full notes for impact, conditions, and migration steps.

Fixes can be backported to several branches. Confirmed duplicates are merged conservatively, with every branch explanation retained. A note describing several independent fixes is excluded only when all are already present in the source. Major-release features remain distinct from related maintenance patches unless their complete original descriptions match. Uncertain matches are retained. This is a release-note history, not an exhaustive comparison of compiled binaries.

CVE results are calculated independently from the PostgreSQL security registry and vulnerability records. A CVE counts as gained protection only when the source is affected and the target is fixed or unaffected. Remaining vulnerabilities are listed separately. Security entries and distinct CVEs are counted separately.

Interaction inspired by pgversions.com and pgversionreport. Content comes from PostgreSQL release notes. See the release notes archive.