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
28 changes: 28 additions & 0 deletions src/current/_data/releases.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10011,3 +10011,31 @@
docker_arm_limited_access: false
source: true
previous_release: v25.4.0


- release_name: v26.1.0-alpha.2
major_version: v26.1
release_date: '2025-12-11'
release_type: Testing
go_version: go1.25.3
sha: 7991c17b6f2957e381666bf13d6405c8037f46c1
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-unstable
docker_arm: true
docker_arm_experimental: false
docker_arm_limited_access: false
source: true
previous_release: v26.1.0-alpha.1
2 changes: 1 addition & 1 deletion src/current/_data/versions.csv
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ v25.1,2025-02-18,2025-08-18,N/A,N/A,N/A,N/A,N/A,N/A,v24.3,release-25.1,2029-02-1
v25.2,2025-05-09,2026-05-12,2026-11-12,N/A,N/A,N/A,N/A,N/A,v25.1,release-25.2,2029-05-09
v25.3,2025-08-04,2026-02-04,N/A,N/A,N/A,N/A,N/A,N/A,v25.2,release-25.3,2029-08-04
v25.4,2025-11-03,2026-11-03,2027-05-03,N/A,N/A,N/A,N/A,N/A,v25.3,release-25.4,2029-11-03
v26.1,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,v25.4,release-25.4,N/A
v26.1,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,v25.4,release-26.1,N/A
118 changes: 118 additions & 0 deletions src/current/_includes/releases/v26.1/v26.1.0-alpha.2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
## v26.1.0-alpha.2

Release Date: December 11, 2025

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

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

