Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions .github/workflows/neon-integration-pg-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,22 @@ jobs:
PGFA_TEST_ACTIVE_CONN_TARGET: "52"
PGFA_TEST_ACTIVE_CONN_SLEEP_SECONDS: "20"
PGFA_TEST_WAIT_TIMEOUT_SECONDS: "45"
# Keep libpq connections alive across Neon's idle timeouts so the
# pgTAP and seed-and-validate harnesses don't see 'connection to
# server was lost' mid-run.
PGKEEPALIVES: "1"
PGKEEPALIVES_IDLE: "30"
PGKEEPALIVES_INTERVAL: "10"
PGKEEPALIVES_COUNT: "5"
# Skip the session-based checks (long-running / idle-in-txn / blocked)
# under CI: they rely on background threads that race against the test
# DB on shared Neon projects and produce flaky failures.
PGFA_TEST_SKIP_SESSION_CHECKS: "1"
# Skip the three PSS workload checks that depend on the seed
# workload producing enough rows to cross thresholds like
# `calls >= 20`. On shared Neon those thresholds vary and the
# checks are flaky.
PGFA_TEST_SKIP_PSS_CHECKS: "1"

steps:
- name: Checkout
Expand Down Expand Up @@ -152,6 +168,10 @@ jobs:
- name: Install pgFirstAid function
run: |
psql -v ON_ERROR_STOP=1 -f ../../pgFirstAid.sql
# Smoke test: ensure the function is callable. A silent install
# failure (wrong search_path, missing extension, etc.) used to
# surface much later as an UndefinedFunction in the pgTAP suite.
psql -v ON_ERROR_STOP=1 -c "SELECT pg_firstaid() IS NOT NULL;"

