# What's New in v24.2

CockroachDB v24.2 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 v24.2

- For key feature enhancements in v24.2 and other upgrade considerations, refer to the notes for v24.2.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:

Thanks!

## v24.2.10

Release Date: February 6, 2025

### Downloads

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-v24.2.10.linux-amd64.tgz (SHA256) | cockroach-sql-v24.2.10.linux-amd64.tgz (SHA256)
ARM | cockroach-v24.2.10.linux-arm64.tgz (SHA256) | cockroach-sql-v24.2.10.linux-arm64.tgz (SHA256)
Mac (Experimental) | Intel | cockroach-v24.2.10.darwin-10.9-amd64.tgz (SHA256) | cockroach-sql-v24.2.10.darwin-10.9-amd64.tgz (SHA256)
ARM | cockroach-v24.2.10.darwin-11.0-arm64.tgz (SHA256) | cockroach-sql-v24.2.10.darwin-11.0-arm64.tgz (SHA256)
Windows (Experimental) | Intel | cockroach-v24.2.10.windows-6.2-amd64.zip (SHA256) | cockroach-sql-v24.2.10.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:v24.2.10

### Source tag

To view or download the source code for CockroachDB v24.2.10 on Github, visit v24.2.10 source tag.

### Changelog

View a detailed changelog on GitHub: v24.2.9...v24.2.10

### General changes

- The protected timestamp (PTS) 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. #138653

### SQL language changes

- The `legacy_varchar_typing` session setting has been added, which reverts the changes of #133037 that cause 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 `on`. #138002
- Since v23.2 table statistics histograms had been collected for non-indexed JSON columns. Histograms are no longer collected for these columns if the `sql.stats.non_indexed_json_histograms.enabled` cluster setting is set to `false`. This reduces memory usage during table statistics collection, for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`. #140267
- 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 normally a full scan of a partial index would not be considered a "full scan" for the purposes of the `NO_FULL_SCAN` and `AVOID_FULL_SCAN` hints, but if the user has explicitly forced the partial index via `FORCE_INDEX=index_name`, CockroachDB does consider it a full scan. #140271
- Added the `optimizer_prefer_bounded_cardinality` session setting, 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. #140271
- Added the `optimizer_min_row_count` session setting, which sets a lower bound on row count estimates for relational expressions during query planning. A value of `0`, which is the default, indicates no lower bound. Note that if this is set to a value greater than `0`, 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. #140271

### Operational changes

- Schema object identifiers (e.g., database names, schema names, table names, function names, and type names) are no longer redacted when logging statements in the `EXEC` or `SQL_SCHEMA` log 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`. #138656
- Added a metric, `sql.schema_changer.object_count`, that keeps track of the count of schema objects in the cluster. #138838
- The `changefeed.max_behind_nanos` metric now supports scoping with metrics labels. #139233

### Bug fixes

- `CLOSE CURSOR` statements are now allowed in read-only transactions, similar to PostgreSQL. This bug had been present since at least v23.1. #137791
- `ALTER BACKUP SCHEDULE` no longer fails on schedules whose collection URI contains a space. #138081
- Previously, `SHOW CREATE TABLE` was showing incorrect data with regard to inverted indexes. It now shows the correct data in a format that can be repeatedly entered back into CockroachDB to recreate the same table. #138084
- Fixed a timing issue between `ALTER VIEW .. RENAME` and `DROP VIEW` that caused repeated failures in the `DROP VIEW` job. #137888
- 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. #138284
- 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. #138694
- Fixed a bug where secondary tenants could fatal when issuing HTTP requests during tenant startup. #138754
- Fixed a bug where CockroachDB could encounter an internal error `comparison of two different versions of enum` in some cases when a user-defined type was modified within a transaction and subsequent statements read the column of that user-defined type. The bug was introduced in v24.2. #138053
- When the session variable `allow_role_memberships_to_change_during_transaction` is set, it is now possible to create and drop users quickly even when there are contending transactions on the `system.users` and `system.role_options` system tables. #139031
- Fixed a bug where the error `batch timestamp ... 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. #139249

## v24.2.9

Release Date: January 31, 2025

### Downloads

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-v24.2.9.linux-amd64.tgz (SHA256) | cockroach-sql-v24.2.9.linux-amd64.tgz (SHA256)
ARM | cockroach-v24.2.9.linux-arm64.tgz (SHA256) | cockroach-sql-v24.2.9.linux-arm64.tgz (SHA256)
Mac (Experimental) | Intel | cockroach-v24.2.9.darwin-10.9-amd64.tgz (SHA256) | cockroach-sql-v24.2.9.darwin-10.9-amd64.tgz (SHA256)
ARM | cockroach-v24.2.9.darwin-11.0-arm64.tgz (SHA256) | cockroach-sql-v24.2.9.darwin-11.0-arm64.tgz (SHA256)
Windows (Experimental) | Intel | cockroach-v24.2.9.windows-6.2-amd64.zip (SHA256) | cockroach-sql-v24.2.9.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:v24.2.9

### Source tag

To view or download the source code for CockroachDB v24.2.9 on Github, visit v24.2.9 source tag.

### Changelog

View a detailed changelog on GitHub: v24.2.8...v24.2.9

### Bug fixes

- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `"batch timestamp ... must be after replica GC threshold"` error. #140176

## v24.2.8

Release Date: January 9, 2025

### Downloads

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-v24.2.8.linux-amd64.tgz (SHA256) | cockroach-sql-v24.2.8.linux-amd64.tgz (SHA256)
ARM | cockroach-v24.2.8.linux-arm64.tgz (SHA256) | cockroach-sql-v24.2.8.linux-arm64.tgz (SHA256)
Mac (Experimental) | Intel | cockroach-v24.2.8.darwin-10.9-amd64.tgz (SHA256) | cockroach-sql-v24.2.8.darwin-10.9-amd64.tgz (SHA256)
ARM | cockroach-v24.2.8.darwin-11.0-arm64.tgz (SHA256) | cockroach-sql-v24.2.8.darwin-11.0-arm64.tgz (SHA256)
Windows (Experimental) | Intel | cockroach-v24.2.8.windows-6.2-amd64.zip (SHA256) | cockroach-sql-v24.2.8.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:v24.2.8

### Source tag

To view or download the source code for CockroachDB v24.2.8 on Github, visit v24.2.8 source tag.

### Changelog

View a detailed changelog on GitHub: v24.2.7...v24.2.8

### General changes

- To improve the granularity of changefeed pipeline metrics, the changefeed metrics `changefeed.admit_latency` and `changefeed.commit_latency` have histogram buckets from `5ms` to `60m` (previously `500ms` to `5m`). The following changefeed metrics 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` #136603
- Added support for multiple seed brokers in the new Kafka sink. #136748
- Added a 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. #136835
- Added changefeed support for the `mvcc_timestamp` option with the `avro` format. If both options are specified, the Avro schema includes an `mvcc_timestamp` metadata field and emits the row's MVCC timestamp with the row data. #136016
- Added a no-op `AWS_USE_PATH_STYLE` parameter for forward compatibility with v24.3. #137025

### SQL language changes

- 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 `on`. #137920

### Operational changes

- Removed the `sql.auth.resolve_membership_single_scan.enabled` cluster setting. This was added out of precaution in case it was necessary to revert back to the old behavior for looking up role memberships, but this escape hatch has never been needed in practice since this was added in v23.1. #136161
- Telemetry delivery is now considered successful even in cases where we experience a network timeout. This will prevent throttling in cases outside an operator's control. #136479
- 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. #136928
- Added a new configurable parameter `kv.transaction.max_intents_and_locks` that will prevent transactions from creating too many intents. #137700
- 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. #137700
- Added the metric `txn.count_limit_on_response`, which tracks the number of KV transactions that have exceeded the count limit on a response. #137700

### Bug fixes