- Added a new session variable, `use_swap_mutations`, which controls whether the new update swap and delete swap operators are enabled for use by `UPDATE` and `DELETE` statements. [#145019][#145019]
- Fixed a bug where the results of `ALTER SEQUENCE`'s increment and `SELECT nextval()` operations were not as expected. The value of a sequence after an `ALTER SEQUENCE` statement has executed on it is now consistent with a sequence created with those values. [#154489][#154489]
- SQL statements executed in stored procedures and user-defined functions now record SQL statistics, including latencies and execution metrics. These statistics appear on the **SQL Activity** and **Insights** pages of the DB Console. Limitation: SQL statements within a stored procedure or user-defined function are not collected for active statement diagnostics requests. Statement diagnostics remain available for top-level statement executions. [#156905][#156905]
- The `ALTER COLUMN ...` sequence identity
commands are run by the declarative schema changer. [#157030][#157030]
- The `cumulative time spent waiting in admission control` is now displayed in `EXPLAIN ANALYZE` output when it is non-zero. This helps identify delays caused by admission control during query execution. [#158055][#158055]
- Restarting a sequence with an updated increment has the expected initial value. [#158065][#158065]
- The `cumulative time spent waiting in admission control` reported in `EXPLAIN ANALYZE` now includes the time spent in quorum replication flow control. This update enhances the precision of wait time analysis, offering a more accurate depiction of query execution time by considering additional wait durations within the quorum replication processes. [#158076][#158076]
- Added a new "hint injection" ability that allows operators to dynamically inject inline hints into statements, without modifying the text of those statements. Hints can be injected using the built-in function `crdb_internal.inject_hint` with the target statement fingerprint to rewrite. For example, to add an index hint to the statement `SELECT * FROM my_table WHERE col = 3`, use:

~~~
SELECT crdb_internal.inject_hint(
'SELECT * FROM my_table WHERE col = _',
'SELECT * FROM my_table@my_table_col_idx WHERE col = _'
);
~~~

Whenever a statement is executed matching statement fingerprint `SELECT * FROM my_table WHERE col = _`, it will first be rewritten to include the injected index hint. [#158096][#158096]
- `ALTER TABLE ... SET SCHEMA` is supported by the declarative schema changer. [#158141][#158141]
- `kv cpu time` is now displayed in `EXPLAIN ANALYZE`, providing insights into the CPU resources used by KV operations during query execution. [#158499][#158499]
- CockroachDB now negotiates the pgwire protocol version with PostgreSQL 18+ clients that request protocol version 3.2. Previously, connections from these clients would fail with an "unknown protocol version" error. The server now sends a `NegotiateProtocolVersion` message to indicate it supports version 3.0, allowing the connection to proceed normally. [#158636][#158636]

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

- All queries to system and crdb_internal by
default will begin failing, notifying users that they must override the
access gate if they wish to use those namespaces.

The `allow_unsafe_internals` setting now defaults to `false`, restricting access to the `system` and `crdb_internal` namespaces. Queries to these namespaces will now fail unless access is manually enabled. Usage is also audited. [#158085][#158085]
- Jobs that are paused due to a specific reason, including jobs which pause themselves when encountering errors such as running out of disk space, now record that reason in their displayed status field of `SHOW JOBS`. [#158350][#158350]
- The following metrics are now marked as essential to support end-user troubleshooting of authentication latency issues:
- `auth.jwt.conn.latency`
- `auth.cert.conn.latency`
- `auth.password.conn.latency`
- `auth.ldap.conn.latency`
- `auth.gss.conn.latency`
- `auth.scram.conn.latency`
- `auth.ldap.conn.latency.internal` [#158424][#158424]

<h3 id="v26-1-0-alpha-2-db-console-changes">DB Console changes</h3>

- The log of messages and events recorded by a job is now shown to non-admin users on the DB Console Jobs page. [#152853][#152853]
- The DB Console now accurately displays **vCPU** counts on the **Overview** page instead of operating system CPU counts. This update uses cgroups to provide a correct vCPU measurement, reflecting reserved compute resources in Kubernetes and other virtualized environments. [#158219][#158219]
- Jobs which are paused for a specific reason now show that reason, and are highlighted in the UI. [#158364][#158364]
- The `kvCPUTimeNanos` is now recorded in `crdb_internal.statement_statistics` and `crdb_internal.transaction_statistics`. In the DB Console, a **KV CPU Time** column is now displayed in the **SQL Activity** > **Statements** and **Transactions** pages, allowing you to monitor and analyze the CPU time consumed by KV operations during query execution. [#158398][#158398]
- The `admissionWaitTime` is now recorded in `crdb_internal.statement_statistics` and `crdb_internal.transaction_statistics`. In the DB Console, an **Admission Wait Time** column is now displayed in the **SQL Activity** > **Statements** and **Transactions** pages. [#158500][#158500]

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

- Fixed a bug that could cause an internal error in some cases for PL/pgSQL routines that perform database reads within an exception block. [#156902][#156902]
- Fixed a bug where a SQL statement with side effects (e.g., `INSERT`) inside a PL/pgSQL routine could be dropped if it used an `INTO` clause and none of the target variables were referenced. This bug had been present since v23.2. [#156966][#156966]
- Fixed a bug where renaming a column that participated in multiple hash-sharded indexes would fail. [#158045][#158045]
- Fixed a bug where `ORDER BY` clauses in user-defined set-returning SQL functions with `OUT` parameters were ignored when the function was called directly in a `SELECT` list (e.g., `SELECT f()`). The ordering is now properly preserved and enforced. [#158162][#158162]
- The pgwire server now exits promptly on context cancellation. [#158269][#158269]
- Fixed a bounded memory leak that could occur during table statistics collection on tables that contain both very wide (10 KiB or more) and small (under 400B) `BYTES`-like values within the same row, along with virtual computed columns. This bug had been present since stats collection on virtual computed columns was introduced in v24.1. [#158370][#158370]
- Temporary schema cleanup no longer retries after poisoned transaction errors, reducing log noise. [#158396][#158396]
- When changing the time interval on the **Metrics** page, the DB Console previously sent duplicate requests for metrics data. This has been fixed, and the UI now issues a single, efficient request when updating the time interval. [#158595][#158595]

<h3 id="v26-1-0-alpha-2-performance-improvements">Performance improvements</h3>

- Added new `update swap` and `delete swap` operators that allow some `UPDATE` and `DELETE` statements to execute in 1 roundtrip instead of 2 roundtrips. These operators can be used when:

- All columns in the primary index are constrained to a single exact value
by the `WHERE` clause;
- Only a single row is modified;
- There are no foreign-key checks or cascades;
- There are no uniqueness checks;
- There are no check constraints;
- There are no vector indexes modified;
- There are no passthrough columns to `RETURNING`;
- There are no triggers;
- The table only uses a single column family;
- There are no mutation columns or mutation indexes (i.e., the table is
not undergoing an `ALTER`);
- There are no columns using composite encoding (e.g., `DECIMAL`, `FLOAT`,
`JSON`, etc.). [#145019][#145019]
- The optimizer now collapses repeated `%` wildcard characters in `LIKE` patterns. This may improve performance of queries using such patterns. [#158025][#158025]
- More of the CPU usage of LDR jobs is subject to background job admission control limits. [#158361][#158361]


[#158424]: https://github.com/cockroachdb/cockroach/pull/158424
[#156966]: https://github.com/cockroachdb/cockroach/pull/156966
[#158269]: https://github.com/cockroachdb/cockroach/pull/158269
[#145019]: https://github.com/cockroachdb/cockroach/pull/145019
[#158350]: https://github.com/cockroachdb/cockroach/pull/158350
[#157030]: https://github.com/cockroachdb/cockroach/pull/157030
[#158396]: https://github.com/cockroachdb/cockroach/pull/158396
[#158085]: https://github.com/cockroachdb/cockroach/pull/158085
[#152853]: https://github.com/cockroachdb/cockroach/pull/152853
[#158219]: https://github.com/cockroachdb/cockroach/pull/158219
[#158500]: https://github.com/cockroachdb/cockroach/pull/158500
[#156902]: https://github.com/cockroachdb/cockroach/pull/156902
[#154489]: https://github.com/cockroachdb/cockroach/pull/154489
[#158636]: https://github.com/cockroachdb/cockroach/pull/158636
[#158398]: https://github.com/cockroachdb/cockroach/pull/158398
[#158595]: https://github.com/cockroachdb/cockroach/pull/158595
[#155216]: https://github.com/cockroachdb/cockroach/pull/155216
[#158364]: https://github.com/cockroachdb/cockroach/pull/158364
[#158045]: https://github.com/cockroachdb/cockroach/pull/158045
[#158162]: https://github.com/cockroachdb/cockroach/pull/158162
[#158076]: https://github.com/cockroachdb/cockroach/pull/158076
[#158025]: https://github.com/cockroachdb/cockroach/pull/158025
[#156905]: https://github.com/cockroachdb/cockroach/pull/156905
[#158055]: https://github.com/cockroachdb/cockroach/pull/158055
[#158141]: https://github.com/cockroachdb/cockroach/pull/158141
[#158499]: https://github.com/cockroachdb/cockroach/pull/158499
[#158370]: https://github.com/cockroachdb/cockroach/pull/158370
[#158361]: https://github.com/cockroachdb/cockroach/pull/158361
[#158065]: https://github.com/cockroachdb/cockroach/pull/158065
[#158096]: https://github.com/cockroachdb/cockroach/pull/158096
Loading