From 2bfd904a282eaba03eb700b7e66937bcc8ea8e1a Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Mon, 15 Sep 2025 16:42:26 +0000 Subject: [PATCH 01/41] Update release notes for v25.4-v25.4.0-alpha.1 --- 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..2e9b5927053 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,master,N/A From 4b3b512eb9be2c01d9202c1335a209c5120cffaf Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Mon, 15 Sep 2025 16:42:29 +0000 Subject: [PATCH 02/41] Update release notes for v25.4-v25.4.0-alpha.1 --- src/current/_data/releases.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/current/_data/releases.yml b/src/current/_data/releases.yml index 00615884867..0176d8d204f 100644 --- a/src/current/_data/releases.yml +++ b/src/current/_data/releases.yml @@ -9372,3 +9372,30 @@ docker_arm_limited_access: false source: true previous_release: v23.2.27 + + +- release_name: v25.4.0-alpha.1 + major_version: v25.4 + release_date: '2025-09-16' + release_type: Testing + go_version: go1.23.12 + sha: ea6772d06fc62b05b4b6e72602853a8e591bfd77 + 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 From 13c37f2f8b47d298ee7db3c1c3b3f2426f22f06f Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Mon, 15 Sep 2025 16:42:31 +0000 Subject: [PATCH 03/41] Update release notes for v25.4-v25.4.0-alpha.1 --- .../releases/v25.4/v25.4.0-alpha.1.md | 144 ++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md diff --git a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md new file mode 100644 index 00000000000..a2784735794 --- /dev/null +++ b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md @@ -0,0 +1,144 @@ +## v25.4.0-alpha.1 + +Release Date: September 16, 2025 + +{% include releases/new-release-downloads-docker-image.md release=include.release %} + +

General changes