- `ALTER COLUMN SET NOT NULL` was not enforced consistently when the table was created in the same transaction. #136365
- Fixed a bug where `CREATE RELATION / TYPE` could leave dangling namespace entries if the schema was concurrently being dropped. #136379
- The `idle_in_session_timeout` setting now excludes the time spent waiting for schema changer jobs to complete, preventing unintended session termination during schema change operations. #136502
- Fixed a bug that causes the optimizer to use stale table statistics after altering an `ENUM` type used in the table. #136759
- 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. #136165
- CockroachDB now better respects the `statement_timeout` limit on queries involving the top K sort and merge join operations. #136652
- Fixed an issue where license enforcement was not consistently disabled for single-node clusters started with `cockroach start-single-node`. The fix ensures proper behavior on cluster restarts. #137011
- Fixed a bug that caused queries against tables with user-defined types to sometimes fail with errors after restoring those tables. #137354
- Fixed a bug that caused an incorrect filesystem to be logged as part of the store information. #137113
- Fixed a bug that has existed since v24.1 that would cause a set-returning UDF with `OUT` parameters to return a single row. #137377
- Fixed a bug that could cause an internal error if a table with an implicit (`rowid`) primary key was locked from within a subquery, like: `SELECT * FROM (SELECT * FROM foo WHERE x = 2) FOR UPDATE;`. The error could occur either under read-committed isolation, or with `optimizer_use_lock_op_for_serializable` enabled. #137129
- 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 lead to failure of the `ALTER` statement. #137676
- Fixed a bug related to displaying the names of composite types in the `SHOW CREATE TABLES` command. The names are now shown as two-part names, which disambiguates the output and makes it more portable to other databases. #137768
- 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 ...`. #137705
- Internal scans are now exempt from the `sql.defaults.disallow_full_table_scans.enabled` setting, allowing index creation even when the cluster setting is active. #137724

### Performance improvements

- 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. #136161

## v24.2.7

Release Date: December 26, 2024

### Downloads

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-v24.2.7.linux-amd64.tgz (SHA256) | cockroach-sql-v24.2.7.linux-amd64.tgz (SHA256)
ARM | cockroach-v24.2.7.linux-arm64.tgz (SHA256) | cockroach-sql-v24.2.7.linux-arm64.tgz (SHA256)
Mac (Experimental) | Intel | cockroach-v24.2.7.darwin-10.9-amd64.tgz (SHA256) | cockroach-sql-v24.2.7.darwin-10.9-amd64.tgz (SHA256)
ARM | cockroach-v24.2.7.darwin-11.0-arm64.tgz (SHA256) | cockroach-sql-v24.2.7.darwin-11.0-arm64.tgz (SHA256)
Windows (Experimental) | Intel | cockroach-v24.2.7.windows-6.2-amd64.zip (SHA256) | cockroach-sql-v24.2.7.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:v24.2.7

### Source tag

To view or download the source code for CockroachDB v24.2.7 on Github, visit v24.2.7 source tag.

### Changelog

View a detailed changelog on GitHub: v24.2.6...v24.2.7

### SQL language changes

- Added the `legacy_varchar_typing` session setting. When set to `on`, type-checking comparisons involving `VARCHAR` columns behave as they did in all previous versions. When set to `off`, type-checking of these comparisons is more strict and queries that previously succeeded may now error with the message `unsupported comparison operator`. These errors can be fixed by adding explicit type casts. The `legacy_varchar_typing` session setting is on by default. #137944

## v24.2.6

Release Date: December 12, 2024

### Downloads

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-v24.2.6.linux-amd64.tgz (SHA256) | cockroach-sql-v24.2.6.linux-amd64.tgz (SHA256)
ARM | cockroach-v24.2.6.linux-arm64.tgz (SHA256) | cockroach-sql-v24.2.6.linux-arm64.tgz (SHA256)
Mac (Experimental) | Intel | cockroach-v24.2.6.darwin-10.9-amd64.tgz (SHA256) | cockroach-sql-v24.2.6.darwin-10.9-amd64.tgz (SHA256)
ARM | cockroach-v24.2.6.darwin-11.0-arm64.tgz (SHA256) | cockroach-sql-v24.2.6.darwin-11.0-arm64.tgz (SHA256)
Windows (Experimental) | Intel | cockroach-v24.2.6.windows-6.2-amd64.zip (SHA256) | cockroach-sql-v24.2.6.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:v24.2.6

### Source tag

To view or download the source code for CockroachDB v24.2.6 on Github, visit v24.2.6 source tag.

### Changelog

View a detailed changelog on GitHub: v24.2.5...v24.2.6

### Security updates

- All cluster settings that accept strings are now fully redacted when transmitted as part of diagnostics telemetry. This payload includes a record of modified cluster settings and their values when they are not strings. Customers who previously applied the mitigations in Technical Advisory 133479 can safely set the value of cluster setting `server.redact_sensitive_settings.enabled` to false and turn on diagnostic reporting via the `diagnostics.reporting.enabled` cluster setting without leaking sensitive cluster settings values. #134017

### General changes

- `COCKROACH_SKIP_ENABLING_DIAGNOSTIC_REPORTING` is no longer mentioned in the `cockroach demo` command. #134088
- Added `system.users` to the list of system tables that changefeeds protect with protected timestamps. This table is required for change data capture queries. #134837

### Operational changes

- The `goschedstats.always_use_short_sample_period.enabled` setting should be set to true for any production cluster, to prevent unnecessary queuing in admission control CPU queues. #133584
- Added a new 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. #134095
- Row-level TTL jobs now periodically log progress by showing the number of table spans that have been processed so far. #135170

### Bug fixes

- Fixed a bug that caused non-reusable query plans, e.g., plans for DDL and `SHOW ...` statements, to be cached and reused in future executions, possibly causing stale results to be returned. This bug only occurred when `plan_cache_mode` was set to `auto` or `force_generic_plan`, both of which are not currently the default settings. #133074
- Previously, CockroachDB could encounter an internal error of the form `interface conversion: coldata.Column is` in an edge case and this is now fixed. The bug is present in v22.2.13+, v23.1.9+, v23.2+. #133761
- Fixed a bug that caused incorrect `NOT NULL` constraint violation errors on `UPSERT` and `INSERT .. ON CONFLICT .. DO UPDATE` statements when those statements updated an existing row and a subset of columns that did not include a `NOT NULL` column of the table. This bug has been present since at least v20.1.0. #133821
- Fixed an unhandled error that could occur when using `REVOKE ... ON SEQUENCE FROM ... user` on an object that is not a sequence. #133709
- Addressed a panic inside `CREATE TABLE AS` if sequence builtin expressions had invalid function overloads. #133869
- `STRING`constants can now be compared against collated strings. #134084
- When executing queries with index / lookup joins when the ordering needs to be maintained, previously CockroachDB could experience increased query latency, possibly by several orders of magnitude. This bug was introduced in v22.2 and is now fixed. #134366
- Fixed a minor bug where `DISCARD ALL` statements were counted under the `sql.ddl.count` metric. Now these will be counted under the `sql.misc.count` metric. #134509
- Addressed a bug with `DROP CASCADE` that would occasionally panic with an undropped `backref` message on partitioned tables. #134472
- Reduced the duration of partitions in the gossip network when a node crashes in order to eliminate false positives in the `ranges.unavailable` metric. #134600
- Non-`admin` users that run `DROP ROLE IF EXISTS` on a user that does not exist will no longer receive an error message. #134969
- Fixed a bug that caused quotes around the name of a routine to be dropped when it was called within another routine. This could prevent the correct routine from being resolved if the nested routine name was case sensitive. The bug has existed since v24.1, when nested routines were introduced. #134000
- 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). #135076
- 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`. #135180
- 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`. #135689
- Fixed a bug where `ALTER DATABASE` operations that modify the zone config would hang if an invalid zone config already exists. #135215
- `CREATE SCHEMA` now returns the correct error if a the schema name is missing. #135927
- Using more than one `DECLARE` statment in the definition of a user-defined function now correctly declares additional variables. #135738
- Fixed a bug where CockroachDB would encounter an internal error when evaluating `FETCH ABSOLUTE 0` statements. The bug has been present since v22.1. #134992
- Fixed an issue where corrupted table statistics could cause the `cockroach` process to crash. #136041
- Fixed a bug that causes the optimizer to use stale table statistics after altering an `ENUM` type used in the table. #136812

## v24.2.5

Release Date: November 18, 2024

### Downloads

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-v24.2.5.linux-amd64.tgz (SHA256) | cockroach-sql-v24.2.5.linux-amd64.tgz (SHA256)
ARM | cockroach-v24.2.5.linux-arm64.tgz (SHA256) | cockroach-sql-v24.2.5.linux-arm64.tgz (SHA256)
Mac (Experimental) | Intel | cockroach-v24.2.5.darwin-10.9-amd64.tgz (SHA256) | cockroach-sql-v24.2.5.darwin-10.9-amd64.tgz (SHA256)
ARM | cockroach-v24.2.5.darwin-11.0-arm64.tgz (SHA256) | cockroach-sql-v24.2.5.darwin-11.0-arm64.tgz (SHA256)
Windows (Experimental) | Intel | cockroach-v24.2.5.windows-6.2-amd64.zip (SHA256) | cockroach-sql-v24.2.5.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:v24.2.5

### Source tag

To view or download the source code for CockroachDB v24.2.5 on Github, visit v24.2.5 source tag.

### Changelog

View a detailed changelog on GitHub: v24.2.4...v24.2.5

### Security updates

- Host-based authentication (HBA) configuration entries for LDAP will be evaluated for proper LDAP parameter values, and a valid and complete list of authentication method options is now required to amend HBA settings. #132748
- You can now authenticate to the DB Console by passing a JWT as the bearer token. #133534

### General changes

- Change the license `cockroach` is distributed under to the new CockroachDB Software License. #131707 #131956 #131961 #131983 #132011 #132013 #132012 #132015 #132014 #132016 #132054 #131970 #132056 #132801 #132704
- The cluster setting `diagnostics.reporting.enabled` is now ignored if the cluster has an Enterprise Trial or Enterprise Free license, or if the license cannot be loaded. #132464
- The new metrics `changefeed.sink_errors` and `changefeed.internal_retry_message_count` allow you to observe the rate of errors and internal retries for a sink, respectively. #132353
- Added a timer for inner sink client flushes. #133197

### DB Console changes

- The DB Console now shows a warning if the cluster is throttled or will be throttled soon due to an expired Enterprise Free or Enterprise Trial license or due to missing telemetry data. Clusters with an Enterprise license are not throttled. #132093
- The Range Count column on the Databases page is no longer shown due to performance issues. This data is still available via the `SHOW RANGES` command. #133268

### Bug fixes

- Fixed a bug where timers were not correctly registered with the metric system. #133197
- Fixed a bug where the command-line interface would not correctly escape JSON values that had double quotes inside a string when using the `--format=sql` flag. #131931
- Fixed an error that could occur if a `SET` command used an aggregate function as the value. #131960
- Fixed a bug where ordering by `VECTOR` columns could result in an internal error in some cases. Now an `unimplemented` error is returned instead. #132107
- Added automated clean-up/validation for dropped roles inside default privileges. #132136
- Fixed a bug that that caused incorrect evaluation of a `CASE`, `COALESCE`, or `IF` expression with a branch that produced fixed-width string-like types, such as `CHAR`. #130889
- Fixed a bug that could cause the `BPCHAR` type to incorrectly impose a length limit of 1. #130889
- Fixed a rare bug that could prevent a backup from being restored and could cause the error `rewriting descriptor ids: missing rewrite for <id> in SequenceOwner...`. This bug could occur only if a `DROP COLUMN` operation dropped a sequence while the backup was running. #132326
- Fixed a bug introduced in v23.1 that could cause incorrect results when a join evaluates columns with equivalent but non-identical types, such as `OID` and `REGCLASS`, for equality. The issue arises when the join performs an index lookup on an index that includes a computed column referencing one of the equivalent columns. #132508
- Fixed a bug introduced before v23.1 that could cause a composite sensitive expression to compare differently if comparing equivalent but non-identical input values, such as `2.0::DECIMAL` and `2.00::DECIMAL`. The issue arises when the join performs an index lookup on a table with a computed index column where the computed column expression is composite sensitive. #132508
- Fixed a bug where a span statistics request on a mixed-version cluster could result in a null pointer exception. #132680
- Updated the `franz-go` library to fix a potential deadlock when a changefeed restarts. #132787
- Fixed a bug where a changefeed could fail to update protected timestamp records after a retryable error. #132773
- Fixed a bug where a changefeed that used change data capture queries could fail after a system table was garbage collected. #131649
- Fixed a rare bug introduced in v22.2 where an update of a primary key column could fail to update the primary index if it is also the only column in a separate column family. #132120
- Fixed a bug where the `proretset` column of the `pg_catalog.pg_proc` table was incorrectly set to `false` for builtin functions that return a set. #132876
- Fixed a bug that could cause incorrect evaluation of scalar expressions with `NULL` values. #132946
- Fixed a rare bug in the query optimizer that could cause a node to crash if a query contained a filter in the form `col IN (elem0, elem1, ..., elemN)` when `N` is very large, in the order of millions, and when `col` exists in a hash-sharded index or when a table with an indexed computed column depends on `col`. #132868
- Fixed a bug where an `ALTER DEFAULT PRIVILEGES FOR target_role ...` command could result in an erroneous privilege error when run by a user with the `admin` role. #133071
- Fixed a bug where a `REASSIGN OWNED BY` command would fail to transfer ownership of the public schema, even when the schema was owned by the target role. #133071
- Fixed a panic when resolving the types of an `AS OF SYSTEM TIME` expression. #132455

- Fixed a bug that could cause new connections to fail with the following error after upgrading: `ERROR: invalid value for parameter "vectorize": "unknown(1)" SQLSTATE: 22023 HINT: Available values: off,on,experimental_always`. To encounter this bug, the cluster must have:

  1. Run on version v21.1 at some point in the past.
  2. Run `SET CLUSTER SETTING sql.defaults.vectorize = 'on';` while running v21.1.
  3. Not set `sql.defaults.vectorize` after upgrading past v21.1 4.
  4. Subsequently upgraded to v24.2.

  To detect this bug, run the following query:

      SELECT * FROM system.settings WHERE name = 'sql.defaults.vectorize

  If the command returns `1` instead of `on`, run the following statement before upgrading.

      RESET CLUSTER SETTING sql.defaults.vectorize;

  `1` is now allowed as a value for this setting, and is equivalent to `on`. [#133371]#133371#133368

- Fixed a rare bug that could cause unnecessarily high disk usage in the presence of high rebalance activity. #133565

### Performance improvements

- Performance has been improved during periodic polling of table history when `schema_locked` is not used. #132191

## v24.2.4

Release Date: October 17, 2024

### Downloads

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-v24.2.4.linux-amd64.tgz (SHA256) | cockroach-sql-v24.2.4.linux-amd64.tgz (SHA256)
ARM | cockroach-v24.2.4.linux-arm64.tgz (SHA256) | cockroach-sql-v24.2.4.linux-arm64.tgz (SHA256)
Mac (Experimental) | Intel | cockroach-v24.2.4.darwin-10.9-amd64.tgz (SHA256) | cockroach-sql-v24.2.4.darwin-10.9-amd64.tgz (SHA256)
ARM | cockroach-v24.2.4.darwin-11.0-arm64.tgz (SHA256) | cockroach-sql-v24.2.4.darwin-11.0-arm64.tgz (SHA256)
Windows (Experimental) | Intel | cockroach-v24.2.4.windows-6.2-amd64.zip (SHA256) | cockroach-sql-v24.2.4.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:v24.2.4

### Source tag

To view or download the source code for CockroachDB v24.2.4 on Github, visit v24.2.4 source tag.

### Changelog

View a detailed changelog on GitHub: v24.2.3...v24.2.4

### Enterprise edition changes

- Updated the cluster setting `changefeed.sink_io_workers` with all the changefeed sinks that support the setting. #130374
- Added two network metrics, `changefeed.network.bytes_in` and `changefeed.network.bytes_out`. #130578
  These metrics track the number of bytes sent by individual changefeeds to the following sinks:
  - Kafka sinks. If child metrics are enabled, the metric will have a `kafka` label.
  - Webhook sinks. If child metrics are enabled, the metric will have a `webhook` label.
  - Pub/Sub sinks. If child metrics are enabled, the metric will have a `pubsub` label.
  - SQL sink. If child metrics are enabled, the metric will have a `sql` label.
- Added a `changefeed.total_ranges` metric that can be used to monitor the number of ranges that are watched by changefeed aggregators. It shares the same polling interval as `changefeed.lagging_ranges`, which is controlled by the existing `lagging_ranges_polling_interval` option. #130982
- Disambiguated metrics and logs for the two buffers used by the KV feed. The following metrics now have a suffix indicating which buffer they correspond to: `changefeed.buffer_entries.*`, `changefeed.buffer_entries_mem.*`, or `changefeed.buffer_pushback_nanos.*`. The previous metric names are retained for backward compatibility. #131419
- Added timers and corresponding [metrics](/docs/v2.1/metrics.html for key parts of the changefeed pipeline to help debug issues with feeds. The `changefeed.stage.{stage}.latency` metrics now emit latency histograms for each stage. The metrics respect the changefeed `scope` label to debug a specific feed. #131372

### SQL language changes

- The session variable `enforce_home_region_follower_reads_enabled` is now deprecated, in favor of `enforce_home_region`. The deprecated variable will be removed in a future release. #129587

### Operational changes

- Added the new metric `ranges.decommissioning` to show the number of ranges that have a replica on a decommissioning node. #130247
- You can now configure the log format for the `stderr` log sink by setting the `stderr.format` field in the YAML configuration. #131539

### DB Console changes

- Streamlined metric chart legends by removing the name of the chart from labels, where it was an identical prefix for all labels on the chart. #129359
- The DB Console now shows a notification if the cluster has no Enterprise license set. Refer to upcoming license changes for more information. #130417

### Bug fixes

- Fixed a bug that could prevent upgrade finalization when attempting to resolve a large number of corrupt descriptors. #130517
- Fixed a potential memory leak in changefeeds using a cloud storage sink. The memory leak could occur if both `changefeed.fast_gzip.enabled` and `changefeed.cloudstorage.async_flush.enabled` were `true`, and the changefeed received an error while attempting to write to the cloud storage sink. #130602
- Fixed a bug where zone configuration changes issued by the declarative schema changer were not blocked if a table had `schema_locked` set. #130705
- Fixed a bug in which some `SELECT FOR UPDATE` or `SELECT FOR SHARE` queries using `NOWAIT` could still block on locked rows when using the `optimizer_use_lock_op_for_serializable` session setting under `SERIALIZABLE` isolation. This bug was introduced with `optimizer_use_lock_op_for_serializable` in v23.2.0. #130430
- Fixed a bug that caused the optimizer to plan unnecessary post-query uniqueness checks during `INSERT`, `UPSERT`, and `UPDATE` statements on tables with partial, unique hash-sharded indexes. These unnecessary checks added overhead to execution of these statements, and caused the statements to error when executed under `READ COMMITTED` isolation. #130570
- Fixed a bug that could result in the inability to garbage collect an MVCC range tombstone within a global table. #130940
- Fixed a bug where a connection could be dropped if the client was attempting a schema change while the same schema objects were being dropped. #130962
- Fixed a bug introduced in v23.2 where the `IS NOT NULL` clause would incorrectly allow tuples containing `NULL` elements, e.g. `(1, NULL)` or `(NULL, NULL)`. #130947
- Fixed a bug that could cause errors with the message `internal error: Non-nullable column ...` when executing statements under `READ COMMITTED` isolation that involved tables with `NOT NULL` virtual columns. #131019
- Fixed a bug where AWS S3 and HTTP client configurations were not considered when implicit authentication was used. #131173

- Fixed a bug introduced in v23.1 that can cause incorrect query results under the following conditions:

  1. The query contains a correlated subquery.
  2. The correlated subquery has a `GroupBy` or `DistinctOn` operator with an outer-column reference in its input.
  3. The correlated subquery is in the input of a `SELECT` or `JOIN` clause that has a filter that sets the outer-column reference equal to an inner column that is in the input of the grouping operator.
  4. The set of grouping columns does not include the replacement column explicitly.

  #130990

- Fixed a bug where jobs created in a session with a timezone offset configured could fail to start or could report an incorrect creation time in the output of `SHOW JOBS` and in the DB Console. #131407

- Fixed a bug that could prevent a changefeed from resuming after a prolonged paused state. #130921

- Fixed a bug where backup schedules could advance a protected timestamp too early, which caused incremental backups to fail. #131391

### Performance improvements

- The query optimizer now plans limited partial index scans in more cases when the new session variable `optimizer_push_limit_into_project_filtered_scan` is set to `on`. #130335
- Reduced the write-amplification impact of rebalances by splitting snapshot SST files before ingesting them into Pebble. #128997

## v24.2.3

Release Date: September 25, 2024

### Downloads

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-v24.2.3.linux-amd64.tgz (SHA256) | cockroach-sql-v24.2.3.linux-amd64.tgz (SHA256)
ARM | cockroach-v24.2.3.linux-arm64.tgz (SHA256) | cockroach-sql-v24.2.3.linux-arm64.tgz (SHA256)
Mac (Experimental) | Intel | cockroach-v24.2.3.darwin-10.9-amd64.tgz (SHA256) | cockroach-sql-v24.2.3.darwin-10.9-amd64.tgz (SHA256)
ARM | cockroach-v24.2.3.darwin-11.0-arm64.tgz (SHA256) | cockroach-sql-v24.2.3.darwin-11.0-arm64.tgz (SHA256)
Windows (Experimental) | Intel | cockroach-v24.2.3.windows-6.2-amd64.zip (SHA256) | cockroach-sql-v24.2.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:v24.2.3

### Source tag

To view or download the source code for CockroachDB v24.2.3 on Github, visit v24.2.3 source tag.

### Changelog

View a detailed changelog on GitHub: v24.2.2...v24.2.3

### Enterprise edition changes

- Added a `changefeed.protect_timestamp.lag` metric, which controls how much the changefeed protected timestamp (PTS) should lag behind the high-water mark. A changefeed now only updates its PTS if `changefeed.protect_timestamp.lag` has passed between the last PTS and the changefeed high-water mark. #129580
- Added two network metrics, `changefeed.network.bytes_in` and `changefeed.network.bytes_out`. These metrics track the number of bytes sent by individual changefeeds to the following sinks:
  - Kafka sinks. If child metrics are enabled, the metric will have a `kafka` label.
  - Webhook sinks. If child metrics are enabled, the metric will have a `webhook` label.
  - Pub/Sub sinks. If child metrics are enabled, the metric will have a `pubsub` label.
  - SQL sink. If child metrics are enabled, the metric will have a `sql` label. #130582

### Operational changes

- Added a new configuration parameter, `server.cidr_mapping_url`, which maps IPv4 CIDR blocks to arbitrary tag names. #129071
- Modified the metrics `sql.bytesin` and `sql.bytesout` to become aggregation metrics if child metrics are enabled. #129071
- Added three new network tracking metrics:
  - `rpc.connection.connected` is the number of rRPC TCP-level connections established to remote nodes.
  - `rpc.client.bytes.egress` is the number of TCP bytes sent via gRPC on connections initiated by CockroachDB.
  - `rpc.client.bytes.ingress` is the number of TCP bytes received via gRPC on connections initiated by CockroachDB. #128957

### DB Console changes

- Users with the `VIEWACTIVITY` system privilege can now download statement bundles from the DB Console. #129504
- Users with the `VIEWACTIVITY` system privilege can now request, view, and cancel statement bundles from the DB Console. #129809
- The DB Console now displays a notification to alert customers without an Enterprise license to upcoming license changes. #130511

### Bug fixes

- Fixed a bug where `NaN` or `Inf` could not be used as the default value for a parameter in `CREATE FUNCTION` statements. #129087
- Fix a bug in which `SELECT ... FOR UPDATE` or `SELECT ... FOR SHARE` queries using `SKIP LOCKED` and a `LIMIT` and/or an `OFFSET` could return incorrect results under `READ COMMITTED` isolation. This bug was present when support for `SKIP LOCKED` under `READ COMMITTED` isolation was introduced in v24.1.0. #128102
- Fixed a bug in which some `SELECT ... FOR UPDATE` or `SELECT ... FOR SHARE` queries using `SKIP LOCKED` could still block on locked rows when using `optimizer_use_lock_op_for_serializable` under `SERIALIZABLE` isolation. This bug was present when `optimizer_use_lock_op_for_serializable` was introduced in v23.2.0. #128102
- Fixed a bug in which `SHOW CLUSTER SETTING FOR VIRTUAL CLUSTER` would erroneously return `NULL` for some settings. #128784
- Function input parameters can no longer have the `VOID` type. #129275
- Fixed a bug in WAL failover that could prevent a node from starting if it crashed during a failover. #129364
- Fixed a bug where starting up nodes could fail with `could not insert session ...: unexpected value` if an ambiguous result error was hit while inserting into the `sqlliveness` table. #129235
- Internally issued queries that are not initiated within a SQL session no longer respect a statement timeout. This includes: background jobs, queries issued by the DB Console that perform introspection, and the Cloud SQL shell. #129513
- Fixed a rare bug in `SHOW CLUSTER SETTING` that could cause it to fail with an error like `timed out: value differs between local setting and KV`. #129745
- Fixed a bug where the `schema_locked` table parameter did not prevent a table from being referenced by a foreign key. #129755
- Fixed a bug that could cause `RESTORE` to hang after encountering transient errors from the storage layer. #129895
- Fixed a bug where the `require_explicit_primary_keys` session variable would overly aggressively prevent all `CREATE TABLE` statements from working. #129908
- Fixed a slow-building memory leak that could occur when using Kerberos authentication. #130319
- Fixed a bug that could result in the inability to garbage collect an MVCC range tombstone within a global table. #130951
- Fixed a potential memory leak in changefeeds using a cloud storage sink. The memory leak could occur if both `changefeed.fast_gzip.enabled` and `changefeed.cloudstorage.async_flush.enabled` are true and the changefeed received an error while attempting to write to the cloud storage sink. #130625
- Fixed a bug that prevented buffered file sinks from being included when iterating over all file sinks. This led to problems such as the `debug zip` command not being able to fetch logs for a cluster where buffering was enabled. #130158

### Contributors

This release includes 94 merged PRs by 38 authors.

## v24.2.2

Release Date: September 23, 2024

### Downloads

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-v24.2.2.linux-amd64.tgz (SHA256) | cockroach-sql-v24.2.2.linux-amd64.tgz (SHA256)
ARM | cockroach-v24.2.2.linux-arm64.tgz (SHA256) | cockroach-sql-v24.2.2.linux-arm64.tgz (SHA256)
Mac (Experimental) | Intel | cockroach-v24.2.2.darwin-10.9-amd64.tgz (SHA256) | cockroach-sql-v24.2.2.darwin-10.9-amd64.tgz (SHA256)
ARM | cockroach-v24.2.2.darwin-11.0-arm64.tgz (SHA256) | cockroach-sql-v24.2.2.darwin-11.0-arm64.tgz (SHA256)
Windows (Experimental) | Intel | cockroach-v24.2.2.windows-6.2-amd64.zip (SHA256) | cockroach-sql-v24.2.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:v24.2.2

### Source tag

To view or download the source code for CockroachDB v24.2.2 on Github, visit v24.2.2 source tag.

### Changelog

View a detailed changelog on GitHub: v24.2.1...v24.2.2

### Bug fixes

- Fixed a bug that could result in the inability to garbage collect an MVCC range tombstone within a global table. #130946

### Contributors

This release includes 3 merged PRs by 2 authors.

## v24.2.1

Release Date: September 5, 2024

### Downloads

Warning:
This patch release has been withdrawn. We've removed the links to the downloads and Docker image.All the changes listed as part of this release will be in the next release. Do not upgrade to this release.

### Changelog

View a detailed changelog on GitHub: v24.2.0...v24.2.1

### Security updates

- The new cluster setting `server.jwt_authentication.issuers.configuration` is now aliased to `server.jwt_authentication.issuers`. The new cluster setting reflects the value the setting can take. The setting can now take multiple values to support various kinds of providers and their mapped JWKS URIs. This can be set to one of the following values:

  - Simple string that Go can parse as a valid issuer URL: `'https://accounts.google.com'`.
  - String that can be parsed as a valid JSON array of issuer URLs list: `['example.com/adfs','https://accounts.google.com']`.
  - String that can be parsed as a valid JSON and deserialized into a map of issuer URLs to corresponding JWKS URIs. In this case, CockroachDB will override the JWKS URI present in the issuer's well-known endpoint: `'{ "issuer_jwks_map": { "https://accounts.google.com": "https://www.googleapis.com/oauth2/v3/certs", "example.com/adfs": "https://example.com/adfs/discovery/keys" } }'`.

  When `issuer_jwks_map` is set, CockroachDB directly uses the JWKS URI to get the key set. In all other cases where `server.jwt_authentication.jwks_auto_fetch.enabled` is set, CockroachDB attempts to automatically obtain the JWKS URI first from the issuer's well-known endpoint. #128178

### Enterprise edition changes

- The new Kafka changefeed sink is now enabled by default. To disable it, set the cluster setting `changefeed.new_kafka_sink_enabled` to `false`. #128700
- The new Kafka sink and the Google Cloud Pub/Sub sink now display the topics that a changefeed will emit to. #128332

### Operational changes

- The cluster setting `storage.ingestion.value_blocks.enabled` can be set to `false` if a pathological huge range happens to occur in a cluster, and incoming snapshots of that range are causing OOMs. #128098
- Two new structured logging events report connection breakage during node shutdown. Previously, these logs existed but were unstructured. These logs appear in the `OPS` logging channel.
  - The `node_shutdown_connection_timeout` event is logged after the timeout defined by `server.shutdown.connections.timeout` transpires, if there are still open SQL connections.
  - The `node_shutdown_transaction_timeout` event is logged after the timeout defined by `server.shutdown.transactions.timeout` transpires, if there are still open transactions on those SQL connections. #128712

### DB Console changes

- Corrected the series names in the legend for the `Admission Queueing Delay p99 – Background (Elastic) CPU` graph on the Overload dashboard by removing the `KV write ' prefix. #128891
- Hovering on graphs on Metrics dashboards now highlights the line under the mouse pointer and displays the corresponding value near the mouse pointer. #128412

