From e176b87a6323711bc922484e8fff100e204ab63b Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Thu, 9 Oct 2025 15:26:39 +0000 Subject: [PATCH 1/4] Update release notes for v25.4-v25.4.0-beta.2 --- src/current/_data/versions.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/current/_data/versions.csv b/src/current/_data/versions.csv index 434d5404279..8681b192615 100644 --- a/src/current/_data/versions.csv +++ b/src/current/_data/versions.csv @@ -18,4 +18,4 @@ v24.3,2024-11-18,2025-11-18,2026-05-18,24.3.11,24.3.12,2025-05-05,2026-05-05,202 v25.1,2025-02-18,2025-08-18,N/A,N/A,N/A,N/A,N/A,N/A,v24.3,release-25.1,2029-02-18 v25.2,2025-05-09,2026-05-12,2026-11-12,N/A,N/A,N/A,N/A,N/A,v25.1,release-25.2,2029-05-09 v25.3,2025-08-04,2026-02-04,N/A,N/A,N/A,N/A,N/A,N/A,v25.2,release-25.3,2029-08-04 -v25.4,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,v25.3,release-25.3,N/A +v25.4,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,v25.3,release-25.4,N/A From 2f6beaa61258d6a47662cde429ae13ee59167b52 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Thu, 9 Oct 2025 15:26:41 +0000 Subject: [PATCH 2/4] Update release notes for v25.4-v25.4.0-beta.2 --- src/current/_data/releases.yml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/current/_data/releases.yml b/src/current/_data/releases.yml index f236d7abb3b..f0455d6d3c6 100644 --- a/src/current/_data/releases.yml +++ b/src/current/_data/releases.yml @@ -9561,3 +9561,31 @@ docker_arm_limited_access: false source: true previous_release: v25.4.0-alpha.2 + + +- release_name: v25.4.0-beta.2 + major_version: v25.4 + release_date: '2025-10-10' + release_type: Testing + go_version: go1.23.12 + sha: c9fbbfff437b9283883a269402038f5952cc4863 + has_sql_only: true + has_sha256sum: true + mac: + mac_arm: true + mac_arm_experimental: true + mac_arm_limited_access: false + windows: true + linux: + linux_arm: true + linux_arm_experimental: false + linux_arm_limited_access: false + linux_intel_fips: true + linux_arm_fips: false + docker: + docker_image: cockroachdb/cockroach-unstable + docker_arm: true + docker_arm_experimental: false + docker_arm_limited_access: false + source: true + previous_release: v25.4.0-beta.1 From 718422761c223e33ce32a5aa995eab8e9d14f5a7 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Thu, 9 Oct 2025 15:26:42 +0000 Subject: [PATCH 3/4] Update release notes for v25.4-v25.4.0-beta.2 --- .../releases/v25.4/v25.4.0-beta.2.md | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 src/current/_includes/releases/v25.4/v25.4.0-beta.2.md diff --git a/src/current/_includes/releases/v25.4/v25.4.0-beta.2.md b/src/current/_includes/releases/v25.4/v25.4.0-beta.2.md new file mode 100644 index 00000000000..d4af0f8a609 --- /dev/null +++ b/src/current/_includes/releases/v25.4/v25.4.0-beta.2.md @@ -0,0 +1,93 @@ +## v25.4.0-beta.2 + +Release Date: October 10, 2025 + +{% include releases/new-release-downloads-docker-image.md release=include.release %} + +

General changes

