From 41d0b0058f2a04f62e703b60a4bfc4fe7cc90c9e Mon Sep 17 00:00:00 2001
From: Daniel Gustafsson <daniel@yesql.se>
Date: Sat, 18 Oct 2025 20:06:07 +0200
Subject: [PATCH v3 3/4] featurematrix: Update links to use current
 documentation

The links from the featurematrix to the docs used a combination of
current, devel, and the specific latest version at the time the new
feature was added. This updates all links to use /current/ to make
sure that we never link to outdated versions of the docs.

While there, remove all /static/ links since we only have the static
docs these days.

Author: Daniel Gustafsson <daniel@yesql.se>
Discussion: https://postgr.es/m/0781CAB9-187C-42C6-BB66-F82F66591F92@yesql.se
---
 data/featurematrix.yaml | 364 ++++++++++++++++++++--------------------
 1 file changed, 182 insertions(+), 182 deletions(-)

diff --git a/data/featurematrix.yaml b/data/featurematrix.yaml
index e0a20466..a5bbd8be 100644
--- a/data/featurematrix.yaml
+++ b/data/featurematrix.yaml
@@ -11,7 +11,7 @@ featurematrix:
   - name: Advisory locks
     versions:
       '8.2': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/explicit-locking.html#ADVISORY-LOCKS
+    url: https://www.postgresql.org/docs/current/explicit-locking.html#ADVISORY-LOCKS
   - name: Custom background workers
     versions:
       '9.3': 'Yes'
@@ -43,17 +43,17 @@ featurematrix:
   - name: EXPLAIN (WAL) support
     versions:
       '13': 'Yes'
-    description: "[EXPLAIN](https://www.postgresql.org/docs/13/sql-explain.html) can\
-      \ now track WAL usage information along with [auto_explain](https://www.postgresql.org/docs/13/auto-explain.html),\
-      \ [autovacuum](https://www.postgresql.org/docs/13/routine-vacuuming.html#AUTOVACUUM),\
-      \ and [pg_stat_statements](https://www.postgresql.org/docs/13/pgstatstatements.html).\r\
-      \n\r\nFor more information, please see the documentation on [EXPLAIN](https://www.postgresql.org/docs/13/sql-explain.html)."
+    description: "[EXPLAIN](https://www.postgresql.org/docs/current/sql-explain.html) can\
+      \ now track WAL usage information along with [auto_explain](https://www.postgresql.org/docs/current/auto-explain.html),\
+      \ [autovacuum](https://www.postgresql.org/docs/current/routine-vacuuming.html#AUTOVACUUM),\
+      \ and [pg_stat_statements](https://www.postgresql.org/docs/current/pgstatstatements.html).\r\
+      \n\r\nFor more information, please see the documentation on [EXPLAIN](https://www.postgresql.org/docs/current/sql-explain.html)."
   - name: '"jsonlog" logging format'
     versions:
       '15': 'Yes'