### Bug fixes

- Fixed a memory leak that could occur when a connection string specifies a virtual cluster that does not exist. #128108
- Fixed a bug where `CREATE INDEX IF NOT EXISTS` would not correctly short-circuit if the given index already existed. #128240
- Fixed a bug where syntax validation incorrectly prevented use of the `DESCENDING` clause for non-terminal columns of an inverted index. Now only the last column of an inverted index is prevented from using `DESCENDING`. #128240
- Fixed a bug where an index could store a column in the primary index if that column had a mixed-case name. #128240
- Setting or dropping a default value on a computed column is now disallowed -- even for null defaults. Previously, setting or dropping a default value on a computed column was a no-op; now it is an error. #128465
- Fixed a bug where a hash-sharded constraint could not be created if it referred to a column that had a backslash in its name. #128522
- Fixed a bug introduced in v23.1 where the output of `EXPLAIN (OPT, REDACT)` for various `CREATE` statements was not redacted. This bug affects the following statements:
  - `EXPLAIN (OPT, REDACT) CREATE TABLE`
  - `EXPLAIN (OPT, REDACT) CREATE VIEW`
  - `EXPLAIN (OPT, REDACT) CREATE FUNCTION` #128490
- Fixed a bug where legacy and declarative schema changes could be executed concurrently, which could lead to failing or hung schema change jobs. #128825
- Fixed a bug that caused errors like `ERROR: column 'crdb_internal_idx_expr' does not exist` when accessing a table with an expression index where the expression evaluates to an ENUM type, such as `CREATE INDEX ON t ((col::an_enum))`. #129094

