From ba0bef7f6f900c1a7f51bfe040fcf8d5a11f95fa Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 12:08:49 +0000 Subject: [PATCH 01/37] Update release notes for v25.4-v25.4.1 --- src/current/_data/versions.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/current/_data/versions.csv b/src/current/_data/versions.csv index 2f0975cc76b..37853d2c9c0 100644 --- a/src/current/_data/versions.csv +++ b/src/current/_data/versions.csv @@ -19,4 +19,4 @@ v24.3,2024-11-18,2025-11-18,2026-05-18,24.3.11,24.3.12,2025-05-05,2026-05-05,202 v25.1,2025-02-18,2025-08-18,N/A,N/A,N/A,N/A,N/A,N/A,v24.3,release-25.1,2029-02-18 v25.2,2025-05-09,2026-05-12,2026-11-12,N/A,N/A,N/A,N/A,N/A,v25.1,release-25.2,2029-05-09 v25.3,2025-08-04,2026-02-04,N/A,N/A,N/A,N/A,N/A,N/A,v25.2,release-25.3,2029-08-04 -v25.4,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 +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 From d56837813ea4e270008607d7dad3f226eabd4005 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 12:08:50 +0000 Subject: [PATCH 02/37] Update release notes for v25.4-v25.4.1 --- src/current/_data/releases.yml | 35 ++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/current/_data/releases.yml b/src/current/_data/releases.yml index 907d94f9d65..b39c7aa0b60 100644 --- a/src/current/_data/releases.yml +++ b/src/current/_data/releases.yml @@ -9956,3 +9956,38 @@ docker_arm_limited_access: false source: true previous_release: v24.3.22 + + +- release_name: v25.4.1 + major_version: v25.4 + release_date: '2025-11-28' + release_type: Production + go_version: go1.25.3 + sha: 60d802bd0bcb2c1aa81a4b5fd73fb4aa13bb5114 + 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 + docker_arm: true + docker_arm_experimental: false + docker_arm_limited_access: false + source: true + previous_release: v25.4.0 + cloud_only: true + cloud_only_message_short: 'Available only for select CockroachDB Cloud clusters' + cloud_only_message: > + This version is currently available only for select + CockroachDB Cloud clusters. To request to upgrade + a CockroachDB self-hosted cluster to this version, + [contact support](https://support.cockroachlabs.com/hc/requests/new). From a4f37787338d595f73a2163f0bb9b2c5ebd438e6 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 12:08:50 +0000 Subject: [PATCH 03/37] Update release notes for v25.4-v25.4.1 --- .../_includes/releases/v25.4/v25.4.1.md | 1349 +++++++++++++++++ 1 file changed, 1349 insertions(+) create mode 100644 src/current/_includes/releases/v25.4/v25.4.1.md diff --git a/src/current/_includes/releases/v25.4/v25.4.1.md b/src/current/_includes/releases/v25.4/v25.4.1.md new file mode 100644 index 00000000000..e13ed5c4e71 --- /dev/null +++ b/src/current/_includes/releases/v25.4/v25.4.1.md @@ -0,0 +1,1349 @@ +## v25.4.1 + +Release Date: November 28, 2025 + +{% include releases/new-release-downloads-docker-image.md release=include.release %} + +

Backward-incompatible changes

+ +- Vector index partition IDs now use a different function that distributes them more evenly across the key-value range, reducing potential hot spots. Due to this change, vector indexes created before v25.2.0 must be rebuilt. [#145471][#145471] + +

Security updates

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

General changes

+ +- Added the `headers_json_column_name` option to the changefeed Kafka sink, allowing users to specify a column in their table(s) of type `JSONB` to be used as the Kafka headers for each row. [#142092][#142092] +- Previously, HTTP response headers included `"Cache-Control: no-cache"`, allowing responses to be stored in caches but requiring revalidation on each request. Now, the response headers include `"Cache-Control: no-store"`, ensuring that HTTP requests to the server are not cached by the client. However, requests for UI assets—such as `bundle.js`, fonts, and other static files—will continue to include `"Cache-Control: no-cache"` to allow caching and ensure the DB Console loads quickly. [#142277][#142277] +- Improved the wording of the error message when a changefeed is created with a cursor older than the garbage collection threshold. [#142408][#142408] +- Added a warning when creating a changefeed with a cursor timestamp older than 5 hours. [#142742][#142742] +- Enhanced the `/status/v2/hotranges` endpoint by adding two new filtering options: + - `per_node_limit` (`int32`): Specifies the maximum number of hot ranges to return per node. Defaults to `128` if not set. + - `stats_only` (`bool`): When set to `true`, returns only the statistics for hot ranges without fetching descriptor information, such as databases, tables, and indexes. [#144091][#144091] +- For virtual clusters, hot range logging is now performed by a single job on one node, rather than by tasks on every node. [#145549][#145549] +- The CREATE + CHANGEFEED statement now supports the + `extra_headers` option, which can be used to + specify extra headers for webhook and kafka + sinks. This can be used to add headers to all + messages sent to the sink. [#146813][#146813] +- Changefeeds now round down the progress of each range to 1 second, in order to cover more ranges in fine-grained checkpointing. [#146979][#146979] +- Changefeed source metadata now includes the `crdb_internal_table_id` field, enabling downstream consumers to uniquely identify tables even if table names change. [#147341][#147341] +- Changefeeds emitting to Kafka sinks that were created in CockroachDB v24.2.1+, or v23.2.10+ and v24.1.4+ with the `changefeed.new_kafka_sink.enabled` cluster setting enabled now include the message key, size, and MVCC timestamp in "message too large" error logs. [#147543][#147543] +- This change adds new metrics: + changefeed.stage.pts.create.latency, + changefeed.stage.pts.manage.latency, + changefeed.stage.pts.manage_error.latency, + to measure the performance of managing protected ts records. [#148471][#148471] +- Added an OTLP log sink that exports logs in OpenTelemetry Protocol format over gRPC to compatible targets such as `otel-collector`, Datadog, and Loki. [#148525][#148525] +- Kafka v2 changefeed sinks now support + a cluster setting that enables detailed error logging for messages + exceeding Kafka v2 size limit. [#148753][#148753] +- The CockroachDB spatial libraries now rely on GEOS 3.12 instead of GEOS 3.11. [#148859][#148859] +- the changefeeds with protobuf + format now supports the resolved option for emitting + resolved timestamps. [#149622][#149622] +- Changefeeds using the protobuf format + now support wrapped envelopes in kafka sinks [#149696][#149696] +- Restore jobs now log errors on retry to + the job messages table. [#149821][#149821] +- A warning is now emitted when creating or altering a + changefeed with `resolved` or `min_checkpoint_frequency` set below 500ms. This helps + users understand the tradeoff between message latency and cluster CPU usage. [#149975][#149975] +- The protobuf format for changefeeds + now support enriched envelopes. [#150501][#150501] +- Added HTTP mode to the OTLP sink, allowing logs to be exported to OpenTelemetry Protocol (OTLP) targets over HTTP. This enhancement enables agentless deployments, where logs can be sent directly to supported targets like Datadog or Grafana, without requiring an intermediary such as the OpenTelemetry Collector or Datadog Agent. [#150655][#150655] +- Added `headers` configuration option to OTLP log sink. [#150696][#150696] +- CockroachDB spatial libraries now rely on GEOS 3.13 instead of GEOS 3.12. [#151186][#151186] +- Added `WITH INDEX` option to `SHOW + BACKUPS` for faster listing of 25.4+ backups. [#152142][#152142] +- The changefeed bulk + delivery setting was made optional. [#154953][#154953] + +

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

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

SQL language changes

+ +- Implemented the `levenshtein_less_equal(string, string, int)` and `levenshtein_less_equal(string, string, int, int, int, int)` built-in functions, which calculate the Levenshtein distance between two strings. [#104649][#104649] +- The owner of a database can now set default session variables per database using the `ALTER ROLE ALL IN DATABASE ... SET` or `ALTER DATABASE ... SET` commands. [#130547][#130547] +- Added the `ST_3DLength` function, which returns the 3D or 2D length of `LINESTRING` and `MULTILINESTRING` spatial types. [#139450][#139450] +- `format()` no longer requires all post-format string arguments to have the same type. [#141193][#141193] +- `concat()` no longer requires all arguments have the same type. [#141193][#141193] +- `concat_ws()` now accepts arguments of any type in the second and later positions (the separator must still be a string). [#141193][#141193] +- `pg_column_size()` no longer requires that all arguments have the same type. [#141193][#141193] +- `num_nulls()` and `num_nonnulls()` no longer require all arguments to have the same type. [#141193][#141193] +- `json_build_object()`, `jsonb_build_object()`, `json_build_array()`, and `jsonb_build_array()` no longer require that all arguments have the same type. [#141193][#141193] +- Double-quoted key accessors are now supported in JSONPath queries. For example, `SELECT '$."1key"."key2"'::JSONPATH;`. [#142241][#142241] +- Array integer indexing is now supported in JSONPath queries. For example, `$.a[1]`. [#142241][#142241] +- Array ranges are now supported in JSONPath queries. For example, `$.a[1 to 3]`). [#142241][#142241] +- Array unions are now supported in JSONPath queries. For example, `$.a[1, 2 to 4, 7, 8]`. [#142241][#142241] +- Fixed a regression due to join-elimination rules that prevented other optimization rules from applying. [#142252][#142252] +- Statements such as `REFRESH MATERIALIZED VIEW` and `CREATE MATERIALIZED VIEW` can now be executed with an `AS OF SYSTEM TIME` clause. These statements can still not be used in an explicit transaction. [#142259][#142259] +- Add the `jsonb_path_query` function, which takes in a JSON object and a JSONPath query and returns the resulting JSON object. [#142336][#142336] +- Added the `ALTER VIRTUAL CLUSTER .. SET REPLICATION SOURCE` command so users can configure producer jobs on the source cluster. Currently, users can only configure the `EXPIRATION WINDOW`. Also, removed the `EXPIRATION WINDOW` option from the consumer side command of `ALTER VIRTUAL CLUSTER SET REPLICATION`. [#142501][#142501] +- `EXPLAIN ANALYZE` statements now display the number of transaction retries and time spent retrying, if non-zero, in the plan output. [#142692][#142692] +- Users can now begin logical data replication (LDR) on an existing table if the user has a table-level `REPLICATIONDEST` privilege. Furthermore, users can now begin LDR onto an automatically created table if the user has the parent database level `CREATE` privilege. Finally, during bidirectional LDR, the user in the original source URI, who will begin the reverse LDR stream, to authorize via this table-level `REPLICATIONDEST` privilege. [#142840][#142840] +- Logical operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '1 < 2 && 3 >= 2')`. [#142899][#142899] +- Comparison operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', 1 < 2)`. [#142899][#142899] +- It is now possible to automatically collect partial table statistics, but disable automatic collection of full table statistics. The new cluster and table settings to enable/disable automatic collection of full table statistics (without affecting the settings for partial stats) are `sql.stats.automatic_full_collection.enabled` and `sql_stats_automatic_full_collection_enabled`, respectively. The settings default to `true`. [#142924][#142924] +- The return type of the `workload_index_recs` built-in function now includes two columns. The first column, `index_rec`, remains a `STRING` type and contains the index recommendation. The second column, `fingerprint_ids`, is new and has the `BYTES[]` type. [#142927][#142927] +- Update edge cases in the `width_bucket()` function to return `count + 1` for a positive infinity operand, and `0` for a negative infinity operand, instead of an error. [#142932][#142932] +- Implemented various `power()` and `^` edge cases to match PostgreSQL behaviour. Some expressions that previously returned `NaN` now return specific numbers; some expressions that previously returned `Infinity` or `NaN` now return errors; and some expressions with infinite exponents now return different results. [#142932][#142932] +- Added the `jsonb_path_exists` function, which accepts a JSON object and JSONPath query and returns whether the query returned any items. [#143028][#143028] +- Filters are now supported in JSONPath queries, using the format `$ ? (predicate)`. This allows results to be filtered. For example, `SELECT jsonb_path_query('{"a": [1,2,3]}', '$.a ? (1 == 1)');`. [#143097][#143097] +- Addition, subtraction, multiplication, division, and modulo operators are now supported in JSONPath queries. [#143210][#143210] +- String comparisons are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '"a" < "b"');`. [#143240][#143240] +- Null comparisons are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', 'null != 1');`. [#143240][#143240] +- `like_regex` predicate evaluation is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '"hello" like_regex "^he.*$"');`. [#143240][#143240] +- The job description for `AUTO CREATE PARTIAL STATS` now clearly indicates that the job is for automatic partial statistics collection, improving `system.jobs` visibility and debugging. [#143283][#143283] +- Added documentation for previously hidden DDL statements related to row-level security (RLS). RLS enables fine-grained access control by enforcing policies that determine which rows a user can read or modify. [#143510][#143510] +- Assigning to an element of a composite-typed variable in a PL/pgSQL routine now respects case-sensitivity rules. For example, a field named `"FOO_Bar"` can be assigned using `NEW."FOO_Bar" = 100`. [#143579][#143579] +- Wildcard key accessors are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{"a": 1, "b": true}', '$.*');`. [#143588][#143588] +- Unary arithmetic operators are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('[1, 2, 3]', '-$');`. [#143613][#143613] +- `last` is now supported for array indexing in JSONPath queries. For example, `SELECT jsonb_path_query('[1, 2, 3, 4]', '$[1 to last]');`. [#143658][#143658] +- `exists()` is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('[1, 2, 3]', 'exists($[*])');`. [#143667][#143667] +- `() is unknown` is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '($ < 1) is unknown');`. [#143668][#143668] +- `starts with ""` is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('"abcdef"', '$ + starts with "abc"');`. [#143675][#143675] +- Set-returning functions (SRF) are now supported in PL/pgSQL. A PL/pgSQL SRF can be created by declaring the return type as `SETOF ` or `TABLE`. [#143820][#143820] +- Usage of `TG_ARGV` in trigger functions is now disallowed by default. The session setting `allow_create_trigger_function_with_argv_references` can be set to `true` to allow usage (with 1-based indexing). [#143827][#143827] +- A new `execution time` statistic is now reported on `EXPLAIN ANALYZE` output for most operators. Previously, this statistic was only available on the DistSQL diagrams in `EXPLAIN ANALYZE (DISTSQL)` output. [#143857][#143857] +- Added a new session variable `create_table_with_schema_locked`, which can be used to ensure all tables created by a session have the storage parameter `schema_locked` set. [#143892][#143892] +- Added the `jsonb_path_query_first` function, which returns the first result from `jsonb_path_query`. [#144006][#144006] +- Added the `jsonb_path_query_array` function, which returns the result of `jsonb_path_query` wrapped in a JSON array. [#144006][#144006] +- Added the `jsonb_path_match` function, which returns the result of a predicate query. [#144006][#144006] +- The following syntax is now supported: `GRANT ... ON ALL ROUTINES IN SCHEMA ...`; `REVOKE ... ON ALL ROUTINES IN SCHEMA ...`; `ALTER DEFAULT PRIVILEGES GRANT ... ON ROUTINES ...`; `ALTER DEFAULT PRIVIELGES REVOKE ... ON ROUTINES ...`. The `ROUTINES` keyword makes the command apply to both functions and stored procedures. Note that `ALTER DEFAULT PRIVILEGES ... ON FUNCTIONS` already applied to stored procedures (which aligns with the PostgreSQL behavior), and that is not changing. [#144189][#144189] +- Parenthesized expressions are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{"a": {"b": true}}', '($.a).b');` [#144245][#144245] +- The `.size()` method is now supported in JSONPath expressions. For example, `SELECT jsonb_path_query('[1, 2, 3]', '$.size()');`. [#144266][#144266] +- The `.type()` method is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('[1, 2, 3]', '$.type()');`. [#144266][#144266] +- Non-integer array indices are now supported in JSONPath queries (e.g., `SELECT jsonb_path_query('[1, 2, 3]', '$[2.5]');`). Indices are rounded toward 0. [#144385][#144385] +- The variable arguments of polymorphic built-in functions (e.g., `concat`, `num_nulls`, `format`, `concat_ws`, etc.) no longer need to have the same type, matching PostgreSQL behavior. As a result, CockroachDB's type inference engine will no longer be able to infer argument types in some cases where it previously could, and there is a possibility that CockroachDB applications will encounter new errors. The new session variable `use_pre_25_2_variadic_builtins` restores the previous behavior (and limitations). [#144522][#144522] +- When creating a vector index with the `USING` syntax, `hnsw` can now be specified as the index type, although a `cspann` vector index is still provided. This change increases compatibility with third-party tools. [#144533][#144533] +- The `vector_l2_ops` operator class can now be specified for a vector index. Because `vector_l2_ops` is the default, it is possible to omit the operator class from an index definition. [#144533][#144533] +- Added new cluster settings: `sql.metrics.application_name.enabled` and `sql.metrics.database_name.enabled`. These settings default to `false` and can be set to `true` to display the application name and database name, respectively, on supported metrics. [#144610][#144610] +- Added support for numeric JSONPath methods `.abs()`, `.floor()`, `.ceiling()`. For example, `SELECT jsonb_path_query('-0.5', '$.abs()');`. [#144643][#144643] +- Added support for `like_regex` flags in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '"a" like_regex ".*" flag "i"');`. [#144658][#144658] +- `CREATE VECTOR INDEX` and `ALTER PRIMARY KEY` now send a notice that vector indexes will be offline during the change operation when the `sql_safe_updates` session setting is disabled. [#144702][#144702] +- Added support for camelCase parameter names + (e.g., "SharedAccessKeyName") in Azure Event Hub Kafka sink + configuration [#144735][#144735] +- Vector index creation is now prevented until the entire cluster upgrade has been finalized on v25.2 or later. [#145091][#145091] +- Disabled `IMPORT INTO` for tables with vector indexes, because importing into vector indexes is not implemented. [#145236][#145236] +- Added support for query tagging, which allows users to add query tags to their SQL statements via comments. These query tags are included in: +- All log entries generated during the execution of a SQL statement and are prefixed by `querytag-`. +- Traces and are prefixed by `querytag-`. +- In the `crdb_internal.cluster_execution_insights` and `crdb_internal.node_execution_insights` virtual tables in a new `query_tags` JSONB column. +This feature is disabled by default and can be enabled using the `sql.sqlcommenter.enabled` cluster setting. Comments must follow the [SQLCommenter specification](https://google.github.io/sqlcommenter/spec/). [#145435][#145435] +- Fixed a bug that caused a routine with an `INSERT` statement to unnecessarily block dropping a hash-sharded index or computed column on the target table. This fix applies only to newly created routines. In releases prior to v25.3, the fix must be enabled by setting the session variable `use_improved_routine_dependency_tracking` to `on`. [#146250][#146250] +- `~~` and `!~~` are now supported aliases for `LIKE` and `NOT LIKE`. [#146764][#146764] +- `~~*` and `!~~*` are now supported aliases for `ILIKE` and `NOT ILIKE`. [#146764][#146764] +- Added a session variable `initial_retry_backoff_for_read_committed` that controls the initial backoff duration when retrying an individual statement in an explicit `READ COMMITTED` transaction. A duration of `0` disables exponential backoff. If a statement in an explicit `READ COMMITTED` transaction is failing with the `40001` error `ERROR: restart transaction: read committed retry limit exceeded; set by max_retries_for_read_committed=...`, then you should set `initial_retry_backoff_for_read_committed` to a duration proportional to the typical execution time of the statement (in addition to also increasing `max_retries_for_read_committed`). [#146860][#146860] +- Deterministic collations are now supported with `LIKE`. A deterministic collation considers strings to be equal only if they consist of the same byte sequence. [#147045][#147045] +- The `information_schema.triggers` table is now populated with trigger metadata. Users can query this table to see all triggers defined in their database, including the trigger name, timing (`BEFORE`/`AFTER`), event type (`INSERT`/`UPDATE`/`DELETE`), and associated function. Each trigger event appears as a separate row in the table. [#147237][#147237] +- The `pg_catalog.pg_trigger` table now returns metadata about database triggers. [#147248][#147248] +- Directionality may no longer be assigned to any vector index column. Prefix columns are not scannable in a vector index, so directionality is not relevant to them. [#147307][#147307] +- Added the `SHOW CREATE ALL ROUTINES` statement, which can be used to show `CREATE` statements for all user-defined functions (UDFs) and procedures in the current database. [#147452][#147452] +- Added the metrics `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count`, which count the number of automatic retries of SQL transactions and statements, respectively, within the database. These metrics differ from the related `txn.restarts.*` metrics, which count retryable errors emitted by the KV layer that must be retried. The new `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count` metrics count auto-retry actions taken by the SQL layer in response to some of those retryable errors. [#147682][#147682] +- Computed column expressions and `ON UPDATE` expressions can now reference user-defined functions. [#147817][#147817] +- Partial indexes can now reference user-defined functions. [#147817][#147817] +- Added the `SHOW CREATE ALL TRIGGERS` statement. [#147836][#147836] +- The `CITEXT` data type is now supported, enabling case-insensitive comparisons for `CITEXT` columns. Internally, `CITEXT` is equivalent to using the undetermined level 2 collation `und-u-ks-level2`. For example, under `CITEXT`, the expression `'test' = 'TEST'` returns `TRUE`. [#147864][#147864] +- Increased the default value for the `max_retries_for_read_committed` session variable from `10` to `100`. Testing has shown that some high-contention workloads running under `READ COMMITTED` isolation benefit from more statement retries. [#147869][#147869] +- The session variable `initial_retry_backoff_for_read_committed` now defaults to `2` (milliseconds). Testing has shown that some high-contention workloads running under `READ COMMITTED` isolation benefit from exponential backoff. `2` might be too quick of an initial backoff for longer-running statements, but setting this value much higher than the normal duration of execution will cause excessive delay. [#147869][#147869] +- `IMPORT TABLE`, `IMPORT PGDUMP`, and `IMPORT MYSQLDUMP` are now fully removed. These statements have been deprecated in favor of `IMPORT INTO` since v23.2. [#148248][#148248] +- Changed the basic sequence caching option to cache at the per-node level by default. The `PER SESSION CACHE` sequence option is added to provide the previous per-session cache behavior. [#148290][#148290] +- The functionality provided by session variable `enforce_home_region_follower_reads_enabled` was deprecated in v24.2.4 and is now removed. (The variable itself remains for backward compatibility but has no effect.) Note that the related session variable `enforce_home_region` is **not** deprecated and still functions normally. [#148314][#148314] +- Removed the 'started' column in `SHOW JOBS`, which was a duplicate of the 'created' column. [#148464][#148464] +- Added support for automatically determining the region column for a `REGIONAL BY ROW` table using a foreign key constraint. The foreign key is specified by setting a new table storage parameter `infer_rbr_region_col_using_constraint`, and must contain the region column. This can be useful for applications that are unable to guarantee that a child row is inserted or updated from the same region as the matching parent row. [#148540][#148540] +- Added support for invoking a UDF from a view query. Renaming or setting the schema on the routine is currently not allowed if it is referenced by a view. [#148616][#148616] +- Updated the `SHOW CREATE FUNCTION` and `SHOW CREATE PROCEDURE` statements to show fully qualified table names rather than assuming they are qualified with the current database. [#148746][#148746] +- Added the `has_system_privilege` builtin function, which can be used to check if a user has the given system privilege. [#149051][#149051] +- Updated schema change job status messages to be more user-friendly and descriptive, instead of using internal schema change architecture terminology. [#149096][#149096] +- The logical cluster now uses an external connection and automatically updates its configuration when that connection changes. [#149261][#149261] +- Fix a bug where extra quotes or escaped + quote characters would be added to topic names in changefeeds. + Can be turned off by setting feature.changefeed.bare_table_names to + false. [#149438][#149438] +- The users with the role option `PROVISIONSRC` + assigned to them will be unable to change their own password overriding any + config set for sql.auth.change_own_password.enabled cluster setting. Changing + other role options still has the same privilege requirements as before (either + CREATEROLE or CREATELOGIN, depending on the option). The role option for + PROVISIONSRC is also only assignable and cannot be altered using `ALTER role` + command. [#149463][#149463] +- The session setting `optimizer_prefer_bounded_cardinality` is now enabled by default. This setting instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. [#149486][#149486] +- Added `num_txn_retries` and `num_txn_auto_retries` columns to the `crdb_internal.{cluster,node}_queries` virtual tables and to the output of `SHOW QUERIES`. When not `NULL`, these columns reflect the same values as `num_retries` and `num_auto_retries` in `crdb_internal.{cluster,node}_transactions` for the transaction in which the query is running. [#149503][#149503] +- The session setting `optimizer_min_row_count`, which sets a lower bound on row count estimates for relational expressions during query planning, is now set to `1` by default. [#149602][#149602] +- WITH header_row flag is added to EXPORT. + Returns error for non-csv type. Another row is prepended to the csv file + with the column names. [#149686][#149686] +- Users can now ALTER EXTERNAL CONNECTION to + change the external connection URI when granted UPDATE privilege on + EXTERNAL CONNECTION. + + Fixes #98610 [#149869][#149869] +- The `json ? string`, `json ?& array`, `json ?| array`, and `array && array` operators are now index-accelerated for `INVERTED JOIN` statements if there is an inverted index on the JSON column referenced on the left-hand side of the expression. [#149898][#149898] +- The column for `estimated_last_login_time` in + `system.users` will be updated with the TIMESTAMP of user login post successful + authentication. The `SHOW users` view will now show the updated value. + + ``` + root@localhost:26257/defaultdb> SHOW users; + username | options | member_of | estimated_last_login_time + -----------------+-------------------------------------------------------------------------------------+-----------+-------------------------------- + admin | {} | {} | NULL + root | {} | {admin} | 2025-07-13 11:51:29.406216+00 + sourav.sarangi | {} | {} | NULL + (3 rows) + + NOTICE: estimated_last_login_time is computed on a best effort basis; it is not guaranteed to capture every login event + ``` [#150105][#150105] +- The column for `estimated_last_login_time` in + `system.users` will be updated with the TIMESTAMP of user login post successful + authentication. The `SHOW users` view will now show the updated value. + + ``` + root@localhost:26257/defaultdb> SHOW users; + username | options | member_of | estimated_last_login_time + -----------------+-------------------------------------------------------------------------------------+-----------+-------------------------------- + admin | {} | {} | NULL + root | {} | {admin} | 2025-07-13 11:51:29.406216+00 + sourav.sarangi | {} | {} | NULL + (3 rows) + + NOTICE: estimated_last_login_time is computed on a best effort basis; it is not guaranteed to capture every login event + ``` [#150375][#150375] +- The session setting `optimizer_min_row_count`, which sets a lower bound on row count estimates for relational expressions during query planning, is now set to `1` by default. [#150376][#150376] +- `LTREE` is now supported with ancestry operators and with the `concat` operator. Specifically, CockroachDB now allows `ltree @> ltree`, `ltree[] @> ltree`, `ltree @> ltree[]`, `ltree <@ ltree`, `ltree[] <@ ltree`, and `ltree <@ ltree[]` binary comparisons, as well as `ltree[] ?@> ltree`, `ltree[] ?<@ ltree`, and `ltree || ltree` binary operations. The `?@>` and `?<@` are new binary operators that return the first ltree (or `NULL`) that is an ancestor or descendant of the right ltree argument in the array. [#150598][#150598] +- Clusters utilizing cluster virtualization, such as those running Physical Cluster Replication (PCR), apply the same admission control (AC) pacing to various bulk operations used by clusters that are not running with cluster virtualization. [#150633][#150633] +- All PostgreSQL built-in functions for `LTREE` are now supported: `subltree()`, `subpath()`, `nlevel()`, `index()`, `text2ltree()`, `ltree2text()`, and `lca()`. While the `lca()` function in PostgreSQL specifically limits up to 8 LTREE args, the CockroachDB `lca()` function accepts any variable number of ltree args. [#150647][#150647] +- `CREATE USER` and `GRANT` role operations now wait for full-cluster visibility of the new user table version rather than blocking on convergence. [#150747][#150747] +- Improved the optimizer to hoist projections above joins in more cases, which can lead to better query plans. This behavior can be enabled with the new session variable `optimizer_use_improved_hoist_join_project`. [#150887][#150887] +- Introduced `INSPECT TABLE` and `INSPECT DATABASE` syntax (whose underlying logic is not yet implemented). Added the `enable_inspect_command` session setting, which toggles access to the new `INSPECT ...` features as they're implemented. [#151067][#151067] +- Tables with vector indexes are no longer taken offline while the vector index builds. [#151074][#151074] +- Previously, using a pausable portal with a procedure call could cause a panic, depending on the function body. Now, transaction control statements such as procedure calls (e.g., `CALL myfunc()`) are disallowed within pausable portals. [#151153][#151153] +- Added the `allow_unsafe_internals` session variable and `sql.defaults.allow_unsafe_internals` cluster setting to gate access to system database internals. Default access is allowed to support testing. [#151362][#151362] +- When `sql_safe_updates` is enabled, the `ALTER TABLE ... LOCALITY` statement will be blocked when trying to convert an existing table to `REGIONAL BY ROW`, unless a region column has been added to the table. This protects against undesired behavior that caused `UPDATE` or `DELETE` statements to fail against the table while the locality change was in progress. [#151423][#151423] +- Introduced the `SHOW INSPECT ERRORS` statement that is unimplemented. [#151674][#151674] +- Added metrics for statements executed within a stored procedure or function. The following metrics count statements that began execution, including those that failed: `sql_routine_select_started_count`, `sql_routine_update_started_count`, `sql_routine_insert_started_count`, and `sql_routine_delete_started_count`. The following metrics count only successful executions: `sql_routine_select_count`, `sql_routine_update_count`, `sql_routine_insert_count`, and `sql_routine_delete_count`. All counters are global and increment before the transaction is committed or aborted. [#151689][#151689] +- Introduced the `inspect_errors` system table. [#151821][#151821] +- Added a new session variable, `disable_optimizer_rules`, which allows users to provide a comma-separated list of optimizer rules to disable during query optimization. This allows users to avoid rules that are known to create a suboptimal query plan for specific queries. [#151959][#151959] +- The SQL observability statements `SHOW TRANSACTIONS`, `SHOW QUERIES`, and `SHOW SESSIONS` now include an `isolation_level` column that shows the isolation level of the active transaction, or the session's default isolation level when there is no active transaction. [#152352][#152352] +- 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] +- The default value of `use_soft_limit_for_distribute_scan` session variable is now `true`. This means that, by default, the soft limit (if available) will be used to determine whether a scan is "large" and, thus, should be distributed. For example, with `estimated row count: 100 - 10,000`, CockroachDB will use `100` as the estimate to compare against the value of `distribute_scan_row_count_threshold`. [#152557][#152557] +- Added the `bulkio.import.row_count_validation.unsafe.enabled` cluster setting (default: `false`), which triggers an asynchronous `INSPECT` job at the end of an `IMPORT` to validate row counts. [#153294][#153294] +- Added a built-in function, `crdb_internal.request_transaction_bundle`, that allows users to request a transaction diagnostics bundle for a specified transaction fingerprint ID. [#153608][#153608] +- Implemented the `pg_get_function_arg_default` builtin function. This also causes the `information_schema.parameters(parameter_default)` column to be populated correctly. [#153625][#153625] +- Added the `SHOW INSPECT ERRORS` command. This command can be used to view issues that are identified by running the `INSPECT` command to validate tables and indexes. [#154337][#154337] +- Added the `sql.catalog.allow_leased_descriptors.enabled` cluster setting, which is false by default. When set to true, queries that access the `pg_catalog` or `information_schema` can use cached leased descriptors to populate the data in those tables, with the tradeoff that some of the data could be stale. [#154491][#154491] +- 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) [#154631][#154631] +- The optimizer can now use table statistics that merge the latest full statistic with all newer partial statistics, including those over arbitrary constraints over a single span. [#154755][#154755] +- 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. [#155123][#155123] +- 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. [#155123][#155123] +- Added the `INSPECT` command, which runs consistency validation check jobs against tables or databases and specified indexes. [#155441][#155441] +- 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`. [#155509][#155509] +- Vector indexing is now enabled by default. `feature.vector_index.enabled` defaults to `true`. [#155561][#155561] +- Added sql.statements.index_bytes_written.count metric + that counts the number of primary and secondary index bytes modified by SQL + statements. [#156459][#156459] +- Added sql.statements.bytes_read.count metric that + counts the number of bytes scanned by SQL statements. [#156459][#156459] +- Added sql.statements.index_rows_written.count metric + that counts the number of primary and secondary index rows modified by SQL + statements. [#156459][#156459] +- Added sql.statements.rows_read.count metric + that counts the number of index rows read by SQL statements. [#156459][#156459] +- CockroachDB now supports index accelerating `jsonb_path_exists` filters with JSONpath expressions that end with an AnyKey (`*`). [#156508][#156508] + +

Operational changes

+ +- Added the cluster setting `server.child_metrics.include_aggregate.enabled` (default: `true`) that controls the behavior of Prometheus child metrics reporting (`/_status/vars`). When set to `true`, child metrics include an aggregate time series, maintaining the existing behavior. When set to `false`, it stops reporting the aggregate time series, preventing double counting when querying metrics. [#141601][#141601] +- To create a physical cluster replication (PCR) stream, a user must have the `REPLICATIONDEST` privilege, in addition to the already required `MANAGEVIRTUALCLUSTER` privilege. [#142345][#142345] +- To create a physical cluster replication (PCR) stream, a user must have the `REPLICATIONDEST` privilege, in addition to the already required `MANAGEVIRTUALCLUSTER` privilege. [#142345][#142345] +- The `sys.cpu.host.combined.percent-normalized` metric has been updated to include additional counters for more accurate host CPU measurement and to reduce underreporting. It now accounts for time spent processing hardware (`irq`) and software (`softirq`) interrupts, as well as `nice` time, which represents low-priority user-mode activity. [#142478][#142478] +- The `kv.snapshot_receiver.excise.enable` cluster setting has been retired. This feature is now enabled unconditionally. [#142651][#142651] +- Previously, the user supplied in the source cluster connection in PCR and LDR required the `REPLICATION` privilege, which will be deprecated in v25.2 but temporarily supported. Instead, the user will need the new `REPLICATION SOURCE` privilege. [#142749][#142749] +- All `ALTER VIRTUAL CLUSTER REPLICATION JOB` commands for physical cluster replication (PCR), except for `ALTER VIRTUAL CLUSTER SET REPLICATION SOURCE`, will require the `REPLICATIONDEST` privilege, in addition to `MANAGEVIRTUALCLUSTER`. `ALTER VIRTUAL CLUSTER SET REPLICATION SOURCE` now requires the `REPLICATIONSOURCE` privilege. If the ingestion job was created before v25.1, the user can still alter the replication job without the `REPLICATIONDEST` privilege. [#142772][#142772] +- Added 4 new latency metrics: + sql.service.latency.historical, sql.service.latency.consistent, + sql.exec.latency.historical, sql.exec.latency.consistent for easier query + optimizations. [#142826][#142826] +- The /health/restart_safety endpoint indicates + when it is unsafe to terminate a node. [#142930][#142930] +- The `kv.mvcc_gc.queue_kv_admission_control.enabled` cluster setting was retired. [#143124][#143124] +- The `server.client_cert_expiration_cache.capacity` cluster setting has been removed. The `security.certificate.expiration.client` and `security.certificate.ttl.client` metrics now report the lowest value observed for a user in the last 24 hours. [#143384][#143384] +- Previously, the user provided in the source URI in the logical data replication (LDR) stream required the `REPLICATIONSOURCE` privilege at the system level. With this change, the user only needs this privilege on the source tables (i.e., a table-level privilege). [#143456][#143456] +- Prometheus metrics are now also available at the `/metrics` endpoint, in addition to the existing `/_status/vars` endpoint. The new `/metrics` endpoint emits statically labeled metrics and will evolve more rapidly as CockroachDB migrates metrics to use labels instead of defining different metric names. For compatibility, users can continue to use `/_status/vars`, where metric names will remain stable. [#143536][#143536] +- `debug zip` queries are now attributed to internal SQL metrics. As a result, users will no longer see their impact on the SQL charts in the DB Console. [#143711][#143711] +- Added a new metric, `kv.loadsplitter.cleardirection`, which increments when the load-based splitter observes that more than 80% of replica access samples are moving in a single direction (either left/descending or right/ascending). [#143927][#143927] +- The cluster setting `server.client_cert_expiration_cache.capacity` has been deprecated. The client certificate cache now evicts client certificates based on expiration time. [#144181][#144181] +- Added job tracing support to changefeeds. [#144412][#144412] +- When the `server.telemetry.hot_ranges_stats.enabled` cluster setting is enabled, nodes check for hot ranges every minute instead of every 4 hours. A node logs its hot ranges when any single replica exceeds 250 ms of CPU time per second. In multi-tenant deployments, the check runs every 5 minutes and logs hot ranges for the entire cluster. [#144414][#144414] +- Logical data replication (LDR) can now replicate on tables with partial indexes when using the default on SQL writer path. [#144415][#144415] +- partial index schema changes are supported in + replicating tables when logical_replication.consumer.immediate_mode_writer is + not set to legacy-kv [#144508][#144508] +- Logs for hot ranges (`hot_ranges_stats` events) have been moved to the `HEALTH` logging channel. [#144567][#144567] +- Added the metric `changefeed.checkpoint.timestamp_count` that measures the number of unique timestamps in a changefeed span-level checkpoint. It may be useful to monitor this metric to determine if quantization settings should be changed. [#145117][#145117] +- In a physical cluster replication (PCR) deployment, it is not possible for the standby system virtual cluster, or the reader virtual cluster to upgrade the reader virtual cluster by setting the version cluster setting. It is necessary to: + 1. Upgrade the standby system virtual cluster. + 1. Upgrade the primary system virtual cluster. + 1. Upgrade the primary virtual cluster. + 1. Wait for the replicated time to advance past the time the primary virtual cluster upgraded. + 1. Shut down the reader virtual cluster. + 1. Upgrade the destination host cluster. + 1. Re-initialize the reader virtual cluster with `ALTER VIRTUAL CLUSTER SET REPLICATION READ VIRTUAL CLUSTER`. [#146127][#146127] +- Added an `alter_changefeed` structured log event to provide more visibility into when an `ALTER CHANGEFEED` event occurred and what changed. [#147679][#147679] +- Added new timeseries metrics to the `storage.value_separation.*` namespace for observing the behavior of storage engine value separation. [#147728][#147728] +- Introduced the following cluster settings for enabling and configuring value separation in the storage engine: `storage.value_separation.enabled`, `storage.value_separation.minimum_size`, and `storage.value_separation.max_reference_depth`. [#148535][#148535] +- Non-admin users no longer have access to changefeed jobs they do not own and which are not owned by a role of which they are a member, regardless of whether they have the `CHANGEFEED` privilege on the table or tables those jobs may be watching. Admin users, or those with global `SHOWJOB` / `CONTROLJOB` privileges, can still interact with all jobs, regardless of ownership. [#148537][#148537] +- In order to selectively capture + traces for transactions running in an active workload without haing + to capture them via statement diagnostic bundles, customers can now + use the `sql.trace.txn.sample_rate` cluster setting to enable tracing + for a fraction of their workload. The `sql.trace.txn.enable_threshold` + will still need to be set to a positive value to provide a filter + for how slow a transaction needs to be after being sampled to merit + emitting a trace. Traces are emitted to the `SQL_EXEC` logging + channel. [#148542][#148542] +- Added the following cluster settings for configuring blob file rewrite compactions: `storage.value_separation.rewrite_minimum_age` and `storage.value_separation.compaction_garbage_threshold`. [#148782][#148782] +- The default value of `server.mem_profile.total_dump_size_limit` (which controls how much space can be used by automatically collected heap profiles) has been increased from 256MiB to 512MiB. [#148848][#148848] +- Added new experimental values for compression cluster settings to the storage engine. [#148849][#148849] +- The `storage.value_separation.enabled` cluster setting is now enabled by default. This enables value separation for SSTables, where values exceeding a certain size threshold are stored in separate blob files rather than inline in the SSTable. This helps improve write performance (write amplification) by avoiding rewriting such values during compactions. [#148857][#148857] +- A structured event is now logged to the `SQL_SCHEMA` channel when the `REFRESH MATERIALIZED VIEW` statement is executed. [#149153][#149153] +- Removed the `storage.columnar_blocks.enabled` cluster setting; columnar blocks are always enabled. [#149371][#149371] +- A new feature is now available that automatically captures Go execution traces on a scheduled interval. This feature incurs a performance penalty and is generally intended for use under the guidance of Cockroach Labs Support. It can be configured using the following cluster settings: + +- `obs.execution_tracer.interval`: Enables the tracer and sets the interval for capturing traces. Set to a value greater than 0 to activate. +- `obs.execution_tracer.duration`: Specifies the duration for each captured trace. +- `obs.execution_tracer.total_dump_size_limit`: Sets the maximum disk space allowed for storing execution traces. Older traces are automatically deleted when this limit is reached. [#149373][#149373] +- Introduced a cluster setting, `sql.stats.error_on_concurrent_create_stats.enabled`, which modifies how CockroachDB reacts to concurrent auto stats jobs. The default, `true`, maintains the previous behavior. Setting `sql.stats.error_on_concurrent_create_stats.enabled` to `false` will cause the concurrent auto stats job to be skipped with just a log entry and no increased error counters. [#149538][#149538] +- The value of `sql.stats.error_on_concurrent_create_stats.enabled` now defaults to `false`, suppressing error counters for auto stats jobs that fail due to concurrent stats jobs in progress. [#149848][#149848] +- Updated TTL job replanning to be less sensitive by focusing specifically on detecting when nodes become unavailable rather than reacting to all plan differences. The cluster setting `sql.ttl.replan_flow_threshold` may have been set to `0` to work around the TTL replanner being too sensitive; this fix will alleviate that and any instance that had set `replan_flow_threshold` to `0` can be reset back to the default. [#150771][#150771] +- `auth.ldap.conn.latency.internal` has been added to denote the internal authentication time for ldap auth method. [#151105][#151105] +- Introduced two new logging channels: `KV_EXEC` and `CHANGEFEED`. The `KV_EXEC` channel is intended for KV events that do not fall into the `KV_DISTRIBUTION` channel. The `CHANGEFEED` channel is intended for changefeed-related events that are currently logged to the `TELEMETRY` channel. This change does not include logic to move existing logs to the new channels. [#151692][#151692] +- Restricted access to internal tables in the `crdb_internal` schema. Only a predefined allowlist of internal objects is accessible when the session variable `allow_unsafe_internals` is enabled or when the caller is internal. [#151804][#151804] +- In v26.1, changefeed events will be logged to the `CHANGEFEED` logging channel instead of `TELEMETRY`. To test the impact of this change before upgrading, set the cluster setting `log.channel_compatibility_mode.enabled` to `false`. This redirects changefeed logs to the `CHANGEFEED` channel and should be tested only in non-production environments. [#151807][#151807] +- In v26.1, SQL performance events will be logged to the `SQL_EXEC` channel instead of the `SQL_PERF` and `SQL_INTERNAL_PERF` channels. To test the impact of this change, you can set the new cluster setting `log.channel_compatibility_mode.enabled` to `false`. This redirects SQL performance logs to the `SQL_EXEC` channel. This setting should not be used in production environments, as it may affect downstream logging pipelines. [#151827][#151827] +- Restricted access to all `crdb_internal` built-ins unless the session variable `allow_unsafe_internals` is set to true, or the caller is internal. [#151887][#151887] +- In v26.1, `sampled_query` and `sampled_transaction` events will move from the `TELEMETRY` channel to the `SQL_EXEC` logging channel. To test for potential logging pipeline impacts of these changes, set `log.channel_compatibility_mode.enabled` to `false`. Avoid testing in production, as this setting changes live log behavior. [#151949][#151949] +- Delegate queries (such as `SHOW DATABASES`) are now excluded from unsafe SQL checks that restrict access to the `system` database and `crdb_internal` schema. This change ensures that these commands continue to function even when access to internal components is otherwise restricted. [#152084][#152084] +- Added the cluster setting `kvadmission.use_range_tenant_id_for_non_admin.enabled`, which can be used to disable the behavior where Admission Control uses the range's tenant ID for non-admin requests. This behavior is enabled by default. [#152181][#152181] +- CockroachDB now logs structured contention event data, including waiting and blocking transactions, contended keys, and total contention time. [#152190][#152190] +- the PCR reader tenant is always destroyed on cutover [#152509][#152509] +- CockroachDB now logs access to internal system tables and schemas considered unsafe (e.g., `crdb_internal` and `system`). A message is emitted to the `SENSITIVE_ACCESS` log channel when a user overrides the `allow_unsafe_internals` setting or is denied access to these areas. [#152532][#152532] +- A new `changefeed` file group that collects + changefeed logs has been added to the default logging configuration. [#153381][#153381] +- this patch removes the + bulkio.backup.deprecated_full_backup_with_subdir.enabled cluster setting, since + backups will now fail if it is set to true. [#153628][#153628] +- Raised the cache size for the storage engine's block cache to 256 MiB. Note that production systems should always configure this setting. [#153739][#153739] +- 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] +- the incremental_location option is now deprecated + and will be removed in a future release. This feature was added so customers + could define different TTL policies for incremental backups vs full backups. + Users can still do this since incremental backups are by default stored in a + distinct directory relative to full backups ({collection_root}/incrementals). [#153890][#153890] +- 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}`. [#154166][#154166] +- The metrics `sql.select.started.count`, `sql.insert.started.count`, `sql.update.started.count`, and `sql.delete.started.count` are now emitted with labels under the common metric name `sql.started.count`, using a `query_type` label to distinguish each operation. [#154388][#154388] +- Added the cluster setting `storage.unhealthy_write_duration` (defaults to 20s), which is used to indicate to the allocator that a store's disk is unhealthy. The cluster setting `kv.allocator.disk_unhealthy_io_overload_score` controls the overload score assigned to a store with an unhealthy disk, where a higher score results in preventing lease or replica transfers to the store, or shedding of leases by the store. The default value of that setting is 0, so the allocator behavior is unaffected. [#154459][#154459] +- Added cluster setting `sql.schema.approx_max_object_count` (default: 20,000) to prevent creation of new schema objects when the limit is exceeded. The check uses cached table statistics for performance and is approximate - it may not be immediately accurate until table statistics are updated by the background statistics refreshing job. Clusters that have been running stably with a larger object count should raise the limit or disable the limit by setting the value to 0. In future releases, the default value for this setting will be raised as more CockroachDB features support larger object counts. [#154576][#154576] + +

Command-line changes

+ +- Node attributes (attrs) will now appear in + the node status cli command. [#143421][#143421] +- Added the `--validate-zip-file` flag to `cockroach debug zip` command. This flag performs a quick validation check to ensure that the generated zip file is not corrupted. The flag is enabled by default. [#146192][#146192] +- Updated the `\d ` command to show policy and Row Level Security information similar to what is shown in the output of `SHOW CREATE TABLE`. [#146215][#146215] +- The SQL shell now supports the compact output mode when `auto_trace` is enabled. [#146432][#146432] +- Removed the stale `--oss` flag from the `dev ui watch` subcommand. This flag was no longer in use, as the UI development workflow now exclusively targets the CCL build. This change simplifies the tool by removing an unused build path and potential confusion for developers. [#147978][#147978] +- The internal generator used by `cockroach workload` now supports parsing DDL schemas into a structured YAML format, enabling more flexible and detailed workload generation configurations. [#149513][#149513] +- Improved the performance of the `debug zip` query that collects `transaction_contention_events` data. This change reduces the risk of encountering “memory budget exceeded” or “query execution canceled due to statement timeout” errors. [#149570][#149570] +- The `cockroach workload` internals have been updated with built-in generators and wrappers for various SQL types—enabling modular, extensible, and reusable workload data generation. [#149728][#149728] +- Updated the internals of `cockroach workload` so there is one primary CLI entry point for workload generation, wiring together DDL parsing, schema construction, generator factory, and output routines. [#150321][#150321] +- Updated the redaction policy for cluster settings in `debug zip` output. All "sensitive" settings are now redacted in all debug zips, whether or not redaction is explicitly requested. In redacted debug zips, both "sensitive" and "non-reportable" settings are redacted. This replaces the previous behavior, which redacted all string-type settings only in redacted debug zips. [#150364][#150364] +- Added SQL workload extraction and rewriting support to the internals of `cockroach workload`, enabling placeholder‐driven data-generation workflows from CockroachDB debug logs. [#150614][#150614] +- Update the help text for the --database and --url + CLI flags to document support for virtual cluster syntax. The --database flag + now shows examples of both simple database names and the + cluster:virtual-cluster/database format. The --url flag examples now include + the virtual cluster syntax in PostgreSQL connection URLs. [#150624][#150624] +- Updated `cockroach workload` internals to read init‑time schema and SQL artifacts and run SQL workloads with placeholder‑driven data generation. [#150836][#150836] +- Added support for simple `CHECK` constraints and bit/bytes column generators to `cockroach workload`'s workload generator. [#150926][#150926] +- Added a new file, `cluster_settings_history.txt`, to debug zips. This file contains a history of cluster setting changes based on the system event log table. The history is only available while the corresponding events remain in the table. Sensitive settings are always redacted, and non-reportable settings are redacted when the debug zip is generated with redaction enabled. [#151066][#151066] + +

DB Console changes

+ +- The lock and latch wait time components of a query's cumulative contention time are now tracked separately and surfaced as annotations in `EXPLAIN ANALYZE` output. [#113649][#113649] +- The metric that measures cumulative contention time now includes time spent waiting to acquire latches, in addition to time spent acquiring locks. This metric is displayed in both the DB Console and the `EXPLAIN ANALYZE` output. [#113649][#113649] +- The DB Console's `index.html` page now includes a `Content-Security-Policy` (CSP) HTTP header to help prevent cross-site scripting (XSS) attacks. [#142282][#142282] +- The Replica Quiescence graph on the DB Console's Replication Dashboard now displays the number of replicas quiesced with leader leases. [#143215][#143215] +- A new cluster setting, `ui.default_timezone`, has been added to replace the deprecated `ui.display_timezone`. The new setting supports all timezones and is used to render timestamps in the DB Console. Avoid using `ui.display_timezone`, as it will be removed in a future release. [#143499][#143499] +- The Explain Plans table on the **Statement Details** and **Plan Details** pages now indicate whether or not the plan was a generic query plan. [#144008][#144008] +- Schema insights that recommend replacing an index were previously a two-statement command consisting of a `CREATE INDEX` and a `DROP INDEX` statement. When these two DDL statements were run as a single batched command, it was possible for one statement to succeed and one to fail. This is because DDL statements do not have the same atomicity guarantees as other SQL statements in CockroachDB. Index-replacement insights are now a single `CREATE INDEX` statement followed by a comment with additional DDL statements to be run manually: an `ALTER INDEX ... NOT VISIBLE` statement, which makes the old index invisible to the optimizer, followed by a `DROP INDEX` statement that should only be run after making the old index invisible and verifying that workload performance is satisfactory. [#144101][#144101] +- The Hot Ranges page node filter has been moved out of the main filter container and now filters nodes on the backend to reduce load time. [#147089][#147089] +- The Insights page in the DB Console now displays SQL commenter query tags for statement executions. These tags provide application context (such as application name, user ID, or feature flags) embedded in SQL comments using the `sqlcommenter` format. This information can help correlate slow query performance with specific application states. The Query Tags column is available in the Statement Executions view's Statement Insights table, but it is hidden by default. To display it, use the Columns selector. [#147439][#147439] +- Updated the titles of the disk throughput graphs on the Metrics page Hardware dashboard to display only "Bytes/s" instead of including a specific magnitude, "MiB/s". The titles of the graphs are now “"Disk Read Bytes/s" and "Disk Write Bytes/s". [#147462][#147462] +- Retry counts for statements executing under `READ COMMITTED` isolation are now more accurate. [#147682][#147682] +- Updated the "Learn more" link on the **Hot Ranges** page to direct users to a newer, more comprehensive reference guide about hotspots. [#147927][#147927] +- Renamed the 'Hot Ranges' page in the DB Console to 'Top Ranges' to clarify that it shows the highest-ranked ranges by various metrics, not necessarily those experiencing high activity. [#149713][#149713] +- Fixed a bug where **Drop Unused Index** recommendations were not populated on the Schema Insights tab after a hard refresh of the Insights page. [#149838][#149838] +- Updated the DB Console so that the tenant dropdown now appears in insecure mode when multiple virtual clusters are available. [#150535][#150535] +- In the DB Console, the **Active Executions** table on the Statements and Transactions pages now includes a new **Isolation Level** column. The Sessions page also includes a new **Default Isolation Level** column. [#153617][#153617] + +

Bug fixes

+ +- Fixed a bug where replication controls on indexes and partitions would not get properly updated during an index backfill to its new ID; this effectively discarded the replication controls set on the object before the backfill. [#141800][#141800] +- Fixed a bug where secondary indexes could be unusable by DML statements while a primary key swap was occurring, if the new primary key did not contain columns from the old primary key. [#141850][#141850] +- Fixed a bug when running with the `autocommit_before_ddl` session variable that could cause a runtime error when binding a previously prepared DDL statement. [#141851][#141851] +- The TTL deletion job now includes a retry mechanism that progressively reduces the batch size when encountering contention. This improves the chances of successful deletion without requiring manual adjustments to TTL knobs. Added the `jobs.row_level_ttl.num_delete_batch_retries` metric to track the number of times the TTL job had to reduce the batch size and try again. [#141953][#141953] +- Fixed a bug when running with the `autocommit_before_ddl` session setting that could cause a runtime error when binding a previously prepared DDL statement. [#141987][#141987] +- Fixed an issue where change data capture queries on tables without columns would fail with an internal error: `unable to determine result columns`. [#142068][#142068] +- Fixed a bug that would prevent `CREATE TRIGGER` and `DROP TRIGGER` statements from working if the `autocommit_before_ddl` session setting was enabled, and if the statement was either sent as a prepared statement or as part of a batch of multiple statements. [#142202][#142202] +- Previously, the `CREATE LOGICALLY REPLICATED` syntax would always create the destination table with the source table's name, instead of the user-provided name. Now, `CREATE LOGICALLY REPLICATED` will create the destination table with the user-provided name. [#142235][#142235] +- Fixed a bug where `EXPLAIN ANALYZE` output could incorrectly show `distribution: full` and not `distribution: local` in some cases when the physical plan was only running on the gateway node. The bug had been present since before v23.1, and did not apply to `EXPLAIN` statements. [#142248][#142248] +- Fixed a bug that could cause the upgrade to v25.1 to crash if a job was missing from the virtual table, for example if a malformed job had no payload info. [#142284][#142284] +- Fixed an issue where removed nodes could leave persistent entries in `crdb_internal.gossip_alerts`. [#142385][#142385] +- Fixed a bug where invalid default expressions could cause backfilling schema changes to retry forever. [#142490][#142490] +- Fixed a bug where index backfill progress before a `PAUSE`/`RESUME` would not get tracked. [#142602][#142602] +- Fixed an issue where dropping a database with triggers could fail due to an undropped backreference to a trigger function. [#142670][#142670] +- Fixed a bug in client certificate expiration metrics, `security.certificate.expiration.client` and `security.certificate.ttl.client`. [#142682][#142682] +- Fixed a bug where `CREATE SEQUENCE` could succeed during an ongoing `DROP SCHEMA` or `DROP DATABASE` operation. Now, `CREATE SEQUENCE` will retry if the parent object has a schema change in progress, preventing the creation of new objects under deleted parent objects. [#142696][#142696] +- Fixed a bug where, during validation of a table-level zone config, inherited values were incorrectly populated from the default range instead of from the parent database. [#142760][#142760] +- Fixed a bug where index backfills unnecessarily merged new data written to an index, which could lead to extra contention. [#142768][#142768] +- Physical Cluster Replication (PCR) reader catalogs could have orphaned rows in `system.namespace` after an object is renamed. [#142829][#142829] +- Fixed a bug which would send a replica outside of a tenant's known region when `SURVIVE REGION FAILURE` was set and exactly 3 regions were configured. [#142838][#142838] +- The reader virtual cluster now starts if the user begins a physical cluster replication (PCR) stream from a cursor via `ALTER VIRTUAL CLUSTER virtual_cluster START REPLICATION OF physical_cluster ON pgurl WITH READ VIRTUAL CLUSTER`. [#143072][#143072] +- Fixed a bug that caused changefeeds to fail on startup when scanning a single key. [#143102][#143102] +- MVCC garbage collection is now fully subject to IO admission control. Previously, it was possible for MVCC GC to cause store overload (such as LSM inversion) when a large amount of data would become eligible for garbage collection. Should any issues arise from subjecting MVCC GC to admission control, the `kv.mvcc_gc.queue_kv_admission_control.enabled` cluster setting can be set to `false` to restore the previous behavior. [#143122][#143122] +- Fixed a bug where CockroachDB incorrectly resolved routine overloads in some cases. Previously, it allowed creating routines with signatures differing only in type width (e.g., `f(p VARCHAR(1))` and `f(p VARCHAR(2))`), which is not permitted in PostgreSQL. This required precise type casting during invocation. Similarly, when dropping a routine, CockroachDB previously required exact types, unlike PostgreSQL, which is more lenient (e.g., `DROP FUNCTION f(VARCHAR)` would fail in the preceding example). This bug had existed since v23.1. [#143159][#143159] +- Fixed a bug that could cause a nil-pointer error when a column's default expression contained a volatile expression (like `nextval`) as a UDF argument. The bug was in v24.1.14, v24.3.7, v24.3.8, and v25.1. [#143170][#143170] +- Fixed a bug where calling a stored procedure could drop the procedure if it had `OUT` parameters that were not used by the calling routine. This bug had existed since PL/pgSQL `CALL` statements were introduced in v24.1. [#143173][#143173] +- Fixed a bug where CockroachDB would encounter an internal error when decoding the gists of plans with `CALL` statements. The bug had been present since v23.2. [#143252][#143252] +- Fixed a bug that could leave behind a dangling reference to a dropped role if that role had default privileges granted to itself. The bug was caused by defining privileges such as: `ALTER DEFAULT PRIVILEGES FOR ROLE self_referencing_role GRANT INSERT ON TABLES TO self_referencing_role`. [#143287][#143287] +- Fixed a crash due to `use of enum metadata before hydration` when using logical data replication (LDR) with user-defined types. [#143311][#143311] +- Previously, statement bundle collection could encounter `not enough privileges` errors when retrieving necessary information (e.g., cluster settings, table statistics, etc.) when the user that requested the bundle was different from the user that actually ran the query. This is now fixed. The bug was present since v20.2 and would result in partially incomplete bundles. [#143400][#143400] +- Fixed an issue where databases, tables, and indexes were not appearing on the Hot Ranges page for application virtual clusters. [#143441][#143441] +- Fixed a bug where a GC threshold error (which appears as "batch timestamp must be after replica GC threshold ...") could cause a schema change that backfills data to fail. Now, the error will cause the backfill to be retried at a higher timestamp to avoid the error. [#143451][#143451] +- Fixed a bug that could cause a function reference to be left behind if a procedure referred to another procedure that depended on a a table, and that table was dropped with `CASCADE`. [#143538][#143538] +- Fixed a potential deadlock that could occur during client certificate updates while metrics were being collected. This issue affected the reliability of certificate expiration reporting. [#143663][#143663] +- The `ALTER VIRTUAL CLUSTER SET REPLICATION READ VIRTUAL CLUSTER` syntax is now supported for adding a reader virtual cluster for an existing physical cluster replication (PCR) standby cluster. [#143752][#143752] +- validate column ids when starting an immediate + mode logical replication stream. [#143773][#143773] +- Fixed an issue where hot range logging for virtual clusters omitted some hot ranges. [#143775][#143775] +- Previously, the fields `maximum memory usage` and `max sql temp disk usage` in the `EXPLAIN ANALYZE` output could be under-reported for distributed plans when memory-intensive operations were fully performed on the remote nodes. This is now fixed. The bug existed in v22.1 and later. [#143777][#143777] +- Fixed a bug that could potentially cause a changefeed to complete erroneously when one of its watched tables encounters a schema change. [#144004][#144004] +- Fixed a bug that could cause a stack overflow during execution of a prepared statement that invoked a PL/pgSQL routine with a loop. The bug existed in versions v23.2.22, v24.1.15, v24.3.9, v25.1.2, v25.1.3, and pre-release versions of v25.2 prior to v25.2.0-alpha.3. [#144027][#144027] +- Fixed a bug where using + values changefeed.aggregator.flush_jitter, + min_checkpoint_frequency such that + changefeed.aggregator.flush_jitter * + min_checkpoint_frequency < 1 would cause a panic. + Jitter will now be disabled in this case. + + Fixes: #143436 [#144304][#144304] +- Fixed a bug that prevented variable references using ordinal syntax (like `$1`) from reflecting updates to the variable. Referencing variables declared in PL/pgSQL blocks (instead of parameters) via ordinal syntax is now disallowed. The bug had existed since v24.1. [#144347][#144347] +- Fixed a bug that could cause PL/pgSQL `FOR` loops to terminate early or show incorrect values for the counter variable. The bug had existed since v24.3, and occurred when two or more `FOR` loops were nested within one another. [#144347][#144347] +- Fixed a bug that could cause queries that perform work in parallel to ignore the requested quality-of-service level. Affected operations include lookup joins, DistSQL execution, and foreign-key checks. [#144427][#144427] +- Fixed a bug in the **SQL Activity Statements** page where filtering by **Statement Type** returned no results. The filter now works as expected. [#144517][#144517] +- Fixed a bug in the DB Console where tables with page size dropdowns failed to update when a new page size option was selected. Tables now update correctly. [#144556][#144556] +- Fixed a bug in the DB Console where the **Drop unused index** tag appeared multiple times for an index on the **Indexes** tab of the table details page. [#144558][#144558] +- Fixed the following bugs in the **Schedules** page of the DB Console: +- Fixed a bug where the **Schedules** page displayed only a subset of a cluster's schedules. The **Schedules** page now correctly displays all schedules. +- Fixed a bug where manually updating the `show` or `status` parameters in the URL (e.g., `http://127.0.0.1:8080/#/schedules?status=ACTIVE&show=50`) caused the **Schedules** page to fail to load. [#144638][#144638] +- Fixed a bug in the DB Console where the **Drop unused index** tag appeared multiple times for an index on the **Indexes** tab of the table details page. [#144652][#144652] +- Fixed a bug that caused vector indexes to return incorrect or no results from a standby reader in a physical cluster replication (PCR) setup. This bug existed in alpha versions of v25.2 and in v25.2.0-beta.1. [#144681][#144681] +- `NULL` vectors can now be inserted into tables with vector indexes. [#144712][#144712] +- Fixed a bug that caused index expression elements of primary keys to be shown incorrectly in the output of `SHOW CREATE TABLE`. [#144716][#144716] +- Improve the performance of `SHOW CREATE TABLE` on multi-region databases with large numbers of objects. [#144900][#144900] +- A bug where a NULL value could cause a + parquet export to fail has been fixed. [#145002][#145002] +- Fixed a bug where running `DROP INDEX` on a hash-sharded index did not properly detect dependencies from functions and procedures on the shard column. This caused the `DROP INDEX` statement to fail with an internal validation error. Now the statement returns a correct error message, and using `DROP INDEX ... CASCADE` works as expected by dropping the dependent functions and procedures. [#145107][#145107] +- Fixed an issue where using inline log configuration could cause internal errors on the DB Console's Logs page for a node at `#/node/{nodeID}/logs`. [#145329][#145329] +- Row-level security (RLS) `SELECT` policies during `UPDATE` operations are now only applied when referenced columns appear in the `SET` or `WHERE` clauses, matching the behavior of PostgreSQL. This improves compatibility. [#145344][#145344] +- Fixed a bug that could cause a row-level TTL job to fail with the error "comparison of two different versions of enum" if an `ENUM` type referenced by the table experienced a schema change. [#145374][#145374] +- Fixed a bug where CockroachDB could encounter an internal error when fetching from the `WITH HOLD` cursor with `FETCH FIRST` and `FETCH ABSOLUTE`. The bug was only present in v25.2 alpha and beta releases. [#145391][#145391] +- Fixed a bug that could lead to schema changes hanging after a cluster recovered from availability issues. [#145462][#145462] +- Previously, on a table with multiple column families, CockroachDB could encounter a `Non-nullable column "‹×›:‹×›" with no value` error in rare cases during table statistics collection. The bug was present since v19.2 and is now fixed. [#145481][#145481] +- Specifying types for a subset of columns in a generator function's column definition list now results in a syntax error instead of an internal error. [#145492][#145492] +- Fixed an internal assertion failure that could occur during operations like `ALTER TYPE` or `ALTER DATABASE ... ADD REGION` when temporary tables were present. [#145551][#145551] +- Errors triggered by DB Console activity no longer cause the node to crash. [#145563][#145563] +- Fixed incorrect application of row-level security (RLS) `SELECT` policies to `RETURNING` clauses in `INSERT` and `UPDATE` when no table columns were referenced. [#145890][#145890] +- Fixed a bug where the physical cluster replication (PCR) reader catalog job could hit validation errors when schema objects had dependencies between them (for example, when a sequence's default expression was being removed). [#145972][#145972] +- Creating a vector index on a table that contains a `NULL` vector value will no longer cause an internal error. [#145983][#145983] +- Fixed a bug where an invalid comment in the `system.comment` table for a schema object could make it inacessible. [#146213][#146213] +- Fixed a bug that allowed a column to be dropped from a table even if it was referenced in the `RETURNING` clause of an `UPDATE` or `DELETE` statement in a routine. In releases prior to v25.3, the fix must be enabled by setting the session variable `use_improved_routine_dependency_tracking` to `on`. [#146250][#146250] +- Fixed a bug in v25.2.0 where a vector search operator could drop user-supplied filters if the same vector column was indexed twice and a vector index with no prefix columns was defined after a vector index with prefix columns. [#146259][#146259] +- Fixed a bug that could lead to a node stall. [#146270][#146270] +- Fixed an integer overflow in the `split_part` function when using extremely negative field positions like Go's `math.MinInt64`. [#146271][#146271] +- Fixed a bug that prevented `TRUNCATE` from succeeding if any indexes on the table had back-reference dependencies, such as from a view or function referencing the index. [#146287][#146287] +- Fixed incorrect application of row-level security (RLS) `SELECT` policies to `RETURNING` clauses in `INSERT` and `UPDATE` when no table columns were referenced. [#146292][#146292] +- Fixed a data race in the `cloudstorage` sink. [#146297][#146297] +- Fixed a bug where `ALTER TABLE` operations with multiple commands could generate invalid zone configurations. [#146369][#146369] +- Fixed a bug where a CockroachDB node could crash when executing `DO` statements that contain currently unsupported DDL statements like `CREATE TYPE` in a non-default configuration (additional logging needed to be enabled, e.g., via the `sql.log.all_statements.enabled` cluster setting). This bug was introduced in v25.1. [#146406][#146406] +- Prevent use of future timestamps when using `AS OF SYSTEM TIME` with `CREATE TABLE ... AS` and materialized views. Previously, such timestamps could cause errors, delays, or hangs. [#146446][#146446] +- Remove unncessary Kafka topic creation that would + could cause changefeed start up to fail when using + changefeed.new_kafka_sink_enabled=false. + + Fixes: #128973 + Epic: CRDB-41784 [#146476][#146476] +- Fixed an internal error that could be hit when `ADD COLUMN UNIQUE` and `ALTER PRIMARY KEY` were executed within the same transaction. [#146567][#146567] +- Fixed a bug that prevented temporary views and sequences from being created if the `pg_temp` schema was explicitly specified in the qualified name of the object being created. [#146586][#146586] +- Prevent dropping columns or indexes that are still referenced by triggers. Previously, these operations could succeed silently, potentially breaking trigger functionality. [#146683][#146683] +- Fixed a bug where CockroachDB would not use the vectorized fast path for `COPY` when it was supported. The bug was only present in previous v25.2 releases. [#146696][#146696] +- Fixed an issue where malformed or hanging HTTP connections could block server shutdown. [#146744][#146744] +- The MVCC timestamp is now emitted correctly when the `mvcc_timestamp` is used with CDC queries. [#146836][#146836] +- Fixed a bug where searching a vector with a query vector that doesn't match the dimensions of the vector column in the table would cause a node to crash. [#146848][#146848] +- Fixed a bug that could cause the `cockroach` process to `segfault` when collecting runtime execution traces (typically collected via the **Advanced Debug** page in the Console). [#146883][#146883] +- Fixed a bug that could cause an `AFTER` trigger to fail with `client already committed or rolled back the transaction` if the query also contained foreign-key cascades. The bug had existed since `AFTER` triggers were introduced in v24.3. [#146890][#146890] +- Fixed a bug where the `kv.rangefeed.closed_timestamp.slow_ranges` would not be incremented when a rangefeed closed timestamp was slower than the target threshold. [#146949][#146949] +- Fixed an issue where self-referencing triggers did not have their dependencies properly recorded, which could lead to broken dependencies. [#147018][#147018] +- Fixed a bug that caused the SQL Activity > Statement Fingerprint page to fail to load details for statements run with application names containing a `#` character. [#147021][#147021] +- Fixed a bug that could cause stable expressions to be folded in cached query plans. The bug could cause stable expressions like `current_setting` to return the wrong result if used in a prepared statement. The bug was introduced in v23.2.22, v24.1.14, v24.3.9, v25.1.2, and the v25.2 alpha. [#147187][#147187] +- Fixed a bug where using column families on tables with vector indexes would cause the index to fail to return results. [#147307][#147307] +- Fixed a security issue where optimizer predicate reordering could leak information about hidden rows protected by row-level security (RLS) policies. [#147348][#147348] +- Fixed a bug where the `rolbypassrls` column in `pg_roles` and `pg_authid` tables always returned false, even for roles with the `BYPASSRLS` option. [#147357][#147357] +- Previously, CockroachDB could incorrectly evaluate the `to_regclass`, `to_regnamespace`, `to_regproc`, `to_regprocedure`, `to_regrole`, and `to_regtype` built-in functions when the query using them was evaluated in a distributed fashion. The bug was introduced with these built-in functions in v23.1 and is now fixed. [#147362][#147362] +- Fixed a bug that caused the optimizer to ignore index hints when optimizing some forms of prepared statements. This could result in one of two unexpected behaviors: a query errors with the message `index cannot be used for this query` when the index can actually be used; or a query uses an index that does not adhere to the hint. The hints relevant to this bug are regular index hints, e.g., `SELECT * FROM tab@index`, `FORCE_INVERTED_INDEX`, and `FORCE_ZIGZAG`. [#147368][#147368] +- Fixed a bug where the `pg_catalog.pg_policy` table could contain duplicate OID values when multiple tables had policies with the same policy ID. All rows in `pg_policy` now have unique OIDs as required. [#147373][#147373] +- Fixed a bug on the SQL Activity Statements and Transactions pages where the time picker failed to support sub-hour time ranges when the `sql.stats.aggregation.interval` was set to a value under 1 hour. Previously, selecting a short time window (e.g., 10 minutes) would query for a full hour of data. The fix ensures that the selected time range is respected, enabling more precise analysis of recent activity. [#147447][#147447] +- Fixed an issue where updating child metrics and reinitializing metrics at the same time could cause scrape errors. [#147486][#147486] +- Fixed a memory leak in index backfill jobs where completed spans were duplicated in memory on each progress update after resuming from a checkpoint. This could cause out-of-memory (OOM) errors when backfilling indexes on large tables with many ranges. This bug affected release version v25.2.0 and pre-release versions v25.2.0-alpha.3 through v25.2.0-rc.1. [#147511][#147511] +- Fixed a runtime panic in the `substring_index` function that occurred when the count argument was the minimum 64-bit integer value. [#147546][#147546] +- Fixed a bug where prepared statements on schema changes could fail with runtime errors. [#147658][#147658] +- `FUNCTION` and `PROCEDURE` are now shown via `\h show create` in the CLI doc. [#147666][#147666] +- Fixed a bug where functions lost their row-level security (RLS) policy backreferences, leading to schema change failures. [#147696][#147696] +- Fixed a bug where `ALTER TABLE` was modifying identity attributes on columns not backed by a sequence. [#147698][#147698] +- Fixed an error in `crdb_internal.table_spans` that could occur when a table's schema had been dropped. [#147766][#147766] +- Fixed a bug where introspection queries (such as a against the `crdb_internal` system catalog) could fail if a dropped constraint referenced a column that was also being dropped. [#147773][#147773] +- Fixed a bug that would cause a `CALL` statement executed via a portal in the extended wire protocol to result in an error like `unknown portal ""` if the stored procedure contained `COMMIT` or `ROLLBACK` statements. The bug had existed since PL/pgSQL transaction control statements were introduced in v24.1. The fix is off by default in versions prior to v25.3. [#147923][#147923] +- Fixed a bug where adding multiple columns in a single statement with `AddGeometryColumn` would cause runtime errors. [#147998][#147998] +- Fixed a bug where `libpq` clients using the async API could hang with large result sets (Python: psycopg; Ruby: ActiveRecord, ruby-pg). [#148222][#148222] +- Fixed a bug present since v24.1 where the allocator + could make rebalancing decisions based on stale data, failing to account for + recent local lease transfers not yet reflected in store capacity or gossip. [#148476][#148476] +- Large mutation statements (`INSERT`, `UPDATE`, `DELETE`, `UPSERT`) are now less likely to encounter contention with automatic table statistics collection in some cases. The bug was present since v19.1. [#148488][#148488] +- A bug where a changefeed that was created before + v25.2 could fail after upgrading to v25.2 with the error message + `both legacy and current checkpoint set on change aggregator spec` + has now been fixed. [#148617][#148617] +- CockroachDB now supports decoding `VECTOR` and `BOX2D` types from the binary format of the PostgreSQL extended protocol (pgwire). [#148719][#148719] +- The `RESET ALL` statement no longer affects the following session variables: + - `is_superuser` + - `role` + - `session_authorization` + - `transaction_isolation` + - `transaction_priority` + - `transaction_status` + - `transaction_read_only` + + This better matches PostgreSQL behavior for `RESET ALL`. In addition, the `DISCARD ALL` statement no longer errors when `default_transaction_use_follower_reads` is enabled. [#148770][#148770] +- CockroachDB now prohibits `ORDER BY` and join equality operations on `REFCURSOR` types, matching PostgreSQL behavior. [#148863][#148863] +- Previously, CockroachDB could hit an internal error when performing a `DELETE`, `UPDATE`, or `UPSERT` where the initial scan of the mutation is locking and is on a table different from the one being mutated. A possible workaround was `SET enable_implicit_select_for_update = false`, but this could increase contention. The bug was introduced in v25.2 and is now fixed. [#149093][#149093] +- Fixes a race condition when advancing a + changefeed aggregator's frontier. When hit, the race condition could + result in an internal error that would shut down the kvfeed and cause + the changefeed to retry. [#149119][#149119] +- CockroachDB now supports case-insensitive matching for keyword identifiers in JSONPath queries. Note that the special identifiers `TRUE`, `FALSE`, and `NULL` are parsed case-insensitively in CockroachDB, but are case-sensitive in PostgreSQL. For example, `SELECT '$.active == TrUe'::jsonpath;` succeeds in CockroachDB, but fails in PostgreSQL. [#149251][#149251] +- In v25.1, automatic partial statistics collection was enabled by default (by setting the `sql.stats.automatic_partial_collection.enabled` cluster setting to `true`). Partial statistics collection may encounter certain expected scenarios that were previously reported as failed stats jobs with PostgreSQL error code `55000`. These errors are benign and are no longer reported. Instead, the stats job will be marked as "succeeded," though no new statistics will be created. [#149279][#149279] +- Fixed a minor bug that caused inconsistent behavior with the very rarely used `"char"` type (distinct from `CHAR`). [#149433][#149433] +- CockroachDB now allows `EXPLAIN` of mutation statements in read-only transaction mode, matching PostgreSQL behavior. Note that `EXPLAIN ANALYZE` of mutations is still disallowed, since this variant actually executes the statement. [#149449][#149449] +- Fixed an issue where some SQL metrics were not reported when `server.child_metrics.enabled` was enabled, `server.child_metrics.include_aggregate.enabled` was disabled, and `sql.metrics.application_name.enabled` and `sql.metrics.database_name.enabled` were also disabled. Specifically, metrics with no children now report their aggregate metrics regardless of the `server.child_metrics.include_aggregate.enabled` cluster setting. [#149540][#149540] +- Fixed a bug where database login could fail + during LDAP, JWT, or OIDC authentication if the user's external group + memberships did not correspond to any existing roles in the + database. The login will now succeed, and no roles will be granted or + revoked in this scenario. [#149638][#149638] +- Fixed a slow memory leak that was introduced in v25.1.8, v25.2.1, v25.2.2, and v25.3 betas. The leak would accumulate whenever a node executed a part of the distributed plan (the gateway node of the plan was not affected), and could only be mitigated by restarting the node. [#149800][#149800] +- Attempting to create a vector index with the legacy schema changer will now fail gracefully instead of crashing the node. [#149812][#149812] +- Improved split and scatter behavior for `CREATE INDEX` when statistics are available for key columns. [#150238][#150238] +- Fixed a bug that was preventing the row-level TTL table storage parameters (e.g., `ttl_select_batch_size`, `ttl_delete_batch_size`, `ttl_delete_rate_limit`, `ttl_select_rate_limit`) from being set to `0`, which is their default value. [#150253][#150253] +- Fixed an issue where discarding zone configs on sequences did not actually remove the configuration. [#150255][#150255] +- A bug where modifying a changefeed with ALTER CHANGEFEED + that either unset or left the `gc_protect_expires_after` option unset would + cause the changefeed's max PTS age to become unbounded instead of being set to + the default value configured by the `changefeed.protect_timestamp.max_age` + cluster setting. [#150283][#150283] +- Fixed a bug that would allow a race condition in foreign key cascades under `READ COMMITTED` and `REPEATABLE READ` isolation levels. [#150291][#150291] +- Fixed a bug where the entire schema would become inaccessible if a table was referenced as an implicit record type by a user-defined function (UDF) while the table was undergoing an `IMPORT`. [#150350][#150350] +- Fixed invalid zone configurations that were generated when adding a super region to a 3-region database with a secondary region and region survivability. Previously, this could result in assigning more than the allowed number of replicas. [#150413][#150413] +- Addressed a bug on `schema_locked` tables when a column is dropped, and `schema_locked` is toggled for the user. [#150435][#150435] +- Fixed the `pg_catalog.pg_type` enties for the "any" and "trigger" pseudotypes. [#150777][#150777] +- Fixed an issue where Row Level Security (RLS) policies with missing dependencies during table-level restores could cause inconsistent state or restore failures. [#151045][#151045] +- Fixed a bug that could cause some errors returned by attempts to upload backup data to external storage providers to go undetected, potentially causing incomplete backups. [#151058][#151058] +- Previously, CockroachDB could encounter an internal error `trying to add a column of UNKNOWN type at ...` in rare cases when handling `CASE` or `OR` operations. This bug was present since v20.2 and is now fixed. [#151093][#151093] +- Fixed a bug where `debug.zip` files collected from clusters with `disallow_full_table_scans` enabled were missing system table data. [#151185][#151185] +- Fix handling of empty arrays in JSONPath lax mode + comparisons. Empty arrays now return false for comparisons in lax mode and + null in strict mode, matching PostgreSQL behavior. [#151226][#151226] +- Fixed a bug where `DROP USER` succeeded even though a role owned default privileges, which could leave invalid privilege entries in the system. [#151472][#151472] +- Fixed a bug where sequences could lose references to triggers, allowing them to be dropped incorrectly. [#151546][#151546] +- Previously, CockroachDB could incorrectly elevate the number of rows deleted on tables with multiple column families. The bug was present v19.2 and is now fixed. Note that the data was deleted correctly, but the "rows affected" number was wrong. [#151563][#151563] +- Fixed a bug that allowed replacement indexes, created during an `ALTER PRIMARY KEY` operation, to be accessed with index hints before they were in a ready state. This could lead to runtime errors. [#151691][#151691] +- Added an automatic repair for dangling or invalid entries in the `system.comments` table. [#151737][#151737] +- Previously, CockroachDB could hit an error `ERROR: span with results after resume span...` when evaluating some queries with `ORDER BY ... DESC` in an edge case. This bug was present since v22.1 and is now fixed. [#151774][#151774] +- Fixed a bug introduced in v25.1 where CockroachDB nodes could crash when executing `DO` statements that referenced (possibly nonexistent) user-defined types in non-default configurations. The crash only occurred if additional logging was enabled (for example, with the `sql.log.all_statements.enabled` cluster setting). [#151849][#151849] +- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. [#151947][#151947] +- Fixed a bug where executing certain statements with `BETWEEN SYMMETRIC` expressions could panic if used with values of different types, such as `... b'bytes' BETWEEN SYMMETRIC 'a' AND 'c'`. [#151951][#151951] +- Fixed a bug where `SHOW TABLES` would show inaccurate row counts if the most recent statistics collection was partial. [#152033][#152033] +- Fixed a bug that prevented `RESTORE` from working if there were computed columns or `ON UPDATE` expressions that referenced user-defined functions (UDFs). This bug was introduced in v25.3.0. [#152193][#152193] +- Fixed a bug that allowed foreign-key violations to result from some combinations of concurrent `READ COMMITTED` and `SERIALIZABLE` transactions. If both `SERIALIZABLE` and weaker-isolation transactions will concurrently modify rows involved in foreign-key relationships, the `SERIALIZABLE` transactions must have the following session variables set in order to prevent any possible foreign-key violations: + - `SET enable_implicit_fk_locking_for_serializable = on;` + - `SET enable_shared_locking_for_serializable = on;` + - `SET enable_durable_locking_for_serializable = on;` [#152245][#152245] +- Added the `use_soft_limit_for_distribute_scan` session variable (default: `false`), which controls whether CockroachDB uses the soft row count estimate when deciding whether an execution plan should be distributed. In v25.1, the physical planning heuristics were changed such that large constrained table scans, estimated to scan at least 10,000 rows (controlled via `distribute_scan_row_count_threshold`), would force plan distribution when `distsql=auto`. However, if the scan had a "soft limit" CockroachDB would still use the full estimate (for example, `10,000` in `estimated row count: 100–10,000`), sometimes unnecessarily distributing queries and increasing latency. The `use_soft_limit_for_distribute_scan` session variable addresses this by allowing the planner to use the soft limit when deciding whether a scan is "large". [#152300][#152300] +- `pg_class.pg_depend` now contains entries with `deptype='i'` (internal) for identity columns that own sequences. These previously had `deptype='a'` (auto). [#152309][#152309] +- Fixed a bug that caused an error when dropping a column and a `UNIQUE WITHOUT INDEX` constraint that referenced it in the same transaction. [#152447][#152447] +- Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions. [#152670][#152670] +- Fixed `IMPORT` progress reporting to show the correct row counts when concurrent job state changes occur. [#152745][#152745] +- Fixed a bug where an `INSERT` statement could fail with a type checking error while adding a `BIT(n)` column. [#152910][#152910] +- Fixed a bug where the `schema_locked` storage parameter was not being enforced on the `TRUNCATE` command, which could cause changefeed jobs to fail. [#152932][#152932] +- Fixed an issue where certain vector index operations could throw an out-of-bounds access exception. [#153054][#153054] +- Fixed a bug introduced in v21.2 where `IMPORT` operations with multiple CSV files could incorrectly reset the bulk summary after processing the first file, causing the actual progress to be overwritten with a `nil` value. [#153111][#153111] +- Fixed a bug introduced in v25.1.0 that would + cause a node panic if a `SIGINT` signal was sent during the execution of + a `CHECK EXTERNAL CONNECTION` command. [#153380][#153380] +- Fixed a bug where index creation could fail due to validation errors if the schema change was retried or paused/resumed during the backfill. [#153583][#153583] +- Fixed a deadlock in `DROP COLUMN CASCADE` operations when dropping columns referenced by `STORED` computed columns. [#153683][#153683] +- Fixed a bug where `ALTER POLICY` was incorrectly dropping dependency tracking for functions, sequences, or types in policy expressions. [#153787][#153787] +- Fixed a bug where we would not show the pgwire `RowDescription` for `EXECUTE` statements that were themselves prepared using the pgwire `Parse` command. [#153905][#153905] +- Fixed a runtime error that could be hit if a new secondary index had a name collision with a primary index. [#153986][#153986] +- Vector index backfill jobs now correctly report progress in the `SHOW JOBS` output. [#154261][#154261] +- 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. [#154289][#154289] +- **Idle latency** on the **Transaction Details** page in the DB Console is now reported more accurately. Previously, transactions that used prepared statements (e.g., with placeholders) overcounted idle time, while those that included observer statements (common in the SQL CLI) undercounted it. [#154385][#154385] +- Fixed a bug where `RESTORE` of a database with a `SECONDARY REGION` did not apply the lease preferences for that region. [#154659][#154659] +- Fixed a bug where a changefeed could perform + many unnecessary job progress saves during an initial scan. [#154709][#154709] +- Fixed a bug where a changefeed targeting only a subset + of a table's column families could become stuck. [#154915][#154915] +- 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. [#154970][#154970] +- 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. [#155077][#155077] +- Disable a feature + (kv.lock_table.unreplicated_lock_reliability.split.enabled) that could + lead to a node crash. [#155366][#155366] +- 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. [#155415][#155415] +- Corrected a potential deadlock during vector index creation. [#155508][#155508] +- Added proper dependency handling when adding a constraint with `NOT VALID` that references a user-defined function (UDF). [#155528][#155528] +- 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. [#155633][#155633] +- 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. [#155927][#155927] +- Fixes a bug where the job responsible for + compacting stats for the SQL activity state could enter an unschedulable + state. + Fixes: #155165 [#155963][#155963] +- 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. [#156136][#156136] +- 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. [#156286][#156286] +- A bug where changefeeds using CDC + queries could sometimes unexpectedly fail after a schema + change with a descriptor retrieval error has been fixed. [#156545][#156545] +- Fixes a bug where `DROP SCHEMA CASCADE` could run into an error with complex references from triggers. [#156564][#156564] +- 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. [#156667][#156667] +- 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`. [#156695][#156695] +- 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. [#156779][#156779] +- Fix bug that could result in incorrect + gossip.callbacks.pending_duration metric value being recorded. [#156947][#156947] +- 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. [#156968][#156968] +- Fixed a bug that could cause internal errors for queries using generic query plans with `NULL` placeholder values. [#156979][#156979] +- 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. [#157037][#157037] + +

Performance improvements

+ +- Queries that use `SHOW TABLES` without using the `estimated_row_count` column no longer need to look up the table statistics. [#59838][#59838] +- Fixed a bug that caused the optimizer to over-estimate the cost of inverted index scans in some cases. Now, plans with inverted index scans should be selected in more cases where they are optimal. [#120079][#120079] +- Index backfills and row-level TTL deletions that encounter transaction contention will now be retried with smaller batch sizes more quickly, which reduces the latency of these jobs under high contention workloads. [#142702][#142702] +- `SHOW TABLES` is now faster, especially in cases where there are many tables, both live and previously dropped. [#143446][#143446] +- Schema changes that require data to be backfilled no longer hold a protected timestamp for the entire duration of the backfill, which means there is less overhead caused by MVCC garbage collection after the backfill completes. [#143451][#143451] +- Prepared statements are now more efficiently cached. [#144021][#144021] +- Prepared statements are now more efficiently cached. [#144021][#144021] +- Triggers now perform the descriptor lookup for `TG_TABLE_SCHEMA` against a cache. This can significantly reduce trigger planning latency in multi-region databases. [#144217][#144217] +- Some internal queries executed by the jobs system are now less likely to perform full table scans of the `system.jobs` table, making them more efficient. This change can be reverted by disabling the `jobs.avoid_full_scans_in_find_running_jobs.enabled` cluster setting. [#144309][#144309] +- The vector search optimizer rule now supports additional projections beyond the distance column, including the implicit projections added for virtual columns. [#144536][#144536] +- TTL jobs now respond to cluster topology changes by restarting and rebalancing across available nodes. [#145214][#145214] +- Some queries with filters of the form `x IS NOT DISTINCT FROM y` now have more optimal query plans. [#146494][#146494] +- The optimizer will no longer apply a fast-path to deletes cascading to `REGIONAL BY ROW` tables. This prevents the cascading delete from accessing more regions than necessary. [#148105][#148105] +- Mutation statements (`UPDATE` and `DELETE`) that perform lookup joins into multi-region tables (perhaps as part of a `CASCADE`) are now more likely to parallelize the lookups across ranges, improving their performance. [#148186][#148186] +- `LIKE` filter expressions of the form `x LIKE '%'` are now normalized to `TRUE` if `x` is non-`NULL` within a `SELECT` expression. [#148763][#148763] +- Filters of the form `x LIKE '%'` are now normalized to `x IS NOT NULL`, enabling performance improvements on both nullable and non-nullable columns. Previously, such filters were normalized directly to `TRUE`, which only applied to non-`NULL` columns. [#149614][#149614] +- Multi-table changefeeds will protect + each lagging user table from garbage collection with its own record. + This will improve performance of multi-table changefeeds including + upcoming db-level changefeeds by allowing more garbage collection. [#149616][#149616] +- Updated the storage engine to reduce write amplification by storing Raft log values in separate blob files. This reduces write bandwidth, especially on stores with many replicas. This in turn can increase throughput and reduce latency. This behavior is active as long as the `storage.value_separation.enabled` cluster setting is enabled. [#149712][#149712] +- Improved the efficiency and throughput of catch-up scans used by Change Data Capture (CDC) and Physical Cluster Replication (PCR) in cases where substantial catch-up work is required. [#150738][#150738] +- Certain types of simple queries on tables with row-level security enabled are now more efficiently executed. [#151337][#151337] +- `LTREE` is now index-accelerated with the `<@` operator. [#152353][#152353] +- `LTREE` is now index-accelerated with the `@>` operator. [#152353][#152353] +- Lookup joins can now be used on tables with virtual columns even if the type of the search argument is not identical to the column type referenced in the virtual column. [#152399][#152399] +- Changefeeds will now + periodically persist their entire span frontiers so that + fewer duplicates will need to be emitted during restarts. + The default persistence interval is 30s, but this can be + configured with the `changefeed.progress.frontier_persistence.interval` + cluster setting. [#153491][#153491] +- The cost of generic query plans is now calculated based on worst-case selectivities for placeholder equalities (e.g., `x = $1`). This reduces the chance of suboptimal generic query plans being chosen when `plan_cache_mode=auto`. [#154899][#154899] +- The optimizer 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`. [#155460][#155460] + +

Build changes

+ +- Enable the use of profile-guided optimization in the `cockroach` binary. [#142697][#142697] +- Upgrade to Go 1.24.5 [#150870][#150870] +- Revert Go version back to 1.23.7. + Epic: none [#152023][#152023] + +

Miscellaneous

+ +- `pg_column_size()` is now regarded as Stable, matching PostgreSQL. As a result, it will no longer be allowed in computed column expressions or partial index predicate expressions. [#141193][#141193] +- When configuring the `sql.ttl.default_delete_rate_limit` cluster setting, a notice is displayed informing the user that the TTL rate limit is per leaseholder per table with a link to the docs. [#142061][#142061] +- Improve S3 credential caching for STS credentials [#142434][#142434] +- Updated CockroachDB builds to use Go 1.23.7. [#142698][#142698] +- This patch adds the new `experimental copy` option to `RESTORE`, which runs online `RESTORE`, but waits to publish the tables until all data is downloaded. [#143674][#143674] +- Backup compactions are not supported on and are blocked + for backups that are not scheduled, use revision history, have an + execution locality, set a custom incremental location, or include a + backup of a tenant. [#143854][#143854] +- Fix rare corruption bug that impacts import and + materialized views. [#144646][#144646] +- SQL queries run on the source cluster by logical data replication (LDR) and physical cluster replication (PCR) will account to internal metrics like `sql.statements.active.internal` instead of the metrics like `sql.statements.active` that are used to monitor application workload. [#145088][#145088] +- Vector indexes created in beta releases have an encoding issue + that may result in failed inserts. These indexes should be dropped and + re-created before being used with later releases. [#145158][#145158] +- Vector indexes created in beta releases have an encoding issue + that may result in failed inserts. These indexes should be dropped and + re-created before being used with later releases. [#145405][#145405] +- The `replicas.cpunanospersecond` metric was added. Notably, when child labels are enabled, it exposes evaluation-related Replica CPU usage by tenant. [#146526][#146526] +- fixes an issue with LDR where the presence of a unique + index may cause spurious DLQ entries if the unique index has a smaller + index id than the primary key index. [#147117][#147117] +- Restore no longer gets stuck in the reverting state after failed cleanup of dropped temporary system tables. [#148098][#148098] +- CockroachDB now raises an error when encountering improper + inline SSL credentials instead of panicking. [#148242][#148242] +- Restore will now re-attempt `AdminSplit` KV requests + instead of immediately failing and pausing the job. [#148484][#148484] +- To improve changefeed performance, the session variable `create_table_with_schema_locked` is enabled by default. This means all new tables are created with the `schema_locked` storage parameter. This setting must be explicitly unset for explicit transactions or for schema changes that do not support automatic disabling (e.g., `ALTER TABLE ... SET LOCALITY`). [#148576][#148576] +- Download phase of fast restore now will retry downloads + before giving up. [#148821][#148821] +- Fixed a memory accounting issue in the client certificate cache that caused multiple allocations to be reported for the same certificate. The cache now accurately tracks memory usage and includes a safeguard to prevent it from negatively affecting SQL operations. [#151041][#151041] +- None [#151110][#151110] +- Fixes a rare bug in restore where an object storage on + restore start could cause restore to report success without creating the + restored tables or databases. [#151148][#151148] +- You can now output transaction traces to the logs in Jaeger-compatible JSON format. This is controlled by the `sql.trace.txn.jaeger_json_output.enabled` cluster setting, which is disabled by default. When enabled, traces triggered by probabilistic sampling or statement latency thresholds will be formatted for easier ingestion by tools that support the Jaeger tracing format. [#151414][#151414] +- You can now exclude internal transactions from probabilistic transaction tracing and latency-based logging by setting the `sql.trace.txn.include_internal.enabled` cluster setting to false. This setting is enabled by default to preserve the current behavior, but disabling it is recommended when debugging customer workloads to reduce noise in trace output. [#151433][#151433] +- Tunes S3 client retry behavior to be more reliable in the + presence of correlated errors. [#151817][#151817] +- Upgrade to Go 1.23.12 [#152207][#152207] +- Increase the default number of times CRDB will retry + failures on Azure. + Epic: CRDB-53946 [#152746][#152746] +- CockroachDB now prevents negative values from appearing in network and disk counters collected from the operating system. These values could previously drop below zero due to hardware changes. Affected counters now reset their baseline values automatically. [#153048][#153048] +- Fixed a bug where the presence of duplicate temporary tables in a backup would cause the restore to fail with an error containing the text `restoring table desc and namespace entries: table already exists`. [#153724][#153724] +- LDR no longer requires the database name to be specified + in the external connection URI when setting up a bidirectional stream. [#155737][#155737] +- Span config reconciliation jobs no longer fail on the + destination after failover from a PCR stream of a system virtual cluster. [#156812][#156812] + + +[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 +[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 +[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 +[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 +[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 +[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 +[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 +[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 +[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 +[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 +[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 +[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 +[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 +[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 +[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 +[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 +[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 +[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 +[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 +[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 +[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 +[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 +[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 +[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 +[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 +[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 +[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 +[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 +[#145236]: https://github.com/cockroachdb/cockroach/pull/145236 +[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 +[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 +[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 +[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 +[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 +[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 +[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 +[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 +[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 +[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 +[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 +[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 +[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 +[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 +[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 +[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 +[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 +[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 +[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 +[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 +[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 +[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 +[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 +[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 +[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 +[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 +[#144536]: https://github.com/cockroachdb/cockroach/pull/144536 +[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 +[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 +[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 +[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 +[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 +[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 +[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 +[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 +[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 +[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 +[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 +[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 +[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 +[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 +[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 +[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 +[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 +[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 +[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 +[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 +[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 +[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 +[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 +[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 +[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 +[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 +[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 +[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 +[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 +[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 +[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 +[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 +[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 +[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 +[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 +[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 +[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 +[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 +[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 +[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 +[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 +[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 +[#153724]: https://github.com/cockroachdb/cockroach/pull/153724 +[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 +[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 +[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 +[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 +[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 +[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 +[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 +[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 +[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 +[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 +[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 +[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 +[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 +[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 +[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 +[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 +[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 +[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 +[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 +[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 +[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 +[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 +[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 +[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 +[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 +[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 +[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 +[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 +[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 +[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 +[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 +[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 +[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 +[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 +[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 +[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 +[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 +[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 +[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 +[#144658]: https://github.com/cockroachdb/cockroach/pull/144658 +[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 +[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 +[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 +[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 +[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 +[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 +[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 +[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 +[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 +[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 +[#145391]: https://github.com/cockroachdb/cockroach/pull/145391 +[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 +[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 +[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 +[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 +[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 +[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 +[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 +[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 +[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 +[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 +[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 +[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 +[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 +[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 +[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 +[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 +[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 +[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 +[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 +[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 +[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 +[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 +[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 +[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 +[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 +[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 +[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 +[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 +[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 +[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 +[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 +[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 +[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 +[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 +[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 +[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 +[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 +[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 +[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 +[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 +[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 +[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 +[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 +[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 +[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 +[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 +[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 +[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 +[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 +[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 +[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 +[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 +[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 +[#157037]: https://github.com/cockroachdb/cockroach/pull/157037 +[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 +[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 +[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 +[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 +[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 +[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 +[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 +[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 +[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 +[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 +[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 +[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 +[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 +[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 +[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 +[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 +[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 +[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 +[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 +[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 +[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 +[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 +[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 +[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 +[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 +[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 +[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 +[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 +[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 +[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 +[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 +[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 +[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 +[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 +[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 +[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 +[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 +[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 +[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 +[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 +[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 +[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 +[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 +[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 +[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 +[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 +[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 +[#143097]: https://github.com/cockroachdb/cockroach/pull/143097 +[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 +[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 +[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 +[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 +[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 +[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 +[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 +[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 +[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 +[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 +[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 +[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 +[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 +[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 +[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 +[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 +[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 +[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 +[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 +[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 +[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 +[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 +[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 +[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 +[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 +[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 +[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 +[#155927]: https://github.com/cockroachdb/cockroach/pull/155927 +[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 +[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 +[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 +[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 +[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 +[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 +[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 +[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 +[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 +[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 +[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 +[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 +[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 +[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 +[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 +[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 +[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 +[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 +[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 +[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 +[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 +[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 +[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 +[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 +[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 +[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 +[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 +[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 +[#144643]: https://github.com/cockroachdb/cockroach/pull/144643 +[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 +[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 +[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 +[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 +[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 +[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 +[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 +[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 +[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 +[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 +[#142927]: https://github.com/cockroachdb/cockroach/pull/142927 +[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 +[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 +[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 +[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 +[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 +[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 +[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 +[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 +[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 +[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 +[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 +[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 +[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 +[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 +[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 +[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 +[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 +[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 +[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 +[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 +[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 +[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 +[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 +[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 +[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 +[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 +[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 +[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 +[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 +[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 +[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 +[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 +[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 +[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 +[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 +[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 +[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 +[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 +[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 +[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 +[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 +[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 +[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 +[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 +[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 +[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 +[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 +[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 +[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 +[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 +[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 +[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 +[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 +[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 +[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 +[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 +[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 +[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 +[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 +[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 +[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 +[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 +[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 +[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 +[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 +[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 +[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 +[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 +[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 +[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 +[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 +[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 +[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 +[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 +[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 +[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 +[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 +[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 +[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 +[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 +[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 +[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 +[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 +[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 +[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 +[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 +[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 +[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 +[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 +[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 +[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 +[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 +[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 +[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 +[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 +[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 +[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 +[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 +[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 +[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 +[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 +[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 +[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 +[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 +[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 +[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 +[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 +[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 +[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 +[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 +[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 +[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 +[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 +[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 +[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 +[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 +[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 +[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 +[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 From 1cf085d75dae14474efb9538f3d608f9aa9ce937 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 14:31:27 +0000 Subject: [PATCH 04/37] Update release notes for v25.4-v25.4.1 From 0606e28a778f055d12c2bacba99d243141d376b1 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 14:31:28 +0000 Subject: [PATCH 05/37] Update release notes for v25.4-v25.4.1 From bf4b6975b802c2f1fe3b7e6bf95f3fb0c34a2fdf Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 14:31:29 +0000 Subject: [PATCH 06/37] Update release notes for v25.4-v25.4.1 --- .../_includes/releases/v25.4/v25.4.1.md | 884 +++++++++--------- 1 file changed, 442 insertions(+), 442 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.1.md b/src/current/_includes/releases/v25.4/v25.4.1.md index e13ed5c4e71..e8772d1a2be 100644 --- a/src/current/_includes/releases/v25.4/v25.4.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.1.md @@ -566,8 +566,8 @@ The following cases are not supported: Jitter will now be disabled in this case. Fixes: #143436 [#144304][#144304] -- Fixed a bug that prevented variable references using ordinal syntax (like `$1`) from reflecting updates to the variable. Referencing variables declared in PL/pgSQL blocks (instead of parameters) via ordinal syntax is now disallowed. The bug had existed since v24.1. [#144347][#144347] - Fixed a bug that could cause PL/pgSQL `FOR` loops to terminate early or show incorrect values for the counter variable. The bug had existed since v24.3, and occurred when two or more `FOR` loops were nested within one another. [#144347][#144347] +- Fixed a bug that prevented variable references using ordinal syntax (like `$1`) from reflecting updates to the variable. Referencing variables declared in PL/pgSQL blocks (instead of parameters) via ordinal syntax is now disallowed. The bug had existed since v24.1. [#144347][#144347] - Fixed a bug that could cause queries that perform work in parallel to ignore the requested quality-of-service level. Affected operations include lookup joins, DistSQL execution, and foreign-key checks. [#144427][#144427] - Fixed a bug in the **SQL Activity Statements** page where filtering by **Statement Type** returned no results. The filter now works as expected. [#144517][#144517] - Fixed a bug in the DB Console where tables with page size dropdowns failed to update when a new page size option was selected. Tables now update correctly. [#144556][#144556] @@ -867,483 +867,483 @@ The following cases are not supported: destination after failover from a PCR stream of a system virtual cluster. [#156812][#156812] +[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 [#143675]: https://github.com/cockroachdb/cockroach/pull/143675 -[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 -[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 -[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 -[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 -[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 -[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 -[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 -[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 -[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 -[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 -[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 -[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 -[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 -[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 -[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 -[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 -[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 +[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 +[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 +[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 +[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 [#142702]: https://github.com/cockroachdb/cockroach/pull/142702 -[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 -[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 -[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 +[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 [#148290]: https://github.com/cockroachdb/cockroach/pull/148290 -[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 -[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 -[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 -[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 -[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 -[#145236]: https://github.com/cockroachdb/cockroach/pull/145236 -[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 -[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 -[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 -[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 -[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 -[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 -[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 -[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 +[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 +[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 +[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 +[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 +[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 +[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 +[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 +[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 +[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 +[#153724]: https://github.com/cockroachdb/cockroach/pull/153724 [#142277]: https://github.com/cockroachdb/cockroach/pull/142277 -[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 -[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 -[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 -[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 -[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 -[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 -[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 -[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 +[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 +[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 [#146696]: https://github.com/cockroachdb/cockroach/pull/146696 -[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 -[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 -[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 -[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 -[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 -[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 -[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 -[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 -[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 -[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 -[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 -[#144536]: https://github.com/cockroachdb/cockroach/pull/144536 -[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 -[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 -[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 -[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 -[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 -[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 -[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 -[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 -[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 -[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 +[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 +[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 +[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 +[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 +[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 +[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 +[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 +[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 [#151821]: https://github.com/cockroachdb/cockroach/pull/151821 +[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 +[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 +[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 +[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 +[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 +[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 +[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 +[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 +[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 [#148849]: https://github.com/cockroachdb/cockroach/pull/148849 -[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 -[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 -[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 -[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 -[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 -[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 -[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 -[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 -[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 -[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 -[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 -[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 -[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 -[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 -[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 -[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 -[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 -[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 -[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 -[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 -[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 -[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 -[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 -[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 -[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 +[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 +[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 +[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 +[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 +[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 +[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 +[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 +[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 +[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 [#147341]: https://github.com/cockroachdb/cockroach/pull/147341 -[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 -[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 -[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 -[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 -[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 -[#153724]: https://github.com/cockroachdb/cockroach/pull/153724 -[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 -[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 -[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 -[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 -[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 -[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 -[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 -[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 -[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 -[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 -[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 +[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 +[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 +[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 +[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 +[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 [#144027]: https://github.com/cockroachdb/cockroach/pull/144027 -[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 -[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 -[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 -[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 -[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 -[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 -[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 -[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 -[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 -[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 -[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 +[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 +[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 [#143102]: https://github.com/cockroachdb/cockroach/pull/143102 -[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 -[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 -[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 -[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 -[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 +[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 +[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 +[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 +[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 +[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 +[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 +[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 +[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 +[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 +[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 +[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 +[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 +[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 [#147447]: https://github.com/cockroachdb/cockroach/pull/147447 -[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 -[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 -[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 -[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 -[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 -[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 -[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 -[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 -[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 -[#144658]: https://github.com/cockroachdb/cockroach/pull/144658 +[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 +[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 +[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 +[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 +[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 +[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 +[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 +[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 +[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 +[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 +[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 +[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 [#143421]: https://github.com/cockroachdb/cockroach/pull/143421 -[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 -[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 -[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 -[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 -[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 -[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 -[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 -[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 -[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 -[#145391]: https://github.com/cockroachdb/cockroach/pull/145391 -[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 -[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 -[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 -[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 -[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 +[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 [#144652]: https://github.com/cockroachdb/cockroach/pull/144652 -[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 -[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 -[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 -[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 -[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 -[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 -[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 -[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 -[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 -[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 -[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 -[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 -[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 -[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 -[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 -[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 -[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 -[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 +[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 [#151041]: https://github.com/cockroachdb/cockroach/pull/151041 -[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 -[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 +[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 +[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 +[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 [#146213]: https://github.com/cockroachdb/cockroach/pull/146213 -[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 -[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 -[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 -[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 -[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 -[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 -[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 -[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 -[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 -[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 -[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 -[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 -[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 -[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 -[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 -[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 -[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 -[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 -[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 -[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 -[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 -[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 -[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 +[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 +[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 [#149708]: https://github.com/cockroachdb/cockroach/pull/149708 -[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 -[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 -[#157037]: https://github.com/cockroachdb/cockroach/pull/157037 -[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 -[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 -[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 -[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 -[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 -[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 -[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 -[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 -[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 -[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 -[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 -[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 +[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 +[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 +[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 +[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 +[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 +[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 +[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 +[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 +[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 +[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 +[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 +[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 +[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 [#142692]: https://github.com/cockroachdb/cockroach/pull/142692 -[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 -[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 -[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 -[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 -[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 -[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 -[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 -[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 -[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 -[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 -[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 -[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 -[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 -[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 -[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 -[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 -[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 -[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 -[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 -[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 +[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 [#144347]: https://github.com/cockroachdb/cockroach/pull/144347 -[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 -[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 -[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 -[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 -[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 -[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 -[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 -[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 -[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 -[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 +[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 +[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 [#151849]: https://github.com/cockroachdb/cockroach/pull/151849 -[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 [#143097]: https://github.com/cockroachdb/cockroach/pull/143097 -[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 -[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 -[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 -[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 -[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 -[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 -[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 -[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 -[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 -[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 -[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 -[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 -[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 -[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 -[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 -[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 -[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 +[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 +[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 +[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 +[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 +[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 +[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 +[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 +[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 +[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 +[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 +[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 [#147978]: https://github.com/cockroachdb/cockroach/pull/147978 -[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 -[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 -[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 -[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 -[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 -[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 -[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 [#146744]: https://github.com/cockroachdb/cockroach/pull/146744 -[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 -[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 +[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 +[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 +[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 +[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 +[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 +[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 +[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 +[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 +[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 [#155927]: https://github.com/cockroachdb/cockroach/pull/155927 -[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 -[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 -[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 -[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 -[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 -[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 -[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 -[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 -[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 -[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 -[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 -[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 -[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 -[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 -[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 -[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 -[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 -[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 -[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 -[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 -[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 -[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 -[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 -[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 -[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 +[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 +[#145236]: https://github.com/cockroachdb/cockroach/pull/145236 [#152190]: https://github.com/cockroachdb/cockroach/pull/152190 -[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 -[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 -[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 -[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 -[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 -[#144643]: https://github.com/cockroachdb/cockroach/pull/144643 -[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 -[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 -[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 -[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 -[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 +[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 [#148863]: https://github.com/cockroachdb/cockroach/pull/148863 -[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 -[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 -[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 [#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#142927]: https://github.com/cockroachdb/cockroach/pull/142927 -[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 -[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 -[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 -[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 -[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 -[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 -[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 -[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 -[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 -[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 -[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 -[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 -[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 -[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 -[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 +[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 +[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 +[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 +[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 +[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 +[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 +[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 +[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 [#144716]: https://github.com/cockroachdb/cockroach/pull/144716 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 +[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 +[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 +[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 +[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 +[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 +[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 +[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 +[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 +[#145391]: https://github.com/cockroachdb/cockroach/pull/145391 +[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 [#152207]: https://github.com/cockroachdb/cockroach/pull/152207 -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 -[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 -[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 -[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 -[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 -[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 -[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 -[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 -[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 -[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 -[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 -[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 -[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 -[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 -[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 -[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 -[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 -[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 +[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 +[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 +[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 +[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 +[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 +[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 +[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 +[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 +[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 +[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 +[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 +[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 +[#142927]: https://github.com/cockroachdb/cockroach/pull/142927 +[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 +[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 +[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 +[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 +[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 +[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 +[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 +[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 +[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 +[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 +[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 +[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 +[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 +[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 +[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 +[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 +[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 +[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 +[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 +[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 [#153628]: https://github.com/cockroachdb/cockroach/pull/153628 +[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 +[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 +[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 +[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 +[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 +[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 +[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 +[#144536]: https://github.com/cockroachdb/cockroach/pull/144536 +[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 +[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 +[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 +[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 +[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 +[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 +[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 +[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 +[#144643]: https://github.com/cockroachdb/cockroach/pull/144643 [#153617]: https://github.com/cockroachdb/cockroach/pull/153617 -[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 +[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 [#156136]: https://github.com/cockroachdb/cockroach/pull/156136 -[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 -[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 -[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 -[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 -[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 -[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 -[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 -[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 -[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 -[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 -[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 -[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 -[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 -[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 -[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 -[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 -[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 -[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 -[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 -[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 -[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 -[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 -[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 -[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 -[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 -[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 +[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 +[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 +[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 +[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 +[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 +[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 [#150926]: https://github.com/cockroachdb/cockroach/pull/150926 -[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 -[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 +[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 +[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 +[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 +[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 +[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 +[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 +[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 +[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 +[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 +[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 +[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 +[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 +[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 [#142282]: https://github.com/cockroachdb/cockroach/pull/142282 -[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 -[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 -[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 -[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 -[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 -[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 -[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 +[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 +[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 +[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 +[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 +[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 +[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 +[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 +[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 +[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 +[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 +[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 +[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 +[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 +[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 +[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 +[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 +[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 +[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 +[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 +[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 +[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 +[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 +[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 +[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 +[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 +[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 +[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 +[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 +[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 +[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 +[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 +[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 +[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 +[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 +[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 +[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 +[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 +[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 +[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 +[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 +[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 +[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 +[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 +[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 +[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 +[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 +[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 +[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 +[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 +[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 +[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 +[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 +[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 +[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 +[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 +[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 [#151058]: https://github.com/cockroachdb/cockroach/pull/151058 -[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 -[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 -[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 +[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 +[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 +[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 +[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 +[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 +[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 +[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 +[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 +[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 +[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 +[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 +[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 +[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 +[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 +[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 +[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 +[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 +[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 +[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 +[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 +[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 +[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 +[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 +[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 +[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 +[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 +[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 +[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 +[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 +[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 +[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 +[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 +[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 +[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 [#150836]: https://github.com/cockroachdb/cockroach/pull/150836 -[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 -[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 -[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 -[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 -[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 -[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 -[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 -[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 -[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 +[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 +[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 +[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 [#142768]: https://github.com/cockroachdb/cockroach/pull/142768 -[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 -[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 -[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 +[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 +[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 +[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 +[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 +[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 +[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 +[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 +[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 +[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 +[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 +[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 +[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 +[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 +[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 +[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 [#145471]: https://github.com/cockroachdb/cockroach/pull/145471 -[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 -[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 +[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 +[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 +[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 +[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 +[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 +[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 +[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 +[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 +[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 +[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 +[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 +[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 +[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 +[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 +[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 +[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 +[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 +[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 [#146494]: https://github.com/cockroachdb/cockroach/pull/146494 -[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 -[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 -[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 -[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 -[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 -[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 -[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 -[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 -[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 -[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 -[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 -[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 -[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 -[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 -[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 -[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 -[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 +[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 +[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 +[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 +[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 +[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 [#155561]: https://github.com/cockroachdb/cockroach/pull/155561 -[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 -[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 -[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 +[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 +[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 +[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 +[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 +[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 +[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 +[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 +[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 +[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 +[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 +[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 +[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 +[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 +[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 +[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 +[#144658]: https://github.com/cockroachdb/cockroach/pull/144658 +[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 +[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 +[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 +[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 +[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 +[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 +[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 +[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 +[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 +[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 +[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 +[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 +[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 +[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 +[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 +[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 +[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 +[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 +[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 +[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 +[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 +[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 +[#157037]: https://github.com/cockroachdb/cockroach/pull/157037 +[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 +[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 +[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 +[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 +[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 +[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 +[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 +[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 +[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 +[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 +[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 +[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 +[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 +[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 +[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 +[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 +[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 +[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 +[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 +[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 From badd8aff566b17c7ee1491e1ae8e9fcc242347fc Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 14:51:03 +0000 Subject: [PATCH 07/37] Update release notes for v25.4-v25.4.1 From a72018b6a3c9a5dc4092d6638fd8bce9b4791a8b Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 14:51:04 +0000 Subject: [PATCH 08/37] Update release notes for v25.4-v25.4.1 From 9db233ee11350683fdfc94cd87edd7af7201c046 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 14:51:05 +0000 Subject: [PATCH 09/37] Update release notes for v25.4-v25.4.1 --- .../_includes/releases/v25.4/v25.4.1.md | 918 +++++++++--------- 1 file changed, 459 insertions(+), 459 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.1.md b/src/current/_includes/releases/v25.4/v25.4.1.md index e8772d1a2be..a1040a6b61a 100644 --- a/src/current/_includes/releases/v25.4/v25.4.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.1.md @@ -166,27 +166,27 @@ Release Date: November 28, 2025 - The owner of a database can now set default session variables per database using the `ALTER ROLE ALL IN DATABASE ... SET` or `ALTER DATABASE ... SET` commands. [#130547][#130547] - Added the `ST_3DLength` function, which returns the 3D or 2D length of `LINESTRING` and `MULTILINESTRING` spatial types. [#139450][#139450] - `format()` no longer requires all post-format string arguments to have the same type. [#141193][#141193] -- `concat()` no longer requires all arguments have the same type. [#141193][#141193] - `concat_ws()` now accepts arguments of any type in the second and later positions (the separator must still be a string). [#141193][#141193] -- `pg_column_size()` no longer requires that all arguments have the same type. [#141193][#141193] - `num_nulls()` and `num_nonnulls()` no longer require all arguments to have the same type. [#141193][#141193] - `json_build_object()`, `jsonb_build_object()`, `json_build_array()`, and `jsonb_build_array()` no longer require that all arguments have the same type. [#141193][#141193] -- Double-quoted key accessors are now supported in JSONPath queries. For example, `SELECT '$."1key"."key2"'::JSONPATH;`. [#142241][#142241] +- `pg_column_size()` no longer requires that all arguments have the same type. [#141193][#141193] +- `concat()` no longer requires all arguments have the same type. [#141193][#141193] +- Array unions are now supported in JSONPath queries. For example, `$.a[1, 2 to 4, 7, 8]`. [#142241][#142241] - Array integer indexing is now supported in JSONPath queries. For example, `$.a[1]`. [#142241][#142241] - Array ranges are now supported in JSONPath queries. For example, `$.a[1 to 3]`). [#142241][#142241] -- Array unions are now supported in JSONPath queries. For example, `$.a[1, 2 to 4, 7, 8]`. [#142241][#142241] +- Double-quoted key accessors are now supported in JSONPath queries. For example, `SELECT '$."1key"."key2"'::JSONPATH;`. [#142241][#142241] - Fixed a regression due to join-elimination rules that prevented other optimization rules from applying. [#142252][#142252] - Statements such as `REFRESH MATERIALIZED VIEW` and `CREATE MATERIALIZED VIEW` can now be executed with an `AS OF SYSTEM TIME` clause. These statements can still not be used in an explicit transaction. [#142259][#142259] - Add the `jsonb_path_query` function, which takes in a JSON object and a JSONPath query and returns the resulting JSON object. [#142336][#142336] - Added the `ALTER VIRTUAL CLUSTER .. SET REPLICATION SOURCE` command so users can configure producer jobs on the source cluster. Currently, users can only configure the `EXPIRATION WINDOW`. Also, removed the `EXPIRATION WINDOW` option from the consumer side command of `ALTER VIRTUAL CLUSTER SET REPLICATION`. [#142501][#142501] - `EXPLAIN ANALYZE` statements now display the number of transaction retries and time spent retrying, if non-zero, in the plan output. [#142692][#142692] - Users can now begin logical data replication (LDR) on an existing table if the user has a table-level `REPLICATIONDEST` privilege. Furthermore, users can now begin LDR onto an automatically created table if the user has the parent database level `CREATE` privilege. Finally, during bidirectional LDR, the user in the original source URI, who will begin the reverse LDR stream, to authorize via this table-level `REPLICATIONDEST` privilege. [#142840][#142840] -- Logical operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '1 < 2 && 3 >= 2')`. [#142899][#142899] - Comparison operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', 1 < 2)`. [#142899][#142899] +- Logical operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '1 < 2 && 3 >= 2')`. [#142899][#142899] - It is now possible to automatically collect partial table statistics, but disable automatic collection of full table statistics. The new cluster and table settings to enable/disable automatic collection of full table statistics (without affecting the settings for partial stats) are `sql.stats.automatic_full_collection.enabled` and `sql_stats_automatic_full_collection_enabled`, respectively. The settings default to `true`. [#142924][#142924] - The return type of the `workload_index_recs` built-in function now includes two columns. The first column, `index_rec`, remains a `STRING` type and contains the index recommendation. The second column, `fingerprint_ids`, is new and has the `BYTES[]` type. [#142927][#142927] -- Update edge cases in the `width_bucket()` function to return `count + 1` for a positive infinity operand, and `0` for a negative infinity operand, instead of an error. [#142932][#142932] - Implemented various `power()` and `^` edge cases to match PostgreSQL behaviour. Some expressions that previously returned `NaN` now return specific numbers; some expressions that previously returned `Infinity` or `NaN` now return errors; and some expressions with infinite exponents now return different results. [#142932][#142932] +- Update edge cases in the `width_bucket()` function to return `count + 1` for a positive infinity operand, and `0` for a negative infinity operand, instead of an error. [#142932][#142932] - Added the `jsonb_path_exists` function, which accepts a JSON object and JSONPath query and returns whether the query returned any items. [#143028][#143028] - Filters are now supported in JSONPath queries, using the format `$ ? (predicate)`. This allows results to be filtered. For example, `SELECT jsonb_path_query('{"a": [1,2,3]}', '$.a ? (1 == 1)');`. [#143097][#143097] - Addition, subtraction, multiplication, division, and modulo operators are now supported in JSONPath queries. [#143210][#143210] @@ -207,9 +207,9 @@ Release Date: November 28, 2025 - Usage of `TG_ARGV` in trigger functions is now disallowed by default. The session setting `allow_create_trigger_function_with_argv_references` can be set to `true` to allow usage (with 1-based indexing). [#143827][#143827] - A new `execution time` statistic is now reported on `EXPLAIN ANALYZE` output for most operators. Previously, this statistic was only available on the DistSQL diagrams in `EXPLAIN ANALYZE (DISTSQL)` output. [#143857][#143857] - Added a new session variable `create_table_with_schema_locked`, which can be used to ensure all tables created by a session have the storage parameter `schema_locked` set. [#143892][#143892] +- Added the `jsonb_path_match` function, which returns the result of a predicate query. [#144006][#144006] - Added the `jsonb_path_query_first` function, which returns the first result from `jsonb_path_query`. [#144006][#144006] - Added the `jsonb_path_query_array` function, which returns the result of `jsonb_path_query` wrapped in a JSON array. [#144006][#144006] -- Added the `jsonb_path_match` function, which returns the result of a predicate query. [#144006][#144006] - The following syntax is now supported: `GRANT ... ON ALL ROUTINES IN SCHEMA ...`; `REVOKE ... ON ALL ROUTINES IN SCHEMA ...`; `ALTER DEFAULT PRIVILEGES GRANT ... ON ROUTINES ...`; `ALTER DEFAULT PRIVIELGES REVOKE ... ON ROUTINES ...`. The `ROUTINES` keyword makes the command apply to both functions and stored procedures. Note that `ALTER DEFAULT PRIVILEGES ... ON FUNCTIONS` already applied to stored procedures (which aligns with the PostgreSQL behavior), and that is not changing. [#144189][#144189] - Parenthesized expressions are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{"a": {"b": true}}', '($.a).b');` [#144245][#144245] - The `.size()` method is now supported in JSONPath expressions. For example, `SELECT jsonb_path_query('[1, 2, 3]', '$.size()');`. [#144266][#144266] @@ -233,8 +233,8 @@ Release Date: November 28, 2025 - In the `crdb_internal.cluster_execution_insights` and `crdb_internal.node_execution_insights` virtual tables in a new `query_tags` JSONB column. This feature is disabled by default and can be enabled using the `sql.sqlcommenter.enabled` cluster setting. Comments must follow the [SQLCommenter specification](https://google.github.io/sqlcommenter/spec/). [#145435][#145435] - Fixed a bug that caused a routine with an `INSERT` statement to unnecessarily block dropping a hash-sharded index or computed column on the target table. This fix applies only to newly created routines. In releases prior to v25.3, the fix must be enabled by setting the session variable `use_improved_routine_dependency_tracking` to `on`. [#146250][#146250] -- `~~` and `!~~` are now supported aliases for `LIKE` and `NOT LIKE`. [#146764][#146764] - `~~*` and `!~~*` are now supported aliases for `ILIKE` and `NOT ILIKE`. [#146764][#146764] +- `~~` and `!~~` are now supported aliases for `LIKE` and `NOT LIKE`. [#146764][#146764] - Added a session variable `initial_retry_backoff_for_read_committed` that controls the initial backoff duration when retrying an individual statement in an explicit `READ COMMITTED` transaction. A duration of `0` disables exponential backoff. If a statement in an explicit `READ COMMITTED` transaction is failing with the `40001` error `ERROR: restart transaction: read committed retry limit exceeded; set by max_retries_for_read_committed=...`, then you should set `initial_retry_backoff_for_read_committed` to a duration proportional to the typical execution time of the statement (in addition to also increasing `max_retries_for_read_committed`). [#146860][#146860] - Deterministic collations are now supported with `LIKE`. A deterministic collation considers strings to be equal only if they consist of the same byte sequence. [#147045][#147045] - The `information_schema.triggers` table is now populated with trigger metadata. Users can query this table to see all triggers defined in their database, including the trigger name, timing (`BEFORE`/`AFTER`), event type (`INSERT`/`UPDATE`/`DELETE`), and associated function. Each trigger event appears as a separate row in the table. [#147237][#147237] @@ -242,8 +242,8 @@ This feature is disabled by default and can be enabled using the `sql.sqlcomment - Directionality may no longer be assigned to any vector index column. Prefix columns are not scannable in a vector index, so directionality is not relevant to them. [#147307][#147307] - Added the `SHOW CREATE ALL ROUTINES` statement, which can be used to show `CREATE` statements for all user-defined functions (UDFs) and procedures in the current database. [#147452][#147452] - Added the metrics `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count`, which count the number of automatic retries of SQL transactions and statements, respectively, within the database. These metrics differ from the related `txn.restarts.*` metrics, which count retryable errors emitted by the KV layer that must be retried. The new `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count` metrics count auto-retry actions taken by the SQL layer in response to some of those retryable errors. [#147682][#147682] -- Computed column expressions and `ON UPDATE` expressions can now reference user-defined functions. [#147817][#147817] - Partial indexes can now reference user-defined functions. [#147817][#147817] +- Computed column expressions and `ON UPDATE` expressions can now reference user-defined functions. [#147817][#147817] - Added the `SHOW CREATE ALL TRIGGERS` statement. [#147836][#147836] - The `CITEXT` data type is now supported, enabling case-insensitive comparisons for `CITEXT` columns. Internally, `CITEXT` is equivalent to using the undetermined level 2 collation `und-u-ks-level2`. For example, under `CITEXT`, the expression `'test' = 'TEST'` returns `TRUE`. [#147864][#147864] - Increased the default value for the `max_retries_for_read_committed` session variable from `10` to `100`. Testing has shown that some high-contention workloads running under `READ COMMITTED` isolation benefit from more statement retries. [#147869][#147869] @@ -357,21 +357,21 @@ 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) [#154631][#154631] - The optimizer can now use table statistics that merge the latest full statistic with all newer partial statistics, including those over arbitrary constraints over a single span. [#154755][#154755] -- 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. [#155123][#155123] - 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. [#155123][#155123] +- 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. [#155123][#155123] - Added the `INSPECT` command, which runs consistency validation check jobs against tables or databases and specified indexes. [#155441][#155441] - 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`. [#155509][#155509] - Vector indexing is now enabled by default. `feature.vector_index.enabled` defaults to `true`. [#155561][#155561] +- Added sql.statements.bytes_read.count metric that + counts the number of bytes scanned by SQL statements. [#156459][#156459] - Added sql.statements.index_bytes_written.count metric that counts the number of primary and secondary index bytes modified by SQL statements. [#156459][#156459] -- Added sql.statements.bytes_read.count metric that - counts the number of bytes scanned by SQL statements. [#156459][#156459] +- Added sql.statements.rows_read.count metric + that counts the number of index rows read by SQL statements. [#156459][#156459] - Added sql.statements.index_rows_written.count metric that counts the number of primary and secondary index rows modified by SQL statements. [#156459][#156459] -- Added sql.statements.rows_read.count metric - that counts the number of index rows read by SQL statements. [#156459][#156459] - CockroachDB now supports index accelerating `jsonb_path_exists` filters with JSONpath expressions that end with an AnyKey (`*`). [#156508][#156508]

Operational changes

@@ -566,8 +566,8 @@ The following cases are not supported: Jitter will now be disabled in this case. Fixes: #143436 [#144304][#144304] -- Fixed a bug that could cause PL/pgSQL `FOR` loops to terminate early or show incorrect values for the counter variable. The bug had existed since v24.3, and occurred when two or more `FOR` loops were nested within one another. [#144347][#144347] - Fixed a bug that prevented variable references using ordinal syntax (like `$1`) from reflecting updates to the variable. Referencing variables declared in PL/pgSQL blocks (instead of parameters) via ordinal syntax is now disallowed. The bug had existed since v24.1. [#144347][#144347] +- Fixed a bug that could cause PL/pgSQL `FOR` loops to terminate early or show incorrect values for the counter variable. The bug had existed since v24.3, and occurred when two or more `FOR` loops were nested within one another. [#144347][#144347] - Fixed a bug that could cause queries that perform work in parallel to ignore the requested quality-of-service level. Affected operations include lookup joins, DistSQL execution, and foreign-key checks. [#144427][#144427] - Fixed a bug in the **SQL Activity Statements** page where filtering by **Statement Type** returned no results. The filter now works as expected. [#144517][#144517] - Fixed a bug in the DB Console where tables with page size dropdowns failed to update when a new page size option was selected. Tables now update correctly. [#144556][#144556] @@ -867,483 +867,483 @@ The following cases are not supported: destination after failover from a PCR stream of a system virtual cluster. [#156812][#156812] -[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 -[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 -[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 -[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 -[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 -[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 -[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 -[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 -[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 -[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 -[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 -[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 -[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 -[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 -[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 -[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 -[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 -[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 -[#153724]: https://github.com/cockroachdb/cockroach/pull/153724 -[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 -[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 -[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 -[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 -[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 -[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 -[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 -[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 -[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 -[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 -[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 -[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 -[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 -[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 -[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 -[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 -[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 -[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 -[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 -[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 -[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 -[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 +[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 +[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 +[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 +[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 +[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 [#146522]: https://github.com/cockroachdb/cockroach/pull/146522 -[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 -[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 -[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 -[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 -[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 -[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 -[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 -[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 +[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 +[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 +[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 [#153739]: https://github.com/cockroachdb/cockroach/pull/153739 -[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 -[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 -[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 -[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 -[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 -[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 -[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 -[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 -[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 -[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 -[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 -[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 -[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 -[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 +[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 +[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 +[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 +[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 +[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 +[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 +[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 +[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 +[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 +[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 +[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 +[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 +[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 +[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 +[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 [#148782]: https://github.com/cockroachdb/cockroach/pull/148782 -[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 -[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 -[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 -[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 +[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 +[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 [#153491]: https://github.com/cockroachdb/cockroach/pull/153491 -[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 -[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 -[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 -[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 -[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 -[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 -[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 -[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 -[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 -[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 -[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 +[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 [#146127]: https://github.com/cockroachdb/cockroach/pull/146127 [#154388]: https://github.com/cockroachdb/cockroach/pull/154388 -[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 -[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 -[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 -[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 -[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 -[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 +[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 +[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 +[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 +[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 [#144266]: https://github.com/cockroachdb/cockroach/pull/144266 -[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 -[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 -[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 -[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 -[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 -[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 -[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 -[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 -[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 -[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 -[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 -[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 -[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 -[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 -[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 -[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 +[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 +[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 +[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 +[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 +[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 +[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 +[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 +[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 +[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 [#149153]: https://github.com/cockroachdb/cockroach/pull/149153 -[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 -[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 -[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 -[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 -[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 -[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 -[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 +[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 +[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 +[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 [#146813]: https://github.com/cockroachdb/cockroach/pull/146813 -[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 -[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 -[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 -[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 -[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 -[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 -[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 -[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 -[#143097]: https://github.com/cockroachdb/cockroach/pull/143097 -[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 -[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 -[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 -[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 -[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 -[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 -[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 -[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 -[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 -[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 -[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 -[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 -[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 +[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 +[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 +[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 +[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 +[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 +[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 +[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 +[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 [#149093]: https://github.com/cockroachdb/cockroach/pull/149093 -[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 -[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 -[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 -[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 -[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 -[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 -[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 -[#155927]: https://github.com/cockroachdb/cockroach/pull/155927 -[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 +[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 +[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 +[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 +[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 +[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 +[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 +[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 +[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 +[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 [#145236]: https://github.com/cockroachdb/cockroach/pull/145236 -[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 -[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 -[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 -[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 -[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 -[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 -[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 -[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 -[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 -[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 -[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 -[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 -[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 -[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 -[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 -[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 -[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 -[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 -[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 -[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 -[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 -[#145391]: https://github.com/cockroachdb/cockroach/pull/145391 -[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 +[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 [#152207]: https://github.com/cockroachdb/cockroach/pull/152207 -[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 -[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 -[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 -[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 -[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 -[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 -[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 +[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 +[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 +[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 +[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 +[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 [#149713]: https://github.com/cockroachdb/cockroach/pull/149713 -[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 -[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 -[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 -[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 -[#142927]: https://github.com/cockroachdb/cockroach/pull/142927 -[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 -[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 -[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 -[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 -[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 -[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 -[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 -[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 -[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 +[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 +[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 +[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 +[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 +[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 +[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 +[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 +[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 +[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 +[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 +[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 +[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 +[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 +[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 +[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 +[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 [#156667]: https://github.com/cockroachdb/cockroach/pull/156667 +[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 +[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 +[#144658]: https://github.com/cockroachdb/cockroach/pull/144658 +[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 +[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 +[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 +[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 +[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 +[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 +[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 [#149614]: https://github.com/cockroachdb/cockroach/pull/149614 -[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 -[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 -[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 -[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 -[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 -[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 -[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 -[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 -[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 -[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 -[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 -[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 +[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 [#130547]: https://github.com/cockroachdb/cockroach/pull/130547 -[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 -[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 -[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 -[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 -[#144536]: https://github.com/cockroachdb/cockroach/pull/144536 -[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 -[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 -[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 -[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 -[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 -[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 -[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 -[#144643]: https://github.com/cockroachdb/cockroach/pull/144643 -[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 -[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 -[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 -[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 +[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 +[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 +[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 +[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 +[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 +[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 +[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 +[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 +[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 +[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 +[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 +[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 +[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 +[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 [#143028]: https://github.com/cockroachdb/cockroach/pull/143028 -[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 -[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 -[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 +[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 +[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 +[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 +[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 +[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 +[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 [#154576]: https://github.com/cockroachdb/cockroach/pull/154576 -[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 -[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 -[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 -[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 -[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 -[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 -[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 -[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 -[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 -[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 -[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 -[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 +[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 +[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 +[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 +[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 +[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 +[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 +[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 +[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 +[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 +[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 +[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 +[#157037]: https://github.com/cockroachdb/cockroach/pull/157037 +[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 +[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 +[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 [#149486]: https://github.com/cockroachdb/cockroach/pull/149486 -[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 -[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 +[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 +[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 +[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 [#142697]: https://github.com/cockroachdb/cockroach/pull/142697 -[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 -[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 -[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 -[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 -[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 -[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 -[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 -[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 [#148753]: https://github.com/cockroachdb/cockroach/pull/148753 -[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 -[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 -[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 -[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 -[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 -[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 -[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 -[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 -[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 -[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 -[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 -[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 -[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 -[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 -[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 -[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 -[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 -[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 -[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 -[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 -[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 -[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 -[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 -[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 -[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 -[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 -[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 -[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 -[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 -[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 -[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 +[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 +[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 +[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 +[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 +[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 +[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 +[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 +[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 +[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 +[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 +[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 +[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 +[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 +[#142927]: https://github.com/cockroachdb/cockroach/pull/142927 +[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 +[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 [#146586]: https://github.com/cockroachdb/cockroach/pull/146586 -[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 -[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 -[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 -[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 -[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 -[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 -[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 -[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 -[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 -[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 -[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 -[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 -[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 -[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 -[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 -[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 -[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 -[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 -[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 -[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 -[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 -[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 -[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 -[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 -[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 -[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 -[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 -[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 -[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 -[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 -[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 -[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 -[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 -[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 -[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 -[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 -[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 -[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 -[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 -[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 +[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 +[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 +[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 +[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 +[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 +[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 +[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 +[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 +[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 +[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 +[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 +[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 +[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 +[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 +[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 +[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 +[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 +[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 +[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 +[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 +[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 +[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 +[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 +[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 +[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 +[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 +[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 +[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 +[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 +[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 +[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 [#146476]: https://github.com/cockroachdb/cockroach/pull/146476 -[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 -[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 -[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 -[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 -[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 -[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 +[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 +[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 +[#144643]: https://github.com/cockroachdb/cockroach/pull/144643 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 +[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 +[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 +[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 +[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 +[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 +[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 +[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 +[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 +[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 +[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 +[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 +[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 +[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 +[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 +[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 +[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 +[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 +[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 +[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 +[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 +[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 +[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 +[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 +[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 +[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 +[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 +[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 [#143124]: https://github.com/cockroachdb/cockroach/pull/143124 -[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 -[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 -[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 -[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 -[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 -[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 +[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 +[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 +[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 +[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 +[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 +[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 +[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 +[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 +[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 +[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 +[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 [#142768]: https://github.com/cockroachdb/cockroach/pull/142768 -[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 -[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 -[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 -[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 -[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 -[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 -[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 -[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 +[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 +[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 +[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 [#147658]: https://github.com/cockroachdb/cockroach/pull/147658 -[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 -[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 -[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 -[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 -[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 -[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 -[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 -[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 -[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 -[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 -[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 -[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 +[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 +[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 +[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 +[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 +[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 +[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 [#144610]: https://github.com/cockroachdb/cockroach/pull/144610 -[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 +[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 +[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 +[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 [#151949]: https://github.com/cockroachdb/cockroach/pull/151949 -[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 -[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 -[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 -[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 -[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 -[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 -[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 -[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 -[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 -[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 +[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 +[#143097]: https://github.com/cockroachdb/cockroach/pull/143097 +[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 +[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 +[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 +[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 +[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 +[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 +[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 +[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 +[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 +[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 +[#155927]: https://github.com/cockroachdb/cockroach/pull/155927 [#143775]: https://github.com/cockroachdb/cockroach/pull/143775 -[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 +[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 +[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 +[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 +[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 +[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 +[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 +[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 +[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 +[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 +[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 +[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 +[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 +[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 +[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 +[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 +[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 +[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 +[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 +[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 +[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 +[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 +[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 +[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 +[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 +[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 +[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 +[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 +[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 +[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 [#149261]: https://github.com/cockroachdb/cockroach/pull/149261 -[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 -[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 -[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 -[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 -[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 -[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 -[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 -[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 -[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 -[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 -[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 -[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 -[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 -[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 -[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 -[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 -[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 -[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 -[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 +[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 +[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 +[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 +[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 +[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 +[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 +[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 +[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 +[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 +[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 +[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 [#147923]: https://github.com/cockroachdb/cockroach/pull/147923 -[#144658]: https://github.com/cockroachdb/cockroach/pull/144658 -[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 -[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 +[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 +[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 +[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 +[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 +[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 +[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 +[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 +[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 +[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 +[#145391]: https://github.com/cockroachdb/cockroach/pull/145391 +[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 +[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 +[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 +[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 +[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 +[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 +[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 +[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 +[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 +[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 +[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 +[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 +[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 +[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 +[#144536]: https://github.com/cockroachdb/cockroach/pull/144536 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 +[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 +[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 +[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 +[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 +[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 [#142336]: https://github.com/cockroachdb/cockroach/pull/142336 -[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 -[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 +[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 +[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 +[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 +[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 +[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 +[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 +[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 +[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 +[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 [#120079]: https://github.com/cockroachdb/cockroach/pull/120079 -[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 -[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 -[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 -[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 -[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 -[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 -[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 -[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 -[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 -[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 +[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 +[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 +[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 +[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 +[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 +[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 +[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 +[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 +[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 +[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 +[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 +[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 +[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 +[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 +[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 +[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 +[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 +[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 +[#153724]: https://github.com/cockroachdb/cockroach/pull/153724 +[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 +[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 +[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 +[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 +[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 +[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 +[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 +[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 +[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 +[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 [#151692]: https://github.com/cockroachdb/cockroach/pull/151692 -[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 -[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 -[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 -[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 -[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 -[#157037]: https://github.com/cockroachdb/cockroach/pull/157037 -[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 -[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 -[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 -[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 -[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 -[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 -[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 -[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 -[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 -[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 -[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 +[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 +[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 +[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 [#151067]: https://github.com/cockroachdb/cockroach/pull/151067 -[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 -[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 -[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 -[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 -[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 -[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 -[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 +[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 +[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 +[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 +[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 +[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 +[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 +[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 +[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 +[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 [#145492]: https://github.com/cockroachdb/cockroach/pull/145492 -[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 +[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 +[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 +[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 +[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 +[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 +[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 +[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 +[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 +[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 +[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 +[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 +[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 +[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 +[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 +[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 +[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 +[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 +[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 +[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 +[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 +[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 +[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 +[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 +[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 +[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 +[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 +[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 +[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 +[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 +[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 +[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 +[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 +[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 +[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 +[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 +[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 +[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 +[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 From 08b9c0e71005785188c5c5a23a754747f0be9c13 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 15:04:38 +0000 Subject: [PATCH 10/37] Update release notes for v25.4-v25.4.1 From 39b5fbc1039a1fadd5ef8867c7bdc16b2c13882c Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 15:04:39 +0000 Subject: [PATCH 11/37] Update release notes for v25.4-v25.4.1 From b1609d2114365390bf4f24163e77be0bb54a90a9 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 15:04:39 +0000 Subject: [PATCH 12/37] Update release notes for v25.4-v25.4.1 --- .../_includes/releases/v25.4/v25.4.1.md | 918 +++++++++--------- 1 file changed, 459 insertions(+), 459 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.1.md b/src/current/_includes/releases/v25.4/v25.4.1.md index a1040a6b61a..64f4c963d89 100644 --- a/src/current/_includes/releases/v25.4/v25.4.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.1.md @@ -166,27 +166,27 @@ Release Date: November 28, 2025 - The owner of a database can now set default session variables per database using the `ALTER ROLE ALL IN DATABASE ... SET` or `ALTER DATABASE ... SET` commands. [#130547][#130547] - Added the `ST_3DLength` function, which returns the 3D or 2D length of `LINESTRING` and `MULTILINESTRING` spatial types. [#139450][#139450] - `format()` no longer requires all post-format string arguments to have the same type. [#141193][#141193] +- `concat()` no longer requires all arguments have the same type. [#141193][#141193] - `concat_ws()` now accepts arguments of any type in the second and later positions (the separator must still be a string). [#141193][#141193] +- `pg_column_size()` no longer requires that all arguments have the same type. [#141193][#141193] - `num_nulls()` and `num_nonnulls()` no longer require all arguments to have the same type. [#141193][#141193] - `json_build_object()`, `jsonb_build_object()`, `json_build_array()`, and `jsonb_build_array()` no longer require that all arguments have the same type. [#141193][#141193] -- `pg_column_size()` no longer requires that all arguments have the same type. [#141193][#141193] -- `concat()` no longer requires all arguments have the same type. [#141193][#141193] -- Array unions are now supported in JSONPath queries. For example, `$.a[1, 2 to 4, 7, 8]`. [#142241][#142241] +- Double-quoted key accessors are now supported in JSONPath queries. For example, `SELECT '$."1key"."key2"'::JSONPATH;`. [#142241][#142241] - Array integer indexing is now supported in JSONPath queries. For example, `$.a[1]`. [#142241][#142241] - Array ranges are now supported in JSONPath queries. For example, `$.a[1 to 3]`). [#142241][#142241] -- Double-quoted key accessors are now supported in JSONPath queries. For example, `SELECT '$."1key"."key2"'::JSONPATH;`. [#142241][#142241] +- Array unions are now supported in JSONPath queries. For example, `$.a[1, 2 to 4, 7, 8]`. [#142241][#142241] - Fixed a regression due to join-elimination rules that prevented other optimization rules from applying. [#142252][#142252] - Statements such as `REFRESH MATERIALIZED VIEW` and `CREATE MATERIALIZED VIEW` can now be executed with an `AS OF SYSTEM TIME` clause. These statements can still not be used in an explicit transaction. [#142259][#142259] - Add the `jsonb_path_query` function, which takes in a JSON object and a JSONPath query and returns the resulting JSON object. [#142336][#142336] - Added the `ALTER VIRTUAL CLUSTER .. SET REPLICATION SOURCE` command so users can configure producer jobs on the source cluster. Currently, users can only configure the `EXPIRATION WINDOW`. Also, removed the `EXPIRATION WINDOW` option from the consumer side command of `ALTER VIRTUAL CLUSTER SET REPLICATION`. [#142501][#142501] - `EXPLAIN ANALYZE` statements now display the number of transaction retries and time spent retrying, if non-zero, in the plan output. [#142692][#142692] - Users can now begin logical data replication (LDR) on an existing table if the user has a table-level `REPLICATIONDEST` privilege. Furthermore, users can now begin LDR onto an automatically created table if the user has the parent database level `CREATE` privilege. Finally, during bidirectional LDR, the user in the original source URI, who will begin the reverse LDR stream, to authorize via this table-level `REPLICATIONDEST` privilege. [#142840][#142840] -- Comparison operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', 1 < 2)`. [#142899][#142899] - Logical operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '1 < 2 && 3 >= 2')`. [#142899][#142899] +- Comparison operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', 1 < 2)`. [#142899][#142899] - It is now possible to automatically collect partial table statistics, but disable automatic collection of full table statistics. The new cluster and table settings to enable/disable automatic collection of full table statistics (without affecting the settings for partial stats) are `sql.stats.automatic_full_collection.enabled` and `sql_stats_automatic_full_collection_enabled`, respectively. The settings default to `true`. [#142924][#142924] - The return type of the `workload_index_recs` built-in function now includes two columns. The first column, `index_rec`, remains a `STRING` type and contains the index recommendation. The second column, `fingerprint_ids`, is new and has the `BYTES[]` type. [#142927][#142927] -- Implemented various `power()` and `^` edge cases to match PostgreSQL behaviour. Some expressions that previously returned `NaN` now return specific numbers; some expressions that previously returned `Infinity` or `NaN` now return errors; and some expressions with infinite exponents now return different results. [#142932][#142932] - Update edge cases in the `width_bucket()` function to return `count + 1` for a positive infinity operand, and `0` for a negative infinity operand, instead of an error. [#142932][#142932] +- Implemented various `power()` and `^` edge cases to match PostgreSQL behaviour. Some expressions that previously returned `NaN` now return specific numbers; some expressions that previously returned `Infinity` or `NaN` now return errors; and some expressions with infinite exponents now return different results. [#142932][#142932] - Added the `jsonb_path_exists` function, which accepts a JSON object and JSONPath query and returns whether the query returned any items. [#143028][#143028] - Filters are now supported in JSONPath queries, using the format `$ ? (predicate)`. This allows results to be filtered. For example, `SELECT jsonb_path_query('{"a": [1,2,3]}', '$.a ? (1 == 1)');`. [#143097][#143097] - Addition, subtraction, multiplication, division, and modulo operators are now supported in JSONPath queries. [#143210][#143210] @@ -207,9 +207,9 @@ Release Date: November 28, 2025 - Usage of `TG_ARGV` in trigger functions is now disallowed by default. The session setting `allow_create_trigger_function_with_argv_references` can be set to `true` to allow usage (with 1-based indexing). [#143827][#143827] - A new `execution time` statistic is now reported on `EXPLAIN ANALYZE` output for most operators. Previously, this statistic was only available on the DistSQL diagrams in `EXPLAIN ANALYZE (DISTSQL)` output. [#143857][#143857] - Added a new session variable `create_table_with_schema_locked`, which can be used to ensure all tables created by a session have the storage parameter `schema_locked` set. [#143892][#143892] -- Added the `jsonb_path_match` function, which returns the result of a predicate query. [#144006][#144006] - Added the `jsonb_path_query_first` function, which returns the first result from `jsonb_path_query`. [#144006][#144006] - Added the `jsonb_path_query_array` function, which returns the result of `jsonb_path_query` wrapped in a JSON array. [#144006][#144006] +- Added the `jsonb_path_match` function, which returns the result of a predicate query. [#144006][#144006] - The following syntax is now supported: `GRANT ... ON ALL ROUTINES IN SCHEMA ...`; `REVOKE ... ON ALL ROUTINES IN SCHEMA ...`; `ALTER DEFAULT PRIVILEGES GRANT ... ON ROUTINES ...`; `ALTER DEFAULT PRIVIELGES REVOKE ... ON ROUTINES ...`. The `ROUTINES` keyword makes the command apply to both functions and stored procedures. Note that `ALTER DEFAULT PRIVILEGES ... ON FUNCTIONS` already applied to stored procedures (which aligns with the PostgreSQL behavior), and that is not changing. [#144189][#144189] - Parenthesized expressions are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{"a": {"b": true}}', '($.a).b');` [#144245][#144245] - The `.size()` method is now supported in JSONPath expressions. For example, `SELECT jsonb_path_query('[1, 2, 3]', '$.size()');`. [#144266][#144266] @@ -233,8 +233,8 @@ Release Date: November 28, 2025 - In the `crdb_internal.cluster_execution_insights` and `crdb_internal.node_execution_insights` virtual tables in a new `query_tags` JSONB column. This feature is disabled by default and can be enabled using the `sql.sqlcommenter.enabled` cluster setting. Comments must follow the [SQLCommenter specification](https://google.github.io/sqlcommenter/spec/). [#145435][#145435] - Fixed a bug that caused a routine with an `INSERT` statement to unnecessarily block dropping a hash-sharded index or computed column on the target table. This fix applies only to newly created routines. In releases prior to v25.3, the fix must be enabled by setting the session variable `use_improved_routine_dependency_tracking` to `on`. [#146250][#146250] -- `~~*` and `!~~*` are now supported aliases for `ILIKE` and `NOT ILIKE`. [#146764][#146764] - `~~` and `!~~` are now supported aliases for `LIKE` and `NOT LIKE`. [#146764][#146764] +- `~~*` and `!~~*` are now supported aliases for `ILIKE` and `NOT ILIKE`. [#146764][#146764] - Added a session variable `initial_retry_backoff_for_read_committed` that controls the initial backoff duration when retrying an individual statement in an explicit `READ COMMITTED` transaction. A duration of `0` disables exponential backoff. If a statement in an explicit `READ COMMITTED` transaction is failing with the `40001` error `ERROR: restart transaction: read committed retry limit exceeded; set by max_retries_for_read_committed=...`, then you should set `initial_retry_backoff_for_read_committed` to a duration proportional to the typical execution time of the statement (in addition to also increasing `max_retries_for_read_committed`). [#146860][#146860] - Deterministic collations are now supported with `LIKE`. A deterministic collation considers strings to be equal only if they consist of the same byte sequence. [#147045][#147045] - The `information_schema.triggers` table is now populated with trigger metadata. Users can query this table to see all triggers defined in their database, including the trigger name, timing (`BEFORE`/`AFTER`), event type (`INSERT`/`UPDATE`/`DELETE`), and associated function. Each trigger event appears as a separate row in the table. [#147237][#147237] @@ -242,8 +242,8 @@ This feature is disabled by default and can be enabled using the `sql.sqlcomment - Directionality may no longer be assigned to any vector index column. Prefix columns are not scannable in a vector index, so directionality is not relevant to them. [#147307][#147307] - Added the `SHOW CREATE ALL ROUTINES` statement, which can be used to show `CREATE` statements for all user-defined functions (UDFs) and procedures in the current database. [#147452][#147452] - Added the metrics `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count`, which count the number of automatic retries of SQL transactions and statements, respectively, within the database. These metrics differ from the related `txn.restarts.*` metrics, which count retryable errors emitted by the KV layer that must be retried. The new `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count` metrics count auto-retry actions taken by the SQL layer in response to some of those retryable errors. [#147682][#147682] -- Partial indexes can now reference user-defined functions. [#147817][#147817] - Computed column expressions and `ON UPDATE` expressions can now reference user-defined functions. [#147817][#147817] +- Partial indexes can now reference user-defined functions. [#147817][#147817] - Added the `SHOW CREATE ALL TRIGGERS` statement. [#147836][#147836] - The `CITEXT` data type is now supported, enabling case-insensitive comparisons for `CITEXT` columns. Internally, `CITEXT` is equivalent to using the undetermined level 2 collation `und-u-ks-level2`. For example, under `CITEXT`, the expression `'test' = 'TEST'` returns `TRUE`. [#147864][#147864] - Increased the default value for the `max_retries_for_read_committed` session variable from `10` to `100`. Testing has shown that some high-contention workloads running under `READ COMMITTED` isolation benefit from more statement retries. [#147869][#147869] @@ -357,21 +357,21 @@ 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) [#154631][#154631] - The optimizer can now use table statistics that merge the latest full statistic with all newer partial statistics, including those over arbitrary constraints over a single span. [#154755][#154755] -- 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. [#155123][#155123] - 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. [#155123][#155123] +- 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. [#155123][#155123] - Added the `INSPECT` command, which runs consistency validation check jobs against tables or databases and specified indexes. [#155441][#155441] - 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`. [#155509][#155509] - Vector indexing is now enabled by default. `feature.vector_index.enabled` defaults to `true`. [#155561][#155561] -- Added sql.statements.bytes_read.count metric that - counts the number of bytes scanned by SQL statements. [#156459][#156459] - Added sql.statements.index_bytes_written.count metric that counts the number of primary and secondary index bytes modified by SQL statements. [#156459][#156459] -- Added sql.statements.rows_read.count metric - that counts the number of index rows read by SQL statements. [#156459][#156459] +- Added sql.statements.bytes_read.count metric that + counts the number of bytes scanned by SQL statements. [#156459][#156459] - Added sql.statements.index_rows_written.count metric that counts the number of primary and secondary index rows modified by SQL statements. [#156459][#156459] +- Added sql.statements.rows_read.count metric + that counts the number of index rows read by SQL statements. [#156459][#156459] - CockroachDB now supports index accelerating `jsonb_path_exists` filters with JSONpath expressions that end with an AnyKey (`*`). [#156508][#156508]

Operational changes

@@ -566,8 +566,8 @@ The following cases are not supported: Jitter will now be disabled in this case. Fixes: #143436 [#144304][#144304] -- Fixed a bug that prevented variable references using ordinal syntax (like `$1`) from reflecting updates to the variable. Referencing variables declared in PL/pgSQL blocks (instead of parameters) via ordinal syntax is now disallowed. The bug had existed since v24.1. [#144347][#144347] - Fixed a bug that could cause PL/pgSQL `FOR` loops to terminate early or show incorrect values for the counter variable. The bug had existed since v24.3, and occurred when two or more `FOR` loops were nested within one another. [#144347][#144347] +- Fixed a bug that prevented variable references using ordinal syntax (like `$1`) from reflecting updates to the variable. Referencing variables declared in PL/pgSQL blocks (instead of parameters) via ordinal syntax is now disallowed. The bug had existed since v24.1. [#144347][#144347] - Fixed a bug that could cause queries that perform work in parallel to ignore the requested quality-of-service level. Affected operations include lookup joins, DistSQL execution, and foreign-key checks. [#144427][#144427] - Fixed a bug in the **SQL Activity Statements** page where filtering by **Statement Type** returned no results. The filter now works as expected. [#144517][#144517] - Fixed a bug in the DB Console where tables with page size dropdowns failed to update when a new page size option was selected. Tables now update correctly. [#144556][#144556] @@ -867,483 +867,483 @@ The following cases are not supported: destination after failover from a PCR stream of a system virtual cluster. [#156812][#156812] -[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 -[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 +[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 +[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 +[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 +[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 +[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 +[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 +[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 +[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 +[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 +[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 +[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 +[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 +[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 +[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 +[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 +[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 +[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 +[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 +[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 +[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 +[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 +[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 +[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 +[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 +[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 +[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 +[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 +[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 +[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 +[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 +[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 +[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 +[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 [#146683]: https://github.com/cockroachdb/cockroach/pull/146683 -[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 +[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 +[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 +[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 +[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 +[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 +[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 +[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 +[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 +[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 +[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 +[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 +[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 +[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 [#154659]: https://github.com/cockroachdb/cockroach/pull/154659 -[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 -[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 -[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 -[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 +[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 +[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 +[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 [#142385]: https://github.com/cockroachdb/cockroach/pull/142385 -[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 -[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 -[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 -[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 -[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 -[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 -[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 -[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 -[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 -[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 -[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 +[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 +[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 +[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 +[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 +[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 [#148863]: https://github.com/cockroachdb/cockroach/pull/148863 -[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 -[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 -[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 -[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 -[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 -[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 -[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 -[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 -[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 -[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 -[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 -[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 -[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 -[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 -[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 -[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 -[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 -[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 -[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 -[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 -[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 -[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 -[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 -[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 -[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 -[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 -[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 -[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 -[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 -[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 -[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 -[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 -[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 -[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 -[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 -[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 -[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 -[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 -[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 -[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 -[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 -[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 -[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 -[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 -[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 -[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 -[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 -[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 -[#145236]: https://github.com/cockroachdb/cockroach/pull/145236 -[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 -[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 -[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 -[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 -[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 -[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 +[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 +[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 +[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 +[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 +[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 +[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 +[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 +[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 +[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 +[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 +[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 +[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 +[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 +[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 +[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 +[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 +[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 +[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 +[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 +[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 +[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 +[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 +[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 [#156947]: https://github.com/cockroachdb/cockroach/pull/156947 -[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 -[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 -[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 -[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 -[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 -[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 -[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 -[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 -[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 -[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 -[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 +[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 +[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 +[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 +[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 +[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 +[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 [#155077]: https://github.com/cockroachdb/cockroach/pull/155077 -[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 -[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 -[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 -[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 -[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 -[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 +[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 +[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 [#143446]: https://github.com/cockroachdb/cockroach/pull/143446 +[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 +[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 +[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 +[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 +[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 +[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 +[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 +[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 +[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 +[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 +[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 +[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 +[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 +[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 +[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 +[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 +[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 +[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 +[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 +[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 +[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 +[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 +[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 [#141193]: https://github.com/cockroachdb/cockroach/pull/141193 +[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 +[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 +[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 +[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 [#144658]: https://github.com/cockroachdb/cockroach/pull/144658 -[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 -[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 -[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 [#147682]: https://github.com/cockroachdb/cockroach/pull/147682 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 -[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 -[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 -[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 -[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 -[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 -[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 -[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 -[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 -[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 -[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 -[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 -[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 -[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 -[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 -[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 -[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 -[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 -[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 -[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 -[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 -[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 -[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 -[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 -[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 -[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 -[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 -[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 -[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 -[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 -[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 -[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 -[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 -[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 -[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 -[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 -[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 -[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 -[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 -[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 -[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 -[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 -[#157037]: https://github.com/cockroachdb/cockroach/pull/157037 -[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 -[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 -[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 -[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 -[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 -[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 -[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 -[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 -[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 -[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 -[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 -[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 -[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 -[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 -[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 -[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 -[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 -[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 -[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 -[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 -[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 +[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 +[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 +[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 +[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 +[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 +[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 +[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 +[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 +[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 +[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 +[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 +[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 [#142927]: https://github.com/cockroachdb/cockroach/pull/142927 -[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 -[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 -[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 -[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 -[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 -[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 -[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 -[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 +[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 +[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 [#142068]: https://github.com/cockroachdb/cockroach/pull/142068 -[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 -[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 -[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 -[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 -[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 -[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 -[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 -[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 -[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 -[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 -[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 -[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 -[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 -[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 -[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 -[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 -[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 -[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 -[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 -[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 -[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 -[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 -[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 -[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 -[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 -[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 -[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 -[#144643]: https://github.com/cockroachdb/cockroach/pull/144643 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 -[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 -[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 -[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 -[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 -[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 -[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 -[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 -[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 -[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 -[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 -[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 -[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 -[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 -[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 -[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 -[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 -[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 -[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 -[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 -[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 -[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 -[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 -[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 -[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 -[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 +[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 +[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 +[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 +[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 +[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 +[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 [#156968]: https://github.com/cockroachdb/cockroach/pull/156968 -[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 -[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 -[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 -[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 -[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 -[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 +[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 +[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 +[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 +[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 +[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 +[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 +[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 +[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 [#155123]: https://github.com/cockroachdb/cockroach/pull/155123 -[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 -[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 -[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 -[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 -[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 -[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 -[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 -[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 -[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 -[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 -[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 -[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 -[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 -[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 -[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 -[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 -[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 +[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 [#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 -[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 +[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 +[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 +[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 +[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 +[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 +[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 +[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 +[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 +[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 [#151186]: https://github.com/cockroachdb/cockroach/pull/151186 -[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 [#144004]: https://github.com/cockroachdb/cockroach/pull/144004 -[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 -[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 -[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 -[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 +[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 +[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 +[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 +[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 +[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 +[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 +[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 +[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 +[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 +[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 +[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 [#143097]: https://github.com/cockroachdb/cockroach/pull/143097 -[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 -[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 -[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 -[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 -[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 -[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 -[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 -[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 -[#155927]: https://github.com/cockroachdb/cockroach/pull/155927 -[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 -[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 +[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 +[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 +[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 [#148471]: https://github.com/cockroachdb/cockroach/pull/148471 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 +[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 +[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 +[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 +[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 +[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 +[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 +[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 +[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 +[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 [#142252]: https://github.com/cockroachdb/cockroach/pull/142252 -[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 -[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 -[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 -[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 -[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 -[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 -[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 -[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 -[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 -[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 -[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 -[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 -[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 -[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 -[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 +[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 [#146215]: https://github.com/cockroachdb/cockroach/pull/146215 -[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 -[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 -[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 -[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 -[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 -[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 +[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 +[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 +[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 +[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 +[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 +[#145391]: https://github.com/cockroachdb/cockroach/pull/145391 +[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 +[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 +[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 +[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 +[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 +[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 +[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 +[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 +[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 +[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 +[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 +[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 +[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 +[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 +[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 +[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 [#153625]: https://github.com/cockroachdb/cockroach/pull/153625 -[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 -[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 -[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 -[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 +[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 +[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 +[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 [#149975]: https://github.com/cockroachdb/cockroach/pull/149975 +[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 +[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 +[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 +[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 +[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 +[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 +[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 +[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 +[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 +[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 +[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 +[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 +[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 +[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 +[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 +[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 +[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 +[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 +[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 +[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 +[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 +[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 +[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 +[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 +[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 +[#145236]: https://github.com/cockroachdb/cockroach/pull/145236 +[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 +[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 +[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 +[#155927]: https://github.com/cockroachdb/cockroach/pull/155927 +[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 +[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 +[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 +[#157037]: https://github.com/cockroachdb/cockroach/pull/157037 +[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 +[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 +[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 +[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 +[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 [#149261]: https://github.com/cockroachdb/cockroach/pull/149261 -[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 -[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 -[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 -[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 -[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 -[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 -[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 -[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 +[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 [#147766]: https://github.com/cockroachdb/cockroach/pull/147766 -[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 +[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 +[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 +[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 +[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 +[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 +[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 +[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 +[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 +[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 +[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 +[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 +[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 +[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 +[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 +[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 +[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 +[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 +[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 +[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 +[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 +[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 +[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 +[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 +[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 +[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 +[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 +[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 +[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 +[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 +[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 +[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 [#146369]: https://github.com/cockroachdb/cockroach/pull/146369 -[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 -[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 -[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 -[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 -[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 -[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 -[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 -[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 -[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 +[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 +[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 +[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 +[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 +[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 +[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 +[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 +[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 +[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 +[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 +[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 +[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 +[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 +[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 +[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 +[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 +[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 +[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 +[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 +[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 +[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 +[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 +[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 +[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 +[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 +[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 +[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 +[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 +[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 +[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 +[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 +[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 +[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 +[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 +[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 +[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 [#145002]: https://github.com/cockroachdb/cockroach/pull/145002 -[#145391]: https://github.com/cockroachdb/cockroach/pull/145391 -[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 -[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 -[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 -[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 -[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 -[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 -[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 -[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 -[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 -[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 -[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 -[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 [#149622]: https://github.com/cockroachdb/cockroach/pull/149622 -[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 +[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 +[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 +[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 +[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 +[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 +[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 +[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 +[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 +[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 +[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 +[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 +[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 +[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 +[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 +[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 +[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 +[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 +[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 +[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 +[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 +[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 +[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 +[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 +[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 +[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 +[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 +[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 +[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 +[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 +[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 +[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 +[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 +[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 +[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 +[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 +[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 +[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 +[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 +[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 +[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 +[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 +[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 [#144536]: https://github.com/cockroachdb/cockroach/pull/144536 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 -[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 -[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 -[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 -[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 -[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 -[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 -[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 -[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 +[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 +[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 +[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 +[#144643]: https://github.com/cockroachdb/cockroach/pull/144643 +[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 +[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 +[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 +[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 +[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 +[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 +[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 +[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 +[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 [#152469]: https://github.com/cockroachdb/cockroach/pull/152469 -[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 -[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 -[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 -[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 -[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 -[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 -[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 -[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 -[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 -[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 -[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 -[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 -[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 -[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 -[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 -[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 -[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 -[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 -[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 -[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 -[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 -[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 -[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 +[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 +[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 [#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 +[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 +[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 +[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 +[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 +[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 +[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 +[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 +[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 [#153787]: https://github.com/cockroachdb/cockroach/pull/153787 -[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 -[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 -[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 +[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 +[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 +[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 +[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 +[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 [#153724]: https://github.com/cockroachdb/cockroach/pull/153724 -[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 -[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 -[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 -[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 -[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 -[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 -[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 -[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 -[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 -[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 -[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 +[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 +[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 +[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 +[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 +[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 +[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 +[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 +[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 +[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 +[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 +[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 +[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 +[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 +[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 +[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 +[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 +[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 [#151148]: https://github.com/cockroachdb/cockroach/pull/151148 -[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 -[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 -[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 -[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 -[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 -[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 -[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 -[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 -[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 -[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 -[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 -[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 -[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 -[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 -[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 -[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 -[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 -[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 -[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 -[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 -[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 -[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 -[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 -[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 -[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 -[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 -[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 -[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 -[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 -[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 -[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 +[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 +[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 +[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 +[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 [#151472]: https://github.com/cockroachdb/cockroach/pull/151472 -[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 -[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 -[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 -[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 -[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 -[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 -[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 -[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 -[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 -[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 -[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 -[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 -[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 +[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 +[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 +[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 +[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 +[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 [#145329]: https://github.com/cockroachdb/cockroach/pull/145329 -[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 -[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 -[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 -[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 -[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 -[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 -[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 +[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 +[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 From c99d368ad5d4060b7d8c1c7dfb1fd02301c540e3 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 15:15:39 +0000 Subject: [PATCH 13/37] Update release notes for v25.4-v25.4.1 From 0dbb7afa2ab306354f59682893fcc029c6857601 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 15:15:39 +0000 Subject: [PATCH 14/37] Update release notes for v25.4-v25.4.1 From 1330329a688beb5ce503661c4d3c7d8a5b565dfa Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 15:15:40 +0000 Subject: [PATCH 15/37] Update release notes for v25.4-v25.4.1 --- .../_includes/releases/v25.4/v25.4.1.md | 918 +++++++++--------- 1 file changed, 459 insertions(+), 459 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.1.md b/src/current/_includes/releases/v25.4/v25.4.1.md index 64f4c963d89..ab8d147f8ae 100644 --- a/src/current/_includes/releases/v25.4/v25.4.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.1.md @@ -166,27 +166,27 @@ Release Date: November 28, 2025 - The owner of a database can now set default session variables per database using the `ALTER ROLE ALL IN DATABASE ... SET` or `ALTER DATABASE ... SET` commands. [#130547][#130547] - Added the `ST_3DLength` function, which returns the 3D or 2D length of `LINESTRING` and `MULTILINESTRING` spatial types. [#139450][#139450] - `format()` no longer requires all post-format string arguments to have the same type. [#141193][#141193] -- `concat()` no longer requires all arguments have the same type. [#141193][#141193] - `concat_ws()` now accepts arguments of any type in the second and later positions (the separator must still be a string). [#141193][#141193] -- `pg_column_size()` no longer requires that all arguments have the same type. [#141193][#141193] - `num_nulls()` and `num_nonnulls()` no longer require all arguments to have the same type. [#141193][#141193] - `json_build_object()`, `jsonb_build_object()`, `json_build_array()`, and `jsonb_build_array()` no longer require that all arguments have the same type. [#141193][#141193] -- Double-quoted key accessors are now supported in JSONPath queries. For example, `SELECT '$."1key"."key2"'::JSONPATH;`. [#142241][#142241] +- `pg_column_size()` no longer requires that all arguments have the same type. [#141193][#141193] +- `concat()` no longer requires all arguments have the same type. [#141193][#141193] +- Array unions are now supported in JSONPath queries. For example, `$.a[1, 2 to 4, 7, 8]`. [#142241][#142241] - Array integer indexing is now supported in JSONPath queries. For example, `$.a[1]`. [#142241][#142241] - Array ranges are now supported in JSONPath queries. For example, `$.a[1 to 3]`). [#142241][#142241] -- Array unions are now supported in JSONPath queries. For example, `$.a[1, 2 to 4, 7, 8]`. [#142241][#142241] +- Double-quoted key accessors are now supported in JSONPath queries. For example, `SELECT '$."1key"."key2"'::JSONPATH;`. [#142241][#142241] - Fixed a regression due to join-elimination rules that prevented other optimization rules from applying. [#142252][#142252] - Statements such as `REFRESH MATERIALIZED VIEW` and `CREATE MATERIALIZED VIEW` can now be executed with an `AS OF SYSTEM TIME` clause. These statements can still not be used in an explicit transaction. [#142259][#142259] - Add the `jsonb_path_query` function, which takes in a JSON object and a JSONPath query and returns the resulting JSON object. [#142336][#142336] - Added the `ALTER VIRTUAL CLUSTER .. SET REPLICATION SOURCE` command so users can configure producer jobs on the source cluster. Currently, users can only configure the `EXPIRATION WINDOW`. Also, removed the `EXPIRATION WINDOW` option from the consumer side command of `ALTER VIRTUAL CLUSTER SET REPLICATION`. [#142501][#142501] - `EXPLAIN ANALYZE` statements now display the number of transaction retries and time spent retrying, if non-zero, in the plan output. [#142692][#142692] - Users can now begin logical data replication (LDR) on an existing table if the user has a table-level `REPLICATIONDEST` privilege. Furthermore, users can now begin LDR onto an automatically created table if the user has the parent database level `CREATE` privilege. Finally, during bidirectional LDR, the user in the original source URI, who will begin the reverse LDR stream, to authorize via this table-level `REPLICATIONDEST` privilege. [#142840][#142840] -- Logical operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '1 < 2 && 3 >= 2')`. [#142899][#142899] - Comparison operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', 1 < 2)`. [#142899][#142899] +- Logical operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '1 < 2 && 3 >= 2')`. [#142899][#142899] - It is now possible to automatically collect partial table statistics, but disable automatic collection of full table statistics. The new cluster and table settings to enable/disable automatic collection of full table statistics (without affecting the settings for partial stats) are `sql.stats.automatic_full_collection.enabled` and `sql_stats_automatic_full_collection_enabled`, respectively. The settings default to `true`. [#142924][#142924] - The return type of the `workload_index_recs` built-in function now includes two columns. The first column, `index_rec`, remains a `STRING` type and contains the index recommendation. The second column, `fingerprint_ids`, is new and has the `BYTES[]` type. [#142927][#142927] -- Update edge cases in the `width_bucket()` function to return `count + 1` for a positive infinity operand, and `0` for a negative infinity operand, instead of an error. [#142932][#142932] - Implemented various `power()` and `^` edge cases to match PostgreSQL behaviour. Some expressions that previously returned `NaN` now return specific numbers; some expressions that previously returned `Infinity` or `NaN` now return errors; and some expressions with infinite exponents now return different results. [#142932][#142932] +- Update edge cases in the `width_bucket()` function to return `count + 1` for a positive infinity operand, and `0` for a negative infinity operand, instead of an error. [#142932][#142932] - Added the `jsonb_path_exists` function, which accepts a JSON object and JSONPath query and returns whether the query returned any items. [#143028][#143028] - Filters are now supported in JSONPath queries, using the format `$ ? (predicate)`. This allows results to be filtered. For example, `SELECT jsonb_path_query('{"a": [1,2,3]}', '$.a ? (1 == 1)');`. [#143097][#143097] - Addition, subtraction, multiplication, division, and modulo operators are now supported in JSONPath queries. [#143210][#143210] @@ -207,9 +207,9 @@ Release Date: November 28, 2025 - Usage of `TG_ARGV` in trigger functions is now disallowed by default. The session setting `allow_create_trigger_function_with_argv_references` can be set to `true` to allow usage (with 1-based indexing). [#143827][#143827] - A new `execution time` statistic is now reported on `EXPLAIN ANALYZE` output for most operators. Previously, this statistic was only available on the DistSQL diagrams in `EXPLAIN ANALYZE (DISTSQL)` output. [#143857][#143857] - Added a new session variable `create_table_with_schema_locked`, which can be used to ensure all tables created by a session have the storage parameter `schema_locked` set. [#143892][#143892] +- Added the `jsonb_path_match` function, which returns the result of a predicate query. [#144006][#144006] - Added the `jsonb_path_query_first` function, which returns the first result from `jsonb_path_query`. [#144006][#144006] - Added the `jsonb_path_query_array` function, which returns the result of `jsonb_path_query` wrapped in a JSON array. [#144006][#144006] -- Added the `jsonb_path_match` function, which returns the result of a predicate query. [#144006][#144006] - The following syntax is now supported: `GRANT ... ON ALL ROUTINES IN SCHEMA ...`; `REVOKE ... ON ALL ROUTINES IN SCHEMA ...`; `ALTER DEFAULT PRIVILEGES GRANT ... ON ROUTINES ...`; `ALTER DEFAULT PRIVIELGES REVOKE ... ON ROUTINES ...`. The `ROUTINES` keyword makes the command apply to both functions and stored procedures. Note that `ALTER DEFAULT PRIVILEGES ... ON FUNCTIONS` already applied to stored procedures (which aligns with the PostgreSQL behavior), and that is not changing. [#144189][#144189] - Parenthesized expressions are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{"a": {"b": true}}', '($.a).b');` [#144245][#144245] - The `.size()` method is now supported in JSONPath expressions. For example, `SELECT jsonb_path_query('[1, 2, 3]', '$.size()');`. [#144266][#144266] @@ -233,8 +233,8 @@ Release Date: November 28, 2025 - In the `crdb_internal.cluster_execution_insights` and `crdb_internal.node_execution_insights` virtual tables in a new `query_tags` JSONB column. This feature is disabled by default and can be enabled using the `sql.sqlcommenter.enabled` cluster setting. Comments must follow the [SQLCommenter specification](https://google.github.io/sqlcommenter/spec/). [#145435][#145435] - Fixed a bug that caused a routine with an `INSERT` statement to unnecessarily block dropping a hash-sharded index or computed column on the target table. This fix applies only to newly created routines. In releases prior to v25.3, the fix must be enabled by setting the session variable `use_improved_routine_dependency_tracking` to `on`. [#146250][#146250] -- `~~` and `!~~` are now supported aliases for `LIKE` and `NOT LIKE`. [#146764][#146764] - `~~*` and `!~~*` are now supported aliases for `ILIKE` and `NOT ILIKE`. [#146764][#146764] +- `~~` and `!~~` are now supported aliases for `LIKE` and `NOT LIKE`. [#146764][#146764] - Added a session variable `initial_retry_backoff_for_read_committed` that controls the initial backoff duration when retrying an individual statement in an explicit `READ COMMITTED` transaction. A duration of `0` disables exponential backoff. If a statement in an explicit `READ COMMITTED` transaction is failing with the `40001` error `ERROR: restart transaction: read committed retry limit exceeded; set by max_retries_for_read_committed=...`, then you should set `initial_retry_backoff_for_read_committed` to a duration proportional to the typical execution time of the statement (in addition to also increasing `max_retries_for_read_committed`). [#146860][#146860] - Deterministic collations are now supported with `LIKE`. A deterministic collation considers strings to be equal only if they consist of the same byte sequence. [#147045][#147045] - The `information_schema.triggers` table is now populated with trigger metadata. Users can query this table to see all triggers defined in their database, including the trigger name, timing (`BEFORE`/`AFTER`), event type (`INSERT`/`UPDATE`/`DELETE`), and associated function. Each trigger event appears as a separate row in the table. [#147237][#147237] @@ -242,8 +242,8 @@ This feature is disabled by default and can be enabled using the `sql.sqlcomment - Directionality may no longer be assigned to any vector index column. Prefix columns are not scannable in a vector index, so directionality is not relevant to them. [#147307][#147307] - Added the `SHOW CREATE ALL ROUTINES` statement, which can be used to show `CREATE` statements for all user-defined functions (UDFs) and procedures in the current database. [#147452][#147452] - Added the metrics `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count`, which count the number of automatic retries of SQL transactions and statements, respectively, within the database. These metrics differ from the related `txn.restarts.*` metrics, which count retryable errors emitted by the KV layer that must be retried. The new `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count` metrics count auto-retry actions taken by the SQL layer in response to some of those retryable errors. [#147682][#147682] -- Computed column expressions and `ON UPDATE` expressions can now reference user-defined functions. [#147817][#147817] - Partial indexes can now reference user-defined functions. [#147817][#147817] +- Computed column expressions and `ON UPDATE` expressions can now reference user-defined functions. [#147817][#147817] - Added the `SHOW CREATE ALL TRIGGERS` statement. [#147836][#147836] - The `CITEXT` data type is now supported, enabling case-insensitive comparisons for `CITEXT` columns. Internally, `CITEXT` is equivalent to using the undetermined level 2 collation `und-u-ks-level2`. For example, under `CITEXT`, the expression `'test' = 'TEST'` returns `TRUE`. [#147864][#147864] - Increased the default value for the `max_retries_for_read_committed` session variable from `10` to `100`. Testing has shown that some high-contention workloads running under `READ COMMITTED` isolation benefit from more statement retries. [#147869][#147869] @@ -357,21 +357,21 @@ 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) [#154631][#154631] - The optimizer can now use table statistics that merge the latest full statistic with all newer partial statistics, including those over arbitrary constraints over a single span. [#154755][#154755] -- 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. [#155123][#155123] - 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. [#155123][#155123] +- 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. [#155123][#155123] - Added the `INSPECT` command, which runs consistency validation check jobs against tables or databases and specified indexes. [#155441][#155441] - 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`. [#155509][#155509] - Vector indexing is now enabled by default. `feature.vector_index.enabled` defaults to `true`. [#155561][#155561] +- Added sql.statements.bytes_read.count metric that + counts the number of bytes scanned by SQL statements. [#156459][#156459] - Added sql.statements.index_bytes_written.count metric that counts the number of primary and secondary index bytes modified by SQL statements. [#156459][#156459] -- Added sql.statements.bytes_read.count metric that - counts the number of bytes scanned by SQL statements. [#156459][#156459] +- Added sql.statements.rows_read.count metric + that counts the number of index rows read by SQL statements. [#156459][#156459] - Added sql.statements.index_rows_written.count metric that counts the number of primary and secondary index rows modified by SQL statements. [#156459][#156459] -- Added sql.statements.rows_read.count metric - that counts the number of index rows read by SQL statements. [#156459][#156459] - CockroachDB now supports index accelerating `jsonb_path_exists` filters with JSONpath expressions that end with an AnyKey (`*`). [#156508][#156508]

Operational changes

@@ -566,8 +566,8 @@ The following cases are not supported: Jitter will now be disabled in this case. Fixes: #143436 [#144304][#144304] -- Fixed a bug that could cause PL/pgSQL `FOR` loops to terminate early or show incorrect values for the counter variable. The bug had existed since v24.3, and occurred when two or more `FOR` loops were nested within one another. [#144347][#144347] - Fixed a bug that prevented variable references using ordinal syntax (like `$1`) from reflecting updates to the variable. Referencing variables declared in PL/pgSQL blocks (instead of parameters) via ordinal syntax is now disallowed. The bug had existed since v24.1. [#144347][#144347] +- Fixed a bug that could cause PL/pgSQL `FOR` loops to terminate early or show incorrect values for the counter variable. The bug had existed since v24.3, and occurred when two or more `FOR` loops were nested within one another. [#144347][#144347] - Fixed a bug that could cause queries that perform work in parallel to ignore the requested quality-of-service level. Affected operations include lookup joins, DistSQL execution, and foreign-key checks. [#144427][#144427] - Fixed a bug in the **SQL Activity Statements** page where filtering by **Statement Type** returned no results. The filter now works as expected. [#144517][#144517] - Fixed a bug in the DB Console where tables with page size dropdowns failed to update when a new page size option was selected. Tables now update correctly. [#144556][#144556] @@ -867,483 +867,483 @@ The following cases are not supported: destination after failover from a PCR stream of a system virtual cluster. [#156812][#156812] -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 +[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 +[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 +[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 +[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 +[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 +[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 +[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 +[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 +[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 +[#145236]: https://github.com/cockroachdb/cockroach/pull/145236 +[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 +[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 +[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 +[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 +[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 +[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 +[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 +[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 +[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 +[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 +[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 +[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 +[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 +[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 +[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 [#153889]: https://github.com/cockroachdb/cockroach/pull/153889 -[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 -[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 -[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 -[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 -[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 [#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 -[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 -[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 -[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 +[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 +[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 [#142277]: https://github.com/cockroachdb/cockroach/pull/142277 -[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 -[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 -[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 -[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 -[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 -[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 -[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 -[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 -[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 -[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 -[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 +[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 [#143499]: https://github.com/cockroachdb/cockroach/pull/143499 -[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 -[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 -[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 -[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 -[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 -[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 +[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 +[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 +[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 +[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 +[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 +[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 +[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 +[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 +[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 +[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 +[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 +[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 +[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 [#150364]: https://github.com/cockroachdb/cockroach/pull/150364 -[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 -[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 -[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 -[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 -[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 -[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 -[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 -[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 -[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 -[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 +[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 +[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 +[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 +[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 +[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 +[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 +[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 +[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 +[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 +[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 +[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 +[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 +[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 +[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 +[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 +[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 +[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 +[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 +[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 +[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 +[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 +[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 +[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 +[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 +[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 +[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 +[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 +[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 +[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 +[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 +[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 +[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 +[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 +[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 +[#142927]: https://github.com/cockroachdb/cockroach/pull/142927 +[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 +[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 +[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 +[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 +[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 +[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 +[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 [#149513]: https://github.com/cockroachdb/cockroach/pull/149513 -[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 -[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 +[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 +[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 +[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 +[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 +[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 +[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 +[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 +[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 +[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 +[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 +[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 +[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 +[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 +[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 +[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 +[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 [#143210]: https://github.com/cockroachdb/cockroach/pull/143210 -[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 -[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 -[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 -[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 -[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 -[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 -[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 -[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 -[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 -[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 -[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 -[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 -[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 -[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 -[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 +[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 [#142202]: https://github.com/cockroachdb/cockroach/pull/142202 -[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 +[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 +[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 +[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 +[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 +[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 +[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 +[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 +[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 +[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 +[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 [#147187]: https://github.com/cockroachdb/cockroach/pull/147187 -[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 -[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 -[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 -[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 -[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 -[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 -[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 +[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 +[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 +[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 +[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 +[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 +[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 [#151362]: https://github.com/cockroachdb/cockroach/pull/151362 -[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 -[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 -[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 -[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 -[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 -[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 -[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 -[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 -[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 -[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 -[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 -[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 -[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 -[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 -[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 -[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 -[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 -[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 -[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 -[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 -[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 -[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 -[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 -[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 -[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 +[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 +[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 +[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 +[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 +[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 +[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 +[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 [#150283]: https://github.com/cockroachdb/cockroach/pull/150283 -[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 -[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 -[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 -[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 -[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 -[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 -[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 -[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 -[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 -[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 -[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 -[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 -[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 -[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 -[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 -[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 -[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 -[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 -[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 -[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 -[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 -[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 -[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 -[#144658]: https://github.com/cockroachdb/cockroach/pull/144658 -[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 -[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 -[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 -[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 -[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 -[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 -[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 -[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 -[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 -[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 -[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 -[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 -[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 +[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 +[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 [#147923]: https://github.com/cockroachdb/cockroach/pull/147923 -[#142927]: https://github.com/cockroachdb/cockroach/pull/142927 -[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 -[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 -[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 -[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 +[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 +[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 +[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 +[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 [#144556]: https://github.com/cockroachdb/cockroach/pull/144556 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 -[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 -[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 -[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 -[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 -[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 -[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 -[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 -[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 -[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 -[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 -[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 -[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 -[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 -[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 -[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 -[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 -[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 -[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 -[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 -[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 -[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 -[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 -[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 -[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 -[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 -[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 -[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 -[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 -[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 -[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 -[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 -[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 -[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 -[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 -[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 -[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 -[#143097]: https://github.com/cockroachdb/cockroach/pull/143097 -[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 -[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 -[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 -[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 -[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 -[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 -[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 -[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 -[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 -[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 -[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 -[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 -[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 -[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 -[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 -[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 -[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 -[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 -[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 -[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 -[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 -[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 [#145391]: https://github.com/cockroachdb/cockroach/pull/145391 -[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 -[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 -[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 -[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 -[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 -[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 -[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 -[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 -[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 -[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 -[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 -[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 -[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 -[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 -[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 -[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 -[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 -[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 [#153048]: https://github.com/cockroachdb/cockroach/pull/153048 -[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 -[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 -[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 -[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 -[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 -[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 -[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 -[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 -[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 -[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 +[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 +[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 +[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 +[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 [#147021]: https://github.com/cockroachdb/cockroach/pull/147021 -[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 -[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 -[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 -[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 -[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 -[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 -[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 -[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 -[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 -[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 -[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 -[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 -[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 -[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 -[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 -[#145236]: https://github.com/cockroachdb/cockroach/pull/145236 -[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 -[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 -[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 -[#155927]: https://github.com/cockroachdb/cockroach/pull/155927 -[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 -[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 -[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 -[#157037]: https://github.com/cockroachdb/cockroach/pull/157037 -[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 -[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 -[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 -[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 -[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 -[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 -[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 -[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 -[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 -[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 -[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 -[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 -[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 -[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 -[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 -[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 -[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 -[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 -[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 -[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 -[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 -[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 -[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 -[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 -[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 -[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 +[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 [#145107]: https://github.com/cockroachdb/cockroach/pull/145107 -[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 -[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 -[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 -[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 -[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 -[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 -[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 -[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 -[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 -[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 -[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 +[#144536]: https://github.com/cockroachdb/cockroach/pull/144536 +[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 +[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 +[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 +[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 +[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 [#149614]: https://github.com/cockroachdb/cockroach/pull/149614 -[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 -[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 -[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 -[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 -[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 -[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 -[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 -[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 -[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 -[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 -[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 -[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 -[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 -[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 -[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 +[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 +[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 +[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 +[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 +[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 +[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 +[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 +[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 [#142829]: https://github.com/cockroachdb/cockroach/pull/142829 -[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 -[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 -[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 -[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 -[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 -[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 +[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 +[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 +[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 +[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 +[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 +[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 [#148290]: https://github.com/cockroachdb/cockroach/pull/148290 -[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 -[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 -[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 -[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 -[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 -[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 -[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 +[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 +[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 +[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 [#145492]: https://github.com/cockroachdb/cockroach/pull/145492 -[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 -[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 -[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 -[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 +[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 +[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 +[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 +[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 +[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 +[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 +[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 +[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 +[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 +[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 +[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 +[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 +[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 [#147439]: https://github.com/cockroachdb/cockroach/pull/147439 -[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 -[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 -[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 -[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 -[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 -[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 -[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 -[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 -[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 -[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 +[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 +[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 +[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 +[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 +[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 +[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 +[#155927]: https://github.com/cockroachdb/cockroach/pull/155927 +[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 +[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 +[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 +[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 +[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 +[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 +[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 +[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 +[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 +[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 +[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 +[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 +[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 +[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 +[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 +[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 +[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 [#153628]: https://github.com/cockroachdb/cockroach/pull/153628 -[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 -[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 +[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 +[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 +[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 +[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 +[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 +[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 +[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 +[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 +[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 +[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 +[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 +[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 +[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 +[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 +[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 +[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 [#130547]: https://github.com/cockroachdb/cockroach/pull/130547 -[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 -[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 -[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 -[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 -[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 -[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 -[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 -[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 -[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 -[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 -[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 -[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 +[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 +[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 +[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 +[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 +[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 +[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 +[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 +[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 +[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 +[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 +[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 +[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 +[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 +[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 +[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 +[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 [#143613]: https://github.com/cockroachdb/cockroach/pull/143613 -[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 -[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 -[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 -[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 -[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 -[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 -[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 -[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 +[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 +[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 +[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 +[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 +[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 +[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 +[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 +[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 +[#157037]: https://github.com/cockroachdb/cockroach/pull/157037 +[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 +[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 +[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 +[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 +[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 +[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 +[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 +[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 +[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 +[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 +[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 +[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 [#146292]: https://github.com/cockroachdb/cockroach/pull/146292 -[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 -[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 -[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 -[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 -[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 -[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 -[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 -[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 -[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 -[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 -[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 -[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 -[#144536]: https://github.com/cockroachdb/cockroach/pull/144536 -[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 -[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 -[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 -[#144643]: https://github.com/cockroachdb/cockroach/pull/144643 -[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 -[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 -[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 -[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 -[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 +[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 +[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 +[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 +[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 +[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 +[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 [#145481]: https://github.com/cockroachdb/cockroach/pull/145481 -[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 -[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 +[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 +[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 +[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 +[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 +[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 +[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 +[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 +[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 +[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 +[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 +[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 +[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 +[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 +[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 +[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 [#148782]: https://github.com/cockroachdb/cockroach/pull/148782 +[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 +[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 +[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 +[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 +[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 +[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 +[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 +[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 +[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 +[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 [#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 -[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 -[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 -[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 -[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 -[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 -[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 -[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 -[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 +[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 +[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 +[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 +[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 +[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 +[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 +[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 +[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 +[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 +[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 +[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 +[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 +[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 +[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 +[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 +[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 +[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 +[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 +[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 +[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 +[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 +[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 +[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 [#151849]: https://github.com/cockroachdb/cockroach/pull/151849 -[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 +[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 +[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 +[#143097]: https://github.com/cockroachdb/cockroach/pull/143097 [#113649]: https://github.com/cockroachdb/cockroach/pull/113649 -[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 -[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 -[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 -[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 -[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 -[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 +[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 +[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 +[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 +[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 +[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 +[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 [#153724]: https://github.com/cockroachdb/cockroach/pull/153724 -[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 -[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 +[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 +[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 +[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 +[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 [#151110]: https://github.com/cockroachdb/cockroach/pull/151110 -[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 -[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 +[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 +[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 +[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 +[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 +[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 +[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 +[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 +[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 +[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 +[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 +[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 +[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 +[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 +[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 +[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 +[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 +[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 +[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 +[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 +[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 +[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 +[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 +[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 +[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 +[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 +[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 +[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 +[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 +[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 +[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 +[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 +[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 +[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 +[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 +[#144658]: https://github.com/cockroachdb/cockroach/pull/144658 +[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 +[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 +[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 +[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 +[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 +[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 +[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 +[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 +[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 +[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 +[#144643]: https://github.com/cockroachdb/cockroach/pull/144643 +[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 +[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 +[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 +[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 +[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 +[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 +[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 +[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 +[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 [#145549]: https://github.com/cockroachdb/cockroach/pull/145549 -[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 -[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 -[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 -[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 -[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 +[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 +[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 +[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 +[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 +[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 [#151153]: https://github.com/cockroachdb/cockroach/pull/151153 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 -[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 -[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 -[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 -[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 -[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 -[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 -[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 -[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 -[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 -[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 -[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 +[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 +[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 +[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 +[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 +[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 +[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 +[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 +[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 +[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 +[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 +[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 +[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 [#154459]: https://github.com/cockroachdb/cockroach/pull/154459 -[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 -[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 -[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 -[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 -[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 -[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 -[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 -[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 -[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 -[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 -[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 +[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 +[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 +[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 +[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 +[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 +[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 +[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 +[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 +[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 +[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 +[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 +[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 +[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 +[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 +[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 +[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 +[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 From 03ef08642abc8b14da621bba5488576085277fe5 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 15:27:09 +0000 Subject: [PATCH 16/37] Update release notes for v25.4-v25.4.1 From 338d32f7bf3c7a164874df3b8c829732031ba5bd Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 15:27:10 +0000 Subject: [PATCH 17/37] Update release notes for v25.4-v25.4.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 b39c7aa0b60..63305099147 100644 --- a/src/current/_data/releases.yml +++ b/src/current/_data/releases.yml @@ -9960,7 +9960,7 @@ - release_name: v25.4.1 major_version: v25.4 - release_date: '2025-11-28' + release_date: '2025-12-02' release_type: Production go_version: go1.25.3 sha: 60d802bd0bcb2c1aa81a4b5fd73fb4aa13bb5114 From 0408d2a2f06582501b3dea074df73d42825edaa2 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 15:27:11 +0000 Subject: [PATCH 18/37] Update release notes for v25.4-v25.4.1 --- .../_includes/releases/v25.4/v25.4.1.md | 886 +++++++++--------- 1 file changed, 443 insertions(+), 443 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.1.md b/src/current/_includes/releases/v25.4/v25.4.1.md index ab8d147f8ae..15a002c8be2 100644 --- a/src/current/_includes/releases/v25.4/v25.4.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.1.md @@ -1,6 +1,6 @@ ## v25.4.1 -Release Date: November 28, 2025 +Release Date: December 2, 2025 {% include releases/new-release-downloads-docker-image.md release=include.release %} @@ -566,8 +566,8 @@ The following cases are not supported: Jitter will now be disabled in this case. Fixes: #143436 [#144304][#144304] -- Fixed a bug that prevented variable references using ordinal syntax (like `$1`) from reflecting updates to the variable. Referencing variables declared in PL/pgSQL blocks (instead of parameters) via ordinal syntax is now disallowed. The bug had existed since v24.1. [#144347][#144347] - Fixed a bug that could cause PL/pgSQL `FOR` loops to terminate early or show incorrect values for the counter variable. The bug had existed since v24.3, and occurred when two or more `FOR` loops were nested within one another. [#144347][#144347] +- Fixed a bug that prevented variable references using ordinal syntax (like `$1`) from reflecting updates to the variable. Referencing variables declared in PL/pgSQL blocks (instead of parameters) via ordinal syntax is now disallowed. The bug had existed since v24.1. [#144347][#144347] - Fixed a bug that could cause queries that perform work in parallel to ignore the requested quality-of-service level. Affected operations include lookup joins, DistSQL execution, and foreign-key checks. [#144427][#144427] - Fixed a bug in the **SQL Activity Statements** page where filtering by **Statement Type** returned no results. The filter now works as expected. [#144517][#144517] - Fixed a bug in the DB Console where tables with page size dropdowns failed to update when a new page size option was selected. Tables now update correctly. [#144556][#144556] @@ -867,483 +867,483 @@ The following cases are not supported: destination after failover from a PCR stream of a system virtual cluster. [#156812][#156812] -[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 -[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 -[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 -[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 -[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 -[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 -[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 -[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 -[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 -[#145236]: https://github.com/cockroachdb/cockroach/pull/145236 -[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 -[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 -[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 +[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 +[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 +[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 [#148753]: https://github.com/cockroachdb/cockroach/pull/148753 -[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 -[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 -[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 -[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 -[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 [#151066]: https://github.com/cockroachdb/cockroach/pull/151066 -[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 -[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 -[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 -[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 -[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 +[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 +[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 +[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 +[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 +[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 +[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 +[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 +[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 +[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 +[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 [#149415]: https://github.com/cockroachdb/cockroach/pull/149415 -[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 -[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 -[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 -[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 -[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 -[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 +[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 +[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 +[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 +[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 +[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 +[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 +[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 +[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 +[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 +[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 +[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 [#143451]: https://github.com/cockroachdb/cockroach/pull/143451 -[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 -[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 -[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 -[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 -[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 -[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 -[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 +[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 [#144091]: https://github.com/cockroachdb/cockroach/pull/144091 -[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 -[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 -[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 -[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 -[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 -[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 -[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 -[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 -[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 -[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 -[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 -[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 -[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 -[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 -[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 -[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 -[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 -[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 -[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 -[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 -[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 -[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 -[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 -[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 -[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 -[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 -[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 +[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 +[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 +[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 +[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 +[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 +[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 [#150321]: https://github.com/cockroachdb/cockroach/pull/150321 -[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 -[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 -[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 -[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 -[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 -[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 -[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 -[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 -[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 -[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 -[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 -[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 -[#142927]: https://github.com/cockroachdb/cockroach/pull/142927 -[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 -[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 -[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 -[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 -[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 -[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 -[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 -[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 -[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 -[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 -[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 -[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 +[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 +[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 +[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 [#156979]: https://github.com/cockroachdb/cockroach/pull/156979 -[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 -[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 -[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 -[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 -[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 -[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 -[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 -[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 -[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 -[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 -[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 -[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 -[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 -[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 -[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 -[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 -[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 -[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 -[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 -[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 -[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 -[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 -[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 -[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 -[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 -[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 -[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 -[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 -[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 -[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 +[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 +[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 +[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 +[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 +[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 +[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 [#150696]: https://github.com/cockroachdb/cockroach/pull/150696 -[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 -[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 -[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 +[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 +[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 +[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 +[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 +[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 +[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 +[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 +[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 +[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 +[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 +[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 +[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 [#148098]: https://github.com/cockroachdb/cockroach/pull/148098 -[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 -[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 -[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 -[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 +[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 +[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 +[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 +[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 +[#143097]: https://github.com/cockroachdb/cockroach/pull/143097 +[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 +[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 [#150283]: https://github.com/cockroachdb/cockroach/pull/150283 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 [#152746]: https://github.com/cockroachdb/cockroach/pull/152746 -[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 -[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 -[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 -[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 -[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 -[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 -[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 -[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 -[#145391]: https://github.com/cockroachdb/cockroach/pull/145391 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 -[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 -[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 -[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 -[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 -[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 -[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 -[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 -[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 -[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 -[#144536]: https://github.com/cockroachdb/cockroach/pull/144536 +[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 +[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 +[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 +[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 +[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 +[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 +[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 +[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 +[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 +[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 +[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 +[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 +[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 +[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 +[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 +[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 +[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 +[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 +[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 +[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 +[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 +[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 +[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 +[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 [#142768]: https://github.com/cockroachdb/cockroach/pull/142768 +[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 +[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 +[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 +[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 +[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 [#152745]: https://github.com/cockroachdb/cockroach/pull/152745 [#156779]: https://github.com/cockroachdb/cockroach/pull/156779 -[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 -[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 -[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 +[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 +[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 +[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 +[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 +[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 +[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 +[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 +[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 +[#144536]: https://github.com/cockroachdb/cockroach/pull/144536 +[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 +[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 +[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 +[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 +[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 +[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 +[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 +[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 +[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 +[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 +[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 +[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 +[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 +[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 +[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 +[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 +[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 +[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 +[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 +[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 +[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 +[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 +[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 +[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 +[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 +[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 +[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 +[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 +[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 +[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 +[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 +[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 +[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 +[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 +[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 +[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 +[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 [#153491]: https://github.com/cockroachdb/cockroach/pull/153491 +[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 +[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 +[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 +[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 +[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 +[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 +[#155927]: https://github.com/cockroachdb/cockroach/pull/155927 +[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 +[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 +[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 +[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 +[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 [#148859]: https://github.com/cockroachdb/cockroach/pull/148859 +[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 +[#142927]: https://github.com/cockroachdb/cockroach/pull/142927 +[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 +[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 +[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 +[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 [#150926]: https://github.com/cockroachdb/cockroach/pull/150926 -[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 -[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 -[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 -[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 -[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 -[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 -[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 -[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 -[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 -[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 -[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 -[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 -[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 -[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 -[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 -[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 -[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 -[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 -[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 -[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 -[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 -[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 -[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 -[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 -[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 -[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 -[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 -[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 -[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 -[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 -[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 +[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 +[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 +[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 +[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 +[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 +[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 +[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 +[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 +[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 +[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 +[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 [#147439]: https://github.com/cockroachdb/cockroach/pull/147439 -[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 -[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 -[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 -[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 [#145344]: https://github.com/cockroachdb/cockroach/pull/145344 -[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 -[#155927]: https://github.com/cockroachdb/cockroach/pull/155927 -[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 -[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 -[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 -[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 -[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 -[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 -[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 -[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 -[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 +[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 +[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 [#147452]: https://github.com/cockroachdb/cockroach/pull/147452 -[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 -[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 -[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 -[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 -[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 -[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 -[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 -[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 -[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 -[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 -[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 -[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 -[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 -[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 -[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 -[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 -[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 -[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 -[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 -[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 -[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 -[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 -[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 -[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 -[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 -[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 -[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 -[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 -[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 -[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 -[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 [#154915]: https://github.com/cockroachdb/cockroach/pull/154915 -[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 -[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 -[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 -[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 -[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 -[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 -[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 -[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 -[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 -[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 -[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 -[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 -[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 -[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 -[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 -[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 -[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 -[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 -[#157037]: https://github.com/cockroachdb/cockroach/pull/157037 -[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 -[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 -[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 -[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 -[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 -[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 -[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 -[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 -[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 -[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 -[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 -[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 -[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 -[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 -[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 -[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 -[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 -[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 -[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 -[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 -[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 -[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 -[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 -[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 -[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 -[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 -[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 -[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 -[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 -[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 -[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 -[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 -[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 +[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 +[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 +[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 +[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 +[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 +[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 +[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 +[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 +[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 +[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 +[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 +[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 +[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 +[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 +[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 +[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 [#142241]: https://github.com/cockroachdb/cockroach/pull/142241 -[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 -[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 -[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 -[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 -[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 -[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 -[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 -[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 -[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 -[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 +[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 +[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 +[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 [#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 -[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 -[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 -[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 -[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 -[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 -[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 -[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 -[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 -[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 -[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 -[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 -[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 -[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 -[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 -[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 -[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 -[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 -[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 -[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 -[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 -[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 -[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 -[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 -[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 -[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 -[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#143097]: https://github.com/cockroachdb/cockroach/pull/143097 +[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 +[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 +[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 [#113649]: https://github.com/cockroachdb/cockroach/pull/113649 -[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 -[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 -[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 -[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 +[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 +[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 +[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 +[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 +[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 +[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 +[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 +[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 +[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 +[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 +[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 +[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 +[#157037]: https://github.com/cockroachdb/cockroach/pull/157037 +[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 +[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 +[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 [#147728]: https://github.com/cockroachdb/cockroach/pull/147728 -[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 -[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 -[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 -[#153724]: https://github.com/cockroachdb/cockroach/pull/153724 +[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 +[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 +[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 +[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 +[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 +[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 +[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 +[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 +[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 +[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 +[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 +[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 +[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 +[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 +[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 +[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 +[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 +[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 +[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 +[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 [#143028]: https://github.com/cockroachdb/cockroach/pull/143028 -[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 -[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 -[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 -[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 -[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 +[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 +[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 +[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 +[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 +[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 +[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 +[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 +[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 +[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 +[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 +[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 +[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 +[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 +[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 +[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 +[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 +[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 +[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 +[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 +[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 +[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 +[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 +[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 +[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 +[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 +[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 +[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 +[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 +[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 +[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 +[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 +[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 +[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 +[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 +[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 +[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 [#149869]: https://github.com/cockroachdb/cockroach/pull/149869 -[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 -[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 -[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 -[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 +[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 +[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 +[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 +[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 +[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 +[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 +[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 +[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 +[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 +[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 +[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 +[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 +[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 +[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 +[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 [#143311]: https://github.com/cockroachdb/cockroach/pull/143311 -[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 -[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 -[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 +[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 +[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 +[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 +[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 +[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 [#149712]: https://github.com/cockroachdb/cockroach/pull/149712 -[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 -[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 +[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 +[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 [#143102]: https://github.com/cockroachdb/cockroach/pull/143102 -[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 -[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 -[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 -[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 -[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 -[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 -[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 -[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 -[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 -[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 -[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 -[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 -[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 +[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 +[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 +[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 +[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 +[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 +[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 [#145158]: https://github.com/cockroachdb/cockroach/pull/145158 -[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 +[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 +[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 +[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 +[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 +[#145391]: https://github.com/cockroachdb/cockroach/pull/145391 +[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 +[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 +[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 +[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 [#144415]: https://github.com/cockroachdb/cockroach/pull/144415 -[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 -[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 -[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 -[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 -[#144658]: https://github.com/cockroachdb/cockroach/pull/144658 -[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 -[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 -[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 -[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 -[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 -[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 +[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 +[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 [#152353]: https://github.com/cockroachdb/cockroach/pull/152353 -[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 +[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 +[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 +[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 +[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 +[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 +[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 +[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 +[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 [#146448]: https://github.com/cockroachdb/cockroach/pull/146448 -[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 +[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 +[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 +[#145236]: https://github.com/cockroachdb/cockroach/pull/145236 +[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 +[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 +[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 +[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 +[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 +[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 +[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 +[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 +[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 +[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 +[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 +[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 +[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 +[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 +[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 +[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 +[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 [#144643]: https://github.com/cockroachdb/cockroach/pull/144643 -[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 -[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 +[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 +[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 +[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 [#156812]: https://github.com/cockroachdb/cockroach/pull/156812 -[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 -[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 -[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 -[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 -[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 -[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 -[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 -[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 -[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 -[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 -[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 +[#144658]: https://github.com/cockroachdb/cockroach/pull/144658 +[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 +[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 +[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 +[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 +[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 +[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 +[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 +[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 +[#153724]: https://github.com/cockroachdb/cockroach/pull/153724 +[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 +[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 +[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 +[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 +[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 +[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 +[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 +[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 +[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 +[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 +[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 [#144027]: https://github.com/cockroachdb/cockroach/pull/144027 -[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 -[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 +[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 +[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 +[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 +[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 +[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 +[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 +[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 +[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 +[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 +[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 +[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 +[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 +[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 +[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 +[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 +[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 +[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 +[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 +[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 +[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 +[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 +[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 +[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 +[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 +[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 +[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 +[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 +[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 +[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 +[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 +[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 +[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 +[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 +[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 +[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 [#143124]: https://github.com/cockroachdb/cockroach/pull/143124 -[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 -[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 -[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 -[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 -[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 -[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 -[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 -[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 -[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 -[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 -[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 -[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 +[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 +[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 +[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 +[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 +[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 +[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 +[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 +[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 [#148540]: https://github.com/cockroachdb/cockroach/pull/148540 -[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 -[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 -[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 -[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 -[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 -[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 -[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 -[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 -[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 -[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 -[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 -[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 -[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 -[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 -[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 -[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 +[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 +[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 +[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 +[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 +[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 +[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 +[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 +[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 From 49facfb1739a8acd4c0400cb8500bdc087b68980 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 15:53:05 +0000 Subject: [PATCH 19/37] Update release notes for v25.4-v25.4.1 From 2f9318f0e2bc222579161f407c90ba26c07fedb8 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 15:53:06 +0000 Subject: [PATCH 20/37] Update release notes for v25.4-v25.4.1 From b0f5e6149199b1a15759cd475f55f01f50fd92c1 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 15:53:06 +0000 Subject: [PATCH 21/37] Update release notes for v25.4-v25.4.1 --- .../_includes/releases/v25.4/v25.4.1.md | 918 +++++++++--------- 1 file changed, 459 insertions(+), 459 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.1.md b/src/current/_includes/releases/v25.4/v25.4.1.md index 15a002c8be2..41ea8773caf 100644 --- a/src/current/_includes/releases/v25.4/v25.4.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.1.md @@ -166,27 +166,27 @@ Release Date: December 2, 2025 - The owner of a database can now set default session variables per database using the `ALTER ROLE ALL IN DATABASE ... SET` or `ALTER DATABASE ... SET` commands. [#130547][#130547] - Added the `ST_3DLength` function, which returns the 3D or 2D length of `LINESTRING` and `MULTILINESTRING` spatial types. [#139450][#139450] - `format()` no longer requires all post-format string arguments to have the same type. [#141193][#141193] +- `concat()` no longer requires all arguments have the same type. [#141193][#141193] - `concat_ws()` now accepts arguments of any type in the second and later positions (the separator must still be a string). [#141193][#141193] +- `pg_column_size()` no longer requires that all arguments have the same type. [#141193][#141193] - `num_nulls()` and `num_nonnulls()` no longer require all arguments to have the same type. [#141193][#141193] - `json_build_object()`, `jsonb_build_object()`, `json_build_array()`, and `jsonb_build_array()` no longer require that all arguments have the same type. [#141193][#141193] -- `pg_column_size()` no longer requires that all arguments have the same type. [#141193][#141193] -- `concat()` no longer requires all arguments have the same type. [#141193][#141193] -- Array unions are now supported in JSONPath queries. For example, `$.a[1, 2 to 4, 7, 8]`. [#142241][#142241] +- Double-quoted key accessors are now supported in JSONPath queries. For example, `SELECT '$."1key"."key2"'::JSONPATH;`. [#142241][#142241] - Array integer indexing is now supported in JSONPath queries. For example, `$.a[1]`. [#142241][#142241] - Array ranges are now supported in JSONPath queries. For example, `$.a[1 to 3]`). [#142241][#142241] -- Double-quoted key accessors are now supported in JSONPath queries. For example, `SELECT '$."1key"."key2"'::JSONPATH;`. [#142241][#142241] +- Array unions are now supported in JSONPath queries. For example, `$.a[1, 2 to 4, 7, 8]`. [#142241][#142241] - Fixed a regression due to join-elimination rules that prevented other optimization rules from applying. [#142252][#142252] - Statements such as `REFRESH MATERIALIZED VIEW` and `CREATE MATERIALIZED VIEW` can now be executed with an `AS OF SYSTEM TIME` clause. These statements can still not be used in an explicit transaction. [#142259][#142259] - Add the `jsonb_path_query` function, which takes in a JSON object and a JSONPath query and returns the resulting JSON object. [#142336][#142336] - Added the `ALTER VIRTUAL CLUSTER .. SET REPLICATION SOURCE` command so users can configure producer jobs on the source cluster. Currently, users can only configure the `EXPIRATION WINDOW`. Also, removed the `EXPIRATION WINDOW` option from the consumer side command of `ALTER VIRTUAL CLUSTER SET REPLICATION`. [#142501][#142501] - `EXPLAIN ANALYZE` statements now display the number of transaction retries and time spent retrying, if non-zero, in the plan output. [#142692][#142692] - Users can now begin logical data replication (LDR) on an existing table if the user has a table-level `REPLICATIONDEST` privilege. Furthermore, users can now begin LDR onto an automatically created table if the user has the parent database level `CREATE` privilege. Finally, during bidirectional LDR, the user in the original source URI, who will begin the reverse LDR stream, to authorize via this table-level `REPLICATIONDEST` privilege. [#142840][#142840] -- Comparison operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', 1 < 2)`. [#142899][#142899] - Logical operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '1 < 2 && 3 >= 2')`. [#142899][#142899] +- Comparison operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', 1 < 2)`. [#142899][#142899] - It is now possible to automatically collect partial table statistics, but disable automatic collection of full table statistics. The new cluster and table settings to enable/disable automatic collection of full table statistics (without affecting the settings for partial stats) are `sql.stats.automatic_full_collection.enabled` and `sql_stats_automatic_full_collection_enabled`, respectively. The settings default to `true`. [#142924][#142924] - The return type of the `workload_index_recs` built-in function now includes two columns. The first column, `index_rec`, remains a `STRING` type and contains the index recommendation. The second column, `fingerprint_ids`, is new and has the `BYTES[]` type. [#142927][#142927] -- Implemented various `power()` and `^` edge cases to match PostgreSQL behaviour. Some expressions that previously returned `NaN` now return specific numbers; some expressions that previously returned `Infinity` or `NaN` now return errors; and some expressions with infinite exponents now return different results. [#142932][#142932] - Update edge cases in the `width_bucket()` function to return `count + 1` for a positive infinity operand, and `0` for a negative infinity operand, instead of an error. [#142932][#142932] +- Implemented various `power()` and `^` edge cases to match PostgreSQL behaviour. Some expressions that previously returned `NaN` now return specific numbers; some expressions that previously returned `Infinity` or `NaN` now return errors; and some expressions with infinite exponents now return different results. [#142932][#142932] - Added the `jsonb_path_exists` function, which accepts a JSON object and JSONPath query and returns whether the query returned any items. [#143028][#143028] - Filters are now supported in JSONPath queries, using the format `$ ? (predicate)`. This allows results to be filtered. For example, `SELECT jsonb_path_query('{"a": [1,2,3]}', '$.a ? (1 == 1)');`. [#143097][#143097] - Addition, subtraction, multiplication, division, and modulo operators are now supported in JSONPath queries. [#143210][#143210] @@ -207,9 +207,9 @@ Release Date: December 2, 2025 - Usage of `TG_ARGV` in trigger functions is now disallowed by default. The session setting `allow_create_trigger_function_with_argv_references` can be set to `true` to allow usage (with 1-based indexing). [#143827][#143827] - A new `execution time` statistic is now reported on `EXPLAIN ANALYZE` output for most operators. Previously, this statistic was only available on the DistSQL diagrams in `EXPLAIN ANALYZE (DISTSQL)` output. [#143857][#143857] - Added a new session variable `create_table_with_schema_locked`, which can be used to ensure all tables created by a session have the storage parameter `schema_locked` set. [#143892][#143892] -- Added the `jsonb_path_match` function, which returns the result of a predicate query. [#144006][#144006] - Added the `jsonb_path_query_first` function, which returns the first result from `jsonb_path_query`. [#144006][#144006] - Added the `jsonb_path_query_array` function, which returns the result of `jsonb_path_query` wrapped in a JSON array. [#144006][#144006] +- Added the `jsonb_path_match` function, which returns the result of a predicate query. [#144006][#144006] - The following syntax is now supported: `GRANT ... ON ALL ROUTINES IN SCHEMA ...`; `REVOKE ... ON ALL ROUTINES IN SCHEMA ...`; `ALTER DEFAULT PRIVILEGES GRANT ... ON ROUTINES ...`; `ALTER DEFAULT PRIVIELGES REVOKE ... ON ROUTINES ...`. The `ROUTINES` keyword makes the command apply to both functions and stored procedures. Note that `ALTER DEFAULT PRIVILEGES ... ON FUNCTIONS` already applied to stored procedures (which aligns with the PostgreSQL behavior), and that is not changing. [#144189][#144189] - Parenthesized expressions are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{"a": {"b": true}}', '($.a).b');` [#144245][#144245] - The `.size()` method is now supported in JSONPath expressions. For example, `SELECT jsonb_path_query('[1, 2, 3]', '$.size()');`. [#144266][#144266] @@ -233,8 +233,8 @@ Release Date: December 2, 2025 - In the `crdb_internal.cluster_execution_insights` and `crdb_internal.node_execution_insights` virtual tables in a new `query_tags` JSONB column. This feature is disabled by default and can be enabled using the `sql.sqlcommenter.enabled` cluster setting. Comments must follow the [SQLCommenter specification](https://google.github.io/sqlcommenter/spec/). [#145435][#145435] - Fixed a bug that caused a routine with an `INSERT` statement to unnecessarily block dropping a hash-sharded index or computed column on the target table. This fix applies only to newly created routines. In releases prior to v25.3, the fix must be enabled by setting the session variable `use_improved_routine_dependency_tracking` to `on`. [#146250][#146250] -- `~~*` and `!~~*` are now supported aliases for `ILIKE` and `NOT ILIKE`. [#146764][#146764] - `~~` and `!~~` are now supported aliases for `LIKE` and `NOT LIKE`. [#146764][#146764] +- `~~*` and `!~~*` are now supported aliases for `ILIKE` and `NOT ILIKE`. [#146764][#146764] - Added a session variable `initial_retry_backoff_for_read_committed` that controls the initial backoff duration when retrying an individual statement in an explicit `READ COMMITTED` transaction. A duration of `0` disables exponential backoff. If a statement in an explicit `READ COMMITTED` transaction is failing with the `40001` error `ERROR: restart transaction: read committed retry limit exceeded; set by max_retries_for_read_committed=...`, then you should set `initial_retry_backoff_for_read_committed` to a duration proportional to the typical execution time of the statement (in addition to also increasing `max_retries_for_read_committed`). [#146860][#146860] - Deterministic collations are now supported with `LIKE`. A deterministic collation considers strings to be equal only if they consist of the same byte sequence. [#147045][#147045] - The `information_schema.triggers` table is now populated with trigger metadata. Users can query this table to see all triggers defined in their database, including the trigger name, timing (`BEFORE`/`AFTER`), event type (`INSERT`/`UPDATE`/`DELETE`), and associated function. Each trigger event appears as a separate row in the table. [#147237][#147237] @@ -242,8 +242,8 @@ This feature is disabled by default and can be enabled using the `sql.sqlcomment - Directionality may no longer be assigned to any vector index column. Prefix columns are not scannable in a vector index, so directionality is not relevant to them. [#147307][#147307] - Added the `SHOW CREATE ALL ROUTINES` statement, which can be used to show `CREATE` statements for all user-defined functions (UDFs) and procedures in the current database. [#147452][#147452] - Added the metrics `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count`, which count the number of automatic retries of SQL transactions and statements, respectively, within the database. These metrics differ from the related `txn.restarts.*` metrics, which count retryable errors emitted by the KV layer that must be retried. The new `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count` metrics count auto-retry actions taken by the SQL layer in response to some of those retryable errors. [#147682][#147682] -- Partial indexes can now reference user-defined functions. [#147817][#147817] - Computed column expressions and `ON UPDATE` expressions can now reference user-defined functions. [#147817][#147817] +- Partial indexes can now reference user-defined functions. [#147817][#147817] - Added the `SHOW CREATE ALL TRIGGERS` statement. [#147836][#147836] - The `CITEXT` data type is now supported, enabling case-insensitive comparisons for `CITEXT` columns. Internally, `CITEXT` is equivalent to using the undetermined level 2 collation `und-u-ks-level2`. For example, under `CITEXT`, the expression `'test' = 'TEST'` returns `TRUE`. [#147864][#147864] - Increased the default value for the `max_retries_for_read_committed` session variable from `10` to `100`. Testing has shown that some high-contention workloads running under `READ COMMITTED` isolation benefit from more statement retries. [#147869][#147869] @@ -357,21 +357,21 @@ 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) [#154631][#154631] - The optimizer can now use table statistics that merge the latest full statistic with all newer partial statistics, including those over arbitrary constraints over a single span. [#154755][#154755] -- 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. [#155123][#155123] - 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. [#155123][#155123] +- 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. [#155123][#155123] - Added the `INSPECT` command, which runs consistency validation check jobs against tables or databases and specified indexes. [#155441][#155441] - 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`. [#155509][#155509] - Vector indexing is now enabled by default. `feature.vector_index.enabled` defaults to `true`. [#155561][#155561] -- Added sql.statements.bytes_read.count metric that - counts the number of bytes scanned by SQL statements. [#156459][#156459] - Added sql.statements.index_bytes_written.count metric that counts the number of primary and secondary index bytes modified by SQL statements. [#156459][#156459] -- Added sql.statements.rows_read.count metric - that counts the number of index rows read by SQL statements. [#156459][#156459] +- Added sql.statements.bytes_read.count metric that + counts the number of bytes scanned by SQL statements. [#156459][#156459] - Added sql.statements.index_rows_written.count metric that counts the number of primary and secondary index rows modified by SQL statements. [#156459][#156459] +- Added sql.statements.rows_read.count metric + that counts the number of index rows read by SQL statements. [#156459][#156459] - CockroachDB now supports index accelerating `jsonb_path_exists` filters with JSONpath expressions that end with an AnyKey (`*`). [#156508][#156508]

Operational changes

@@ -867,483 +867,483 @@ The following cases are not supported: destination after failover from a PCR stream of a system virtual cluster. [#156812][#156812] +[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 +[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 [#156286]: https://github.com/cockroachdb/cockroach/pull/156286 -[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 -[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 -[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 -[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 -[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 -[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 +[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 +[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 +[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 +[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 +[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 +[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 +[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 +[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 +[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 +[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 +[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 +[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 +[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 +[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 +[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 +[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 +[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 +[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 +[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 +[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 +[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 +[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 +[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 +[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 +[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 +[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 +[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 +[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 +[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 +[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 +[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 +[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 +[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 +[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 +[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 +[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 +[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 +[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 +[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 +[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 +[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 +[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 +[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 +[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 +[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 [#151186]: https://github.com/cockroachdb/cockroach/pull/151186 -[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 +[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 +[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 +[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 +[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 +[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 +[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 +[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 [#143820]: https://github.com/cockroachdb/cockroach/pull/143820 -[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 -[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 -[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 -[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 -[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 -[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 -[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 -[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 -[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 -[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 -[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 +[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 +[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 +[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 +[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 +[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 [#149153]: https://github.com/cockroachdb/cockroach/pull/149153 -[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 -[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 -[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 -[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 -[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 -[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 -[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 -[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 -[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 -[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 -[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 -[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 -[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 -[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 -[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 -[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 -[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 -[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 -[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 -[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 -[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 -[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 +[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 +[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 +[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 +[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 +[#157037]: https://github.com/cockroachdb/cockroach/pull/157037 +[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 +[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 +[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 +[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 [#143240]: https://github.com/cockroachdb/cockroach/pull/143240 -[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 -[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 -[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 -[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 -[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 -[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 -[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 -[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 -[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 +[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 +[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 +[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 +[#145236]: https://github.com/cockroachdb/cockroach/pull/145236 +[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 +[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 +[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 +[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 [#148537]: https://github.com/cockroachdb/cockroach/pull/148537 -[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 -[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 -[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 -[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 -[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 -[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 -[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 -[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 +[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 +[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 +[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 +[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 +[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 +[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 +[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 +[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 +[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 +[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 +[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 +[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 [#149463]: https://github.com/cockroachdb/cockroach/pull/149463 -[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 -[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 +[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 +[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 +[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 +[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 +[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 +[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 +[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 +[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 +[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 +[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 +[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 +[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 +[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 +[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 +[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 +[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 +[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 +[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 +[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 +[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 +[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 +[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 +[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 +[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 +[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 +[#155927]: https://github.com/cockroachdb/cockroach/pull/155927 +[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 +[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 +[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 [#152193]: https://github.com/cockroachdb/cockroach/pull/152193 -[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 -[#143097]: https://github.com/cockroachdb/cockroach/pull/143097 -[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 -[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 -[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 -[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 +[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 +[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 +[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 [#144533]: https://github.com/cockroachdb/cockroach/pull/144533 -[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 -[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 -[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 -[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 -[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 -[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 -[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 -[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 -[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 -[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 -[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 -[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 -[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 -[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 -[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 -[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 -[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 -[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 -[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 -[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 -[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 -[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 -[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 -[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 -[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 -[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 -[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 -[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 -[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 -[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 -[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 -[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 +[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 +[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 +[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 [#143510]: https://github.com/cockroachdb/cockroach/pull/143510 +[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 +[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 +[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 +[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 +[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 +[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 +[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 +[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 +[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 +[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 +[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 +[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 +[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 +[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 +[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 +[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 +[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 +[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 +[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 +[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 +[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 +[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 +[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 +[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 +[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 +[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 +[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 +[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 +[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 +[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 +[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 +[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 +[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 +[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 +[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 +[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 +[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 +[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 +[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 +[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 +[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 +[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 +[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 +[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 +[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 +[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 +[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 +[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 +[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 +[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 +[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 +[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 +[#144643]: https://github.com/cockroachdb/cockroach/pull/144643 +[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 +[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 [#143711]: https://github.com/cockroachdb/cockroach/pull/143711 -[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 +[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 +[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 +[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 +[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 +[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 [#147357]: https://github.com/cockroachdb/cockroach/pull/147357 -[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 +[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 +[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 +[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 +[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 +[#143097]: https://github.com/cockroachdb/cockroach/pull/143097 +[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 +[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 +[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 +[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 +[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 +[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 +[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 +[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 +[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 +[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 +[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 [#145551]: https://github.com/cockroachdb/cockroach/pull/145551 -[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 +[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 +[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 +[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 +[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 +[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 +[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 +[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 +[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 +[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 +[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 +[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 +[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 +[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 +[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 +[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 +[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 +[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 +[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 [#153048]: https://github.com/cockroachdb/cockroach/pull/153048 -[#144536]: https://github.com/cockroachdb/cockroach/pull/144536 -[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 +[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 +[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 +[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 +[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 +[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 [#142760]: https://github.com/cockroachdb/cockroach/pull/142760 -[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 +[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 +[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 +[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 +[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 +[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 +[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 +[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 +[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 +[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 +[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 [#144567]: https://github.com/cockroachdb/cockroach/pull/144567 -[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 -[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 -[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 -[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 -[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 -[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 -[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 -[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 -[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 -[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 -[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 -[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 -[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 -[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 -[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 -[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 -[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 -[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 -[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 -[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 -[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 -[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 -[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 -[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 -[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 -[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 -[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 -[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 -[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 -[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 -[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 -[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 -[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 -[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 -[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 -[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 -[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 -[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 +[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 +[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 +[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 [#151691]: https://github.com/cockroachdb/cockroach/pull/151691 -[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 -[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 -[#155927]: https://github.com/cockroachdb/cockroach/pull/155927 -[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 -[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 -[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 -[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 -[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 -[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 -[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 -[#142927]: https://github.com/cockroachdb/cockroach/pull/142927 +[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 [#143667]: https://github.com/cockroachdb/cockroach/pull/143667 -[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 -[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 -[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 -[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 -[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 -[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 -[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 -[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 -[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 -[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 -[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 -[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 -[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 -[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 -[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 -[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 -[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 -[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 -[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 -[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 -[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 -[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 -[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 -[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 -[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 -[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 -[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 -[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 -[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 -[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 -[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 -[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 -[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 -[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 -[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 -[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 -[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 -[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 -[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 -[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 +[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 [#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 -[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 -[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 -[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 -[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 -[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 -[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 -[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 -[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 -[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 -[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 -[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 -[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 -[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 -[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 -[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 -[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 -[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 -[#157037]: https://github.com/cockroachdb/cockroach/pull/157037 -[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 -[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 -[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 -[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 -[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 -[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 -[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 -[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 -[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 -[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 -[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 -[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 -[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 -[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 -[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 -[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 -[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 -[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 -[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 -[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 -[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 +[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 +[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 +[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 +[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 +[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 +[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 +[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 +[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 +[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 [#144101]: https://github.com/cockroachdb/cockroach/pull/144101 -[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 -[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 -[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 +[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 +[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 +[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 +[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 +[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 +[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 +[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 +[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 +[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 +[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 +[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 +[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 +[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 +[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 +[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 [#153381]: https://github.com/cockroachdb/cockroach/pull/153381 -[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 -[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 -[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 -[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 -[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 +[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 +[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 [#143892]: https://github.com/cockroachdb/cockroach/pull/143892 -[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 -[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 -[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 -[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 -[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 -[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 -[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 -[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 -[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 -[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 -[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 -[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 -[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 -[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 -[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 -[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 -[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 -[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 -[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 -[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 -[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 -[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 +[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 [#143927]: https://github.com/cockroachdb/cockroach/pull/143927 -[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 -[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 -[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 -[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 -[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 -[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 -[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 -[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 -[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 -[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 -[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 -[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 -[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 -[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 -[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 -[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 -[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 -[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 -[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 -[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 -[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 -[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 -[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 -[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 -[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 -[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 -[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 -[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 -[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 -[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 -[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 -[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 -[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 -[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 -[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 -[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 -[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 -[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 -[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 -[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 -[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 -[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 -[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 -[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 -[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 +[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 +[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 +[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 +[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 +[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 +[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 +[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 +[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 +[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 +[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 +[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 +[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 +[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 +[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 +[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 +[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 +[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 +[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 +[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 [#145391]: https://github.com/cockroachdb/cockroach/pull/145391 -[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 +[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 +[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 +[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 +[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 +[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 +[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 +[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 +[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 +[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 +[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 +[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 +[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 +[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 +[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 +[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 +[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 +[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 +[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 +[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 +[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 +[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 +[#144658]: https://github.com/cockroachdb/cockroach/pull/144658 +[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 +[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 +[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 +[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 +[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 +[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 +[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 +[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 +[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 +[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 +[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 +[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 +[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 +[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 +[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 +[#144536]: https://github.com/cockroachdb/cockroach/pull/144536 +[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 +[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 [#155366]: https://github.com/cockroachdb/cockroach/pull/155366 -[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 -[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 -[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 +[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 +[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 +[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 [#145462]: https://github.com/cockroachdb/cockroach/pull/145462 -[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 +[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 +[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 [#151674]: https://github.com/cockroachdb/cockroach/pull/151674 +[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 [#142772]: https://github.com/cockroachdb/cockroach/pull/142772 -[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 -[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 -[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 -[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 -[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 -[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 -[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 -[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 -[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 -[#145236]: https://github.com/cockroachdb/cockroach/pull/145236 -[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 +[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 +[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 +[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 +[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 +[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 [#146213]: https://github.com/cockroachdb/cockroach/pull/146213 -[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 -[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 -[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 -[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 -[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 +[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 +[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 [#151949]: https://github.com/cockroachdb/cockroach/pull/151949 -[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 -[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 -[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 -[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 -[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 -[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 -[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 -[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 -[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 -[#144643]: https://github.com/cockroachdb/cockroach/pull/144643 -[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 -[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 -[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 -[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 -[#144658]: https://github.com/cockroachdb/cockroach/pull/144658 -[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 +[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 +[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 +[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 +[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 +[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 +[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 +[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 +[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 +[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 +[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 +[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 +[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 +[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 +[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 +[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 +[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 +[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 +[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 +[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 +[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 +[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 +[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 +[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 +[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 +[#142927]: https://github.com/cockroachdb/cockroach/pull/142927 +[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 +[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 +[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 +[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 [#146446]: https://github.com/cockroachdb/cockroach/pull/146446 -[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 -[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 -[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 -[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 -[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 -[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 +[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 +[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 +[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 +[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 +[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 +[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 +[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 +[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 +[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 +[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 +[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 +[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 +[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 [#153724]: https://github.com/cockroachdb/cockroach/pull/153724 -[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 -[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 -[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 -[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 -[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 -[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 +[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 +[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 +[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 +[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 +[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 +[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 [#149728]: https://github.com/cockroachdb/cockroach/pull/149728 -[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 -[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 -[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 -[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 -[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 -[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 -[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 -[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 -[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 -[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 -[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 -[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 -[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 -[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 -[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 -[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 -[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 -[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 -[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 -[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 -[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 -[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 -[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 -[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 -[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 -[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 -[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 -[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 -[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 -[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 -[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 -[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 -[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 [#148746]: https://github.com/cockroachdb/cockroach/pull/148746 -[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 -[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 -[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 -[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 -[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 -[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 -[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 -[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 -[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 -[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 -[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 -[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 -[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 -[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 -[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 -[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 +[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 +[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 +[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 +[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 +[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 +[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 +[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 +[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 +[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 +[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 +[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 +[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 +[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 +[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 +[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 +[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 +[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 +[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 +[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 +[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 +[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 [#150375]: https://github.com/cockroachdb/cockroach/pull/150375 -[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 -[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 -[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 -[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 -[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 -[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 -[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 +[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 +[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 From 369234fe534eae29301e4c829487dbf173c8df9d Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 15:58:34 +0000 Subject: [PATCH 22/37] Update release notes for v25.4-v25.4.1 From 7b5347411598c7219d28b1cf8fef3e89941c3422 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 15:58:35 +0000 Subject: [PATCH 23/37] Update release notes for v25.4-v25.4.1 From cacd1573ab424cd88bd2d7950442deda33abca31 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 15:58:36 +0000 Subject: [PATCH 24/37] Update release notes for v25.4-v25.4.1 --- .../_includes/releases/v25.4/v25.4.1.md | 908 +++++++++--------- 1 file changed, 454 insertions(+), 454 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.1.md b/src/current/_includes/releases/v25.4/v25.4.1.md index 41ea8773caf..29ca6e5dd6f 100644 --- a/src/current/_includes/releases/v25.4/v25.4.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.1.md @@ -166,27 +166,27 @@ Release Date: December 2, 2025 - The owner of a database can now set default session variables per database using the `ALTER ROLE ALL IN DATABASE ... SET` or `ALTER DATABASE ... SET` commands. [#130547][#130547] - Added the `ST_3DLength` function, which returns the 3D or 2D length of `LINESTRING` and `MULTILINESTRING` spatial types. [#139450][#139450] - `format()` no longer requires all post-format string arguments to have the same type. [#141193][#141193] -- `concat()` no longer requires all arguments have the same type. [#141193][#141193] - `concat_ws()` now accepts arguments of any type in the second and later positions (the separator must still be a string). [#141193][#141193] -- `pg_column_size()` no longer requires that all arguments have the same type. [#141193][#141193] - `num_nulls()` and `num_nonnulls()` no longer require all arguments to have the same type. [#141193][#141193] - `json_build_object()`, `jsonb_build_object()`, `json_build_array()`, and `jsonb_build_array()` no longer require that all arguments have the same type. [#141193][#141193] -- Double-quoted key accessors are now supported in JSONPath queries. For example, `SELECT '$."1key"."key2"'::JSONPATH;`. [#142241][#142241] +- `pg_column_size()` no longer requires that all arguments have the same type. [#141193][#141193] +- `concat()` no longer requires all arguments have the same type. [#141193][#141193] +- Array unions are now supported in JSONPath queries. For example, `$.a[1, 2 to 4, 7, 8]`. [#142241][#142241] - Array integer indexing is now supported in JSONPath queries. For example, `$.a[1]`. [#142241][#142241] - Array ranges are now supported in JSONPath queries. For example, `$.a[1 to 3]`). [#142241][#142241] -- Array unions are now supported in JSONPath queries. For example, `$.a[1, 2 to 4, 7, 8]`. [#142241][#142241] +- Double-quoted key accessors are now supported in JSONPath queries. For example, `SELECT '$."1key"."key2"'::JSONPATH;`. [#142241][#142241] - Fixed a regression due to join-elimination rules that prevented other optimization rules from applying. [#142252][#142252] - Statements such as `REFRESH MATERIALIZED VIEW` and `CREATE MATERIALIZED VIEW` can now be executed with an `AS OF SYSTEM TIME` clause. These statements can still not be used in an explicit transaction. [#142259][#142259] - Add the `jsonb_path_query` function, which takes in a JSON object and a JSONPath query and returns the resulting JSON object. [#142336][#142336] - Added the `ALTER VIRTUAL CLUSTER .. SET REPLICATION SOURCE` command so users can configure producer jobs on the source cluster. Currently, users can only configure the `EXPIRATION WINDOW`. Also, removed the `EXPIRATION WINDOW` option from the consumer side command of `ALTER VIRTUAL CLUSTER SET REPLICATION`. [#142501][#142501] - `EXPLAIN ANALYZE` statements now display the number of transaction retries and time spent retrying, if non-zero, in the plan output. [#142692][#142692] - Users can now begin logical data replication (LDR) on an existing table if the user has a table-level `REPLICATIONDEST` privilege. Furthermore, users can now begin LDR onto an automatically created table if the user has the parent database level `CREATE` privilege. Finally, during bidirectional LDR, the user in the original source URI, who will begin the reverse LDR stream, to authorize via this table-level `REPLICATIONDEST` privilege. [#142840][#142840] -- Logical operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '1 < 2 && 3 >= 2')`. [#142899][#142899] - Comparison operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', 1 < 2)`. [#142899][#142899] +- Logical operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '1 < 2 && 3 >= 2')`. [#142899][#142899] - It is now possible to automatically collect partial table statistics, but disable automatic collection of full table statistics. The new cluster and table settings to enable/disable automatic collection of full table statistics (without affecting the settings for partial stats) are `sql.stats.automatic_full_collection.enabled` and `sql_stats_automatic_full_collection_enabled`, respectively. The settings default to `true`. [#142924][#142924] - The return type of the `workload_index_recs` built-in function now includes two columns. The first column, `index_rec`, remains a `STRING` type and contains the index recommendation. The second column, `fingerprint_ids`, is new and has the `BYTES[]` type. [#142927][#142927] -- Update edge cases in the `width_bucket()` function to return `count + 1` for a positive infinity operand, and `0` for a negative infinity operand, instead of an error. [#142932][#142932] - Implemented various `power()` and `^` edge cases to match PostgreSQL behaviour. Some expressions that previously returned `NaN` now return specific numbers; some expressions that previously returned `Infinity` or `NaN` now return errors; and some expressions with infinite exponents now return different results. [#142932][#142932] +- Update edge cases in the `width_bucket()` function to return `count + 1` for a positive infinity operand, and `0` for a negative infinity operand, instead of an error. [#142932][#142932] - Added the `jsonb_path_exists` function, which accepts a JSON object and JSONPath query and returns whether the query returned any items. [#143028][#143028] - Filters are now supported in JSONPath queries, using the format `$ ? (predicate)`. This allows results to be filtered. For example, `SELECT jsonb_path_query('{"a": [1,2,3]}', '$.a ? (1 == 1)');`. [#143097][#143097] - Addition, subtraction, multiplication, division, and modulo operators are now supported in JSONPath queries. [#143210][#143210] @@ -207,9 +207,9 @@ Release Date: December 2, 2025 - Usage of `TG_ARGV` in trigger functions is now disallowed by default. The session setting `allow_create_trigger_function_with_argv_references` can be set to `true` to allow usage (with 1-based indexing). [#143827][#143827] - A new `execution time` statistic is now reported on `EXPLAIN ANALYZE` output for most operators. Previously, this statistic was only available on the DistSQL diagrams in `EXPLAIN ANALYZE (DISTSQL)` output. [#143857][#143857] - Added a new session variable `create_table_with_schema_locked`, which can be used to ensure all tables created by a session have the storage parameter `schema_locked` set. [#143892][#143892] +- Added the `jsonb_path_match` function, which returns the result of a predicate query. [#144006][#144006] - Added the `jsonb_path_query_first` function, which returns the first result from `jsonb_path_query`. [#144006][#144006] - Added the `jsonb_path_query_array` function, which returns the result of `jsonb_path_query` wrapped in a JSON array. [#144006][#144006] -- Added the `jsonb_path_match` function, which returns the result of a predicate query. [#144006][#144006] - The following syntax is now supported: `GRANT ... ON ALL ROUTINES IN SCHEMA ...`; `REVOKE ... ON ALL ROUTINES IN SCHEMA ...`; `ALTER DEFAULT PRIVILEGES GRANT ... ON ROUTINES ...`; `ALTER DEFAULT PRIVIELGES REVOKE ... ON ROUTINES ...`. The `ROUTINES` keyword makes the command apply to both functions and stored procedures. Note that `ALTER DEFAULT PRIVILEGES ... ON FUNCTIONS` already applied to stored procedures (which aligns with the PostgreSQL behavior), and that is not changing. [#144189][#144189] - Parenthesized expressions are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{"a": {"b": true}}', '($.a).b');` [#144245][#144245] - The `.size()` method is now supported in JSONPath expressions. For example, `SELECT jsonb_path_query('[1, 2, 3]', '$.size()');`. [#144266][#144266] @@ -233,8 +233,8 @@ Release Date: December 2, 2025 - In the `crdb_internal.cluster_execution_insights` and `crdb_internal.node_execution_insights` virtual tables in a new `query_tags` JSONB column. This feature is disabled by default and can be enabled using the `sql.sqlcommenter.enabled` cluster setting. Comments must follow the [SQLCommenter specification](https://google.github.io/sqlcommenter/spec/). [#145435][#145435] - Fixed a bug that caused a routine with an `INSERT` statement to unnecessarily block dropping a hash-sharded index or computed column on the target table. This fix applies only to newly created routines. In releases prior to v25.3, the fix must be enabled by setting the session variable `use_improved_routine_dependency_tracking` to `on`. [#146250][#146250] -- `~~` and `!~~` are now supported aliases for `LIKE` and `NOT LIKE`. [#146764][#146764] - `~~*` and `!~~*` are now supported aliases for `ILIKE` and `NOT ILIKE`. [#146764][#146764] +- `~~` and `!~~` are now supported aliases for `LIKE` and `NOT LIKE`. [#146764][#146764] - Added a session variable `initial_retry_backoff_for_read_committed` that controls the initial backoff duration when retrying an individual statement in an explicit `READ COMMITTED` transaction. A duration of `0` disables exponential backoff. If a statement in an explicit `READ COMMITTED` transaction is failing with the `40001` error `ERROR: restart transaction: read committed retry limit exceeded; set by max_retries_for_read_committed=...`, then you should set `initial_retry_backoff_for_read_committed` to a duration proportional to the typical execution time of the statement (in addition to also increasing `max_retries_for_read_committed`). [#146860][#146860] - Deterministic collations are now supported with `LIKE`. A deterministic collation considers strings to be equal only if they consist of the same byte sequence. [#147045][#147045] - The `information_schema.triggers` table is now populated with trigger metadata. Users can query this table to see all triggers defined in their database, including the trigger name, timing (`BEFORE`/`AFTER`), event type (`INSERT`/`UPDATE`/`DELETE`), and associated function. Each trigger event appears as a separate row in the table. [#147237][#147237] @@ -242,8 +242,8 @@ This feature is disabled by default and can be enabled using the `sql.sqlcomment - Directionality may no longer be assigned to any vector index column. Prefix columns are not scannable in a vector index, so directionality is not relevant to them. [#147307][#147307] - Added the `SHOW CREATE ALL ROUTINES` statement, which can be used to show `CREATE` statements for all user-defined functions (UDFs) and procedures in the current database. [#147452][#147452] - Added the metrics `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count`, which count the number of automatic retries of SQL transactions and statements, respectively, within the database. These metrics differ from the related `txn.restarts.*` metrics, which count retryable errors emitted by the KV layer that must be retried. The new `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count` metrics count auto-retry actions taken by the SQL layer in response to some of those retryable errors. [#147682][#147682] -- Computed column expressions and `ON UPDATE` expressions can now reference user-defined functions. [#147817][#147817] - Partial indexes can now reference user-defined functions. [#147817][#147817] +- Computed column expressions and `ON UPDATE` expressions can now reference user-defined functions. [#147817][#147817] - Added the `SHOW CREATE ALL TRIGGERS` statement. [#147836][#147836] - The `CITEXT` data type is now supported, enabling case-insensitive comparisons for `CITEXT` columns. Internally, `CITEXT` is equivalent to using the undetermined level 2 collation `und-u-ks-level2`. For example, under `CITEXT`, the expression `'test' = 'TEST'` returns `TRUE`. [#147864][#147864] - Increased the default value for the `max_retries_for_read_committed` session variable from `10` to `100`. Testing has shown that some high-contention workloads running under `READ COMMITTED` isolation benefit from more statement retries. [#147869][#147869] @@ -357,21 +357,21 @@ 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) [#154631][#154631] - The optimizer can now use table statistics that merge the latest full statistic with all newer partial statistics, including those over arbitrary constraints over a single span. [#154755][#154755] -- 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. [#155123][#155123] - 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. [#155123][#155123] +- 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. [#155123][#155123] - Added the `INSPECT` command, which runs consistency validation check jobs against tables or databases and specified indexes. [#155441][#155441] - 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`. [#155509][#155509] - Vector indexing is now enabled by default. `feature.vector_index.enabled` defaults to `true`. [#155561][#155561] +- Added sql.statements.bytes_read.count metric that + counts the number of bytes scanned by SQL statements. [#156459][#156459] - Added sql.statements.index_bytes_written.count metric that counts the number of primary and secondary index bytes modified by SQL statements. [#156459][#156459] -- Added sql.statements.bytes_read.count metric that - counts the number of bytes scanned by SQL statements. [#156459][#156459] +- Added sql.statements.rows_read.count metric + that counts the number of index rows read by SQL statements. [#156459][#156459] - Added sql.statements.index_rows_written.count metric that counts the number of primary and secondary index rows modified by SQL statements. [#156459][#156459] -- Added sql.statements.rows_read.count metric - that counts the number of index rows read by SQL statements. [#156459][#156459] - CockroachDB now supports index accelerating `jsonb_path_exists` filters with JSONpath expressions that end with an AnyKey (`*`). [#156508][#156508]

Operational changes

@@ -867,483 +867,483 @@ The following cases are not supported: destination after failover from a PCR stream of a system virtual cluster. [#156812][#156812] -[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 -[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 -[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 -[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 -[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 -[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 -[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 -[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 -[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 -[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 -[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 -[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 -[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 -[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 -[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 -[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 -[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 -[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 -[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 -[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 -[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 -[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 -[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 -[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 +[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 +[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 +[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 [#141800]: https://github.com/cockroachdb/cockroach/pull/141800 -[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 +[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 +[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 +[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 [#143538]: https://github.com/cockroachdb/cockroach/pull/143538 -[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 -[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 -[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 -[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 -[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 -[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 -[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 -[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 -[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 -[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 -[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 -[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 -[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 -[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 -[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 -[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 -[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 -[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 -[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 -[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 -[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 -[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 -[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 -[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 -[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 -[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 -[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 -[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 -[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 -[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 -[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 -[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 -[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 -[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 -[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 -[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 -[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 -[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 -[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 -[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 -[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 -[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 -[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 +[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 +[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 [#157037]: https://github.com/cockroachdb/cockroach/pull/157037 -[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 -[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 -[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 +[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 [#154953]: https://github.com/cockroachdb/cockroach/pull/154953 -[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 -[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 -[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 -[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 -[#145236]: https://github.com/cockroachdb/cockroach/pull/145236 -[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 -[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 -[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 -[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 -[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 -[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 -[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 -[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 -[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 -[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 -[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 -[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 -[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 -[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 -[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 -[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 -[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 -[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 -[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 -[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 -[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 -[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 -[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 -[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 -[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 -[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 -[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 -[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 +[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 +[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 +[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 +[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 +[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 +[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 +[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 [#143159]: https://github.com/cockroachdb/cockroach/pull/143159 -[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 -[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 -[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 -[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 -[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 -[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 -[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 -[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 -[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 -[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 -[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 -[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 -[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 -[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 -[#155927]: https://github.com/cockroachdb/cockroach/pull/155927 -[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 -[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 +[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 +[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 +[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 +[#142927]: https://github.com/cockroachdb/cockroach/pull/142927 +[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 [#151185]: https://github.com/cockroachdb/cockroach/pull/151185 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 -[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 -[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 -[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 -[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 -[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 -[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 -[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 -[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 -[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 -[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 +[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 [#144638]: https://github.com/cockroachdb/cockroach/pull/144638 -[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 -[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 -[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 -[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 -[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 -[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 -[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 -[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 -[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 -[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 -[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 -[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 -[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 -[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 +[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 +[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 +[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 +[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 +[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 [#156979]: https://github.com/cockroachdb/cockroach/pull/156979 -[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 -[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 -[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 -[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 -[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 +[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 +[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 +[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 +[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 +[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 +[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 +[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 +[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 +[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 +[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 +[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 +[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 +[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 +[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 +[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 +[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 +[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 +[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 +[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 +[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 +[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 +[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 [#147923]: https://github.com/cockroachdb/cockroach/pull/147923 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 -[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 -[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 -[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 -[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 -[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 -[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 -[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 -[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 -[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 -[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 -[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 -[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 -[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 -[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 -[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 -[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 -[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 -[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 +[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 +[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 +[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 +[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 +[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 +[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 [#148464]: https://github.com/cockroachdb/cockroach/pull/148464 -[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 -[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 +[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 +[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 +[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 +[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 +[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 +[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 +[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 +[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 +[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 +[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 +[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 +[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 +[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 +[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 +[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 +[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 +[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 +[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 +[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 +[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 +[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 +[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 +[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 +[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 +[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 +[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 +[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 +[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 +[#155927]: https://github.com/cockroachdb/cockroach/pull/155927 +[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 +[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 +[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 +[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 +[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 +[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 +[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 +[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 +[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 +[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 +[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 +[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 +[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 +[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 +[#153724]: https://github.com/cockroachdb/cockroach/pull/153724 +[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 +[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 [#143827]: https://github.com/cockroachdb/cockroach/pull/143827 -[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 +[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 +[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 +[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 [#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 -[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 -[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 -[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 -[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 -[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 -[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 [#144643]: https://github.com/cockroachdb/cockroach/pull/144643 -[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 -[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 -[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 -[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 -[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 -[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 -[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 -[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 -[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 -[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 -[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 -[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 -[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 -[#143097]: https://github.com/cockroachdb/cockroach/pull/143097 -[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 -[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 -[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 -[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 +[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 +[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 +[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 +[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 [#149373]: https://github.com/cockroachdb/cockroach/pull/149373 -[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 -[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 -[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 -[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 -[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 -[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 -[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 -[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 -[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 -[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 -[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 -[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 -[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 -[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 -[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 -[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 -[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 -[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 +[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 +[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 +[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 [#142932]: https://github.com/cockroachdb/cockroach/pull/142932 -[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 -[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 -[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 -[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 +[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 +[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 +[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 +[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 +[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 +[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 +[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 +[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 +[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 +[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 +[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 +[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 +[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 +[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 +[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 [#144181]: https://github.com/cockroachdb/cockroach/pull/144181 -[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 -[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 -[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 -[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 -[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 -[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 +[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 +[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 +[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 +[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 +[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 +[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 +[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 +[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 +[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 +[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 +[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 +[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 +[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 +[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 +[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 +[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 +[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 +[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 [#153294]: https://github.com/cockroachdb/cockroach/pull/153294 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 -[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 -[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 -[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 -[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 -[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 -[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 -[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 -[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 -[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 -[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 -[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 -[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 -[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 -[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 -[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 -[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 -[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 -[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 [#153625]: https://github.com/cockroachdb/cockroach/pull/153625 -[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 -[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 -[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 -[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 -[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 -[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 -[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 -[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 -[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 -[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 -[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 -[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 -[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 -[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 -[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 +[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 +[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 +[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 +[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 +[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 +[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 +[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 +[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 +[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 +[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 [#150738]: https://github.com/cockroachdb/cockroach/pull/150738 -[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 -[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 -[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 -[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 -[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 -[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 -[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 -[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 -[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 -[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 -[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 -[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 -[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 -[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 -[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 -[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 -[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 -[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 -[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 -[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 -[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 -[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 -[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 -[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 -[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 -[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 -[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 -[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 +[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 +[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 +[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 [#147869]: https://github.com/cockroachdb/cockroach/pull/147869 -[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 -[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 -[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 -[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 -[#145391]: https://github.com/cockroachdb/cockroach/pull/145391 -[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 -[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 -[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 -[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 -[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 -[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 +[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 +[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 +[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 +[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 +[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 [#145983]: https://github.com/cockroachdb/cockroach/pull/145983 -[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 -[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 +[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 +[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 +[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 +[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 +[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 +[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 [#148859]: https://github.com/cockroachdb/cockroach/pull/148859 -[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 -[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 -[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 -[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 -[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 -[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 -[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 -[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 +[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 +[#145236]: https://github.com/cockroachdb/cockroach/pull/145236 +[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 +[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 +[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 +[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 +[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 +[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 +[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 +[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 +[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 +[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 [#143663]: https://github.com/cockroachdb/cockroach/pull/143663 -[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 -[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 +[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 +[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 +[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 +[#145391]: https://github.com/cockroachdb/cockroach/pull/145391 +[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 +[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 [#144658]: https://github.com/cockroachdb/cockroach/pull/144658 +[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 +[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 +[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 +[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 +[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 +[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 +[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 +[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 +[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 +[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 +[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 +[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 +[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 +[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 +[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 +[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 +[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 +[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 +[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 +[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 +[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 +[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 [#154388]: https://github.com/cockroachdb/cockroach/pull/154388 +[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 +[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 +[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 +[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 +[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 +[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 +[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 +[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 +[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 +[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 +[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 +[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 +[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 +[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 +[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 +[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 +[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 +[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 +[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 +[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 +[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 +[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 +[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 +[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 +[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 +[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 +[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 [#153617]: https://github.com/cockroachdb/cockroach/pull/153617 -[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 -[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 -[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 -[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 -[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 -[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 -[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 -[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 +[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 +[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 +[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 +[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 +[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 +[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 +[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 +[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 +[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 +[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 [#153890]: https://github.com/cockroachdb/cockroach/pull/153890 -[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 -[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 -[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 -[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 +[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 +[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 +[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 +[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 +[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 +[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 +[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 +[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 +[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 +[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 +[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 +[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 +[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 +[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 +[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 +[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 +[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 +[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 +[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 +[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 +[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 +[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 +[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 +[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 +[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 +[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 +[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 +[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 [#150364]: https://github.com/cockroachdb/cockroach/pull/150364 +[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 +[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 +[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 +[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 +[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 +[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 +[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 [#144536]: https://github.com/cockroachdb/cockroach/pull/144536 -[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 -[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 -[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 -[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 -[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 -[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 -[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 -[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 -[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 -[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 -[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 -[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 -[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 -[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 +[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 +[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 +[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 +[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 +[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 +[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 +[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 +[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 +[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 [#143451]: https://github.com/cockroachdb/cockroach/pull/143451 -[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 -[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 -[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 -[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 -[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 -[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 -[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 +[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 +[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 +[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 +[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 +[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 +[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 +[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 [#146448]: https://github.com/cockroachdb/cockroach/pull/146448 -[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 -[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 -[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 -[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 -[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 -[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 -[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 -[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 -[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 -[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 -[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 -[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 -[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 +[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 +[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 +[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 +[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 +[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 +[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 +[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 +[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 +[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 +[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 +[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 +[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 [#152142]: https://github.com/cockroachdb/cockroach/pull/152142 -[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 +[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 +[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 +[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 +[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 +[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 +[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 [#154337]: https://github.com/cockroachdb/cockroach/pull/154337 -[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 -[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 -[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 +[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 +[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 +[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 +[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 +[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 +[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 [#152532]: https://github.com/cockroachdb/cockroach/pull/152532 -[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 -[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 -[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 -[#142927]: https://github.com/cockroachdb/cockroach/pull/142927 -[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 -[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 -[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 +[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 +[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 +[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 +[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 +[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 +[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 +[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 +[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 +[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 +[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 +[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 +[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 +[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 +[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 +[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 +[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 +[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 +[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 +[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 +[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 [#143283]: https://github.com/cockroachdb/cockroach/pull/143283 -[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 -[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 -[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 +[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 +[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 +[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 +[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 +[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 +[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 +[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 +[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 +[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 +[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 +[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 +[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 +[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 +[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 [#147679]: https://github.com/cockroachdb/cockroach/pull/147679 -[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 -[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 -[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 -[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 -[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 -[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 -[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 -[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 -[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 -[#153724]: https://github.com/cockroachdb/cockroach/pull/153724 -[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 -[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 -[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 -[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 -[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 -[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 -[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 +[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 +[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 +[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 +[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 +[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 +[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 +[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 +[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 +[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 +[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 +[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 +[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 +[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 +[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 +[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 +[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 +[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 +[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 +[#143097]: https://github.com/cockroachdb/cockroach/pull/143097 [#148746]: https://github.com/cockroachdb/cockroach/pull/148746 -[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 -[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 -[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 -[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 -[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 -[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 -[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 -[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 -[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 -[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 -[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 -[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 -[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 -[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 -[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 -[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 -[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 +[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 +[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 +[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 +[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 +[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 +[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 [#147698]: https://github.com/cockroachdb/cockroach/pull/147698 +[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 +[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 +[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 [#147696]: https://github.com/cockroachdb/cockroach/pull/147696 -[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 -[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 -[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 +[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 +[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 +[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 +[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 +[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 +[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 +[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 +[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 +[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 +[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 +[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 +[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 +[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 +[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 +[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 +[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 +[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 +[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 +[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 [#143775]: https://github.com/cockroachdb/cockroach/pull/143775 -[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 +[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 From 71252bb6731dc7398048ffdb00642c0f3c228a9d Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 16:02:00 +0000 Subject: [PATCH 25/37] Update release notes for v25.4-v25.4.1 From a8f473399a7ef3efdab8d14c92e152b18a1eb84a Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 16:02:01 +0000 Subject: [PATCH 26/37] Update release notes for v25.4-v25.4.1 --- src/current/_data/releases.yml | 35 ++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/current/_data/releases.yml b/src/current/_data/releases.yml index 63305099147..43acb791f9a 100644 --- a/src/current/_data/releases.yml +++ b/src/current/_data/releases.yml @@ -9991,3 +9991,38 @@ CockroachDB Cloud clusters. To request to upgrade a CockroachDB self-hosted cluster to this version, [contact support](https://support.cockroachlabs.com/hc/requests/new). + + +- release_name: v25.4.1 + major_version: v25.4 + release_date: '2025-12-02' + release_type: Production + go_version: go1.25.3 + sha: 60d802bd0bcb2c1aa81a4b5fd73fb4aa13bb5114 + 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 + docker_arm: true + docker_arm_experimental: false + docker_arm_limited_access: false + source: true + previous_release: v25.4.0 + cloud_only: true + cloud_only_message_short: 'Available only for select CockroachDB Cloud clusters' + cloud_only_message: > + This version is currently available only for select + CockroachDB Cloud clusters. To request to upgrade + a CockroachDB self-hosted cluster to this version, + [contact support](https://support.cockroachlabs.com/hc/requests/new). From 9eeb1f825b02a6f0ddddcd7d5b694d8cd488b4f7 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 16:02:02 +0000 Subject: [PATCH 27/37] Update release notes for v25.4-v25.4.1 --- .../_includes/releases/v25.4/v25.4.1.md | 880 +++++++++--------- 1 file changed, 440 insertions(+), 440 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.1.md b/src/current/_includes/releases/v25.4/v25.4.1.md index 29ca6e5dd6f..d3fc4c00125 100644 --- a/src/current/_includes/releases/v25.4/v25.4.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.1.md @@ -867,483 +867,483 @@ The following cases are not supported: destination after failover from a PCR stream of a system virtual cluster. [#156812][#156812] -[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 -[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 -[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 -[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 -[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 -[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 -[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 -[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 -[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 -[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 -[#157037]: https://github.com/cockroachdb/cockroach/pull/157037 -[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 -[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 -[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 -[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 -[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 -[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 -[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 +[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 +[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 +[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 +[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 +[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 +[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 +[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 +[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 +[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 +[#155927]: https://github.com/cockroachdb/cockroach/pull/155927 +[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 +[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 +[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 +[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 +[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 +[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 +[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 +[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 +[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 +[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 [#155509]: https://github.com/cockroachdb/cockroach/pull/155509 -[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 -[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 -[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 -[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 -[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 +[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 +[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 +[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 +[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 +[#144658]: https://github.com/cockroachdb/cockroach/pull/144658 +[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 +[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 +[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 +[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 +[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 +[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 [#142927]: https://github.com/cockroachdb/cockroach/pull/142927 -[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 -[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 -[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 -[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 -[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 -[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 +[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 +[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 +[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 +[#145236]: https://github.com/cockroachdb/cockroach/pull/145236 +[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 [#148719]: https://github.com/cockroachdb/cockroach/pull/148719 -[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 -[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 -[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 +[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 [#150647]: https://github.com/cockroachdb/cockroach/pull/150647 -[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 -[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 -[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 -[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 -[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 -[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 -[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 -[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 -[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 -[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 -[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 -[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 -[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 -[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 -[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 -[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 -[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 -[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 -[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 -[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 -[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 -[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 -[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 +[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 +[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 +[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 +[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 [#156286]: https://github.com/cockroachdb/cockroach/pull/156286 -[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 -[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 -[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 -[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 -[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 -[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 -[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 -[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 -[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 -[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 -[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 -[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 -[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 -[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 -[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 -[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 -[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 -[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 -[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 -[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 -[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 +[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 +[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 +[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 +[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 +[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 +[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 +[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 +[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 +[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 [#156968]: https://github.com/cockroachdb/cockroach/pull/156968 -[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 -[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 +[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 +[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 +[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 +[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 +[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 [#143613]: https://github.com/cockroachdb/cockroach/pull/143613 -[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 -[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 -[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 -[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 -[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 -[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 -[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 -[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 -[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 -[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 -[#155927]: https://github.com/cockroachdb/cockroach/pull/155927 -[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 -[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 -[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 -[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 -[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 -[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 -[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 -[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 -[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 -[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 -[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 +[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 +[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 [#153380]: https://github.com/cockroachdb/cockroach/pull/153380 -[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 -[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 -[#153724]: https://github.com/cockroachdb/cockroach/pull/153724 -[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 -[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 -[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 -[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 -[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 -[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#144643]: https://github.com/cockroachdb/cockroach/pull/144643 -[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 -[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 -[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 -[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 -[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 -[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 -[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 -[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 -[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 -[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 -[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 -[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 -[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 -[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 +[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 +[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 [#142682]: https://github.com/cockroachdb/cockroach/pull/142682 -[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 -[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 -[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 -[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 -[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 -[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 -[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 -[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 -[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 -[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 -[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 -[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 -[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 -[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 -[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 -[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 -[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 -[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 -[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 -[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 -[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 +[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 +[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 +[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 +[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 [#143668]: https://github.com/cockroachdb/cockroach/pull/143668 -[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 -[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 -[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 -[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 -[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 -[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 +[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 +[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 +[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 +[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 +[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 +[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 +[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 +[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 +[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 +[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 +[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 +[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 +[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 +[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 +[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 +[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 +[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 +[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 +[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 +[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 +[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 +[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 +[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 [#154576]: https://github.com/cockroachdb/cockroach/pull/154576 -[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 -[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 -[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 -[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 -[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 -[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 -[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 -[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 -[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 -[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 -[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 -[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 -[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 -[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 -[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 -[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 -[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 -[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 -[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 -[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 -[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 -[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 -[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 -[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 -[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 -[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 -[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 -[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 -[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 -[#145236]: https://github.com/cockroachdb/cockroach/pull/145236 -[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 +[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 +[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 +[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 +[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 +[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 +[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 +[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 +[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 +[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 +[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 [#153683]: https://github.com/cockroachdb/cockroach/pull/153683 -[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 +[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 +[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 [#146446]: https://github.com/cockroachdb/cockroach/pull/146446 -[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 -[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 -[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 -[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 -[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 -[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 -[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 +[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 +[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 +[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 +[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 +[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 +[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 +[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 +[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 +[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 +[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 +[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 +[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 +[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 +[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 +[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 +[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 +[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 +[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 +[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 [#151563]: https://github.com/cockroachdb/cockroach/pull/151563 -[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 -[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 -[#145391]: https://github.com/cockroachdb/cockroach/pull/145391 -[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 -[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 -[#144658]: https://github.com/cockroachdb/cockroach/pull/144658 -[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 -[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 -[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 -[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 -[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 +[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 [#143384]: https://github.com/cockroachdb/cockroach/pull/143384 -[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 -[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 -[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 -[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 -[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 -[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 -[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 -[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 -[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 -[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 -[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 -[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 -[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 +[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 +[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 +[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 +[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 +[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 +[#153724]: https://github.com/cockroachdb/cockroach/pull/153724 +[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 +[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 +[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 +[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 +[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 +[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 +[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 +[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 +[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 +[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 +[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 +[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 +[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 [#144091]: https://github.com/cockroachdb/cockroach/pull/144091 -[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 -[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 -[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 -[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 -[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 -[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 -[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 -[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 +[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 +[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 +[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 +[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 +[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 +[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 +[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 +[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 +[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 +[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 +[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 +[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 +[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 +[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 +[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 +[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 +[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 +[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 +[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 [#153628]: https://github.com/cockroachdb/cockroach/pull/153628 -[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 -[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 -[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 +[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 +[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 [#142697]: https://github.com/cockroachdb/cockroach/pull/142697 +[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 +[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 +[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 +[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 +[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 +[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 +[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 +[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 +[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 +[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 +[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 +[#144643]: https://github.com/cockroachdb/cockroach/pull/144643 +[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 +[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 +[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 +[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 +[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 +[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 +[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 +[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 +[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 +[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 [#143857]: https://github.com/cockroachdb/cockroach/pull/143857 -[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 -[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 -[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 +[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 +[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 +[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 +[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 +[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 +[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 +[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 +[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 +[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 +[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 +[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 +[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 +[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 +[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 +[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 +[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 +[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 +[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 [#142749]: https://github.com/cockroachdb/cockroach/pull/142749 +[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 +[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 +[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 [#143773]: https://github.com/cockroachdb/cockroach/pull/143773 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 -[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 -[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 -[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 -[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 -[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 -[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 -[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 -[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 -[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 -[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 -[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 -[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 -[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 [#149540]: https://github.com/cockroachdb/cockroach/pull/149540 -[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 -[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 -[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 -[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 -[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 -[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 -[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 -[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 -[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 -[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 -[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 -[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 -[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 +[#157037]: https://github.com/cockroachdb/cockroach/pull/157037 [#151689]: https://github.com/cockroachdb/cockroach/pull/151689 -[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 -[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 +[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 +[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 +[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 +[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 +[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 +[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 +[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 [#154166]: https://github.com/cockroachdb/cockroach/pull/154166 -[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 -[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 -[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 -[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 -[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 -[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 -[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 -[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 -[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 -[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 -[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 -[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 -[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 -[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 -[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 -[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 -[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 -[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 -[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 -[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 +[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 [#149538]: https://github.com/cockroachdb/cockroach/pull/149538 -[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 -[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 -[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 -[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 -[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 +[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 +[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 +[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 +[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 +[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 +[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 +[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 +[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 +[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 +[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 +[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 +[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 +[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 +[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 +[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 +[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 +[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 +[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 +[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 +[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 +[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 +[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 +[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 +[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 +[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 +[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 +[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 +[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 +[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 +[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 +[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 +[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 +[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 +[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 [#143173]: https://github.com/cockroachdb/cockroach/pull/143173 -[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 -[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 -[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 -[#144536]: https://github.com/cockroachdb/cockroach/pull/144536 -[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 -[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 +[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 +[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 +[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 +[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 +[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 +[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 +[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 +[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 +[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 +[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 +[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 +[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 +[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 +[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 +[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 +[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 +[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 [#149602]: https://github.com/cockroachdb/cockroach/pull/149602 -[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 -[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 -[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 -[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 -[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 -[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 -[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 -[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 -[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 +[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 +[#145391]: https://github.com/cockroachdb/cockroach/pull/145391 +[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 +[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 +[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 +[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 [#150655]: https://github.com/cockroachdb/cockroach/pull/150655 -[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 -[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 -[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 -[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 +[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 +[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 +[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 +[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 +[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 +[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 +[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 +[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 +[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 +[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 +[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 +[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 +[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 +[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 +[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 +[#144536]: https://github.com/cockroachdb/cockroach/pull/144536 +[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 +[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 +[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 +[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 +[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 +[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 +[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 +[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 +[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 +[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 +[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 +[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 +[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 +[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 +[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 +[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 +[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 +[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 +[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 +[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 [#143170]: https://github.com/cockroachdb/cockroach/pull/143170 +[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 +[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 +[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 +[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 [#145344]: https://github.com/cockroachdb/cockroach/pull/145344 -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 -[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 -[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 -[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 -[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 -[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 -[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 -[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 -[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 -[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 -[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 -[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 -[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 -[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 -[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 +[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 +[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 +[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 +[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 +[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 +[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 [#149051]: https://github.com/cockroachdb/cockroach/pull/149051 -[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 [#148535]: https://github.com/cockroachdb/cockroach/pull/148535 +[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 +[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 +[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 +[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 +[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 +[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 +[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 +[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 +[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 [#142696]: https://github.com/cockroachdb/cockroach/pull/142696 -[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 -[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 -[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 -[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 -[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 +[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 [#150238]: https://github.com/cockroachdb/cockroach/pull/150238 -[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 -[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 -[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 -[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 -[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 -[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 -[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 -[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 -[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 -[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 -[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 -[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 -[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 -[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 -[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 -[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 -[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 -[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 -[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 -[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 -[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 -[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 -[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 -[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 -[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 -[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 -[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 +[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 +[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 +[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 +[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 +[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 +[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 +[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 +[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 +[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 +[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 +[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 +[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 +[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 +[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 [#144385]: https://github.com/cockroachdb/cockroach/pull/144385 -[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 -[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 -[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 +[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 +[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 +[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 +[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 +[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 +[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 +[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 +[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 +[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 +[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 [#150666]: https://github.com/cockroachdb/cockroach/pull/150666 -[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 +[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 [#151951]: https://github.com/cockroachdb/cockroach/pull/151951 -[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 -[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 -[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 -[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 -[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 -[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 -[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 -[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 -[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 -[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 -[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 -[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 -[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 -[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 -[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 -[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 -[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 -[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 -[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 -[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 -[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 -[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 -[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 +[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 +[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 +[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 +[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 +[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 +[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 +[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 +[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 +[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 +[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 +[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 +[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 +[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 +[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 +[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 +[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 +[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 +[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 +[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 +[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 +[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 +[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 +[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 +[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 +[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 [#143097]: https://github.com/cockroachdb/cockroach/pull/143097 -[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 -[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 -[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 -[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 +[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 [#153608]: https://github.com/cockroachdb/cockroach/pull/153608 -[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 -[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 -[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 -[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 -[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 -[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 -[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 -[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 -[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 +[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 +[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 +[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 +[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 +[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 +[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 +[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 +[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 +[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 +[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 +[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 +[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 +[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 +[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 +[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 [#145405]: https://github.com/cockroachdb/cockroach/pull/145405 -[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 -[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 -[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 -[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 -[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 -[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 -[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 -[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 -[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 -[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 -[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 -[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 -[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 -[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 -[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 -[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 -[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 -[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 +[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 +[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 +[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 +[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 +[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 +[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 +[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 +[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 +[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 +[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 From a114a4494e5e8b9939f1b1763086f8d34f3bba06 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 16:18:22 +0000 Subject: [PATCH 28/37] Update release notes for v25.4-v25.4.1 From 4e6ab88db138834fde1802e555dc36897ce561a2 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 16:18:22 +0000 Subject: [PATCH 29/37] Update release notes for v25.4-v25.4.1 --- src/current/_data/releases.yml | 35 ---------------------------------- 1 file changed, 35 deletions(-) diff --git a/src/current/_data/releases.yml b/src/current/_data/releases.yml index 43acb791f9a..63305099147 100644 --- a/src/current/_data/releases.yml +++ b/src/current/_data/releases.yml @@ -9991,38 +9991,3 @@ CockroachDB Cloud clusters. To request to upgrade a CockroachDB self-hosted cluster to this version, [contact support](https://support.cockroachlabs.com/hc/requests/new). - - -- release_name: v25.4.1 - major_version: v25.4 - release_date: '2025-12-02' - release_type: Production - go_version: go1.25.3 - sha: 60d802bd0bcb2c1aa81a4b5fd73fb4aa13bb5114 - 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 - docker_arm: true - docker_arm_experimental: false - docker_arm_limited_access: false - source: true - previous_release: v25.4.0 - cloud_only: true - cloud_only_message_short: 'Available only for select CockroachDB Cloud clusters' - cloud_only_message: > - This version is currently available only for select - CockroachDB Cloud clusters. To request to upgrade - a CockroachDB self-hosted cluster to this version, - [contact support](https://support.cockroachlabs.com/hc/requests/new). From 07410351ae7b53bb67b2fb99722741f5193836d0 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 26 Nov 2025 16:18:23 +0000 Subject: [PATCH 30/37] Update release notes for v25.4-v25.4.1 --- .../_includes/releases/v25.4/v25.4.1.md | 914 +++++++++--------- 1 file changed, 457 insertions(+), 457 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.1.md b/src/current/_includes/releases/v25.4/v25.4.1.md index d3fc4c00125..1507893e64a 100644 --- a/src/current/_includes/releases/v25.4/v25.4.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.1.md @@ -166,27 +166,27 @@ Release Date: December 2, 2025 - The owner of a database can now set default session variables per database using the `ALTER ROLE ALL IN DATABASE ... SET` or `ALTER DATABASE ... SET` commands. [#130547][#130547] - Added the `ST_3DLength` function, which returns the 3D or 2D length of `LINESTRING` and `MULTILINESTRING` spatial types. [#139450][#139450] - `format()` no longer requires all post-format string arguments to have the same type. [#141193][#141193] +- `concat()` no longer requires all arguments have the same type. [#141193][#141193] - `concat_ws()` now accepts arguments of any type in the second and later positions (the separator must still be a string). [#141193][#141193] +- `pg_column_size()` no longer requires that all arguments have the same type. [#141193][#141193] - `num_nulls()` and `num_nonnulls()` no longer require all arguments to have the same type. [#141193][#141193] - `json_build_object()`, `jsonb_build_object()`, `json_build_array()`, and `jsonb_build_array()` no longer require that all arguments have the same type. [#141193][#141193] -- `pg_column_size()` no longer requires that all arguments have the same type. [#141193][#141193] -- `concat()` no longer requires all arguments have the same type. [#141193][#141193] -- Array unions are now supported in JSONPath queries. For example, `$.a[1, 2 to 4, 7, 8]`. [#142241][#142241] +- Double-quoted key accessors are now supported in JSONPath queries. For example, `SELECT '$."1key"."key2"'::JSONPATH;`. [#142241][#142241] - Array integer indexing is now supported in JSONPath queries. For example, `$.a[1]`. [#142241][#142241] - Array ranges are now supported in JSONPath queries. For example, `$.a[1 to 3]`). [#142241][#142241] -- Double-quoted key accessors are now supported in JSONPath queries. For example, `SELECT '$."1key"."key2"'::JSONPATH;`. [#142241][#142241] +- Array unions are now supported in JSONPath queries. For example, `$.a[1, 2 to 4, 7, 8]`. [#142241][#142241] - Fixed a regression due to join-elimination rules that prevented other optimization rules from applying. [#142252][#142252] - Statements such as `REFRESH MATERIALIZED VIEW` and `CREATE MATERIALIZED VIEW` can now be executed with an `AS OF SYSTEM TIME` clause. These statements can still not be used in an explicit transaction. [#142259][#142259] - Add the `jsonb_path_query` function, which takes in a JSON object and a JSONPath query and returns the resulting JSON object. [#142336][#142336] - Added the `ALTER VIRTUAL CLUSTER .. SET REPLICATION SOURCE` command so users can configure producer jobs on the source cluster. Currently, users can only configure the `EXPIRATION WINDOW`. Also, removed the `EXPIRATION WINDOW` option from the consumer side command of `ALTER VIRTUAL CLUSTER SET REPLICATION`. [#142501][#142501] - `EXPLAIN ANALYZE` statements now display the number of transaction retries and time spent retrying, if non-zero, in the plan output. [#142692][#142692] - Users can now begin logical data replication (LDR) on an existing table if the user has a table-level `REPLICATIONDEST` privilege. Furthermore, users can now begin LDR onto an automatically created table if the user has the parent database level `CREATE` privilege. Finally, during bidirectional LDR, the user in the original source URI, who will begin the reverse LDR stream, to authorize via this table-level `REPLICATIONDEST` privilege. [#142840][#142840] -- Comparison operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', 1 < 2)`. [#142899][#142899] - Logical operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '1 < 2 && 3 >= 2')`. [#142899][#142899] +- Comparison operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', 1 < 2)`. [#142899][#142899] - It is now possible to automatically collect partial table statistics, but disable automatic collection of full table statistics. The new cluster and table settings to enable/disable automatic collection of full table statistics (without affecting the settings for partial stats) are `sql.stats.automatic_full_collection.enabled` and `sql_stats_automatic_full_collection_enabled`, respectively. The settings default to `true`. [#142924][#142924] - The return type of the `workload_index_recs` built-in function now includes two columns. The first column, `index_rec`, remains a `STRING` type and contains the index recommendation. The second column, `fingerprint_ids`, is new and has the `BYTES[]` type. [#142927][#142927] -- Implemented various `power()` and `^` edge cases to match PostgreSQL behaviour. Some expressions that previously returned `NaN` now return specific numbers; some expressions that previously returned `Infinity` or `NaN` now return errors; and some expressions with infinite exponents now return different results. [#142932][#142932] - Update edge cases in the `width_bucket()` function to return `count + 1` for a positive infinity operand, and `0` for a negative infinity operand, instead of an error. [#142932][#142932] +- Implemented various `power()` and `^` edge cases to match PostgreSQL behaviour. Some expressions that previously returned `NaN` now return specific numbers; some expressions that previously returned `Infinity` or `NaN` now return errors; and some expressions with infinite exponents now return different results. [#142932][#142932] - Added the `jsonb_path_exists` function, which accepts a JSON object and JSONPath query and returns whether the query returned any items. [#143028][#143028] - Filters are now supported in JSONPath queries, using the format `$ ? (predicate)`. This allows results to be filtered. For example, `SELECT jsonb_path_query('{"a": [1,2,3]}', '$.a ? (1 == 1)');`. [#143097][#143097] - Addition, subtraction, multiplication, division, and modulo operators are now supported in JSONPath queries. [#143210][#143210] @@ -207,9 +207,9 @@ Release Date: December 2, 2025 - Usage of `TG_ARGV` in trigger functions is now disallowed by default. The session setting `allow_create_trigger_function_with_argv_references` can be set to `true` to allow usage (with 1-based indexing). [#143827][#143827] - A new `execution time` statistic is now reported on `EXPLAIN ANALYZE` output for most operators. Previously, this statistic was only available on the DistSQL diagrams in `EXPLAIN ANALYZE (DISTSQL)` output. [#143857][#143857] - Added a new session variable `create_table_with_schema_locked`, which can be used to ensure all tables created by a session have the storage parameter `schema_locked` set. [#143892][#143892] -- Added the `jsonb_path_match` function, which returns the result of a predicate query. [#144006][#144006] - Added the `jsonb_path_query_first` function, which returns the first result from `jsonb_path_query`. [#144006][#144006] - Added the `jsonb_path_query_array` function, which returns the result of `jsonb_path_query` wrapped in a JSON array. [#144006][#144006] +- Added the `jsonb_path_match` function, which returns the result of a predicate query. [#144006][#144006] - The following syntax is now supported: `GRANT ... ON ALL ROUTINES IN SCHEMA ...`; `REVOKE ... ON ALL ROUTINES IN SCHEMA ...`; `ALTER DEFAULT PRIVILEGES GRANT ... ON ROUTINES ...`; `ALTER DEFAULT PRIVIELGES REVOKE ... ON ROUTINES ...`. The `ROUTINES` keyword makes the command apply to both functions and stored procedures. Note that `ALTER DEFAULT PRIVILEGES ... ON FUNCTIONS` already applied to stored procedures (which aligns with the PostgreSQL behavior), and that is not changing. [#144189][#144189] - Parenthesized expressions are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{"a": {"b": true}}', '($.a).b');` [#144245][#144245] - The `.size()` method is now supported in JSONPath expressions. For example, `SELECT jsonb_path_query('[1, 2, 3]', '$.size()');`. [#144266][#144266] @@ -233,8 +233,8 @@ Release Date: December 2, 2025 - In the `crdb_internal.cluster_execution_insights` and `crdb_internal.node_execution_insights` virtual tables in a new `query_tags` JSONB column. This feature is disabled by default and can be enabled using the `sql.sqlcommenter.enabled` cluster setting. Comments must follow the [SQLCommenter specification](https://google.github.io/sqlcommenter/spec/). [#145435][#145435] - Fixed a bug that caused a routine with an `INSERT` statement to unnecessarily block dropping a hash-sharded index or computed column on the target table. This fix applies only to newly created routines. In releases prior to v25.3, the fix must be enabled by setting the session variable `use_improved_routine_dependency_tracking` to `on`. [#146250][#146250] -- `~~*` and `!~~*` are now supported aliases for `ILIKE` and `NOT ILIKE`. [#146764][#146764] - `~~` and `!~~` are now supported aliases for `LIKE` and `NOT LIKE`. [#146764][#146764] +- `~~*` and `!~~*` are now supported aliases for `ILIKE` and `NOT ILIKE`. [#146764][#146764] - Added a session variable `initial_retry_backoff_for_read_committed` that controls the initial backoff duration when retrying an individual statement in an explicit `READ COMMITTED` transaction. A duration of `0` disables exponential backoff. If a statement in an explicit `READ COMMITTED` transaction is failing with the `40001` error `ERROR: restart transaction: read committed retry limit exceeded; set by max_retries_for_read_committed=...`, then you should set `initial_retry_backoff_for_read_committed` to a duration proportional to the typical execution time of the statement (in addition to also increasing `max_retries_for_read_committed`). [#146860][#146860] - Deterministic collations are now supported with `LIKE`. A deterministic collation considers strings to be equal only if they consist of the same byte sequence. [#147045][#147045] - The `information_schema.triggers` table is now populated with trigger metadata. Users can query this table to see all triggers defined in their database, including the trigger name, timing (`BEFORE`/`AFTER`), event type (`INSERT`/`UPDATE`/`DELETE`), and associated function. Each trigger event appears as a separate row in the table. [#147237][#147237] @@ -242,8 +242,8 @@ This feature is disabled by default and can be enabled using the `sql.sqlcomment - Directionality may no longer be assigned to any vector index column. Prefix columns are not scannable in a vector index, so directionality is not relevant to them. [#147307][#147307] - Added the `SHOW CREATE ALL ROUTINES` statement, which can be used to show `CREATE` statements for all user-defined functions (UDFs) and procedures in the current database. [#147452][#147452] - Added the metrics `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count`, which count the number of automatic retries of SQL transactions and statements, respectively, within the database. These metrics differ from the related `txn.restarts.*` metrics, which count retryable errors emitted by the KV layer that must be retried. The new `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count` metrics count auto-retry actions taken by the SQL layer in response to some of those retryable errors. [#147682][#147682] -- Partial indexes can now reference user-defined functions. [#147817][#147817] - Computed column expressions and `ON UPDATE` expressions can now reference user-defined functions. [#147817][#147817] +- Partial indexes can now reference user-defined functions. [#147817][#147817] - Added the `SHOW CREATE ALL TRIGGERS` statement. [#147836][#147836] - The `CITEXT` data type is now supported, enabling case-insensitive comparisons for `CITEXT` columns. Internally, `CITEXT` is equivalent to using the undetermined level 2 collation `und-u-ks-level2`. For example, under `CITEXT`, the expression `'test' = 'TEST'` returns `TRUE`. [#147864][#147864] - Increased the default value for the `max_retries_for_read_committed` session variable from `10` to `100`. Testing has shown that some high-contention workloads running under `READ COMMITTED` isolation benefit from more statement retries. [#147869][#147869] @@ -357,21 +357,21 @@ 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) [#154631][#154631] - The optimizer can now use table statistics that merge the latest full statistic with all newer partial statistics, including those over arbitrary constraints over a single span. [#154755][#154755] -- 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. [#155123][#155123] - 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. [#155123][#155123] +- 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. [#155123][#155123] - Added the `INSPECT` command, which runs consistency validation check jobs against tables or databases and specified indexes. [#155441][#155441] - 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`. [#155509][#155509] - Vector indexing is now enabled by default. `feature.vector_index.enabled` defaults to `true`. [#155561][#155561] -- Added sql.statements.bytes_read.count metric that - counts the number of bytes scanned by SQL statements. [#156459][#156459] - Added sql.statements.index_bytes_written.count metric that counts the number of primary and secondary index bytes modified by SQL statements. [#156459][#156459] -- Added sql.statements.rows_read.count metric - that counts the number of index rows read by SQL statements. [#156459][#156459] +- Added sql.statements.bytes_read.count metric that + counts the number of bytes scanned by SQL statements. [#156459][#156459] - Added sql.statements.index_rows_written.count metric that counts the number of primary and secondary index rows modified by SQL statements. [#156459][#156459] +- Added sql.statements.rows_read.count metric + that counts the number of index rows read by SQL statements. [#156459][#156459] - CockroachDB now supports index accelerating `jsonb_path_exists` filters with JSONpath expressions that end with an AnyKey (`*`). [#156508][#156508]

Operational changes

@@ -867,483 +867,483 @@ The following cases are not supported: destination after failover from a PCR stream of a system virtual cluster. [#156812][#156812] -[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 -[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 -[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 +[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 +[#144536]: https://github.com/cockroachdb/cockroach/pull/144536 +[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 +[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 +[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 +[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 +[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 +[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 +[#155927]: https://github.com/cockroachdb/cockroach/pull/155927 +[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 +[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 +[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 +[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 +[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 +[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 +[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 +[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 +[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 +[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 +[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 [#148484]: https://github.com/cockroachdb/cockroach/pull/148484 -[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 -[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 -[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 -[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 +[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 +[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 +[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 +[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 +[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 +[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 +[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 +[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 +[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 +[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 +[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 +[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 +[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 +[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 +[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 +[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 +[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 +[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 +[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 +[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 +[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 +[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 +[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 +[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 +[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 +[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 +[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 +[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 [#147773]: https://github.com/cockroachdb/cockroach/pull/147773 -[#155927]: https://github.com/cockroachdb/cockroach/pull/155927 -[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 -[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 -[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 +[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 +[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 +[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 +[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 +[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 +[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 +[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 +[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 +[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 +[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 +[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 +[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 [#142930]: https://github.com/cockroachdb/cockroach/pull/142930 -[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 -[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 -[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 -[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 -[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 -[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 +[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 +[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 +[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 +[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 +[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 +[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 +[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 +[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 +[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 +[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 +[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 +[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 +[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 +[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 +[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 +[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 +[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 [#155509]: https://github.com/cockroachdb/cockroach/pull/155509 -[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 -[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 -[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 -[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 -[#144658]: https://github.com/cockroachdb/cockroach/pull/144658 -[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 +[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 +[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 +[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 +[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 +[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 +[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 +[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 +[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 +[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 +[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 +[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 +[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 +[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 +[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 +[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 +[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 +[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 +[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 +[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 +[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 +[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 +[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 +[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 +[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 +[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 +[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 +[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 +[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 +[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 +[#143097]: https://github.com/cockroachdb/cockroach/pull/143097 +[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 +[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 +[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 +[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 +[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 [#153890]: https://github.com/cockroachdb/cockroach/pull/153890 -[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 +[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 +[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 +[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 +[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 +[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 +[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 +[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 +[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#157037]: https://github.com/cockroachdb/cockroach/pull/157037 +[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 +[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 +[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 +[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 +[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 +[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 +[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 [#144304]: https://github.com/cockroachdb/cockroach/pull/144304 -[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 -[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 +[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 +[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 +[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 +[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 +[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 [#142927]: https://github.com/cockroachdb/cockroach/pull/142927 -[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 -[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 -[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 +[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 +[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 +[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 +[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 +[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 +[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 +[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 +[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 +[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 +[#144643]: https://github.com/cockroachdb/cockroach/pull/144643 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 [#145236]: https://github.com/cockroachdb/cockroach/pull/145236 -[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 -[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 -[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 -[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 -[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 -[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 +[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 +[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 +[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 +[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 +[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 +[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 +[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 +[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 +[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 +[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 [#130547]: https://github.com/cockroachdb/cockroach/pull/130547 -[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 -[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 -[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 -[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 -[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 +[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 +[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 +[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 +[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 +[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 +[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 +[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 +[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 +[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 +[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 +[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 +[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 +[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 [#152399]: https://github.com/cockroachdb/cockroach/pull/152399 -[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 -[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 -[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 -[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 -[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 -[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 -[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 -[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 -[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 -[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 -[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 -[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 -[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 -[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 -[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 -[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 -[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 -[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 -[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 -[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 -[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 -[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 -[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 -[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 -[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 -[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 -[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 -[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 -[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 -[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 -[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 [#149415]: https://github.com/cockroachdb/cockroach/pull/149415 -[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 -[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 -[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 -[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 -[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 -[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 -[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 -[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 -[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 -[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 -[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 -[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 -[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 -[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 -[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 -[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 -[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 -[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 -[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 -[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 -[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 -[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 -[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 -[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 -[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 +[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 +[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 +[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 +[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 +[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 +[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 +[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 [#144522]: https://github.com/cockroachdb/cockroach/pull/144522 -[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 -[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 -[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 -[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 -[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 -[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 -[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 -[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 -[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 -[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 -[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 -[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 -[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 -[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 -[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 -[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 -[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 -[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 -[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 -[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 -[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 -[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 -[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 -[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 -[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 +[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 +[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 +[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 +[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 +[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 [#151362]: https://github.com/cockroachdb/cockroach/pull/151362 -[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 -[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 -[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 -[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 -[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 -[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 -[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 -[#153724]: https://github.com/cockroachdb/cockroach/pull/153724 -[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 -[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 -[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 -[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 -[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 -[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 -[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 -[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 -[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 -[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 -[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 -[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 -[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 -[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 -[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 -[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 -[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 -[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 -[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 -[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 -[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 -[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 -[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 -[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 -[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 -[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 -[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 -[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 -[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 -[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 -[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 -[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 -[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 -[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 -[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 -[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 -[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 -[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 +[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 +[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 +[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 [#148746]: https://github.com/cockroachdb/cockroach/pull/148746 -[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 -[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 -[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 -[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 -[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 -[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 -[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 -[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 -[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 -[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 -[#144643]: https://github.com/cockroachdb/cockroach/pull/144643 -[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 +[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 +[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 +[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 +[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 +[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 +[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 [#149812]: https://github.com/cockroachdb/cockroach/pull/149812 -[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 +[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 [#154755]: https://github.com/cockroachdb/cockroach/pull/154755 -[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 +[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 +[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 +[#145391]: https://github.com/cockroachdb/cockroach/pull/145391 [#147923]: https://github.com/cockroachdb/cockroach/pull/147923 -[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 -[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 -[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 +[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 +[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 +[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 +[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 +[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 +[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 +[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 +[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 +[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 +[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 +[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 [#149449]: https://github.com/cockroachdb/cockroach/pull/149449 -[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 -[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 -[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 -[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 -[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 -[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 -[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 -[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 -[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 -[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 -[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 -[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 -[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 -[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 -[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 +[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 +[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 +[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 +[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 +[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 +[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 +[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 +[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 +[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 [#154491]: https://github.com/cockroachdb/cockroach/pull/154491 -[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 -[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 -[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 -[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 -[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 -[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 -[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 -[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 +[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 +[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 +[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 +[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 +[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 +[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 +[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 +[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 +[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 +[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 +[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 [#149540]: https://github.com/cockroachdb/cockroach/pull/149540 -[#157037]: https://github.com/cockroachdb/cockroach/pull/157037 -[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 -[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 -[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 -[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 -[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 -[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 -[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 -[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 -[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 -[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 -[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 -[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 -[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 -[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 -[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 -[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 -[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 -[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 -[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 -[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 -[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 -[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 -[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 -[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 -[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 -[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 -[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 -[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 -[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 -[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 -[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 -[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 -[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 -[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 +[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 +[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 +[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 +[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 +[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 +[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 +[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 +[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 +[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 +[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 +[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 +[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 +[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 +[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 [#148471]: https://github.com/cockroachdb/cockroach/pull/148471 -[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 -[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 -[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 -[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 -[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 +[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 +[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 +[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 [#145374]: https://github.com/cockroachdb/cockroach/pull/145374 -[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 -[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 -[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 -[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 -[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 -[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 -[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 -[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 -[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 -[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 -[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 -[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 +[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 +[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 +[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 [#149696]: https://github.com/cockroachdb/cockroach/pull/149696 -[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 +[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 +[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 +[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 [#143441]: https://github.com/cockroachdb/cockroach/pull/143441 -[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 -[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 -[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 -[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 -[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 -[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 -[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 -[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 -[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 -[#145391]: https://github.com/cockroachdb/cockroach/pull/145391 -[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 -[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 -[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 -[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 -[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 -[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 -[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 -[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 -[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 -[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 -[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 -[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 -[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 -[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 -[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 -[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 -[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 -[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 -[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 -[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 -[#144536]: https://github.com/cockroachdb/cockroach/pull/144536 -[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 -[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 +[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 +[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 +[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 +[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 +[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 +[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 +[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 +[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 +[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 [#145551]: https://github.com/cockroachdb/cockroach/pull/145551 -[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 +[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 [#143752]: https://github.com/cockroachdb/cockroach/pull/143752 -[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 -[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 -[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 -[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 -[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 -[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 -[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 -[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 -[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 -[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 -[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 -[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 -[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 -[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 +[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 +[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 +[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 +[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 +[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 +[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 +[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 +[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 +[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 +[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 +[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 +[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 +[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 +[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 +[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 +[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 +[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 +[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 +[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 +[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 +[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 +[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 +[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 +[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 +[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 +[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 +[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 [#143400]: https://github.com/cockroachdb/cockroach/pull/143400 -[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 -[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 -[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 +[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 +[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 +[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 +[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 +[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 +[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 +[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 +[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 +[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 +[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 +[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 +[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 +[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 +[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 +[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 +[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 +[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 +[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 +[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 +[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 +[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 +[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 +[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 [#142670]: https://github.com/cockroachdb/cockroach/pull/142670 -[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 -[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 -[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 +[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 +[#153724]: https://github.com/cockroachdb/cockroach/pull/153724 +[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 +[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 +[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 +[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 +[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 +[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 +[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 +[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 +[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 +[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 +[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 +[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 +[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 +[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 +[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 +[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 +[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 +[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 +[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 +[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 +[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 +[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 +[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 [#154631]: https://github.com/cockroachdb/cockroach/pull/154631 -[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 -[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 -[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 -[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 -[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 -[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 [#148535]: https://github.com/cockroachdb/cockroach/pull/148535 -[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 -[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 -[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 -[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 -[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 -[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 -[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 -[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 -[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 -[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 -[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 +[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 +[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 +[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 +[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 +[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 +[#144658]: https://github.com/cockroachdb/cockroach/pull/144658 +[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 +[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 +[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 +[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 +[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 +[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 +[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 +[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 [#150238]: https://github.com/cockroachdb/cockroach/pull/150238 -[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 -[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 -[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 -[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 -[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 -[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 -[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 +[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 +[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 +[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 [#148476]: https://github.com/cockroachdb/cockroach/pull/148476 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 -[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 -[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 -[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 -[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 -[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 -[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 -[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 -[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 -[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 +[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 +[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 +[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 [#147187]: https://github.com/cockroachdb/cockroach/pull/147187 -[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 -[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 -[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 -[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 -[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 -[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 -[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 -[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 -[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 -[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 -[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 -[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 -[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 -[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 -[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 -[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 +[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 +[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 +[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 +[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 +[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 +[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 +[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 +[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 +[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 +[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 +[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 [#147869]: https://github.com/cockroachdb/cockroach/pull/147869 -[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 -[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 -[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 -[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 -[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 -[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 +[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 +[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 +[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 +[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 +[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 +[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 +[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 +[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 +[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 +[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 +[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 +[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 +[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 +[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 +[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 [#149616]: https://github.com/cockroachdb/cockroach/pull/149616 -[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 -[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 -[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 -[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 -[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 -[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 -[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 -[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 -[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 -[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 -[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 -[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 -[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 -[#143097]: https://github.com/cockroachdb/cockroach/pull/143097 +[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 +[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 +[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 +[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 +[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 +[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 +[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 +[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 +[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 +[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 +[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 +[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 +[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 +[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 +[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 +[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 [#150887]: https://github.com/cockroachdb/cockroach/pull/150887 -[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 -[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 -[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 -[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 -[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 -[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 -[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 -[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 -[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 -[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 -[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 -[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 -[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 -[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 -[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 +[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 +[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 +[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 +[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 +[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 +[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 +[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 +[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 +[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 +[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 +[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 +[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 [#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 -[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 -[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 -[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 -[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 -[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 -[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 -[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 -[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 -[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 -[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 -[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 -[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 +[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 +[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 +[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 +[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 From 8e9656f01d2e5a45fe1bf003ebdba635a9c1573f Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Tue, 2 Dec 2025 15:51:22 +0000 Subject: [PATCH 31/37] Update release notes for v25.4-v25.4.1 From 9845945dd7fd96990619b98e486a3f70fa5f5577 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Tue, 2 Dec 2025 15:51:24 +0000 Subject: [PATCH 32/37] Update release notes for v25.4-v25.4.1 From 1d534af1447da812b7bc0c705fd1b1e594d62f94 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Tue, 2 Dec 2025 15:51:25 +0000 Subject: [PATCH 33/37] Update release notes for v25.4-v25.4.1 --- .../_includes/releases/v25.4/v25.4.1.md | 1314 +---------------- 1 file changed, 19 insertions(+), 1295 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.1.md b/src/current/_includes/releases/v25.4/v25.4.1.md index 1507893e64a..8b98f55a2f2 100644 --- a/src/current/_includes/releases/v25.4/v25.4.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.1.md @@ -4,757 +4,26 @@ Release Date: December 2, 2025 {% include releases/new-release-downloads-docker-image.md release=include.release %} -

Backward-incompatible changes

- -- Vector index partition IDs now use a different function that distributes them more evenly across the key-value range, reducing potential hot spots. Due to this change, vector indexes created before v25.2.0 must be rebuilt. [#145471][#145471] - -

Security updates

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

General changes

- -- Added the `headers_json_column_name` option to the changefeed Kafka sink, allowing users to specify a column in their table(s) of type `JSONB` to be used as the Kafka headers for each row. [#142092][#142092] -- Previously, HTTP response headers included `"Cache-Control: no-cache"`, allowing responses to be stored in caches but requiring revalidation on each request. Now, the response headers include `"Cache-Control: no-store"`, ensuring that HTTP requests to the server are not cached by the client. However, requests for UI assets—such as `bundle.js`, fonts, and other static files—will continue to include `"Cache-Control: no-cache"` to allow caching and ensure the DB Console loads quickly. [#142277][#142277] -- Improved the wording of the error message when a changefeed is created with a cursor older than the garbage collection threshold. [#142408][#142408] -- Added a warning when creating a changefeed with a cursor timestamp older than 5 hours. [#142742][#142742] -- Enhanced the `/status/v2/hotranges` endpoint by adding two new filtering options: - - `per_node_limit` (`int32`): Specifies the maximum number of hot ranges to return per node. Defaults to `128` if not set. - - `stats_only` (`bool`): When set to `true`, returns only the statistics for hot ranges without fetching descriptor information, such as databases, tables, and indexes. [#144091][#144091] -- For virtual clusters, hot range logging is now performed by a single job on one node, rather than by tasks on every node. [#145549][#145549] -- The CREATE - CHANGEFEED statement now supports the - `extra_headers` option, which can be used to - specify extra headers for webhook and kafka - sinks. This can be used to add headers to all - messages sent to the sink. [#146813][#146813] -- Changefeeds now round down the progress of each range to 1 second, in order to cover more ranges in fine-grained checkpointing. [#146979][#146979] -- Changefeed source metadata now includes the `crdb_internal_table_id` field, enabling downstream consumers to uniquely identify tables even if table names change. [#147341][#147341] -- Changefeeds emitting to Kafka sinks that were created in CockroachDB v24.2.1+, or v23.2.10+ and v24.1.4+ with the `changefeed.new_kafka_sink.enabled` cluster setting enabled now include the message key, size, and MVCC timestamp in "message too large" error logs. [#147543][#147543] -- This change adds new metrics: - changefeed.stage.pts.create.latency, - changefeed.stage.pts.manage.latency, - changefeed.stage.pts.manage_error.latency, - to measure the performance of managing protected ts records. [#148471][#148471] -- Added an OTLP log sink that exports logs in OpenTelemetry Protocol format over gRPC to compatible targets such as `otel-collector`, Datadog, and Loki. [#148525][#148525] -- Kafka v2 changefeed sinks now support - a cluster setting that enables detailed error logging for messages - exceeding Kafka v2 size limit. [#148753][#148753] -- The CockroachDB spatial libraries now rely on GEOS 3.12 instead of GEOS 3.11. [#148859][#148859] -- the changefeeds with protobuf - format now supports the resolved option for emitting - resolved timestamps. [#149622][#149622] -- Changefeeds using the protobuf format - now support wrapped envelopes in kafka sinks [#149696][#149696] -- Restore jobs now log errors on retry to - the job messages table. [#149821][#149821] -- A warning is now emitted when creating or altering a - changefeed with `resolved` or `min_checkpoint_frequency` set below 500ms. This helps - users understand the tradeoff between message latency and cluster CPU usage. [#149975][#149975] -- The protobuf format for changefeeds - now support enriched envelopes. [#150501][#150501] -- Added HTTP mode to the OTLP sink, allowing logs to be exported to OpenTelemetry Protocol (OTLP) targets over HTTP. This enhancement enables agentless deployments, where logs can be sent directly to supported targets like Datadog or Grafana, without requiring an intermediary such as the OpenTelemetry Collector or Datadog Agent. [#150655][#150655] -- Added `headers` configuration option to OTLP log sink. [#150696][#150696] -- CockroachDB spatial libraries now rely on GEOS 3.13 instead of GEOS 3.12. [#151186][#151186] -- Added `WITH INDEX` option to `SHOW - BACKUPS` for faster listing of 25.4+ backups. [#152142][#152142] -- The changefeed bulk - delivery setting was made optional. [#154953][#154953] - -

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

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

SQL language changes

-- Implemented the `levenshtein_less_equal(string, string, int)` and `levenshtein_less_equal(string, string, int, int, int, int)` built-in functions, which calculate the Levenshtein distance between two strings. [#104649][#104649] -- The owner of a database can now set default session variables per database using the `ALTER ROLE ALL IN DATABASE ... SET` or `ALTER DATABASE ... SET` commands. [#130547][#130547] -- Added the `ST_3DLength` function, which returns the 3D or 2D length of `LINESTRING` and `MULTILINESTRING` spatial types. [#139450][#139450] -- `format()` no longer requires all post-format string arguments to have the same type. [#141193][#141193] -- `concat()` no longer requires all arguments have the same type. [#141193][#141193] -- `concat_ws()` now accepts arguments of any type in the second and later positions (the separator must still be a string). [#141193][#141193] -- `pg_column_size()` no longer requires that all arguments have the same type. [#141193][#141193] -- `num_nulls()` and `num_nonnulls()` no longer require all arguments to have the same type. [#141193][#141193] -- `json_build_object()`, `jsonb_build_object()`, `json_build_array()`, and `jsonb_build_array()` no longer require that all arguments have the same type. [#141193][#141193] -- Double-quoted key accessors are now supported in JSONPath queries. For example, `SELECT '$."1key"."key2"'::JSONPATH;`. [#142241][#142241] -- Array integer indexing is now supported in JSONPath queries. For example, `$.a[1]`. [#142241][#142241] -- Array ranges are now supported in JSONPath queries. For example, `$.a[1 to 3]`). [#142241][#142241] -- Array unions are now supported in JSONPath queries. For example, `$.a[1, 2 to 4, 7, 8]`. [#142241][#142241] -- Fixed a regression due to join-elimination rules that prevented other optimization rules from applying. [#142252][#142252] -- Statements such as `REFRESH MATERIALIZED VIEW` and `CREATE MATERIALIZED VIEW` can now be executed with an `AS OF SYSTEM TIME` clause. These statements can still not be used in an explicit transaction. [#142259][#142259] -- Add the `jsonb_path_query` function, which takes in a JSON object and a JSONPath query and returns the resulting JSON object. [#142336][#142336] -- Added the `ALTER VIRTUAL CLUSTER .. SET REPLICATION SOURCE` command so users can configure producer jobs on the source cluster. Currently, users can only configure the `EXPIRATION WINDOW`. Also, removed the `EXPIRATION WINDOW` option from the consumer side command of `ALTER VIRTUAL CLUSTER SET REPLICATION`. [#142501][#142501] -- `EXPLAIN ANALYZE` statements now display the number of transaction retries and time spent retrying, if non-zero, in the plan output. [#142692][#142692] -- Users can now begin logical data replication (LDR) on an existing table if the user has a table-level `REPLICATIONDEST` privilege. Furthermore, users can now begin LDR onto an automatically created table if the user has the parent database level `CREATE` privilege. Finally, during bidirectional LDR, the user in the original source URI, who will begin the reverse LDR stream, to authorize via this table-level `REPLICATIONDEST` privilege. [#142840][#142840] -- Logical operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '1 < 2 && 3 >= 2')`. [#142899][#142899] -- Comparison operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', 1 < 2)`. [#142899][#142899] -- It is now possible to automatically collect partial table statistics, but disable automatic collection of full table statistics. The new cluster and table settings to enable/disable automatic collection of full table statistics (without affecting the settings for partial stats) are `sql.stats.automatic_full_collection.enabled` and `sql_stats_automatic_full_collection_enabled`, respectively. The settings default to `true`. [#142924][#142924] -- The return type of the `workload_index_recs` built-in function now includes two columns. The first column, `index_rec`, remains a `STRING` type and contains the index recommendation. The second column, `fingerprint_ids`, is new and has the `BYTES[]` type. [#142927][#142927] -- Update edge cases in the `width_bucket()` function to return `count + 1` for a positive infinity operand, and `0` for a negative infinity operand, instead of an error. [#142932][#142932] -- Implemented various `power()` and `^` edge cases to match PostgreSQL behaviour. Some expressions that previously returned `NaN` now return specific numbers; some expressions that previously returned `Infinity` or `NaN` now return errors; and some expressions with infinite exponents now return different results. [#142932][#142932] -- Added the `jsonb_path_exists` function, which accepts a JSON object and JSONPath query and returns whether the query returned any items. [#143028][#143028] -- Filters are now supported in JSONPath queries, using the format `$ ? (predicate)`. This allows results to be filtered. For example, `SELECT jsonb_path_query('{"a": [1,2,3]}', '$.a ? (1 == 1)');`. [#143097][#143097] -- Addition, subtraction, multiplication, division, and modulo operators are now supported in JSONPath queries. [#143210][#143210] -- String comparisons are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '"a" < "b"');`. [#143240][#143240] -- Null comparisons are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', 'null != 1');`. [#143240][#143240] -- `like_regex` predicate evaluation is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '"hello" like_regex "^he.*$"');`. [#143240][#143240] -- The job description for `AUTO CREATE PARTIAL STATS` now clearly indicates that the job is for automatic partial statistics collection, improving `system.jobs` visibility and debugging. [#143283][#143283] -- Added documentation for previously hidden DDL statements related to row-level security (RLS). RLS enables fine-grained access control by enforcing policies that determine which rows a user can read or modify. [#143510][#143510] -- Assigning to an element of a composite-typed variable in a PL/pgSQL routine now respects case-sensitivity rules. For example, a field named `"FOO_Bar"` can be assigned using `NEW."FOO_Bar" = 100`. [#143579][#143579] -- Wildcard key accessors are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{"a": 1, "b": true}', '$.*');`. [#143588][#143588] -- Unary arithmetic operators are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('[1, 2, 3]', '-$');`. [#143613][#143613] -- `last` is now supported for array indexing in JSONPath queries. For example, `SELECT jsonb_path_query('[1, 2, 3, 4]', '$[1 to last]');`. [#143658][#143658] -- `exists()` is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('[1, 2, 3]', 'exists($[*])');`. [#143667][#143667] -- `() is unknown` is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '($ < 1) is unknown');`. [#143668][#143668] -- `starts with ""` is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('"abcdef"', '$ - starts with "abc"');`. [#143675][#143675] -- Set-returning functions (SRF) are now supported in PL/pgSQL. A PL/pgSQL SRF can be created by declaring the return type as `SETOF ` or `TABLE`. [#143820][#143820] -- Usage of `TG_ARGV` in trigger functions is now disallowed by default. The session setting `allow_create_trigger_function_with_argv_references` can be set to `true` to allow usage (with 1-based indexing). [#143827][#143827] -- A new `execution time` statistic is now reported on `EXPLAIN ANALYZE` output for most operators. Previously, this statistic was only available on the DistSQL diagrams in `EXPLAIN ANALYZE (DISTSQL)` output. [#143857][#143857] -- Added a new session variable `create_table_with_schema_locked`, which can be used to ensure all tables created by a session have the storage parameter `schema_locked` set. [#143892][#143892] -- Added the `jsonb_path_query_first` function, which returns the first result from `jsonb_path_query`. [#144006][#144006] -- Added the `jsonb_path_query_array` function, which returns the result of `jsonb_path_query` wrapped in a JSON array. [#144006][#144006] -- Added the `jsonb_path_match` function, which returns the result of a predicate query. [#144006][#144006] -- The following syntax is now supported: `GRANT ... ON ALL ROUTINES IN SCHEMA ...`; `REVOKE ... ON ALL ROUTINES IN SCHEMA ...`; `ALTER DEFAULT PRIVILEGES GRANT ... ON ROUTINES ...`; `ALTER DEFAULT PRIVIELGES REVOKE ... ON ROUTINES ...`. The `ROUTINES` keyword makes the command apply to both functions and stored procedures. Note that `ALTER DEFAULT PRIVILEGES ... ON FUNCTIONS` already applied to stored procedures (which aligns with the PostgreSQL behavior), and that is not changing. [#144189][#144189] -- Parenthesized expressions are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{"a": {"b": true}}', '($.a).b');` [#144245][#144245] -- The `.size()` method is now supported in JSONPath expressions. For example, `SELECT jsonb_path_query('[1, 2, 3]', '$.size()');`. [#144266][#144266] -- The `.type()` method is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('[1, 2, 3]', '$.type()');`. [#144266][#144266] -- Non-integer array indices are now supported in JSONPath queries (e.g., `SELECT jsonb_path_query('[1, 2, 3]', '$[2.5]');`). Indices are rounded toward 0. [#144385][#144385] -- The variable arguments of polymorphic built-in functions (e.g., `concat`, `num_nulls`, `format`, `concat_ws`, etc.) no longer need to have the same type, matching PostgreSQL behavior. As a result, CockroachDB's type inference engine will no longer be able to infer argument types in some cases where it previously could, and there is a possibility that CockroachDB applications will encounter new errors. The new session variable `use_pre_25_2_variadic_builtins` restores the previous behavior (and limitations). [#144522][#144522] -- When creating a vector index with the `USING` syntax, `hnsw` can now be specified as the index type, although a `cspann` vector index is still provided. This change increases compatibility with third-party tools. [#144533][#144533] -- The `vector_l2_ops` operator class can now be specified for a vector index. Because `vector_l2_ops` is the default, it is possible to omit the operator class from an index definition. [#144533][#144533] -- Added new cluster settings: `sql.metrics.application_name.enabled` and `sql.metrics.database_name.enabled`. These settings default to `false` and can be set to `true` to display the application name and database name, respectively, on supported metrics. [#144610][#144610] -- Added support for numeric JSONPath methods `.abs()`, `.floor()`, `.ceiling()`. For example, `SELECT jsonb_path_query('-0.5', '$.abs()');`. [#144643][#144643] -- Added support for `like_regex` flags in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '"a" like_regex ".*" flag "i"');`. [#144658][#144658] -- `CREATE VECTOR INDEX` and `ALTER PRIMARY KEY` now send a notice that vector indexes will be offline during the change operation when the `sql_safe_updates` session setting is disabled. [#144702][#144702] -- Added support for camelCase parameter names - (e.g., "SharedAccessKeyName") in Azure Event Hub Kafka sink - configuration [#144735][#144735] -- Vector index creation is now prevented until the entire cluster upgrade has been finalized on v25.2 or later. [#145091][#145091] -- Disabled `IMPORT INTO` for tables with vector indexes, because importing into vector indexes is not implemented. [#145236][#145236] -- Added support for query tagging, which allows users to add query tags to their SQL statements via comments. These query tags are included in: -- All log entries generated during the execution of a SQL statement and are prefixed by `querytag-`. -- Traces and are prefixed by `querytag-`. -- In the `crdb_internal.cluster_execution_insights` and `crdb_internal.node_execution_insights` virtual tables in a new `query_tags` JSONB column. -This feature is disabled by default and can be enabled using the `sql.sqlcommenter.enabled` cluster setting. Comments must follow the [SQLCommenter specification](https://google.github.io/sqlcommenter/spec/). [#145435][#145435] -- Fixed a bug that caused a routine with an `INSERT` statement to unnecessarily block dropping a hash-sharded index or computed column on the target table. This fix applies only to newly created routines. In releases prior to v25.3, the fix must be enabled by setting the session variable `use_improved_routine_dependency_tracking` to `on`. [#146250][#146250] -- `~~` and `!~~` are now supported aliases for `LIKE` and `NOT LIKE`. [#146764][#146764] -- `~~*` and `!~~*` are now supported aliases for `ILIKE` and `NOT ILIKE`. [#146764][#146764] -- Added a session variable `initial_retry_backoff_for_read_committed` that controls the initial backoff duration when retrying an individual statement in an explicit `READ COMMITTED` transaction. A duration of `0` disables exponential backoff. If a statement in an explicit `READ COMMITTED` transaction is failing with the `40001` error `ERROR: restart transaction: read committed retry limit exceeded; set by max_retries_for_read_committed=...`, then you should set `initial_retry_backoff_for_read_committed` to a duration proportional to the typical execution time of the statement (in addition to also increasing `max_retries_for_read_committed`). [#146860][#146860] -- Deterministic collations are now supported with `LIKE`. A deterministic collation considers strings to be equal only if they consist of the same byte sequence. [#147045][#147045] -- The `information_schema.triggers` table is now populated with trigger metadata. Users can query this table to see all triggers defined in their database, including the trigger name, timing (`BEFORE`/`AFTER`), event type (`INSERT`/`UPDATE`/`DELETE`), and associated function. Each trigger event appears as a separate row in the table. [#147237][#147237] -- The `pg_catalog.pg_trigger` table now returns metadata about database triggers. [#147248][#147248] -- Directionality may no longer be assigned to any vector index column. Prefix columns are not scannable in a vector index, so directionality is not relevant to them. [#147307][#147307] -- Added the `SHOW CREATE ALL ROUTINES` statement, which can be used to show `CREATE` statements for all user-defined functions (UDFs) and procedures in the current database. [#147452][#147452] -- Added the metrics `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count`, which count the number of automatic retries of SQL transactions and statements, respectively, within the database. These metrics differ from the related `txn.restarts.*` metrics, which count retryable errors emitted by the KV layer that must be retried. The new `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count` metrics count auto-retry actions taken by the SQL layer in response to some of those retryable errors. [#147682][#147682] -- Computed column expressions and `ON UPDATE` expressions can now reference user-defined functions. [#147817][#147817] -- Partial indexes can now reference user-defined functions. [#147817][#147817] -- Added the `SHOW CREATE ALL TRIGGERS` statement. [#147836][#147836] -- The `CITEXT` data type is now supported, enabling case-insensitive comparisons for `CITEXT` columns. Internally, `CITEXT` is equivalent to using the undetermined level 2 collation `und-u-ks-level2`. For example, under `CITEXT`, the expression `'test' = 'TEST'` returns `TRUE`. [#147864][#147864] -- Increased the default value for the `max_retries_for_read_committed` session variable from `10` to `100`. Testing has shown that some high-contention workloads running under `READ COMMITTED` isolation benefit from more statement retries. [#147869][#147869] -- The session variable `initial_retry_backoff_for_read_committed` now defaults to `2` (milliseconds). Testing has shown that some high-contention workloads running under `READ COMMITTED` isolation benefit from exponential backoff. `2` might be too quick of an initial backoff for longer-running statements, but setting this value much higher than the normal duration of execution will cause excessive delay. [#147869][#147869] -- `IMPORT TABLE`, `IMPORT PGDUMP`, and `IMPORT MYSQLDUMP` are now fully removed. These statements have been deprecated in favor of `IMPORT INTO` since v23.2. [#148248][#148248] -- Changed the basic sequence caching option to cache at the per-node level by default. The `PER SESSION CACHE` sequence option is added to provide the previous per-session cache behavior. [#148290][#148290] -- The functionality provided by session variable `enforce_home_region_follower_reads_enabled` was deprecated in v24.2.4 and is now removed. (The variable itself remains for backward compatibility but has no effect.) Note that the related session variable `enforce_home_region` is **not** deprecated and still functions normally. [#148314][#148314] -- Removed the 'started' column in `SHOW JOBS`, which was a duplicate of the 'created' column. [#148464][#148464] -- Added support for automatically determining the region column for a `REGIONAL BY ROW` table using a foreign key constraint. The foreign key is specified by setting a new table storage parameter `infer_rbr_region_col_using_constraint`, and must contain the region column. This can be useful for applications that are unable to guarantee that a child row is inserted or updated from the same region as the matching parent row. [#148540][#148540] -- Added support for invoking a UDF from a view query. Renaming or setting the schema on the routine is currently not allowed if it is referenced by a view. [#148616][#148616] -- Updated the `SHOW CREATE FUNCTION` and `SHOW CREATE PROCEDURE` statements to show fully qualified table names rather than assuming they are qualified with the current database. [#148746][#148746] -- Added the `has_system_privilege` builtin function, which can be used to check if a user has the given system privilege. [#149051][#149051] -- Updated schema change job status messages to be more user-friendly and descriptive, instead of using internal schema change architecture terminology. [#149096][#149096] -- The logical cluster now uses an external connection and automatically updates its configuration when that connection changes. [#149261][#149261] -- Fix a bug where extra quotes or escaped - quote characters would be added to topic names in changefeeds. - Can be turned off by setting feature.changefeed.bare_table_names to - false. [#149438][#149438] -- The users with the role option `PROVISIONSRC` - assigned to them will be unable to change their own password overriding any - config set for sql.auth.change_own_password.enabled cluster setting. Changing - other role options still has the same privilege requirements as before (either - CREATEROLE or CREATELOGIN, depending on the option). The role option for - PROVISIONSRC is also only assignable and cannot be altered using `ALTER role` - command. [#149463][#149463] -- The session setting `optimizer_prefer_bounded_cardinality` is now enabled by default. This setting instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. [#149486][#149486] -- Added `num_txn_retries` and `num_txn_auto_retries` columns to the `crdb_internal.{cluster,node}_queries` virtual tables and to the output of `SHOW QUERIES`. When not `NULL`, these columns reflect the same values as `num_retries` and `num_auto_retries` in `crdb_internal.{cluster,node}_transactions` for the transaction in which the query is running. [#149503][#149503] -- The session setting `optimizer_min_row_count`, which sets a lower bound on row count estimates for relational expressions during query planning, is now set to `1` by default. [#149602][#149602] -- WITH header_row flag is added to EXPORT. - Returns error for non-csv type. Another row is prepended to the csv file - with the column names. [#149686][#149686] -- Users can now ALTER EXTERNAL CONNECTION to - change the external connection URI when granted UPDATE privilege on - EXTERNAL CONNECTION. - - Fixes #98610 [#149869][#149869] -- The `json ? string`, `json ?& array`, `json ?| array`, and `array && array` operators are now index-accelerated for `INVERTED JOIN` statements if there is an inverted index on the JSON column referenced on the left-hand side of the expression. [#149898][#149898] -- The column for `estimated_last_login_time` in - `system.users` will be updated with the TIMESTAMP of user login post successful - authentication. The `SHOW users` view will now show the updated value. - - ``` - root@localhost:26257/defaultdb> SHOW users; - username | options | member_of | estimated_last_login_time - -----------------+-------------------------------------------------------------------------------------+-----------+-------------------------------- - admin | {} | {} | NULL - root | {} | {admin} | 2025-07-13 11:51:29.406216+00 - sourav.sarangi | {} | {} | NULL - (3 rows) - - NOTICE: estimated_last_login_time is computed on a best effort basis; it is not guaranteed to capture every login event - ``` [#150105][#150105] -- The column for `estimated_last_login_time` in - `system.users` will be updated with the TIMESTAMP of user login post successful - authentication. The `SHOW users` view will now show the updated value. - - ``` - root@localhost:26257/defaultdb> SHOW users; - username | options | member_of | estimated_last_login_time - -----------------+-------------------------------------------------------------------------------------+-----------+-------------------------------- - admin | {} | {} | NULL - root | {} | {admin} | 2025-07-13 11:51:29.406216+00 - sourav.sarangi | {} | {} | NULL - (3 rows) - - NOTICE: estimated_last_login_time is computed on a best effort basis; it is not guaranteed to capture every login event - ``` [#150375][#150375] -- The session setting `optimizer_min_row_count`, which sets a lower bound on row count estimates for relational expressions during query planning, is now set to `1` by default. [#150376][#150376] -- `LTREE` is now supported with ancestry operators and with the `concat` operator. Specifically, CockroachDB now allows `ltree @> ltree`, `ltree[] @> ltree`, `ltree @> ltree[]`, `ltree <@ ltree`, `ltree[] <@ ltree`, and `ltree <@ ltree[]` binary comparisons, as well as `ltree[] ?@> ltree`, `ltree[] ?<@ ltree`, and `ltree || ltree` binary operations. The `?@>` and `?<@` are new binary operators that return the first ltree (or `NULL`) that is an ancestor or descendant of the right ltree argument in the array. [#150598][#150598] -- Clusters utilizing cluster virtualization, such as those running Physical Cluster Replication (PCR), apply the same admission control (AC) pacing to various bulk operations used by clusters that are not running with cluster virtualization. [#150633][#150633] -- All PostgreSQL built-in functions for `LTREE` are now supported: `subltree()`, `subpath()`, `nlevel()`, `index()`, `text2ltree()`, `ltree2text()`, and `lca()`. While the `lca()` function in PostgreSQL specifically limits up to 8 LTREE args, the CockroachDB `lca()` function accepts any variable number of ltree args. [#150647][#150647] -- `CREATE USER` and `GRANT` role operations now wait for full-cluster visibility of the new user table version rather than blocking on convergence. [#150747][#150747] -- Improved the optimizer to hoist projections above joins in more cases, which can lead to better query plans. This behavior can be enabled with the new session variable `optimizer_use_improved_hoist_join_project`. [#150887][#150887] -- Introduced `INSPECT TABLE` and `INSPECT DATABASE` syntax (whose underlying logic is not yet implemented). Added the `enable_inspect_command` session setting, which toggles access to the new `INSPECT ...` features as they're implemented. [#151067][#151067] -- Tables with vector indexes are no longer taken offline while the vector index builds. [#151074][#151074] -- Previously, using a pausable portal with a procedure call could cause a panic, depending on the function body. Now, transaction control statements such as procedure calls (e.g., `CALL myfunc()`) are disallowed within pausable portals. [#151153][#151153] -- Added the `allow_unsafe_internals` session variable and `sql.defaults.allow_unsafe_internals` cluster setting to gate access to system database internals. Default access is allowed to support testing. [#151362][#151362] -- When `sql_safe_updates` is enabled, the `ALTER TABLE ... LOCALITY` statement will be blocked when trying to convert an existing table to `REGIONAL BY ROW`, unless a region column has been added to the table. This protects against undesired behavior that caused `UPDATE` or `DELETE` statements to fail against the table while the locality change was in progress. [#151423][#151423] -- Introduced the `SHOW INSPECT ERRORS` statement that is unimplemented. [#151674][#151674] -- Added metrics for statements executed within a stored procedure or function. The following metrics count statements that began execution, including those that failed: `sql_routine_select_started_count`, `sql_routine_update_started_count`, `sql_routine_insert_started_count`, and `sql_routine_delete_started_count`. The following metrics count only successful executions: `sql_routine_select_count`, `sql_routine_update_count`, `sql_routine_insert_count`, and `sql_routine_delete_count`. All counters are global and increment before the transaction is committed or aborted. [#151689][#151689] -- Introduced the `inspect_errors` system table. [#151821][#151821] -- Added a new session variable, `disable_optimizer_rules`, which allows users to provide a comma-separated list of optimizer rules to disable during query optimization. This allows users to avoid rules that are known to create a suboptimal query plan for specific queries. [#151959][#151959] -- The SQL observability statements `SHOW TRANSACTIONS`, `SHOW QUERIES`, and `SHOW SESSIONS` now include an `isolation_level` column that shows the isolation level of the active transaction, or the session's default isolation level when there is no active transaction. [#152352][#152352] -- 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] -- The default value of `use_soft_limit_for_distribute_scan` session variable is now `true`. This means that, by default, the soft limit (if available) will be used to determine whether a scan is "large" and, thus, should be distributed. For example, with `estimated row count: 100 - 10,000`, CockroachDB will use `100` as the estimate to compare against the value of `distribute_scan_row_count_threshold`. [#152557][#152557] -- Added the `bulkio.import.row_count_validation.unsafe.enabled` cluster setting (default: `false`), which triggers an asynchronous `INSPECT` job at the end of an `IMPORT` to validate row counts. [#153294][#153294] -- Added a built-in function, `crdb_internal.request_transaction_bundle`, that allows users to request a transaction diagnostics bundle for a specified transaction fingerprint ID. [#153608][#153608] -- Implemented the `pg_get_function_arg_default` builtin function. This also causes the `information_schema.parameters(parameter_default)` column to be populated correctly. [#153625][#153625] -- Added the `SHOW INSPECT ERRORS` command. This command can be used to view issues that are identified by running the `INSPECT` command to validate tables and indexes. [#154337][#154337] -- Added the `sql.catalog.allow_leased_descriptors.enabled` cluster setting, which is false by default. When set to true, queries that access the `pg_catalog` or `information_schema` can use cached leased descriptors to populate the data in those tables, with the tradeoff that some of the data could be stale. [#154491][#154491] -- 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) [#154631][#154631] -- The optimizer can now use table statistics that merge the latest full statistic with all newer partial statistics, including those over arbitrary constraints over a single span. [#154755][#154755] -- 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. [#155123][#155123] -- 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. [#155123][#155123] -- Added the `INSPECT` command, which runs consistency validation check jobs against tables or databases and specified indexes. [#155441][#155441] -- 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`. [#155509][#155509] - Vector indexing is now enabled by default. `feature.vector_index.enabled` defaults to `true`. [#155561][#155561] +- Added a `sql.statements.rows_read.count` metric that counts the number of index rows read by SQL statements. [#156459][#156459] +- Added sql.statements.index_rows_written.count metric + that counts the number of primary and secondary index rows modified by SQL + statements. [#156459][#156459] - Added sql.statements.index_bytes_written.count metric that counts the number of primary and secondary index bytes modified by SQL statements. [#156459][#156459] - Added sql.statements.bytes_read.count metric that counts the number of bytes scanned by SQL statements. [#156459][#156459] -- Added sql.statements.index_rows_written.count metric - that counts the number of primary and secondary index rows modified by SQL - statements. [#156459][#156459] -- Added sql.statements.rows_read.count metric - that counts the number of index rows read by SQL statements. [#156459][#156459] - CockroachDB now supports index accelerating `jsonb_path_exists` filters with JSONpath expressions that end with an AnyKey (`*`). [#156508][#156508] -

Operational changes

- -- Added the cluster setting `server.child_metrics.include_aggregate.enabled` (default: `true`) that controls the behavior of Prometheus child metrics reporting (`/_status/vars`). When set to `true`, child metrics include an aggregate time series, maintaining the existing behavior. When set to `false`, it stops reporting the aggregate time series, preventing double counting when querying metrics. [#141601][#141601] -- To create a physical cluster replication (PCR) stream, a user must have the `REPLICATIONDEST` privilege, in addition to the already required `MANAGEVIRTUALCLUSTER` privilege. [#142345][#142345] -- To create a physical cluster replication (PCR) stream, a user must have the `REPLICATIONDEST` privilege, in addition to the already required `MANAGEVIRTUALCLUSTER` privilege. [#142345][#142345] -- The `sys.cpu.host.combined.percent-normalized` metric has been updated to include additional counters for more accurate host CPU measurement and to reduce underreporting. It now accounts for time spent processing hardware (`irq`) and software (`softirq`) interrupts, as well as `nice` time, which represents low-priority user-mode activity. [#142478][#142478] -- The `kv.snapshot_receiver.excise.enable` cluster setting has been retired. This feature is now enabled unconditionally. [#142651][#142651] -- Previously, the user supplied in the source cluster connection in PCR and LDR required the `REPLICATION` privilege, which will be deprecated in v25.2 but temporarily supported. Instead, the user will need the new `REPLICATION SOURCE` privilege. [#142749][#142749] -- All `ALTER VIRTUAL CLUSTER REPLICATION JOB` commands for physical cluster replication (PCR), except for `ALTER VIRTUAL CLUSTER SET REPLICATION SOURCE`, will require the `REPLICATIONDEST` privilege, in addition to `MANAGEVIRTUALCLUSTER`. `ALTER VIRTUAL CLUSTER SET REPLICATION SOURCE` now requires the `REPLICATIONSOURCE` privilege. If the ingestion job was created before v25.1, the user can still alter the replication job without the `REPLICATIONDEST` privilege. [#142772][#142772] -- Added 4 new latency metrics: - sql.service.latency.historical, sql.service.latency.consistent, - sql.exec.latency.historical, sql.exec.latency.consistent for easier query - optimizations. [#142826][#142826] -- The /health/restart_safety endpoint indicates - when it is unsafe to terminate a node. [#142930][#142930] -- The `kv.mvcc_gc.queue_kv_admission_control.enabled` cluster setting was retired. [#143124][#143124] -- The `server.client_cert_expiration_cache.capacity` cluster setting has been removed. The `security.certificate.expiration.client` and `security.certificate.ttl.client` metrics now report the lowest value observed for a user in the last 24 hours. [#143384][#143384] -- Previously, the user provided in the source URI in the logical data replication (LDR) stream required the `REPLICATIONSOURCE` privilege at the system level. With this change, the user only needs this privilege on the source tables (i.e., a table-level privilege). [#143456][#143456] -- Prometheus metrics are now also available at the `/metrics` endpoint, in addition to the existing `/_status/vars` endpoint. The new `/metrics` endpoint emits statically labeled metrics and will evolve more rapidly as CockroachDB migrates metrics to use labels instead of defining different metric names. For compatibility, users can continue to use `/_status/vars`, where metric names will remain stable. [#143536][#143536] -- `debug zip` queries are now attributed to internal SQL metrics. As a result, users will no longer see their impact on the SQL charts in the DB Console. [#143711][#143711] -- Added a new metric, `kv.loadsplitter.cleardirection`, which increments when the load-based splitter observes that more than 80% of replica access samples are moving in a single direction (either left/descending or right/ascending). [#143927][#143927] -- The cluster setting `server.client_cert_expiration_cache.capacity` has been deprecated. The client certificate cache now evicts client certificates based on expiration time. [#144181][#144181] -- Added job tracing support to changefeeds. [#144412][#144412] -- When the `server.telemetry.hot_ranges_stats.enabled` cluster setting is enabled, nodes check for hot ranges every minute instead of every 4 hours. A node logs its hot ranges when any single replica exceeds 250 ms of CPU time per second. In multi-tenant deployments, the check runs every 5 minutes and logs hot ranges for the entire cluster. [#144414][#144414] -- Logical data replication (LDR) can now replicate on tables with partial indexes when using the default on SQL writer path. [#144415][#144415] -- partial index schema changes are supported in - replicating tables when logical_replication.consumer.immediate_mode_writer is - not set to legacy-kv [#144508][#144508] -- Logs for hot ranges (`hot_ranges_stats` events) have been moved to the `HEALTH` logging channel. [#144567][#144567] -- Added the metric `changefeed.checkpoint.timestamp_count` that measures the number of unique timestamps in a changefeed span-level checkpoint. It may be useful to monitor this metric to determine if quantization settings should be changed. [#145117][#145117] -- In a physical cluster replication (PCR) deployment, it is not possible for the standby system virtual cluster, or the reader virtual cluster to upgrade the reader virtual cluster by setting the version cluster setting. It is necessary to: - 1. Upgrade the standby system virtual cluster. - 1. Upgrade the primary system virtual cluster. - 1. Upgrade the primary virtual cluster. - 1. Wait for the replicated time to advance past the time the primary virtual cluster upgraded. - 1. Shut down the reader virtual cluster. - 1. Upgrade the destination host cluster. - 1. Re-initialize the reader virtual cluster with `ALTER VIRTUAL CLUSTER SET REPLICATION READ VIRTUAL CLUSTER`. [#146127][#146127] -- Added an `alter_changefeed` structured log event to provide more visibility into when an `ALTER CHANGEFEED` event occurred and what changed. [#147679][#147679] -- Added new timeseries metrics to the `storage.value_separation.*` namespace for observing the behavior of storage engine value separation. [#147728][#147728] -- Introduced the following cluster settings for enabling and configuring value separation in the storage engine: `storage.value_separation.enabled`, `storage.value_separation.minimum_size`, and `storage.value_separation.max_reference_depth`. [#148535][#148535] -- Non-admin users no longer have access to changefeed jobs they do not own and which are not owned by a role of which they are a member, regardless of whether they have the `CHANGEFEED` privilege on the table or tables those jobs may be watching. Admin users, or those with global `SHOWJOB` / `CONTROLJOB` privileges, can still interact with all jobs, regardless of ownership. [#148537][#148537] -- In order to selectively capture - traces for transactions running in an active workload without haing - to capture them via statement diagnostic bundles, customers can now - use the `sql.trace.txn.sample_rate` cluster setting to enable tracing - for a fraction of their workload. The `sql.trace.txn.enable_threshold` - will still need to be set to a positive value to provide a filter - for how slow a transaction needs to be after being sampled to merit - emitting a trace. Traces are emitted to the `SQL_EXEC` logging - channel. [#148542][#148542] -- Added the following cluster settings for configuring blob file rewrite compactions: `storage.value_separation.rewrite_minimum_age` and `storage.value_separation.compaction_garbage_threshold`. [#148782][#148782] -- The default value of `server.mem_profile.total_dump_size_limit` (which controls how much space can be used by automatically collected heap profiles) has been increased from 256MiB to 512MiB. [#148848][#148848] -- Added new experimental values for compression cluster settings to the storage engine. [#148849][#148849] -- The `storage.value_separation.enabled` cluster setting is now enabled by default. This enables value separation for SSTables, where values exceeding a certain size threshold are stored in separate blob files rather than inline in the SSTable. This helps improve write performance (write amplification) by avoiding rewriting such values during compactions. [#148857][#148857] -- A structured event is now logged to the `SQL_SCHEMA` channel when the `REFRESH MATERIALIZED VIEW` statement is executed. [#149153][#149153] -- Removed the `storage.columnar_blocks.enabled` cluster setting; columnar blocks are always enabled. [#149371][#149371] -- A new feature is now available that automatically captures Go execution traces on a scheduled interval. This feature incurs a performance penalty and is generally intended for use under the guidance of Cockroach Labs Support. It can be configured using the following cluster settings: - -- `obs.execution_tracer.interval`: Enables the tracer and sets the interval for capturing traces. Set to a value greater than 0 to activate. -- `obs.execution_tracer.duration`: Specifies the duration for each captured trace. -- `obs.execution_tracer.total_dump_size_limit`: Sets the maximum disk space allowed for storing execution traces. Older traces are automatically deleted when this limit is reached. [#149373][#149373] -- Introduced a cluster setting, `sql.stats.error_on_concurrent_create_stats.enabled`, which modifies how CockroachDB reacts to concurrent auto stats jobs. The default, `true`, maintains the previous behavior. Setting `sql.stats.error_on_concurrent_create_stats.enabled` to `false` will cause the concurrent auto stats job to be skipped with just a log entry and no increased error counters. [#149538][#149538] -- The value of `sql.stats.error_on_concurrent_create_stats.enabled` now defaults to `false`, suppressing error counters for auto stats jobs that fail due to concurrent stats jobs in progress. [#149848][#149848] -- Updated TTL job replanning to be less sensitive by focusing specifically on detecting when nodes become unavailable rather than reacting to all plan differences. The cluster setting `sql.ttl.replan_flow_threshold` may have been set to `0` to work around the TTL replanner being too sensitive; this fix will alleviate that and any instance that had set `replan_flow_threshold` to `0` can be reset back to the default. [#150771][#150771] -- `auth.ldap.conn.latency.internal` has been added to denote the internal authentication time for ldap auth method. [#151105][#151105] -- Introduced two new logging channels: `KV_EXEC` and `CHANGEFEED`. The `KV_EXEC` channel is intended for KV events that do not fall into the `KV_DISTRIBUTION` channel. The `CHANGEFEED` channel is intended for changefeed-related events that are currently logged to the `TELEMETRY` channel. This change does not include logic to move existing logs to the new channels. [#151692][#151692] -- Restricted access to internal tables in the `crdb_internal` schema. Only a predefined allowlist of internal objects is accessible when the session variable `allow_unsafe_internals` is enabled or when the caller is internal. [#151804][#151804] -- In v26.1, changefeed events will be logged to the `CHANGEFEED` logging channel instead of `TELEMETRY`. To test the impact of this change before upgrading, set the cluster setting `log.channel_compatibility_mode.enabled` to `false`. This redirects changefeed logs to the `CHANGEFEED` channel and should be tested only in non-production environments. [#151807][#151807] -- In v26.1, SQL performance events will be logged to the `SQL_EXEC` channel instead of the `SQL_PERF` and `SQL_INTERNAL_PERF` channels. To test the impact of this change, you can set the new cluster setting `log.channel_compatibility_mode.enabled` to `false`. This redirects SQL performance logs to the `SQL_EXEC` channel. This setting should not be used in production environments, as it may affect downstream logging pipelines. [#151827][#151827] -- Restricted access to all `crdb_internal` built-ins unless the session variable `allow_unsafe_internals` is set to true, or the caller is internal. [#151887][#151887] -- In v26.1, `sampled_query` and `sampled_transaction` events will move from the `TELEMETRY` channel to the `SQL_EXEC` logging channel. To test for potential logging pipeline impacts of these changes, set `log.channel_compatibility_mode.enabled` to `false`. Avoid testing in production, as this setting changes live log behavior. [#151949][#151949] -- Delegate queries (such as `SHOW DATABASES`) are now excluded from unsafe SQL checks that restrict access to the `system` database and `crdb_internal` schema. This change ensures that these commands continue to function even when access to internal components is otherwise restricted. [#152084][#152084] -- Added the cluster setting `kvadmission.use_range_tenant_id_for_non_admin.enabled`, which can be used to disable the behavior where Admission Control uses the range's tenant ID for non-admin requests. This behavior is enabled by default. [#152181][#152181] -- CockroachDB now logs structured contention event data, including waiting and blocking transactions, contended keys, and total contention time. [#152190][#152190] -- the PCR reader tenant is always destroyed on cutover [#152509][#152509] -- CockroachDB now logs access to internal system tables and schemas considered unsafe (e.g., `crdb_internal` and `system`). A message is emitted to the `SENSITIVE_ACCESS` log channel when a user overrides the `allow_unsafe_internals` setting or is denied access to these areas. [#152532][#152532] -- A new `changefeed` file group that collects - changefeed logs has been added to the default logging configuration. [#153381][#153381] -- this patch removes the - bulkio.backup.deprecated_full_backup_with_subdir.enabled cluster setting, since - backups will now fail if it is set to true. [#153628][#153628] -- Raised the cache size for the storage engine's block cache to 256 MiB. Note that production systems should always configure this setting. [#153739][#153739] -- 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] -- the incremental_location option is now deprecated - and will be removed in a future release. This feature was added so customers - could define different TTL policies for incremental backups vs full backups. - Users can still do this since incremental backups are by default stored in a - distinct directory relative to full backups ({collection_root}/incrementals). [#153890][#153890] -- 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}`. [#154166][#154166] -- The metrics `sql.select.started.count`, `sql.insert.started.count`, `sql.update.started.count`, and `sql.delete.started.count` are now emitted with labels under the common metric name `sql.started.count`, using a `query_type` label to distinguish each operation. [#154388][#154388] -- Added the cluster setting `storage.unhealthy_write_duration` (defaults to 20s), which is used to indicate to the allocator that a store's disk is unhealthy. The cluster setting `kv.allocator.disk_unhealthy_io_overload_score` controls the overload score assigned to a store with an unhealthy disk, where a higher score results in preventing lease or replica transfers to the store, or shedding of leases by the store. The default value of that setting is 0, so the allocator behavior is unaffected. [#154459][#154459] -- Added cluster setting `sql.schema.approx_max_object_count` (default: 20,000) to prevent creation of new schema objects when the limit is exceeded. The check uses cached table statistics for performance and is approximate - it may not be immediately accurate until table statistics are updated by the background statistics refreshing job. Clusters that have been running stably with a larger object count should raise the limit or disable the limit by setting the value to 0. In future releases, the default value for this setting will be raised as more CockroachDB features support larger object counts. [#154576][#154576] - -

Command-line changes

- -- Node attributes (attrs) will now appear in - the node status cli command. [#143421][#143421] -- Added the `--validate-zip-file` flag to `cockroach debug zip` command. This flag performs a quick validation check to ensure that the generated zip file is not corrupted. The flag is enabled by default. [#146192][#146192] -- Updated the `\d
` command to show policy and Row Level Security information similar to what is shown in the output of `SHOW CREATE TABLE`. [#146215][#146215] -- The SQL shell now supports the compact output mode when `auto_trace` is enabled. [#146432][#146432] -- Removed the stale `--oss` flag from the `dev ui watch` subcommand. This flag was no longer in use, as the UI development workflow now exclusively targets the CCL build. This change simplifies the tool by removing an unused build path and potential confusion for developers. [#147978][#147978] -- The internal generator used by `cockroach workload` now supports parsing DDL schemas into a structured YAML format, enabling more flexible and detailed workload generation configurations. [#149513][#149513] -- Improved the performance of the `debug zip` query that collects `transaction_contention_events` data. This change reduces the risk of encountering “memory budget exceeded” or “query execution canceled due to statement timeout” errors. [#149570][#149570] -- The `cockroach workload` internals have been updated with built-in generators and wrappers for various SQL types—enabling modular, extensible, and reusable workload data generation. [#149728][#149728] -- Updated the internals of `cockroach workload` so there is one primary CLI entry point for workload generation, wiring together DDL parsing, schema construction, generator factory, and output routines. [#150321][#150321] -- Updated the redaction policy for cluster settings in `debug zip` output. All "sensitive" settings are now redacted in all debug zips, whether or not redaction is explicitly requested. In redacted debug zips, both "sensitive" and "non-reportable" settings are redacted. This replaces the previous behavior, which redacted all string-type settings only in redacted debug zips. [#150364][#150364] -- Added SQL workload extraction and rewriting support to the internals of `cockroach workload`, enabling placeholder‐driven data-generation workflows from CockroachDB debug logs. [#150614][#150614] -- Update the help text for the --database and --url - CLI flags to document support for virtual cluster syntax. The --database flag - now shows examples of both simple database names and the - cluster:virtual-cluster/database format. The --url flag examples now include - the virtual cluster syntax in PostgreSQL connection URLs. [#150624][#150624] -- Updated `cockroach workload` internals to read init‑time schema and SQL artifacts and run SQL workloads with placeholder‑driven data generation. [#150836][#150836] -- Added support for simple `CHECK` constraints and bit/bytes column generators to `cockroach workload`'s workload generator. [#150926][#150926] -- Added a new file, `cluster_settings_history.txt`, to debug zips. This file contains a history of cluster setting changes based on the system event log table. The history is only available while the corresponding events remain in the table. Sensitive settings are always redacted, and non-reportable settings are redacted when the debug zip is generated with redaction enabled. [#151066][#151066] - -

DB Console changes

- -- The lock and latch wait time components of a query's cumulative contention time are now tracked separately and surfaced as annotations in `EXPLAIN ANALYZE` output. [#113649][#113649] -- The metric that measures cumulative contention time now includes time spent waiting to acquire latches, in addition to time spent acquiring locks. This metric is displayed in both the DB Console and the `EXPLAIN ANALYZE` output. [#113649][#113649] -- The DB Console's `index.html` page now includes a `Content-Security-Policy` (CSP) HTTP header to help prevent cross-site scripting (XSS) attacks. [#142282][#142282] -- The Replica Quiescence graph on the DB Console's Replication Dashboard now displays the number of replicas quiesced with leader leases. [#143215][#143215] -- A new cluster setting, `ui.default_timezone`, has been added to replace the deprecated `ui.display_timezone`. The new setting supports all timezones and is used to render timestamps in the DB Console. Avoid using `ui.display_timezone`, as it will be removed in a future release. [#143499][#143499] -- The Explain Plans table on the **Statement Details** and **Plan Details** pages now indicate whether or not the plan was a generic query plan. [#144008][#144008] -- Schema insights that recommend replacing an index were previously a two-statement command consisting of a `CREATE INDEX` and a `DROP INDEX` statement. When these two DDL statements were run as a single batched command, it was possible for one statement to succeed and one to fail. This is because DDL statements do not have the same atomicity guarantees as other SQL statements in CockroachDB. Index-replacement insights are now a single `CREATE INDEX` statement followed by a comment with additional DDL statements to be run manually: an `ALTER INDEX ... NOT VISIBLE` statement, which makes the old index invisible to the optimizer, followed by a `DROP INDEX` statement that should only be run after making the old index invisible and verifying that workload performance is satisfactory. [#144101][#144101] -- The Hot Ranges page node filter has been moved out of the main filter container and now filters nodes on the backend to reduce load time. [#147089][#147089] -- The Insights page in the DB Console now displays SQL commenter query tags for statement executions. These tags provide application context (such as application name, user ID, or feature flags) embedded in SQL comments using the `sqlcommenter` format. This information can help correlate slow query performance with specific application states. The Query Tags column is available in the Statement Executions view's Statement Insights table, but it is hidden by default. To display it, use the Columns selector. [#147439][#147439] -- Updated the titles of the disk throughput graphs on the Metrics page Hardware dashboard to display only "Bytes/s" instead of including a specific magnitude, "MiB/s". The titles of the graphs are now “"Disk Read Bytes/s" and "Disk Write Bytes/s". [#147462][#147462] -- Retry counts for statements executing under `READ COMMITTED` isolation are now more accurate. [#147682][#147682] -- Updated the "Learn more" link on the **Hot Ranges** page to direct users to a newer, more comprehensive reference guide about hotspots. [#147927][#147927] -- Renamed the 'Hot Ranges' page in the DB Console to 'Top Ranges' to clarify that it shows the highest-ranked ranges by various metrics, not necessarily those experiencing high activity. [#149713][#149713] -- Fixed a bug where **Drop Unused Index** recommendations were not populated on the Schema Insights tab after a hard refresh of the Insights page. [#149838][#149838] -- Updated the DB Console so that the tenant dropdown now appears in insecure mode when multiple virtual clusters are available. [#150535][#150535] -- In the DB Console, the **Active Executions** table on the Statements and Transactions pages now includes a new **Isolation Level** column. The Sessions page also includes a new **Default Isolation Level** column. [#153617][#153617] -

Bug fixes

-- Fixed a bug where replication controls on indexes and partitions would not get properly updated during an index backfill to its new ID; this effectively discarded the replication controls set on the object before the backfill. [#141800][#141800] -- Fixed a bug where secondary indexes could be unusable by DML statements while a primary key swap was occurring, if the new primary key did not contain columns from the old primary key. [#141850][#141850] -- Fixed a bug when running with the `autocommit_before_ddl` session variable that could cause a runtime error when binding a previously prepared DDL statement. [#141851][#141851] -- The TTL deletion job now includes a retry mechanism that progressively reduces the batch size when encountering contention. This improves the chances of successful deletion without requiring manual adjustments to TTL knobs. Added the `jobs.row_level_ttl.num_delete_batch_retries` metric to track the number of times the TTL job had to reduce the batch size and try again. [#141953][#141953] -- Fixed a bug when running with the `autocommit_before_ddl` session setting that could cause a runtime error when binding a previously prepared DDL statement. [#141987][#141987] -- Fixed an issue where change data capture queries on tables without columns would fail with an internal error: `unable to determine result columns`. [#142068][#142068] -- Fixed a bug that would prevent `CREATE TRIGGER` and `DROP TRIGGER` statements from working if the `autocommit_before_ddl` session setting was enabled, and if the statement was either sent as a prepared statement or as part of a batch of multiple statements. [#142202][#142202] -- Previously, the `CREATE LOGICALLY REPLICATED` syntax would always create the destination table with the source table's name, instead of the user-provided name. Now, `CREATE LOGICALLY REPLICATED` will create the destination table with the user-provided name. [#142235][#142235] -- Fixed a bug where `EXPLAIN ANALYZE` output could incorrectly show `distribution: full` and not `distribution: local` in some cases when the physical plan was only running on the gateway node. The bug had been present since before v23.1, and did not apply to `EXPLAIN` statements. [#142248][#142248] -- Fixed a bug that could cause the upgrade to v25.1 to crash if a job was missing from the virtual table, for example if a malformed job had no payload info. [#142284][#142284] -- Fixed an issue where removed nodes could leave persistent entries in `crdb_internal.gossip_alerts`. [#142385][#142385] -- Fixed a bug where invalid default expressions could cause backfilling schema changes to retry forever. [#142490][#142490] -- Fixed a bug where index backfill progress before a `PAUSE`/`RESUME` would not get tracked. [#142602][#142602] -- Fixed an issue where dropping a database with triggers could fail due to an undropped backreference to a trigger function. [#142670][#142670] -- Fixed a bug in client certificate expiration metrics, `security.certificate.expiration.client` and `security.certificate.ttl.client`. [#142682][#142682] -- Fixed a bug where `CREATE SEQUENCE` could succeed during an ongoing `DROP SCHEMA` or `DROP DATABASE` operation. Now, `CREATE SEQUENCE` will retry if the parent object has a schema change in progress, preventing the creation of new objects under deleted parent objects. [#142696][#142696] -- Fixed a bug where, during validation of a table-level zone config, inherited values were incorrectly populated from the default range instead of from the parent database. [#142760][#142760] -- Fixed a bug where index backfills unnecessarily merged new data written to an index, which could lead to extra contention. [#142768][#142768] -- Physical Cluster Replication (PCR) reader catalogs could have orphaned rows in `system.namespace` after an object is renamed. [#142829][#142829] -- Fixed a bug which would send a replica outside of a tenant's known region when `SURVIVE REGION FAILURE` was set and exactly 3 regions were configured. [#142838][#142838] -- The reader virtual cluster now starts if the user begins a physical cluster replication (PCR) stream from a cursor via `ALTER VIRTUAL CLUSTER virtual_cluster START REPLICATION OF physical_cluster ON pgurl WITH READ VIRTUAL CLUSTER`. [#143072][#143072] -- Fixed a bug that caused changefeeds to fail on startup when scanning a single key. [#143102][#143102] -- MVCC garbage collection is now fully subject to IO admission control. Previously, it was possible for MVCC GC to cause store overload (such as LSM inversion) when a large amount of data would become eligible for garbage collection. Should any issues arise from subjecting MVCC GC to admission control, the `kv.mvcc_gc.queue_kv_admission_control.enabled` cluster setting can be set to `false` to restore the previous behavior. [#143122][#143122] -- Fixed a bug where CockroachDB incorrectly resolved routine overloads in some cases. Previously, it allowed creating routines with signatures differing only in type width (e.g., `f(p VARCHAR(1))` and `f(p VARCHAR(2))`), which is not permitted in PostgreSQL. This required precise type casting during invocation. Similarly, when dropping a routine, CockroachDB previously required exact types, unlike PostgreSQL, which is more lenient (e.g., `DROP FUNCTION f(VARCHAR)` would fail in the preceding example). This bug had existed since v23.1. [#143159][#143159] -- Fixed a bug that could cause a nil-pointer error when a column's default expression contained a volatile expression (like `nextval`) as a UDF argument. The bug was in v24.1.14, v24.3.7, v24.3.8, and v25.1. [#143170][#143170] -- Fixed a bug where calling a stored procedure could drop the procedure if it had `OUT` parameters that were not used by the calling routine. This bug had existed since PL/pgSQL `CALL` statements were introduced in v24.1. [#143173][#143173] -- Fixed a bug where CockroachDB would encounter an internal error when decoding the gists of plans with `CALL` statements. The bug had been present since v23.2. [#143252][#143252] -- Fixed a bug that could leave behind a dangling reference to a dropped role if that role had default privileges granted to itself. The bug was caused by defining privileges such as: `ALTER DEFAULT PRIVILEGES FOR ROLE self_referencing_role GRANT INSERT ON TABLES TO self_referencing_role`. [#143287][#143287] -- Fixed a crash due to `use of enum metadata before hydration` when using logical data replication (LDR) with user-defined types. [#143311][#143311] -- Previously, statement bundle collection could encounter `not enough privileges` errors when retrieving necessary information (e.g., cluster settings, table statistics, etc.) when the user that requested the bundle was different from the user that actually ran the query. This is now fixed. The bug was present since v20.2 and would result in partially incomplete bundles. [#143400][#143400] -- Fixed an issue where databases, tables, and indexes were not appearing on the Hot Ranges page for application virtual clusters. [#143441][#143441] -- Fixed a bug where a GC threshold error (which appears as "batch timestamp must be after replica GC threshold ...") could cause a schema change that backfills data to fail. Now, the error will cause the backfill to be retried at a higher timestamp to avoid the error. [#143451][#143451] -- Fixed a bug that could cause a function reference to be left behind if a procedure referred to another procedure that depended on a a table, and that table was dropped with `CASCADE`. [#143538][#143538] -- Fixed a potential deadlock that could occur during client certificate updates while metrics were being collected. This issue affected the reliability of certificate expiration reporting. [#143663][#143663] -- The `ALTER VIRTUAL CLUSTER SET REPLICATION READ VIRTUAL CLUSTER` syntax is now supported for adding a reader virtual cluster for an existing physical cluster replication (PCR) standby cluster. [#143752][#143752] -- validate column ids when starting an immediate - mode logical replication stream. [#143773][#143773] -- Fixed an issue where hot range logging for virtual clusters omitted some hot ranges. [#143775][#143775] -- Previously, the fields `maximum memory usage` and `max sql temp disk usage` in the `EXPLAIN ANALYZE` output could be under-reported for distributed plans when memory-intensive operations were fully performed on the remote nodes. This is now fixed. The bug existed in v22.1 and later. [#143777][#143777] -- Fixed a bug that could potentially cause a changefeed to complete erroneously when one of its watched tables encounters a schema change. [#144004][#144004] -- Fixed a bug that could cause a stack overflow during execution of a prepared statement that invoked a PL/pgSQL routine with a loop. The bug existed in versions v23.2.22, v24.1.15, v24.3.9, v25.1.2, v25.1.3, and pre-release versions of v25.2 prior to v25.2.0-alpha.3. [#144027][#144027] -- Fixed a bug where using - values changefeed.aggregator.flush_jitter, - min_checkpoint_frequency such that - changefeed.aggregator.flush_jitter * - min_checkpoint_frequency < 1 would cause a panic. - Jitter will now be disabled in this case. - - Fixes: #143436 [#144304][#144304] -- Fixed a bug that could cause PL/pgSQL `FOR` loops to terminate early or show incorrect values for the counter variable. The bug had existed since v24.3, and occurred when two or more `FOR` loops were nested within one another. [#144347][#144347] -- Fixed a bug that prevented variable references using ordinal syntax (like `$1`) from reflecting updates to the variable. Referencing variables declared in PL/pgSQL blocks (instead of parameters) via ordinal syntax is now disallowed. The bug had existed since v24.1. [#144347][#144347] -- Fixed a bug that could cause queries that perform work in parallel to ignore the requested quality-of-service level. Affected operations include lookup joins, DistSQL execution, and foreign-key checks. [#144427][#144427] -- Fixed a bug in the **SQL Activity Statements** page where filtering by **Statement Type** returned no results. The filter now works as expected. [#144517][#144517] -- Fixed a bug in the DB Console where tables with page size dropdowns failed to update when a new page size option was selected. Tables now update correctly. [#144556][#144556] -- Fixed a bug in the DB Console where the **Drop unused index** tag appeared multiple times for an index on the **Indexes** tab of the table details page. [#144558][#144558] -- Fixed the following bugs in the **Schedules** page of the DB Console: -- Fixed a bug where the **Schedules** page displayed only a subset of a cluster's schedules. The **Schedules** page now correctly displays all schedules. -- Fixed a bug where manually updating the `show` or `status` parameters in the URL (e.g., `http://127.0.0.1:8080/#/schedules?status=ACTIVE&show=50`) caused the **Schedules** page to fail to load. [#144638][#144638] -- Fixed a bug in the DB Console where the **Drop unused index** tag appeared multiple times for an index on the **Indexes** tab of the table details page. [#144652][#144652] -- Fixed a bug that caused vector indexes to return incorrect or no results from a standby reader in a physical cluster replication (PCR) setup. This bug existed in alpha versions of v25.2 and in v25.2.0-beta.1. [#144681][#144681] -- `NULL` vectors can now be inserted into tables with vector indexes. [#144712][#144712] -- Fixed a bug that caused index expression elements of primary keys to be shown incorrectly in the output of `SHOW CREATE TABLE`. [#144716][#144716] -- Improve the performance of `SHOW CREATE TABLE` on multi-region databases with large numbers of objects. [#144900][#144900] -- A bug where a NULL value could cause a - parquet export to fail has been fixed. [#145002][#145002] -- Fixed a bug where running `DROP INDEX` on a hash-sharded index did not properly detect dependencies from functions and procedures on the shard column. This caused the `DROP INDEX` statement to fail with an internal validation error. Now the statement returns a correct error message, and using `DROP INDEX ... CASCADE` works as expected by dropping the dependent functions and procedures. [#145107][#145107] -- Fixed an issue where using inline log configuration could cause internal errors on the DB Console's Logs page for a node at `#/node/{nodeID}/logs`. [#145329][#145329] -- Row-level security (RLS) `SELECT` policies during `UPDATE` operations are now only applied when referenced columns appear in the `SET` or `WHERE` clauses, matching the behavior of PostgreSQL. This improves compatibility. [#145344][#145344] -- Fixed a bug that could cause a row-level TTL job to fail with the error "comparison of two different versions of enum" if an `ENUM` type referenced by the table experienced a schema change. [#145374][#145374] -- Fixed a bug where CockroachDB could encounter an internal error when fetching from the `WITH HOLD` cursor with `FETCH FIRST` and `FETCH ABSOLUTE`. The bug was only present in v25.2 alpha and beta releases. [#145391][#145391] -- Fixed a bug that could lead to schema changes hanging after a cluster recovered from availability issues. [#145462][#145462] -- Previously, on a table with multiple column families, CockroachDB could encounter a `Non-nullable column "‹×›:‹×›" with no value` error in rare cases during table statistics collection. The bug was present since v19.2 and is now fixed. [#145481][#145481] -- Specifying types for a subset of columns in a generator function's column definition list now results in a syntax error instead of an internal error. [#145492][#145492] -- Fixed an internal assertion failure that could occur during operations like `ALTER TYPE` or `ALTER DATABASE ... ADD REGION` when temporary tables were present. [#145551][#145551] -- Errors triggered by DB Console activity no longer cause the node to crash. [#145563][#145563] -- Fixed incorrect application of row-level security (RLS) `SELECT` policies to `RETURNING` clauses in `INSERT` and `UPDATE` when no table columns were referenced. [#145890][#145890] -- Fixed a bug where the physical cluster replication (PCR) reader catalog job could hit validation errors when schema objects had dependencies between them (for example, when a sequence's default expression was being removed). [#145972][#145972] -- Creating a vector index on a table that contains a `NULL` vector value will no longer cause an internal error. [#145983][#145983] -- Fixed a bug where an invalid comment in the `system.comment` table for a schema object could make it inacessible. [#146213][#146213] -- Fixed a bug that allowed a column to be dropped from a table even if it was referenced in the `RETURNING` clause of an `UPDATE` or `DELETE` statement in a routine. In releases prior to v25.3, the fix must be enabled by setting the session variable `use_improved_routine_dependency_tracking` to `on`. [#146250][#146250] -- Fixed a bug in v25.2.0 where a vector search operator could drop user-supplied filters if the same vector column was indexed twice and a vector index with no prefix columns was defined after a vector index with prefix columns. [#146259][#146259] -- Fixed a bug that could lead to a node stall. [#146270][#146270] -- Fixed an integer overflow in the `split_part` function when using extremely negative field positions like Go's `math.MinInt64`. [#146271][#146271] -- Fixed a bug that prevented `TRUNCATE` from succeeding if any indexes on the table had back-reference dependencies, such as from a view or function referencing the index. [#146287][#146287] -- Fixed incorrect application of row-level security (RLS) `SELECT` policies to `RETURNING` clauses in `INSERT` and `UPDATE` when no table columns were referenced. [#146292][#146292] -- Fixed a data race in the `cloudstorage` sink. [#146297][#146297] -- Fixed a bug where `ALTER TABLE` operations with multiple commands could generate invalid zone configurations. [#146369][#146369] -- Fixed a bug where a CockroachDB node could crash when executing `DO` statements that contain currently unsupported DDL statements like `CREATE TYPE` in a non-default configuration (additional logging needed to be enabled, e.g., via the `sql.log.all_statements.enabled` cluster setting). This bug was introduced in v25.1. [#146406][#146406] -- Prevent use of future timestamps when using `AS OF SYSTEM TIME` with `CREATE TABLE ... AS` and materialized views. Previously, such timestamps could cause errors, delays, or hangs. [#146446][#146446] -- Remove unncessary Kafka topic creation that would - could cause changefeed start up to fail when using - changefeed.new_kafka_sink_enabled=false. - - Fixes: #128973 - Epic: CRDB-41784 [#146476][#146476] -- Fixed an internal error that could be hit when `ADD COLUMN UNIQUE` and `ALTER PRIMARY KEY` were executed within the same transaction. [#146567][#146567] -- Fixed a bug that prevented temporary views and sequences from being created if the `pg_temp` schema was explicitly specified in the qualified name of the object being created. [#146586][#146586] -- Prevent dropping columns or indexes that are still referenced by triggers. Previously, these operations could succeed silently, potentially breaking trigger functionality. [#146683][#146683] -- Fixed a bug where CockroachDB would not use the vectorized fast path for `COPY` when it was supported. The bug was only present in previous v25.2 releases. [#146696][#146696] -- Fixed an issue where malformed or hanging HTTP connections could block server shutdown. [#146744][#146744] -- The MVCC timestamp is now emitted correctly when the `mvcc_timestamp` is used with CDC queries. [#146836][#146836] -- Fixed a bug where searching a vector with a query vector that doesn't match the dimensions of the vector column in the table would cause a node to crash. [#146848][#146848] -- Fixed a bug that could cause the `cockroach` process to `segfault` when collecting runtime execution traces (typically collected via the **Advanced Debug** page in the Console). [#146883][#146883] -- Fixed a bug that could cause an `AFTER` trigger to fail with `client already committed or rolled back the transaction` if the query also contained foreign-key cascades. The bug had existed since `AFTER` triggers were introduced in v24.3. [#146890][#146890] -- Fixed a bug where the `kv.rangefeed.closed_timestamp.slow_ranges` would not be incremented when a rangefeed closed timestamp was slower than the target threshold. [#146949][#146949] -- Fixed an issue where self-referencing triggers did not have their dependencies properly recorded, which could lead to broken dependencies. [#147018][#147018] -- Fixed a bug that caused the SQL Activity > Statement Fingerprint page to fail to load details for statements run with application names containing a `#` character. [#147021][#147021] -- Fixed a bug that could cause stable expressions to be folded in cached query plans. The bug could cause stable expressions like `current_setting` to return the wrong result if used in a prepared statement. The bug was introduced in v23.2.22, v24.1.14, v24.3.9, v25.1.2, and the v25.2 alpha. [#147187][#147187] -- Fixed a bug where using column families on tables with vector indexes would cause the index to fail to return results. [#147307][#147307] -- Fixed a security issue where optimizer predicate reordering could leak information about hidden rows protected by row-level security (RLS) policies. [#147348][#147348] -- Fixed a bug where the `rolbypassrls` column in `pg_roles` and `pg_authid` tables always returned false, even for roles with the `BYPASSRLS` option. [#147357][#147357] -- Previously, CockroachDB could incorrectly evaluate the `to_regclass`, `to_regnamespace`, `to_regproc`, `to_regprocedure`, `to_regrole`, and `to_regtype` built-in functions when the query using them was evaluated in a distributed fashion. The bug was introduced with these built-in functions in v23.1 and is now fixed. [#147362][#147362] -- Fixed a bug that caused the optimizer to ignore index hints when optimizing some forms of prepared statements. This could result in one of two unexpected behaviors: a query errors with the message `index cannot be used for this query` when the index can actually be used; or a query uses an index that does not adhere to the hint. The hints relevant to this bug are regular index hints, e.g., `SELECT * FROM tab@index`, `FORCE_INVERTED_INDEX`, and `FORCE_ZIGZAG`. [#147368][#147368] -- Fixed a bug where the `pg_catalog.pg_policy` table could contain duplicate OID values when multiple tables had policies with the same policy ID. All rows in `pg_policy` now have unique OIDs as required. [#147373][#147373] -- Fixed a bug on the SQL Activity Statements and Transactions pages where the time picker failed to support sub-hour time ranges when the `sql.stats.aggregation.interval` was set to a value under 1 hour. Previously, selecting a short time window (e.g., 10 minutes) would query for a full hour of data. The fix ensures that the selected time range is respected, enabling more precise analysis of recent activity. [#147447][#147447] -- Fixed an issue where updating child metrics and reinitializing metrics at the same time could cause scrape errors. [#147486][#147486] -- Fixed a memory leak in index backfill jobs where completed spans were duplicated in memory on each progress update after resuming from a checkpoint. This could cause out-of-memory (OOM) errors when backfilling indexes on large tables with many ranges. This bug affected release version v25.2.0 and pre-release versions v25.2.0-alpha.3 through v25.2.0-rc.1. [#147511][#147511] -- Fixed a runtime panic in the `substring_index` function that occurred when the count argument was the minimum 64-bit integer value. [#147546][#147546] -- Fixed a bug where prepared statements on schema changes could fail with runtime errors. [#147658][#147658] -- `FUNCTION` and `PROCEDURE` are now shown via `\h show create` in the CLI doc. [#147666][#147666] -- Fixed a bug where functions lost their row-level security (RLS) policy backreferences, leading to schema change failures. [#147696][#147696] -- Fixed a bug where `ALTER TABLE` was modifying identity attributes on columns not backed by a sequence. [#147698][#147698] -- Fixed an error in `crdb_internal.table_spans` that could occur when a table's schema had been dropped. [#147766][#147766] -- Fixed a bug where introspection queries (such as a against the `crdb_internal` system catalog) could fail if a dropped constraint referenced a column that was also being dropped. [#147773][#147773] -- Fixed a bug that would cause a `CALL` statement executed via a portal in the extended wire protocol to result in an error like `unknown portal ""` if the stored procedure contained `COMMIT` or `ROLLBACK` statements. The bug had existed since PL/pgSQL transaction control statements were introduced in v24.1. The fix is off by default in versions prior to v25.3. [#147923][#147923] -- Fixed a bug where adding multiple columns in a single statement with `AddGeometryColumn` would cause runtime errors. [#147998][#147998] -- Fixed a bug where `libpq` clients using the async API could hang with large result sets (Python: psycopg; Ruby: ActiveRecord, ruby-pg). [#148222][#148222] -- Fixed a bug present since v24.1 where the allocator - could make rebalancing decisions based on stale data, failing to account for - recent local lease transfers not yet reflected in store capacity or gossip. [#148476][#148476] -- Large mutation statements (`INSERT`, `UPDATE`, `DELETE`, `UPSERT`) are now less likely to encounter contention with automatic table statistics collection in some cases. The bug was present since v19.1. [#148488][#148488] -- A bug where a changefeed that was created before - v25.2 could fail after upgrading to v25.2 with the error message - `both legacy and current checkpoint set on change aggregator spec` - has now been fixed. [#148617][#148617] -- CockroachDB now supports decoding `VECTOR` and `BOX2D` types from the binary format of the PostgreSQL extended protocol (pgwire). [#148719][#148719] -- The `RESET ALL` statement no longer affects the following session variables: - - `is_superuser` - - `role` - - `session_authorization` - - `transaction_isolation` - - `transaction_priority` - - `transaction_status` - - `transaction_read_only` - - This better matches PostgreSQL behavior for `RESET ALL`. In addition, the `DISCARD ALL` statement no longer errors when `default_transaction_use_follower_reads` is enabled. [#148770][#148770] -- CockroachDB now prohibits `ORDER BY` and join equality operations on `REFCURSOR` types, matching PostgreSQL behavior. [#148863][#148863] -- Previously, CockroachDB could hit an internal error when performing a `DELETE`, `UPDATE`, or `UPSERT` where the initial scan of the mutation is locking and is on a table different from the one being mutated. A possible workaround was `SET enable_implicit_select_for_update = false`, but this could increase contention. The bug was introduced in v25.2 and is now fixed. [#149093][#149093] -- Fixes a race condition when advancing a - changefeed aggregator's frontier. When hit, the race condition could - result in an internal error that would shut down the kvfeed and cause - the changefeed to retry. [#149119][#149119] -- CockroachDB now supports case-insensitive matching for keyword identifiers in JSONPath queries. Note that the special identifiers `TRUE`, `FALSE`, and `NULL` are parsed case-insensitively in CockroachDB, but are case-sensitive in PostgreSQL. For example, `SELECT '$.active == TrUe'::jsonpath;` succeeds in CockroachDB, but fails in PostgreSQL. [#149251][#149251] -- In v25.1, automatic partial statistics collection was enabled by default (by setting the `sql.stats.automatic_partial_collection.enabled` cluster setting to `true`). Partial statistics collection may encounter certain expected scenarios that were previously reported as failed stats jobs with PostgreSQL error code `55000`. These errors are benign and are no longer reported. Instead, the stats job will be marked as "succeeded," though no new statistics will be created. [#149279][#149279] -- Fixed a minor bug that caused inconsistent behavior with the very rarely used `"char"` type (distinct from `CHAR`). [#149433][#149433] -- CockroachDB now allows `EXPLAIN` of mutation statements in read-only transaction mode, matching PostgreSQL behavior. Note that `EXPLAIN ANALYZE` of mutations is still disallowed, since this variant actually executes the statement. [#149449][#149449] -- Fixed an issue where some SQL metrics were not reported when `server.child_metrics.enabled` was enabled, `server.child_metrics.include_aggregate.enabled` was disabled, and `sql.metrics.application_name.enabled` and `sql.metrics.database_name.enabled` were also disabled. Specifically, metrics with no children now report their aggregate metrics regardless of the `server.child_metrics.include_aggregate.enabled` cluster setting. [#149540][#149540] -- Fixed a bug where database login could fail - during LDAP, JWT, or OIDC authentication if the user's external group - memberships did not correspond to any existing roles in the - database. The login will now succeed, and no roles will be granted or - revoked in this scenario. [#149638][#149638] -- Fixed a slow memory leak that was introduced in v25.1.8, v25.2.1, v25.2.2, and v25.3 betas. The leak would accumulate whenever a node executed a part of the distributed plan (the gateway node of the plan was not affected), and could only be mitigated by restarting the node. [#149800][#149800] -- Attempting to create a vector index with the legacy schema changer will now fail gracefully instead of crashing the node. [#149812][#149812] -- Improved split and scatter behavior for `CREATE INDEX` when statistics are available for key columns. [#150238][#150238] -- Fixed a bug that was preventing the row-level TTL table storage parameters (e.g., `ttl_select_batch_size`, `ttl_delete_batch_size`, `ttl_delete_rate_limit`, `ttl_select_rate_limit`) from being set to `0`, which is their default value. [#150253][#150253] -- Fixed an issue where discarding zone configs on sequences did not actually remove the configuration. [#150255][#150255] -- A bug where modifying a changefeed with ALTER CHANGEFEED - that either unset or left the `gc_protect_expires_after` option unset would - cause the changefeed's max PTS age to become unbounded instead of being set to - the default value configured by the `changefeed.protect_timestamp.max_age` - cluster setting. [#150283][#150283] -- Fixed a bug that would allow a race condition in foreign key cascades under `READ COMMITTED` and `REPEATABLE READ` isolation levels. [#150291][#150291] -- Fixed a bug where the entire schema would become inaccessible if a table was referenced as an implicit record type by a user-defined function (UDF) while the table was undergoing an `IMPORT`. [#150350][#150350] -- Fixed invalid zone configurations that were generated when adding a super region to a 3-region database with a secondary region and region survivability. Previously, this could result in assigning more than the allowed number of replicas. [#150413][#150413] -- Addressed a bug on `schema_locked` tables when a column is dropped, and `schema_locked` is toggled for the user. [#150435][#150435] -- Fixed the `pg_catalog.pg_type` enties for the "any" and "trigger" pseudotypes. [#150777][#150777] -- Fixed an issue where Row Level Security (RLS) policies with missing dependencies during table-level restores could cause inconsistent state or restore failures. [#151045][#151045] -- Fixed a bug that could cause some errors returned by attempts to upload backup data to external storage providers to go undetected, potentially causing incomplete backups. [#151058][#151058] -- Previously, CockroachDB could encounter an internal error `trying to add a column of UNKNOWN type at ...` in rare cases when handling `CASE` or `OR` operations. This bug was present since v20.2 and is now fixed. [#151093][#151093] -- Fixed a bug where `debug.zip` files collected from clusters with `disallow_full_table_scans` enabled were missing system table data. [#151185][#151185] -- Fix handling of empty arrays in JSONPath lax mode - comparisons. Empty arrays now return false for comparisons in lax mode and - null in strict mode, matching PostgreSQL behavior. [#151226][#151226] -- Fixed a bug where `DROP USER` succeeded even though a role owned default privileges, which could leave invalid privilege entries in the system. [#151472][#151472] -- Fixed a bug where sequences could lose references to triggers, allowing them to be dropped incorrectly. [#151546][#151546] -- Previously, CockroachDB could incorrectly elevate the number of rows deleted on tables with multiple column families. The bug was present v19.2 and is now fixed. Note that the data was deleted correctly, but the "rows affected" number was wrong. [#151563][#151563] -- Fixed a bug that allowed replacement indexes, created during an `ALTER PRIMARY KEY` operation, to be accessed with index hints before they were in a ready state. This could lead to runtime errors. [#151691][#151691] -- Added an automatic repair for dangling or invalid entries in the `system.comments` table. [#151737][#151737] -- Previously, CockroachDB could hit an error `ERROR: span with results after resume span...` when evaluating some queries with `ORDER BY ... DESC` in an edge case. This bug was present since v22.1 and is now fixed. [#151774][#151774] -- Fixed a bug introduced in v25.1 where CockroachDB nodes could crash when executing `DO` statements that referenced (possibly nonexistent) user-defined types in non-default configurations. The crash only occurred if additional logging was enabled (for example, with the `sql.log.all_statements.enabled` cluster setting). [#151849][#151849] -- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. [#151947][#151947] -- Fixed a bug where executing certain statements with `BETWEEN SYMMETRIC` expressions could panic if used with values of different types, such as `... b'bytes' BETWEEN SYMMETRIC 'a' AND 'c'`. [#151951][#151951] -- Fixed a bug where `SHOW TABLES` would show inaccurate row counts if the most recent statistics collection was partial. [#152033][#152033] -- Fixed a bug that prevented `RESTORE` from working if there were computed columns or `ON UPDATE` expressions that referenced user-defined functions (UDFs). This bug was introduced in v25.3.0. [#152193][#152193] -- Fixed a bug that allowed foreign-key violations to result from some combinations of concurrent `READ COMMITTED` and `SERIALIZABLE` transactions. If both `SERIALIZABLE` and weaker-isolation transactions will concurrently modify rows involved in foreign-key relationships, the `SERIALIZABLE` transactions must have the following session variables set in order to prevent any possible foreign-key violations: - - `SET enable_implicit_fk_locking_for_serializable = on;` - - `SET enable_shared_locking_for_serializable = on;` - - `SET enable_durable_locking_for_serializable = on;` [#152245][#152245] -- Added the `use_soft_limit_for_distribute_scan` session variable (default: `false`), which controls whether CockroachDB uses the soft row count estimate when deciding whether an execution plan should be distributed. In v25.1, the physical planning heuristics were changed such that large constrained table scans, estimated to scan at least 10,000 rows (controlled via `distribute_scan_row_count_threshold`), would force plan distribution when `distsql=auto`. However, if the scan had a "soft limit" CockroachDB would still use the full estimate (for example, `10,000` in `estimated row count: 100–10,000`), sometimes unnecessarily distributing queries and increasing latency. The `use_soft_limit_for_distribute_scan` session variable addresses this by allowing the planner to use the soft limit when deciding whether a scan is "large". [#152300][#152300] -- `pg_class.pg_depend` now contains entries with `deptype='i'` (internal) for identity columns that own sequences. These previously had `deptype='a'` (auto). [#152309][#152309] -- Fixed a bug that caused an error when dropping a column and a `UNIQUE WITHOUT INDEX` constraint that referenced it in the same transaction. [#152447][#152447] -- Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions. [#152670][#152670] -- Fixed `IMPORT` progress reporting to show the correct row counts when concurrent job state changes occur. [#152745][#152745] -- Fixed a bug where an `INSERT` statement could fail with a type checking error while adding a `BIT(n)` column. [#152910][#152910] -- Fixed a bug where the `schema_locked` storage parameter was not being enforced on the `TRUNCATE` command, which could cause changefeed jobs to fail. [#152932][#152932] -- Fixed an issue where certain vector index operations could throw an out-of-bounds access exception. [#153054][#153054] -- Fixed a bug introduced in v21.2 where `IMPORT` operations with multiple CSV files could incorrectly reset the bulk summary after processing the first file, causing the actual progress to be overwritten with a `nil` value. [#153111][#153111] -- Fixed a bug introduced in v25.1.0 that would - cause a node panic if a `SIGINT` signal was sent during the execution of - a `CHECK EXTERNAL CONNECTION` command. [#153380][#153380] -- Fixed a bug where index creation could fail due to validation errors if the schema change was retried or paused/resumed during the backfill. [#153583][#153583] -- Fixed a deadlock in `DROP COLUMN CASCADE` operations when dropping columns referenced by `STORED` computed columns. [#153683][#153683] -- Fixed a bug where `ALTER POLICY` was incorrectly dropping dependency tracking for functions, sequences, or types in policy expressions. [#153787][#153787] -- Fixed a bug where we would not show the pgwire `RowDescription` for `EXECUTE` statements that were themselves prepared using the pgwire `Parse` command. [#153905][#153905] -- Fixed a runtime error that could be hit if a new secondary index had a name collision with a primary index. [#153986][#153986] -- Vector index backfill jobs now correctly report progress in the `SHOW JOBS` output. [#154261][#154261] -- 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. [#154289][#154289] -- **Idle latency** on the **Transaction Details** page in the DB Console is now reported more accurately. Previously, transactions that used prepared statements (e.g., with placeholders) overcounted idle time, while those that included observer statements (common in the SQL CLI) undercounted it. [#154385][#154385] -- Fixed a bug where `RESTORE` of a database with a `SECONDARY REGION` did not apply the lease preferences for that region. [#154659][#154659] -- Fixed a bug where a changefeed could perform - many unnecessary job progress saves during an initial scan. [#154709][#154709] -- Fixed a bug where a changefeed targeting only a subset - of a table's column families could become stuck. [#154915][#154915] - 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. [#154970][#154970] -- 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. [#155077][#155077] -- Disable a feature - (kv.lock_table.unreplicated_lock_reliability.split.enabled) that could - lead to a node crash. [#155366][#155366] -- 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. [#155415][#155415] -- Corrected a potential deadlock during vector index creation. [#155508][#155508] -- Added proper dependency handling when adding a constraint with `NOT VALID` that references a user-defined function (UDF). [#155528][#155528] - 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. [#155633][#155633] - 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. [#155927][#155927] -- Fixes a bug where the job responsible for - compacting stats for the SQL activity state could enter an unschedulable - state. - Fixes: #155165 [#155963][#155963] +- Fixed a bug where the job responsible for compacting stats for the SQL activity state could enter an unschedulable state. Fixes: #155165 [#155963][#155963] - 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. [#156136][#156136] - 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. [#156286][#156286] - A bug where changefeeds using CDC @@ -764,586 +33,41 @@ 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. [#156667][#156667] - 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`. [#156695][#156695] - 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. [#156779][#156779] -- Fix bug that could result in incorrect - gossip.callbacks.pending_duration metric value being recorded. [#156947][#156947] +- Fixed a bug that caused incorrect `gossip.callbacks.pending_duration` metric values to be recorded. [#156947][#156947] - 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. [#156968][#156968] - Fixed a bug that could cause internal errors for queries using generic query plans with `NULL` placeholder values. [#156979][#156979] - 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. [#157037][#157037]

Performance improvements

-- Queries that use `SHOW TABLES` without using the `estimated_row_count` column no longer need to look up the table statistics. [#59838][#59838] -- Fixed a bug that caused the optimizer to over-estimate the cost of inverted index scans in some cases. Now, plans with inverted index scans should be selected in more cases where they are optimal. [#120079][#120079] -- Index backfills and row-level TTL deletions that encounter transaction contention will now be retried with smaller batch sizes more quickly, which reduces the latency of these jobs under high contention workloads. [#142702][#142702] -- `SHOW TABLES` is now faster, especially in cases where there are many tables, both live and previously dropped. [#143446][#143446] -- Schema changes that require data to be backfilled no longer hold a protected timestamp for the entire duration of the backfill, which means there is less overhead caused by MVCC garbage collection after the backfill completes. [#143451][#143451] -- Prepared statements are now more efficiently cached. [#144021][#144021] -- Prepared statements are now more efficiently cached. [#144021][#144021] -- Triggers now perform the descriptor lookup for `TG_TABLE_SCHEMA` against a cache. This can significantly reduce trigger planning latency in multi-region databases. [#144217][#144217] -- Some internal queries executed by the jobs system are now less likely to perform full table scans of the `system.jobs` table, making them more efficient. This change can be reverted by disabling the `jobs.avoid_full_scans_in_find_running_jobs.enabled` cluster setting. [#144309][#144309] -- The vector search optimizer rule now supports additional projections beyond the distance column, including the implicit projections added for virtual columns. [#144536][#144536] -- TTL jobs now respond to cluster topology changes by restarting and rebalancing across available nodes. [#145214][#145214] -- Some queries with filters of the form `x IS NOT DISTINCT FROM y` now have more optimal query plans. [#146494][#146494] -- The optimizer will no longer apply a fast-path to deletes cascading to `REGIONAL BY ROW` tables. This prevents the cascading delete from accessing more regions than necessary. [#148105][#148105] -- Mutation statements (`UPDATE` and `DELETE`) that perform lookup joins into multi-region tables (perhaps as part of a `CASCADE`) are now more likely to parallelize the lookups across ranges, improving their performance. [#148186][#148186] -- `LIKE` filter expressions of the form `x LIKE '%'` are now normalized to `TRUE` if `x` is non-`NULL` within a `SELECT` expression. [#148763][#148763] -- Filters of the form `x LIKE '%'` are now normalized to `x IS NOT NULL`, enabling performance improvements on both nullable and non-nullable columns. Previously, such filters were normalized directly to `TRUE`, which only applied to non-`NULL` columns. [#149614][#149614] -- Multi-table changefeeds will protect - each lagging user table from garbage collection with its own record. - This will improve performance of multi-table changefeeds including - upcoming db-level changefeeds by allowing more garbage collection. [#149616][#149616] -- Updated the storage engine to reduce write amplification by storing Raft log values in separate blob files. This reduces write bandwidth, especially on stores with many replicas. This in turn can increase throughput and reduce latency. This behavior is active as long as the `storage.value_separation.enabled` cluster setting is enabled. [#149712][#149712] -- Improved the efficiency and throughput of catch-up scans used by Change Data Capture (CDC) and Physical Cluster Replication (PCR) in cases where substantial catch-up work is required. [#150738][#150738] -- Certain types of simple queries on tables with row-level security enabled are now more efficiently executed. [#151337][#151337] -- `LTREE` is now index-accelerated with the `<@` operator. [#152353][#152353] -- `LTREE` is now index-accelerated with the `@>` operator. [#152353][#152353] -- Lookup joins can now be used on tables with virtual columns even if the type of the search argument is not identical to the column type referenced in the virtual column. [#152399][#152399] -- Changefeeds will now - periodically persist their entire span frontiers so that - fewer duplicates will need to be emitted during restarts. - The default persistence interval is 30s, but this can be - configured with the `changefeed.progress.frontier_persistence.interval` - cluster setting. [#153491][#153491] -- The cost of generic query plans is now calculated based on worst-case selectivities for placeholder equalities (e.g., `x = $1`). This reduces the chance of suboptimal generic query plans being chosen when `plan_cache_mode=auto`. [#154899][#154899] - The optimizer 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`. [#155460][#155460] -

Build changes

- -- Enable the use of profile-guided optimization in the `cockroach` binary. [#142697][#142697] -- Upgrade to Go 1.24.5 [#150870][#150870] -- Revert Go version back to 1.23.7. - Epic: none [#152023][#152023] -

Miscellaneous

-- `pg_column_size()` is now regarded as Stable, matching PostgreSQL. As a result, it will no longer be allowed in computed column expressions or partial index predicate expressions. [#141193][#141193] -- When configuring the `sql.ttl.default_delete_rate_limit` cluster setting, a notice is displayed informing the user that the TTL rate limit is per leaseholder per table with a link to the docs. [#142061][#142061] -- Improve S3 credential caching for STS credentials [#142434][#142434] -- Updated CockroachDB builds to use Go 1.23.7. [#142698][#142698] -- This patch adds the new `experimental copy` option to `RESTORE`, which runs online `RESTORE`, but waits to publish the tables until all data is downloaded. [#143674][#143674] -- Backup compactions are not supported on and are blocked - for backups that are not scheduled, use revision history, have an - execution locality, set a custom incremental location, or include a - backup of a tenant. [#143854][#143854] -- Fix rare corruption bug that impacts import and - materialized views. [#144646][#144646] -- SQL queries run on the source cluster by logical data replication (LDR) and physical cluster replication (PCR) will account to internal metrics like `sql.statements.active.internal` instead of the metrics like `sql.statements.active` that are used to monitor application workload. [#145088][#145088] -- Vector indexes created in beta releases have an encoding issue - that may result in failed inserts. These indexes should be dropped and - re-created before being used with later releases. [#145158][#145158] -- Vector indexes created in beta releases have an encoding issue - that may result in failed inserts. These indexes should be dropped and - re-created before being used with later releases. [#145405][#145405] -- The `replicas.cpunanospersecond` metric was added. Notably, when child labels are enabled, it exposes evaluation-related Replica CPU usage by tenant. [#146526][#146526] -- fixes an issue with LDR where the presence of a unique - index may cause spurious DLQ entries if the unique index has a smaller - index id than the primary key index. [#147117][#147117] -- Restore no longer gets stuck in the reverting state after failed cleanup of dropped temporary system tables. [#148098][#148098] -- CockroachDB now raises an error when encountering improper - inline SSL credentials instead of panicking. [#148242][#148242] -- Restore will now re-attempt `AdminSplit` KV requests - instead of immediately failing and pausing the job. [#148484][#148484] -- To improve changefeed performance, the session variable `create_table_with_schema_locked` is enabled by default. This means all new tables are created with the `schema_locked` storage parameter. This setting must be explicitly unset for explicit transactions or for schema changes that do not support automatic disabling (e.g., `ALTER TABLE ... SET LOCALITY`). [#148576][#148576] -- Download phase of fast restore now will retry downloads - before giving up. [#148821][#148821] -- Fixed a memory accounting issue in the client certificate cache that caused multiple allocations to be reported for the same certificate. The cache now accurately tracks memory usage and includes a safeguard to prevent it from negatively affecting SQL operations. [#151041][#151041] -- None [#151110][#151110] -- Fixes a rare bug in restore where an object storage on - restore start could cause restore to report success without creating the - restored tables or databases. [#151148][#151148] -- You can now output transaction traces to the logs in Jaeger-compatible JSON format. This is controlled by the `sql.trace.txn.jaeger_json_output.enabled` cluster setting, which is disabled by default. When enabled, traces triggered by probabilistic sampling or statement latency thresholds will be formatted for easier ingestion by tools that support the Jaeger tracing format. [#151414][#151414] -- You can now exclude internal transactions from probabilistic transaction tracing and latency-based logging by setting the `sql.trace.txn.include_internal.enabled` cluster setting to false. This setting is enabled by default to preserve the current behavior, but disabling it is recommended when debugging customer workloads to reduce noise in trace output. [#151433][#151433] -- Tunes S3 client retry behavior to be more reliable in the - presence of correlated errors. [#151817][#151817] -- Upgrade to Go 1.23.12 [#152207][#152207] -- Increase the default number of times CRDB will retry - failures on Azure. - Epic: CRDB-53946 [#152746][#152746] -- CockroachDB now prevents negative values from appearing in network and disk counters collected from the operating system. These values could previously drop below zero due to hardware changes. Affected counters now reset their baseline values automatically. [#153048][#153048] -- Fixed a bug where the presence of duplicate temporary tables in a backup would cause the restore to fail with an error containing the text `restoring table desc and namespace entries: table already exists`. [#153724][#153724] - LDR no longer requires the database name to be specified in the external connection URI when setting up a bidirectional stream. [#155737][#155737] - Span config reconciliation jobs no longer fail on the destination after failover from a PCR stream of a system virtual cluster. [#156812][#156812] -[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 -[#144536]: https://github.com/cockroachdb/cockroach/pull/144536 -[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 -[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 -[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 -[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 -[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 -[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 +[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 [#155927]: https://github.com/cockroachdb/cockroach/pull/155927 -[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 -[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 -[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 -[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 -[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 -[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 -[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 -[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 -[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 -[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 -[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 -[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 -[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 -[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 -[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 -[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 -[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 -[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 -[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 -[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 -[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 -[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 -[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 -[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 -[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 -[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 -[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 -[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 -[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 -[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 -[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 -[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 -[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 -[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 -[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 -[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 -[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 -[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 -[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 -[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 -[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 -[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 -[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 -[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 -[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 -[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 -[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 -[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 -[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 -[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 -[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 -[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 -[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 -[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 -[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 -[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 -[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 -[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 -[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 -[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 -[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 -[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 -[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 -[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 -[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 -[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 -[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 -[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 -[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 -[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 -[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 -[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 -[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 -[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 -[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 -[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 -[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 -[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 -[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 -[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 -[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 -[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 -[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 -[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 -[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 -[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 -[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 -[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 -[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 -[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 -[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 -[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 -[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 -[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 -[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 -[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 -[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 -[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 -[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 -[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 -[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 -[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 -[#143097]: https://github.com/cockroachdb/cockroach/pull/143097 -[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 -[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 -[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 -[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 -[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 -[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 -[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 -[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 -[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 -[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 -[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 -[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 -[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 -[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 [#157037]: https://github.com/cockroachdb/cockroach/pull/157037 -[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 -[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 -[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 -[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 -[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 -[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 -[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 -[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 -[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 -[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 -[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 -[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 -[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 -[#142927]: https://github.com/cockroachdb/cockroach/pull/142927 -[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 -[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 -[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 -[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 -[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 -[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 -[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 -[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 -[#144643]: https://github.com/cockroachdb/cockroach/pull/144643 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#145236]: https://github.com/cockroachdb/cockroach/pull/145236 -[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 -[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 -[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 -[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 -[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 -[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 -[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 -[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 -[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 -[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 -[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 -[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 -[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 -[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 -[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 -[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 -[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 -[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 -[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 -[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 -[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 -[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 -[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 -[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 -[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 -[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 -[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 -[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 -[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 -[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 -[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 -[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 -[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 -[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 -[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 -[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 -[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 -[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 -[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 -[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 -[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 -[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 -[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 -[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 -[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 +[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 [#156564]: https://github.com/cockroachdb/cockroach/pull/156564 -[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 -[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 -[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 -[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 -[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 -[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 -[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 -[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 -[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 -[#145391]: https://github.com/cockroachdb/cockroach/pull/145391 -[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 -[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 -[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 -[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 -[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 -[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 -[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 -[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 -[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 -[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 -[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 -[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 -[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 -[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 -[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 -[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 -[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 -[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 -[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 -[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 -[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 -[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 -[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 +[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 +[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 +[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 [#155561]: https://github.com/cockroachdb/cockroach/pull/155561 [#156459]: https://github.com/cockroachdb/cockroach/pull/156459 -[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 -[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 -[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 -[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 -[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 -[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 -[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 -[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 -[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 -[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 -[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 -[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 -[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 -[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 -[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 -[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 -[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 -[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 -[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 -[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 -[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 -[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 -[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 -[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 -[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 -[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 -[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 -[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 -[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 -[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 -[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 -[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 -[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 -[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 -[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 -[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 -[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 -[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 -[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 -[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 -[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 -[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 -[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 -[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 -[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 -[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 -[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#155737]: https://github.com/cockroachdb/cockroach/pull/155737 -[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 -[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 -[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 -[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 -[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 -[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 -[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 -[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 -[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 -[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 -[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 -[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 -[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 -[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 -[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 -[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 -[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 -[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 -[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 -[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 -[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 -[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 -[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 -[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 -[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 +[#156136]: https://github.com/cockroachdb/cockroach/pull/156136 +[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 +[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 +[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 [#156979]: https://github.com/cockroachdb/cockroach/pull/156979 -[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 -[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 -[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 -[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 -[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 -[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 -[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 -[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 -[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 -[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 -[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 -[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 -[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 -[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 -[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 -[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 -[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 -[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 -[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 -[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 -[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 -[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 -[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 -[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 -[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 -[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 -[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 -[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 -[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 -[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 -[#153724]: https://github.com/cockroachdb/cockroach/pull/153724 -[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 -[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 -[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 -[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 -[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 -[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 -[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 -[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 -[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 -[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 -[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 -[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 -[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 -[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 -[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 -[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 -[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 -[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 -[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 -[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 -[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 -[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 -[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 -[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 -[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 -[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 -[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 -[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 -[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 -[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 -[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 -[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 -[#144658]: https://github.com/cockroachdb/cockroach/pull/144658 -[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 -[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 -[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 -[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 -[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 -[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 -[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 -[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 -[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 -[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 -[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 -[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 -[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 -[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 -[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 -[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 -[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 -[#156667]: https://github.com/cockroachdb/cockroach/pull/156667 -[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 -[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 -[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 -[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 -[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 -[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 -[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 -[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 -[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 -[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 -[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 -[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 -[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 -[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 [#156508]: https://github.com/cockroachdb/cockroach/pull/156508 -[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 +[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 +[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 [#156286]: https://github.com/cockroachdb/cockroach/pull/156286 -[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 -[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 -[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 -[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 -[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 -[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 -[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 -[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 -[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 -[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 -[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 -[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 -[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 -[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 -[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 -[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 -[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 -[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 -[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 -[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 -[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 -[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 -[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 -[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 -[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 -[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 -[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 -[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 -[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 -[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 -[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 -[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 -[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 -[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 -[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 -[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 -[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 -[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 -[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 -[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 -[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 -[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 +[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 +[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 From 24eaf27f8c9864a9108c62796d2738f29c2102fc Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 3 Dec 2025 20:23:38 +0000 Subject: [PATCH 34/37] Update release notes for v25.4-v25.4.1 From cb2f8ff0751ce55abdef5700d768ecdb549ac952 Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 3 Dec 2025 20:23:39 +0000 Subject: [PATCH 35/37] Update release notes for v25.4-v25.4.1 --- src/current/_data/releases.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/current/_data/releases.yml b/src/current/_data/releases.yml index 63305099147..1b7a09d8231 100644 --- a/src/current/_data/releases.yml +++ b/src/current/_data/releases.yml @@ -9960,7 +9960,7 @@ - release_name: v25.4.1 major_version: v25.4 - release_date: '2025-12-02' + release_date: '2025-12-03' release_type: Production go_version: go1.25.3 sha: 60d802bd0bcb2c1aa81a4b5fd73fb4aa13bb5114 @@ -9984,10 +9984,3 @@ docker_arm_limited_access: false source: true previous_release: v25.4.0 - cloud_only: true - cloud_only_message_short: 'Available only for select CockroachDB Cloud clusters' - cloud_only_message: > - This version is currently available only for select - CockroachDB Cloud clusters. To request to upgrade - a CockroachDB self-hosted cluster to this version, - [contact support](https://support.cockroachlabs.com/hc/requests/new). From b498c6bb7e22bfcbe7dfbf16574431931f64855d Mon Sep 17 00:00:00 2001 From: Automated Release Bot Date: Wed, 3 Dec 2025 20:23:40 +0000 Subject: [PATCH 36/37] Update release notes for v25.4-v25.4.1 --- .../_includes/releases/v25.4/v25.4.1.md | 1311 ++++++++++++++++- 1 file changed, 1291 insertions(+), 20 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.1.md b/src/current/_includes/releases/v25.4/v25.4.1.md index 8b98f55a2f2..b1b083552b7 100644 --- a/src/current/_includes/releases/v25.4/v25.4.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.1.md @@ -1,26 +1,753 @@ ## v25.4.1 -Release Date: December 2, 2025 +Release Date: December 3, 2025 {% include releases/new-release-downloads-docker-image.md release=include.release %} +

Backward-incompatible changes

+ +- Vector index partition IDs now use a different function that distributes them more evenly across the key-value range, reducing potential hot spots. Due to this change, vector indexes created before v25.2.0 must be rebuilt. [#145471][#145471] + +

Security updates

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

General changes

+ +- Added the `headers_json_column_name` option to the changefeed Kafka sink, allowing users to specify a column in their table(s) of type `JSONB` to be used as the Kafka headers for each row. [#142092][#142092] +- Previously, HTTP response headers included `"Cache-Control: no-cache"`, allowing responses to be stored in caches but requiring revalidation on each request. Now, the response headers include `"Cache-Control: no-store"`, ensuring that HTTP requests to the server are not cached by the client. However, requests for UI assets—such as `bundle.js`, fonts, and other static files—will continue to include `"Cache-Control: no-cache"` to allow caching and ensure the DB Console loads quickly. [#142277][#142277] +- Improved the wording of the error message when a changefeed is created with a cursor older than the garbage collection threshold. [#142408][#142408] +- Added a warning when creating a changefeed with a cursor timestamp older than 5 hours. [#142742][#142742] +- Enhanced the `/status/v2/hotranges` endpoint by adding two new filtering options: + - `per_node_limit` (`int32`): Specifies the maximum number of hot ranges to return per node. Defaults to `128` if not set. + - `stats_only` (`bool`): When set to `true`, returns only the statistics for hot ranges without fetching descriptor information, such as databases, tables, and indexes. [#144091][#144091] +- For virtual clusters, hot range logging is now performed by a single job on one node, rather than by tasks on every node. [#145549][#145549] +- The CREATE + CHANGEFEED statement now supports the + `extra_headers` option, which can be used to + specify extra headers for webhook and kafka + sinks. This can be used to add headers to all + messages sent to the sink. [#146813][#146813] +- Changefeeds now round down the progress of each range to 1 second, in order to cover more ranges in fine-grained checkpointing. [#146979][#146979] +- Changefeed source metadata now includes the `crdb_internal_table_id` field, enabling downstream consumers to uniquely identify tables even if table names change. [#147341][#147341] +- Changefeeds emitting to Kafka sinks that were created in CockroachDB v24.2.1+, or v23.2.10+ and v24.1.4+ with the `changefeed.new_kafka_sink.enabled` cluster setting enabled now include the message key, size, and MVCC timestamp in "message too large" error logs. [#147543][#147543] +- This change adds new metrics: + changefeed.stage.pts.create.latency, + changefeed.stage.pts.manage.latency, + changefeed.stage.pts.manage_error.latency, + to measure the performance of managing protected ts records. [#148471][#148471] +- Added an OTLP log sink that exports logs in OpenTelemetry Protocol format over gRPC to compatible targets such as `otel-collector`, Datadog, and Loki. [#148525][#148525] +- Kafka v2 changefeed sinks now support + a cluster setting that enables detailed error logging for messages + exceeding Kafka v2 size limit. [#148753][#148753] +- The CockroachDB spatial libraries now rely on GEOS 3.12 instead of GEOS 3.11. [#148859][#148859] +- the changefeeds with protobuf + format now supports the resolved option for emitting + resolved timestamps. [#149622][#149622] +- Changefeeds using the protobuf format + now support wrapped envelopes in kafka sinks [#149696][#149696] +- Restore jobs now log errors on retry to + the job messages table. [#149821][#149821] +- A warning is now emitted when creating or altering a + changefeed with `resolved` or `min_checkpoint_frequency` set below 500ms. This helps + users understand the tradeoff between message latency and cluster CPU usage. [#149975][#149975] +- The protobuf format for changefeeds + now support enriched envelopes. [#150501][#150501] +- Added HTTP mode to the OTLP sink, allowing logs to be exported to OpenTelemetry Protocol (OTLP) targets over HTTP. This enhancement enables agentless deployments, where logs can be sent directly to supported targets like Datadog or Grafana, without requiring an intermediary such as the OpenTelemetry Collector or Datadog Agent. [#150655][#150655] +- Added `headers` configuration option to OTLP log sink. [#150696][#150696] +- CockroachDB spatial libraries now rely on GEOS 3.13 instead of GEOS 3.12. [#151186][#151186] +- Added `WITH INDEX` option to `SHOW + BACKUPS` for faster listing of 25.4+ backups. [#152142][#152142] +- The changefeed bulk + delivery setting was made optional. [#154953][#154953] + +

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

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

SQL language changes

+- Implemented the `levenshtein_less_equal(string, string, int)` and `levenshtein_less_equal(string, string, int, int, int, int)` built-in functions, which calculate the Levenshtein distance between two strings. [#104649][#104649] +- The owner of a database can now set default session variables per database using the `ALTER ROLE ALL IN DATABASE ... SET` or `ALTER DATABASE ... SET` commands. [#130547][#130547] +- Added the `ST_3DLength` function, which returns the 3D or 2D length of `LINESTRING` and `MULTILINESTRING` spatial types. [#139450][#139450] +- `format()` no longer requires all post-format string arguments to have the same type. [#141193][#141193] +- `concat()` no longer requires all arguments have the same type. [#141193][#141193] +- `concat_ws()` now accepts arguments of any type in the second and later positions (the separator must still be a string). [#141193][#141193] +- `pg_column_size()` no longer requires that all arguments have the same type. [#141193][#141193] +- `num_nulls()` and `num_nonnulls()` no longer require all arguments to have the same type. [#141193][#141193] +- `json_build_object()`, `jsonb_build_object()`, `json_build_array()`, and `jsonb_build_array()` no longer require that all arguments have the same type. [#141193][#141193] +- Double-quoted key accessors are now supported in JSONPath queries. For example, `SELECT '$."1key"."key2"'::JSONPATH;`. [#142241][#142241] +- Array integer indexing is now supported in JSONPath queries. For example, `$.a[1]`. [#142241][#142241] +- Array ranges are now supported in JSONPath queries. For example, `$.a[1 to 3]`). [#142241][#142241] +- Array unions are now supported in JSONPath queries. For example, `$.a[1, 2 to 4, 7, 8]`. [#142241][#142241] +- Fixed a regression due to join-elimination rules that prevented other optimization rules from applying. [#142252][#142252] +- Statements such as `REFRESH MATERIALIZED VIEW` and `CREATE MATERIALIZED VIEW` can now be executed with an `AS OF SYSTEM TIME` clause. These statements can still not be used in an explicit transaction. [#142259][#142259] +- Add the `jsonb_path_query` function, which takes in a JSON object and a JSONPath query and returns the resulting JSON object. [#142336][#142336] +- Added the `ALTER VIRTUAL CLUSTER .. SET REPLICATION SOURCE` command so users can configure producer jobs on the source cluster. Currently, users can only configure the `EXPIRATION WINDOW`. Also, removed the `EXPIRATION WINDOW` option from the consumer side command of `ALTER VIRTUAL CLUSTER SET REPLICATION`. [#142501][#142501] +- `EXPLAIN ANALYZE` statements now display the number of transaction retries and time spent retrying, if non-zero, in the plan output. [#142692][#142692] +- Users can now begin logical data replication (LDR) on an existing table if the user has a table-level `REPLICATIONDEST` privilege. Furthermore, users can now begin LDR onto an automatically created table if the user has the parent database level `CREATE` privilege. Finally, during bidirectional LDR, the user in the original source URI, who will begin the reverse LDR stream, to authorize via this table-level `REPLICATIONDEST` privilege. [#142840][#142840] +- Logical operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '1 < 2 && 3 >= 2')`. [#142899][#142899] +- Comparison operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', 1 < 2)`. [#142899][#142899] +- It is now possible to automatically collect partial table statistics, but disable automatic collection of full table statistics. The new cluster and table settings to enable/disable automatic collection of full table statistics (without affecting the settings for partial stats) are `sql.stats.automatic_full_collection.enabled` and `sql_stats_automatic_full_collection_enabled`, respectively. The settings default to `true`. [#142924][#142924] +- The return type of the `workload_index_recs` built-in function now includes two columns. The first column, `index_rec`, remains a `STRING` type and contains the index recommendation. The second column, `fingerprint_ids`, is new and has the `BYTES[]` type. [#142927][#142927] +- Update edge cases in the `width_bucket()` function to return `count + 1` for a positive infinity operand, and `0` for a negative infinity operand, instead of an error. [#142932][#142932] +- Implemented various `power()` and `^` edge cases to match PostgreSQL behaviour. Some expressions that previously returned `NaN` now return specific numbers; some expressions that previously returned `Infinity` or `NaN` now return errors; and some expressions with infinite exponents now return different results. [#142932][#142932] +- Added the `jsonb_path_exists` function, which accepts a JSON object and JSONPath query and returns whether the query returned any items. [#143028][#143028] +- Filters are now supported in JSONPath queries, using the format `$ ? (predicate)`. This allows results to be filtered. For example, `SELECT jsonb_path_query('{"a": [1,2,3]}', '$.a ? (1 == 1)');`. [#143097][#143097] +- Addition, subtraction, multiplication, division, and modulo operators are now supported in JSONPath queries. [#143210][#143210] +- String comparisons are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '"a" < "b"');`. [#143240][#143240] +- Null comparisons are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', 'null != 1');`. [#143240][#143240] +- `like_regex` predicate evaluation is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '"hello" like_regex "^he.*$"');`. [#143240][#143240] +- The job description for `AUTO CREATE PARTIAL STATS` now clearly indicates that the job is for automatic partial statistics collection, improving `system.jobs` visibility and debugging. [#143283][#143283] +- Added documentation for previously hidden DDL statements related to row-level security (RLS). RLS enables fine-grained access control by enforcing policies that determine which rows a user can read or modify. [#143510][#143510] +- Assigning to an element of a composite-typed variable in a PL/pgSQL routine now respects case-sensitivity rules. For example, a field named `"FOO_Bar"` can be assigned using `NEW."FOO_Bar" = 100`. [#143579][#143579] +- Wildcard key accessors are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{"a": 1, "b": true}', '$.*');`. [#143588][#143588] +- Unary arithmetic operators are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('[1, 2, 3]', '-$');`. [#143613][#143613] +- `last` is now supported for array indexing in JSONPath queries. For example, `SELECT jsonb_path_query('[1, 2, 3, 4]', '$[1 to last]');`. [#143658][#143658] +- `exists()` is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('[1, 2, 3]', 'exists($[*])');`. [#143667][#143667] +- `() is unknown` is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '($ < 1) is unknown');`. [#143668][#143668] +- `starts with ""` is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('"abcdef"', '$ + starts with "abc"');`. [#143675][#143675] +- Set-returning functions (SRF) are now supported in PL/pgSQL. A PL/pgSQL SRF can be created by declaring the return type as `SETOF ` or `TABLE`. [#143820][#143820] +- Usage of `TG_ARGV` in trigger functions is now disallowed by default. The session setting `allow_create_trigger_function_with_argv_references` can be set to `true` to allow usage (with 1-based indexing). [#143827][#143827] +- A new `execution time` statistic is now reported on `EXPLAIN ANALYZE` output for most operators. Previously, this statistic was only available on the DistSQL diagrams in `EXPLAIN ANALYZE (DISTSQL)` output. [#143857][#143857] +- Added a new session variable `create_table_with_schema_locked`, which can be used to ensure all tables created by a session have the storage parameter `schema_locked` set. [#143892][#143892] +- Added the `jsonb_path_query_first` function, which returns the first result from `jsonb_path_query`. [#144006][#144006] +- Added the `jsonb_path_query_array` function, which returns the result of `jsonb_path_query` wrapped in a JSON array. [#144006][#144006] +- Added the `jsonb_path_match` function, which returns the result of a predicate query. [#144006][#144006] +- The following syntax is now supported: `GRANT ... ON ALL ROUTINES IN SCHEMA ...`; `REVOKE ... ON ALL ROUTINES IN SCHEMA ...`; `ALTER DEFAULT PRIVILEGES GRANT ... ON ROUTINES ...`; `ALTER DEFAULT PRIVIELGES REVOKE ... ON ROUTINES ...`. The `ROUTINES` keyword makes the command apply to both functions and stored procedures. Note that `ALTER DEFAULT PRIVILEGES ... ON FUNCTIONS` already applied to stored procedures (which aligns with the PostgreSQL behavior), and that is not changing. [#144189][#144189] +- Parenthesized expressions are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{"a": {"b": true}}', '($.a).b');` [#144245][#144245] +- The `.size()` method is now supported in JSONPath expressions. For example, `SELECT jsonb_path_query('[1, 2, 3]', '$.size()');`. [#144266][#144266] +- The `.type()` method is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('[1, 2, 3]', '$.type()');`. [#144266][#144266] +- Non-integer array indices are now supported in JSONPath queries (e.g., `SELECT jsonb_path_query('[1, 2, 3]', '$[2.5]');`). Indices are rounded toward 0. [#144385][#144385] +- The variable arguments of polymorphic built-in functions (e.g., `concat`, `num_nulls`, `format`, `concat_ws`, etc.) no longer need to have the same type, matching PostgreSQL behavior. As a result, CockroachDB's type inference engine will no longer be able to infer argument types in some cases where it previously could, and there is a possibility that CockroachDB applications will encounter new errors. The new session variable `use_pre_25_2_variadic_builtins` restores the previous behavior (and limitations). [#144522][#144522] +- When creating a vector index with the `USING` syntax, `hnsw` can now be specified as the index type, although a `cspann` vector index is still provided. This change increases compatibility with third-party tools. [#144533][#144533] +- The `vector_l2_ops` operator class can now be specified for a vector index. Because `vector_l2_ops` is the default, it is possible to omit the operator class from an index definition. [#144533][#144533] +- Added new cluster settings: `sql.metrics.application_name.enabled` and `sql.metrics.database_name.enabled`. These settings default to `false` and can be set to `true` to display the application name and database name, respectively, on supported metrics. [#144610][#144610] +- Added support for numeric JSONPath methods `.abs()`, `.floor()`, `.ceiling()`. For example, `SELECT jsonb_path_query('-0.5', '$.abs()');`. [#144643][#144643] +- Added support for `like_regex` flags in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '"a" like_regex ".*" flag "i"');`. [#144658][#144658] +- `CREATE VECTOR INDEX` and `ALTER PRIMARY KEY` now send a notice that vector indexes will be offline during the change operation when the `sql_safe_updates` session setting is disabled. [#144702][#144702] +- Added support for camelCase parameter names + (e.g., "SharedAccessKeyName") in Azure Event Hub Kafka sink + configuration [#144735][#144735] +- Vector index creation is now prevented until the entire cluster upgrade has been finalized on v25.2 or later. [#145091][#145091] +- Disabled `IMPORT INTO` for tables with vector indexes, because importing into vector indexes is not implemented. [#145236][#145236] +- Added support for query tagging, which allows users to add query tags to their SQL statements via comments. These query tags are included in: +- All log entries generated during the execution of a SQL statement and are prefixed by `querytag-`. +- Traces and are prefixed by `querytag-`. +- In the `crdb_internal.cluster_execution_insights` and `crdb_internal.node_execution_insights` virtual tables in a new `query_tags` JSONB column. +This feature is disabled by default and can be enabled using the `sql.sqlcommenter.enabled` cluster setting. Comments must follow the [SQLCommenter specification](https://google.github.io/sqlcommenter/spec/). [#145435][#145435] +- Fixed a bug that caused a routine with an `INSERT` statement to unnecessarily block dropping a hash-sharded index or computed column on the target table. This fix applies only to newly created routines. In releases prior to v25.3, the fix must be enabled by setting the session variable `use_improved_routine_dependency_tracking` to `on`. [#146250][#146250] +- `~~` and `!~~` are now supported aliases for `LIKE` and `NOT LIKE`. [#146764][#146764] +- `~~*` and `!~~*` are now supported aliases for `ILIKE` and `NOT ILIKE`. [#146764][#146764] +- Added a session variable `initial_retry_backoff_for_read_committed` that controls the initial backoff duration when retrying an individual statement in an explicit `READ COMMITTED` transaction. A duration of `0` disables exponential backoff. If a statement in an explicit `READ COMMITTED` transaction is failing with the `40001` error `ERROR: restart transaction: read committed retry limit exceeded; set by max_retries_for_read_committed=...`, then you should set `initial_retry_backoff_for_read_committed` to a duration proportional to the typical execution time of the statement (in addition to also increasing `max_retries_for_read_committed`). [#146860][#146860] +- Deterministic collations are now supported with `LIKE`. A deterministic collation considers strings to be equal only if they consist of the same byte sequence. [#147045][#147045] +- The `information_schema.triggers` table is now populated with trigger metadata. Users can query this table to see all triggers defined in their database, including the trigger name, timing (`BEFORE`/`AFTER`), event type (`INSERT`/`UPDATE`/`DELETE`), and associated function. Each trigger event appears as a separate row in the table. [#147237][#147237] +- The `pg_catalog.pg_trigger` table now returns metadata about database triggers. [#147248][#147248] +- Directionality may no longer be assigned to any vector index column. Prefix columns are not scannable in a vector index, so directionality is not relevant to them. [#147307][#147307] +- Added the `SHOW CREATE ALL ROUTINES` statement, which can be used to show `CREATE` statements for all user-defined functions (UDFs) and procedures in the current database. [#147452][#147452] +- Added the metrics `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count`, which count the number of automatic retries of SQL transactions and statements, respectively, within the database. These metrics differ from the related `txn.restarts.*` metrics, which count retryable errors emitted by the KV layer that must be retried. The new `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count` metrics count auto-retry actions taken by the SQL layer in response to some of those retryable errors. [#147682][#147682] +- Computed column expressions and `ON UPDATE` expressions can now reference user-defined functions. [#147817][#147817] +- Partial indexes can now reference user-defined functions. [#147817][#147817] +- Added the `SHOW CREATE ALL TRIGGERS` statement. [#147836][#147836] +- The `CITEXT` data type is now supported, enabling case-insensitive comparisons for `CITEXT` columns. Internally, `CITEXT` is equivalent to using the undetermined level 2 collation `und-u-ks-level2`. For example, under `CITEXT`, the expression `'test' = 'TEST'` returns `TRUE`. [#147864][#147864] +- Increased the default value for the `max_retries_for_read_committed` session variable from `10` to `100`. Testing has shown that some high-contention workloads running under `READ COMMITTED` isolation benefit from more statement retries. [#147869][#147869] +- The session variable `initial_retry_backoff_for_read_committed` now defaults to `2` (milliseconds). Testing has shown that some high-contention workloads running under `READ COMMITTED` isolation benefit from exponential backoff. `2` might be too quick of an initial backoff for longer-running statements, but setting this value much higher than the normal duration of execution will cause excessive delay. [#147869][#147869] +- `IMPORT TABLE`, `IMPORT PGDUMP`, and `IMPORT MYSQLDUMP` are now fully removed. These statements have been deprecated in favor of `IMPORT INTO` since v23.2. [#148248][#148248] +- Changed the basic sequence caching option to cache at the per-node level by default. The `PER SESSION CACHE` sequence option is added to provide the previous per-session cache behavior. [#148290][#148290] +- The functionality provided by session variable `enforce_home_region_follower_reads_enabled` was deprecated in v24.2.4 and is now removed. (The variable itself remains for backward compatibility but has no effect.) Note that the related session variable `enforce_home_region` is **not** deprecated and still functions normally. [#148314][#148314] +- Removed the 'started' column in `SHOW JOBS`, which was a duplicate of the 'created' column. [#148464][#148464] +- Added support for automatically determining the region column for a `REGIONAL BY ROW` table using a foreign key constraint. The foreign key is specified by setting a new table storage parameter `infer_rbr_region_col_using_constraint`, and must contain the region column. This can be useful for applications that are unable to guarantee that a child row is inserted or updated from the same region as the matching parent row. [#148540][#148540] +- Added support for invoking a UDF from a view query. Renaming or setting the schema on the routine is currently not allowed if it is referenced by a view. [#148616][#148616] +- Updated the `SHOW CREATE FUNCTION` and `SHOW CREATE PROCEDURE` statements to show fully qualified table names rather than assuming they are qualified with the current database. [#148746][#148746] +- Added the `has_system_privilege` builtin function, which can be used to check if a user has the given system privilege. [#149051][#149051] +- Updated schema change job status messages to be more user-friendly and descriptive, instead of using internal schema change architecture terminology. [#149096][#149096] +- The logical cluster now uses an external connection and automatically updates its configuration when that connection changes. [#149261][#149261] +- Fix a bug where extra quotes or escaped + quote characters would be added to topic names in changefeeds. + Can be turned off by setting feature.changefeed.bare_table_names to + false. [#149438][#149438] +- The users with the role option `PROVISIONSRC` + assigned to them will be unable to change their own password overriding any + config set for sql.auth.change_own_password.enabled cluster setting. Changing + other role options still has the same privilege requirements as before (either + CREATEROLE or CREATELOGIN, depending on the option). The role option for + PROVISIONSRC is also only assignable and cannot be altered using `ALTER role` + command. [#149463][#149463] +- The session setting `optimizer_prefer_bounded_cardinality` is now enabled by default. This setting instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. [#149486][#149486] +- Added `num_txn_retries` and `num_txn_auto_retries` columns to the `crdb_internal.{cluster,node}_queries` virtual tables and to the output of `SHOW QUERIES`. When not `NULL`, these columns reflect the same values as `num_retries` and `num_auto_retries` in `crdb_internal.{cluster,node}_transactions` for the transaction in which the query is running. [#149503][#149503] +- The session setting `optimizer_min_row_count`, which sets a lower bound on row count estimates for relational expressions during query planning, is now set to `1` by default. [#149602][#149602] +- WITH header_row flag is added to EXPORT. + Returns error for non-csv type. Another row is prepended to the csv file + with the column names. [#149686][#149686] +- Users can now ALTER EXTERNAL CONNECTION to + change the external connection URI when granted UPDATE privilege on + EXTERNAL CONNECTION. + + Fixes #98610 [#149869][#149869] +- The `json ? string`, `json ?& array`, `json ?| array`, and `array && array` operators are now index-accelerated for `INVERTED JOIN` statements if there is an inverted index on the JSON column referenced on the left-hand side of the expression. [#149898][#149898] +- The column for `estimated_last_login_time` in + `system.users` will be updated with the TIMESTAMP of user login post successful + authentication. The `SHOW users` view will now show the updated value. + + ``` + root@localhost:26257/defaultdb> SHOW users; + username | options | member_of | estimated_last_login_time + -----------------+-------------------------------------------------------------------------------------+-----------+-------------------------------- + admin | {} | {} | NULL + root | {} | {admin} | 2025-07-13 11:51:29.406216+00 + sourav.sarangi | {} | {} | NULL + (3 rows) + + NOTICE: estimated_last_login_time is computed on a best effort basis; it is not guaranteed to capture every login event + ``` [#150105][#150105] +- The column for `estimated_last_login_time` in + `system.users` will be updated with the TIMESTAMP of user login post successful + authentication. The `SHOW users` view will now show the updated value. + + ``` + root@localhost:26257/defaultdb> SHOW users; + username | options | member_of | estimated_last_login_time + -----------------+-------------------------------------------------------------------------------------+-----------+-------------------------------- + admin | {} | {} | NULL + root | {} | {admin} | 2025-07-13 11:51:29.406216+00 + sourav.sarangi | {} | {} | NULL + (3 rows) + + NOTICE: estimated_last_login_time is computed on a best effort basis; it is not guaranteed to capture every login event + ``` [#150375][#150375] +- The session setting `optimizer_min_row_count`, which sets a lower bound on row count estimates for relational expressions during query planning, is now set to `1` by default. [#150376][#150376] +- `LTREE` is now supported with ancestry operators and with the `concat` operator. Specifically, CockroachDB now allows `ltree @> ltree`, `ltree[] @> ltree`, `ltree @> ltree[]`, `ltree <@ ltree`, `ltree[] <@ ltree`, and `ltree <@ ltree[]` binary comparisons, as well as `ltree[] ?@> ltree`, `ltree[] ?<@ ltree`, and `ltree || ltree` binary operations. The `?@>` and `?<@` are new binary operators that return the first ltree (or `NULL`) that is an ancestor or descendant of the right ltree argument in the array. [#150598][#150598] +- Clusters utilizing cluster virtualization, such as those running Physical Cluster Replication (PCR), apply the same admission control (AC) pacing to various bulk operations used by clusters that are not running with cluster virtualization. [#150633][#150633] +- All PostgreSQL built-in functions for `LTREE` are now supported: `subltree()`, `subpath()`, `nlevel()`, `index()`, `text2ltree()`, `ltree2text()`, and `lca()`. While the `lca()` function in PostgreSQL specifically limits up to 8 LTREE args, the CockroachDB `lca()` function accepts any variable number of ltree args. [#150647][#150647] +- `CREATE USER` and `GRANT` role operations now wait for full-cluster visibility of the new user table version rather than blocking on convergence. [#150747][#150747] +- Improved the optimizer to hoist projections above joins in more cases, which can lead to better query plans. This behavior can be enabled with the new session variable `optimizer_use_improved_hoist_join_project`. [#150887][#150887] +- Introduced `INSPECT TABLE` and `INSPECT DATABASE` syntax (whose underlying logic is not yet implemented). Added the `enable_inspect_command` session setting, which toggles access to the new `INSPECT ...` features as they're implemented. [#151067][#151067] +- Tables with vector indexes are no longer taken offline while the vector index builds. [#151074][#151074] +- Previously, using a pausable portal with a procedure call could cause a panic, depending on the function body. Now, transaction control statements such as procedure calls (e.g., `CALL myfunc()`) are disallowed within pausable portals. [#151153][#151153] +- Added the `allow_unsafe_internals` session variable and `sql.defaults.allow_unsafe_internals` cluster setting to gate access to system database internals. Default access is allowed to support testing. [#151362][#151362] +- When `sql_safe_updates` is enabled, the `ALTER TABLE ... LOCALITY` statement will be blocked when trying to convert an existing table to `REGIONAL BY ROW`, unless a region column has been added to the table. This protects against undesired behavior that caused `UPDATE` or `DELETE` statements to fail against the table while the locality change was in progress. [#151423][#151423] +- Introduced the `SHOW INSPECT ERRORS` statement that is unimplemented. [#151674][#151674] +- Added metrics for statements executed within a stored procedure or function. The following metrics count statements that began execution, including those that failed: `sql_routine_select_started_count`, `sql_routine_update_started_count`, `sql_routine_insert_started_count`, and `sql_routine_delete_started_count`. The following metrics count only successful executions: `sql_routine_select_count`, `sql_routine_update_count`, `sql_routine_insert_count`, and `sql_routine_delete_count`. All counters are global and increment before the transaction is committed or aborted. [#151689][#151689] +- Introduced the `inspect_errors` system table. [#151821][#151821] +- Added a new session variable, `disable_optimizer_rules`, which allows users to provide a comma-separated list of optimizer rules to disable during query optimization. This allows users to avoid rules that are known to create a suboptimal query plan for specific queries. [#151959][#151959] +- The SQL observability statements `SHOW TRANSACTIONS`, `SHOW QUERIES`, and `SHOW SESSIONS` now include an `isolation_level` column that shows the isolation level of the active transaction, or the session's default isolation level when there is no active transaction. [#152352][#152352] +- 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] +- The default value of `use_soft_limit_for_distribute_scan` session variable is now `true`. This means that, by default, the soft limit (if available) will be used to determine whether a scan is "large" and, thus, should be distributed. For example, with `estimated row count: 100 - 10,000`, CockroachDB will use `100` as the estimate to compare against the value of `distribute_scan_row_count_threshold`. [#152557][#152557] +- Added the `bulkio.import.row_count_validation.unsafe.enabled` cluster setting (default: `false`), which triggers an asynchronous `INSPECT` job at the end of an `IMPORT` to validate row counts. [#153294][#153294] +- Added a built-in function, `crdb_internal.request_transaction_bundle`, that allows users to request a transaction diagnostics bundle for a specified transaction fingerprint ID. [#153608][#153608] +- Implemented the `pg_get_function_arg_default` builtin function. This also causes the `information_schema.parameters(parameter_default)` column to be populated correctly. [#153625][#153625] +- Added the `SHOW INSPECT ERRORS` command. This command can be used to view issues that are identified by running the `INSPECT` command to validate tables and indexes. [#154337][#154337] +- Added the `sql.catalog.allow_leased_descriptors.enabled` cluster setting, which is false by default. When set to true, queries that access the `pg_catalog` or `information_schema` can use cached leased descriptors to populate the data in those tables, with the tradeoff that some of the data could be stale. [#154491][#154491] +- 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) [#154631][#154631] +- The optimizer can now use table statistics that merge the latest full statistic with all newer partial statistics, including those over arbitrary constraints over a single span. [#154755][#154755] +- 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. [#155123][#155123] +- 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. [#155123][#155123] +- Added the `INSPECT` command, which runs consistency validation check jobs against tables or databases and specified indexes. [#155441][#155441] +- 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`. [#155509][#155509] - Vector indexing is now enabled by default. `feature.vector_index.enabled` defaults to `true`. [#155561][#155561] -- Added a `sql.statements.rows_read.count` metric that counts the number of index rows read by SQL statements. [#156459][#156459] -- Added sql.statements.index_rows_written.count metric - that counts the number of primary and secondary index rows modified by SQL - statements. [#156459][#156459] - Added sql.statements.index_bytes_written.count metric that counts the number of primary and secondary index bytes modified by SQL statements. [#156459][#156459] - Added sql.statements.bytes_read.count metric that counts the number of bytes scanned by SQL statements. [#156459][#156459] +- Added sql.statements.index_rows_written.count metric + that counts the number of primary and secondary index rows modified by SQL + statements. [#156459][#156459] +- Added a `sql.statements.rows_read.count` metric that counts the number of index rows read by SQL statements. [#156459][#156459] - CockroachDB now supports index accelerating `jsonb_path_exists` filters with JSONpath expressions that end with an AnyKey (`*`). [#156508][#156508] +

Operational changes

+ +- Added the cluster setting `server.child_metrics.include_aggregate.enabled` (default: `true`) that controls the behavior of Prometheus child metrics reporting (`/_status/vars`). When set to `true`, child metrics include an aggregate time series, maintaining the existing behavior. When set to `false`, it stops reporting the aggregate time series, preventing double counting when querying metrics. [#141601][#141601] +- To create a physical cluster replication (PCR) stream, a user must have the `REPLICATIONDEST` privilege, in addition to the already required `MANAGEVIRTUALCLUSTER` privilege. [#142345][#142345] +- To create a physical cluster replication (PCR) stream, a user must have the `REPLICATIONDEST` privilege, in addition to the already required `MANAGEVIRTUALCLUSTER` privilege. [#142345][#142345] +- The `sys.cpu.host.combined.percent-normalized` metric has been updated to include additional counters for more accurate host CPU measurement and to reduce underreporting. It now accounts for time spent processing hardware (`irq`) and software (`softirq`) interrupts, as well as `nice` time, which represents low-priority user-mode activity. [#142478][#142478] +- The `kv.snapshot_receiver.excise.enable` cluster setting has been retired. This feature is now enabled unconditionally. [#142651][#142651] +- Previously, the user supplied in the source cluster connection in PCR and LDR required the `REPLICATION` privilege, which will be deprecated in v25.2 but temporarily supported. Instead, the user will need the new `REPLICATION SOURCE` privilege. [#142749][#142749] +- All `ALTER VIRTUAL CLUSTER REPLICATION JOB` commands for physical cluster replication (PCR), except for `ALTER VIRTUAL CLUSTER SET REPLICATION SOURCE`, will require the `REPLICATIONDEST` privilege, in addition to `MANAGEVIRTUALCLUSTER`. `ALTER VIRTUAL CLUSTER SET REPLICATION SOURCE` now requires the `REPLICATIONSOURCE` privilege. If the ingestion job was created before v25.1, the user can still alter the replication job without the `REPLICATIONDEST` privilege. [#142772][#142772] +- Added 4 new latency metrics: + sql.service.latency.historical, sql.service.latency.consistent, + sql.exec.latency.historical, sql.exec.latency.consistent for easier query + optimizations. [#142826][#142826] +- The /health/restart_safety endpoint indicates + when it is unsafe to terminate a node. [#142930][#142930] +- The `kv.mvcc_gc.queue_kv_admission_control.enabled` cluster setting was retired. [#143124][#143124] +- The `server.client_cert_expiration_cache.capacity` cluster setting has been removed. The `security.certificate.expiration.client` and `security.certificate.ttl.client` metrics now report the lowest value observed for a user in the last 24 hours. [#143384][#143384] +- Previously, the user provided in the source URI in the logical data replication (LDR) stream required the `REPLICATIONSOURCE` privilege at the system level. With this change, the user only needs this privilege on the source tables (i.e., a table-level privilege). [#143456][#143456] +- Prometheus metrics are now also available at the `/metrics` endpoint, in addition to the existing `/_status/vars` endpoint. The new `/metrics` endpoint emits statically labeled metrics and will evolve more rapidly as CockroachDB migrates metrics to use labels instead of defining different metric names. For compatibility, users can continue to use `/_status/vars`, where metric names will remain stable. [#143536][#143536] +- `debug zip` queries are now attributed to internal SQL metrics. As a result, users will no longer see their impact on the SQL charts in the DB Console. [#143711][#143711] +- Added a new metric, `kv.loadsplitter.cleardirection`, which increments when the load-based splitter observes that more than 80% of replica access samples are moving in a single direction (either left/descending or right/ascending). [#143927][#143927] +- The cluster setting `server.client_cert_expiration_cache.capacity` has been deprecated. The client certificate cache now evicts client certificates based on expiration time. [#144181][#144181] +- Added job tracing support to changefeeds. [#144412][#144412] +- When the `server.telemetry.hot_ranges_stats.enabled` cluster setting is enabled, nodes check for hot ranges every minute instead of every 4 hours. A node logs its hot ranges when any single replica exceeds 250 ms of CPU time per second. In multi-tenant deployments, the check runs every 5 minutes and logs hot ranges for the entire cluster. [#144414][#144414] +- Logical data replication (LDR) can now replicate on tables with partial indexes when using the default on SQL writer path. [#144415][#144415] +- partial index schema changes are supported in + replicating tables when logical_replication.consumer.immediate_mode_writer is + not set to legacy-kv [#144508][#144508] +- Logs for hot ranges (`hot_ranges_stats` events) have been moved to the `HEALTH` logging channel. [#144567][#144567] +- Added the metric `changefeed.checkpoint.timestamp_count` that measures the number of unique timestamps in a changefeed span-level checkpoint. It may be useful to monitor this metric to determine if quantization settings should be changed. [#145117][#145117] +- In a physical cluster replication (PCR) deployment, it is not possible for the standby system virtual cluster, or the reader virtual cluster to upgrade the reader virtual cluster by setting the version cluster setting. It is necessary to: + 1. Upgrade the standby system virtual cluster. + 1. Upgrade the primary system virtual cluster. + 1. Upgrade the primary virtual cluster. + 1. Wait for the replicated time to advance past the time the primary virtual cluster upgraded. + 1. Shut down the reader virtual cluster. + 1. Upgrade the destination host cluster. + 1. Re-initialize the reader virtual cluster with `ALTER VIRTUAL CLUSTER SET REPLICATION READ VIRTUAL CLUSTER`. [#146127][#146127] +- Added an `alter_changefeed` structured log event to provide more visibility into when an `ALTER CHANGEFEED` event occurred and what changed. [#147679][#147679] +- Added new timeseries metrics to the `storage.value_separation.*` namespace for observing the behavior of storage engine value separation. [#147728][#147728] +- Introduced the following cluster settings for enabling and configuring value separation in the storage engine: `storage.value_separation.enabled`, `storage.value_separation.minimum_size`, and `storage.value_separation.max_reference_depth`. [#148535][#148535] +- Non-admin users no longer have access to changefeed jobs they do not own and which are not owned by a role of which they are a member, regardless of whether they have the `CHANGEFEED` privilege on the table or tables those jobs may be watching. Admin users, or those with global `SHOWJOB` / `CONTROLJOB` privileges, can still interact with all jobs, regardless of ownership. [#148537][#148537] +- In order to selectively capture + traces for transactions running in an active workload without haing + to capture them via statement diagnostic bundles, customers can now + use the `sql.trace.txn.sample_rate` cluster setting to enable tracing + for a fraction of their workload. The `sql.trace.txn.enable_threshold` + will still need to be set to a positive value to provide a filter + for how slow a transaction needs to be after being sampled to merit + emitting a trace. Traces are emitted to the `SQL_EXEC` logging + channel. [#148542][#148542] +- Added the following cluster settings for configuring blob file rewrite compactions: `storage.value_separation.rewrite_minimum_age` and `storage.value_separation.compaction_garbage_threshold`. [#148782][#148782] +- The default value of `server.mem_profile.total_dump_size_limit` (which controls how much space can be used by automatically collected heap profiles) has been increased from 256MiB to 512MiB. [#148848][#148848] +- Added new experimental values for compression cluster settings to the storage engine. [#148849][#148849] +- The `storage.value_separation.enabled` cluster setting is now enabled by default. This enables value separation for SSTables, where values exceeding a certain size threshold are stored in separate blob files rather than inline in the SSTable. This helps improve write performance (write amplification) by avoiding rewriting such values during compactions. [#148857][#148857] +- A structured event is now logged to the `SQL_SCHEMA` channel when the `REFRESH MATERIALIZED VIEW` statement is executed. [#149153][#149153] +- Removed the `storage.columnar_blocks.enabled` cluster setting; columnar blocks are always enabled. [#149371][#149371] +- A new feature is now available that automatically captures Go execution traces on a scheduled interval. This feature incurs a performance penalty and is generally intended for use under the guidance of Cockroach Labs Support. It can be configured using the following cluster settings: + +- `obs.execution_tracer.interval`: Enables the tracer and sets the interval for capturing traces. Set to a value greater than 0 to activate. +- `obs.execution_tracer.duration`: Specifies the duration for each captured trace. +- `obs.execution_tracer.total_dump_size_limit`: Sets the maximum disk space allowed for storing execution traces. Older traces are automatically deleted when this limit is reached. [#149373][#149373] +- Introduced a cluster setting, `sql.stats.error_on_concurrent_create_stats.enabled`, which modifies how CockroachDB reacts to concurrent auto stats jobs. The default, `true`, maintains the previous behavior. Setting `sql.stats.error_on_concurrent_create_stats.enabled` to `false` will cause the concurrent auto stats job to be skipped with just a log entry and no increased error counters. [#149538][#149538] +- The value of `sql.stats.error_on_concurrent_create_stats.enabled` now defaults to `false`, suppressing error counters for auto stats jobs that fail due to concurrent stats jobs in progress. [#149848][#149848] +- Updated TTL job replanning to be less sensitive by focusing specifically on detecting when nodes become unavailable rather than reacting to all plan differences. The cluster setting `sql.ttl.replan_flow_threshold` may have been set to `0` to work around the TTL replanner being too sensitive; this fix will alleviate that and any instance that had set `replan_flow_threshold` to `0` can be reset back to the default. [#150771][#150771] +- `auth.ldap.conn.latency.internal` has been added to denote the internal authentication time for ldap auth method. [#151105][#151105] +- Introduced two new logging channels: `KV_EXEC` and `CHANGEFEED`. The `KV_EXEC` channel is intended for KV events that do not fall into the `KV_DISTRIBUTION` channel. The `CHANGEFEED` channel is intended for changefeed-related events that are currently logged to the `TELEMETRY` channel. This change does not include logic to move existing logs to the new channels. [#151692][#151692] +- Restricted access to internal tables in the `crdb_internal` schema. Only a predefined allowlist of internal objects is accessible when the session variable `allow_unsafe_internals` is enabled or when the caller is internal. [#151804][#151804] +- In v26.1, changefeed events will be logged to the `CHANGEFEED` logging channel instead of `TELEMETRY`. To test the impact of this change before upgrading, set the cluster setting `log.channel_compatibility_mode.enabled` to `false`. This redirects changefeed logs to the `CHANGEFEED` channel and should be tested only in non-production environments. [#151807][#151807] +- In v26.1, SQL performance events will be logged to the `SQL_EXEC` channel instead of the `SQL_PERF` and `SQL_INTERNAL_PERF` channels. To test the impact of this change, you can set the new cluster setting `log.channel_compatibility_mode.enabled` to `false`. This redirects SQL performance logs to the `SQL_EXEC` channel. This setting should not be used in production environments, as it may affect downstream logging pipelines. [#151827][#151827] +- Restricted access to all `crdb_internal` built-ins unless the session variable `allow_unsafe_internals` is set to true, or the caller is internal. [#151887][#151887] +- In v26.1, `sampled_query` and `sampled_transaction` events will move from the `TELEMETRY` channel to the `SQL_EXEC` logging channel. To test for potential logging pipeline impacts of these changes, set `log.channel_compatibility_mode.enabled` to `false`. Avoid testing in production, as this setting changes live log behavior. [#151949][#151949] +- Delegate queries (such as `SHOW DATABASES`) are now excluded from unsafe SQL checks that restrict access to the `system` database and `crdb_internal` schema. This change ensures that these commands continue to function even when access to internal components is otherwise restricted. [#152084][#152084] +- Added the cluster setting `kvadmission.use_range_tenant_id_for_non_admin.enabled`, which can be used to disable the behavior where Admission Control uses the range's tenant ID for non-admin requests. This behavior is enabled by default. [#152181][#152181] +- CockroachDB now logs structured contention event data, including waiting and blocking transactions, contended keys, and total contention time. [#152190][#152190] +- the PCR reader tenant is always destroyed on cutover [#152509][#152509] +- CockroachDB now logs access to internal system tables and schemas considered unsafe (e.g., `crdb_internal` and `system`). A message is emitted to the `SENSITIVE_ACCESS` log channel when a user overrides the `allow_unsafe_internals` setting or is denied access to these areas. [#152532][#152532] +- A new `changefeed` file group that collects + changefeed logs has been added to the default logging configuration. [#153381][#153381] +- this patch removes the + bulkio.backup.deprecated_full_backup_with_subdir.enabled cluster setting, since + backups will now fail if it is set to true. [#153628][#153628] +- Raised the cache size for the storage engine's block cache to 256 MiB. Note that production systems should always configure this setting. [#153739][#153739] +- 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] +- the incremental_location option is now deprecated + and will be removed in a future release. This feature was added so customers + could define different TTL policies for incremental backups vs full backups. + Users can still do this since incremental backups are by default stored in a + distinct directory relative to full backups ({collection_root}/incrementals). [#153890][#153890] +- 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}`. [#154166][#154166] +- The metrics `sql.select.started.count`, `sql.insert.started.count`, `sql.update.started.count`, and `sql.delete.started.count` are now emitted with labels under the common metric name `sql.started.count`, using a `query_type` label to distinguish each operation. [#154388][#154388] +- Added the cluster setting `storage.unhealthy_write_duration` (defaults to 20s), which is used to indicate to the allocator that a store's disk is unhealthy. The cluster setting `kv.allocator.disk_unhealthy_io_overload_score` controls the overload score assigned to a store with an unhealthy disk, where a higher score results in preventing lease or replica transfers to the store, or shedding of leases by the store. The default value of that setting is 0, so the allocator behavior is unaffected. [#154459][#154459] +- Added cluster setting `sql.schema.approx_max_object_count` (default: 20,000) to prevent creation of new schema objects when the limit is exceeded. The check uses cached table statistics for performance and is approximate - it may not be immediately accurate until table statistics are updated by the background statistics refreshing job. Clusters that have been running stably with a larger object count should raise the limit or disable the limit by setting the value to 0. In future releases, the default value for this setting will be raised as more CockroachDB features support larger object counts. [#154576][#154576] + +

Command-line changes

+ +- Node attributes (attrs) will now appear in + the node status cli command. [#143421][#143421] +- Added the `--validate-zip-file` flag to `cockroach debug zip` command. This flag performs a quick validation check to ensure that the generated zip file is not corrupted. The flag is enabled by default. [#146192][#146192] +- Updated the `\d
` command to show policy and Row Level Security information similar to what is shown in the output of `SHOW CREATE TABLE`. [#146215][#146215] +- The SQL shell now supports the compact output mode when `auto_trace` is enabled. [#146432][#146432] +- Removed the stale `--oss` flag from the `dev ui watch` subcommand. This flag was no longer in use, as the UI development workflow now exclusively targets the CCL build. This change simplifies the tool by removing an unused build path and potential confusion for developers. [#147978][#147978] +- The internal generator used by `cockroach workload` now supports parsing DDL schemas into a structured YAML format, enabling more flexible and detailed workload generation configurations. [#149513][#149513] +- Improved the performance of the `debug zip` query that collects `transaction_contention_events` data. This change reduces the risk of encountering “memory budget exceeded” or “query execution canceled due to statement timeout” errors. [#149570][#149570] +- The `cockroach workload` internals have been updated with built-in generators and wrappers for various SQL types—enabling modular, extensible, and reusable workload data generation. [#149728][#149728] +- Updated the internals of `cockroach workload` so there is one primary CLI entry point for workload generation, wiring together DDL parsing, schema construction, generator factory, and output routines. [#150321][#150321] +- Updated the redaction policy for cluster settings in `debug zip` output. All "sensitive" settings are now redacted in all debug zips, whether or not redaction is explicitly requested. In redacted debug zips, both "sensitive" and "non-reportable" settings are redacted. This replaces the previous behavior, which redacted all string-type settings only in redacted debug zips. [#150364][#150364] +- Added SQL workload extraction and rewriting support to the internals of `cockroach workload`, enabling placeholder‐driven data-generation workflows from CockroachDB debug logs. [#150614][#150614] +- Update the help text for the --database and --url + CLI flags to document support for virtual cluster syntax. The --database flag + now shows examples of both simple database names and the + cluster:virtual-cluster/database format. The --url flag examples now include + the virtual cluster syntax in PostgreSQL connection URLs. [#150624][#150624] +- Updated `cockroach workload` internals to read init‑time schema and SQL artifacts and run SQL workloads with placeholder‑driven data generation. [#150836][#150836] +- Added support for simple `CHECK` constraints and bit/bytes column generators to `cockroach workload`'s workload generator. [#150926][#150926] +- Added a new file, `cluster_settings_history.txt`, to debug zips. This file contains a history of cluster setting changes based on the system event log table. The history is only available while the corresponding events remain in the table. Sensitive settings are always redacted, and non-reportable settings are redacted when the debug zip is generated with redaction enabled. [#151066][#151066] + +

DB Console changes

+ +- The lock and latch wait time components of a query's cumulative contention time are now tracked separately and surfaced as annotations in `EXPLAIN ANALYZE` output. [#113649][#113649] +- The metric that measures cumulative contention time now includes time spent waiting to acquire latches, in addition to time spent acquiring locks. This metric is displayed in both the DB Console and the `EXPLAIN ANALYZE` output. [#113649][#113649] +- The DB Console's `index.html` page now includes a `Content-Security-Policy` (CSP) HTTP header to help prevent cross-site scripting (XSS) attacks. [#142282][#142282] +- The Replica Quiescence graph on the DB Console's Replication Dashboard now displays the number of replicas quiesced with leader leases. [#143215][#143215] +- A new cluster setting, `ui.default_timezone`, has been added to replace the deprecated `ui.display_timezone`. The new setting supports all timezones and is used to render timestamps in the DB Console. Avoid using `ui.display_timezone`, as it will be removed in a future release. [#143499][#143499] +- The Explain Plans table on the **Statement Details** and **Plan Details** pages now indicate whether or not the plan was a generic query plan. [#144008][#144008] +- Schema insights that recommend replacing an index were previously a two-statement command consisting of a `CREATE INDEX` and a `DROP INDEX` statement. When these two DDL statements were run as a single batched command, it was possible for one statement to succeed and one to fail. This is because DDL statements do not have the same atomicity guarantees as other SQL statements in CockroachDB. Index-replacement insights are now a single `CREATE INDEX` statement followed by a comment with additional DDL statements to be run manually: an `ALTER INDEX ... NOT VISIBLE` statement, which makes the old index invisible to the optimizer, followed by a `DROP INDEX` statement that should only be run after making the old index invisible and verifying that workload performance is satisfactory. [#144101][#144101] +- The Hot Ranges page node filter has been moved out of the main filter container and now filters nodes on the backend to reduce load time. [#147089][#147089] +- The Insights page in the DB Console now displays SQL commenter query tags for statement executions. These tags provide application context (such as application name, user ID, or feature flags) embedded in SQL comments using the `sqlcommenter` format. This information can help correlate slow query performance with specific application states. The Query Tags column is available in the Statement Executions view's Statement Insights table, but it is hidden by default. To display it, use the Columns selector. [#147439][#147439] +- Updated the titles of the disk throughput graphs on the Metrics page Hardware dashboard to display only "Bytes/s" instead of including a specific magnitude, "MiB/s". The titles of the graphs are now “"Disk Read Bytes/s" and "Disk Write Bytes/s". [#147462][#147462] +- Retry counts for statements executing under `READ COMMITTED` isolation are now more accurate. [#147682][#147682] +- Updated the "Learn more" link on the **Hot Ranges** page to direct users to a newer, more comprehensive reference guide about hotspots. [#147927][#147927] +- Renamed the 'Hot Ranges' page in the DB Console to 'Top Ranges' to clarify that it shows the highest-ranked ranges by various metrics, not necessarily those experiencing high activity. [#149713][#149713] +- Fixed a bug where **Drop Unused Index** recommendations were not populated on the Schema Insights tab after a hard refresh of the Insights page. [#149838][#149838] +- Updated the DB Console so that the tenant dropdown now appears in insecure mode when multiple virtual clusters are available. [#150535][#150535] +- In the DB Console, the **Active Executions** table on the Statements and Transactions pages now includes a new **Isolation Level** column. The Sessions page also includes a new **Default Isolation Level** column. [#153617][#153617] +

Bug fixes

+- Fixed a bug where replication controls on indexes and partitions would not get properly updated during an index backfill to its new ID; this effectively discarded the replication controls set on the object before the backfill. [#141800][#141800] +- Fixed a bug where secondary indexes could be unusable by DML statements while a primary key swap was occurring, if the new primary key did not contain columns from the old primary key. [#141850][#141850] +- Fixed a bug when running with the `autocommit_before_ddl` session variable that could cause a runtime error when binding a previously prepared DDL statement. [#141851][#141851] +- The TTL deletion job now includes a retry mechanism that progressively reduces the batch size when encountering contention. This improves the chances of successful deletion without requiring manual adjustments to TTL knobs. Added the `jobs.row_level_ttl.num_delete_batch_retries` metric to track the number of times the TTL job had to reduce the batch size and try again. [#141953][#141953] +- Fixed a bug when running with the `autocommit_before_ddl` session setting that could cause a runtime error when binding a previously prepared DDL statement. [#141987][#141987] +- Fixed an issue where change data capture queries on tables without columns would fail with an internal error: `unable to determine result columns`. [#142068][#142068] +- Fixed a bug that would prevent `CREATE TRIGGER` and `DROP TRIGGER` statements from working if the `autocommit_before_ddl` session setting was enabled, and if the statement was either sent as a prepared statement or as part of a batch of multiple statements. [#142202][#142202] +- Previously, the `CREATE LOGICALLY REPLICATED` syntax would always create the destination table with the source table's name, instead of the user-provided name. Now, `CREATE LOGICALLY REPLICATED` will create the destination table with the user-provided name. [#142235][#142235] +- Fixed a bug where `EXPLAIN ANALYZE` output could incorrectly show `distribution: full` and not `distribution: local` in some cases when the physical plan was only running on the gateway node. The bug had been present since before v23.1, and did not apply to `EXPLAIN` statements. [#142248][#142248] +- Fixed a bug that could cause the upgrade to v25.1 to crash if a job was missing from the virtual table, for example if a malformed job had no payload info. [#142284][#142284] +- Fixed an issue where removed nodes could leave persistent entries in `crdb_internal.gossip_alerts`. [#142385][#142385] +- Fixed a bug where invalid default expressions could cause backfilling schema changes to retry forever. [#142490][#142490] +- Fixed a bug where index backfill progress before a `PAUSE`/`RESUME` would not get tracked. [#142602][#142602] +- Fixed an issue where dropping a database with triggers could fail due to an undropped backreference to a trigger function. [#142670][#142670] +- Fixed a bug in client certificate expiration metrics, `security.certificate.expiration.client` and `security.certificate.ttl.client`. [#142682][#142682] +- Fixed a bug where `CREATE SEQUENCE` could succeed during an ongoing `DROP SCHEMA` or `DROP DATABASE` operation. Now, `CREATE SEQUENCE` will retry if the parent object has a schema change in progress, preventing the creation of new objects under deleted parent objects. [#142696][#142696] +- Fixed a bug where, during validation of a table-level zone config, inherited values were incorrectly populated from the default range instead of from the parent database. [#142760][#142760] +- Fixed a bug where index backfills unnecessarily merged new data written to an index, which could lead to extra contention. [#142768][#142768] +- Physical Cluster Replication (PCR) reader catalogs could have orphaned rows in `system.namespace` after an object is renamed. [#142829][#142829] +- Fixed a bug which would send a replica outside of a tenant's known region when `SURVIVE REGION FAILURE` was set and exactly 3 regions were configured. [#142838][#142838] +- The reader virtual cluster now starts if the user begins a physical cluster replication (PCR) stream from a cursor via `ALTER VIRTUAL CLUSTER virtual_cluster START REPLICATION OF physical_cluster ON pgurl WITH READ VIRTUAL CLUSTER`. [#143072][#143072] +- Fixed a bug that caused changefeeds to fail on startup when scanning a single key. [#143102][#143102] +- MVCC garbage collection is now fully subject to IO admission control. Previously, it was possible for MVCC GC to cause store overload (such as LSM inversion) when a large amount of data would become eligible for garbage collection. Should any issues arise from subjecting MVCC GC to admission control, the `kv.mvcc_gc.queue_kv_admission_control.enabled` cluster setting can be set to `false` to restore the previous behavior. [#143122][#143122] +- Fixed a bug where CockroachDB incorrectly resolved routine overloads in some cases. Previously, it allowed creating routines with signatures differing only in type width (e.g., `f(p VARCHAR(1))` and `f(p VARCHAR(2))`), which is not permitted in PostgreSQL. This required precise type casting during invocation. Similarly, when dropping a routine, CockroachDB previously required exact types, unlike PostgreSQL, which is more lenient (e.g., `DROP FUNCTION f(VARCHAR)` would fail in the preceding example). This bug had existed since v23.1. [#143159][#143159] +- Fixed a bug that could cause a nil-pointer error when a column's default expression contained a volatile expression (like `nextval`) as a UDF argument. The bug was in v24.1.14, v24.3.7, v24.3.8, and v25.1. [#143170][#143170] +- Fixed a bug where calling a stored procedure could drop the procedure if it had `OUT` parameters that were not used by the calling routine. This bug had existed since PL/pgSQL `CALL` statements were introduced in v24.1. [#143173][#143173] +- Fixed a bug where CockroachDB would encounter an internal error when decoding the gists of plans with `CALL` statements. The bug had been present since v23.2. [#143252][#143252] +- Fixed a bug that could leave behind a dangling reference to a dropped role if that role had default privileges granted to itself. The bug was caused by defining privileges such as: `ALTER DEFAULT PRIVILEGES FOR ROLE self_referencing_role GRANT INSERT ON TABLES TO self_referencing_role`. [#143287][#143287] +- Fixed a crash due to `use of enum metadata before hydration` when using logical data replication (LDR) with user-defined types. [#143311][#143311] +- Previously, statement bundle collection could encounter `not enough privileges` errors when retrieving necessary information (e.g., cluster settings, table statistics, etc.) when the user that requested the bundle was different from the user that actually ran the query. This is now fixed. The bug was present since v20.2 and would result in partially incomplete bundles. [#143400][#143400] +- Fixed an issue where databases, tables, and indexes were not appearing on the Hot Ranges page for application virtual clusters. [#143441][#143441] +- Fixed a bug where a GC threshold error (which appears as "batch timestamp must be after replica GC threshold ...") could cause a schema change that backfills data to fail. Now, the error will cause the backfill to be retried at a higher timestamp to avoid the error. [#143451][#143451] +- Fixed a bug that could cause a function reference to be left behind if a procedure referred to another procedure that depended on a a table, and that table was dropped with `CASCADE`. [#143538][#143538] +- Fixed a potential deadlock that could occur during client certificate updates while metrics were being collected. This issue affected the reliability of certificate expiration reporting. [#143663][#143663] +- The `ALTER VIRTUAL CLUSTER SET REPLICATION READ VIRTUAL CLUSTER` syntax is now supported for adding a reader virtual cluster for an existing physical cluster replication (PCR) standby cluster. [#143752][#143752] +- validate column ids when starting an immediate + mode logical replication stream. [#143773][#143773] +- Fixed an issue where hot range logging for virtual clusters omitted some hot ranges. [#143775][#143775] +- Previously, the fields `maximum memory usage` and `max sql temp disk usage` in the `EXPLAIN ANALYZE` output could be under-reported for distributed plans when memory-intensive operations were fully performed on the remote nodes. This is now fixed. The bug existed in v22.1 and later. [#143777][#143777] +- Fixed a bug that could potentially cause a changefeed to complete erroneously when one of its watched tables encounters a schema change. [#144004][#144004] +- Fixed a bug that could cause a stack overflow during execution of a prepared statement that invoked a PL/pgSQL routine with a loop. The bug existed in versions v23.2.22, v24.1.15, v24.3.9, v25.1.2, v25.1.3, and pre-release versions of v25.2 prior to v25.2.0-alpha.3. [#144027][#144027] +- Fixed a bug where using + values changefeed.aggregator.flush_jitter, + min_checkpoint_frequency such that + changefeed.aggregator.flush_jitter * + min_checkpoint_frequency < 1 would cause a panic. + Jitter will now be disabled in this case. + + Fixes: #143436 [#144304][#144304] +- Fixed a bug that could cause PL/pgSQL `FOR` loops to terminate early or show incorrect values for the counter variable. The bug had existed since v24.3, and occurred when two or more `FOR` loops were nested within one another. [#144347][#144347] +- Fixed a bug that prevented variable references using ordinal syntax (like `$1`) from reflecting updates to the variable. Referencing variables declared in PL/pgSQL blocks (instead of parameters) via ordinal syntax is now disallowed. The bug had existed since v24.1. [#144347][#144347] +- Fixed a bug that could cause queries that perform work in parallel to ignore the requested quality-of-service level. Affected operations include lookup joins, DistSQL execution, and foreign-key checks. [#144427][#144427] +- Fixed a bug in the **SQL Activity Statements** page where filtering by **Statement Type** returned no results. The filter now works as expected. [#144517][#144517] +- Fixed a bug in the DB Console where tables with page size dropdowns failed to update when a new page size option was selected. Tables now update correctly. [#144556][#144556] +- Fixed a bug in the DB Console where the **Drop unused index** tag appeared multiple times for an index on the **Indexes** tab of the table details page. [#144558][#144558] +- Fixed the following bugs in the **Schedules** page of the DB Console: +- Fixed a bug where the **Schedules** page displayed only a subset of a cluster's schedules. The **Schedules** page now correctly displays all schedules. +- Fixed a bug where manually updating the `show` or `status` parameters in the URL (e.g., `http://127.0.0.1:8080/#/schedules?status=ACTIVE&show=50`) caused the **Schedules** page to fail to load. [#144638][#144638] +- Fixed a bug in the DB Console where the **Drop unused index** tag appeared multiple times for an index on the **Indexes** tab of the table details page. [#144652][#144652] +- Fixed a bug that caused vector indexes to return incorrect or no results from a standby reader in a physical cluster replication (PCR) setup. This bug existed in alpha versions of v25.2 and in v25.2.0-beta.1. [#144681][#144681] +- `NULL` vectors can now be inserted into tables with vector indexes. [#144712][#144712] +- Fixed a bug that caused index expression elements of primary keys to be shown incorrectly in the output of `SHOW CREATE TABLE`. [#144716][#144716] +- Improve the performance of `SHOW CREATE TABLE` on multi-region databases with large numbers of objects. [#144900][#144900] +- A bug where a NULL value could cause a + parquet export to fail has been fixed. [#145002][#145002] +- Fixed a bug where running `DROP INDEX` on a hash-sharded index did not properly detect dependencies from functions and procedures on the shard column. This caused the `DROP INDEX` statement to fail with an internal validation error. Now the statement returns a correct error message, and using `DROP INDEX ... CASCADE` works as expected by dropping the dependent functions and procedures. [#145107][#145107] +- Fixed an issue where using inline log configuration could cause internal errors on the DB Console's Logs page for a node at `#/node/{nodeID}/logs`. [#145329][#145329] +- Row-level security (RLS) `SELECT` policies during `UPDATE` operations are now only applied when referenced columns appear in the `SET` or `WHERE` clauses, matching the behavior of PostgreSQL. This improves compatibility. [#145344][#145344] +- Fixed a bug that could cause a row-level TTL job to fail with the error "comparison of two different versions of enum" if an `ENUM` type referenced by the table experienced a schema change. [#145374][#145374] +- Fixed a bug where CockroachDB could encounter an internal error when fetching from the `WITH HOLD` cursor with `FETCH FIRST` and `FETCH ABSOLUTE`. The bug was only present in v25.2 alpha and beta releases. [#145391][#145391] +- Fixed a bug that could lead to schema changes hanging after a cluster recovered from availability issues. [#145462][#145462] +- Previously, on a table with multiple column families, CockroachDB could encounter a `Non-nullable column "‹×›:‹×›" with no value` error in rare cases during table statistics collection. The bug was present since v19.2 and is now fixed. [#145481][#145481] +- Specifying types for a subset of columns in a generator function's column definition list now results in a syntax error instead of an internal error. [#145492][#145492] +- Fixed an internal assertion failure that could occur during operations like `ALTER TYPE` or `ALTER DATABASE ... ADD REGION` when temporary tables were present. [#145551][#145551] +- Errors triggered by DB Console activity no longer cause the node to crash. [#145563][#145563] +- Fixed incorrect application of row-level security (RLS) `SELECT` policies to `RETURNING` clauses in `INSERT` and `UPDATE` when no table columns were referenced. [#145890][#145890] +- Fixed a bug where the physical cluster replication (PCR) reader catalog job could hit validation errors when schema objects had dependencies between them (for example, when a sequence's default expression was being removed). [#145972][#145972] +- Creating a vector index on a table that contains a `NULL` vector value will no longer cause an internal error. [#145983][#145983] +- Fixed a bug where an invalid comment in the `system.comment` table for a schema object could make it inacessible. [#146213][#146213] +- Fixed a bug that allowed a column to be dropped from a table even if it was referenced in the `RETURNING` clause of an `UPDATE` or `DELETE` statement in a routine. In releases prior to v25.3, the fix must be enabled by setting the session variable `use_improved_routine_dependency_tracking` to `on`. [#146250][#146250] +- Fixed a bug in v25.2.0 where a vector search operator could drop user-supplied filters if the same vector column was indexed twice and a vector index with no prefix columns was defined after a vector index with prefix columns. [#146259][#146259] +- Fixed a bug that could lead to a node stall. [#146270][#146270] +- Fixed an integer overflow in the `split_part` function when using extremely negative field positions like Go's `math.MinInt64`. [#146271][#146271] +- Fixed a bug that prevented `TRUNCATE` from succeeding if any indexes on the table had back-reference dependencies, such as from a view or function referencing the index. [#146287][#146287] +- Fixed incorrect application of row-level security (RLS) `SELECT` policies to `RETURNING` clauses in `INSERT` and `UPDATE` when no table columns were referenced. [#146292][#146292] +- Fixed a data race in the `cloudstorage` sink. [#146297][#146297] +- Fixed a bug where `ALTER TABLE` operations with multiple commands could generate invalid zone configurations. [#146369][#146369] +- Fixed a bug where a CockroachDB node could crash when executing `DO` statements that contain currently unsupported DDL statements like `CREATE TYPE` in a non-default configuration (additional logging needed to be enabled, e.g., via the `sql.log.all_statements.enabled` cluster setting). This bug was introduced in v25.1. [#146406][#146406] +- Prevent use of future timestamps when using `AS OF SYSTEM TIME` with `CREATE TABLE ... AS` and materialized views. Previously, such timestamps could cause errors, delays, or hangs. [#146446][#146446] +- Remove unncessary Kafka topic creation that would + could cause changefeed start up to fail when using + changefeed.new_kafka_sink_enabled=false. + + Fixes: #128973 + Epic: CRDB-41784 [#146476][#146476] +- Fixed an internal error that could be hit when `ADD COLUMN UNIQUE` and `ALTER PRIMARY KEY` were executed within the same transaction. [#146567][#146567] +- Fixed a bug that prevented temporary views and sequences from being created if the `pg_temp` schema was explicitly specified in the qualified name of the object being created. [#146586][#146586] +- Prevent dropping columns or indexes that are still referenced by triggers. Previously, these operations could succeed silently, potentially breaking trigger functionality. [#146683][#146683] +- Fixed a bug where CockroachDB would not use the vectorized fast path for `COPY` when it was supported. The bug was only present in previous v25.2 releases. [#146696][#146696] +- Fixed an issue where malformed or hanging HTTP connections could block server shutdown. [#146744][#146744] +- The MVCC timestamp is now emitted correctly when the `mvcc_timestamp` is used with CDC queries. [#146836][#146836] +- Fixed a bug where searching a vector with a query vector that doesn't match the dimensions of the vector column in the table would cause a node to crash. [#146848][#146848] +- Fixed a bug that could cause the `cockroach` process to `segfault` when collecting runtime execution traces (typically collected via the **Advanced Debug** page in the Console). [#146883][#146883] +- Fixed a bug that could cause an `AFTER` trigger to fail with `client already committed or rolled back the transaction` if the query also contained foreign-key cascades. The bug had existed since `AFTER` triggers were introduced in v24.3. [#146890][#146890] +- Fixed a bug where the `kv.rangefeed.closed_timestamp.slow_ranges` would not be incremented when a rangefeed closed timestamp was slower than the target threshold. [#146949][#146949] +- Fixed an issue where self-referencing triggers did not have their dependencies properly recorded, which could lead to broken dependencies. [#147018][#147018] +- Fixed a bug that caused the SQL Activity > Statement Fingerprint page to fail to load details for statements run with application names containing a `#` character. [#147021][#147021] +- Fixed a bug that could cause stable expressions to be folded in cached query plans. The bug could cause stable expressions like `current_setting` to return the wrong result if used in a prepared statement. The bug was introduced in v23.2.22, v24.1.14, v24.3.9, v25.1.2, and the v25.2 alpha. [#147187][#147187] +- Fixed a bug where using column families on tables with vector indexes would cause the index to fail to return results. [#147307][#147307] +- Fixed a security issue where optimizer predicate reordering could leak information about hidden rows protected by row-level security (RLS) policies. [#147348][#147348] +- Fixed a bug where the `rolbypassrls` column in `pg_roles` and `pg_authid` tables always returned false, even for roles with the `BYPASSRLS` option. [#147357][#147357] +- Previously, CockroachDB could incorrectly evaluate the `to_regclass`, `to_regnamespace`, `to_regproc`, `to_regprocedure`, `to_regrole`, and `to_regtype` built-in functions when the query using them was evaluated in a distributed fashion. The bug was introduced with these built-in functions in v23.1 and is now fixed. [#147362][#147362] +- Fixed a bug that caused the optimizer to ignore index hints when optimizing some forms of prepared statements. This could result in one of two unexpected behaviors: a query errors with the message `index cannot be used for this query` when the index can actually be used; or a query uses an index that does not adhere to the hint. The hints relevant to this bug are regular index hints, e.g., `SELECT * FROM tab@index`, `FORCE_INVERTED_INDEX`, and `FORCE_ZIGZAG`. [#147368][#147368] +- Fixed a bug where the `pg_catalog.pg_policy` table could contain duplicate OID values when multiple tables had policies with the same policy ID. All rows in `pg_policy` now have unique OIDs as required. [#147373][#147373] +- Fixed a bug on the SQL Activity Statements and Transactions pages where the time picker failed to support sub-hour time ranges when the `sql.stats.aggregation.interval` was set to a value under 1 hour. Previously, selecting a short time window (e.g., 10 minutes) would query for a full hour of data. The fix ensures that the selected time range is respected, enabling more precise analysis of recent activity. [#147447][#147447] +- Fixed an issue where updating child metrics and reinitializing metrics at the same time could cause scrape errors. [#147486][#147486] +- Fixed a memory leak in index backfill jobs where completed spans were duplicated in memory on each progress update after resuming from a checkpoint. This could cause out-of-memory (OOM) errors when backfilling indexes on large tables with many ranges. This bug affected release version v25.2.0 and pre-release versions v25.2.0-alpha.3 through v25.2.0-rc.1. [#147511][#147511] +- Fixed a runtime panic in the `substring_index` function that occurred when the count argument was the minimum 64-bit integer value. [#147546][#147546] +- Fixed a bug where prepared statements on schema changes could fail with runtime errors. [#147658][#147658] +- `FUNCTION` and `PROCEDURE` are now shown via `\h show create` in the CLI doc. [#147666][#147666] +- Fixed a bug where functions lost their row-level security (RLS) policy backreferences, leading to schema change failures. [#147696][#147696] +- Fixed a bug where `ALTER TABLE` was modifying identity attributes on columns not backed by a sequence. [#147698][#147698] +- Fixed an error in `crdb_internal.table_spans` that could occur when a table's schema had been dropped. [#147766][#147766] +- Fixed a bug where introspection queries (such as a against the `crdb_internal` system catalog) could fail if a dropped constraint referenced a column that was also being dropped. [#147773][#147773] +- Fixed a bug that would cause a `CALL` statement executed via a portal in the extended wire protocol to result in an error like `unknown portal ""` if the stored procedure contained `COMMIT` or `ROLLBACK` statements. The bug had existed since PL/pgSQL transaction control statements were introduced in v24.1. The fix is off by default in versions prior to v25.3. [#147923][#147923] +- Fixed a bug where adding multiple columns in a single statement with `AddGeometryColumn` would cause runtime errors. [#147998][#147998] +- Fixed a bug where `libpq` clients using the async API could hang with large result sets (Python: psycopg; Ruby: ActiveRecord, ruby-pg). [#148222][#148222] +- Fixed a bug present since v24.1 where the allocator + could make rebalancing decisions based on stale data, failing to account for + recent local lease transfers not yet reflected in store capacity or gossip. [#148476][#148476] +- Large mutation statements (`INSERT`, `UPDATE`, `DELETE`, `UPSERT`) are now less likely to encounter contention with automatic table statistics collection in some cases. The bug was present since v19.1. [#148488][#148488] +- A bug where a changefeed that was created before + v25.2 could fail after upgrading to v25.2 with the error message + `both legacy and current checkpoint set on change aggregator spec` + has now been fixed. [#148617][#148617] +- CockroachDB now supports decoding `VECTOR` and `BOX2D` types from the binary format of the PostgreSQL extended protocol (pgwire). [#148719][#148719] +- The `RESET ALL` statement no longer affects the following session variables: + - `is_superuser` + - `role` + - `session_authorization` + - `transaction_isolation` + - `transaction_priority` + - `transaction_status` + - `transaction_read_only` + + This better matches PostgreSQL behavior for `RESET ALL`. In addition, the `DISCARD ALL` statement no longer errors when `default_transaction_use_follower_reads` is enabled. [#148770][#148770] +- CockroachDB now prohibits `ORDER BY` and join equality operations on `REFCURSOR` types, matching PostgreSQL behavior. [#148863][#148863] +- Previously, CockroachDB could hit an internal error when performing a `DELETE`, `UPDATE`, or `UPSERT` where the initial scan of the mutation is locking and is on a table different from the one being mutated. A possible workaround was `SET enable_implicit_select_for_update = false`, but this could increase contention. The bug was introduced in v25.2 and is now fixed. [#149093][#149093] +- Fixes a race condition when advancing a + changefeed aggregator's frontier. When hit, the race condition could + result in an internal error that would shut down the kvfeed and cause + the changefeed to retry. [#149119][#149119] +- CockroachDB now supports case-insensitive matching for keyword identifiers in JSONPath queries. Note that the special identifiers `TRUE`, `FALSE`, and `NULL` are parsed case-insensitively in CockroachDB, but are case-sensitive in PostgreSQL. For example, `SELECT '$.active == TrUe'::jsonpath;` succeeds in CockroachDB, but fails in PostgreSQL. [#149251][#149251] +- In v25.1, automatic partial statistics collection was enabled by default (by setting the `sql.stats.automatic_partial_collection.enabled` cluster setting to `true`). Partial statistics collection may encounter certain expected scenarios that were previously reported as failed stats jobs with PostgreSQL error code `55000`. These errors are benign and are no longer reported. Instead, the stats job will be marked as "succeeded," though no new statistics will be created. [#149279][#149279] +- Fixed a minor bug that caused inconsistent behavior with the very rarely used `"char"` type (distinct from `CHAR`). [#149433][#149433] +- CockroachDB now allows `EXPLAIN` of mutation statements in read-only transaction mode, matching PostgreSQL behavior. Note that `EXPLAIN ANALYZE` of mutations is still disallowed, since this variant actually executes the statement. [#149449][#149449] +- Fixed an issue where some SQL metrics were not reported when `server.child_metrics.enabled` was enabled, `server.child_metrics.include_aggregate.enabled` was disabled, and `sql.metrics.application_name.enabled` and `sql.metrics.database_name.enabled` were also disabled. Specifically, metrics with no children now report their aggregate metrics regardless of the `server.child_metrics.include_aggregate.enabled` cluster setting. [#149540][#149540] +- Fixed a bug where database login could fail + during LDAP, JWT, or OIDC authentication if the user's external group + memberships did not correspond to any existing roles in the + database. The login will now succeed, and no roles will be granted or + revoked in this scenario. [#149638][#149638] +- Fixed a slow memory leak that was introduced in v25.1.8, v25.2.1, v25.2.2, and v25.3 betas. The leak would accumulate whenever a node executed a part of the distributed plan (the gateway node of the plan was not affected), and could only be mitigated by restarting the node. [#149800][#149800] +- Attempting to create a vector index with the legacy schema changer will now fail gracefully instead of crashing the node. [#149812][#149812] +- Improved split and scatter behavior for `CREATE INDEX` when statistics are available for key columns. [#150238][#150238] +- Fixed a bug that was preventing the row-level TTL table storage parameters (e.g., `ttl_select_batch_size`, `ttl_delete_batch_size`, `ttl_delete_rate_limit`, `ttl_select_rate_limit`) from being set to `0`, which is their default value. [#150253][#150253] +- Fixed an issue where discarding zone configs on sequences did not actually remove the configuration. [#150255][#150255] +- A bug where modifying a changefeed with ALTER CHANGEFEED + that either unset or left the `gc_protect_expires_after` option unset would + cause the changefeed's max PTS age to become unbounded instead of being set to + the default value configured by the `changefeed.protect_timestamp.max_age` + cluster setting. [#150283][#150283] +- Fixed a bug that would allow a race condition in foreign key cascades under `READ COMMITTED` and `REPEATABLE READ` isolation levels. [#150291][#150291] +- Fixed a bug where the entire schema would become inaccessible if a table was referenced as an implicit record type by a user-defined function (UDF) while the table was undergoing an `IMPORT`. [#150350][#150350] +- Fixed invalid zone configurations that were generated when adding a super region to a 3-region database with a secondary region and region survivability. Previously, this could result in assigning more than the allowed number of replicas. [#150413][#150413] +- Addressed a bug on `schema_locked` tables when a column is dropped, and `schema_locked` is toggled for the user. [#150435][#150435] +- Fixed the `pg_catalog.pg_type` enties for the "any" and "trigger" pseudotypes. [#150777][#150777] +- Fixed an issue where Row Level Security (RLS) policies with missing dependencies during table-level restores could cause inconsistent state or restore failures. [#151045][#151045] +- Fixed a bug that could cause some errors returned by attempts to upload backup data to external storage providers to go undetected, potentially causing incomplete backups. [#151058][#151058] +- Previously, CockroachDB could encounter an internal error `trying to add a column of UNKNOWN type at ...` in rare cases when handling `CASE` or `OR` operations. This bug was present since v20.2 and is now fixed. [#151093][#151093] +- Fixed a bug where `debug.zip` files collected from clusters with `disallow_full_table_scans` enabled were missing system table data. [#151185][#151185] +- Fix handling of empty arrays in JSONPath lax mode + comparisons. Empty arrays now return false for comparisons in lax mode and + null in strict mode, matching PostgreSQL behavior. [#151226][#151226] +- Fixed a bug where `DROP USER` succeeded even though a role owned default privileges, which could leave invalid privilege entries in the system. [#151472][#151472] +- Fixed a bug where sequences could lose references to triggers, allowing them to be dropped incorrectly. [#151546][#151546] +- Previously, CockroachDB could incorrectly elevate the number of rows deleted on tables with multiple column families. The bug was present v19.2 and is now fixed. Note that the data was deleted correctly, but the "rows affected" number was wrong. [#151563][#151563] +- Fixed a bug that allowed replacement indexes, created during an `ALTER PRIMARY KEY` operation, to be accessed with index hints before they were in a ready state. This could lead to runtime errors. [#151691][#151691] +- Added an automatic repair for dangling or invalid entries in the `system.comments` table. [#151737][#151737] +- Previously, CockroachDB could hit an error `ERROR: span with results after resume span...` when evaluating some queries with `ORDER BY ... DESC` in an edge case. This bug was present since v22.1 and is now fixed. [#151774][#151774] +- Fixed a bug introduced in v25.1 where CockroachDB nodes could crash when executing `DO` statements that referenced (possibly nonexistent) user-defined types in non-default configurations. The crash only occurred if additional logging was enabled (for example, with the `sql.log.all_statements.enabled` cluster setting). [#151849][#151849] +- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. [#151947][#151947] +- Fixed a bug where executing certain statements with `BETWEEN SYMMETRIC` expressions could panic if used with values of different types, such as `... b'bytes' BETWEEN SYMMETRIC 'a' AND 'c'`. [#151951][#151951] +- Fixed a bug where `SHOW TABLES` would show inaccurate row counts if the most recent statistics collection was partial. [#152033][#152033] +- Fixed a bug that prevented `RESTORE` from working if there were computed columns or `ON UPDATE` expressions that referenced user-defined functions (UDFs). This bug was introduced in v25.3.0. [#152193][#152193] +- Fixed a bug that allowed foreign-key violations to result from some combinations of concurrent `READ COMMITTED` and `SERIALIZABLE` transactions. If both `SERIALIZABLE` and weaker-isolation transactions will concurrently modify rows involved in foreign-key relationships, the `SERIALIZABLE` transactions must have the following session variables set in order to prevent any possible foreign-key violations: + - `SET enable_implicit_fk_locking_for_serializable = on;` + - `SET enable_shared_locking_for_serializable = on;` + - `SET enable_durable_locking_for_serializable = on;` [#152245][#152245] +- Added the `use_soft_limit_for_distribute_scan` session variable (default: `false`), which controls whether CockroachDB uses the soft row count estimate when deciding whether an execution plan should be distributed. In v25.1, the physical planning heuristics were changed such that large constrained table scans, estimated to scan at least 10,000 rows (controlled via `distribute_scan_row_count_threshold`), would force plan distribution when `distsql=auto`. However, if the scan had a "soft limit" CockroachDB would still use the full estimate (for example, `10,000` in `estimated row count: 100–10,000`), sometimes unnecessarily distributing queries and increasing latency. The `use_soft_limit_for_distribute_scan` session variable addresses this by allowing the planner to use the soft limit when deciding whether a scan is "large". [#152300][#152300] +- `pg_class.pg_depend` now contains entries with `deptype='i'` (internal) for identity columns that own sequences. These previously had `deptype='a'` (auto). [#152309][#152309] +- Fixed a bug that caused an error when dropping a column and a `UNIQUE WITHOUT INDEX` constraint that referenced it in the same transaction. [#152447][#152447] +- Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions. [#152670][#152670] +- Fixed `IMPORT` progress reporting to show the correct row counts when concurrent job state changes occur. [#152745][#152745] +- Fixed a bug where an `INSERT` statement could fail with a type checking error while adding a `BIT(n)` column. [#152910][#152910] +- Fixed a bug where the `schema_locked` storage parameter was not being enforced on the `TRUNCATE` command, which could cause changefeed jobs to fail. [#152932][#152932] +- Fixed an issue where certain vector index operations could throw an out-of-bounds access exception. [#153054][#153054] +- Fixed a bug introduced in v21.2 where `IMPORT` operations with multiple CSV files could incorrectly reset the bulk summary after processing the first file, causing the actual progress to be overwritten with a `nil` value. [#153111][#153111] +- Fixed a bug introduced in v25.1.0 that would + cause a node panic if a `SIGINT` signal was sent during the execution of + a `CHECK EXTERNAL CONNECTION` command. [#153380][#153380] +- Fixed a bug where index creation could fail due to validation errors if the schema change was retried or paused/resumed during the backfill. [#153583][#153583] +- Fixed a deadlock in `DROP COLUMN CASCADE` operations when dropping columns referenced by `STORED` computed columns. [#153683][#153683] +- Fixed a bug where `ALTER POLICY` was incorrectly dropping dependency tracking for functions, sequences, or types in policy expressions. [#153787][#153787] +- Fixed a bug where we would not show the pgwire `RowDescription` for `EXECUTE` statements that were themselves prepared using the pgwire `Parse` command. [#153905][#153905] +- Fixed a runtime error that could be hit if a new secondary index had a name collision with a primary index. [#153986][#153986] +- Vector index backfill jobs now correctly report progress in the `SHOW JOBS` output. [#154261][#154261] +- 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. [#154289][#154289] +- **Idle latency** on the **Transaction Details** page in the DB Console is now reported more accurately. Previously, transactions that used prepared statements (e.g., with placeholders) overcounted idle time, while those that included observer statements (common in the SQL CLI) undercounted it. [#154385][#154385] +- Fixed a bug where `RESTORE` of a database with a `SECONDARY REGION` did not apply the lease preferences for that region. [#154659][#154659] +- Fixed a bug where a changefeed could perform + many unnecessary job progress saves during an initial scan. [#154709][#154709] +- Fixed a bug where a changefeed targeting only a subset + of a table's column families could become stuck. [#154915][#154915] - 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. [#154970][#154970] +- 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. [#155077][#155077] +- Disable a feature + (kv.lock_table.unreplicated_lock_reliability.split.enabled) that could + lead to a node crash. [#155366][#155366] +- 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. [#155415][#155415] +- Corrected a potential deadlock during vector index creation. [#155508][#155508] +- Added proper dependency handling when adding a constraint with `NOT VALID` that references a user-defined function (UDF). [#155528][#155528] - 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. [#155633][#155633] - 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. [#155927][#155927] - Fixed a bug where the job responsible for compacting stats for the SQL activity state could enter an unschedulable state. Fixes: #155165 [#155963][#155963] @@ -40,34 +767,578 @@ Release Date: December 2, 2025

Performance improvements

+- Queries that use `SHOW TABLES` without using the `estimated_row_count` column no longer need to look up the table statistics. [#59838][#59838] +- Fixed a bug that caused the optimizer to over-estimate the cost of inverted index scans in some cases. Now, plans with inverted index scans should be selected in more cases where they are optimal. [#120079][#120079] +- Index backfills and row-level TTL deletions that encounter transaction contention will now be retried with smaller batch sizes more quickly, which reduces the latency of these jobs under high contention workloads. [#142702][#142702] +- `SHOW TABLES` is now faster, especially in cases where there are many tables, both live and previously dropped. [#143446][#143446] +- Schema changes that require data to be backfilled no longer hold a protected timestamp for the entire duration of the backfill, which means there is less overhead caused by MVCC garbage collection after the backfill completes. [#143451][#143451] +- Prepared statements are now more efficiently cached. [#144021][#144021] +- Prepared statements are now more efficiently cached. [#144021][#144021] +- Triggers now perform the descriptor lookup for `TG_TABLE_SCHEMA` against a cache. This can significantly reduce trigger planning latency in multi-region databases. [#144217][#144217] +- Some internal queries executed by the jobs system are now less likely to perform full table scans of the `system.jobs` table, making them more efficient. This change can be reverted by disabling the `jobs.avoid_full_scans_in_find_running_jobs.enabled` cluster setting. [#144309][#144309] +- The vector search optimizer rule now supports additional projections beyond the distance column, including the implicit projections added for virtual columns. [#144536][#144536] +- TTL jobs now respond to cluster topology changes by restarting and rebalancing across available nodes. [#145214][#145214] +- Some queries with filters of the form `x IS NOT DISTINCT FROM y` now have more optimal query plans. [#146494][#146494] +- The optimizer will no longer apply a fast-path to deletes cascading to `REGIONAL BY ROW` tables. This prevents the cascading delete from accessing more regions than necessary. [#148105][#148105] +- Mutation statements (`UPDATE` and `DELETE`) that perform lookup joins into multi-region tables (perhaps as part of a `CASCADE`) are now more likely to parallelize the lookups across ranges, improving their performance. [#148186][#148186] +- `LIKE` filter expressions of the form `x LIKE '%'` are now normalized to `TRUE` if `x` is non-`NULL` within a `SELECT` expression. [#148763][#148763] +- Filters of the form `x LIKE '%'` are now normalized to `x IS NOT NULL`, enabling performance improvements on both nullable and non-nullable columns. Previously, such filters were normalized directly to `TRUE`, which only applied to non-`NULL` columns. [#149614][#149614] +- Multi-table changefeeds will protect + each lagging user table from garbage collection with its own record. + This will improve performance of multi-table changefeeds including + upcoming db-level changefeeds by allowing more garbage collection. [#149616][#149616] +- Updated the storage engine to reduce write amplification by storing Raft log values in separate blob files. This reduces write bandwidth, especially on stores with many replicas. This in turn can increase throughput and reduce latency. This behavior is active as long as the `storage.value_separation.enabled` cluster setting is enabled. [#149712][#149712] +- Improved the efficiency and throughput of catch-up scans used by Change Data Capture (CDC) and Physical Cluster Replication (PCR) in cases where substantial catch-up work is required. [#150738][#150738] +- Certain types of simple queries on tables with row-level security enabled are now more efficiently executed. [#151337][#151337] +- `LTREE` is now index-accelerated with the `<@` operator. [#152353][#152353] +- `LTREE` is now index-accelerated with the `@>` operator. [#152353][#152353] +- Lookup joins can now be used on tables with virtual columns even if the type of the search argument is not identical to the column type referenced in the virtual column. [#152399][#152399] +- Changefeeds will now + periodically persist their entire span frontiers so that + fewer duplicates will need to be emitted during restarts. + The default persistence interval is 30s, but this can be + configured with the `changefeed.progress.frontier_persistence.interval` + cluster setting. [#153491][#153491] +- The cost of generic query plans is now calculated based on worst-case selectivities for placeholder equalities (e.g., `x = $1`). This reduces the chance of suboptimal generic query plans being chosen when `plan_cache_mode=auto`. [#154899][#154899] - The optimizer 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`. [#155460][#155460] +

Build changes

+ +- Enable the use of profile-guided optimization in the `cockroach` binary. [#142697][#142697] +- Upgrade to Go 1.24.5 [#150870][#150870] +- Revert Go version back to 1.23.7. + Epic: none [#152023][#152023] +

Miscellaneous

+- `pg_column_size()` is now regarded as Stable, matching PostgreSQL. As a result, it will no longer be allowed in computed column expressions or partial index predicate expressions. [#141193][#141193] +- When configuring the `sql.ttl.default_delete_rate_limit` cluster setting, a notice is displayed informing the user that the TTL rate limit is per leaseholder per table with a link to the docs. [#142061][#142061] +- Improve S3 credential caching for STS credentials [#142434][#142434] +- Updated CockroachDB builds to use Go 1.23.7. [#142698][#142698] +- This patch adds the new `experimental copy` option to `RESTORE`, which runs online `RESTORE`, but waits to publish the tables until all data is downloaded. [#143674][#143674] +- Backup compactions are not supported on and are blocked + for backups that are not scheduled, use revision history, have an + execution locality, set a custom incremental location, or include a + backup of a tenant. [#143854][#143854] +- Fix rare corruption bug that impacts import and + materialized views. [#144646][#144646] +- SQL queries run on the source cluster by logical data replication (LDR) and physical cluster replication (PCR) will account to internal metrics like `sql.statements.active.internal` instead of the metrics like `sql.statements.active` that are used to monitor application workload. [#145088][#145088] +- Vector indexes created in beta releases have an encoding issue + that may result in failed inserts. These indexes should be dropped and + re-created before being used with later releases. [#145158][#145158] +- Vector indexes created in beta releases have an encoding issue + that may result in failed inserts. These indexes should be dropped and + re-created before being used with later releases. [#145405][#145405] +- The `replicas.cpunanospersecond` metric was added. Notably, when child labels are enabled, it exposes evaluation-related Replica CPU usage by tenant. [#146526][#146526] +- fixes an issue with LDR where the presence of a unique + index may cause spurious DLQ entries if the unique index has a smaller + index id than the primary key index. [#147117][#147117] +- Restore no longer gets stuck in the reverting state after failed cleanup of dropped temporary system tables. [#148098][#148098] +- CockroachDB now raises an error when encountering improper + inline SSL credentials instead of panicking. [#148242][#148242] +- Restore will now re-attempt `AdminSplit` KV requests + instead of immediately failing and pausing the job. [#148484][#148484] +- To improve changefeed performance, the session variable `create_table_with_schema_locked` is enabled by default. This means all new tables are created with the `schema_locked` storage parameter. This setting must be explicitly unset for explicit transactions or for schema changes that do not support automatic disabling (e.g., `ALTER TABLE ... SET LOCALITY`). [#148576][#148576] +- Download phase of fast restore now will retry downloads + before giving up. [#148821][#148821] +- Fixed a memory accounting issue in the client certificate cache that caused multiple allocations to be reported for the same certificate. The cache now accurately tracks memory usage and includes a safeguard to prevent it from negatively affecting SQL operations. [#151041][#151041] +- None [#151110][#151110] +- Fixes a rare bug in restore where an object storage on + restore start could cause restore to report success without creating the + restored tables or databases. [#151148][#151148] +- You can now output transaction traces to the logs in Jaeger-compatible JSON format. This is controlled by the `sql.trace.txn.jaeger_json_output.enabled` cluster setting, which is disabled by default. When enabled, traces triggered by probabilistic sampling or statement latency thresholds will be formatted for easier ingestion by tools that support the Jaeger tracing format. [#151414][#151414] +- You can now exclude internal transactions from probabilistic transaction tracing and latency-based logging by setting the `sql.trace.txn.include_internal.enabled` cluster setting to false. This setting is enabled by default to preserve the current behavior, but disabling it is recommended when debugging customer workloads to reduce noise in trace output. [#151433][#151433] +- Tunes S3 client retry behavior to be more reliable in the + presence of correlated errors. [#151817][#151817] +- Upgrade to Go 1.23.12 [#152207][#152207] +- Increase the default number of times CRDB will retry + failures on Azure. + Epic: CRDB-53946 [#152746][#152746] +- CockroachDB now prevents negative values from appearing in network and disk counters collected from the operating system. These values could previously drop below zero due to hardware changes. Affected counters now reset their baseline values automatically. [#153048][#153048] +- Fixed a bug where the presence of duplicate temporary tables in a backup would cause the restore to fail with an error containing the text `restoring table desc and namespace entries: table already exists`. [#153724][#153724] - LDR no longer requires the database name to be specified in the external connection URI when setting up a bidirectional stream. [#155737][#155737] - Span config reconciliation jobs no longer fail on the destination after failover from a PCR stream of a system virtual cluster. [#156812][#156812] -[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 +[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 +[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 +[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 +[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 +[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 +[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 +[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 +[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 +[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 +[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 +[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 +[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 +[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 +[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 +[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 +[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 +[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 +[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 +[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 +[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 +[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 +[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 +[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 +[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 +[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 +[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 +[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 +[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 +[#144536]: https://github.com/cockroachdb/cockroach/pull/144536 +[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 +[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 +[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 +[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 +[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 +[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 +[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 +[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 +[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 +[#153724]: https://github.com/cockroachdb/cockroach/pull/153724 +[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 +[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 [#155927]: https://github.com/cockroachdb/cockroach/pull/155927 +[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 +[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 +[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 +[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 +[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 +[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 +[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 +[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 +[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 +[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 +[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 +[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 +[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 +[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 +[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 +[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 +[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 +[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 +[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 +[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 +[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 +[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 +[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 +[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 +[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 +[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 +[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 +[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 +[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 +[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 +[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 +[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 +[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 +[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 +[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 +[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 +[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 +[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 +[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 +[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 +[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 +[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 +[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 +[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 +[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 +[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 +[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 +[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 +[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 +[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 +[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 +[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 +[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 +[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 +[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 +[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 +[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 +[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 +[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 +[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 +[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 +[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 +[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 +[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 +[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 +[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 +[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 +[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 +[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 +[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 +[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 +[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 +[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 +[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 +[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 +[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 +[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 +[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 +[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 +[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 +[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 +[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 +[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 +[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 +[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 +[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 +[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 +[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 +[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 +[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 +[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 +[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 +[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 +[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 +[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 +[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 +[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 +[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 +[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 +[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 +[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 +[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 +[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 +[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 +[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 +[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 +[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 +[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 +[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 +[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 +[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 +[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 +[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 +[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 +[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 +[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 +[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 +[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 +[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 +[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 +[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 +[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 +[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 +[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 +[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 +[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 +[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 +[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 +[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 +[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 +[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 +[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 +[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 +[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 +[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 +[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 +[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 +[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 +[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 +[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 +[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 +[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 +[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 +[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 [#157037]: https://github.com/cockroachdb/cockroach/pull/157037 -[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 +[#144658]: https://github.com/cockroachdb/cockroach/pull/144658 +[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 +[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 +[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 +[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 +[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 +[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 +[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 +[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 +[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 +[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 +[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 +[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 +[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 +[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 +[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 +[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 +[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 +[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 +[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 +[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 +[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 +[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 +[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 +[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 +[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 +[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 +[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 +[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 +[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 +[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 +[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 +[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 +[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 +[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 +[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 +[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 +[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 +[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 [#156564]: https://github.com/cockroachdb/cockroach/pull/156564 +[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 +[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 +[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 +[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 +[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 +[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 +[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 +[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 +[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 +[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 +[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 +[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 +[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 +[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 +[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 +[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 +[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 +[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 +[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 +[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 +[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 +[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 +[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 +[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 +[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 +[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 +[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 +[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 +[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 +[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 +[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 +[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 +[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 +[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 +[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 +[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 +[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 +[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 +[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 +[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 +[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 +[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 +[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 +[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 +[#145391]: https://github.com/cockroachdb/cockroach/pull/145391 +[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 +[#144643]: https://github.com/cockroachdb/cockroach/pull/144643 +[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 +[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 +[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 +[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 +[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 +[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 +[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 +[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 +[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 +[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 +[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 +[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 +[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 +[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 +[#145236]: https://github.com/cockroachdb/cockroach/pull/145236 +[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 +[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 +[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 +[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 +[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 +[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 +[#142927]: https://github.com/cockroachdb/cockroach/pull/142927 +[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 +[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 +[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 +[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 +[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 +[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 +[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 +[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 +[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 +[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 [#156667]: https://github.com/cockroachdb/cockroach/pull/156667 -[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 +[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 +[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 +[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 +[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 +[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 +[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 +[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 +[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 +[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 +[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 +[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 +[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 +[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 +[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 +[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 +[#143097]: https://github.com/cockroachdb/cockroach/pull/143097 +[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 +[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 +[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 +[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 +[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 +[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 +[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 +[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 +[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 +[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 +[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 +[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 +[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 +[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 +[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 +[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 +[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 +[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 +[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 +[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 +[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 +[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 +[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 +[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 +[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 +[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 +[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 +[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 +[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 +[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 +[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 +[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 +[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 +[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 +[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 +[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 +[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 +[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 +[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 +[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 +[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 +[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 +[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 +[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 +[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 +[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 +[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 +[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 +[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 +[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 +[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 [#155737]: https://github.com/cockroachdb/cockroach/pull/155737 -[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 -[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 +[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 +[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 +[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 +[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 +[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 +[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 +[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 +[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 +[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 +[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 [#156136]: https://github.com/cockroachdb/cockroach/pull/156136 -[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 -[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 -[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 -[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 -[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 -[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 -[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 -[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 -[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 -[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 +[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 +[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 +[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 +[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 +[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 +[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 +[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 +[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 +[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 +[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 +[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 +[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 +[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 +[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 +[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 +[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 +[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 +[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 +[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 +[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 +[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 +[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 +[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 +[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 +[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 +[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 +[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 +[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 +[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 +[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 +[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 +[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 +[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 +[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 +[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 +[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 +[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 +[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 +[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 +[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 +[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 +[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 +[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 +[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 +[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 +[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 +[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 +[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 +[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 +[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 +[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 +[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 +[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 +[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 +[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 +[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 +[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 +[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 +[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 +[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 +[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 +[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 +[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 +[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 +[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 +[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 +[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 +[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 +[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 +[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 +[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 +[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 +[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 +[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 +[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 +[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 +[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 +[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 +[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 +[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 +[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 +[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 +[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 +[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 +[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 +[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 +[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 +[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 +[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 +[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 +[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 +[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 +[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 +[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 From fadd3aac37e1888e19b872e0ad7c87d160b65b90 Mon Sep 17 00:00:00 2001 From: Mike Lewis <76072290+mikeCRL@users.noreply.github.com> Date: Wed, 3 Dec 2025 15:33:21 -0500 Subject: [PATCH 37/37] Update v25.4.1.md Edit to the last commit that had the correct, shorter list of changes. (Not the prior commit to this one, which is erroneous, per a current script bug.) --- .../_includes/releases/v25.4/v25.4.1.md | 1332 +---------------- 1 file changed, 25 insertions(+), 1307 deletions(-) diff --git a/src/current/_includes/releases/v25.4/v25.4.1.md b/src/current/_includes/releases/v25.4/v25.4.1.md index b1b083552b7..55e02c71364 100644 --- a/src/current/_includes/releases/v25.4/v25.4.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.1.md @@ -4,1341 +4,59 @@ Release Date: December 3, 2025 {% include releases/new-release-downloads-docker-image.md release=include.release %} -

Backward-incompatible changes

- -- Vector index partition IDs now use a different function that distributes them more evenly across the key-value range, reducing potential hot spots. Due to this change, vector indexes created before v25.2.0 must be rebuilt. [#145471][#145471] - -

Security updates

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

General changes

- -- Added the `headers_json_column_name` option to the changefeed Kafka sink, allowing users to specify a column in their table(s) of type `JSONB` to be used as the Kafka headers for each row. [#142092][#142092] -- Previously, HTTP response headers included `"Cache-Control: no-cache"`, allowing responses to be stored in caches but requiring revalidation on each request. Now, the response headers include `"Cache-Control: no-store"`, ensuring that HTTP requests to the server are not cached by the client. However, requests for UI assets—such as `bundle.js`, fonts, and other static files—will continue to include `"Cache-Control: no-cache"` to allow caching and ensure the DB Console loads quickly. [#142277][#142277] -- Improved the wording of the error message when a changefeed is created with a cursor older than the garbage collection threshold. [#142408][#142408] -- Added a warning when creating a changefeed with a cursor timestamp older than 5 hours. [#142742][#142742] -- Enhanced the `/status/v2/hotranges` endpoint by adding two new filtering options: - - `per_node_limit` (`int32`): Specifies the maximum number of hot ranges to return per node. Defaults to `128` if not set. - - `stats_only` (`bool`): When set to `true`, returns only the statistics for hot ranges without fetching descriptor information, such as databases, tables, and indexes. [#144091][#144091] -- For virtual clusters, hot range logging is now performed by a single job on one node, rather than by tasks on every node. [#145549][#145549] -- The CREATE - CHANGEFEED statement now supports the - `extra_headers` option, which can be used to - specify extra headers for webhook and kafka - sinks. This can be used to add headers to all - messages sent to the sink. [#146813][#146813] -- Changefeeds now round down the progress of each range to 1 second, in order to cover more ranges in fine-grained checkpointing. [#146979][#146979] -- Changefeed source metadata now includes the `crdb_internal_table_id` field, enabling downstream consumers to uniquely identify tables even if table names change. [#147341][#147341] -- Changefeeds emitting to Kafka sinks that were created in CockroachDB v24.2.1+, or v23.2.10+ and v24.1.4+ with the `changefeed.new_kafka_sink.enabled` cluster setting enabled now include the message key, size, and MVCC timestamp in "message too large" error logs. [#147543][#147543] -- This change adds new metrics: - changefeed.stage.pts.create.latency, - changefeed.stage.pts.manage.latency, - changefeed.stage.pts.manage_error.latency, - to measure the performance of managing protected ts records. [#148471][#148471] -- Added an OTLP log sink that exports logs in OpenTelemetry Protocol format over gRPC to compatible targets such as `otel-collector`, Datadog, and Loki. [#148525][#148525] -- Kafka v2 changefeed sinks now support - a cluster setting that enables detailed error logging for messages - exceeding Kafka v2 size limit. [#148753][#148753] -- The CockroachDB spatial libraries now rely on GEOS 3.12 instead of GEOS 3.11. [#148859][#148859] -- the changefeeds with protobuf - format now supports the resolved option for emitting - resolved timestamps. [#149622][#149622] -- Changefeeds using the protobuf format - now support wrapped envelopes in kafka sinks [#149696][#149696] -- Restore jobs now log errors on retry to - the job messages table. [#149821][#149821] -- A warning is now emitted when creating or altering a - changefeed with `resolved` or `min_checkpoint_frequency` set below 500ms. This helps - users understand the tradeoff between message latency and cluster CPU usage. [#149975][#149975] -- The protobuf format for changefeeds - now support enriched envelopes. [#150501][#150501] -- Added HTTP mode to the OTLP sink, allowing logs to be exported to OpenTelemetry Protocol (OTLP) targets over HTTP. This enhancement enables agentless deployments, where logs can be sent directly to supported targets like Datadog or Grafana, without requiring an intermediary such as the OpenTelemetry Collector or Datadog Agent. [#150655][#150655] -- Added `headers` configuration option to OTLP log sink. [#150696][#150696] -- CockroachDB spatial libraries now rely on GEOS 3.13 instead of GEOS 3.12. [#151186][#151186] -- Added `WITH INDEX` option to `SHOW - BACKUPS` for faster listing of 25.4+ backups. [#152142][#152142] -- The changefeed bulk - delivery setting was made optional. [#154953][#154953] - -

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

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

SQL language changes

-- Implemented the `levenshtein_less_equal(string, string, int)` and `levenshtein_less_equal(string, string, int, int, int, int)` built-in functions, which calculate the Levenshtein distance between two strings. [#104649][#104649] -- The owner of a database can now set default session variables per database using the `ALTER ROLE ALL IN DATABASE ... SET` or `ALTER DATABASE ... SET` commands. [#130547][#130547] -- Added the `ST_3DLength` function, which returns the 3D or 2D length of `LINESTRING` and `MULTILINESTRING` spatial types. [#139450][#139450] -- `format()` no longer requires all post-format string arguments to have the same type. [#141193][#141193] -- `concat()` no longer requires all arguments have the same type. [#141193][#141193] -- `concat_ws()` now accepts arguments of any type in the second and later positions (the separator must still be a string). [#141193][#141193] -- `pg_column_size()` no longer requires that all arguments have the same type. [#141193][#141193] -- `num_nulls()` and `num_nonnulls()` no longer require all arguments to have the same type. [#141193][#141193] -- `json_build_object()`, `jsonb_build_object()`, `json_build_array()`, and `jsonb_build_array()` no longer require that all arguments have the same type. [#141193][#141193] -- Double-quoted key accessors are now supported in JSONPath queries. For example, `SELECT '$."1key"."key2"'::JSONPATH;`. [#142241][#142241] -- Array integer indexing is now supported in JSONPath queries. For example, `$.a[1]`. [#142241][#142241] -- Array ranges are now supported in JSONPath queries. For example, `$.a[1 to 3]`). [#142241][#142241] -- Array unions are now supported in JSONPath queries. For example, `$.a[1, 2 to 4, 7, 8]`. [#142241][#142241] -- Fixed a regression due to join-elimination rules that prevented other optimization rules from applying. [#142252][#142252] -- Statements such as `REFRESH MATERIALIZED VIEW` and `CREATE MATERIALIZED VIEW` can now be executed with an `AS OF SYSTEM TIME` clause. These statements can still not be used in an explicit transaction. [#142259][#142259] -- Add the `jsonb_path_query` function, which takes in a JSON object and a JSONPath query and returns the resulting JSON object. [#142336][#142336] -- Added the `ALTER VIRTUAL CLUSTER .. SET REPLICATION SOURCE` command so users can configure producer jobs on the source cluster. Currently, users can only configure the `EXPIRATION WINDOW`. Also, removed the `EXPIRATION WINDOW` option from the consumer side command of `ALTER VIRTUAL CLUSTER SET REPLICATION`. [#142501][#142501] -- `EXPLAIN ANALYZE` statements now display the number of transaction retries and time spent retrying, if non-zero, in the plan output. [#142692][#142692] -- Users can now begin logical data replication (LDR) on an existing table if the user has a table-level `REPLICATIONDEST` privilege. Furthermore, users can now begin LDR onto an automatically created table if the user has the parent database level `CREATE` privilege. Finally, during bidirectional LDR, the user in the original source URI, who will begin the reverse LDR stream, to authorize via this table-level `REPLICATIONDEST` privilege. [#142840][#142840] -- Logical operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '1 < 2 && 3 >= 2')`. [#142899][#142899] -- Comparison operators in predicates are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', 1 < 2)`. [#142899][#142899] -- It is now possible to automatically collect partial table statistics, but disable automatic collection of full table statistics. The new cluster and table settings to enable/disable automatic collection of full table statistics (without affecting the settings for partial stats) are `sql.stats.automatic_full_collection.enabled` and `sql_stats_automatic_full_collection_enabled`, respectively. The settings default to `true`. [#142924][#142924] -- The return type of the `workload_index_recs` built-in function now includes two columns. The first column, `index_rec`, remains a `STRING` type and contains the index recommendation. The second column, `fingerprint_ids`, is new and has the `BYTES[]` type. [#142927][#142927] -- Update edge cases in the `width_bucket()` function to return `count + 1` for a positive infinity operand, and `0` for a negative infinity operand, instead of an error. [#142932][#142932] -- Implemented various `power()` and `^` edge cases to match PostgreSQL behaviour. Some expressions that previously returned `NaN` now return specific numbers; some expressions that previously returned `Infinity` or `NaN` now return errors; and some expressions with infinite exponents now return different results. [#142932][#142932] -- Added the `jsonb_path_exists` function, which accepts a JSON object and JSONPath query and returns whether the query returned any items. [#143028][#143028] -- Filters are now supported in JSONPath queries, using the format `$ ? (predicate)`. This allows results to be filtered. For example, `SELECT jsonb_path_query('{"a": [1,2,3]}', '$.a ? (1 == 1)');`. [#143097][#143097] -- Addition, subtraction, multiplication, division, and modulo operators are now supported in JSONPath queries. [#143210][#143210] -- String comparisons are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '"a" < "b"');`. [#143240][#143240] -- Null comparisons are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', 'null != 1');`. [#143240][#143240] -- `like_regex` predicate evaluation is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '"hello" like_regex "^he.*$"');`. [#143240][#143240] -- The job description for `AUTO CREATE PARTIAL STATS` now clearly indicates that the job is for automatic partial statistics collection, improving `system.jobs` visibility and debugging. [#143283][#143283] -- Added documentation for previously hidden DDL statements related to row-level security (RLS). RLS enables fine-grained access control by enforcing policies that determine which rows a user can read or modify. [#143510][#143510] -- Assigning to an element of a composite-typed variable in a PL/pgSQL routine now respects case-sensitivity rules. For example, a field named `"FOO_Bar"` can be assigned using `NEW."FOO_Bar" = 100`. [#143579][#143579] -- Wildcard key accessors are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{"a": 1, "b": true}', '$.*');`. [#143588][#143588] -- Unary arithmetic operators are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('[1, 2, 3]', '-$');`. [#143613][#143613] -- `last` is now supported for array indexing in JSONPath queries. For example, `SELECT jsonb_path_query('[1, 2, 3, 4]', '$[1 to last]');`. [#143658][#143658] -- `exists()` is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('[1, 2, 3]', 'exists($[*])');`. [#143667][#143667] -- `() is unknown` is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '($ < 1) is unknown');`. [#143668][#143668] -- `starts with ""` is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('"abcdef"', '$ - starts with "abc"');`. [#143675][#143675] -- Set-returning functions (SRF) are now supported in PL/pgSQL. A PL/pgSQL SRF can be created by declaring the return type as `SETOF ` or `TABLE`. [#143820][#143820] -- Usage of `TG_ARGV` in trigger functions is now disallowed by default. The session setting `allow_create_trigger_function_with_argv_references` can be set to `true` to allow usage (with 1-based indexing). [#143827][#143827] -- A new `execution time` statistic is now reported on `EXPLAIN ANALYZE` output for most operators. Previously, this statistic was only available on the DistSQL diagrams in `EXPLAIN ANALYZE (DISTSQL)` output. [#143857][#143857] -- Added a new session variable `create_table_with_schema_locked`, which can be used to ensure all tables created by a session have the storage parameter `schema_locked` set. [#143892][#143892] -- Added the `jsonb_path_query_first` function, which returns the first result from `jsonb_path_query`. [#144006][#144006] -- Added the `jsonb_path_query_array` function, which returns the result of `jsonb_path_query` wrapped in a JSON array. [#144006][#144006] -- Added the `jsonb_path_match` function, which returns the result of a predicate query. [#144006][#144006] -- The following syntax is now supported: `GRANT ... ON ALL ROUTINES IN SCHEMA ...`; `REVOKE ... ON ALL ROUTINES IN SCHEMA ...`; `ALTER DEFAULT PRIVILEGES GRANT ... ON ROUTINES ...`; `ALTER DEFAULT PRIVIELGES REVOKE ... ON ROUTINES ...`. The `ROUTINES` keyword makes the command apply to both functions and stored procedures. Note that `ALTER DEFAULT PRIVILEGES ... ON FUNCTIONS` already applied to stored procedures (which aligns with the PostgreSQL behavior), and that is not changing. [#144189][#144189] -- Parenthesized expressions are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{"a": {"b": true}}', '($.a).b');` [#144245][#144245] -- The `.size()` method is now supported in JSONPath expressions. For example, `SELECT jsonb_path_query('[1, 2, 3]', '$.size()');`. [#144266][#144266] -- The `.type()` method is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('[1, 2, 3]', '$.type()');`. [#144266][#144266] -- Non-integer array indices are now supported in JSONPath queries (e.g., `SELECT jsonb_path_query('[1, 2, 3]', '$[2.5]');`). Indices are rounded toward 0. [#144385][#144385] -- The variable arguments of polymorphic built-in functions (e.g., `concat`, `num_nulls`, `format`, `concat_ws`, etc.) no longer need to have the same type, matching PostgreSQL behavior. As a result, CockroachDB's type inference engine will no longer be able to infer argument types in some cases where it previously could, and there is a possibility that CockroachDB applications will encounter new errors. The new session variable `use_pre_25_2_variadic_builtins` restores the previous behavior (and limitations). [#144522][#144522] -- When creating a vector index with the `USING` syntax, `hnsw` can now be specified as the index type, although a `cspann` vector index is still provided. This change increases compatibility with third-party tools. [#144533][#144533] -- The `vector_l2_ops` operator class can now be specified for a vector index. Because `vector_l2_ops` is the default, it is possible to omit the operator class from an index definition. [#144533][#144533] -- Added new cluster settings: `sql.metrics.application_name.enabled` and `sql.metrics.database_name.enabled`. These settings default to `false` and can be set to `true` to display the application name and database name, respectively, on supported metrics. [#144610][#144610] -- Added support for numeric JSONPath methods `.abs()`, `.floor()`, `.ceiling()`. For example, `SELECT jsonb_path_query('-0.5', '$.abs()');`. [#144643][#144643] -- Added support for `like_regex` flags in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '"a" like_regex ".*" flag "i"');`. [#144658][#144658] -- `CREATE VECTOR INDEX` and `ALTER PRIMARY KEY` now send a notice that vector indexes will be offline during the change operation when the `sql_safe_updates` session setting is disabled. [#144702][#144702] -- Added support for camelCase parameter names - (e.g., "SharedAccessKeyName") in Azure Event Hub Kafka sink - configuration [#144735][#144735] -- Vector index creation is now prevented until the entire cluster upgrade has been finalized on v25.2 or later. [#145091][#145091] -- Disabled `IMPORT INTO` for tables with vector indexes, because importing into vector indexes is not implemented. [#145236][#145236] -- Added support for query tagging, which allows users to add query tags to their SQL statements via comments. These query tags are included in: -- All log entries generated during the execution of a SQL statement and are prefixed by `querytag-`. -- Traces and are prefixed by `querytag-`. -- In the `crdb_internal.cluster_execution_insights` and `crdb_internal.node_execution_insights` virtual tables in a new `query_tags` JSONB column. -This feature is disabled by default and can be enabled using the `sql.sqlcommenter.enabled` cluster setting. Comments must follow the [SQLCommenter specification](https://google.github.io/sqlcommenter/spec/). [#145435][#145435] -- Fixed a bug that caused a routine with an `INSERT` statement to unnecessarily block dropping a hash-sharded index or computed column on the target table. This fix applies only to newly created routines. In releases prior to v25.3, the fix must be enabled by setting the session variable `use_improved_routine_dependency_tracking` to `on`. [#146250][#146250] -- `~~` and `!~~` are now supported aliases for `LIKE` and `NOT LIKE`. [#146764][#146764] -- `~~*` and `!~~*` are now supported aliases for `ILIKE` and `NOT ILIKE`. [#146764][#146764] -- Added a session variable `initial_retry_backoff_for_read_committed` that controls the initial backoff duration when retrying an individual statement in an explicit `READ COMMITTED` transaction. A duration of `0` disables exponential backoff. If a statement in an explicit `READ COMMITTED` transaction is failing with the `40001` error `ERROR: restart transaction: read committed retry limit exceeded; set by max_retries_for_read_committed=...`, then you should set `initial_retry_backoff_for_read_committed` to a duration proportional to the typical execution time of the statement (in addition to also increasing `max_retries_for_read_committed`). [#146860][#146860] -- Deterministic collations are now supported with `LIKE`. A deterministic collation considers strings to be equal only if they consist of the same byte sequence. [#147045][#147045] -- The `information_schema.triggers` table is now populated with trigger metadata. Users can query this table to see all triggers defined in their database, including the trigger name, timing (`BEFORE`/`AFTER`), event type (`INSERT`/`UPDATE`/`DELETE`), and associated function. Each trigger event appears as a separate row in the table. [#147237][#147237] -- The `pg_catalog.pg_trigger` table now returns metadata about database triggers. [#147248][#147248] -- Directionality may no longer be assigned to any vector index column. Prefix columns are not scannable in a vector index, so directionality is not relevant to them. [#147307][#147307] -- Added the `SHOW CREATE ALL ROUTINES` statement, which can be used to show `CREATE` statements for all user-defined functions (UDFs) and procedures in the current database. [#147452][#147452] -- Added the metrics `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count`, which count the number of automatic retries of SQL transactions and statements, respectively, within the database. These metrics differ from the related `txn.restarts.*` metrics, which count retryable errors emitted by the KV layer that must be retried. The new `sql.txn.auto_retry.count` and `sql.statements.auto_retry.count` metrics count auto-retry actions taken by the SQL layer in response to some of those retryable errors. [#147682][#147682] -- Computed column expressions and `ON UPDATE` expressions can now reference user-defined functions. [#147817][#147817] -- Partial indexes can now reference user-defined functions. [#147817][#147817] -- Added the `SHOW CREATE ALL TRIGGERS` statement. [#147836][#147836] -- The `CITEXT` data type is now supported, enabling case-insensitive comparisons for `CITEXT` columns. Internally, `CITEXT` is equivalent to using the undetermined level 2 collation `und-u-ks-level2`. For example, under `CITEXT`, the expression `'test' = 'TEST'` returns `TRUE`. [#147864][#147864] -- Increased the default value for the `max_retries_for_read_committed` session variable from `10` to `100`. Testing has shown that some high-contention workloads running under `READ COMMITTED` isolation benefit from more statement retries. [#147869][#147869] -- The session variable `initial_retry_backoff_for_read_committed` now defaults to `2` (milliseconds). Testing has shown that some high-contention workloads running under `READ COMMITTED` isolation benefit from exponential backoff. `2` might be too quick of an initial backoff for longer-running statements, but setting this value much higher than the normal duration of execution will cause excessive delay. [#147869][#147869] -- `IMPORT TABLE`, `IMPORT PGDUMP`, and `IMPORT MYSQLDUMP` are now fully removed. These statements have been deprecated in favor of `IMPORT INTO` since v23.2. [#148248][#148248] -- Changed the basic sequence caching option to cache at the per-node level by default. The `PER SESSION CACHE` sequence option is added to provide the previous per-session cache behavior. [#148290][#148290] -- The functionality provided by session variable `enforce_home_region_follower_reads_enabled` was deprecated in v24.2.4 and is now removed. (The variable itself remains for backward compatibility but has no effect.) Note that the related session variable `enforce_home_region` is **not** deprecated and still functions normally. [#148314][#148314] -- Removed the 'started' column in `SHOW JOBS`, which was a duplicate of the 'created' column. [#148464][#148464] -- Added support for automatically determining the region column for a `REGIONAL BY ROW` table using a foreign key constraint. The foreign key is specified by setting a new table storage parameter `infer_rbr_region_col_using_constraint`, and must contain the region column. This can be useful for applications that are unable to guarantee that a child row is inserted or updated from the same region as the matching parent row. [#148540][#148540] -- Added support for invoking a UDF from a view query. Renaming or setting the schema on the routine is currently not allowed if it is referenced by a view. [#148616][#148616] -- Updated the `SHOW CREATE FUNCTION` and `SHOW CREATE PROCEDURE` statements to show fully qualified table names rather than assuming they are qualified with the current database. [#148746][#148746] -- Added the `has_system_privilege` builtin function, which can be used to check if a user has the given system privilege. [#149051][#149051] -- Updated schema change job status messages to be more user-friendly and descriptive, instead of using internal schema change architecture terminology. [#149096][#149096] -- The logical cluster now uses an external connection and automatically updates its configuration when that connection changes. [#149261][#149261] -- Fix a bug where extra quotes or escaped - quote characters would be added to topic names in changefeeds. - Can be turned off by setting feature.changefeed.bare_table_names to - false. [#149438][#149438] -- The users with the role option `PROVISIONSRC` - assigned to them will be unable to change their own password overriding any - config set for sql.auth.change_own_password.enabled cluster setting. Changing - other role options still has the same privilege requirements as before (either - CREATEROLE or CREATELOGIN, depending on the option). The role option for - PROVISIONSRC is also only assignable and cannot be altered using `ALTER role` - command. [#149463][#149463] -- The session setting `optimizer_prefer_bounded_cardinality` is now enabled by default. This setting instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. [#149486][#149486] -- Added `num_txn_retries` and `num_txn_auto_retries` columns to the `crdb_internal.{cluster,node}_queries` virtual tables and to the output of `SHOW QUERIES`. When not `NULL`, these columns reflect the same values as `num_retries` and `num_auto_retries` in `crdb_internal.{cluster,node}_transactions` for the transaction in which the query is running. [#149503][#149503] -- The session setting `optimizer_min_row_count`, which sets a lower bound on row count estimates for relational expressions during query planning, is now set to `1` by default. [#149602][#149602] -- WITH header_row flag is added to EXPORT. - Returns error for non-csv type. Another row is prepended to the csv file - with the column names. [#149686][#149686] -- Users can now ALTER EXTERNAL CONNECTION to - change the external connection URI when granted UPDATE privilege on - EXTERNAL CONNECTION. - - Fixes #98610 [#149869][#149869] -- The `json ? string`, `json ?& array`, `json ?| array`, and `array && array` operators are now index-accelerated for `INVERTED JOIN` statements if there is an inverted index on the JSON column referenced on the left-hand side of the expression. [#149898][#149898] -- The column for `estimated_last_login_time` in - `system.users` will be updated with the TIMESTAMP of user login post successful - authentication. The `SHOW users` view will now show the updated value. - - ``` - root@localhost:26257/defaultdb> SHOW users; - username | options | member_of | estimated_last_login_time - -----------------+-------------------------------------------------------------------------------------+-----------+-------------------------------- - admin | {} | {} | NULL - root | {} | {admin} | 2025-07-13 11:51:29.406216+00 - sourav.sarangi | {} | {} | NULL - (3 rows) - - NOTICE: estimated_last_login_time is computed on a best effort basis; it is not guaranteed to capture every login event - ``` [#150105][#150105] -- The column for `estimated_last_login_time` in - `system.users` will be updated with the TIMESTAMP of user login post successful - authentication. The `SHOW users` view will now show the updated value. - - ``` - root@localhost:26257/defaultdb> SHOW users; - username | options | member_of | estimated_last_login_time - -----------------+-------------------------------------------------------------------------------------+-----------+-------------------------------- - admin | {} | {} | NULL - root | {} | {admin} | 2025-07-13 11:51:29.406216+00 - sourav.sarangi | {} | {} | NULL - (3 rows) - - NOTICE: estimated_last_login_time is computed on a best effort basis; it is not guaranteed to capture every login event - ``` [#150375][#150375] -- The session setting `optimizer_min_row_count`, which sets a lower bound on row count estimates for relational expressions during query planning, is now set to `1` by default. [#150376][#150376] -- `LTREE` is now supported with ancestry operators and with the `concat` operator. Specifically, CockroachDB now allows `ltree @> ltree`, `ltree[] @> ltree`, `ltree @> ltree[]`, `ltree <@ ltree`, `ltree[] <@ ltree`, and `ltree <@ ltree[]` binary comparisons, as well as `ltree[] ?@> ltree`, `ltree[] ?<@ ltree`, and `ltree || ltree` binary operations. The `?@>` and `?<@` are new binary operators that return the first ltree (or `NULL`) that is an ancestor or descendant of the right ltree argument in the array. [#150598][#150598] -- Clusters utilizing cluster virtualization, such as those running Physical Cluster Replication (PCR), apply the same admission control (AC) pacing to various bulk operations used by clusters that are not running with cluster virtualization. [#150633][#150633] -- All PostgreSQL built-in functions for `LTREE` are now supported: `subltree()`, `subpath()`, `nlevel()`, `index()`, `text2ltree()`, `ltree2text()`, and `lca()`. While the `lca()` function in PostgreSQL specifically limits up to 8 LTREE args, the CockroachDB `lca()` function accepts any variable number of ltree args. [#150647][#150647] -- `CREATE USER` and `GRANT` role operations now wait for full-cluster visibility of the new user table version rather than blocking on convergence. [#150747][#150747] -- Improved the optimizer to hoist projections above joins in more cases, which can lead to better query plans. This behavior can be enabled with the new session variable `optimizer_use_improved_hoist_join_project`. [#150887][#150887] -- Introduced `INSPECT TABLE` and `INSPECT DATABASE` syntax (whose underlying logic is not yet implemented). Added the `enable_inspect_command` session setting, which toggles access to the new `INSPECT ...` features as they're implemented. [#151067][#151067] -- Tables with vector indexes are no longer taken offline while the vector index builds. [#151074][#151074] -- Previously, using a pausable portal with a procedure call could cause a panic, depending on the function body. Now, transaction control statements such as procedure calls (e.g., `CALL myfunc()`) are disallowed within pausable portals. [#151153][#151153] -- Added the `allow_unsafe_internals` session variable and `sql.defaults.allow_unsafe_internals` cluster setting to gate access to system database internals. Default access is allowed to support testing. [#151362][#151362] -- When `sql_safe_updates` is enabled, the `ALTER TABLE ... LOCALITY` statement will be blocked when trying to convert an existing table to `REGIONAL BY ROW`, unless a region column has been added to the table. This protects against undesired behavior that caused `UPDATE` or `DELETE` statements to fail against the table while the locality change was in progress. [#151423][#151423] -- Introduced the `SHOW INSPECT ERRORS` statement that is unimplemented. [#151674][#151674] -- Added metrics for statements executed within a stored procedure or function. The following metrics count statements that began execution, including those that failed: `sql_routine_select_started_count`, `sql_routine_update_started_count`, `sql_routine_insert_started_count`, and `sql_routine_delete_started_count`. The following metrics count only successful executions: `sql_routine_select_count`, `sql_routine_update_count`, `sql_routine_insert_count`, and `sql_routine_delete_count`. All counters are global and increment before the transaction is committed or aborted. [#151689][#151689] -- Introduced the `inspect_errors` system table. [#151821][#151821] -- Added a new session variable, `disable_optimizer_rules`, which allows users to provide a comma-separated list of optimizer rules to disable during query optimization. This allows users to avoid rules that are known to create a suboptimal query plan for specific queries. [#151959][#151959] -- The SQL observability statements `SHOW TRANSACTIONS`, `SHOW QUERIES`, and `SHOW SESSIONS` now include an `isolation_level` column that shows the isolation level of the active transaction, or the session's default isolation level when there is no active transaction. [#152352][#152352] -- 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] -- The default value of `use_soft_limit_for_distribute_scan` session variable is now `true`. This means that, by default, the soft limit (if available) will be used to determine whether a scan is "large" and, thus, should be distributed. For example, with `estimated row count: 100 - 10,000`, CockroachDB will use `100` as the estimate to compare against the value of `distribute_scan_row_count_threshold`. [#152557][#152557] -- Added the `bulkio.import.row_count_validation.unsafe.enabled` cluster setting (default: `false`), which triggers an asynchronous `INSPECT` job at the end of an `IMPORT` to validate row counts. [#153294][#153294] -- Added a built-in function, `crdb_internal.request_transaction_bundle`, that allows users to request a transaction diagnostics bundle for a specified transaction fingerprint ID. [#153608][#153608] -- Implemented the `pg_get_function_arg_default` builtin function. This also causes the `information_schema.parameters(parameter_default)` column to be populated correctly. [#153625][#153625] -- Added the `SHOW INSPECT ERRORS` command. This command can be used to view issues that are identified by running the `INSPECT` command to validate tables and indexes. [#154337][#154337] -- Added the `sql.catalog.allow_leased_descriptors.enabled` cluster setting, which is false by default. When set to true, queries that access the `pg_catalog` or `information_schema` can use cached leased descriptors to populate the data in those tables, with the tradeoff that some of the data could be stale. [#154491][#154491] -- 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) [#154631][#154631] -- The optimizer can now use table statistics that merge the latest full statistic with all newer partial statistics, including those over arbitrary constraints over a single span. [#154755][#154755] -- 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. [#155123][#155123] -- 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. [#155123][#155123] -- Added the `INSPECT` command, which runs consistency validation check jobs against tables or databases and specified indexes. [#155441][#155441] -- 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`. [#155509][#155509] -- Vector indexing is now enabled by default. `feature.vector_index.enabled` defaults to `true`. [#155561][#155561] -- Added sql.statements.index_bytes_written.count metric - that counts the number of primary and secondary index bytes modified by SQL - statements. [#156459][#156459] -- Added sql.statements.bytes_read.count metric that - counts the number of bytes scanned by SQL statements. [#156459][#156459] -- Added sql.statements.index_rows_written.count metric - that counts the number of primary and secondary index rows modified by SQL - statements. [#156459][#156459] - Added a `sql.statements.rows_read.count` metric that counts the number of index rows read by SQL statements. [#156459][#156459] +- Added a `sql.statements.index_rows_written.count` metric that counts the number of primary and secondary index rows modified by SQL statements. [#156459][#156459] +- Added a `sql.statements.index_bytes_written.count` metric that counts the number of primary and secondary index bytes modified by SQL statements. [#156459][#156459] +- Added a `sql.statements.bytes_read.count` metric that counts the number of bytes scanned by SQL statements. [#156459][#156459] - CockroachDB now supports index accelerating `jsonb_path_exists` filters with JSONpath expressions that end with an AnyKey (`*`). [#156508][#156508] -

Operational changes

- -- Added the cluster setting `server.child_metrics.include_aggregate.enabled` (default: `true`) that controls the behavior of Prometheus child metrics reporting (`/_status/vars`). When set to `true`, child metrics include an aggregate time series, maintaining the existing behavior. When set to `false`, it stops reporting the aggregate time series, preventing double counting when querying metrics. [#141601][#141601] -- To create a physical cluster replication (PCR) stream, a user must have the `REPLICATIONDEST` privilege, in addition to the already required `MANAGEVIRTUALCLUSTER` privilege. [#142345][#142345] -- To create a physical cluster replication (PCR) stream, a user must have the `REPLICATIONDEST` privilege, in addition to the already required `MANAGEVIRTUALCLUSTER` privilege. [#142345][#142345] -- The `sys.cpu.host.combined.percent-normalized` metric has been updated to include additional counters for more accurate host CPU measurement and to reduce underreporting. It now accounts for time spent processing hardware (`irq`) and software (`softirq`) interrupts, as well as `nice` time, which represents low-priority user-mode activity. [#142478][#142478] -- The `kv.snapshot_receiver.excise.enable` cluster setting has been retired. This feature is now enabled unconditionally. [#142651][#142651] -- Previously, the user supplied in the source cluster connection in PCR and LDR required the `REPLICATION` privilege, which will be deprecated in v25.2 but temporarily supported. Instead, the user will need the new `REPLICATION SOURCE` privilege. [#142749][#142749] -- All `ALTER VIRTUAL CLUSTER REPLICATION JOB` commands for physical cluster replication (PCR), except for `ALTER VIRTUAL CLUSTER SET REPLICATION SOURCE`, will require the `REPLICATIONDEST` privilege, in addition to `MANAGEVIRTUALCLUSTER`. `ALTER VIRTUAL CLUSTER SET REPLICATION SOURCE` now requires the `REPLICATIONSOURCE` privilege. If the ingestion job was created before v25.1, the user can still alter the replication job without the `REPLICATIONDEST` privilege. [#142772][#142772] -- Added 4 new latency metrics: - sql.service.latency.historical, sql.service.latency.consistent, - sql.exec.latency.historical, sql.exec.latency.consistent for easier query - optimizations. [#142826][#142826] -- The /health/restart_safety endpoint indicates - when it is unsafe to terminate a node. [#142930][#142930] -- The `kv.mvcc_gc.queue_kv_admission_control.enabled` cluster setting was retired. [#143124][#143124] -- The `server.client_cert_expiration_cache.capacity` cluster setting has been removed. The `security.certificate.expiration.client` and `security.certificate.ttl.client` metrics now report the lowest value observed for a user in the last 24 hours. [#143384][#143384] -- Previously, the user provided in the source URI in the logical data replication (LDR) stream required the `REPLICATIONSOURCE` privilege at the system level. With this change, the user only needs this privilege on the source tables (i.e., a table-level privilege). [#143456][#143456] -- Prometheus metrics are now also available at the `/metrics` endpoint, in addition to the existing `/_status/vars` endpoint. The new `/metrics` endpoint emits statically labeled metrics and will evolve more rapidly as CockroachDB migrates metrics to use labels instead of defining different metric names. For compatibility, users can continue to use `/_status/vars`, where metric names will remain stable. [#143536][#143536] -- `debug zip` queries are now attributed to internal SQL metrics. As a result, users will no longer see their impact on the SQL charts in the DB Console. [#143711][#143711] -- Added a new metric, `kv.loadsplitter.cleardirection`, which increments when the load-based splitter observes that more than 80% of replica access samples are moving in a single direction (either left/descending or right/ascending). [#143927][#143927] -- The cluster setting `server.client_cert_expiration_cache.capacity` has been deprecated. The client certificate cache now evicts client certificates based on expiration time. [#144181][#144181] -- Added job tracing support to changefeeds. [#144412][#144412] -- When the `server.telemetry.hot_ranges_stats.enabled` cluster setting is enabled, nodes check for hot ranges every minute instead of every 4 hours. A node logs its hot ranges when any single replica exceeds 250 ms of CPU time per second. In multi-tenant deployments, the check runs every 5 minutes and logs hot ranges for the entire cluster. [#144414][#144414] -- Logical data replication (LDR) can now replicate on tables with partial indexes when using the default on SQL writer path. [#144415][#144415] -- partial index schema changes are supported in - replicating tables when logical_replication.consumer.immediate_mode_writer is - not set to legacy-kv [#144508][#144508] -- Logs for hot ranges (`hot_ranges_stats` events) have been moved to the `HEALTH` logging channel. [#144567][#144567] -- Added the metric `changefeed.checkpoint.timestamp_count` that measures the number of unique timestamps in a changefeed span-level checkpoint. It may be useful to monitor this metric to determine if quantization settings should be changed. [#145117][#145117] -- In a physical cluster replication (PCR) deployment, it is not possible for the standby system virtual cluster, or the reader virtual cluster to upgrade the reader virtual cluster by setting the version cluster setting. It is necessary to: - 1. Upgrade the standby system virtual cluster. - 1. Upgrade the primary system virtual cluster. - 1. Upgrade the primary virtual cluster. - 1. Wait for the replicated time to advance past the time the primary virtual cluster upgraded. - 1. Shut down the reader virtual cluster. - 1. Upgrade the destination host cluster. - 1. Re-initialize the reader virtual cluster with `ALTER VIRTUAL CLUSTER SET REPLICATION READ VIRTUAL CLUSTER`. [#146127][#146127] -- Added an `alter_changefeed` structured log event to provide more visibility into when an `ALTER CHANGEFEED` event occurred and what changed. [#147679][#147679] -- Added new timeseries metrics to the `storage.value_separation.*` namespace for observing the behavior of storage engine value separation. [#147728][#147728] -- Introduced the following cluster settings for enabling and configuring value separation in the storage engine: `storage.value_separation.enabled`, `storage.value_separation.minimum_size`, and `storage.value_separation.max_reference_depth`. [#148535][#148535] -- Non-admin users no longer have access to changefeed jobs they do not own and which are not owned by a role of which they are a member, regardless of whether they have the `CHANGEFEED` privilege on the table or tables those jobs may be watching. Admin users, or those with global `SHOWJOB` / `CONTROLJOB` privileges, can still interact with all jobs, regardless of ownership. [#148537][#148537] -- In order to selectively capture - traces for transactions running in an active workload without haing - to capture them via statement diagnostic bundles, customers can now - use the `sql.trace.txn.sample_rate` cluster setting to enable tracing - for a fraction of their workload. The `sql.trace.txn.enable_threshold` - will still need to be set to a positive value to provide a filter - for how slow a transaction needs to be after being sampled to merit - emitting a trace. Traces are emitted to the `SQL_EXEC` logging - channel. [#148542][#148542] -- Added the following cluster settings for configuring blob file rewrite compactions: `storage.value_separation.rewrite_minimum_age` and `storage.value_separation.compaction_garbage_threshold`. [#148782][#148782] -- The default value of `server.mem_profile.total_dump_size_limit` (which controls how much space can be used by automatically collected heap profiles) has been increased from 256MiB to 512MiB. [#148848][#148848] -- Added new experimental values for compression cluster settings to the storage engine. [#148849][#148849] -- The `storage.value_separation.enabled` cluster setting is now enabled by default. This enables value separation for SSTables, where values exceeding a certain size threshold are stored in separate blob files rather than inline in the SSTable. This helps improve write performance (write amplification) by avoiding rewriting such values during compactions. [#148857][#148857] -- A structured event is now logged to the `SQL_SCHEMA` channel when the `REFRESH MATERIALIZED VIEW` statement is executed. [#149153][#149153] -- Removed the `storage.columnar_blocks.enabled` cluster setting; columnar blocks are always enabled. [#149371][#149371] -- A new feature is now available that automatically captures Go execution traces on a scheduled interval. This feature incurs a performance penalty and is generally intended for use under the guidance of Cockroach Labs Support. It can be configured using the following cluster settings: - -- `obs.execution_tracer.interval`: Enables the tracer and sets the interval for capturing traces. Set to a value greater than 0 to activate. -- `obs.execution_tracer.duration`: Specifies the duration for each captured trace. -- `obs.execution_tracer.total_dump_size_limit`: Sets the maximum disk space allowed for storing execution traces. Older traces are automatically deleted when this limit is reached. [#149373][#149373] -- Introduced a cluster setting, `sql.stats.error_on_concurrent_create_stats.enabled`, which modifies how CockroachDB reacts to concurrent auto stats jobs. The default, `true`, maintains the previous behavior. Setting `sql.stats.error_on_concurrent_create_stats.enabled` to `false` will cause the concurrent auto stats job to be skipped with just a log entry and no increased error counters. [#149538][#149538] -- The value of `sql.stats.error_on_concurrent_create_stats.enabled` now defaults to `false`, suppressing error counters for auto stats jobs that fail due to concurrent stats jobs in progress. [#149848][#149848] -- Updated TTL job replanning to be less sensitive by focusing specifically on detecting when nodes become unavailable rather than reacting to all plan differences. The cluster setting `sql.ttl.replan_flow_threshold` may have been set to `0` to work around the TTL replanner being too sensitive; this fix will alleviate that and any instance that had set `replan_flow_threshold` to `0` can be reset back to the default. [#150771][#150771] -- `auth.ldap.conn.latency.internal` has been added to denote the internal authentication time for ldap auth method. [#151105][#151105] -- Introduced two new logging channels: `KV_EXEC` and `CHANGEFEED`. The `KV_EXEC` channel is intended for KV events that do not fall into the `KV_DISTRIBUTION` channel. The `CHANGEFEED` channel is intended for changefeed-related events that are currently logged to the `TELEMETRY` channel. This change does not include logic to move existing logs to the new channels. [#151692][#151692] -- Restricted access to internal tables in the `crdb_internal` schema. Only a predefined allowlist of internal objects is accessible when the session variable `allow_unsafe_internals` is enabled or when the caller is internal. [#151804][#151804] -- In v26.1, changefeed events will be logged to the `CHANGEFEED` logging channel instead of `TELEMETRY`. To test the impact of this change before upgrading, set the cluster setting `log.channel_compatibility_mode.enabled` to `false`. This redirects changefeed logs to the `CHANGEFEED` channel and should be tested only in non-production environments. [#151807][#151807] -- In v26.1, SQL performance events will be logged to the `SQL_EXEC` channel instead of the `SQL_PERF` and `SQL_INTERNAL_PERF` channels. To test the impact of this change, you can set the new cluster setting `log.channel_compatibility_mode.enabled` to `false`. This redirects SQL performance logs to the `SQL_EXEC` channel. This setting should not be used in production environments, as it may affect downstream logging pipelines. [#151827][#151827] -- Restricted access to all `crdb_internal` built-ins unless the session variable `allow_unsafe_internals` is set to true, or the caller is internal. [#151887][#151887] -- In v26.1, `sampled_query` and `sampled_transaction` events will move from the `TELEMETRY` channel to the `SQL_EXEC` logging channel. To test for potential logging pipeline impacts of these changes, set `log.channel_compatibility_mode.enabled` to `false`. Avoid testing in production, as this setting changes live log behavior. [#151949][#151949] -- Delegate queries (such as `SHOW DATABASES`) are now excluded from unsafe SQL checks that restrict access to the `system` database and `crdb_internal` schema. This change ensures that these commands continue to function even when access to internal components is otherwise restricted. [#152084][#152084] -- Added the cluster setting `kvadmission.use_range_tenant_id_for_non_admin.enabled`, which can be used to disable the behavior where Admission Control uses the range's tenant ID for non-admin requests. This behavior is enabled by default. [#152181][#152181] -- CockroachDB now logs structured contention event data, including waiting and blocking transactions, contended keys, and total contention time. [#152190][#152190] -- the PCR reader tenant is always destroyed on cutover [#152509][#152509] -- CockroachDB now logs access to internal system tables and schemas considered unsafe (e.g., `crdb_internal` and `system`). A message is emitted to the `SENSITIVE_ACCESS` log channel when a user overrides the `allow_unsafe_internals` setting or is denied access to these areas. [#152532][#152532] -- A new `changefeed` file group that collects - changefeed logs has been added to the default logging configuration. [#153381][#153381] -- this patch removes the - bulkio.backup.deprecated_full_backup_with_subdir.enabled cluster setting, since - backups will now fail if it is set to true. [#153628][#153628] -- Raised the cache size for the storage engine's block cache to 256 MiB. Note that production systems should always configure this setting. [#153739][#153739] -- 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] -- the incremental_location option is now deprecated - and will be removed in a future release. This feature was added so customers - could define different TTL policies for incremental backups vs full backups. - Users can still do this since incremental backups are by default stored in a - distinct directory relative to full backups ({collection_root}/incrementals). [#153890][#153890] -- 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}`. [#154166][#154166] -- The metrics `sql.select.started.count`, `sql.insert.started.count`, `sql.update.started.count`, and `sql.delete.started.count` are now emitted with labels under the common metric name `sql.started.count`, using a `query_type` label to distinguish each operation. [#154388][#154388] -- Added the cluster setting `storage.unhealthy_write_duration` (defaults to 20s), which is used to indicate to the allocator that a store's disk is unhealthy. The cluster setting `kv.allocator.disk_unhealthy_io_overload_score` controls the overload score assigned to a store with an unhealthy disk, where a higher score results in preventing lease or replica transfers to the store, or shedding of leases by the store. The default value of that setting is 0, so the allocator behavior is unaffected. [#154459][#154459] -- Added cluster setting `sql.schema.approx_max_object_count` (default: 20,000) to prevent creation of new schema objects when the limit is exceeded. The check uses cached table statistics for performance and is approximate - it may not be immediately accurate until table statistics are updated by the background statistics refreshing job. Clusters that have been running stably with a larger object count should raise the limit or disable the limit by setting the value to 0. In future releases, the default value for this setting will be raised as more CockroachDB features support larger object counts. [#154576][#154576] - -

Command-line changes

- -- Node attributes (attrs) will now appear in - the node status cli command. [#143421][#143421] -- Added the `--validate-zip-file` flag to `cockroach debug zip` command. This flag performs a quick validation check to ensure that the generated zip file is not corrupted. The flag is enabled by default. [#146192][#146192] -- Updated the `\d
` command to show policy and Row Level Security information similar to what is shown in the output of `SHOW CREATE TABLE`. [#146215][#146215] -- The SQL shell now supports the compact output mode when `auto_trace` is enabled. [#146432][#146432] -- Removed the stale `--oss` flag from the `dev ui watch` subcommand. This flag was no longer in use, as the UI development workflow now exclusively targets the CCL build. This change simplifies the tool by removing an unused build path and potential confusion for developers. [#147978][#147978] -- The internal generator used by `cockroach workload` now supports parsing DDL schemas into a structured YAML format, enabling more flexible and detailed workload generation configurations. [#149513][#149513] -- Improved the performance of the `debug zip` query that collects `transaction_contention_events` data. This change reduces the risk of encountering “memory budget exceeded” or “query execution canceled due to statement timeout” errors. [#149570][#149570] -- The `cockroach workload` internals have been updated with built-in generators and wrappers for various SQL types—enabling modular, extensible, and reusable workload data generation. [#149728][#149728] -- Updated the internals of `cockroach workload` so there is one primary CLI entry point for workload generation, wiring together DDL parsing, schema construction, generator factory, and output routines. [#150321][#150321] -- Updated the redaction policy for cluster settings in `debug zip` output. All "sensitive" settings are now redacted in all debug zips, whether or not redaction is explicitly requested. In redacted debug zips, both "sensitive" and "non-reportable" settings are redacted. This replaces the previous behavior, which redacted all string-type settings only in redacted debug zips. [#150364][#150364] -- Added SQL workload extraction and rewriting support to the internals of `cockroach workload`, enabling placeholder‐driven data-generation workflows from CockroachDB debug logs. [#150614][#150614] -- Update the help text for the --database and --url - CLI flags to document support for virtual cluster syntax. The --database flag - now shows examples of both simple database names and the - cluster:virtual-cluster/database format. The --url flag examples now include - the virtual cluster syntax in PostgreSQL connection URLs. [#150624][#150624] -- Updated `cockroach workload` internals to read init‑time schema and SQL artifacts and run SQL workloads with placeholder‑driven data generation. [#150836][#150836] -- Added support for simple `CHECK` constraints and bit/bytes column generators to `cockroach workload`'s workload generator. [#150926][#150926] -- Added a new file, `cluster_settings_history.txt`, to debug zips. This file contains a history of cluster setting changes based on the system event log table. The history is only available while the corresponding events remain in the table. Sensitive settings are always redacted, and non-reportable settings are redacted when the debug zip is generated with redaction enabled. [#151066][#151066] - -

DB Console changes

- -- The lock and latch wait time components of a query's cumulative contention time are now tracked separately and surfaced as annotations in `EXPLAIN ANALYZE` output. [#113649][#113649] -- The metric that measures cumulative contention time now includes time spent waiting to acquire latches, in addition to time spent acquiring locks. This metric is displayed in both the DB Console and the `EXPLAIN ANALYZE` output. [#113649][#113649] -- The DB Console's `index.html` page now includes a `Content-Security-Policy` (CSP) HTTP header to help prevent cross-site scripting (XSS) attacks. [#142282][#142282] -- The Replica Quiescence graph on the DB Console's Replication Dashboard now displays the number of replicas quiesced with leader leases. [#143215][#143215] -- A new cluster setting, `ui.default_timezone`, has been added to replace the deprecated `ui.display_timezone`. The new setting supports all timezones and is used to render timestamps in the DB Console. Avoid using `ui.display_timezone`, as it will be removed in a future release. [#143499][#143499] -- The Explain Plans table on the **Statement Details** and **Plan Details** pages now indicate whether or not the plan was a generic query plan. [#144008][#144008] -- Schema insights that recommend replacing an index were previously a two-statement command consisting of a `CREATE INDEX` and a `DROP INDEX` statement. When these two DDL statements were run as a single batched command, it was possible for one statement to succeed and one to fail. This is because DDL statements do not have the same atomicity guarantees as other SQL statements in CockroachDB. Index-replacement insights are now a single `CREATE INDEX` statement followed by a comment with additional DDL statements to be run manually: an `ALTER INDEX ... NOT VISIBLE` statement, which makes the old index invisible to the optimizer, followed by a `DROP INDEX` statement that should only be run after making the old index invisible and verifying that workload performance is satisfactory. [#144101][#144101] -- The Hot Ranges page node filter has been moved out of the main filter container and now filters nodes on the backend to reduce load time. [#147089][#147089] -- The Insights page in the DB Console now displays SQL commenter query tags for statement executions. These tags provide application context (such as application name, user ID, or feature flags) embedded in SQL comments using the `sqlcommenter` format. This information can help correlate slow query performance with specific application states. The Query Tags column is available in the Statement Executions view's Statement Insights table, but it is hidden by default. To display it, use the Columns selector. [#147439][#147439] -- Updated the titles of the disk throughput graphs on the Metrics page Hardware dashboard to display only "Bytes/s" instead of including a specific magnitude, "MiB/s". The titles of the graphs are now “"Disk Read Bytes/s" and "Disk Write Bytes/s". [#147462][#147462] -- Retry counts for statements executing under `READ COMMITTED` isolation are now more accurate. [#147682][#147682] -- Updated the "Learn more" link on the **Hot Ranges** page to direct users to a newer, more comprehensive reference guide about hotspots. [#147927][#147927] -- Renamed the 'Hot Ranges' page in the DB Console to 'Top Ranges' to clarify that it shows the highest-ranked ranges by various metrics, not necessarily those experiencing high activity. [#149713][#149713] -- Fixed a bug where **Drop Unused Index** recommendations were not populated on the Schema Insights tab after a hard refresh of the Insights page. [#149838][#149838] -- Updated the DB Console so that the tenant dropdown now appears in insecure mode when multiple virtual clusters are available. [#150535][#150535] -- In the DB Console, the **Active Executions** table on the Statements and Transactions pages now includes a new **Isolation Level** column. The Sessions page also includes a new **Default Isolation Level** column. [#153617][#153617] -

Bug fixes

-- Fixed a bug where replication controls on indexes and partitions would not get properly updated during an index backfill to its new ID; this effectively discarded the replication controls set on the object before the backfill. [#141800][#141800] -- Fixed a bug where secondary indexes could be unusable by DML statements while a primary key swap was occurring, if the new primary key did not contain columns from the old primary key. [#141850][#141850] -- Fixed a bug when running with the `autocommit_before_ddl` session variable that could cause a runtime error when binding a previously prepared DDL statement. [#141851][#141851] -- The TTL deletion job now includes a retry mechanism that progressively reduces the batch size when encountering contention. This improves the chances of successful deletion without requiring manual adjustments to TTL knobs. Added the `jobs.row_level_ttl.num_delete_batch_retries` metric to track the number of times the TTL job had to reduce the batch size and try again. [#141953][#141953] -- Fixed a bug when running with the `autocommit_before_ddl` session setting that could cause a runtime error when binding a previously prepared DDL statement. [#141987][#141987] -- Fixed an issue where change data capture queries on tables without columns would fail with an internal error: `unable to determine result columns`. [#142068][#142068] -- Fixed a bug that would prevent `CREATE TRIGGER` and `DROP TRIGGER` statements from working if the `autocommit_before_ddl` session setting was enabled, and if the statement was either sent as a prepared statement or as part of a batch of multiple statements. [#142202][#142202] -- Previously, the `CREATE LOGICALLY REPLICATED` syntax would always create the destination table with the source table's name, instead of the user-provided name. Now, `CREATE LOGICALLY REPLICATED` will create the destination table with the user-provided name. [#142235][#142235] -- Fixed a bug where `EXPLAIN ANALYZE` output could incorrectly show `distribution: full` and not `distribution: local` in some cases when the physical plan was only running on the gateway node. The bug had been present since before v23.1, and did not apply to `EXPLAIN` statements. [#142248][#142248] -- Fixed a bug that could cause the upgrade to v25.1 to crash if a job was missing from the virtual table, for example if a malformed job had no payload info. [#142284][#142284] -- Fixed an issue where removed nodes could leave persistent entries in `crdb_internal.gossip_alerts`. [#142385][#142385] -- Fixed a bug where invalid default expressions could cause backfilling schema changes to retry forever. [#142490][#142490] -- Fixed a bug where index backfill progress before a `PAUSE`/`RESUME` would not get tracked. [#142602][#142602] -- Fixed an issue where dropping a database with triggers could fail due to an undropped backreference to a trigger function. [#142670][#142670] -- Fixed a bug in client certificate expiration metrics, `security.certificate.expiration.client` and `security.certificate.ttl.client`. [#142682][#142682] -- Fixed a bug where `CREATE SEQUENCE` could succeed during an ongoing `DROP SCHEMA` or `DROP DATABASE` operation. Now, `CREATE SEQUENCE` will retry if the parent object has a schema change in progress, preventing the creation of new objects under deleted parent objects. [#142696][#142696] -- Fixed a bug where, during validation of a table-level zone config, inherited values were incorrectly populated from the default range instead of from the parent database. [#142760][#142760] -- Fixed a bug where index backfills unnecessarily merged new data written to an index, which could lead to extra contention. [#142768][#142768] -- Physical Cluster Replication (PCR) reader catalogs could have orphaned rows in `system.namespace` after an object is renamed. [#142829][#142829] -- Fixed a bug which would send a replica outside of a tenant's known region when `SURVIVE REGION FAILURE` was set and exactly 3 regions were configured. [#142838][#142838] -- The reader virtual cluster now starts if the user begins a physical cluster replication (PCR) stream from a cursor via `ALTER VIRTUAL CLUSTER virtual_cluster START REPLICATION OF physical_cluster ON pgurl WITH READ VIRTUAL CLUSTER`. [#143072][#143072] -- Fixed a bug that caused changefeeds to fail on startup when scanning a single key. [#143102][#143102] -- MVCC garbage collection is now fully subject to IO admission control. Previously, it was possible for MVCC GC to cause store overload (such as LSM inversion) when a large amount of data would become eligible for garbage collection. Should any issues arise from subjecting MVCC GC to admission control, the `kv.mvcc_gc.queue_kv_admission_control.enabled` cluster setting can be set to `false` to restore the previous behavior. [#143122][#143122] -- Fixed a bug where CockroachDB incorrectly resolved routine overloads in some cases. Previously, it allowed creating routines with signatures differing only in type width (e.g., `f(p VARCHAR(1))` and `f(p VARCHAR(2))`), which is not permitted in PostgreSQL. This required precise type casting during invocation. Similarly, when dropping a routine, CockroachDB previously required exact types, unlike PostgreSQL, which is more lenient (e.g., `DROP FUNCTION f(VARCHAR)` would fail in the preceding example). This bug had existed since v23.1. [#143159][#143159] -- Fixed a bug that could cause a nil-pointer error when a column's default expression contained a volatile expression (like `nextval`) as a UDF argument. The bug was in v24.1.14, v24.3.7, v24.3.8, and v25.1. [#143170][#143170] -- Fixed a bug where calling a stored procedure could drop the procedure if it had `OUT` parameters that were not used by the calling routine. This bug had existed since PL/pgSQL `CALL` statements were introduced in v24.1. [#143173][#143173] -- Fixed a bug where CockroachDB would encounter an internal error when decoding the gists of plans with `CALL` statements. The bug had been present since v23.2. [#143252][#143252] -- Fixed a bug that could leave behind a dangling reference to a dropped role if that role had default privileges granted to itself. The bug was caused by defining privileges such as: `ALTER DEFAULT PRIVILEGES FOR ROLE self_referencing_role GRANT INSERT ON TABLES TO self_referencing_role`. [#143287][#143287] -- Fixed a crash due to `use of enum metadata before hydration` when using logical data replication (LDR) with user-defined types. [#143311][#143311] -- Previously, statement bundle collection could encounter `not enough privileges` errors when retrieving necessary information (e.g., cluster settings, table statistics, etc.) when the user that requested the bundle was different from the user that actually ran the query. This is now fixed. The bug was present since v20.2 and would result in partially incomplete bundles. [#143400][#143400] -- Fixed an issue where databases, tables, and indexes were not appearing on the Hot Ranges page for application virtual clusters. [#143441][#143441] -- Fixed a bug where a GC threshold error (which appears as "batch timestamp must be after replica GC threshold ...") could cause a schema change that backfills data to fail. Now, the error will cause the backfill to be retried at a higher timestamp to avoid the error. [#143451][#143451] -- Fixed a bug that could cause a function reference to be left behind if a procedure referred to another procedure that depended on a a table, and that table was dropped with `CASCADE`. [#143538][#143538] -- Fixed a potential deadlock that could occur during client certificate updates while metrics were being collected. This issue affected the reliability of certificate expiration reporting. [#143663][#143663] -- The `ALTER VIRTUAL CLUSTER SET REPLICATION READ VIRTUAL CLUSTER` syntax is now supported for adding a reader virtual cluster for an existing physical cluster replication (PCR) standby cluster. [#143752][#143752] -- validate column ids when starting an immediate - mode logical replication stream. [#143773][#143773] -- Fixed an issue where hot range logging for virtual clusters omitted some hot ranges. [#143775][#143775] -- Previously, the fields `maximum memory usage` and `max sql temp disk usage` in the `EXPLAIN ANALYZE` output could be under-reported for distributed plans when memory-intensive operations were fully performed on the remote nodes. This is now fixed. The bug existed in v22.1 and later. [#143777][#143777] -- Fixed a bug that could potentially cause a changefeed to complete erroneously when one of its watched tables encounters a schema change. [#144004][#144004] -- Fixed a bug that could cause a stack overflow during execution of a prepared statement that invoked a PL/pgSQL routine with a loop. The bug existed in versions v23.2.22, v24.1.15, v24.3.9, v25.1.2, v25.1.3, and pre-release versions of v25.2 prior to v25.2.0-alpha.3. [#144027][#144027] -- Fixed a bug where using - values changefeed.aggregator.flush_jitter, - min_checkpoint_frequency such that - changefeed.aggregator.flush_jitter * - min_checkpoint_frequency < 1 would cause a panic. - Jitter will now be disabled in this case. - - Fixes: #143436 [#144304][#144304] -- Fixed a bug that could cause PL/pgSQL `FOR` loops to terminate early or show incorrect values for the counter variable. The bug had existed since v24.3, and occurred when two or more `FOR` loops were nested within one another. [#144347][#144347] -- Fixed a bug that prevented variable references using ordinal syntax (like `$1`) from reflecting updates to the variable. Referencing variables declared in PL/pgSQL blocks (instead of parameters) via ordinal syntax is now disallowed. The bug had existed since v24.1. [#144347][#144347] -- Fixed a bug that could cause queries that perform work in parallel to ignore the requested quality-of-service level. Affected operations include lookup joins, DistSQL execution, and foreign-key checks. [#144427][#144427] -- Fixed a bug in the **SQL Activity Statements** page where filtering by **Statement Type** returned no results. The filter now works as expected. [#144517][#144517] -- Fixed a bug in the DB Console where tables with page size dropdowns failed to update when a new page size option was selected. Tables now update correctly. [#144556][#144556] -- Fixed a bug in the DB Console where the **Drop unused index** tag appeared multiple times for an index on the **Indexes** tab of the table details page. [#144558][#144558] -- Fixed the following bugs in the **Schedules** page of the DB Console: -- Fixed a bug where the **Schedules** page displayed only a subset of a cluster's schedules. The **Schedules** page now correctly displays all schedules. -- Fixed a bug where manually updating the `show` or `status` parameters in the URL (e.g., `http://127.0.0.1:8080/#/schedules?status=ACTIVE&show=50`) caused the **Schedules** page to fail to load. [#144638][#144638] -- Fixed a bug in the DB Console where the **Drop unused index** tag appeared multiple times for an index on the **Indexes** tab of the table details page. [#144652][#144652] -- Fixed a bug that caused vector indexes to return incorrect or no results from a standby reader in a physical cluster replication (PCR) setup. This bug existed in alpha versions of v25.2 and in v25.2.0-beta.1. [#144681][#144681] -- `NULL` vectors can now be inserted into tables with vector indexes. [#144712][#144712] -- Fixed a bug that caused index expression elements of primary keys to be shown incorrectly in the output of `SHOW CREATE TABLE`. [#144716][#144716] -- Improve the performance of `SHOW CREATE TABLE` on multi-region databases with large numbers of objects. [#144900][#144900] -- A bug where a NULL value could cause a - parquet export to fail has been fixed. [#145002][#145002] -- Fixed a bug where running `DROP INDEX` on a hash-sharded index did not properly detect dependencies from functions and procedures on the shard column. This caused the `DROP INDEX` statement to fail with an internal validation error. Now the statement returns a correct error message, and using `DROP INDEX ... CASCADE` works as expected by dropping the dependent functions and procedures. [#145107][#145107] -- Fixed an issue where using inline log configuration could cause internal errors on the DB Console's Logs page for a node at `#/node/{nodeID}/logs`. [#145329][#145329] -- Row-level security (RLS) `SELECT` policies during `UPDATE` operations are now only applied when referenced columns appear in the `SET` or `WHERE` clauses, matching the behavior of PostgreSQL. This improves compatibility. [#145344][#145344] -- Fixed a bug that could cause a row-level TTL job to fail with the error "comparison of two different versions of enum" if an `ENUM` type referenced by the table experienced a schema change. [#145374][#145374] -- Fixed a bug where CockroachDB could encounter an internal error when fetching from the `WITH HOLD` cursor with `FETCH FIRST` and `FETCH ABSOLUTE`. The bug was only present in v25.2 alpha and beta releases. [#145391][#145391] -- Fixed a bug that could lead to schema changes hanging after a cluster recovered from availability issues. [#145462][#145462] -- Previously, on a table with multiple column families, CockroachDB could encounter a `Non-nullable column "‹×›:‹×›" with no value` error in rare cases during table statistics collection. The bug was present since v19.2 and is now fixed. [#145481][#145481] -- Specifying types for a subset of columns in a generator function's column definition list now results in a syntax error instead of an internal error. [#145492][#145492] -- Fixed an internal assertion failure that could occur during operations like `ALTER TYPE` or `ALTER DATABASE ... ADD REGION` when temporary tables were present. [#145551][#145551] -- Errors triggered by DB Console activity no longer cause the node to crash. [#145563][#145563] -- Fixed incorrect application of row-level security (RLS) `SELECT` policies to `RETURNING` clauses in `INSERT` and `UPDATE` when no table columns were referenced. [#145890][#145890] -- Fixed a bug where the physical cluster replication (PCR) reader catalog job could hit validation errors when schema objects had dependencies between them (for example, when a sequence's default expression was being removed). [#145972][#145972] -- Creating a vector index on a table that contains a `NULL` vector value will no longer cause an internal error. [#145983][#145983] -- Fixed a bug where an invalid comment in the `system.comment` table for a schema object could make it inacessible. [#146213][#146213] -- Fixed a bug that allowed a column to be dropped from a table even if it was referenced in the `RETURNING` clause of an `UPDATE` or `DELETE` statement in a routine. In releases prior to v25.3, the fix must be enabled by setting the session variable `use_improved_routine_dependency_tracking` to `on`. [#146250][#146250] -- Fixed a bug in v25.2.0 where a vector search operator could drop user-supplied filters if the same vector column was indexed twice and a vector index with no prefix columns was defined after a vector index with prefix columns. [#146259][#146259] -- Fixed a bug that could lead to a node stall. [#146270][#146270] -- Fixed an integer overflow in the `split_part` function when using extremely negative field positions like Go's `math.MinInt64`. [#146271][#146271] -- Fixed a bug that prevented `TRUNCATE` from succeeding if any indexes on the table had back-reference dependencies, such as from a view or function referencing the index. [#146287][#146287] -- Fixed incorrect application of row-level security (RLS) `SELECT` policies to `RETURNING` clauses in `INSERT` and `UPDATE` when no table columns were referenced. [#146292][#146292] -- Fixed a data race in the `cloudstorage` sink. [#146297][#146297] -- Fixed a bug where `ALTER TABLE` operations with multiple commands could generate invalid zone configurations. [#146369][#146369] -- Fixed a bug where a CockroachDB node could crash when executing `DO` statements that contain currently unsupported DDL statements like `CREATE TYPE` in a non-default configuration (additional logging needed to be enabled, e.g., via the `sql.log.all_statements.enabled` cluster setting). This bug was introduced in v25.1. [#146406][#146406] -- Prevent use of future timestamps when using `AS OF SYSTEM TIME` with `CREATE TABLE ... AS` and materialized views. Previously, such timestamps could cause errors, delays, or hangs. [#146446][#146446] -- Remove unncessary Kafka topic creation that would - could cause changefeed start up to fail when using - changefeed.new_kafka_sink_enabled=false. - - Fixes: #128973 - Epic: CRDB-41784 [#146476][#146476] -- Fixed an internal error that could be hit when `ADD COLUMN UNIQUE` and `ALTER PRIMARY KEY` were executed within the same transaction. [#146567][#146567] -- Fixed a bug that prevented temporary views and sequences from being created if the `pg_temp` schema was explicitly specified in the qualified name of the object being created. [#146586][#146586] -- Prevent dropping columns or indexes that are still referenced by triggers. Previously, these operations could succeed silently, potentially breaking trigger functionality. [#146683][#146683] -- Fixed a bug where CockroachDB would not use the vectorized fast path for `COPY` when it was supported. The bug was only present in previous v25.2 releases. [#146696][#146696] -- Fixed an issue where malformed or hanging HTTP connections could block server shutdown. [#146744][#146744] -- The MVCC timestamp is now emitted correctly when the `mvcc_timestamp` is used with CDC queries. [#146836][#146836] -- Fixed a bug where searching a vector with a query vector that doesn't match the dimensions of the vector column in the table would cause a node to crash. [#146848][#146848] -- Fixed a bug that could cause the `cockroach` process to `segfault` when collecting runtime execution traces (typically collected via the **Advanced Debug** page in the Console). [#146883][#146883] -- Fixed a bug that could cause an `AFTER` trigger to fail with `client already committed or rolled back the transaction` if the query also contained foreign-key cascades. The bug had existed since `AFTER` triggers were introduced in v24.3. [#146890][#146890] -- Fixed a bug where the `kv.rangefeed.closed_timestamp.slow_ranges` would not be incremented when a rangefeed closed timestamp was slower than the target threshold. [#146949][#146949] -- Fixed an issue where self-referencing triggers did not have their dependencies properly recorded, which could lead to broken dependencies. [#147018][#147018] -- Fixed a bug that caused the SQL Activity > Statement Fingerprint page to fail to load details for statements run with application names containing a `#` character. [#147021][#147021] -- Fixed a bug that could cause stable expressions to be folded in cached query plans. The bug could cause stable expressions like `current_setting` to return the wrong result if used in a prepared statement. The bug was introduced in v23.2.22, v24.1.14, v24.3.9, v25.1.2, and the v25.2 alpha. [#147187][#147187] -- Fixed a bug where using column families on tables with vector indexes would cause the index to fail to return results. [#147307][#147307] -- Fixed a security issue where optimizer predicate reordering could leak information about hidden rows protected by row-level security (RLS) policies. [#147348][#147348] -- Fixed a bug where the `rolbypassrls` column in `pg_roles` and `pg_authid` tables always returned false, even for roles with the `BYPASSRLS` option. [#147357][#147357] -- Previously, CockroachDB could incorrectly evaluate the `to_regclass`, `to_regnamespace`, `to_regproc`, `to_regprocedure`, `to_regrole`, and `to_regtype` built-in functions when the query using them was evaluated in a distributed fashion. The bug was introduced with these built-in functions in v23.1 and is now fixed. [#147362][#147362] -- Fixed a bug that caused the optimizer to ignore index hints when optimizing some forms of prepared statements. This could result in one of two unexpected behaviors: a query errors with the message `index cannot be used for this query` when the index can actually be used; or a query uses an index that does not adhere to the hint. The hints relevant to this bug are regular index hints, e.g., `SELECT * FROM tab@index`, `FORCE_INVERTED_INDEX`, and `FORCE_ZIGZAG`. [#147368][#147368] -- Fixed a bug where the `pg_catalog.pg_policy` table could contain duplicate OID values when multiple tables had policies with the same policy ID. All rows in `pg_policy` now have unique OIDs as required. [#147373][#147373] -- Fixed a bug on the SQL Activity Statements and Transactions pages where the time picker failed to support sub-hour time ranges when the `sql.stats.aggregation.interval` was set to a value under 1 hour. Previously, selecting a short time window (e.g., 10 minutes) would query for a full hour of data. The fix ensures that the selected time range is respected, enabling more precise analysis of recent activity. [#147447][#147447] -- Fixed an issue where updating child metrics and reinitializing metrics at the same time could cause scrape errors. [#147486][#147486] -- Fixed a memory leak in index backfill jobs where completed spans were duplicated in memory on each progress update after resuming from a checkpoint. This could cause out-of-memory (OOM) errors when backfilling indexes on large tables with many ranges. This bug affected release version v25.2.0 and pre-release versions v25.2.0-alpha.3 through v25.2.0-rc.1. [#147511][#147511] -- Fixed a runtime panic in the `substring_index` function that occurred when the count argument was the minimum 64-bit integer value. [#147546][#147546] -- Fixed a bug where prepared statements on schema changes could fail with runtime errors. [#147658][#147658] -- `FUNCTION` and `PROCEDURE` are now shown via `\h show create` in the CLI doc. [#147666][#147666] -- Fixed a bug where functions lost their row-level security (RLS) policy backreferences, leading to schema change failures. [#147696][#147696] -- Fixed a bug where `ALTER TABLE` was modifying identity attributes on columns not backed by a sequence. [#147698][#147698] -- Fixed an error in `crdb_internal.table_spans` that could occur when a table's schema had been dropped. [#147766][#147766] -- Fixed a bug where introspection queries (such as a against the `crdb_internal` system catalog) could fail if a dropped constraint referenced a column that was also being dropped. [#147773][#147773] -- Fixed a bug that would cause a `CALL` statement executed via a portal in the extended wire protocol to result in an error like `unknown portal ""` if the stored procedure contained `COMMIT` or `ROLLBACK` statements. The bug had existed since PL/pgSQL transaction control statements were introduced in v24.1. The fix is off by default in versions prior to v25.3. [#147923][#147923] -- Fixed a bug where adding multiple columns in a single statement with `AddGeometryColumn` would cause runtime errors. [#147998][#147998] -- Fixed a bug where `libpq` clients using the async API could hang with large result sets (Python: psycopg; Ruby: ActiveRecord, ruby-pg). [#148222][#148222] -- Fixed a bug present since v24.1 where the allocator - could make rebalancing decisions based on stale data, failing to account for - recent local lease transfers not yet reflected in store capacity or gossip. [#148476][#148476] -- Large mutation statements (`INSERT`, `UPDATE`, `DELETE`, `UPSERT`) are now less likely to encounter contention with automatic table statistics collection in some cases. The bug was present since v19.1. [#148488][#148488] -- A bug where a changefeed that was created before - v25.2 could fail after upgrading to v25.2 with the error message - `both legacy and current checkpoint set on change aggregator spec` - has now been fixed. [#148617][#148617] -- CockroachDB now supports decoding `VECTOR` and `BOX2D` types from the binary format of the PostgreSQL extended protocol (pgwire). [#148719][#148719] -- The `RESET ALL` statement no longer affects the following session variables: - - `is_superuser` - - `role` - - `session_authorization` - - `transaction_isolation` - - `transaction_priority` - - `transaction_status` - - `transaction_read_only` - - This better matches PostgreSQL behavior for `RESET ALL`. In addition, the `DISCARD ALL` statement no longer errors when `default_transaction_use_follower_reads` is enabled. [#148770][#148770] -- CockroachDB now prohibits `ORDER BY` and join equality operations on `REFCURSOR` types, matching PostgreSQL behavior. [#148863][#148863] -- Previously, CockroachDB could hit an internal error when performing a `DELETE`, `UPDATE`, or `UPSERT` where the initial scan of the mutation is locking and is on a table different from the one being mutated. A possible workaround was `SET enable_implicit_select_for_update = false`, but this could increase contention. The bug was introduced in v25.2 and is now fixed. [#149093][#149093] -- Fixes a race condition when advancing a - changefeed aggregator's frontier. When hit, the race condition could - result in an internal error that would shut down the kvfeed and cause - the changefeed to retry. [#149119][#149119] -- CockroachDB now supports case-insensitive matching for keyword identifiers in JSONPath queries. Note that the special identifiers `TRUE`, `FALSE`, and `NULL` are parsed case-insensitively in CockroachDB, but are case-sensitive in PostgreSQL. For example, `SELECT '$.active == TrUe'::jsonpath;` succeeds in CockroachDB, but fails in PostgreSQL. [#149251][#149251] -- In v25.1, automatic partial statistics collection was enabled by default (by setting the `sql.stats.automatic_partial_collection.enabled` cluster setting to `true`). Partial statistics collection may encounter certain expected scenarios that were previously reported as failed stats jobs with PostgreSQL error code `55000`. These errors are benign and are no longer reported. Instead, the stats job will be marked as "succeeded," though no new statistics will be created. [#149279][#149279] -- Fixed a minor bug that caused inconsistent behavior with the very rarely used `"char"` type (distinct from `CHAR`). [#149433][#149433] -- CockroachDB now allows `EXPLAIN` of mutation statements in read-only transaction mode, matching PostgreSQL behavior. Note that `EXPLAIN ANALYZE` of mutations is still disallowed, since this variant actually executes the statement. [#149449][#149449] -- Fixed an issue where some SQL metrics were not reported when `server.child_metrics.enabled` was enabled, `server.child_metrics.include_aggregate.enabled` was disabled, and `sql.metrics.application_name.enabled` and `sql.metrics.database_name.enabled` were also disabled. Specifically, metrics with no children now report their aggregate metrics regardless of the `server.child_metrics.include_aggregate.enabled` cluster setting. [#149540][#149540] -- Fixed a bug where database login could fail - during LDAP, JWT, or OIDC authentication if the user's external group - memberships did not correspond to any existing roles in the - database. The login will now succeed, and no roles will be granted or - revoked in this scenario. [#149638][#149638] -- Fixed a slow memory leak that was introduced in v25.1.8, v25.2.1, v25.2.2, and v25.3 betas. The leak would accumulate whenever a node executed a part of the distributed plan (the gateway node of the plan was not affected), and could only be mitigated by restarting the node. [#149800][#149800] -- Attempting to create a vector index with the legacy schema changer will now fail gracefully instead of crashing the node. [#149812][#149812] -- Improved split and scatter behavior for `CREATE INDEX` when statistics are available for key columns. [#150238][#150238] -- Fixed a bug that was preventing the row-level TTL table storage parameters (e.g., `ttl_select_batch_size`, `ttl_delete_batch_size`, `ttl_delete_rate_limit`, `ttl_select_rate_limit`) from being set to `0`, which is their default value. [#150253][#150253] -- Fixed an issue where discarding zone configs on sequences did not actually remove the configuration. [#150255][#150255] -- A bug where modifying a changefeed with ALTER CHANGEFEED - that either unset or left the `gc_protect_expires_after` option unset would - cause the changefeed's max PTS age to become unbounded instead of being set to - the default value configured by the `changefeed.protect_timestamp.max_age` - cluster setting. [#150283][#150283] -- Fixed a bug that would allow a race condition in foreign key cascades under `READ COMMITTED` and `REPEATABLE READ` isolation levels. [#150291][#150291] -- Fixed a bug where the entire schema would become inaccessible if a table was referenced as an implicit record type by a user-defined function (UDF) while the table was undergoing an `IMPORT`. [#150350][#150350] -- Fixed invalid zone configurations that were generated when adding a super region to a 3-region database with a secondary region and region survivability. Previously, this could result in assigning more than the allowed number of replicas. [#150413][#150413] -- Addressed a bug on `schema_locked` tables when a column is dropped, and `schema_locked` is toggled for the user. [#150435][#150435] -- Fixed the `pg_catalog.pg_type` enties for the "any" and "trigger" pseudotypes. [#150777][#150777] -- Fixed an issue where Row Level Security (RLS) policies with missing dependencies during table-level restores could cause inconsistent state or restore failures. [#151045][#151045] -- Fixed a bug that could cause some errors returned by attempts to upload backup data to external storage providers to go undetected, potentially causing incomplete backups. [#151058][#151058] -- Previously, CockroachDB could encounter an internal error `trying to add a column of UNKNOWN type at ...` in rare cases when handling `CASE` or `OR` operations. This bug was present since v20.2 and is now fixed. [#151093][#151093] -- Fixed a bug where `debug.zip` files collected from clusters with `disallow_full_table_scans` enabled were missing system table data. [#151185][#151185] -- Fix handling of empty arrays in JSONPath lax mode - comparisons. Empty arrays now return false for comparisons in lax mode and - null in strict mode, matching PostgreSQL behavior. [#151226][#151226] -- Fixed a bug where `DROP USER` succeeded even though a role owned default privileges, which could leave invalid privilege entries in the system. [#151472][#151472] -- Fixed a bug where sequences could lose references to triggers, allowing them to be dropped incorrectly. [#151546][#151546] -- Previously, CockroachDB could incorrectly elevate the number of rows deleted on tables with multiple column families. The bug was present v19.2 and is now fixed. Note that the data was deleted correctly, but the "rows affected" number was wrong. [#151563][#151563] -- Fixed a bug that allowed replacement indexes, created during an `ALTER PRIMARY KEY` operation, to be accessed with index hints before they were in a ready state. This could lead to runtime errors. [#151691][#151691] -- Added an automatic repair for dangling or invalid entries in the `system.comments` table. [#151737][#151737] -- Previously, CockroachDB could hit an error `ERROR: span with results after resume span...` when evaluating some queries with `ORDER BY ... DESC` in an edge case. This bug was present since v22.1 and is now fixed. [#151774][#151774] -- Fixed a bug introduced in v25.1 where CockroachDB nodes could crash when executing `DO` statements that referenced (possibly nonexistent) user-defined types in non-default configurations. The crash only occurred if additional logging was enabled (for example, with the `sql.log.all_statements.enabled` cluster setting). [#151849][#151849] -- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. [#151947][#151947] -- Fixed a bug where executing certain statements with `BETWEEN SYMMETRIC` expressions could panic if used with values of different types, such as `... b'bytes' BETWEEN SYMMETRIC 'a' AND 'c'`. [#151951][#151951] -- Fixed a bug where `SHOW TABLES` would show inaccurate row counts if the most recent statistics collection was partial. [#152033][#152033] -- Fixed a bug that prevented `RESTORE` from working if there were computed columns or `ON UPDATE` expressions that referenced user-defined functions (UDFs). This bug was introduced in v25.3.0. [#152193][#152193] -- Fixed a bug that allowed foreign-key violations to result from some combinations of concurrent `READ COMMITTED` and `SERIALIZABLE` transactions. If both `SERIALIZABLE` and weaker-isolation transactions will concurrently modify rows involved in foreign-key relationships, the `SERIALIZABLE` transactions must have the following session variables set in order to prevent any possible foreign-key violations: - - `SET enable_implicit_fk_locking_for_serializable = on;` - - `SET enable_shared_locking_for_serializable = on;` - - `SET enable_durable_locking_for_serializable = on;` [#152245][#152245] -- Added the `use_soft_limit_for_distribute_scan` session variable (default: `false`), which controls whether CockroachDB uses the soft row count estimate when deciding whether an execution plan should be distributed. In v25.1, the physical planning heuristics were changed such that large constrained table scans, estimated to scan at least 10,000 rows (controlled via `distribute_scan_row_count_threshold`), would force plan distribution when `distsql=auto`. However, if the scan had a "soft limit" CockroachDB would still use the full estimate (for example, `10,000` in `estimated row count: 100–10,000`), sometimes unnecessarily distributing queries and increasing latency. The `use_soft_limit_for_distribute_scan` session variable addresses this by allowing the planner to use the soft limit when deciding whether a scan is "large". [#152300][#152300] -- `pg_class.pg_depend` now contains entries with `deptype='i'` (internal) for identity columns that own sequences. These previously had `deptype='a'` (auto). [#152309][#152309] -- Fixed a bug that caused an error when dropping a column and a `UNIQUE WITHOUT INDEX` constraint that referenced it in the same transaction. [#152447][#152447] -- Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions. [#152670][#152670] -- Fixed `IMPORT` progress reporting to show the correct row counts when concurrent job state changes occur. [#152745][#152745] -- Fixed a bug where an `INSERT` statement could fail with a type checking error while adding a `BIT(n)` column. [#152910][#152910] -- Fixed a bug where the `schema_locked` storage parameter was not being enforced on the `TRUNCATE` command, which could cause changefeed jobs to fail. [#152932][#152932] -- Fixed an issue where certain vector index operations could throw an out-of-bounds access exception. [#153054][#153054] -- Fixed a bug introduced in v21.2 where `IMPORT` operations with multiple CSV files could incorrectly reset the bulk summary after processing the first file, causing the actual progress to be overwritten with a `nil` value. [#153111][#153111] -- Fixed a bug introduced in v25.1.0 that would - cause a node panic if a `SIGINT` signal was sent during the execution of - a `CHECK EXTERNAL CONNECTION` command. [#153380][#153380] -- Fixed a bug where index creation could fail due to validation errors if the schema change was retried or paused/resumed during the backfill. [#153583][#153583] -- Fixed a deadlock in `DROP COLUMN CASCADE` operations when dropping columns referenced by `STORED` computed columns. [#153683][#153683] -- Fixed a bug where `ALTER POLICY` was incorrectly dropping dependency tracking for functions, sequences, or types in policy expressions. [#153787][#153787] -- Fixed a bug where we would not show the pgwire `RowDescription` for `EXECUTE` statements that were themselves prepared using the pgwire `Parse` command. [#153905][#153905] -- Fixed a runtime error that could be hit if a new secondary index had a name collision with a primary index. [#153986][#153986] -- Vector index backfill jobs now correctly report progress in the `SHOW JOBS` output. [#154261][#154261] -- 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. [#154289][#154289] -- **Idle latency** on the **Transaction Details** page in the DB Console is now reported more accurately. Previously, transactions that used prepared statements (e.g., with placeholders) overcounted idle time, while those that included observer statements (common in the SQL CLI) undercounted it. [#154385][#154385] -- Fixed a bug where `RESTORE` of a database with a `SECONDARY REGION` did not apply the lease preferences for that region. [#154659][#154659] -- Fixed a bug where a changefeed could perform - many unnecessary job progress saves during an initial scan. [#154709][#154709] -- Fixed a bug where a changefeed targeting only a subset - of a table's column families could become stuck. [#154915][#154915] - 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. [#154970][#154970] -- 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. [#155077][#155077] -- Disable a feature - (kv.lock_table.unreplicated_lock_reliability.split.enabled) that could - lead to a node crash. [#155366][#155366] -- 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. [#155415][#155415] -- Corrected a potential deadlock during vector index creation. [#155508][#155508] -- Added proper dependency handling when adding a constraint with `NOT VALID` that references a user-defined function (UDF). [#155528][#155528] - 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. [#155633][#155633] - 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. [#155927][#155927] -- Fixed a bug where the job responsible for compacting stats for the SQL activity state could enter an unschedulable state. Fixes: #155165 [#155963][#155963] +- Fixed a bug where the job responsible for compacting stats for the SQL activity state could enter an unschedulable state. [#155963][#155963] - 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. [#156136][#156136] - 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. [#156286][#156286] -- A bug where changefeeds using CDC - queries could sometimes unexpectedly fail after a schema - change with a descriptor retrieval error has been fixed. [#156545][#156545] -- Fixes a bug where `DROP SCHEMA CASCADE` could run into an error with complex references from triggers. [#156564][#156564] +- Fixed a bug where changefeeds using CDC queries could sometimes unexpectedly fail after a schema change with a descriptor retrieval error. [#156545][#156545] +- Fixed a bug where `DROP SCHEMA CASCADE` with complex references from triggers could run into an error. [#156564][#156564] - 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. [#156667][#156667] - 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`. [#156695][#156695] - 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. [#156779][#156779] - Fixed a bug that caused incorrect `gossip.callbacks.pending_duration` metric values to be recorded. [#156947][#156947] -- 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. [#156968][#156968] +- 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. This bug was present since v25.4.0. [#156968][#156968] - Fixed a bug that could cause internal errors for queries using generic query plans with `NULL` placeholder values. [#156979][#156979] - 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. [#157037][#157037]

Performance improvements

-- Queries that use `SHOW TABLES` without using the `estimated_row_count` column no longer need to look up the table statistics. [#59838][#59838] -- Fixed a bug that caused the optimizer to over-estimate the cost of inverted index scans in some cases. Now, plans with inverted index scans should be selected in more cases where they are optimal. [#120079][#120079] -- Index backfills and row-level TTL deletions that encounter transaction contention will now be retried with smaller batch sizes more quickly, which reduces the latency of these jobs under high contention workloads. [#142702][#142702] -- `SHOW TABLES` is now faster, especially in cases where there are many tables, both live and previously dropped. [#143446][#143446] -- Schema changes that require data to be backfilled no longer hold a protected timestamp for the entire duration of the backfill, which means there is less overhead caused by MVCC garbage collection after the backfill completes. [#143451][#143451] -- Prepared statements are now more efficiently cached. [#144021][#144021] -- Prepared statements are now more efficiently cached. [#144021][#144021] -- Triggers now perform the descriptor lookup for `TG_TABLE_SCHEMA` against a cache. This can significantly reduce trigger planning latency in multi-region databases. [#144217][#144217] -- Some internal queries executed by the jobs system are now less likely to perform full table scans of the `system.jobs` table, making them more efficient. This change can be reverted by disabling the `jobs.avoid_full_scans_in_find_running_jobs.enabled` cluster setting. [#144309][#144309] -- The vector search optimizer rule now supports additional projections beyond the distance column, including the implicit projections added for virtual columns. [#144536][#144536] -- TTL jobs now respond to cluster topology changes by restarting and rebalancing across available nodes. [#145214][#145214] -- Some queries with filters of the form `x IS NOT DISTINCT FROM y` now have more optimal query plans. [#146494][#146494] -- The optimizer will no longer apply a fast-path to deletes cascading to `REGIONAL BY ROW` tables. This prevents the cascading delete from accessing more regions than necessary. [#148105][#148105] -- Mutation statements (`UPDATE` and `DELETE`) that perform lookup joins into multi-region tables (perhaps as part of a `CASCADE`) are now more likely to parallelize the lookups across ranges, improving their performance. [#148186][#148186] -- `LIKE` filter expressions of the form `x LIKE '%'` are now normalized to `TRUE` if `x` is non-`NULL` within a `SELECT` expression. [#148763][#148763] -- Filters of the form `x LIKE '%'` are now normalized to `x IS NOT NULL`, enabling performance improvements on both nullable and non-nullable columns. Previously, such filters were normalized directly to `TRUE`, which only applied to non-`NULL` columns. [#149614][#149614] -- Multi-table changefeeds will protect - each lagging user table from garbage collection with its own record. - This will improve performance of multi-table changefeeds including - upcoming db-level changefeeds by allowing more garbage collection. [#149616][#149616] -- Updated the storage engine to reduce write amplification by storing Raft log values in separate blob files. This reduces write bandwidth, especially on stores with many replicas. This in turn can increase throughput and reduce latency. This behavior is active as long as the `storage.value_separation.enabled` cluster setting is enabled. [#149712][#149712] -- Improved the efficiency and throughput of catch-up scans used by Change Data Capture (CDC) and Physical Cluster Replication (PCR) in cases where substantial catch-up work is required. [#150738][#150738] -- Certain types of simple queries on tables with row-level security enabled are now more efficiently executed. [#151337][#151337] -- `LTREE` is now index-accelerated with the `<@` operator. [#152353][#152353] -- `LTREE` is now index-accelerated with the `@>` operator. [#152353][#152353] -- Lookup joins can now be used on tables with virtual columns even if the type of the search argument is not identical to the column type referenced in the virtual column. [#152399][#152399] -- Changefeeds will now - periodically persist their entire span frontiers so that - fewer duplicates will need to be emitted during restarts. - The default persistence interval is 30s, but this can be - configured with the `changefeed.progress.frontier_persistence.interval` - cluster setting. [#153491][#153491] -- The cost of generic query plans is now calculated based on worst-case selectivities for placeholder equalities (e.g., `x = $1`). This reduces the chance of suboptimal generic query plans being chosen when `plan_cache_mode=auto`. [#154899][#154899] -- The optimizer 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`. [#155460][#155460] - -

Build changes

- -- Enable the use of profile-guided optimization in the `cockroach` binary. [#142697][#142697] -- Upgrade to Go 1.24.5 [#150870][#150870] -- Revert Go version back to 1.23.7. - Epic: none [#152023][#152023] +- 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. [#155460][#155460]

Miscellaneous

-- `pg_column_size()` is now regarded as Stable, matching PostgreSQL. As a result, it will no longer be allowed in computed column expressions or partial index predicate expressions. [#141193][#141193] -- When configuring the `sql.ttl.default_delete_rate_limit` cluster setting, a notice is displayed informing the user that the TTL rate limit is per leaseholder per table with a link to the docs. [#142061][#142061] -- Improve S3 credential caching for STS credentials [#142434][#142434] -- Updated CockroachDB builds to use Go 1.23.7. [#142698][#142698] -- This patch adds the new `experimental copy` option to `RESTORE`, which runs online `RESTORE`, but waits to publish the tables until all data is downloaded. [#143674][#143674] -- Backup compactions are not supported on and are blocked - for backups that are not scheduled, use revision history, have an - execution locality, set a custom incremental location, or include a - backup of a tenant. [#143854][#143854] -- Fix rare corruption bug that impacts import and - materialized views. [#144646][#144646] -- SQL queries run on the source cluster by logical data replication (LDR) and physical cluster replication (PCR) will account to internal metrics like `sql.statements.active.internal` instead of the metrics like `sql.statements.active` that are used to monitor application workload. [#145088][#145088] -- Vector indexes created in beta releases have an encoding issue - that may result in failed inserts. These indexes should be dropped and - re-created before being used with later releases. [#145158][#145158] -- Vector indexes created in beta releases have an encoding issue - that may result in failed inserts. These indexes should be dropped and - re-created before being used with later releases. [#145405][#145405] -- The `replicas.cpunanospersecond` metric was added. Notably, when child labels are enabled, it exposes evaluation-related Replica CPU usage by tenant. [#146526][#146526] -- fixes an issue with LDR where the presence of a unique - index may cause spurious DLQ entries if the unique index has a smaller - index id than the primary key index. [#147117][#147117] -- Restore no longer gets stuck in the reverting state after failed cleanup of dropped temporary system tables. [#148098][#148098] -- CockroachDB now raises an error when encountering improper - inline SSL credentials instead of panicking. [#148242][#148242] -- Restore will now re-attempt `AdminSplit` KV requests - instead of immediately failing and pausing the job. [#148484][#148484] -- To improve changefeed performance, the session variable `create_table_with_schema_locked` is enabled by default. This means all new tables are created with the `schema_locked` storage parameter. This setting must be explicitly unset for explicit transactions or for schema changes that do not support automatic disabling (e.g., `ALTER TABLE ... SET LOCALITY`). [#148576][#148576] -- Download phase of fast restore now will retry downloads - before giving up. [#148821][#148821] -- Fixed a memory accounting issue in the client certificate cache that caused multiple allocations to be reported for the same certificate. The cache now accurately tracks memory usage and includes a safeguard to prevent it from negatively affecting SQL operations. [#151041][#151041] -- None [#151110][#151110] -- Fixes a rare bug in restore where an object storage on - restore start could cause restore to report success without creating the - restored tables or databases. [#151148][#151148] -- You can now output transaction traces to the logs in Jaeger-compatible JSON format. This is controlled by the `sql.trace.txn.jaeger_json_output.enabled` cluster setting, which is disabled by default. When enabled, traces triggered by probabilistic sampling or statement latency thresholds will be formatted for easier ingestion by tools that support the Jaeger tracing format. [#151414][#151414] -- You can now exclude internal transactions from probabilistic transaction tracing and latency-based logging by setting the `sql.trace.txn.include_internal.enabled` cluster setting to false. This setting is enabled by default to preserve the current behavior, but disabling it is recommended when debugging customer workloads to reduce noise in trace output. [#151433][#151433] -- Tunes S3 client retry behavior to be more reliable in the - presence of correlated errors. [#151817][#151817] -- Upgrade to Go 1.23.12 [#152207][#152207] -- Increase the default number of times CRDB will retry - failures on Azure. - Epic: CRDB-53946 [#152746][#152746] -- CockroachDB now prevents negative values from appearing in network and disk counters collected from the operating system. These values could previously drop below zero due to hardware changes. Affected counters now reset their baseline values automatically. [#153048][#153048] -- Fixed a bug where the presence of duplicate temporary tables in a backup would cause the restore to fail with an error containing the text `restoring table desc and namespace entries: table already exists`. [#153724][#153724] -- LDR no longer requires the database name to be specified - in the external connection URI when setting up a bidirectional stream. [#155737][#155737] -- Span config reconciliation jobs no longer fail on the - destination after failover from a PCR stream of a system virtual cluster. [#156812][#156812] - +- Logical Data Replication (LDR) no longer requires the database name to be specified in the external connection URI when setting up a bidirectional stream. [#155737][#155737] +- Span config reconciliation jobs no longer fail on the destination after failover from a Physical Cluster Replication (PCR) stream of a system virtual cluster. [#156812][#156812] -[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 -[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 -[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 -[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 -[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 -[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 -[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 -[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 -[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 -[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 -[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 -[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 -[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 -[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 -[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 -[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 -[#152910]: https://github.com/cockroachdb/cockroach/pull/152910 -[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 -[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 -[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 -[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 -[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 -[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 -[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 -[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 -[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 -[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 -[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 -[#144536]: https://github.com/cockroachdb/cockroach/pull/144536 -[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 -[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 -[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 -[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 -[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 -[#152745]: https://github.com/cockroachdb/cockroach/pull/152745 -[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 -[#153054]: https://github.com/cockroachdb/cockroach/pull/153054 -[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 -[#153724]: https://github.com/cockroachdb/cockroach/pull/153724 -[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 +[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 [#155927]: https://github.com/cockroachdb/cockroach/pull/155927 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 -[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 -[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 -[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 -[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 -[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 -[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 -[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 -[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 -[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 -[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 -[#152142]: https://github.com/cockroachdb/cockroach/pull/152142 -[#144638]: https://github.com/cockroachdb/cockroach/pull/144638 -[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 -[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 -[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 -[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 -[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 -[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 -[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 -[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 -[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 -[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 -[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 -[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 -[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 -[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 -[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 -[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 -[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 -[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 -[#144646]: https://github.com/cockroachdb/cockroach/pull/144646 -[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 -[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 -[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 -[#145158]: https://github.com/cockroachdb/cockroach/pull/145158 -[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 -[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 -[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 -[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 -[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 -[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 -[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 -[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 -[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 -[#143499]: https://github.com/cockroachdb/cockroach/pull/143499 -[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 -[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 -[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 -[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 -[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 -[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 -[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 -[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 -[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 -[#144533]: https://github.com/cockroachdb/cockroach/pull/144533 -[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 -[#143400]: https://github.com/cockroachdb/cockroach/pull/143400 -[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 -[#143446]: https://github.com/cockroachdb/cockroach/pull/143446 -[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 -[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 -[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 -[#144004]: https://github.com/cockroachdb/cockroach/pull/144004 -[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 -[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 -[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 -[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 -[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 -[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 -[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 -[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 -[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 -[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 -[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 -[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 -[#152190]: https://github.com/cockroachdb/cockroach/pull/152190 -[#144558]: https://github.com/cockroachdb/cockroach/pull/144558 -[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 -[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 -[#145088]: https://github.com/cockroachdb/cockroach/pull/145088 -[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 -[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 -[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 -[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 -[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 -[#142248]: https://github.com/cockroachdb/cockroach/pull/142248 -[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 -[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 -[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 -[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 -[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 -[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 -[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 -[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 -[#144008]: https://github.com/cockroachdb/cockroach/pull/144008 -[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 -[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 -[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 -[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 -[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 -[#143170]: https://github.com/cockroachdb/cockroach/pull/143170 -[#156947]: https://github.com/cockroachdb/cockroach/pull/156947 -[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 -[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 -[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 -[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 -[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 -[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 -[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 -[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 -[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 -[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 -[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 -[#144517]: https://github.com/cockroachdb/cockroach/pull/144517 -[#144681]: https://github.com/cockroachdb/cockroach/pull/144681 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#152746]: https://github.com/cockroachdb/cockroach/pull/152746 -[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 -[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 -[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 -[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 -[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 -[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 -[#144006]: https://github.com/cockroachdb/cockroach/pull/144006 -[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 -[#146270]: https://github.com/cockroachdb/cockroach/pull/146270 -[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 -[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 [#157037]: https://github.com/cockroachdb/cockroach/pull/157037 -[#144658]: https://github.com/cockroachdb/cockroach/pull/144658 -[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 -[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 -[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 -[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 -[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 -[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 -[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 -[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 -[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 -[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 -[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 -[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 -[#143854]: https://github.com/cockroachdb/cockroach/pull/143854 -[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 -[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 -[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 -[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 -[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 -[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 -[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 -[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 -[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 -[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 -[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 -[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 -[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 -[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 -[#149616]: https://github.com/cockroachdb/cockroach/pull/149616 -[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 -[#144712]: https://github.com/cockroachdb/cockroach/pull/144712 -[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 -[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 -[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 -[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 -[#145002]: https://github.com/cockroachdb/cockroach/pull/145002 -[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 -[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 -[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 -[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 -[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 -[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 -[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 -[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 -[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 -[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 -[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 -[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 -[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 -[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 -[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 -[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 -[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 -[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 -[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 -[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 -[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 -[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 -[#143667]: https://github.com/cockroachdb/cockroach/pull/143667 -[#144702]: https://github.com/cockroachdb/cockroach/pull/144702 -[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 -[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 -[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 -[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 -[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 -[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 -[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 -[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 -[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 -[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 -[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 -[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 -[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 -[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 [#155460]: https://github.com/cockroachdb/cockroach/pull/155460 -[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 -[#145405]: https://github.com/cockroachdb/cockroach/pull/145405 -[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 -[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 -[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 -[#145391]: https://github.com/cockroachdb/cockroach/pull/145391 -[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 -[#144643]: https://github.com/cockroachdb/cockroach/pull/144643 -[#151067]: https://github.com/cockroachdb/cockroach/pull/151067 -[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 -[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 -[#151691]: https://github.com/cockroachdb/cockroach/pull/151691 -[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 -[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 -[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 -[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 -[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 -[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 -[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 -[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 -[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 -[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 -[#145236]: https://github.com/cockroachdb/cockroach/pull/145236 -[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 -[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 -[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 -[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 -[#147927]: https://github.com/cockroachdb/cockroach/pull/147927 -[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 -[#142927]: https://github.com/cockroachdb/cockroach/pull/142927 -[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 -[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 -[#142408]: https://github.com/cockroachdb/cockroach/pull/142408 -[#142742]: https://github.com/cockroachdb/cockroach/pull/142742 -[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 -[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 -[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 -[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 -[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 -[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 +[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 [#156667]: https://github.com/cockroachdb/cockroach/pull/156667 -[#144245]: https://github.com/cockroachdb/cockroach/pull/144245 -[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 -[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 -[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 -[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 -[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 -[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 -[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 -[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 -[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 -[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 -[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 -[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 -[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 -[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 -[#143097]: https://github.com/cockroachdb/cockroach/pull/143097 -[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 -[#144415]: https://github.com/cockroachdb/cockroach/pull/144415 -[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 -[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 -[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 -[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 -[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 -[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 -[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 -[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 -[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 -[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 -[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 -[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 -[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 -[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 -[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 -[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 -[#142692]: https://github.com/cockroachdb/cockroach/pull/142692 -[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 -[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 -[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 -[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 -[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 -[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 -[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 -[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 -[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 -[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 -[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 -[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 -[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 -[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 -[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 -[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 -[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 -[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 -[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 -[#144556]: https://github.com/cockroachdb/cockroach/pull/144556 -[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 -[#142478]: https://github.com/cockroachdb/cockroach/pull/142478 -[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 -[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 -[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 -[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 -[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 -[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 +[#156779]: https://github.com/cockroachdb/cockroach/pull/156779 [#155737]: https://github.com/cockroachdb/cockroach/pull/155737 -[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 -[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 -[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 -[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 -[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 -[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 -[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 +[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 +[#156459]: https://github.com/cockroachdb/cockroach/pull/156459 [#156136]: https://github.com/cockroachdb/cockroach/pull/156136 -[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 -[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 -[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 -[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 -[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 -[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 -[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 -[#144309]: https://github.com/cockroachdb/cockroach/pull/144309 -[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 -[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 -[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 -[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 -[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 -[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 -[#145471]: https://github.com/cockroachdb/cockroach/pull/145471 -[#144385]: https://github.com/cockroachdb/cockroach/pull/144385 -[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 -[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 -[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 -[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 -[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 -[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 -[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 -[#147836]: https://github.com/cockroachdb/cockroach/pull/147836 -[#142749]: https://github.com/cockroachdb/cockroach/pull/142749 -[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 -[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 -[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 -[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 -[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 -[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 -[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 -[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 -[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 -[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 -[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 -[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 -[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 -[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 -[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 -[#145091]: https://github.com/cockroachdb/cockroach/pull/145091 -[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 -[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 -[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 -[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 -[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 -[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 -[#143510]: https://github.com/cockroachdb/cockroach/pull/143510 -[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 -[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 -[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 -[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 -[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 -[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 -[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 -[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 -[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 -[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 -[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 -[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 -[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 -[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 -[#142899]: https://github.com/cockroachdb/cockroach/pull/142899 -[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 -[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 -[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 -[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 -[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 -[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 -[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 -[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 -[#142924]: https://github.com/cockroachdb/cockroach/pull/142924 -[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 -[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 -[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 -[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 -[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 -[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 -[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 -[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 -[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 -[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 -[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 -[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 -[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 -[#144266]: https://github.com/cockroachdb/cockroach/pull/144266 -[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 -[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 +[#155963]: https://github.com/cockroachdb/cockroach/pull/155963 +[#156695]: https://github.com/cockroachdb/cockroach/pull/156695 +[#156968]: https://github.com/cockroachdb/cockroach/pull/156968 +[#156979]: https://github.com/cockroachdb/cockroach/pull/156979 +[#156508]: https://github.com/cockroachdb/cockroach/pull/156508 +[#154970]: https://github.com/cockroachdb/cockroach/pull/154970 +[#155633]: https://github.com/cockroachdb/cockroach/pull/155633 +[#156286]: https://github.com/cockroachdb/cockroach/pull/156286 +[#156545]: https://github.com/cockroachdb/cockroach/pull/156545 +[#156947]: https://github.com/cockroachdb/cockroach/pull/156947