diff --git a/src/current/_data/releases.yml b/src/current/_data/releases.yml
index 01bff6a2153..541c631cdde 100644
--- a/src/current/_data/releases.yml
+++ b/src/current/_data/releases.yml
@@ -11537,3 +11537,38 @@
docker_arm_limited_access: false
source: true
previous_release: v24.1.28
+
+
+- release_name: v26.2.1
+ major_version: v26.2
+ release_date: '2026-05-22'
+ release_type: Production
+ go_version: go1.26.2
+ sha: 218386f198731b3a7d73a81ce8fdc6c70956b5df
+ has_sql_only: true
+ has_sha256sum: true
+ mac:
+ mac_arm: true
+ mac_arm_experimental: true
+ mac_arm_limited_access: false
+ windows: true
+ linux:
+ linux_arm: true
+ linux_arm_experimental: false
+ linux_arm_limited_access: false
+ linux_intel_fips: true
+ linux_arm_fips: false
+ docker:
+ docker_image: cockroachdb/cockroach
+ docker_arm: true
+ docker_arm_experimental: false
+ docker_arm_limited_access: false
+ source: true
+ previous_release: v26.2.0
+ cloud_only: true
+ cloud_only_message_short: 'Available only for select CockroachDB Cloud clusters'
+ cloud_only_message: >
+ This version is currently available only for select
+ CockroachDB Cloud clusters. To request to upgrade
+ a CockroachDB self-hosted cluster to this version,
+ [contact support](https://support.cockroachlabs.com/hc/requests/new).
diff --git a/src/current/_includes/releases/v26.2/v26.2.1.md b/src/current/_includes/releases/v26.2/v26.2.1.md
new file mode 100644
index 00000000000..fd66cd2c1ff
--- /dev/null
+++ b/src/current/_includes/releases/v26.2/v26.2.1.md
@@ -0,0 +1,132 @@
+## v26.2.1
+
+Release Date: May 22, 2026
+
+{% include releases/new-release-downloads-docker-image.md release=include.release %}
+
+
SQL language changes
+
+- The canary_stats_mode session variable values
+ are renamed from "off"/"on" to "force_stable"/"force_canary". These modes
+ now work independently of the sql.stats.canary_fraction cluster setting,
+ allowing per-session opt-in without cluster-wide enrollment.
+
+ Co-Authored-By: roachdev-claude [#168295][#168295]
+- Add a new session variable
+ `optimizer_span_limit` which bounds the number of spans the optimizer
+ will allow in a single constrained index scan. If a single IN set has
+ more items than this limit, that IN set will not be used to build a
+ constrained index scan. If the cross product of two or more IN sets
+ would produce more spans than this limit for a composite index, then
+ only a prefix of the IN sets will be used to produce spans.
+
+ For example, for the following table and query, only the predicates on
+ columns `a` and `b` will be used to construct the constrained scan of
+ `abc_idx`, because including the predicate on column `c` would produce
+ more spans than `optimizer_span_limit`:
+
+ ```sql
+ CREATE TABLE abc (a INT, b INT, c INT, INDEX abc_idx (a, b, c));
+ SET optimizer_span_limit = 10;
+ SELECT * FROM abc WHERE a IN (1, 3, 5) AND b IN (2, 4, 6) AND c IN (7, 9, 11);
+ ```
+
+ Co-Authored-By: roachdev-claude [#168617][#168617]
+- The new cluster setting
+ `sql.stats.table_statistics_cache.capacity` controls the maximum number
+ of tables whose statistics are retained in the in-memory LRU cache
+ (default: 256).
+
+ Co-Authored-By: roachdev-claude [#169247][#169247]
+
+Operational changes
+
+- The following cluster settings are now
+ documented and publicly visible: obs.ash.enabled,
+ obs.ash.sample_interval, obs.ash.buffer_size, obs.ash.log_interval,
+ obs.ash.log_top_n, and obs.ash.response_limit.
+
+ Epic: none
+
+ Co-Authored-By: roachdev-claude [#168799][#168799]
+- Three new admission control metrics are now
+ available for monitoring disk bandwidth token usage:
+ admission.granter.disk_write_byte_tokens_used.regular.kv,
+ admission.granter.disk_write_byte_tokens_used.elastic.kv, and
+ admission.granter.disk_write_byte_tokens_used.snapshot.kv. The existing
+ admission.granter.disk_write_byte_tokens_exhausted_duration.kv metric
+ is now marked as essential and will appear on the Overload dashboard.
+
+ Co-Authored-By: roachdev-claude [#169713][#169713]
+- Four new gauges `mma.overloaded_store.{lease_grace,short_dur,medium_dur,long_dur}.blocked` report overloaded stores that the multi-metric allocator (MMA) deferred because they already had too much pending work. Per duration bucket, success + failure + blocked equals the count of overloaded stores observed. A persistently non-zero value on the `long_dur.blocked` gauge indicates an overloaded store that is repeatedly being deferred and may not be receiving relief. [#169742][#169742]
+
+Bug fixes
+
+- Fixed a bug where transient I/O errors reading from the `AbortSpan` were misidentified as replica corruption, causing the node to crash. These errors are now returned to the caller as regular errors. [#168014][#168014]
+- Fixed a bug where DB Console Databases page
+ privilege checks did not resolve role membership chains for CONNECT
+ grants. Users who inherited CONNECT through role hierarchies now
+ correctly see their authorized databases and tables.
+
+ Epic: none
+
+ Co-Authored-By: roachdev-claude [#168496][#168496]
+- Fixed a bug under the declarative schema
+ changer where `ALTER TABLE ... DROP CONSTRAINT , ADD PRIMARY KEY
+ (...)` would leave behind an unwanted unique secondary index on the
+ old primary key columns. [#168967][#168967]
+- Stopped logging a spurious "declarative schema changer does not support DISCARD" message every time a `DISCARD` statement was executed. The message had no functional impact but could produce very high log volume on busy clusters that issue `DISCARD` on every connection checkout. [#169077][#169077]
+- A physical cluster replication reader tenant no longer fails authentication and other queries with errors of the form "resolved to but found no descriptor with id " after the reader tenant ingests a system table at an ID different from the one it was bootstrapped with. Previously, a per-node namespace cache could pin the bootstrap-time ID and require a tenant restart to recover. [#169139][#169139]
+- Fixed a panic during CREATE VECTOR INDEX
+ backfill when the table contained a public column ordered before the
+ vector column that was not stored in the source primary index and was
+ not referenced by the new index. In practice this was triggered by
+ virtual computed columns. The schema change crashed the SQL node
+ processing the backfill instead of completing.
+
+ Co-Authored-By: roachdev-claude [#169250][#169250]
+- Fixed a bug where unqualified function calls
+ could fail with incorrect privilege errors when two databases on the
+ same cluster had identically-named functions in custom schemas. The
+ query cache could serve a memo from one database context to another,
+ causing USAGE privilege errors referencing schemas from the wrong
+ database.
+
+ Co-Authored-By: roachdev-claude [#169291][#169291]
+- Fixed a bug where PCR reader tenants could
+ permanently fail authentication after SetupOrAdvanceStandbyReaderCatalog
+ rewrote the system.privileges namespace entry. A stale cached nameāID
+ mapping was never refreshed, causing every SQL connection to fail with
+ "descriptor not found".
+
+ Co-Authored-By: roachdev-claude [#169389][#169389]
+- Fixed a bug where RESTORE TABLE of a
+ multi-region table backed up mid-ALTER TABLE ... SET LOCALITY would
+ fail with a descriptor rewrite error.
+
+ Co-Authored-By: Claude Opus 4.7 (1M context) [#169425][#169425]
+- Fixed a data race in the multi-metric allocator
+ between gossip-driven store load updates and concurrent lease/replica
+ rebalancing decisions.
+
+ Epic: CRDB-56265
+
+ Co-Authored-By: roachdev-claude [#169590][#169590]
+
+
+[#169291]: https://github.com/cockroachdb/cockroach/pull/169291
+[#169425]: https://github.com/cockroachdb/cockroach/pull/169425
+[#169077]: https://github.com/cockroachdb/cockroach/pull/169077
+[#168014]: https://github.com/cockroachdb/cockroach/pull/168014
+[#168967]: https://github.com/cockroachdb/cockroach/pull/168967
+[#168496]: https://github.com/cockroachdb/cockroach/pull/168496
+[#169139]: https://github.com/cockroachdb/cockroach/pull/169139
+[#169389]: https://github.com/cockroachdb/cockroach/pull/169389
+[#169590]: https://github.com/cockroachdb/cockroach/pull/169590
+[#168617]: https://github.com/cockroachdb/cockroach/pull/168617
+[#169247]: https://github.com/cockroachdb/cockroach/pull/169247
+[#169713]: https://github.com/cockroachdb/cockroach/pull/169713
+[#169742]: https://github.com/cockroachdb/cockroach/pull/169742
+[#169250]: https://github.com/cockroachdb/cockroach/pull/169250
+[#168295]: https://github.com/cockroachdb/cockroach/pull/168295
+[#168799]: https://github.com/cockroachdb/cockroach/pull/168799