## v24.2.0

Release Date: August 12, 2024

With the release of CockroachDB v24.2, 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

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-v24.2.0.linux-amd64.tgz (SHA256) | cockroach-sql-v24.2.0.linux-amd64.tgz (SHA256)
ARM | cockroach-v24.2.0.linux-arm64.tgz (SHA256) | cockroach-sql-v24.2.0.linux-arm64.tgz (SHA256)
Mac (Experimental) | Intel | cockroach-v24.2.0.darwin-10.9-amd64.tgz (SHA256) | cockroach-sql-v24.2.0.darwin-10.9-amd64.tgz (SHA256)
ARM | cockroach-v24.2.0.darwin-11.0-arm64.tgz (SHA256) | cockroach-sql-v24.2.0.darwin-11.0-arm64.tgz (SHA256)
Windows (Experimental) | Intel | cockroach-v24.2.0.windows-6.2-amd64.zip (SHA256) | cockroach-sql-v24.2.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:v24.2.0

### Source tag

To view or download the source code for CockroachDB v24.2.0 on Github, visit v24.2.0 source tag.

### Changelog

View a detailed changelog on GitHub: v24.2.0-rc.1...v24.2.0

### Feature highlights

This section summarizes the most significant user-facing changes in v24.2.0 and other features recently made available to CockroachDB users across versions. For a complete list of features and changes in v24.2, including bug fixes and performance improvements, refer to the release notes for previous v24.2 testing releases. You can also search the docs for sections labeled New in v24.2.

- Feature categories

  - Change data capture
  - Migrations
  - SQL
  - Operations
  - Observability

- Additional information

  - Backward-incompatible changes and deprecations
  - Features that require upgrade finalization
  - Key cluster setting changes
  - Known limitations
  - Additional resources

Note:

In CockroachDB Self-Hosted, all available features are free to use unless their description specifies that an Enterprise license is required. For more information, refer to the Licensing FAQ.

#### Change Data Capture

Feature | Availability
--- | ---
Ver. | Self-Hosted | Dedicated | Serverless
CockroachDB Changefeeds - Improved null handling usability Changefeed users can distinguish between JSON `NULL` values and SQL `NULL` values in changefeed messages, by using the `encode_json_value_null_as_object` option with `CREATE CHANGEFEED`. This enables a consumer to distinguish an unset value from a null JSON token. | 24.2 |  |  |

#### Migrations