+ +- The changefeed bulk + delivery setting was made optional. [#154953][#154953] + +

SQL language changes

+ +- Added the `SHOW INSPECT ERRORS` command. This command can be used to view issues that are identified by running the `INSPECT` command to validate tables and indexes. [#154337][#154337] +- Added the `sql.catalog.allow_leased_descriptors.enabled` cluster setting, which is false by default. When set to true, queries that access the `pg_catalog` or `information_schema` can use cached leased descriptors to populate the data in those tables, with the tradeoff that some of the data could be stale. [#154491][#154491] +- We now support index acceleration for a subset of jsonb_path_exists filters. + + Given the `jsonb_path_exists(json_obj, json_path_expression)`, we only support + inverted index for json_path_expression that matches one of the following + patterns: + + - The json_path_expression must NOT be in STRICT mode. + - keychain mode: $.[key|wildcard].[key|wildcard]... + - For this mode, we will generate a prefix span for the inverted expression. + - filter with end value mode, with equality check: $.[key|wildcard]? (@.[key|wildcard].[key|wildcard]... == [string|number|null|boolean]) + - For this mode, since the end value is fixed, we will generate a single value span. + + Specifically, we don't support the following edge case: + + - $ + - $[*] + - $.a.b.c == 12 or $.a.b.c > 12 or $.a.b.c < 12 (operation expression) + - $.a.b ? (@.a > 10) (filter, with inequality check) + + Note that the cases we support is to use `jsonb_path_exists` in filters, + as in, when they are used in the WHERE clause. [#154631][#154631] +- The optimizer can now use table statistics + that merge the latest full statistic with all newer partial statistics, + including those over arbitrary constraints over a single span. [#154755][#154755] + +

Operational changes

+ +- Two new changefeed metrics for tracking + the max skew between a changefeed's slowest and fastest span/table + have been added. The metrics are gauge metrics with the names + `changefeed.progress_skew.{span,table}`. [#154166][#154166] +- The metrics `sql.select.started.count`, `sql.insert.started.count`, `sql.update.started.count`, and `sql.delete.started.count` are now emitted with labels under the common metric name `sql.started.count`, using a `query_type` label to distinguish each operation. [#154388][#154388] +- Added the cluster setting `storage.unhealthy_write_duration` (defaults to 20s), which is used to indicate to the allocator that a store's disk is unhealthy. The cluster setting `kv.allocator.disk_unhealthy_io_overload_score` controls the overload score assigned to a store with an unhealthy disk, where a higher score results in preventing lease or replica transfers to the store, or shedding of leases by the store. The default value of that setting is 0, so the allocator behavior is unaffected. [#154459][#154459] +- Added cluster setting `sql.schema.approx_max_object_count` (default: 20,000) to prevent creation of new schema objects when the limit is exceeded. The check uses cached table statistics for performance and is approximate - it may not be immediately accurate until table statistics are updated by the background statistics refreshing job. Clusters that have been running stably with a larger object count should raise the limit or disable the limit by setting the value to 0. In future releases, the default value for this setting will be raised as more CockroachDB features support larger object counts. [#154576][#154576] + +

Bug fixes

+ +- Vector index backfill will now properly track job + progress in SHOW JOBS output. [#154261][#154261] +- A bug has been fixed that caused panics when + executing `COPY` into a table with hidden columns and expression + indexes. The panic only occurred when the + `expect_and_ignore_not_visible_columns_in_copy` setting was enabled. + This bug has been present since + `expect_and_ignore_not_visible_columns_in_copy` was introduced in + v22.1.0. [#154289][#154289] +- **Idle latency** on the **Transaction Details** page in the DB Console is now reported more accurately. Previously, transactions that used prepared statements (e.g., with placeholders) overcounted idle time, while those that included observer statements (common in the SQL CLI) undercounted it. [#154385][#154385] +- Fixed a bug where `RESTORE` of a database with a `SECONDARY REGION` did not apply the lease preferences for that region. [#154659][#154659] +- A bug where a changefeed could perform + many unnecessary job progress saves during an initial scan has + been fixed. [#154709][#154709] +- A bug where a changefeed targeting only a subset + of a table's column families could become stuck has been fixed. [#154915][#154915] + +

Performance improvements

+ +- The cost of generic query plans + is now calculated based on worst-case selectivities for placeholder + equalities (e.g., x = $1). This reduces the chance of suboptimal generic + query plans being chosen when `plan_cache_mode=auto`. [#154899][#154899] + + +[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 +[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 +[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 +[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 +[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 +[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 +[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 +[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 +[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 +[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 +[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 +[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 +[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 +[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 +[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 +[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 From 83fa51b426365fc3c1507e0c2a06cdf3ee62edd4 Mon Sep 17 00:00:00 2001 From: Rich Loveland Date: Thu, 9 Oct 2025 11:58:28 -0400 Subject: [PATCH 4/4] Various edits --- .../releases/v25.4/v25.4.0-beta.2.md | 56 +++++-------------- 1 file changed, 14 insertions(+), 42 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.0-beta.2.md b/src/current/_includes/releases/v25.4/v25.4.0-beta.2.md index d4af0f8a609..c12039d534c 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-beta.2.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-beta.2.md @@ -13,67 +13,39 @@ Release Date: October 10, 2025 - Added the `SHOW INSPECT ERRORS` command. This command can be used to view issues that are identified by running the `INSPECT` command to validate tables and indexes. [#154337][#154337] - Added the `sql.catalog.allow_leased_descriptors.enabled` cluster setting, which is false by default. When set to true, queries that access the `pg_catalog` or `information_schema` can use cached leased descriptors to populate the data in those tables, with the tradeoff that some of the data could be stale. [#154491][#154491] -- We now support index acceleration for a subset of jsonb_path_exists filters. - - Given the `jsonb_path_exists(json_obj, json_path_expression)`, we only support - inverted index for json_path_expression that matches one of the following - patterns: - +- We now support index acceleration for a subset of jsonb_path_exists filters. Given the `jsonb_path_exists(json_obj, json_path_expression)`, we only support inverted index for json_path_expression that matches one of the following patterns: - The json_path_expression must NOT be in STRICT mode. - keychain mode: $.[key|wildcard].[key|wildcard]... - For this mode, we will generate a prefix span for the inverted expression. - filter with end value mode, with equality check: $.[key|wildcard]? (@.[key|wildcard].[key|wildcard]... == [string|number|null|boolean]) - For this mode, since the end value is fixed, we will generate a single value span. - - Specifically, we don't support the following edge case: - - - $ - - $[*] - - $.a.b.c == 12 or $.a.b.c > 12 or $.a.b.c < 12 (operation expression) - - $.a.b ? (@.a > 10) (filter, with inequality check) - - Note that the cases we support is to use `jsonb_path_exists` in filters, - as in, when they are used in the WHERE clause. [#154631][#154631] -- The optimizer can now use table statistics - that merge the latest full statistic with all newer partial statistics, - including those over arbitrary constraints over a single span. [#154755][#154755] + - Specifically, we don't support the following edge case: + - $ + - $[*] + - $.a.b.c == 12 or $.a.b.c > 12 or $.a.b.c < 12 (operation expression) + - $.a.b ? (@.a > 10) (filter, with inequality check) + - Note that the cases we support is to use `jsonb_path_exists` in filters, as in, when they are used in the WHERE clause. [#154631][#154631] +- The optimizer can now use table statistics that merge the latest full statistic with all newer partial statistics, including those over arbitrary constraints over a single span. [#154755][#154755]

Operational changes

-- Two new changefeed metrics for tracking - the max skew between a changefeed's slowest and fastest span/table - have been added. The metrics are gauge metrics with the names - `changefeed.progress_skew.{span,table}`. [#154166][#154166] +- Two new changefeed metrics for tracking the max skew between a changefeed's slowest and fastest span/table have been added. The metrics are gauge metrics with the names `changefeed.progress_skew.{span,table}`. [#154166][#154166] - The metrics `sql.select.started.count`, `sql.insert.started.count`, `sql.update.started.count`, and `sql.delete.started.count` are now emitted with labels under the common metric name `sql.started.count`, using a `query_type` label to distinguish each operation. [#154388][#154388] - Added the cluster setting `storage.unhealthy_write_duration` (defaults to 20s), which is used to indicate to the allocator that a store's disk is unhealthy. The cluster setting `kv.allocator.disk_unhealthy_io_overload_score` controls the overload score assigned to a store with an unhealthy disk, where a higher score results in preventing lease or replica transfers to the store, or shedding of leases by the store. The default value of that setting is 0, so the allocator behavior is unaffected. [#154459][#154459] - Added cluster setting `sql.schema.approx_max_object_count` (default: 20,000) to prevent creation of new schema objects when the limit is exceeded. The check uses cached table statistics for performance and is approximate - it may not be immediately accurate until table statistics are updated by the background statistics refreshing job. Clusters that have been running stably with a larger object count should raise the limit or disable the limit by setting the value to 0. In future releases, the default value for this setting will be raised as more CockroachDB features support larger object counts. [#154576][#154576]

Bug fixes

-- Vector index backfill will now properly track job - progress in SHOW JOBS output. [#154261][#154261] -- A bug has been fixed that caused panics when - executing `COPY` into a table with hidden columns and expression - indexes. The panic only occurred when the - `expect_and_ignore_not_visible_columns_in_copy` setting was enabled. - This bug has been present since - `expect_and_ignore_not_visible_columns_in_copy` was introduced in - v22.1.0. [#154289][#154289] +- Vector index backfill will now properly track job progress in SHOW JOBS output. [#154261][#154261] +- A bug has been fixed that caused panics when executing `COPY` into a table with hidden columns and expression indexes. The panic only occurred when the `expect_and_ignore_not_visible_columns_in_copy` setting was enabled. This bug has been present since `expect_and_ignore_not_visible_columns_in_copy` was introduced in v22.1.0. [#154289][#154289] - **Idle latency** on the **Transaction Details** page in the DB Console is now reported more accurately. Previously, transactions that used prepared statements (e.g., with placeholders) overcounted idle time, while those that included observer statements (common in the SQL CLI) undercounted it. [#154385][#154385] - Fixed a bug where `RESTORE` of a database with a `SECONDARY REGION` did not apply the lease preferences for that region. [#154659][#154659] -- A bug where a changefeed could perform - many unnecessary job progress saves during an initial scan has - been fixed. [#154709][#154709] -- A bug where a changefeed targeting only a subset - of a table's column families could become stuck has been fixed. [#154915][#154915] +- A bug where a changefeed could perform many unnecessary job progress saves during an initial scan has been fixed. [#154709][#154709] +- A bug where a changefeed targeting only a subset of a table's column families could become stuck has been fixed. [#154915][#154915]

Performance improvements

-- The cost of generic query plans - is now calculated based on worst-case selectivities for placeholder - equalities (e.g., x = $1). This reduces the chance of suboptimal generic - query plans being chosen when `plan_cache_mode=auto`. [#154899][#154899] - +- The cost of generic query plans is now calculated based on worst-case selectivities for placeholder equalities (e.g., x = $1). This reduces the chance of suboptimal generic query plans being chosen when `plan_cache_mode=auto`. [#154899][#154899] [#154337]: https://github.com/cockroachdb/cockroach/pull/154337 [#154491]: https://github.com/cockroachdb/cockroach/pull/154491