-    description: PostgreSQL logs can now be output in  [JSON](https://www.postgresql.org/docs/15/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-JSONLOG)
-      using the [`jsonlog`](https://www.postgresql.org/docs/15/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-JSONLOG)
-      parameter when setting [`log_destination`](https://www.postgresql.org/docs/15/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHERE).
+    description: PostgreSQL logs can now be output in  [JSON](https://www.postgresql.org/docs/current/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-JSONLOG)
+      using the [`jsonlog`](https://www.postgresql.org/docs/current/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-JSONLOG)
+      parameter when setting [`log_destination`](https://www.postgresql.org/docs/current/runtime-config-logging.html#RUNTIME-CONFIG-LOGGING-WHERE).
       This provides a "structured log" that can be used by other utilities for storage
       and analysis.
   - name: Loadable plugin infrastructure for monitoring the planner
@@ -69,15 +69,15 @@ featurematrix:
   - name: pg_stat_checkpointer system view
     versions:
       '17': 'Yes'
-    url: https://www.postgresql.org/docs/17/monitoring-stats.html#MONITORING-PG-STAT-CHECKPOINTER-VIEW
+    url: https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-CHECKPOINTER-VIEW
   - name: pg_stat_io - I/O metrics view
     versions:
       '16': 'Yes'
-    url: https://www.postgresql.org/docs/16/monitoring-stats.html#MONITORING-PG-STAT-IO-VIEW
+    url: https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-IO-VIEW
   - name: pg_wait_events system view
     versions:
       '17': 'Yes'
-    url: https://www.postgresql.org/docs/17/view-pg-wait-events.html
+    url: https://www.postgresql.org/docs/current/view-pg-wait-events.html
   - name: Server statistics in shared memory
     versions:
       '15': 'Yes'
@@ -87,7 +87,7 @@ featurematrix:
   - name: SQL-standard information schema
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/information-schema.html
+    url: https://www.postgresql.org/docs/current/information-schema.html
   - name: Support for anonymous shared memory
     versions:
       '9.3': 'Yes'
@@ -106,23 +106,23 @@ featurematrix:
   - name: Array support
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/arrays.html
+    url: https://www.postgresql.org/docs/current/arrays.html
   - name: ENUM data type
     versions:
       '8.3': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/datatype-enum.html
+    url: https://www.postgresql.org/docs/current/datatype-enum.html
   - name: GUID/UUID data type
     versions:
       '8.3': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/datatype-uuid.html
+    url: https://www.postgresql.org/docs/current/datatype-uuid.html
   - name: macaddr8 data type
     versions:
       '10': 'Yes'
-    url: https://www.postgresql.org/docs/10/static/datatype-net-types.html#datatype-macaddr8
+    url: https://www.postgresql.org/docs/current/datatype-net-types.html#DATATYPE-MACADDR8
   - name: Multiranges
     versions:
       '14': 'Yes'
-    url: https://www.postgresql.org/docs/14/rangetypes.html#RANGETYPES-BUILTIN
+    url: https://www.postgresql.org/docs/current/rangetypes.html#RANGETYPES-BUILTIN
   - name: NULLs in Array
     versions:
       '8.2': 'Yes'
@@ -134,7 +134,7 @@ featurematrix:
   - name: Range types
     versions:
       '9.2': 'Yes'
-    url: https://www.postgresql.org/docs/9.2/static/rangetypes.html
+    url: https://www.postgresql.org/docs/current/rangetypes.html
   - name: smallserial type
     versions:
       '9.2': 'Yes'
@@ -147,24 +147,24 @@ featurematrix:
   - name: UUIDv7
     versions:
       '18': 'Yes'
-    url: https://www.postgresql.org/docs/18/functions-uuid.html#FUNC_UUID_GEN_TABLE
+    url: https://www.postgresql.org/docs/current/functions-uuid.html#FUNC_UUID_GEN_TABLE
   - name: XML data type
     versions:
       '8.3': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/datatype-xml.html
+    url: https://www.postgresql.org/docs/current/datatype-xml.html
   Indexing & Constraints:
   - name: Block-range (BRIN) indexes
     versions:
       '9.5': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/brin-intro.html
+    url: https://www.postgresql.org/docs/current/brin-intro.html
   - name: B-tree bottom-up index deletion
     versions:
       '14': 'Yes'
-    url: https://www.postgresql.org/docs/14/btree-implementation.html#BTREE-DELETION
+    url: https://www.postgresql.org/docs/current/btree.html#BTREE-DELETION
   - name: B-tree deduplication
     versions:
       '13': 'Yes'
-    url: https://www.postgresql.org/docs/13/btree-implementation.html#BTREE-DEDUPLICATION
+    url: https://www.postgresql.org/docs/current/btree.html#BTREE-DEDUPLICATION
   - name: Concurrent GiST indexes
     versions:
       '8.1': 'Yes'
@@ -196,7 +196,7 @@ featurematrix:
   - name: GIN (Generalized Inverted Index) Indexes
     versions:
       '8.2': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/gin.html
+    url: https://www.postgresql.org/docs/current/gin.html
   - name: GIN indexes partial match
     versions:
       '8.4': 'Yes'
@@ -209,11 +209,11 @@ featurematrix:
   - name: GiST (Generalized Search Tree) Indexes
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/gist.html
+    url: https://www.postgresql.org/docs/current/gist.html
   - name: Indexes on expressions
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/indexes-expressional.html
+    url: https://www.postgresql.org/docs/current/indexes-expressional.html
   - name: Index-only scans
     versions:
       '9.2': 'Yes'
@@ -270,7 +270,7 @@ featurematrix:
   - name: Space-Partitioned GiST (SP-GiST) Indexes
     versions:
       '9.2': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/spgist.html
+    url: https://www.postgresql.org/docs/current/spgist.html
   - name: SP-GiST indexes for range types
     versions:
       '9.3': 'Yes'
@@ -291,19 +291,19 @@ featurematrix:
   - name: ANY_VALUE aggregate
     versions:
       '16': 'Yes'
-    url: https://www.postgresql.org/docs/16/functions-aggregate.html#id-1.5.8.27.5.2.4.1.1.1.1
+    url: https://www.postgresql.org/docs/current/functions-aggregate.html#id-1.5.8.27.6.2.4.1.1.1.1
   - name: FETCH FIRST .. WITH TIES
     versions:
       '13': 'Yes'
-    url: https://www.postgresql.org/docs/13/sql-select.html#SQL-LIMIT
+    url: https://www.postgresql.org/docs/current/sql-select.html#SQL-LIMIT
   - name: GROUPING SETS, CUBE and ROLLUP support
     versions:
       '9.5': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/queries-table-expressions.html#QUERIES-GROUPING-SETS
+    url: https://www.postgresql.org/docs/current/queries-table-expressions.html#QUERIES-GROUPING-SETS
   - name: INSERT/UPDATE/DELETE RETURNING
     versions:
       '8.2': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/sql-insert.html
+    url: https://www.postgresql.org/docs/current/sql-insert.html
   - name: LATERAL clause
     versions:
       '9.3': 'Yes'
@@ -312,7 +312,7 @@ featurematrix:
   - name: MERGE
     versions:
       '15': 'Yes'
-    url: https://www.postgresql.org/docs/15/sql-merge.html
+    url: https://www.postgresql.org/docs/current/sql-merge.html
   - name: MERGE ... RETURNING
     versions:
       '17': 'Yes'
@@ -322,7 +322,7 @@ featurematrix:
   - name: Multirow VALUES
     versions:
       '8.2': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/sql-values.html
+    url: https://www.postgresql.org/docs/current/sql-values.html
   - name: Non-decimal integer literals
     versions:
       '16': 'Yes'
@@ -331,12 +331,12 @@ featurematrix:
   - name: ORDER BY NULLS FIRST/LAST
     versions:
       '8.3': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/sql-select.html
+    url: https://www.postgresql.org/docs/current/sql-select.html
   - name: range_agg range type aggregation function
     versions:
       '14': 'Yes'
     description: Range types can be aggregated (e.g. in `GROUP BY` clauses) using
-      the [`range_agg`](https://www.postgresql.org/docs/15/functions-aggregate.html)
+      the [`range_agg`](https://www.postgresql.org/docs/current/functions-aggregate.html)
       function.
   - name: Recursive Queries
     versions:
@@ -348,11 +348,11 @@ featurematrix:
     description: "- `regexp_count`: counts the number of places that match the regular\
       \ expression in a string\r\n- `regexp_instr `: returns the starting of the Nth\
       \ match of a regular expression in a string\r\n- `regexp_like`: returns true\
-      \ if a regular expression has a match in a string.\r\n\r\n[https://www.postgresql.org/docs/15/functions-matching.html#FUNCTIONS-POSIX-REGEXP](https://www.postgresql.org/docs/15/functions-matching.html#FUNCTIONS-POSIX-REGEXP)"
+      \ if a regular expression has a match in a string.\r\n\r\n[https://www.postgresql.org/docs/current/functions-matching.html#FUNCTIONS-POSIX-REGEXP](https://www.postgresql.org/docs/current/functions-matching.html#FUNCTIONS-POSIX-REGEXP)"
   - name: Return OLD and NEW values from modified rows
     versions:
       '18': 'Yes'
-    url: https://www.postgresql.org/docs/18/dml-returning.html
+    url: https://www.postgresql.org/docs/current/dml-returning.html
   - name: Row-wise comparison
     versions:
       '8.2': 'Yes'
@@ -369,7 +369,7 @@ featurematrix:
   - name: SYSTEM_USER
     versions:
       '16': 'Yes'
-    url: https://www.postgresql.org/docs/16/functions-info.html#id-1.5.8.32.3.4.2.2.24.1.1.1
+    url: https://www.postgresql.org/docs/current/functions-info.html#id-1.5.8.33.3.4.2.2.26.1.1.1
   - name: TABLE statement
     versions:
       '8.4': 'Yes'
@@ -402,7 +402,7 @@ featurematrix:
   - name: WITHIN GROUP clause
     versions:
       '9.4': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/sql-expressions.html#SYNTAX-AGGREGATES
+    url: https://www.postgresql.org/docs/current/sql-expressions.html#SYNTAX-AGGREGATES
   - name: WITH ORDINALITY clause
     versions:
       '9.4': 'Yes'
@@ -430,8 +430,8 @@ featurematrix:
   - name: ALTER TABLE ... SET ACCESS METHOD
     versions:
       '15': 'Yes'
-    description: '[`ALTER TABLE`](https://www.postgresql.org/docs/15/sql-altertable.html)
-      can specify a different [access method](https://www.postgresql.org/docs/15/tableam.html),
+    description: '[`ALTER TABLE`](https://www.postgresql.org/docs/current/sql-altertable.html)
+      can specify a different [access method](https://www.postgresql.org/docs/current/tableam.html),
       also known as a storage interface.'
   - name: ALTER TABLE ... SET LOGGED / UNLOGGED
     versions:
@@ -444,7 +444,7 @@ featurematrix:
   - name: CREATE ACCESS METHOD
     versions:
       '12': 'Yes'
-    url: https://www.postgresql.org/docs/12/sql-create-access-method.html
+    url: https://www.postgresql.org/docs/current/sql-create-access-method.html
   - name: CREATE TABLE ... (LIKE) with foreign tables, views and composite types
     versions:
       '9.2': 'Yes'
@@ -452,11 +452,11 @@ featurematrix:
   - name: DROP object IF EXISTS
     versions:
       '8.2': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/sql-commands.html
+    url: https://www.postgresql.org/docs/current/sql-commands.html
   - name: ON COMMIT clause for CREATE TEMPORARY TABLE
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/sql-createtable.html
+    url: https://www.postgresql.org/docs/current/sql-createtable.html
   - name: REINDEX CONCURRENTLY
     versions:
       '12': 'Yes'
@@ -469,10 +469,10 @@ featurematrix:
     versions:
       '18': 'Yes'
     description: "Temporal constraints are constraints over ranges. These are\
-      \ available for both [`PRIMARY KEY`](https://www.postgresql.org/docs/18/sql-createtable.html#SQL-CREATETABLE-PARMS-PRIMARY-KEY)\
-      \ and [`UNIQUE`](https://www.postgresql.org/docs/18/sql-createtable.html#SQL-CREATETABLE-PARMS-UNIQUE)\
+      \ available for both [`PRIMARY KEY`](https://www.postgresql.org/docs/current/sql-createtable.html#SQL-CREATETABLE-PARMS-PRIMARY-KEY)\
+      \ and [`UNIQUE`](https://www.postgresql.org/docs/current/sql-createtable.html#SQL-CREATETABLE-PARMS-UNIQUE)\
       \ constraints using the `WITHOUT OVERLAPS` clause, and\
-      \ [`FOREIGN KEY`](https://www.postgresql.org/docs/18/sql-createtable.html#SQL-CREATETABLE-PARMS-REFERENCES)\
+      \ [`FOREIGN KEY`](https://www.postgresql.org/docs/current/sql-createtable.html#SQL-CREATETABLE-PARMS-REFERENCES)\
       \ constraints using the `PERIOD` clause."
   - name: Typed tables
     versions:
@@ -502,7 +502,7 @@ featurematrix:
       \ concurrently instead of waiting for each to finish in sequence. This\
       \ expands existing readahead and improves overall throughput. AIO\
       \ supported in PostgreSQL 18 include sequential scans, bitmap heap scans,\
-      \ and vacuum. For more information see [`io_method`](https://www.postgresql.org/docs/18/runtime-config-resource.html#GUC-IO-METHOD)."
+      \ and vacuum. For more information see [`io_method`](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-IO-METHOD)."
   - name: Automatic plan invalidation
     versions:
       '8.3': 'Yes'
@@ -517,7 +517,7 @@ featurematrix:
   - name: Background Writer
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/runtime-config-resource.html
+    url: https://www.postgresql.org/docs/current/runtime-config-resource.html
   - name: Base backup throttling
     versions:
       '9.4': 'Yes'
@@ -539,7 +539,7 @@ featurematrix:
       '13': 'Yes'
     description: Extended statistics can help the query planner generate better plans
       for queries that have "OR" clauses as well as "IN/ANY" lookups over lists. For
-      more information, please see https://www.postgresql.org/docs/13/planner-stats.html#PLANNER-STATS-EXTENDED
+      more information, please see https://www.postgresql.org/docs/current/planner-stats.html#PLANNER-STATS-EXTENDED
   - name: Cross datatype hashing support
     versions:
       '8.3': 'Yes'
@@ -563,14 +563,14 @@ featurematrix:
   - name: Full Text Search
     versions:
       '8.3': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/textsearch.html
+    url: https://www.postgresql.org/docs/current/textsearch.html
   - name: Hash aggregation can use disk
     versions:
       '13': 'Yes'
     description: "The query planner can now consider using hash aggregation if it\
       \ expects the aggregate to exceed working memory.\r\n\r\nThis can be controlled\
-      \ by two configuration parameters:\r\n\r\n- [enable_hashagg](https://www.postgresql.org/docs/13/runtime-config-query.html#GUC-ENABLE-HASHAGG)\r\
-      \n- [hash_mem_multiplier](https://www.postgresql.org/docs/13/runtime-config-resource.html#GUC-HASH-MEM-MULTIPLIER)"
+      \ by two configuration parameters:\r\n\r\n- [enable_hashagg](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-HASHAGG)\r\
+      \n- [hash_mem_multiplier](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-HASH-MEM-MULTIPLIER)"
   - name: Hashing support for DISTINCT/UNION/INTERSECT/EXCEPT
     versions:
       '8.4': 'Yes'
@@ -598,15 +598,15 @@ featurematrix:
   - name: Incremental sort
     versions:
       '13': 'Yes'
-    url: https://www.postgresql.org/docs/13/runtime-config-query.html#GUC-ENABLE-INCREMENTAL-SORT
+    url: https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-INCREMENTAL-SORT
   - name: Incremental sort for SELECT DISTINCT
     versions:
       '16': 'Yes'
-    description: Queries with `SELECT DISTINCT` can use [incremental sort](https://www.postgresql.org/docs/16/runtime-config-query.html#GUC-ENABLE-INCREMENTAL-SORT).
+    description: Queries with `SELECT DISTINCT` can use [incremental sort](https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-ENABLE-INCREMENTAL-SORT).
   - name: Incremental sort for window functions
     versions:
       '14': 'Yes'
-    description: '[Window functions](https://www.postgresql.org/docs/14/functions-window.html)
+    description: '[Window functions](https://www.postgresql.org/docs/current/functions-window.html)
       can use incremental sorting'
   - name: Inlined WITH Queries (Common Table Expressions)
     versions:
@@ -616,7 +616,7 @@ featurematrix:
       \ improvements. This behavior can be forced on a query by using the \"NOT MATERIALIZED\"\
       \ clause, e.g.\r\n\r\n```\r\nWITH cte AS NOT MATERIALIZED (\r\n    SELECT *\
       \ FROM a\r\n)\r\nSELECT * FROM cte\r\nJOIN b ON b.id = cte.id;\r\n```\r\n\r\n\
-      For more information, please visit [https://www.postgresql.org/docs/12/queries-with.html](https://www.postgresql.org/docs/12/queries-with.html)"
+      For more information, please visit [https://www.postgresql.org/docs/current/queries-with.html](https://www.postgresql.org/docs/current/queries-with.html)"
   - name: Inlining of SQL-functions
     versions:
       '8.1': 'Yes'
@@ -624,15 +624,15 @@ featurematrix:
   - name: Just-in-Time (JIT) compilation for expression evaluation and tuple deforming
     versions:
       '11': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/jit.html
+    url: https://www.postgresql.org/docs/current/jit.html
   - name: Load balancing for libpq / psql
     versions:
       '16': 'Yes'
-    url: https://www.postgresql.org/docs/16/libpq-connect.html#LIBPQ-CONNECT-LOAD-BALANCE-HOSTS
+    url: https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-LOAD-BALANCE-HOSTS
   - name: LZ4 compression for TOAST tables
     versions:
       '14': 'Yes'
-    description: The compression method for [TOAST](https://www.postgresql.org/docs/14/storage-toast.html)
+    description: The compression method for [TOAST](https://www.postgresql.org/docs/current/storage-toast.html)
       tables is now selectable and adds support for lz4 compression.
   - name: Multi-core scalability for read-only workloads
     versions:
@@ -691,7 +691,7 @@ featurematrix:
   - name: Query pipelining
     versions:
       '14': 'Yes'
-    url: https://www.postgresql.org/docs/14/libpq-pipeline-mode.html
+    url: https://www.postgresql.org/docs/current/libpq-pipeline-mode.html
   - name: Reduced lock levels for ALTER TABLE commands
     versions:
       '9.4': 'Yes'
@@ -739,7 +739,7 @@ featurematrix:
   - name: Tablespaces
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/sql-createtablespace.html
+    url: https://www.postgresql.org/docs/current/sql-createtablespace.html
   - name: Unlogged tables
     versions:
       '9.1': 'Yes'
@@ -760,7 +760,7 @@ featurematrix:
   - name: JSONB data type
     versions:
       '9.4': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/datatype-json.html
+    url: https://www.postgresql.org/docs/current/datatype-json.html
   - name: JSONB-modifying operators and functions
     versions:
       '9.5': 'Yes'
@@ -769,11 +769,11 @@ featurematrix:
   - name: JSONB Subscripting
     versions:
       '14': 'Yes'
-    url: https://www.postgresql.org/docs/14/datatype-json.html#JSONB-SUBSCRIPTING
+    url: https://www.postgresql.org/docs/current/datatype-json.html#JSONB-SUBSCRIPTING
   - name: JSON data type
     versions:
       '9.2': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/datatype-json.html
+    url: https://www.postgresql.org/docs/current/datatype-json.html
   - name: SQL/JSON constructors
     versions:
       '16': 'Yes'
@@ -784,7 +784,7 @@ featurematrix:
       '13': 'Yes'
     description: "The SQL/JSON path `datetime()` function in JSON path expressions\
       \ converts valid date and time formats (e.g. ISO 8601) to their corresponding\
-      \ PostgreSQL type.\r\n\r\nFor more information, see the [JSON path documentation](https://www.postgresql.org/docs/13/functions-json.html#FUNCTIONS-SQLJSON-OP-TABLE)"
+      \ PostgreSQL type.\r\n\r\nFor more information, see the [JSON path documentation](https://www.postgresql.org/docs/current/functions-json.html#FUNCTIONS-SQLJSON-OP-TABLE)"
   - name: SQL/JSON IS JSON
     versions:
       '16': 'Yes'
@@ -796,7 +796,7 @@ featurematrix:
   - name: SQL/JSON JSON_TABLE
     versions:
       '17': 'Yes'
-    url: https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-SQLJSON-TABLE
+    url: https://www.postgresql.org/docs/current/functions-json.html#FUNCTIONS-SQLJSON-TABLE
   - name: SQL/JSON path expressions
     versions:
       '12': 'Yes'
@@ -804,7 +804,7 @@ featurematrix:
   - name: SQL/JSON query functions
     versions:
       '17': 'Yes'
-    url: https://www.postgresql.org/docs/17/functions-json.html#FUNCTIONS-SQLJSON-QUERYING
+    url: https://www.postgresql.org/docs/current/functions-json.html#FUNCTIONS-SQLJSON-QUERYING
   Partitioning & Inheritance:
   - name: Accelerated partition pruning
     versions:
@@ -814,7 +814,7 @@ featurematrix:
   - name: Declarative table partitioning
     versions:
       '10': 'Yes'
-    url: https://www.postgresql.org/docs/10/static/ddl-partitioning.html#ddl-partitioning-declarative
+    url: https://www.postgresql.org/docs/current/ddl-partitioning.html#DDL-PARTITIONING-DECLARATIVE
   - name: Default Partition
     versions:
       '11': 'Yes'
@@ -848,7 +848,7 @@ featurematrix:
   - name: Table Partitioning
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/ddl-partitioning.html
+    url: https://www.postgresql.org/docs/current/ddl-partitioning.html
   - name: UPDATE on a partition key
     versions:
       '11': 'Yes'
@@ -858,7 +858,7 @@ featurematrix:
   - name: Materialized Views
     versions:
       '9.3': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/rules-materializedviews.html
+    url: https://www.postgresql.org/docs/current/rules-materializedviews.html
   - name: Materialized views with concurrent refresh
     versions:
       '9.4': 'Yes'
@@ -867,7 +867,7 @@ featurematrix:
   - name: SECURITY INVOKER views
     versions:
       '15': 'Yes'
-    description: '[Views](https://www.postgresql.org/docs/15/sql-createview.html)
+    description: '[Views](https://www.postgresql.org/docs/current/sql-createview.html)
       can be created using the `SECURITY INVOKER` parameter, which executes the view
       with the privileges of the caller instead of the privileges of the owner.'
   - name: Temporary VIEWs
@@ -890,7 +890,7 @@ featurematrix:
     versions:
       '15': 'Yes'
     description: '[`ALTER SUBSCRIPTION ... SKIP`] allows a subscriber to skip replaying
-      a transaction. For more information, please read the section on handling [conflicts](https://www.postgresql.org/docs/15/logical-replication-conflicts.html)
+      a transaction. For more information, please read the section on handling [conflicts](https://www.postgresql.org/docs/current/logical-replication-conflicts.html)
       with logical replication.'
   - name: Cascading streaming replication
     versions:
@@ -900,23 +900,23 @@ featurematrix:
   - name: Configure max WAL retention for replication slots
     versions:
       '13': 'Yes'
-    url: https://www.postgresql.org/docs/13/runtime-config-replication.html#GUC-MAX-SLOT-WAL-KEEP-SIZE
+    url: https://www.postgresql.org/docs/current/runtime-config-replication.html#GUC-MAX-SLOT-WAL-KEEP-SIZE
   - name: Failover support for logical replication slots
     versions:
       '17': 'Yes'
-    url: https://www.postgresql.org/docs/17/logical-replication-failover.html
+    url: https://www.postgresql.org/docs/current/logical-replication-failover.html
   - name: Logical replication
     versions:
       '10': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/logical-replication.html
+    url: https://www.postgresql.org/docs/current/logical-replication.html
   - name: Logical replication avoids replication loops
     versions:
       '16': 'Yes'
-    url: https://www.postgresql.org/docs/16/sql-createsubscription.html#SQL-CREATESUBSCRIPTION-WITH-ORIGIN
+    url: https://www.postgresql.org/docs/current/sql-createsubscription.html#SQL-CREATESUBSCRIPTION-PARAMS-WITH-ORIGIN
   - name: Logical replication column lists
     versions:
       '15': 'Yes'
-    description: '[Publications](https://www.postgresql.org/docs/15/logical-replication-publication.html)
+    description: '[Publications](https://www.postgresql.org/docs/current/logical-replication-publication.html)
       for logical replication can now specify which columns to publish. Previously,
       a publication would publish all columns in a table.'
   - name: Logical replication for partitioned tables
@@ -934,7 +934,7 @@ featurematrix:
   - name: Logical replication initial sync using binary protocol
     versions:
       '16': 'Yes'
-    url: https://www.postgresql.org/docs/16/sql-createsubscription.html#SQL-CREATESUBSCRIPTION-WITH-BINARY
+    url: https://www.postgresql.org/docs/current/sql-createsubscription.html#SQL-CREATESUBSCRIPTION-PARAMS-WITH-BINARY
   - name: Logical replication lookups with additional indexes
     versions:
       '16': 'Yes'
@@ -943,17 +943,17 @@ featurematrix:
   - name: Logical replication parallel apply of transactions
     versions:
       '16': 'Yes'
-    url: https://www.postgresql.org/docs/16/sql-createsubscription.html#SQL-CREATESUBSCRIPTION-WITH-STREAMING
+    url: https://www.postgresql.org/docs/current/sql-createsubscription.html#SQL-CREATESUBSCRIPTION-PARAMS-WITH-STREAMING
   - name: Logical replication publish all tables in schema
     versions:
       '15': 'Yes'
     description: When creating a logical replication publication, a user can specify
       to publish all the tables within a schema , e.g. [`CREATE PUBLICATION ... FOR
-      TABLES IN SCHEMA ...`](https://www.postgresql.org/docs/15/sql-createpublication.html).
+      TABLES IN SCHEMA ...`](https://www.postgresql.org/docs/current/sql-createpublication.html).
   - name: Logical replication row filtering
     versions:
       '15': 'Yes'
-    url: https://www.postgresql.org/docs/15/logical-replication-row-filter.html
+    url: https://www.postgresql.org/docs/current/logical-replication-row-filter.html
   - name: Logical replication slots migrate through pg_upgrade migrate
     versions:
       '17': 'Yes'
@@ -968,14 +968,14 @@ featurematrix:
     versions:
       '15': 'Yes'
     description: Logical replication subscribers can be automatically disabled using
-      the [`disable_on_error`](https://www.postgresql.org/docs/15/logical-replication-conflicts.html)
+      the [`disable_on_error`](https://www.postgresql.org/docs/current/logical-replication-conflicts.html)
       setting.
   - name: Logical replication write conflict logging
     versions:
       '18': 'Yes'
     description: "Write conflicts that occur during logical replication are\
       \ reported both in logs and in the\
-      \ [`pg_stat_subscription_stats`](https://www.postgresql.org/docs/18/monitoring-stats.html#MONITORING-PG-STAT-SUBSCRIPTION-STATS)\
+      \ [`pg_stat_subscription_stats`](https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-SUBSCRIPTION-STATS)\
       \ view."
   - name: Quorum commit for synchronous replication
     versions:
@@ -987,7 +987,7 @@ featurematrix:
   - name: Replication Slots
     versions:
       '9.4': 'Yes'
-    url: https://www.postgresql.org/docs/9.4/static/warm-standby.html#STREAMING-REPLICATION-SLOTS
+    url: https://www.postgresql.org/docs/current/warm-standby.html#STREAMING-REPLICATION-SLOTS
   - name: Streaming-only cascading replication
     versions:
       '9.3': 'Yes'
@@ -1010,7 +1010,7 @@ featurematrix:
   - name: Archive modules
     versions:
       '15': 'Yes'
-    url: https://www.postgresql.org/docs/15/archive-modules.html
+    url: https://www.postgresql.org/docs/current/archive-modules.html
   - name: Checksum on data pages
     versions:
       '9.3': 'Yes'
@@ -1020,7 +1020,7 @@ featurematrix:
     versions:
       '12': 'Yes'
     description: "Page checksums can be enabled or disabled in an offline PostgreSQL\
-      \ cluster via the pg_checksums command:\r\n\r\nhttps://www.postgresql.org/docs/12/app-pgchecksums.html"
+      \ cluster via the pg_checksums command:\r\n\r\nhttps://www.postgresql.org/docs/current/app-pgchecksums.html"
   - name: Generic WAL facility
     versions:
       '9.6': 'Yes'
@@ -1033,7 +1033,7 @@ featurematrix:
   - name: lz4 and Zstandard (zstd) compression for WAL full page writes
     versions:
       '15': 'Yes'
-    url: https://www.postgresql.org/docs/15/runtime-config-wal.html#GUC-WAL-COMPRESSION
+    url: https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-WAL-COMPRESSION
   - name: min_wal_size / max_wal_size
     versions:
       '9.5': 'Yes'
@@ -1060,14 +1060,14 @@ featurematrix:
   - name: pg_basebackup client decompression
     versions:
       '15': 'Yes'
-    description: '[`pg_basebackup`](https://www.postgresql.org/docs/15/app-pgbasebackup.html)
+    description: '[`pg_basebackup`](https://www.postgresql.org/docs/current/app-pgbasebackup.html)
       can now decompress backups using `lz4` and `zstd` (Zstandard) compression.'
   - name: pg_basebackup incremental backup
     versions:
       '17': 'Yes'
     description: Incremental backups can be created using the `--incremental` option
       for [`pg_basebackup`](https://www.postgresql.org/docs/current/app-pgbasebackup.html).
-      The new application [pg_combinebackup](https://www.postgresql.org/docs/17/app-pgcombinebackup.html)
+      The new application [pg_combinebackup](https://www.postgresql.org/docs/current/app-pgcombinebackup.html)
       allows manipulation of base and incremental file system backups.
   - name: pg_basebackup server-side compression
     versions:
@@ -1089,15 +1089,15 @@ featurematrix:
   - name: pg_receivewal (formerly pg_receivexlog)
     versions:
       '9.2': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/app-pgreceivewal.html
+    url: https://www.postgresql.org/docs/current/app-pgreceivewal.html
   - name: Point-in-Time Recovery
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/continuous-archiving.html
+    url: https://www.postgresql.org/docs/current/continuous-archiving.html
   - name: Pre-fetch WAL during recovery
     versions:
       '15': 'Yes'
-    url: https://www.postgresql.org/docs/15/runtime-config-wal.html#GUC-RECOVERY-PREFETCH
+    url: https://www.postgresql.org/docs/current/runtime-config-wal.html#GUC-RECOVERY-PREFETCH
   - name: remote_apply mode
     versions:
       '9.6': 'Yes'
@@ -1111,11 +1111,11 @@ featurematrix:
   - name: Verify backup integrity (pg_verifybackup)
     versions:
       '13': 'Yes'
-    url: https://www.postgresql.org/docs/13/app-pgverifybackup.html
+    url: https://www.postgresql.org/docs/current/app-pgverifybackup.html
   - name: Warm Standby
     versions:
       '8.2': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/warm-standby.html
+    url: https://www.postgresql.org/docs/current/warm-standby.html
   Upgrade:
   - name: pg_upgrade --swap
     versions:
@@ -1123,7 +1123,7 @@ featurematrix:
     description: "The `--swap` option moves the data directories from the old\
       \ cluster to the new cluster and then replaces catalog files with those\
       \ generated for the new cluster. See\
-      [`pg_upgrade`](https://www.postgresql.org/docs/18/pgupgrade.html)\
+      [`pg_upgrade`](https://www.postgresql.org/docs/current/pgupgrade.html)\
       \ for more information."
   - name: Planner statistics preserved on major version upgrade
     versions:
@@ -1131,7 +1131,7 @@ featurematrix:
     description: "PostgreSQL now keeps planner statistics\
       \ through a major version upgrade, which helps an upgraded cluster\
       \ reach expected performance more quickly after the upgrade. See the\
-      \ statistics section in [`pg_upgrade`](https://www.postgresql.org/docs/18/pgupgrade.html)\
+      \ statistics section in [`pg_upgrade`](https://www.postgresql.org/docs/current/pgupgrade.html)\
       \ for more information."
   Data Import & Export:
   - name: COPY from/to STDIN/STDOUT
@@ -1153,16 +1153,16 @@ featurematrix:
   - name: COPY with arbitrary SELECT
     versions:
       '8.2': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/sql-copy.html
+    url: https://www.postgresql.org/docs/current/sql-copy.html
   - name: CSV support for COPY
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/sql-copy.html
+    url: https://www.postgresql.org/docs/current/sql-copy.html
   Configuration Management:
   - name: ALTER SYSTEM
     versions:
       '9.4': 'Yes'
-    url: https://www.postgresql.org/docs/9.4/static/sql-altersystem.html
+    url: https://www.postgresql.org/docs/current/sql-altersystem.html
   - name: Fractional input for "integer" values
     versions:
       '12': 'Yes'
@@ -1171,8 +1171,8 @@ featurematrix:
   - name: Include directives for pg_hba.conf and pg_ident.conf
     versions:
       '16': 'Yes'
-    description: 'Both [`pg_hba.conf`](https://www.postgresql.org/docs/16/auth-pg-hba-conf.html)
-      and [`pg_ident.conf`](https://www.postgresql.org/docs/16/auth-username-maps.html)
+    description: 'Both [`pg_hba.conf`](https://www.postgresql.org/docs/current/auth-pg-hba-conf.html)
+      and [`pg_ident.conf`](https://www.postgresql.org/docs/current/auth-username-maps.html)
       support include directives that let you specify additional files for loading
       rules. These include: `include`, `include_if_exists`, and `include_dir`.'
   - name: Per user/database server configuration settings
@@ -1187,8 +1187,8 @@ featurematrix:
   - name: Regular expression matching in pg_hba.conf and pg_ident.conf
     versions:
       '16': 'Yes'
-    description: Both [`pg_hba.conf`](https://www.postgresql.org/docs/16/auth-pg-hba-conf.html)
-      and [`pg_ident.conf`](https://www.postgresql.org/docs/16/auth-username-maps.html)
+    description: Both [`pg_hba.conf`](https://www.postgresql.org/docs/current/auth-pg-hba-conf.html)
+      and [`pg_ident.conf`](https://www.postgresql.org/docs/current/auth-username-maps.html)
       allow for regular expression matching on usernames. `pg_hba.conf` also supports
       regular expression matching on database names.
   Security:
@@ -1199,11 +1199,11 @@ featurematrix:
   - name: Client can require SCRAM channel binding
     versions:
       '13': 'Yes'
-    url: https://www.postgresql.org/docs/13/libpq-connect.html#LIBPQ-CONNECT-CHANNEL-BINDING
+    url: https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-CHANNEL-BINDING
   - name: Client-specified requirements for authentication
     versions:
       '16': 'Yes'
-    url: https://www.postgresql.org/docs/devel/libpq-connect.html#LIBPQ-CONNECT-REQUIRE-AUTH
+    url: https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-REQUIRE-AUTH
   - name: Column level permissions
     versions:
       '8.4': 'Yes'
@@ -1216,11 +1216,11 @@ featurematrix:
   - name: Direct TLS negotiation ("sslnegotiation")
     versions:
       '17': 'Yes'
-    url: https://www.postgresql.org/docs/17/libpq-connect.html#LIBPQ-CONNECT-SSLNEGOTIATION
+    url: https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNECT-SSLNEGOTIATION
   - name: FIPS mode validation
     versions:
       '18': 'Yes'
-    url: https://www.postgresql.org/docs/18/pgcrypto.html#PGCRYPTO-OPENSSL-SUPPORT-FUNCS
+    url: https://www.postgresql.org/docs/current/pgcrypto.html#PGCRYPTO-OPENSSL-SUPPORT-FUNCS
   - name: GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS
     versions:
       '9.0': 'Yes'
@@ -1229,7 +1229,7 @@ featurematrix:
     versions:
       '12': 'Yes'
     description: "Support for client and server-side connection encryption when using\
-      \ GSSAPI for authentication.\r\n\r\nhttps://www.postgresql.org/docs/12/gssapi-auth.html"
+      \ GSSAPI for authentication.\r\n\r\nhttps://www.postgresql.org/docs/current/gssapi-auth.html"
   - name: GSSAPI support
     versions:
       '8.3': 'Yes'
@@ -1237,7 +1237,7 @@ featurematrix:
   - name: Kerberos credential delegation
     versions:
       '16': 'Yes'
-    url: https://www.postgresql.org/docs/16/runtime-config-connection.html#GUC-GSS-ACCEPT-DELEGATION
+    url: https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-GSS-ACCEPT-DELEGATION
   - name: krb5 authentication (without gssapi)
     versions:
       '8.1': 'Yes'
@@ -1251,17 +1251,17 @@ featurematrix:
     versions:
       '12': 'Yes'
     description: "LDAP servers with DNS SRV can be discovered if PostgreSQL is built\
-      \ with OpenLDAP\r\n\r\nhttps://www.postgresql.org/docs/12/auth-ldap.html"
+      \ with OpenLDAP\r\n\r\nhttps://www.postgresql.org/docs/current/auth-ldap.html"
   - name: Multifactor authentication via valid client SSL/TLS certificate
     versions:
       '12': 'Yes'
     description: "If an authentication entry in the pg_hba.conf specifies the `clientcert=verify-full`,\
       \ then the client must present a valid SSL certificate that matches the login\
-      \ name, or the client name based on a map.\r\n\r\n[https://www.postgresql.org/docs/12/ssl-tcp.html#SSL-CLIENT-CERTIFICATES](https://www.postgresql.org/docs/12/ssl-tcp.html#SSL-CLIENT-CERTIFICATES)"
+      \ name, or the client name based on a map.\r\n\r\n[https://www.postgresql.org/docs/current/ssl-tcp.html#SSL-CLIENT-CERTIFICATES](https://www.postgresql.org/docs/current/ssl-tcp.html#SSL-CLIENT-CERTIFICATES)"
   - name: Native LDAP authentication
     versions:
       '8.2': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/auth-methods.html#AUTH-LDAP
+    url: https://www.postgresql.org/docs/current/auth-methods.html#AUTH-LDAP
   - name: Native RADIUS authentication
     versions:
       '9.0': 'Yes'
@@ -1269,7 +1269,7 @@ featurematrix:
   - name: OAuth Authentication / Authorization
     versions:
       '18': 'Yes'
-    url: https://www.postgresql.org/docs/18/auth-oauth.html
+    url: https://www.postgresql.org/docs/current/auth-oauth.html
   - name: Per user/database connection limits
     versions:
       '8.1': 'Yes'
@@ -1282,7 +1282,7 @@ featurematrix:
   - name: Privileges for setting configuration parameters
     versions:
       '15': 'Yes'
-    description: Unprivileged users can be [granted permission](https://www.postgresql.org/docs/15/sql-grant.html)
+    description: Unprivileged users can be [granted permission](https://www.postgresql.org/docs/current/sql-grant.html)
       to change server variables via [`SET`](https://www.postgresql.org/docs/current/sql-set.html)
       and [`ALTER SYSTEM`](https://www.postgresql.org/docs/current/sql-altersystem.html)
   - name: ROLES
@@ -1293,7 +1293,7 @@ featurematrix:
   - name: Row-Level Security
     versions:
       '9.5': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/sql-createpolicy.html
+    url: https://www.postgresql.org/docs/current/sql-createpolicy.html
   - name: SCRAM-SHA-256 Authentication
     versions:
       '10': 'Yes'
@@ -1320,7 +1320,7 @@ featurematrix:
   - name: SHA-2 encryption for password hashing
     versions:
       '18': 'Yes'
-    url: https://www.postgresql.org/docs/18/pgcrypto.html#PGCRYPTO-CRYPT-ALGORITHMS
+    url: https://www.postgresql.org/docs/current/pgcrypto.html#PGCRYPTO-CRYPT-ALGORITHMS
   - name: SSL certificate validation in libpq
     versions:
       '8.4': 'Yes'
@@ -1342,16 +1342,16 @@ featurematrix:
   - name: TLS v1.3 cipher suite allowlisting
     versions:
       '18': 'Yes'
-    url: https://www.postgresql.org/docs/18/runtime-config-connection.html#GUC-SSL-TLS13-CIPHERS
+    url: https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-SSL-TLS13-CIPHERS
   Transactions and Visibility:
   - name: Cursors
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/sql-declare.html
+    url: https://www.postgresql.org/docs/current/sql-declare.html
   - name: Savepoints
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/sql-savepoint.html
+    url: https://www.postgresql.org/docs/current/sql-savepoint.html
   - name: Serializable Snapshot Isolation
     versions:
       '9.1': 'Yes'
@@ -1361,11 +1361,11 @@ featurematrix:
   - name: Two Phase commit
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/sql-prepare-transaction.html
+    url: https://www.postgresql.org/docs/current/sql-prepare-transaction.html
   - name: Updatable cursors
     versions:
       '8.3': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/sql-declare.html
+    url: https://www.postgresql.org/docs/current/sql-declare.html
   VACUUM and Maintenance:
   - name: Inserted data can trigger autovacuum
     versions:
@@ -1376,7 +1376,7 @@ featurematrix:
   - name: Integrated autovacuum daemon
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/routine-vacuuming.html#AUTOVACUUM
+    url: https://www.postgresql.org/docs/current/routine-vacuuming.html#AUTOVACUUM
   - name: Page freezing optimizations
     versions:
       '16': 'Yes'
@@ -1405,8 +1405,8 @@ featurematrix:
       '14': 'Yes'
     description: PostgreSQL will vacuum aggressively when it detects the possibility
       of transaction ID wraparound. This is controlled with the [`vacuum_failsafe_age
-      `](https://www.postgresql.org/docs/14/runtime-config-client.html#GUC-VACUUM-FAILSAFE-AGE)
-      and [`vacuum_multixact_failsafe_age `](https://www.postgresql.org/docs/14/runtime-config-client.html#GUC-MULTIXACT-FAILSAFE-AGE)
+      `](https://www.postgresql.org/docs/current/runtime-config-vacuum.html#GUC-VACUUM-FAILSAFE-AGE)
+      and [`vacuum_multixact_failsafe_age `](https://www.postgresql.org/docs/current/runtime-config-vacuum.html#GUC-VACUUM-MULTIXACT-FAILSAFE-AGE)
       configuration parameters.
   - name: Visibility Map for Vacuuming
     versions:
@@ -1417,9 +1417,9 @@ featurematrix:
   - name: Certificate authentication with postgres_fdw
     versions:
       '13': 'Yes'
-    description: "The [postgres_fdw](https://www.postgresql.org/docs/13/postgres-fdw.html)\
+    description: "The [postgres_fdw](https://www.postgresql.org/docs/current/postgres-fdw.html)\
       \ can now use the built-in [certificate authentication](https://www.postgresql.org/docs/current/auth-cert.html)\
-      \ mechanism.\r\n\r\nFor more information, please visit the [postgres_fdw documentation](https://www.postgresql.org/docs/13/postgres-fdw.html#id-1.11.7.42.10)"
+      \ mechanism.\r\n\r\nFor more information, please visit the [postgres_fdw documentation](https://www.postgresql.org/docs/current/postgres-fdw.html#POSTGRES-FDW-OPTIONS)"
   - name: CREATE FOREIGN TABLE ... LIKE
     versions:
       '18': 'Yes'
@@ -1430,7 +1430,7 @@ featurematrix:
     versions:
       '14': 'Yes'
     description: Queries that reference multiple foreign tables can perform table
-      scans in parallel. This is implemented in the [`postgres_fdw`](https://www.postgresql.org/docs/14/postgres-fdw.html)
+      scans in parallel. This is implemented in the [`postgres_fdw`](https://www.postgresql.org/docs/current/postgres-fdw.html)
   - name: Foreign data wrappers
     versions:
       '9.1': 'Yes'
@@ -1443,11 +1443,11 @@ featurematrix:
   - name: IMPORT FOREIGN SCHEMA
     versions:
       '9.5': 'Yes'
-    url: https://www.postgresql.org/docs/9.5/static/sql-importforeignschema.html
+    url: https://www.postgresql.org/docs/current/sql-importforeignschema.html
   - name: Import foreign table partitions
     versions:
       '14': 'Yes'
-    description: '[`IMPORT FOREIGN SCHEMA`](https://www.postgresql.org/docs/14/sql-importforeignschema.html)
+    description: '[`IMPORT FOREIGN SCHEMA`](https://www.postgresql.org/docs/current/sql-importforeignschema.html)
       can import the schema of partitioned tables.'
   - name: Parallel query execution on remote databases
     versions:
@@ -1458,7 +1458,7 @@ featurematrix:
   - name: postgres_fdw parallel commit
     versions:
       '15': 'Yes'
-    url: https://www.postgresql.org/docs/15/postgres-fdw.html#id-1.11.7.47.11.7
+    url: https://www.postgresql.org/docs/current/postgres-fdw.html#POSTGRES-FDW-OPTIONS-TRANSACTION-MANAGEMENT
   - name: postgres_fdw pushdown
     versions:
       '9.6': 'Yes'
@@ -1468,11 +1468,11 @@ featurematrix:
   - name: postgres_fdw SCRAM authentication passthrough
     versions:
       '18': 'Yes'
-    url: https://www.postgresql.org/docs/18/postgres-fdw.html#POSTGRES-FDW-OPTION-USE-SCRAM-PASSTHROUGH
+    url: https://www.postgresql.org/docs/current/postgres-fdw.html#POSTGRES-FDW-OPTION-USE-SCRAM-PASSTHROUGH
   - name: PostgreSQL Foreign Data Wrapper
     versions:
       '9.3': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/postgres-fdw.html
+    url: https://www.postgresql.org/docs/current/postgres-fdw.html
   - name: Writable Foreign Data Wrappers
     versions:
       '9.3': 'Yes'
@@ -1487,7 +1487,7 @@ featurematrix:
   - name: ALTER TABLE / ENABLE REPLICA TRIGGER/RULE
     versions:
       '8.3': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/sql-altertable.html
+    url: https://www.postgresql.org/docs/current/sql-altertable.html
   - name: BEGIN ATOMIC function bodies
     versions:
       '14': 'Yes'
@@ -1499,7 +1499,7 @@ featurematrix:
   - name: CALL syntax for executing procedures
     versions:
       '11': 'Yes'
-    url: https://www.postgresql.org/docs/11/static/sql-call.html
+    url: https://www.postgresql.org/docs/current/sql-call.html
   - name: Column level triggers
     versions:
       '9.0': 'Yes'
@@ -1508,7 +1508,7 @@ featurematrix:
   - name: CREATE PROCEDURE syntax for SQL stored procedures
     versions:
       '11': 'Yes'
-    url: https://www.postgresql.org/docs/11/static/sql-createprocedure.html
+    url: https://www.postgresql.org/docs/current/sql-createprocedure.html
   - name: Event triggers
     versions:
       '9.3': 'Yes'
@@ -1575,7 +1575,7 @@ featurematrix:
   - name: CREATE TRANSFORM
     versions:
       '9.5': 'Yes'
-    url: https://www.postgresql.org/docs/9.5/static/sql-createtransform.html
+    url: https://www.postgresql.org/docs/current/sql-createtransform.html
   - name: DO statement for PL/Perl
     versions:
       '9.0': 'Yes'
@@ -1669,7 +1669,7 @@ featurematrix:
   - name: Extension Installation
     versions:
       '9.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/external-extensions.html
+    url: https://www.postgresql.org/docs/current/external-extensions.html
   - name: Trusted Extensions
     versions:
       '13': 'Yes'
@@ -1684,11 +1684,11 @@ featurematrix:
       '17': 'Yes'
     description: PostgreSQL has a built-in, platform independent immutable collation
       provider that supports C and C.UTF-8 collations. For more information, see [standard
-      collations](https://www.postgresql.org/docs/17/collation.html#COLLATION-MANAGING-STANDARD).
+      collations](https://www.postgresql.org/docs/current/collation.html#COLLATION-MANAGING-STANDARD).
   - name: casefold
     versions:
       '18': 'Yes'
-    url: https://www.postgresql.org/docs/18/functions-string.html#id-1.5.8.10.7.2.2.8.1.1.1
+    url: https://www.postgresql.org/docs/current/functions-string.html#id-1.5.8.10.7.2.2.8.1.1.1
   - name: Column-level collation support
     versions:
       '9.1': 'Yes'
@@ -1712,11 +1712,11 @@ featurematrix:
   - name: ICU collations
     versions:
       '10': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/collation.html#id-1.6.10.4.5.7.5
+    url: https://www.postgresql.org/docs/current/collation.html#id-1.6.10.4.5.7.5
   - name: LIKE comparisons for nondeterministic collations
     versions:
       '18': 'Yes'
-    url: https://www.postgresql.org/docs/18/collation.html#COLLATION-NONDETERMINISTIC
+    url: https://www.postgresql.org/docs/current/collation.html#COLLATION-NONDETERMINISTIC
   - name: Multibyte encoding support, incl. UTF8
     versions:
       '8.1': 'Yes'
@@ -1728,11 +1728,11 @@ featurematrix:
   - name: Nondeterministic collations
     versions:
       '12': 'Yes'
-    url: https://www.postgresql.org/docs/12/collation.html#COLLATION-NONDETERMINISTIC
+    url: https://www.postgresql.org/docs/current/collation.html#COLLATION-NONDETERMINISTIC
   - name: pg_unicode_fast collation
     versions:
       '18': 'Yes'
-    url: https://www.postgresql.org/docs/18/collation.html#COLLATION-MANAGING-STANDARD
+    url: https://www.postgresql.org/docs/current/collation.html#COLLATION-MANAGING-STANDARD
   - name: Unicode string literals and identifiers
     versions:
       '8.4': 'Yes'
@@ -1750,19 +1750,19 @@ featurematrix:
   - name: pg_combinebackup
     versions:
       '17': 'Yes'
-    url: https://www.postgresql.org/docs/17/app-pgcombinebackup.html
+    url: https://www.postgresql.org/docs/current/app-pgcombinebackup.html
   - name: pg_createsubscriber
     versions:
       '17': 'Yes'
-    url: https://www.postgresql.org/docs/17/app-pgcreatesubscriber.html
+    url: https://www.postgresql.org/docs/current/app-pgcreatesubscriber.html
   - name: pg_prewarm
     versions:
       '9.4': 'Yes'
-    url: https://www.postgresql.org/docs/9.4/static/pgprewarm.html
+    url: https://www.postgresql.org/docs/current/pgprewarm.html
   - name: pg_rewind
     versions:
       '9.5': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/app-pgrewind.html
+    url: https://www.postgresql.org/docs/current/app-pgrewind.html
   - name: pg_standby
     versions:
       '8.3': 'Yes'
@@ -1779,7 +1779,7 @@ featurematrix:
   - name: pg_walsummary
     versions:
       '17': 'Yes'
-    url: https://www.postgresql.org/docs/17/app-pgwalsummary.html
+    url: https://www.postgresql.org/docs/current/app-pgwalsummary.html
   - name: pg_xlogdump
     versions:
       '9.3': 'Yes'
@@ -1789,30 +1789,30 @@ featurematrix:
   - name: psql \bind
     versions:
       '16': 'Yes'
-    url: https://www.postgresql.org/docs/16/app-psql.html#APP-PSQL-META-COMMAND-BIND
+    url: https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMAND-BIND
   - name: psql \dconfig
     versions:
       '15': 'Yes'
-    description: The [`psql`](https://www.postgresql.org/docs/15/app-psql.html) client
+    description: The [`psql`](https://www.postgresql.org/docs/current/app-psql.html) client
       includes a `\dconfig` command for inspecting and finding the values of configuration
       parameters.
   - name: psql pipeline queries
     versions:
       '18': 'Yes'
     description: "psql can issue pipeline queries using the commands\
-      \ [`\\startpipeline`](https://www.postgresql.org/docs/18/app-psql.html#APP-PSQL-META-COMMAND-PIPELINE),\
-      \ [`\\syncpipeline`](https://www.postgresql.org/docs/18/app-psql.html#APP-PSQL-META-COMMAND-PIPELINE),\
-      \ [`\\sendpipeline`](https://www.postgresql.org/docs/18/app-psql.html#APP-PSQL-META-COMMAND-PIPELINE),\
-      \ [`\\endpipeline`](https://www.postgresql.org/docs/18/app-psql.html#APP-PSQL-META-COMMAND-PIPELINE),\
-      \ [`\\flushrequest`](https://www.postgresql.org/docs/18/app-psql.html#APP-PSQL-META-COMMAND-PIPELINE),\
-      \ [`\\flush`](https://www.postgresql.org/docs/18/app-psql.html#APP-PSQL-META-COMMAND-PIPELINE), and\
-      \ [`\\getresults`](https://www.postgresql.org/docs/18/app-psql.html#APP-PSQL-META-COMMAND-PIPELINE)."
+      \ [`\\startpipeline`](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMAND-PIPELINE),\
+      \ [`\\syncpipeline`](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMAND-PIPELINE),\
+      \ [`\\sendpipeline`](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMAND-PIPELINE),\
+      \ [`\\endpipeline`](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMAND-PIPELINE),\
+      \ [`\\flushrequest`](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMAND-PIPELINE),\
+      \ [`\\flush`](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMAND-PIPELINE), and\
+      \ [`\\getresults`](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMAND-PIPELINE)."
   - name: psql named prepared statements
     versions:
       '18': 'Yes'
-    description: "psql can parse ([`\\parse`](https://www.postgresql.org/docs/18/app-psql.html#APP-PSQL-META-COMMAND-PARSE)),\
-      \ bind ([`\\bind_named`](https://www.postgresql.org/docs/18/app-psql.html#APP-PSQL-META-COMMAND-BIND-NAMED)),\
-      \ and close ([`\\close_prepared`](https://www.postgresql.org/docs/18/app-psql.html#APP-PSQL-META-COMMAND-CLOSE-PREPARED))\
+    description: "psql can parse ([`\\parse`](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMAND-PARSE)),\
+      \ bind ([`\\bind_named`](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMAND-BIND-NAMED)),\
+      \ and close ([`\\close_prepared`](https://www.postgresql.org/docs/current/app-psql.html#APP-PSQL-META-COMMAND-CLOSE-PREPARED))\
       \ named prepared statements."
   - name: Version aware psql
     versions:
@@ -1824,7 +1824,7 @@ featurematrix:
     versions:
       '8.2': 'Yes'
       '17': 'No'
-    url: https://www.postgresql.org/docs/current/static/adminpack.html
+    url: https://www.postgresql.org/docs/16/adminpack.html
   - name: auth_delay
     versions:
       '9.1': 'Yes'
@@ -1836,11 +1836,11 @@ featurematrix:
   - name: btree_gin
     versions:
       '8.4': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/btree-gin.html
+    url: https://www.postgresql.org/docs/current/btree-gin.html
   - name: btree_gist
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/8.3/static/btree-gist.html
+    url: https://www.postgresql.org/docs/current/btree-gist.html
   - name: citext
     versions:
       '8.4': 'Yes'
@@ -1848,7 +1848,7 @@ featurematrix:
   - name: dblink
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/dblink.html
+    url: https://www.postgresql.org/docs/current/dblink.html
   - name: dblink asynchronous notification support
     versions:
       '9.0': 'Yes'
@@ -1868,7 +1868,7 @@ featurematrix:
   - name: intarray
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/intarray.html
+    url: https://www.postgresql.org/docs/current/intarray.html
   - name: isn (ISBN)
     versions:
       '8.2': 'Yes'
@@ -1881,7 +1881,7 @@ featurematrix:
   - name: ltree
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/ltree.html
+    url: https://www.postgresql.org/docs/current/ltree.html
   - name: pageinspect
     versions:
       '8.3': 'Yes'
@@ -1889,11 +1889,11 @@ featurematrix:
   - name: passwordcheck
     versions:
       '9.0': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/passwordcheck.html
+    url: https://www.postgresql.org/docs/current/passwordcheck.html
   - name: pg_buffercache
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/pgbuffercache.html
+    url: https://www.postgresql.org/docs/current/pgbuffercache.html
   - name: pg_freespacemap
     versions:
       '8.2': 'Yes'
@@ -1901,15 +1901,15 @@ featurematrix:
   - name: pg_logicalinspect
     versions:
       '18': 'Yes'
-    url: https://www.postgresql.org/docs/18/pglogicalinspect.html
+    url: https://www.postgresql.org/docs/current/pglogicalinspect.html
   - name: pg_overexplain
     versions:
       '18': 'Yes'
-    url: https://www.postgresql.org/docs/18/pgoverexplain.html
+    url: https://www.postgresql.org/docs/current/pgoverexplain.html
   - name: pg_stat_statements
     versions:
       '8.4': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/pgstatstatements.html
+    url: https://www.postgresql.org/docs/current/pgstatstatements.html
   - name: pg_stat_statements improvements
     versions:
       '9.2': 'Yes'
@@ -1918,11 +1918,11 @@ featurematrix:
   - name: pgstattuple
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/pgstattuple.html
+    url: https://www.postgresql.org/docs/current/pgstattuple.html
   - name: pg_trgm
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/pgtrgm.html
+    url: https://www.postgresql.org/docs/current/pgtrgm.html
   - name: pg_trgm regular expressions indexing
     versions:
       '9.3': 'Yes'
@@ -1930,13 +1930,13 @@ featurematrix:
   - name: pg_walinspect
     versions:
       '15': 'Yes'
-    description: '[`pg_walinspect`](https://www.postgresql.org/docs/15/pgwalinspect.html)
+    description: '[`pg_walinspect`](https://www.postgresql.org/docs/current/pgwalinspect.html)
       allows for the contents of write-ahead logs (WAL) files to be inspected from
       SQL.'
   - name: seg
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/seg.html
+    url: https://www.postgresql.org/docs/current/seg.html
   - name: sepgsql
     versions:
       '9.1': 'Yes'
@@ -1948,11 +1948,11 @@ featurematrix:
   - name: tablefunc
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/tablefunc.html
+    url: https://www.postgresql.org/docs/current/tablefunc.html
   - name: tcn
     versions:
       '9.2': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/tcn.html
+    url: https://www.postgresql.org/docs/current/tcn.html
   - name: tsearch2 compatibility wrapper
     versions:
       '8.3': 'Yes'
@@ -1962,7 +1962,7 @@ featurematrix:
   - name: unaccent
     versions:
       '9.0': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/unaccent.html
+    url: https://www.postgresql.org/docs/current/unaccent.html
   - name: uuid-ossp
     versions:
       '8.3': 'Yes'
@@ -1976,7 +1976,7 @@ featurematrix:
   - name: Full SSL support
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/ssl-tcp.html
+    url: https://www.postgresql.org/docs/current/ssl-tcp.html
   - name: IPv6 Support
     versions:
       '8.1': 'Yes'
@@ -1989,7 +1989,7 @@ featurematrix:
   - name: V3 client protocol
     versions:
       '8.1': 'Yes'
-    url: https://www.postgresql.org/docs/current/static/protocol.html
+    url: https://www.postgresql.org/docs/current/protocol.html
   Platforms:
   - name: Microsoft Visual C++ Support
     versions:
-- 
2.39.3 (Apple Git-146)

