From f6b825dbeb68e6dbdb41e09e65ea6ba5136c9972 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Fri, 21 Nov 2025 16:08:26 +0000 Subject: [PATCH 01/21] Update release notes for v26.1-v26.1.0-alpha.1 --- src/current/_data/versions.csv | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/src/current/_data/versions.csv b/src/current/_data/versions.csv index 2f0975cc76b..9375e139142 100644 --- a/src/current/_data/versions.csv +++ b/src/current/_data/versions.csv @@ -1,22 +1,2 @@ major_version,release_date,maint_supp_exp_date,asst_supp_exp_date,last_ga_patch,initial_lts_patch,initial_lts_release_date,lts_maint_supp_exp_date,lts_asst_supp_exp_date,previous_version,crdb_branch_name,binary_removal_date -v1.0,2017-05-10,2018-05-10,2018-11-10,N/A,N/A,N/A,N/A,N/A,N/A,release-1.0,2024-01-01 -v1.1,2017-10-12,2018-10-12,2019-04-12,N/A,N/A,N/A,N/A,N/A,v1.0,release-1.1,2024-01-01 -v2.0,2018-04-04,2019-04-04,2019-10-04,N/A,N/A,N/A,N/A,N/A,v1.1,release-2.0,2024-01-01 -v2.1,2018-10-30,2019-10-30,2020-04-30,N/A,N/A,N/A,N/A,N/A,v2.0,release-2.1,2024-01-01 -v19.1,2019-04-30,2020-04-30,2020-10-30,N/A,N/A,N/A,N/A,N/A,v2.1,release-19.1,2024-01-01 -v19.2,2019-11-12,2020-11-12,2021-05-12,N/A,N/A,N/A,N/A,N/A,v19.1,release-19.2,2024-01-01 -v20.1,2020-05-12,2021-05-12,2021-11-12,N/A,N/A,N/A,N/A,N/A,v19.1,release-20.1,2025-05-12 -v20.2,2020-11-10,2021-11-10,2022-05-10,N/A,N/A,N/A,N/A,N/A,v20.1,release-20.2,2025-05-12 -v21.1,2021-05-18,2022-05-18,2022-11-18,N/A,N/A,N/A,N/A,N/A,v20.2,release-21.1,2025-05-18 -v21.2,2021-11-16,2022-11-16,2023-05-16,N/A,N/A,N/A,N/A,N/A,v21.1,release-21.2,2025-11-16 -v22.1,2022-05-24,2023-05-24,2023-11-24,N/A,N/A,N/A,N/A,N/A,v21.2,release-22.1,2026-05-24 -v22.2,2022-12-05,2023-12-05,2024-06-05,N/A,N/A,N/A,N/A,N/A,v22.1,release-22.2,2026-12-05 -v23.1,2023-05-15,2024-05-15,2024-11-15,23.1.11,23.1.12,2023-11-13,2024-11-13,2025-11-13,v22.2,release-23.1,2027-05-15 -v23.2,2024-02-05,2025-02-05,2025-08-05,23.2.6,23.2.7,2024-07-08,2025-07-08,2026-07-08,v23.1,release-23.2,2028-02-05 -v24.1,2024-05-20,2025-05-20,2025-11-20,24.1.5,24.1.6,2024-10-21,2025-10-21,2026-10-21,v23.2,release-24.1,2028-05-20 -v24.2,2024-08-12,2025-02-12,N/A,N/A,N/A,N/A,N/A,N/A,v24.1,release-24.2,2028-08-12 -v24.3,2024-11-18,2025-11-18,2026-05-18,24.3.11,24.3.12,2025-05-05,2026-05-05,2027-05-05,v24.2,release-24.3,2028-11-18 -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,2025-11-03,2026-11-03,2027-05-03,N/A,N/A,N/A,N/A,N/A,v25.3,release-25.4,2029-11-03 \ No newline at end of file +v26.1,N/A,N/A,N/A,N/A,N/A,N/A,N/A,N/A,v25.4,master,N/A From 5438e2a46afd85b21f24f0d6602be927cfedc4bc Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Fri, 21 Nov 2025 16:08:26 +0000 Subject: [PATCH 02/21] Update release notes for v26.1-v26.1.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 907d94f9d65..c58960e1d4b 100644 --- a/src/current/_data/releases.yml +++ b/src/current/_data/releases.yml @@ -9956,3 +9956,30 @@ docker_arm_limited_access: false source: true previous_release: v24.3.22 + + +- release_name: v26.1.0-alpha.1 + major_version: v26.1 + release_date: '2025-12-03' + release_type: Testing + go_version: go1.25.3 + sha: d90b48fdc3077318799afd2939837c79289156f4 + 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 f0ac75d4362c87f15599d26fd8a4b37bd9ddb3dd Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Fri, 21 Nov 2025 16:08:27 +0000 Subject: [PATCH 03/21] Update release notes for v26.1-v26.1.0-alpha.1 --- .../releases/v26.1/v26.1.0-alpha.1.md | 474 ++++++++++++++++++ 1 file changed, 474 insertions(+) create mode 100644 src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md diff --git a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md new file mode 100644 index 00000000000..3a637f5f4d8 --- /dev/null +++ b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md @@ -0,0 +1,474 @@ +## v26.1.0-alpha.1 + +Release Date: December 3, 2025 + +{% include releases/new-release-downloads-docker-image.md release=include.release %} + +

General changes

