What's New in v25.1

On this page Carat arrow pointing down
Note:

The releases on this page are testing releases, not supported or intended for production environments. The new features and bug fixes noted on this page may not yet be documented across CockroachDB’s documentation.

  • CockroachDB self-hosted: All v25.1 testing binaries and Docker images are available for download.
  • CockroachDB Advanced: v25.1 testing releases are not yet available.
  • CockroachDB Standard and Basic: v25.1 testing releases are not available.

When v25.1 becomes Generally Available (GA), a new v25.1.0 section on this page will describe key features and additional upgrade considerations.

CockroachDB v25.1 is in active development, and the following testing releases are intended for testing and experimentation only, and are not qualified for production environments or eligible for support or uptime SLA commitments. When CockroachDB v25.1 is Generally Available (GA), production releases will also be announced on this page.

Get future release notes emailed to you:

v25.1.0-alpha.3

Release Date: January 15, 2025

Downloads

Warning:

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.

Note:

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:

icon/buttons/copy

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 with jobs.schema_change.currently_running.
    • Removed sql.schema_changer.successes, which is redundant with jobs.schema_change.resume_completed.
    • Removed sql.schema_changer.retry_errors, which is redundant with jobs.schema_change.resume_retry_error.
    • Removed sql.schema_changer.permanent_errors, which is redundant with jobs.schema_change.resume_failed.

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 and BIDIRECTIONAL ON. These options are used for CREATE LOGICALLY REPLICATED TABLE, but not CREATE LOGICAL REPLICATION STREAM. #138244
  • CHANGEFEEDs 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 other DO 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 or SQL_SCHEMA channels. If redaction of these names is required, then the new cluster setting sql.log.redact_names.enabled can be set to true. The default value of the setting is false. #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 to 4000. #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 to changefeed.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. #138791

  • Fixed a bug where locks were taken on the system tables system.users and system.role_options even when allow_role_memberships_to_change_during_transaction was set. Now, users are able to create and drop users quickly when allow_role_memberships_to_change_during_transaction is set, even if there are contending transactions on system.users and system.role_options. #137940

v25.1.0-alpha.2

Release Date: January 9, 2025

Downloads

Warning:

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.

Note:

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:

icon/buttons/copy

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 the distribute_group_by_row_count_threshold and distribute_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 the distribute_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 new distribute_scan_row_count_threshold session variable) no longer force the plan distribution.
    • The new always_distribute_full_scans session variable now defaults to true 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 the distribute_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 the distribute_join_row_count_threshold session variable) no longer force the plan distribution. #137562
  • DELETE statements now acquire locks using the FOR UPDATE locking mode during their initial row scan in some cases, which improves performance for contended workloads. This behavior is configurable using the enable_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 to off. #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 to NO_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 the AVOID_FULL_SCAN and NO_FULL_SCAN hints, but if the user has explicitly forced the partial index via FORCE_INDEX=index_name, it is considered a full scan. #137984
  • Added a new session setting avoid_full_table_scans_in_mutations, which when set to true (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 the sql.stats.detailed_latency_metrics.enabled application setting. For workloads with over a couple thousand fingerprints, we advise caution in enabling sql.stats.detailed_latency_metrics.enabled. For most workloads, this ranges from dozens to hundreds. Use the new sql.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 now true by default. This will enable disk-bandwidth-based admission control for range snapshot ingests. It requires the provisioned bandwidth to be set using kvadmission.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 in cockroach 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 improves debug 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 under READ 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 as VARCHAR(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 as VARCHAR(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 the ALTER 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-returning UDF was wrapped by another expression (such as COALESCE) within a VALUES 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 and DROP VIEW that caused repeated failures in the DROP VIEW job. #137868
  • The pg_catalog.pg_type table no longer contains NULL values for the columns typinput, typoutput, typreceive, and typsend. NULL values were erroneously added for these columns for the trigger 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 from apply_to_elastic to apply_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 setting kvadmission.flow_control.mode to apply_to_elastic. #133860

v25.1.0-alpha.1

Release Date: December 19, 2024

Downloads

Warning:

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.

Note:

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:

icon/buttons/copy

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>, and SHOW 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 and changefeed.commit_latency now have histogram buckets from 5ms to 60m (previously 500ms to 5m). The following changefeed metrics now have histogram buckets from 5ms to 10m (previously 500ms to 5m):
    • 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 the crdb_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 with CREATE 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 is 1000 nested trigger executions. #134498
  • The names of BEFORE triggers fired by a mutation now show up in the EXPLAIN output. The trigger-function invocations are visible in the output of verbose EXPLAIN. #135556
  • AFTER triggers will now show up in the output of EXPLAIN, as well as EXPLAIN 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 the CREATE 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 of SHOW 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 perform ALTER 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 and OUTER 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

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 the SHOW RANGES FROM {DATABASE| TABLE} query via SQL to compute on-demand. #133075
  • The metrics scrape HTTP endpoint at / _status/vars will now truncate HELP 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 between 0.04 and 0.3. #135779
  • Added two new metrics, sql.distsql.select.distributed_exec.count and sql.distsql.select.distributed_exec.count.internal. These metrics count the number of SELECT statements that actually execute with full or partial distribution. These metrics differ from sql.distsql.select.count and sql.distsql.select.count.internal in that the latter count the number of SELECT 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 to sql.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 from true to false. #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 than public. 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 to true. #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 cascading DELETE, and which could cause INSERT triggers to match incorrectly in the same scenario. #134759
  • Non-admin users that run DROP 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), or DECIMAL(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 the public schema of the system database, or on an internal schema like pg_catalog or information_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 and percentile_disc aggregates over FLOAT4 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. #136298
  • CREATE 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 and make_timestamptz builtin functions to incorrectly extract the seconds argument if the value was less than 1. #136804
  • Fixed possible index corruption caused by triggers that could occur when the following conditions were satisfied:
    1. A query calls a user-defined function or stored procedure, and also performs a mutation on a table.
    2. The user-defined function or storage procedure contains a statement that either fires an AFTER trigger, or fires a CASCADE that itself fires a trigger.
    3. The trigger modifies the same row as the outer statement.
    4. Either the outer or inner mutation is something other than an INSERT without an ON 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, and GRANT role TO user, which cause the role membership cache to be invalidated. #135852
  • The session variable plan_cache_mode now defaults to auto, enabling generic query plans for some queries. #135668
  • 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

Multi-tenancy

  • The nodes endpoint should work for shared secondary tenants. Since nodes are common to all the tenants, this API endpoint behaves similarly to the system tenant's endpoint. #131644

Yes No
On this page

Yes No