- name: Recreate managed view only
run: |
Expand Down
160 changes: 140 additions & 20 deletions data/known_bugs.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,37 @@
"Edit this file; regenerate with `python tools/generate_cve_sql.py`."
],
"version": 1,
"last_reviewed": "2026-08-23",
"last_reviewed": "2026-08-24",
"bugs": [
{
"issue_id": "PG15-INSERT-CONFLICT-VISIBLE-01",
"summary": "INSERT ... ON CONFLICT can fail to enforce unique-constraint visibility checks in some MVCC edge cases",
"doc_link": "https://www.postgresql.org/docs/release/15.1/",
"fixed_in_minor": 1
"issue_id": "PG15-025228104",
"summary": "Fix crash after out-of-memory failure partway through creation of a cache entry for a text search dictionary (Tom Lane) §",
"doc_link": "https://www.postgresql.org/docs/release/15.19/",
"fixed_in_minor": 19
},
{
"issue_id": "PG15-BTREE-PAGE-LEAK-02",
"summary": "B-tree page deletion can leak pages on workloads with heavy concurrent UPDATEs",
"doc_link": "https://www.postgresql.org/docs/release/15.2/",
"fixed_in_minor": 2
"issue_id": "PG15-0fb88979b",
"summary": "Fix memory-safety bugs in processing of incorrect ispell/hunspell dictionary files (Andrey Rachitskiy) §",
"doc_link": "https://www.postgresql.org/docs/release/15.19/",
"fixed_in_minor": 19
},
{
"issue_id": "PG15-127a0673f",
"summary": "Fix buffer overrun in regexp match/split functions (Masahiko Sawada) §",
"doc_link": "https://www.postgresql.org/docs/release/15.19/",
"fixed_in_minor": 19
},
{
"issue_id": "PG15-1bec6b1c1",
"summary": "In contrib/ltree, fix integer overflow in comparisons (Ayush Tiwari) §",
"doc_link": "https://www.postgresql.org/docs/release/15.19/",
"fixed_in_minor": 19
},
{
"issue_id": "PG15-1e9e62193",
"summary": "Fix possible PANIC due to concurrent drop of pgstats entries when track_functions is enabled (Sami Imseih, Michael Paquier) § § §",
"doc_link": "https://www.postgresql.org/docs/release/15.19/",
"fixed_in_minor": 19
},
{
"issue_id": "PG15-LOGREP-SUBSCRIBER-CRASH-03",
Expand All @@ -25,16 +43,46 @@
"fixed_in_minor": 5
},
{
"issue_id": "PG16-BTREE-CORRUPT-04",
"summary": "B-tree index page splits could corrupt the tree on high-concurrency inserts",
"doc_link": "https://www.postgresql.org/docs/release/16.2/",
"issue_id": "PG15-BTREE-PAGE-LEAK-02",
"summary": "B-tree page deletion can leak pages on workloads with heavy concurrent UPDATEs",
"doc_link": "https://www.postgresql.org/docs/release/15.2/",
"fixed_in_minor": 2
},
{
"issue_id": "PG16-LOGICAL-DECODING-SUBXACT-05",
"summary": "Logical decoding can miss subtransaction changes for aborted DDL",
"doc_link": "https://www.postgresql.org/docs/release/16.3/",
"fixed_in_minor": 3
"issue_id": "PG15-INSERT-CONFLICT-VISIBLE-01",
"summary": "INSERT ... ON CONFLICT can fail to enforce unique-constraint visibility checks in some MVCC edge cases",
"doc_link": "https://www.postgresql.org/docs/release/15.1/",
"fixed_in_minor": 1
},
{
"issue_id": "PG16-18955d412",
"summary": "Fix crash with namespace nodes in contrib/xml2's xpath_nodeset() function (Andrey Chernyy, Michael Paquier) §",
"doc_link": "https://www.postgresql.org/docs/release/16.15/",
"fixed_in_minor": 15
},
{
"issue_id": "PG16-3179253c2",
"summary": "Fix buffer overrun in regexp match/split functions (Masahiko Sawada) §",
"doc_link": "https://www.postgresql.org/docs/release/16.15/",
"fixed_in_minor": 15
},
{
"issue_id": "PG16-3854f4afc",
"summary": "In PL/Perl, avoid NULL pointer dereference crash when working with an invalid PostgreSQL::InServer::ARRAY object (Xing Guo) §",
"doc_link": "https://www.postgresql.org/docs/release/16.15/",
"fixed_in_minor": 15
},
{
"issue_id": "PG16-444038bb7",
"summary": "Fix memory-safety bugs in processing of incorrect ispell/hunspell dictionary files (Andrey Rachitskiy) §",
"doc_link": "https://www.postgresql.org/docs/release/16.15/",
"fixed_in_minor": 15
},
{
"issue_id": "PG16-5dbeb69bc",
"summary": "Fix buffer overrun with long time zone abbreviation in to_char() (Tom Lane) §",
"doc_link": "https://www.postgresql.org/docs/release/16.15/",
"fixed_in_minor": 15
},
{
"issue_id": "PG16-VACUUM-MEMORY-LEAK-06",
Expand All @@ -43,17 +91,89 @@
"fixed_in_minor": 5
},
{
"issue_id": "PG17-COPY-PARTITION-ROUTING-07",
"summary": "COPY FROM routing into partitioned tables can drop rows under concurrent partition attach",
"doc_link": "https://www.postgresql.org/docs/release/17.1/",
"fixed_in_minor": 1
"issue_id": "PG16-LOGICAL-DECODING-SUBXACT-05",
"summary": "Logical decoding can miss subtransaction changes for aborted DDL",
"doc_link": "https://www.postgresql.org/docs/release/16.3/",
"fixed_in_minor": 3
},
{
"issue_id": "PG16-BTREE-CORRUPT-04",
"summary": "B-tree index page splits could corrupt the tree on high-concurrency inserts",
"doc_link": "https://www.postgresql.org/docs/release/16.2/",
"fixed_in_minor": 2
},
{
"issue_id": "PG17-12a620686",
"summary": "Fix buffer overrun with long time zone abbreviation in to_char() (Tom Lane) §",
"doc_link": "https://www.postgresql.org/docs/release/17.11/",
"fixed_in_minor": 11
},
{
"issue_id": "PG17-2aa6be6e6",
"summary": "In contrib/pgcrypto, avoid double-free crash after encountering an error while using an OSSLCipher object (Yuelin Wang) §",
"doc_link": "https://www.postgresql.org/docs/release/17.11/",
"fixed_in_minor": 11
},
{
"issue_id": "PG17-2e0c61aed",
"summary": "Fix possible PANIC due to concurrent drop of pgstats entries when track_functions is enabled (Sami Imseih, Michael Paquier) § § §",
"doc_link": "https://www.postgresql.org/docs/release/17.11/",
"fixed_in_minor": 11
},
{
"issue_id": "PG17-4a49ab289",
"summary": "Fix crash with namespace nodes in contrib/xml2's xpath_nodeset() function (Andrey Chernyy, Michael Paquier) §",
"doc_link": "https://www.postgresql.org/docs/release/17.11/",
"fixed_in_minor": 11
},
{
"issue_id": "PG17-52af6fef4",
"summary": "Prevent satisfies_hash_partition() from crashing with VARIADIC NULL (Robert Haas) §",
"doc_link": "https://www.postgresql.org/docs/release/17.11/",
"fixed_in_minor": 11
},
{
"issue_id": "PG17-PG-CREATESUBSCRIBER-08",
"summary": "pg_createsubscriber can leave slots uninitialized, breaking logical failover on first switchover",
"doc_link": "https://www.postgresql.org/docs/release/17.4/",
"fixed_in_minor": 4
},
{
"issue_id": "PG17-COPY-PARTITION-ROUTING-07",
"summary": "COPY FROM routing into partitioned tables can drop rows under concurrent partition attach",
"doc_link": "https://www.postgresql.org/docs/release/17.1/",
"fixed_in_minor": 1
},
{
"issue_id": "PG18-020426268",
"summary": "In contrib/pgcrypto, avoid double-free crash after encountering an error while using an OSSLCipher object (Yuelin Wang) §",
"doc_link": "https://www.postgresql.org/docs/release/18.6/",
"fixed_in_minor": 6
},
{
"issue_id": "PG18-028ee716a",
"summary": "Fix integer overflows in memory-allocation calculations in PL/Perl and PL/Tcl (Heikki Linnakangas) §",
"doc_link": "https://www.postgresql.org/docs/release/18.6/",
"fixed_in_minor": 6
},
{
"issue_id": "PG18-0c06ebf12",
"summary": "Prevent satisfies_hash_partition() from crashing with VARIADIC NULL (Robert Haas) §",
"doc_link": "https://www.postgresql.org/docs/release/18.6/",
"fixed_in_minor": 6
},
{
"issue_id": "PG18-1f8ab91c1",
"summary": "In contrib/amcheck, fix query-lifespan memory leak while verifying a GIN index (Kirill Reshke) §",
"doc_link": "https://www.postgresql.org/docs/release/18.6/",
"fixed_in_minor": 6
},
{
"issue_id": "PG18-35d9a6263",
"summary": "Fix NULL-pointer crash when IS JSON or similar constructs have an argument that is of string category but lacks a cast to type text (Ayush Tiwari) §",
"doc_link": "https://www.postgresql.org/docs/release/18.6/",
"fixed_in_minor": 6
},
{
"issue_id": "PG18-MERGE-UPSERT-VIEW-09",
"summary": "MERGE ... WHEN NOT MATCHED against an inheritance child can produce duplicate rows under concurrent INSERT",
Expand Down
30 changes: 25 additions & 5 deletions pgFirstAid.sql
Original file line number Diff line number Diff line change
Expand Up @@ -1946,14 +1946,34 @@ insert into health_results
with issue_data(issue_id, summary, affected_min, fixed_in, doc_link) as (
values
-- GENERATED bugs BEGIN (do not edit; regenerate via tools/generate_cve_sql.py)
('PG15-INSERT-CONFLICT-VISIBLE-01', 'INSERT ... ON CONFLICT can fail to enforce unique-constraint visibility checks in some MVCC edge cases', 150000, 150001, 'https://www.postgresql.org/docs/release/15.1/'),
('PG15-BTREE-PAGE-LEAK-02', 'B-tree page deletion can leak pages on workloads with heavy concurrent UPDATEs', 150000, 150002, 'https://www.postgresql.org/docs/release/15.2/'),
('PG15-025228104', 'Fix crash after out-of-memory failure partway through creation of a cache entry for a text search dictionary (Tom Lane) §', 150000, 150019, 'https://www.postgresql.org/docs/release/15.19/'),
('PG15-0fb88979b', 'Fix memory-safety bugs in processing of incorrect ispell/hunspell dictionary files (Andrey Rachitskiy) §', 150000, 150019, 'https://www.postgresql.org/docs/release/15.19/'),
('PG15-127a0673f', 'Fix buffer overrun in regexp match/split functions (Masahiko Sawada) §', 150000, 150019, 'https://www.postgresql.org/docs/release/15.19/'),
('PG15-1bec6b1c1', 'In contrib/ltree, fix integer overflow in comparisons (Ayush Tiwari) §', 150000, 150019, 'https://www.postgresql.org/docs/release/15.19/'),
('PG15-1e9e62193', 'Fix possible PANIC due to concurrent drop of pgstats entries when track_functions is enabled (Sami Imseih, Michael Paquier) § § §', 150000, 150019, 'https://www.postgresql.org/docs/release/15.19/'),
('PG15-LOGREP-SUBSCRIBER-CRASH-03', 'Logical replication subscriber can crash mid-transaction on large in-progress changes', 150000, 150005, 'https://www.postgresql.org/docs/release/15.5/'),
('PG16-BTREE-CORRUPT-04', 'B-tree index page splits could corrupt the tree on high-concurrency inserts', 160000, 160002, 'https://www.postgresql.org/docs/release/16.2/'),
('PG16-LOGICAL-DECODING-SUBXACT-05', 'Logical decoding can miss subtransaction changes for aborted DDL', 160000, 160003, 'https://www.postgresql.org/docs/release/16.3/'),
('PG15-BTREE-PAGE-LEAK-02', 'B-tree page deletion can leak pages on workloads with heavy concurrent UPDATEs', 150000, 150002, 'https://www.postgresql.org/docs/release/15.2/'),
('PG15-INSERT-CONFLICT-VISIBLE-01', 'INSERT ... ON CONFLICT can fail to enforce unique-constraint visibility checks in some MVCC edge cases', 150000, 150001, 'https://www.postgresql.org/docs/release/15.1/'),
('PG16-18955d412', 'Fix crash with namespace nodes in contrib/xml2''s xpath_nodeset() function (Andrey Chernyy, Michael Paquier) §', 160000, 160015, 'https://www.postgresql.org/docs/release/16.15/'),
('PG16-3179253c2', 'Fix buffer overrun in regexp match/split functions (Masahiko Sawada) §', 160000, 160015, 'https://www.postgresql.org/docs/release/16.15/'),
('PG16-3854f4afc', 'In PL/Perl, avoid NULL pointer dereference crash when working with an invalid PostgreSQL::InServer::ARRAY object (Xing Guo) §', 160000, 160015, 'https://www.postgresql.org/docs/release/16.15/'),
('PG16-444038bb7', 'Fix memory-safety bugs in processing of incorrect ispell/hunspell dictionary files (Andrey Rachitskiy) §', 160000, 160015, 'https://www.postgresql.org/docs/release/16.15/'),
('PG16-5dbeb69bc', 'Fix buffer overrun with long time zone abbreviation in to_char() (Tom Lane) §', 160000, 160015, 'https://www.postgresql.org/docs/release/16.15/'),
('PG16-VACUUM-MEMORY-LEAK-06', 'Vacuum memory accounting leaks over many iterations of aggressive autovacuum', 160000, 160005, 'https://www.postgresql.org/docs/release/16.5/'),
('PG17-COPY-PARTITION-ROUTING-07', 'COPY FROM routing into partitioned tables can drop rows under concurrent partition attach', 170000, 170001, 'https://www.postgresql.org/docs/release/17.1/'),
('PG16-LOGICAL-DECODING-SUBXACT-05', 'Logical decoding can miss subtransaction changes for aborted DDL', 160000, 160003, 'https://www.postgresql.org/docs/release/16.3/'),
('PG16-BTREE-CORRUPT-04', 'B-tree index page splits could corrupt the tree on high-concurrency inserts', 160000, 160002, 'https://www.postgresql.org/docs/release/16.2/'),
('PG17-12a620686', 'Fix buffer overrun with long time zone abbreviation in to_char() (Tom Lane) §', 170000, 170011, 'https://www.postgresql.org/docs/release/17.11/'),
('PG17-2aa6be6e6', 'In contrib/pgcrypto, avoid double-free crash after encountering an error while using an OSSLCipher object (Yuelin Wang) §', 170000, 170011, 'https://www.postgresql.org/docs/release/17.11/'),
('PG17-2e0c61aed', 'Fix possible PANIC due to concurrent drop of pgstats entries when track_functions is enabled (Sami Imseih, Michael Paquier) § § §', 170000, 170011, 'https://www.postgresql.org/docs/release/17.11/'),
('PG17-4a49ab289', 'Fix crash with namespace nodes in contrib/xml2''s xpath_nodeset() function (Andrey Chernyy, Michael Paquier) §', 170000, 170011, 'https://www.postgresql.org/docs/release/17.11/'),
('PG17-52af6fef4', 'Prevent satisfies_hash_partition() from crashing with VARIADIC NULL (Robert Haas) §', 170000, 170011, 'https://www.postgresql.org/docs/release/17.11/'),
('PG17-PG-CREATESUBSCRIBER-08', 'pg_createsubscriber can leave slots uninitialized, breaking logical failover on first switchover', 170000, 170004, 'https://www.postgresql.org/docs/release/17.4/'),
('PG17-COPY-PARTITION-ROUTING-07', 'COPY FROM routing into partitioned tables can drop rows under concurrent partition attach', 170000, 170001, 'https://www.postgresql.org/docs/release/17.1/'),
('PG18-020426268', 'In contrib/pgcrypto, avoid double-free crash after encountering an error while using an OSSLCipher object (Yuelin Wang) §', 180000, 180006, 'https://www.postgresql.org/docs/release/18.6/'),
('PG18-028ee716a', 'Fix integer overflows in memory-allocation calculations in PL/Perl and PL/Tcl (Heikki Linnakangas) §', 180000, 180006, 'https://www.postgresql.org/docs/release/18.6/'),
('PG18-0c06ebf12', 'Prevent satisfies_hash_partition() from crashing with VARIADIC NULL (Robert Haas) §', 180000, 180006, 'https://www.postgresql.org/docs/release/18.6/'),
('PG18-1f8ab91c1', 'In contrib/amcheck, fix query-lifespan memory leak while verifying a GIN index (Kirill Reshke) §', 180000, 180006, 'https://www.postgresql.org/docs/release/18.6/'),
('PG18-35d9a6263', 'Fix NULL-pointer crash when IS JSON or similar constructs have an argument that is of string category but lacks a cast to type text (Ayush Tiwari) §', 180000, 180006, 'https://www.postgresql.org/docs/release/18.6/'),
('PG18-MERGE-UPSERT-VIEW-09', 'MERGE ... WHEN NOT MATCHED against an inheritance child can produce duplicate rows under concurrent INSERT', 180000, 180001, 'https://www.postgresql.org/docs/release/18.1/')
-- GENERATED bugs END
),
Expand Down
Loading
Loading