↑↓ 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 10.12 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

10.12

2020-02-13

Export JSON
46changesFeatures, fixes, improvements
1releaseGrouped by release
1CVEVulnerability IDs mentioned in these notes

10.12 HistoricalSupport ends 2022-11-10

Security records mentioned in this release 1 CVE
CVEs mentioned in these notes, including possible follow-up fixes for earlier vulnerabilities
CVE / issueSeverityFixed version
CVE-2020-1720

Add missing permissions checks for ALTER ... DEPENDS ON EXTENSION

3.110.12

PostgreSQL 10.12

Migration and compatibility

A dump/restore is not required for those running 10.X.

However, if you are upgrading from a version earlier than 10.11, see Section E.13.

SecurityAdd missing permissions checks for ALTER ... DEPENDS ON EXTENSION

Changes

Add missing permissions checks for ALTER ... DEPENDS ON EXTENSION (Álvaro Herrera)

Marking an object as dependent on an extension did not have any privilege check whatsoever. This oversight allowed any user to mark routines, triggers, materialized views, or indexes as droppable by anyone able to drop an extension. Require that the calling user own the specified object (and hence have privilege to drop it). (CVE-2020-1720)

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 logical replication subscriber code to execute per-column UPDATE triggers when appropriate

Changes

Fix logical replication subscriber code to execute per-column UPDATE triggers when appropriate (Peter Eisentraut)

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 failure in logical decoding when a large transaction must be spilled into many separate temporary files

Changes

Avoid failure in logical decoding when a large transaction must be spilled into many separate temporary files (Amit Khandekar)

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.

Bug fixesFix possible crash or data corruption when a logical replication subscriber processes a row update

Changes

Fix possible crash or data corruption when a logical replication subscriber processes a row update (Tom Lane, Tomas Vondra)

This bug caused visible problems only if the subscriber's table contained columns that were not being copied from the publisher and had pass-by-reference data types.

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 crash in logical replication subscriber after DDL changes on a subscribed relation

Changes

Fix crash in logical replication subscriber after DDL changes on a subscribed relation (Jehan-Guillaume de Rorthais, Vignesh C)

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 in logical replication publisher after a database crash and restart

Changes

Fix failure in logical replication publisher after a database crash and restart (Vignesh C)

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.

ImprovementsImprove efficiency of logical replication with REPLICA IDENTITY FULL

Changes

Improve efficiency of logical replication with REPLICA IDENTITY FULL (Konstantin Knizhnik)

When searching for an existing tuple during an update or delete operation, return the first matching tuple not the last one.

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 premature shutdown of a Gather or GatherMerge plan node that is underneath a Limit node

Changes

Prevent premature shutdown of a Gather or GatherMerge plan node that is underneath a Limit node (Amit Kapila)

This avoids failure if such a plan node needs to be scanned more than once, as for instance if it is on the inside of a nestloop.

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 fixesAvoid memory leak when there are no free dynamic shared memory slots

Changes

Avoid memory leak when there are no free dynamic shared memory slots (Thomas Munro)

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.

ImprovementsIgnore the CONCURRENTLY option when performing an index creation, drop, or rebuild on a temporary table

Changes

Ignore the CONCURRENTLY option when performing an index creation, drop, or rebuild on a temporary table (Michael Paquier, Heikki Linnakangas, Andres Freund)

This avoids strange failures if the temporary table has an ON COMMIT action. There is no benefit in using CONCURRENTLY for a temporary table anyway, since other sessions cannot access the table, making the extra processing pointless.

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.

Bug fixesFix possible failure when resetting expression indexes on temporary tables that are marked ON COMMIT DELETE ROWS

Changes

Fix possible failure when resetting expression indexes on temporary tables that are marked ON COMMIT DELETE ROWS (Tom Lane)

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.

Bug fixesFix possible crash in BRIN index operations with box, range and inet data types

Changes

Fix possible crash in BRIN index operations with box, range and inet data types (Heikki Linnakangas)

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 handling of deleted pages in GIN indexes

Changes

Fix handling of deleted pages in GIN indexes (Alexander Korotkov)

Avoid possible deadlocks, incorrect updates of a deleted page's state, and failure to traverse through a recently-deleted page.

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.

Bug fixesFix possible crash with a SubPlan (sub-SELECT) within a multi-row VALUES list

Changes

Fix possible crash with a SubPlan (sub-SELECT) within a multi-row VALUES list (Tom Lane)

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.

Bug fixesFix crash after FileClose() failure

Changes

Fix crash after FileClose() failure (Noah Misch)

