DocumentationVersion comparison
POSTGRESQL · VERSION COMPARE
PostgreSQL 16.13 release changes
All features, fixes, and compatibility notes in this release, with related records from other versions.
Includes changes after the source version through the target. A major version name means its initial release.
Detect the source version from your database
Complete release changes
16.13
2026-02-26
16.13stableSupport ends 2028-11-09
Security changes
| CVE / issue | Severity | Fixed version | Selection status |
|---|---|---|---|
| CVE-2026-2006 Avoid incorrect complaint of invalid encoding when substring() is applied to “toasted” data | 16.12 | Recorded fix |
PostgreSQL 16.13
Migration and compatibility
A dump/restore is not required for those running 16.X.
However, if you are upgrading from a version earlier than 16.10, see Section E.6.
Bug fixesFix failure after replaying a multixid truncation record from WAL that was generated by an older minor version
Changes
Fix failure after replaying a multixid truncation record from WAL that was generated by an older minor version (Heikki Linnakangas) §
Erroneous logic for coping with the way that previous versions handled multixid wraparound led to replay failure, with messages like “could not access status of transaction”. A typical scenario in which this could occur is a standby server of the latest minor version consuming WAL from a primary server of an older version.
Related records (4)
- Same changePostgreSQL 18.3 · Fix failure after replaying a multixid truncation record from WAL that was generated by an older minor version
- Same changePostgreSQL 17.9 · Fix failure after replaying a multixid truncation record from WAL that was generated by an older minor version
- Same changePostgreSQL 15.17 · Fix failure after replaying a multixid truncation record from WAL that was generated by an older minor version
- Same changePostgreSQL 14.22 · Fix failure after replaying a multixid truncation record from WAL that was generated by an older minor version
SecurityAvoid incorrect complaint of invalid encoding when substring() is applied to “toasted” data
Changes
Avoid incorrect complaint of invalid encoding when substring() is applied to “toasted” data (Noah Misch) § § §
The fix for CVE-2026-2006 was too aggressive and could raise an error about an incomplete character in cases that are actually valid.
Related records (4)
- Same changePostgreSQL 18.3 · Avoid incorrect complaint of invalid encoding when substring() is applied to “toasted” data
- Same changePostgreSQL 17.9 · Avoid incorrect complaint of invalid encoding when substring() is applied to “toasted” data
- Same changePostgreSQL 15.17 · Avoid incorrect complaint of invalid encoding when substring() is applied to “toasted” data
- Same changePostgreSQL 14.22 · Avoid incorrect complaint of invalid encoding when substring() is applied to “toasted” data
Bug fixesFix computation of the set of potentially-nulling outer joins for the output of a LATERAL UNION ALL subquery
Changes
Fix computation of the set of potentially-nulling outer joins for the output of a LATERAL UNION ALL subquery (Richard Guo) §
This error could lead to skipping NOT NULL tests in the mistaken belief that they were unnecessary, resulting in wrong query output.
Bug fixesFix pg_stat_get_backend_wait_event() and pg_stat_get_backend_wait_event_type() to report values for auxiliary processes
Changes
Fix pg_stat_get_backend_wait_event() and pg_stat_get_backend_wait_event_type() to report values for auxiliary processes (Heikki Linnakangas) §
Previously these functions returned NULL for auxiliary processes, but that's inconsistent with the pg_stat_activity view.
Related records (4)
- Same changePostgreSQL 18.3 · Fix pg_stat_get_backend_wait_event() and pg_stat_get_backend_wait_event_type() to report values for auxiliary processes
- Same changePostgreSQL 17.9 · Fix pg_stat_get_backend_wait_event() and pg_stat_get_backend_wait_event_type() to report values for auxiliary processes
- Same changePostgreSQL 15.17 · Fix pg_stat_get_backend_wait_event() and pg_stat_get_backend_wait_event_type() to report values for auxiliary processes
- Same changePostgreSQL 14.22 · Fix pg_stat_get_backend_wait_event() and pg_stat_get_backend_wait_event_type() to report values for auxiliary processes
Bug fixesFix casting a composite-type variable to a domain type when returning its value from a PL/pgSQL function
Changes
Fix casting a composite-type variable to a domain type when returning its value from a PL/pgSQL function (Tom Lane) §
If the variable's value is NULL, a “cache lookup failed for type 0” error resulted.
Related records (4)
- Same changePostgreSQL 18.3 · Fix casting a composite-type variable to a domain type when returning its value from a PL/pgSQL function
- Same changePostgreSQL 17.9 · Fix casting a composite-type variable to a domain type when returning its value from a PL/pgSQL function
- Same changePostgreSQL 15.17 · Fix casting a composite-type variable to a domain type when returning its value from a PL/pgSQL function
- Same changePostgreSQL 14.22 · Fix casting a composite-type variable to a domain type when returning its value from a PL/pgSQL function
Bug fixesFix potential null pointer dereference in contrib/hstore's binary input function
Changes
Fix potential null pointer dereference in contrib/hstore's binary input function (Michael Paquier) §
hstore's receive function crashed on input containing duplicate keys. hstore values generated by Postgres would never contain duplicate keys, so this mistake has gone unnoticed. The crash could be provoked by malicious or corrupted data.
Related records (4)
- Same changePostgreSQL 18.3 · Fix potential null pointer dereference in contrib/hstore's binary input function
- Same changePostgreSQL 17.9 · Fix potential null pointer dereference in contrib/hstore's binary input function
- Same changePostgreSQL 15.17 · Fix potential null pointer dereference in contrib/hstore's binary input function
- Same changePostgreSQL 14.22 · Fix potential null pointer dereference in contrib/hstore's binary input function
No matching changes
Try another search, or .
How is this comparison generated?
The comparison follows PostgreSQL release notes from just after the source through the target version. Confirmed backport duplicates are merged conservatively, with every original explanation retained. Related commits can represent independent changes; they remain separate records.
Release snapshot: 2026-09-26 · Security snapshot: 2026-09-26
Content comes from PostgreSQL release notes. Interaction inspired by pgversions.com and pgversionreport.