+ +- Docker images now use UBI 10 as the base image. [#153990][#153990] +- The changefeed bulk + delivery setting was made optional. [#154870][#154870] + +

SQL language changes

+ +- Index acceleration is now supported for a subset of `jsonb_path_exists` filters used in the `WHERE` clause. + +Given `jsonb_path_exists(json_obj, json_path_expression)`, inverted indexes are supported only when the `json_path_expression` matches one of the following patterns: + +- The `json_path_expression` must not be in STRICT mode. +- Keychain mode: `$. [key|wildcard].[key|wildcard]...`. In this mode, a prefix span is generated for the inverted expression. +- Filter with end value mode, using an equality check: `$. [key|wildcard]? (@.[key|wildcard].[key|wildcard]... == [string|number|null|boolean])`. In this mode, since the end value is fixed, a single-value span is generated. + +The following cases are not supported: + +- `$` +- `$[*]` +- `$.a.b.c == 12`, `$.a.b.c > 12`, or `$.a.b.c < 12` (operation expressions) +- `$.a.b ? (@.a > 10)` (filter with an inequality check) [#150793][#150793] +- A new field is added to SHOW CHANGEFEED JOBS. + database_name gives the name of the database that a db-level changefeed + is on. For a table-level changefeed, it will be null. + + SHOW CHANGEFEED JOBS field full_table_names is changed for db-level + changefeeds. By default, the list of watched tables in full_table_names + will be empty for a db-level changefeed, giving the total number of + watched tables. A new option WITH WATCHED_TABLES is added that will make + SHOW CHANGEFEED JOBS return the full list of target tables, like with + non-db level changefeeds. [#151131][#151131] +- Users can now manually create single-column partial statistics on boolean predicate expressions that can become simple index scans. These statistics can be created by adding a constraining `WHERE` expression to `CREATE STATISTICS`. + + For example: + + ~~~ sql + CREATE TABLE t (a INT PRIMARY KEY); + INSERT INTO t VALUES (1), (2), (3), (4), (5); + CREATE STATISTICS constrained_stat ON a FROM t WHERE a > 2; + ~~~ [#152469][#152469] +- Added a clamp for the estimated selectivity of + inequality predicates that are unbounded on one or both sides (ex: `x > 5`). + This reduces the chances of a catastrophic understimate causing the optimizer + to choose a poorly-constrained scan. The new logic is off by default, gated by + the session setting `optimizer_clamp_inequality_selectivity`. [#153067][#153067] +- Added a clamp for row-count estimates over very + large tables so that the optimizer assumes that at least one distinct value + will be scanned. This reduces the chances of a catastrophic underestimate. + The new logic is off by default, gated by a session setting + `optimizer_clamp_low_histogram_selectivity`. [#153067][#153067] +- The optimizer can now use table statistics + that merge the latest full statistic with all newer partial statistics, + including those over arbitrary constraints over a single span. [#153419][#153419] +- Added the `sql.catalog.allow_leased_descriptors.enabled` cluster setting, which is false by default. When set to true, queries that access the `pg_catalog` or `information_schema` can use cached leased descriptors to populate the data in those tables, with the tradeoff that some of the data could be stale. [#154051][#154051] +- Added a default-off cluster setting + (`sql.log.scan_row_count_misestimate.enabled`) that enables logging a + warning on the gateway node when optimizer estimates for scans are + inaccurate. The log message includes the table and index being scanned, + the estimated and actual row counts, the time since the last table stats + collection, and the table's estimated staleness. [#154370][#154370] +- Fixed a bug where the results of `ALTER SEQUENCE`'s increment and `SELECT nextval()` operations were not as expected. The value of a sequence after an `ALTER SEQUENCE` statement has executed on it is now consistent with a sequence created with those values. [#154489][#154489] +- Add changefeed setting + range_distribution_strategy with values 'default' or 'balanced_simple' + (e.g. CREATE CHANGEFEED FOR x into 'null://' WITH + range_distribution_strategy='balanced_simple'). + This new per-changefeed setting will override the cluster setting + changefeed.default_range_distribution_strategy where both exist. [#154744][#154744] +- Added the `INSPECT` command, which runs consistency validation check jobs against tables or databases and specified indexes. [#154873][#154873] +- Added support for collecting partial + statistics when the given `WHERE` clause implies the predicate of a + partial index with the requested column as the first key column. For + example: + + ``` + CREATE TABLE t (a INT, INDEX idx_partial (a) WHERE a > 5); + CREATE STATISTICS pstat ON a FROM t WHERE a > 7; + ``` [#154892][#154892] +- The `row_security` session variable now + behaves like in postgres, allowing users to detect when RLS is applied. [#155110][#155110] +- Added the + bulkio.index_backfill.vector_merge_batch_size cluster setting to control + how many vectors to merge into a vector index per transaction during + create operations. By default, this defaults to 3. [#155284][#155284] +- Changes scan misestimate logging gated behind + `sql.log.scan_row_count_misestimate.enabled` to use structured logging + including the table and index being scanned, the estimated and actual + row counts, the time since the last table stats collection, and the + table's estimated staleness. [#155454][#155454] +- The `EXPERIMENTAL SCRUB` command is + deprecated. The `INSPECT` command should be used for data consistency + validation. [#155485][#155485] +- Vector indexing is now enabled by default. [#155536][#155536] +- `INSPECT` supports a `DETACHED` option to run the operation without waiting for it. [#155774][#155774] +- `ALTER TABLE ... DROP STORED` statements are now executed internally by the declarative schema changer. [#155778][#155778] +- Added sql.statements.rows_read.count metric + that counts the number of index rows read by SQL statements. [#155820][#155820] +- Added EXPLAIN (FINGERPRINT) statement that + returns normalized statement fingerprints with constants replaced by + underscores. + + 🤖 Generated with [Claude Code](https://claude.ai/code) + + Co-Authored-By: Claude [#156152][#156152] +- This release introduces two new settings to + control the use of canary statistics in query planning: + 1. Cluster setting `sql.stats.canary_fraction` (float, range [0, 1], + default: 0): + Controls what fraction of queries use "canary statistics" (newly + collected stats within their canary window) versus "stable statistics" + (previously proven stats). For example, a value of 0.2 means 20% of + queries will use canary stats while 80% use stable stats. The selection + is atomic per query: if a query is chosen for canary evaluation, it + uses canary statistics for ALL tables it references (where available). + A query never uses a mix of canary and stable statistics. + 2. Session variable `canary_stats_mode` (enum: {auto, off, on}, + default: auto): + - `on`: All queries in the session use canary stats for planning + - `off`: All queries in the session use stable stats for planning + - `auto`: The system decides based on `sql.stats.canary_fraction` for + each query execution [#156307][#156307] +- A new table storage parameter + `sql_stats_canary_window` has been introduced to enable gradual rollout + of newly collected table statistics. It takes a duration string as the + value. When set with a positive duration, the new statistics remain in + a "canary" state for the specified duration before being promoted to + stable. This allows for controlled exposure and intervention + opportunities before statistics are fully deployed across all queries. [#156307][#156307] +- We have introduced the "SHOW FINGERPRINTS FOR + TABLE" SQL command, which produces a FNV hash of each index a table. FNV + is used here for performance reasons. [#156600][#156600] +- The `optimizer_clamp_low_histogram_selectivity` + and `optimizer_clamp_inequality_selectivity` settings are now on by default. + This will cause the optimizer to assume that at least one distinct value + "passes" each filter in a query, and that open-ended inequality filters + select at least 1/10000 rows from the table. This reduces the chances of + a catastrophic row count underestimate when stats are inaccurate. [#156610][#156610] +- The `ALTER TABLE ... SET/ADD GENERATED AS IDENTITY` statement is supported by the declarative schema changer in v26.1 and later. [#157144][#157144] +- EXPLAIN and EXPLAIN ANALYZE will now display + the number of hints from `system.statement_hints` applied to the executed + statement. [#157160][#157160] +- Plan details in the "statement activity" page + of the DB console now show whether any hints from `system.statement_hints` + werer applied to the statement execution. [#157160][#157160] + +

Operational changes

+ +- The metrics `sql.select.started.count`, `sql.insert.started.count`, `sql.update.started.count`, and `sql.delete.started.count` are now emitted with labels under the common metric name `sql.started.count`, using a `query_type` label to distinguish each operation. [#151946][#151946] +- Added the cluster setting `storage.unhealthy_write_duration` (defaults to 20s), which is used to indicate to the allocator that a store's disk is unhealthy. The cluster setting `kv.allocator.disk_unhealthy_io_overload_score` controls the overload score assigned to a store with an unhealthy disk, where a higher score results in preventing lease or replica transfers to the store, or shedding of leases by the store. The default value of that setting is 0, so the allocator behavior is unaffected. [#153364][#153364] +- In an upcoming release, we're deprecating the + bespoke restore and import event logs. For any customer that relies on those + logs, we can maintain UX parity by plumbing the sql user that owns the + job to the status change event log. [#153889][#153889] +- Two new changefeed metrics for tracking + the max skew between a changefeed's slowest and fastest span/table + have been added. The metrics are gauge metrics with the names + `changefeed.progress_skew.{span,table}`. [#153975][#153975] +- Added the cluster setting `storage.snapshot.recreate_iter_duration` (default 20s), which controls how frequently a long-lived storage engine iterator, backed by an engine snapshot, will be closed and recreated. Currently, it is only used for iterators used in rangefeed catchup scans. [#154412][#154412] +- Added cluster setting `sql.schema.approx_max_object_count` (default: 20,000) to prevent creation of new schema objects when the limit is exceeded. The check uses cached table statistics for performance and is approximate - it may not be immediately accurate until table statistics are updated by the background statistics refreshing job. Clusters that have been running stably with a larger object count should raise the limit or disable the limit by setting the value to 0. In future releases, the default value for this setting will be raised as more CockroachDB features support larger object counts. [#154495][#154495] +- Cleaned up several + redundant and misleading metrics. [#154545][#154545] +- Fix changefeed.parallel_io_pending_rows metric + y-axis label to match the metric's definition. [#154552][#154552] +- Add metric changefeed.parallel_io_workers to + track the number of workers in ParallelIO. [#154552][#154552] +- This change completes the migration of changfeed events, sample query/txn events, sql_perf events into their respective new logging channels. In order to keep using the old channels, users have to set the setting: + `log.channel_compatibility_mode.enabled` to true. [#154670][#154670] +- Successfully completed automatic SQL stats collecton jobs are now automatically purged rather than being retained for the full default job retention period. [#155848][#155848] +- The cluster setting `storage.snapshot.recreate_iter_duration` (default `20s`) controls how frequently a long-lived engine iterator, backed by an engine snapshot, will be closed and recreated. Currently, it is only used for iterators used in rangefeed catchup scans. [#156303][#156303] +- ensure the user can run CREATE LOGICAL REPLICATION + STREAM where the source table has a column with a sequence expression. [#156975][#156975] + +

Command-line changes

+ +- `cockroach workload run` commands now offer + a `--with-changefeed` flag to additionally run a changefeed watching for + writes to the workload's tables. + + Co-authored-by: Steven Danna [#155516][#155516] + +

DB Console changes

+ +- SQL dashboard has been extended to include + more details (mostly about stmts executed within routines and table + statistics collections). [#155203][#155203] +- The background (elastic) store graphs for exhausted duration, and the wait duration histogram, have been separated from the foreground (regular) graphs. [#156801][#156801] + +

Bug fixes

+ +- Previously, CockroachDB would omit execution + statistics in EXPLAIN ANALYZE output for mutation nodes when a RETURNING + clause was used. The bug has been present since before v21.1 and is now fixed. [#145934][#145934] +- CockroachDB could previously encounter "vector + encoder doesn't support ForcePut yet" error when performing COPY command + concurrently with some schema changes. The bug has been present since + before 23.2 and is now fixed. [#148549][#148549] +- Fix a bug in which a Read Committed or Snapshot + isolation transaction may be committed despite returning a non-ambiguous + error. [#152010][#152010] +- Fixed `IMPORT` progress reporting to show the correct row counts when concurrent job state changes occur. [#152745][#152745] +- A bug in type-checking placeholders with + `UNKNOWN` types has been fixed. It could cause incorrect results in some + cases. [#152882][#152882] +- Fixed a bug where `EXPORT CSV` and `EXPORT PARQUET` could cause a node crash when their result rows were used as input to a mutation, such as an `INSERT`, within the same SQL statement. This bug had been present since before v22.1. [#153951][#153951] +- **Idle latency** on the **Transaction Details** page in the DB Console is now reported more accurately. Previously, transactions that used prepared statements (e.g., with placeholders) overcounted idle time, while those that included observer statements (common in the SQL CLI) undercounted it. [#154028][#154028] +- Fixed a bug that caused panics when executing `COPY` into a table with hidden columns and expression indexes. The panic only occurred when the session setting `expect_and_ignore_not_visible_columns_in_copy` was enabled. This bug was introduced with `expect_and_ignore_not_visible_columns_in_copy` in v22.1.0. [#154162][#154162] +- Vector index backfill jobs now correctly report progress in the `SHOW JOBS` output. [#154209][#154209] +- Fixed a bug where `RESTORE` of a database with a `SECONDARY REGION` did not apply the lease preferences for that region. [#154522][#154522] +- A bug where a changefeed could perform + many unnecessary job progress saves during an initial scan has + been fixed. [#154598][#154598] +- Previously, CockroachDB would not log events for + TxnRowsRead and TxnRowsWritten guardrail for internal queries into + SQL_INTERNAL_PERF channel. The bug has been present since 21.2 and + has now been fixed. [#154670][#154670] +- Fixed a bug that caused internal errors for `INSERT .. ON CONFLICT .. DO UPDATE` statements when the target table had both a computed column and a `BEFORE` trigger. This bug was present since triggers were introduced in v24.3.0. [#154789][#154789] +- A bug where a changefeed targeting only a subset + of a table's column families could become stuck has been fixed. [#154802][#154802] +- Previously, CockroachDB would hit an internal + error when performing an inverted join using an inverted index in which + the first prefix column had DESC direction. The bug has been present + since 21.1 and is now fixed. [#154914][#154914] +- Fixed a bug where the `kvflowcontrol.send_queue.scheduled.force_flush` metric was missing a decrement, resulting in a value of greater than `0` even when there was no ongoing force flush. [#154960][#154960] +- Fixed a bug that would cause `WITH READ VIRTUAL CLUSTER` to be ignored if any other options were passed when running `CREATE VIRTUAL CLUSTER FROM REPLICATION`. [#154963][#154963] +- Change assertions about histogram NumRange=0 to + only be checked in test builds. [#155035][#155035] +- Fix a bug in which range counts in table + statistics histograms were not handled correctly after a user-defined + enum type was modified. [#155035][#155035] +- Fixed a bug in the `cockroach node drain` command where draining a node using virtual clusters (such as clusters running Physical Cluster Replication (PCR)) could return before the drain was complete, possibly resulting in shutting down the node while it still had active SQL clients and range leases. [#155063][#155063] +- Fixed a bug where a race condition in range splits could result in a regressed Raft state on a post-split range. This condition was extremely rare, and only observed during internal testing. [#155143][#155143] +- A potential deadlock during vector index + creation has been corrected. [#155192][#155192] +- Fix a bug that would result in a node crash if a + PCR or LDR URI used sslinline=true with sslmode=disable. [#155232][#155232] +- Previously, we could corrupt the first bucket of + table statistic histograms in certain cases, causing underestimates for + range counts near the lower end of the domain, which is now fixed. [#155242][#155242] +- Added proper dependency handling when adding a constraint with `NOT VALID` that references a user-defined function (UDF). [#155404][#155404] +- A bug has been fixed that prevented the query + optimizer from recognizing correlated filters when one of the filtered + columns had a single distinct value across all rows. This bug could + lead to sub-optimal query plans in some cases. [#155407][#155407] +- The username remapping functionality specified by the `server.identity_map.configuration` cluster setting now matches identities and usernames with a case-insensitive comparison. [#155531][#155531] +- Previously, we could have inconsistencies + between the forecasted stats shown in `SHOW STATISTICS ... WITH + FORECAST` and forecasted stats in the stats cache depending on whether + `WITH MERGE` was also specified. We now correctly display all forecasted + stats, regardless of `WITH MERGE`. [#155615][#155615] +- Previously, CockroachDB would crash when + executing EXPLAIN ANALYZE statements with the pausable portal model + (meaning that it was run via the extended PGWire protocol using Parse, + Bind, Execute, when `multiple_active_portals_enabled` session variable + is enabled). The bug has been present since 23.2 and is now fixed. [#155655][#155655] +- `INSPECT` can now be run on tables with indexes that store `REFCURSOR`-typed columns. [#155772][#155772] +- Fixes a bug where `DROP SCHEMA CASCADE` could run into an error with complex references from triggers. [#155777][#155777] +- Fixes a bug where the job responsible for + compacting stats for the SQL activity state could enter an unschedulable + state. + Fixes: #155165 [#155809][#155809] +- Previously, CockroachDB didn't include reads and + writes performed by routines (user-defined functions and stored + procedures) as well as apply joins into `bytes read`, `rows read`, and + `rows written` statement execution statistics, and this is now fixed. + The bug has been present since before 23.2 version. [#155824][#155824] +- `INSPECT` now correctly checks index consistency at the historical timestamp when using `AS OF SYSTEM TIME`, even for spans with no current data. [#155837][#155837] +- The `INSPECT` statement now detects dangling secondary index entries even when the primary index spans contain no data. [#155844][#155844] +- Previously, CockroachDB could encounter an + internal error when replacing (via CREATE OR REPLACE stmt) + a user-defined function or a stored procedure when multiple DEFAULT + expressions are included in the old signature. The bug has been present + since v24.2 (when support for DEFAULT expressions was added) and is now + fixed. [#155867][#155867] +- `INSPECT` no longer fails when checking index consistency on indexes with virtual key columns. Such indexes will now be skipped. [#155956][#155956] +- A bug which could occasionally cause DML on + regional by row tables with unique indexes that don't reference the + region to fail under READ-COMMITTED isolation has been corrected. [#156105][#156105] +- Fixed a bug where Zone Config Extensions incorrectly prevented users from removing non-voting read replicas from multi-region databases. Users can now set `num_replicas` equal to `num_voters` to remove read replicas while maintaining the required number of voting replicas for their database's survival goal. This allows reducing storage costs without compromising availability guarantees. [#156228][#156228] +- A bug has been fix with the `ltree2text` + built-in function in which the returned `TEXT` value was incorrectly + wrapped with single quotes. This bug has been present since the + `ltree2text` built-in was introduced in v25.4.0. [#156485][#156485] +- A bug has been fixed that caused incorrect + results for queries that filter indexed `LTREE` columns with the `<@` + (contained-by) operator. This bug has been present since v25.4.0. + + Co-authored-by: Yahor Yuzefovich + Co-authored-by: Michael Erickson [#156573][#156573] +- Previously, the "atomic" COPY command + (controlled via `copy_from_atomic_enabled`, which is `true` by default) + could encounter RETRY_COMMIT_DEADLINE_EXCEEDED txn errors if the whole + command took 1 minute or more. This was the case only when the + vectorized engine was used for COPY and is now fixed. [#156584][#156584] +- Fix a bug that could result in a transaction encountering + the following assertion failure: + + failed indeterminate commit recovery: programming error: timestamp change by + implicitly committed transaction [#156722][#156722] +- Fix JSON path index acceleration with JSON array + objects. Only 25.4.0 releases are affected. [#156828][#156828] +- Fixed a bug that prevents large `TRUNCATE` operations from completing due to `command is too large` errors. [#156867][#156867] +- Fix bug that could result in incorrect + gossip.callbacks.pending_duration metric value being recorded. [#156939][#156939] +- Fixed a bug where transactions running concurrently with a `GRANT` or `REVOKE` on virtual tables or via external connections could observe modifications incorrectly. [#156949][#156949] +- Previously, CockroachDB could encounter an + internal error when evaluating COPY FROM command in a transaction after + it's been rolled back to a savepoint. The bug has been present since + before 23.2 version and is now fixed. [#156959][#156959] +- A bug has been fixed that could cause internal + errors for queries using generic query plans with `NULL` placeholder + values. [#156962][#156962] +- Fixed a bug that could cause a schema change to be stuck in the reverting state if the `infer_rbr_region_col_using_constraint` storage parameter was being set at the same time as adding a constraint that had a foreign key violation. [#157834][#157834] + +

Performance improvements

+ +- The cost of generic query plans + is now calculated based on worst-case selectivities for placeholder + equalities (e.g., x = $1). This reduces the chance of suboptimal generic + query plans being chosen when `plan_cache_mode=auto`. [#151409][#151409] +- TTL jobs now checkpoint their progress, allowing them to resume without reprocessing already completed spans after a restart. [#152618][#152618] +- Queries with filters in the form + `a LIKE b ESCAPE '\'` are now index-accelerated in some cases which they + were not before. [#155064][#155064] +- The optimizer chooses suboptimal + generic query plans in fewer cases. [#155163][#155163] +- Optimized validation queries during `ALTER PRIMARY KEY` to avoid counting the primary key multiple times. [#156889][#156889] +- This commit teaches the + optimizer to split disjunctions on the same column into unions when + there are multiple partial indexes with different predicates referencing + that column. [#157083][#157083] + +

Build changes

+ +- Upgrade to Go 1.25.3 [#156000][#156000] + +

Miscellaneous

+ +- Adds initial and catchup scan metrics to PCR under + `physical_replication.scanning_ranges` and + `physical_replication.catchup_ranges`. [#153893][#153893] +- Add a default TryTimeout of 60 seconds for Azure Blob + Storage to mitigate occasional stuck operations. + Fixes: #154085 [#154149][#154149] +- LDR now updates the `logical_replication.scanning_ranges` + and `logical_replication.catchup_ranges` metrics during fast initial + scan. [#155274][#155274] +- Add `jobs.registry.max_adoptions_per_loop` cluster setting + to configure maximum number of jobs a node can adopt per adoption loop. [#155385][#155385] +- Admin users now have full access to all external + connections. [#155657][#155657] +- LDR no longer requires the database name to be specified + in the external connection URI when setting up a bidirectional stream. [#155729][#155729] +- Span config reconciliation jobs no longer fail on the + destination after cutover from a PCR stream of a system tenant. [#156003][#156003] +- LDR now supports partial indexes and is tolerant of + mismatched column ids in the source and destination tables. + + Epic: CRDB-51533 [#156935][#156935] +- Display whether build is FIPS-enabled in + `cockroach version` [#157223][#157223] + + +[#154670]: https://github.com/cockroachdb/cockroach/pull/154670 +[#155035]: https://github.com/cockroachdb/cockroach/pull/155035 +[#155824]: https://github.com/cockroachdb/cockroach/pull/155824 +[#153893]: https://github.com/cockroachdb/cockroach/pull/153893 +[#155385]: https://github.com/cockroachdb/cockroach/pull/155385 +[#155778]: https://github.com/cockroachdb/cockroach/pull/155778 +[#154412]: https://github.com/cockroachdb/cockroach/pull/154412 +[#155203]: https://github.com/cockroachdb/cockroach/pull/155203 +[#156003]: https://github.com/cockroachdb/cockroach/pull/156003 +[#154963]: https://github.com/cockroachdb/cockroach/pull/154963 +[#155192]: https://github.com/cockroachdb/cockroach/pull/155192 +[#155867]: https://github.com/cockroachdb/cockroach/pull/155867 +[#152618]: https://github.com/cockroachdb/cockroach/pull/152618 +[#157144]: https://github.com/cockroachdb/cockroach/pull/157144 +[#154545]: https://github.com/cockroachdb/cockroach/pull/154545 +[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 +[#153951]: https://github.com/cockroachdb/cockroach/pull/153951 +[#154744]: https://github.com/cockroachdb/cockroach/pull/154744 +[#156722]: https://github.com/cockroachdb/cockroach/pull/156722 +[#155063]: https://github.com/cockroachdb/cockroach/pull/155063 +[#155516]: https://github.com/cockroachdb/cockroach/pull/155516 +[#154209]: https://github.com/cockroachdb/cockroach/pull/154209 +[#151946]: https://github.com/cockroachdb/cockroach/pull/151946 +[#151409]: https://github.com/cockroachdb/cockroach/pull/151409 +[#154028]: https://github.com/cockroachdb/cockroach/pull/154028 +[#156152]: https://github.com/cockroachdb/cockroach/pull/156152 +[#154495]: https://github.com/cockroachdb/cockroach/pull/154495 +[#156105]: https://github.com/cockroachdb/cockroach/pull/156105 +[#156573]: https://github.com/cockroachdb/cockroach/pull/156573 +[#155242]: https://github.com/cockroachdb/cockroach/pull/155242 +[#156959]: https://github.com/cockroachdb/cockroach/pull/156959 +[#156889]: https://github.com/cockroachdb/cockroach/pull/156889 +[#151131]: https://github.com/cockroachdb/cockroach/pull/151131 +[#154051]: https://github.com/cockroachdb/cockroach/pull/154051 +[#153975]: https://github.com/cockroachdb/cockroach/pull/153975 +[#156584]: https://github.com/cockroachdb/cockroach/pull/156584 +[#156949]: https://github.com/cockroachdb/cockroach/pull/156949 +[#156600]: https://github.com/cockroachdb/cockroach/pull/156600 +[#155407]: https://github.com/cockroachdb/cockroach/pull/155407 +[#155485]: https://github.com/cockroachdb/cockroach/pull/155485 +[#154960]: https://github.com/cockroachdb/cockroach/pull/154960 +[#155809]: https://github.com/cockroachdb/cockroach/pull/155809 +[#155956]: https://github.com/cockroachdb/cockroach/pull/155956 +[#156828]: https://github.com/cockroachdb/cockroach/pull/156828 +[#155454]: https://github.com/cockroachdb/cockroach/pull/155454 +[#153067]: https://github.com/cockroachdb/cockroach/pull/153067 +[#154873]: https://github.com/cockroachdb/cockroach/pull/154873 +[#155844]: https://github.com/cockroachdb/cockroach/pull/155844 +[#157223]: https://github.com/cockroachdb/cockroach/pull/157223 +[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 +[#157834]: https://github.com/cockroachdb/cockroach/pull/157834 +[#155729]: https://github.com/cockroachdb/cockroach/pull/155729 +[#154892]: https://github.com/cockroachdb/cockroach/pull/154892 +[#155284]: https://github.com/cockroachdb/cockroach/pull/155284 +[#155774]: https://github.com/cockroachdb/cockroach/pull/155774 +[#152010]: https://github.com/cockroachdb/cockroach/pull/152010 +[#156485]: https://github.com/cockroachdb/cockroach/pull/156485 +[#150793]: https://github.com/cockroachdb/cockroach/pull/150793 +[#154162]: https://github.com/cockroachdb/cockroach/pull/154162 +[#155536]: https://github.com/cockroachdb/cockroach/pull/155536 +[#154789]: https://github.com/cockroachdb/cockroach/pull/154789 +[#153364]: https://github.com/cockroachdb/cockroach/pull/153364 +[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 +[#154914]: https://github.com/cockroachdb/cockroach/pull/154914 +[#155657]: https://github.com/cockroachdb/cockroach/pull/155657 +[#156801]: https://github.com/cockroachdb/cockroach/pull/156801 +[#156228]: https://github.com/cockroachdb/cockroach/pull/156228 +[#157083]: https://github.com/cockroachdb/cockroach/pull/157083 +[#155531]: https://github.com/cockroachdb/cockroach/pull/155531 +[#155274]: https://github.com/cockroachdb/cockroach/pull/155274 +[#155232]: https://github.com/cockroachdb/cockroach/pull/155232 +[#152882]: https://github.com/cockroachdb/cockroach/pull/152882 +[#154522]: https://github.com/cockroachdb/cockroach/pull/154522 +[#154598]: https://github.com/cockroachdb/cockroach/pull/154598 +[#154552]: https://github.com/cockroachdb/cockroach/pull/154552 +[#155404]: https://github.com/cockroachdb/cockroach/pull/155404 +[#155615]: https://github.com/cockroachdb/cockroach/pull/155615 +[#153419]: https://github.com/cockroachdb/cockroach/pull/153419 +[#155848]: https://github.com/cockroachdb/cockroach/pull/155848 +[#156935]: https://github.com/cockroachdb/cockroach/pull/156935 +[#154489]: https://github.com/cockroachdb/cockroach/pull/154489 +[#155110]: https://github.com/cockroachdb/cockroach/pull/155110 +[#154802]: https://github.com/cockroachdb/cockroach/pull/154802 +[#153990]: https://github.com/cockroachdb/cockroach/pull/153990 +[#157160]: https://github.com/cockroachdb/cockroach/pull/157160 +[#145934]: https://github.com/cockroachdb/cockroach/pull/145934 +[#148549]: https://github.com/cockroachdb/cockroach/pull/148549 +[#156000]: https://github.com/cockroachdb/cockroach/pull/156000 +[#155837]: https://github.com/cockroachdb/cockroach/pull/155837 +[#156867]: https://github.com/cockroachdb/cockroach/pull/156867 +[#156939]: https://github.com/cockroachdb/cockroach/pull/156939 +[#156975]: https://github.com/cockroachdb/cockroach/pull/156975 +[#156303]: https://github.com/cockroachdb/cockroach/pull/156303 +[#155655]: https://github.com/cockroachdb/cockroach/pull/155655 +[#155772]: https://github.com/cockroachdb/cockroach/pull/155772 +[#155777]: https://github.com/cockroachdb/cockroach/pull/155777 +[#155163]: https://github.com/cockroachdb/cockroach/pull/155163 +[#154149]: https://github.com/cockroachdb/cockroach/pull/154149 +[#156962]: https://github.com/cockroachdb/cockroach/pull/156962 +[#154370]: https://github.com/cockroachdb/cockroach/pull/154370 +[#155143]: https://github.com/cockroachdb/cockroach/pull/155143 +[#154870]: https://github.com/cockroachdb/cockroach/pull/154870 +[#156610]: https://github.com/cockroachdb/cockroach/pull/156610 +[#155820]: https://github.com/cockroachdb/cockroach/pull/155820 +[#156307]: https://github.com/cockroachdb/cockroach/pull/156307 +[#155064]: https://github.com/cockroachdb/cockroach/pull/155064 From f7ab2515fa082ed26e63485dcbf24126b4cb94a1 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Fri, 21 Nov 2025 16:08:49 +0000 Subject: [PATCH 04/21] Update release notes for v26.1-v26.1.0-alpha.1 From 7a0ab19a0d4b131c738f3a3dc98697142ebd6d0f Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Fri, 21 Nov 2025 16:08:50 +0000 Subject: [PATCH 05/21] Update release notes for v26.1-v26.1.0-alpha.1 From daf85cb712b951ba666361a62b0a19d410dac8ff Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Fri, 21 Nov 2025 16:08:51 +0000 Subject: [PATCH 06/21] Update release notes for v26.1-v26.1.0-alpha.1 --- .../releases/v26.1/v26.1.0-alpha.1.md | 174 +++++++++--------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md index 3a637f5f4d8..bab85016073 100644 --- a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md +++ b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md @@ -367,108 +367,108 @@ The following cases are not supported: [#154670]: https://github.com/cockroachdb/cockroach/pull/154670 -[#155035]: https://github.com/cockroachdb/cockroach/pull/155035 -[#155824]: https://github.com/cockroachdb/cockroach/pull/155824 +[#155232]: https://github.com/cockroachdb/cockroach/pull/155232 +[#156485]: https://github.com/cockroachdb/cockroach/pull/156485 +[#155820]: https://github.com/cockroachdb/cockroach/pull/155820 [#153893]: https://github.com/cockroachdb/cockroach/pull/153893 -[#155385]: https://github.com/cockroachdb/cockroach/pull/155385 -[#155778]: https://github.com/cockroachdb/cockroach/pull/155778 -[#154412]: https://github.com/cockroachdb/cockroach/pull/154412 +[#156303]: https://github.com/cockroachdb/cockroach/pull/156303 [#155203]: https://github.com/cockroachdb/cockroach/pull/155203 -[#156003]: https://github.com/cockroachdb/cockroach/pull/156003 -[#154963]: https://github.com/cockroachdb/cockroach/pull/154963 [#155192]: https://github.com/cockroachdb/cockroach/pull/155192 -[#155867]: https://github.com/cockroachdb/cockroach/pull/155867 -[#152618]: https://github.com/cockroachdb/cockroach/pull/152618 -[#157144]: https://github.com/cockroachdb/cockroach/pull/157144 -[#154545]: https://github.com/cockroachdb/cockroach/pull/154545 -[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 -[#153951]: https://github.com/cockroachdb/cockroach/pull/153951 -[#154744]: https://github.com/cockroachdb/cockroach/pull/154744 -[#156722]: https://github.com/cockroachdb/cockroach/pull/156722 -[#155063]: https://github.com/cockroachdb/cockroach/pull/155063 -[#155516]: https://github.com/cockroachdb/cockroach/pull/155516 -[#154209]: https://github.com/cockroachdb/cockroach/pull/154209 -[#151946]: https://github.com/cockroachdb/cockroach/pull/151946 -[#151409]: https://github.com/cockroachdb/cockroach/pull/151409 -[#154028]: https://github.com/cockroachdb/cockroach/pull/154028 -[#156152]: https://github.com/cockroachdb/cockroach/pull/156152 -[#154495]: https://github.com/cockroachdb/cockroach/pull/154495 -[#156105]: https://github.com/cockroachdb/cockroach/pull/156105 -[#156573]: https://github.com/cockroachdb/cockroach/pull/156573 -[#155242]: https://github.com/cockroachdb/cockroach/pull/155242 +[#155407]: https://github.com/cockroachdb/cockroach/pull/155407 +[#155655]: https://github.com/cockroachdb/cockroach/pull/155655 +[#155772]: https://github.com/cockroachdb/cockroach/pull/155772 [#156959]: https://github.com/cockroachdb/cockroach/pull/156959 -[#156889]: https://github.com/cockroachdb/cockroach/pull/156889 -[#151131]: https://github.com/cockroachdb/cockroach/pull/151131 -[#154051]: https://github.com/cockroachdb/cockroach/pull/154051 -[#153975]: https://github.com/cockroachdb/cockroach/pull/153975 -[#156584]: https://github.com/cockroachdb/cockroach/pull/156584 -[#156949]: https://github.com/cockroachdb/cockroach/pull/156949 +[#156000]: https://github.com/cockroachdb/cockroach/pull/156000 +[#152010]: https://github.com/cockroachdb/cockroach/pull/152010 +[#155143]: https://github.com/cockroachdb/cockroach/pull/155143 +[#152882]: https://github.com/cockroachdb/cockroach/pull/152882 +[#153364]: https://github.com/cockroachdb/cockroach/pull/153364 +[#153419]: https://github.com/cockroachdb/cockroach/pull/153419 +[#155284]: https://github.com/cockroachdb/cockroach/pull/155284 +[#154209]: https://github.com/cockroachdb/cockroach/pull/154209 +[#156228]: https://github.com/cockroachdb/cockroach/pull/156228 +[#156867]: https://github.com/cockroachdb/cockroach/pull/156867 +[#155516]: https://github.com/cockroachdb/cockroach/pull/155516 +[#154522]: https://github.com/cockroachdb/cockroach/pull/154522 +[#155956]: https://github.com/cockroachdb/cockroach/pull/155956 +[#155163]: https://github.com/cockroachdb/cockroach/pull/155163 [#156600]: https://github.com/cockroachdb/cockroach/pull/156600 -[#155407]: https://github.com/cockroachdb/cockroach/pull/155407 [#155485]: https://github.com/cockroachdb/cockroach/pull/155485 +[#156722]: https://github.com/cockroachdb/cockroach/pull/156722 +[#154489]: https://github.com/cockroachdb/cockroach/pull/154489 +[#156801]: https://github.com/cockroachdb/cockroach/pull/156801 +[#154598]: https://github.com/cockroachdb/cockroach/pull/154598 +[#155848]: https://github.com/cockroachdb/cockroach/pull/155848 [#154960]: https://github.com/cockroachdb/cockroach/pull/154960 -[#155809]: https://github.com/cockroachdb/cockroach/pull/155809 -[#155956]: https://github.com/cockroachdb/cockroach/pull/155956 -[#156828]: https://github.com/cockroachdb/cockroach/pull/156828 -[#155454]: https://github.com/cockroachdb/cockroach/pull/155454 +[#155274]: https://github.com/cockroachdb/cockroach/pull/155274 +[#145934]: https://github.com/cockroachdb/cockroach/pull/145934 +[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 +[#153990]: https://github.com/cockroachdb/cockroach/pull/153990 +[#150793]: https://github.com/cockroachdb/cockroach/pull/150793 +[#156152]: https://github.com/cockroachdb/cockroach/pull/156152 +[#154802]: https://github.com/cockroachdb/cockroach/pull/154802 +[#155824]: https://github.com/cockroachdb/cockroach/pull/155824 +[#155867]: https://github.com/cockroachdb/cockroach/pull/155867 +[#156949]: https://github.com/cockroachdb/cockroach/pull/156949 +[#156889]: https://github.com/cockroachdb/cockroach/pull/156889 +[#157144]: https://github.com/cockroachdb/cockroach/pull/157144 +[#154914]: https://github.com/cockroachdb/cockroach/pull/154914 +[#155242]: https://github.com/cockroachdb/cockroach/pull/155242 +[#156573]: https://github.com/cockroachdb/cockroach/pull/156573 +[#155657]: https://github.com/cockroachdb/cockroach/pull/155657 [#153067]: https://github.com/cockroachdb/cockroach/pull/153067 -[#154873]: https://github.com/cockroachdb/cockroach/pull/154873 +[#151946]: https://github.com/cockroachdb/cockroach/pull/151946 [#155844]: https://github.com/cockroachdb/cockroach/pull/155844 +[#156939]: https://github.com/cockroachdb/cockroach/pull/156939 +[#152618]: https://github.com/cockroachdb/cockroach/pull/152618 +[#148549]: https://github.com/cockroachdb/cockroach/pull/148549 +[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 +[#155404]: https://github.com/cockroachdb/cockroach/pull/155404 +[#155837]: https://github.com/cockroachdb/cockroach/pull/155837 +[#156935]: https://github.com/cockroachdb/cockroach/pull/156935 [#157223]: https://github.com/cockroachdb/cockroach/pull/157223 -[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 -[#157834]: https://github.com/cockroachdb/cockroach/pull/157834 -[#155729]: https://github.com/cockroachdb/cockroach/pull/155729 +[#154412]: https://github.com/cockroachdb/cockroach/pull/154412 [#154892]: https://github.com/cockroachdb/cockroach/pull/154892 -[#155284]: https://github.com/cockroachdb/cockroach/pull/155284 -[#155774]: https://github.com/cockroachdb/cockroach/pull/155774 -[#152010]: https://github.com/cockroachdb/cockroach/pull/152010 -[#156485]: https://github.com/cockroachdb/cockroach/pull/156485 -[#150793]: https://github.com/cockroachdb/cockroach/pull/150793 -[#154162]: https://github.com/cockroachdb/cockroach/pull/154162 +[#155064]: https://github.com/cockroachdb/cockroach/pull/155064 +[#154873]: https://github.com/cockroachdb/cockroach/pull/154873 [#155536]: https://github.com/cockroachdb/cockroach/pull/155536 +[#155774]: https://github.com/cockroachdb/cockroach/pull/155774 +[#151409]: https://github.com/cockroachdb/cockroach/pull/151409 +[#156307]: https://github.com/cockroachdb/cockroach/pull/156307 [#154789]: https://github.com/cockroachdb/cockroach/pull/154789 -[#153364]: https://github.com/cockroachdb/cockroach/pull/153364 -[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 -[#154914]: https://github.com/cockroachdb/cockroach/pull/154914 -[#155657]: https://github.com/cockroachdb/cockroach/pull/155657 -[#156801]: https://github.com/cockroachdb/cockroach/pull/156801 -[#156228]: https://github.com/cockroachdb/cockroach/pull/156228 -[#157083]: https://github.com/cockroachdb/cockroach/pull/157083 +[#156105]: https://github.com/cockroachdb/cockroach/pull/156105 [#155531]: https://github.com/cockroachdb/cockroach/pull/155531 -[#155274]: https://github.com/cockroachdb/cockroach/pull/155274 -[#155232]: https://github.com/cockroachdb/cockroach/pull/155232 -[#152882]: https://github.com/cockroachdb/cockroach/pull/152882 -[#154522]: https://github.com/cockroachdb/cockroach/pull/154522 -[#154598]: https://github.com/cockroachdb/cockroach/pull/154598 +[#156828]: https://github.com/cockroachdb/cockroach/pull/156828 +[#157834]: https://github.com/cockroachdb/cockroach/pull/157834 +[#154744]: https://github.com/cockroachdb/cockroach/pull/154744 +[#155778]: https://github.com/cockroachdb/cockroach/pull/155778 +[#155063]: https://github.com/cockroachdb/cockroach/pull/155063 +[#156962]: https://github.com/cockroachdb/cockroach/pull/156962 +[#157083]: https://github.com/cockroachdb/cockroach/pull/157083 +[#154149]: https://github.com/cockroachdb/cockroach/pull/154149 [#154552]: https://github.com/cockroachdb/cockroach/pull/154552 -[#155404]: https://github.com/cockroachdb/cockroach/pull/155404 -[#155615]: https://github.com/cockroachdb/cockroach/pull/155615 -[#153419]: https://github.com/cockroachdb/cockroach/pull/153419 -[#155848]: https://github.com/cockroachdb/cockroach/pull/155848 -[#156935]: https://github.com/cockroachdb/cockroach/pull/156935 -[#154489]: https://github.com/cockroachdb/cockroach/pull/154489 +[#155777]: https://github.com/cockroachdb/cockroach/pull/155777 [#155110]: https://github.com/cockroachdb/cockroach/pull/155110 -[#154802]: https://github.com/cockroachdb/cockroach/pull/154802 -[#153990]: https://github.com/cockroachdb/cockroach/pull/153990 -[#157160]: https://github.com/cockroachdb/cockroach/pull/157160 -[#145934]: https://github.com/cockroachdb/cockroach/pull/145934 -[#148549]: https://github.com/cockroachdb/cockroach/pull/148549 -[#156000]: https://github.com/cockroachdb/cockroach/pull/156000 -[#155837]: https://github.com/cockroachdb/cockroach/pull/155837 -[#156867]: https://github.com/cockroachdb/cockroach/pull/156867 -[#156939]: https://github.com/cockroachdb/cockroach/pull/156939 +[#154028]: https://github.com/cockroachdb/cockroach/pull/154028 +[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 +[#154051]: https://github.com/cockroachdb/cockroach/pull/154051 +[#156610]: https://github.com/cockroachdb/cockroach/pull/156610 +[#153975]: https://github.com/cockroachdb/cockroach/pull/153975 +[#154963]: https://github.com/cockroachdb/cockroach/pull/154963 +[#155035]: https://github.com/cockroachdb/cockroach/pull/155035 +[#154545]: https://github.com/cockroachdb/cockroach/pull/154545 [#156975]: https://github.com/cockroachdb/cockroach/pull/156975 -[#156303]: https://github.com/cockroachdb/cockroach/pull/156303 -[#155655]: https://github.com/cockroachdb/cockroach/pull/155655 -[#155772]: https://github.com/cockroachdb/cockroach/pull/155772 -[#155777]: https://github.com/cockroachdb/cockroach/pull/155777 -[#155163]: https://github.com/cockroachdb/cockroach/pull/155163 -[#154149]: https://github.com/cockroachdb/cockroach/pull/154149 -[#156962]: https://github.com/cockroachdb/cockroach/pull/156962 -[#154370]: https://github.com/cockroachdb/cockroach/pull/154370 -[#155143]: https://github.com/cockroachdb/cockroach/pull/155143 +[#155454]: https://github.com/cockroachdb/cockroach/pull/155454 +[#157160]: https://github.com/cockroachdb/cockroach/pull/157160 +[#154495]: https://github.com/cockroachdb/cockroach/pull/154495 +[#154162]: https://github.com/cockroachdb/cockroach/pull/154162 +[#155615]: https://github.com/cockroachdb/cockroach/pull/155615 +[#156003]: https://github.com/cockroachdb/cockroach/pull/156003 [#154870]: https://github.com/cockroachdb/cockroach/pull/154870 -[#156610]: https://github.com/cockroachdb/cockroach/pull/156610 -[#155820]: https://github.com/cockroachdb/cockroach/pull/155820 -[#156307]: https://github.com/cockroachdb/cockroach/pull/156307 -[#155064]: https://github.com/cockroachdb/cockroach/pull/155064 +[#155809]: https://github.com/cockroachdb/cockroach/pull/155809 +[#156584]: https://github.com/cockroachdb/cockroach/pull/156584 +[#151131]: https://github.com/cockroachdb/cockroach/pull/151131 +[#154370]: https://github.com/cockroachdb/cockroach/pull/154370 +[#153951]: https://github.com/cockroachdb/cockroach/pull/153951 +[#155385]: https://github.com/cockroachdb/cockroach/pull/155385 +[#155729]: https://github.com/cockroachdb/cockroach/pull/155729 From 67096eb545735f504425857a896a8c267b931034 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Fri, 21 Nov 2025 16:14:37 +0000 Subject: [PATCH 07/21] Update release notes for v26.1-v26.1.0-alpha.1 From 3f53d3c39fca56ab59b776ecd2ac57d654e7435e Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Fri, 21 Nov 2025 16:14:38 +0000 Subject: [PATCH 08/21] Update release notes for v26.1-v26.1.0-alpha.1 From c9234ff7e80c67808a9ae1df6df32018558481d7 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Fri, 21 Nov 2025 16:14:39 +0000 Subject: [PATCH 09/21] Update release notes for v26.1-v26.1.0-alpha.1 --- .../releases/v26.1/v26.1.0-alpha.1.md | 174 +++++++++--------- 1 file changed, 87 insertions(+), 87 deletions(-) diff --git a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md index bab85016073..93eb27d5f04 100644 --- a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md +++ b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md @@ -366,109 +366,109 @@ The following cases are not supported: `cockroach version` [#157223][#157223] -[#154670]: https://github.com/cockroachdb/cockroach/pull/154670 -[#155232]: https://github.com/cockroachdb/cockroach/pull/155232 +[#155284]: https://github.com/cockroachdb/cockroach/pull/155284 +[#154598]: https://github.com/cockroachdb/cockroach/pull/154598 +[#156935]: https://github.com/cockroachdb/cockroach/pull/156935 +[#155809]: https://github.com/cockroachdb/cockroach/pull/155809 +[#156959]: https://github.com/cockroachdb/cockroach/pull/156959 +[#154162]: https://github.com/cockroachdb/cockroach/pull/154162 +[#155407]: https://github.com/cockroachdb/cockroach/pull/155407 +[#154789]: https://github.com/cockroachdb/cockroach/pull/154789 +[#156600]: https://github.com/cockroachdb/cockroach/pull/156600 +[#154522]: https://github.com/cockroachdb/cockroach/pull/154522 [#156485]: https://github.com/cockroachdb/cockroach/pull/156485 -[#155820]: https://github.com/cockroachdb/cockroach/pull/155820 +[#156573]: https://github.com/cockroachdb/cockroach/pull/156573 +[#155274]: https://github.com/cockroachdb/cockroach/pull/155274 +[#156003]: https://github.com/cockroachdb/cockroach/pull/156003 +[#156307]: https://github.com/cockroachdb/cockroach/pull/156307 +[#154028]: https://github.com/cockroachdb/cockroach/pull/154028 +[#156801]: https://github.com/cockroachdb/cockroach/pull/156801 +[#153951]: https://github.com/cockroachdb/cockroach/pull/153951 +[#155772]: https://github.com/cockroachdb/cockroach/pull/155772 +[#155844]: https://github.com/cockroachdb/cockroach/pull/155844 +[#157144]: https://github.com/cockroachdb/cockroach/pull/157144 +[#156975]: https://github.com/cockroachdb/cockroach/pull/156975 [#153893]: https://github.com/cockroachdb/cockroach/pull/153893 +[#157160]: https://github.com/cockroachdb/cockroach/pull/157160 +[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 +[#156828]: https://github.com/cockroachdb/cockroach/pull/156828 +[#155778]: https://github.com/cockroachdb/cockroach/pull/155778 +[#155242]: https://github.com/cockroachdb/cockroach/pull/155242 [#156303]: https://github.com/cockroachdb/cockroach/pull/156303 -[#155203]: https://github.com/cockroachdb/cockroach/pull/155203 -[#155192]: https://github.com/cockroachdb/cockroach/pull/155192 -[#155407]: https://github.com/cockroachdb/cockroach/pull/155407 -[#155655]: https://github.com/cockroachdb/cockroach/pull/155655 -[#155772]: https://github.com/cockroachdb/cockroach/pull/155772 -[#156959]: https://github.com/cockroachdb/cockroach/pull/156959 -[#156000]: https://github.com/cockroachdb/cockroach/pull/156000 -[#152010]: https://github.com/cockroachdb/cockroach/pull/152010 +[#154802]: https://github.com/cockroachdb/cockroach/pull/154802 [#155143]: https://github.com/cockroachdb/cockroach/pull/155143 -[#152882]: https://github.com/cockroachdb/cockroach/pull/152882 -[#153364]: https://github.com/cockroachdb/cockroach/pull/153364 -[#153419]: https://github.com/cockroachdb/cockroach/pull/153419 -[#155284]: https://github.com/cockroachdb/cockroach/pull/155284 -[#154209]: https://github.com/cockroachdb/cockroach/pull/154209 +[#155824]: https://github.com/cockroachdb/cockroach/pull/155824 [#156228]: https://github.com/cockroachdb/cockroach/pull/156228 +[#155848]: https://github.com/cockroachdb/cockroach/pull/155848 +[#154963]: https://github.com/cockroachdb/cockroach/pull/154963 +[#156000]: https://github.com/cockroachdb/cockroach/pull/156000 +[#155774]: https://github.com/cockroachdb/cockroach/pull/155774 +[#154495]: https://github.com/cockroachdb/cockroach/pull/154495 +[#156584]: https://github.com/cockroachdb/cockroach/pull/156584 +[#155657]: https://github.com/cockroachdb/cockroach/pull/155657 +[#154892]: https://github.com/cockroachdb/cockroach/pull/154892 +[#154914]: https://github.com/cockroachdb/cockroach/pull/154914 +[#154545]: https://github.com/cockroachdb/cockroach/pull/154545 +[#151946]: https://github.com/cockroachdb/cockroach/pull/151946 +[#154552]: https://github.com/cockroachdb/cockroach/pull/154552 +[#150793]: https://github.com/cockroachdb/cockroach/pull/150793 +[#154873]: https://github.com/cockroachdb/cockroach/pull/154873 +[#154209]: https://github.com/cockroachdb/cockroach/pull/154209 +[#155064]: https://github.com/cockroachdb/cockroach/pull/155064 +[#154744]: https://github.com/cockroachdb/cockroach/pull/154744 +[#155035]: https://github.com/cockroachdb/cockroach/pull/155035 [#156867]: https://github.com/cockroachdb/cockroach/pull/156867 -[#155516]: https://github.com/cockroachdb/cockroach/pull/155516 -[#154522]: https://github.com/cockroachdb/cockroach/pull/154522 -[#155956]: https://github.com/cockroachdb/cockroach/pull/155956 [#155163]: https://github.com/cockroachdb/cockroach/pull/155163 -[#156600]: https://github.com/cockroachdb/cockroach/pull/156600 -[#155485]: https://github.com/cockroachdb/cockroach/pull/155485 -[#156722]: https://github.com/cockroachdb/cockroach/pull/156722 -[#154489]: https://github.com/cockroachdb/cockroach/pull/154489 -[#156801]: https://github.com/cockroachdb/cockroach/pull/156801 -[#154598]: https://github.com/cockroachdb/cockroach/pull/154598 -[#155848]: https://github.com/cockroachdb/cockroach/pull/155848 +[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 [#154960]: https://github.com/cockroachdb/cockroach/pull/154960 -[#155274]: https://github.com/cockroachdb/cockroach/pull/155274 -[#145934]: https://github.com/cockroachdb/cockroach/pull/145934 -[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 -[#153990]: https://github.com/cockroachdb/cockroach/pull/153990 -[#150793]: https://github.com/cockroachdb/cockroach/pull/150793 -[#156152]: https://github.com/cockroachdb/cockroach/pull/156152 -[#154802]: https://github.com/cockroachdb/cockroach/pull/154802 -[#155824]: https://github.com/cockroachdb/cockroach/pull/155824 -[#155867]: https://github.com/cockroachdb/cockroach/pull/155867 +[#155404]: https://github.com/cockroachdb/cockroach/pull/155404 [#156949]: https://github.com/cockroachdb/cockroach/pull/156949 -[#156889]: https://github.com/cockroachdb/cockroach/pull/156889 -[#157144]: https://github.com/cockroachdb/cockroach/pull/157144 -[#154914]: https://github.com/cockroachdb/cockroach/pull/154914 -[#155242]: https://github.com/cockroachdb/cockroach/pull/155242 -[#156573]: https://github.com/cockroachdb/cockroach/pull/156573 -[#155657]: https://github.com/cockroachdb/cockroach/pull/155657 -[#153067]: https://github.com/cockroachdb/cockroach/pull/153067 -[#151946]: https://github.com/cockroachdb/cockroach/pull/151946 -[#155844]: https://github.com/cockroachdb/cockroach/pull/155844 -[#156939]: https://github.com/cockroachdb/cockroach/pull/156939 -[#152618]: https://github.com/cockroachdb/cockroach/pull/152618 +[#156962]: https://github.com/cockroachdb/cockroach/pull/156962 +[#155110]: https://github.com/cockroachdb/cockroach/pull/155110 [#148549]: https://github.com/cockroachdb/cockroach/pull/148549 -[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 -[#155404]: https://github.com/cockroachdb/cockroach/pull/155404 +[#155777]: https://github.com/cockroachdb/cockroach/pull/155777 +[#156105]: https://github.com/cockroachdb/cockroach/pull/156105 +[#157834]: https://github.com/cockroachdb/cockroach/pull/157834 +[#155063]: https://github.com/cockroachdb/cockroach/pull/155063 +[#152010]: https://github.com/cockroachdb/cockroach/pull/152010 +[#155192]: https://github.com/cockroachdb/cockroach/pull/155192 +[#155232]: https://github.com/cockroachdb/cockroach/pull/155232 +[#154489]: https://github.com/cockroachdb/cockroach/pull/154489 +[#156610]: https://github.com/cockroachdb/cockroach/pull/156610 [#155837]: https://github.com/cockroachdb/cockroach/pull/155837 -[#156935]: https://github.com/cockroachdb/cockroach/pull/156935 -[#157223]: https://github.com/cockroachdb/cockroach/pull/157223 +[#155729]: https://github.com/cockroachdb/cockroach/pull/155729 +[#153990]: https://github.com/cockroachdb/cockroach/pull/153990 +[#151131]: https://github.com/cockroachdb/cockroach/pull/151131 [#154412]: https://github.com/cockroachdb/cockroach/pull/154412 -[#154892]: https://github.com/cockroachdb/cockroach/pull/154892 -[#155064]: https://github.com/cockroachdb/cockroach/pull/155064 -[#154873]: https://github.com/cockroachdb/cockroach/pull/154873 +[#155820]: https://github.com/cockroachdb/cockroach/pull/155820 [#155536]: https://github.com/cockroachdb/cockroach/pull/155536 -[#155774]: https://github.com/cockroachdb/cockroach/pull/155774 +[#155956]: https://github.com/cockroachdb/cockroach/pull/155956 [#151409]: https://github.com/cockroachdb/cockroach/pull/151409 -[#156307]: https://github.com/cockroachdb/cockroach/pull/156307 -[#154789]: https://github.com/cockroachdb/cockroach/pull/154789 -[#156105]: https://github.com/cockroachdb/cockroach/pull/156105 [#155531]: https://github.com/cockroachdb/cockroach/pull/155531 -[#156828]: https://github.com/cockroachdb/cockroach/pull/156828 -[#157834]: https://github.com/cockroachdb/cockroach/pull/157834 -[#154744]: https://github.com/cockroachdb/cockroach/pull/154744 -[#155778]: https://github.com/cockroachdb/cockroach/pull/155778 -[#155063]: https://github.com/cockroachdb/cockroach/pull/155063 -[#156962]: https://github.com/cockroachdb/cockroach/pull/156962 -[#157083]: https://github.com/cockroachdb/cockroach/pull/157083 -[#154149]: https://github.com/cockroachdb/cockroach/pull/154149 -[#154552]: https://github.com/cockroachdb/cockroach/pull/154552 -[#155777]: https://github.com/cockroachdb/cockroach/pull/155777 -[#155110]: https://github.com/cockroachdb/cockroach/pull/155110 -[#154028]: https://github.com/cockroachdb/cockroach/pull/154028 -[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 -[#154051]: https://github.com/cockroachdb/cockroach/pull/154051 -[#156610]: https://github.com/cockroachdb/cockroach/pull/156610 +[#155867]: https://github.com/cockroachdb/cockroach/pull/155867 [#153975]: https://github.com/cockroachdb/cockroach/pull/153975 -[#154963]: https://github.com/cockroachdb/cockroach/pull/154963 -[#155035]: https://github.com/cockroachdb/cockroach/pull/155035 -[#154545]: https://github.com/cockroachdb/cockroach/pull/154545 -[#156975]: https://github.com/cockroachdb/cockroach/pull/156975 -[#155454]: https://github.com/cockroachdb/cockroach/pull/155454 -[#157160]: https://github.com/cockroachdb/cockroach/pull/157160 -[#154495]: https://github.com/cockroachdb/cockroach/pull/154495 -[#154162]: https://github.com/cockroachdb/cockroach/pull/154162 [#155615]: https://github.com/cockroachdb/cockroach/pull/155615 -[#156003]: https://github.com/cockroachdb/cockroach/pull/156003 +[#153067]: https://github.com/cockroachdb/cockroach/pull/153067 +[#155454]: https://github.com/cockroachdb/cockroach/pull/155454 +[#155485]: https://github.com/cockroachdb/cockroach/pull/155485 +[#152618]: https://github.com/cockroachdb/cockroach/pull/152618 +[#156889]: https://github.com/cockroachdb/cockroach/pull/156889 +[#157083]: https://github.com/cockroachdb/cockroach/pull/157083 [#154870]: https://github.com/cockroachdb/cockroach/pull/154870 -[#155809]: https://github.com/cockroachdb/cockroach/pull/155809 -[#156584]: https://github.com/cockroachdb/cockroach/pull/156584 -[#151131]: https://github.com/cockroachdb/cockroach/pull/151131 -[#154370]: https://github.com/cockroachdb/cockroach/pull/154370 -[#153951]: https://github.com/cockroachdb/cockroach/pull/153951 +[#154149]: https://github.com/cockroachdb/cockroach/pull/154149 +[#153419]: https://github.com/cockroachdb/cockroach/pull/153419 +[#156722]: https://github.com/cockroachdb/cockroach/pull/156722 [#155385]: https://github.com/cockroachdb/cockroach/pull/155385 -[#155729]: https://github.com/cockroachdb/cockroach/pull/155729 +[#157223]: https://github.com/cockroachdb/cockroach/pull/157223 +[#154370]: https://github.com/cockroachdb/cockroach/pull/154370 +[#154670]: https://github.com/cockroachdb/cockroach/pull/154670 +[#145934]: https://github.com/cockroachdb/cockroach/pull/145934 +[#155516]: https://github.com/cockroachdb/cockroach/pull/155516 +[#155203]: https://github.com/cockroachdb/cockroach/pull/155203 +[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 +[#156152]: https://github.com/cockroachdb/cockroach/pull/156152 +[#152882]: https://github.com/cockroachdb/cockroach/pull/152882 +[#155655]: https://github.com/cockroachdb/cockroach/pull/155655 +[#156939]: https://github.com/cockroachdb/cockroach/pull/156939 +[#154051]: https://github.com/cockroachdb/cockroach/pull/154051 +[#153364]: https://github.com/cockroachdb/cockroach/pull/153364 From 49b51b8080670c3044e8d571c92f6c9a0102953b Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Fri, 21 Nov 2025 16:15:46 +0000 Subject: [PATCH 10/21] Update release notes for v26.1-v26.1.0-alpha.1 From b601519659728d67be3da0ec317f070eca527f83 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Fri, 21 Nov 2025 16:15:46 +0000 Subject: [PATCH 11/21] Update release notes for v26.1-v26.1.0-alpha.1 --- src/current/_data/releases.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/current/_data/releases.yml b/src/current/_data/releases.yml index c58960e1d4b..9320067ce28 100644 --- a/src/current/_data/releases.yml +++ b/src/current/_data/releases.yml @@ -9960,7 +9960,7 @@ - release_name: v26.1.0-alpha.1 major_version: v26.1 - release_date: '2025-12-03' + release_date: '2025-12-01' release_type: Testing go_version: go1.25.3 sha: d90b48fdc3077318799afd2939837c79289156f4 From f975313593323b2b9d7a24d026e79c3e51a69130 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Fri, 21 Nov 2025 16:15:47 +0000 Subject: [PATCH 12/21] Update release notes for v26.1-v26.1.0-alpha.1 --- .../releases/v26.1/v26.1.0-alpha.1.md | 178 +++++++++--------- 1 file changed, 89 insertions(+), 89 deletions(-) diff --git a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md index 93eb27d5f04..689f8e95e97 100644 --- a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md +++ b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md @@ -1,6 +1,6 @@ ## v26.1.0-alpha.1 -Release Date: December 3, 2025 +Release Date: December 1, 2025 {% include releases/new-release-downloads-docker-image.md release=include.release %} @@ -366,109 +366,109 @@ The following cases are not supported: `cockroach version` [#157223][#157223] -[#155284]: https://github.com/cockroachdb/cockroach/pull/155284 -[#154598]: https://github.com/cockroachdb/cockroach/pull/154598 [#156935]: https://github.com/cockroachdb/cockroach/pull/156935 -[#155809]: https://github.com/cockroachdb/cockroach/pull/155809 -[#156959]: https://github.com/cockroachdb/cockroach/pull/156959 -[#154162]: https://github.com/cockroachdb/cockroach/pull/154162 -[#155407]: https://github.com/cockroachdb/cockroach/pull/155407 -[#154789]: https://github.com/cockroachdb/cockroach/pull/154789 -[#156600]: https://github.com/cockroachdb/cockroach/pull/156600 -[#154522]: https://github.com/cockroachdb/cockroach/pull/154522 -[#156485]: https://github.com/cockroachdb/cockroach/pull/156485 -[#156573]: https://github.com/cockroachdb/cockroach/pull/156573 -[#155274]: https://github.com/cockroachdb/cockroach/pull/155274 -[#156003]: https://github.com/cockroachdb/cockroach/pull/156003 -[#156307]: https://github.com/cockroachdb/cockroach/pull/156307 -[#154028]: https://github.com/cockroachdb/cockroach/pull/154028 -[#156801]: https://github.com/cockroachdb/cockroach/pull/156801 -[#153951]: https://github.com/cockroachdb/cockroach/pull/153951 +[#153067]: https://github.com/cockroachdb/cockroach/pull/153067 +[#154963]: https://github.com/cockroachdb/cockroach/pull/154963 +[#155655]: https://github.com/cockroachdb/cockroach/pull/155655 [#155772]: https://github.com/cockroachdb/cockroach/pull/155772 -[#155844]: https://github.com/cockroachdb/cockroach/pull/155844 -[#157144]: https://github.com/cockroachdb/cockroach/pull/157144 -[#156975]: https://github.com/cockroachdb/cockroach/pull/156975 -[#153893]: https://github.com/cockroachdb/cockroach/pull/153893 -[#157160]: https://github.com/cockroachdb/cockroach/pull/157160 +[#155064]: https://github.com/cockroachdb/cockroach/pull/155064 +[#155867]: https://github.com/cockroachdb/cockroach/pull/155867 +[#153419]: https://github.com/cockroachdb/cockroach/pull/153419 +[#154412]: https://github.com/cockroachdb/cockroach/pull/154412 +[#153951]: https://github.com/cockroachdb/cockroach/pull/153951 +[#154522]: https://github.com/cockroachdb/cockroach/pull/154522 +[#155163]: https://github.com/cockroachdb/cockroach/pull/155163 +[#154870]: https://github.com/cockroachdb/cockroach/pull/154870 +[#154370]: https://github.com/cockroachdb/cockroach/pull/154370 [#153889]: https://github.com/cockroachdb/cockroach/pull/153889 -[#156828]: https://github.com/cockroachdb/cockroach/pull/156828 -[#155778]: https://github.com/cockroachdb/cockroach/pull/155778 -[#155242]: https://github.com/cockroachdb/cockroach/pull/155242 -[#156303]: https://github.com/cockroachdb/cockroach/pull/156303 [#154802]: https://github.com/cockroachdb/cockroach/pull/154802 -[#155143]: https://github.com/cockroachdb/cockroach/pull/155143 -[#155824]: https://github.com/cockroachdb/cockroach/pull/155824 -[#156228]: https://github.com/cockroachdb/cockroach/pull/156228 -[#155848]: https://github.com/cockroachdb/cockroach/pull/155848 -[#154963]: https://github.com/cockroachdb/cockroach/pull/154963 -[#156000]: https://github.com/cockroachdb/cockroach/pull/156000 -[#155774]: https://github.com/cockroachdb/cockroach/pull/155774 +[#155385]: https://github.com/cockroachdb/cockroach/pull/155385 +[#151946]: https://github.com/cockroachdb/cockroach/pull/151946 +[#154960]: https://github.com/cockroachdb/cockroach/pull/154960 +[#155242]: https://github.com/cockroachdb/cockroach/pull/155242 +[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 +[#155536]: https://github.com/cockroachdb/cockroach/pull/155536 +[#156600]: https://github.com/cockroachdb/cockroach/pull/156600 [#154495]: https://github.com/cockroachdb/cockroach/pull/154495 -[#156584]: https://github.com/cockroachdb/cockroach/pull/156584 -[#155657]: https://github.com/cockroachdb/cockroach/pull/155657 +[#153990]: https://github.com/cockroachdb/cockroach/pull/153990 +[#154051]: https://github.com/cockroachdb/cockroach/pull/154051 [#154892]: https://github.com/cockroachdb/cockroach/pull/154892 -[#154914]: https://github.com/cockroachdb/cockroach/pull/154914 -[#154545]: https://github.com/cockroachdb/cockroach/pull/154545 -[#151946]: https://github.com/cockroachdb/cockroach/pull/151946 -[#154552]: https://github.com/cockroachdb/cockroach/pull/154552 -[#150793]: https://github.com/cockroachdb/cockroach/pull/150793 -[#154873]: https://github.com/cockroachdb/cockroach/pull/154873 -[#154209]: https://github.com/cockroachdb/cockroach/pull/154209 -[#155064]: https://github.com/cockroachdb/cockroach/pull/155064 +[#155844]: https://github.com/cockroachdb/cockroach/pull/155844 +[#154149]: https://github.com/cockroachdb/cockroach/pull/154149 +[#155274]: https://github.com/cockroachdb/cockroach/pull/155274 +[#156307]: https://github.com/cockroachdb/cockroach/pull/156307 +[#157160]: https://github.com/cockroachdb/cockroach/pull/157160 +[#155809]: https://github.com/cockroachdb/cockroach/pull/155809 +[#156962]: https://github.com/cockroachdb/cockroach/pull/156962 +[#156000]: https://github.com/cockroachdb/cockroach/pull/156000 +[#155956]: https://github.com/cockroachdb/cockroach/pull/155956 [#154744]: https://github.com/cockroachdb/cockroach/pull/154744 -[#155035]: https://github.com/cockroachdb/cockroach/pull/155035 +[#157144]: https://github.com/cockroachdb/cockroach/pull/157144 +[#154162]: https://github.com/cockroachdb/cockroach/pull/154162 [#156867]: https://github.com/cockroachdb/cockroach/pull/156867 -[#155163]: https://github.com/cockroachdb/cockroach/pull/155163 -[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 -[#154960]: https://github.com/cockroachdb/cockroach/pull/154960 -[#155404]: https://github.com/cockroachdb/cockroach/pull/155404 -[#156949]: https://github.com/cockroachdb/cockroach/pull/156949 -[#156962]: https://github.com/cockroachdb/cockroach/pull/156962 +[#155729]: https://github.com/cockroachdb/cockroach/pull/155729 +[#154028]: https://github.com/cockroachdb/cockroach/pull/154028 +[#155143]: https://github.com/cockroachdb/cockroach/pull/155143 +[#154489]: https://github.com/cockroachdb/cockroach/pull/154489 +[#156152]: https://github.com/cockroachdb/cockroach/pull/156152 +[#156610]: https://github.com/cockroachdb/cockroach/pull/156610 +[#153975]: https://github.com/cockroachdb/cockroach/pull/153975 +[#155203]: https://github.com/cockroachdb/cockroach/pull/155203 [#155110]: https://github.com/cockroachdb/cockroach/pull/155110 -[#148549]: https://github.com/cockroachdb/cockroach/pull/148549 +[#153364]: https://github.com/cockroachdb/cockroach/pull/153364 +[#156573]: https://github.com/cockroachdb/cockroach/pull/156573 +[#155848]: https://github.com/cockroachdb/cockroach/pull/155848 +[#152882]: https://github.com/cockroachdb/cockroach/pull/152882 [#155777]: https://github.com/cockroachdb/cockroach/pull/155777 -[#156105]: https://github.com/cockroachdb/cockroach/pull/156105 -[#157834]: https://github.com/cockroachdb/cockroach/pull/157834 -[#155063]: https://github.com/cockroachdb/cockroach/pull/155063 +[#153893]: https://github.com/cockroachdb/cockroach/pull/153893 [#152010]: https://github.com/cockroachdb/cockroach/pull/152010 -[#155192]: https://github.com/cockroachdb/cockroach/pull/155192 -[#155232]: https://github.com/cockroachdb/cockroach/pull/155232 -[#154489]: https://github.com/cockroachdb/cockroach/pull/154489 -[#156610]: https://github.com/cockroachdb/cockroach/pull/156610 +[#155063]: https://github.com/cockroachdb/cockroach/pull/155063 +[#156801]: https://github.com/cockroachdb/cockroach/pull/156801 +[#154598]: https://github.com/cockroachdb/cockroach/pull/154598 +[#156722]: https://github.com/cockroachdb/cockroach/pull/156722 +[#157834]: https://github.com/cockroachdb/cockroach/pull/157834 +[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 +[#155485]: https://github.com/cockroachdb/cockroach/pull/155485 +[#156303]: https://github.com/cockroachdb/cockroach/pull/156303 +[#155774]: https://github.com/cockroachdb/cockroach/pull/155774 [#155837]: https://github.com/cockroachdb/cockroach/pull/155837 -[#155729]: https://github.com/cockroachdb/cockroach/pull/155729 -[#153990]: https://github.com/cockroachdb/cockroach/pull/153990 -[#151131]: https://github.com/cockroachdb/cockroach/pull/151131 -[#154412]: https://github.com/cockroachdb/cockroach/pull/154412 +[#156584]: https://github.com/cockroachdb/cockroach/pull/156584 +[#152618]: https://github.com/cockroachdb/cockroach/pull/152618 +[#156105]: https://github.com/cockroachdb/cockroach/pull/156105 [#155820]: https://github.com/cockroachdb/cockroach/pull/155820 -[#155536]: https://github.com/cockroachdb/cockroach/pull/155536 -[#155956]: https://github.com/cockroachdb/cockroach/pull/155956 +[#151131]: https://github.com/cockroachdb/cockroach/pull/151131 +[#154914]: https://github.com/cockroachdb/cockroach/pull/154914 +[#155615]: https://github.com/cockroachdb/cockroach/pull/155615 +[#155824]: https://github.com/cockroachdb/cockroach/pull/155824 +[#157223]: https://github.com/cockroachdb/cockroach/pull/157223 +[#150793]: https://github.com/cockroachdb/cockroach/pull/150793 +[#154552]: https://github.com/cockroachdb/cockroach/pull/154552 +[#145934]: https://github.com/cockroachdb/cockroach/pull/145934 +[#156485]: https://github.com/cockroachdb/cockroach/pull/156485 +[#155657]: https://github.com/cockroachdb/cockroach/pull/155657 [#151409]: https://github.com/cockroachdb/cockroach/pull/151409 +[#154873]: https://github.com/cockroachdb/cockroach/pull/154873 +[#155407]: https://github.com/cockroachdb/cockroach/pull/155407 +[#156939]: https://github.com/cockroachdb/cockroach/pull/156939 +[#154545]: https://github.com/cockroachdb/cockroach/pull/154545 +[#148549]: https://github.com/cockroachdb/cockroach/pull/148549 +[#155232]: https://github.com/cockroachdb/cockroach/pull/155232 [#155531]: https://github.com/cockroachdb/cockroach/pull/155531 -[#155867]: https://github.com/cockroachdb/cockroach/pull/155867 -[#153975]: https://github.com/cockroachdb/cockroach/pull/153975 -[#155615]: https://github.com/cockroachdb/cockroach/pull/155615 -[#153067]: https://github.com/cockroachdb/cockroach/pull/153067 +[#156949]: https://github.com/cockroachdb/cockroach/pull/156949 +[#156003]: https://github.com/cockroachdb/cockroach/pull/156003 +[#155035]: https://github.com/cockroachdb/cockroach/pull/155035 +[#155404]: https://github.com/cockroachdb/cockroach/pull/155404 [#155454]: https://github.com/cockroachdb/cockroach/pull/155454 -[#155485]: https://github.com/cockroachdb/cockroach/pull/155485 -[#152618]: https://github.com/cockroachdb/cockroach/pull/152618 +[#155516]: https://github.com/cockroachdb/cockroach/pull/155516 +[#156959]: https://github.com/cockroachdb/cockroach/pull/156959 [#156889]: https://github.com/cockroachdb/cockroach/pull/156889 -[#157083]: https://github.com/cockroachdb/cockroach/pull/157083 -[#154870]: https://github.com/cockroachdb/cockroach/pull/154870 -[#154149]: https://github.com/cockroachdb/cockroach/pull/154149 -[#153419]: https://github.com/cockroachdb/cockroach/pull/153419 -[#156722]: https://github.com/cockroachdb/cockroach/pull/156722 -[#155385]: https://github.com/cockroachdb/cockroach/pull/155385 -[#157223]: https://github.com/cockroachdb/cockroach/pull/157223 -[#154370]: https://github.com/cockroachdb/cockroach/pull/154370 +[#154209]: https://github.com/cockroachdb/cockroach/pull/154209 +[#156828]: https://github.com/cockroachdb/cockroach/pull/156828 +[#155284]: https://github.com/cockroachdb/cockroach/pull/155284 +[#155192]: https://github.com/cockroachdb/cockroach/pull/155192 +[#155778]: https://github.com/cockroachdb/cockroach/pull/155778 [#154670]: https://github.com/cockroachdb/cockroach/pull/154670 -[#145934]: https://github.com/cockroachdb/cockroach/pull/145934 -[#155516]: https://github.com/cockroachdb/cockroach/pull/155516 -[#155203]: https://github.com/cockroachdb/cockroach/pull/155203 -[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 -[#156152]: https://github.com/cockroachdb/cockroach/pull/156152 -[#152882]: https://github.com/cockroachdb/cockroach/pull/152882 -[#155655]: https://github.com/cockroachdb/cockroach/pull/155655 -[#156939]: https://github.com/cockroachdb/cockroach/pull/156939 -[#154051]: https://github.com/cockroachdb/cockroach/pull/154051 -[#153364]: https://github.com/cockroachdb/cockroach/pull/153364 +[#154789]: https://github.com/cockroachdb/cockroach/pull/154789 +[#157083]: https://github.com/cockroachdb/cockroach/pull/157083 +[#156975]: https://github.com/cockroachdb/cockroach/pull/156975 +[#156228]: https://github.com/cockroachdb/cockroach/pull/156228 From ed67079a26f940d9ba6a732c6130497d2bc9ae70 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 3 Dec 2025 21:12:16 +0000 Subject: [PATCH 13/21] Update release notes for v26.1-v26.1.0-alpha.1 From 93029963fb4685c8c34cca533015b8437738b3a7 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 3 Dec 2025 21:12:17 +0000 Subject: [PATCH 14/21] Update release notes for v26.1-v26.1.0-alpha.1 --- src/current/_data/releases.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/current/_data/releases.yml b/src/current/_data/releases.yml index 9320067ce28..910bab9d1ea 100644 --- a/src/current/_data/releases.yml +++ b/src/current/_data/releases.yml @@ -9960,7 +9960,7 @@ - release_name: v26.1.0-alpha.1 major_version: v26.1 - release_date: '2025-12-01' + release_date: '2025-12-04' release_type: Testing go_version: go1.25.3 sha: d90b48fdc3077318799afd2939837c79289156f4 From ecac1603c0b8486e85d77b249a7f20e87fd5d62d Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 3 Dec 2025 21:12:18 +0000 Subject: [PATCH 15/21] Update release notes for v26.1-v26.1.0-alpha.1 --- .../releases/v26.1/v26.1.0-alpha.1.md | 509 +++++++----------- 1 file changed, 183 insertions(+), 326 deletions(-) diff --git a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md index 689f8e95e97..994bc443648 100644 --- a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md +++ b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md @@ -1,6 +1,6 @@ ## v26.1.0-alpha.1 -Release Date: December 1, 2025 +Release Date: December 4, 2025 {% include releases/new-release-downloads-docker-image.md release=include.release %} @@ -26,15 +26,15 @@ The following cases are not supported: - `$[*]` - `$.a.b.c == 12`, `$.a.b.c > 12`, or `$.a.b.c < 12` (operation expressions) - `$.a.b ? (@.a > 10)` (filter with an inequality check) [#150793][#150793] -- A new field is added to SHOW CHANGEFEED JOBS. - database_name gives the name of the database that a db-level changefeed - is on. For a table-level changefeed, it will be null. +- Added a new field to `SHOW CHANGEFEED JOBS`. + `database_name` gives the name of the database that a db-level changefeed + is on. For a table-level changefeed, the value is `null`. - SHOW CHANGEFEED JOBS field full_table_names is changed for db-level - changefeeds. By default, the list of watched tables in full_table_names - will be empty for a db-level changefeed, giving the total number of - watched tables. A new option WITH WATCHED_TABLES is added that will make - SHOW CHANGEFEED JOBS return the full list of target tables, like with + Modified `SHOW CHANGEFEED JOBS` field `full_table_names` for db-level + changefeeds. By default, the list of watched tables in `full_table_names` + is empty for a db-level changefeed, giving the total number of + watched tables. Added a new option `WITH WATCHED_TABLES` that makes + `SHOW CHANGEFEED JOBS` return the full list of target tables, like with non-db level changefeeds. [#151131][#151131] - Users can now manually create single-column partial statistics on boolean predicate expressions that can become simple index scans. These statistics can be created by adding a constraining `WHERE` expression to `CREATE STATISTICS`. @@ -45,38 +45,24 @@ The following cases are not supported: INSERT INTO t VALUES (1), (2), (3), (4), (5); CREATE STATISTICS constrained_stat ON a FROM t WHERE a > 2; ~~~ [#152469][#152469] -- Added a clamp for the estimated selectivity of - inequality predicates that are unbounded on one or both sides (ex: `x > 5`). - This reduces the chances of a catastrophic understimate causing the optimizer - to choose a poorly-constrained scan. The new logic is off by default, gated by - the session setting `optimizer_clamp_inequality_selectivity`. [#153067][#153067] -- Added a clamp for row-count estimates over very - large tables so that the optimizer assumes that at least one distinct value - will be scanned. This reduces the chances of a catastrophic underestimate. - The new logic is off by default, gated by a session setting - `optimizer_clamp_low_histogram_selectivity`. [#153067][#153067] -- The optimizer can now use table statistics - that merge the latest full statistic with all newer partial statistics, - including those over arbitrary constraints over a single span. [#153419][#153419] +- Added a clamp for the estimated selectivity of inequality predicates that are unbounded on one or both sides (e.g., `x > 5`). This reduces the risk of a catastrophic underestimate that causes the optimizer to choose a poorly-constrained scan. The feature is disabled by default and can be enabled with the session setting `optimizer_clamp_inequality_selectivity`. [#153067][#153067] +- Added a clamp on row-count estimates for very large tables to ensure the optimizer assumes at least one distinct value will be scanned. This reduces the risk of a catastrophic underestimate. The feature is off by default and controlled by the `optimizer_clamp_low_histogram_selectivity` session setting. [#153067][#153067] +- The optimizer can now use table statistics that merge the latest full statistic with all newer partial statistics, including those over arbitrary constraints over a single span. [#153419][#153419] - Added the `sql.catalog.allow_leased_descriptors.enabled` cluster setting, which is false by default. When set to true, queries that access the `pg_catalog` or `information_schema` can use cached leased descriptors to populate the data in those tables, with the tradeoff that some of the data could be stale. [#154051][#154051] -- Added a default-off cluster setting - (`sql.log.scan_row_count_misestimate.enabled`) that enables logging a - warning on the gateway node when optimizer estimates for scans are - inaccurate. The log message includes the table and index being scanned, - the estimated and actual row counts, the time since the last table stats - collection, and the table's estimated staleness. [#154370][#154370] +- Added a default-off cluster setting (`sql.log.scan_row_count_misestimate.enabled`) that enables logging a warning on the gateway node when optimizer estimates for scans are inaccurate. The log message includes the table and index being scanned, the estimated and actual row counts, the time since the last table stats collection, and the table's estimated staleness. [#154370][#154370] - Fixed a bug where the results of `ALTER SEQUENCE`'s increment and `SELECT nextval()` operations were not as expected. The value of a sequence after an `ALTER SEQUENCE` statement has executed on it is now consistent with a sequence created with those values. [#154489][#154489] -- Add changefeed setting - range_distribution_strategy with values 'default' or 'balanced_simple' - (e.g. CREATE CHANGEFEED FOR x into 'null://' WITH - range_distribution_strategy='balanced_simple'). - This new per-changefeed setting will override the cluster setting - changefeed.default_range_distribution_strategy where both exist. [#154744][#154744] +- Added changefeed setting + `range_distribution_strategy` with values `'default'` or `'balanced_simple'`. + This new per-changefeed setting overrides the cluster setting + `changefeed.default_range_distribution_strategy` where both exist. + + Example: + ~~~ sql + CREATE CHANGEFEED FOR x into 'null://' WITH + range_distribution_strategy='balanced_simple'; + ~~~ [#154744][#154744] - Added the `INSPECT` command, which runs consistency validation check jobs against tables or databases and specified indexes. [#154873][#154873] -- Added support for collecting partial - statistics when the given `WHERE` clause implies the predicate of a - partial index with the requested column as the first key column. For - example: +- Added support for collecting partial statistics when the given `WHERE` clause implies the predicate of a partial index with the requested column as the first key column. For example: ``` CREATE TABLE t (a INT, INDEX idx_partial (a) WHERE a > 5); @@ -84,70 +70,26 @@ The following cases are not supported: ``` [#154892][#154892] - The `row_security` session variable now behaves like in postgres, allowing users to detect when RLS is applied. [#155110][#155110] -- Added the - bulkio.index_backfill.vector_merge_batch_size cluster setting to control - how many vectors to merge into a vector index per transaction during - create operations. By default, this defaults to 3. [#155284][#155284] -- Changes scan misestimate logging gated behind - `sql.log.scan_row_count_misestimate.enabled` to use structured logging - including the table and index being scanned, the estimated and actual - row counts, the time since the last table stats collection, and the - table's estimated staleness. [#155454][#155454] -- The `EXPERIMENTAL SCRUB` command is - deprecated. The `INSPECT` command should be used for data consistency - validation. [#155485][#155485] -- Vector indexing is now enabled by default. [#155536][#155536] +- Added the `bulkio.index_backfill.vector_merge_batch_size` cluster setting to control how many vectors to merge into a vector index per transaction during create operations. The setting defaults to `3`. [#155284][#155284] +- Updated the scan misestimate logging, which is controlled by the `sql.log.scan_row_count_misestimate.enabled` cluster setting, to use structured logging. The logs now include the scanned table and index, the estimated and actual row counts, the time since the last table statistics collection, and the table's estimated staleness. [#155454][#155454] +- Deprecated the `EXPERIMENTAL SCRUB` command is deprecated. Use the `INSPECT` command for data consistency validation. [#155485][#155485] +- Vector indexing is now enabled by default. `feature.vector_index.enabled` defaults to `true`. [#155536][#155536] - `INSPECT` supports a `DETACHED` option to run the operation without waiting for it. [#155774][#155774] - `ALTER TABLE ... DROP STORED` statements are now executed internally by the declarative schema changer. [#155778][#155778] -- Added sql.statements.rows_read.count metric - that counts the number of index rows read by SQL statements. [#155820][#155820] -- Added EXPLAIN (FINGERPRINT) statement that - returns normalized statement fingerprints with constants replaced by - underscores. - - 🤖 Generated with [Claude Code](https://claude.ai/code) - - Co-Authored-By: Claude [#156152][#156152] -- This release introduces two new settings to - control the use of canary statistics in query planning: - 1. Cluster setting `sql.stats.canary_fraction` (float, range [0, 1], - default: 0): - Controls what fraction of queries use "canary statistics" (newly - collected stats within their canary window) versus "stable statistics" - (previously proven stats). For example, a value of 0.2 means 20% of - queries will use canary stats while 80% use stable stats. The selection - is atomic per query: if a query is chosen for canary evaluation, it - uses canary statistics for ALL tables it references (where available). - A query never uses a mix of canary and stable statistics. - 2. Session variable `canary_stats_mode` (enum: {auto, off, on}, - default: auto): - - `on`: All queries in the session use canary stats for planning - - `off`: All queries in the session use stable stats for planning - - `auto`: The system decides based on `sql.stats.canary_fraction` for - each query execution [#156307][#156307] -- A new table storage parameter - `sql_stats_canary_window` has been introduced to enable gradual rollout - of newly collected table statistics. It takes a duration string as the - value. When set with a positive duration, the new statistics remain in - a "canary" state for the specified duration before being promoted to - stable. This allows for controlled exposure and intervention - opportunities before statistics are fully deployed across all queries. [#156307][#156307] -- We have introduced the "SHOW FINGERPRINTS FOR - TABLE" SQL command, which produces a FNV hash of each index a table. FNV - is used here for performance reasons. [#156600][#156600] -- The `optimizer_clamp_low_histogram_selectivity` - and `optimizer_clamp_inequality_selectivity` settings are now on by default. - This will cause the optimizer to assume that at least one distinct value - "passes" each filter in a query, and that open-ended inequality filters - select at least 1/10000 rows from the table. This reduces the chances of - a catastrophic row count underestimate when stats are inaccurate. [#156610][#156610] +- Added a `sql.statements.rows_read.count` metric that counts the number of index rows read by SQL statements. [#155820][#155820] +- Added the `EXPLAIN (FINGERPRINT)` statement, which returns normalized statement fingerprints with constants replaced by underscores. For example, `EXPLAIN (FINGERPRINT) SELECT * FROM t WHERE a = 123` returns `SELECT * FROM t WHERE a = _`. [#156152][#156152] +- Introduced two new settings to control the use of canary statistics in query planning: + - Cluster setting `sql.stats.canary_fraction` (float, range [0, 1], default: 0): Controls what fraction of queries use "canary statistics" (newly collected stats within their canary window) versus "stable statistics" (previously proven stats). For example, a value of `0.2` means 20% of queries will use canary stats while 80% use stable stats. The selection is atomic per query: if a query is chosen for canary evaluation, it uses canary statistics for **all** tables it references (where available). A query never uses a mix of canary and stable statistics. + - Session variable `canary_stats_mode` (enum: {auto, off, on}, default: auto): + - `on`: All queries in the session use canary stats for planning. + - `off`: All queries in the session use stable stats for planning. + - `auto`: The system decides based on `sql.stats.canary_fraction` for each query execution. [#156307][#156307] +- Introduced a new table storage parameter, `sql_stats_canary_window`, to enable gradual rollout of newly collected table statistics. It takes a duration string as the value. When set with a positive duration, the new statistics remain in a "canary" state for the specified duration before being promoted to stable. This allows for controlled exposure and intervention opportunities before statistics are fully deployed across all queries. [#156307][#156307] +- Introduced `SHOW FINGERPRINTS FOR TABLE`, which produces an FNV hash for each index in a table. FNV is used for performance reasons and is sensitive to changes in the underlying data, including `NULL`s. [#156600][#156600] +- The `optimizer_clamp_low_histogram_selectivity` and `optimizer_clamp_inequality_selectivity` settings are now on by default. This causes the optimizer to assume that at least one distinct value "passes" each filter in a query, and that open-ended inequality filters select at least 1/10000 rows from the table. This reduces the chances of a catastrophic row count underestimate when stats are inaccurate. [#156610][#156610] - The `ALTER TABLE ... SET/ADD GENERATED AS IDENTITY` statement is supported by the declarative schema changer in v26.1 and later. [#157144][#157144] -- EXPLAIN and EXPLAIN ANALYZE will now display - the number of hints from `system.statement_hints` applied to the executed - statement. [#157160][#157160] -- Plan details in the "statement activity" page - of the DB console now show whether any hints from `system.statement_hints` - werer applied to the statement execution. [#157160][#157160] +- `EXPLAIN` and `EXPLAIN ANALYZE` will now display the number of hints from `system.statement_hints` applied to the executed statement. [#157160][#157160] +- The **Plan Details** in the **Statement Activity** page of the DB Console now show whether any hints from `system.statement_hints` were applied to the statement execution. [#157160][#157160]

Operational changes

@@ -157,318 +99,233 @@ The following cases are not supported: bespoke restore and import event logs. For any customer that relies on those logs, we can maintain UX parity by plumbing the sql user that owns the job to the status change event log. [#153889][#153889] -- Two new changefeed metrics for tracking - the max skew between a changefeed's slowest and fastest span/table - have been added. The metrics are gauge metrics with the names - `changefeed.progress_skew.{span,table}`. [#153975][#153975] +- Added two new changefeed metrics for tracking + the max skew between a changefeed's slowest and fastest span/table. The metrics are gauge metrics with the names + `changefeed.progress_skew.{span}` and `changefeed.progress_skew.{table}`. [#153975][#153975] - Added the cluster setting `storage.snapshot.recreate_iter_duration` (default 20s), which controls how frequently a long-lived storage engine iterator, backed by an engine snapshot, will be closed and recreated. Currently, it is only used for iterators used in rangefeed catchup scans. [#154412][#154412] - Added cluster setting `sql.schema.approx_max_object_count` (default: 20,000) to prevent creation of new schema objects when the limit is exceeded. The check uses cached table statistics for performance and is approximate - it may not be immediately accurate until table statistics are updated by the background statistics refreshing job. Clusters that have been running stably with a larger object count should raise the limit or disable the limit by setting the value to 0. In future releases, the default value for this setting will be raised as more CockroachDB features support larger object counts. [#154495][#154495] -- Cleaned up several +- Cleaned up redundant and misleading metrics. [#154545][#154545] -- Fix changefeed.parallel_io_pending_rows metric +- Fixed the `changefeed.parallel_io_pending_rows` metric's y-axis label to match the metric's definition. [#154552][#154552] -- Add metric changefeed.parallel_io_workers to +- Added a metric called `changefeed.parallel_io_workers` to track the number of workers in ParallelIO. [#154552][#154552] -- This change completes the migration of changfeed events, sample query/txn events, sql_perf events into their respective new logging channels. In order to keep using the old channels, users have to set the setting: - `log.channel_compatibility_mode.enabled` to true. [#154670][#154670] +- Events related to changefeed operations are now routed to the `CHANGEFEED` channel, while sampled queries and transactions, along with certain SQL performance events, are logged to `SQL_EXEC`. To continue using the previous logging channels, set `log.channel_compatibility_mode.enabled` to `true`. [#154670][#154670] - Successfully completed automatic SQL stats collecton jobs are now automatically purged rather than being retained for the full default job retention period. [#155848][#155848] - The cluster setting `storage.snapshot.recreate_iter_duration` (default `20s`) controls how frequently a long-lived engine iterator, backed by an engine snapshot, will be closed and recreated. Currently, it is only used for iterators used in rangefeed catchup scans. [#156303][#156303] -- ensure the user can run CREATE LOGICAL REPLICATION - STREAM where the source table has a column with a sequence expression. [#156975][#156975] +- Add support for `CREATE LOGICAL REPLICATION STREAM` in situations where the source table has a column with a sequence expression. [#156975][#156975]

Command-line changes

- `cockroach workload run` commands now offer - a `--with-changefeed` flag to additionally run a changefeed watching for + a `--with-changefeed` flag to additionally run a changefeed that watches for writes to the workload's tables. Co-authored-by: Steven Danna [#155516][#155516]

DB Console changes

-- SQL dashboard has been extended to include - more details (mostly about stmts executed within routines and table - statistics collections). [#155203][#155203] +- The **SQL** dashboard has been enhanced with additional insights. The **Transaction Restarts** dashboard now displays `txn.restarts.txnpush` and `txn.restarts.unknown` metrics. A new **Failed SQL Connections** graph shows failed SQL connection attempts. A new **SQL Queries Within Routines Per Second** dashboard reports on `SELECT`, `UPDATE`, `INSERT`, and `DELETE` operations executed within routines. A new **Table Statistics Collections** dashboard provides information on auto, auto partial, and manual statistics collections. [#155203][#155203] - The background (elastic) store graphs for exhausted duration, and the wait duration histogram, have been separated from the foreground (regular) graphs. [#156801][#156801]

Bug fixes

-- Previously, CockroachDB would omit execution - statistics in EXPLAIN ANALYZE output for mutation nodes when a RETURNING - clause was used. The bug has been present since before v21.1 and is now fixed. [#145934][#145934] -- CockroachDB could previously encounter "vector - encoder doesn't support ForcePut yet" error when performing COPY command - concurrently with some schema changes. The bug has been present since - before 23.2 and is now fixed. [#148549][#148549] -- Fix a bug in which a Read Committed or Snapshot - isolation transaction may be committed despite returning a non-ambiguous - error. [#152010][#152010] +- Previously, CockroachDB would omit execution statistics in `EXPLAIN ANALYZE` output for mutation nodes when a `RETURNING` clause was used. The bug was present since before v21.1 and is now fixed. [#145934][#145934] +- Fixed a bug where CockroachDB could encounter a `vector encoder doesn't support ForcePut yet` error when executing `COPY` commands concurrently with certain schema changes. The bug had existed since before v23.2. [#148549][#148549] +- Fixed a bug causing a `READ COMMITTED` or `SNAPSHOT` isolation transaction to be committed despite returning a non-ambiguous error. [#152010][#152010] - Fixed `IMPORT` progress reporting to show the correct row counts when concurrent job state changes occur. [#152745][#152745] -- A bug in type-checking placeholders with - `UNKNOWN` types has been fixed. It could cause incorrect results in some - cases. [#152882][#152882] +- Fixed a bug in type-checking placeholders with `UNKNOWN` types. It could cause incorrect results in some cases. [#152882][#152882] - Fixed a bug where `EXPORT CSV` and `EXPORT PARQUET` could cause a node crash when their result rows were used as input to a mutation, such as an `INSERT`, within the same SQL statement. This bug had been present since before v22.1. [#153951][#153951] - **Idle latency** on the **Transaction Details** page in the DB Console is now reported more accurately. Previously, transactions that used prepared statements (e.g., with placeholders) overcounted idle time, while those that included observer statements (common in the SQL CLI) undercounted it. [#154028][#154028] - Fixed a bug that caused panics when executing `COPY` into a table with hidden columns and expression indexes. The panic only occurred when the session setting `expect_and_ignore_not_visible_columns_in_copy` was enabled. This bug was introduced with `expect_and_ignore_not_visible_columns_in_copy` in v22.1.0. [#154162][#154162] - Vector index backfill jobs now correctly report progress in the `SHOW JOBS` output. [#154209][#154209] - Fixed a bug where `RESTORE` of a database with a `SECONDARY REGION` did not apply the lease preferences for that region. [#154522][#154522] -- A bug where a changefeed could perform - many unnecessary job progress saves during an initial scan has - been fixed. [#154598][#154598] -- Previously, CockroachDB would not log events for - TxnRowsRead and TxnRowsWritten guardrail for internal queries into - SQL_INTERNAL_PERF channel. The bug has been present since 21.2 and - has now been fixed. [#154670][#154670] +- Fixed a bug where a changefeed could perform + many unnecessary job progress saves during an initial scan. [#154598][#154598] +- Fixed a bug where CockroachDB would not log events for `TxnRowsRead` and `TxnRowsWritten` guardrails for internal queries into the `SQL_INTERNAL_PERF` logging channel. The bug was present since v21.2. [#154670][#154670] - Fixed a bug that caused internal errors for `INSERT .. ON CONFLICT .. DO UPDATE` statements when the target table had both a computed column and a `BEFORE` trigger. This bug was present since triggers were introduced in v24.3.0. [#154789][#154789] -- A bug where a changefeed targeting only a subset - of a table's column families could become stuck has been fixed. [#154802][#154802] -- Previously, CockroachDB would hit an internal - error when performing an inverted join using an inverted index in which - the first prefix column had DESC direction. The bug has been present - since 21.1 and is now fixed. [#154914][#154914] +- Fixed a bug where a changefeed targeting only a subset + of a table's column families could become stuck. [#154802][#154802] +- Fixed a bug where CockroachDB would hit an internal error when performing an inverted join using an inverted index in which the first prefix column had `DESC` direction. The bug was present since v21.1. [#154914][#154914] - Fixed a bug where the `kvflowcontrol.send_queue.scheduled.force_flush` metric was missing a decrement, resulting in a value of greater than `0` even when there was no ongoing force flush. [#154960][#154960] - Fixed a bug that would cause `WITH READ VIRTUAL CLUSTER` to be ignored if any other options were passed when running `CREATE VIRTUAL CLUSTER FROM REPLICATION`. [#154963][#154963] -- Change assertions about histogram NumRange=0 to - only be checked in test builds. [#155035][#155035] -- Fix a bug in which range counts in table - statistics histograms were not handled correctly after a user-defined - enum type was modified. [#155035][#155035] +- Internal assertions that verify `NumRange = 0` in the first histogram bucket, used to catch malformed statistics, now run only in test builds to avoid crashing production queries. [#155035][#155035] +- Fixed a bug in which range counts in table statistics histograms were not handled correctly after a user-defined `ENUM` type was modified. [#155035][#155035] - Fixed a bug in the `cockroach node drain` command where draining a node using virtual clusters (such as clusters running Physical Cluster Replication (PCR)) could return before the drain was complete, possibly resulting in shutting down the node while it still had active SQL clients and range leases. [#155063][#155063] - Fixed a bug where a race condition in range splits could result in a regressed Raft state on a post-split range. This condition was extremely rare, and only observed during internal testing. [#155143][#155143] -- A potential deadlock during vector index - creation has been corrected. [#155192][#155192] -- Fix a bug that would result in a node crash if a - PCR or LDR URI used sslinline=true with sslmode=disable. [#155232][#155232] -- Previously, we could corrupt the first bucket of - table statistic histograms in certain cases, causing underestimates for - range counts near the lower end of the domain, which is now fixed. [#155242][#155242] +- Corrected a potential deadlock during vector index creation. [#155192][#155192] +- Fixed a bug that would result in a node crash if a + PCR or LDR URI used `sslinline=true` with `sslmode=disable`. [#155232][#155232] +- Fixed a bug where CockroachDB could corrupt the first bucket of table statistic histograms in certain cases, causing underestimates for range counts near the lower end of the domain. [#155242][#155242] - Added proper dependency handling when adding a constraint with `NOT VALID` that references a user-defined function (UDF). [#155404][#155404] -- A bug has been fixed that prevented the query - optimizer from recognizing correlated filters when one of the filtered - columns had a single distinct value across all rows. This bug could - lead to sub-optimal query plans in some cases. [#155407][#155407] +- Fixed a bug that prevented the optimizer from recognizing correlated filters when one of the filtered columns had a single distinct value across all rows. This could lead to suboptimal query plans in some cases. [#155407][#155407] - The username remapping functionality specified by the `server.identity_map.configuration` cluster setting now matches identities and usernames with a case-insensitive comparison. [#155531][#155531] -- Previously, we could have inconsistencies - between the forecasted stats shown in `SHOW STATISTICS ... WITH - FORECAST` and forecasted stats in the stats cache depending on whether - `WITH MERGE` was also specified. We now correctly display all forecasted - stats, regardless of `WITH MERGE`. [#155615][#155615] -- Previously, CockroachDB would crash when - executing EXPLAIN ANALYZE statements with the pausable portal model - (meaning that it was run via the extended PGWire protocol using Parse, - Bind, Execute, when `multiple_active_portals_enabled` session variable - is enabled). The bug has been present since 23.2 and is now fixed. [#155655][#155655] +- Previously, the forecasted statistics shown in `SHOW STATISTICS ... WITH FORECAST` could be inconsistent with those in the stats cache, depending on whether `WITH MERGE` was specified. Forecasted statistics are now displayed consistently, regardless of the `WITH MERGE` clause. [#155615][#155615] +- Fixed a bug where CockroachDB could crash when executing `EXPLAIN ANALYZE` statements using the pausable portal model. This would occur when the query was executed via the extended PGWire protocol (`Parse`, `Bind`, `Execute`) with the `multiple_active_portals_enabled` session variable set. The bug was present since v23.2. [#155655][#155655] - `INSPECT` can now be run on tables with indexes that store `REFCURSOR`-typed columns. [#155772][#155772] - Fixes a bug where `DROP SCHEMA CASCADE` could run into an error with complex references from triggers. [#155777][#155777] -- Fixes a bug where the job responsible for - compacting stats for the SQL activity state could enter an unschedulable - state. - Fixes: #155165 [#155809][#155809] -- Previously, CockroachDB didn't include reads and - writes performed by routines (user-defined functions and stored - procedures) as well as apply joins into `bytes read`, `rows read`, and - `rows written` statement execution statistics, and this is now fixed. - The bug has been present since before 23.2 version. [#155824][#155824] +- Fixed a bug where the job responsible for compacting stats for the SQL activity state could enter an unschedulable state. Fixes: #155165 [#155809][#155809] +- Fixed a bug where reads and writes performed by routines (user-defined functions and stored procedures) and apply joins were not included in `bytes read`, `rows read`, and `rows written` statement execution statistics. This bug had been present since before v23.2. [#155824][#155824] - `INSPECT` now correctly checks index consistency at the historical timestamp when using `AS OF SYSTEM TIME`, even for spans with no current data. [#155837][#155837] - The `INSPECT` statement now detects dangling secondary index entries even when the primary index spans contain no data. [#155844][#155844] -- Previously, CockroachDB could encounter an - internal error when replacing (via CREATE OR REPLACE stmt) - a user-defined function or a stored procedure when multiple DEFAULT - expressions are included in the old signature. The bug has been present - since v24.2 (when support for DEFAULT expressions was added) and is now - fixed. [#155867][#155867] +- Fixed an internal error that could occur when replacing a user-defined function or stored procedure using `CREATE OR REPLACE`, if the existing signature included multiple `DEFAULT` expressions. This bug was introduced in v24.2, when support for `DEFAULT` expressions was added. [#155867][#155867] - `INSPECT` no longer fails when checking index consistency on indexes with virtual key columns. Such indexes will now be skipped. [#155956][#155956] -- A bug which could occasionally cause DML on - regional by row tables with unique indexes that don't reference the - region to fail under READ-COMMITTED isolation has been corrected. [#156105][#156105] +- Fixed a bug where DML statements on regional by row tables with unique indexes that do not reference the region could sometimes fail under `READ COMMITTED` isolation. [#156105][#156105] - Fixed a bug where Zone Config Extensions incorrectly prevented users from removing non-voting read replicas from multi-region databases. Users can now set `num_replicas` equal to `num_voters` to remove read replicas while maintaining the required number of voting replicas for their database's survival goal. This allows reducing storage costs without compromising availability guarantees. [#156228][#156228] -- A bug has been fix with the `ltree2text` - built-in function in which the returned `TEXT` value was incorrectly - wrapped with single quotes. This bug has been present since the - `ltree2text` built-in was introduced in v25.4.0. [#156485][#156485] -- A bug has been fixed that caused incorrect - results for queries that filter indexed `LTREE` columns with the `<@` - (contained-by) operator. This bug has been present since v25.4.0. - - Co-authored-by: Yahor Yuzefovich - Co-authored-by: Michael Erickson [#156573][#156573] -- Previously, the "atomic" COPY command - (controlled via `copy_from_atomic_enabled`, which is `true` by default) - could encounter RETRY_COMMIT_DEADLINE_EXCEEDED txn errors if the whole - command took 1 minute or more. This was the case only when the - vectorized engine was used for COPY and is now fixed. [#156584][#156584] -- Fix a bug that could result in a transaction encountering - the following assertion failure: - +- Fixed a bug in the `ltree2text` built-in function where the returned `TEXT` value was incorrectly wrapped in single quotes. This bug had been present since the `ltree2text` function was introduced in v25.4.0. [#156485][#156485] +- Fixed a bug that caused incorrect results for queries that filter indexed `LTREE` columns with the `<@` (contained-by) operator. This bug was present since v25.4.0. [#156573][#156573] +- Fixed a bug where the "atomic" `COPY` command (controlled via the `copy_from_atomic_enabled` session setting, `true` by default) could encounter `RETRY_COMMIT_DEADLINE_EXCEEDED` transaction errors if the whole command took 1 minute or more. This bug occurred only when the vectorized engine was used for `COPY`. [#156584][#156584] +- Fixed a bug that caused transactions to fail with the following error message: + failed indeterminate commit recovery: programming error: timestamp change by implicitly committed transaction [#156722][#156722] -- Fix JSON path index acceleration with JSON array - objects. Only 25.4.0 releases are affected. [#156828][#156828] +- Fixed a bug in JSONPath index acceleration where queries using `jsonb_path_exists` with a root key (e.g., `$.b`) incorrectly returned no results when the queried JSON was an array. This fix enables unwrapping a single array layer at the root, allowing the path to be evaluated against each element. Only v25.4.0 releases were affected. [#156828][#156828] - Fixed a bug that prevents large `TRUNCATE` operations from completing due to `command is too large` errors. [#156867][#156867] -- Fix bug that could result in incorrect - gossip.callbacks.pending_duration metric value being recorded. [#156939][#156939] +- Fixed a bug that caused incorrect `gossip.callbacks.pending_duration` metric values to be recorded. [#156939][#156939] - Fixed a bug where transactions running concurrently with a `GRANT` or `REVOKE` on virtual tables or via external connections could observe modifications incorrectly. [#156949][#156949] -- Previously, CockroachDB could encounter an - internal error when evaluating COPY FROM command in a transaction after - it's been rolled back to a savepoint. The bug has been present since - before 23.2 version and is now fixed. [#156959][#156959] -- A bug has been fixed that could cause internal - errors for queries using generic query plans with `NULL` placeholder - values. [#156962][#156962] +- Fixed a bug where CockroachDB could encounter an internal error when evaluating a `COPY FROM` command in a transaction after it was rolled back to a savepoint. The bug was present since before v23.2. [#156959][#156959] +- Fixed a bug that could cause internal errors for queries using generic query plans with `NULL` placeholder values. [#156962][#156962] - Fixed a bug that could cause a schema change to be stuck in the reverting state if the `infer_rbr_region_col_using_constraint` storage parameter was being set at the same time as adding a constraint that had a foreign key violation. [#157834][#157834]

Performance improvements

-- The cost of generic query plans - is now calculated based on worst-case selectivities for placeholder - equalities (e.g., x = $1). This reduces the chance of suboptimal generic - query plans being chosen when `plan_cache_mode=auto`. [#151409][#151409] +- The cost of generic query plans is now calculated based on worst-case selectivities for placeholder equalities (e.g., `x = $1`). This reduces the chance of suboptimal generic query plans being chosen when `plan_cache_mode=auto`. [#151409][#151409] - TTL jobs now checkpoint their progress, allowing them to resume without reprocessing already completed spans after a restart. [#152618][#152618] -- Queries with filters in the form - `a LIKE b ESCAPE '\'` are now index-accelerated in some cases which they - were not before. [#155064][#155064] -- The optimizer chooses suboptimal - generic query plans in fewer cases. [#155163][#155163] +- Queries with filters in the form `a LIKE b ESCAPE '\'` are now index-accelerated in certain cases where they were not before. [#155064][#155064] +- The optimizer now chooses suboptimal generic query plans in fewer cases. It will no longer choose a generic query plan with unbounded cardinality over a custom query plan with bounded cardinality, +regardless of `optimizer_prefer_bounded_cardinality`. [#155163][#155163] - Optimized validation queries during `ALTER PRIMARY KEY` to avoid counting the primary key multiple times. [#156889][#156889] -- This commit teaches the - optimizer to split disjunctions on the same column into unions when - there are multiple partial indexes with different predicates referencing - that column. [#157083][#157083] +- The optimizer now splits disjunctions on the same column into unions when there are multiple partial indexes with different predicates referencing that column. [#157083][#157083]

Build changes

-- Upgrade to Go 1.25.3 [#156000][#156000] +- Upgraded to Go version 1.25.3 [#156000][#156000]

Miscellaneous

-- Adds initial and catchup scan metrics to PCR under +- Added initial and catchup scan metrics to PCR under `physical_replication.scanning_ranges` and `physical_replication.catchup_ranges`. [#153893][#153893] -- Add a default TryTimeout of 60 seconds for Azure Blob - Storage to mitigate occasional stuck operations. - Fixes: #154085 [#154149][#154149] +- Added a retry policy for Azure Blob Storage with a default of 60 seconds to mitigate occasional stuck operations. Retry policy is configurable with the `cloudstorage.azure.try.timeout` setting. Fixes: #154085 [#154149][#154149] - LDR now updates the `logical_replication.scanning_ranges` and `logical_replication.catchup_ranges` metrics during fast initial scan. [#155274][#155274] -- Add `jobs.registry.max_adoptions_per_loop` cluster setting - to configure maximum number of jobs a node can adopt per adoption loop. [#155385][#155385] -- Admin users now have full access to all external - connections. [#155657][#155657] +- Added `jobs.registry.max_adoptions_per_loop` cluster setting to configure the maximum number of jobs a node can adopt per adoption loop. [#155385][#155385] +- Fixed a bug that prevented admin users from having full access to external connections created by other users. [#155657][#155657] - LDR no longer requires the database name to be specified in the external connection URI when setting up a bidirectional stream. [#155729][#155729] - Span config reconciliation jobs no longer fail on the - destination after cutover from a PCR stream of a system tenant. [#156003][#156003] -- LDR now supports partial indexes and is tolerant of - mismatched column ids in the source and destination tables. + destination after failover from a PCR stream of a system virtual cluster. [#156003][#156003] +- Added support of partial indexes to Logical Data Replication, tolerant of mismatched column IDs in the source and destination tables. Epic: CRDB-51533 [#156935][#156935] - Display whether build is FIPS-enabled in `cockroach version` [#157223][#157223] -[#156935]: https://github.com/cockroachdb/cockroach/pull/156935 -[#153067]: https://github.com/cockroachdb/cockroach/pull/153067 +[#155485]: https://github.com/cockroachdb/cockroach/pull/155485 +[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 +[#154892]: https://github.com/cockroachdb/cockroach/pull/154892 +[#151946]: https://github.com/cockroachdb/cockroach/pull/151946 +[#155192]: https://github.com/cockroachdb/cockroach/pull/155192 +[#151131]: https://github.com/cockroachdb/cockroach/pull/151131 +[#156105]: https://github.com/cockroachdb/cockroach/pull/156105 +[#155615]: https://github.com/cockroachdb/cockroach/pull/155615 +[#155837]: https://github.com/cockroachdb/cockroach/pull/155837 +[#156889]: https://github.com/cockroachdb/cockroach/pull/156889 +[#154744]: https://github.com/cockroachdb/cockroach/pull/154744 +[#155143]: https://github.com/cockroachdb/cockroach/pull/155143 +[#155774]: https://github.com/cockroachdb/cockroach/pull/155774 +[#154873]: https://github.com/cockroachdb/cockroach/pull/154873 +[#157160]: https://github.com/cockroachdb/cockroach/pull/157160 +[#154028]: https://github.com/cockroachdb/cockroach/pull/154028 +[#155035]: https://github.com/cockroachdb/cockroach/pull/155035 +[#155242]: https://github.com/cockroachdb/cockroach/pull/155242 +[#155407]: https://github.com/cockroachdb/cockroach/pull/155407 +[#155844]: https://github.com/cockroachdb/cockroach/pull/155844 [#154963]: https://github.com/cockroachdb/cockroach/pull/154963 [#155655]: https://github.com/cockroachdb/cockroach/pull/155655 -[#155772]: https://github.com/cockroachdb/cockroach/pull/155772 [#155064]: https://github.com/cockroachdb/cockroach/pull/155064 -[#155867]: https://github.com/cockroachdb/cockroach/pull/155867 -[#153419]: https://github.com/cockroachdb/cockroach/pull/153419 -[#154412]: https://github.com/cockroachdb/cockroach/pull/154412 -[#153951]: https://github.com/cockroachdb/cockroach/pull/153951 -[#154522]: https://github.com/cockroachdb/cockroach/pull/154522 +[#153067]: https://github.com/cockroachdb/cockroach/pull/153067 +[#155063]: https://github.com/cockroachdb/cockroach/pull/155063 +[#155203]: https://github.com/cockroachdb/cockroach/pull/155203 [#155163]: https://github.com/cockroachdb/cockroach/pull/155163 +[#153893]: https://github.com/cockroachdb/cockroach/pull/153893 +[#154522]: https://github.com/cockroachdb/cockroach/pull/154522 +[#155777]: https://github.com/cockroachdb/cockroach/pull/155777 +[#154051]: https://github.com/cockroachdb/cockroach/pull/154051 +[#154412]: https://github.com/cockroachdb/cockroach/pull/154412 +[#152882]: https://github.com/cockroachdb/cockroach/pull/152882 +[#155404]: https://github.com/cockroachdb/cockroach/pull/155404 +[#150793]: https://github.com/cockroachdb/cockroach/pull/150793 +[#155516]: https://github.com/cockroachdb/cockroach/pull/155516 +[#156722]: https://github.com/cockroachdb/cockroach/pull/156722 [#154870]: https://github.com/cockroachdb/cockroach/pull/154870 -[#154370]: https://github.com/cockroachdb/cockroach/pull/154370 -[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 -[#154802]: https://github.com/cockroachdb/cockroach/pull/154802 [#155385]: https://github.com/cockroachdb/cockroach/pull/155385 -[#151946]: https://github.com/cockroachdb/cockroach/pull/151946 -[#154960]: https://github.com/cockroachdb/cockroach/pull/154960 -[#155242]: https://github.com/cockroachdb/cockroach/pull/155242 -[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 [#155536]: https://github.com/cockroachdb/cockroach/pull/155536 -[#156600]: https://github.com/cockroachdb/cockroach/pull/156600 -[#154495]: https://github.com/cockroachdb/cockroach/pull/154495 -[#153990]: https://github.com/cockroachdb/cockroach/pull/153990 -[#154051]: https://github.com/cockroachdb/cockroach/pull/154051 -[#154892]: https://github.com/cockroachdb/cockroach/pull/154892 -[#155844]: https://github.com/cockroachdb/cockroach/pull/155844 -[#154149]: https://github.com/cockroachdb/cockroach/pull/154149 -[#155274]: https://github.com/cockroachdb/cockroach/pull/155274 -[#156307]: https://github.com/cockroachdb/cockroach/pull/156307 -[#157160]: https://github.com/cockroachdb/cockroach/pull/157160 -[#155809]: https://github.com/cockroachdb/cockroach/pull/155809 +[#155848]: https://github.com/cockroachdb/cockroach/pull/155848 [#156962]: https://github.com/cockroachdb/cockroach/pull/156962 +[#157083]: https://github.com/cockroachdb/cockroach/pull/157083 +[#154370]: https://github.com/cockroachdb/cockroach/pull/154370 +[#155274]: https://github.com/cockroachdb/cockroach/pull/155274 +[#153990]: https://github.com/cockroachdb/cockroach/pull/153990 [#156000]: https://github.com/cockroachdb/cockroach/pull/156000 -[#155956]: https://github.com/cockroachdb/cockroach/pull/155956 -[#154744]: https://github.com/cockroachdb/cockroach/pull/154744 -[#157144]: https://github.com/cockroachdb/cockroach/pull/157144 -[#154162]: https://github.com/cockroachdb/cockroach/pull/154162 -[#156867]: https://github.com/cockroachdb/cockroach/pull/156867 -[#155729]: https://github.com/cockroachdb/cockroach/pull/155729 -[#154028]: https://github.com/cockroachdb/cockroach/pull/154028 -[#155143]: https://github.com/cockroachdb/cockroach/pull/155143 -[#154489]: https://github.com/cockroachdb/cockroach/pull/154489 -[#156152]: https://github.com/cockroachdb/cockroach/pull/156152 -[#156610]: https://github.com/cockroachdb/cockroach/pull/156610 -[#153975]: https://github.com/cockroachdb/cockroach/pull/153975 -[#155203]: https://github.com/cockroachdb/cockroach/pull/155203 -[#155110]: https://github.com/cockroachdb/cockroach/pull/155110 -[#153364]: https://github.com/cockroachdb/cockroach/pull/153364 -[#156573]: https://github.com/cockroachdb/cockroach/pull/156573 -[#155848]: https://github.com/cockroachdb/cockroach/pull/155848 -[#152882]: https://github.com/cockroachdb/cockroach/pull/152882 -[#155777]: https://github.com/cockroachdb/cockroach/pull/155777 -[#153893]: https://github.com/cockroachdb/cockroach/pull/153893 -[#152010]: https://github.com/cockroachdb/cockroach/pull/152010 -[#155063]: https://github.com/cockroachdb/cockroach/pull/155063 -[#156801]: https://github.com/cockroachdb/cockroach/pull/156801 +[#155778]: https://github.com/cockroachdb/cockroach/pull/155778 [#154598]: https://github.com/cockroachdb/cockroach/pull/154598 -[#156722]: https://github.com/cockroachdb/cockroach/pull/156722 -[#157834]: https://github.com/cockroachdb/cockroach/pull/157834 -[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 -[#155485]: https://github.com/cockroachdb/cockroach/pull/155485 -[#156303]: https://github.com/cockroachdb/cockroach/pull/156303 -[#155774]: https://github.com/cockroachdb/cockroach/pull/155774 -[#155837]: https://github.com/cockroachdb/cockroach/pull/155837 +[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 +[#156573]: https://github.com/cockroachdb/cockroach/pull/156573 +[#155454]: https://github.com/cockroachdb/cockroach/pull/155454 +[#156307]: https://github.com/cockroachdb/cockroach/pull/156307 +[#145934]: https://github.com/cockroachdb/cockroach/pull/145934 +[#154162]: https://github.com/cockroachdb/cockroach/pull/154162 +[#155772]: https://github.com/cockroachdb/cockroach/pull/155772 [#156584]: https://github.com/cockroachdb/cockroach/pull/156584 -[#152618]: https://github.com/cockroachdb/cockroach/pull/152618 -[#156105]: https://github.com/cockroachdb/cockroach/pull/156105 -[#155820]: https://github.com/cockroachdb/cockroach/pull/155820 -[#151131]: https://github.com/cockroachdb/cockroach/pull/151131 -[#154914]: https://github.com/cockroachdb/cockroach/pull/154914 -[#155615]: https://github.com/cockroachdb/cockroach/pull/155615 -[#155824]: https://github.com/cockroachdb/cockroach/pull/155824 +[#157834]: https://github.com/cockroachdb/cockroach/pull/157834 +[#156949]: https://github.com/cockroachdb/cockroach/pull/156949 [#157223]: https://github.com/cockroachdb/cockroach/pull/157223 -[#150793]: https://github.com/cockroachdb/cockroach/pull/150793 -[#154552]: https://github.com/cockroachdb/cockroach/pull/154552 -[#145934]: https://github.com/cockroachdb/cockroach/pull/145934 -[#156485]: https://github.com/cockroachdb/cockroach/pull/156485 -[#155657]: https://github.com/cockroachdb/cockroach/pull/155657 -[#151409]: https://github.com/cockroachdb/cockroach/pull/151409 -[#154873]: https://github.com/cockroachdb/cockroach/pull/154873 -[#155407]: https://github.com/cockroachdb/cockroach/pull/155407 -[#156939]: https://github.com/cockroachdb/cockroach/pull/156939 [#154545]: https://github.com/cockroachdb/cockroach/pull/154545 -[#148549]: https://github.com/cockroachdb/cockroach/pull/148549 +[#155284]: https://github.com/cockroachdb/cockroach/pull/155284 +[#153975]: https://github.com/cockroachdb/cockroach/pull/153975 +[#153951]: https://github.com/cockroachdb/cockroach/pull/153951 +[#154489]: https://github.com/cockroachdb/cockroach/pull/154489 [#155232]: https://github.com/cockroachdb/cockroach/pull/155232 -[#155531]: https://github.com/cockroachdb/cockroach/pull/155531 -[#156949]: https://github.com/cockroachdb/cockroach/pull/156949 +[#156828]: https://github.com/cockroachdb/cockroach/pull/156828 +[#157144]: https://github.com/cockroachdb/cockroach/pull/157144 +[#156303]: https://github.com/cockroachdb/cockroach/pull/156303 +[#148549]: https://github.com/cockroachdb/cockroach/pull/148549 +[#154960]: https://github.com/cockroachdb/cockroach/pull/154960 +[#155956]: https://github.com/cockroachdb/cockroach/pull/155956 +[#152618]: https://github.com/cockroachdb/cockroach/pull/152618 +[#155729]: https://github.com/cockroachdb/cockroach/pull/155729 [#156003]: https://github.com/cockroachdb/cockroach/pull/156003 -[#155035]: https://github.com/cockroachdb/cockroach/pull/155035 -[#155404]: https://github.com/cockroachdb/cockroach/pull/155404 -[#155454]: https://github.com/cockroachdb/cockroach/pull/155454 -[#155516]: https://github.com/cockroachdb/cockroach/pull/155516 -[#156959]: https://github.com/cockroachdb/cockroach/pull/156959 -[#156889]: https://github.com/cockroachdb/cockroach/pull/156889 +[#155809]: https://github.com/cockroachdb/cockroach/pull/155809 +[#155867]: https://github.com/cockroachdb/cockroach/pull/155867 +[#156228]: https://github.com/cockroachdb/cockroach/pull/156228 +[#156939]: https://github.com/cockroachdb/cockroach/pull/156939 +[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 +[#154495]: https://github.com/cockroachdb/cockroach/pull/154495 [#154209]: https://github.com/cockroachdb/cockroach/pull/154209 -[#156828]: https://github.com/cockroachdb/cockroach/pull/156828 -[#155284]: https://github.com/cockroachdb/cockroach/pull/155284 -[#155192]: https://github.com/cockroachdb/cockroach/pull/155192 -[#155778]: https://github.com/cockroachdb/cockroach/pull/155778 +[#156485]: https://github.com/cockroachdb/cockroach/pull/156485 +[#153419]: https://github.com/cockroachdb/cockroach/pull/153419 +[#155820]: https://github.com/cockroachdb/cockroach/pull/155820 +[#156152]: https://github.com/cockroachdb/cockroach/pull/156152 +[#152010]: https://github.com/cockroachdb/cockroach/pull/152010 +[#155531]: https://github.com/cockroachdb/cockroach/pull/155531 +[#151409]: https://github.com/cockroachdb/cockroach/pull/151409 +[#154552]: https://github.com/cockroachdb/cockroach/pull/154552 +[#156975]: https://github.com/cockroachdb/cockroach/pull/156975 +[#154914]: https://github.com/cockroachdb/cockroach/pull/154914 +[#156867]: https://github.com/cockroachdb/cockroach/pull/156867 +[#154149]: https://github.com/cockroachdb/cockroach/pull/154149 +[#155657]: https://github.com/cockroachdb/cockroach/pull/155657 +[#155110]: https://github.com/cockroachdb/cockroach/pull/155110 +[#153364]: https://github.com/cockroachdb/cockroach/pull/153364 [#154670]: https://github.com/cockroachdb/cockroach/pull/154670 +[#155824]: https://github.com/cockroachdb/cockroach/pull/155824 +[#156600]: https://github.com/cockroachdb/cockroach/pull/156600 +[#156801]: https://github.com/cockroachdb/cockroach/pull/156801 [#154789]: https://github.com/cockroachdb/cockroach/pull/154789 -[#157083]: https://github.com/cockroachdb/cockroach/pull/157083 -[#156975]: https://github.com/cockroachdb/cockroach/pull/156975 -[#156228]: https://github.com/cockroachdb/cockroach/pull/156228 +[#154802]: https://github.com/cockroachdb/cockroach/pull/154802 +[#156959]: https://github.com/cockroachdb/cockroach/pull/156959 +[#156935]: https://github.com/cockroachdb/cockroach/pull/156935 +[#156610]: https://github.com/cockroachdb/cockroach/pull/156610 From 6072c5adab38a7c3b642b545efe987d0f2081be7 Mon Sep 17 00:00:00 2001 From: mikeCRL Date: Fri, 5 Dec 2025 22:01:30 -0500 Subject: [PATCH 16/21] Removed PRs included in error, per Release team 1. #152469 - Removed bullet about creating single-column partial statistics on boolean predicate expressions 2. #153889 - Removed bullet about deprecating bespoke restore and import event logs 3. #152745 - Removed bullet about fixing IMPORT progress reporting 4. #155536 - Removed bullet about vector indexing being enabled by default --- .../releases/v26.1/v26.1.0-alpha.1.md | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md index 994bc443648..4ea13b447e3 100644 --- a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md +++ b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md @@ -36,15 +36,6 @@ The following cases are not supported: watched tables. Added a new option `WITH WATCHED_TABLES` that makes `SHOW CHANGEFEED JOBS` return the full list of target tables, like with non-db level changefeeds. [#151131][#151131] -- Users can now manually create single-column partial statistics on boolean predicate expressions that can become simple index scans. These statistics can be created by adding a constraining `WHERE` expression to `CREATE STATISTICS`. - - For example: - - ~~~ sql - CREATE TABLE t (a INT PRIMARY KEY); - INSERT INTO t VALUES (1), (2), (3), (4), (5); - CREATE STATISTICS constrained_stat ON a FROM t WHERE a > 2; - ~~~ [#152469][#152469] - Added a clamp for the estimated selectivity of inequality predicates that are unbounded on one or both sides (e.g., `x > 5`). This reduces the risk of a catastrophic underestimate that causes the optimizer to choose a poorly-constrained scan. The feature is disabled by default and can be enabled with the session setting `optimizer_clamp_inequality_selectivity`. [#153067][#153067] - Added a clamp on row-count estimates for very large tables to ensure the optimizer assumes at least one distinct value will be scanned. This reduces the risk of a catastrophic underestimate. The feature is off by default and controlled by the `optimizer_clamp_low_histogram_selectivity` session setting. [#153067][#153067] - The optimizer can now use table statistics that merge the latest full statistic with all newer partial statistics, including those over arbitrary constraints over a single span. [#153419][#153419] @@ -73,7 +64,6 @@ The following cases are not supported: - Added the `bulkio.index_backfill.vector_merge_batch_size` cluster setting to control how many vectors to merge into a vector index per transaction during create operations. The setting defaults to `3`. [#155284][#155284] - Updated the scan misestimate logging, which is controlled by the `sql.log.scan_row_count_misestimate.enabled` cluster setting, to use structured logging. The logs now include the scanned table and index, the estimated and actual row counts, the time since the last table statistics collection, and the table's estimated staleness. [#155454][#155454] - Deprecated the `EXPERIMENTAL SCRUB` command is deprecated. Use the `INSPECT` command for data consistency validation. [#155485][#155485] -- Vector indexing is now enabled by default. `feature.vector_index.enabled` defaults to `true`. [#155536][#155536] - `INSPECT` supports a `DETACHED` option to run the operation without waiting for it. [#155774][#155774] - `ALTER TABLE ... DROP STORED` statements are now executed internally by the declarative schema changer. [#155778][#155778] - Added a `sql.statements.rows_read.count` metric that counts the number of index rows read by SQL statements. [#155820][#155820] @@ -95,10 +85,6 @@ The following cases are not supported: - The metrics `sql.select.started.count`, `sql.insert.started.count`, `sql.update.started.count`, and `sql.delete.started.count` are now emitted with labels under the common metric name `sql.started.count`, using a `query_type` label to distinguish each operation. [#151946][#151946] - Added the cluster setting `storage.unhealthy_write_duration` (defaults to 20s), which is used to indicate to the allocator that a store's disk is unhealthy. The cluster setting `kv.allocator.disk_unhealthy_io_overload_score` controls the overload score assigned to a store with an unhealthy disk, where a higher score results in preventing lease or replica transfers to the store, or shedding of leases by the store. The default value of that setting is 0, so the allocator behavior is unaffected. [#153364][#153364] -- In an upcoming release, we're deprecating the - bespoke restore and import event logs. For any customer that relies on those - logs, we can maintain UX parity by plumbing the sql user that owns the - job to the status change event log. [#153889][#153889] - Added two new changefeed metrics for tracking the max skew between a changefeed's slowest and fastest span/table. The metrics are gauge metrics with the names `changefeed.progress_skew.{span}` and `changefeed.progress_skew.{table}`. [#153975][#153975] @@ -133,7 +119,6 @@ The following cases are not supported: - Previously, CockroachDB would omit execution statistics in `EXPLAIN ANALYZE` output for mutation nodes when a `RETURNING` clause was used. The bug was present since before v21.1 and is now fixed. [#145934][#145934] - Fixed a bug where CockroachDB could encounter a `vector encoder doesn't support ForcePut yet` error when executing `COPY` commands concurrently with certain schema changes. The bug had existed since before v23.2. [#148549][#148549] - Fixed a bug causing a `READ COMMITTED` or `SNAPSHOT` isolation transaction to be committed despite returning a non-ambiguous error. [#152010][#152010] -- Fixed `IMPORT` progress reporting to show the correct row counts when concurrent job state changes occur. [#152745][#152745] - Fixed a bug in type-checking placeholders with `UNKNOWN` types. It could cause incorrect results in some cases. [#152882][#152882] - Fixed a bug where `EXPORT CSV` and `EXPORT PARQUET` could cause a node crash when their result rows were used as input to a mutation, such as an `INSERT`, within the same SQL statement. This bug had been present since before v22.1. [#153951][#153951] - **Idle latency** on the **Transaction Details** page in the DB Console is now reported more accurately. Previously, transactions that used prepared statements (e.g., with placeholders) overcounted idle time, while those that included observer statements (common in the SQL CLI) undercounted it. [#154028][#154028] @@ -224,7 +209,6 @@ regardless of `optimizer_prefer_bounded_cardinality`. [#155163][#155163] [#155485]: https://github.com/cockroachdb/cockroach/pull/155485 -[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 [#154892]: https://github.com/cockroachdb/cockroach/pull/154892 [#151946]: https://github.com/cockroachdb/cockroach/pull/151946 [#155192]: https://github.com/cockroachdb/cockroach/pull/155192 @@ -262,7 +246,6 @@ regardless of `optimizer_prefer_bounded_cardinality`. [#155163][#155163] [#156722]: https://github.com/cockroachdb/cockroach/pull/156722 [#154870]: https://github.com/cockroachdb/cockroach/pull/154870 [#155385]: https://github.com/cockroachdb/cockroach/pull/155385 -[#155536]: https://github.com/cockroachdb/cockroach/pull/155536 [#155848]: https://github.com/cockroachdb/cockroach/pull/155848 [#156962]: https://github.com/cockroachdb/cockroach/pull/156962 [#157083]: https://github.com/cockroachdb/cockroach/pull/157083 @@ -272,7 +255,6 @@ regardless of `optimizer_prefer_bounded_cardinality`. [#155163][#155163] [#156000]: https://github.com/cockroachdb/cockroach/pull/156000 [#155778]: https://github.com/cockroachdb/cockroach/pull/155778 [#154598]: https://github.com/cockroachdb/cockroach/pull/154598 -[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 [#156573]: https://github.com/cockroachdb/cockroach/pull/156573 [#155454]: https://github.com/cockroachdb/cockroach/pull/155454 [#156307]: https://github.com/cockroachdb/cockroach/pull/156307 @@ -302,7 +284,6 @@ regardless of `optimizer_prefer_bounded_cardinality`. [#155163][#155163] [#155867]: https://github.com/cockroachdb/cockroach/pull/155867 [#156228]: https://github.com/cockroachdb/cockroach/pull/156228 [#156939]: https://github.com/cockroachdb/cockroach/pull/156939 -[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 [#154495]: https://github.com/cockroachdb/cockroach/pull/154495 [#154209]: https://github.com/cockroachdb/cockroach/pull/154209 [#156485]: https://github.com/cockroachdb/cockroach/pull/156485 From c9c734b4e74cca63e0d48d7cf095c86f2527ef8a Mon Sep 17 00:00:00 2001 From: mikeCRL Date: Mon, 8 Dec 2025 10:25:53 -0500 Subject: [PATCH 17/21] Set dev version to v26.1 --- src/current/_config_cockroachdb.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/current/_config_cockroachdb.yml b/src/current/_config_cockroachdb.yml index 3e787fcec8b..f4dd17045cf 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.4 - dev: v25.4 + dev: v26.1 From cef04ca8f67bf32e9d9ba11fd3a9acaec3e732f0 Mon Sep 17 00:00:00 2001 From: mikeCRL Date: Mon, 8 Dec 2025 11:10:13 -0500 Subject: [PATCH 18/21] Fix formatting issues --- src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md index 4ea13b447e3..2fa4734e27e 100644 --- a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md +++ b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md @@ -116,6 +116,7 @@ The following cases are not supported:

Bug fixes

+ - Previously, CockroachDB would omit execution statistics in `EXPLAIN ANALYZE` output for mutation nodes when a `RETURNING` clause was used. The bug was present since before v21.1 and is now fixed. [#145934][#145934] - Fixed a bug where CockroachDB could encounter a `vector encoder doesn't support ForcePut yet` error when executing `COPY` commands concurrently with certain schema changes. The bug had existed since before v23.2. [#148549][#148549] - Fixed a bug causing a `READ COMMITTED` or `SNAPSHOT` isolation transaction to be committed despite returning a non-ambiguous error. [#152010][#152010] @@ -162,8 +163,8 @@ The following cases are not supported: - Fixed a bug where the "atomic" `COPY` command (controlled via the `copy_from_atomic_enabled` session setting, `true` by default) could encounter `RETRY_COMMIT_DEADLINE_EXCEEDED` transaction errors if the whole command took 1 minute or more. This bug occurred only when the vectorized engine was used for `COPY`. [#156584][#156584] - Fixed a bug that caused transactions to fail with the following error message: - failed indeterminate commit recovery: programming error: timestamp change by - implicitly committed transaction [#156722][#156722] + failed indeterminate commit recovery: programming error: timestamp change by + implicitly committed transaction [#156722][#156722] - Fixed a bug in JSONPath index acceleration where queries using `jsonb_path_exists` with a root key (e.g., `$.b`) incorrectly returned no results when the queried JSON was an array. This fix enables unwrapping a single array layer at the root, allowing the path to be evaluated against each element. Only v25.4.0 releases were affected. [#156828][#156828] - Fixed a bug that prevents large `TRUNCATE` operations from completing due to `command is too large` errors. [#156867][#156867] - Fixed a bug that caused incorrect `gossip.callbacks.pending_duration` metric values to be recorded. [#156939][#156939] From 3f1e2e7776dcbc9a71d141ed09b27995ac9fc9fd Mon Sep 17 00:00:00 2001 From: mikeCRL Date: Mon, 8 Dec 2025 12:37:26 -0500 Subject: [PATCH 19/21] Fix formatting issue - second attempt --- src/current/Gemfile | 3 +++ src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/current/Gemfile b/src/current/Gemfile index 19febc92ff2..ae2079e1c11 100644 --- a/src/current/Gemfile +++ b/src/current/Gemfile @@ -14,6 +14,9 @@ gem "rss" gem "webrick" gem "jekyll-minifier" gem "bundler", "~> 2.4" +gem "csv" +gem "logger" +gem "base64" group :jekyll_plugins do gem "jekyll-include-cache" diff --git a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md index 2fa4734e27e..af3cf062e08 100644 --- a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md +++ b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md @@ -163,8 +163,8 @@ The following cases are not supported: - Fixed a bug where the "atomic" `COPY` command (controlled via the `copy_from_atomic_enabled` session setting, `true` by default) could encounter `RETRY_COMMIT_DEADLINE_EXCEEDED` transaction errors if the whole command took 1 minute or more. This bug occurred only when the vectorized engine was used for `COPY`. [#156584][#156584] - Fixed a bug that caused transactions to fail with the following error message: - failed indeterminate commit recovery: programming error: timestamp change by - implicitly committed transaction [#156722][#156722] + failed indeterminate commit recovery: programming error: timestamp change by + implicitly committed transaction [#156722][#156722] - Fixed a bug in JSONPath index acceleration where queries using `jsonb_path_exists` with a root key (e.g., `$.b`) incorrectly returned no results when the queried JSON was an array. This fix enables unwrapping a single array layer at the root, allowing the path to be evaluated against each element. Only v25.4.0 releases were affected. [#156828][#156828] - Fixed a bug that prevents large `TRUNCATE` operations from completing due to `command is too large` errors. [#156867][#156867] - Fixed a bug that caused incorrect `gossip.callbacks.pending_duration` metric values to be recorded. [#156939][#156939] From 724e4e8ea28565fcd6c037e819bf2b9e53540cc7 Mon Sep 17 00:00:00 2001 From: mikeCRL Date: Mon, 8 Dec 2025 12:59:35 -0500 Subject: [PATCH 20/21] Revert unsuccessful formatting fixes --- src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md index af3cf062e08..4ea13b447e3 100644 --- a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md +++ b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md @@ -116,7 +116,6 @@ The following cases are not supported:

Bug fixes

- - Previously, CockroachDB would omit execution statistics in `EXPLAIN ANALYZE` output for mutation nodes when a `RETURNING` clause was used. The bug was present since before v21.1 and is now fixed. [#145934][#145934] - Fixed a bug where CockroachDB could encounter a `vector encoder doesn't support ForcePut yet` error when executing `COPY` commands concurrently with certain schema changes. The bug had existed since before v23.2. [#148549][#148549] - Fixed a bug causing a `READ COMMITTED` or `SNAPSHOT` isolation transaction to be committed despite returning a non-ambiguous error. [#152010][#152010] @@ -163,8 +162,8 @@ The following cases are not supported: - Fixed a bug where the "atomic" `COPY` command (controlled via the `copy_from_atomic_enabled` session setting, `true` by default) could encounter `RETRY_COMMIT_DEADLINE_EXCEEDED` transaction errors if the whole command took 1 minute or more. This bug occurred only when the vectorized engine was used for `COPY`. [#156584][#156584] - Fixed a bug that caused transactions to fail with the following error message: - failed indeterminate commit recovery: programming error: timestamp change by - implicitly committed transaction [#156722][#156722] + failed indeterminate commit recovery: programming error: timestamp change by + implicitly committed transaction [#156722][#156722] - Fixed a bug in JSONPath index acceleration where queries using `jsonb_path_exists` with a root key (e.g., `$.b`) incorrectly returned no results when the queried JSON was an array. This fix enables unwrapping a single array layer at the root, allowing the path to be evaluated against each element. Only v25.4.0 releases were affected. [#156828][#156828] - Fixed a bug that prevents large `TRUNCATE` operations from completing due to `command is too large` errors. [#156867][#156867] - Fixed a bug that caused incorrect `gossip.callbacks.pending_duration` metric values to be recorded. [#156939][#156939] From f1daba07ef389ae903ab977d716efa8f431f1e43 Mon Sep 17 00:00:00 2001 From: mikeCRL Date: Mon, 8 Dec 2025 14:23:10 -0500 Subject: [PATCH 21/21] Fix formatting/style issues --- .../releases/v26.1/v26.1.0-alpha.1.md | 132 +++++++++--------- 1 file changed, 63 insertions(+), 69 deletions(-) diff --git a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md index 4ea13b447e3..d19e7a9f055 100644 --- a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md +++ b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md @@ -14,56 +14,62 @@ Release Date: December 4, 2025 - Index acceleration is now supported for a subset of `jsonb_path_exists` filters used in the `WHERE` clause. -Given `jsonb_path_exists(json_obj, json_path_expression)`, inverted indexes are supported only when the `json_path_expression` matches one of the following patterns: + Given `jsonb_path_exists(json_obj, json_path_expression)`, inverted indexes are supported only when the `json_path_expression` matches one of the following patterns: - The `json_path_expression` must not be in STRICT mode. - Keychain mode: `$. [key|wildcard].[key|wildcard]...`. In this mode, a prefix span is generated for the inverted expression. - Filter with end value mode, using an equality check: `$. [key|wildcard]? (@.[key|wildcard].[key|wildcard]... == [string|number|null|boolean])`. In this mode, since the end value is fixed, a single-value span is generated. -The following cases are not supported: - -- `$` -- `$[*]` -- `$.a.b.c == 12`, `$.a.b.c > 12`, or `$.a.b.c < 12` (operation expressions) -- `$.a.b ? (@.a > 10)` (filter with an inequality check) [#150793][#150793] -- Added a new field to `SHOW CHANGEFEED JOBS`. - `database_name` gives the name of the database that a db-level changefeed - is on. For a table-level changefeed, the value is `null`. - - Modified `SHOW CHANGEFEED JOBS` field `full_table_names` for db-level - changefeeds. By default, the list of watched tables in `full_table_names` - is empty for a db-level changefeed, giving the total number of - watched tables. Added a new option `WITH WATCHED_TABLES` that makes - `SHOW CHANGEFEED JOBS` return the full list of target tables, like with - non-db level changefeeds. [#151131][#151131] + The following cases are not supported: + + - `$` + - `$[*]` + - `$.a.b.c == 12`, `$.a.b.c > 12`, or `$.a.b.c < 12` (operation expressions) + - `$.a.b ? (@.a > 10)` (filter with an inequality check) + + [#150793][#150793] + +- `SHOW CHANGEFEED JOBS` now includes a `database_name` field that displays the database name for database-level changefeeds. For table-level changefeeds, this field is `null`. For database-level changefeeds, the `full_table_names` field now returns an empty list by default and displays only the total count of watched tables. + + To view the full list of watched tables (as in previous versions), use the new `WITH WATCHED_TABLES` option: + + ~~~ sql + SHOW CHANGEFEED JOBS WITH WATCHED_TABLES; + ~~~ + + This change improves performance when displaying database-level changefeeds that may track many tables. + + [#151131][#151131] + - Added a clamp for the estimated selectivity of inequality predicates that are unbounded on one or both sides (e.g., `x > 5`). This reduces the risk of a catastrophic underestimate that causes the optimizer to choose a poorly-constrained scan. The feature is disabled by default and can be enabled with the session setting `optimizer_clamp_inequality_selectivity`. [#153067][#153067] - Added a clamp on row-count estimates for very large tables to ensure the optimizer assumes at least one distinct value will be scanned. This reduces the risk of a catastrophic underestimate. The feature is off by default and controlled by the `optimizer_clamp_low_histogram_selectivity` session setting. [#153067][#153067] - The optimizer can now use table statistics that merge the latest full statistic with all newer partial statistics, including those over arbitrary constraints over a single span. [#153419][#153419] - Added the `sql.catalog.allow_leased_descriptors.enabled` cluster setting, which is false by default. When set to true, queries that access the `pg_catalog` or `information_schema` can use cached leased descriptors to populate the data in those tables, with the tradeoff that some of the data could be stale. [#154051][#154051] - Added a default-off cluster setting (`sql.log.scan_row_count_misestimate.enabled`) that enables logging a warning on the gateway node when optimizer estimates for scans are inaccurate. The log message includes the table and index being scanned, the estimated and actual row counts, the time since the last table stats collection, and the table's estimated staleness. [#154370][#154370] - Fixed a bug where the results of `ALTER SEQUENCE`'s increment and `SELECT nextval()` operations were not as expected. The value of a sequence after an `ALTER SEQUENCE` statement has executed on it is now consistent with a sequence created with those values. [#154489][#154489] -- Added changefeed setting - `range_distribution_strategy` with values `'default'` or `'balanced_simple'`. - This new per-changefeed setting overrides the cluster setting - `changefeed.default_range_distribution_strategy` where both exist. - - Example: - ~~~ sql - CREATE CHANGEFEED FOR x into 'null://' WITH - range_distribution_strategy='balanced_simple'; - ~~~ [#154744][#154744] +- Added changefeed setting `range_distribution_strategy` with values `'default'` or `'balanced_simple'`. This new per-changefeed setting overrides the cluster setting `changefeed.default_range_distribution_strategy` where both exist. + + Example: + + ~~~ sql + CREATE CHANGEFEED FOR x into 'null://' WITH + range_distribution_strategy='balanced_simple'; + ~~~ + [#154744][#154744] + - Added the `INSPECT` command, which runs consistency validation check jobs against tables or databases and specified indexes. [#154873][#154873] - Added support for collecting partial statistics when the given `WHERE` clause implies the predicate of a partial index with the requested column as the first key column. For example: - - ``` - CREATE TABLE t (a INT, INDEX idx_partial (a) WHERE a > 5); - CREATE STATISTICS pstat ON a FROM t WHERE a > 7; - ``` [#154892][#154892] -- The `row_security` session variable now - behaves like in postgres, allowing users to detect when RLS is applied. [#155110][#155110] + + ~~~ + CREATE TABLE t (a INT, INDEX idx_partial (a) WHERE a > 5); + CREATE STATISTICS pstat ON a FROM t WHERE a > 7; + ~~~ + [#154892][#154892] + +- The `row_security` session variable now behaves as it does in PostgreSQL, allowing users to detect when RLS is applied. [#155110][#155110] - Added the `bulkio.index_backfill.vector_merge_batch_size` cluster setting to control how many vectors to merge into a vector index per transaction during create operations. The setting defaults to `3`. [#155284][#155284] - Updated the scan misestimate logging, which is controlled by the `sql.log.scan_row_count_misestimate.enabled` cluster setting, to use structured logging. The logs now include the scanned table and index, the estimated and actual row counts, the time since the last table statistics collection, and the table's estimated staleness. [#155454][#155454] -- Deprecated the `EXPERIMENTAL SCRUB` command is deprecated. Use the `INSPECT` command for data consistency validation. [#155485][#155485] +- The `EXPERIMENTAL SCRUB` command is deprecated. Use the `INSPECT` command for data consistency validation. [#155485][#155485] - `INSPECT` supports a `DETACHED` option to run the operation without waiting for it. [#155774][#155774] - `ALTER TABLE ... DROP STORED` statements are now executed internally by the declarative schema changer. [#155778][#155778] - Added a `sql.statements.rows_read.count` metric that counts the number of index rows read by SQL statements. [#155820][#155820] @@ -85,17 +91,12 @@ The following cases are not supported: - The metrics `sql.select.started.count`, `sql.insert.started.count`, `sql.update.started.count`, and `sql.delete.started.count` are now emitted with labels under the common metric name `sql.started.count`, using a `query_type` label to distinguish each operation. [#151946][#151946] - Added the cluster setting `storage.unhealthy_write_duration` (defaults to 20s), which is used to indicate to the allocator that a store's disk is unhealthy. The cluster setting `kv.allocator.disk_unhealthy_io_overload_score` controls the overload score assigned to a store with an unhealthy disk, where a higher score results in preventing lease or replica transfers to the store, or shedding of leases by the store. The default value of that setting is 0, so the allocator behavior is unaffected. [#153364][#153364] -- Added two new changefeed metrics for tracking - the max skew between a changefeed's slowest and fastest span/table. The metrics are gauge metrics with the names - `changefeed.progress_skew.{span}` and `changefeed.progress_skew.{table}`. [#153975][#153975] +- Added two new changefeed metrics for tracking the max skew between a changefeed's slowest and fastest span/table. The metrics are gauge metrics with the names `changefeed.progress_skew.{span}` and `changefeed.progress_skew.{table}`. [#153975][#153975] - Added the cluster setting `storage.snapshot.recreate_iter_duration` (default 20s), which controls how frequently a long-lived storage engine iterator, backed by an engine snapshot, will be closed and recreated. Currently, it is only used for iterators used in rangefeed catchup scans. [#154412][#154412] - Added cluster setting `sql.schema.approx_max_object_count` (default: 20,000) to prevent creation of new schema objects when the limit is exceeded. The check uses cached table statistics for performance and is approximate - it may not be immediately accurate until table statistics are updated by the background statistics refreshing job. Clusters that have been running stably with a larger object count should raise the limit or disable the limit by setting the value to 0. In future releases, the default value for this setting will be raised as more CockroachDB features support larger object counts. [#154495][#154495] -- Cleaned up - redundant and misleading metrics. [#154545][#154545] -- Fixed the `changefeed.parallel_io_pending_rows` metric's - y-axis label to match the metric's definition. [#154552][#154552] -- Added a metric called `changefeed.parallel_io_workers` to - track the number of workers in ParallelIO. [#154552][#154552] +- Cleaned up redundant and misleading metrics. [#154545][#154545] +- Fixed the `changefeed.parallel_io_pending_rows` metric's y-axis label to match the metric's definition. [#154552][#154552] +- Added a metric called `changefeed.parallel_io_workers` to track the number of workers in ParallelIO. [#154552][#154552] - Events related to changefeed operations are now routed to the `CHANGEFEED` channel, while sampled queries and transactions, along with certain SQL performance events, are logged to `SQL_EXEC`. To continue using the previous logging channels, set `log.channel_compatibility_mode.enabled` to `true`. [#154670][#154670] - Successfully completed automatic SQL stats collecton jobs are now automatically purged rather than being retained for the full default job retention period. [#155848][#155848] - The cluster setting `storage.snapshot.recreate_iter_duration` (default `20s`) controls how frequently a long-lived engine iterator, backed by an engine snapshot, will be closed and recreated. Currently, it is only used for iterators used in rangefeed catchup scans. [#156303][#156303] @@ -105,13 +106,16 @@ The following cases are not supported: - `cockroach workload run` commands now offer a `--with-changefeed` flag to additionally run a changefeed that watches for - writes to the workload's tables. - - Co-authored-by: Steven Danna [#155516][#155516] + writes to the workload's tables. [#155516][#155516]

DB Console changes

-- The **SQL** dashboard has been enhanced with additional insights. The **Transaction Restarts** dashboard now displays `txn.restarts.txnpush` and `txn.restarts.unknown` metrics. A new **Failed SQL Connections** graph shows failed SQL connection attempts. A new **SQL Queries Within Routines Per Second** dashboard reports on `SELECT`, `UPDATE`, `INSERT`, and `DELETE` operations executed within routines. A new **Table Statistics Collections** dashboard provides information on auto, auto partial, and manual statistics collections. [#155203][#155203] +- The **SQL** dashboard has been enhanced with additional insights. + - The **Transaction Restarts** dashboard now displays `txn.restarts.txnpush` and `txn.restarts.unknown` metrics. - A new **Failed SQL Connections** graph shows failed SQL connection attempts. A new **SQL Queries Within Routines Per Second** dashboard reports on `SELECT`, `UPDATE`, `INSERT`, and `DELETE` operations executed within routines. + - A new **Table Statistics Collections** dashboard provides information on auto, auto partial, and manual statistics collections. + + [#155203][#155203] + - The background (elastic) store graphs for exhausted duration, and the wait duration histogram, have been separated from the foreground (regular) graphs. [#156801][#156801]

Bug fixes

@@ -129,8 +133,7 @@ The following cases are not supported: many unnecessary job progress saves during an initial scan. [#154598][#154598] - Fixed a bug where CockroachDB would not log events for `TxnRowsRead` and `TxnRowsWritten` guardrails for internal queries into the `SQL_INTERNAL_PERF` logging channel. The bug was present since v21.2. [#154670][#154670] - Fixed a bug that caused internal errors for `INSERT .. ON CONFLICT .. DO UPDATE` statements when the target table had both a computed column and a `BEFORE` trigger. This bug was present since triggers were introduced in v24.3.0. [#154789][#154789] -- Fixed a bug where a changefeed targeting only a subset - of a table's column families could become stuck. [#154802][#154802] +- Fixed a bug where a changefeed targeting only a subset of a table's column families could become stuck. [#154802][#154802] - Fixed a bug where CockroachDB would hit an internal error when performing an inverted join using an inverted index in which the first prefix column had `DESC` direction. The bug was present since v21.1. [#154914][#154914] - Fixed a bug where the `kvflowcontrol.send_queue.scheduled.force_flush` metric was missing a decrement, resulting in a value of greater than `0` even when there was no ongoing force flush. [#154960][#154960] - Fixed a bug that would cause `WITH READ VIRTUAL CLUSTER` to be ignored if any other options were passed when running `CREATE VIRTUAL CLUSTER FROM REPLICATION`. [#154963][#154963] @@ -160,11 +163,8 @@ The following cases are not supported: - Fixed a bug in the `ltree2text` built-in function where the returned `TEXT` value was incorrectly wrapped in single quotes. This bug had been present since the `ltree2text` function was introduced in v25.4.0. [#156485][#156485] - Fixed a bug that caused incorrect results for queries that filter indexed `LTREE` columns with the `<@` (contained-by) operator. This bug was present since v25.4.0. [#156573][#156573] - Fixed a bug where the "atomic" `COPY` command (controlled via the `copy_from_atomic_enabled` session setting, `true` by default) could encounter `RETRY_COMMIT_DEADLINE_EXCEEDED` transaction errors if the whole command took 1 minute or more. This bug occurred only when the vectorized engine was used for `COPY`. [#156584][#156584] -- Fixed a bug that caused transactions to fail with the following error message: - - failed indeterminate commit recovery: programming error: timestamp change by - implicitly committed transaction [#156722][#156722] -- Fixed a bug in JSONPath index acceleration where queries using `jsonb_path_exists` with a root key (e.g., `$.b`) incorrectly returned no results when the queried JSON was an array. This fix enables unwrapping a single array layer at the root, allowing the path to be evaluated against each element. Only v25.4.0 releases were affected. [#156828][#156828] +- Fixed a bug that caused transactions to fail with the error message: `failed indeterminate commit recovery: programming error: timestamp change by implicitly committed transaction`. [#156722][#156722] +- Fixed a bug in JSONPath index acceleration where queries using `jsonb_path_exists` with a root key (e.g., `$.b`) incorrectly returned no results when the queried JSON was an array. This fix enables unwrapping a single array layer at the root, allowing the path to be evaluated against each element. Only v25.4 releases were affected. [#156828][#156828] - Fixed a bug that prevents large `TRUNCATE` operations from completing due to `command is too large` errors. [#156867][#156867] - Fixed a bug that caused incorrect `gossip.callbacks.pending_duration` metric values to be recorded. [#156939][#156939] - Fixed a bug where transactions running concurrently with a `GRANT` or `REVOKE` on virtual tables or via external connections could observe modifications incorrectly. [#156949][#156949] @@ -177,8 +177,7 @@ The following cases are not supported: - The cost of generic query plans is now calculated based on worst-case selectivities for placeholder equalities (e.g., `x = $1`). This reduces the chance of suboptimal generic query plans being chosen when `plan_cache_mode=auto`. [#151409][#151409] - TTL jobs now checkpoint their progress, allowing them to resume without reprocessing already completed spans after a restart. [#152618][#152618] - Queries with filters in the form `a LIKE b ESCAPE '\'` are now index-accelerated in certain cases where they were not before. [#155064][#155064] -- The optimizer now chooses suboptimal generic query plans in fewer cases. It will no longer choose a generic query plan with unbounded cardinality over a custom query plan with bounded cardinality, -regardless of `optimizer_prefer_bounded_cardinality`. [#155163][#155163] +- The optimizer will no longer choose a generic query plan with unbounded cardinality over a custom query plan with bounded cardinality, regardless of `optimizer_prefer_bounded_cardinality`, better optimizing such queries. [#155163][#155163] - Optimized validation queries during `ALTER PRIMARY KEY` to avoid counting the primary key multiple times. [#156889][#156889] - The optimizer now splits disjunctions on the same column into unions when there are multiple partial indexes with different predicates referencing that column. [#157083][#157083] @@ -188,25 +187,20 @@ regardless of `optimizer_prefer_bounded_cardinality`. [#155163][#155163]

Miscellaneous

-- Added initial and catchup scan metrics to PCR under +- Added initial and catchup scan metrics to Physical Cluster Replication (PCR) under `physical_replication.scanning_ranges` and `physical_replication.catchup_ranges`. [#153893][#153893] -- Added a retry policy for Azure Blob Storage with a default of 60 seconds to mitigate occasional stuck operations. Retry policy is configurable with the `cloudstorage.azure.try.timeout` setting. Fixes: #154085 [#154149][#154149] -- LDR now updates the `logical_replication.scanning_ranges` - and `logical_replication.catchup_ranges` metrics during fast initial - scan. [#155274][#155274] -- Added `jobs.registry.max_adoptions_per_loop` cluster setting to configure the maximum number of jobs a node can adopt per adoption loop. [#155385][#155385] +- Added a retry policy for Azure Blob Storage with a default of 60 seconds to mitigate occasional stuck operations. The retry policy is configurable with the `cloudstorage.azure.try.timeout` setting. [#154149][#154149] +- Logical Data Replication (LDR) now updates the `logical_replication.scanning_ranges` + and `logical_replication.catchup_ranges` metrics during fast initial scan. [#155274][#155274] +- Added the `jobs.registry.max_adoptions_per_loop` cluster setting to configure the maximum number of jobs a node can adopt per adoption loop. [#155385][#155385] - Fixed a bug that prevented admin users from having full access to external connections created by other users. [#155657][#155657] - LDR no longer requires the database name to be specified in the external connection URI when setting up a bidirectional stream. [#155729][#155729] - Span config reconciliation jobs no longer fail on the destination after failover from a PCR stream of a system virtual cluster. [#156003][#156003] -- Added support of partial indexes to Logical Data Replication, tolerant of mismatched column IDs in the source and destination tables. - - Epic: CRDB-51533 [#156935][#156935] -- Display whether build is FIPS-enabled in - `cockroach version` [#157223][#157223] - +- Added support of partial indexes to Logical Data Replication, tolerant of mismatched column IDs in the source and destination tables. [#156935][#156935] +- Display whether build is FIPS-enabled in `cockroach version` [#157223][#157223] [#155485]: https://github.com/cockroachdb/cockroach/pull/155485 [#154892]: https://github.com/cockroachdb/cockroach/pull/154892