Skip to content
Open
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
35 changes: 35 additions & 0 deletions src/current/_data/releases.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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).
132 changes: 132 additions & 0 deletions src/current/_includes/releases/v26.2/v26.2.1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
## v26.2.1

Release Date: May 22, 2026

{% include releases/new-release-downloads-docker-image.md release=include.release %}

<h3 id="v26-2-1-sql-language-changes">SQL language changes</h3>

- 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 <roachdev-claude-bot@cockroachlabs.com> [#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 <roachdev-claude-bot@cockroachlabs.com> [#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 <roachdev-claude-bot@cockroachlabs.com> [#169247][#169247]

<h3 id="v26-2-1-operational-changes">Operational changes</h3>

- 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 <roachdev-claude-bot@cockroachlabs.com> [#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 <roachdev-claude-bot@cockroachlabs.com> [#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]

<h3 id="v26-2-1-bug-fixes">Bug fixes</h3>

- 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 <roachdev-claude-bot@cockroachlabs.com> [#168496][#168496]
- Fixed a bug under the declarative schema
changer where `ALTER TABLE ... DROP CONSTRAINT <pk>, 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 <name> to <id> but found no descriptor with id <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 <roachdev-claude-bot@cockroachlabs.com> [#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 <roachdev-claude-bot@cockroachlabs.com> [#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 <roachdev-claude-bot@cockroachlabs.com> [#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) <noreply@anthropic.com> [#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 <roachdev-claude-bot@cockroachlabs.com> [#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
Loading