This issue could only be observed with data_sync_retry enabled, since otherwise FileClose() failure would be reported as a PANIC.

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 unlikely crash with pass-by-reference aggregate transition states

Changes

Fix unlikely crash with pass-by-reference aggregate transition states (Andres Freund, Teodor Sigaev)

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.

ImprovementsImprove error reporting in to_date() and to_timestamp()

Changes

Improve error reporting in to_date() and to_timestamp() (Tom Lane, Álvaro Herrera)

Reports about incorrect month or day names in input strings could truncate the input in the middle of a multi-byte character, leading to an improperly encoded error message that could cause follow-on failures. Truncate at the next whitespace instead.

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.

Bug fixesFix off-by-one result for EXTRACT(ISOYEAR FROM timestamp) for BC dates

Changes

Fix off-by-one result for EXTRACT(ISOYEAR FROM timestamp) for BC dates (Tom Lane)

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.

Bug fixesAvoid stack overflow in information_schema views when a self-referential view exists in the system catalogs

Changes

Avoid stack overflow in information_schema views when a self-referential view exists in the system catalogs (Tom Lane)

A self-referential view can't work; it will always result in infinite recursion. We handled that situation correctly when trying to execute the view, but not when inquiring whether it is automatically updatable.

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.

ImprovementsEnsure that walsender processes always show NULL for transaction start time in pg_stat_activity

Changes

Ensure that walsender processes always show NULL for transaction start time in pg_stat_activity (Álvaro Herrera)

Previously, the xact_start column would sometimes show the process start time.

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.

PerformanceImprove performance of hash joins with very large inner relations

Changes

Improve performance of hash joins with very large inner relations (Thomas Munro)

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.

Bug fixesFix edge-case crashes and misestimations in selectivity calculations for the <@ and @> range operators

Changes

Fix edge-case crashes and misestimations in selectivity calculations for the <@ and @> range operators (Michael Paquier, Andrey Borodin, Tom Lane)

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.

ImprovementsIgnore system columns when applying most-common-value extended statistics

Changes

Ignore system columns when applying most-common-value extended statistics (Tomas Vondra)

This prevents “negative bitmapset member not allowed” planner errors for affected queries.

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 BRIN index logic to support hypothetical BRIN indexes

Changes

Fix BRIN index logic to support hypothetical BRIN indexes (Julien Rouhaud, Heikki Linnakangas)

Previously, if an “index adviser” extension tried to get the planner to produce a plan involving a hypothetical BRIN index, that would fail, because the BRIN cost estimation code would always try to physically access the index's metapage. Now it checks to see if the index is only hypothetical, and uses default assumptions about the index parameters if so.

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.

ImprovementsImprove error reporting for attempts to use automatic updating of views with conditional INSTEAD rules

Changes

Improve error reporting for attempts to use automatic updating of views with conditional INSTEAD rules (Dean Rasheed)

This has never been supported, but previously the error was thrown only at execution time, so that it could be masked by planner errors.

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.

ImprovementsPrevent a composite type from being included in itself indirectly via a range type

Changes

Prevent a composite type from being included in itself indirectly via a range type (Tom Lane, Julien Rouhaud)

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.

ImprovementsDisallow partition key expressions that return pseudo-types, such as record

Changes