Feature | Availability
--- | ---
Ver. | Self-Hosted | Dedicated | Serverless
MOLT tooling is now available as a Docker container Users can now deploy CockroachDB's MOLT Fetch and Verify tools using a multi-platform Docker image that supports both `linux/amd64` and `linux/arm64` architectures. For installation details, refer to MOLT Releases. | All★★ |  |  |
MOLT Fetch transformation rules Column exclusion, computed columns, and partitioned tables are now supported in table migrations with MOLT Fetch. They are supported via a new transformations framework that allows the user to specify a JSON file with instructions on how MOLT Fetch should treat certain schemas, tables, or underlying columns. | All★★ |  |  |

#### SQL

Feature | Availability
--- | ---
Ver. | Self-Hosted | Dedicated | Serverless
Vector search Users can now store `VECTOR` embeddings within CockroachDB with `pgvector`-compatible semantics to build AI-driven applications. Numerous built-in functions have been added for running similarity search across vectors. Note that vector indexing is not supported in this release. This feature is in Preview. | 24.2 |  |  |
Generic query plans Users can now enable generic query plans. Generic query plans optimize query execution for prepared statements by reusing precompiled query plans, and significantly reduce the CPU overhead associated with parsing and planning repeated queries, at the expense of plan quality. This feature is in Preview. | 24.2 |  |  |
COMMENT ON TYPE CockroachDB users can now annotate a type with a comment and reference the comment later for documentation purposes. | 24.2 |  |  |

#### Operations

Feature | Availability
--- | ---
Ver. | Self-Hosted | Dedicated | Serverless
CockroachDB Cloud Terraform Provider - Operations at scale This release includes updates to enhance operations at scale using the CockroachDB Cloud Terraform Provider across multiple Terraform projects. A new Resource for User Role Grants makes it easier to manage user account access to clusters across projects. A new Data Source for Folders allows better access to clusters organized in folders across multiple projects. A new Service Account Resource brings CockroachDB Cloud API access under Terraform management. | All★★ |  |  |
Support for Optional Innovation Releases As of v24.2, CockroachDB has shifted from a 6-month major version release cycle to a 3-month cycle. The additional versions, called Innovation releases, are optional and can be skipped for CockroachDB Dedicated and Self-Hosted, but are required for CockroachDB Serverless. Innovation releases have shorter support windows than Regular releases. Users can upgrade directly from a Regular release to the next Regular release, without needing to upgrade to the intermediary Innovation release. In CockroachDB Dedicated, users can now choose to deploy or upgrade a cluster on any supported version. CockroachDB Serverless clusters continue to receive all major versions and patches for both Innovation releases and Regular releases as they become available. | 24.2 |  |  | (not skippable)

#### Observability

Feature | Availability
--- | ---
Ver. | Self-Hosted | Dedicated | Serverless
CockroachDB Dedicated clusters on Azure now integrate with Azure Monitor for metrics and logs (limited access) Exporting logs to Azure Monitor Logs and exporting metrics to Azure Monitor Metrics and Prometheus-compatible metric sinks from your CockroachDB Dedicated cluster hosted on Azure is now supported in Limited Access. | All★ |  |  |
Improved Overload Dashboard Updates to the Overload dashboard include moving important metrics nearer the top and adding more informative tooltips. These enhancements aim to help users more easily identify when Admission Control mechanisms are activated due to overload. | v24.2 |  |  |

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 Dedicated, or CockroachDB Serverless.
| Feature is not available for this deployment method of CockroachDB as specified in the icon’s column: CockroachDB Self-Hosted, CockroachDB Dedicated, or CockroachDB Serverless.

#### Backward-incompatible changes and deprecations

CockroachDB v24.2.0 includes no backward-incompatible changes or deprecations.

#### Features that require upgrade finalization

During a major-version upgrade, certain features and performance improvements may not be available until the upgrade is finalized. However, when upgrading to v24.2, all features are available immediately, and no features require finalization.

#### Key Cluster Setting Changes

The following changes should be reviewed prior to upgrading. Default cluster settings 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 removed
- Settings with changed defaults
- Settings with new options
- Settings with new aliases

##### Settings added

- `debug.zip.redact_addresses`: Added the cluster setting `debug.zip.redact_addresses.enabled` that allows the user to enable or disable redaction of fields like `hostname` and IP addresses. #123544
- `kv.transaction.randomized_anchor_key`: Previously, concurrent transactions that constructed large write batches could cause hotspots. This was because the transaction record for all ranges would coalesce on a single range, which would then cause this range's leaseholder to perform all intent resolution work. This is fixed by distributing transaction records randomly across the ranges the write batch touches. In turn, hotspots are prevented. #125744
- `server.oidc_authentication.client.timeout`: The new cluster setting `server.oidc_authentication.client.timeout` allows configuration of the HTTP client timeout for external requests made during OIDC authentication. The default timeout is 30 seconds. #125767
- `sql.auth.grant_option_for_owner.enabled`: The new cluster setting `sql.auth.grant_option_for_owner.enabled` controls whether the owner of an object has permission to grant permission on the object to other users. When set to `true` (the default), the `GRANT OPTION` is implicitly granted to the object owner, who can grant permissions on the object to other users, preserving the existing behavior of CockroachDB. When set to `false`, the `GRANT OPTION` is not implicitly given to the owner of an object. The owner's permissions do not change, but they can no longer grant permissions to others unless the `GRANT OPTION` is granted to them explicitly. #126960
- `sql.auth.grant_option_inheritance.enabled`: Added the `sql.auth.grant_option_inheritance.enabled` cluster setting. The default value is `true`, which maintains consistency with CockroachDB's previous behavior: users granted a privilege with `WITH GRANT OPTION` can in turn grant that privilege to others. When `sql.auth.grant_option_inheritance.enabled` is set to `false`, the `GRANT OPTION` is not inherited through role membership, thereby preventing descendant roles from granting the privilege to others. However, the privilege itself continues to be inherited through role membership. #125590
- `storage.sstable.compression_algorithm_backup_storage`, `storage.sstable.compression_algorithm_backup_transport`: Added two new cluster settings, `storage.sstable.compression_algorithm_backup_storage` and `storage.sstable.compression_algorithm_backup_transport`, which in addition to the existing cluster setting `storage.sstable.compression_algorithm`, can be used to alter the compression algorithm used for various types of SSTs. #124245

##### Settings removed

- `kv.rangefeed.range_stuck_threshold`: Removed the stuck rangefeed cancel feature and its related cluster setting `kv.rangefeed.range_stuck_threshold`, because it was only available in non-mux rangefeeds. Previously, the stuck rangefeed cancel feature was introduced to restart single rangefeeds automatically if they had not received KV updates for some time. #125663
- `storage.value_blocks.enabled`: The `storage.value_blocks.enabled` cluster setting has been removed; value blocks are always enabled. #122164

##### Settings with changed defaults

- `kv.dist_sender.circuit_breakers.mode` has had its default changed to `liveness range only = 1`.
- `sql.defaults.results_buffer.size` has had its default changed to `512 KiB`: The default value of the `sql.defaults.results_buffer.size` cluster setting has been changed from 16KiB to 512KiB. This reduces the chance that clients using `READ COMMITTED` transactions will encounter errors that cannot automatically be retried within CockroachDB. #124633
- `sql.metrics.max_mem_stmt_fingerprints` and `sql.metrics.max_mem_txn_fingerprints` have had their defaults changed to `7500`: The default values for the cluster settings `sql.metrics.max_mem_stmt_fingerprints` and `sql.metrics.max_mem_txn_fingerprints` have been changed from `100000` to `7500`, thus lowering the default limits for in-memory statement and transaction fingerprints. #123430
- `sql.stats.histogram_samples.count` has had its default changed to `0`: Histograms are no longer constructed using a default sample size of `10k`. Samples are now sized dynamically based on table size unless the sample count has been set in the table or cluster settings. #125345
- `sql.ttl.default_delete_rate_limit` has had its default changed to `100`: The storage parameter `ttl_delete_rate_limit`, which determines the rate limit for deleting expired rows, is now set to `100` by default. #124354

##### Settings with new options

- `storage.sstable.compression_algorithm` has added the option `none = 3`: The compression option `none` was added to allow for the disabling of SSTable compression. This option is disabled by default, but can can be used with any of the three existing cluster settings that control SSTable compression: `storage.sstable.compression_algorithm`, `storage.sstable.compression_algorithm_backup_storage`, and `storage.sstable.compression_algorithm_backup_transport`. #126508

##### Settings with new aliases

- `changefeed.batch_reduction_retry.enabled` is aliased to `changefeed.batch_reduction_retry_enabled`.
- `kv.closed_timestamp.follower_reads.enabled` is aliased to `kv.closed_timestamp.follower_reads_enabled`.
- `kv.range_split.by_load.enabled` is aliased to `kv.range_split.by_load_enabled`.
- `kv.transaction.write_pipelining.enabled` is aliased to `kv.transaction.write_pipelining_enabled`.
- `kv.transaction.write_pipelining.max_batch_size` is aliased to `kv.transaction.write_pipelining_max_batch_size`.
- `physical_replication.consumer.minimum_flush_interval` is aliased to `builkio.stream_ingestion.minimum_flush_interval`.
- `server.clock.forward_jump_check.enabled` is aliased to `server.clock.forward_jump_check_enabled`.
- `server.oidc_authentication.autologin.enabled` is aliased to `server.oidc_authentication.autologin`.
- `server.shutdown.connections.timeout` is aliased to `server.shutdown.connection_wait`.
- `server.shutdown.initial_wait` is aliased to `server.shutdown.drain_wait`.
- `server.shutdown.jobs.timeout` is aliased to `server.shutdown.jobs_wait`.
- `server.shutdown.lease_transfer_iteration.timeout` is aliased to `server.shutdown.lease_transfer_wait`.
- `server.shutdown.transactions.timeout` is aliased to `server.shutdown.query_wait`.
- `server.web_session.timeout` is aliased to `server.web_session_timeout`.
- `spanconfig.range_coalescing.application.enabled` is aliased to `spanconfig.tenant_coalesce_adjacent.enabled`.
- `spanconfig.range_coalescing.system.enabled` is aliased to `spanconfig.storage_coalesce_adjacent.enabled`.
- `sql.log.all_statements.enabled` is aliased to `sql.trace.log_statement_execute`.
- `sql.metrics.statement_details.dump_to_logs.enabled` is aliased to `sql.metrics.statement_details.dump_to_logs`.
- `trace.debug_http_endpoint.enabled` is aliased to `trace.debug.enable`.

#### Known limitations

For information about new and unresolved limitations in CockroachDB v24.2, 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.

## v24.2.0-rc.1

Release Date: August 7, 2024

### Downloads

Warning:

