DocumentationVersion comparison
POSTGRESQL · VERSION COMPARE
PostgreSQL 17.5 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
17.5
2025-05-08
17.5stableSupport ends 2029-11-08
Security changes
| CVE / issue | Severity | Fixed version | Selection status |
|---|---|---|---|
| CVE-2025-4207 Avoid one-byte buffer overread when examining invalidly-encoded strings that are claimed to be in GB18030 encoding | 17.5 | Recorded fix |
PostgreSQL 17.5
Migration and compatibility
A dump/restore is not required for those running 17.X.
However, if you have any self-referential foreign key constraints on partitioned tables, it may be necessary to recreate those constraints to ensure that they are being enforced correctly. See the second changelog entry below.
Also, if you have any BRIN bloom indexes, it may be advisable to reindex them after updating. See the third changelog entry below.
Also, if you are upgrading from a version earlier than 17.1, see Section E.11.
SecurityAvoid one-byte buffer overread when examining invalidly-encoded strings that are claimed to be in GB18030 encoding
Changes
Avoid one-byte buffer overread when examining invalidly-encoded strings that are claimed to be in GB18030 encoding (Noah Misch, Andres Freund) § §
While unlikely, a SIGSEGV crash could occur if an incomplete multibyte character appeared at the end of memory. This was possible both in the server and in libpq-using applications. (CVE-2025-4207)
Related records (4)
- Same changePostgreSQL 16.9 · Avoid one-byte buffer overread when examining invalidly-encoded strings that are claimed to be in GB18030 encoding
- Same changePostgreSQL 15.13 · Avoid one-byte buffer overread when examining invalidly-encoded strings that are claimed to be in GB18030 encoding
- Same changePostgreSQL 14.18 · Avoid one-byte buffer overread when examining invalidly-encoded strings that are claimed to be in GB18030 encoding
- Same changePostgreSQL 13.21 · Avoid one-byte buffer overread when examining invalidly-encoded strings that are claimed to be in GB18030 encoding
ImprovementsHandle self-referential foreign keys on partitioned tables correctly
Changes
Handle self-referential foreign keys on partitioned tables correctly (Álvaro Herrera) §
Creating or attaching partitions failed to make the required catalog entries for a foreign-key constraint, if the table referenced by the constraint was the same partitioned table. This resulted in failure to enforce the constraint fully.
To fix this, you should drop and recreate any self-referential foreign keys on partitioned tables, if partitions have been created or attached since the constraint was created. Bear in mind that violating rows might already be present, in which case recreating the constraint will fail, and you'll need to fix up those rows before trying again.
Related records (4)
- Same changePostgreSQL 16.9 · Handle self-referential foreign keys on partitioned tables correctly
- Same changePostgreSQL 15.13 · Handle self-referential foreign keys on partitioned tables correctly
- Same changePostgreSQL 14.18 · Handle self-referential foreign keys on partitioned tables correctly
- Same changePostgreSQL 13.21 · Handle self-referential foreign keys on partitioned tables correctly
ImprovementsAvoid data loss when merging compressed BRIN summaries in brin_bloom_union()
Changes
Avoid data loss when merging compressed BRIN summaries in brin_bloom_union() (Tomas Vondra) §
The code failed to account for decompression results not being identical to the input objects, which would result in failure to add some of the data to the merged summary, leading to missed rows in index searches.
This mistake was present back to v14 where BRIN bloom indexes were introduced, but this code path was only rarely reached then. It's substantially more likely to be hit in v17 because parallel index builds now use the code.
Related records (3)
- Same changePostgreSQL 16.9 · Avoid data loss when merging compressed BRIN summaries in brin_bloom_union()
- Same changePostgreSQL 15.13 · Avoid data loss when merging compressed BRIN summaries in brin_bloom_union()
- Same changePostgreSQL 14.18 · Avoid data loss when merging compressed BRIN summaries in brin_bloom_union()
Bug fixesFix unexpected “attribute has wrong type” errors in UPDATE, DELETE, and MERGE queries that use whole-row table references to views or functions in FROM
Changes
Fix unexpected “attribute has wrong type” errors in UPDATE, DELETE, and MERGE queries that use whole-row table references to views or functions in FROM (Tom Lane) §
Related records (4)
- Same changePostgreSQL 16.9 · Fix unexpected “attribute has wrong type” errors in UPDATE, DELETE, and MERGE queries that use whole-row table references to views or functions in FROM
- Same changePostgreSQL 15.13 · Fix unexpected “attribute has wrong type” errors in UPDATE, DELETE, and MERGE queries that use whole-row table references to views or functions in FROM
- Same changePostgreSQL 14.18 · Fix unexpected “attribute has wrong type” errors in UPDATE, DELETE, and MERGE queries that use whole-row table references to views or functions in FROM
- Same changePostgreSQL 13.21 · Fix unexpected “attribute has wrong type” errors in UPDATE, DELETE, and MERGE queries that use whole-row table references to views or functions in FROM
Bug fixesFix MERGE into a partitioned table with DO NOTHING actions
Changes
Fix MERGE into a partitioned table with DO NOTHING actions (Tender Wang) §
Some cases failed with “unknown action in MERGE WHEN clause” errors.
Related records (2)
ImprovementsPrevent failure in INSERT commands when the table has a GENERATED column of a domain data type and the domain's constraints disallow null values
Changes
Prevent failure in INSERT commands when the table has a GENERATED column of a domain data type and the domain's constraints disallow null values (Jian He) §
Constraint failure was reported even if the generation expression produced a perfectly okay result.
Related records (3)
- Same changePostgreSQL 16.9 · Prevent failure in INSERT commands when the table has a GENERATED column of a domain data type and the domain's constraints disallow null values
- Same changePostgreSQL 15.13 · Prevent failure in INSERT commands when the table has a GENERATED column of a domain data type and the domain's constraints disallow null values
- Same changePostgreSQL 14.18 · Prevent failure in INSERT commands when the table has a GENERATED column of a domain data type and the domain's constraints disallow null values
ImprovementsCorrectly process references to outer CTE names that appear within a WITH clause attached to an INSERT/UPDATE/DELETE/MERGE command that's inside WITH
Changes
Correctly process references to outer CTE names that appear within a WITH clause attached to an INSERT/UPDATE/DELETE/MERGE command that's inside WITH (Tom Lane) §
The parser failed to detect disallowed recursion cases, nor did it account for such references when sorting CTEs into a usable order.
Related records (4)
- Same changePostgreSQL 16.9 · Correctly process references to outer CTE names that appear within a WITH clause attached to an INSERT/UPDATE/DELETE/MERGE command that's inside WITH
- Same changePostgreSQL 15.13 · Correctly process references to outer CTE names that appear within a WITH clause attached to an INSERT/UPDATE/DELETE/MERGE command that's inside WITH
- Same changePostgreSQL 14.18 · Correctly process references to outer CTE names that appear within a WITH clause attached to an INSERT/UPDATE/DELETE/MERGE command that's inside WITH
- Same changePostgreSQL 13.21 · Correctly process references to outer CTE names that appear within a WITH clause attached to an INSERT/UPDATE/DELETE/MERGE command that's inside WITH
Bug fixesFix misprocessing of casts within the keys of JSON constructor expressions
Changes
Fix misprocessing of casts within the keys of JSON constructor expressions (Amit Langote) §
ImprovementsDon't try to parallelize array_agg() when the argument is of an anonymous record type
Changes
Don't try to parallelize array_agg() when the argument is of an anonymous record type (Richard Guo, Tom Lane) §
The protocol for communicating with parallel workers doesn't support identifying the concrete record type that a worker is returning.
Related records (1)
Bug fixesFix ARRAY(subquery) and ARRAY[expression, ...] constructs to produce sane results when the input is of type int2vector or oidvector
Changes
Fix ARRAY( and subquery)ARRAY[ constructs to produce sane results when the input is of type expression, ...]int2vector or oidvector (Tom Lane) §
This patch restores the behavior that existed before PostgreSQL 9.5: the result is of type int2vector[] or oidvector[].
Related records (4)
- Same changePostgreSQL 16.9 · Fix ARRAY(subquery) and ARRAY[expression, ...] constructs to produce sane results when the input is of type int2vector or oidvector
- Same changePostgreSQL 15.13 · Fix ARRAY(subquery) and ARRAY[expression, ...] constructs to produce sane results when the input is of type int2vector or oidvector
- Same changePostgreSQL 14.18 · Fix ARRAY(subquery) and ARRAY[expression, ...] constructs to produce sane results when the input is of type int2vector or oidvector
- Same changePostgreSQL 13.21 · Fix ARRAY(subquery) and ARRAY[expression, ...] constructs to produce sane results when the input is of type int2vector or oidvector
Bug fixesFix possible erroneous reports of invalid affixes while parsing Ispell dictionaries
Changes
Fix possible erroneous reports of invalid affixes while parsing Ispell dictionaries (Jacob Brazeal) §
Related records (4)
- Same changePostgreSQL 16.9 · Fix possible erroneous reports of invalid affixes while parsing Ispell dictionaries
- Same changePostgreSQL 15.13 · Fix possible erroneous reports of invalid affixes while parsing Ispell dictionaries
- Same changePostgreSQL 14.18 · Fix possible erroneous reports of invalid affixes while parsing Ispell dictionaries
- Same changePostgreSQL 13.21 · Fix possible erroneous reports of invalid affixes while parsing Ispell dictionaries
Bug fixesFix ALTER TABLE ADD COLUMN to correctly handle the case of a domain type that has a default
Changes
Fix ALTER TABLE ADD COLUMN to correctly handle the case of a domain type that has a default (Jian He, Tom Lane, Tender Wang) § §
If a domain type has a default, adding a column of that type (without any explicit DEFAULT clause) failed to install the domain's default value in existing rows, instead leaving the new column null.
Related records (4)
- Same changePostgreSQL 16.9 · Fix ALTER TABLE ADD COLUMN to correctly handle the case of a domain type that has a default
- Same changePostgreSQL 15.13 · Fix ALTER TABLE ADD COLUMN to correctly handle the case of a domain type that has a default
- Same changePostgreSQL 14.18 · Fix ALTER TABLE ADD COLUMN to correctly handle the case of a domain type that has a default
- Same changePostgreSQL 13.21 · Fix ALTER TABLE ADD COLUMN to correctly handle the case of a domain type that has a default
Bug fixesRepair misbehavior when there are duplicate column names in a foreign key constraint's ON DELETE SET DEFAULT or SET NULL action
Changes
Repair misbehavior when there are duplicate column names in a foreign key constraint's ON DELETE SET DEFAULT or SET NULL action (Tom Lane) §
Related records (2)
- Same changePostgreSQL 16.9 · Repair misbehavior when there are duplicate column names in a foreign key constraint's ON DELETE SET DEFAULT or SET NULL action
- Same changePostgreSQL 15.13 · Repair misbehavior when there are duplicate column names in a foreign key constraint's ON DELETE SET DEFAULT or SET NULL action
ImprovementsImprove the error message for disallowed attempts to alter the properties of a foreign key constraint
Changes
Improve the error message for disallowed attempts to alter the properties of a foreign key constraint (Álvaro Herrera) §
Related records (4)
- Same changePostgreSQL 16.9 · Improve the error message for disallowed attempts to alter the properties of a foreign key constraint
- Same changePostgreSQL 15.13 · Improve the error message for disallowed attempts to alter the properties of a foreign key constraint
- Same changePostgreSQL 14.18 · Improve the error message for disallowed attempts to alter the properties of a foreign key constraint
- Same changePostgreSQL 13.21 · Improve the error message for disallowed attempts to alter the properties of a foreign key constraint
ImprovementsAvoid error when resetting the relhassubclass flag of a temporary table that's marked ON COMMIT DELETE ROWS
Changes
Avoid error when resetting the relhassubclass flag of a temporary table that's marked ON COMMIT DELETE ROWS (Noah Misch) §
Related records (4)
- Same changePostgreSQL 16.9 · Avoid error when resetting the relhassubclass flag of a temporary table that's marked ON COMMIT DELETE ROWS
- Same changePostgreSQL 15.13 · Avoid error when resetting the relhassubclass flag of a temporary table that's marked ON COMMIT DELETE ROWS
- Same changePostgreSQL 14.18 · Avoid error when resetting the relhassubclass flag of a temporary table that's marked ON COMMIT DELETE ROWS
- Same changePostgreSQL 13.21 · Avoid error when resetting the relhassubclass flag of a temporary table that's marked ON COMMIT DELETE ROWS
ImprovementsAdd missing deparsing of the INDENT option of XMLSERIALIZE()
ImprovementsAvoid premature evaluation of the arguments of an aggregate function that has both FILTER and ORDER BY (or DISTINCT) options
Changes
Avoid premature evaluation of the arguments of an aggregate function that has both FILTER and ORDER BY (or DISTINCT) options (David Rowley) §
If there is ORDER BY or DISTINCT, we consider pre-sorting the aggregate input values rather than doing the sort within the Agg plan node. But this is problematic if the aggregate inputs include expressions that could fail (for example, a division where some of the input divisors could be zero) and there is a FILTER clause that's meant to prevent such failures. Pre-sorting would push the expression evaluations to before the FILTER test, allowing the failures to happen anyway. Avoid this by not pre-sorting if there's a FILTER and the input expressions are anything more complex than a simple Var or Const.
Bug fixesFix erroneous deductions from column NOT NULL constraints in the presence of outer joins
Changes
Fix erroneous deductions from column NOT NULL constraints in the presence of outer joins (Richard Guo) §
In some cases the planner would discard an IS NOT NULL query condition, even though the condition applies after an outer join and thus is not redundant.
ImprovementsAvoid incorrect optimizations based on IS [NOT] NULL tests that are applied to composite values
Changes
Avoid incorrect optimizations based on IS [NOT] NULL tests that are applied to composite values (Bruce Momjian) §
Bug fixesFix planner's failure to identify more than one hashable ScalarArrayOpExpr subexpression within a top-level expression
Changes
Fix planner's failure to identify more than one hashable ScalarArrayOpExpr subexpression within a top-level expression (David Geier) §
This resulted in unnecessarily-inefficient execution of any additional subexpressions that could have been processed with a hash table (that is, IN, NOT IN, or = ANY clauses with all-constant right-hand sides).
Related records (3)
- Same changePostgreSQL 16.9 · Fix planner's failure to identify more than one hashable ScalarArrayOpExpr subexpression within a top-level expression
- Same changePostgreSQL 15.13 · Fix planner's failure to identify more than one hashable ScalarArrayOpExpr subexpression within a top-level expression
- Same changePostgreSQL 14.18 · Fix planner's failure to identify more than one hashable ScalarArrayOpExpr subexpression within a top-level expression
Bug fixesFix incorrect table size estimate with low fill factor
Changes
Fix incorrect table size estimate with low fill factor (Tomas Vondra) §
When the planner estimates the number of rows in a never-yet-analyzed table, it uses the table's fillfactor setting in the estimation, but it neglected to clamp the result to at least one row per page. A low fillfactor could thus result in an unreasonably small estimate.
ImprovementsDisable “skip fetch” optimization in bitmap heap scan
Changes
Disable “skip fetch” optimization in bitmap heap scan (Matthias van de Meent) §
It turns out that this optimization can result in returning dead tuples when a concurrent vacuum marks a page all-visible.
Related records (4)
- Same changePostgreSQL 16.9 · Disable “skip fetch” optimization in bitmap heap scan
- Same changePostgreSQL 15.13 · Disable “skip fetch” optimization in bitmap heap scan
- Same changePostgreSQL 14.18 · Disable “skip fetch” optimization in bitmap heap scan
- Same changePostgreSQL 13.21 · Disable “skip fetch” optimization in bitmap heap scan
Bug fixesFix performance issues in GIN index search startup when there are many search keys
Changes
Fix performance issues in GIN index search startup when there are many search keys (Tom Lane, Vinod Sridharan) § §
An indexable clause with many keys (for example, jsonbcol ?| array[...] with tens of thousands of array elements) took O(N2) time to start up, and was uncancelable for that interval too.
Related records (4)
- Same changePostgreSQL 16.9 · Fix performance issues in GIN index search startup when there are many search keys
- Same changePostgreSQL 15.13 · Fix performance issues in GIN index search startup when there are many search keys
- Same changePostgreSQL 14.18 · Fix performance issues in GIN index search startup when there are many search keys
- Same changePostgreSQL 13.21 · Fix performance issues in GIN index search startup when there are many search keys
ImprovementsDetect missing support procedures in a BRIN index operator class, and report an error instead of crashing
Changes
Detect missing support procedures in a BRIN index operator class, and report an error instead of crashing (Álvaro Herrera) §
Related records (4)
- Same changePostgreSQL 16.9 · Detect missing support procedures in a BRIN index operator class, and report an error instead of crashing
- Same changePostgreSQL 15.13 · Detect missing support procedures in a BRIN index operator class, and report an error instead of crashing
- Same changePostgreSQL 14.18 · Detect missing support procedures in a BRIN index operator class, and report an error instead of crashing
- Same changePostgreSQL 13.21 · Detect missing support procedures in a BRIN index operator class, and report an error instead of crashing
ImprovementsRespond to interrupts (such as query cancel) while waiting for asynchronous subplans of an Append plan node
Changes
Respond to interrupts (such as query cancel) while waiting for asynchronous subplans of an Append plan node (Heikki Linnakangas) §
Previously, nothing would happen until one of the subplans becomes ready.
Related records (3)
- Same changePostgreSQL 16.9 · Respond to interrupts (such as query cancel) while waiting for asynchronous subplans of an Append plan node
- Same changePostgreSQL 15.13 · Respond to interrupts (such as query cancel) while waiting for asynchronous subplans of an Append plan node
- Same changePostgreSQL 14.18 · Respond to interrupts (such as query cancel) while waiting for asynchronous subplans of an Append plan node
ImprovementsReport the I/O statistics of active WAL senders more frequently
Changes
Report the I/O statistics of active WAL senders more frequently (Bertrand Drouvot) §
Previously, the pg_stat_io view failed to accumulate I/O performed by a WAL sender until that process exited. Now such I/O will be reported after at most one second's delay.
Related records (1)
Bug fixesFix race condition in handling of synchronous_standby_names immediately after startup
Changes
Fix race condition in handling of synchronous_standby_names immediately after startup (Melnikov Maksim, Michael Paquier) §
For a short period after system startup, backends might fail to wait for synchronous commit even though synchronous_standby_names is enabled.
Related records (4)
- Same changePostgreSQL 16.9 · Fix race condition in handling of synchronous_standby_names immediately after startup
- Same changePostgreSQL 15.13 · Fix race condition in handling of synchronous_standby_names immediately after startup
- Same changePostgreSQL 14.18 · Fix race condition in handling of synchronous_standby_names immediately after startup
- Same changePostgreSQL 13.21 · Fix race condition in handling of synchronous_standby_names immediately after startup
ImprovementsCope with possible intra-query changes of io_combine_limit
Changes
Cope with possible intra-query changes of io_combine_limit (Thomas Munro) §
ImprovementsAvoid infinite loop if scram_iterations is set to INT_MAX
Changes
Avoid infinite loop if scram_iterations is set to INT_MAX (Kevin K Biju) §
Related records (1)
Bug fixesAvoid possible crashes due to double transformation of json_array()'s subquery
Changes
Avoid possible crashes due to double transformation of json_array()'s subquery (Tom Lane) §
Related records (1)
Bug fixesFix pg_strtof() to not crash with null endptr
Changes
Fix pg_strtof() to not crash with null endptr (Alexander Lakhin, Tom Lane) §
Related records (4)
Bug fixesFix crash after out-of-memory in certain GUC assignments
Changes
Fix crash after out-of-memory in certain GUC assignments (Daniel Gustafsson) §
Related records (1)
Bug fixesAvoid crash when a Snowball stemmer encounters an out-of-memory condition
Changes
Avoid crash when a Snowball stemmer encounters an out-of-memory condition (Maksim Korotkov) §
Related records (5)
- Related commitsPostgreSQL 18.0 · Add full text search stemming for Estonian
- Same changePostgreSQL 16.9 · Avoid crash when a Snowball stemmer encounters an out-of-memory condition
- Same changePostgreSQL 15.13 · Avoid crash when a Snowball stemmer encounters an out-of-memory condition
- Same changePostgreSQL 14.18 · Avoid crash when a Snowball stemmer encounters an out-of-memory condition
- Same changePostgreSQL 13.21 · Avoid crash when a Snowball stemmer encounters an out-of-memory condition
Bug fixesFix over-enthusiastic freeing of SpecialJoinInfo structs during planning
Changes
Fix over-enthusiastic freeing of SpecialJoinInfo structs during planning (Richard Guo) §
This led to crashes during planning if partitionwise joining is enabled.
ImprovementsDisallow copying of invalidated replication slots
Changes
Disallow copying of invalidated replication slots (Shlok Kyal) §
This prevents trouble when the invalid slot points to WAL that's already been removed.
Related records (1)
ImprovementsDisallow restoring logical replication slots on standby servers that are not in hot-standby mode
Changes
Disallow restoring logical replication slots on standby servers that are not in hot-standby mode (Masahiko Sawada) §
This prevents a scenario where the slot could remain valid after promotion even if wal_level is too low.
Related records (1)
ImprovementsPrevent over-advancement of catalog xmin in “fast forward” mode of logical decoding
Changes
Prevent over-advancement of catalog xmin in “fast forward” mode of logical decoding (Zhijie Hou) §
This mistake could allow deleted catalog entries to be vacuumed away even though they were still potentially needed by the WAL-reading process.
Related records (4)
- Same changePostgreSQL 16.9 · Prevent over-advancement of catalog xmin in “fast forward” mode of logical decoding
- Same changePostgreSQL 15.13 · Prevent over-advancement of catalog xmin in “fast forward” mode of logical decoding
- Same changePostgreSQL 14.18 · Prevent over-advancement of catalog xmin in “fast forward” mode of logical decoding
- Same changePostgreSQL 13.21 · Prevent over-advancement of catalog xmin in “fast forward” mode of logical decoding
ImprovementsAvoid data loss when DDL operations that don't take a strong lock affect tables that are being logically replicated
Changes
Avoid data loss when DDL operations that don't take a strong lock affect tables that are being logically replicated (Shlok Kyal, Hayato Kuroda) § §
The catalog changes caused by the DDL command were not reflected into WAL-decoding processes, allowing them to decode subsequent changes using stale catalog data, probably resulting in data corruption.
Related records (4)
- Same changePostgreSQL 16.9 · Avoid data loss when DDL operations that don't take a strong lock affect tables that are being logically replicated
- Same changePostgreSQL 15.13 · Avoid data loss when DDL operations that don't take a strong lock affect tables that are being logically replicated
- Same changePostgreSQL 14.18 · Avoid data loss when DDL operations that don't take a strong lock affect tables that are being logically replicated
- Same changePostgreSQL 13.21 · Avoid data loss when DDL operations that don't take a strong lock affect tables that are being logically replicated
ImprovementsPrevent incorrect reset of replication origin when an apply worker encounters an error but the error is caught and does not result in worker exit
Changes
Prevent incorrect reset of replication origin when an apply worker encounters an error but the error is caught and does not result in worker exit (Hayato Kuroda) §
This mistake could allow duplicate data to be applied.
Bug fixesFix crash in logical replication if the subscriber's partitioned table has a BRIN index
Changes
Fix crash in logical replication if the subscriber's partitioned table has a BRIN index (Tom Lane) §
ImprovementsAvoid duplicate snapshot creation in logical replication index lookups
Changes
Related records (4)
- Same changePostgreSQL 16.9 · Avoid duplicate snapshot creation in logical replication index lookups
- Same changePostgreSQL 15.13 · Avoid duplicate snapshot creation in logical replication index lookups
- Same changePostgreSQL 14.18 · Avoid duplicate snapshot creation in logical replication index lookups
- Same changePostgreSQL 13.21 · Avoid duplicate snapshot creation in logical replication index lookups
ImprovementsImprove detection of mixed-origin subscriptions
Changes
Improve detection of mixed-origin subscriptions (Hou Zhijie, Shlok Kyal) §
Subscription creation gives a warning if a subscribed-to table is also being followed through other publications, since that could cause duplicate data to be received. This change improves that logic to also detect cases where a partition parent or child table is the one being followed through another publication.
Related records (1)
Bug fixesFix wrong checkpoint details in error message about incorrect recovery timeline choice
Changes
Fix wrong checkpoint details in error message about incorrect recovery timeline choice (David Steele) §
If the requested recovery timeline is not reachable, the reported checkpoint and timeline should be the values read from the backup_label, if there is one. This message previously reported values from the control file, which is correct when recovering from the control file without a backup_label, but not when there is a backup_label.
Bug fixesFix order of operations in smgropen()
Changes
Fix order of operations in smgropen() (Andres Freund) §
Ensure that the SMgrRelation object is fully initialized before calling the smgr_open callback, so that it can be cleaned up properly if the callback fails.
ImprovementsRemove incorrect assertion in pgstat_report_stat()
Bug fixesFix overly-strict assertion in gistFindCorrectParent()
Changes
Fix overly-strict assertion in gistFindCorrectParent() (Heikki Linnakangas) §
Related records (4)
- Same changePostgreSQL 16.9 · Fix overly-strict assertion in gistFindCorrectParent()
- Same changePostgreSQL 15.13 · Fix overly-strict assertion in gistFindCorrectParent()
- Same changePostgreSQL 14.18 · Fix overly-strict assertion in gistFindCorrectParent()
- Same changePostgreSQL 13.21 · Fix overly-strict assertion in gistFindCorrectParent()
ImprovementsAvoid assertion failure in parallel vacuum when maintenance_work_mem has a very small value
Changes
Avoid assertion failure in parallel vacuum when maintenance_work_mem has a very small value (Masahiko Sawada) §
Bug fixesFix rare assertion failure in standby servers when the primary is restarted
Changes
Fix rare assertion failure in standby servers when the primary is restarted (Heikki Linnakangas) §
Related records (3)
- Same changePostgreSQL 16.9 · Fix rare assertion failure in standby servers when the primary is restarted
- Same changePostgreSQL 15.13 · Fix rare assertion failure in standby servers when the primary is restarted
- Same changePostgreSQL 14.18 · Fix rare assertion failure in standby servers when the primary is restarted
ImprovementsIn PL/pgSQL, avoid “unexpected plan node type” error when a scrollable cursor is defined on a simple SELECT expression query
Changes
In PL/pgSQL, avoid “unexpected plan node type” error when a scrollable cursor is defined on a simple SELECT query (Andrei Lepikhov) §expression
Related records (4)
- Same changePostgreSQL 16.9 · In PL/pgSQL, avoid “unexpected plan node type” error when a scrollable cursor is defined on a simple SELECT expression query
- Same changePostgreSQL 15.13 · In PL/pgSQL, avoid “unexpected plan node type” error when a scrollable cursor is defined on a simple SELECT expression query
- Same changePostgreSQL 14.18 · In PL/pgSQL, avoid “unexpected plan node type” error when a scrollable cursor is defined on a simple SELECT expression query
- Same changePostgreSQL 13.21 · In PL/pgSQL, avoid “unexpected plan node type” error when a scrollable cursor is defined on a simple SELECT expression query
ImprovementsDon't try to drop individual index partitions in pg_dump's --clean mode
Changes
Don't try to drop individual index partitions in pg_dump's --clean mode (Jian He) §
The server rejects such DROP commands. That has no real consequences, since the partitions will go away anyway in the subsequent DROPs of either their parent tables or their partitioned index. However, the error reported for the attempted drop causes problems when restoring in --single-transaction mode.
Related records (4)
- Same changePostgreSQL 16.9 · Don't try to drop individual index partitions in pg_dump's --clean mode
- Same changePostgreSQL 15.13 · Don't try to drop individual index partitions in pg_dump's --clean mode
- Same changePostgreSQL 14.18 · Don't try to drop individual index partitions in pg_dump's --clean mode
- Same changePostgreSQL 13.21 · Don't try to drop individual index partitions in pg_dump's --clean mode
ImprovementsIn pg_dumpall, avoid emitting invalid role GRANT commands if pg_auth_members contains invalid role OIDs
Changes
In pg_dumpall, avoid emitting invalid role GRANT commands if pg_auth_members contains invalid role OIDs (Tom Lane) §
Instead, print a warning and skip the entry. This copes better with catalog corruption that has been seen to occur in back branches as a result of race conditions between GRANT and DROP ROLE.
Related records (4)
- Same changePostgreSQL 16.9 · In pg_dumpall, avoid emitting invalid role GRANT commands if pg_auth_members contains invalid role OIDs
- Same changePostgreSQL 15.13 · In pg_dumpall, avoid emitting invalid role GRANT commands if pg_auth_members contains invalid role OIDs
- Same changePostgreSQL 14.18 · In pg_dumpall, avoid emitting invalid role GRANT commands if pg_auth_members contains invalid role OIDs
- Same changePostgreSQL 13.21 · In pg_dumpall, avoid emitting invalid role GRANT commands if pg_auth_members contains invalid role OIDs
Bug fixesIn pg_amcheck and pg_upgrade, use the correct function to free allocations made by libpq
Changes
In pg_amcheck and pg_upgrade, use the correct function to free allocations made by libpq (Michael Paquier, Ranier Vilela) § § §
These oversights could result in crashes in certain Windows build configurations, such as a debug build of libpq used by a non-debug build of the calling application.
Related records (3)
- Same changePostgreSQL 16.9 · In pg_amcheck and pg_upgrade, use the correct function to free allocations made by libpq
- Same changePostgreSQL 15.13 · In pg_amcheck and pg_upgrade, use the correct function to free allocations made by libpq
- Same changePostgreSQL 14.18 · In pg_amcheck and pg_upgrade, use the correct function to free allocations made by libpq
Bug fixesFix reindexdb's scheduling of parallel reindex operations
Changes
Fix reindexdb's scheduling of parallel reindex operations (Alexander Korotkov) §
The original coding failed to achieve the expected amount of parallelism.
Bug fixesAvoid crashing with corrupt input data in contrib/pageinspect's heap_page_items()
Changes
Avoid crashing with corrupt input data in contrib/pageinspect's heap_page_items() (Dmitry Kovalenko) §
Related records (4)
- Same changePostgreSQL 16.9 · Avoid crashing with corrupt input data in contrib/pageinspect's heap_page_items()
- Same changePostgreSQL 15.13 · Avoid crashing with corrupt input data in contrib/pageinspect's heap_page_items()
- Same changePostgreSQL 14.18 · Avoid crashing with corrupt input data in contrib/pageinspect's heap_page_items()
- Same changePostgreSQL 13.21 · Avoid crashing with corrupt input data in contrib/pageinspect's heap_page_items()
ImprovementsPrevent assertion failure in contrib/pg_freespacemap's pg_freespacemap()
Changes
Prevent assertion failure in contrib/pg_freespacemap's pg_freespacemap() (Tender Wang) §
Applying pg_freespacemap() to a relation lacking storage (such as a view) caused an assertion failure, although there was no ill effect in non-assert builds. Add an error check to reject that case.
Related records (4)
- Same changePostgreSQL 16.9 · Prevent assertion failure in contrib/pg_freespacemap's pg_freespacemap()
- Same changePostgreSQL 15.13 · Prevent assertion failure in contrib/pg_freespacemap's pg_freespacemap()
- Same changePostgreSQL 14.18 · Prevent assertion failure in contrib/pg_freespacemap's pg_freespacemap()
- Same changePostgreSQL 13.21 · Prevent assertion failure in contrib/pg_freespacemap's pg_freespacemap()
ImprovementsIn contrib/postgres_fdw, avoid pulling up restriction conditions from subqueries
Changes
In contrib/postgres_fdw, avoid pulling up restriction conditions from subqueries (Alexander Pyhalov) §
This fix prevents rare cases of “unexpected expression in subquery output” errors.
Bug fixesFix build failure when an old version of libpq_fe.h is present in system include directories
Changes
Fix build failure when an old version of libpq_fe.h is present in system include directories (Tom Lane) §
Bug fixesFix build failure on macOS 15.4
Changes
Fix build failure on macOS 15.4 (Tom Lane, Peter Eisentraut) §
This macOS update broke our configuration probe for strchrnul().
Related records (4)
Bug fixesFix valgrind labeling of per-buffer data of read streams
Changes
Fix valgrind labeling of per-buffer data of read streams (Thomas Munro) §
This affects no core code in released versions of PostgreSQL, but an extension using the per-buffer data feature might have encountered spurious failures when being tested under valgrind.
ImprovementsAvoid valgrind complaints about string hashing code
Changes
Avoid valgrind complaints about string hashing code (John Naylor) §
ImprovementsUpdate time zone data files to tzdata release 2025b for DST law changes in Chile, plus historical corrections for Iran
Changes
Update time zone data files to tzdata release 2025b for DST law changes in Chile, plus historical corrections for Iran (Tom Lane) §
There is a new time zone America/Coyhaique for Chile's Aysén Region, to account for it changing to UTC-03 year-round and thus diverging from America/Santiago.
Related records (4)
- Same changePostgreSQL 16.9 · Update time zone data files to tzdata release 2025b for DST law changes in Chile, plus historical corrections for Iran
- Same changePostgreSQL 15.13 · Update time zone data files to tzdata release 2025b for DST law changes in Chile, plus historical corrections for Iran
- Same changePostgreSQL 14.18 · Update time zone data files to tzdata release 2025b for DST law changes in Chile, plus historical corrections for Iran
- Same changePostgreSQL 13.21 · Update time zone data files to tzdata release 2025b for DST law changes in Chile, plus historical corrections for Iran
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.