Disallow partition key expressions that return pseudo-types, such as record (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 error reporting for index expressions of prohibited types

Changes

Fix error reporting for index expressions of prohibited types (Amit Langote)

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.

Bug fixesFix dumping of views that contain only a VALUES list to handle cases where a view output column has been renamed

Changes

Fix dumping of views that contain only a VALUES list to handle cases where a view output column has been renamed (Tom Lane)

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.

ImprovementsEnsure that data types and collations used in XMLTABLE constructs are accounted for when computing dependencies of a view or rule

Changes

Ensure that data types and collations used in XMLTABLE constructs are accounted for when computing dependencies of a view or rule (Tom Lane)

Previously it was possible to break a view using XMLTABLE by dropping a type, if the type was not otherwise referenced in the view. This fix does not correct the dependencies already recorded for existing views, only for newly-created ones.

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 unwanted downcasing and truncation of RADIUS authentication parameters

Changes

Prevent unwanted downcasing and truncation of RADIUS authentication parameters (Marcos David)

The pg_hba.conf parser mistakenly treated these fields as SQL identifiers, which in general they aren't.

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.

ImprovementsTransmit incoming NOTIFY messages to the client before sending ReadyForQuery, rather than after

Changes

Transmit incoming NOTIFY messages to the client before sending ReadyForQuery, rather than after (Tom Lane)

This change ensures that, with libpq and other client libraries that act similarly to it, any notifications received during a transaction will be available by the time the client thinks the transaction is complete. This probably makes no difference in practical applications (which would need to cope with asynchronous notifications in any case); but it makes it easier to build test cases with reproducible behavior.

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.

ImprovementsAllow libpq to parse all GSS-related connection parameters even when the GSSAPI code hasn't been compiled in

Changes

Allow libpq to parse all GSS-related connection parameters even when the GSSAPI code hasn't been compiled in (Tom Lane)

This makes the behavior similar to our SSL support, where it was long ago deemed to be a good idea to always accept all the related parameters, even if some are ignored or restricted due to lack of the feature in a particular build.

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.

Bug fixesFix incorrect handling of %b and %B format codes in ecpg's PGTYPEStimestamp_fmt_asc() function

Changes

Fix incorrect handling of %b and %B format codes in ecpg's PGTYPEStimestamp_fmt_asc() function (Tomas Vondra)

Due to an off-by-one error, these codes would print the wrong month name, or possibly crash.

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.

Bug fixesFix parallel pg_dump/pg_restore to more gracefully handle failure to create worker processes

Changes

Fix parallel pg_dump/pg_restore to more gracefully handle failure to create worker processes (Tom Lane)

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.

Bug fixesPrevent possible crash or lockup when attempting to terminate a parallel pg_dump/pg_restore run via a signal

Changes

Prevent possible crash or lockup when attempting to terminate a parallel pg_dump/pg_restore run via a signal (Tom Lane)

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 pg_upgrade, look inside arrays and ranges while searching for non-upgradable data types in tables

Changes

In pg_upgrade, look inside arrays and ranges while searching for non-upgradable data types in tables (Tom Lane)

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.

ImprovementsApply more thorough syntax checking to createuser's --connection-limit option

Changes

Apply more thorough syntax checking to createuser's --connection-limit option (Álvaro Herrera)

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.

Bug fixesAvoid crash in postgres_fdw when trying to send a command like UPDATE remote_tab SET (x,y) = (SELECT ...) to the remote server

Changes

Avoid crash in postgres_fdw when trying to send a command like UPDATE remote_tab SET (x,y) = (SELECT ...) to the remote server (Tom Lane)

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.

ImprovementsIn contrib/dict_int, reject maxlen settings less than one

Changes

In contrib/dict_int, reject maxlen settings less than one (Tomas Vondra)

This prevents a possible crash with silly settings for that parameter.

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.

ImprovementsDisallow NULL category values in contrib/tablefunc's crosstab() function

Changes

Disallow NULL category values in contrib/tablefunc's crosstab() function (Joe Conway)

This case never worked usefully, and it would crash on some platforms.

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.

ImprovementsMark some timeout and statistics-tracking GUC variables as PGDLLIMPORT, to allow extensions to access them on Windows

Changes

Mark some timeout and statistics-tracking GUC variables as PGDLLIMPORT, to allow extensions to access them on Windows (Pascal Legrand)

This applies to idle_in_transaction_session_timeout, lock_timeout, statement_timeout, track_activities, track_counts, and track_functions.

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.

Bug fixesAvoid memory leak in sanity checks for “slab” memory contexts

Changes

Avoid memory leak in sanity checks for “slab” memory contexts (Tomas Vondra)

This isn't an issue for production builds, since they wouldn't ordinarily have memory context checking enabled; but the leak could be quite severe in a debug build.

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 multiple statistics entries reported by the LWLock statistics mechanism

Changes

Fix multiple statistics entries reported by the LWLock statistics mechanism (Fujii Masao)

The LWLock statistics code (which is not built by default; it requires compiling with -DLWLOCK_STATS) could report multiple entries for the same LWLock and backend process, as a result of faulty hashtable key creation.

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 race condition that led to delayed delivery of interprocess signals on Windows

Changes

Fix race condition that led to delayed delivery of interprocess signals on Windows (Amit Kapila)

This caused visible timing oddities in NOTIFY, and perhaps other misbehavior.

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.

ImprovementsOn Windows, retry a few times after an ERROR_ACCESS_DENIED file access failure

Changes

On Windows, retry a few times after an ERROR_ACCESS_DENIED file access failure (Alexander Lakhin, Tom Lane)

This helps cope with cases where a file open attempt fails because the targeted file is flagged for deletion but not yet actually gone. pg_ctl, for example, frequently failed with such an error when probing to see if the postmaster had shut down yet.

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.

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.