CockroachDB v24.2.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.

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-v24.2.0-rc.1.linux-amd64.tgz (SHA256) | cockroach-sql-v24.2.0-rc.1.linux-amd64.tgz (SHA256)
ARM | cockroach-v24.2.0-rc.1.linux-arm64.tgz (SHA256) | cockroach-sql-v24.2.0-rc.1.linux-arm64.tgz (SHA256)
Mac (Experimental) | Intel | cockroach-v24.2.0-rc.1.darwin-10.9-amd64.tgz (SHA256) | cockroach-sql-v24.2.0-rc.1.darwin-10.9-amd64.tgz (SHA256)
ARM | cockroach-v24.2.0-rc.1.darwin-11.0-arm64.tgz (SHA256) | cockroach-sql-v24.2.0-rc.1.darwin-11.0-arm64.tgz (SHA256)
Windows (Experimental) | Intel | cockroach-v24.2.0-rc.1.windows-6.2-amd64.zip (SHA256) | cockroach-sql-v24.2.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:v24.2.0-rc.1

### Source tag

To view or download the source code for CockroachDB v24.2.0-rc.1 on Github, visit v24.2.0-rc.1 source tag.

### Changelog

View a detailed changelog on GitHub: v24.2.0-beta.3...v24.2.0-rc.1

### Enterprise edition changes

- Added a new Kafka changefeed sink that uses the `franz-go` library and CockroachDB's `batching_sink` implementation. The new Kafka sink can be enabled with the `changefeed.new_kafka_sink_enabled` cluster setting, which is disabled by default. #127899
- The v2 Kafka changefeed sink now supports Amazon Managed Streaming for Apache Kafka (MSK) IAM SASL authentication. #127899

### DB Console changes

- The Databases and Tables pages in the DB Console will show a loading state while loading information for databases and tables including size and range counts. #127696
- On the Database details page, the table name will no longer appear with quotes around the schema and table name. #127770

### Bug fixes

- Fixed a bug that caused a memory leak when executing SQL statements with comments, for example, `SELECT /* comment */ 1;`. Memory owned by a SQL session would continue to grow as these types of statements were executed. The memory would only be released when closing the SQL session. This bug has been present since v23.1. #127760
- Fixed a bug in debug zip generation where an error was produced while fetching unstructured/malformed logs. #127883
- Fixed small memory leaks that occur during changefeed creation. #127899
- Fixed a known limitation in which fast cutback could fail. Users can now protect data for the default protection window of 4 hours on both the primary and the standby clusters. #127892

### Contributors

This release includes 29 merged PRs by 21 authors.

## v24.2.0-beta.3

Release Date: August 1, 2024

### Downloads

Warning:

CockroachDB v24.2.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.

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-v24.2.0-beta.3.linux-amd64.tgz (SHA256) | cockroach-sql-v24.2.0-beta.3.linux-amd64.tgz (SHA256)
ARM | cockroach-v24.2.0-beta.3.linux-arm64.tgz (SHA256) | cockroach-sql-v24.2.0-beta.3.linux-arm64.tgz (SHA256)
Mac (Experimental) | Intel | cockroach-v24.2.0-beta.3.darwin-10.9-amd64.tgz (SHA256) | cockroach-sql-v24.2.0-beta.3.darwin-10.9-amd64.tgz (SHA256)
ARM | cockroach-v24.2.0-beta.3.darwin-11.0-arm64.tgz (SHA256) | cockroach-sql-v24.2.0-beta.3.darwin-11.0-arm64.tgz (SHA256)
Windows (Experimental) | Intel | cockroach-v24.2.0-beta.3.windows-6.2-amd64.zip (SHA256) | cockroach-sql-v24.2.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:v24.2.0-beta.3

### Source tag

To view or download the source code for CockroachDB v24.2.0-beta.3 on Github, visit v24.2.0-beta.3 source tag.

### Changelog

View a detailed changelog on GitHub: v24.2.0-beta.2...v24.2.0-beta.3

### Command-line changes

