CockroachDB v25.1 is an Innovation Release, which is optional for CockroachDB Advanced, CockroachDB Standard, and CockroachDB self-hosted clusters but is required for CockroachDB Basic.
Refer to Major release types before installing or upgrading for release timing and support details. To learn what’s new in this release, refer to its Feature Highlights.
On this page, you can read about changes and find downloads for all production and testing releases of CockroachDB v25.1
For key feature enhancements in v25.1 and other upgrade considerations, refer to the notes for v25.1.0.
For details about release types, naming, and licensing, refer to the Releases page.
Be sure to also review the Release Support Policy.
After downloading a supported CockroachDB binary, learn how to install CockroachDB or upgrade your cluster.
Get future release notes emailed to you:
v25.1.2
Release Date: March 12, 2025
Downloads
Experimental downloads are not qualified for production use and not eligible for support or uptime SLA commitments, whether they are for testing releases or production releases.
Operating System | Architecture | Full executable | SQL-only executable |
---|---|---|---|
Linux | Intel | cockroach-v25.1.2.linux-amd64.tgz (SHA256) |
cockroach-sql-v25.1.2.linux-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.2.linux-arm64.tgz (SHA256) |
cockroach-sql-v25.1.2.linux-arm64.tgz (SHA256) |
|
Mac (Experimental) |
Intel | cockroach-v25.1.2.darwin-10.9-amd64.tgz (SHA256) |
cockroach-sql-v25.1.2.darwin-10.9-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.2.darwin-11.0-arm64.tgz (SHA256) |
cockroach-sql-v25.1.2.darwin-11.0-arm64.tgz (SHA256) |
|
Windows (Experimental) |
Intel | cockroach-v25.1.2.windows-6.2-amd64.zip (SHA256) |
cockroach-sql-v25.1.2.windows-6.2-amd64.zip (SHA256) |
Docker image
Multi-platform images include support for both Intel and ARM. Multi-platform images do not take up additional space on your Docker host.
Within the multi-platform image, both Intel and ARM images are generally available for production use.
To download the Docker image:
docker pull cockroachdb/cockroach:v25.1.2
Source tag
To view or download the source code for CockroachDB v25.1.2 on Github, visit v25.1.2 source tag.
Changelog
View a detailed changelog on GitHub: v25.1.1...v25.1.2
SQL language changes
- Added the
optimizer_check_input_min_row_count
session setting to control the minimum row count estimate for buffer scans of foreign key and uniqueness checks. It defaults to0
. #141374
DB Console changes
- The Paused Follower graph has been removed from the Replication Dashboard in DB Console because followers are no longer paused by default in CockroachDB v25.1 and later. #141502
Bug fixes
- Fixed a bug that prevented starting multi-table logical data replication (LDR) streams on tables that contained user-defined types. #141643
- Fixed a bug where dropping a table with a trigger using the legacy schema changer could leave an orphaned reference in the descriptor. This issue occurred when two tables depended on each other via a trigger, and the table containing the trigger was dropped. #141181
- Fixed a bug that could cause the upgrade to v25.1 to crash if a job was missing from the virtual table, such as when a malformed job had no payload information. #142312
- A step in the v25.1 upgrade finalization process that required backfilling jobs now uses locks to ensure it makes progress even when there is contention on the jobs table, which prevents the possibility of becoming stuck under heavy load. #141460
- Fixed a bug that could cause concurrent DML statements to prevent primary key changes from succeeding. #141383
- Fixed a bug that could cause gateway nodes to panic when performing an
UPSERT
on a table with aBOOL
primary key column and a partial index where the primary key column is used as the predicate expression. #141822 - Fixed a bug that could cause
SHOW CREATE TABLE
to fail if a database was offline (e.g., due to aRESTORE
on that database). #141505 - Fixed a bug that prevented transaction retry errors encountered during implicit transactions from being automatically retried internally if the
autocommit_before_ddl
session variable was enabled and the statement was a schema change. #141393 - Fixed a bug that could cause
nil pointer dereference
errors when executing statements with user-defined functions (UDFs) or certain built-in functions, such asobj_description
. #141653 - Improved S3 credential caching for STS credentials to avoid exceeding the Amazon metadata service rate limit and encountering errors related to AssumeRole API calls when accessing large numbers of files in larger clusters. #142690
v25.1.1
Release Date: March 12, 2025
Downloads
Experimental downloads are not qualified for production use and not eligible for support or uptime SLA commitments, whether they are for testing releases or production releases.
Operating System | Architecture | Full executable | SQL-only executable |
---|---|---|---|
Linux | Intel | cockroach-v25.1.1.linux-amd64.tgz (SHA256) |
cockroach-sql-v25.1.1.linux-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.1.linux-arm64.tgz (SHA256) |
cockroach-sql-v25.1.1.linux-arm64.tgz (SHA256) |
|
Mac (Experimental) |
Intel | cockroach-v25.1.1.darwin-10.9-amd64.tgz (SHA256) |
cockroach-sql-v25.1.1.darwin-10.9-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.1.darwin-11.0-arm64.tgz (SHA256) |
cockroach-sql-v25.1.1.darwin-11.0-arm64.tgz (SHA256) |
|
Windows (Experimental) |
Intel | cockroach-v25.1.1.windows-6.2-amd64.zip (SHA256) |
cockroach-sql-v25.1.1.windows-6.2-amd64.zip (SHA256) |
Docker image
Multi-platform images include support for both Intel and ARM. Multi-platform images do not take up additional space on your Docker host.
Within the multi-platform image, both Intel and ARM images are generally available for production use.
To download the Docker image:
docker pull cockroachdb/cockroach:v25.1.1
Source tag
To view or download the source code for CockroachDB v25.1.1 on Github, visit v25.1.1 source tag.
Changelog
View a detailed changelog on GitHub: v25.1.0...v25.1.1
Bug fixes
- Improved S3 credential caching for STS credentials to avoid exceeding the Amazon metadata service rate limit and encountering errors related to AssumeRole API calls when accessing large numbers of files in larger clusters. #142677
v25.1.0
Release Date: February 18, 2025
With the release of CockroachDB v25.1, we've added new capabilities to help you migrate, build, and operate more efficiently. Refer to our summary of the most significant user-facing changes under Feature Highlights.
Downloads
Experimental downloads are not qualified for production use and not eligible for support or uptime SLA commitments, whether they are for testing releases or production releases.
Operating System | Architecture | Full executable | SQL-only executable |
---|---|---|---|
Linux | Intel | cockroach-v25.1.0.linux-amd64.tgz (SHA256) |
cockroach-sql-v25.1.0.linux-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.0.linux-arm64.tgz (SHA256) |
cockroach-sql-v25.1.0.linux-arm64.tgz (SHA256) |
|
Mac (Experimental) |
Intel | cockroach-v25.1.0.darwin-10.9-amd64.tgz (SHA256) |
cockroach-sql-v25.1.0.darwin-10.9-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.0.darwin-11.0-arm64.tgz (SHA256) |
cockroach-sql-v25.1.0.darwin-11.0-arm64.tgz (SHA256) |
|
Windows (Experimental) |
Intel | cockroach-v25.1.0.windows-6.2-amd64.zip (SHA256) |
cockroach-sql-v25.1.0.windows-6.2-amd64.zip (SHA256) |
Docker image
Multi-platform images include support for both Intel and ARM. Multi-platform images do not take up additional space on your Docker host.
Within the multi-platform image, both Intel and ARM images are generally available for production use.
To download the Docker image:
docker pull cockroachdb/cockroach:v25.1.0
Source tag
To view or download the source code for CockroachDB v25.1.0 on Github, visit v25.1.0 source tag.
Changelog
View a detailed changelog on GitHub: v25.1.0-rc.1...v25.1.0
Feature highlights
This section summarizes the most significant user-facing changes in v25.1.0 and other features recently made available to CockroachDB users across versions. For a complete list of features and changes in v25.1, including bug fixes and performance improvements, refer to the release notes for previous v25.1 testing releases. You can also search the docs for sections labeled New in v25.1.
Feature categories
Additional information
CockroachDB Cloud
Feature | Availability | ||||
---|---|---|---|---|---|
Ver. | Self-hosted | Advanced | Standard | Basic | |
Export Monthly CockroachDB Cloud Invoices as CSV CockroachDB Cloud now enables you to export your CockroachDB Cloud monthly invoice as a CSV file to share with your team or analyze billing data. |
All ★ | ![]() |
![]() |
![]() |
![]() |
Change Data Capture
Feature | Availability | ||||
---|---|---|---|---|---|
Ver. | Self-hosted | Advanced | Standard | Basic | |
Added a Human-Readable Format for Timestamps
|
25.1 | ![]() |
![]() |
![]() |
![]() |
Cloud File Storage
Feature | Availability | ||||
---|---|---|---|---|---|
Ver. | Self-hosted | Advanced | Standard | Basic | |
Now Supporting Workload Identity for Azure Blob Storage CockroachDB now supports Workload Identity for implicit authentication with Azure Blob Storage. |
25.1 | ![]() |
![]() |
![]() |
![]() |
SQL
Feature | Availability | ||||
---|---|---|---|---|---|
Ver. | Self-hosted | Advanced | Standard | Basic | |
|
25.1 | ![]() |
![]() |
![]() |
![]() |
Transactions Automatically Commit Before DDL Statements
CockroachDB now automatically commits the current transaction before executing DDL statements. With this change, data definition language (DDL) statements now trigger an automatic commit of any preceding data manipulation language (DML) statements. This change eliminates common errors from mixing DDL and DML. The cluster setting |
25.1 | ![]() |
![]() |
![]() |
![]() |
Improvements to Stored Procedures and User Defined Functions (UDFs) Expanded support for stored procedures, user-defined functions, and PL/pgSQL blocks. This release introduces several features that enhance your ability to write complex database logic. The changes include:
|
25.1 | ![]() |
![]() |
![]() |
![]() |
KV
Feature | Availability | ||||
---|---|---|---|---|---|
Ver. | Self-hosted | Advanced | Standard | Basic | |
Admission Control Available on SQL Writes Added support for replication admission control on SQL writes, allowing writes and background cluster operations to be paced to prevent overloading the cluster during node restarts or joins. |
25.1 | ![]() |
![]() |
![]() |
![]() |
Improved Leaseholder Management (Preview) This release introduces Leader Leases (now in preview) which are a new lease type designed to removes the dependency on node liveness in favor of a distrbuted store liveness fabric, making all nodes and ranges more resilient to node failures and partitions. |
25.1 | ![]() |
![]() |
![]() |
![]() |
Feature detail key | |
---|---|
★ | Features marked "All★" were recently made available in the CockroachDB Cloud platform. They are available for all supported versions of CockroachDB, under the deployment methods specified in their row under Availability. |
★★ | Features marked "All★★" were recently made available via tools maintained outside of the CockroachDB binary. They are available to use with all supported versions of CockroachDB, under the deployment methods specified in their row under Availability. |
![]() |
Feature is available for this deployment method of CockroachDB as specified in the icon’s column: CockroachDB Self-hosted, CockroachDB Advanced, CockroachDB Standard, or CockroachDB Basic. |
![]() |
Feature is not available for this deployment method of CockroachDB as specified in the icon’s column: CockroachDB Self-hosted, CockroachDB Advanced, CockroachDB Standard, or CockroachDB Basic. |
Backward-incompatible changes
Before upgrading to CockroachDB v25.1, be sure to review the following backward-incompatible changes, as well as key cluster setting changes, and adjust your deployment as necessary.
The old
BACKUP TO
,RESTORE FROM <collectionURI>
, andSHOW BACKUP IN <collectionURI>
syntaxes are now fully deprecated and no longer usable. #133610Altering a paused backup schedule's recurrence or location no longer resumes the schedule. #134829
BACKUP
/RESTORE
statements no longer return index entries and bytes backed up/restored. #134516Introduced the
legacy_varchar_typing
session setting. Ifon
, type checking and overload resolution for VARCHAR types ignore overloads that cause errors, allowing comparisons between VARCHAR and non-STRING-like placeholder values to execute successfully. Ifoff
, type checking of these comparisons is more strict and must be handled with explicit type casts. As of v25.1.0 this setting defaults tooff
. #137844Several metrics are redundant and have been removed. The following list maps each removed metric to an existing, identical metric. #138786
- Removed
sql.schema_changer.running
, which is redundant withjobs.schema_change.currently_running
. - Removed
sql.schema_changer.successes
, which is redundant withjobs.schema_change.resume_completed
. - Removed
sql.schema_changer.retry_errors
, which is redundant withjobs.schema_change.resume_retry_error
. - Removed
sql.schema_changer.permanent_errors
, which is redundant withjobs.schema_change.resume_failed
.
- Removed
The default value of the
autocommit_before_ddl
session variable is nowtrue
. This will cause any schema change statement that is sent during a transaction to make the current transaction commit before executing the schema change in a separate transaction.This change is being made because CockroachDB does not have full support for multiple schema changes in a transaction, as described here.
Users who do not desire the autocommit behavior can preserve the old behavior by changing the default value of
autocommit_before_ddl
with a command such as:ALTER ROLE ALL SET autocommit_before_ddl = false;
Features that Require Upgrade Finalization
During a major-version upgrade, certain features and performance improvements may not be available until the upgrade is finalized. In v25.1, these are:
- A cluster must have an Enterprise license or a trial license set before an upgrade to v25.1 can be finalized.
- Support for XA transactions, which allow CockroachDB to participate in distributed transactions with other resources (e.g. databases or message queues) using a two-phase commit protocol. #129448
ALTER TABLE ... ALTER COLUMN TYPE
is in General Availability (GA) and takes advantage of the logic in the declarative schema changer.- Jobs system changes:
SHOW JOBS
is now based on a new mechanism for storing information about the progress and status of running jobs. #139230ALTER JOB ... OWNER TO
can now be used to transfer ownership of a job between users/roles. #138139- Users can now always see and control (pause/resume/cancel) jobs that they own. #138178
Key Cluster Setting Changes
Changes to cluster settings should be reviewed prior to upgrading. New default cluster setting values will be used unless you have manually set a value for a setting. This can be confirmed by running the SQL statement SELECT * FROM system.settings
to view the non-default settings.
- Settings added
- Settings with changed defaults
- Settings with changed visibility
- Renamed settings
- Additional setting changes
Settings added
kv.transaction.max_intents_and_locks
: accepts an integer value for the maximum number of inserts or durable locks allowed for a single transactions. When set to the default of0
, this limiting is disabled. #135945Schema object identifiers (e.g. database names, schema names, table names, and function names) are no longer redacted when logging statements in the
EXEC
orSQL_SCHEMA
channels. If redaction of these names is required, then the new cluster settingsql.log.redact_names.enabled
can be set totrue
. The default value of the setting isfalse
. #136897Since v23.2, table statistics histograms have been collected for non-indexed JSON columns. Histograms are no longer collected for these columns. This reduces memory usage during table statistics collection, for both automatic and manual collection via
ANALYZE
andCREATE STATISTICS
. The previous behavior can be re-enabled by setting the cluster settingsql.stats.non_indexed_json_histograms.enabled
totrue
. #139898ui.database_locality_metadata.enabled
allows operators to disable the loading of extended region information in the DB Console Database and Table pages. In versions prior to v24.3, this information can cause significant CPU load on large clusters with many ranges. When disabled, if customers require this data, they can use the querySHOW RANGES FROM {DATABASE| TABLE}
to compute it on demand. #133075
Settings with changed defaults
The
kvadmission.flow_control.mode
default value has been changed fromapply_to_elastic
toapply_to_all
. Regular writes are now subject to admission control by default, meaning that non-quorum required replicas may not be informed of new writes from the leader if they are unable to keep up. This brings a large performance improvement in scenarios with a large backlog of replication work toward one or more nodes, such as node restarts. The behavior can be reverted to the v24.3 and earlier default by changing the setting value toapply_to_elastic
. #133860kvadmission.store.snapshot_ingest_bandwidth_control.enabled
is nowtrue
by default. This will enable disk-bandwidth-based admission control for range snapshot ingests. It requires the provisioned bandwidth to be set usingkvadmission.store.provisioned_bandwidth
. #137618sql.stats.automatic_partial_collection.enabled
is nowtrue
by default. This enables automatic collection of partial table stats. Partial table stats (i.e. those created withCREATE STATISTICS ... USING EXTREMES
) scan the lower and upper ends of indexes to collect statistics outside the range covered by the previous full statistics collection. #133988The default value for
trace.span_registry.enabled
has been changed fromtrue
tofalse
. #135682
Settings with changed visibility
The following settings are now marked public
after previously being reserved
. Reserved settings are not documented and their tuning by customers is not supported.
kv.bulk_io_write.min_capacity_remaining_fraction
is now public. It specifies the remaining store capacity fraction below which bulk ingestion requests are rejected. It defaults to0.05
, and can be set between0.04
and0.3
. #135779
Renamed settings
Renamed
changefeed.min_highwater_advance
tochangefeed.resolved_timestamp.min_update_interval
to more accurately reflect its function. The previous name remains usable for backward compatibility. Its value is the minimum amount of time that must have elapsed since the last update of a changefeed's resolved timestamp before it is eligible to be updated again. With the default of0s
, no minimum interval is enforced, though updates are still limited by the average time needed to checkpoint progress. #138673Renamed
changefeed.frontier_highwater_lag_checkpoint_threshold
tochangefeed.span_checkpoint.lag_threshold
. The previous name is still available for backward compatibility. #139064
Additional setting changes
Internal scans are now exempt from the
sql.defaults.disallow_full_table_scans.enabled
cluster setting. This allows index creation even when the setting is enabled. #137681When
server.redact_sensitive_settings.enabled
istrue
, the same redaction logic for Sensitive cluster settings that is used forSHOW CLUSTER SETTINGS
now applies to the DB Console Cluster Settings page. #139277Removed cluster setting
kv.rangefeed.scheduler.enabled
. The rangefeed scheduler is now unconditionally enabled. #132825Removed cluster setting
sql.auth.resolve_membership_single_scan.enabled
. This was added in case it was necessary to revert back to the previous behavior for looking up role memberships, but this cluster setting has not been needed in practice since this was added in v23.1. #135852
Deprecations
The following deprecations are announced in v25.1.
- The old
BACKUP TO
,RESTORE FROM <collectionURI>
, andSHOW BACKUP IN <collectionURI>
syntaxes are now fully deprecated and no longer usable. #133610
Known limitations
For information about new and unresolved limitations in CockroachDB v25.1, with suggested workarounds where applicable, refer to Known Limitations.
Additional resources
Resource | Topic | Description |
---|---|---|
Cockroach University | Introduction to Distributed SQL and CockroachDB | This course introduces the core concepts behind distributed SQL databases and describes how CockroachDB fits into this landscape. You will learn what differentiates CockroachDB from both legacy SQL and NoSQL databases and how CockroachDB ensures consistent transactions without sacrificing scale and resiliency. You'll learn about CockroachDB's seamless horizontal scalability, distributed transactions with strict ACID guarantees, and high availability and resilience. |
Cockroach University | Practical First Steps with CockroachDB | This course will give you the tools you need to get started with CockroachDB. During the course, you will learn how to spin up a cluster, use the Admin UI to monitor cluster activity, and use SQL shell to solve a set of hands-on exercises. |
Cockroach University | Enterprise Application Development with CockroachDB | This course is the first in a series designed to equip you with best practices for mastering application-level (client-side) transaction management in CockroachDB. We'll dive deep on common differences between CockroachDB and legacy SQL databases and help you sidestep challenges you might encounter when migrating to CockroachDB from Oracle, PostgreSQL, and MySQL. |
Cockroach University | Building a Highly Resilient Multi-region Database using CockroachDB | This course is part of a series introducing solutions to running low-latency, highly resilient applications for data-intensive workloads on CockroachDB. In this course we focus on surviving large-scale infrastructure failures like losing an entire cloud region without losing data during recovery. We'll show you how to use CockroachDB survival goals in a multi-region cluster to implement a highly resilient database that survives node or network failures across multiple regions with zero data loss. |
Docs | Migration Overview | This page summarizes the steps of migrating a database to CockroachDB, which include testing and updating your schema to work with CockroachDB, moving your data into CockroachDB, and testing and updating your application. |
Docs | Architecture Overview | This page provides a starting point for understanding the architecture and design choices that enable CockroachDB's scalability and consistency capabilities. |
Docs | SQL Feature Support | The page summarizes the standard SQL features CockroachDB supports as well as common extensions to the standard. |
Docs | Change Data Capture Overview | This page summarizes CockroachDB's data streaming capabilities. Change data capture (CDC) provides efficient, distributed, row-level changefeeds into a configurable sink for downstream processing such as reporting, caching, or full-text indexing. |
Docs | Backup Architecture | This page describes the backup job workflow with a high-level overview, diagrams, and more details on each phase of the job. |
v25.1.0-rc.1
Release Date: February 10, 2025
Downloads
CockroachDB v25.1.0-rc.1 is a testing release. Testing releases are intended for testing and experimentation only, and are not qualified for production environments and not eligible for support or uptime SLA commitments.
Experimental downloads are not qualified for production use and not eligible for support or uptime SLA commitments, whether they are for testing releases or production releases.
Operating System | Architecture | Full executable | SQL-only executable |
---|---|---|---|
Linux | Intel | cockroach-v25.1.0-rc.1.linux-amd64.tgz (SHA256) |
cockroach-sql-v25.1.0-rc.1.linux-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.0-rc.1.linux-arm64.tgz (SHA256) |
cockroach-sql-v25.1.0-rc.1.linux-arm64.tgz (SHA256) |
|
Mac (Experimental) |
Intel | cockroach-v25.1.0-rc.1.darwin-10.9-amd64.tgz (SHA256) |
cockroach-sql-v25.1.0-rc.1.darwin-10.9-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.0-rc.1.darwin-11.0-arm64.tgz (SHA256) |
cockroach-sql-v25.1.0-rc.1.darwin-11.0-arm64.tgz (SHA256) |
|
Windows (Experimental) |
Intel | cockroach-v25.1.0-rc.1.windows-6.2-amd64.zip (SHA256) |
cockroach-sql-v25.1.0-rc.1.windows-6.2-amd64.zip (SHA256) |
Docker image
Multi-platform images include support for both Intel and ARM. Multi-platform images do not take up additional space on your Docker host.
Within the multi-platform image, both Intel and ARM images are generally available for production use.
To download the Docker image:
docker pull cockroachdb/cockroach-unstable:v25.1.0-rc.1
Source tag
To view or download the source code for CockroachDB v25.1.0-rc.1 on Github, visit v25.1.0-rc.1 source tag.
Changelog
View a detailed changelog on GitHub: v25.1.0-beta.3...v25.1.0-rc.1
Backward-incompatible changes
The default value of the
autocommit_before_ddl
session variable is nowtrue
. This will cause any schema change statement that is sent during a transaction to make the current transaction commit before executing the schema change in a separate transaction.This change is being made because CockroachDB does not have full support for multiple schema changes in a transaction, as described here.
Users who do not desire the autocommit behavior can preserve the old behavior by changing the default value of
autocommit_before_ddl
with a command such as:ALTER ROLE ALL SET autocommit_before_ddl = false;
SQL language changes
- Since v23.2, table statistics histograms have been collected for non-indexed JSON columns. Histograms are no longer collected for these columns. This reduces memory usage during table statistics collection, for both automatic and manual collection via
ANALYZE
andCREATE STATISTICS
. The previous behavior can be re-enabled by setting the cluster settingsql.stats.non_indexed_json_histograms.enabled
totrue
. #139898 - Added the session setting
optimizer_prefer_bounded_cardinality
which instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. This may help the optimizer produce better query plans in some cases. This setting is disabled by default. #140245 - Added the session setting
optimizer_min_row_count
which sets a lower bound on row-count estimates for relational expressions during query planning. A value of zero, which is the default, indicates no lower bound. Note that if this is set to a value greater than zero, a row count of zero can still be estimated for expressions with a cardinality of zero, e.g., for a contradictory filter. Setting this to a value higher than 0, such as 1, may yield better query plans in some cases, such as when statistics are frequently stale and inaccurate. #140245 - Fixed a bug existing only in testing releases of v25.1 that could cause unexpected errors during planning for
VALUES
expressions containing function calls with multiple overloads. #140306 - The default setting for
plan_cache_mode
has been reverted toforce_custom_plan
, after being changed toauto
in a prior testing release. You can disregard the previous release note. #140405
Bug fixes
- Fixed a bug that could cause
SHOW TABLES
and other introspection operations to encounter abatch timestamp ... must be after replica GC threshold
error. #140078 - Fixed a bug existing only in testing releases of v25.1 that could cause the creation of a PL/pgSQL routine with a CTE to fail with an error similar to:
unexpected root expression: with
. #140145 - Fixed a rare bug in which a query might fail with error
could not find computed column expression for column ... in table
while dropping a virtual computed column from the table. This bug was introduced in v23.2.4. #139834 - Configuring replication controls on a partition name of an index that is not unique across all indexes will now correctly impact only that partition. #140293
- The Data Distribution page in Advanced Debug will no longer crash if there are
NULL
values forraw_sql_config
incrdb_internal.zones
. #140609
v25.1.0-beta.3
Release Date: February 3, 2025
Downloads
CockroachDB v25.1.0-beta.3 is a testing release. Testing releases are intended for testing and experimentation only, and are not qualified for production environments and not eligible for support or uptime SLA commitments.
Experimental downloads are not qualified for production use and not eligible for support or uptime SLA commitments, whether they are for testing releases or production releases.
Operating System | Architecture | Full executable | SQL-only executable |
---|---|---|---|
Linux | Intel | cockroach-v25.1.0-beta.3.linux-amd64.tgz (SHA256) |
cockroach-sql-v25.1.0-beta.3.linux-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.0-beta.3.linux-arm64.tgz (SHA256) |
cockroach-sql-v25.1.0-beta.3.linux-arm64.tgz (SHA256) |
|
Mac (Experimental) |
Intel | cockroach-v25.1.0-beta.3.darwin-10.9-amd64.tgz (SHA256) |
cockroach-sql-v25.1.0-beta.3.darwin-10.9-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.0-beta.3.darwin-11.0-arm64.tgz (SHA256) |
cockroach-sql-v25.1.0-beta.3.darwin-11.0-arm64.tgz (SHA256) |
|
Windows (Experimental) |
Intel | cockroach-v25.1.0-beta.3.windows-6.2-amd64.zip (SHA256) |
cockroach-sql-v25.1.0-beta.3.windows-6.2-amd64.zip (SHA256) |
Docker image
Multi-platform images include support for both Intel and ARM. Multi-platform images do not take up additional space on your Docker host.
Within the multi-platform image, both Intel and ARM images are generally available for production use.
To download the Docker image:
docker pull cockroachdb/cockroach-unstable:v25.1.0-beta.3
Source tag
To view or download the source code for CockroachDB v25.1.0-beta.3 on Github, visit v25.1.0-beta.3 source tag.
Changelog
View a detailed changelog on GitHub: v25.1.0-beta.2...v25.1.0-beta.3
Operational changes
- Reduced noise when using dynamically provisioned logging sinks. #139644
- Added new metrics for monitoring changefeed span-level checkpoint creation:
changefeed.checkpoint.create_nanos
, which measures the time it takes to create a changefeed checkpoint.changefeed.checkpoint.total_bytes
, which measures the total size of a changefeed checkpoint in bytes.changefeed.checkpoint.span_count
, which measures the number of spans in a changefeed checkpoint. #139707
Command-line changes
- Improved the performance of the debug zip query that collects
transaction_contention_events
data, which reduces the chance of"memory budget exceeded"
or"query execution canceled due to statement timeout"
errors. #139755
Bug fixes
- Fixed a bug where sometimes activating diagnostics for SQL activity appears unresponsive, with no state or status update upon activating. Now, the status should always reflect that diagnostics are active, or that a statement bundle is downloadable. #139587
- Fixed a bug where the
plan.txt
file would be incomplete whenever CockroachDB collected a statement bundle with plan-gist-based matching. The bug had been present since the introduction of plan-gist-based matching feature in v23.1, but was partially addressed in v24.2. #139268
v25.1.0-beta.2
Release Date: January 27, 2025
Downloads
CockroachDB v25.1.0-beta.2 is a testing release. Testing releases are intended for testing and experimentation only, and are not qualified for production environments and not eligible for support or uptime SLA commitments.
Experimental downloads are not qualified for production use and not eligible for support or uptime SLA commitments, whether they are for testing releases or production releases.
Operating System | Architecture | Full executable | SQL-only executable |
---|---|---|---|
Linux | Intel | cockroach-v25.1.0-beta.2.linux-amd64.tgz (SHA256) |
cockroach-sql-v25.1.0-beta.2.linux-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.0-beta.2.linux-arm64.tgz (SHA256) |
cockroach-sql-v25.1.0-beta.2.linux-arm64.tgz (SHA256) |
|
Mac (Experimental) |
Intel | cockroach-v25.1.0-beta.2.darwin-10.9-amd64.tgz (SHA256) |
cockroach-sql-v25.1.0-beta.2.darwin-10.9-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.0-beta.2.darwin-11.0-arm64.tgz (SHA256) |
cockroach-sql-v25.1.0-beta.2.darwin-11.0-arm64.tgz (SHA256) |
|
Windows (Experimental) |
Intel | cockroach-v25.1.0-beta.2.windows-6.2-amd64.zip (SHA256) |
cockroach-sql-v25.1.0-beta.2.windows-6.2-amd64.zip (SHA256) |
Docker image
Multi-platform images include support for both Intel and ARM. Multi-platform images do not take up additional space on your Docker host.
Within the multi-platform image, both Intel and ARM images are generally available for production use.
To download the Docker image:
docker pull cockroachdb/cockroach-unstable:v25.1.0-beta.2
Source tag
To view or download the source code for CockroachDB v25.1.0-beta.2 on Github, visit v25.1.0-beta.2 source tag.
Changelog
View a detailed changelog on GitHub: v25.1.0-beta.1...v25.1.0-beta.2
SQL language changes
DROP INDEX
is now labeled a potentially unsafe SQL statement, so it can only be run when thesql_safe_updates
session variable or--safe_updates
flag is set tofalse
. #139505SHOW JOBS
is now based on a new mechanism for storing information about the progress and status of running jobs. #139230SHOW TENANT WITH REPLICATION STATUS
now includes aningestion_job_id
column that displays the ID of the Physical Cluster Replication (PCR) ingestion job. #139275
Operational changes
- Customers must pass URIs as external connections when setting up Logical Data Replication (LDR). #139506
DB Console changes
- The DB Console Cluster Settings page now uses the same redaction logic as
SHOW CLUSTER SETTINGS
when the settingserver.redact_sensitive_settings.enabled
is set totrue
. #139277 - The Overload dashboard in DB Console now displays only V2 Replication Admission Control metrics and omits their previous V2 prefix. Previously, both V1 and V2 metrics were displayed. Additionally, the aggregate size of queued replication entries is now displayed. #139566
Bug fixes
- Fixed a bug where the error "batch timestamp T must be after replica GC threshold" could occur during a schema change backfill operation, and cause the schema change job to retry infinitely. Now this error is treated as permanent, and will cause the job to enter the failed state. #139251
Performance improvements
- The cluster setting
rpc.batch_stream_pool.enabled
now defaults tofalse
. This supersedes an earlier release note. This cluster setting is experimental and is not listed aspublic
. #139481
v25.1.0-beta.1
Release Date: January 20, 2025
Downloads
CockroachDB v25.1.0-beta.1 is a testing release. Testing releases are intended for testing and experimentation only, and are not qualified for production environments and not eligible for support or uptime SLA commitments.
Experimental downloads are not qualified for production use and not eligible for support or uptime SLA commitments, whether they are for testing releases or production releases.
Operating System | Architecture | Full executable | SQL-only executable |
---|---|---|---|
Linux | Intel | cockroach-v25.1.0-beta.1.linux-amd64.tgz (SHA256) |
cockroach-sql-v25.1.0-beta.1.linux-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.0-beta.1.linux-arm64.tgz (SHA256) |
cockroach-sql-v25.1.0-beta.1.linux-arm64.tgz (SHA256) |
|
Mac (Experimental) |
Intel | cockroach-v25.1.0-beta.1.darwin-10.9-amd64.tgz (SHA256) |
cockroach-sql-v25.1.0-beta.1.darwin-10.9-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.0-beta.1.darwin-11.0-arm64.tgz (SHA256) |
cockroach-sql-v25.1.0-beta.1.darwin-11.0-arm64.tgz (SHA256) |
|
Windows (Experimental) |
Intel | cockroach-v25.1.0-beta.1.windows-6.2-amd64.zip (SHA256) |
cockroach-sql-v25.1.0-beta.1.windows-6.2-amd64.zip (SHA256) |
Docker image
Multi-platform images include support for both Intel and ARM. Multi-platform images do not take up additional space on your Docker host.
Within the multi-platform image, both Intel and ARM images are generally available for production use.
To download the Docker image:
docker pull cockroachdb/cockroach-unstable:v25.1.0-beta.1
Source tag
To view or download the source code for CockroachDB v25.1.0-beta.1 on Github, visit v25.1.0-beta.1 source tag.
Changelog
View a detailed changelog on GitHub: v25.1.0-alpha.3...v25.1.0-beta.1
General changes
- CockroachDB binaries are no longer built with profile-guided optimization (PGO) enabled. #139092
SQL language changes
- When you run
CREATE LOGICALLY REPLICATED TABLE
, you must specify one of the following options:UNIDIRECTIONAL
: Sets up a unidirectional stream with fast initial scan.BIDIRECTIONAL ON {destination uri}
: Sets up a bidirectional stream from the original destination to the original source. #138297
- Logical data replication (LDR) and physical cluster replication (PCR) may now use the
crdb_route=gateway
query option to route the replication streams over a load balancer. #138697 - Updated the column name
description
tocommand
in theSHOW LOGICAL REPLICATION JOBS
responses. #139030
Operational changes
- The
node decommission
CLI command now waits until the target node is fully drained before marking it as decommissioned. Previously, the command would initiate the drain process but not wait for its completion, leaving the target node in a state where it could not communicate with the cluster but would still accept client requests, causing them to hang or encounter unexpected errors. #138732 - The cluster setting
changefeed.frontier_highwater_lag_checkpoint_threshold
has been renamed tochangefeed.span_checkpoint.lag_threshold
. The previous name is still available for backward compatibility. #139064
Bug fixes
- Fixed a bounded memory leak that could occur when evaluating some memory-intensive queries using the vectorized engine. This leak had been present since v20.2. #138804
- Fixed a bug where columns created with
GENERATED ... BY IDENTITY
with theSERIAL
type could incorrectly fail internal validations. #139084
v25.1.0-alpha.3
Release Date: January 15, 2025
Downloads
CockroachDB v25.1.0-alpha.3 is a testing release. Testing releases are intended for testing and experimentation only, and are not qualified for production environments and not eligible for support or uptime SLA commitments.
Experimental downloads are not qualified for production use and not eligible for support or uptime SLA commitments, whether they are for testing releases or production releases.
Operating System | Architecture | Full executable | SQL-only executable |
---|---|---|---|
Linux | Intel | cockroach-v25.1.0-alpha.3.linux-amd64.tgz (SHA256) |
cockroach-sql-v25.1.0-alpha.3.linux-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.0-alpha.3.linux-arm64.tgz (SHA256) |
cockroach-sql-v25.1.0-alpha.3.linux-arm64.tgz (SHA256) |
|
Mac (Experimental) |
Intel | cockroach-v25.1.0-alpha.3.darwin-10.9-amd64.tgz (SHA256) |
cockroach-sql-v25.1.0-alpha.3.darwin-10.9-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.0-alpha.3.darwin-11.0-arm64.tgz (SHA256) |
cockroach-sql-v25.1.0-alpha.3.darwin-11.0-arm64.tgz (SHA256) |
|
Windows (Experimental) |
Intel | cockroach-v25.1.0-alpha.3.windows-6.2-amd64.zip (SHA256) |
cockroach-sql-v25.1.0-alpha.3.windows-6.2-amd64.zip (SHA256) |
Docker image
Multi-platform images include support for both Intel and ARM. Multi-platform images do not take up additional space on your Docker host.
Within the multi-platform image, both Intel and ARM images are generally available for production use.
To download the Docker image:
docker pull cockroachdb/cockroach-unstable:v25.1.0-alpha.3
Source tag
To view or download the source code for CockroachDB v25.1.0-alpha.3 on Github, visit v25.1.0-alpha.3 source tag.
Changelog
View a detailed changelog on GitHub: v25.1.0-alpha.2...v25.1.0-alpha.3
Backward-incompatible changes
- Several metrics are redundant and have been removed. The following list maps each removed metric to an existing, identical metric. #138786
- Removed
sql.schema_changer.running
, which is redundant withjobs.schema_change.currently_running
. - Removed
sql.schema_changer.successes
, which is redundant withjobs.schema_change.resume_completed
. - Removed
sql.schema_changer.retry_errors
, which is redundant withjobs.schema_change.resume_retry_error
. - Removed
sql.schema_changer.permanent_errors
, which is redundant withjobs.schema_change.resume_failed
.
- Removed
General changes
- When changefeeds are created with a resolved option lower than the
min_checkpoint_frequency
option, a notice is now printed, since this may lead to unexpected behavior. #138181 - CockroachDB binaries are now built with profile-guided optimization (PGO) enabled. #138700
SQL language changes
- Users can now always see and control (pause/resume/cancel) jobs that they own. #138178
- CockroachDB now provides different options for
CREATE LOGICALLY REPLICATED TABLE
:UNIDIRECTIONAL
andBIDIRECTIONAL ON
. These options are used forCREATE LOGICALLY REPLICATED TABLE
, but notCREATE LOGICAL REPLICATION STREAM
. #138244 CHANGEFEED
s using named external connections now automatically update their configuration when the connection configuration changes. #138237- Added support for
DO
statements embedded within PL/pgSQL routines and otherDO
statements.DO
statements execute a block of code inline as an anonymous function. Currently, only a PL/pgSQL body is allowed. #138709 - Added support for
DO
statements in SQL, which allow a PL/pgSQL code block to be executed inline. #138709
Operational changes
- If a row-level TTL job is scheduled to run and the previous scheduled job for that table is still running, the scheduled run will now be skipped rather than waiting for the previous job to complete. #138336
- Schema object identifiers (e.g., database names, schema names, table names, and function names) are no longer redacted when logging statements in the
EXEC
orSQL_SCHEMA
channels. If redaction of these names is required, then the new cluster settingsql.log.redact_names.enabled
can be set totrue
. The default value of the setting isfalse
. #136897 - Object identifiers such as table names, schema names, function names, and type names are no longer redacted in the
SQL_SCHEMA
log channel. #136897 - Changed the default value of the cluster setting
admission.l0_file_count_overload_threshold
to4000
. #138699 - Introduced a metric,
sql.schema_changer.object_count
, that counts the number of schema objects in the cluster. #138786 - Renamed the
changefeed.min_highwater_advance
cluster setting tochangefeed.resolved_timestamp.min_update_interval
to more accurately reflect its function. Its description in the automatically generated documentation has also been updated. The previous name remains usable for backward compatibility. #138673
DB Console changes
- Added a
/debug/pprof/fgprof
endpoint to capture off-CPU stack traces. Use of this endpoint will have a noticeable impact on performance while the endpoint is being triggered. #138779
Bug fixes
- In the v2 Databases > Table page, the
CREATE
statement will now show up as expected for tables with custom schema names. #138294 - Fixed issues with the virtual index scan on
crdb_internal.create_type_statements
, ensuring consistent results when querying user-defined types (UDTs) across databases. #138295 - Queries that perform a cast from the string representation of an array containing geometry or geography types to a SQL array type will now succeed. #138557
Fixed a bug that disregarded tuple labels in some cases. This could cause unexpected behavior, such as when converting a tuple to JSON with
to_jsonb
. See #136167 for more details. This incorrect removal of tuple labels bug was introduced in v22.1.0, and changes in v24.3.0 made unexpected behavior due to the bug more likely. #138791Fixed a bug where locks were taken on the system tables
system.users
andsystem.role_options
even whenallow_role_memberships_to_change_during_transaction
was set. Now, users are able to create and drop users quickly whenallow_role_memberships_to_change_during_transaction
is set, even if there are contending transactions onsystem.users
andsystem.role_options
. #137940
v25.1.0-alpha.2
Release Date: January 9, 2025
Downloads
CockroachDB v25.1.0-alpha.2 is a testing release. Testing releases are intended for testing and experimentation only, and are not qualified for production environments and not eligible for support or uptime SLA commitments.
Experimental downloads are not qualified for production use and not eligible for support or uptime SLA commitments, whether they are for testing releases or production releases.
Operating System | Architecture | Full executable | SQL-only executable |
---|---|---|---|
Linux | Intel | cockroach-v25.1.0-alpha.2.linux-amd64.tgz (SHA256) |
cockroach-sql-v25.1.0-alpha.2.linux-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.0-alpha.2.linux-arm64.tgz (SHA256) |
cockroach-sql-v25.1.0-alpha.2.linux-arm64.tgz (SHA256) |
|
Mac (Experimental) |
Intel | cockroach-v25.1.0-alpha.2.darwin-10.9-amd64.tgz (SHA256) |
cockroach-sql-v25.1.0-alpha.2.darwin-10.9-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.0-alpha.2.darwin-11.0-arm64.tgz (SHA256) |
cockroach-sql-v25.1.0-alpha.2.darwin-11.0-arm64.tgz (SHA256) |
|
Windows (Experimental) |
Intel | cockroach-v25.1.0-alpha.2.windows-6.2-amd64.zip (SHA256) |
cockroach-sql-v25.1.0-alpha.2.windows-6.2-amd64.zip (SHA256) |
Docker image
Multi-platform images include support for both Intel and ARM. Multi-platform images do not take up additional space on your Docker host.
Within the multi-platform image, both Intel and ARM images are generally available for production use.
To download the Docker image:
docker pull cockroachdb/cockroach-unstable:v25.1.0-alpha.2
Source tag
To view or download the source code for CockroachDB v25.1.0-alpha.2 on Github, visit v25.1.0-alpha.2 source tag.
Changelog
View a detailed changelog on GitHub: v25.1.0-alpha.1...v25.1.0-alpha.2
Backward-incompatible changes
- Altering a paused backup schedule's recurrence or location no longer resumes the schedule. #134829
BACKUP
/RESTORE
statements no longer return index entries and bytes backed up/restored. #134516
General changes
- The PTS (protected timestamp) records of running changefeeds are now updated when the set of targets changes, such as when system tables are added to the protected tables list. #137548
SQL language changes
- DistSQL physical planning decisions under
distsql=auto
mode have been adjusted as follows:- Aggregation and general sort operations that process a small number of rows (fewer than
1000
by default, configurable via thedistribute_group_by_row_count_threshold
anddistribute_sort_row_count_threshold
session variables for aggregations and sorts, respectively) no longer force the plan distribution. - The top K sort over a large set of rows (
1000
by default, controlled via thedistribute_sort_row_count_threshold
session variable) will now force the plan distribution. - Full table scans estimated to read a certain number of rows (fewer than
10000
by default, controlled via the newdistribute_scan_row_count_threshold
session variable) no longer force the plan distribution. - The new
always_distribute_full_scans
session variable now defaults totrue
to match the previous behavior of always distributing full scans. - Large constrained table scans estimated to read a certain number of rows (at least
10000
by default, controlled via thedistribute_scan_row_count_threshold
session variable) will now force the plan distribution. #137072 - Hash and merge joins for which both inputs produce a small number of rows (less than
1000
combined by default, configurable via thedistribute_join_row_count_threshold
session variable) no longer force the plan distribution. #137562
- Aggregation and general sort operations that process a small number of rows (fewer than
DELETE
statements now acquire locks using theFOR UPDATE
locking mode during their initial row scan in some cases, which improves performance for contended workloads. This behavior is configurable using theenable_implicit_select_for_update
session variable. #137069- Added support for
RETURNS TABLE
syntax when creating a user-defined function (UDF). #137251 - Added support for XA transactions, which allow CockroachDB to participate in distributed transactions with other resources (e.g., databases, message queues, etc.) using a two-phase commit protocol. #129448
- Added the
legacy_varchar_typing
session setting, which reverts the changes of #133037 that causes the change in typing behavior described in #137837. Specifically, it makes type-checking and overload resolution ignore the newly added "unpreferred" overloads. This setting defaults tooff
. #137844 - Added support for a new index hint,
AVOID_FULL_SCAN
, which will prevent the optimizer from planning a full scan for the specified table if any other plan is possible. The hint can be used in the same way as other existing index hints. For example,SELECT * FROM table_name@{AVOID_FULL_SCAN};
. This hint is similar toNO_FULL_SCAN
, but will not error if a full scan cannot be avoided. Note that a full scan of a partial index would not normally be considered a "full scan" for the purposes of theAVOID_FULL_SCAN
andNO_FULL_SCAN
hints, but if the user has explicitly forced the partial index viaFORCE_INDEX=index_name
, it is considered a full scan. #137984 - Added a new session setting
avoid_full_table_scans_in_mutations
, which when set totrue
(default), causes the optimizer to avoid planning full table scans for mutation queries if any other plan is possible. #137984 ALTER JOB ... OWNER TO
can now be used to transfer ownership of a job between users/roles. #138139
Operational changes
- Added a new
sql.exec.latency.detail
histogram metric. This metric is labeled with its statement fingerprint. Enable this feature using thesql.stats.detailed_latency_metrics.enabled
application setting. For workloads with over a couple thousand fingerprints, we advise caution in enablingsql.stats.detailed_latency_metrics.enabled
. For most workloads, this ranges from dozens to hundreds. Use the newsql.query.unique.count
count metric to estimate the cardinality of the set of all statement fingerprints. #135924 - Added a new configurable cluster setting
kv.transaction.max_intents_and_locks
that prevents transactions from creating too many intents. #135945 - Added the metric
txn.count_limit_rejected
, which tracks the KV transactions that have been aborted because they exceeded the max number of writes and locking reads allowed. #135945 - Added the metric
txn.count_limit_on_response
, which tracks the number of KV transactions that have exceeded the count limit on a response. #135945 - Cluster setting
kvadmission.store.snapshot_ingest_bandwidth_control.enabled
is nowtrue
by default. This will enable disk-bandwidth-based admission control for range snapshot ingests. It requires the provisioned bandwidth to be set usingkvadmission.store.provisioned_bandwidth
. #137618 - The
changefeed.max_behind_nanos
metric now supports scoping with metric labels. #137534
Command-line changes
- Previously, the
--include-files
and--exclude-files
file filters incockroach debug zip
only applied to heap profiles, CPU profiles, goroutines, and logs. The filters now apply to most of the cluster-wide and per-node data captured in the debug zip. This improvesdebug zip
performance. Example command:cockroach debug zip debug.zip --redact --insecure --include-files="*" --exclude-files="*.log"
. #136098
DB Console changes
- Copy-pasting links to preset timescale views on the DB Console Metrics page now reflects those presets accurately (e.g., a URL looking at "last 6 hours" will always show the last 6 hours and update automatically). Clicking the Now button on the Metrics page will automatically select the live updating preset most closely matching the current inverval. If you are viewing an arbitrary 4-hour interval, the "last 6 hours" preset will be selected. #136170
Bug fixes
- Fixed a bug that caused queries against tables with user-defined types to sometimes fail with errors after restoring those tables. #137242
REGIONAL BY ROW
tables with uniqueness constraints where the region is not part of those uniqueness constraints, and which also contain non-unique indexes, will now have that uniqueness properly enforced when modified underREAD COMMITTED
isolation. This bug was introduced in v24.3.0. #137361- Fixed a bug existing since v24.1 that would cause a set-returning UDF with
OUT
parameters to return a single row. #137251 - Previously, if a
STORED
computed column was added and it was a fixed-size type such asVARCHAR(2)
, the computed values would not be checked to make sure they were not too large for the type. Now this validation is performed, which prevents an invalid computed column definition from being added to a table. #137299 - Previously, if a
VIRTUAL
computed column was added and it was a fixed-size type such asVARCHAR(2)
, the computed values would not be checked to make sure they were not too large for the type. Now this validation is performed, which prevents an invalid computed column definition from being added to a table. #137299 - Removed duplicate columns in the Parquet output from changefeeds using CDC queries. #136718
- Addressed a potential memory leak when parsing client session parameters for new connections. #137627
- Fixed an issue where adding an existing column with the
IF NOT EXISTS
option could exit too early, skipping necessary handling of the abstract syntax tree (AST). This could cause theALTER TABLE ... ADD COLUMN
statement to fail. #137633 - Fixed an issue where a schema change could incorrectly cause a changefeed to fail with an assertion error like
received boundary timestamp ... of type ... before reaching existing boundary of type ...
. #137567 - Internal scans are now exempt from the
sql.defaults.disallow_full_table_scans.enabled
cluster setting. This allows index creation even when the setting is enabled. #137681 - Fixed a bug that would cause an internal error when the result of a
RECORD
-returningUDF
was wrapped by another expression (such asCOALESCE
) within aVALUES
clause. #129706 CLOSE CURSOR
statements are now allowed in read-only transactions, similar to PostgreSQL. The bug has been present since at least v23.1. #137744- Fixed a bug where querying the
pg_catalog.pg_constraint
table while the schema changer was dropping a constraint could result in a query error. #137860 - Fixed a timing issue between
ALTER VIEW ... RENAME
andDROP VIEW
that caused repeated failures in theDROP VIEW
job. #137868 - The
pg_catalog.pg_type
table no longer containsNULL
values for the columnstypinput
,typoutput
,typreceive
, andtypsend
.NULL
values were erroneously added for these columns for thetrigger
type in v24.3.0. This could cause unexpected errors with some client libraries. #137928 ALTER BACKUP SCHEDULE
no longer fails on schedules whose collection URI contains a space. #137948- Previously in some cases, CockroachDB could encounter an internal error
comparison of two different versions of enum
when a user-defined type was modified within a transaction and the following statements read the column of that user-defined type. The bug was introduced in v24.2 and is now fixed. #137960 - Previously
SHOW CREATE TABLE
was showing incorrect data with regard to inverted indexes. It now shows the correct data that can be repeatedly entered back into CockroachDB to recreate the same table. #138043 - Resolved an issue in the Kafka sink configuration within CockroachDB, where users were previously unable to set negative GZIP compression levels. Now, users can configure the
CompressionLevel
for the Kafka sink in the range of[-2, 9]
. #137646 - Users should no longer see console errors when visiting the Databases page directly after node/SQL pod startup. #137993
Performance improvements
- The default value of cluster setting
kvadmission.flow_control.mode
has been changed fromapply_to_elastic
toapply_to_all
. Regular writes are now subject to admission control by default, meaning that non-quorum required replicas may not be told about new writes from the leader if they are unable to keep up. This brings a large performance improvement during instances where there is a large backlog of replication work towards a subset of node(s), such as node restarts. The setting can be reverted to the v24.3 and earlier default by settingkvadmission.flow_control.mode
toapply_to_elastic
. #133860
v25.1.0-alpha.1
Release Date: December 19, 2024
Downloads
CockroachDB v25.1.0-alpha.1 is a testing release. Testing releases are intended for testing and experimentation only, and are not qualified for production environments and not eligible for support or uptime SLA commitments.
Experimental downloads are not qualified for production use and not eligible for support or uptime SLA commitments, whether they are for testing releases or production releases.
Operating System | Architecture | Full executable | SQL-only executable |
---|---|---|---|
Linux | Intel | cockroach-v25.1.0-alpha.1.linux-amd64.tgz (SHA256) |
cockroach-sql-v25.1.0-alpha.1.linux-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.0-alpha.1.linux-arm64.tgz (SHA256) |
cockroach-sql-v25.1.0-alpha.1.linux-arm64.tgz (SHA256) |
|
Mac (Experimental) |
Intel | cockroach-v25.1.0-alpha.1.darwin-10.9-amd64.tgz (SHA256) |
cockroach-sql-v25.1.0-alpha.1.darwin-10.9-amd64.tgz (SHA256) |
ARM | cockroach-v25.1.0-alpha.1.darwin-11.0-arm64.tgz (SHA256) |
cockroach-sql-v25.1.0-alpha.1.darwin-11.0-arm64.tgz (SHA256) |
|
Windows (Experimental) |
Intel | cockroach-v25.1.0-alpha.1.windows-6.2-amd64.zip (SHA256) |
cockroach-sql-v25.1.0-alpha.1.windows-6.2-amd64.zip (SHA256) |
Docker image
Multi-platform images include support for both Intel and ARM. Multi-platform images do not take up additional space on your Docker host.
Within the multi-platform image, both Intel and ARM images are generally available for production use.
To download the Docker image:
docker pull cockroachdb/cockroach-unstable:v25.1.0-alpha.1
Source tag
To view or download the source code for CockroachDB v25.1.0-alpha.1 on Github, visit v25.1.0-alpha.1 source tag.
Backward-incompatible changes
- The old
BACKUP TO
,RESTORE FROM <collectionURI>
, andSHOW BACKUP IN <collectionURI>
syntaxes are now fully deprecated and no longer usable. #133610
Security updates
- Added support for partial roles from LDAP synced group to be mapped to CockroachDB roles and ensure appropriate erroring for undesired behavior. #135552
General changes
- To improve the granularity of changefeed pipeline metrics, the changefeed metrics
changefeed.admit_latency
andchangefeed.commit_latency
now have histogram buckets from5ms
to60m
(previously500ms
to5m
). The following changefeed metrics now have histogram buckets from5ms
to10m
(previously500ms
to5m
):changefeed.parallel_io_queue_nanos
changefeed.parallel_io_result_queue_nanos
changefeed.sink_batch_hist_nanos
changefeed.flush_hist_nanos
changefeed.kafka_throttling_hist_nanos
#136265
- Added support for multiple seed brokers in the new Kafka sink. #136632
- Added the new metric
distsender.rangefeed.catchup_ranges_waiting_client_side
that counts how many rangefeeds are waiting on the client-side limiter to start performing catchup scans. #136741 - Added
system.users
to the list of system tables that changefeeds protect with protected timestamps. This table is required for change data capture queries. #133568 - Added the
AWS_USE_PATH_STYLE
parameter to S3 URI parsing. #136715
SQL language changes
- Two new builtin functions,
crdb_internal.{lease_holder, range_stats}_with_errors
, include errors encountered while fetching leaseholder and range stats. These new builtins are used by thecrdb_internal.ranges
table, which includes a new column,errors
, that combines the errors from the builtins. #131232 - The cluster setting
sql.stats.automatic_partial_collection.enabled
is now enabled by default, which enables automatic collection of partial table stats. Partial table stats (i.e., those created withCREATE STATISTICS ... USING EXTREMES
) scan the lower and upper ends of indexes to collect statistics outside the range covered by the previous full statistics collection. #133988 - When triggers fire one another cyclically, the new
recursion_depth_limit
session variable now limits the depth of the recursion. By default, the limit is1000
nested trigger executions. #134498 - The names of
BEFORE
triggers fired by a mutation now show up in theEXPLAIN
output. The trigger-function invocations are visible in the output of verboseEXPLAIN
. #135556 AFTER
triggers will now show up in the output ofEXPLAIN
, as well asEXPLAIN ANALYZE
. #135556- Added support for
SHOW TRIGGERS
, which displays the names of all triggers on a table, as well as whether each trigger is enabled. The user must have any privilege on the table, or be its owner. #135778 - Added support for
SHOW CREATE TRIGGER
, which displays theCREATE
statement for a trigger. The user must have any privilege on the table, or be its owner. #135778 - Added an informational notice to the result of
CREATE TABLE ... AS
statements that describes that indexes and constraints are not copied to the new table. #135845 - Altering a column’s type no longer requires enabling the
enable_experimental_alter_column_type_general
session variable. This change makes the feature generally available. #135936 - Added support for
COLLATE
expressions on arrays of strings to match PostgreSQL more closely. #133751 - Added the column
readable_high_water_timestamp
to the output ofSHOW CHANGEFEED JOBS
. This human-readable form will be easier to consume.high_water_timestamp
still exists and is in epoch nanoseconds. #135623 - The
sql_safe_updates
session variable must be disabled to performALTER COLUMN TYPE
operations that require a column rewrite. #136110 - Added the
CREATE LOGICALLY REPLICATED
syntax that will direct logical data replication jobs to create the destination table(s) using a copy of the source table(s). #136841 - It is now possible to execute queries with correlated joins with sub-queries or common table expressions in both the
INNER
andOUTER
context. Errors with the following message:unimplemented: apply joins with subqueries in the "inner" and "outer" contexts are not supported
will no longer occur. #136506 - It is now possible to include a common table expression within the body of a user-defined function or stored procedure. #136506
- Updated the column name
targets
totables
in theSHOW LOGICAL REPLICATION JOBS
responses. #134339
Operational changes
- Retired the cluster setting
kv.rangefeed.scheduler.enabled
. The rangefeed scheduler is now unconditionally enabled. #132825 - Added the cluster setting
ui.database_locality_metadata.enabled
that allows operators to disable loading extended database and table region information in the DB Console Database and Table pages. This information can cause significant CPU load on large clusters with many ranges. Versions of this page from v24.3 and later do not have this problem. If customers require this data, they can use theSHOW RANGES FROM {DATABASE| TABLE}
query via SQL to compute on-demand. #133075 - The metrics scrape HTTP endpoint at
/ _status/vars
will now truncateHELP
text at the first sentence, reducing the metadata for metrics with large descriptions. Descriptions are still accessible in the documentation. #134724 - The row-level TTL job will now periodically update the progress meter in the jobs introspection interfaces, including
SHOW JOBS
and the Jobs page in the DB console. #135142 - The
kv.bulk_io_write.min_capacity_remaining_fraction
cluster setting can be be set between0.04
and0.3
. #135779 - Added two new metrics,
sql.distsql.select.distributed_exec.count
andsql.distsql.select.distributed_exec.count.internal
. These metrics count the number ofSELECT
statements that actually execute with full or partial distribution. These metrics differ fromsql.distsql.select.count
andsql.distsql.select.count.internal
in that the latter count the number ofSELECT
statements that are planned with full or partial distribution, but might not necessarily execute with full or partial distribution, depending on the location of data. #135236 - Added the new metric
sql.distsql.distributed_exec.count
that counts the number of invocations of the execution engine with full or partial distribution. (This is in contrast tosql.distsql.queries.total
, which counts the total number of invocations of the execution engine.) #135236 - Added some clarification that the following metrics count invocations of the execution engine and not SQL queries (which could each result in multiple invocations of the execution engine):
sql.distsql.queries.active
sql.distsql.queries.total
sql.distsql.distributed_exec.count
#135236
- The default value for the cluster setting
trace.span_registry.enabled
has been changed fromtrue
tofalse
. #135682 - Removed the
sql.auth.resolve_membership_single_scan.enabled
cluster setting. This was added in case it was necessary to revert back to the previous behavior for looking up role memberships, but this cluster setting has not been needed in practice since this was added in v23.1. #135852 - Telemetry delivery is now considered successful even in cases where CockroachDB experiences a network timeout. This will prevent throttling in cases outside an operator's control. #136219
- When a schema change job is completed, rolls back, or encounters a failure, the time taken since the job began is now logged in a structured log in the
SQL_SCHEMA
log channel. #136899
DB Console changes
- As of v25.1 the legacy Database page, which was previously available through the Advanced Debug page, is no longer available. #134005
- When activating statement diagnostics in the DB Console, users now have the option to produce a redacted bundle as output. This bundle will omit sensitive data. #134723
- Fixed a list of UI bugs on the DB Console Overview and Node Overview pages. #135293
- Removed the link for the legacy table page on the Plan Details page. #136311
- Changed the table and index contents of the Hot Ranges page in DB console. #134106
Bug fixes
- Fixed a bug that prevented the
CREATE
statement for a routine from being shown in a statement bundle. This happened when the routine was created on a schema other thanpublic
. The bug has existed since v23.1. #132147 - Reduced the duration of partitions in the gossip network when a node crashes in order to eliminate false positives in the
ranges.unavailable
metric. #133300 - Fixed a bug that caused incorrect evaluation of some binary expressions involving
CHAR(N)
values and untyped string literals with trailing whitespace characters. For example, the expression'f'::CHAR = 'f '
now correctly evaluates totrue
. #133037 - Fixed a race condition in Sarama when Kafka throttling is enabled. #133563
- Fixed a metrics bug in rangefeed restarts introduced in v23.2. #133947
- Fixed a bug that could result in incorrect metrics related to retryable rangefeed errors. #133991
- Fixed a bug that could cause
DELETE
triggers not to fire on cascadingDELETE
, and which could causeINSERT
triggers to match incorrectly in the same scenario. #134759 - Non-
admin
users that runDROP ROLE IF EXISTS
on a user that does not exist will no longer receive an error message. #134850 - Fixed a bug where CockroachDB would encounter an internal error when evaluating
FETCH ABSOLUTE 0
statements. The bug had been present since v22.1. #134919 - Fixed a bug that could cause incorrect query results when the optimizer planned a lookup join on an index containing a column of type
CHAR(N)
,VARCHAR(N)
,BIT(N)
,VARBIT(N)
, orDECIMAL(M, N)
, and the query held that column constant to a single value (e.g., with an equality filter). #134891 - Fixed a bug that prevented restoring cluster backups taken in a multi-region cluster that had configured the
system
database with a region configuration into a non-multi-region cluster. #134604 - Fixed an unhandled error that would occur if
DROP SCHEMA
was executed on thepublic
schema of thesystem
database, or on an internal schema likepg_catalog
orinformation_schema
. #135149 ALTER DATABASE
operations no longer hang when the operation modifies the zone config if an invalid zone config already exists. #135168- CockroachDB now correctly evaluates
percentile_cont
andpercentile_disc
aggregates overFLOAT4
values. #135130 - The schema changer's backfill process now includes a retry mechanism that reduces the batch size when memory issues occur. This improves the likelihood of operation success without requiring manual adjustment of the
bulko.index_backfill.batch_size
cluster setting. #135563 CREATE SCHEMA
now returns the correct error if a the schema name is missing. #135910- Fixed an issue where corrupted table statistics could cause the
cockroach
process to crash. #135944 - Table statistics collection in CockroachDB could previously run into
no bytes in account to release
errors in some edge cases (when the SQL memory budget, configured via--max-sql-memory
flag, was close to being exhausted). The bug has been present since v21.2 and is now fixed. #135970 security.certificate.*
metrics will now be updated if a node loads new certificates while running. #135596- A table that is participating in logical data replication can no longer be dropped. Previously, this was allowed, which would cause all the replicated rows to end up in the dead-letter queue. #136172
ALTER COLUMN SET NOT NULL
was not enforced consistently when the table was created in the same transaction. #136298CREATE
relation / type could leave dangling namespace entries if the schema was concurrently being dropped. #136325- The
idle_in_session_timeout
session variable now excludes the time spent waiting for schema changer jobs to complete, preventing unintended session termination during schema change operations. #136463 - Fixed a bug that causes the optimizer to use stale table statistics after altering an
ENUM
type used in the table. #136538 - CockroachDB now better respects the
statement_timeout
limit on queries involving the top K sort and merge join operations. #136631 - Fixed a bug that would cause the
make_timestamp
andmake_timestamptz
builtin functions to incorrectly extract theseconds
argument if the value was less than1
. #136804 - Fixed possible index corruption caused by triggers that could occur when the following conditions were satisfied:
- A query calls a user-defined function or stored procedure, and also performs a mutation on a table.
- The user-defined function or storage procedure contains a statement that either fires an
AFTER
trigger, or fires aCASCADE
that itself fires a trigger. - The trigger modifies the same row as the outer statement.
- Either the outer or inner mutation is something other than an
INSERT
without anON CONFLICT
clause. #136076
- Fixed an issue where license enforcement was not consistently disabled for single-node clusters started with
cockroach start-single-node
, ensuring proper behavior on cluster restarts. #136926 - Fixed a bug that caused an incorrect filesystem to be logged as part of the store information. #137024
Performance improvements
- The
/_status/nodes_ui
API no longer returns unnecessary metrics in its response. This decreases the payload size of the API and improves the load time of various DB Console pages and components. #135186 - Performance for some PL/pgSQL loops is now significantly improved, by as much as 3–4 times. This is due to applying tail-call optimization in more cases to the recursive sub-routines that implement loops. #135145
- Improved the internal caching logic for role membership information. This reduces the latency impact of commands such as
DROP ROLE
,CREATE ROLE
, andGRANT role TO user
, which cause the role membership cache to be invalidated. #135852 - The session variable
plan_cache_mode
now defaults toauto
, enabling generic query plans for some queries. #135668- This change is reverted in v25.1.0-rc.1, so this note can be disregarded when running the latest testing release and v25.1 production releases, unless otherwise noted.
- GRPC streams are now pooled across unary intra-cluster RPCs, allowing for reuse of gRPC resources to reduce the cost of remote key-value layer access. This pooling can be disabled using the
rpc.batch_stream_pool.enabled
cluster setting. #136648- This information was updated in the v25.1.0-beta.2 release notes.
Multi-tenancy
- The
nodes
endpoint should work forshared
secondary tenants. Since nodes are common to all the tenants, this API endpoint behaves similarly to the system tenant's endpoint. #131644