+ +- Restore jobs now log errors on retry to + the job messages table. [#149821][#149821] + +

SQL language changes

+ +- Implemented levenshtein_less_equal(string, string, int) + and levenshtein_less_equal(string, string, int, int, int, int) built-in + functions. + + Co-authored-by: Charles Nguyen + Co-authored-by: Azanul + Co-authored-by: Rafi Shamim [#104649][#104649] +- The functionality provided by session + variable `enforce_home_region_follower_reads_enabled` was deprecated in + v24.2.4 and is now removed. (The variable itself remains for backward + compatibility but has no effect.) (Note that related session variable + `enforce_home_region` is _not_ deprecated and still functions normally.) [#148314][#148314] +- `LTREE` is now supported with ancestry operators and with the `concat` operator. Specifically, CockroachDB now allows `ltree @> ltree`, `ltree[] @> ltree`, `ltree @> ltree[]`, `ltree <@ ltree`, `ltree[] <@ ltree`, and `ltree <@ ltree[]` binary comparisons, as well as `ltree[] ?@> ltree`, `ltree[] ?<@ ltree`, and `ltree || ltree` binary operations. The `?@>` and `?<@` are new binary operators that return the first ltree (or `NULL`) that is an ancestor or descendant of the right ltree argument in the array. [#150598][#150598] +- All PostgreSQL built-in functions for `LTREE` are now supported: `subltree()`, `subpath()`, `nlevel()`, `index()`, `text2ltree()`, `ltree2text()`, and `lca()`. While the `lca()` function in PostgreSQL specifically limits up to 8 LTREE args, the CockroachDB `lca()` function accepts any variable number of ltree args. [#150647][#150647] +- Improve the optimizer to hoist projections + above joins in more cases, which can lead to better query plans. This + can be enabled by the new session variable + `optimizer_use_improved_hoist_join_project`. [#150887][#150887] +- When `sql_safe_updates` is enabled, the `ALTER TABLE ... LOCALITY` statement will be blocked when trying to convert an existing table to `REGIONAL BY ROW`, unless a region column has been added to the table. This protects against undesired behavior that caused `UPDATE` or `DELETE` statements to fail against the table while the locality change was in progress. [#151423][#151423] +- Added a new session variable, `disable_optimizer_rules`, which allows users to provide a comma-separated list of optimizer rules to disable during query optimization. This allows users to avoid rules that are known to create a suboptimal query plan for specific queries. [#151959][#151959] +- SQL observability commands SHOW TRANSACTIONS, + SHOW QUERIES, and SHOW SESSIONS now include an isolation_level column showing + the isolation level of the active transaction, or the session's default + isolation level when there is no active transaction. [#152352][#152352] +- The default value of + `use_soft_limit_for_distribute_scan` session variable has been changed + to `true`. This means that, by default, the soft limit (if available) + will be used to determine whether a scan is "large" and, thus, should be + distributed. For example, with "estimated row count: 100 - 10,000" we'll + use 100 as the estimate to compare against the value of + `distribute_scan_row_count_threshold`. [#152557][#152557] + +

Operational changes

+ +- `auth.ldap.conn.latency.internal` has been added to denote the internal authentication time for ldap auth method. [#151105][#151105] +- Restricted access to internal tables in the `crdb_internal` schema. Only a predefined allowlist of internal objects is accessible when the session variable `allow_unsafe_internals` is enabled or when the caller is internal. [#151804][#151804] +- In v26.1, changefeed events will be logged to the `CHANGEFEED` logging channel instead of `TELEMETRY`. To test the impact of this change before upgrading, set the cluster setting `log.channel_compatibility_mode.enabled` to `false`. This redirects changefeed logs to the `CHANGEFEED` channel and should be tested only in non-production environments. [#151807][#151807] +- Delegate queries (such as `SHOW DATABASES`) are now excluded from unsafe SQL checks that restrict access to the `system` database and `crdb_internal` schema. This change ensures that these commands continue to function even when access to internal components is otherwise restricted. [#152084][#152084] +- the PCR reader tenant is always destroyed on cutover [#152509][#152509] + +

Bug fixes

+ +- Fixed a bug that would allow a race condition in foreign key cascades under `READ COMMITTED` and `REPEATABLE READ` isolation levels. [#150291][#150291] +- Fix handling of empty arrays in JSONPath lax mode + comparisons. Empty arrays now return false for comparisons in lax mode and + null in strict mode, matching PostgreSQL behavior. [#151226][#151226] +- Added an automatic repair for dangling or invalid entries in the `system.comments` table. [#151737][#151737] +- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. [#151947][#151947] +- Fixed a bug where executing certain statements with `BETWEEN SYMMETRIC` expressions could panic if used with values of different types, such as `... b'bytes' BETWEEN SYMMETRIC 'a' AND 'c'`. [#151951][#151951] +- Fixed a bug where `SHOW TABLES` would show inaccurate row counts if the most recent statistics collection was partial. [#152033][#152033] +- Fixed a bug that prevented `RESTORE` from working if there were computed columns or `ON UPDATE` expressions that referenced user-defined functions (UDFs). This bug was introduced in v25.3.0. [#152193][#152193] +- A bug that would allow FK violations as a result + of some combinations of concurrent Read Committed and Serializable + transactions has been fixed. + + Note that if both Serializable and weaker-isolation transactions will + concurrently modify rows involved in FK relationships, the Serializable + transactions must have the following session variables set to prevent + any possible FK violations: + + - `SET enable_implicit_fk_locking_for_serializable = on;` + - `SET enable_shared_locking_for_serializable = on;` + - `SET enable_durable_locking_for_serializable = on;` [#152245][#152245] +- In 25.1 we changed the physical planning + heuristics so that large constrained table scans, estimated to scan + at least 10k rows (controlled via `distribute_scan_row_count_threshold`), + would force plan distribution with `distsql=auto` mode. However, if + the scan has a "soft limit" we would still use the full estimate (e.g. + in "estimated row count: 100 - 10,000" we would use 10k as the estimate) + which can lead to distributing queries that shouldn't be, increasing the + query latency. New session variable `use_soft_limit_for_distribute_scan` + (default `false`) determines whether we use the soft limit when deciding + that a scan is "large" or not. [#152300][#152300] +- `pg_class.pg_depend` now contains entries with `deptype='i'` (internal) for identity columns that own sequences. These previously had `deptype='a'` (auto). [#152309][#152309] +- Fixed a bug that caused an error when dropping a column and a `UNIQUE WITHOUT INDEX` constraint that referenced it in the same transaction. [#152447][#152447] +- Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions. [#152670][#152670] + +

Performance improvements

+ +- LTREE is now index accelerated with the + `@>` operator. [#152353][#152353] +- LTREE is now index accelerated with the + `<@` operator. [#152353][#152353] +- Lookup joins can now be used on + tables with virtual columns even if the type of the search argument is + not identical to the column type referenced in the virtual column. [#152399][#152399] + +

Build changes

+ +- Revert Go version back to 1.23.7. + Epic: none [#152023][#152023] + +

Miscellaneous

+ +- Tunes S3 client retry behavior to be more reliable in the + presence of correlated errors. [#151817][#151817] +- Upgrade to Go 1.23.12 [#152207][#152207] + + +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 +[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 +[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 +[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 +[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 From 5cd3a817d747e0691f2220994f1adf3904afca77 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Mon, 15 Sep 2025 18:09:34 +0000 Subject: [PATCH 04/41] Update release notes for v25.4-v25.4.0-alpha.1 From 61a5d3973b4883b1b83e1f940e9e35ab0281c347 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Mon, 15 Sep 2025 18:09:35 +0000 Subject: [PATCH 05/41] Update release notes for v25.4-v25.4.0-alpha.1 From 61d0c0f7ec3f247031e8a0feed04f94db372aeb5 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Mon, 15 Sep 2025 18:09:35 +0000 Subject: [PATCH 06/41] Update release notes for v25.4-v25.4.0-alpha.1 --- .../releases/v25.4/v25.4.0-alpha.1.md | 104 ++++++------------ 1 file changed, 31 insertions(+), 73 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md index a2784735794..533dab1064a 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md @@ -11,37 +11,15 @@ Release Date: September 16, 2025

SQL language changes

-- Implemented levenshtein_less_equal(string, string, int) - and levenshtein_less_equal(string, string, int, int, int, int) built-in - functions. - - Co-authored-by: Charles Nguyen - Co-authored-by: Azanul - Co-authored-by: Rafi Shamim [#104649][#104649] -- The functionality provided by session - variable `enforce_home_region_follower_reads_enabled` was deprecated in - v24.2.4 and is now removed. (The variable itself remains for backward - compatibility but has no effect.) (Note that related session variable - `enforce_home_region` is _not_ deprecated and still functions normally.) [#148314][#148314] +- Implemented the `levenshtein_less_equal(string, string, int)` and `levenshtein_less_equal(string, string, int, int, int, int)` built-in functions, which calculate the Levenshtein distance between two strings. [#104649][#104649] +- The functionality provided by session variable `enforce_home_region_follower_reads_enabled` was deprecated in v24.2.4 and is now removed. (The variable itself remains for backward compatibility but has no effect.) Note that the related session variable `enforce_home_region` is **not** deprecated and still functions normally. [#148314][#148314] - `LTREE` is now supported with ancestry operators and with the `concat` operator. Specifically, CockroachDB now allows `ltree @> ltree`, `ltree[] @> ltree`, `ltree @> ltree[]`, `ltree <@ ltree`, `ltree[] <@ ltree`, and `ltree <@ ltree[]` binary comparisons, as well as `ltree[] ?@> ltree`, `ltree[] ?<@ ltree`, and `ltree || ltree` binary operations. The `?@>` and `?<@` are new binary operators that return the first ltree (or `NULL`) that is an ancestor or descendant of the right ltree argument in the array. [#150598][#150598] - All PostgreSQL built-in functions for `LTREE` are now supported: `subltree()`, `subpath()`, `nlevel()`, `index()`, `text2ltree()`, `ltree2text()`, and `lca()`. While the `lca()` function in PostgreSQL specifically limits up to 8 LTREE args, the CockroachDB `lca()` function accepts any variable number of ltree args. [#150647][#150647] -- Improve the optimizer to hoist projections - above joins in more cases, which can lead to better query plans. This - can be enabled by the new session variable - `optimizer_use_improved_hoist_join_project`. [#150887][#150887] +- Improved the optimizer to hoist projections above joins in more cases, which can lead to better query plans. This behavior can be enabled with the new session variable `optimizer_use_improved_hoist_join_project`. [#150887][#150887] - When `sql_safe_updates` is enabled, the `ALTER TABLE ... LOCALITY` statement will be blocked when trying to convert an existing table to `REGIONAL BY ROW`, unless a region column has been added to the table. This protects against undesired behavior that caused `UPDATE` or `DELETE` statements to fail against the table while the locality change was in progress. [#151423][#151423] - Added a new session variable, `disable_optimizer_rules`, which allows users to provide a comma-separated list of optimizer rules to disable during query optimization. This allows users to avoid rules that are known to create a suboptimal query plan for specific queries. [#151959][#151959] -- SQL observability commands SHOW TRANSACTIONS, - SHOW QUERIES, and SHOW SESSIONS now include an isolation_level column showing - the isolation level of the active transaction, or the session's default - isolation level when there is no active transaction. [#152352][#152352] -- The default value of - `use_soft_limit_for_distribute_scan` session variable has been changed - to `true`. This means that, by default, the soft limit (if available) - will be used to determine whether a scan is "large" and, thus, should be - distributed. For example, with "estimated row count: 100 - 10,000" we'll - use 100 as the estimate to compare against the value of - `distribute_scan_row_count_threshold`. [#152557][#152557] +- The SQL observability statements `SHOW TRANSACTIONS`, `SHOW QUERIES`, and `SHOW SESSIONS` now include an `isolation_level` column that shows the isolation level of the active transaction, or the session's default isolation level when there is no active transaction. [#152352][#152352] +- The default value of `use_soft_limit_for_distribute_scan` session variable is now `true`. This means that, by default, the soft limit (if available) will be used to determine whether a scan is "large" and, thus, should be distributed. For example, with `estimated row count: 100 - 10,000`, CockroachDB will use `100` as the estimate to compare against the value of `distribute_scan_row_count_threshold`. [#152557][#152557]

Operational changes

@@ -62,28 +40,11 @@ Release Date: September 16, 2025 - Fixed a bug where executing certain statements with `BETWEEN SYMMETRIC` expressions could panic if used with values of different types, such as `... b'bytes' BETWEEN SYMMETRIC 'a' AND 'c'`. [#151951][#151951] - Fixed a bug where `SHOW TABLES` would show inaccurate row counts if the most recent statistics collection was partial. [#152033][#152033] - Fixed a bug that prevented `RESTORE` from working if there were computed columns or `ON UPDATE` expressions that referenced user-defined functions (UDFs). This bug was introduced in v25.3.0. [#152193][#152193] -- A bug that would allow FK violations as a result - of some combinations of concurrent Read Committed and Serializable - transactions has been fixed. - - Note that if both Serializable and weaker-isolation transactions will - concurrently modify rows involved in FK relationships, the Serializable - transactions must have the following session variables set to prevent - any possible FK violations: - +- Fixed a bug that allowed foreign-key violations to result from some combinations of concurrent `READ COMMITTED` and `SERIALIZABLE` transactions. If both `SERIALIZABLE` and weaker-isolation transactions will concurrently modify rows involved in foreign-key relationships, the `SERIALIZABLE` transactions must have the following session variables set in order to prevent any possible foreign-key violations: - `SET enable_implicit_fk_locking_for_serializable = on;` - `SET enable_shared_locking_for_serializable = on;` - `SET enable_durable_locking_for_serializable = on;` [#152245][#152245] -- In 25.1 we changed the physical planning - heuristics so that large constrained table scans, estimated to scan - at least 10k rows (controlled via `distribute_scan_row_count_threshold`), - would force plan distribution with `distsql=auto` mode. However, if - the scan has a "soft limit" we would still use the full estimate (e.g. - in "estimated row count: 100 - 10,000" we would use 10k as the estimate) - which can lead to distributing queries that shouldn't be, increasing the - query latency. New session variable `use_soft_limit_for_distribute_scan` - (default `false`) determines whether we use the soft limit when deciding - that a scan is "large" or not. [#152300][#152300] +- Added the `use_soft_limit_for_distribute_scan` session variable (default: `false`), which controls whether CockroachDB uses the soft row count estimate when deciding whether an execution plan should be distributed. In v25.1, the physical planning heuristics were changed such that large constrained table scans, estimated to scan at least 10,000 rows (controlled via `distribute_scan_row_count_threshold`), would force plan distribution when `distsql=auto`. However, if the scan had a "soft limit" CockroachDB would still use the full estimate (for example, `10,000` in `estimated row count: 100–10,000`), sometimes unnecessarily distributing queries and increasing latency. The `use_soft_limit_for_distribute_scan` session variable addresses this by allowing the planner to use the soft limit when deciding whether a scan is "large". [#152300][#152300] - `pg_class.pg_depend` now contains entries with `deptype='i'` (internal) for identity columns that own sequences. These previously had `deptype='a'` (auto). [#152309][#152309] - Fixed a bug that caused an error when dropping a column and a `UNIQUE WITHOUT INDEX` constraint that referenced it in the same transaction. [#152447][#152447] - Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions. [#152670][#152670] @@ -92,11 +53,8 @@ Release Date: September 16, 2025 - LTREE is now index accelerated with the `@>` operator. [#152353][#152353] -- LTREE is now index accelerated with the - `<@` operator. [#152353][#152353] -- Lookup joins can now be used on - tables with virtual columns even if the type of the search argument is - not identical to the column type referenced in the virtual column. [#152399][#152399] +- `LTREE` is now index-accelerated with the `<@` operator. [#152353][#152353] +- Lookup joins can now be used on tables with virtual columns even if the type of the search argument is not identical to the column type referenced in the virtual column. [#152399][#152399]

Build changes

@@ -110,35 +68,35 @@ Release Date: September 16, 2025 - Upgrade to Go 1.23.12 [#152207][#152207] -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 -[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 [#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 [#151959]: https://github.com/cockroachdb/cockroach/pull/151959 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 [#152352]: https://github.com/cockroachdb/cockroach/pull/152352 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 [#152353]: https://github.com/cockroachdb/cockroach/pull/152353 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 [#150647]: https://github.com/cockroachdb/cockroach/pull/150647 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 [#151804]: https://github.com/cockroachdb/cockroach/pull/151804 +[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 [#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 [#152207]: https://github.com/cockroachdb/cockroach/pull/152207 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 [#150598]: https://github.com/cockroachdb/cockroach/pull/150598 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 [#152084]: https://github.com/cockroachdb/cockroach/pull/152084 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 From 956da89f39ea7275e61c6423fdb300c310f2fd9b Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Mon, 15 Sep 2025 18:37:24 +0000 Subject: [PATCH 07/41] Update release notes for v25.4-v25.4.0-alpha.1 From a4dd4b14dc352b8b0f417aef392fae37dd7bb34c Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Mon, 15 Sep 2025 18:37:27 +0000 Subject: [PATCH 08/41] Update release notes for v25.4-v25.4.0-alpha.1 From 48ec5e7d689ab7b34bfac2dcf0361fc8d17d2e68 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Mon, 15 Sep 2025 18:37:29 +0000 Subject: [PATCH 09/41] Update release notes for v25.4-v25.4.0-alpha.1 --- .../releases/v25.4/v25.4.0-alpha.1.md | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md index 533dab1064a..09c9cc94048 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md @@ -68,35 +68,35 @@ Release Date: September 16, 2025 - Upgrade to Go 1.23.12 [#152207][#152207] -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 [#152352]: https://github.com/cockroachdb/cockroach/pull/152352 -[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 [#150647]: https://github.com/cockroachdb/cockroach/pull/150647 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 [#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 [#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 [#151804]: https://github.com/cockroachdb/cockroach/pull/151804 [#151951]: https://github.com/cockroachdb/cockroach/pull/151951 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 [#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 [#151817]: https://github.com/cockroachdb/cockroach/pull/151817 [#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 -[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 From a1473dd7d69f019a568f127a66169c6274211f47 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Mon, 15 Sep 2025 19:22:28 +0000 Subject: [PATCH 10/41] Update release notes for v25.4-v25.4.0-alpha.1 From 355a07fef3560a0a248259a084995bdc2e46c4ef Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Mon, 15 Sep 2025 19:22:29 +0000 Subject: [PATCH 11/41] Update release notes for v25.4-v25.4.0-alpha.1 From 011b0ebb1f45919700519ef2147bc13b8526a7f8 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Mon, 15 Sep 2025 19:22:30 +0000 Subject: [PATCH 12/41] Update release notes for v25.4-v25.4.0-alpha.1 --- .../releases/v25.4/v25.4.0-alpha.1.md | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md index 09c9cc94048..f2846bbd71d 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md @@ -68,35 +68,35 @@ Release Date: September 16, 2025 - Upgrade to Go 1.23.12 [#152207][#152207] -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 +[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 [#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 [#152352]: https://github.com/cockroachdb/cockroach/pull/152352 [#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 [#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 [#152557]: https://github.com/cockroachdb/cockroach/pull/152557 [#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 [#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 [#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 [#151959]: https://github.com/cockroachdb/cockroach/pull/151959 [#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 -[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 -[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 +[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 From b984796c5a24e4404d8c956dd246e10250f2e667 Mon Sep 17 00:00:00 2001 From: mikeCRL Date: Mon, 15 Sep 2025 16:49:22 -0400 Subject: [PATCH 13/41] Set dev to v25.4 and crdb_branch_name temporarily to release-25.3 --- src/current/_config_cockroachdb.yml | 2 +- src/current/_data/versions.csv | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/current/_config_cockroachdb.yml b/src/current/_config_cockroachdb.yml index 489ec5ea9c5..84896dd48b1 100644 --- a/src/current/_config_cockroachdb.yml +++ b/src/current/_config_cockroachdb.yml @@ -4,4 +4,4 @@ destination: _site/docs homepage_title: CockroachDB Docs versions: stable: v25.3 - dev: v25.3 + dev: v25.4 diff --git a/src/current/_data/versions.csv b/src/current/_data/versions.csv index 2e9b5927053..434d5404279 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,master,N/A +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 From 64fcf9214e2d26a20ef8ee7aed46c12dd3eff35d Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Tue, 16 Sep 2025 22:08:14 +0000 Subject: [PATCH 14/41] Update release notes for v25.4-v25.4.0-alpha.1 --- 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..2e9b5927053 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,master,N/A From b03f30bc6ed2108483fe7f08b1910ed3e6b57468 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Tue, 16 Sep 2025 22:08:15 +0000 Subject: [PATCH 15/41] Update release notes for v25.4-v25.4.0-alpha.1 From c44debd2db5db5a79d35f7282dc795181d6595d0 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Tue, 16 Sep 2025 22:08:15 +0000 Subject: [PATCH 16/41] Update release notes for v25.4-v25.4.0-alpha.1 --- .../releases/v25.4/v25.4.0-alpha.1.md | 51 +++++++++---------- 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md index f2846bbd71d..00d0a49264e 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md @@ -51,8 +51,7 @@ Release Date: September 16, 2025

Performance improvements

-- LTREE is now index accelerated with the - `@>` operator. [#152353][#152353] +- `LTREE` is now index-accelerated with the `@>` operator. [#152353][#152353] - `LTREE` is now index-accelerated with the `<@` operator. [#152353][#152353] - Lookup joins can now be used on tables with virtual columns even if the type of the search argument is not identical to the column type referenced in the virtual column. [#152399][#152399] @@ -68,35 +67,35 @@ Release Date: September 16, 2025 - Upgrade to Go 1.23.12 [#152207][#152207] -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 [#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 -[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 [#152300]: https://github.com/cockroachdb/cockroach/pull/152300 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 [#152353]: https://github.com/cockroachdb/cockroach/pull/152353 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 [#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 [#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 [#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 +[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 +[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 +[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 [#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 [#150647]: https://github.com/cockroachdb/cockroach/pull/150647 -[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 +[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 From 02b1349fd5162c435a6c554221020b782db24e49 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Tue, 16 Sep 2025 22:27:15 +0000 Subject: [PATCH 17/41] Update release notes for v25.4-v25.4.0-alpha.1 From bc3e06785c2daf2845a12bcf2d0783f6c4afeb6b Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Tue, 16 Sep 2025 22:27:18 +0000 Subject: [PATCH 18/41] Update release notes for v25.4-v25.4.0-alpha.1 From afdfe7c1f9f4c1948b252a4c23670d9a2346d424 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Tue, 16 Sep 2025 22:27:20 +0000 Subject: [PATCH 19/41] Update release notes for v25.4-v25.4.0-alpha.1 --- .../releases/v25.4/v25.4.0-alpha.1.md | 95 ------------------- 1 file changed, 95 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md index 00d0a49264e..42de284ab9b 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md @@ -4,98 +4,3 @@ Release Date: September 16, 2025 {% include releases/new-release-downloads-docker-image.md release=include.release %} -

General changes

- -- Restore jobs now log errors on retry to - the job messages table. [#149821][#149821] - -

SQL language changes

- -- Implemented the `levenshtein_less_equal(string, string, int)` and `levenshtein_less_equal(string, string, int, int, int, int)` built-in functions, which calculate the Levenshtein distance between two strings. [#104649][#104649] -- The functionality provided by session variable `enforce_home_region_follower_reads_enabled` was deprecated in v24.2.4 and is now removed. (The variable itself remains for backward compatibility but has no effect.) Note that the related session variable `enforce_home_region` is **not** deprecated and still functions normally. [#148314][#148314] -- `LTREE` is now supported with ancestry operators and with the `concat` operator. Specifically, CockroachDB now allows `ltree @> ltree`, `ltree[] @> ltree`, `ltree @> ltree[]`, `ltree <@ ltree`, `ltree[] <@ ltree`, and `ltree <@ ltree[]` binary comparisons, as well as `ltree[] ?@> ltree`, `ltree[] ?<@ ltree`, and `ltree || ltree` binary operations. The `?@>` and `?<@` are new binary operators that return the first ltree (or `NULL`) that is an ancestor or descendant of the right ltree argument in the array. [#150598][#150598] -- All PostgreSQL built-in functions for `LTREE` are now supported: `subltree()`, `subpath()`, `nlevel()`, `index()`, `text2ltree()`, `ltree2text()`, and `lca()`. While the `lca()` function in PostgreSQL specifically limits up to 8 LTREE args, the CockroachDB `lca()` function accepts any variable number of ltree args. [#150647][#150647] -- Improved the optimizer to hoist projections above joins in more cases, which can lead to better query plans. This behavior can be enabled with the new session variable `optimizer_use_improved_hoist_join_project`. [#150887][#150887] -- When `sql_safe_updates` is enabled, the `ALTER TABLE ... LOCALITY` statement will be blocked when trying to convert an existing table to `REGIONAL BY ROW`, unless a region column has been added to the table. This protects against undesired behavior that caused `UPDATE` or `DELETE` statements to fail against the table while the locality change was in progress. [#151423][#151423] -- Added a new session variable, `disable_optimizer_rules`, which allows users to provide a comma-separated list of optimizer rules to disable during query optimization. This allows users to avoid rules that are known to create a suboptimal query plan for specific queries. [#151959][#151959] -- The SQL observability statements `SHOW TRANSACTIONS`, `SHOW QUERIES`, and `SHOW SESSIONS` now include an `isolation_level` column that shows the isolation level of the active transaction, or the session's default isolation level when there is no active transaction. [#152352][#152352] -- The default value of `use_soft_limit_for_distribute_scan` session variable is now `true`. This means that, by default, the soft limit (if available) will be used to determine whether a scan is "large" and, thus, should be distributed. For example, with `estimated row count: 100 - 10,000`, CockroachDB will use `100` as the estimate to compare against the value of `distribute_scan_row_count_threshold`. [#152557][#152557] - -

Operational changes

- -- `auth.ldap.conn.latency.internal` has been added to denote the internal authentication time for ldap auth method. [#151105][#151105] -- Restricted access to internal tables in the `crdb_internal` schema. Only a predefined allowlist of internal objects is accessible when the session variable `allow_unsafe_internals` is enabled or when the caller is internal. [#151804][#151804] -- In v26.1, changefeed events will be logged to the `CHANGEFEED` logging channel instead of `TELEMETRY`. To test the impact of this change before upgrading, set the cluster setting `log.channel_compatibility_mode.enabled` to `false`. This redirects changefeed logs to the `CHANGEFEED` channel and should be tested only in non-production environments. [#151807][#151807] -- Delegate queries (such as `SHOW DATABASES`) are now excluded from unsafe SQL checks that restrict access to the `system` database and `crdb_internal` schema. This change ensures that these commands continue to function even when access to internal components is otherwise restricted. [#152084][#152084] -- the PCR reader tenant is always destroyed on cutover [#152509][#152509] - -

Bug fixes

- -- Fixed a bug that would allow a race condition in foreign key cascades under `READ COMMITTED` and `REPEATABLE READ` isolation levels. [#150291][#150291] -- Fix handling of empty arrays in JSONPath lax mode - comparisons. Empty arrays now return false for comparisons in lax mode and - null in strict mode, matching PostgreSQL behavior. [#151226][#151226] -- Added an automatic repair for dangling or invalid entries in the `system.comments` table. [#151737][#151737] -- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. [#151947][#151947] -- Fixed a bug where executing certain statements with `BETWEEN SYMMETRIC` expressions could panic if used with values of different types, such as `... b'bytes' BETWEEN SYMMETRIC 'a' AND 'c'`. [#151951][#151951] -- Fixed a bug where `SHOW TABLES` would show inaccurate row counts if the most recent statistics collection was partial. [#152033][#152033] -- Fixed a bug that prevented `RESTORE` from working if there were computed columns or `ON UPDATE` expressions that referenced user-defined functions (UDFs). This bug was introduced in v25.3.0. [#152193][#152193] -- Fixed a bug that allowed foreign-key violations to result from some combinations of concurrent `READ COMMITTED` and `SERIALIZABLE` transactions. If both `SERIALIZABLE` and weaker-isolation transactions will concurrently modify rows involved in foreign-key relationships, the `SERIALIZABLE` transactions must have the following session variables set in order to prevent any possible foreign-key violations: - - `SET enable_implicit_fk_locking_for_serializable = on;` - - `SET enable_shared_locking_for_serializable = on;` - - `SET enable_durable_locking_for_serializable = on;` [#152245][#152245] -- Added the `use_soft_limit_for_distribute_scan` session variable (default: `false`), which controls whether CockroachDB uses the soft row count estimate when deciding whether an execution plan should be distributed. In v25.1, the physical planning heuristics were changed such that large constrained table scans, estimated to scan at least 10,000 rows (controlled via `distribute_scan_row_count_threshold`), would force plan distribution when `distsql=auto`. However, if the scan had a "soft limit" CockroachDB would still use the full estimate (for example, `10,000` in `estimated row count: 100–10,000`), sometimes unnecessarily distributing queries and increasing latency. The `use_soft_limit_for_distribute_scan` session variable addresses this by allowing the planner to use the soft limit when deciding whether a scan is "large". [#152300][#152300] -- `pg_class.pg_depend` now contains entries with `deptype='i'` (internal) for identity columns that own sequences. These previously had `deptype='a'` (auto). [#152309][#152309] -- Fixed a bug that caused an error when dropping a column and a `UNIQUE WITHOUT INDEX` constraint that referenced it in the same transaction. [#152447][#152447] -- Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions. [#152670][#152670] - -

Performance improvements

- -- `LTREE` is now index-accelerated with the `@>` operator. [#152353][#152353] -- `LTREE` is now index-accelerated with the `<@` operator. [#152353][#152353] -- Lookup joins can now be used on tables with virtual columns even if the type of the search argument is not identical to the column type referenced in the virtual column. [#152399][#152399] - -

Build changes

- -- Revert Go version back to 1.23.7. - Epic: none [#152023][#152023] - -

Miscellaneous

- -- Tunes S3 client retry behavior to be more reliable in the - presence of correlated errors. [#151817][#151817] -- Upgrade to Go 1.23.12 [#152207][#152207] - - -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 -[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 -[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 -[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 -[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 -[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 -[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 From 198f1d3d6aedbf8fc3bdb31c7b1a5b78d697c435 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Tue, 16 Sep 2025 22:31:13 +0000 Subject: [PATCH 20/41] Update release notes for v25.4-v25.4.0-alpha.1 From cd03b5d1d2b68cc461ad1645fd6cc8f8cf047987 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Tue, 16 Sep 2025 22:31:16 +0000 Subject: [PATCH 21/41] Update release notes for v25.4-v25.4.0-alpha.1 From f03374680283fb9928cd4a8d5fa8df8852f6fce2 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Tue, 16 Sep 2025 22:31:17 +0000 Subject: [PATCH 22/41] Update release notes for v25.4-v25.4.0-alpha.1 From 6444ba21f5e9ad7ba4532ef5307d0ee39191d41a Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 17 Sep 2025 09:15:45 +0000 Subject: [PATCH 23/41] Update release notes for v25.4-v25.4.0-alpha.1 From 201b7283307c923e5df3bf067366872aaf81fc67 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 17 Sep 2025 09:15:47 +0000 Subject: [PATCH 24/41] Update release notes for v25.4-v25.4.0-alpha.1 From 6b3f6d7b554f38ee06683b5420d6826ec4d0c972 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 17 Sep 2025 09:15:50 +0000 Subject: [PATCH 25/41] Update release notes for v25.4-v25.4.0-alpha.1 --- .../releases/v25.4/v25.4.0-alpha.1.md | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md index 42de284ab9b..7f18a379092 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md @@ -4,3 +4,98 @@ Release Date: September 16, 2025 {% include releases/new-release-downloads-docker-image.md release=include.release %} +

General changes

+ +- Restore jobs now log errors on retry to + the job messages table. [#149821][#149821] + +

SQL language changes

+ +- Implemented the `levenshtein_less_equal(string, string, int)` and `levenshtein_less_equal(string, string, int, int, int, int)` built-in functions, which calculate the Levenshtein distance between two strings. [#104649][#104649] +- The functionality provided by session variable `enforce_home_region_follower_reads_enabled` was deprecated in v24.2.4 and is now removed. (The variable itself remains for backward compatibility but has no effect.) Note that the related session variable `enforce_home_region` is **not** deprecated and still functions normally. [#148314][#148314] +- `LTREE` is now supported with ancestry operators and with the `concat` operator. Specifically, CockroachDB now allows `ltree @> ltree`, `ltree[] @> ltree`, `ltree @> ltree[]`, `ltree <@ ltree`, `ltree[] <@ ltree`, and `ltree <@ ltree[]` binary comparisons, as well as `ltree[] ?@> ltree`, `ltree[] ?<@ ltree`, and `ltree || ltree` binary operations. The `?@>` and `?<@` are new binary operators that return the first ltree (or `NULL`) that is an ancestor or descendant of the right ltree argument in the array. [#150598][#150598] +- All PostgreSQL built-in functions for `LTREE` are now supported: `subltree()`, `subpath()`, `nlevel()`, `index()`, `text2ltree()`, `ltree2text()`, and `lca()`. While the `lca()` function in PostgreSQL specifically limits up to 8 LTREE args, the CockroachDB `lca()` function accepts any variable number of ltree args. [#150647][#150647] +- Improved the optimizer to hoist projections above joins in more cases, which can lead to better query plans. This behavior can be enabled with the new session variable `optimizer_use_improved_hoist_join_project`. [#150887][#150887] +- When `sql_safe_updates` is enabled, the `ALTER TABLE ... LOCALITY` statement will be blocked when trying to convert an existing table to `REGIONAL BY ROW`, unless a region column has been added to the table. This protects against undesired behavior that caused `UPDATE` or `DELETE` statements to fail against the table while the locality change was in progress. [#151423][#151423] +- Added a new session variable, `disable_optimizer_rules`, which allows users to provide a comma-separated list of optimizer rules to disable during query optimization. This allows users to avoid rules that are known to create a suboptimal query plan for specific queries. [#151959][#151959] +- The SQL observability statements `SHOW TRANSACTIONS`, `SHOW QUERIES`, and `SHOW SESSIONS` now include an `isolation_level` column that shows the isolation level of the active transaction, or the session's default isolation level when there is no active transaction. [#152352][#152352] +- The default value of `use_soft_limit_for_distribute_scan` session variable is now `true`. This means that, by default, the soft limit (if available) will be used to determine whether a scan is "large" and, thus, should be distributed. For example, with `estimated row count: 100 - 10,000`, CockroachDB will use `100` as the estimate to compare against the value of `distribute_scan_row_count_threshold`. [#152557][#152557] + +

Operational changes

+ +- `auth.ldap.conn.latency.internal` has been added to denote the internal authentication time for ldap auth method. [#151105][#151105] +- Restricted access to internal tables in the `crdb_internal` schema. Only a predefined allowlist of internal objects is accessible when the session variable `allow_unsafe_internals` is enabled or when the caller is internal. [#151804][#151804] +- In v26.1, changefeed events will be logged to the `CHANGEFEED` logging channel instead of `TELEMETRY`. To test the impact of this change before upgrading, set the cluster setting `log.channel_compatibility_mode.enabled` to `false`. This redirects changefeed logs to the `CHANGEFEED` channel and should be tested only in non-production environments. [#151807][#151807] +- Delegate queries (such as `SHOW DATABASES`) are now excluded from unsafe SQL checks that restrict access to the `system` database and `crdb_internal` schema. This change ensures that these commands continue to function even when access to internal components is otherwise restricted. [#152084][#152084] +- the PCR reader tenant is always destroyed on cutover [#152509][#152509] + +

Bug fixes

+ +- Fixed a bug that would allow a race condition in foreign key cascades under `READ COMMITTED` and `REPEATABLE READ` isolation levels. [#150291][#150291] +- Fix handling of empty arrays in JSONPath lax mode + comparisons. Empty arrays now return false for comparisons in lax mode and + null in strict mode, matching PostgreSQL behavior. [#151226][#151226] +- Added an automatic repair for dangling or invalid entries in the `system.comments` table. [#151737][#151737] +- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. [#151947][#151947] +- Fixed a bug where executing certain statements with `BETWEEN SYMMETRIC` expressions could panic if used with values of different types, such as `... b'bytes' BETWEEN SYMMETRIC 'a' AND 'c'`. [#151951][#151951] +- Fixed a bug where `SHOW TABLES` would show inaccurate row counts if the most recent statistics collection was partial. [#152033][#152033] +- Fixed a bug that prevented `RESTORE` from working if there were computed columns or `ON UPDATE` expressions that referenced user-defined functions (UDFs). This bug was introduced in v25.3.0. [#152193][#152193] +- Fixed a bug that allowed foreign-key violations to result from some combinations of concurrent `READ COMMITTED` and `SERIALIZABLE` transactions. If both `SERIALIZABLE` and weaker-isolation transactions will concurrently modify rows involved in foreign-key relationships, the `SERIALIZABLE` transactions must have the following session variables set in order to prevent any possible foreign-key violations: + - `SET enable_implicit_fk_locking_for_serializable = on;` + - `SET enable_shared_locking_for_serializable = on;` + - `SET enable_durable_locking_for_serializable = on;` [#152245][#152245] +- Added the `use_soft_limit_for_distribute_scan` session variable (default: `false`), which controls whether CockroachDB uses the soft row count estimate when deciding whether an execution plan should be distributed. In v25.1, the physical planning heuristics were changed such that large constrained table scans, estimated to scan at least 10,000 rows (controlled via `distribute_scan_row_count_threshold`), would force plan distribution when `distsql=auto`. However, if the scan had a "soft limit" CockroachDB would still use the full estimate (for example, `10,000` in `estimated row count: 100–10,000`), sometimes unnecessarily distributing queries and increasing latency. The `use_soft_limit_for_distribute_scan` session variable addresses this by allowing the planner to use the soft limit when deciding whether a scan is "large". [#152300][#152300] +- `pg_class.pg_depend` now contains entries with `deptype='i'` (internal) for identity columns that own sequences. These previously had `deptype='a'` (auto). [#152309][#152309] +- Fixed a bug that caused an error when dropping a column and a `UNIQUE WITHOUT INDEX` constraint that referenced it in the same transaction. [#152447][#152447] +- Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions. [#152670][#152670] + +

Performance improvements

+ +- `LTREE` is now index-accelerated with the `@>` operator. [#152353][#152353] +- `LTREE` is now index-accelerated with the `<@` operator. [#152353][#152353] +- Lookup joins can now be used on tables with virtual columns even if the type of the search argument is not identical to the column type referenced in the virtual column. [#152399][#152399] + +

Build changes

+ +- Revert Go version back to 1.23.7. + Epic: none [#152023][#152023] + +

Miscellaneous

+ +- Tunes S3 client retry behavior to be more reliable in the + presence of correlated errors. [#151817][#151817] +- Upgrade to Go 1.23.12 [#152207][#152207] + + +[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 +[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 From bdad8c38b78eaf907b4a9e47c005d64ba26c92e3 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 17 Sep 2025 09:45:26 +0000 Subject: [PATCH 26/41] Update release notes for v25.4-v25.4.0-alpha.1 From 763dc3d1898d5be1c367a1d0af316fa2f6cf3aef Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 17 Sep 2025 09:45:28 +0000 Subject: [PATCH 27/41] Update release notes for v25.4-v25.4.0-alpha.1 From 475dec5aedc976c4b87ff91933b8da4ff2d52534 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 17 Sep 2025 09:45:30 +0000 Subject: [PATCH 28/41] Update release notes for v25.4-v25.4.0-alpha.1 --- .../releases/v25.4/v25.4.0-alpha.1.md | 383 ++++++++++++++---- 1 file changed, 308 insertions(+), 75 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md index 7f18a379092..bd048c36e38 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md @@ -4,98 +4,331 @@ Release Date: September 16, 2025 {% include releases/new-release-downloads-docker-image.md release=include.release %} +

Security updates

+ +- Strengthened password policy controls for FIPS 140‑3 builds. The minimum allowed password length is now set to 14 characters (112 bits of entropy) in FIPS-compliant builds. This prevents crashes caused by shorter passwords, aligning with NIST key-length recommendations 151687: opt: lazily initialize helper data in join reordering r=mgartner a=mgartner Some equivalence groups and column sets are used during join reordering only when there are inner-join edges. These data structures are no longer initialized if there are no inner-join edges. [a491fd92][a491fd92] +- CockroachDB can now synchronise SQL role membership from the groups claim provided by an OpenID Connect (OIDC) Identity Provider when `server.oidc_authentication.authorization.enabled = true`. . At login the DB Console gathers the `groups` claim from both the verified ID token and, when available, the access token (if it is a JWT). Any groups found in either token are combined and de-duplicated. If no claim is present in either token, the server will query the provider's `/userinfo` endpoint and extract groups from there (using `server.oidc_authentication.userinfo_group_key`) as a final fallback. . The resulting list of groups is normalised to SQL role names and compared to the user’s current role memberships. Any newly required roles are GRANTed and any stale ones are REVOKEd, matching the behaviour already available for JWT and LDAP-based role synchronisation. [2f606a62][2f606a62] +- The following provisioning usability metric counters were added for ldap based user provisioning. * An enablement tracking counter for organizations enabling ldap provisioning (`auth.provisioning.ldap.enable`) * A counter for number of organizations & tenants which have enabled ldap to auto-provision users(`auth.provisioning.ldap.begin`). * A counter for the number of auto-provisioned users (`auth.provisioning.ldap.success`). * A telemetry counter for number of logins performed by provisioned users (`auth.provisioning.login_success`). [b147ab94][b147ab94] +- The JWT Authorization settings which were merged in #147318 are no longer visible to users in 25.3. They will be re-introduced in 25.4. [6cd77297][6cd77297] +

General changes

-- Restore jobs now log errors on retry to - the job messages table. [#149821][#149821] +- Restore jobs now log errors on retry to the job messages table. 152203: logictest: deflake test by removing IDs from assertion r=rafiss a=rafiss These IDs are not determinstic since they can change if an internal retry happens. [6228e693][6228e693] +- Spatial libraries from Cockroach now rely on GEOS 3.13 instead of GEOS 3.12. [06444d34][06444d34] +- Added headers config option to OTLP log sink. [8eb0c9dc][8eb0c9dc] +- The protobuf format for changefeeds now support enriched envelopes. [ad4d1094][ad4d1094] +- Spatial libraries from Cockroach now rely on GEOS 3.12 instead of GEOS 3.11. [c12d55d9][c12d55d9] +- Added HTTP mode to OTLP log sink that can export logs to OpenTelemetry-compatible targets over HTTP. [c2d10600][c2d10600] +- Changefeeds using the protobuf format now support wrapped envelopes in kafka sinks. Fixes https://github.com/cockroachdb/cockroach/issues/148936 [a1077166][a1077166] +- The changefeeds with protobuf format now supports the resolved option for emitting resolved timestamps. 150319: kv: remove some tautological conditionals r=tbg a=stevendanna Epic: none 150370: pcr: add debug benchmarking settings to discard data r=dt a=dt Epic: none. 150436: upgradeccl: ensure multiple releases for TestTenantUpgradeFailure test r=rail a=celiala TestTenantUpgradeFailure can only run when we support more than one previous release. This PR ensures that we setup multple releases for this test. This unblocks the PR needed to mint release-25.3: https://github.com/cockroachdb/cockroach/pull/150211#issuecomment-3084826799 - Once 150436 is backported onto release-25.3, I'll remove https://github.com/cockroachdb/cockroach/pull/150211/commits/a38ea8fde36ee7845f1f36e5567716783cefb565 from https://github.com/cockroachdb/cockroach/pull/150211, and just rebase on top of this backported fix. Epic: None Release justification: test-only fix. [f09c7b83][f09c7b83] +- Changefeeds now support Protobuf as a serialization format with bare envelopes when streaming data to Kafka sinks. [b1bb2263][b1bb2263] +- The CREATE CHANGEFEED statement now supports the `headers` option, which can be used to specify constant headers for webhook and kafka sinks. This can be used to add headers to all messages sent to the sink. 149904: asim: final port over from mma prototype for asim r=tbg a=wenyihu6 **asim: pass false to ReplicaChangeDelayFn for AllocationTransferLeaseOp** Previously, we incorrectly passed true to ReplicaChangeDelayFn for AllocationTransferLeaseOp, causing it to treat the operation like a replica addition and extend the delay based on range size and snapshot rate. Since lease transfers are expected to be much faster, this was unintended. This commit fixes the issue by applying only the base delay (ReplicaChangeBaseDelay) to AllocationTransferLeaseOp, which defaults to 100ms. Epic: none --- **asim: correctly update queue.next in pushReplicateChange** Previously, we did not assign the next field of the queues correctly because we passed the base queue by value into pushReplicateChange, which caused updates to the next field to affect only the copy, not the original queue. This commit fixes the issue by returning the correct next value and updating the queue directly. Epic: none --- **asim: pass simulator.Replica instead to pushReplicateChange** Previously, we passed state.Range to pushReplicateChange. This commit changes it to pass the simulator.Replica directly, as future commits will require access to additional fields such as Desc and RangeUsageInfo. Epic: none --- **asim: pass state changer directly to pushReplicateChange** Previously, we passed base queue to pushReplicateChange, but only its state changer was being used. This commit updates pushReplicateChange to only take in the state changer. Epic: none --- **asim: integrate allocatorsync with lease and replicate queue properly** This commit integrates lease and replicate queue changes with the mma allocator properly by calling allocatorSync.PreApply* and allocatorSync.PostApply, completing the allocator integration. Some data-driven test outputs changed because allocatorSync.PostApply now updates store pool after operations (such as UpdateLocalStoresAfterLeaseTransfer), which was missing previously in asim. It’s unclear if this was an oversight or previously seemed as unnecessary. More reading is needed. Epic: none --- **asim: pass queue names for logging** This commit passes the name of the queue making changes to pushReplicateChange to improve logging. Epic: none --- **asim: remove setting from store** This commit removes the setting field from store struct as it is not used anywhere. Epic: none --- **asim: add rebalance_objective and delay for rebalance_mode** This commit adds rebalance_objective as a setting and allows changes to rebalance_mode to be scheduled as a delayed simulation event. This enables testing transitions between mma enabled and disabled mode. Epic: none --- **asim: check for LBRebalancingMultiMetric in ShouldRebalanceStore** This commit updates the old store rebalancer's ShouldRebalanceStore to check the LBRebalancingMultiMetric cluster setting. asim still invokes this method when checking changes from the old store rebalancer. Epic: none 150191: roachtest: fix check for npm being installed r=rafiss a=rafiss We have seen that this check can return a 0 exit code even when the npm command doesn't exist. Using && should fix this by short-circuiting as soon as a non-zero exit code is received. fixes https://github.com/cockroachdb/cockroach/issues/149536 fixes https://github.com/cockroachdb/cockroach/issues/149532 [1957a648][1957a648] +- A warning is now emitted when creating or altering a changefeed with `resolved` or `min_checkpoint_frequency` set below 500ms. This helps users understand the tradeoff between message latency and cluster CPU usage. 150146: vecindex: fix Cosine/InnerProduct accuracy bugs r=drewkimball a=andy-kimball #### cspann: use correct metric for assigning vectors during split Previously, during split the BalancedKmeans class was not initialized with the distance metric used by the index. This caused vectors to be assigned to partitions using a potentially incorrect metric, which can negatively impact accuracy. #### quantize: set zero dot product for centroid data vector Previously, the dot product between a data unit vector and its quantized form was not being set in the case where the data vector is equal to the centroid. This could cause an issue when a RaBitQuantizedSet is reused and the dot product memory is not zero. Fix this buglet and update the code to scribble undefined memory. #### quantize: recompute norm when centroid is updated When RaBitQuantizedVectorSet.Clear was called with a new centroid, the norm was not being recomputed. This commit fixes that bug. 150147: roachtest: actually fail TPCC bench if reached max warehouses r=miraradeva a=miraradeva In 1bfe55b, we attempted to fail the TPCC bench test run if the configured maximum warehouses were reached and the success criteria were met. The idea was that this would prompt us to increase the max warehouses. However, that commit failed only the specific line search run, not the full test run. This commit moves the max warehouses check out of the result handling and actually fatals the test. Part of: #148235 [7d97799d][7d97799d] +- Kafka v2 changefeed sinks now support a cluster setting that enables detailed error logging for messages exceeding Kafka v2 size limit. 149538: sql: don't throw errors for skipped auto stats jobs r=mw5h a=mw5h Previously, auto stats jobs would throw errors and increase failed jobs counters if they attempted to start while a stats collection was already in progress on the table. For large clusters with 'sql.stats.automatic_job_check_before_creating_job.enabled' set to true, this could create quite a few failed jobs. These failed jobs don't seem to cause any performance issues, but they clutter logs, potentially obscuring real problems and alarming customers, who then file tickets with support to figure out why their jobs are failing. This patch: * refactors the autostats checks to reduce code duplication. * swallows the error for concurrent auto stats creation, logging at INFO level instead. * changes the create stats jobs test so that it no longer expects these jobs creations to fail and instead expects the stats to not be collected. * fixes a bug in the create stats jobs test that would cause it to hang instead of exiting on error. * adds a cluster setting, sql.stats.error_on_concurrent_create_stats.enabled, which controls this new behavior. By default the old behavior is maintained. Fixes: #148413 [e2c55634][e2c55634] +- Added otlp log sink that can export logs to OpenTelemetry-compatible targets over gRPC. [ee02ca6b][ee02ca6b] +- Adds a migration to start the hot range logging job. 147769: log, server: Create new log.EventLog() API r=dhartunian a=kyle-a-wong This PR introduces a new log.EventLog() API that gives first class support for writing to the system.eventlog table. This API lives in the log package and doesn't have a dependency on the sql package, making it easy to use across the repo. This is implemented using a new set of interfaces in the log package that allows the system and tenant servers to register new event log writers. The logic for writing to the event log table is the same as that which is sql/event_log.go. For now the code is duplicated, but it will be removed in a future commit when this file is updated to use the new API. Epic: [CRDB-42978](https://cockroachlabs.atlassian.net/browse/CRDB-42978) [9ab7ea1b][9ab7ea1b] + +

{{ site.data.products.enterprise }} edition changes

+ +- Added changefeed.sink_backpressure_nanos metric to track time spent waiting for quota when emitting to the sink. 150861: storage: use AssertionFailedf for panics r=RaduBerinde a=jbowens Update a few panics that threw a simple string to throw an error constructed through AssertionFailedf. Where applicable, this error is propagated through a return value instead. This is motivated by #150058, an instance where the panic string gets redacted, requiring a bit more work to identify the origin of the panic (through mapping the line number on the appropriate commit SHA). Epic: none 150863: CLAUDE: use verbose output in filtered tests r=rickystewart a=dhartunian I observed a `./dev test pkg -f=x` scenario where no test matched, and false success was declared. [d5acebac][d5acebac] +- Added the ability to automatically provision users authenticating via JWT. This is controlled by the new cluster setting `security.provisioning.jwt.enabled`. When set to true, a successful JWT authentication for a non-existent user will create that user in CockroachDB. The newly created role will have the `PROVISIONSRC` role option set to `jwt_token:`, identifying the token's issuer as the source of the provisioned user. [cf40a350][cf40a350] +- 'SYSTEM' privileges are now also inherited in read-only mode standby PCR clusters. Epic: CRDB-50820. [7f2055b8][7f2055b8] +- The SHOW ROLES command now includes a column that shows the estimated time that the user last logged in. Additionally, the `options` column is now returned as an array of strings, rather than as a single comma-separated string. The data can be queried with a query such as: ``` root@localhost:26257/defaultdb> select * from [show roles] as r WHERE EXISTS (SELECT 1 FROM unnest(r.options) AS m(option) where option like 'SUBJECT=cn%'); username | options | member_of | estimated_last_login_time ------------+--------------------------------+-----------+---------------------------- testuser | {NOLOGIN,SUBJECT=cn=testuser} | {admin} | NULL (1 row) ``` [768a2b67][768a2b67] +- Added a new cluster setting `server.provisioning.ldap.enabled` which can be set to true to conditionally enable user provisioning during sql cluster authentication. The user authenticates with the LDAP server and CRDB will only validate that bind to the IDP was successful for provisioning the user. All roles created thus will be privileged to perform sql authentication and will mandatorily have a role option for PROVISIONING_SOURCE set to `ldap:`. Any group roles that are to be assigned via ldap authorization must be pre created prior to the authentication start. [21c52775][21c52775] +- Added a new PROVISIONSRC role option. This role option should be prefixed with the HBA auth method for provisioning, i.e. `ldap` followed by the IDP uri, for example `ldap:ldap.example.com`. This is intended to be used only internally while user provisioning and is supposed to be view-only when checking set role options for a user. [a148cb0d][a148cb0d]

SQL language changes

-- Implemented the `levenshtein_less_equal(string, string, int)` and `levenshtein_less_equal(string, string, int, int, int, int)` built-in functions, which calculate the Levenshtein distance between two strings. [#104649][#104649] -- The functionality provided by session variable `enforce_home_region_follower_reads_enabled` was deprecated in v24.2.4 and is now removed. (The variable itself remains for backward compatibility but has no effect.) Note that the related session variable `enforce_home_region` is **not** deprecated and still functions normally. [#148314][#148314] -- `LTREE` is now supported with ancestry operators and with the `concat` operator. Specifically, CockroachDB now allows `ltree @> ltree`, `ltree[] @> ltree`, `ltree @> ltree[]`, `ltree <@ ltree`, `ltree[] <@ ltree`, and `ltree <@ ltree[]` binary comparisons, as well as `ltree[] ?@> ltree`, `ltree[] ?<@ ltree`, and `ltree || ltree` binary operations. The `?@>` and `?<@` are new binary operators that return the first ltree (or `NULL`) that is an ancestor or descendant of the right ltree argument in the array. [#150598][#150598] -- All PostgreSQL built-in functions for `LTREE` are now supported: `subltree()`, `subpath()`, `nlevel()`, `index()`, `text2ltree()`, `ltree2text()`, and `lca()`. While the `lca()` function in PostgreSQL specifically limits up to 8 LTREE args, the CockroachDB `lca()` function accepts any variable number of ltree args. [#150647][#150647] -- Improved the optimizer to hoist projections above joins in more cases, which can lead to better query plans. This behavior can be enabled with the new session variable `optimizer_use_improved_hoist_join_project`. [#150887][#150887] -- When `sql_safe_updates` is enabled, the `ALTER TABLE ... LOCALITY` statement will be blocked when trying to convert an existing table to `REGIONAL BY ROW`, unless a region column has been added to the table. This protects against undesired behavior that caused `UPDATE` or `DELETE` statements to fail against the table while the locality change was in progress. [#151423][#151423] -- Added a new session variable, `disable_optimizer_rules`, which allows users to provide a comma-separated list of optimizer rules to disable during query optimization. This allows users to avoid rules that are known to create a suboptimal query plan for specific queries. [#151959][#151959] -- The SQL observability statements `SHOW TRANSACTIONS`, `SHOW QUERIES`, and `SHOW SESSIONS` now include an `isolation_level` column that shows the isolation level of the active transaction, or the session's default isolation level when there is no active transaction. [#152352][#152352] -- The default value of `use_soft_limit_for_distribute_scan` session variable is now `true`. This means that, by default, the soft limit (if available) will be used to determine whether a scan is "large" and, thus, should be distributed. For example, with `estimated row count: 100 - 10,000`, CockroachDB will use `100` as the estimate to compare against the value of `distribute_scan_row_count_threshold`. [#152557][#152557] +- Previously, using pausable portal with procedure call caused panic, depending on the function body. Now statements that are transaction control statement, such as procedure call(e.g. `CALL myfunc()`) are not allowed with pausable portal. 151338: opt: return RelExpr from (*memo).RootExpr r=mgartner a=mgartner `(*memo).RootExpr` now returns a `RelExpr` instead of an `Expr`, helping eliminate some type assertions. 151491: colexecerror: further optimize BenchmarkSQLCatchVectorizedRuntimeError r=yuzefovich a=yuzefovich Rather than creating and closing connections for each test case, we can just reuse the same connections in the benchmark, which speeds it up significantly (from about 4 min to 1 min). Epic: None [caa221d6][caa221d6] +- The functionality provided by session variable `enforce_home_region_follower_reads_enabled` was deprecated in v24.2.4 and is now removed. (The variable itself remains for backward compatibility but has no effect.) (Note that related session variable `enforce_home_region` is _not_ deprecated and still functions normally.) [c74f6a36][c74f6a36] +- SQL observability commands `SHOW TRANSACTIONS`, `SHOW QUERIES`, and `SHOW SESSIONS` now include an `isolation_level` column showing the isolation level of the active transaction, or the session's default isolation level when there is no active transaction. 152585: CODEOWNERS: add /pkg/server/storage_api to obs-prs r=dhartunian a=dhartunian Epic: None 152675: allocator: correct logging for priority assertion r=tbg a=wenyihu6 This commit fixes an incorrect log statement in computeAction for priority assertions. The log was mistakenly emitted even when the priority was not -1. Related: https://github.com/cockroachdb/cockroach/pull/152512 Epic: none [5eb2140d][5eb2140d] +- Improve the optimizer to hoist projections above joins in more cases, which can lead to better query plans. This can be enabled by the new session variable `optimizer_use_improved_hoist_join_project`. ---- **sql: enable optimizer_use_improved_hoist_join_project by default** Informs: #150704 [2f096411][2f096411] +- The owner of a database can now set default session variables per database using the `ALTER ROLE ALL IN DATABASE ... SET` or `ALTER DATABASE ... SET` commands. [a685bfbf][a685bfbf] +- Implemented levenshtein_less_equal(string, string, int) and levenshtein_less_equal(string, string, int, int, int, int) built-in functions. [a4148787][a4148787] +- The `SHOW CREATE FUNCTION` statement produces the 2-part table names rather than qualifying with the current database. [33e009d7][33e009d7] +- This PR adds all of the ltree builtin functions from Postgres. Namely, `subltree()`, `subpath()`, `nlevel()`, `index()`, `text2ltree()`, `ltree2text()`, and `lca()`. The details for each of these are documented on the Postgres docs: https://www.postgresql.org/docs/9.1/ltree.html#LTREE-FUNC-TABLE. Additionally, the `lca()` function in Postgres specifically limits up to 8 LTREE args, while the CRDB `lca()` function accepts any variable number of ltree args. [ae4d42dd][ae4d42dd] +- LTREE is now supported with containment operators and with the concat operator. Specifically, we allow `ltree `@>` ltree`, `ltree[] `@>` ltree`, `ltree `@>` ltree[]`, `ltree <@ ltree`, `ltree[] <@ ltree`, and `ltree <@ ltree[]` binary comparisons and `ltree[] ?`@>` ltree`, `ltree[] ?<@ ltree`, and `ltree || ltree` binary operations. The `?`@>`` and `?<`@`` are new binary operators which return the first ltree (or NULL) that contains/is contained by the right ltree argument. An additional note about this change is that our terminology regarding 'contains' and 'contained by' is equivalent to Postgres's terms 'ancestor' and 'descendant' respectively. 152017: logictest: add local-prepared config and scalar replacement r=rytaft a=rytaft This commit adds a new mode to the logic test harness that runs every statement as a prepared statement rather than using the default "simple query" mode of execution. Additionally, this commit enhances the `local-prepared` logic test configuration to replace scalars in queries with placeholders, and execute the queries as prepared statements with the scalars as arguments. This PR is based on https://github.com/cockroachdb/cockroach/pull/77068. [2a73f4a9][2a73f4a9] +- The inspect_errors system table is introduced. 152086: roachtest: deflake gopg r=fqazi a=fqazi Previously, one of the soft deletion tests was flaking because of a timing issue where sometimes it could be slower then expected. This patch adds the problematic test on the ignore list. Fixes: #151991 [a73404be][a73404be] +- Adds a new session variable `allow_unsafe_internals` and corresponding cluster setting (`sql.defaults.allow_unsafe_internals`) which controls access to the `system` database. [693c3951][693c3951] +- The json ? string, json ?& array, json ?| array and array && array operators are now index accelerated for INVERTED JOIN statement if there is an inverted index over the json column referred to on the left hand side of the expression. 150253: tabledesc: allow TTL storage params to be set to 0 r=rafiss a=rafiss Epic: None [fa1c75ba][fa1c75ba] +- The `CREATE USER` and `GRANT role` operations now wait for full-cluster visibility of the new user table version rather than blocking on convergence. 152015: backup: remove old incremental backup location lookup r=dt a=kev-cao In pre-22.2 backups, incremental backups were written to the same directory as the full backup. This was removed in 22.2, but logic was kept in place to maintain backwards compatibility and allow later versions to restore from pre-22.2 backups. However, given that we are now on 25.4 and are many major versions past the removal of the old default location, the legacy logic is now being removed to facilitate the development of backup indexes. Epic: None [63f8071d][63f8071d] +- Added the has_system_privilege builtin function, which can be used to check if a user has the given system privilege. [322d3bb8][322d3bb8] +- When sql_safe_updates is enabled, the ALTER TABLE LOCALITY statement will now be blocked when trying to convert an existing table to REGIONAL BY ROW, unless a region column has already been added to the table. This protects against undesired behavior that caused UPDATE or DELETE queries to fail against the table while the locality change is in progress. [86c47284][86c47284] +- The default value of `use_soft_limit_for_distribute_scan` session variable has been changed to `true`. This means that, by default, the soft limit (if available) will be used to determine whether a scan is "large" and, thus, should be distributed. For example, with "estimated row count: 100 - 10,000" we'll use 100 as the estimate to compare against the value of `distribute_scan_row_count_threshold`. [3d5ef946][3d5ef946] +- This commit introduces the following metrics for statements got executed via calling a store procedure: sql_routine_select_started_count, sql_routine_update_started_count,sql_routine_insert_started_count, sql_routine_delete_started_count,sql_routine_select_count,sql_routine_update_count,sql_routine_insert_count,sql_routine_delete_count. [2eb84bc3][2eb84bc3] +- The session setting `optimizer_min_row_count` is now set to 1 by default. 150179: roachtest: add schema change workload to all pcr read from standby roachtests r=jeffswenson a=msbutler By replicating the schema change workload, we stress test the standby poller's ability to update the reader tenant's external descriptors. Fixes: #145990 150264: distsql: harden recent memory leak fix r=yuzefovich a=yuzefovich In 1b2342258e274bd931168b6866e785752845c2fd we missed one error code path where we'd not call the context cancellation function, and it's now fixed by allocating the function only when we create the flow. Epic: None 150325: asim: fix load_distribution_movement_disabled_enable_later r=tbg a=wenyihu6 Previously, we changed LBRebalancingMode from a simulation setting to a cluster setting, plumbed throughout asim. load_distribution_movement_disabled_enable_later test schedules a delayed event that updates this setting and triggers two evaluation runs. With the new cluster setting behavior, the delayed change persists across both evaluations, whereas before, the second simulation run would reset to the initial rebalance_mode = 0. This commit fixes the issue by explicitly setting rebalance_mode = 0 before the second run. In the future, we might consider introducing a reset command between simulation runs to clear persisted state. Output of datadriven tests now matches with what the prototype branch has at 037ac2fc5a20927522347a91c6cf878589c20bbe. Epic: none 150348: sql: fix CITEXT formatting panic r=paulniziolek a=paulniziolek #### sql: fix CITEXT formatting panic CITEXT was taking the default formatting path of `CollatedStringFamily` which formats datums with the COLLATE expression, causing a panic. This PR fixes this by separating CITEXT from the default collated string formatting path. Fixes: cockroachdb#149876 Epic: None [722aed0c][722aed0c] +- WITH header_row flag is added to EXPORT. Returns error for non-csv type. Another row is prepended to the csv file with the column names. 149923: kv/bulk: compute accurate stats in StreamSSTBatcher r=jeffswenson a=msbutler This patch teaches PCR to compute an accurate stats diff on its ingestion path. Fixes https://github.com/cockroachdb/cockroach/issues/145548 150349: bulk: avoid leaking sst writers r=jeffswenson a=jeffswenson This fixes a bug introduced by #148395. Before #148395, the sst batcher would not be initialized until the first key was added to it. After the change, the sst batcher was initialized as part of the object construction. This introduced a bug where the initialization would leak an sst writer if the initialization failed with a memory accounting error. This leak is fixed by requesting the memory budget before initializing the writer. This change also cleans up the .Close() handling within the sst_adder. Previously, the sst adder could leak a writer if SST construction fails. There is no new test for the only error returned by the sst writer is an error indicating out of order keys. But any new errors (for example handling context cancellation) would trigger a leak of the SST writer. Informs: #148649 [2dc9058c][2dc9058c] +- The column for `estimated_last_login_time` in `system.users` will be updated with the TIMESTAMP of user login post successful authentication. The `SHOW users` view will now show the updated value. ``` root@localhost:26257/defaultdb> SHOW users; username | options | member_of | estimated_last_login_time -----------------+-------------------------------------------------------------------------------------+-----------+-------------------------------- admin | {} | {} | NULL root | {} | {admin} | 2025-07-13 11:51:29.406216+00 sourav.sarangi | {} | {} | NULL (3 rows) NOTICE: estimated_last_login_time is computed on a best effort basis; it is not guaranteed to capture every login event ``` [1a4f475f][1a4f475f] +- Added support for automatically determining the region column for a REGIONAL BY ROW table using a foreign key constraint. The foreign key is specified by setting a new table storage parameter `infer_rbr_region_col_using_constraint`, and must contain the region column. This can be useful for applications that are unable to guarantee that a child row is inserted or updated from the same region as the matching parent row. [14f65341][14f65341] +- Post the change the users with the role option `PROVISIONSRC` assigned to them will be unable to change their own password overriding any config set for sql.auth.change_own_password.enabled cluster setting. Changing other role options still has the same privilege requirements as before (either CREATEROLE or CREATELOGIN, depending on the option). [e63be70a][e63be70a] +- Schema change job status messages provide additional information. 150149: roachtest: increase restore timeouts for fingerprinting r=yuzefovich a=kev-cao Since validating fingerprints is now the default behavior for restore roachtests, we are seeing some test timeouts across the suite. This commit increases the timeout to account for any fingerprints on all of our restores. Fixes: #149771 150213: sql: include write buffering info to EXPLAIN ANALYZE top level r=yuzefovich a=yuzefovich In order to make it easier to notice that write buffering is enabled, we now will include top-level `write buffering enabled` message to the output of EXPLAIN ANALYZE when write buffering is enabled for all mutations as well as read-only stmts that are part of explicit txns. Touches: #150212. Epic: None 150250: storage: disable value separation by default r=yuzefovich a=annrpom We disable value separation for now until we root cause #150216. Epic: none 150255: sql/schemachanger: properly discard zone configs for sequences r=yuzefovich a=spilchen Discarding zone configs via the declarative schema changer was a no-op for sequences, leaving stale configs. This was due to not loading scpb.TableZoneConfig elements for sequences. This change ensures those elements are loaded, so configs are properly removed. Epic: none [9d5a1fae][9d5a1fae] +- Fix a bug where extra quotes or escaped quote characters would be added to topic names in changefeeds. [8f28ff92][8f28ff92] +- Added support for invoking a UDF from a view query. Renaming or setting the schema on the routine is currently not allowed if it is referenced by a view. [679f10bb][679f10bb] +- The session setting `optimizer_prefer_bounded_cardinality` is now enabled by default. 149498: go.mod, storage: bump pebble + enable multilevel compactions by default with a cluster setting r=xinhaoz a=xinhaoz ### 1: go.mod: bump Pebble to 20e2cbcd70de Changes: * [`20e2cbcd`](cockroachdb/pebble@20e2cbcd) db: support overriding value separation minimum-size by key span * [`50d7fd77`](cockroachdb/pebble@50d7fd77) pebble: add additional constraints to running multiLevel compactions * [`f810bcdf`](cockroachdb/pebble@f810bcdf) pebble: make MultiLevelCompactionHeuristic a function option Epic: none. ### 2: storage: enable multilevel compactions by default with a cluster setting Reenable multilevel compactions, with more constraints. ML compactions will run according to a write amp heuristic, along with the following rules: - At most 1 ML compaction is running at any time. - The db must have >= 2 maximum compaction slots. Closes: https://github.com/cockroachdb/pebble/issues/4139 149659: asim: some more improvements r=tbg a=tbg - **state: add TestReplicaPlacement** - **state: rename ParseStoreWeights -> ParseReplicaPlacement** - **state: improve ReplicaPlacement parsing and stringer** - **testdata: rm example_replica_placement** Epic: CRDB-25222 [d591c199][d591c199] +- Added support for camelCase parameter names (e.g., "SharedAccessKeyName") in Azure Event Hub Kafka sink configuration [21349171][21349171] +- The CITEXT datatype is now a supported feature which allows case-insensitive row comparisons for CITEXT columns. The CITEXT column type is equivalent to applying the undetermined level 2 collation, 'und-u-ks-level2'. For example, under CITEXT, 'test' = 'TEST' returns true. 149635: util/admission: clarify context cancellation r=yuzefovich a=yuzefovich Previously, whenever the AC code observed the context cancellation, it reported it as "deadline expiring". This can be confusing when the cancellation is caused by the caller explicitly canceling the context, without using the deadline option of the context. This commit clarifies the error as well as logging event when the context doesn't have the deadline set. Informs: #148219. Epic: None [50694710][50694710] +- Added a new session variable, `disable_optimizer_rules`, which allows users to provide a comma-separated list of optimizer rules to disable during query optimization. This allows users to avoid rules that are known to create a suboptimal query plan for specific queries. [82759997][82759997]

Operational changes

-- `auth.ldap.conn.latency.internal` has been added to denote the internal authentication time for ldap auth method. [#151105][#151105] -- Restricted access to internal tables in the `crdb_internal` schema. Only a predefined allowlist of internal objects is accessible when the session variable `allow_unsafe_internals` is enabled or when the caller is internal. [#151804][#151804] -- In v26.1, changefeed events will be logged to the `CHANGEFEED` logging channel instead of `TELEMETRY`. To test the impact of this change before upgrading, set the cluster setting `log.channel_compatibility_mode.enabled` to `false`. This redirects changefeed logs to the `CHANGEFEED` channel and should be tested only in non-production environments. [#151807][#151807] -- Delegate queries (such as `SHOW DATABASES`) are now excluded from unsafe SQL checks that restrict access to the `system` database and `crdb_internal` schema. This change ensures that these commands continue to function even when access to internal components is otherwise restricted. [#152084][#152084] -- the PCR reader tenant is always destroyed on cutover [#152509][#152509] +- The PCR reader tenant is always destroyed on cutover 152518: sqlstatsccl: bump test pool size r=kyle-a-wong a=rickystewart This test has hit an OOM. Epic: none [37243f53][37243f53] +- `auth.ldap.conn.latency.internal` has been added to denote the internal authentication time for ldap auth method. [1aabeeb6][1aabeeb6] +- Changefeed events will be moved to the CHANGEFEED channel in 26.1. In order to test the impact of these changes, users can set the setting: `log.channel_compatibility_mode.enabled` to false. Note that this will cause these logs to start logging in the CHANGEFEED channel so this shouldn't be tested in a production environment. --- This is a stacked PR, only the last commit should be reviewed 152177: docs: update cluster settings to use correct product labels r=jhlodin a=jhlodin The cluster setting labeling still applies pre-Cloud 2.0 product names (dedicated/serverless) resulting in old product names under the **Supported deployments** column of the [cluster settings documentation](https://www.cockroachlabs.com/docs/stable/cluster-settings.html). [d1af030c][d1af030c] +- Delegate queries (like SHOW etc) are excluded from unsafesql checks to accessing the system or crdb_internal tables. [ede5ccc7][ede5ccc7] +- Restricts access to all crdb_internal builtins unless session variable `allow_unsafe_internals` is set to true, or if the caller is internal. 152021: catalog/lease: fix assertion for no outstanding leases r=fqazi a=fqazi Previously, the assertion confirming that no leases were outstanding was too strict because it checked for remaining descriptor versions immediately after setting the drain flag. While all user queries should be drained by this point, this check was too strict for internal operations. To address this, this patch moves the assertion into a closure and ensures that anything remaining has a reference count of zero. Fixes: #151902 152121: authors: add jaywritescode to authors r=jaywritescode a=jaywritescode Epic: None [835eda7d][835eda7d] +- Restricts access to all but allowed list of internal tables in the crdb_internal schema if the session variable `allow_unsafe_internals` is set to true, or if the caller is internal. [40b00a90][40b00a90] +- Sampled_query and sampled_transaction events will be moved to the SQL_EXEC channel in 26.1. In order to test the impact of these changes, users can set the setting: `log.channel_compatibility_mode.enabled` to false. Note that this will cause these logs to start logging in the SQL_EXEC channel so this shouldn't be tested in a production environment. ---- This is a stacked PR, only the last commit in this PR should be reviewed 152080: clusterversion: bump PreviousVersion r=RaduBerinde a=RaduBerinde Bump PreviousVersion to 25.3, add cockroach-go-testserver-25.3 tests. This is part of the [M.3 checklist](https://github.com/cockroachdb/cockroach/blob/master/pkg/clusterversion/README.md#m3-enable-upgrade-tests) (the roachtest fixtures were already done in #150712). - [x] Update `PreviousRelease` constant to 25.3. - [x] Verify the logic in `supportsSkipUpgradeTo` (`pkg/cmd/roachtest/roachtestutil/mixedversion/mixedversion.go`) is correct for the new release. - [x] Add `cockroach-go-testserver-25.3` logictest config and add it to `cockroach-go-testserver-configs`. Update the visibility for `cockroach_predecessor_version` in `pkg/sql/logictest/BUILD.bazel`. Run `./dev gen` and fix up any tests that fail (using a draft PR helps). - [x] Check that all gates for the previous release are identical on the `master` and release branch. Epic: REL-2736 [2d73bfc8][2d73bfc8] +- Sql perf events will be moved to the SQL_EXEC channel in 26.1. In order to test the impact of these changes, users can set the setting: `log.channel_compatibility_mode.enabled` to false. Note that this will cause these logs to start logging in the SQL_EXEC channel so this shouldn't be tested in a production environment. ---- Note: This is a stacked PR, only the last commit needs to be reviewed [3ad5418b][3ad5418b] +- Introduces two new logging channels: KV_EXEC and CHANGEFEED. KV_EXEC will contain kv events that don't fall into the KV_DISTRIBUTION channel and CHANGEFEED will eventually contain changefeed events (This change doesn't add any logic to move existing changefeed logs to this channel). 151750: roachtest: update pgjdbc test for new portal behavior r=rafiss a=rafiss We recently merged #151153 which makes certain statements invalid when used in a pausable portal. This causes a few PGJDBC tests to fail during the test setup phase. fixes https://github.com/cockroachdb/cockroach/issues/151582 151752: roachtest: deflake hibernate timeouts r=rafiss a=rafiss This patch increases the timeout to avoid hitting spurious failures when the test takes too long. fixes https://github.com/cockroachdb/cockroach/issues/151591 fixes https://github.com/cockroachdb/cockroach/issues/151711 151753: sctestbackupccl: deflake schemachanger tests during BACKUP r=rafiss a=rafiss Increase the timeout for waiting for a schema change to complete, which can take a longer time if there are concurrent backups. fixes https://github.com/cockroachdb/cockroach/issues/151469 fixes https://github.com/cockroachdb/cockroach/issues/150842 [7a7aab5b][7a7aab5b] +- The 'sql.ttl.replan_flow_threshold' may have been set to 0 to work around the TTL replanner being too sensitive. This fix will alleviate that and any instance that had set replan_flow_threshold to 0 can be reset back to the default. 150947: asim: port over some trivial commits from prototype r=tbg a=wenyihu6 This commit ports over some trivial changes from the mma prototype branch. Epic: CRDB-25222 150949: span: clean up test code after llrb frontier deletion r=rharding6373 a=andyyang890 This patch cleans up some code in the unit tests that previously would toggle the frontier type but now just leads to each test being running twice with the exact same configuration. Informs #141668 [0e9251db][0e9251db] +- A structured event is now logged in the SQL_SCHEMA channgel when the REFRESH MATERIALIZED VIEW statement is executed. [7c13dda5][7c13dda5] +- The value of sql.stats.error_on_concurrent_create_stats.enabled now defaults to false, supressing error counters for auto stats jobs that fail due to concurrent stats jobs in progress. [bfb43f56][bfb43f56] +- CockroachDB now has a cluster setting, sql.stats.error_on_concurrent_create_stats.enabled, which modifies how it reacts to concurrent auto stats jobs. The default, true, maintains the previous behavior. Setting this to false will cause the concurrent auto stats job to be skipped with just a log entry and no increased error counters. 149699: asim: update range usage info and store capacity r=tbg a=wenyihu6 **asim: remove unused range usage info** This commit removes the unused field RangeUsageInfo from TransferLeaseOp. Epic: none --- **asim: support request_cpu_per_access and raft_cpu_per_write** This commit adds support for the request_cpu_per_access and raft_cpu_per_write options in the gen_load command. It only adds the options to the data-driven framework and workload generator. But no real changes have been made to LoadEvent, and they currently have no effect on range usage or apply load. Future commits will implement the actual impact. Epic: none --- **asim: add impact from request_cpu_per_access and raft_cpu_per_write** Previously, request_cpu_per_access and raft_cpu_per_write were added to the workload generator in data driven tests, but they had no actual effect to the cluster yet. This commit makes them take effect by applying the impact from LoadEvent including CPUPerSecond in store capacity and recording range load stats. Epic: none --- **asim: add store capacity cpu stats to storemetrics** Previously, store capacity cpu was populated. This commit adds the corresponding stats to the StoreMetrics. Epic: none --- **asim: removes redundant size assignment** This commit removes an redundant size assignment for rangeInfo in LoadRangeInfo, since the caller already populates rangesInfo. Epic: none --- **asim: add a comment for RangeUsageInfo.WritesPerSecond** This commit adds a comment clarifying nuances with WritesPerSecond in RangeUsageInfo. It is actually the sum of writes rather than the rate. It's currently unused outside of two unit tests TestWorkloadApply and TestCapacityOverride. They both abuse this field by verifying that the writes reach the replicas and the sum of writes is expected. Since it is tricky to assert on the exact per rate stat, we currently leave it as is. But we should fix this later. Epic: none --- **asim: account for follower replica load** Previously, asim only accounted for load on the leaseholder, ignoring non-leaseholder replicas. This commit updates it to consider all replicas for RangeUsageInfo and store capacity aggregation. RangeUsageInfo handles leaseholder checks and clears request CPU and QPS stats for non-leaseholder replicas. Epic: none --- **asim: add range info String method** This commit adds a RangeIndo string method. Epic: none --- **asim: add write bytes per sec to capacity & range usage** Previously, we added WriteBytesPerSecond to roachpb.StoreCapacity. This commit plumbs it through store capacity aggregation, range load usage, and StoreMetrics. MMA will later use to track write bandwidth usage across stores. Epic: none --- **asim: support node_cpu_rate_capacity with gen_cluster** Previously, we added roachpb.NodeCapacity for MMA to compute resource utilization across stores. This commit integrates it into the asim setup, enabling gen_cluster to use the node_cpu_rate_capacity option. Note that no functions currently access node capacity; future MMA integration commits will utilize it. Epic: none --- **asim: add comments for datadriven** This commit updates comments for a few options we added recently. Epic: none 149717: logictest: add back assertion that was rewritten accidentally r=rafiss a=rafiss ee263e2b214 rewrote this test so that it expects no spanconfig. This was likely a mistake caused by rewriting before retrying for long enough. This patch adds back the assertion, and adds another one that should prevent accidental rewrites. fixes https://github.com/cockroachdb/cockroach/issues/148603 [e2c55634][e2c55634] +- The restart safety endpoint indicates when it is unsafe to terminate a node. [255f60e1][255f60e1] +- Removes the 'storage.columnar_blocks.enabled' cluster setting; columnar blocks are always enabled. [d11bf892][d11bf892] +- The `storage.value_separation.enabled` cluster setting is now true by default. This enables value separation for sstables, where values exceeding a certain size threshold are stored in separate blob files rather than inline in the sstable. This helps improve write performance (write-amp) by avoiding rewriting such values during compactions. [ce35c63b][ce35c63b] +- New experimental values for compression cluster settings. [421a2574][421a2574] +- The default value of `server.mem_profile.total_dump_size_limit` (which controls how much space can be used by automatically collected heap profiles) has been increased from 256MiB to 512MiB. [c9e4bb2b][c9e4bb2b] + +

Command-line changes

+ +- Adds a new file to debug zip that provides a history of cluster setting changes. Sensitive cluster settings will always be redacted in this file, and non reportable cluster settings will be redacted for redacted debug zips. [1522360e][1522360e] +- Adds support for simple CHECK constraints and bit/bytes column generators in workload_generator. [639c2e5e][639c2e5e] +- Adds SQL workload extraction and rewriting support, enabling placeholder‐driven data-generation workflows from CockroachDB debug logs. [19fcdb66][19fcdb66] +- Update the help text for the --database and --url CLI flags to document support for virtual cluster syntax. The --database flag now shows examples of both simple database names and the cluster:virtual-cluster/database format. The --url flag examples now include the virtual cluster syntax in PostgreSQL connection URLs. [f43db402][f43db402] +- Adds `workload.go` as the primary CLI entry point for workload generation, wiring together DDL parsing, schema construction, generator factory, and output routines—establishing a cohesive, flag-driven workflow for end-to-end data generation. [459f9697][459f9697] +- Debug zips will now always redact "sensitive" cluster settings, whether or not a redacted debug zip is requested. For redacted debug zips, both "sensitive" and "non-reportable" cluster settings are redacted. This replaces the old logic where string-type cluster settings were always redacted for redacted debug-zips. [96bc36ec][96bc36ec] +- [8987f661][8987f661] +- The workload_generator now exposes a pluggable Generator interface with built-in generators and wrappers for various SQL types—enabling modular, extensible, and reusable workload data generation. [7df163f0][7df163f0] +- Improves the performance of the debug zip query that collects transaction_contention_events data, reducing the chances of "memory budget exceeded" or "query execution canceled due to statement timeout" errors. 149718: roachtest: fix hibernate nightly test r=rafiss a=rafiss The previous version fails during installation with: ``` FAILURE: Build completed with 2 failures. 1: Task failed with an exception. ----------- * What went wrong: Execution failed for task ':hibernate-core:generateGraphParser'. > Failed to load cache entry 7ed5a08bcdbd74c9347d61047c20a896 for task ':hibernate-core:generateGraphParser': Could not load from remote cache: Not in GZIP format * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Get more help at https://help.gradle.org. ============================================================================== 2: Task failed with an exception. ----------- * What went wrong: Execution failed for task ':hibernate-jpamodelgen:jaxb'. > Failed to load cache entry dd3fbbdea5c65a87fb9d720c326dd64b for task ':hibernate-jpamodelgen:jaxb': Could not load from remote cache: Not in GZIP format * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Get more help at https://help.gradle.org. ============================================================================== ``` fixes https://github.com/cockroachdb/cockroach/issues/149404 fixes https://github.com/cockroachdb/cockroach/issues/149457 fixes https://github.com/cockroachdb/cockroach/issues/149455 fixes https://github.com/cockroachdb/cockroach/issues/149399 fixes https://github.com/cockroachdb/cockroach/issues/149346 fixes https://github.com/cockroachdb/cockroach/issues/149393 fixes https://github.com/cockroachdb/cockroach/issues/149400 fixes https://github.com/cockroachdb/cockroach/issues/149398 fixes https://github.com/cockroachdb/cockroach/issues/149406 fixes https://github.com/cockroachdb/cockroach/issues/149395 149786: roachtest: Fix JSON configuration file for db-console/endpoints r=alyshanjahani-crl a=alyshanjahani-crl A previous PR modified one of the json configuration files for what endpoints to test. It forgot to include a comma... Fixes: #149735, #149732 149793: roachtest: add schemachange/bulkingest variant for ADD COLUMN r=rafiss a=rafiss This patch adds testing for ADD COLUMN backfills. This differs from the CREATE INDEX operation since ADD COLUMN populates an index in order, so it runs more quickly. Measuring this will help us observe improvements in CREATE INDEX. informs https://github.com/cockroachdb/cockroach/issues/146571 [8fefbf93][8fefbf93] +- Enables `workload_generator` to read init‑time schema and SQL artifacts and run SQL workloads with placeholder‑driven data generation. [70217086][70217086] + +

DB Console changes

+ +- The tenant dropdown now appears in insecure mode when multiple virtual clusters are available. Epic: none. 150771: sql/ttl: improve TTL replan decision logic r=spilchen a=spilchen Replace calculatePlanGrowth with detectNodeAvailabilityChanges to make TTL job replanning less sensitive to span changes. The new logic focuses specifically on detecting when nodes become unavailable rather than reacting to all plan differences. The previous implementation would trigger replans for span splits/merges that don't actually indicate beneficial restart scenarios. The new approach only considers missing nodes from the original plan, which typically indicates node failures where work redistribution would benefit from restarting the job. It also supports a stability window so that replan decisions need to fire consecutively. This should help aleviate changes in plans due to range cache issues. Epic: none [0e9251db][0e9251db] +- Fix bug where "Drop Unused Index" recommendations are not populated on the schema index page. 150142: restore: delete comments after failed or cancelled cluster restore r=dt a=msbutler This patch ensures that after a failed or canceled cluster restore, comments from dropped descriptors are removed. Informs #149453 150154: gceworker.sh: update default worker image r=mw5h a=mw5h Ubuntu 20.04 LTS is past EOL and no longer available. DevInf has made 20.04 available in the cockroach-workers project as 'crl-ubuntu-2004'. We also no longer suppoert image families, so this patch changes the image project to 'cockroach-workers' and points at the new image. Epic: none [5a4e4e81][5a4e4e81] +- The "Hot Ranges" page in the DB Console has been renamed to "Top Ranges" to better reflect that it shows the highest-ranked ranges by various metrics, not necessarily ranges experiencing high activity. Fixes: #147330 Epic: CRDB-43150 [c4852d7f][c4852d7f] +- Changes the name of the "Hot Ranges" page to "Top Ranges". [c4852d7f][c4852d7f]

Bug fixes

-- Fixed a bug that would allow a race condition in foreign key cascades under `READ COMMITTED` and `REPEATABLE READ` isolation levels. [#150291][#150291] -- Fix handling of empty arrays in JSONPath lax mode - comparisons. Empty arrays now return false for comparisons in lax mode and - null in strict mode, matching PostgreSQL behavior. [#151226][#151226] -- Added an automatic repair for dangling or invalid entries in the `system.comments` table. [#151737][#151737] -- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. [#151947][#151947] -- Fixed a bug where executing certain statements with `BETWEEN SYMMETRIC` expressions could panic if used with values of different types, such as `... b'bytes' BETWEEN SYMMETRIC 'a' AND 'c'`. [#151951][#151951] -- Fixed a bug where `SHOW TABLES` would show inaccurate row counts if the most recent statistics collection was partial. [#152033][#152033] -- Fixed a bug that prevented `RESTORE` from working if there were computed columns or `ON UPDATE` expressions that referenced user-defined functions (UDFs). This bug was introduced in v25.3.0. [#152193][#152193] -- Fixed a bug that allowed foreign-key violations to result from some combinations of concurrent `READ COMMITTED` and `SERIALIZABLE` transactions. If both `SERIALIZABLE` and weaker-isolation transactions will concurrently modify rows involved in foreign-key relationships, the `SERIALIZABLE` transactions must have the following session variables set in order to prevent any possible foreign-key violations: - - `SET enable_implicit_fk_locking_for_serializable = on;` - - `SET enable_shared_locking_for_serializable = on;` - - `SET enable_durable_locking_for_serializable = on;` [#152245][#152245] -- Added the `use_soft_limit_for_distribute_scan` session variable (default: `false`), which controls whether CockroachDB uses the soft row count estimate when deciding whether an execution plan should be distributed. In v25.1, the physical planning heuristics were changed such that large constrained table scans, estimated to scan at least 10,000 rows (controlled via `distribute_scan_row_count_threshold`), would force plan distribution when `distsql=auto`. However, if the scan had a "soft limit" CockroachDB would still use the full estimate (for example, `10,000` in `estimated row count: 100–10,000`), sometimes unnecessarily distributing queries and increasing latency. The `use_soft_limit_for_distribute_scan` session variable addresses this by allowing the planner to use the soft limit when deciding whether a scan is "large". [#152300][#152300] -- `pg_class.pg_depend` now contains entries with `deptype='i'` (internal) for identity columns that own sequences. These previously had `deptype='a'` (auto). [#152309][#152309] -- Fixed a bug that caused an error when dropping a column and a `UNIQUE WITHOUT INDEX` constraint that referenced it in the same transaction. [#152447][#152447] -- Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions. [#152670][#152670] +- A bug where modifying a changefeed with ALTER CHANGEFEED that either unset or left the `gc_protect_expires_after` option unset would cause the changefeed's max PTS age to become unbounded instead of being set to the default value configured by the `changefeed.protect_timestamp.max_age` cluster setting. [d7f0c96e][d7f0c96e] +- Pg_class.pg_depend now contains entries with deptype='i' (internal) for identity columns that depend on sequences. These previously had deptype='a' (auto). 152481: parserutils: extract shared PopulateErrorDetails into new package r=yuzefovich a=yuzefovich This allows us to break the dependency from `jsonpath/parser` on `sql/parser`. Additionally, it fixes the bug where we used the hardcoded (inherited from `sql/parser`) code for ERROR token in other parsers - the method now explicitly takes that code as an argument. Informs: #79357. Epic: None 152537: cli/interactive_tests: use interrupt_and_wait helper everywhere r=rafiss a=rafiss This helper was added in 799f5ab9d7d135814def077e80a8f14492808768 to reduce flakiness by waiting for process termination. This patch applies the same change to other tests that benefit. fixes https://github.com/cockroachdb/cockroach/issues/152482 152538: roachtest: mark more activerecord tests as flaky r=rafiss a=rafiss fixes https://github.com/cockroachdb/cockroach/issues/152405 fixes https://github.com/cockroachdb/cockroach/issues/151710 [b39295a5][b39295a5] +- In 25.1 we changed the physical planning heuristics so that large constrained table scans, estimated to scan at least 10k rows (controlled via `distribute_scan_row_count_threshold`), would force plan distribution with `distsql=auto` mode. However, if the scan has a "soft limit" we would still use the full estimate (e.g. in "estimated row count: 100 - 10,000" we would use 10k as the estimate) which can lead to distributing queries that shouldn't be, increasing the query latency. New session variable `use_soft_limit_for_distribute_scan` (default `false`) determines whether we use the soft limit when deciding that a scan is "large" or not. [5cb14e23][5cb14e23] +- Addressed a bug on schema_locked tables when a column is dropped, and schema_locked is toggled for the user. [31baea96][31baea96] +- Fixed a bug that caused an error when dropping a column and a UNIQUE WITHOUT INDEX constraint that references it in the same transaction. 152451: persistedsqlstats: Fix flakey TestSQLStatsDataDriven test r=kyle-a-wong a=kyle-a-wong This test became flakey after changing sql stats to be an async processes. Now we set SynchronousSQLStats=true on the testing knob to make this test deterministic. Fixes: #152213 Epic: None 152459: log, *: Find and replace log.*Error* and log.*Fatal* with log.Dev.*Error* and log.Dev.*Fatal* r=kyle-a-wong a=kyle-a-wong Epic: [CRDB-53410](https://cockroachlabs.atlassian.net/browse/CRDB-53410) 152514: backup: deflake TestBackupRestoreClusterWithUdfs r=kev-cao a=msbutler This patch removes the flaky descriptor id assertions and simply tests that the restored schema objects work. Informs #152438 [f276f1ad][f276f1ad] +- A bug that would allow FK violations as a result of some combinations of concurrent Read Committed and Serializable transactions has been fixed. Note that if both Serializable and weaker-isolation transactions will concurrently modify rows involved in FK relationships, the Serializable transactions must have the following session variables set to prevent any possible FK violations: - `SET enable_implicit_fk_locking_for_serializable = on;` - `SET enable_shared_locking_for_serializable = on;` - `SET enable_durable_locking_for_serializable = on;` [f49c602f][f49c602f] +- Updating column default expressions would incorrectly remove sequence ownerships for the affected column. 152137: roachtest: log non-200 responses in `getProfileWithTimeout` r=herkolategan a=srosenberg Non-200 responses typically do not contain a valid payload. Thus, `getProfileWithTimeout` should not attempt to parse the payload unless it receives a 200-response. Informs: #151791 Epic: none 152208: changefeedccl: allow changefeed err in rand expr test r=andyyang890 a=rharding6373 Previously, TestChangefeedRandomExpressions could fail even if a changefeed error was in the allowlist because the feed factory was created such that no changefeed errors were allowed. This change allows changefeed errors. Fixes: #152036 Epic: none 152306: sql: fix unsafe authorization check on table descriptors r=angles-n-daemons a=angles-n-daemons pr #151804 added a function, objectIsUnsafe, to communicate whether the object being observed was, considered unsafe, namely, in the crdb_internal schema or in the system database and unsupported. This function aimed to only review table descriptors, but it accidentally marked all non-table descriptors as unsafe as a result, eg: ``` func objectIsUnsafe() { if !tableDescriptor { return true } } ``` If released, this would improperly block query access to all non-table descriptors in the database for unauthorized users. This PR remediates this issue. Fixes: #152305 Epic: CRDB-24527 [584c74d6][584c74d6] +- Fixed a bug that prevented RESTORE from working if there were computed columns or ON UPDATE expressions that referenced user-defined functions. This bug was introduced in v25.3.0. [064aa707][064aa707] +- Added an automatic repair for dangling or invalid entries in the system.comment table. 151880: server: Filter high contention insights in ListExecutionInsights r=alyshanjahani-crl a=alyshanjahani-crl Previously high contention insights included in the ListExecutionInsights response often did not have their respective contention events available in the contention events registry. This led to confusion when viewing an insight execution overview page since the table displaying the contention events for the execution would often be empty. This commit fixes this behaviour by ensuring that any high contention insights are only included in the ListExecutionInsights response if they have at least one valid contention event available in the contention event registry. A contention event is valid if the blocking transaction fingerprint ID (i.e. the column of most interest in the UI table) is resolved. Fixes: https://cockroachlabs.atlassian.net/browse/CRDB-53271 151951: sql: fix `BETWEEN SYMMETRIC` normalization to use matching typed lefts r=Uzair5162 a=Uzair5162 We normalize symmetric `RangeCond` expressions (` BETWEEN SYMMETRIC AND `) by expanding them into 2 pairs of `ComparisonExpr`, covering both orderings of the BETWEEN bounds. When the type-checks for the left/from and left/to comparisons chose different coercions, the symmetric half could pair `leftFrom` with `to` (and `leftTo` with `from`) during normalization. This resulted in mixed-type comparisons on type-checked expressions and caused panics in some paths (e.g. AOST normalization). This change ensures that the type-checked pairings are kept aligned when constructing `ComparisonExpr` in the symmetric case. Fixes: https://github.com/cockroachdb/cockroach/issues/133395 [9f257785][9f257785] +- Previously, executing certain statements with `BETWEEN SYMMETRIC` expressions could panic if used with values of different types, such as `... b'bytes' BETWEEN SYMMETRIC 'a' AND 'c'`, which is now fixed. 152033: sql/stats: ignore partial stats in `crdb_internal.table_row_statistics` r=Uzair5162 a=Uzair5162 Previously, the `crdb_internal.table_row_statistics` virtual table was being populated with the row count from the most recent table statistic. This caused incorrect row counts to be shown for `SHOW TABLES` when the most recent statistic was a partial collection. This change ignores partial stats when populating `crdb_internal.table_row_statistics` to fix this issue. Fixes: #152024 [9f257785][9f257785] +- Fixed the pg_catalog.pg_type enties for the "any" and "trigger" pseudotypes. [837a2e3a][837a2e3a] +- Previously, CockroachDB could hit an error `ERROR: span with results after resume span...` when evaluating some queries with ORDER BY ... DESC in an edge case. The bug has been present since about v22.1 and is now fixed. 151949: sql: prep migration for sampled_query and sampled_transaction events r=kyle-a-wong a=kyle-a-wong In v26.1, sampled_query and sampled_transaction events will be moved from the TELEMETRY logging channel to the SQL_EXEC logging channel. This commit gates this migration under the cluster setting: `log.channel_compatibility_mode.enabled` and will log these events to the SQL_EXEC channel if this setting is set to false. Users can set this setting to false in their clusters to validate, test, and identify potential downstream impacts to their logging setups and pipelines. Epic: [CRDB-53410](https://cockroachlabs.atlassian.net/browse/CRDB-53410) Part of: [CRDB-53412](https://cockroachlabs.atlassian.net/browse/CRDB-53412) [2d73bfc8][2d73bfc8] +- Fixed a bug present since v24.1 where the allocator could make rebalancing decisions based on stale data, failing to account for recent local lease transfers not yet reflected in store capacity or gossip. 151110: k8s: fix python3 compatibility issue for multi-region setup r=NishanthNalluri a=shreyaskm623 Previously , the setup.py file was used for the kubernetes cluster setup across the multiple regions , which worked only for the python2 versions , this fix will make it compatible for the python3 versions as well Epic: none Fixes: https://cockroachlabs.atlassian.net/browse/CRDB-48938 [6b4e13ff][6b4e13ff] +- Fixed DROP USER succeeding when a role owned default privileges, which could leave invalid privilege entries in the system. Epic: None [993bd513][993bd513] +- CockroachDB could previously elevate the number of rows deleted on table with multiple column families in some cases. The bug has been present since 19.2 version and is now fixed. Note that the data was deleted correctly, just "rows affected" number was wrong. [3682fa34][3682fa34] +- Fixed a bug where sequences could lose references to triggers, allowing them to be dropped incorrectly. [91a21384][91a21384] +- Fixed an issue where Row Level Security policies with missing dependencies during table-level restores could cause inconsistent state or restore failures. Epic: None 151487: server: fix potential nil pointer when starting flight recorder r=yuzefovich a=dhartunian When the flightt recorder constructor returns an error in `NewFlightRecorder`, we should make sure not to call `Start`. Epic: None [c0934ae3][c0934ae3] +- Fix a bug where debug.zips collected from clusters with disallow_full_table_scans set would have missing system table data. 151201: clusterversion: move WriteInitialTruncStateBeforeSplitApplication to 25.4 r=arulajmani a=arulajmani This cluster version was intended for v25.3, but [we raced with branch cut](https://github.com/cockroachdb/cockroach/pull/149494#issuecomment-3053685906) and this didn't make it to the release branch. The least risky thing to do is to move this to 25.4 instead of a late stage backport, so let's do that. Epic: none [9d400331][9d400331] +- Previously, CockroachDB could encounter an internal error "trying to add a column of UNKNOWN type at ..." in rare cases when handling CASE or OR operations. The bug has been present since 20.2 version and is now fixed. 151137: psql: delete unnecessary `toolchain` line r=rail a=rickystewart It's not necessary and some automation auto-deletes it. Epic: DEVINF-1477 [e59d88e1][e59d88e1] +- Fix a bug that could cause some error returned by attempts to upload backup data to external storage providers to be undetected, potentially causing incomplete backups. Epic: none. [69a0bf1c][69a0bf1c] +- Previously, `SHOW TABLES` would show inaccurate row counts if the most recent statistic collection was partial, which is now fixed. [9f257785][9f257785] +- Views can now reference the `crdb_region` column from underlying tables in expressions. [1303c66c][1303c66c] +- Improved split and scatter behavior for CREATE INDEX when statistics are available for key columns. [1283b87c][1283b87c] +- A bug where a changefeed that was created before v25.2 could fail after upgrading to v25.2 with the error message `both legacy and current checkpoint set on change aggregator spec` has now been fixed. 148782: storage: add blob-rewrite compaction cluster settings r=jbowens a=jbowens Add two new cluster settings for configuring blob-rewrite compactions. Epic: CRDB-20379 [1ded8682][1ded8682] +- Fixed invalid zone configurations when adding a super region to a 3-region database with a secondary region and region survivability. Previously, this could result in assigning more than the allowed number of replicas. [54118cd0][54118cd0] +- Fixed a bug that prevented the row-level TTL table storage parameters (e.g. ttl_select_batch_size, ttl_delete_batch_size, ttl_delete_rate_limit, and ttl_select_rate_limit) from being set to 0, which is their default value. [fa1c75ba][fa1c75ba] +- Attempting to create a vector index with the legacy schema changer will now fail gracefully instead of crashing the node. 150256: server: fixes test flaps due to drains timing out r=[kyle-a-wong] a=MattWhelan Use the SucceedSoonDuration rather than a static 30s timeout. This is responsive to various test parameters. Fixes: #149515, #149534 [da4cfcb2][da4cfcb2] +- A but that would allow a race condition in foreign key cascades under read committed and repeatable read isolations has been fixed. [9e1e159b][9e1e159b] +- Fixes an issue where discarding zone configs on sequences did not remove the actual configuration. [9d5a1fae][9d5a1fae] +- When child metrics are enabled, include_aggregate is disabled, and the sql.metric.application_name/database_name are disabled, a handful of `sql` metrics were not being reported. 149712: storage: aggressively separate values in range ID keyspace r=sumeerbhola a=jbowens Adapt Cockroach's implementation of pebble.SpanPolicyFunc to mark the range ID keyspace with ValueStorageLatencyTolerant. This setting will cause Pebble to separate values into blob files as long as they're large enough that a pointer to an external value is likely to be smaller than the value itself. Separating values improves write amplification by avoiding rewriting values during some compactions. We target the range ID keyspace because it contains the raft log, which is written during all user writes but rarely read. Tangentially related to #16624. Epic: none [dc2191ba][dc2191ba] +- In 25.1.8, 25.2.1, 25.2.2, and 25.3 betas, a slow memory leak was introduced that would accumulate whenever a node executes a part of the distributed plan (the gateway node of the plan is not affected). The leak can only be mitigated by restarting the node and is now fixed. 149891: jobs: update hot ranges logger details r=angles-n-daemons a=angles-n-daemons Two issues with the hot ranges logging job is that it is not marked as internal, and its description is capitalized, which does not follow convention. This PR adds the job to the AutomaticJobTypes which ensures its hidden from the default view, in addition to updating the description to be more focused and appropriate. Fixes: none Epic: none [875e04a8][875e04a8] +- Support any casing for keyword identifiers in a jsonpath query. Note that for 3 special identifiers "TRUE", "FALSE", "NULL", crdb parses them with case insensitivity, but PG parses them case sensitively, e.g. `select '$.active == TrUe'::jsonpath;` will work in crdb but not in pg. [880272d9][880272d9] +- Fixed a bug where database login could fail during LDAP, JWT, or OIDC authentication if the user's external group memberships did not correspond to any existing roles in the database. The login will now succeed, and no roles will be granted or revoked in this scenario. [67b3c08b][67b3c08b] +- In 25.1 version CockroachDB enabled automatic partial stats collection by default (by flipping `sql.stats.automatic_partial_collection.enabled` cluster setting to `true`). Previously, partial stats collection could encounter some expected scenarios that would be reported with PG error code `55000` and would show up as failed stats jobs. These errors are benign and will no longer be reported (the stats job will be marked as "succeeded" but new stats won't be created). 149489: bazel: refine `is_dev_s390x` condition r=rail a=rickystewart This was resulting in failures handling the `select()` in `pkg/ccl/gssapiccl/BUILD.bazel`. Epic: CRDB-21133 [6f71172d][6f71172d] +- Remove unncessary Kafka topic creation that would could cause changefeed start up to fail when using changefeed.new_kafka_sink_enabled=false. Fixes: https://github.com/cockroachdb/cockroach/issues/128973 Epic: CRDB-41784 148683: sql: add infrastructure for new inspect job r=spilchen a=spilchen This adds infrastructure for a new job that will handle data consistency checking (tentatively called inspect). It will be initially invoked via the `EXPERIMENTAL SCRUB` command and a new session variable (`enable_scrub_job`). It will eventually be invoked under its own SQL, but that will be handled separately. I split this into 4 commits to make reviewing easier. I will squash them prior to merging to master. ## jobs: add stub implementation of inspect job This commit introduces a stub for the new INSPECT job type. The Resumer doesn't do anything useful yet. It simply returns as a no-op. Informs: #148289 Epic: CRDB-30356 ## sql: support starting inspect job from SCRUB This change adds support for initiating a INSPECT job when running SCRUB TABLE, controlled by the session variable enable_scrub_job. When enable_scrub_job is true, SCRUB TABLE will schedule or start a consistency check job instead of running inline checks. Informs: #148289 Epic: CRDB-30356 ## sql: add logic tests for inspect job via SCRUB This change introduces logic tests for the new inspect job path when enable_scrub_job is enabled. Informs: #148289 Epic: CRDB-30356 ## sql: add unit test for SCRUB job execution semantics This change adds a unit test (TestInspectJobImplicitTxnSemantics) to verify the behavior of inspect jobs started via EXPERIMENTAL SCRUB TABLE in implicit transactions. Includes test hooks via InspectTestingKnobs to simulate and control job execution behavior. Informs: #148289 Epic: CRDB-30356 149439: roachtest: capture metrics for index backfill in schemachange/bulkingest r=rafiss a=rafiss This will allow us to make a roachperf chart to track changes over time. informs https://github.com/cockroachdb/cockroach/issues/146571 149483: opentelemetry: add raftlog size metrics r=arulajmani a=pav-kv Part of #141126 149488: tracing: fix tests for simple flight recorder r=angles-n-daemons a=dhartunian We weren't returning errors correctly in SucceedsSoon. First failure would fail the test instead of retrying. Resolves: #149450 [63545b4d][63545b4d] +- CockroachDB now allows EXPLAIN of mutation statements in read-only transaction mode which matches behavior of Postgres. Note that EXPLAIN ANALYZE of mutations is still disallowed since this variant actually executes the statement. [ce20a399][ce20a399] +- Fixes a minor bug that caused inconsistent behavior with the very rarely used `"char"` type (not to be confused with `CHAR`). [1206bb5e][1206bb5e] +- The RESET ALL statement is fixed to no longer affect the following session variables: - `is_superuser` - `role` - `session_authorization` - `transaction_isolation` - `transaction_priority` - `transaction_status` - `transaction_read_only` This better matches PostgreSQL behavior for RESET ALL. By fixing RESET ALL, the DISCARD ALL statement is also fixed to work correctly when `default_transaction_use_follower_reads` is enabled. [4a528acb][4a528acb] +- Fixed a bug that would cause a CALL statement executed via a portal in the extended wire protocol to result in an error like `unknown portal ""` if the stored procedure contained `COMMIT` or `ROLLBACK` statements. The bug has existed since PL/pgSQL transaction control statements were introduced in v24.1. [efcbc078][efcbc078] +- Fixes a race condition when advancing a changefeed aggregator's frontier. When hit, the race condition could result in an internal error that would shut down the kvfeed and cause the changefeed to retry. 149262: cockroach-go: bump to latest r=benbardin a=benbardin Epic: none 149334: kvserver: embed timestamp to the queued element r=tbg a=pav-kv Tying the `queued` timestamp to the `rangeID` in the raft scheduler queue makes its scope intuitive, and eliminates the need for an invariant and checks. Follows up on #147913 [c63a85be][c63a85be] +- CockroachDB previously could hit an internal error when performing a DELETE, an UPDATE, or an UPSERT statement where the initial scan of the mutation is locking and is on a table different from the one being mutated. As a workaround, one could do `SET enable_implicit_select_for_update = false`, but note that it might increase contention, so use with caution. The bug was introduced in 25.2 version and is now fixed. [263b677d][263b677d] +- CockroachDB now prohibits ORDER BY and join equality operations on REFCURSOR type, matching behavior of Postgres. [9a4037e0][9a4037e0] +- CockroachDB can now decode VECTOR and BOX2D types from Binary format of PGWire Extended Protocol. [3145ed06][3145ed06] +- Fixed a bug where the entire schema would become inaccessible if a table was referenced as an implicit record type by a UDF while the table was undergoing an IMPORT. 150388: util/parquet,sql: clean up DOidWrapper handling a bit r=yuzefovich a=yuzefovich This commit removes redundant branch for `DOidWrapper` in `encodeArrayElement` (we already do the unwrapping at the top of the function, so this was dead code) as well as replaces the custom unwrap function in `parquet` package with the exported one. It also replaces some other unwrappers with that exported function. Epic: None [76618123][76618123]

Performance improvements

-- `LTREE` is now index-accelerated with the `@>` operator. [#152353][#152353] -- `LTREE` is now index-accelerated with the `<@` operator. [#152353][#152353] -- Lookup joins can now be used on tables with virtual columns even if the type of the search argument is not identical to the column type referenced in the virtual column. [#152399][#152399] +- Lookup joins can now be used on tables with virtual columns even if the type of the search argument is not identical to the column type referenced in the virtual column. [f00ff8d7][f00ff8d7] +- LTREE is now index accelerated with the ``@>`` operator. #### opt: index accelerate <@ operator for ltree The <@ is index accelerated by restricting the span of key-encoded ltrees to be between a given ltree and the ltree with an incremented last label. For example, a query with predicate `WHERE a <@ 'A.B'` would create the span [/'A.B' - /'A.C']. Informs: cockroachdb#44657 Epic: CRDB-148 [a6e4ba93][a6e4ba93] +- LTREE is now index accelerated with the `<`@`` operator. 152523: sql: harden recent fix to deleteRange r=yuzefovich a=yuzefovich In recently merged 59a28ec0a9767e7f4864454bd19065afd9da6b16 we fixed how we count "rows affected" by the deleteRangeNode, which was done by maintaining "cur row prefix" across BatchRequests. AI-generated code review pointed out that we can alias the memory of now-old BatchRequest while processing the response to the new one. Although I don't think it can lead to problems (since we shouldn't be modifying the BatchRequest's or BatchResponse's keys - which is verified via `GRPCTransportFactory` "race" variant), it seems prudent that we make a copy of the row prefix (among other benefits, this might allow for the old keys to be GCed sooner). Epic: None [a6e4ba93][a6e4ba93] +- Some types of simple queries that query a table with RLS enabled are now more efficiently executed. 151495: sql: add goroutine IDs to text trace output in logs r=alyshanjahani-crl,arulajmani,yuzefovich a=dhartunian when outputting a transaction trace in text format into the logs, we will now include the goroutine ID in the line with the operation like this: ``` === operation:foo gid:123 ``` Epic: None [23e1618a][23e1618a] +- The efficiency and throughput of catch-up scans used by CDC and PCR is improved in cases where substantial catch-up work is required. Epic: none. While I'm here: since we have a setting we may as well use it to control the buffer's size target rather than just on vs off. [ffa3d5c1][ffa3d5c1] +- Mutation statements (UPDATEs and DELETEs) that perform lookup joins into multi-region tables (perhaps as part of a CASCADE) are now more likely to parallelize the lookups across ranges which improves their performance. [691f7a80][691f7a80] +- Reduces write amplification by storing raft log values in separate blob files. This reduces write bandwidth, especially on stores with many replicas. This in turn can increase throughput and reduce latency. This behavior is active as long as the storage.value_separation.enabled cluster setting is enabled. [dc2191ba][dc2191ba] +- Before we normalized filters `x LIKE '%'` for non-null columns directly to true. This is limited for columns which are nullable. This commit instead normalizes the aforementioned filter to `x IS NOT NULL` for better performance improvements on all columns with this filter. [6e1f7034][6e1f7034] +- Some queries with filters in the form `x IS NOT DISTINCT FROM y` now have more optimal query plans. [48775d39][48775d39] +- LIKE expressions of the form `x LIKE '%'` are normalized to true if x is non-Null. [f51a6aa7][f51a6aa7]

Build changes

-- Revert Go version back to 1.23.7. - Epic: none [#152023][#152023] +- Revert Go version back to 1.23.7. Epic: none [19606f2d][19606f2d] +- Upgrade to Go 1.24.5 [a6ca3232][a6ca3232]

Miscellaneous

-- Tunes S3 client retry behavior to be more reliable in the - presence of correlated errors. [#151817][#151817] -- Upgrade to Go 1.23.12 [#152207][#152207] - - -[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 -[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 -[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 -[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 -[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 -[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 -[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 +- A new feature that captures go execution traces on an automatic schedule is now available. This feature will incur a performance penalty and customers will typically use this under the guidance of Cockroach Labs support. There are 3 cluster settings which manipulate this feature: - `obs.execution_tracer.interval`: set to >0 to enable the tracer and capture traces at the given interval. - `obs.execution_tracer.duration`: sets the time over which each trace captures data. - `obs.execution_tracer.total_dump_size_limit` : sets the total amount of disk space to allow execution traces to take up before the oldest files are garbage collected automatically. [7b663425][7b663425] +- The `create_table_with_schema_locked` session variable is now enabled by default. As a result, all new tables will be created as `schema-locked`. This setting must be manually disabled before running operations that do not support schema-locking automatically, such as explicit transactions or `ALTER TABLE ... SET LOCALITY`. 148796: workflows: run update_releases on release-25.3 r=jlinder a=rail Epic: none [6ff7857d][6ff7857d] +- Upgrade to Go 1.23.12 [a10bae0f][a10bae0f] +- Tunes S3 client retry behavior to be more reliable in the presence of correlated errors. [1bedd255][1bedd255] +- When outputting transaction traces to logs using probabilistic and/or statement latency-based triggers, users have the option to write the logs in Jaeger-compatible JSON format to the logs for easier analysis. Setting the cluster setting `sql.trace.txn.jaeger_json_output.enabled` to true, will change the output format. [0e8321e1][0e8321e1] +- Fixes a rare bug in restore where an object storage on restore start could cause restore to report success without creating the restored tables or databases. [53ce6cb7][53ce6cb7] +- Fixes a memory accounting issue with the client certificate cache, where we were accidentally reporting multiple allocations for the same memory. [f9668778][f9668778] +- The `sys.host.net.send.tcp.retrans_segs` metric has been added, alongside a number of additional TCP metrics. These can be useful to diagnose network issues. [dafaf1de][dafaf1de] +- Download phase of fast restore now will retry downloads before giving up. 149367: storage: bump pebble, enable blob-file rewrites metamorphically r=annrpom a=annrpom ### go.mod: bump Pebble to a2947b4a9383 Changes: * [`a2947b4a`](https://github.com/cockroachdb/pebble/commit/a2947b4a) cmd/pebble: enable blob file rewriting * [`5e1cd273`](https://github.com/cockroachdb/pebble/commit/5e1cd273) compression: deflake TestAdaptiveCompressorCompressible * [`652bc0ca`](https://github.com/cockroachdb/pebble/commit/652bc0ca) ascii/table: new package * [`2430d94a`](https://github.com/cockroachdb/pebble/commit/2430d94a) internal/ascii: new package * [`7d17fe51`](https://github.com/cockroachdb/pebble/commit/7d17fe51) metamorphic: enable blob file rewrite compactions * [`09c33960`](https://github.com/cockroachdb/pebble/commit/09c33960) blob: deduplicate values during rewrite * [`8e65e154`](https://github.com/cockroachdb/pebble/commit/8e65e154) pebble: setupInputs checks key range conflicts with in progress compactions * [`8dea64b3`](https://github.com/cockroachdb/pebble/commit/8dea64b3) db: incorporate separated values when estimating compression ratios * [`9fd475aa`](https://github.com/cockroachdb/pebble/commit/9fd475aa) db: add TestTableStats test case exercising separated values * [`3b556400`](https://github.com/cockroachdb/pebble/commit/3b556400) tool: add tool for inspecting blob files * [`c726afea`](https://github.com/cockroachdb/pebble/commit/c726afea) sstable: add blob value liveness writer random test * [`c0d37a5b`](https://github.com/cockroachdb/pebble/commit/c0d37a5b) metamorphic: use leaktest in metamorphic test * [`4ad0e5fb`](https://github.com/cockroachdb/pebble/commit/4ad0e5fb) Revert "sstable: lazy load the index block in single level iterator" * [`f5351564`](https://github.com/cockroachdb/pebble/commit/f5351564) Revert "sstable: lazy load the index block in two level iterator" * [`46650aa8`](https://github.com/cockroachdb/pebble/commit/46650aa8) github: add crl-release-25.3 to nightlies and crossversion * [`11cf2c4a`](https://github.com/cockroachdb/pebble/commit/11cf2c4a) pebble: deflake move compaction datadriven test * [`fe43e7b5`](https://github.com/cockroachdb/pebble/commit/fe43e7b5) sstable: lazy load the index block in two level iterator * [`f4af03ae`](https://github.com/cockroachdb/pebble/commit/f4af03ae) test: introduce two level iterator benchmark test * [`527eebf4`](https://github.com/cockroachdb/pebble/commit/527eebf4) sstable: lazy load the index block in single level iterator Epic: none. ### storage: metamorphically enable blob-file rewrites This patch enables blob-file rewrites metamorphically. [73aaff28][73aaff28] +- changefeed.create_pts_hist_nanos and changefeed.manage_pts_hist_nanos to measure the performance of managing protected ts records. [96f6d6bb][96f6d6bb] +- When enabling probabilistic transaction tracing via the `sql.trace.txn.enable_threshold` and `sql.trace.txn.sample_rate` cluster settings, it's typical that you would want to omit internal transactions from being considered for tracing and logging. You can now do this by setting `sql.trace.txn.include_internal.enabled` to false. ---- Prior commit is being reviewed here: https://github.com/cockroachdb/cockroach/pull/151414 Also tests are not correct yet, I'm trying to use this patch to consolidate tests from the last one to prevent lots of small tests that have to start their own servers. [3824cc28][3824cc28] + + +[584c74d6]: https://github.com/cockroachdb/cockroach/pull/584c74d6 +[9f257785]: https://github.com/cockroachdb/cockroach/pull/9f257785 +[f09c7b83]: https://github.com/cockroachdb/cockroach/pull/f09c7b83 +[33e009d7]: https://github.com/cockroachdb/cockroach/pull/33e009d7 +[ce35c63b]: https://github.com/cockroachdb/cockroach/pull/ce35c63b +[6b4e13ff]: https://github.com/cockroachdb/cockroach/pull/6b4e13ff +[f00ff8d7]: https://github.com/cockroachdb/cockroach/pull/f00ff8d7 +[a148cb0d]: https://github.com/cockroachdb/cockroach/pull/a148cb0d +[f49c602f]: https://github.com/cockroachdb/cockroach/pull/f49c602f +[fa1c75ba]: https://github.com/cockroachdb/cockroach/pull/fa1c75ba +[d1af030c]: https://github.com/cockroachdb/cockroach/pull/d1af030c +[9a4037e0]: https://github.com/cockroachdb/cockroach/pull/9a4037e0 +[53ce6cb7]: https://github.com/cockroachdb/cockroach/pull/53ce6cb7 +[3ad5418b]: https://github.com/cockroachdb/cockroach/pull/3ad5418b +[d7f0c96e]: https://github.com/cockroachdb/cockroach/pull/d7f0c96e +[efcbc078]: https://github.com/cockroachdb/cockroach/pull/efcbc078 +[835eda7d]: https://github.com/cockroachdb/cockroach/pull/835eda7d +[8987f661]: https://github.com/cockroachdb/cockroach/pull/8987f661 +[3682fa34]: https://github.com/cockroachdb/cockroach/pull/3682fa34 +[19606f2d]: https://github.com/cockroachdb/cockroach/pull/19606f2d +[ee02ca6b]: https://github.com/cockroachdb/cockroach/pull/ee02ca6b +[31baea96]: https://github.com/cockroachdb/cockroach/pull/31baea96 +[f276f1ad]: https://github.com/cockroachdb/cockroach/pull/f276f1ad +[993bd513]: https://github.com/cockroachdb/cockroach/pull/993bd513 +[691f7a80]: https://github.com/cockroachdb/cockroach/pull/691f7a80 +[48775d39]: https://github.com/cockroachdb/cockroach/pull/48775d39 +[7a7aab5b]: https://github.com/cockroachdb/cockroach/pull/7a7aab5b +[459f9697]: https://github.com/cockroachdb/cockroach/pull/459f9697 +[875e04a8]: https://github.com/cockroachdb/cockroach/pull/875e04a8 +[4a528acb]: https://github.com/cockroachdb/cockroach/pull/4a528acb +[6e1f7034]: https://github.com/cockroachdb/cockroach/pull/6e1f7034 +[a10bae0f]: https://github.com/cockroachdb/cockroach/pull/a10bae0f +[768a2b67]: https://github.com/cockroachdb/cockroach/pull/768a2b67 +[5eb2140d]: https://github.com/cockroachdb/cockroach/pull/5eb2140d +[14f65341]: https://github.com/cockroachdb/cockroach/pull/14f65341 +[1303c66c]: https://github.com/cockroachdb/cockroach/pull/1303c66c +[23e1618a]: https://github.com/cockroachdb/cockroach/pull/23e1618a +[263b677d]: https://github.com/cockroachdb/cockroach/pull/263b677d +[8eb0c9dc]: https://github.com/cockroachdb/cockroach/pull/8eb0c9dc +[c2d10600]: https://github.com/cockroachdb/cockroach/pull/c2d10600 +[63f8071d]: https://github.com/cockroachdb/cockroach/pull/63f8071d +[50694710]: https://github.com/cockroachdb/cockroach/pull/50694710 +[f43db402]: https://github.com/cockroachdb/cockroach/pull/f43db402 +[5a4e4e81]: https://github.com/cockroachdb/cockroach/pull/5a4e4e81 +[21c52775]: https://github.com/cockroachdb/cockroach/pull/21c52775 +[8fefbf93]: https://github.com/cockroachdb/cockroach/pull/8fefbf93 +[73aaff28]: https://github.com/cockroachdb/cockroach/pull/73aaff28 +[255f60e1]: https://github.com/cockroachdb/cockroach/pull/255f60e1 +[1522360e]: https://github.com/cockroachdb/cockroach/pull/1522360e +[7b663425]: https://github.com/cockroachdb/cockroach/pull/7b663425 +[9d5a1fae]: https://github.com/cockroachdb/cockroach/pull/9d5a1fae +[5cb14e23]: https://github.com/cockroachdb/cockroach/pull/5cb14e23 +[6cd77297]: https://github.com/cockroachdb/cockroach/pull/6cd77297 +[7c13dda5]: https://github.com/cockroachdb/cockroach/pull/7c13dda5 +[c0934ae3]: https://github.com/cockroachdb/cockroach/pull/c0934ae3 +[b147ab94]: https://github.com/cockroachdb/cockroach/pull/b147ab94 +[ae4d42dd]: https://github.com/cockroachdb/cockroach/pull/ae4d42dd +[a73404be]: https://github.com/cockroachdb/cockroach/pull/a73404be +[d591c199]: https://github.com/cockroachdb/cockroach/pull/d591c199 +[1206bb5e]: https://github.com/cockroachdb/cockroach/pull/1206bb5e +[e63be70a]: https://github.com/cockroachdb/cockroach/pull/e63be70a +[2d73bfc8]: https://github.com/cockroachdb/cockroach/pull/2d73bfc8 +[1ded8682]: https://github.com/cockroachdb/cockroach/pull/1ded8682 +[a6e4ba93]: https://github.com/cockroachdb/cockroach/pull/a6e4ba93 +[f51a6aa7]: https://github.com/cockroachdb/cockroach/pull/f51a6aa7 +[1bedd255]: https://github.com/cockroachdb/cockroach/pull/1bedd255 +[421a2574]: https://github.com/cockroachdb/cockroach/pull/421a2574 +[19fcdb66]: https://github.com/cockroachdb/cockroach/pull/19fcdb66 +[54118cd0]: https://github.com/cockroachdb/cockroach/pull/54118cd0 +[da4cfcb2]: https://github.com/cockroachdb/cockroach/pull/da4cfcb2 +[ce20a399]: https://github.com/cockroachdb/cockroach/pull/ce20a399 +[ffa3d5c1]: https://github.com/cockroachdb/cockroach/pull/ffa3d5c1 +[2a73f4a9]: https://github.com/cockroachdb/cockroach/pull/2a73f4a9 +[322d3bb8]: https://github.com/cockroachdb/cockroach/pull/322d3bb8 +[c4852d7f]: https://github.com/cockroachdb/cockroach/pull/c4852d7f +[69a0bf1c]: https://github.com/cockroachdb/cockroach/pull/69a0bf1c +[6f71172d]: https://github.com/cockroachdb/cockroach/pull/6f71172d +[1957a648]: https://github.com/cockroachdb/cockroach/pull/1957a648 +[cf40a350]: https://github.com/cockroachdb/cockroach/pull/cf40a350 +[7df163f0]: https://github.com/cockroachdb/cockroach/pull/7df163f0 +[b39295a5]: https://github.com/cockroachdb/cockroach/pull/b39295a5 +[837a2e3a]: https://github.com/cockroachdb/cockroach/pull/837a2e3a +[67b3c08b]: https://github.com/cockroachdb/cockroach/pull/67b3c08b +[06444d34]: https://github.com/cockroachdb/cockroach/pull/06444d34 +[d5acebac]: https://github.com/cockroachdb/cockroach/pull/d5acebac +[2f096411]: https://github.com/cockroachdb/cockroach/pull/2f096411 +[bfb43f56]: https://github.com/cockroachdb/cockroach/pull/bfb43f56 +[dc2191ba]: https://github.com/cockroachdb/cockroach/pull/dc2191ba +[880272d9]: https://github.com/cockroachdb/cockroach/pull/880272d9 +[ad4d1094]: https://github.com/cockroachdb/cockroach/pull/ad4d1094 +[e2c55634]: https://github.com/cockroachdb/cockroach/pull/e2c55634 +[a4148787]: https://github.com/cockroachdb/cockroach/pull/a4148787 +[1aabeeb6]: https://github.com/cockroachdb/cockroach/pull/1aabeeb6 +[9d400331]: https://github.com/cockroachdb/cockroach/pull/9d400331 +[96f6d6bb]: https://github.com/cockroachdb/cockroach/pull/96f6d6bb +[0e8321e1]: https://github.com/cockroachdb/cockroach/pull/0e8321e1 +[7d97799d]: https://github.com/cockroachdb/cockroach/pull/7d97799d +[3d5ef946]: https://github.com/cockroachdb/cockroach/pull/3d5ef946 +[82759997]: https://github.com/cockroachdb/cockroach/pull/82759997 +[0e9251db]: https://github.com/cockroachdb/cockroach/pull/0e9251db +[91a21384]: https://github.com/cockroachdb/cockroach/pull/91a21384 +[a6ca3232]: https://github.com/cockroachdb/cockroach/pull/a6ca3232 +[a491fd92]: https://github.com/cockroachdb/cockroach/pull/a491fd92 +[a1077166]: https://github.com/cockroachdb/cockroach/pull/a1077166 +[40b00a90]: https://github.com/cockroachdb/cockroach/pull/40b00a90 +[9ab7ea1b]: https://github.com/cockroachdb/cockroach/pull/9ab7ea1b +[86c47284]: https://github.com/cockroachdb/cockroach/pull/86c47284 +[ede5ccc7]: https://github.com/cockroachdb/cockroach/pull/ede5ccc7 +[70217086]: https://github.com/cockroachdb/cockroach/pull/70217086 +[e59d88e1]: https://github.com/cockroachdb/cockroach/pull/e59d88e1 +[c74f6a36]: https://github.com/cockroachdb/cockroach/pull/c74f6a36 +[a685bfbf]: https://github.com/cockroachdb/cockroach/pull/a685bfbf +[693c3951]: https://github.com/cockroachdb/cockroach/pull/693c3951 +[9e1e159b]: https://github.com/cockroachdb/cockroach/pull/9e1e159b +[76618123]: https://github.com/cockroachdb/cockroach/pull/76618123 +[b1bb2263]: https://github.com/cockroachdb/cockroach/pull/b1bb2263 +[2dc9058c]: https://github.com/cockroachdb/cockroach/pull/2dc9058c +[d11bf892]: https://github.com/cockroachdb/cockroach/pull/d11bf892 +[63545b4d]: https://github.com/cockroachdb/cockroach/pull/63545b4d +[3824cc28]: https://github.com/cockroachdb/cockroach/pull/3824cc28 +[f9668778]: https://github.com/cockroachdb/cockroach/pull/f9668778 +[c12d55d9]: https://github.com/cockroachdb/cockroach/pull/c12d55d9 +[caa221d6]: https://github.com/cockroachdb/cockroach/pull/caa221d6 +[21349171]: https://github.com/cockroachdb/cockroach/pull/21349171 +[c9e4bb2b]: https://github.com/cockroachdb/cockroach/pull/c9e4bb2b +[c63a85be]: https://github.com/cockroachdb/cockroach/pull/c63a85be +[6ff7857d]: https://github.com/cockroachdb/cockroach/pull/6ff7857d +[6228e693]: https://github.com/cockroachdb/cockroach/pull/6228e693 +[679f10bb]: https://github.com/cockroachdb/cockroach/pull/679f10bb +[064aa707]: https://github.com/cockroachdb/cockroach/pull/064aa707 +[1283b87c]: https://github.com/cockroachdb/cockroach/pull/1283b87c +[3145ed06]: https://github.com/cockroachdb/cockroach/pull/3145ed06 +[2f606a62]: https://github.com/cockroachdb/cockroach/pull/2f606a62 +[7f2055b8]: https://github.com/cockroachdb/cockroach/pull/7f2055b8 +[722aed0c]: https://github.com/cockroachdb/cockroach/pull/722aed0c +[639c2e5e]: https://github.com/cockroachdb/cockroach/pull/639c2e5e +[2eb84bc3]: https://github.com/cockroachdb/cockroach/pull/2eb84bc3 +[1a4f475f]: https://github.com/cockroachdb/cockroach/pull/1a4f475f +[8f28ff92]: https://github.com/cockroachdb/cockroach/pull/8f28ff92 +[37243f53]: https://github.com/cockroachdb/cockroach/pull/37243f53 +[96bc36ec]: https://github.com/cockroachdb/cockroach/pull/96bc36ec +[dafaf1de]: https://github.com/cockroachdb/cockroach/pull/dafaf1de From eb3def8c65e828492c7da9e6d2066d6e45ae8342 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 17 Sep 2025 09:56:49 +0000 Subject: [PATCH 29/41] Update release notes for v25.4-v25.4.0-alpha.1 From 85eee4a34665c25432eed02524317d79e65a2188 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 17 Sep 2025 09:56:51 +0000 Subject: [PATCH 30/41] Update release notes for v25.4-v25.4.0-alpha.1 From c26868e2ef76e6d1ac8370bf2256f66743d87c20 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 17 Sep 2025 09:56:54 +0000 Subject: [PATCH 31/41] Update release notes for v25.4-v25.4.0-alpha.1 --- .../releases/v25.4/v25.4.0-alpha.1.md | 808 +++++++++++------- 1 file changed, 514 insertions(+), 294 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md index bd048c36e38..09a4e1345bf 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md @@ -6,329 +6,549 @@ Release Date: September 16, 2025

Security updates

-- Strengthened password policy controls for FIPS 140‑3 builds. The minimum allowed password length is now set to 14 characters (112 bits of entropy) in FIPS-compliant builds. This prevents crashes caused by shorter passwords, aligning with NIST key-length recommendations 151687: opt: lazily initialize helper data in join reordering r=mgartner a=mgartner Some equivalence groups and column sets are used during join reordering only when there are inner-join edges. These data structures are no longer initialized if there are no inner-join edges. [a491fd92][a491fd92] -- CockroachDB can now synchronise SQL role membership from the groups claim provided by an OpenID Connect (OIDC) Identity Provider when `server.oidc_authentication.authorization.enabled = true`. . At login the DB Console gathers the `groups` claim from both the verified ID token and, when available, the access token (if it is a JWT). Any groups found in either token are combined and de-duplicated. If no claim is present in either token, the server will query the provider's `/userinfo` endpoint and extract groups from there (using `server.oidc_authentication.userinfo_group_key`) as a final fallback. . The resulting list of groups is normalised to SQL role names and compared to the user’s current role memberships. Any newly required roles are GRANTed and any stale ones are REVOKEd, matching the behaviour already available for JWT and LDAP-based role synchronisation. [2f606a62][2f606a62] -- The following provisioning usability metric counters were added for ldap based user provisioning. * An enablement tracking counter for organizations enabling ldap provisioning (`auth.provisioning.ldap.enable`) * A counter for number of organizations & tenants which have enabled ldap to auto-provision users(`auth.provisioning.ldap.begin`). * A counter for the number of auto-provisioned users (`auth.provisioning.ldap.success`). * A telemetry counter for number of logins performed by provisioned users (`auth.provisioning.login_success`). [b147ab94][b147ab94] -- The JWT Authorization settings which were merged in #147318 are no longer visible to users in 25.3. They will be re-introduced in 25.4. [6cd77297][6cd77297] +- CockroachDB can now synchronise SQL + role membership from the groups claim contained in a JWT when + `server.jwt_authentication.authorization.enabled = true`. The claim + name and the fallback *userinfo* JSON key are configurable by + `server.jwt_authentication.group_claim` and + `server.jwt_authentication.userinfo_group_key` respectively. + Behaviour matches the existing LDAP role-sync feature. + . + Common IdP examples + ------------------- + - Okta (default mapping) + SET CLUSTER SETTING server.jwt_authentication.group_claim = 'groups'; + SET CLUSTER SETTING server.jwt_authentication.userinfo_group_key = 'groups'; + . + - Keycloak + If you map Keycloak Groups to a JWT claim (default): + group_claim = 'groups' -- e.g. "groups": ["team-a","team-b"] + . + If you prefer Keycloak’s built-in realm roles, CockroachDB does not follow + nested paths like "realm_access.roles". Add a Keycloak protocol mapper that + flattens roles into a top-level claim (for example "roles") and then + configure: + group_claim = 'roles'; -- e.g. "roles": ["team-a","team-b"] + . + The userinfo endpoint usually returns the same JSON keys, so the same values + work for `userinfo_group_key` as well. [#147318][#147318] +- CockroachDB can now synchronise SQL + role membership from the groups claim provided by an OpenID Connect + (OIDC) Identity Provider when + `server.oidc_authentication.authorization.enabled = true`. + . + At login the DB Console gathers the `groups` claim from both the + verified ID token and, when available, the access token (if it is a + JWT). Any groups found in either token are combined and + de-duplicated. If no claim is present in either token, the server + will query the provider's `/userinfo` endpoint and extract groups from + there (using `server.oidc_authentication.userinfo_group_key`) as a + final fallback. + . + The resulting list of groups is normalised to SQL role names and + compared to the user’s current role memberships. Any newly required + roles are GRANTed and any stale ones are REVOKEd, matching the + behaviour already available for JWT and LDAP-based role + synchronisation. [#147706][#147706] +- The JWT Authorization settings which + were merged in #147318 are no longer visible to users in 25.3. They + will be re-introduced in 25.4. [#149189][#149189] +- The following provisioning usability metric counters + were added for ldap based user provisioning. + + * An enablement tracking counter for organizations enabling ldap provisioning + (`auth.provisioning.ldap.enable`) + * A counter for number of organizations & tenants which have enabled ldap to + auto-provision users(`auth.provisioning.ldap.begin`). + * A counter for the number of auto-provisioned users + (`auth.provisioning.ldap.success`). + * A telemetry counter for number of logins performed by provisioned users + (`auth.provisioning.login_success`). [#150476][#150476]

General changes

-- Restore jobs now log errors on retry to the job messages table. 152203: logictest: deflake test by removing IDs from assertion r=rafiss a=rafiss These IDs are not determinstic since they can change if an internal retry happens. [6228e693][6228e693] -- Spatial libraries from Cockroach now rely on GEOS 3.13 instead of GEOS 3.12. [06444d34][06444d34] -- Added headers config option to OTLP log sink. [8eb0c9dc][8eb0c9dc] -- The protobuf format for changefeeds now support enriched envelopes. [ad4d1094][ad4d1094] -- Spatial libraries from Cockroach now rely on GEOS 3.12 instead of GEOS 3.11. [c12d55d9][c12d55d9] -- Added HTTP mode to OTLP log sink that can export logs to OpenTelemetry-compatible targets over HTTP. [c2d10600][c2d10600] -- Changefeeds using the protobuf format now support wrapped envelopes in kafka sinks. Fixes https://github.com/cockroachdb/cockroach/issues/148936 [a1077166][a1077166] -- The changefeeds with protobuf format now supports the resolved option for emitting resolved timestamps. 150319: kv: remove some tautological conditionals r=tbg a=stevendanna Epic: none 150370: pcr: add debug benchmarking settings to discard data r=dt a=dt Epic: none. 150436: upgradeccl: ensure multiple releases for TestTenantUpgradeFailure test r=rail a=celiala TestTenantUpgradeFailure can only run when we support more than one previous release. This PR ensures that we setup multple releases for this test. This unblocks the PR needed to mint release-25.3: https://github.com/cockroachdb/cockroach/pull/150211#issuecomment-3084826799 - Once 150436 is backported onto release-25.3, I'll remove https://github.com/cockroachdb/cockroach/pull/150211/commits/a38ea8fde36ee7845f1f36e5567716783cefb565 from https://github.com/cockroachdb/cockroach/pull/150211, and just rebase on top of this backported fix. Epic: None Release justification: test-only fix. [f09c7b83][f09c7b83] -- Changefeeds now support Protobuf as a serialization format with bare envelopes when streaming data to Kafka sinks. [b1bb2263][b1bb2263] -- The CREATE CHANGEFEED statement now supports the `headers` option, which can be used to specify constant headers for webhook and kafka sinks. This can be used to add headers to all messages sent to the sink. 149904: asim: final port over from mma prototype for asim r=tbg a=wenyihu6 **asim: pass false to ReplicaChangeDelayFn for AllocationTransferLeaseOp** Previously, we incorrectly passed true to ReplicaChangeDelayFn for AllocationTransferLeaseOp, causing it to treat the operation like a replica addition and extend the delay based on range size and snapshot rate. Since lease transfers are expected to be much faster, this was unintended. This commit fixes the issue by applying only the base delay (ReplicaChangeBaseDelay) to AllocationTransferLeaseOp, which defaults to 100ms. Epic: none --- **asim: correctly update queue.next in pushReplicateChange** Previously, we did not assign the next field of the queues correctly because we passed the base queue by value into pushReplicateChange, which caused updates to the next field to affect only the copy, not the original queue. This commit fixes the issue by returning the correct next value and updating the queue directly. Epic: none --- **asim: pass simulator.Replica instead to pushReplicateChange** Previously, we passed state.Range to pushReplicateChange. This commit changes it to pass the simulator.Replica directly, as future commits will require access to additional fields such as Desc and RangeUsageInfo. Epic: none --- **asim: pass state changer directly to pushReplicateChange** Previously, we passed base queue to pushReplicateChange, but only its state changer was being used. This commit updates pushReplicateChange to only take in the state changer. Epic: none --- **asim: integrate allocatorsync with lease and replicate queue properly** This commit integrates lease and replicate queue changes with the mma allocator properly by calling allocatorSync.PreApply* and allocatorSync.PostApply, completing the allocator integration. Some data-driven test outputs changed because allocatorSync.PostApply now updates store pool after operations (such as UpdateLocalStoresAfterLeaseTransfer), which was missing previously in asim. It’s unclear if this was an oversight or previously seemed as unnecessary. More reading is needed. Epic: none --- **asim: pass queue names for logging** This commit passes the name of the queue making changes to pushReplicateChange to improve logging. Epic: none --- **asim: remove setting from store** This commit removes the setting field from store struct as it is not used anywhere. Epic: none --- **asim: add rebalance_objective and delay for rebalance_mode** This commit adds rebalance_objective as a setting and allows changes to rebalance_mode to be scheduled as a delayed simulation event. This enables testing transitions between mma enabled and disabled mode. Epic: none --- **asim: check for LBRebalancingMultiMetric in ShouldRebalanceStore** This commit updates the old store rebalancer's ShouldRebalanceStore to check the LBRebalancingMultiMetric cluster setting. asim still invokes this method when checking changes from the old store rebalancer. Epic: none 150191: roachtest: fix check for npm being installed r=rafiss a=rafiss We have seen that this check can return a 0 exit code even when the npm command doesn't exist. Using && should fix this by short-circuiting as soon as a non-zero exit code is received. fixes https://github.com/cockroachdb/cockroach/issues/149536 fixes https://github.com/cockroachdb/cockroach/issues/149532 [1957a648][1957a648] -- A warning is now emitted when creating or altering a changefeed with `resolved` or `min_checkpoint_frequency` set below 500ms. This helps users understand the tradeoff between message latency and cluster CPU usage. 150146: vecindex: fix Cosine/InnerProduct accuracy bugs r=drewkimball a=andy-kimball #### cspann: use correct metric for assigning vectors during split Previously, during split the BalancedKmeans class was not initialized with the distance metric used by the index. This caused vectors to be assigned to partitions using a potentially incorrect metric, which can negatively impact accuracy. #### quantize: set zero dot product for centroid data vector Previously, the dot product between a data unit vector and its quantized form was not being set in the case where the data vector is equal to the centroid. This could cause an issue when a RaBitQuantizedSet is reused and the dot product memory is not zero. Fix this buglet and update the code to scribble undefined memory. #### quantize: recompute norm when centroid is updated When RaBitQuantizedVectorSet.Clear was called with a new centroid, the norm was not being recomputed. This commit fixes that bug. 150147: roachtest: actually fail TPCC bench if reached max warehouses r=miraradeva a=miraradeva In 1bfe55b, we attempted to fail the TPCC bench test run if the configured maximum warehouses were reached and the success criteria were met. The idea was that this would prompt us to increase the max warehouses. However, that commit failed only the specific line search run, not the full test run. This commit moves the max warehouses check out of the result handling and actually fatals the test. Part of: #148235 [7d97799d][7d97799d] -- Kafka v2 changefeed sinks now support a cluster setting that enables detailed error logging for messages exceeding Kafka v2 size limit. 149538: sql: don't throw errors for skipped auto stats jobs r=mw5h a=mw5h Previously, auto stats jobs would throw errors and increase failed jobs counters if they attempted to start while a stats collection was already in progress on the table. For large clusters with 'sql.stats.automatic_job_check_before_creating_job.enabled' set to true, this could create quite a few failed jobs. These failed jobs don't seem to cause any performance issues, but they clutter logs, potentially obscuring real problems and alarming customers, who then file tickets with support to figure out why their jobs are failing. This patch: * refactors the autostats checks to reduce code duplication. * swallows the error for concurrent auto stats creation, logging at INFO level instead. * changes the create stats jobs test so that it no longer expects these jobs creations to fail and instead expects the stats to not be collected. * fixes a bug in the create stats jobs test that would cause it to hang instead of exiting on error. * adds a cluster setting, sql.stats.error_on_concurrent_create_stats.enabled, which controls this new behavior. By default the old behavior is maintained. Fixes: #148413 [e2c55634][e2c55634] -- Added otlp log sink that can export logs to OpenTelemetry-compatible targets over gRPC. [ee02ca6b][ee02ca6b] -- Adds a migration to start the hot range logging job. 147769: log, server: Create new log.EventLog() API r=dhartunian a=kyle-a-wong This PR introduces a new log.EventLog() API that gives first class support for writing to the system.eventlog table. This API lives in the log package and doesn't have a dependency on the sql package, making it easy to use across the repo. This is implemented using a new set of interfaces in the log package that allows the system and tenant servers to register new event log writers. The logic for writing to the event log table is the same as that which is sql/event_log.go. For now the code is duplicated, but it will be removed in a future commit when this file is updated to use the new API. Epic: [CRDB-42978](https://cockroachlabs.atlassian.net/browse/CRDB-42978) [9ab7ea1b][9ab7ea1b] +- For virtual clusters, hot range logging is now performed by a single job on one node, rather than by tasks on every node. [#145549][#145549] +- The CREATE + CHANGEFEED statement now supports the + `extra_headers` option, which can be used to + specify extra headers for webhook and kafka + sinks. This can be used to add headers to all + messages sent to the sink. [#146813][#146813] +- This change adds new metrics: + changefeed.stage.pts.create.latency, + changefeed.stage.pts.manage.latency, + changefeed.stage.pts.manage_error.latency, + to measure the performance of managing protected ts records. [#148471][#148471] +- Added an OTLP log sink that exports logs in OpenTelemetry Protocol format over gRPC to compatible targets such as `otel-collector`, Datadog, and Loki. [#148525][#148525] +- Kafka v2 changefeed sinks now support + a cluster setting that enables detailed error logging for messages + exceeding Kafka v2 size limit. [#148753][#148753] +- The CockroachDB spatial libraries now rely on GEOS 3.12 instead of GEOS 3.11. [#148859][#148859] +- the changefeeds with protobuf + format now supports the resolved option for emitting + resolved timestamps. [#149622][#149622] +- Changefeeds using the protobuf format + now support wrapped envelopes in kafka sinks [#149696][#149696] +- Restore jobs now log errors on retry to + the job messages table. [#149821][#149821] +- A warning is now emitted when creating or altering a + changefeed with `resolved` or `min_checkpoint_frequency` set below 500ms. This helps + users understand the tradeoff between message latency and cluster CPU usage. [#149975][#149975] +- The protobuf format for changefeeds + now support enriched envelopes. [#150501][#150501] +- Added HTTP mode to the OTLP sink, allowing logs to be exported to OpenTelemetry Protocol (OTLP) targets over HTTP. This enhancement enables agentless deployments, where logs can be sent directly to supported targets like Datadog or Grafana, without requiring an intermediary such as the OpenTelemetry Collector or Datadog Agent. [#150655][#150655] +- Added `headers` configuration option to OTLP log sink. [#150696][#150696] +- CockroachDB spatial libraries now rely on GEOS 3.13 instead of GEOS 3.12. [#151186][#151186]

{{ site.data.products.enterprise }} edition changes

-- Added changefeed.sink_backpressure_nanos metric to track time spent waiting for quota when emitting to the sink. 150861: storage: use AssertionFailedf for panics r=RaduBerinde a=jbowens Update a few panics that threw a simple string to throw an error constructed through AssertionFailedf. Where applicable, this error is propagated through a return value instead. This is motivated by #150058, an instance where the panic string gets redacted, requiring a bit more work to identify the origin of the panic (through mapping the line number on the appropriate commit SHA). Epic: none 150863: CLAUDE: use verbose output in filtered tests r=rickystewart a=dhartunian I observed a `./dev test pkg -f=x` scenario where no test matched, and false success was declared. [d5acebac][d5acebac] -- Added the ability to automatically provision users authenticating via JWT. This is controlled by the new cluster setting `security.provisioning.jwt.enabled`. When set to true, a successful JWT authentication for a non-existent user will create that user in CockroachDB. The newly created role will have the `PROVISIONSRC` role option set to `jwt_token:`, identifying the token's issuer as the source of the provisioned user. [cf40a350][cf40a350] -- 'SYSTEM' privileges are now also inherited in read-only mode standby PCR clusters. Epic: CRDB-50820. [7f2055b8][7f2055b8] -- The SHOW ROLES command now includes a column that shows the estimated time that the user last logged in. Additionally, the `options` column is now returned as an array of strings, rather than as a single comma-separated string. The data can be queried with a query such as: ``` root@localhost:26257/defaultdb> select * from [show roles] as r WHERE EXISTS (SELECT 1 FROM unnest(r.options) AS m(option) where option like 'SUBJECT=cn%'); username | options | member_of | estimated_last_login_time ------------+--------------------------------+-----------+---------------------------- testuser | {NOLOGIN,SUBJECT=cn=testuser} | {admin} | NULL (1 row) ``` [768a2b67][768a2b67] -- Added a new cluster setting `server.provisioning.ldap.enabled` which can be set to true to conditionally enable user provisioning during sql cluster authentication. The user authenticates with the LDAP server and CRDB will only validate that bind to the IDP was successful for provisioning the user. All roles created thus will be privileged to perform sql authentication and will mandatorily have a role option for PROVISIONING_SOURCE set to `ldap:`. Any group roles that are to be assigned via ldap authorization must be pre created prior to the authentication start. [21c52775][21c52775] -- Added a new PROVISIONSRC role option. This role option should be prefixed with the HBA auth method for provisioning, i.e. `ldap` followed by the IDP uri, for example `ldap:ldap.example.com`. This is intended to be used only internally while user provisioning and is supposed to be view-only when checking set role options for a user. [a148cb0d][a148cb0d] +- Reduced the maximum backoff for changefeed retries from 10 minutes to 1 minute, which results in faster recovery from transient errors. [#146448][#146448] +- Added a new PROVISIONSRC role option. + This role option should be prefixed with the HBA auth method for provisioning, + i.e. `ldap` followed by the IDP uri, for example `ldap:ldap.example.com`. This + is intended to be used only internally for user provisioning and is supposed + to be view-only when checking set role options for a user. [#147272][#147272] +- Added a new cluster setting + `server.provisioning.ldap.enabled` which can be set to true to conditionally + enable user provisioning during sql cluster authentication. The user + authenticates with the LDAP server and CRDB will only validate identity lookup + on IDP was successful for provisioning the user. All roles created thus will be + privileged to perform sql authentication and will mandatory have a role option + for PROVISIONSRC set to `ldap:`. Any group roles that are to be + assigned via ldap authorization must be pre created prior to the authentication + start. [#148200][#148200] +- The SHOW ROLES command now includes a column + that shows the estimated time that the user last logged in. Additionally, + the `options` column is now returned as an array of strings, rather than as + a single comma-separated string. + + The data can be queried with a query such as: + ``` + root@localhost:26257/defaultdb> select * from [show roles] as r WHERE EXISTS (SELECT 1 FROM unnest(r.options) AS m(option) where option like 'SUBJECT=cn%'); + username | options | member_of | estimated_last_login_time + ------------+--------------------------------+-----------+---------------------------- + testuser | {NOLOGIN,SUBJECT=cn=testuser} | {admin} | NULL + (1 row) + ``` [#148532][#148532] +- Added the ability to automatically + provision users authenticating via JWT. This is controlled by the new + cluster setting `security.provisioning.jwt.enabled`. When set to true, + a successful JWT authentication for a non-existent user will create + that user in CockroachDB. The newly created role will have the + `PROVISIONSRC` role option set to `jwt_token:`, identifying the + token's issuer as the source of the provisioned user. [#149415][#149415] +- `SYSTEM` privileges are inherited in read-only mode in standby Physical Cluster Replication (PCR) clusters. [#149708][#149708] +- Added changefeed.sink_backpressure_nanos + metric to track time spent waiting for quota when emitting to the sink. [#150666][#150666]

SQL language changes

-- Previously, using pausable portal with procedure call caused panic, depending on the function body. Now statements that are transaction control statement, such as procedure call(e.g. `CALL myfunc()`) are not allowed with pausable portal. 151338: opt: return RelExpr from (*memo).RootExpr r=mgartner a=mgartner `(*memo).RootExpr` now returns a `RelExpr` instead of an `Expr`, helping eliminate some type assertions. 151491: colexecerror: further optimize BenchmarkSQLCatchVectorizedRuntimeError r=yuzefovich a=yuzefovich Rather than creating and closing connections for each test case, we can just reuse the same connections in the benchmark, which speeds it up significantly (from about 4 min to 1 min). Epic: None [caa221d6][caa221d6] -- The functionality provided by session variable `enforce_home_region_follower_reads_enabled` was deprecated in v24.2.4 and is now removed. (The variable itself remains for backward compatibility but has no effect.) (Note that related session variable `enforce_home_region` is _not_ deprecated and still functions normally.) [c74f6a36][c74f6a36] -- SQL observability commands `SHOW TRANSACTIONS`, `SHOW QUERIES`, and `SHOW SESSIONS` now include an `isolation_level` column showing the isolation level of the active transaction, or the session's default isolation level when there is no active transaction. 152585: CODEOWNERS: add /pkg/server/storage_api to obs-prs r=dhartunian a=dhartunian Epic: None 152675: allocator: correct logging for priority assertion r=tbg a=wenyihu6 This commit fixes an incorrect log statement in computeAction for priority assertions. The log was mistakenly emitted even when the priority was not -1. Related: https://github.com/cockroachdb/cockroach/pull/152512 Epic: none [5eb2140d][5eb2140d] -- Improve the optimizer to hoist projections above joins in more cases, which can lead to better query plans. This can be enabled by the new session variable `optimizer_use_improved_hoist_join_project`. ---- **sql: enable optimizer_use_improved_hoist_join_project by default** Informs: #150704 [2f096411][2f096411] -- The owner of a database can now set default session variables per database using the `ALTER ROLE ALL IN DATABASE ... SET` or `ALTER DATABASE ... SET` commands. [a685bfbf][a685bfbf] -- Implemented levenshtein_less_equal(string, string, int) and levenshtein_less_equal(string, string, int, int, int, int) built-in functions. [a4148787][a4148787] -- The `SHOW CREATE FUNCTION` statement produces the 2-part table names rather than qualifying with the current database. [33e009d7][33e009d7] -- This PR adds all of the ltree builtin functions from Postgres. Namely, `subltree()`, `subpath()`, `nlevel()`, `index()`, `text2ltree()`, `ltree2text()`, and `lca()`. The details for each of these are documented on the Postgres docs: https://www.postgresql.org/docs/9.1/ltree.html#LTREE-FUNC-TABLE. Additionally, the `lca()` function in Postgres specifically limits up to 8 LTREE args, while the CRDB `lca()` function accepts any variable number of ltree args. [ae4d42dd][ae4d42dd] -- LTREE is now supported with containment operators and with the concat operator. Specifically, we allow `ltree `@>` ltree`, `ltree[] `@>` ltree`, `ltree `@>` ltree[]`, `ltree <@ ltree`, `ltree[] <@ ltree`, and `ltree <@ ltree[]` binary comparisons and `ltree[] ?`@>` ltree`, `ltree[] ?<@ ltree`, and `ltree || ltree` binary operations. The `?`@>`` and `?<`@`` are new binary operators which return the first ltree (or NULL) that contains/is contained by the right ltree argument. An additional note about this change is that our terminology regarding 'contains' and 'contained by' is equivalent to Postgres's terms 'ancestor' and 'descendant' respectively. 152017: logictest: add local-prepared config and scalar replacement r=rytaft a=rytaft This commit adds a new mode to the logic test harness that runs every statement as a prepared statement rather than using the default "simple query" mode of execution. Additionally, this commit enhances the `local-prepared` logic test configuration to replace scalars in queries with placeholders, and execute the queries as prepared statements with the scalars as arguments. This PR is based on https://github.com/cockroachdb/cockroach/pull/77068. [2a73f4a9][2a73f4a9] -- The inspect_errors system table is introduced. 152086: roachtest: deflake gopg r=fqazi a=fqazi Previously, one of the soft deletion tests was flaking because of a timing issue where sometimes it could be slower then expected. This patch adds the problematic test on the ignore list. Fixes: #151991 [a73404be][a73404be] -- Adds a new session variable `allow_unsafe_internals` and corresponding cluster setting (`sql.defaults.allow_unsafe_internals`) which controls access to the `system` database. [693c3951][693c3951] -- The json ? string, json ?& array, json ?| array and array && array operators are now index accelerated for INVERTED JOIN statement if there is an inverted index over the json column referred to on the left hand side of the expression. 150253: tabledesc: allow TTL storage params to be set to 0 r=rafiss a=rafiss Epic: None [fa1c75ba][fa1c75ba] -- The `CREATE USER` and `GRANT role` operations now wait for full-cluster visibility of the new user table version rather than blocking on convergence. 152015: backup: remove old incremental backup location lookup r=dt a=kev-cao In pre-22.2 backups, incremental backups were written to the same directory as the full backup. This was removed in 22.2, but logic was kept in place to maintain backwards compatibility and allow later versions to restore from pre-22.2 backups. However, given that we are now on 25.4 and are many major versions past the removal of the old default location, the legacy logic is now being removed to facilitate the development of backup indexes. Epic: None [63f8071d][63f8071d] -- Added the has_system_privilege builtin function, which can be used to check if a user has the given system privilege. [322d3bb8][322d3bb8] -- When sql_safe_updates is enabled, the ALTER TABLE LOCALITY statement will now be blocked when trying to convert an existing table to REGIONAL BY ROW, unless a region column has already been added to the table. This protects against undesired behavior that caused UPDATE or DELETE queries to fail against the table while the locality change is in progress. [86c47284][86c47284] -- The default value of `use_soft_limit_for_distribute_scan` session variable has been changed to `true`. This means that, by default, the soft limit (if available) will be used to determine whether a scan is "large" and, thus, should be distributed. For example, with "estimated row count: 100 - 10,000" we'll use 100 as the estimate to compare against the value of `distribute_scan_row_count_threshold`. [3d5ef946][3d5ef946] -- This commit introduces the following metrics for statements got executed via calling a store procedure: sql_routine_select_started_count, sql_routine_update_started_count,sql_routine_insert_started_count, sql_routine_delete_started_count,sql_routine_select_count,sql_routine_update_count,sql_routine_insert_count,sql_routine_delete_count. [2eb84bc3][2eb84bc3] -- The session setting `optimizer_min_row_count` is now set to 1 by default. 150179: roachtest: add schema change workload to all pcr read from standby roachtests r=jeffswenson a=msbutler By replicating the schema change workload, we stress test the standby poller's ability to update the reader tenant's external descriptors. Fixes: #145990 150264: distsql: harden recent memory leak fix r=yuzefovich a=yuzefovich In 1b2342258e274bd931168b6866e785752845c2fd we missed one error code path where we'd not call the context cancellation function, and it's now fixed by allocating the function only when we create the flow. Epic: None 150325: asim: fix load_distribution_movement_disabled_enable_later r=tbg a=wenyihu6 Previously, we changed LBRebalancingMode from a simulation setting to a cluster setting, plumbed throughout asim. load_distribution_movement_disabled_enable_later test schedules a delayed event that updates this setting and triggers two evaluation runs. With the new cluster setting behavior, the delayed change persists across both evaluations, whereas before, the second simulation run would reset to the initial rebalance_mode = 0. This commit fixes the issue by explicitly setting rebalance_mode = 0 before the second run. In the future, we might consider introducing a reset command between simulation runs to clear persisted state. Output of datadriven tests now matches with what the prototype branch has at 037ac2fc5a20927522347a91c6cf878589c20bbe. Epic: none 150348: sql: fix CITEXT formatting panic r=paulniziolek a=paulniziolek #### sql: fix CITEXT formatting panic CITEXT was taking the default formatting path of `CollatedStringFamily` which formats datums with the COLLATE expression, causing a panic. This PR fixes this by separating CITEXT from the default collated string formatting path. Fixes: cockroachdb#149876 Epic: None [722aed0c][722aed0c] -- WITH header_row flag is added to EXPORT. Returns error for non-csv type. Another row is prepended to the csv file with the column names. 149923: kv/bulk: compute accurate stats in StreamSSTBatcher r=jeffswenson a=msbutler This patch teaches PCR to compute an accurate stats diff on its ingestion path. Fixes https://github.com/cockroachdb/cockroach/issues/145548 150349: bulk: avoid leaking sst writers r=jeffswenson a=jeffswenson This fixes a bug introduced by #148395. Before #148395, the sst batcher would not be initialized until the first key was added to it. After the change, the sst batcher was initialized as part of the object construction. This introduced a bug where the initialization would leak an sst writer if the initialization failed with a memory accounting error. This leak is fixed by requesting the memory budget before initializing the writer. This change also cleans up the .Close() handling within the sst_adder. Previously, the sst adder could leak a writer if SST construction fails. There is no new test for the only error returned by the sst writer is an error indicating out of order keys. But any new errors (for example handling context cancellation) would trigger a leak of the SST writer. Informs: #148649 [2dc9058c][2dc9058c] -- The column for `estimated_last_login_time` in `system.users` will be updated with the TIMESTAMP of user login post successful authentication. The `SHOW users` view will now show the updated value. ``` root@localhost:26257/defaultdb> SHOW users; username | options | member_of | estimated_last_login_time -----------------+-------------------------------------------------------------------------------------+-----------+-------------------------------- admin | {} | {} | NULL root | {} | {admin} | 2025-07-13 11:51:29.406216+00 sourav.sarangi | {} | {} | NULL (3 rows) NOTICE: estimated_last_login_time is computed on a best effort basis; it is not guaranteed to capture every login event ``` [1a4f475f][1a4f475f] -- Added support for automatically determining the region column for a REGIONAL BY ROW table using a foreign key constraint. The foreign key is specified by setting a new table storage parameter `infer_rbr_region_col_using_constraint`, and must contain the region column. This can be useful for applications that are unable to guarantee that a child row is inserted or updated from the same region as the matching parent row. [14f65341][14f65341] -- Post the change the users with the role option `PROVISIONSRC` assigned to them will be unable to change their own password overriding any config set for sql.auth.change_own_password.enabled cluster setting. Changing other role options still has the same privilege requirements as before (either CREATEROLE or CREATELOGIN, depending on the option). [e63be70a][e63be70a] -- Schema change job status messages provide additional information. 150149: roachtest: increase restore timeouts for fingerprinting r=yuzefovich a=kev-cao Since validating fingerprints is now the default behavior for restore roachtests, we are seeing some test timeouts across the suite. This commit increases the timeout to account for any fingerprints on all of our restores. Fixes: #149771 150213: sql: include write buffering info to EXPLAIN ANALYZE top level r=yuzefovich a=yuzefovich In order to make it easier to notice that write buffering is enabled, we now will include top-level `write buffering enabled` message to the output of EXPLAIN ANALYZE when write buffering is enabled for all mutations as well as read-only stmts that are part of explicit txns. Touches: #150212. Epic: None 150250: storage: disable value separation by default r=yuzefovich a=annrpom We disable value separation for now until we root cause #150216. Epic: none 150255: sql/schemachanger: properly discard zone configs for sequences r=yuzefovich a=spilchen Discarding zone configs via the declarative schema changer was a no-op for sequences, leaving stale configs. This was due to not loading scpb.TableZoneConfig elements for sequences. This change ensures those elements are loaded, so configs are properly removed. Epic: none [9d5a1fae][9d5a1fae] -- Fix a bug where extra quotes or escaped quote characters would be added to topic names in changefeeds. [8f28ff92][8f28ff92] -- Added support for invoking a UDF from a view query. Renaming or setting the schema on the routine is currently not allowed if it is referenced by a view. [679f10bb][679f10bb] -- The session setting `optimizer_prefer_bounded_cardinality` is now enabled by default. 149498: go.mod, storage: bump pebble + enable multilevel compactions by default with a cluster setting r=xinhaoz a=xinhaoz ### 1: go.mod: bump Pebble to 20e2cbcd70de Changes: * [`20e2cbcd`](cockroachdb/pebble@20e2cbcd) db: support overriding value separation minimum-size by key span * [`50d7fd77`](cockroachdb/pebble@50d7fd77) pebble: add additional constraints to running multiLevel compactions * [`f810bcdf`](cockroachdb/pebble@f810bcdf) pebble: make MultiLevelCompactionHeuristic a function option Epic: none. ### 2: storage: enable multilevel compactions by default with a cluster setting Reenable multilevel compactions, with more constraints. ML compactions will run according to a write amp heuristic, along with the following rules: - At most 1 ML compaction is running at any time. - The db must have >= 2 maximum compaction slots. Closes: https://github.com/cockroachdb/pebble/issues/4139 149659: asim: some more improvements r=tbg a=tbg - **state: add TestReplicaPlacement** - **state: rename ParseStoreWeights -> ParseReplicaPlacement** - **state: improve ReplicaPlacement parsing and stringer** - **testdata: rm example_replica_placement** Epic: CRDB-25222 [d591c199][d591c199] -- Added support for camelCase parameter names (e.g., "SharedAccessKeyName") in Azure Event Hub Kafka sink configuration [21349171][21349171] -- The CITEXT datatype is now a supported feature which allows case-insensitive row comparisons for CITEXT columns. The CITEXT column type is equivalent to applying the undetermined level 2 collation, 'und-u-ks-level2'. For example, under CITEXT, 'test' = 'TEST' returns true. 149635: util/admission: clarify context cancellation r=yuzefovich a=yuzefovich Previously, whenever the AC code observed the context cancellation, it reported it as "deadline expiring". This can be confusing when the cancellation is caused by the caller explicitly canceling the context, without using the deadline option of the context. This commit clarifies the error as well as logging event when the context doesn't have the deadline set. Informs: #148219. Epic: None [50694710][50694710] -- Added a new session variable, `disable_optimizer_rules`, which allows users to provide a comma-separated list of optimizer rules to disable during query optimization. This allows users to avoid rules that are known to create a suboptimal query plan for specific queries. [82759997][82759997] +- Implemented the `levenshtein_less_equal(string, string, int)` and `levenshtein_less_equal(string, string, int, int, int, int)` built-in functions, which calculate the Levenshtein distance between two strings. [#104649][#104649] +- The owner of a database can now set default session variables per database using the `ALTER ROLE ALL IN DATABASE ... SET` or `ALTER DATABASE ... SET` commands. [#130547][#130547] +- Added support for camelCase parameter names + (e.g., "SharedAccessKeyName") in Azure Event Hub Kafka sink + configuration [#144735][#144735] +- The `CITEXT` data type is now supported, enabling case-insensitive comparisons for `CITEXT` columns. Internally, `CITEXT` is equivalent to using the undetermined level 2 collation `und-u-ks-level2`. For example, under `CITEXT`, the expression `'test' = 'TEST'` returns `TRUE`. [#147864][#147864] +- The functionality provided by session variable `enforce_home_region_follower_reads_enabled` was deprecated in v24.2.4 and is now removed. (The variable itself remains for backward compatibility but has no effect.) Note that the related session variable `enforce_home_region` is **not** deprecated and still functions normally. [#148314][#148314] +- Added support for automatically determining the region column for a `REGIONAL BY ROW` table using a foreign key constraint. The foreign key is specified by setting a new table storage parameter `infer_rbr_region_col_using_constraint`, and must contain the region column. This can be useful for applications that are unable to guarantee that a child row is inserted or updated from the same region as the matching parent row. [#148540][#148540] +- Added support for invoking a UDF from a view query. Renaming or setting the schema on the routine is currently not allowed if it is referenced by a view. [#148616][#148616] +- Updated the `SHOW CREATE FUNCTION` and `SHOW CREATE PROCEDURE` statements to show fully qualified table names rather than assuming they are qualified with the current database. [#148746][#148746] +- Added the `has_system_privilege` builtin function, which can be used to check if a user has the given system privilege. [#149051][#149051] +- Updated schema change job status messages to be more user-friendly and descriptive, instead of using internal schema change architecture terminology. [#149096][#149096] +- The logical cluster now uses an external connection and automatically updates its configuration when that connection changes. [#149261][#149261] +- Fix a bug where extra quotes or escaped + quote characters would be added to topic names in changefeeds. + Can be turned off by setting feature.changefeed.bare_table_names to + false. [#149438][#149438] +- The users with the role option `PROVISIONSRC` + assigned to them will be unable to change their own password overriding any + config set for sql.auth.change_own_password.enabled cluster setting. Changing + other role options still has the same privilege requirements as before (either + CREATEROLE or CREATELOGIN, depending on the option). The role option for + PROVISIONSRC is also only assignable and cannot be altered using `ALTER role` + command. [#149463][#149463] +- The session setting `optimizer_prefer_bounded_cardinality` is now enabled by default. This setting instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. [#149486][#149486] +- The session setting `optimizer_min_row_count`, which sets a lower bound on row count estimates for relational expressions during query planning, is now set to `1` by default. [#149602][#149602] +- WITH header_row flag is added to EXPORT. + Returns error for non-csv type. Another row is prepended to the csv file + with the column names. [#149686][#149686] +- Users can now ALTER EXTERNAL CONNECTION to + change the external connection URI when granted UPDATE privilege on + EXTERNAL CONNECTION. + + Fixes #98610 [#149869][#149869] +- The `json ? string`, `json ?& array`, `json ?| array`, and `array && array` operators are now index-accelerated for `INVERTED JOIN` statements if there is an inverted index on the JSON column referenced on the left-hand side of the expression. [#149898][#149898] +- The column for `estimated_last_login_time` in + `system.users` will be updated with the TIMESTAMP of user login post successful + authentication. The `SHOW users` view will now show the updated value. + + ``` + root@localhost:26257/defaultdb> SHOW users; + username | options | member_of | estimated_last_login_time + -----------------+-------------------------------------------------------------------------------------+-----------+-------------------------------- + admin | {} | {} | NULL + root | {} | {admin} | 2025-07-13 11:51:29.406216+00 + sourav.sarangi | {} | {} | NULL + (3 rows) + + NOTICE: estimated_last_login_time is computed on a best effort basis; it is not guaranteed to capture every login event + ``` [#150105][#150105] +- The column for `estimated_last_login_time` in + `system.users` will be updated with the TIMESTAMP of user login post successful + authentication. The `SHOW users` view will now show the updated value. + + ``` + root@localhost:26257/defaultdb> SHOW users; + username | options | member_of | estimated_last_login_time + -----------------+-------------------------------------------------------------------------------------+-----------+-------------------------------- + admin | {} | {} | NULL + root | {} | {admin} | 2025-07-13 11:51:29.406216+00 + sourav.sarangi | {} | {} | NULL + (3 rows) + + NOTICE: estimated_last_login_time is computed on a best effort basis; it is not guaranteed to capture every login event + ``` [#150375][#150375] +- The session setting `optimizer_min_row_count`, which sets a lower bound on row count estimates for relational expressions during query planning, is now set to `1` by default. [#150376][#150376] +- `LTREE` is now supported with ancestry operators and with the `concat` operator. Specifically, CockroachDB now allows `ltree @> ltree`, `ltree[] @> ltree`, `ltree @> ltree[]`, `ltree <@ ltree`, `ltree[] <@ ltree`, and `ltree <@ ltree[]` binary comparisons, as well as `ltree[] ?@> ltree`, `ltree[] ?<@ ltree`, and `ltree || ltree` binary operations. The `?@>` and `?<@` are new binary operators that return the first ltree (or `NULL`) that is an ancestor or descendant of the right ltree argument in the array. [#150598][#150598] +- Clusters utilizing cluster virtualization, such as those running Physical Cluster Replication (PCR), apply the same admission control (AC) pacing to various bulk operations used by clusters that are not running with cluster virtualization. [#150633][#150633] +- All PostgreSQL built-in functions for `LTREE` are now supported: `subltree()`, `subpath()`, `nlevel()`, `index()`, `text2ltree()`, `ltree2text()`, and `lca()`. While the `lca()` function in PostgreSQL specifically limits up to 8 LTREE args, the CockroachDB `lca()` function accepts any variable number of ltree args. [#150647][#150647] +- `CREATE USER` and `GRANT` role operations now wait for full-cluster visibility of the new user table version rather than blocking on convergence. [#150747][#150747] +- Improved the optimizer to hoist projections above joins in more cases, which can lead to better query plans. This behavior can be enabled with the new session variable `optimizer_use_improved_hoist_join_project`. [#150887][#150887] +- Previously, using a pausable portal with a procedure call could cause a panic, depending on the function body. Now, transaction control statements such as procedure calls (e.g., `CALL myfunc()`) are disallowed within pausable portals. [#151153][#151153] +- Added the `allow_unsafe_internals` session variable and `sql.defaults.allow_unsafe_internals` cluster setting to gate access to system database internals. Default access is allowed to support testing. [#151362][#151362] +- When `sql_safe_updates` is enabled, the `ALTER TABLE ... LOCALITY` statement will be blocked when trying to convert an existing table to `REGIONAL BY ROW`, unless a region column has been added to the table. This protects against undesired behavior that caused `UPDATE` or `DELETE` statements to fail against the table while the locality change was in progress. [#151423][#151423] +- Added metrics for statements executed within a stored procedure or function. The following metrics count statements that began execution, including those that failed: `sql_routine_select_started_count`, `sql_routine_update_started_count`, `sql_routine_insert_started_count`, and `sql_routine_delete_started_count`. The following metrics count only successful executions: `sql_routine_select_count`, `sql_routine_update_count`, `sql_routine_insert_count`, and `sql_routine_delete_count`. All counters are global and increment before the transaction is committed or aborted. [#151689][#151689] +- Introduced the `inspect_errors` system table. [#151821][#151821] +- Added a new session variable, `disable_optimizer_rules`, which allows users to provide a comma-separated list of optimizer rules to disable during query optimization. This allows users to avoid rules that are known to create a suboptimal query plan for specific queries. [#151959][#151959] +- The SQL observability statements `SHOW TRANSACTIONS`, `SHOW QUERIES`, and `SHOW SESSIONS` now include an `isolation_level` column that shows the isolation level of the active transaction, or the session's default isolation level when there is no active transaction. [#152352][#152352] +- The default value of `use_soft_limit_for_distribute_scan` session variable is now `true`. This means that, by default, the soft limit (if available) will be used to determine whether a scan is "large" and, thus, should be distributed. For example, with `estimated row count: 100 - 10,000`, CockroachDB will use `100` as the estimate to compare against the value of `distribute_scan_row_count_threshold`. [#152557][#152557]

Operational changes

-- The PCR reader tenant is always destroyed on cutover 152518: sqlstatsccl: bump test pool size r=kyle-a-wong a=rickystewart This test has hit an OOM. Epic: none [37243f53][37243f53] -- `auth.ldap.conn.latency.internal` has been added to denote the internal authentication time for ldap auth method. [1aabeeb6][1aabeeb6] -- Changefeed events will be moved to the CHANGEFEED channel in 26.1. In order to test the impact of these changes, users can set the setting: `log.channel_compatibility_mode.enabled` to false. Note that this will cause these logs to start logging in the CHANGEFEED channel so this shouldn't be tested in a production environment. --- This is a stacked PR, only the last commit should be reviewed 152177: docs: update cluster settings to use correct product labels r=jhlodin a=jhlodin The cluster setting labeling still applies pre-Cloud 2.0 product names (dedicated/serverless) resulting in old product names under the **Supported deployments** column of the [cluster settings documentation](https://www.cockroachlabs.com/docs/stable/cluster-settings.html). [d1af030c][d1af030c] -- Delegate queries (like SHOW etc) are excluded from unsafesql checks to accessing the system or crdb_internal tables. [ede5ccc7][ede5ccc7] -- Restricts access to all crdb_internal builtins unless session variable `allow_unsafe_internals` is set to true, or if the caller is internal. 152021: catalog/lease: fix assertion for no outstanding leases r=fqazi a=fqazi Previously, the assertion confirming that no leases were outstanding was too strict because it checked for remaining descriptor versions immediately after setting the drain flag. While all user queries should be drained by this point, this check was too strict for internal operations. To address this, this patch moves the assertion into a closure and ensures that anything remaining has a reference count of zero. Fixes: #151902 152121: authors: add jaywritescode to authors r=jaywritescode a=jaywritescode Epic: None [835eda7d][835eda7d] -- Restricts access to all but allowed list of internal tables in the crdb_internal schema if the session variable `allow_unsafe_internals` is set to true, or if the caller is internal. [40b00a90][40b00a90] -- Sampled_query and sampled_transaction events will be moved to the SQL_EXEC channel in 26.1. In order to test the impact of these changes, users can set the setting: `log.channel_compatibility_mode.enabled` to false. Note that this will cause these logs to start logging in the SQL_EXEC channel so this shouldn't be tested in a production environment. ---- This is a stacked PR, only the last commit in this PR should be reviewed 152080: clusterversion: bump PreviousVersion r=RaduBerinde a=RaduBerinde Bump PreviousVersion to 25.3, add cockroach-go-testserver-25.3 tests. This is part of the [M.3 checklist](https://github.com/cockroachdb/cockroach/blob/master/pkg/clusterversion/README.md#m3-enable-upgrade-tests) (the roachtest fixtures were already done in #150712). - [x] Update `PreviousRelease` constant to 25.3. - [x] Verify the logic in `supportsSkipUpgradeTo` (`pkg/cmd/roachtest/roachtestutil/mixedversion/mixedversion.go`) is correct for the new release. - [x] Add `cockroach-go-testserver-25.3` logictest config and add it to `cockroach-go-testserver-configs`. Update the visibility for `cockroach_predecessor_version` in `pkg/sql/logictest/BUILD.bazel`. Run `./dev gen` and fix up any tests that fail (using a draft PR helps). - [x] Check that all gates for the previous release are identical on the `master` and release branch. Epic: REL-2736 [2d73bfc8][2d73bfc8] -- Sql perf events will be moved to the SQL_EXEC channel in 26.1. In order to test the impact of these changes, users can set the setting: `log.channel_compatibility_mode.enabled` to false. Note that this will cause these logs to start logging in the SQL_EXEC channel so this shouldn't be tested in a production environment. ---- Note: This is a stacked PR, only the last commit needs to be reviewed [3ad5418b][3ad5418b] -- Introduces two new logging channels: KV_EXEC and CHANGEFEED. KV_EXEC will contain kv events that don't fall into the KV_DISTRIBUTION channel and CHANGEFEED will eventually contain changefeed events (This change doesn't add any logic to move existing changefeed logs to this channel). 151750: roachtest: update pgjdbc test for new portal behavior r=rafiss a=rafiss We recently merged #151153 which makes certain statements invalid when used in a pausable portal. This causes a few PGJDBC tests to fail during the test setup phase. fixes https://github.com/cockroachdb/cockroach/issues/151582 151752: roachtest: deflake hibernate timeouts r=rafiss a=rafiss This patch increases the timeout to avoid hitting spurious failures when the test takes too long. fixes https://github.com/cockroachdb/cockroach/issues/151591 fixes https://github.com/cockroachdb/cockroach/issues/151711 151753: sctestbackupccl: deflake schemachanger tests during BACKUP r=rafiss a=rafiss Increase the timeout for waiting for a schema change to complete, which can take a longer time if there are concurrent backups. fixes https://github.com/cockroachdb/cockroach/issues/151469 fixes https://github.com/cockroachdb/cockroach/issues/150842 [7a7aab5b][7a7aab5b] -- The 'sql.ttl.replan_flow_threshold' may have been set to 0 to work around the TTL replanner being too sensitive. This fix will alleviate that and any instance that had set replan_flow_threshold to 0 can be reset back to the default. 150947: asim: port over some trivial commits from prototype r=tbg a=wenyihu6 This commit ports over some trivial changes from the mma prototype branch. Epic: CRDB-25222 150949: span: clean up test code after llrb frontier deletion r=rharding6373 a=andyyang890 This patch cleans up some code in the unit tests that previously would toggle the frontier type but now just leads to each test being running twice with the exact same configuration. Informs #141668 [0e9251db][0e9251db] -- A structured event is now logged in the SQL_SCHEMA channgel when the REFRESH MATERIALIZED VIEW statement is executed. [7c13dda5][7c13dda5] -- The value of sql.stats.error_on_concurrent_create_stats.enabled now defaults to false, supressing error counters for auto stats jobs that fail due to concurrent stats jobs in progress. [bfb43f56][bfb43f56] -- CockroachDB now has a cluster setting, sql.stats.error_on_concurrent_create_stats.enabled, which modifies how it reacts to concurrent auto stats jobs. The default, true, maintains the previous behavior. Setting this to false will cause the concurrent auto stats job to be skipped with just a log entry and no increased error counters. 149699: asim: update range usage info and store capacity r=tbg a=wenyihu6 **asim: remove unused range usage info** This commit removes the unused field RangeUsageInfo from TransferLeaseOp. Epic: none --- **asim: support request_cpu_per_access and raft_cpu_per_write** This commit adds support for the request_cpu_per_access and raft_cpu_per_write options in the gen_load command. It only adds the options to the data-driven framework and workload generator. But no real changes have been made to LoadEvent, and they currently have no effect on range usage or apply load. Future commits will implement the actual impact. Epic: none --- **asim: add impact from request_cpu_per_access and raft_cpu_per_write** Previously, request_cpu_per_access and raft_cpu_per_write were added to the workload generator in data driven tests, but they had no actual effect to the cluster yet. This commit makes them take effect by applying the impact from LoadEvent including CPUPerSecond in store capacity and recording range load stats. Epic: none --- **asim: add store capacity cpu stats to storemetrics** Previously, store capacity cpu was populated. This commit adds the corresponding stats to the StoreMetrics. Epic: none --- **asim: removes redundant size assignment** This commit removes an redundant size assignment for rangeInfo in LoadRangeInfo, since the caller already populates rangesInfo. Epic: none --- **asim: add a comment for RangeUsageInfo.WritesPerSecond** This commit adds a comment clarifying nuances with WritesPerSecond in RangeUsageInfo. It is actually the sum of writes rather than the rate. It's currently unused outside of two unit tests TestWorkloadApply and TestCapacityOverride. They both abuse this field by verifying that the writes reach the replicas and the sum of writes is expected. Since it is tricky to assert on the exact per rate stat, we currently leave it as is. But we should fix this later. Epic: none --- **asim: account for follower replica load** Previously, asim only accounted for load on the leaseholder, ignoring non-leaseholder replicas. This commit updates it to consider all replicas for RangeUsageInfo and store capacity aggregation. RangeUsageInfo handles leaseholder checks and clears request CPU and QPS stats for non-leaseholder replicas. Epic: none --- **asim: add range info String method** This commit adds a RangeIndo string method. Epic: none --- **asim: add write bytes per sec to capacity & range usage** Previously, we added WriteBytesPerSecond to roachpb.StoreCapacity. This commit plumbs it through store capacity aggregation, range load usage, and StoreMetrics. MMA will later use to track write bandwidth usage across stores. Epic: none --- **asim: support node_cpu_rate_capacity with gen_cluster** Previously, we added roachpb.NodeCapacity for MMA to compute resource utilization across stores. This commit integrates it into the asim setup, enabling gen_cluster to use the node_cpu_rate_capacity option. Note that no functions currently access node capacity; future MMA integration commits will utilize it. Epic: none --- **asim: add comments for datadriven** This commit updates comments for a few options we added recently. Epic: none 149717: logictest: add back assertion that was rewritten accidentally r=rafiss a=rafiss ee263e2b214 rewrote this test so that it expects no spanconfig. This was likely a mistake caused by rewriting before retrying for long enough. This patch adds back the assertion, and adds another one that should prevent accidental rewrites. fixes https://github.com/cockroachdb/cockroach/issues/148603 [e2c55634][e2c55634] -- The restart safety endpoint indicates when it is unsafe to terminate a node. [255f60e1][255f60e1] -- Removes the 'storage.columnar_blocks.enabled' cluster setting; columnar blocks are always enabled. [d11bf892][d11bf892] -- The `storage.value_separation.enabled` cluster setting is now true by default. This enables value separation for sstables, where values exceeding a certain size threshold are stored in separate blob files rather than inline in the sstable. This helps improve write performance (write-amp) by avoiding rewriting such values during compactions. [ce35c63b][ce35c63b] -- New experimental values for compression cluster settings. [421a2574][421a2574] -- The default value of `server.mem_profile.total_dump_size_limit` (which controls how much space can be used by automatically collected heap profiles) has been increased from 256MiB to 512MiB. [c9e4bb2b][c9e4bb2b] +- The /health/restart_safety endpoint indicates + when it is unsafe to terminate a node. [#142930][#142930] +- Added the following cluster settings for configuring blob file rewrite compactions: `storage.value_separation.rewrite_minimum_age` and `storage.value_separation.compaction_garbage_threshold`. [#148782][#148782] +- The default value of `server.mem_profile.total_dump_size_limit` (which controls how much space can be used by automatically collected heap profiles) has been increased from 256MiB to 512MiB. [#148848][#148848] +- Added new experimental values for compression cluster settings to the storage engine. [#148849][#148849] +- The `storage.value_separation.enabled` cluster setting is now enabled by default. This enables value separation for SSTables, where values exceeding a certain size threshold are stored in separate blob files rather than inline in the SSTable. This helps improve write performance (write amplification) by avoiding rewriting such values during compactions. [#148857][#148857] +- A structured event is now logged to the `SQL_SCHEMA` channel when the `REFRESH MATERIALIZED VIEW` statement is executed. [#149153][#149153] +- Removed the `storage.columnar_blocks.enabled` cluster setting; columnar blocks are always enabled. [#149371][#149371] +- A new feature is now available that automatically captures Go execution traces on a scheduled interval. This feature incurs a performance penalty and is generally intended for use under the guidance of Cockroach Labs Support. It can be configured using the following cluster settings: + +- `obs.execution_tracer.interval`: Enables the tracer and sets the interval for capturing traces. Set to a value greater than 0 to activate. +- `obs.execution_tracer.duration`: Specifies the duration for each captured trace. +- `obs.execution_tracer.total_dump_size_limit`: Sets the maximum disk space allowed for storing execution traces. Older traces are automatically deleted when this limit is reached. [#149373][#149373] +- Introduced a cluster setting, `sql.stats.error_on_concurrent_create_stats.enabled`, which modifies how CockroachDB reacts to concurrent auto stats jobs. The default, `true`, maintains the previous behavior. Setting `sql.stats.error_on_concurrent_create_stats.enabled` to `false` will cause the concurrent auto stats job to be skipped with just a log entry and no increased error counters. [#149538][#149538] +- The value of `sql.stats.error_on_concurrent_create_stats.enabled` now defaults to `false`, suppressing error counters for auto stats jobs that fail due to concurrent stats jobs in progress. [#149848][#149848] +- Updated TTL job replanning to be less sensitive by focusing specifically on detecting when nodes become unavailable rather than reacting to all plan differences. The cluster setting `sql.ttl.replan_flow_threshold` may have been set to `0` to work around the TTL replanner being too sensitive; this fix will alleviate that and any instance that had set `replan_flow_threshold` to `0` can be reset back to the default. [#150771][#150771] +- `auth.ldap.conn.latency.internal` has been added to denote the internal authentication time for ldap auth method. [#151105][#151105] +- Introduced two new logging channels: `KV_EXEC` and `CHANGEFEED`. The `KV_EXEC` channel is intended for KV events that are currently logged to the `KV_DISTRIBUTION` channel. The `CHANGEFEED` channel is intended for changefeed-related events that are currently logged to the `TELEMETRY` channel. This change does not include logic to move existing logs to the new channels. [#151692][#151692] +- Restricted access to internal tables in the `crdb_internal` schema. Only a predefined allowlist of internal objects is accessible when the session variable `allow_unsafe_internals` is enabled or when the caller is internal. [#151804][#151804] +- In v26.1, changefeed events will be logged to the `CHANGEFEED` logging channel instead of `TELEMETRY`. To test the impact of this change before upgrading, set the cluster setting `log.channel_compatibility_mode.enabled` to `false`. This redirects changefeed logs to the `CHANGEFEED` channel and should be tested only in non-production environments. [#151807][#151807] +- In v26.1, SQL performance events will be logged to the `SQL_EXEC` channel instead of the `SQL_PERF` and `SQL_INTERNAL_PERF` channels. To test the impact of this change, you can set the new cluster setting `log.channel_compatibility_mode.enabled` to `false`. This redirects SQL performance logs to the `SQL_EXEC` channel. This setting should not be used in production environments, as it may affect downstream logging pipelines. [#151827][#151827] +- Restricted access to all `crdb_internal` built-ins unless the session variable `allow_unsafe_internals` is set to true, or the caller is internal. [#151887][#151887] +- In v26.1, `sampled_query` and `sampled_transaction` events will move from the `TELEMETRY` channel to the `SQL_EXEC` logging channel. To test for potential logging pipeline impacts of these changes, set `log.channel_compatibility_mode.enabled` to `false`. Avoid testing in production, as this setting changes live log behavior. [#151949][#151949] +- Delegate queries (such as `SHOW DATABASES`) are now excluded from unsafe SQL checks that restrict access to the `system` database and `crdb_internal` schema. This change ensures that these commands continue to function even when access to internal components is otherwise restricted. [#152084][#152084] +- the PCR reader tenant is always destroyed on cutover [#152509][#152509]

Command-line changes

-- Adds a new file to debug zip that provides a history of cluster setting changes. Sensitive cluster settings will always be redacted in this file, and non reportable cluster settings will be redacted for redacted debug zips. [1522360e][1522360e] -- Adds support for simple CHECK constraints and bit/bytes column generators in workload_generator. [639c2e5e][639c2e5e] -- Adds SQL workload extraction and rewriting support, enabling placeholder‐driven data-generation workflows from CockroachDB debug logs. [19fcdb66][19fcdb66] -- Update the help text for the --database and --url CLI flags to document support for virtual cluster syntax. The --database flag now shows examples of both simple database names and the cluster:virtual-cluster/database format. The --url flag examples now include the virtual cluster syntax in PostgreSQL connection URLs. [f43db402][f43db402] -- Adds `workload.go` as the primary CLI entry point for workload generation, wiring together DDL parsing, schema construction, generator factory, and output routines—establishing a cohesive, flag-driven workflow for end-to-end data generation. [459f9697][459f9697] -- Debug zips will now always redact "sensitive" cluster settings, whether or not a redacted debug zip is requested. For redacted debug zips, both "sensitive" and "non-reportable" cluster settings are redacted. This replaces the old logic where string-type cluster settings were always redacted for redacted debug-zips. [96bc36ec][96bc36ec] -- [8987f661][8987f661] -- The workload_generator now exposes a pluggable Generator interface with built-in generators and wrappers for various SQL types—enabling modular, extensible, and reusable workload data generation. [7df163f0][7df163f0] -- Improves the performance of the debug zip query that collects transaction_contention_events data, reducing the chances of "memory budget exceeded" or "query execution canceled due to statement timeout" errors. 149718: roachtest: fix hibernate nightly test r=rafiss a=rafiss The previous version fails during installation with: ``` FAILURE: Build completed with 2 failures. 1: Task failed with an exception. ----------- * What went wrong: Execution failed for task ':hibernate-core:generateGraphParser'. > Failed to load cache entry 7ed5a08bcdbd74c9347d61047c20a896 for task ':hibernate-core:generateGraphParser': Could not load from remote cache: Not in GZIP format * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Get more help at https://help.gradle.org. ============================================================================== 2: Task failed with an exception. ----------- * What went wrong: Execution failed for task ':hibernate-jpamodelgen:jaxb'. > Failed to load cache entry dd3fbbdea5c65a87fb9d720c326dd64b for task ':hibernate-jpamodelgen:jaxb': Could not load from remote cache: Not in GZIP format * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Get more help at https://help.gradle.org. ============================================================================== ``` fixes https://github.com/cockroachdb/cockroach/issues/149404 fixes https://github.com/cockroachdb/cockroach/issues/149457 fixes https://github.com/cockroachdb/cockroach/issues/149455 fixes https://github.com/cockroachdb/cockroach/issues/149399 fixes https://github.com/cockroachdb/cockroach/issues/149346 fixes https://github.com/cockroachdb/cockroach/issues/149393 fixes https://github.com/cockroachdb/cockroach/issues/149400 fixes https://github.com/cockroachdb/cockroach/issues/149398 fixes https://github.com/cockroachdb/cockroach/issues/149406 fixes https://github.com/cockroachdb/cockroach/issues/149395 149786: roachtest: Fix JSON configuration file for db-console/endpoints r=alyshanjahani-crl a=alyshanjahani-crl A previous PR modified one of the json configuration files for what endpoints to test. It forgot to include a comma... Fixes: #149735, #149732 149793: roachtest: add schemachange/bulkingest variant for ADD COLUMN r=rafiss a=rafiss This patch adds testing for ADD COLUMN backfills. This differs from the CREATE INDEX operation since ADD COLUMN populates an index in order, so it runs more quickly. Measuring this will help us observe improvements in CREATE INDEX. informs https://github.com/cockroachdb/cockroach/issues/146571 [8fefbf93][8fefbf93] -- Enables `workload_generator` to read init‑time schema and SQL artifacts and run SQL workloads with placeholder‑driven data generation. [70217086][70217086] +- The internal generator used by `cockroach workload` now supports parsing DDL schemas into a structured YAML format, enabling more flexible and detailed workload generation configurations. [#149513][#149513] +- Improved the performance of the `debug zip` query that collects `transaction_contention_events` data. This change reduces the risk of encountering “memory budget exceeded” or “query execution canceled due to statement timeout” errors. [#149570][#149570] +- The `cockroach workload` internals have been updated with built-in generators and wrappers for various SQL types—enabling modular, extensible, and reusable workload data generation. [#149728][#149728] +- Updated the internals of `cockroach workload` so there is one primary CLI entry point for workload generation, wiring together DDL parsing, schema construction, generator factory, and output routines. [#150321][#150321] +- Updated the redaction policy for cluster settings in `debug zip` output. All "sensitive" settings are now redacted in all debug zips, whether or not redaction is explicitly requested. In redacted debug zips, both "sensitive" and "non-reportable" settings are redacted. This replaces the previous behavior, which redacted all string-type settings only in redacted debug zips. [#150364][#150364] +- Added SQL workload extraction and rewriting support to the internals of `cockroach workload`, enabling placeholder‐driven data-generation workflows from CockroachDB debug logs. [#150614][#150614] +- Update the help text for the --database and --url + CLI flags to document support for virtual cluster syntax. The --database flag + now shows examples of both simple database names and the + cluster:virtual-cluster/database format. The --url flag examples now include + the virtual cluster syntax in PostgreSQL connection URLs. [#150624][#150624] +- Updated `cockroach workload` internals to read init‑time schema and SQL artifacts and run SQL workloads with placeholder‑driven data generation. [#150836][#150836] +- Added support for simple `CHECK` constraints and bit/bytes column generators to `cockroach workload`'s workload generator. [#150926][#150926] +- Added a new file, `cluster_settings_history.txt`, to debug zips. This file contains a history of cluster setting changes based on the system event log table. The history is only available while the corresponding events remain in the table. Sensitive settings are always redacted, and non-reportable settings are redacted when the debug zip is generated with redaction enabled. [#151066][#151066]

DB Console changes

-- The tenant dropdown now appears in insecure mode when multiple virtual clusters are available. Epic: none. 150771: sql/ttl: improve TTL replan decision logic r=spilchen a=spilchen Replace calculatePlanGrowth with detectNodeAvailabilityChanges to make TTL job replanning less sensitive to span changes. The new logic focuses specifically on detecting when nodes become unavailable rather than reacting to all plan differences. The previous implementation would trigger replans for span splits/merges that don't actually indicate beneficial restart scenarios. The new approach only considers missing nodes from the original plan, which typically indicates node failures where work redistribution would benefit from restarting the job. It also supports a stability window so that replan decisions need to fire consecutively. This should help aleviate changes in plans due to range cache issues. Epic: none [0e9251db][0e9251db] -- Fix bug where "Drop Unused Index" recommendations are not populated on the schema index page. 150142: restore: delete comments after failed or cancelled cluster restore r=dt a=msbutler This patch ensures that after a failed or canceled cluster restore, comments from dropped descriptors are removed. Informs #149453 150154: gceworker.sh: update default worker image r=mw5h a=mw5h Ubuntu 20.04 LTS is past EOL and no longer available. DevInf has made 20.04 available in the cockroach-workers project as 'crl-ubuntu-2004'. We also no longer suppoert image families, so this patch changes the image project to 'cockroach-workers' and points at the new image. Epic: none [5a4e4e81][5a4e4e81] -- The "Hot Ranges" page in the DB Console has been renamed to "Top Ranges" to better reflect that it shows the highest-ranked ranges by various metrics, not necessarily ranges experiencing high activity. Fixes: #147330 Epic: CRDB-43150 [c4852d7f][c4852d7f] -- Changes the name of the "Hot Ranges" page to "Top Ranges". [c4852d7f][c4852d7f] +- Renamed the 'Hot Ranges' page in the DB Console to 'Top Ranges' to clarify that it shows the highest-ranked ranges by various metrics, not necessarily those experiencing high activity. [#149713][#149713] +- Fixed a bug where **Drop Unused Index** recommendations were not populated on the Schema Insights tab after a hard refresh of the Insights page. [#149838][#149838] +- Updated the DB Console so that the tenant dropdown now appears in insecure mode when multiple virtual clusters are available. [#150535][#150535]

Bug fixes

-- A bug where modifying a changefeed with ALTER CHANGEFEED that either unset or left the `gc_protect_expires_after` option unset would cause the changefeed's max PTS age to become unbounded instead of being set to the default value configured by the `changefeed.protect_timestamp.max_age` cluster setting. [d7f0c96e][d7f0c96e] -- Pg_class.pg_depend now contains entries with deptype='i' (internal) for identity columns that depend on sequences. These previously had deptype='a' (auto). 152481: parserutils: extract shared PopulateErrorDetails into new package r=yuzefovich a=yuzefovich This allows us to break the dependency from `jsonpath/parser` on `sql/parser`. Additionally, it fixes the bug where we used the hardcoded (inherited from `sql/parser`) code for ERROR token in other parsers - the method now explicitly takes that code as an argument. Informs: #79357. Epic: None 152537: cli/interactive_tests: use interrupt_and_wait helper everywhere r=rafiss a=rafiss This helper was added in 799f5ab9d7d135814def077e80a8f14492808768 to reduce flakiness by waiting for process termination. This patch applies the same change to other tests that benefit. fixes https://github.com/cockroachdb/cockroach/issues/152482 152538: roachtest: mark more activerecord tests as flaky r=rafiss a=rafiss fixes https://github.com/cockroachdb/cockroach/issues/152405 fixes https://github.com/cockroachdb/cockroach/issues/151710 [b39295a5][b39295a5] -- In 25.1 we changed the physical planning heuristics so that large constrained table scans, estimated to scan at least 10k rows (controlled via `distribute_scan_row_count_threshold`), would force plan distribution with `distsql=auto` mode. However, if the scan has a "soft limit" we would still use the full estimate (e.g. in "estimated row count: 100 - 10,000" we would use 10k as the estimate) which can lead to distributing queries that shouldn't be, increasing the query latency. New session variable `use_soft_limit_for_distribute_scan` (default `false`) determines whether we use the soft limit when deciding that a scan is "large" or not. [5cb14e23][5cb14e23] -- Addressed a bug on schema_locked tables when a column is dropped, and schema_locked is toggled for the user. [31baea96][31baea96] -- Fixed a bug that caused an error when dropping a column and a UNIQUE WITHOUT INDEX constraint that references it in the same transaction. 152451: persistedsqlstats: Fix flakey TestSQLStatsDataDriven test r=kyle-a-wong a=kyle-a-wong This test became flakey after changing sql stats to be an async processes. Now we set SynchronousSQLStats=true on the testing knob to make this test deterministic. Fixes: #152213 Epic: None 152459: log, *: Find and replace log.*Error* and log.*Fatal* with log.Dev.*Error* and log.Dev.*Fatal* r=kyle-a-wong a=kyle-a-wong Epic: [CRDB-53410](https://cockroachlabs.atlassian.net/browse/CRDB-53410) 152514: backup: deflake TestBackupRestoreClusterWithUdfs r=kev-cao a=msbutler This patch removes the flaky descriptor id assertions and simply tests that the restored schema objects work. Informs #152438 [f276f1ad][f276f1ad] -- A bug that would allow FK violations as a result of some combinations of concurrent Read Committed and Serializable transactions has been fixed. Note that if both Serializable and weaker-isolation transactions will concurrently modify rows involved in FK relationships, the Serializable transactions must have the following session variables set to prevent any possible FK violations: - `SET enable_implicit_fk_locking_for_serializable = on;` - `SET enable_shared_locking_for_serializable = on;` - `SET enable_durable_locking_for_serializable = on;` [f49c602f][f49c602f] -- Updating column default expressions would incorrectly remove sequence ownerships for the affected column. 152137: roachtest: log non-200 responses in `getProfileWithTimeout` r=herkolategan a=srosenberg Non-200 responses typically do not contain a valid payload. Thus, `getProfileWithTimeout` should not attempt to parse the payload unless it receives a 200-response. Informs: #151791 Epic: none 152208: changefeedccl: allow changefeed err in rand expr test r=andyyang890 a=rharding6373 Previously, TestChangefeedRandomExpressions could fail even if a changefeed error was in the allowlist because the feed factory was created such that no changefeed errors were allowed. This change allows changefeed errors. Fixes: #152036 Epic: none 152306: sql: fix unsafe authorization check on table descriptors r=angles-n-daemons a=angles-n-daemons pr #151804 added a function, objectIsUnsafe, to communicate whether the object being observed was, considered unsafe, namely, in the crdb_internal schema or in the system database and unsupported. This function aimed to only review table descriptors, but it accidentally marked all non-table descriptors as unsafe as a result, eg: ``` func objectIsUnsafe() { if !tableDescriptor { return true } } ``` If released, this would improperly block query access to all non-table descriptors in the database for unauthorized users. This PR remediates this issue. Fixes: #152305 Epic: CRDB-24527 [584c74d6][584c74d6] -- Fixed a bug that prevented RESTORE from working if there were computed columns or ON UPDATE expressions that referenced user-defined functions. This bug was introduced in v25.3.0. [064aa707][064aa707] -- Added an automatic repair for dangling or invalid entries in the system.comment table. 151880: server: Filter high contention insights in ListExecutionInsights r=alyshanjahani-crl a=alyshanjahani-crl Previously high contention insights included in the ListExecutionInsights response often did not have their respective contention events available in the contention events registry. This led to confusion when viewing an insight execution overview page since the table displaying the contention events for the execution would often be empty. This commit fixes this behaviour by ensuring that any high contention insights are only included in the ListExecutionInsights response if they have at least one valid contention event available in the contention event registry. A contention event is valid if the blocking transaction fingerprint ID (i.e. the column of most interest in the UI table) is resolved. Fixes: https://cockroachlabs.atlassian.net/browse/CRDB-53271 151951: sql: fix `BETWEEN SYMMETRIC` normalization to use matching typed lefts r=Uzair5162 a=Uzair5162 We normalize symmetric `RangeCond` expressions (` BETWEEN SYMMETRIC AND `) by expanding them into 2 pairs of `ComparisonExpr`, covering both orderings of the BETWEEN bounds. When the type-checks for the left/from and left/to comparisons chose different coercions, the symmetric half could pair `leftFrom` with `to` (and `leftTo` with `from`) during normalization. This resulted in mixed-type comparisons on type-checked expressions and caused panics in some paths (e.g. AOST normalization). This change ensures that the type-checked pairings are kept aligned when constructing `ComparisonExpr` in the symmetric case. Fixes: https://github.com/cockroachdb/cockroach/issues/133395 [9f257785][9f257785] -- Previously, executing certain statements with `BETWEEN SYMMETRIC` expressions could panic if used with values of different types, such as `... b'bytes' BETWEEN SYMMETRIC 'a' AND 'c'`, which is now fixed. 152033: sql/stats: ignore partial stats in `crdb_internal.table_row_statistics` r=Uzair5162 a=Uzair5162 Previously, the `crdb_internal.table_row_statistics` virtual table was being populated with the row count from the most recent table statistic. This caused incorrect row counts to be shown for `SHOW TABLES` when the most recent statistic was a partial collection. This change ignores partial stats when populating `crdb_internal.table_row_statistics` to fix this issue. Fixes: #152024 [9f257785][9f257785] -- Fixed the pg_catalog.pg_type enties for the "any" and "trigger" pseudotypes. [837a2e3a][837a2e3a] -- Previously, CockroachDB could hit an error `ERROR: span with results after resume span...` when evaluating some queries with ORDER BY ... DESC in an edge case. The bug has been present since about v22.1 and is now fixed. 151949: sql: prep migration for sampled_query and sampled_transaction events r=kyle-a-wong a=kyle-a-wong In v26.1, sampled_query and sampled_transaction events will be moved from the TELEMETRY logging channel to the SQL_EXEC logging channel. This commit gates this migration under the cluster setting: `log.channel_compatibility_mode.enabled` and will log these events to the SQL_EXEC channel if this setting is set to false. Users can set this setting to false in their clusters to validate, test, and identify potential downstream impacts to their logging setups and pipelines. Epic: [CRDB-53410](https://cockroachlabs.atlassian.net/browse/CRDB-53410) Part of: [CRDB-53412](https://cockroachlabs.atlassian.net/browse/CRDB-53412) [2d73bfc8][2d73bfc8] -- Fixed a bug present since v24.1 where the allocator could make rebalancing decisions based on stale data, failing to account for recent local lease transfers not yet reflected in store capacity or gossip. 151110: k8s: fix python3 compatibility issue for multi-region setup r=NishanthNalluri a=shreyaskm623 Previously , the setup.py file was used for the kubernetes cluster setup across the multiple regions , which worked only for the python2 versions , this fix will make it compatible for the python3 versions as well Epic: none Fixes: https://cockroachlabs.atlassian.net/browse/CRDB-48938 [6b4e13ff][6b4e13ff] -- Fixed DROP USER succeeding when a role owned default privileges, which could leave invalid privilege entries in the system. Epic: None [993bd513][993bd513] -- CockroachDB could previously elevate the number of rows deleted on table with multiple column families in some cases. The bug has been present since 19.2 version and is now fixed. Note that the data was deleted correctly, just "rows affected" number was wrong. [3682fa34][3682fa34] -- Fixed a bug where sequences could lose references to triggers, allowing them to be dropped incorrectly. [91a21384][91a21384] -- Fixed an issue where Row Level Security policies with missing dependencies during table-level restores could cause inconsistent state or restore failures. Epic: None 151487: server: fix potential nil pointer when starting flight recorder r=yuzefovich a=dhartunian When the flightt recorder constructor returns an error in `NewFlightRecorder`, we should make sure not to call `Start`. Epic: None [c0934ae3][c0934ae3] -- Fix a bug where debug.zips collected from clusters with disallow_full_table_scans set would have missing system table data. 151201: clusterversion: move WriteInitialTruncStateBeforeSplitApplication to 25.4 r=arulajmani a=arulajmani This cluster version was intended for v25.3, but [we raced with branch cut](https://github.com/cockroachdb/cockroach/pull/149494#issuecomment-3053685906) and this didn't make it to the release branch. The least risky thing to do is to move this to 25.4 instead of a late stage backport, so let's do that. Epic: none [9d400331][9d400331] -- Previously, CockroachDB could encounter an internal error "trying to add a column of UNKNOWN type at ..." in rare cases when handling CASE or OR operations. The bug has been present since 20.2 version and is now fixed. 151137: psql: delete unnecessary `toolchain` line r=rail a=rickystewart It's not necessary and some automation auto-deletes it. Epic: DEVINF-1477 [e59d88e1][e59d88e1] -- Fix a bug that could cause some error returned by attempts to upload backup data to external storage providers to be undetected, potentially causing incomplete backups. Epic: none. [69a0bf1c][69a0bf1c] -- Previously, `SHOW TABLES` would show inaccurate row counts if the most recent statistic collection was partial, which is now fixed. [9f257785][9f257785] -- Views can now reference the `crdb_region` column from underlying tables in expressions. [1303c66c][1303c66c] -- Improved split and scatter behavior for CREATE INDEX when statistics are available for key columns. [1283b87c][1283b87c] -- A bug where a changefeed that was created before v25.2 could fail after upgrading to v25.2 with the error message `both legacy and current checkpoint set on change aggregator spec` has now been fixed. 148782: storage: add blob-rewrite compaction cluster settings r=jbowens a=jbowens Add two new cluster settings for configuring blob-rewrite compactions. Epic: CRDB-20379 [1ded8682][1ded8682] -- Fixed invalid zone configurations when adding a super region to a 3-region database with a secondary region and region survivability. Previously, this could result in assigning more than the allowed number of replicas. [54118cd0][54118cd0] -- Fixed a bug that prevented the row-level TTL table storage parameters (e.g. ttl_select_batch_size, ttl_delete_batch_size, ttl_delete_rate_limit, and ttl_select_rate_limit) from being set to 0, which is their default value. [fa1c75ba][fa1c75ba] -- Attempting to create a vector index with the legacy schema changer will now fail gracefully instead of crashing the node. 150256: server: fixes test flaps due to drains timing out r=[kyle-a-wong] a=MattWhelan Use the SucceedSoonDuration rather than a static 30s timeout. This is responsive to various test parameters. Fixes: #149515, #149534 [da4cfcb2][da4cfcb2] -- A but that would allow a race condition in foreign key cascades under read committed and repeatable read isolations has been fixed. [9e1e159b][9e1e159b] -- Fixes an issue where discarding zone configs on sequences did not remove the actual configuration. [9d5a1fae][9d5a1fae] -- When child metrics are enabled, include_aggregate is disabled, and the sql.metric.application_name/database_name are disabled, a handful of `sql` metrics were not being reported. 149712: storage: aggressively separate values in range ID keyspace r=sumeerbhola a=jbowens Adapt Cockroach's implementation of pebble.SpanPolicyFunc to mark the range ID keyspace with ValueStorageLatencyTolerant. This setting will cause Pebble to separate values into blob files as long as they're large enough that a pointer to an external value is likely to be smaller than the value itself. Separating values improves write amplification by avoiding rewriting values during some compactions. We target the range ID keyspace because it contains the raft log, which is written during all user writes but rarely read. Tangentially related to #16624. Epic: none [dc2191ba][dc2191ba] -- In 25.1.8, 25.2.1, 25.2.2, and 25.3 betas, a slow memory leak was introduced that would accumulate whenever a node executes a part of the distributed plan (the gateway node of the plan is not affected). The leak can only be mitigated by restarting the node and is now fixed. 149891: jobs: update hot ranges logger details r=angles-n-daemons a=angles-n-daemons Two issues with the hot ranges logging job is that it is not marked as internal, and its description is capitalized, which does not follow convention. This PR adds the job to the AutomaticJobTypes which ensures its hidden from the default view, in addition to updating the description to be more focused and appropriate. Fixes: none Epic: none [875e04a8][875e04a8] -- Support any casing for keyword identifiers in a jsonpath query. Note that for 3 special identifiers "TRUE", "FALSE", "NULL", crdb parses them with case insensitivity, but PG parses them case sensitively, e.g. `select '$.active == TrUe'::jsonpath;` will work in crdb but not in pg. [880272d9][880272d9] -- Fixed a bug where database login could fail during LDAP, JWT, or OIDC authentication if the user's external group memberships did not correspond to any existing roles in the database. The login will now succeed, and no roles will be granted or revoked in this scenario. [67b3c08b][67b3c08b] -- In 25.1 version CockroachDB enabled automatic partial stats collection by default (by flipping `sql.stats.automatic_partial_collection.enabled` cluster setting to `true`). Previously, partial stats collection could encounter some expected scenarios that would be reported with PG error code `55000` and would show up as failed stats jobs. These errors are benign and will no longer be reported (the stats job will be marked as "succeeded" but new stats won't be created). 149489: bazel: refine `is_dev_s390x` condition r=rail a=rickystewart This was resulting in failures handling the `select()` in `pkg/ccl/gssapiccl/BUILD.bazel`. Epic: CRDB-21133 [6f71172d][6f71172d] -- Remove unncessary Kafka topic creation that would could cause changefeed start up to fail when using changefeed.new_kafka_sink_enabled=false. Fixes: https://github.com/cockroachdb/cockroach/issues/128973 Epic: CRDB-41784 148683: sql: add infrastructure for new inspect job r=spilchen a=spilchen This adds infrastructure for a new job that will handle data consistency checking (tentatively called inspect). It will be initially invoked via the `EXPERIMENTAL SCRUB` command and a new session variable (`enable_scrub_job`). It will eventually be invoked under its own SQL, but that will be handled separately. I split this into 4 commits to make reviewing easier. I will squash them prior to merging to master. ## jobs: add stub implementation of inspect job This commit introduces a stub for the new INSPECT job type. The Resumer doesn't do anything useful yet. It simply returns as a no-op. Informs: #148289 Epic: CRDB-30356 ## sql: support starting inspect job from SCRUB This change adds support for initiating a INSPECT job when running SCRUB TABLE, controlled by the session variable enable_scrub_job. When enable_scrub_job is true, SCRUB TABLE will schedule or start a consistency check job instead of running inline checks. Informs: #148289 Epic: CRDB-30356 ## sql: add logic tests for inspect job via SCRUB This change introduces logic tests for the new inspect job path when enable_scrub_job is enabled. Informs: #148289 Epic: CRDB-30356 ## sql: add unit test for SCRUB job execution semantics This change adds a unit test (TestInspectJobImplicitTxnSemantics) to verify the behavior of inspect jobs started via EXPERIMENTAL SCRUB TABLE in implicit transactions. Includes test hooks via InspectTestingKnobs to simulate and control job execution behavior. Informs: #148289 Epic: CRDB-30356 149439: roachtest: capture metrics for index backfill in schemachange/bulkingest r=rafiss a=rafiss This will allow us to make a roachperf chart to track changes over time. informs https://github.com/cockroachdb/cockroach/issues/146571 149483: opentelemetry: add raftlog size metrics r=arulajmani a=pav-kv Part of #141126 149488: tracing: fix tests for simple flight recorder r=angles-n-daemons a=dhartunian We weren't returning errors correctly in SucceedsSoon. First failure would fail the test instead of retrying. Resolves: #149450 [63545b4d][63545b4d] -- CockroachDB now allows EXPLAIN of mutation statements in read-only transaction mode which matches behavior of Postgres. Note that EXPLAIN ANALYZE of mutations is still disallowed since this variant actually executes the statement. [ce20a399][ce20a399] -- Fixes a minor bug that caused inconsistent behavior with the very rarely used `"char"` type (not to be confused with `CHAR`). [1206bb5e][1206bb5e] -- The RESET ALL statement is fixed to no longer affect the following session variables: - `is_superuser` - `role` - `session_authorization` - `transaction_isolation` - `transaction_priority` - `transaction_status` - `transaction_read_only` This better matches PostgreSQL behavior for RESET ALL. By fixing RESET ALL, the DISCARD ALL statement is also fixed to work correctly when `default_transaction_use_follower_reads` is enabled. [4a528acb][4a528acb] -- Fixed a bug that would cause a CALL statement executed via a portal in the extended wire protocol to result in an error like `unknown portal ""` if the stored procedure contained `COMMIT` or `ROLLBACK` statements. The bug has existed since PL/pgSQL transaction control statements were introduced in v24.1. [efcbc078][efcbc078] -- Fixes a race condition when advancing a changefeed aggregator's frontier. When hit, the race condition could result in an internal error that would shut down the kvfeed and cause the changefeed to retry. 149262: cockroach-go: bump to latest r=benbardin a=benbardin Epic: none 149334: kvserver: embed timestamp to the queued element r=tbg a=pav-kv Tying the `queued` timestamp to the `rangeID` in the raft scheduler queue makes its scope intuitive, and eliminates the need for an invariant and checks. Follows up on #147913 [c63a85be][c63a85be] -- CockroachDB previously could hit an internal error when performing a DELETE, an UPDATE, or an UPSERT statement where the initial scan of the mutation is locking and is on a table different from the one being mutated. As a workaround, one could do `SET enable_implicit_select_for_update = false`, but note that it might increase contention, so use with caution. The bug was introduced in 25.2 version and is now fixed. [263b677d][263b677d] -- CockroachDB now prohibits ORDER BY and join equality operations on REFCURSOR type, matching behavior of Postgres. [9a4037e0][9a4037e0] -- CockroachDB can now decode VECTOR and BOX2D types from Binary format of PGWire Extended Protocol. [3145ed06][3145ed06] -- Fixed a bug where the entire schema would become inaccessible if a table was referenced as an implicit record type by a UDF while the table was undergoing an IMPORT. 150388: util/parquet,sql: clean up DOidWrapper handling a bit r=yuzefovich a=yuzefovich This commit removes redundant branch for `DOidWrapper` in `encodeArrayElement` (we already do the unwrapping at the top of the function, so this was dead code) as well as replaces the custom unwrap function in `parquet` package with the exported one. It also replaces some other unwrappers with that exported function. Epic: None [76618123][76618123] +- Fixed an issue where hot range logging for virtual clusters omitted some hot ranges. [#143775][#143775] +- Remove unncessary Kafka topic creation that would + could cause changefeed start up to fail when using + changefeed.new_kafka_sink_enabled=false. + + Fixes: #128973 + Epic: CRDB-41784 [#146476][#146476] +- Fixed a bug that would cause a `CALL` statement executed via a portal in the extended wire protocol to result in an error like `unknown portal ""` if the stored procedure contained `COMMIT` or `ROLLBACK` statements. The bug had existed since PL/pgSQL transaction control statements were introduced in v24.1. The fix is off by default in versions prior to v25.3. [#147923][#147923] +- Fixed a bug present since v24.1 where the allocator + could make rebalancing decisions based on stale data, failing to account for + recent local lease transfers not yet reflected in store capacity or gossip. [#148476][#148476] +- A bug where a changefeed that was created before + v25.2 could fail after upgrading to v25.2 with the error message + `both legacy and current checkpoint set on change aggregator spec` + has now been fixed. [#148617][#148617] +- CockroachDB now supports decoding `VECTOR` and `BOX2D` types from the binary format of the PostgreSQL extended protocol (pgwire). [#148719][#148719] +- The `RESET ALL` statement no longer affects the following session variables: + - `is_superuser` + - `role` + - `session_authorization` + - `transaction_isolation` + - `transaction_priority` + - `transaction_status` + - `transaction_read_only` + + This better matches PostgreSQL behavior for `RESET ALL`. In addition, the `DISCARD ALL` statement no longer errors when `default_transaction_use_follower_reads` is enabled. [#148770][#148770] +- CockroachDB now prohibits `ORDER BY` and join equality operations on `REFCURSOR` types, matching PostgreSQL behavior. [#148863][#148863] +- Previously, CockroachDB could hit an internal error when performing a `DELETE`, `UPDATE`, or `UPSERT` where the initial scan of the mutation is locking and is on a table different from the one being mutated. A possible workaround was `SET enable_implicit_select_for_update = false`, but this could increase contention. The bug was introduced in v25.2 and is now fixed. [#149093][#149093] +- Fixes a race condition when advancing a + changefeed aggregator's frontier. When hit, the race condition could + result in an internal error that would shut down the kvfeed and cause + the changefeed to retry. [#149119][#149119] +- CockroachDB now supports case-insensitive matching for keyword identifiers in JSONPath queries. Note that the special identifiers `TRUE`, `FALSE`, and `NULL` are parsed case-insensitively in CockroachDB, but are case-sensitive in PostgreSQL. For example, `SELECT '$.active == TrUe'::jsonpath;` succeeds in CockroachDB, but fails in PostgreSQL. [#149251][#149251] +- In v25.1, automatic partial statistics collection was enabled by default (by setting the `sql.stats.automatic_partial_collection.enabled` cluster setting to `true`). Partial statistics collection may encounter certain expected scenarios that were previously reported as failed stats jobs with PostgreSQL error code `55000`. These errors are benign and are no longer reported. Instead, the stats job will be marked as "succeeded," though no new statistics will be created. [#149279][#149279] +- Fixed a minor bug that caused inconsistent behavior with the very rarely used `"char"` type (distinct from `CHAR`). [#149433][#149433] +- CockroachDB now allows `EXPLAIN` of mutation statements in read-only transaction mode, matching PostgreSQL behavior. Note that `EXPLAIN ANALYZE` of mutations is still disallowed, since this variant actually executes the statement. [#149449][#149449] +- Fixed an issue where some SQL metrics were not reported when `server.child_metrics.enabled` was enabled, `server.child_metrics.include_aggregate.enabled` was disabled, and `sql.metrics.application_name.enabled` and `sql.metrics.database_name.enabled` were also disabled. Specifically, metrics with no children now report their aggregate metrics regardless of the `server.child_metrics.include_aggregate.enabled` cluster setting. [#149540][#149540] +- Fixed a bug where database login could fail + during LDAP, JWT, or OIDC authentication if the user's external group + memberships did not correspond to any existing roles in the + database. The login will now succeed, and no roles will be granted or + revoked in this scenario. [#149638][#149638] +- Fixed a slow memory leak that was introduced in v25.1.8, v25.2.1, v25.2.2, and v25.3 betas. The leak would accumulate whenever a node executed a part of the distributed plan (the gateway node of the plan was not affected), and could only be mitigated by restarting the node. [#149800][#149800] +- Attempting to create a vector index with the legacy schema changer will now fail gracefully instead of crashing the node. [#149812][#149812] +- Improved split and scatter behavior for `CREATE INDEX` when statistics are available for key columns. [#150238][#150238] +- Fixed a bug that was preventing the row-level TTL table storage parameters (e.g., `ttl_select_batch_size`, `ttl_delete_batch_size`, `ttl_delete_rate_limit`, `ttl_select_rate_limit`) from being set to `0`, which is their default value. [#150253][#150253] +- Fixed an issue where discarding zone configs on sequences did not actually remove the configuration. [#150255][#150255] +- A bug where modifying a changefeed with ALTER CHANGEFEED + that either unset or left the `gc_protect_expires_after` option unset would + cause the changefeed's max PTS age to become unbounded instead of being set to + the default value configured by the `changefeed.protect_timestamp.max_age` + cluster setting. [#150283][#150283] +- Fixed a bug that would allow a race condition in foreign key cascades under `READ COMMITTED` and `REPEATABLE READ` isolation levels. [#150291][#150291] +- Fixed a bug where the entire schema would become inaccessible if a table was referenced as an implicit record type by a user-defined function (UDF) while the table was undergoing an `IMPORT`. [#150350][#150350] +- Fixed invalid zone configurations that were generated when adding a super region to a 3-region database with a secondary region and region survivability. Previously, this could result in assigning more than the allowed number of replicas. [#150413][#150413] +- Addressed a bug on `schema_locked` tables when a column is dropped, and `schema_locked` is toggled for the user. [#150435][#150435] +- Fixed the `pg_catalog.pg_type` enties for the "any" and "trigger" pseudotypes. [#150777][#150777] +- Fixed an issue where Row Level Security (RLS) policies with missing dependencies during table-level restores could cause inconsistent state or restore failures. [#151045][#151045] +- Fixed a bug that could cause some errors returned by attempts to upload backup data to external storage providers to go undetected, potentially causing incomplete backups. [#151058][#151058] +- Previously, CockroachDB could encounter an internal error `trying to add a column of UNKNOWN type at ...` in rare cases when handling `CASE` or `OR` operations. This bug was present since v20.2 and is now fixed. [#151093][#151093] +- Fixed a bug where `debug.zip` files collected from clusters with `disallow_full_table_scans` enabled were missing system table data. [#151185][#151185] +- Fix handling of empty arrays in JSONPath lax mode + comparisons. Empty arrays now return false for comparisons in lax mode and + null in strict mode, matching PostgreSQL behavior. [#151226][#151226] +- Fixed a bug where `DROP USER` succeeded even though a role owned default privileges, which could leave invalid privilege entries in the system. [#151472][#151472] +- Fixed a bug where sequences could lose references to triggers, allowing them to be dropped incorrectly. [#151546][#151546] +- Previously, CockroachDB could incorrectly elevate the number of rows deleted on tables with multiple column families. The bug was present v19.2 and is now fixed. Note that the data was deleted correctly, but the "rows affected" number was wrong. [#151563][#151563] +- Added an automatic repair for dangling or invalid entries in the `system.comments` table. [#151737][#151737] +- Previously, CockroachDB could hit an error `ERROR: span with results after resume span...` when evaluating some queries with `ORDER BY ... DESC` in an edge case. This bug was present since v22.1 and is now fixed. [#151774][#151774] +- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. [#151947][#151947] +- Fixed a bug where executing certain statements with `BETWEEN SYMMETRIC` expressions could panic if used with values of different types, such as `... b'bytes' BETWEEN SYMMETRIC 'a' AND 'c'`. [#151951][#151951] +- Fixed a bug where `SHOW TABLES` would show inaccurate row counts if the most recent statistics collection was partial. [#152033][#152033] +- Fixed a bug that prevented `RESTORE` from working if there were computed columns or `ON UPDATE` expressions that referenced user-defined functions (UDFs). This bug was introduced in v25.3.0. [#152193][#152193] +- Fixed a bug that allowed foreign-key violations to result from some combinations of concurrent `READ COMMITTED` and `SERIALIZABLE` transactions. If both `SERIALIZABLE` and weaker-isolation transactions will concurrently modify rows involved in foreign-key relationships, the `SERIALIZABLE` transactions must have the following session variables set in order to prevent any possible foreign-key violations: + - `SET enable_implicit_fk_locking_for_serializable = on;` + - `SET enable_shared_locking_for_serializable = on;` + - `SET enable_durable_locking_for_serializable = on;` [#152245][#152245] +- Added the `use_soft_limit_for_distribute_scan` session variable (default: `false`), which controls whether CockroachDB uses the soft row count estimate when deciding whether an execution plan should be distributed. In v25.1, the physical planning heuristics were changed such that large constrained table scans, estimated to scan at least 10,000 rows (controlled via `distribute_scan_row_count_threshold`), would force plan distribution when `distsql=auto`. However, if the scan had a "soft limit" CockroachDB would still use the full estimate (for example, `10,000` in `estimated row count: 100–10,000`), sometimes unnecessarily distributing queries and increasing latency. The `use_soft_limit_for_distribute_scan` session variable addresses this by allowing the planner to use the soft limit when deciding whether a scan is "large". [#152300][#152300] +- `pg_class.pg_depend` now contains entries with `deptype='i'` (internal) for identity columns that own sequences. These previously had `deptype='a'` (auto). [#152309][#152309] +- Fixed a bug that caused an error when dropping a column and a `UNIQUE WITHOUT INDEX` constraint that referenced it in the same transaction. [#152447][#152447] +- Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions. [#152670][#152670]

Performance improvements

-- Lookup joins can now be used on tables with virtual columns even if the type of the search argument is not identical to the column type referenced in the virtual column. [f00ff8d7][f00ff8d7] -- LTREE is now index accelerated with the ``@>`` operator. #### opt: index accelerate <@ operator for ltree The <@ is index accelerated by restricting the span of key-encoded ltrees to be between a given ltree and the ltree with an incremented last label. For example, a query with predicate `WHERE a <@ 'A.B'` would create the span [/'A.B' - /'A.C']. Informs: cockroachdb#44657 Epic: CRDB-148 [a6e4ba93][a6e4ba93] -- LTREE is now index accelerated with the `<`@`` operator. 152523: sql: harden recent fix to deleteRange r=yuzefovich a=yuzefovich In recently merged 59a28ec0a9767e7f4864454bd19065afd9da6b16 we fixed how we count "rows affected" by the deleteRangeNode, which was done by maintaining "cur row prefix" across BatchRequests. AI-generated code review pointed out that we can alias the memory of now-old BatchRequest while processing the response to the new one. Although I don't think it can lead to problems (since we shouldn't be modifying the BatchRequest's or BatchResponse's keys - which is verified via `GRPCTransportFactory` "race" variant), it seems prudent that we make a copy of the row prefix (among other benefits, this might allow for the old keys to be GCed sooner). Epic: None [a6e4ba93][a6e4ba93] -- Some types of simple queries that query a table with RLS enabled are now more efficiently executed. 151495: sql: add goroutine IDs to text trace output in logs r=alyshanjahani-crl,arulajmani,yuzefovich a=dhartunian when outputting a transaction trace in text format into the logs, we will now include the goroutine ID in the line with the operation like this: ``` === operation:foo gid:123 ``` Epic: None [23e1618a][23e1618a] -- The efficiency and throughput of catch-up scans used by CDC and PCR is improved in cases where substantial catch-up work is required. Epic: none. While I'm here: since we have a setting we may as well use it to control the buffer's size target rather than just on vs off. [ffa3d5c1][ffa3d5c1] -- Mutation statements (UPDATEs and DELETEs) that perform lookup joins into multi-region tables (perhaps as part of a CASCADE) are now more likely to parallelize the lookups across ranges which improves their performance. [691f7a80][691f7a80] -- Reduces write amplification by storing raft log values in separate blob files. This reduces write bandwidth, especially on stores with many replicas. This in turn can increase throughput and reduce latency. This behavior is active as long as the storage.value_separation.enabled cluster setting is enabled. [dc2191ba][dc2191ba] -- Before we normalized filters `x LIKE '%'` for non-null columns directly to true. This is limited for columns which are nullable. This commit instead normalizes the aforementioned filter to `x IS NOT NULL` for better performance improvements on all columns with this filter. [6e1f7034][6e1f7034] -- Some queries with filters in the form `x IS NOT DISTINCT FROM y` now have more optimal query plans. [48775d39][48775d39] -- LIKE expressions of the form `x LIKE '%'` are normalized to true if x is non-Null. [f51a6aa7][f51a6aa7] +- Some queries with filters of the form `x IS NOT DISTINCT FROM y` now have more optimal query plans. [#146494][#146494] +- Mutation statements (`UPDATE` and `DELETE`) that perform lookup joins into multi-region tables (perhaps as part of a `CASCADE`) are now more likely to parallelize the lookups across ranges, improving their performance. [#148186][#148186] +- `LIKE` filter expressions of the form `x LIKE '%'` are now normalized to `TRUE` if `x` is non-`NULL` within a `SELECT` expression. [#148763][#148763] +- Filters of the form `x LIKE '%'` are now normalized to `x IS NOT NULL`, enabling performance improvements on both nullable and non-nullable columns. Previously, such filters were normalized directly to `TRUE`, which only applied to non-`NULL` columns. [#149614][#149614] +- Updated the storage engine to reduce write amplification by storing Raft log values in separate blob files. This reduces write bandwidth, especially on stores with many replicas. This in turn can increase throughput and reduce latency. This behavior is active as long as the `storage.value_separation.enabled` cluster setting is enabled. [#149712][#149712] +- Improved the efficiency and throughput of catch-up scans used by Change Data Capture (CDC) and Physical Cluster Replication (PCR) in cases where substantial catch-up work is required. [#150738][#150738] +- Certain types of simple queries on tables with row-level security enabled are now more efficiently executed. [#151337][#151337] +- `LTREE` is now index-accelerated with the `@>` operator. [#152353][#152353] +- `LTREE` is now index-accelerated with the `<@` operator. [#152353][#152353] +- Lookup joins can now be used on tables with virtual columns even if the type of the search argument is not identical to the column type referenced in the virtual column. [#152399][#152399]

Build changes

-- Revert Go version back to 1.23.7. Epic: none [19606f2d][19606f2d] -- Upgrade to Go 1.24.5 [a6ca3232][a6ca3232] +- Upgrade to Go 1.24.5 [#150870][#150870] +- Revert Go version back to 1.23.7. + Epic: none [#152023][#152023]

Miscellaneous

-- A new feature that captures go execution traces on an automatic schedule is now available. This feature will incur a performance penalty and customers will typically use this under the guidance of Cockroach Labs support. There are 3 cluster settings which manipulate this feature: - `obs.execution_tracer.interval`: set to >0 to enable the tracer and capture traces at the given interval. - `obs.execution_tracer.duration`: sets the time over which each trace captures data. - `obs.execution_tracer.total_dump_size_limit` : sets the total amount of disk space to allow execution traces to take up before the oldest files are garbage collected automatically. [7b663425][7b663425] -- The `create_table_with_schema_locked` session variable is now enabled by default. As a result, all new tables will be created as `schema-locked`. This setting must be manually disabled before running operations that do not support schema-locking automatically, such as explicit transactions or `ALTER TABLE ... SET LOCALITY`. 148796: workflows: run update_releases on release-25.3 r=jlinder a=rail Epic: none [6ff7857d][6ff7857d] -- Upgrade to Go 1.23.12 [a10bae0f][a10bae0f] -- Tunes S3 client retry behavior to be more reliable in the presence of correlated errors. [1bedd255][1bedd255] -- When outputting transaction traces to logs using probabilistic and/or statement latency-based triggers, users have the option to write the logs in Jaeger-compatible JSON format to the logs for easier analysis. Setting the cluster setting `sql.trace.txn.jaeger_json_output.enabled` to true, will change the output format. [0e8321e1][0e8321e1] -- Fixes a rare bug in restore where an object storage on restore start could cause restore to report success without creating the restored tables or databases. [53ce6cb7][53ce6cb7] -- Fixes a memory accounting issue with the client certificate cache, where we were accidentally reporting multiple allocations for the same memory. [f9668778][f9668778] -- The `sys.host.net.send.tcp.retrans_segs` metric has been added, alongside a number of additional TCP metrics. These can be useful to diagnose network issues. [dafaf1de][dafaf1de] -- Download phase of fast restore now will retry downloads before giving up. 149367: storage: bump pebble, enable blob-file rewrites metamorphically r=annrpom a=annrpom ### go.mod: bump Pebble to a2947b4a9383 Changes: * [`a2947b4a`](https://github.com/cockroachdb/pebble/commit/a2947b4a) cmd/pebble: enable blob file rewriting * [`5e1cd273`](https://github.com/cockroachdb/pebble/commit/5e1cd273) compression: deflake TestAdaptiveCompressorCompressible * [`652bc0ca`](https://github.com/cockroachdb/pebble/commit/652bc0ca) ascii/table: new package * [`2430d94a`](https://github.com/cockroachdb/pebble/commit/2430d94a) internal/ascii: new package * [`7d17fe51`](https://github.com/cockroachdb/pebble/commit/7d17fe51) metamorphic: enable blob file rewrite compactions * [`09c33960`](https://github.com/cockroachdb/pebble/commit/09c33960) blob: deduplicate values during rewrite * [`8e65e154`](https://github.com/cockroachdb/pebble/commit/8e65e154) pebble: setupInputs checks key range conflicts with in progress compactions * [`8dea64b3`](https://github.com/cockroachdb/pebble/commit/8dea64b3) db: incorporate separated values when estimating compression ratios * [`9fd475aa`](https://github.com/cockroachdb/pebble/commit/9fd475aa) db: add TestTableStats test case exercising separated values * [`3b556400`](https://github.com/cockroachdb/pebble/commit/3b556400) tool: add tool for inspecting blob files * [`c726afea`](https://github.com/cockroachdb/pebble/commit/c726afea) sstable: add blob value liveness writer random test * [`c0d37a5b`](https://github.com/cockroachdb/pebble/commit/c0d37a5b) metamorphic: use leaktest in metamorphic test * [`4ad0e5fb`](https://github.com/cockroachdb/pebble/commit/4ad0e5fb) Revert "sstable: lazy load the index block in single level iterator" * [`f5351564`](https://github.com/cockroachdb/pebble/commit/f5351564) Revert "sstable: lazy load the index block in two level iterator" * [`46650aa8`](https://github.com/cockroachdb/pebble/commit/46650aa8) github: add crl-release-25.3 to nightlies and crossversion * [`11cf2c4a`](https://github.com/cockroachdb/pebble/commit/11cf2c4a) pebble: deflake move compaction datadriven test * [`fe43e7b5`](https://github.com/cockroachdb/pebble/commit/fe43e7b5) sstable: lazy load the index block in two level iterator * [`f4af03ae`](https://github.com/cockroachdb/pebble/commit/f4af03ae) test: introduce two level iterator benchmark test * [`527eebf4`](https://github.com/cockroachdb/pebble/commit/527eebf4) sstable: lazy load the index block in single level iterator Epic: none. ### storage: metamorphically enable blob-file rewrites This patch enables blob-file rewrites metamorphically. [73aaff28][73aaff28] -- changefeed.create_pts_hist_nanos and changefeed.manage_pts_hist_nanos to measure the performance of managing protected ts records. [96f6d6bb][96f6d6bb] -- When enabling probabilistic transaction tracing via the `sql.trace.txn.enable_threshold` and `sql.trace.txn.sample_rate` cluster settings, it's typical that you would want to omit internal transactions from being considered for tracing and logging. You can now do this by setting `sql.trace.txn.include_internal.enabled` to false. ---- Prior commit is being reviewed here: https://github.com/cockroachdb/cockroach/pull/151414 Also tests are not correct yet, I'm trying to use this patch to consolidate tests from the last one to prevent lots of small tests that have to start their own servers. [3824cc28][3824cc28] +- To improve changefeed performance, the session variable `create_table_with_schema_locked` is enabled by default. This means all new tables are created with the `schema_locked` storage parameter. This setting must be explicitly unset for explicit transactions or for schema changes that do not support automatic disabling (e.g., `ALTER TABLE ... SET LOCALITY`). [#148576][#148576] +- Download phase of fast restore now will retry downloads + before giving up. [#148821][#148821] +- Fixed a memory accounting issue in the client certificate cache that caused multiple allocations to be reported for the same certificate. The cache now accurately tracks memory usage and includes a safeguard to prevent it from negatively affecting SQL operations. [#151041][#151041] +- None [#151110][#151110] +- Fixes a rare bug in restore where an object storage on + restore start could cause restore to report success without creating the + restored tables or databases. [#151148][#151148] +- You can now output transaction traces to the logs in Jaeger-compatible JSON format. This is controlled by the `sql.trace.txn.jaeger_json_output.enabled` cluster setting, which is disabled by default. When enabled, traces triggered by probabilistic sampling or statement latency thresholds will be formatted for easier ingestion by tools that support the Jaeger tracing format. [#151414][#151414] +- You can now exclude internal transactions from probabilistic transaction tracing and latency-based logging by setting the `sql.trace.txn.include_internal.enabled` cluster setting to false. This setting is enabled by default to preserve the current behavior, but disabling it is recommended when debugging customer workloads to reduce noise in trace output. [#151433][#151433] +- Tunes S3 client retry behavior to be more reliable in the + presence of correlated errors. [#151817][#151817] +- Upgrade to Go 1.23.12 [#152207][#152207] -[584c74d6]: https://github.com/cockroachdb/cockroach/pull/584c74d6 -[9f257785]: https://github.com/cockroachdb/cockroach/pull/9f257785 -[f09c7b83]: https://github.com/cockroachdb/cockroach/pull/f09c7b83 -[33e009d7]: https://github.com/cockroachdb/cockroach/pull/33e009d7 -[ce35c63b]: https://github.com/cockroachdb/cockroach/pull/ce35c63b -[6b4e13ff]: https://github.com/cockroachdb/cockroach/pull/6b4e13ff -[f00ff8d7]: https://github.com/cockroachdb/cockroach/pull/f00ff8d7 -[a148cb0d]: https://github.com/cockroachdb/cockroach/pull/a148cb0d -[f49c602f]: https://github.com/cockroachdb/cockroach/pull/f49c602f -[fa1c75ba]: https://github.com/cockroachdb/cockroach/pull/fa1c75ba -[d1af030c]: https://github.com/cockroachdb/cockroach/pull/d1af030c -[9a4037e0]: https://github.com/cockroachdb/cockroach/pull/9a4037e0 -[53ce6cb7]: https://github.com/cockroachdb/cockroach/pull/53ce6cb7 -[3ad5418b]: https://github.com/cockroachdb/cockroach/pull/3ad5418b -[d7f0c96e]: https://github.com/cockroachdb/cockroach/pull/d7f0c96e -[efcbc078]: https://github.com/cockroachdb/cockroach/pull/efcbc078 -[835eda7d]: https://github.com/cockroachdb/cockroach/pull/835eda7d -[8987f661]: https://github.com/cockroachdb/cockroach/pull/8987f661 -[3682fa34]: https://github.com/cockroachdb/cockroach/pull/3682fa34 -[19606f2d]: https://github.com/cockroachdb/cockroach/pull/19606f2d -[ee02ca6b]: https://github.com/cockroachdb/cockroach/pull/ee02ca6b -[31baea96]: https://github.com/cockroachdb/cockroach/pull/31baea96 -[f276f1ad]: https://github.com/cockroachdb/cockroach/pull/f276f1ad -[993bd513]: https://github.com/cockroachdb/cockroach/pull/993bd513 -[691f7a80]: https://github.com/cockroachdb/cockroach/pull/691f7a80 -[48775d39]: https://github.com/cockroachdb/cockroach/pull/48775d39 -[7a7aab5b]: https://github.com/cockroachdb/cockroach/pull/7a7aab5b -[459f9697]: https://github.com/cockroachdb/cockroach/pull/459f9697 -[875e04a8]: https://github.com/cockroachdb/cockroach/pull/875e04a8 -[4a528acb]: https://github.com/cockroachdb/cockroach/pull/4a528acb -[6e1f7034]: https://github.com/cockroachdb/cockroach/pull/6e1f7034 -[a10bae0f]: https://github.com/cockroachdb/cockroach/pull/a10bae0f -[768a2b67]: https://github.com/cockroachdb/cockroach/pull/768a2b67 -[5eb2140d]: https://github.com/cockroachdb/cockroach/pull/5eb2140d -[14f65341]: https://github.com/cockroachdb/cockroach/pull/14f65341 -[1303c66c]: https://github.com/cockroachdb/cockroach/pull/1303c66c -[23e1618a]: https://github.com/cockroachdb/cockroach/pull/23e1618a -[263b677d]: https://github.com/cockroachdb/cockroach/pull/263b677d -[8eb0c9dc]: https://github.com/cockroachdb/cockroach/pull/8eb0c9dc -[c2d10600]: https://github.com/cockroachdb/cockroach/pull/c2d10600 -[63f8071d]: https://github.com/cockroachdb/cockroach/pull/63f8071d -[50694710]: https://github.com/cockroachdb/cockroach/pull/50694710 -[f43db402]: https://github.com/cockroachdb/cockroach/pull/f43db402 -[5a4e4e81]: https://github.com/cockroachdb/cockroach/pull/5a4e4e81 -[21c52775]: https://github.com/cockroachdb/cockroach/pull/21c52775 -[8fefbf93]: https://github.com/cockroachdb/cockroach/pull/8fefbf93 -[73aaff28]: https://github.com/cockroachdb/cockroach/pull/73aaff28 -[255f60e1]: https://github.com/cockroachdb/cockroach/pull/255f60e1 -[1522360e]: https://github.com/cockroachdb/cockroach/pull/1522360e -[7b663425]: https://github.com/cockroachdb/cockroach/pull/7b663425 -[9d5a1fae]: https://github.com/cockroachdb/cockroach/pull/9d5a1fae -[5cb14e23]: https://github.com/cockroachdb/cockroach/pull/5cb14e23 -[6cd77297]: https://github.com/cockroachdb/cockroach/pull/6cd77297 -[7c13dda5]: https://github.com/cockroachdb/cockroach/pull/7c13dda5 -[c0934ae3]: https://github.com/cockroachdb/cockroach/pull/c0934ae3 -[b147ab94]: https://github.com/cockroachdb/cockroach/pull/b147ab94 -[ae4d42dd]: https://github.com/cockroachdb/cockroach/pull/ae4d42dd -[a73404be]: https://github.com/cockroachdb/cockroach/pull/a73404be -[d591c199]: https://github.com/cockroachdb/cockroach/pull/d591c199 -[1206bb5e]: https://github.com/cockroachdb/cockroach/pull/1206bb5e -[e63be70a]: https://github.com/cockroachdb/cockroach/pull/e63be70a -[2d73bfc8]: https://github.com/cockroachdb/cockroach/pull/2d73bfc8 -[1ded8682]: https://github.com/cockroachdb/cockroach/pull/1ded8682 -[a6e4ba93]: https://github.com/cockroachdb/cockroach/pull/a6e4ba93 -[f51a6aa7]: https://github.com/cockroachdb/cockroach/pull/f51a6aa7 -[1bedd255]: https://github.com/cockroachdb/cockroach/pull/1bedd255 -[421a2574]: https://github.com/cockroachdb/cockroach/pull/421a2574 -[19fcdb66]: https://github.com/cockroachdb/cockroach/pull/19fcdb66 -[54118cd0]: https://github.com/cockroachdb/cockroach/pull/54118cd0 -[da4cfcb2]: https://github.com/cockroachdb/cockroach/pull/da4cfcb2 -[ce20a399]: https://github.com/cockroachdb/cockroach/pull/ce20a399 -[ffa3d5c1]: https://github.com/cockroachdb/cockroach/pull/ffa3d5c1 -[2a73f4a9]: https://github.com/cockroachdb/cockroach/pull/2a73f4a9 -[322d3bb8]: https://github.com/cockroachdb/cockroach/pull/322d3bb8 -[c4852d7f]: https://github.com/cockroachdb/cockroach/pull/c4852d7f -[69a0bf1c]: https://github.com/cockroachdb/cockroach/pull/69a0bf1c -[6f71172d]: https://github.com/cockroachdb/cockroach/pull/6f71172d -[1957a648]: https://github.com/cockroachdb/cockroach/pull/1957a648 -[cf40a350]: https://github.com/cockroachdb/cockroach/pull/cf40a350 -[7df163f0]: https://github.com/cockroachdb/cockroach/pull/7df163f0 -[b39295a5]: https://github.com/cockroachdb/cockroach/pull/b39295a5 -[837a2e3a]: https://github.com/cockroachdb/cockroach/pull/837a2e3a -[67b3c08b]: https://github.com/cockroachdb/cockroach/pull/67b3c08b -[06444d34]: https://github.com/cockroachdb/cockroach/pull/06444d34 -[d5acebac]: https://github.com/cockroachdb/cockroach/pull/d5acebac -[2f096411]: https://github.com/cockroachdb/cockroach/pull/2f096411 -[bfb43f56]: https://github.com/cockroachdb/cockroach/pull/bfb43f56 -[dc2191ba]: https://github.com/cockroachdb/cockroach/pull/dc2191ba -[880272d9]: https://github.com/cockroachdb/cockroach/pull/880272d9 -[ad4d1094]: https://github.com/cockroachdb/cockroach/pull/ad4d1094 -[e2c55634]: https://github.com/cockroachdb/cockroach/pull/e2c55634 -[a4148787]: https://github.com/cockroachdb/cockroach/pull/a4148787 -[1aabeeb6]: https://github.com/cockroachdb/cockroach/pull/1aabeeb6 -[9d400331]: https://github.com/cockroachdb/cockroach/pull/9d400331 -[96f6d6bb]: https://github.com/cockroachdb/cockroach/pull/96f6d6bb -[0e8321e1]: https://github.com/cockroachdb/cockroach/pull/0e8321e1 -[7d97799d]: https://github.com/cockroachdb/cockroach/pull/7d97799d -[3d5ef946]: https://github.com/cockroachdb/cockroach/pull/3d5ef946 -[82759997]: https://github.com/cockroachdb/cockroach/pull/82759997 -[0e9251db]: https://github.com/cockroachdb/cockroach/pull/0e9251db -[91a21384]: https://github.com/cockroachdb/cockroach/pull/91a21384 -[a6ca3232]: https://github.com/cockroachdb/cockroach/pull/a6ca3232 -[a491fd92]: https://github.com/cockroachdb/cockroach/pull/a491fd92 -[a1077166]: https://github.com/cockroachdb/cockroach/pull/a1077166 -[40b00a90]: https://github.com/cockroachdb/cockroach/pull/40b00a90 -[9ab7ea1b]: https://github.com/cockroachdb/cockroach/pull/9ab7ea1b -[86c47284]: https://github.com/cockroachdb/cockroach/pull/86c47284 -[ede5ccc7]: https://github.com/cockroachdb/cockroach/pull/ede5ccc7 -[70217086]: https://github.com/cockroachdb/cockroach/pull/70217086 -[e59d88e1]: https://github.com/cockroachdb/cockroach/pull/e59d88e1 -[c74f6a36]: https://github.com/cockroachdb/cockroach/pull/c74f6a36 -[a685bfbf]: https://github.com/cockroachdb/cockroach/pull/a685bfbf -[693c3951]: https://github.com/cockroachdb/cockroach/pull/693c3951 -[9e1e159b]: https://github.com/cockroachdb/cockroach/pull/9e1e159b -[76618123]: https://github.com/cockroachdb/cockroach/pull/76618123 -[b1bb2263]: https://github.com/cockroachdb/cockroach/pull/b1bb2263 -[2dc9058c]: https://github.com/cockroachdb/cockroach/pull/2dc9058c -[d11bf892]: https://github.com/cockroachdb/cockroach/pull/d11bf892 -[63545b4d]: https://github.com/cockroachdb/cockroach/pull/63545b4d -[3824cc28]: https://github.com/cockroachdb/cockroach/pull/3824cc28 -[f9668778]: https://github.com/cockroachdb/cockroach/pull/f9668778 -[c12d55d9]: https://github.com/cockroachdb/cockroach/pull/c12d55d9 -[caa221d6]: https://github.com/cockroachdb/cockroach/pull/caa221d6 -[21349171]: https://github.com/cockroachdb/cockroach/pull/21349171 -[c9e4bb2b]: https://github.com/cockroachdb/cockroach/pull/c9e4bb2b -[c63a85be]: https://github.com/cockroachdb/cockroach/pull/c63a85be -[6ff7857d]: https://github.com/cockroachdb/cockroach/pull/6ff7857d -[6228e693]: https://github.com/cockroachdb/cockroach/pull/6228e693 -[679f10bb]: https://github.com/cockroachdb/cockroach/pull/679f10bb -[064aa707]: https://github.com/cockroachdb/cockroach/pull/064aa707 -[1283b87c]: https://github.com/cockroachdb/cockroach/pull/1283b87c -[3145ed06]: https://github.com/cockroachdb/cockroach/pull/3145ed06 -[2f606a62]: https://github.com/cockroachdb/cockroach/pull/2f606a62 -[7f2055b8]: https://github.com/cockroachdb/cockroach/pull/7f2055b8 -[722aed0c]: https://github.com/cockroachdb/cockroach/pull/722aed0c -[639c2e5e]: https://github.com/cockroachdb/cockroach/pull/639c2e5e -[2eb84bc3]: https://github.com/cockroachdb/cockroach/pull/2eb84bc3 -[1a4f475f]: https://github.com/cockroachdb/cockroach/pull/1a4f475f -[8f28ff92]: https://github.com/cockroachdb/cockroach/pull/8f28ff92 -[37243f53]: https://github.com/cockroachdb/cockroach/pull/37243f53 -[96bc36ec]: https://github.com/cockroachdb/cockroach/pull/96bc36ec -[dafaf1de]: https://github.com/cockroachdb/cockroach/pull/dafaf1de +[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 +[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 +[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 +[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 +[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 +[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 +[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 +[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 +[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 +[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 +[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 +[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 +[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 +[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 +[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 +[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 +[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 +[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 +[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 +[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 +[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 +[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 +[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 +[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 +[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 +[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 +[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 +[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 +[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 +[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 +[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 +[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 +[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 +[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 +[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 +[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 +[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 +[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 +[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 +[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 +[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 +[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 +[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 +[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 +[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 +[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 +[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 +[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 +[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 +[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 +[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 +[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 +[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 +[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 +[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 +[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 +[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 +[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 +[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 +[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 +[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 +[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 +[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 +[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 +[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 +[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 +[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 +[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 +[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 +[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 +[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 +[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 +[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 +[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 +[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 +[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 +[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 +[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 +[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 +[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 +[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 +[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 +[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 +[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 +[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 +[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 +[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 +[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 +[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 +[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 +[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 +[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 +[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 +[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 +[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 +[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 +[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 +[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 +[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 +[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 +[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 +[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 +[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 +[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 +[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 +[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 +[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 +[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 +[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 +[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 +[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 +[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 +[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 +[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 +[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 +[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 +[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 +[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 +[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 +[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 From 38649fb3c1a69d51382bb7b8189f036d266d57e1 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 17 Sep 2025 11:04:27 +0000 Subject: [PATCH 32/41] Update release notes for v25.4-v25.4.0-alpha.1 From 4a16763e111a9635e4be0d3d8623774240b279bf Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 17 Sep 2025 11:04:30 +0000 Subject: [PATCH 33/41] Update release notes for v25.4-v25.4.0-alpha.1 From dda87e9cc2ddd6ddfb750c122e9fc59db728d1dc Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 17 Sep 2025 11:04:31 +0000 Subject: [PATCH 34/41] Update release notes for v25.4-v25.4.0-alpha.1 --- .../releases/v25.4/v25.4.0-alpha.1.md | 274 +++++++++--------- 1 file changed, 137 insertions(+), 137 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md index 09a4e1345bf..8eefb91f3c8 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md @@ -394,161 +394,161 @@ Release Date: September 16, 2025 - Upgrade to Go 1.23.12 [#152207][#152207] -[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 -[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 -[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 -[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 -[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 -[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 -[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 -[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 -[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 -[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 -[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 -[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 -[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 -[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 -[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 -[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 -[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 -[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 -[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 +[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 +[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 +[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 +[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 +[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 +[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 +[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 [#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 -[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 +[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 [#149812]: https://github.com/cockroachdb/cockroach/pull/149812 -[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 -[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 -[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 -[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 -[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 -[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 +[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 +[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 +[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 +[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 [#149614]: https://github.com/cockroachdb/cockroach/pull/149614 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 -[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 -[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 -[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 -[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 -[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 +[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 +[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 +[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 +[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 +[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 +[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 [#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 -[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 -[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 -[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 -[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 -[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 +[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 +[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 +[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 +[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 +[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 +[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 +[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 [#148525]: https://github.com/cockroachdb/cockroach/pull/148525 -[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 -[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 -[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 -[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 -[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 -[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 -[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 -[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 -[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 [#151362]: https://github.com/cockroachdb/cockroach/pull/151362 -[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 -[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 -[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 -[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 -[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 +[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 +[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 [#142930]: https://github.com/cockroachdb/cockroach/pull/142930 -[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 +[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 +[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 +[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 +[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 +[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 +[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 +[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 [#149486]: https://github.com/cockroachdb/cockroach/pull/149486 -[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 +[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 +[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 +[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 +[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 [#150364]: https://github.com/cockroachdb/cockroach/pull/150364 -[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 -[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 -[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 -[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 -[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 +[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 +[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 +[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 [#151692]: https://github.com/cockroachdb/cockroach/pull/151692 +[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 +[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 +[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 +[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 +[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 +[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 +[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 +[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 +[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 +[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 [#150321]: https://github.com/cockroachdb/cockroach/pull/150321 +[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 +[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 [#148863]: https://github.com/cockroachdb/cockroach/pull/148863 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 -[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 -[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 -[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 -[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 +[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 +[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 +[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 +[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 +[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 +[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 +[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 [#149728]: https://github.com/cockroachdb/cockroach/pull/149728 -[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 -[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 -[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 -[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 +[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 +[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 +[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 +[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 +[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 +[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 +[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 [#150350]: https://github.com/cockroachdb/cockroach/pull/150350 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 -[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 +[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 +[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 [#148576]: https://github.com/cockroachdb/cockroach/pull/148576 +[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 +[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 +[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 +[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 +[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 +[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 +[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 +[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 +[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 +[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 +[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 +[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 +[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 [#147272]: https://github.com/cockroachdb/cockroach/pull/147272 -[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 -[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 -[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 -[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 +[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 +[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 +[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 +[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 [#151737]: https://github.com/cockroachdb/cockroach/pull/151737 -[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 -[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 -[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 -[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 -[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 +[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 +[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 +[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 +[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 +[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 +[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 +[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 [#151804]: https://github.com/cockroachdb/cockroach/pull/151804 -[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 -[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 -[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 -[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 -[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 -[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 -[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 -[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 -[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 +[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 +[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 +[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 [#151153]: https://github.com/cockroachdb/cockroach/pull/151153 [#152352]: https://github.com/cockroachdb/cockroach/pull/152352 -[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 -[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 -[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 -[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 -[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 -[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 +[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 +[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 [#149373]: https://github.com/cockroachdb/cockroach/pull/149373 -[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 -[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 -[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 -[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 -[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 -[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 -[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 -[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 -[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 -[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 -[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 -[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 -[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 -[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 -[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 +[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 From 6c730f8305a0f8dde03c953a2f8f3a713a443189 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 17 Sep 2025 11:17:09 +0000 Subject: [PATCH 35/41] Update release notes for v25.4-v25.4.0-alpha.1 From b584c240ec33ac49dde9b2d0231b10c31201364e Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 17 Sep 2025 11:17:12 +0000 Subject: [PATCH 36/41] Update release notes for v25.4-v25.4.0-alpha.1 From 821f025fe00cbfedaf0cbef7dd7cb58c9714fa93 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 17 Sep 2025 11:17:15 +0000 Subject: [PATCH 37/41] Update release notes for v25.4-v25.4.0-alpha.1 --- .../releases/v25.4/v25.4.0-alpha.1.md | 272 +++++++++--------- 1 file changed, 136 insertions(+), 136 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md index 8eefb91f3c8..a5a9f0adaec 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md @@ -394,161 +394,161 @@ Release Date: September 16, 2025 - Upgrade to Go 1.23.12 [#152207][#152207] -[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 -[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 -[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 -[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 -[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 -[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 -[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 -[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 -[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 -[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 -[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 -[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 -[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 -[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 -[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 -[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 -[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 -[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 -[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 -[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 +[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 +[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 +[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 +[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 [#149696]: https://github.com/cockroachdb/cockroach/pull/149696 -[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 -[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 -[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 +[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 +[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 +[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 +[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 +[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 +[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 [#149371]: https://github.com/cockroachdb/cockroach/pull/149371 -[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 -[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 -[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 +[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 +[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 +[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 +[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 +[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 +[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 +[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 [#149686]: https://github.com/cockroachdb/cockroach/pull/149686 +[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 [#150105]: https://github.com/cockroachdb/cockroach/pull/150105 [#151821]: https://github.com/cockroachdb/cockroach/pull/151821 -[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 -[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 -[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 -[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 -[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 -[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 -[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 -[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 +[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 [#149279]: https://github.com/cockroachdb/cockroach/pull/149279 -[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 -[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 -[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 +[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 +[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 +[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 +[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 +[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 +[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 [#150253]: https://github.com/cockroachdb/cockroach/pull/150253 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 -[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 -[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 -[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 +[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 [#148857]: https://github.com/cockroachdb/cockroach/pull/148857 +[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 +[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 +[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 +[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 +[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 +[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 +[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 +[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 +[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 +[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 +[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 +[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 +[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 +[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 +[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 +[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 +[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 +[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 +[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 +[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 [#150836]: https://github.com/cockroachdb/cockroach/pull/150836 -[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 +[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 +[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 [#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 -[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 +[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 +[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 +[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 +[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 +[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 +[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 +[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 [#149713]: https://github.com/cockroachdb/cockroach/pull/149713 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 -[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 -[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 -[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 -[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 -[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 +[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 [#150666]: https://github.com/cockroachdb/cockroach/pull/150666 -[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 -[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 -[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 -[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 +[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 +[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 +[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 +[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 +[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 +[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 +[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 +[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 +[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 +[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 +[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 +[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 +[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 +[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 +[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 [#148532]: https://github.com/cockroachdb/cockroach/pull/148532 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 +[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 +[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 +[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 +[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 +[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 [#147318]: https://github.com/cockroachdb/cockroach/pull/147318 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 [#149898]: https://github.com/cockroachdb/cockroach/pull/149898 -[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 -[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 -[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 -[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 -[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 -[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 -[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 +[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 +[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 +[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 +[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 +[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 +[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 +[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 [#149800]: https://github.com/cockroachdb/cockroach/pull/149800 -[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 -[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 [#149415]: https://github.com/cockroachdb/cockroach/pull/149415 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 -[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 -[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 -[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 -[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 -[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 -[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 -[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 -[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 -[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 -[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 -[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 -[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 -[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 -[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 -[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 [#150501]: https://github.com/cockroachdb/cockroach/pull/150501 -[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 -[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 -[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 -[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 -[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 -[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 -[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 -[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 -[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 +[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 +[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 [#148471]: https://github.com/cockroachdb/cockroach/pull/148471 -[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 -[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 -[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 +[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 [#148186]: https://github.com/cockroachdb/cockroach/pull/148186 -[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 -[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 -[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 -[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 -[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 -[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 -[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 -[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 -[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 -[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 -[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 -[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 -[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 -[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 [#152509]: https://github.com/cockroachdb/cockroach/pull/152509 -[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 +[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 +[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 +[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 +[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 +[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 +[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 [#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 -[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 -[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 -[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 -[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 +[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 +[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 +[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 +[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 +[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 +[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 From b1f897f4e70aa307426ec74a49e8fb85883ea571 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 17 Sep 2025 11:22:45 +0000 Subject: [PATCH 38/41] Update release notes for v25.4-v25.4.0-alpha.1 From 4caea32364c8153f686612b7f0814367e690a961 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 17 Sep 2025 11:22:46 +0000 Subject: [PATCH 39/41] Update release notes for v25.4-v25.4.0-alpha.1 From b974e6c52726f6ab39597366b2594acfeffbbb2c Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 17 Sep 2025 11:22:49 +0000 Subject: [PATCH 40/41] Update release notes for v25.4-v25.4.0-alpha.1 --- .../releases/v25.4/v25.4.0-alpha.1.md | 266 +++++++++--------- 1 file changed, 133 insertions(+), 133 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md index a5a9f0adaec..103d2f5faf6 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md @@ -394,161 +394,161 @@ Release Date: September 16, 2025 - Upgrade to Go 1.23.12 [#152207][#152207] -[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 +[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 +[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 +[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 +[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 [#150321]: https://github.com/cockroachdb/cockroach/pull/150321 -[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 -[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 -[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 -[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 -[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 +[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 [#149119]: https://github.com/cockroachdb/cockroach/pull/149119 -[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 -[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 -[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 +[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 [#146813]: https://github.com/cockroachdb/cockroach/pull/146813 +[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 +[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 +[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 +[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 [#150647]: https://github.com/cockroachdb/cockroach/pull/150647 -[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 -[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 -[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 +[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 [#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 +[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 +[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 +[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 +[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 +[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 +[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 +[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 +[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 +[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 +[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 +[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 +[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 +[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 [#147706]: https://github.com/cockroachdb/cockroach/pull/147706 +[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 +[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 +[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 +[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 +[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 +[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 +[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 +[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 +[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 +[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 +[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 +[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 +[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 +[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 +[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 +[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 +[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 [#143775]: https://github.com/cockroachdb/cockroach/pull/143775 -[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 +[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 +[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 +[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 +[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 +[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 +[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 +[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 +[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 +[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 [#149251]: https://github.com/cockroachdb/cockroach/pull/149251 -[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 -[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 -[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 -[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 -[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 -[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 -[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 -[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 -[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 +[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 [#149869]: https://github.com/cockroachdb/cockroach/pull/149869 +[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 +[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 +[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 +[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 +[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 [#150747]: https://github.com/cockroachdb/cockroach/pull/150747 -[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 +[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 [#149449]: https://github.com/cockroachdb/cockroach/pull/149449 +[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 +[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 +[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 +[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 [#150253]: https://github.com/cockroachdb/cockroach/pull/150253 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 -[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 -[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 -[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 -[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 -[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 -[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 +[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 +[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 +[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 +[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 +[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 [#152353]: https://github.com/cockroachdb/cockroach/pull/152353 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 -[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 -[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 -[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 -[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 -[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 -[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 -[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 +[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 +[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 +[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 [#147864]: https://github.com/cockroachdb/cockroach/pull/147864 -[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 -[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 [#149602]: https://github.com/cockroachdb/cockroach/pull/149602 -[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 -[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 -[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 +[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 +[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 [#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 -[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 -[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 -[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 +[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 +[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 [#151774]: https://github.com/cockroachdb/cockroach/pull/151774 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 -[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 -[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 -[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 +[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 +[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 +[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 +[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 +[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 +[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 +[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 +[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 +[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 +[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 +[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 [#148617]: https://github.com/cockroachdb/cockroach/pull/148617 -[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 -[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 -[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 +[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 +[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 +[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 +[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 [#148616]: https://github.com/cockroachdb/cockroach/pull/148616 -[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 -[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 -[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 -[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 -[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 -[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 -[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 -[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 -[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 -[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 -[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 -[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 -[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 [#151045]: https://github.com/cockroachdb/cockroach/pull/151045 -[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 -[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 -[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 -[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 -[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 -[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 [#148532]: https://github.com/cockroachdb/cockroach/pull/148532 +[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 [#148540]: https://github.com/cockroachdb/cockroach/pull/148540 -[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 -[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 +[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 +[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 [#150777]: https://github.com/cockroachdb/cockroach/pull/150777 -[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 -[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 -[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 -[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 +[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 +[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 +[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 [#149848]: https://github.com/cockroachdb/cockroach/pull/149848 [#151804]: https://github.com/cockroachdb/cockroach/pull/151804 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 -[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 -[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 -[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 -[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 -[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 -[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 -[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 -[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 -[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 -[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 -[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 -[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 -[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 -[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 -[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 -[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 -[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 -[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 -[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 -[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 -[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 -[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 -[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 -[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 -[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 From 0c1e7c2ac170be071bec4166eccd05b54deedfd4 Mon Sep 17 00:00:00 2001 From: mikeCRL Date: Wed, 17 Sep 2025 16:22:58 -0400 Subject: [PATCH 41/41] Edit release notes --- src/current/_data/releases.yml | 2 +- src/current/_data/versions.csv | 2 +- .../releases/v25.4/v25.4.0-alpha.1.md | 225 +++++------------- 3 files changed, 65 insertions(+), 164 deletions(-) diff --git a/src/current/_data/releases.yml b/src/current/_data/releases.yml index 0176d8d204f..c5137080a83 100644 --- a/src/current/_data/releases.yml +++ b/src/current/_data/releases.yml @@ -9376,7 +9376,7 @@ - release_name: v25.4.0-alpha.1 major_version: v25.4 - release_date: '2025-09-16' + release_date: '2025-09-17' release_type: Testing go_version: go1.23.12 sha: ea6772d06fc62b05b4b6e72602853a8e591bfd77 diff --git a/src/current/_data/versions.csv b/src/current/_data/versions.csv index 2e9b5927053..434d5404279 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,master,N/A +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 diff --git a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md index 103d2f5faf6..20a4fb2530a 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md @@ -6,63 +6,36 @@ Release Date: September 16, 2025

Security updates

-- CockroachDB can now synchronise SQL - role membership from the groups claim contained in a JWT when +- CockroachDB can now synchronize SQL + role membership from the `groups` claim contained in a JWT when `server.jwt_authentication.authorization.enabled = true`. The claim name and the fallback *userinfo* JSON key are configurable by `server.jwt_authentication.group_claim` and `server.jwt_authentication.userinfo_group_key` respectively. - Behaviour matches the existing LDAP role-sync feature. - . - Common IdP examples - ------------------- - - Okta (default mapping) - SET CLUSTER SETTING server.jwt_authentication.group_claim = 'groups'; - SET CLUSTER SETTING server.jwt_authentication.userinfo_group_key = 'groups'; - . - - Keycloak - If you map Keycloak Groups to a JWT claim (default): - group_claim = 'groups' -- e.g. "groups": ["team-a","team-b"] - . - If you prefer Keycloak’s built-in realm roles, CockroachDB does not follow - nested paths like "realm_access.roles". Add a Keycloak protocol mapper that - flattens roles into a top-level claim (for example "roles") and then - configure: - group_claim = 'roles'; -- e.g. "roles": ["team-a","team-b"] - . - The userinfo endpoint usually returns the same JSON keys, so the same values - work for `userinfo_group_key` as well. [#147318][#147318] -- CockroachDB can now synchronise SQL - role membership from the groups claim provided by an OpenID Connect + The behavior matches the existing LDAP role-sync feature. [#147318][#147318] +- CockroachDB can now synchronize SQL + role membership from the `groups` claim provided by an OpenID Connect (OIDC) Identity Provider when `server.oidc_authentication.authorization.enabled = true`. . - At login the DB Console gathers the `groups` claim from both the - verified ID token and, when available, the access token (if it is a - JWT). Any groups found in either token are combined and - de-duplicated. If no claim is present in either token, the server - will query the provider's `/userinfo` endpoint and extract groups from - there (using `server.oidc_authentication.userinfo_group_key`) as a - final fallback. - . - The resulting list of groups is normalised to SQL role names and - compared to the user’s current role memberships. Any newly required - roles are GRANTed and any stale ones are REVOKEd, matching the - behaviour already available for JWT and LDAP-based role - synchronisation. [#147706][#147706] + At login, the DB Console gathers the `groups` claim from the + verified ID token and, when available, the access token (if a + JWT). Any groups found in either token are combined and + deduplicated. If no claim is present in either, the provider's `/userinfo` endpoint is queried for groups, + as a final fallback. [#147706][#147706] - The JWT Authorization settings which - were merged in #147318 are no longer visible to users in 25.3. They - will be re-introduced in 25.4. [#149189][#149189] + were added in [#147318](https://github.com/cockroachdb/cockroach/pull/147318) are no longer visible to users in v25.3. They + will be re-introduced in v25.4. [#149189][#149189] - The following provisioning usability metric counters - were added for ldap based user provisioning. + were added for LDAP-based user provisioning. - * An enablement tracking counter for organizations enabling ldap provisioning + - An enablement tracking counter for organizations enabling LDAP provisioning (`auth.provisioning.ldap.enable`) - * A counter for number of organizations & tenants which have enabled ldap to + - A counter for number of organizations & tenants which have enabled ldap to auto-provision users(`auth.provisioning.ldap.begin`). - * A counter for the number of auto-provisioned users + - A counter for the number of auto-provisioned users (`auth.provisioning.ldap.success`). - * A telemetry counter for number of logins performed by provisioned users + - A telemetry counter for number of logins performed by provisioned users (`auth.provisioning.login_success`). [#150476][#150476]

General changes

@@ -74,19 +47,13 @@ Release Date: September 16, 2025 specify extra headers for webhook and kafka sinks. This can be used to add headers to all messages sent to the sink. [#146813][#146813] -- This change adds new metrics: - changefeed.stage.pts.create.latency, - changefeed.stage.pts.manage.latency, - changefeed.stage.pts.manage_error.latency, - to measure the performance of managing protected ts records. [#148471][#148471] +- Added new metrics: `changefeed.stage.pts.create.latency`, `changefeed.stage.pts.manage.latency`, `changefeed.stage.pts.manage_error.latency`, to measure the performance of managing protected ts records. [#148471][#148471] - Added an OTLP log sink that exports logs in OpenTelemetry Protocol format over gRPC to compatible targets such as `otel-collector`, Datadog, and Loki. [#148525][#148525] - Kafka v2 changefeed sinks now support a cluster setting that enables detailed error logging for messages exceeding Kafka v2 size limit. [#148753][#148753] - The CockroachDB spatial libraries now rely on GEOS 3.12 instead of GEOS 3.11. [#148859][#148859] -- the changefeeds with protobuf - format now supports the resolved option for emitting - resolved timestamps. [#149622][#149622] +- Changefeeds with the protobuf format now support the `resolved` option for emitting resolved timestamps. [#149622][#149622] - Changefeeds using the protobuf format now support wrapped envelopes in kafka sinks [#149696][#149696] - Restore jobs now log errors on retry to @@ -99,55 +66,42 @@ Release Date: September 16, 2025 - Added HTTP mode to the OTLP sink, allowing logs to be exported to OpenTelemetry Protocol (OTLP) targets over HTTP. This enhancement enables agentless deployments, where logs can be sent directly to supported targets like Datadog or Grafana, without requiring an intermediary such as the OpenTelemetry Collector or Datadog Agent. [#150655][#150655] - Added `headers` configuration option to OTLP log sink. [#150696][#150696] - CockroachDB spatial libraries now rely on GEOS 3.13 instead of GEOS 3.12. [#151186][#151186] +- Reduced the maximum backoff for changefeed retries from 10 minutes to 1 minute, which results in faster recovery from transient errors. [#146448][#146448] +- Added `changefeed.sink_backpressure_nanos` metric to track time spent waiting for quota when emitting to the sink. [#150666][#150666] +- To improve changefeed performance, the session variable `create_table_with_schema_locked` is enabled by default. This means all new tables are created with the `schema_locked` storage parameter. This setting must be explicitly unset for explicit transactions or for schema changes that do not support automatic disabling (e.g., `ALTER TABLE ... SET LOCALITY`). [#148576][#148576] +- The download phase of restore operations now will retry downloads before giving up, when faced with an error. [#148821][#148821] +- Fixed a memory accounting issue in the client certificate cache that caused multiple allocations to be reported for the same certificate. The cache now accurately tracks memory usage and includes a safeguard to prevent it from negatively affecting SQL operations. [#151041][#151041] +- Fixed a rare bug in restore where an object storage error on restore start could cause restore to report success without creating the restored tables or databases. [#151148][#151148] +- Tuned S3 client retry behavior to be more reliable in the presence of correlated errors. [#151817][#151817] -

{{ site.data.products.enterprise }} edition changes

+

SQL language changes

-- Reduced the maximum backoff for changefeed retries from 10 minutes to 1 minute, which results in faster recovery from transient errors. [#146448][#146448] -- Added a new PROVISIONSRC role option. +- Implemented the `levenshtein_less_equal(string, string, int)` and `levenshtein_less_equal(string, string, int, int, int, int)` built-in functions, which calculate the Levenshtein distance between two strings. [#104649][#104649] +- The owner of a database can now set default session variables per database using the `ALTER ROLE ALL IN DATABASE ... SET` or `ALTER DATABASE ... SET` commands. [#130547][#130547] +- Added support for camelCase parameter names + (e.g., `SharedAccessKeyName`) in Azure Event Hub Kafka sink + configuration [#144735][#144735] +- Added a new `PROVISIONSRC` role option. This role option should be prefixed with the HBA auth method for provisioning, - i.e. `ldap` followed by the IDP uri, for example `ldap:ldap.example.com`. This - is intended to be used only internally for user provisioning and is supposed - to be view-only when checking set role options for a user. [#147272][#147272] + i.e. `ldap` followed by the IDP URI, for example `ldap:ldap.example.com`. This + is intended to be used only internally for user provisioning and should be + view-only when checking set role options for a user. [#147272][#147272] - Added a new cluster setting - `server.provisioning.ldap.enabled` which can be set to true to conditionally - enable user provisioning during sql cluster authentication. The user - authenticates with the LDAP server and CRDB will only validate identity lookup + `server.provisioning.ldap.enabled` which can be set to `true` to conditionally + enable user provisioning during SQL cluster authentication. The user + authenticates with the LDAP server and CockroachDB will only validate identity lookup on IDP was successful for provisioning the user. All roles created thus will be - privileged to perform sql authentication and will mandatory have a role option - for PROVISIONSRC set to `ldap:`. Any group roles that are to be - assigned via ldap authorization must be pre created prior to the authentication + privileged to perform SQL authentication and will mandatory have a role option + for `PROVISIONSRC` set to `ldap:`. Any group roles that are to be + assigned via LDAP authorization must be pre created prior to the authentication start. [#148200][#148200] -- The SHOW ROLES command now includes a column - that shows the estimated time that the user last logged in. Additionally, - the `options` column is now returned as an array of strings, rather than as - a single comma-separated string. - - The data can be queried with a query such as: - ``` - root@localhost:26257/defaultdb> select * from [show roles] as r WHERE EXISTS (SELECT 1 FROM unnest(r.options) AS m(option) where option like 'SUBJECT=cn%'); - username | options | member_of | estimated_last_login_time - ------------+--------------------------------+-----------+---------------------------- - testuser | {NOLOGIN,SUBJECT=cn=testuser} | {admin} | NULL - (1 row) - ``` [#148532][#148532] - Added the ability to automatically provision users authenticating via JWT. This is controlled by the new - cluster setting `security.provisioning.jwt.enabled`. When set to true, + cluster setting `security.provisioning.jwt.enabled`. When set to `true`, a successful JWT authentication for a non-existent user will create that user in CockroachDB. The newly created role will have the `PROVISIONSRC` role option set to `jwt_token:`, identifying the token's issuer as the source of the provisioned user. [#149415][#149415] -- `SYSTEM` privileges are inherited in read-only mode in standby Physical Cluster Replication (PCR) clusters. [#149708][#149708] -- Added changefeed.sink_backpressure_nanos - metric to track time spent waiting for quota when emitting to the sink. [#150666][#150666] - -

SQL language changes

- -- Implemented the `levenshtein_less_equal(string, string, int)` and `levenshtein_less_equal(string, string, int, int, int, int)` built-in functions, which calculate the Levenshtein distance between two strings. [#104649][#104649] -- The owner of a database can now set default session variables per database using the `ALTER ROLE ALL IN DATABASE ... SET` or `ALTER DATABASE ... SET` commands. [#130547][#130547] -- Added support for camelCase parameter names - (e.g., "SharedAccessKeyName") in Azure Event Hub Kafka sink - configuration [#144735][#144735] - The `CITEXT` data type is now supported, enabling case-insensitive comparisons for `CITEXT` columns. Internally, `CITEXT` is equivalent to using the undetermined level 2 collation `und-u-ks-level2`. For example, under `CITEXT`, the expression `'test' = 'TEST'` returns `TRUE`. [#147864][#147864] - The functionality provided by session variable `enforce_home_region_follower_reads_enabled` was deprecated in v24.2.4 and is now removed. (The variable itself remains for backward compatibility but has no effect.) Note that the related session variable `enforce_home_region` is **not** deprecated and still functions normally. [#148314][#148314] - Added support for automatically determining the region column for a `REGIONAL BY ROW` table using a foreign key constraint. The foreign key is specified by setting a new table storage parameter `infer_rbr_region_col_using_constraint`, and must contain the region column. This can be useful for applications that are unable to guarantee that a child row is inserted or updated from the same region as the matching parent row. [#148540][#148540] @@ -156,9 +110,9 @@ Release Date: September 16, 2025 - Added the `has_system_privilege` builtin function, which can be used to check if a user has the given system privilege. [#149051][#149051] - Updated schema change job status messages to be more user-friendly and descriptive, instead of using internal schema change architecture terminology. [#149096][#149096] - The logical cluster now uses an external connection and automatically updates its configuration when that connection changes. [#149261][#149261] -- Fix a bug where extra quotes or escaped +- Fixed a bug where extra quotes or escaped quote characters would be added to topic names in changefeeds. - Can be turned off by setting feature.changefeed.bare_table_names to + Can be turned off by setting `feature.changefeed.bare_table_names` to false. [#149438][#149438] - The users with the role option `PROVISIONSRC` assigned to them will be unable to change their own password overriding any @@ -178,36 +132,8 @@ Release Date: September 16, 2025 Fixes #98610 [#149869][#149869] - The `json ? string`, `json ?& array`, `json ?| array`, and `array && array` operators are now index-accelerated for `INVERTED JOIN` statements if there is an inverted index on the JSON column referenced on the left-hand side of the expression. [#149898][#149898] -- The column for `estimated_last_login_time` in - `system.users` will be updated with the TIMESTAMP of user login post successful - authentication. The `SHOW users` view will now show the updated value. - - ``` - root@localhost:26257/defaultdb> SHOW users; - username | options | member_of | estimated_last_login_time - -----------------+-------------------------------------------------------------------------------------+-----------+-------------------------------- - admin | {} | {} | NULL - root | {} | {admin} | 2025-07-13 11:51:29.406216+00 - sourav.sarangi | {} | {} | NULL - (3 rows) - - NOTICE: estimated_last_login_time is computed on a best effort basis; it is not guaranteed to capture every login event - ``` [#150105][#150105] -- The column for `estimated_last_login_time` in - `system.users` will be updated with the TIMESTAMP of user login post successful - authentication. The `SHOW users` view will now show the updated value. - - ``` - root@localhost:26257/defaultdb> SHOW users; - username | options | member_of | estimated_last_login_time - -----------------+-------------------------------------------------------------------------------------+-----------+-------------------------------- - admin | {} | {} | NULL - root | {} | {admin} | 2025-07-13 11:51:29.406216+00 - sourav.sarangi | {} | {} | NULL - (3 rows) - - NOTICE: estimated_last_login_time is computed on a best effort basis; it is not guaranteed to capture every login event - ``` [#150375][#150375] +- The `SHOW ROLES` and `SHOW USERS` commands now include an `estimated_last_login_time` column that displays the estimated timestamp of when each user last authenticated to the database. This column shows `NULL` for users who have never logged in, and for existing users after upgrading to v25.3 until their next login. The tracking is performed on a best-effort basis and may not capture every login event. [#150105][#150105] +- The `options` column in the output of `SHOW ROLES` and `SHOW USERS` is now returned as an array of strings (e.g., `{NOLOGIN,CREATEDB}`) rather than as a single comma-separated string. This enables more efficient querying of role options using array functions like `unnest()`. For example: `SELECT * FROM [SHOW ROLES] AS r WHERE EXISTS (SELECT 1 FROM unnest(r.options) AS m(option) WHERE option LIKE 'SUBJECT=cn%');` [#148532][#148532] - The session setting `optimizer_min_row_count`, which sets a lower bound on row count estimates for relational expressions during query planning, is now set to `1` by default. [#150376][#150376] - `LTREE` is now supported with ancestry operators and with the `concat` operator. Specifically, CockroachDB now allows `ltree @> ltree`, `ltree[] @> ltree`, `ltree @> ltree[]`, `ltree <@ ltree`, `ltree[] <@ ltree`, and `ltree <@ ltree[]` binary comparisons, as well as `ltree[] ?@> ltree`, `ltree[] ?<@ ltree`, and `ltree || ltree` binary operations. The `?@>` and `?<@` are new binary operators that return the first ltree (or `NULL`) that is an ancestor or descendant of the right ltree argument in the array. [#150598][#150598] - Clusters utilizing cluster virtualization, such as those running Physical Cluster Replication (PCR), apply the same admission control (AC) pacing to various bulk operations used by clusters that are not running with cluster virtualization. [#150633][#150633] @@ -225,7 +151,7 @@ Release Date: September 16, 2025

Operational changes

-- The /health/restart_safety endpoint indicates +- The `/health/restart_safety` endpoint indicates when it is unsafe to terminate a node. [#142930][#142930] - Added the following cluster settings for configuring blob file rewrite compactions: `storage.value_separation.rewrite_minimum_age` and `storage.value_separation.compaction_garbage_threshold`. [#148782][#148782] - The default value of `server.mem_profile.total_dump_size_limit` (which controls how much space can be used by automatically collected heap profiles) has been increased from 256MiB to 512MiB. [#148848][#148848] @@ -234,22 +160,24 @@ Release Date: September 16, 2025 - A structured event is now logged to the `SQL_SCHEMA` channel when the `REFRESH MATERIALIZED VIEW` statement is executed. [#149153][#149153] - Removed the `storage.columnar_blocks.enabled` cluster setting; columnar blocks are always enabled. [#149371][#149371] - A new feature is now available that automatically captures Go execution traces on a scheduled interval. This feature incurs a performance penalty and is generally intended for use under the guidance of Cockroach Labs Support. It can be configured using the following cluster settings: - -- `obs.execution_tracer.interval`: Enables the tracer and sets the interval for capturing traces. Set to a value greater than 0 to activate. -- `obs.execution_tracer.duration`: Specifies the duration for each captured trace. -- `obs.execution_tracer.total_dump_size_limit`: Sets the maximum disk space allowed for storing execution traces. Older traces are automatically deleted when this limit is reached. [#149373][#149373] -- Introduced a cluster setting, `sql.stats.error_on_concurrent_create_stats.enabled`, which modifies how CockroachDB reacts to concurrent auto stats jobs. The default, `true`, maintains the previous behavior. Setting `sql.stats.error_on_concurrent_create_stats.enabled` to `false` will cause the concurrent auto stats job to be skipped with just a log entry and no increased error counters. [#149538][#149538] + - `obs.execution_tracer.interval`: Enables the tracer and sets the interval for capturing traces. Set to a value greater than 0 to activate. + - `obs.execution_tracer.duration`: Specifies the duration for each captured trace. + - `obs.execution_tracer.total_dump_size_limit`: Sets the maximum disk space allowed for storing execution traces. Older traces are automatically deleted when this limit is reached. [#149373][#149373] +- Introduced the cluster setting `sql.stats.error_on_concurrent_create_stats.enabled`, which modifies how CockroachDB reacts to concurrent auto stats jobs. The default, `true`, maintains the previous behavior. Setting `sql.stats.error_on_concurrent_create_stats.enabled` to `false` will cause the concurrent auto stats job to be skipped with just a log entry and no increased error counters. [#149538][#149538] - The value of `sql.stats.error_on_concurrent_create_stats.enabled` now defaults to `false`, suppressing error counters for auto stats jobs that fail due to concurrent stats jobs in progress. [#149848][#149848] - Updated TTL job replanning to be less sensitive by focusing specifically on detecting when nodes become unavailable rather than reacting to all plan differences. The cluster setting `sql.ttl.replan_flow_threshold` may have been set to `0` to work around the TTL replanner being too sensitive; this fix will alleviate that and any instance that had set `replan_flow_threshold` to `0` can be reset back to the default. [#150771][#150771] -- `auth.ldap.conn.latency.internal` has been added to denote the internal authentication time for ldap auth method. [#151105][#151105] +- Added `auth.ldap.conn.latency.internal` metric to denote the internal authentication time for LDAP auth method. [#151105][#151105] - Introduced two new logging channels: `KV_EXEC` and `CHANGEFEED`. The `KV_EXEC` channel is intended for KV events that are currently logged to the `KV_DISTRIBUTION` channel. The `CHANGEFEED` channel is intended for changefeed-related events that are currently logged to the `TELEMETRY` channel. This change does not include logic to move existing logs to the new channels. [#151692][#151692] - Restricted access to internal tables in the `crdb_internal` schema. Only a predefined allowlist of internal objects is accessible when the session variable `allow_unsafe_internals` is enabled or when the caller is internal. [#151804][#151804] - In v26.1, changefeed events will be logged to the `CHANGEFEED` logging channel instead of `TELEMETRY`. To test the impact of this change before upgrading, set the cluster setting `log.channel_compatibility_mode.enabled` to `false`. This redirects changefeed logs to the `CHANGEFEED` channel and should be tested only in non-production environments. [#151807][#151807] - In v26.1, SQL performance events will be logged to the `SQL_EXEC` channel instead of the `SQL_PERF` and `SQL_INTERNAL_PERF` channels. To test the impact of this change, you can set the new cluster setting `log.channel_compatibility_mode.enabled` to `false`. This redirects SQL performance logs to the `SQL_EXEC` channel. This setting should not be used in production environments, as it may affect downstream logging pipelines. [#151827][#151827] -- Restricted access to all `crdb_internal` built-ins unless the session variable `allow_unsafe_internals` is set to true, or the caller is internal. [#151887][#151887] +- Restricted access to all `crdb_internal` built-ins unless the session variable `allow_unsafe_internals` is set to `true`, or the caller is internal. [#151887][#151887] - In v26.1, `sampled_query` and `sampled_transaction` events will move from the `TELEMETRY` channel to the `SQL_EXEC` logging channel. To test for potential logging pipeline impacts of these changes, set `log.channel_compatibility_mode.enabled` to `false`. Avoid testing in production, as this setting changes live log behavior. [#151949][#151949] - Delegate queries (such as `SHOW DATABASES`) are now excluded from unsafe SQL checks that restrict access to the `system` database and `crdb_internal` schema. This change ensures that these commands continue to function even when access to internal components is otherwise restricted. [#152084][#152084] -- the PCR reader tenant is always destroyed on cutover [#152509][#152509] +- The Physical Cluster Replication (PCR) reader tenant is always destroyed on cutover [#152509][#152509] +- `SYSTEM` privileges are inherited in read-only mode in standby Physical Cluster Replication (PCR) clusters. [#149708][#149708] +- You can now output transaction traces to the logs in Jaeger-compatible JSON format. This is controlled by the `sql.trace.txn.jaeger_json_output.enabled` cluster setting, which is disabled by default. When enabled, traces triggered by probabilistic sampling or statement latency thresholds will be formatted for easier ingestion by tools that support the Jaeger tracing format. [#151414][#151414] +- You can now exclude internal transactions from probabilistic transaction tracing and latency-based logging by setting the `sql.trace.txn.include_internal.enabled` cluster setting to false. This setting is enabled by default to preserve the current behavior, but disabling it is recommended when debugging customer workloads to reduce noise in trace output. [#151433][#151433]

Command-line changes

@@ -259,11 +187,7 @@ Release Date: September 16, 2025 - Updated the internals of `cockroach workload` so there is one primary CLI entry point for workload generation, wiring together DDL parsing, schema construction, generator factory, and output routines. [#150321][#150321] - Updated the redaction policy for cluster settings in `debug zip` output. All "sensitive" settings are now redacted in all debug zips, whether or not redaction is explicitly requested. In redacted debug zips, both "sensitive" and "non-reportable" settings are redacted. This replaces the previous behavior, which redacted all string-type settings only in redacted debug zips. [#150364][#150364] - Added SQL workload extraction and rewriting support to the internals of `cockroach workload`, enabling placeholder‐driven data-generation workflows from CockroachDB debug logs. [#150614][#150614] -- Update the help text for the --database and --url - CLI flags to document support for virtual cluster syntax. The --database flag - now shows examples of both simple database names and the - cluster:virtual-cluster/database format. The --url flag examples now include - the virtual cluster syntax in PostgreSQL connection URLs. [#150624][#150624] +- Updated the help text for the `--database` and `--url` CLI flags to document support for virtual cluster syntax. The `--database` flag now shows examples of both simple database names and the `cluster:virtual-cluster/database` format. The `--url` flag examples now include the virtual cluster syntax in PostgreSQL connection URLs. [#150624][#150624] - Updated `cockroach workload` internals to read init‑time schema and SQL artifacts and run SQL workloads with placeholder‑driven data generation. [#150836][#150836] - Added support for simple `CHECK` constraints and bit/bytes column generators to `cockroach workload`'s workload generator. [#150926][#150926] - Added a new file, `cluster_settings_history.txt`, to debug zips. This file contains a history of cluster setting changes based on the system event log table. The history is only available while the corresponding events remain in the table. Sensitive settings are always redacted, and non-reportable settings are redacted when the debug zip is generated with redaction enabled. [#151066][#151066] @@ -277,12 +201,7 @@ Release Date: September 16, 2025

Bug fixes

- Fixed an issue where hot range logging for virtual clusters omitted some hot ranges. [#143775][#143775] -- Remove unncessary Kafka topic creation that would - could cause changefeed start up to fail when using - changefeed.new_kafka_sink_enabled=false. - - Fixes: #128973 - Epic: CRDB-41784 [#146476][#146476] +- Removed unnecessary Kafka topic creation that could cause changefeed startup to fail when using `changefeed.new_kafka_sink_enabled=false`. [#146476][#146476] - Fixed a bug that would cause a `CALL` statement executed via a portal in the extended wire protocol to result in an error like `unknown portal ""` if the stored procedure contained `COMMIT` or `ROLLBACK` statements. The bug had existed since PL/pgSQL transaction control statements were introduced in v24.1. The fix is off by default in versions prior to v25.3. [#147923][#147923] - Fixed a bug present since v24.1 where the allocator could make rebalancing decisions based on stale data, failing to account for @@ -318,12 +237,12 @@ Release Date: September 16, 2025 memberships did not correspond to any existing roles in the database. The login will now succeed, and no roles will be granted or revoked in this scenario. [#149638][#149638] -- Fixed a slow memory leak that was introduced in v25.1.8, v25.2.1, v25.2.2, and v25.3 betas. The leak would accumulate whenever a node executed a part of the distributed plan (the gateway node of the plan was not affected), and could only be mitigated by restarting the node. [#149800][#149800] +- Fixed a slow memory leak that was introduced in v25.1.8, v25.2.1, v25.2.2, and v25.3 betas. The leak would accumulate whenever a node executed a part of the distributed plan (although the gateway node of the plan was not affected), and could only be mitigated by restarting the node. [#149800][#149800] - Attempting to create a vector index with the legacy schema changer will now fail gracefully instead of crashing the node. [#149812][#149812] - Improved split and scatter behavior for `CREATE INDEX` when statistics are available for key columns. [#150238][#150238] - Fixed a bug that was preventing the row-level TTL table storage parameters (e.g., `ttl_select_batch_size`, `ttl_delete_batch_size`, `ttl_delete_rate_limit`, `ttl_select_rate_limit`) from being set to `0`, which is their default value. [#150253][#150253] - Fixed an issue where discarding zone configs on sequences did not actually remove the configuration. [#150255][#150255] -- A bug where modifying a changefeed with ALTER CHANGEFEED +- Fixed a bug where modifying a changefeed with `ALTER CHANGEFEED` that either unset or left the `gc_protect_expires_after` option unset would cause the changefeed's max PTS age to become unbounded instead of being set to the default value configured by the `changefeed.protect_timestamp.max_age` @@ -373,25 +292,7 @@ Release Date: September 16, 2025

Build changes

-- Upgrade to Go 1.24.5 [#150870][#150870] -- Revert Go version back to 1.23.7. - Epic: none [#152023][#152023] - -

Miscellaneous

- -- To improve changefeed performance, the session variable `create_table_with_schema_locked` is enabled by default. This means all new tables are created with the `schema_locked` storage parameter. This setting must be explicitly unset for explicit transactions or for schema changes that do not support automatic disabling (e.g., `ALTER TABLE ... SET LOCALITY`). [#148576][#148576] -- Download phase of fast restore now will retry downloads - before giving up. [#148821][#148821] -- Fixed a memory accounting issue in the client certificate cache that caused multiple allocations to be reported for the same certificate. The cache now accurately tracks memory usage and includes a safeguard to prevent it from negatively affecting SQL operations. [#151041][#151041] -- None [#151110][#151110] -- Fixes a rare bug in restore where an object storage on - restore start could cause restore to report success without creating the - restored tables or databases. [#151148][#151148] -- You can now output transaction traces to the logs in Jaeger-compatible JSON format. This is controlled by the `sql.trace.txn.jaeger_json_output.enabled` cluster setting, which is disabled by default. When enabled, traces triggered by probabilistic sampling or statement latency thresholds will be formatted for easier ingestion by tools that support the Jaeger tracing format. [#151414][#151414] -- You can now exclude internal transactions from probabilistic transaction tracing and latency-based logging by setting the `sql.trace.txn.include_internal.enabled` cluster setting to false. This setting is enabled by default to preserve the current behavior, but disabling it is recommended when debugging customer workloads to reduce noise in trace output. [#151433][#151433] -- Tunes S3 client retry behavior to be more reliable in the - presence of correlated errors. [#151817][#151817] -- Upgrade to Go 1.23.12 [#152207][#152207] +- Upgraded to Go 1.23.12 [#152207][#152207] [#152399]: https://github.com/cockroachdb/cockroach/pull/152399