- A `--locality-file` flag is now available on the `cockroach start` and `cockroach start-single-node` commands. This provides the option of specifing node locality (typically a `region` value) as a file, as an alternative to specifying this using the `--locality` flag. [#127476][#127476]

### Bug fixes

- Fixed a formatting issue with the `sql_sequence_cached_node` value of the `serial_normalization` setting. This could lead to an error connecting to CockroachDB if this value was set as the default for `serial_normalization` via cluster setting `sql.defaults.serial_normalization`. [#127674][#127674]
- Dropping ENUM-type values which were referenced by index expressions could fail with an error. [#127455][#127455]

This release includes 13 merged PRs by 7 authors.

## v24.2.0-beta.2

Release Date: July 24, 2024

### Downloads

Warning:

CockroachDB v24.2.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.

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-v24.2.0-beta.2.linux-amd64.tgz (SHA256) | cockroach-sql-v24.2.0-beta.2.linux-amd64.tgz (SHA256)
ARM | cockroach-v24.2.0-beta.2.linux-arm64.tgz (SHA256) | cockroach-sql-v24.2.0-beta.2.linux-arm64.tgz (SHA256)
Mac (Experimental) | Intel | cockroach-v24.2.0-beta.2.darwin-10.9-amd64.tgz (SHA256) | cockroach-sql-v24.2.0-beta.2.darwin-10.9-amd64.tgz (SHA256)
ARM | cockroach-v24.2.0-beta.2.darwin-11.0-arm64.tgz (SHA256) | cockroach-sql-v24.2.0-beta.2.darwin-11.0-arm64.tgz (SHA256)
Windows (Experimental) | Intel | cockroach-v24.2.0-beta.2.windows-6.2-amd64.zip (SHA256) | cockroach-sql-v24.2.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:v24.2.0-beta.2

### Source tag

To view or download the source code for CockroachDB v24.2.0-beta.2 on Github, visit v24.2.0-beta.2 source tag.

### Changelog

View a detailed changelog on GitHub: v24.2.0-beta.1...v24.2.0-beta.2

### Security updates

- URLs in the following SQL statements are now sanitized of any secrets before being written to unredacted logs. #127360
- `ALTER BACKUP SCHEDULE`
- `ALTER BACKUP`
- `ALTER CHANGEFEED SET sink`
- `BACKUP`
- `COPY`
- `CREATE CHANGEFEED`
- `CREATE EXTERNAL CONNECTION`
- `CREATE SCHEDULE FOR BACKUP`
- `CREATE SCHEDULE FOR CHANGEFEED`
- `EXPORT`
- `IMPORT INTO`
- `RESTORE`
- `SHOW BACKUPS`
- `SHOW BACKUP`

### SQL language changes

- The new cluster setting `sql.auth.grant_option_for_owner.enabled` controls whether the owner of an object has permission to grant permission on the object to other users. When set to `true` (the default), the `GRANT OPTION` is is implicitly granted to the object owner, who can grant permissions on the object to other users, preserving the existing behavior of CockroachDB. When set to `false`, the `GRANT OPTION` is not implicitly given to the owner of an object. The owner's permissions do not change, but they can no longer grant permissions to others unless the `GRANT OPTION` is granted to them explicitly. #126960
- Fixed a bug in which the `DISCARD` statement was disallowed when the session setting `default_transaction_read_only = on`. cockroachdb/cockroach#127364

### Bug fixes

- Fixed a bug that could cause `CREATE INVERTED INDEX` and `ALTER TABLE ... SET LOCALITY REGIONAL BY ROW` statements to fail if the corresponding table contained columns with non-standard characters in their names, such as tabs or newlines. This bug was introduced along with inverted indexes in v2.0. #126996
- Fixed a bug introduced in v23.2 that could cause a gateway node to crash while executing an `INSERT` statement in a `REGIONAL BY ROW` table. #127278
- Fixed a bug where a schema change could hang if the lease rangefeed stopped receiving updates. #127488

### Contributors

This release includes 45 merged PRs by 18 authors.

## v24.2.0-beta.1

Release Date: July 18, 2024

### Downloads

Warning:

CockroachDB v24.2.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.

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-v24.2.0-beta.1.linux-amd64.tgz (SHA256) | cockroach-sql-v24.2.0-beta.1.linux-amd64.tgz (SHA256)
ARM | cockroach-v24.2.0-beta.1.linux-arm64.tgz (SHA256) | cockroach-sql-v24.2.0-beta.1.linux-arm64.tgz (SHA256)
Mac (Experimental) | Intel | cockroach-v24.2.0-beta.1.darwin-10.9-amd64.tgz (SHA256) | cockroach-sql-v24.2.0-beta.1.darwin-10.9-amd64.tgz (SHA256)
ARM | cockroach-v24.2.0-beta.1.darwin-11.0-arm64.tgz (SHA256) | cockroach-sql-v24.2.0-beta.1.darwin-11.0-arm64.tgz (SHA256)
Windows (Experimental) | Intel | cockroach-v24.2.0-beta.1.windows-6.2-amd64.zip (SHA256) | cockroach-sql-v24.2.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:v24.2.0-beta.1

### Source tag

To view or download the source code for CockroachDB v24.2.0-beta.1 on Github, visit v24.2.0-beta.1 source tag.

### Changelog

View a detailed changelog on GitHub: v24.2.0-alpha.2...v24.2.0-beta.1

### Security updates

- Added support for a custom certificate authority (CA) to verify certificates from the JWT issuer domain, which hosts the JSON Web Key Set (JWKS) configuration that is fetched to validate JWT, along with the new cluster setting `server.jwt_authentication.issuer_custom_ca` to set the custom root CA. #126062

### General changes

- Job status changes now log events to the OPS channel, to indicate the previous and new status of the job. #125319

### Enterprise edition changes

- The new cluster setting `server.oidc_authentication.client.timeout` allows configuration of the HTTP client timeout for external calls made during OIDC authentication. The default timeout is 30 seconds. #125767
- The Kafka sink for changefeeds now supports authentication using AWS IAM roles, providing a more secure method for connecting to AWS Managed Streaming for Apache Kafka (MSK) clusters. #125745

### SQL language changes

- Added pgvector encoding, decoding, and operators, without index acceleration. #124292
- Added support for generic query plans to the optimizer to reduce the computational burden of query optimization by caching and reusing plans in later executions of the same statement. "Custom" query plans are optimized on every execution, while "generic" plans are optimized once and reused on future executions. Generic query plans are beneficial in cases where query optimization contributes significant overhead to the total cost of executing a query. #126528 #127012
  - When the session setting `plan_cache_mode` is set to `auto`, the system automatically determines whether to use custom or generic query plans for the execution of a prepared statement.
  - When the session setting `plan_cache_mode` is set to `force_generic_plan`, prepared statements will reuse optimized query plans without re-optimization, as long as the plans do not become stale due to schema changes or new table statistics.
  - The setting is used during `EXECUTE` commands and the `EXPLAIN ANALYZE` output includes a `plan type` field that displays: `generic, re-optimized` if the plan is optimized for the current execution, `generic, reused` if the plan is reused without re-optimization, or `custom` for other plans.
- The output of `SHOW GRANTS` for a role now includes privileges inherited from the `public` role, which is a default role defined on every cluster. #127086

### Operational changes

- For the TELEMETRY channel, TCL `sampled_query` events will now be sampled at the rate specified by the setting `sql.telemetry.query_sampling.max_event_frequency`, which is already used to limit the rate of sampling DML statements. #126484
- The `encode-uri` command now supports the `--certs-dir` option as an alternative to passing individual certificate paths. #126793
- Changed the metric type of runtime metrics that are semantically counters from `GAUGE` to `COUNTER`. #127018
  - `storage.disk.io.time`
  - `storage.disk.read.bytes`
  - `storage.disk.read.count`
  - `storage.disk.read.time`
  - `storage.disk.weightedio.time`
  - `storage.disk.write.bytes`
  - `storage.disk.write.count`
  - `storage.disk.write.time`
  - `sys.cgocalls`
  - `sys.cpu.now.ns`
  - `sys.cpu.sys.ns`
  - `sys.cpu.user.ns`
  - `sys.gc.assist.ns`
  - `sys.gc.count`
  - `sys.gc.pause.ns`
  - `sys.go.heap.allocbytes`
  - `sys.host.disk.io.time`
  - `sys.host.disk.read.bytes`
  - `sys.host.disk.read.count`
  - `sys.host.disk.read.time`
  - `sys.host.disk.weightedio.time`
  - `sys.host.disk.write.bytes`
  - `sys.host.disk.write.count`
  - `sys.host.disk.write.time`
  - `sys.host.net.recv.bytes`
  - `sys.host.net.recv.drop`
  - `sys.host.net.recv.err`
  - `sys.host.net.recv.packets`
  - `sys.host.net.send.bytes`
  - `sys.host.net.send.drop`
  - `sys.host.net.send.err`
  - `sys.host.net.send.packets`
  - `sys.uptime`

### Command-line changes

- The new `--shutdown` flag of the `cockroach node drain` command shuts down the node automatically after draining successfully completes. #126950

### Bug fixes

- Fixed a bug on the node list of the Cluster overview page where the icons present on certain tables to expand and collapse expandable rows did not work. #126639
- Fixed a bug that prevented fast path inserts into regional by row tables with uniqueness constraints under `READ COMMITTED` isolation. #126504
- Fixed a bug where the `sql.stats.discarded.current` metric omitted discarded statements from its count. Both discarded statements and transactions are included in the metric. #126585
- Fixed a bug where the Database page could crash if range information is not available. #126419
- Fixed a bug that caused background jobs to incorrectly respect a statement timeout. #126336
- Fixed a bug when creating partial statistics with the USING EXTREMES option (disabled by default) where the merged statistic could contain inaccurate `DISTINCT` counts. #126830
- Fixed bug where a replication zone configuration for a partition key could disappear during truncation. #126531

### Performance improvements

- The efficiency of merging partial statistics into existing statistics has been improved. #126830
- The optimizer now generates more efficient plans for queries with clauses like `ORDER BY col ASC NULLS LAST` and `ORDER BY col DESC NULLS FIRST` when `col` is guaranteed to not be `NULL`. #126685

### Contributors

This release includes 96 merged PRs by 49 authors.

## v24.2.0-alpha.2

Release Date: July 10, 2024

### Downloads

Warning:

CockroachDB v24.2.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-v24.2.0-alpha.2.linux-amd64.tgz (SHA256) | cockroach-sql-v24.2.0-alpha.2.linux-amd64.tgz (SHA256)
ARM | cockroach-v24.2.0-alpha.2.linux-arm64.tgz (SHA256) | cockroach-sql-v24.2.0-alpha.2.linux-arm64.tgz (SHA256)
Mac (Experimental) | Intel | cockroach-v24.2.0-alpha.2.darwin-10.9-amd64.tgz (SHA256) | cockroach-sql-v24.2.0-alpha.2.darwin-10.9-amd64.tgz (SHA256)
ARM | cockroach-v24.2.0-alpha.2.darwin-11.0-arm64.tgz (SHA256) | cockroach-sql-v24.2.0-alpha.2.darwin-11.0-arm64.tgz (SHA256)
Windows (Experimental) | Intel | cockroach-v24.2.0-alpha.2.windows-6.2-amd64.zip (SHA256) | cockroach-sql-v24.2.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:v24.2.0-alpha.2

### Source tag

To view or download the source code for CockroachDB v24.2.0-alpha.2 on Github, visit v24.2.0-alpha.2 source tag.

### Changelog

View a detailed changelog on GitHub: v24.2.0-alpha.1...v24.2.0-alpha.2

### General changes

- The compression option `none` was added to allow for the disabling of SSTable compression. This option can be used with any of the three existing cluster settings that control SSTable compression:
  - `storage.sstable.compression_algorithm`
  - `storage.sstable.compression_algorithm_backup_storage`
  - `storage.sstable.compression_algorithm_backup_transport` #126508

### SQL language changes

- Added the `sql.auth.grant_option_inheritance.enabled` cluster setting. The default value is `true`, which maintains consistency with CockroachDB's previous behavior: users granted a privilege with `WITH GRANT OPTION` can in turn grant that privilege to others. When `sql.auth.grant_option_inheritance.enabled` is set to `false`, the `GRANT OPTION` is not inherited through role membership, thereby preventing descendant roles from granting the privilege to others. However, the privilege itself continues to be inherited through role membership. #125590
- The `pg_catalog.pg_attribute` table now has a column named `attishidden`, which indicates if the table column or attribute is `NOT VISIBLE`. #126397

### Bug fixes

- Fixed a bug that could cause internal errors when a routine had polymorphic parameters or a polymorphic return type or both. The bug has existed since v22.2 when user-defined functions (UDFs) were introduced. #123459
- In `SHOW CREATE` output, the name of an enum type is now formatted as a two-part name (`schema.enum_type`) instead of a three-part name (`database.schema.enum_type`). This change makes it easier to apply the output with enum types to other databases. #125996
- When altering the data type of columns with the hidden attribute (`NOT VISIBLE`), the alteration now preserves the hidden attribute in the column. Additionally, type alterations for columns with `ON UPDATE` expressions or `DEFAULT` expressions are now allowed. #126033
- Fixed a bug where a user-defined function (UDF) that shared a name with a built-in function would not be resolved, even if the UDF had higher precedence according to the `search_path` variable. #126281
- Expressions of type `BYTES[]` are now correctly formatted in `pg_catalog` tables. #126297
- Fixed a bug that could cause spurious user permission errors when multiple databases shared a common schema with a routine referencing a table. The bug has existed since v22.2 when user-defined functions (UDFs) were introduced. #123459 #126349
- Hidden columns are now included in the `indkey` column of `pg_catalog.pg_index`. #126397
- Fixed a bug when inputting `public` role as user name for built-in compatibility functions, such as `has_database_privilege` and `has_schema_privilege`. #126211
- Fixed a bug when restoring a database with a composite type. #126351
- Fixed a bug when creating partial statistics with the `USING EXTREMES` option (which is disabled by default) where it would occasionally use incorrect extreme values and collect no stats. This bug occurred when outer buckets were added to the previous histogram to account for extra distinct count. #126403
- In the DB Console event log, `ALTER ROLE` events now display correctly even when no role options are included in the `ALTER ROLE` statement. #126354
- Fixed a bug where `ALTER DATABASE ... DROP REGION` could fail if any tables under the given database have indexes on expressions. #126555

### Performance improvements

- Starting a `cockroach` process will no longer flush buffered logs to configured logging sinks unless the process is running under `systemd`, where `cockroach` runs with the `NOTIFY_SOCKET` environment variable. #125971

### Contributors

This release includes 130 merged PRs by 42 authors.

## v24.2.0-alpha.1

Release Date: July 1, 2024

### Downloads

Warning:

CockroachDB v24.2.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-v24.2.0-alpha.1.linux-amd64.tgz (SHA256) | cockroach-sql-v24.2.0-alpha.1.linux-amd64.tgz (SHA256)
ARM | cockroach-v24.2.0-alpha.1.linux-arm64.tgz (SHA256) | cockroach-sql-v24.2.0-alpha.1.linux-arm64.tgz (SHA256)
Mac (Experimental) | Intel | cockroach-v24.2.0-alpha.1.darwin-10.9-amd64.tgz (SHA256) | cockroach-sql-v24.2.0-alpha.1.darwin-10.9-amd64.tgz (SHA256)
ARM | cockroach-v24.2.0-alpha.1.darwin-11.0-arm64.tgz (SHA256) | cockroach-sql-v24.2.0-alpha.1.darwin-11.0-arm64.tgz (SHA256)
Windows (Experimental) | Intel | cockroach-v24.2.0-alpha.1.windows-6.2-amd64.zip (SHA256) | cockroach-sql-v24.2.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:v24.2.0-alpha.1

### Source tag

To view or download the source code for CockroachDB v24.2.0-alpha.1 on Github, visit v24.2.0-alpha.1 source tag.

### General changes

- The following metrics were added for observability into the source of disk writes:
  - `storage.category-pebble-wal.bytes-written`
  - `storage.category-pebble-compaction.bytes-written`
  - `storage.category-pebble-ingestion.bytes-written`
  - `storage.category-pebble-memtable-flush.bytes-written`
  - `storage.category-raft-snapshot.bytes-written`
  - `storage.category-encryption-registry.bytes-written`
  - `storage.category-crdb-log.bytes-written`
  - `storage.category-sql-row-spill.bytes-written`
  - `storage.category-sql-col-spill.bytes-written`
  - `storage.category-unspecified.bytes-written` #119024
- The `storage.value_blocks.enabled` cluster setting has been removed; value blocks are always enabled. #122164
- The following metrics were added for improved observability into disk bandwidth:
  - `storage.disk.read-max.bytespersecond`
  - `storage.disk.write-max.bytespersecond` #121553
- Added two new cluster settings, `storage.sstable.compression_algorithm_backup_storage` and `storage.sstable.compression_algorithm_backup_transport`, which in addition to the existing cluster setting `storage.sstable.compression_algorithm`, can be used to alter the compression algorithm used for various types of SSTs. #124245

### Enterprise edition changes

- `SHOW CHANGEFEED JOB`, `SHOW CHANGEFEED JOBS`, and `SHOW JOBS` no longer expose user sensitive information like `client_key`. #122529
- Added the new option `encode_json_value_null_as_object` to JSON-formatted changefeeds that outputs `'null'::jsonb` as `{"__crdb_json_null__": true}` instead of `null`, to disambiguate between SQL-null and JSON-null. With this option enabled, if the literal value `{"__crdb_json_null__": true}` is present in a JSON value, it will have the same representation as JSON-null with this option enabled. If such a value is encountered in a changefeed, a (rate-limited) warning will be printed to the `DEV` channel. #122848
- Added an error message for changefeed options and parameters that are not supported by the Apache Pulsar sink. #124581
- Scheduled changefeeds now pause after being restored onto a different cluster, and after completion of physical cluster replication to avoid inadvertent concurrent execution of the same schedule on multiple clusters. #124631
- The `DEBUG_PAUSE_ON` option has been removed and replaced with the `restore.restore_after_failure` pause point to match other pause points used throughout CockroachDB. You can set this pause point by running: `SET CLUSTER SETTING jobs.debug.pausepoints = 'restore.after_restore_failure'`. #125158

### SQL language changes

- Default schema privilege changes will now be reflected and can be monitored in the `pg_default_acl` table. #121506
- The schema of the `pg_catalog.pg_proc` virtual table now matches exactly that of PostgreSQL versions 14–16. The following changes are applied:
  - `proisagg` and `proiswindow` columns are removed (done in v11).
  - `protransform` column is removed (done in v12).
  - `prosqlbody` column is added (done in v14).
  - `prosupport` and `prokind` columns are moved into their correct spot (these were incorrectly present at the end of the columns list). #121966
- Added `SHOW EXTERNAL CONNECTIONS` and `SHOW EXTERNAL CONNECTION <connection name>`. These queries display redacted connection URIs and other useful information, such as the connection type. Access to these queries is restricted to the owner of the connection or users with `USAGE` privilege. `admin` or `root` users will have unrestricted access to all connections. #123545
- Using the `CREATE STATISTICS` query without the `AS OF SYSTEM TIME` option could contend with concurrent transactions and cost performance. Running `CREATE STATISTICS` without specifying `AS OF SYSTEM TIME` now uses a default of `-1us`. #124488
- The `nodes` field of the `EXPLAIN ANALYZE` output has been renamed to `sql nodes` to clarify that this field describes SQL processing and it does not include any information about KV nodes that might have participated in the query execution. #124681
- `EXPLAIN ANALYZE` output now has a new field `KV nodes` that includes all KV nodes that were used to serve read requests by a particular SQL operator. #124681
- Fixed the `Regions` field in the `EXPLAIN ANALYZE` output to include regions of KV nodes. Previously, only regions of SQL nodes involved in query processing were included. #124888
- Allow foreign keys to be created over stored computed columns. However, most `ON UPDATE` and `ON DELETE` options for foreign key constraints are not allowed with computed columns. Only `ON UPDATE (NO ACTION|RESTRICT)` and `ON DELETE (NO ACTION|RESTRICT|CASCADE)` are supported. #124851
- `EXPLAIN ANALYZE` output now has a new field `used follower read` to SQL operators whenever their reads were served by the follower replicas. Previously, this information was only available in the trace. #125152
- The new attribute `historical: AS OF SYSTEM TIME ...` is now included in `EXPLAIN ANALYZE` output whenever the query performs historical reads. #125152
- `EXPLAIN ANALYZE` statements are now supported when executed via UI SQL shell. #125455
- Histograms are no longer constructed using a default sample size of `10k`. Samples are now dynamically sized based on table size unless the sample count has been set in the table or cluster settings. #125345
- The optimizer will now generate plans utilizing partial indexes with `IS NOT NULL` predicates in more cases. #125487
- The `SHOW TYPES` statement now includes user-defined composite types. It omitted those types ever since composite types were added in v23.1. #124730
- Added the `COMMENT ON TYPE` statement for implicit transactions. #124942

### Operational changes

- Added a distinction between row updates (`row`) and resolved timestamp (`resolved`) messages in some changefeed metrics. #122645
- Modified the default Grafana dashboards to include a breakdown by message type for the `changefeed_emitted_rows` metric. #122802
- Updated the generated doc descriptions for system visible cluster settings to reflect these are read-only for CockroachDB Serverless and read-write for the other deployments. #124028
- Added the cluster setting `debug.zip.redact_addresses.enabled` that allows the user to enable or disable redaction of fields like `hostname` and IP addresses. #123544
- Improved disk usage metric reporting over volumes that dynamically change their size over the life of the `cockroach` process. #124999
- `crdb_internal.cluster_execution_insights.txt` and `crdb_internal.cluster_txn_execution_insights.txt` have been removed from the debug zip. These files contained cluster-wide insights for statements and transactions. Users can still rely on the per-node execution insights in `crdb_internal.node_execution_insights.txt` and `crdb_internal.node_txn_execution_insights.txt`. #125654
- Removed the stuck rangefeed cancel feature and its related cluster setting `kv.rangefeed.range_stuck_threshold`, because it was only available in non-mux rangefeeds. Previously, the stuck rangefeed cancel feature was introduced to restart single rangefeeds automatically if they had not received KV updates for some time. #125663
- Fixed a bug where collection of debug information for very long-running jobs could use excessive space in the `job_info` system table and/or cause some interactions with the jobs system to become slow. #126084
- All system tables are now visible in application virtual clusters that were created before v24.1. #125979

### DB Console changes

- The Goroutine Scheduling Latency graph has been added to the Runtime dasboard. #121369
- Updated the time format to use a `.` (dot) as separation between seconds and milliseconds, which affects many pages in the DB Console. #121456
- The Storage dashboard now contains a graph categorizing disk writes that contribute to `sys.host.disk.write.bytes` according to the source of the write (WAL, compactions, SSTable ingestion, memtable flushes, raft snapshots, encryption registry, logs, SQL columnar spill, or SQL row spill). #119024
- The favicon now renders properly for the DB Console along with other image files. #121380
- The color of Unavailable Ranges in the Summary panel of the Replication dashboard is now red when nonzero. #123120
- Removed the `$` sign on the Databases and Jobs pages in the DB Console. #125370
- Added two graphs to the Storage dashboard that display count and size of L0 SSTables in Pebble. This provides increased visibility into L0 compaction issues. #125653
- Removed the p95 metrics from the tooltip on the Job Latency graph of the TTL dashboard, because there are no p95 values computed for any of the metrics. #122345
- Updated the Storage dashboard graphs to show most metrics on a per-store basis when viewing a single node's metrics. This provides increased visibility into issues caused by specific stores on each node. #125699

### Bug fixes

- Fixed a crash introduced in v23.2.5 and v24.1.0-beta.2 that could occur when planning statistics collection on a table with a virtual computed column using a user-defined type when the newly introduced cluster setting `sql.stats.virtual_computed_columns.enabled` is set to `true`. This setting was introduced in v23.2.4 and v24.1.0-alpha.1. #123926
- Fixed handling in the declarative schema changer when columns are included in the `STORING()` clause of `CREATE INDEX`. It now checks if the column is virtual beforehand, and properly detects when a column is already handled by an existing index when the column name has UTF-8 characters. #124981
- Fixed an issue where adding a column with a default value of an empty array would not succeed. #125284
- `ALTER TABLE ... ADD CONSTRAINT UNIQUE` will now fail with a well-formed error message and code `42601` if a statement tries to add a `UNIQUE` constraint on an expression. #125282
- Resolved a log message that read: `expiration of liveness record ... is not greater than expiration of the previous lease ... after liveness heartbeat`. This message is no longer possible. #124885
- Fixed a bug in v24.1, v23.2, and v23.1 where using the `changefeed.aggregator.flush_jitter` cluster setting with `min_checkpoint_frequency` set to `0` could cause panics. #125317
- Fixed a bug where the `public` schema would be created with the wrong owner. Previously, the `admin` role would own the `public` schema. Now the database owner is also the owner of the `public` schema. The ownership can be altered after the schema is created. #124894
- Previously, CockroachDB would hit an internal error when evaluating inserts into `REGIONAL BY ROW` tables where the source is a `VALUES` clause with a single row and at least one boolean expression. The bug was introduced in v23.2.0 and is now fixed. #125492
- Fixed a bug in logging where an error code was misreported for canceled queries. This bug affected the `SQL_PERF` (slow query logs) and `SQL_EXEC` (sql exec logs) logging channels. #124371
- Fixed a bug in which constant `LIKE` patterns containing certain sequences of backslashes did not become constrained scans. This bug has been present since v21.1.13 when support for building constrained scans from `LIKE` patterns containing backslashes was added. #125507
- Fixed a bug introduced in v22.1 where `cockroach-sql` does not recognize the `--format` flag. #124735
- Fixed a bug where `CREATE TABLE` with index expressions could hit undefined column errors on transaction retries. #125910
- Fixed a bug where some DDL and administrative statements used within a common table expression would fail with an `unrecognized relational expression type` internal error. #125959
- Fixed a bug in `cockroach debug tsdump` where the command fails when a custom SQL port is used and the `--format=raw` flag is provided. #125626
- Attempts to alter the data type of a column used in a computed column expression are now blocked. #125870
- Fixed the statistics estimation code in the optimizer so it does not use the empty histograms produced if histogram collection has been disabled during stats collection due to excessive memory utilization. Now the optimizer will rely on distinct counts instead of the empty histograms and should produce better plans as a result. This bug has existed since CockroachDB v22.1. #125968

### Performance improvements

- More efficient query plans are now generated for queries with text similarity filters, e.g., `text_col % 'foobar'`. These plans are generated if the `optimizer_use_trigram_similarity_optimization` session setting is enabled, which it is by default. This setting is disabled by default in previous versions. #121973
- Schema changes that cause a data backfill, such as adding a non-nullable column or changing the primary key, will now split and scatter the temporary indexes used to perform the change. This reduces the chance of causing a write hotspot that can slow down foreground traffic. #120736
- Multiple or large numbers of grants on tables and types within one transaction now run faster. #123414
- Lock operations are now removed from query plans when the optimizer can prove that no rows would be locked. #124830
- Some privilege checks when scanning the `crdb_internal.system_jobs` internal table now happen once before the scan, instead of once for each row. This will improve performance for queries that read from `crdb_internal.system_jobs`. #117438
- Improved the initial range descriptor scan on startup. Node startup should now be faster on larger stores. #123959
- Previously, concurrent transactions that constructed large write batches could cause hotspots. This was because the transaction record for all ranges would coalesce on a single range, which would then cause this range's leaseholder to perform all intent resolution work. This is fixed by distributing transaction records randomly across the ranges the write batch touches. In turn, hotspots are prevented. #125744

### Contributors

This release includes 1234 merged PRs by 97 authors.