diff --git a/src/current/_data/menus.yml b/src/current/_data/menus.yml index 62e78c29a37..f4b7d84d249 100644 --- a/src/current/_data/menus.yml +++ b/src/current/_data/menus.yml @@ -23,7 +23,6 @@ # - name: Global Data # url: https://www.cockroachlabs.com/product/geo-partitioning/ - # solutions: # - identifier: solutions # name: Solutions @@ -98,11 +97,7 @@ # url: https://www.cockroachlabs.com/big-ideas-podcast/ # weight: 200 - - # resources_support: -# - name: GitHub -# url: https://github.com/cockroachdb/cockroach # - name: Slack # url: https://www.cockroachlabs.com/join-community/ # - name: Support Portal @@ -131,7 +126,6 @@ # url: https://www.cockroachlabs.com/docs/stable/architecture/overview.html # weight: 400 - # company: # - identifier: company # name: Company @@ -230,4 +224,4 @@ # pre: "" # name: Verticals # url: https://www.cockroachlabs.com/solutions/Verticals/ -# weight: -100 \ No newline at end of file +# weight: -100 diff --git a/src/current/_data/v24.2/metrics/child-metrics.yml b/src/current/_data/v24.2/metrics/child-metrics.yml index afe92da0139..39c011de33e 100644 --- a/src/current/_data/v24.2/metrics/child-metrics.yml +++ b/src/current/_data/v24.2/metrics/child-metrics.yml @@ -1,8 +1,6 @@ # child-metrics.yml is a manually curated file of metrics that are included in the Child Metrics. -# The metrics are in the order of appearance in the comment: -# https://github.com/cockroachdb/cockroach/issues/124343#issuecomment-2117886012 # The tenant.consumption.* metrics are not included because they only apply to serverless. -# +# # The corresponding metrics-list.csv file was generated using the v24.1.0 binary with the following command: # cockroach gen metric-list --format=csv > metrics-list.csv # Once generated, the metrics-list.csv was manually modified to change the case of the headers to lowercase to work with liquid comparison code. @@ -249,4 +247,3 @@ - child_metric_id: logical_replication.scanning_ranges_by_label feature: ldr - diff --git a/src/current/_data/v24.3/metrics/child-metrics.yml b/src/current/_data/v24.3/metrics/child-metrics.yml index afe92da0139..39c011de33e 100644 --- a/src/current/_data/v24.3/metrics/child-metrics.yml +++ b/src/current/_data/v24.3/metrics/child-metrics.yml @@ -1,8 +1,6 @@ # child-metrics.yml is a manually curated file of metrics that are included in the Child Metrics. -# The metrics are in the order of appearance in the comment: -# https://github.com/cockroachdb/cockroach/issues/124343#issuecomment-2117886012 # The tenant.consumption.* metrics are not included because they only apply to serverless. -# +# # The corresponding metrics-list.csv file was generated using the v24.1.0 binary with the following command: # cockroach gen metric-list --format=csv > metrics-list.csv # Once generated, the metrics-list.csv was manually modified to change the case of the headers to lowercase to work with liquid comparison code. @@ -249,4 +247,3 @@ - child_metric_id: logical_replication.scanning_ranges_by_label feature: ldr - diff --git a/src/current/_data/v25.1/metrics/multi-dimensional-metrics.yml b/src/current/_data/v25.1/metrics/multi-dimensional-metrics.yml index d1b55ff5b1a..5342717e2db 100644 --- a/src/current/_data/v25.1/metrics/multi-dimensional-metrics.yml +++ b/src/current/_data/v25.1/metrics/multi-dimensional-metrics.yml @@ -1,8 +1,6 @@ # multi-dimensional-metrics.yml is a manually curated file of metrics that are included in the Multi-Dimensional Metrics page. -# The metrics are in the order of appearance in the comment: -# https://github.com/cockroachdb/cockroach/issues/124343#issuecomment-2117886012 # The tenant.consumption.* metrics are not included because they only apply to serverless. -# +# # The corresponding metrics-list.csv file was generated using the cockroach binary with the following command: # cockroach gen metric-list --format=csv > metrics-list.csv # Once generated, the metrics-list.csv was manually modified to change the case of the headers to lowercase to work with liquid comparison code. diff --git a/src/current/_data/v25.2/metrics/multi-dimensional-metrics.yml b/src/current/_data/v25.2/metrics/multi-dimensional-metrics.yml index a9d82024013..db7b0c471c5 100644 --- a/src/current/_data/v25.2/metrics/multi-dimensional-metrics.yml +++ b/src/current/_data/v25.2/metrics/multi-dimensional-metrics.yml @@ -1,8 +1,6 @@ # multi-dimensional-metrics.yml is a manually curated file of metrics that are included in the Multi-Dimensional Metrics page. -# The metrics are in the order of appearance in the comment: -# https://github.com/cockroachdb/cockroach/issues/124343#issuecomment-2117886012 # The tenant.consumption.* metrics are not included because they only apply to serverless. -# +# # The corresponding metrics-list.csv file was generated using the cockroach binary with the following command: # cockroach gen metric-list --format=csv > metrics-list.csv # Once generated, the metrics-list.csv was manually modified to change the case of the headers to lowercase to work with liquid comparison code. diff --git a/src/current/_data/v25.3/metrics/multi-dimensional-metrics.yml b/src/current/_data/v25.3/metrics/multi-dimensional-metrics.yml index a9d82024013..db7b0c471c5 100644 --- a/src/current/_data/v25.3/metrics/multi-dimensional-metrics.yml +++ b/src/current/_data/v25.3/metrics/multi-dimensional-metrics.yml @@ -1,8 +1,6 @@ # multi-dimensional-metrics.yml is a manually curated file of metrics that are included in the Multi-Dimensional Metrics page. -# The metrics are in the order of appearance in the comment: -# https://github.com/cockroachdb/cockroach/issues/124343#issuecomment-2117886012 # The tenant.consumption.* metrics are not included because they only apply to serverless. -# +# # The corresponding metrics-list.csv file was generated using the cockroach binary with the following command: # cockroach gen metric-list --format=csv > metrics-list.csv # Once generated, the metrics-list.csv was manually modified to change the case of the headers to lowercase to work with liquid comparison code. diff --git a/src/current/_data/v25.4/metrics/multi-dimensional-metrics.yml b/src/current/_data/v25.4/metrics/multi-dimensional-metrics.yml index a9d82024013..db7b0c471c5 100644 --- a/src/current/_data/v25.4/metrics/multi-dimensional-metrics.yml +++ b/src/current/_data/v25.4/metrics/multi-dimensional-metrics.yml @@ -1,8 +1,6 @@ # multi-dimensional-metrics.yml is a manually curated file of metrics that are included in the Multi-Dimensional Metrics page. -# The metrics are in the order of appearance in the comment: -# https://github.com/cockroachdb/cockroach/issues/124343#issuecomment-2117886012 # The tenant.consumption.* metrics are not included because they only apply to serverless. -# +# # The corresponding metrics-list.csv file was generated using the cockroach binary with the following command: # cockroach gen metric-list --format=csv > metrics-list.csv # Once generated, the metrics-list.csv was manually modified to change the case of the headers to lowercase to work with liquid comparison code. diff --git a/src/current/_data/v26.1/metrics/multi-dimensional-metrics.yml b/src/current/_data/v26.1/metrics/multi-dimensional-metrics.yml index a9d82024013..db7b0c471c5 100644 --- a/src/current/_data/v26.1/metrics/multi-dimensional-metrics.yml +++ b/src/current/_data/v26.1/metrics/multi-dimensional-metrics.yml @@ -1,8 +1,6 @@ # multi-dimensional-metrics.yml is a manually curated file of metrics that are included in the Multi-Dimensional Metrics page. -# The metrics are in the order of appearance in the comment: -# https://github.com/cockroachdb/cockroach/issues/124343#issuecomment-2117886012 # The tenant.consumption.* metrics are not included because they only apply to serverless. -# +# # The corresponding metrics-list.csv file was generated using the cockroach binary with the following command: # cockroach gen metric-list --format=csv > metrics-list.csv # Once generated, the metrics-list.csv was manually modified to change the case of the headers to lowercase to work with liquid comparison code. diff --git a/src/current/_data/v26.2/metrics/multi-dimensional-metrics.yml b/src/current/_data/v26.2/metrics/multi-dimensional-metrics.yml index 4abace3173c..a3252626388 100644 --- a/src/current/_data/v26.2/metrics/multi-dimensional-metrics.yml +++ b/src/current/_data/v26.2/metrics/multi-dimensional-metrics.yml @@ -1,8 +1,6 @@ # multi-dimensional-metrics.yml is a manually curated file of metrics that are included in the Multi-Dimensional Metrics page. -# The metrics are in the order of appearance in the comment: -# https://github.com/cockroachdb/cockroach/issues/124343#issuecomment-2117886012 # The tenant.consumption.* metrics are not included because they only apply to serverless. -# +# # The corresponding metrics-list.csv file was generated using the cockroach binary with the following command: # cockroach gen metric-list --format=csv > metrics-list.csv # Once generated, the metrics-list.csv was manually modified to change the case of the headers to lowercase to work with liquid comparison code. diff --git a/src/current/_includes/releases/downloads-archive-testing-releases.md b/src/current/_includes/releases/downloads-archive-testing-releases.md index a0a0e2bf98d..084256ec528 100644 --- a/src/current/_includes/releases/downloads-archive-testing-releases.md +++ b/src/current/_includes/releases/downloads-archive-testing-releases.md @@ -209,7 +209,6 @@ Docker images for CockroachDB are published on [Docker Hub](https://hub.docker.c
-

The source code for CockroachDB is hosted in the cockroachdb/cockroach repository on Github.

@@ -227,7 +226,6 @@ Docker images for CockroachDB are published on [Docker Hub](https://hub.docker.c
{{ r.release_date }} {% if r.source == true %} - View on Github {% else %} N/A {% endif %} diff --git a/src/current/_includes/releases/new-release-downloads-docker-image.md b/src/current/_includes/releases/new-release-downloads-docker-image.md index 91246fef1fa..4e3e103531b 100644 --- a/src/current/_includes/releases/new-release-downloads-docker-image.md +++ b/src/current/_includes/releases/new-release-downloads-docker-image.md @@ -96,8 +96,5 @@ To download the Docker image (Intel-only): docker pull {{ release.docker.docker_image }}:{{ release.release_name }} ~~~ -

Source tag

- -To view or download the source code for CockroachDB {{ release.release_name }} on Github, visit {{ release.release_name }} source tag. {% endif %} diff --git a/src/current/_includes/releases/release-downloads-docker-image.md b/src/current/_includes/releases/release-downloads-docker-image.md index 76fbc9a70af..f04b97d9c9b 100644 --- a/src/current/_includes/releases/release-downloads-docker-image.md +++ b/src/current/_includes/releases/release-downloads-docker-image.md @@ -41,7 +41,6 @@ Experimental downloads are not qualified for production use and not eligible for - {% if release.has_sql_only == true %} @@ -63,7 +62,6 @@ Experimental downloads are not qualified for production use and not eligible for {% endif %} - {% endif %} diff --git a/src/current/_includes/releases/v23.1/v23.1.0-alpha.1.md b/src/current/_includes/releases/v23.1/v23.1.0-alpha.1.md index a393b032646..57a97804068 100644 --- a/src/current/_includes/releases/v23.1/v23.1.0-alpha.1.md +++ b/src/current/_includes/releases/v23.1/v23.1.0-alpha.1.md @@ -6,129 +6,129 @@ Release Date: December 19, 2022

Backward-incompatible changes

-- Replaced the `cdc_prev()` [function]({% link v23.1/functions-and-operators.md %}) in favor of a `cdc_prev` tuple. This is an incompatible change that may break [changefeeds]({% link v23.1/change-data-capture-overview.md %}) that use the previous `cdc_prev()` function. [#85177][#85177] -- [`SHOW RANGES FOR TABLE`]({% link v23.1/show-ranges.md %}) now includes rows for all indexes that support the table. Prior to this change, `SHOW RANGES FOR TABLE foo` was an alias for `SHOW RANGES FOR INDEX foo@primary`. This was causing confusion, as it would miss data for secondary indexes. It is still possible to filter to just the primary index using `SHOW RANGES FOR INDEX foo@primary`. The statement output now also includes the index name. [#93545][#93545] +- Replaced the `cdc_prev()` [function]({% link v23.1/functions-and-operators.md %}) in favor of a `cdc_prev` tuple. This is an incompatible change that may break [changefeeds]({% link v23.1/change-data-capture-overview.md %}) that use the previous `cdc_prev()` function. +- [`SHOW RANGES FOR TABLE`]({% link v23.1/show-ranges.md %}) now includes rows for all indexes that support the table. Prior to this change, `SHOW RANGES FOR TABLE foo` was an alias for `SHOW RANGES FOR INDEX foo@primary`. This was causing confusion, as it would miss data for secondary indexes. It is still possible to filter to just the primary index using `SHOW RANGES FOR INDEX foo@primary`. The statement output now also includes the index name.

Security updates

-- It is now possible to create [TLS client certificates](https://www.cockroachlabs.com/docs/v23.1/security-reference/transport-layer-security) for identity principals that are not a valid SQL username using [`cockroach cert create-client`]({% link v23.1/cockroach-cert.md %}) and the new flag `--disable-username-validation`. This is meant to be used in combination with the [cluster setting]({% link v23.1/cluster-settings.md %}) `server.identity_map.configuration` and the `map` option in HBA rules (`server.host_based_authentication.configuration`). To test this feature, use `cockroach sql`. Cockroach Labs recommends passing the username separately from the connection URL. [#90439][#90439] -- There is a new SQL [session variable]({% link v23.1/set-vars.md %}) `system_identity` defined to contain the identity principal presented by the SQL clients during the initial connection. This may be different from `session_user` when the identity was mapped, either using GSSAPI and `include_realm=0`, or when using an identity map. [#90439][#90439] +- It is now possible to create [TLS client certificates](https://www.cockroachlabs.com/docs/v23.1/security-reference/transport-layer-security) for identity principals that are not a valid SQL username using [`cockroach cert create-client`]({% link v23.1/cockroach-cert.md %}) and the new flag `--disable-username-validation`. This is meant to be used in combination with the [cluster setting]({% link v23.1/cluster-settings.md %}) `server.identity_map.configuration` and the `map` option in HBA rules (`server.host_based_authentication.configuration`). To test this feature, use `cockroach sql`. Cockroach Labs recommends passing the username separately from the connection URL. +- There is a new SQL [session variable]({% link v23.1/set-vars.md %}) `system_identity` defined to contain the identity principal presented by the SQL clients during the initial connection. This may be different from `session_user` when the identity was mapped, either using GSSAPI and `include_realm=0`, or when using an identity map.

General changes

-- Upgraded gRPC to v1.49.0 [#88562][#88562] -- The connection timeout for cluster-internal connections between nodes has been reduced to 5s to potentially reduce the impact of network issues. Previously, CockroachDB employed a 20s connection timeout. [#88625][#88625] -- CockroachDB no longer shares a TCP connection for the KV and Gossip subsystems. Each subsystem now uses their own connection, so the total number of outgoing and incoming TCP connections at each node in the cluster will increase by 30 to 50 percent. [#88625][#88625] -- Bulk operations now log the (sanitized) destinations they are connecting to. For example: `backup planning to connect to destination gs://test/backupadhoc?AUTH=specified&CREDENTIALS=redacted`. [#89531][#89531] +- Upgraded gRPC to v1.49.0 +- The connection timeout for cluster-internal connections between nodes has been reduced to 5s to potentially reduce the impact of network issues. Previously, CockroachDB employed a 20s connection timeout. +- CockroachDB no longer shares a TCP connection for the KV and Gossip subsystems. Each subsystem now uses their own connection, so the total number of outgoing and incoming TCP connections at each node in the cluster will increase by 30 to 50 percent. +- Bulk operations now log the (sanitized) destinations they are connecting to. For example: `backup planning to connect to destination gs://test/backupadhoc?AUTH=specified&CREDENTIALS=redacted`.

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

-- [`SHOW CHANGEFEED JOBS`]({% link v23.1/show-jobs.md %}#show-changefeed-jobs) no longer reveals Confluent schema registry user information, including a user's secret key. This information is now redacted, meaning it will not be stored in CockroachDB internal tables at all. [#86603][#86603] -- [Changefeeds]({% link v23.1/change-data-capture-overview.md %}) JSON encoder performance is improved by 50%. [#88064][#88064] -- Changefeeds, using cloud storage sink, now have better throughput. [#88395][#88395] -- Added the [cluster setting]({% link v23.1/cluster-settings.md %}) `changefeed.event_consumer_workers` which allows changefeeds to process events concurrently. [#87994][#87994] -- Changefeed) exports are up to 25% faster due to uniform work assignment. [#88672][#88672] -- Changefeeds can emit files compressed with the ZSTD algorithm, which provides good compression and is much faster than GZIP. In addition, a new, faster implementation of GZIP is used by default. [#88635][#88635] -- When a changefeed is run with the option `virtual_columns = "null"`, the virtual column will be ordered last in each row. [#89329][#89329] -- For Kafka [sinks]({% link v23.1/changefeed-sinks.md %}), you can now add the optional JSON field `"Compression"` to the `kafka_sink_config` option. This field can be set to `"none"` (default), `"GZIP"`, `"SNAPPY"`, `"LZ4"`, or `"ZSTD"`. Setting this field will result in the specified compression protocol to be used when emitting events. [#90270][#90270] -- Fixed a bug that could cause changefeeds to fail during a rolling restart. [#89913][#89913] -- Changefeeds will now treat all errors, unless otherwise indicated, as retryable errors. [#90810][#90810] -- CockroachDB now supports passing in the optional external ID when [assuming a role]({% link v23.1/cloud-storage-authentication.md %}). This is done by extending the values of the comma-separated string value of the `ASSUME_ROLE` parameter to the format `;external_id=`. Users can still use the previous format of just `` to specify a role without any external ID. When using role chaining, each role in the chain can be associated with a different external ID. [#91040][#91040] -- [JWT authentication]({% link v23.1/sso-sql.md %}) [cluster settings]({% link v23.1/cluster-settings.md %}) can now be modified from within tenants to better support serverless use cases. [#92406][#92406] -- [CDC queries]({% link v23.1/cdc-queries.md %}) are now planned and evaluated using the SQL optimizer and distSQL execution. The state of the previous row is now exposed as the `cdc_prev` tuple. [#85177][#85177] -- Changefeeds no longer require the `COCKROACH_EXPERIMENTAL_ENABLE_PER_CHANGEFEED_METRICS` environment variable to be set in order to use the `metrics_label` option. [#93423][#93423] -- Changefeeds can now be scheduled at intervals specified in crontab notation. [#92232][#92232] +- [`SHOW CHANGEFEED JOBS`]({% link v23.1/show-jobs.md %}#show-changefeed-jobs) no longer reveals Confluent schema registry user information, including a user's secret key. This information is now redacted, meaning it will not be stored in CockroachDB internal tables at all. +- [Changefeeds]({% link v23.1/change-data-capture-overview.md %}) JSON encoder performance is improved by 50%. +- Changefeeds, using cloud storage sink, now have better throughput. +- Added the [cluster setting]({% link v23.1/cluster-settings.md %}) `changefeed.event_consumer_workers` which allows changefeeds to process events concurrently. +- Changefeed) exports are up to 25% faster due to uniform work assignment. +- Changefeeds can emit files compressed with the ZSTD algorithm, which provides good compression and is much faster than GZIP. In addition, a new, faster implementation of GZIP is used by default. +- When a changefeed is run with the option `virtual_columns = "null"`, the virtual column will be ordered last in each row. +- For Kafka [sinks]({% link v23.1/changefeed-sinks.md %}), you can now add the optional JSON field `"Compression"` to the `kafka_sink_config` option. This field can be set to `"none"` (default), `"GZIP"`, `"SNAPPY"`, `"LZ4"`, or `"ZSTD"`. Setting this field will result in the specified compression protocol to be used when emitting events. +- Fixed a bug that could cause changefeeds to fail during a rolling restart. +- Changefeeds will now treat all errors, unless otherwise indicated, as retryable errors. +- CockroachDB now supports passing in the optional external ID when [assuming a role]({% link v23.1/cloud-storage-authentication.md %}). This is done by extending the values of the comma-separated string value of the `ASSUME_ROLE` parameter to the format `;external_id=`. Users can still use the previous format of just `` to specify a role without any external ID. When using role chaining, each role in the chain can be associated with a different external ID. +- [JWT authentication]({% link v23.1/sso-sql.md %}) [cluster settings]({% link v23.1/cluster-settings.md %}) can now be modified from within tenants to better support serverless use cases. +- [CDC queries]({% link v23.1/cdc-queries.md %}) are now planned and evaluated using the SQL optimizer and distSQL execution. The state of the previous row is now exposed as the `cdc_prev` tuple. +- Changefeeds no longer require the `COCKROACH_EXPERIMENTAL_ENABLE_PER_CHANGEFEED_METRICS` environment variable to be set in order to use the `metrics_label` option. +- Changefeeds can now be scheduled at intervals specified in crontab notation.

SQL language changes

-- Added the `crdb_internal.to_json_as_changefeed_with_flags` [function]({% link v23.1/functions-and-operators.md %}) to help debug JSON [changefeeds]({% link v23.1/change-data-capture-overview.md %}). [#84509][#84509] -- Added the `regions` column to the [`SHOW BACKUP`]({% link v23.1/show-backup.md %}) command which will output a string of `ALTER DATABASE` commands if the database is a multi-region database and `NULL` for everything else. Previously, the user did not have an easy way to see if a backed up database is multi-region. [#88136][#88136] -- Types with length modifiers can now be used to prefix literals. [#82028][#82028] -- A new column `plan_gist` was added to `crdb_internal.{node,cluster}_queries` representing the compressed logical plan. [#88770][#88770] -- You can generate easy-to-read [`CREATE INDEX`]({% link v23.1/create-index.md %}) statements for a table's (secondary) indexes using the `SHOW CREATE INDEXES FROM ` and `SHOW CREATE SECONDARY INDEXES FROM ` statements. [#88861][#88861] -- `enum_first`, `enum_last`, and `enum_range` may now take `NULL` arguments as long as their type can be inferred from the expression. [#89124][#89124] -- [Declarative schema changer]({% link v23.1/online-schema-changes.md %}) support for `ALTER PRIMARY KEY` statements now extends to tables which have secondary indexes. [#86176][#86176] -- The `backup.restore_span.target_size` cluster setting now defaults to `384 MiB `. This should reduce the number of ranges created during [restore]({% link v23.1/restore.md %}) and thereby reduce the merging of ranges that needs to occur after the restore. [#89333][#89333] -- The `transaction_timeout` [session variable]({% link v23.1/set-vars.md %}) was added. `transaction_timeout` aborts an explicit transaction when it runs longer than the configured duration. When the timer times out, the current statement is cancelled and the transaction enters an aborted state. This timeout does not have any effect when no statement is being executed, so it should be used with `idle_in_transaction_timeout` for the best results. [#89033][#89033] -- The `crdb_internal.check_consistency` [function]({% link v23.1/functions-and-operators.md %}) now does not include the diff between inconsistent replicas, should they occur. If an inconsistency occurs, the storage engine checkpoints should be inspected. This change is made because the maximum range size limit has been increased from 64 MiB to 512 MiB, so inlining diffs in consistency checks does not scale. [#89502][#89502] -- CockroachDB now shows a hash-sharded check constraint in [`SHOW CREATE TABLE`]({% link v23.1/show-create.md %}) if it is set to `NOT VALID`. [#89517][#89517] -- Added the `SHOW FUNCTIONS` and `SHOW FUNCTIONS FROM ` statements, which list [user-defined functions]({% link v23.1/user-defined-functions.md %}). [#89557][#89557] -- The default value of `sql.metrics.statement_details.plan_collection.enabled` is now `false`. [#89847][#89847] -- CockroachDB now supports executing statements of the form `DELETE FROM ... USING`. [#88974][#88974] -- The [cluster setting]({% link v23.1/cluster-settings.md %}) `sql.ttl.default_range_concurrency` and table storage parameter `ttl_range_concurrency` are no longer configurable. [#89392][#89392] -- CockroachDB drops the associated scheduled incremental backup when [`DROP SCHEDULE`]({% link v23.1/drop-schedules.md %}) or `DROP SCHEDULES` is called. Previously, whenever a user dropped a [scheduled full backup]({% link v23.1/create-schedule-for-backup.md %}), the corresponding scheduled incremental backup would not be dropped. [#89768][#89768] -- Added the `sql.auth.change_own_password.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}). It defaults to `false`. When set to `true`, any user is allowed to change their own password to a non-null value. Changing other role options still has the same privilege requirements as before (either `CREATEROLE` or `CREATELOGIN`, depending on the option). [#90485][#90485] -- The `sql.distsql.max_running_flows` [cluster setting]({% link v23.1/cluster-settings.md %}) has been removed. [#84888][#84888] -- The query field in the `crdb_internal.node_queries`, `crdb_internal.cluster_queries`, and `SHOW QUERIES` commands now includes the original comments in the queries. [#86968][#86968] -- Added a new `descriptor_validation` [session variable]({% link v23.1/set-vars.md %}) which can be set to `read_only` or `off` to disable descriptor validation, which may be useful when mitigating or recovering from catalog corruption. [#90488][#90488] -- CockroachDB now supports using [`DROP CONSTRAINT, ADD CONSTRAINT`]({% link v23.1/alter-table.md %}#drop-constraint) to add a new primary key without moving the existing primary key to a secondary index if the primary key name is a reserved SQL keyword. Previously, a `constraint already exists` error was returned. [#90865][#90865] -- Added the `contention_events` column to the `cluster_execution_insights` table to see which transaction is blocking the specific statement. [#90660][#90660] -- `crdb_internal.scan` and `crdb_internal.list_sql_keys_in_range` return the timestamp for the time at which the value for a key was written, in addition to the raw key and value. [#90956][#90956] -- Previously, the [`AS OF SYSTEM TIME`]({% link v23.1/as-of-system-time.md %}) value was set at the start of the TTL job (with a TTL cutoff - 30s), but this results in an error for TTL jobs that run longer than `gc.ttlseconds`: `error selecting rows to delete: ttl select defaultdb.public.events: batch timestamp 1666883527.780656000,0 must be after replica GC threshold 1666883574.542825089,0`. CockroachDB now makes the `AS OF SYSTEM TIME` value relative to when each `SELECT` query is run (query time - 30s) to prevent this error from happening, but each `SELECT` query will run against a different table state. This should be ok because if records are missed during one job invocation they should still be picked up the next. [#90981][#90981] -- The `system.sql_instances` table now includes pre-allocated ID entries, where all the fields except `id` will be `NULL`. [#90427][#90427] -- The `to_char(timestamp, string)` [function]({% link v23.1/functions-and-operators.md %}) has been added. [#91382][#91382] -- The `to_char(interval, string)` built-in [function]({% link v23.1/functions-and-operators.md %}) has been added. [#91382][#91382] -- The `system.table_statistics` table now contains a column called `partialPredicate` to store a predicate for a partial statistic collection. [#91248][#91248] -- A new `NumericStat`, `idleLat`, was introduced to the statistics column of `crdb_internal.statement_statistics`. This reports the time spent waiting for the client to send the statement while holding a transaction open. Developers may use this stat to identify opportunities for restructuring their apps to reduce contention. [#91098][#91098] -- The set of supported compression algorithms in compress/decompress built-in [functions]({% link v23.1/functions-and-operators.md %}) is expanded to include `lz4`, `snappy`, and `zstd`. [#91162][#91162] -- A new column `database` was added to `crdb_internal.{node,cluster}_queries` and list sessions [endpoint]({% link v23.1/cluster-api.md %}). [#91629][#91629] -- Fixed a bug in the legacy schema changer where comments were not dropped together with the database. [#91689][#91689] -- The `round(decimal`) built-in [function]({% link v23.1/functions-and-operators.md %}) no longer returns negative 0 for any input. [#86106][#86106] -- Added an estimate for the number of request units consumed by a query to the output of [`EXPLAIN ANALYZE`]({% link v23.1/explain-analyze.md %}) for tenant sessions. [#89256][#89256] -- Enabled forward indexes on arrays. [#91762][#91762] -- Users can now manually create partial single-column statistics at the extreme values on columns that are prefixes of their index. The output of [`SHOW STATISTICS`]({% link v23.1/show-statistics.md %}) now includes a column indicating the partial predicate for a partial statistic, or `NULL` for a full statistic. [#91228][#91228] -- A new SQL statement `SHOW COMMIT TIMESTAMP` has been added. This statement can be used to retrieve the commit timestamp of the current explicit transaction, current multi-statement implicit transaction, or previous transaction. The statement may be used in a variety of settings to maximize its utility in the face of connection pooling. When used as a part of an explicit transaction, the statement implicitly commits the transaction internally before being able to return a causality token. [#80848][#80848] -- Added support for the `pg_blocking_pids` built-in [function]({% link v23.1/functions-and-operators.md %}). It is hardcoded to return an empty array because CockroachDB has no equivalent concept of PIDs as in PostgreSQL. [#92253][#92253] -- Added a list of indexes used by the query on the statistics column on the `system.statement_statistics` and `crdb_internal.statement_statistics` tables. The format is `tableID@indexID`. [#92351][#92351] -- Added a list of used indexes (with the format `tableID@indexID`) to the sampled query telemetry log. [#92464][#92464] -- A new `NumericStat`, `idleLat`, was introduced to the statistics column of `crdb_internal.transaction_statistics`. It reports the time spent waiting for the client to send statements while holding a transaction open. [#92695][#92695] -- Added an in-memory-only evaluation of `tsvector` and `tsquery` datatypes and the `@@` matches operator. [#90842][#90842] -- Implemented the [`ALTER TABLE ... ADD CHECK`]({% link v23.1/alter-table.md %}) statement in the [declarative schema changer]({% link v23.1/online-schema-changes.md %}). [#91153][#91153] -- `to_char` now has caching for parse formats, marking a speedup when running `to_char` with the same format between sessions. [#91564][#91564] -- Casts from index name to `REGCLASS` are now supported. Previously, only table names could be cast to `REGCLASS`. [#90649][#90649] -- Added user-defined composite column types. [#90491][#90491] -- SQL queries running on remote nodes now show up in CPU profiles with `distsql.*` labels. Currently this includes `appname`, `gateway`, `txn`, and stmt. [#92775][#92775] -- CockroachDB now permits non-indexed storage of `tsvector` and `tsquery` datatypes [#92957][#92957] -- Implemented the `parse_ident` built-in [function]({% link v23.1/functions-and-operators.md %}), which splits a qualified identifier into an array of identifiers, removing any quoting of individual identifiers. By default, extra characters after the last identifier are considered an error; but if the second parameter is `false`, then such extra characters are ignored. [#93300][#93300] +- Added the `crdb_internal.to_json_as_changefeed_with_flags` [function]({% link v23.1/functions-and-operators.md %}) to help debug JSON [changefeeds]({% link v23.1/change-data-capture-overview.md %}). +- Added the `regions` column to the [`SHOW BACKUP`]({% link v23.1/show-backup.md %}) command which will output a string of `ALTER DATABASE` commands if the database is a multi-region database and `NULL` for everything else. Previously, the user did not have an easy way to see if a backed up database is multi-region. +- Types with length modifiers can now be used to prefix literals. +- A new column `plan_gist` was added to `crdb_internal.{node,cluster}_queries` representing the compressed logical plan. +- You can generate easy-to-read [`CREATE INDEX`]({% link v23.1/create-index.md %}) statements for a table's (secondary) indexes using the `SHOW CREATE INDEXES FROM ` and `SHOW CREATE SECONDARY INDEXES FROM ` statements. +- `enum_first`, `enum_last`, and `enum_range` may now take `NULL` arguments as long as their type can be inferred from the expression. +- [Declarative schema changer]({% link v23.1/online-schema-changes.md %}) support for `ALTER PRIMARY KEY` statements now extends to tables which have secondary indexes. +- The `backup.restore_span.target_size` cluster setting now defaults to `384 MiB `. This should reduce the number of ranges created during [restore]({% link v23.1/restore.md %}) and thereby reduce the merging of ranges that needs to occur after the restore. +- The `transaction_timeout` [session variable]({% link v23.1/set-vars.md %}) was added. `transaction_timeout` aborts an explicit transaction when it runs longer than the configured duration. When the timer times out, the current statement is cancelled and the transaction enters an aborted state. This timeout does not have any effect when no statement is being executed, so it should be used with `idle_in_transaction_timeout` for the best results. +- The `crdb_internal.check_consistency` [function]({% link v23.1/functions-and-operators.md %}) now does not include the diff between inconsistent replicas, should they occur. If an inconsistency occurs, the storage engine checkpoints should be inspected. This change is made because the maximum range size limit has been increased from 64 MiB to 512 MiB, so inlining diffs in consistency checks does not scale. +- CockroachDB now shows a hash-sharded check constraint in [`SHOW CREATE TABLE`]({% link v23.1/show-create.md %}) if it is set to `NOT VALID`. +- Added the `SHOW FUNCTIONS` and `SHOW FUNCTIONS FROM ` statements, which list [user-defined functions]({% link v23.1/user-defined-functions.md %}). +- The default value of `sql.metrics.statement_details.plan_collection.enabled` is now `false`. +- CockroachDB now supports executing statements of the form `DELETE FROM ... USING`. +- The [cluster setting]({% link v23.1/cluster-settings.md %}) `sql.ttl.default_range_concurrency` and table storage parameter `ttl_range_concurrency` are no longer configurable. +- CockroachDB drops the associated scheduled incremental backup when [`DROP SCHEDULE`]({% link v23.1/drop-schedules.md %}) or `DROP SCHEDULES` is called. Previously, whenever a user dropped a [scheduled full backup]({% link v23.1/create-schedule-for-backup.md %}), the corresponding scheduled incremental backup would not be dropped. +- Added the `sql.auth.change_own_password.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}). It defaults to `false`. When set to `true`, any user is allowed to change their own password to a non-null value. Changing other role options still has the same privilege requirements as before (either `CREATEROLE` or `CREATELOGIN`, depending on the option). +- The `sql.distsql.max_running_flows` [cluster setting]({% link v23.1/cluster-settings.md %}) has been removed. +- The query field in the `crdb_internal.node_queries`, `crdb_internal.cluster_queries`, and `SHOW QUERIES` commands now includes the original comments in the queries. +- Added a new `descriptor_validation` [session variable]({% link v23.1/set-vars.md %}) which can be set to `read_only` or `off` to disable descriptor validation, which may be useful when mitigating or recovering from catalog corruption. +- CockroachDB now supports using [`DROP CONSTRAINT, ADD CONSTRAINT`]({% link v23.1/alter-table.md %}#drop-constraint) to add a new primary key without moving the existing primary key to a secondary index if the primary key name is a reserved SQL keyword. Previously, a `constraint already exists` error was returned. +- Added the `contention_events` column to the `cluster_execution_insights` table to see which transaction is blocking the specific statement. +- `crdb_internal.scan` and `crdb_internal.list_sql_keys_in_range` return the timestamp for the time at which the value for a key was written, in addition to the raw key and value. +- Previously, the [`AS OF SYSTEM TIME`]({% link v23.1/as-of-system-time.md %}) value was set at the start of the TTL job (with a TTL cutoff - 30s), but this results in an error for TTL jobs that run longer than `gc.ttlseconds`: `error selecting rows to delete: ttl select defaultdb.public.events: batch timestamp 1666883527.780656000,0 must be after replica GC threshold 1666883574.542825089,0`. CockroachDB now makes the `AS OF SYSTEM TIME` value relative to when each `SELECT` query is run (query time - 30s) to prevent this error from happening, but each `SELECT` query will run against a different table state. This should be ok because if records are missed during one job invocation they should still be picked up the next. +- The `system.sql_instances` table now includes pre-allocated ID entries, where all the fields except `id` will be `NULL`. +- The `to_char(timestamp, string)` [function]({% link v23.1/functions-and-operators.md %}) has been added. +- The `to_char(interval, string)` built-in [function]({% link v23.1/functions-and-operators.md %}) has been added. +- The `system.table_statistics` table now contains a column called `partialPredicate` to store a predicate for a partial statistic collection. +- A new `NumericStat`, `idleLat`, was introduced to the statistics column of `crdb_internal.statement_statistics`. This reports the time spent waiting for the client to send the statement while holding a transaction open. Developers may use this stat to identify opportunities for restructuring their apps to reduce contention. +- The set of supported compression algorithms in compress/decompress built-in [functions]({% link v23.1/functions-and-operators.md %}) is expanded to include `lz4`, `snappy`, and `zstd`. +- A new column `database` was added to `crdb_internal.{node,cluster}_queries` and list sessions [endpoint]({% link v23.1/cluster-api.md %}). +- Fixed a bug in the legacy schema changer where comments were not dropped together with the database. +- The `round(decimal`) built-in [function]({% link v23.1/functions-and-operators.md %}) no longer returns negative 0 for any input. +- Added an estimate for the number of request units consumed by a query to the output of [`EXPLAIN ANALYZE`]({% link v23.1/explain-analyze.md %}) for tenant sessions. +- Enabled forward indexes on arrays. +- Users can now manually create partial single-column statistics at the extreme values on columns that are prefixes of their index. The output of [`SHOW STATISTICS`]({% link v23.1/show-statistics.md %}) now includes a column indicating the partial predicate for a partial statistic, or `NULL` for a full statistic. +- A new SQL statement `SHOW COMMIT TIMESTAMP` has been added. This statement can be used to retrieve the commit timestamp of the current explicit transaction, current multi-statement implicit transaction, or previous transaction. The statement may be used in a variety of settings to maximize its utility in the face of connection pooling. When used as a part of an explicit transaction, the statement implicitly commits the transaction internally before being able to return a causality token. +- Added support for the `pg_blocking_pids` built-in [function]({% link v23.1/functions-and-operators.md %}). It is hardcoded to return an empty array because CockroachDB has no equivalent concept of PIDs as in PostgreSQL. +- Added a list of indexes used by the query on the statistics column on the `system.statement_statistics` and `crdb_internal.statement_statistics` tables. The format is `tableID@indexID`. +- Added a list of used indexes (with the format `tableID@indexID`) to the sampled query telemetry log. +- A new `NumericStat`, `idleLat`, was introduced to the statistics column of `crdb_internal.transaction_statistics`. It reports the time spent waiting for the client to send statements while holding a transaction open. +- Added an in-memory-only evaluation of `tsvector` and `tsquery` datatypes and the `@@` matches operator. +- Implemented the [`ALTER TABLE ... ADD CHECK`]({% link v23.1/alter-table.md %}) statement in the [declarative schema changer]({% link v23.1/online-schema-changes.md %}). +- `to_char` now has caching for parse formats, marking a speedup when running `to_char` with the same format between sessions. +- Casts from index name to `REGCLASS` are now supported. Previously, only table names could be cast to `REGCLASS`. +- Added user-defined composite column types. +- SQL queries running on remote nodes now show up in CPU profiles with `distsql.*` labels. Currently this includes `appname`, `gateway`, `txn`, and stmt. +- CockroachDB now permits non-indexed storage of `tsvector` and `tsquery` datatypes +- Implemented the `parse_ident` built-in [function]({% link v23.1/functions-and-operators.md %}), which splits a qualified identifier into an array of identifiers, removing any quoting of individual identifiers. By default, extra characters after the last identifier are considered an error; but if the second parameter is `false`, then such extra characters are ignored.

Operational changes

-- Reduced the length of the `raft.process.handleready.latency` metric help text to avoid it being rejected by certain Prometheus services. [#87166][#87166] -- Logs produced by increasing the vmodule setting for `s3_storage` are now directed to the `DEV` channel rather than `STDOUT`. [#88798][#88798] -- Added observability for when load-based splitting cannot find a key to indicate the reasons why the load splitter could not find a split key, which provides more insight into why a range is not splitting easier. [#88720][#88720] +- Reduced the length of the `raft.process.handleready.latency` metric help text to avoid it being rejected by certain Prometheus services. +- Logs produced by increasing the vmodule setting for `s3_storage` are now directed to the `DEV` channel rather than `STDOUT`. +- Added observability for when load-based splitting cannot find a key to indicate the reasons why the load splitter could not find a split key, which provides more insight into why a range is not splitting easier. - Added five new fields to the `sampled_query` telemetry events: - `ScanCount`: Number of scans in the query plan. - `ScanWithStatsCount`: Number of scans using statistics (including forecasted statistics) in the query plan. - `ScanWithStatsForecastCount`: Number of scans using forecasted statistics in the query plan. - `TotalScanRowsWithoutForecastsEstimate`: Total number of rows read by all scans in the query, as estimated by the optimizer without using forecasts. - - `NanosSinceStatsForecasted`: The greatest quantity of nanoseconds that have passed since the forecast time (or until the forecast time, if it is in the future, in which case it will be negative) for any table with forecasted stats scanned by this query. [#88539][#88539] -- Added a new debug tool to allow for decrypting files in a store using [encryption-at-rest](https://www.cockroachlabs.com/docs/v23.1/security-reference/encryption). This tool is intended for use while debugging, or for providing debug artifacts to Cockroach Labs to aid with support investigations. It is intended to be run "in-situ" (i.e., on site), as it prevents having to move sensitive key material. [#89668][#89668] -- Added a new command that can be used by an operator to list the files present in the [encryption-at-rest](https://www.cockroachlabs.com/docs/v23.1/security-reference/encryption) file registry. [#89873][#89873] -- Release version binaries can now be instructed via the enviroment variable `COCKROACH_FORCE_DEV_VERSION` to override their cluster version support to match that of development builds, which can allow a release binary to be started in a cluster that is run (or has previously run) a development build. [#90002][#90002] -- The consistency check failure message is now more informative, and suggests a few actions that operators should perform in the unlikely event a failure occurs. [#89899][#89899] -- Updated metric descriptions of `rebalancing.*` to include the recording period. [#90619][#90619] -- CockroachDB now prioritizes non-voters in voter additions, meaning that when selecting a store to add a voter on (in the allocator), CockroachDB will prioritize candidate stores that contain a non-voter replica higher. This reduces the number of snapshots that need to be sent over the WAN. [#89650][#89650] -- CockroachDB now uses response data rather than just the request span in the [load-based splitter]({% link v23.1/load-based-splitting.md %}) to pass more accurate data about the keys iterated over to the load splitter to find a suitable split key, enabling the load splitter to find a split key under heavy range query workloads. [#89217][#89217] -- Added the `replicas.leaders_invalid_lease` metric, which indicates how many replicas are Raft group leaders but holding invalid leases. [#91179][#91179] -- The [cluster settings]({% link v23.1/cluster-settings.md %}) `server.web_session.purge.period` and `server.web_session.purge.max_deletions_per_cycle`, which were specific to the cleanup function for `system.web_sessions`, have been replaced by `server.log_gc.period` and `server.log_gc.max_deletions_per_cycle` which apply to the cleanup function for `system.eventlog`, `system.rangelog` and `system.web_sessions` equally. [#90789][#90789] -- The [cluster setting]({% link v23.1/cluster-settings.md %}) `server.web_session.auto_logout.timeout` has been removed. [#90789][#90789] -- Splunk dashboard templates are available in the public repository under `/monitoring/splunk-dashboard/`. [#92330][#92330] -- The network timeout for RPC connections between cluster nodes has been reduced from 3 seconds to 2 seconds, with a connection timeout of 4 seconds, in order to reduce unavailability and tail latencies during infrastructure outages. This can now be changed by setting the `COCKROACH_NETWORK_TIMEOUT` environment variable, which defaults to `2s`. [#92542][#92542] -- The Raft election timeout has been reduced from 3 seconds to 2 seconds, and the lease interval from 9 seconds to 6 seconds, with a corresponding reduction in the node heartbeat interval from 4.5 seconds to 3 seconds. This reduces the period of unavailability following leaseholder loss, but places tighter restrictions on network latencies (no more than 500ms roundtrip time). This can be adjusted by setting the `COCKROACH_RAFT_ELECTION_TIMEOUT_TICKS` environment variable, which now defaults to 10 and will scale all of these intervals proportionally. [#91947][#91947] -- The RPC heartbeat and gRPC keepalive ping intervals have been reduced to 1 second to detect failures faster. This is adjustable via the new `COCKROACH_PING_INTERVAL` environment variable. The timeouts remain unchanged. [#93399][#93399] + - `NanosSinceStatsForecasted`: The greatest quantity of nanoseconds that have passed since the forecast time (or until the forecast time, if it is in the future, in which case it will be negative) for any table with forecasted stats scanned by this query. +- Added a new debug tool to allow for decrypting files in a store using [encryption-at-rest](https://www.cockroachlabs.com/docs/v23.1/security-reference/encryption). This tool is intended for use while debugging, or for providing debug artifacts to Cockroach Labs to aid with support investigations. It is intended to be run "in-situ" (i.e., on site), as it prevents having to move sensitive key material. +- Added a new command that can be used by an operator to list the files present in the [encryption-at-rest](https://www.cockroachlabs.com/docs/v23.1/security-reference/encryption) file registry. +- Release version binaries can now be instructed via the enviroment variable `COCKROACH_FORCE_DEV_VERSION` to override their cluster version support to match that of development builds, which can allow a release binary to be started in a cluster that is run (or has previously run) a development build. +- The consistency check failure message is now more informative, and suggests a few actions that operators should perform in the unlikely event a failure occurs. +- Updated metric descriptions of `rebalancing.*` to include the recording period. +- CockroachDB now prioritizes non-voters in voter additions, meaning that when selecting a store to add a voter on (in the allocator), CockroachDB will prioritize candidate stores that contain a non-voter replica higher. This reduces the number of snapshots that need to be sent over the WAN. +- CockroachDB now uses response data rather than just the request span in the [load-based splitter]({% link v23.1/load-based-splitting.md %}) to pass more accurate data about the keys iterated over to the load splitter to find a suitable split key, enabling the load splitter to find a split key under heavy range query workloads. +- Added the `replicas.leaders_invalid_lease` metric, which indicates how many replicas are Raft group leaders but holding invalid leases. +- The [cluster settings]({% link v23.1/cluster-settings.md %}) `server.web_session.purge.period` and `server.web_session.purge.max_deletions_per_cycle`, which were specific to the cleanup function for `system.web_sessions`, have been replaced by `server.log_gc.period` and `server.log_gc.max_deletions_per_cycle` which apply to the cleanup function for `system.eventlog`, `system.rangelog` and `system.web_sessions` equally. +- The [cluster setting]({% link v23.1/cluster-settings.md %}) `server.web_session.auto_logout.timeout` has been removed. +- Splunk dashboard templates are available in the public repository under `/monitoring/splunk-dashboard/`. +- The network timeout for RPC connections between cluster nodes has been reduced from 3 seconds to 2 seconds, with a connection timeout of 4 seconds, in order to reduce unavailability and tail latencies during infrastructure outages. This can now be changed by setting the `COCKROACH_NETWORK_TIMEOUT` environment variable, which defaults to `2s`. +- The Raft election timeout has been reduced from 3 seconds to 2 seconds, and the lease interval from 9 seconds to 6 seconds, with a corresponding reduction in the node heartbeat interval from 4.5 seconds to 3 seconds. This reduces the period of unavailability following leaseholder loss, but places tighter restrictions on network latencies (no more than 500ms roundtrip time). This can be adjusted by setting the `COCKROACH_RAFT_ELECTION_TIMEOUT_TICKS` environment variable, which now defaults to 10 and will scale all of these intervals proportionally. +- The RPC heartbeat and gRPC keepalive ping intervals have been reduced to 1 second to detect failures faster. This is adjustable via the new `COCKROACH_PING_INTERVAL` environment variable. The timeouts remain unchanged.

Command-line changes

-- The interactive [SQL shell]({% link v23.1/cockroach-sql.md %}) now retains a maximum of 1000 entries. There was no limit previously. [#88173][#88173] -- The deprecated CLI command `debug unsafe-remove-dead-replicas` has been removed. Use `debug recover` instead. [#89150][#89150] -- The `\df` metacommand was added to the [SQL shell]({% link v23.1/cockroach-sql.md %}), which will list all [user-defined functions]({% link v23.1/user-defined-functions.md %}) in the current database. [#89557][#89557] -- In the [`kv` workload]({% link v23.1/cockroach-workload.md %}#kv-workload), you can now enable `--splits` with the `--sequential` flag and adjust splitting to uniformly partition the keyspace. [#90000][#90000] -- Added the `--insert-count` flag to insert rows before the [`kv` workload]({% link v23.1/cockroach-workload.md %}#kv-workload) begins. [#90055][#90055] -- CockroachDB will now include recommended remediation actions alongside log messages for some errors. [#82891][#82891] -- The input syntax of `\set` is now more flexible: it is now more accepting of space characters in various positions of the syntax and it supports quoted values, e.g., via `\set prompt1 "a b c"`. [#90520][#90520] -- [`cockroach demo --global`]({% link v23.1/cockroach-demo.md %}) will now start up more quickly. The latency that will be injected will not be injected until after the initial cluster is set up internally. [#92231][#92231] -- The engine used as line editor in the interactive shell ([`cockroach sql`]({% link v23.1/cockroach-sql.md %}) and [`cockroach demo`]({% link v23.1/cockroach-demo.md %})) has been updated. It includes numerous bug fixes and new features. The previous engine can still be accessed by setting the `COCKROACH_SQL_FORCE_LIBEDIT` environment variable to true. This support will be removed in a later version. [#86457][#86457] -- The interactive [SQL shell]({% link v23.1/cockroach-sql.md %}) now supports an advanced debug mode for troubleshooting when `--debug-sql-cli` is specified on the command line. The debug mode can be enabled with Ctrl+@ or Ctrl+_ (Ctrl+space on macOS). [#86457][#86457] +- The interactive [SQL shell]({% link v23.1/cockroach-sql.md %}) now retains a maximum of 1000 entries. There was no limit previously. +- The deprecated CLI command `debug unsafe-remove-dead-replicas` has been removed. Use `debug recover` instead. +- The `\df` metacommand was added to the [SQL shell]({% link v23.1/cockroach-sql.md %}), which will list all [user-defined functions]({% link v23.1/user-defined-functions.md %}) in the current database. +- In the [`kv` workload]({% link v23.1/cockroach-workload.md %}#kv-workload), you can now enable `--splits` with the `--sequential` flag and adjust splitting to uniformly partition the keyspace. +- Added the `--insert-count` flag to insert rows before the [`kv` workload]({% link v23.1/cockroach-workload.md %}#kv-workload) begins. +- CockroachDB will now include recommended remediation actions alongside log messages for some errors. +- The input syntax of `\set` is now more flexible: it is now more accepting of space characters in various positions of the syntax and it supports quoted values, e.g., via `\set prompt1 "a b c"`. +- [`cockroach demo --global`]({% link v23.1/cockroach-demo.md %}) will now start up more quickly. The latency that will be injected will not be injected until after the initial cluster is set up internally. +- The engine used as line editor in the interactive shell ([`cockroach sql`]({% link v23.1/cockroach-sql.md %}) and [`cockroach demo`]({% link v23.1/cockroach-demo.md %})) has been updated. It includes numerous bug fixes and new features. The previous engine can still be accessed by setting the `COCKROACH_SQL_FORCE_LIBEDIT` environment variable to true. This support will be removed in a later version. +- The interactive [SQL shell]({% link v23.1/cockroach-sql.md %}) now supports an advanced debug mode for troubleshooting when `--debug-sql-cli` is specified on the command line. The debug mode can be enabled with Ctrl+@ or Ctrl+_ (Ctrl+space on macOS). - The following fields have been redacted and were added to the redacted debug zip: - `crdb_internal.create_statements`: - `create_statement` @@ -142,151 +142,151 @@ Release Date: December 19, 2022 - `last_active` - `active_queries` - `crdb_internal.{cluster,node}_queries`: - - `query` [#92263][#92263] + - `query` -- The interactive [SQL shell]({% link v23.1/cockroach-sql.md %}) now supports a rudimentary form of tab completion to input the name of SQL objects and functions. [#87606][#87606] -- The command-line flag `--empty` to [`cockroach demo`]({% link v23.1/cockroach-demo.md %}) is not marked as deprecated anymore; it is more convenient than `--no-example-database`. However, the latter remains supported as an alias. [#93255][#93255] -- The command-line flags `--logtostderr`, `--log-file-verbosity`, `--no-color`, `--redactable-logs`, `--log-file-max-size`, `--log-group-max-size`, `--log-dir`, `--sql-audit-dir` are not marked as deprecated anymore; instead, they are defined as convenience aliases for various `--log` specifications. [#93255][#93255] -- [`cockroach demo`]({% link v23.1/cockroach-demo.md %}) now supports `--pid-file` for symmetry with [`cockroach start`]({% link v23.1/cockroach-start.md %}). [#93343][#93343] -- The debug utility script `hot-ranges.sh` partitions output by statistics: `queries_per_second`, `writes_per_second`, `read_bytes_per_second`, `write_bytes_per_second`. It also decreased the number of ranges shown under each heading from 20 to 10. [#93528][#93528] +- The interactive [SQL shell]({% link v23.1/cockroach-sql.md %}) now supports a rudimentary form of tab completion to input the name of SQL objects and functions. +- The command-line flag `--empty` to [`cockroach demo`]({% link v23.1/cockroach-demo.md %}) is not marked as deprecated anymore; it is more convenient than `--no-example-database`. However, the latter remains supported as an alias. +- The command-line flags `--logtostderr`, `--log-file-verbosity`, `--no-color`, `--redactable-logs`, `--log-file-max-size`, `--log-group-max-size`, `--log-dir`, `--sql-audit-dir` are not marked as deprecated anymore; instead, they are defined as convenience aliases for various `--log` specifications. +- [`cockroach demo`]({% link v23.1/cockroach-demo.md %}) now supports `--pid-file` for symmetry with [`cockroach start`]({% link v23.1/cockroach-start.md %}). +- The debug utility script `hot-ranges.sh` partitions output by statistics: `queries_per_second`, `writes_per_second`, `read_bytes_per_second`, `write_bytes_per_second`. It also decreased the number of ranges shown under each heading from 20 to 10.

DB Console changes

-- The High Contention Time insight description now accurately reflects the event's contention duration in the [DB Console]({% link v23.1/ui-overview.md %}). [#89035][#89035] -- **Overview** and **Explain Plan** tabs were added to the **Active Statement Details** page. [#89021][#89021] -- The **Apply** button was added on the **Table Details** page ([DB Console]({% link v23.1/ui-overview.md %}) only) when there is a recommendation to drop an unused index. [#90070][#90070] -- **Overview** and **Explain Plan** tabs were added to the **Statement Insight Details** page. [#90250][#90250] -- The [Jobs Page]({% link v23.1/ui-jobs-page.md %}) now includes a column picker. [#89678][#89678] -- The fingerprint ID values for statements and transactions on the [Insights]({% link v23.1/ui-insights-page.md %}) pages are links that open the respective details page on the time period of the execution of that statement or transaction. [#90403][#90403] -- Requests to fetch table and database statistics now have limited concurrency. This may make loading the [Databases]({% link v23.1/ui-databases-page.md %}) page slower, but in return should result in making those pages less disruptive. [#90210][#90210] -- The **Transaction** filter label on the **SQL Activity** page was fixed. [#91255][#91255] -- The metric graph tooltip styling was fixed to prevent content collapse. [#91290][#91290] -- Index recommendations were added to the **Statement Active Execution Details** page, and the plan gist was added as the first line of the explain plan. [#91629][#91629] -- Transaction insights pages now show insights about slow execution with unknown causes, index recommendations, and failed executions. The following fields have also been added on the **Details** page, but are not available for transactions where the insight is "High Contention" (i.e., user name, session ID, rows processed, rows read, rows written, retries, last retry reason, full scan, and transaction priority). [#91698][#91698] -- The fingerprint ID in hex format was added to the **Statement Details** page and **Transaction Details** page. [#91885][#91885] -- The contention time, schema, database, table, and index info was added to the **Insights Statement Details** page. [#91668][#91668] -- The query column in the insight recommendations table was removed. Instead, the statement is included in the description if the transaction being reported has multiple statements. [#91955][#91955] -- Graphs on the **Metrics** page now downsample using max value instead of average. Previously, zooming out on a graph would cause any spikes in the graph to smooth out, potentially hiding anomalies. These anomalies are now visible even when looking at a zoomed out interval. [#92017][#92017] -- The **Statement Execution** and **Planning Time** chart on the **Statement Fingerprint** page now includes a third value ("Idle") representing the time spent by the application waiting to execute this statement while holding a transaction open. [#92284][#92284] -- A list of used index per explain plan was added, under the **Explain Plan** tab on the **Statement Details** page, with links to the table or index details pages. [#92463][#92463] -- The [Insights]({% link v23.1/ui-insights-page.md %}) pages in the [DB Console]({% link v23.1/ui-overview.md %}) now show the seconds and milliseconds for all timestamp values. [#92571][#92571] -- Links were added on the fingerprint ID in the **High Contention** table on the **Transaction Insights Details** page. [#92612][#92612] -- The following new charts were added to the Metrics page, under SQL view: **Service Latency: SQL Statements, 99.9th percentile** and **Service Latency: SQL Statements, 99.99th percentile**. [#92591][#92591] -- Renamed the chart on the **Statement Details** page from **Statement Execution and Planning Time** to **Statement Times**. [#92765][#92765] -- The **Transaction resource usage** card on the **Transaction Fingerprin**t page now includes an "Idle latency" row, representing the time spent by the application performing other work while holding this transaction open. [#92951][#92951] -- The **Databases table** page now displays all the grants in a single row per user. [#92871][#92871] -- Added a goroutine scheduling latency graph to the **Overload** dashboard in the DB Console. It shows what the per-node p99 scheduling latency is for goroutines. [#93217][#93217] -- CockroachDB now prevents polling `/settings`, `/nodes_ui,` and `/cluster` endpoints on incorrect login. [#93211][#93211] -- The **Statement** and **Transaction** pages for tenant clusters gained region columns and filters for multi-region tenants. [#92357][#92357] +- The High Contention Time insight description now accurately reflects the event's contention duration in the [DB Console]({% link v23.1/ui-overview.md %}). +- **Overview** and **Explain Plan** tabs were added to the **Active Statement Details** page. +- The **Apply** button was added on the **Table Details** page ([DB Console]({% link v23.1/ui-overview.md %}) only) when there is a recommendation to drop an unused index. +- **Overview** and **Explain Plan** tabs were added to the **Statement Insight Details** page. +- The [Jobs Page]({% link v23.1/ui-jobs-page.md %}) now includes a column picker. +- The fingerprint ID values for statements and transactions on the [Insights]({% link v23.1/ui-insights-page.md %}) pages are links that open the respective details page on the time period of the execution of that statement or transaction. +- Requests to fetch table and database statistics now have limited concurrency. This may make loading the [Databases]({% link v23.1/ui-databases-page.md %}) page slower, but in return should result in making those pages less disruptive. +- The **Transaction** filter label on the **SQL Activity** page was fixed. +- The metric graph tooltip styling was fixed to prevent content collapse. +- Index recommendations were added to the **Statement Active Execution Details** page, and the plan gist was added as the first line of the explain plan. +- Transaction insights pages now show insights about slow execution with unknown causes, index recommendations, and failed executions. The following fields have also been added on the **Details** page, but are not available for transactions where the insight is "High Contention" (i.e., user name, session ID, rows processed, rows read, rows written, retries, last retry reason, full scan, and transaction priority). +- The fingerprint ID in hex format was added to the **Statement Details** page and **Transaction Details** page. +- The contention time, schema, database, table, and index info was added to the **Insights Statement Details** page. +- The query column in the insight recommendations table was removed. Instead, the statement is included in the description if the transaction being reported has multiple statements. +- Graphs on the **Metrics** page now downsample using max value instead of average. Previously, zooming out on a graph would cause any spikes in the graph to smooth out, potentially hiding anomalies. These anomalies are now visible even when looking at a zoomed out interval. +- The **Statement Execution** and **Planning Time** chart on the **Statement Fingerprint** page now includes a third value ("Idle") representing the time spent by the application waiting to execute this statement while holding a transaction open. +- A list of used index per explain plan was added, under the **Explain Plan** tab on the **Statement Details** page, with links to the table or index details pages. +- The [Insights]({% link v23.1/ui-insights-page.md %}) pages in the [DB Console]({% link v23.1/ui-overview.md %}) now show the seconds and milliseconds for all timestamp values. +- Links were added on the fingerprint ID in the **High Contention** table on the **Transaction Insights Details** page. +- The following new charts were added to the Metrics page, under SQL view: **Service Latency: SQL Statements, 99.9th percentile** and **Service Latency: SQL Statements, 99.99th percentile**. +- Renamed the chart on the **Statement Details** page from **Statement Execution and Planning Time** to **Statement Times**. +- The **Transaction resource usage** card on the **Transaction Fingerprin**t page now includes an "Idle latency" row, representing the time spent by the application performing other work while holding this transaction open. +- The **Databases table** page now displays all the grants in a single row per user. +- Added a goroutine scheduling latency graph to the **Overload** dashboard in the DB Console. It shows what the per-node p99 scheduling latency is for goroutines. +- CockroachDB now prevents polling `/settings`, `/nodes_ui,` and `/cluster` endpoints on incorrect login. +- The **Statement** and **Transaction** pages for tenant clusters gained region columns and filters for multi-region tenants.

Bug fixes

-- The flag `--sql-advertise-addr` now properly works even when the SQL and RPC ports are shared (because `--sql-addr` was not specified). Note that this port sharing is a deprecated feature in v22.2. [#87412][#87412] -- Fixed a bug introduced in v21.2 that could cause an internal error in rare cases when a query required a constrained index scan to return results in order. [#87562][#87562] -- Fixed a bug that existed from before v21.1 that could cause an internal error when executing a query with a limit ordering on the output of a window function. [#87320][#87320] -- Fixed an incorrect default value of `cloudstorage.gs.chunking.retry_timeout` to 60 seconds [#87817][#87817] -- Fixed a bug in `pg_catalog` tables that could result in an internal error if a schema is concurrently dropped. [#88568][#88568] -- Fixed a bug that caused `ALTER CHANGEFEED` to fail if the changefeed was created with a cursor option and had been running for more than `gc.ttlseconds`. [#88402][#88402] -- Fixed a bug that could cause a panic when running a query with `EXPLAIN` that attempts to order on a non-output column. [#88441][#88441] -- Fixed missing automatic statistics collection at cluster startup when the `sql.stats.automatic_collection.enabled` cluster setting is false, but there are tables with the storage parameter `sql_stats_automatic_collection_enabled` set to true. [#88673][#88673] -- Fixes an issue where when a statement bundle was collected for a query that results in an error due to a `statement_timeout`, the bundle would not be saved. [#88080][#88080] -- CockroachDB now excludes check constraints of hash-shared indexes from being invalidated when executing `IMPORT INTO`. [#89231][#89231] -- CockroachDB now flushes WAL when writing storage checkpoints on consistency checker failures. [#89369][#89369] -- Fixed optimizer selectivity and cost estimates of zigzag joins in order to prevent query plans from using it when it would perform poorly (e.g., when many rows are qualified). [#89261][#89261] -- Changefeeds will now never permanently error on a "failed to send RPC" error. [#87763][#87763] -- Fixed a bug that could occur when dropping a role that owned two schemas with the same name in different databases. The bug was introduced in v22.1.0. [#89504][#89504] -- CockroachDB now avoids a source of internal connectivity problems that would resolve after restarting the affected node. [#89539][#89539] -- CockroachDB now shows the correct value on table stats on UI, when there are no values to show. [#89867][#89867] -- Charts on the **Statement Details** page in the DB Console are no longer overlapping. [#90014][#90014] -- It is now possible to create tables, views, columns, etc. with the name `nothing` (e.g., `CREATE TABLE nothing...`) without having to quote the name, like in PostgreSQL. This bug was introduced in CockroachDB v2.0. [#89903][#89903] -- Fixed detection and erroring out of queries using locality-optimized joins when the session setting `enforce_home_region` is true and the input table to the join has no home region or its home region does not match the gateway region. [#90107][#90107] -- Fixed an issue with the `enforce_home_region` session setting which may cause `SHOW CREATE TABLE` or other non-DML statements to error out if the optimizer plan for the statement involves accessing a multi-region table. [#90007][#90007] -- Fixed a bug in `changefeed.batch_reduction_retry` which resulted in only a single level of retry being able to occur. [#90153][#90153] -- During JWT based auth, CockroachDB now infers the algorithm type if it is not specified by the JWKS. This enables support for a wider range of keys. [#89989][#89989] -- Fixed an extremely rare out of bounds crash in the protected timestamp subsystem. [#90357][#90357] -- Fixed the calculation of the `pg_attribute.attnum` column for indexes so that the `attnum` is always based on the order the column appears in the index. Also fixed the `pg_attribute` table so that it includes stored columns in secondary indexes. [#90287][#90287] -- Fixed a bug in the DB Console where when the height of the filter was big, you had to scroll to get to the **Apply** button. [#90457][#90457] -- Fixed a bug in the DB Console to now send the proper start and end values to the endpoint used on the **SQL Activity** page so it returns the full hour as described on the UI. [#90403][#90403] -- Fixed a rare bug where concurrent follower read/split operations could lead to invalid read results. [#89886][#89886] -- Fixed a bug that could cause `UPDATE .. FROM` clauses to update the same row multiple times, resulting in incorrect `UPDATED` row counts and duplicate output rows for statements with a `RETURNING` clause. The bug only appeared when the target table had a hidden primary key column (e.g., an implicit `rowid` primary key column). The bug has been present since support for `UPDATE .. FROM` was added in v19.0. [#89780][#89780] -- Protected timestamps are now created during index validation. Before, index validation could be starved if it took longer than any GC jobs for a given table. [#89540][#89540] -- Fixed a bug where `SELECT *` operations on tables with virtual computed columns undergoing schema changes could potentially fail. [#90670][#90670] -- Fixed a bug where in large, multi-region clusters it was possible for the leasing mechanism used for jobs to get caught in a live-lock scenario whereby jobs could not be adopted. [#90875][#90875] -- CockroachDB now ensures changefeeds shut down when one of the aggregator nodes returns an error. [#90767][#90767] -- Fixed a bug the occurred when attempting to reduce the size of a fixed-size `VARCHAR` column. [#91078][#91078] -- Fixed a bug that caused ranges to remain without a leaseholder in cases of asymmetric network partitions. [#87244][#87244] -- Fixed a bug that would prevent data from a failed restore from being cleaned up quickly. [#88342][#88342] -- Fixed a bug which, in rare cases, could result in a changefeed missing rows which occur around the time of a split in writing transactions which take longer than the closed timestamp target duration (defaults to 3s). [#91116][#91116] -- Fixed a bug where point lookups on the `pg_catalog.pg_type` table would fail to find the implicit record type that gets created for tables in the `pg_catalog`, `information_schema`, and `crdb_internal` schemas. [#90924][#90924] -- Fixed a bug that prevented the usage of implicit record types for tables in the `pg_catalog`, `information_schema`, and `crdb_internal` schemas. [#90924][#90924] -- Fixed a bug that could result in transient errors when dropping a database and immediately recreating a database with the same name and connecting to it for use. [#91174][#91174] -- Fixes a bug that resulted in the regions listed for databases and tables including an incorrect list of regions due to the logic including information about tables which are adjacent in the keyspace. [#91130][#91130] -- Fixed a bug where the experimental `scrub` command did not handle type descriptors in the database. [#91085][#91085] -- Fixed a panic that could occur when calling `st_distancespheroid` or `st_distancesphere` with a spatial object containing an `NaN` coordinate. This now produces an error, with the message "input is out of range". [#90218][#90218] -- Fixed a bug that could result in infrequent progress updates for very large backup or restore jobs. [#89971][#89971] -- Added leading zeros to fingerprint IDs with less than 16 characters. [#91885][#91885] -- Fixed a bug causing changefeeds to fail when a value is deleted while running on a non-primary column family with multiple columns. [#91870][#91870] -- Fixed a bug that existed since before v21.1 where the `cgroup` memory limit was undetected when using `systemd`. [#91789][#91789] -- Fixed a bug that existed since v20.2 that could cause incorrect results in rare cases for queries with inner joins and left joins. [#91425][#91425] -- Fixed an unhandled error that could happen if `ALTER DEFAULT PRIVILEGES` was run on the system database. [#92075][#92075] -- CockroachDB now prevents schema changes on the `crdb_internal_expiration` table. [#91720][#91720] -- When configured to true, the `sql.metrics.statement_details.dump_to_logs` cluster setting no longer causes a mutex deadlock. [#92272][#92272] -- Fixed a bug that could lead to errors when running multiple schema change statements in a single command using a driver that uses the extended pgwire protocol internally (for example the Npgsql C# driver). The error messages was "attempted to update job for mutation 2, but job already exists with mutation 1". [#92300][#92300] -- Fixed the **Statement Activity** page so that it no longer shows multi-statement implicit transactions as "explicit." [#92408][#92408] -- Server crashes that occur during startup are now more clearly reported in logs and the standard error output. [#91823][#91823] -- Fixed incorrect cancellation logic when attempting to detect stuck rangefeeds. [#92582][#92582] -- Fixed an internal error when comparing a tuple type with a non-tuple type. [#92635][#92635] -- Fixed incorrect selectivity estimation for queries with `OR` predicates all referencing a common single table. [#89358][#89358] -- Added sort setting to tables on the **Transaction** and **Statement Insights Details** pages. [#92573][#92573] -- Fixed an issue where `changefeed.emitted_messages` would be increased twice per message for changefeed cloud storage sinks. [#92685][#92685] -- Fixed a bug where `attidentity` in `pg_attribute` for the `GENERATED BY DEFAULT AS IDENTITY` column should be `d`. [#92545][#92545] -- CockroachDB previously could incorrectly evaluate queries that performed left semi and left anti "virtual lookup" joins on tables in `pg_catalog` or `information_schema`. These join types can be planned when a subquery is used inside of a filter condition. The bug was introduced in v20.2.0 and is now fixed. [#92713][#92713] -- Fixed a link to index details on the **Drop Index Insights** in the Cloud Console. [#92953][#92953] -- Fixed a bug where encoding of `ARRAY` type to Parquet format would fail in some cases during the `EXPORT` command. [#92948][#92948] -- Fixed a rare panic only present in v22.2.0 that occurs when using particular forms of existing statistics in table statistics forecasting. [#92707][#92707] -- In the presence of several backup files, CockroachDB now speeds up slow listing calls that could manifest as restore queries hanging during execution. [#93072][#93072] -- Prepared statements that use type hints can now succeed type-checking in more cases when the placeholder type is ambiguous. [#92834][#92834] -- Fixed a bug where glob patterns that matched no tables in `GRANT` or `REVOKE` statements would return an internal error with a confusing message as opposed to the appropriate "no objects matched" error. [#93173][#93173] -- Fixed a bug where empty `COPY` commands would not escape after an EOF character or error if encountering a `\.` with no input. [#93100][#93100] -- Fixed a bug where in PostgreSQL extended protocol mode it was possible for auto-commits to not execute certain logic for DDL, when certain DML (insert/update/delete) and DDL were combined in an implicit transaction. [#93283][#93283] -- Fixed the `pg_table_is_visible` built-in function so it correctly reports visibility of indexes based on the current `search_path`. [#90649][#90649] -- Fixed a bug that would result in incomplete backups when non-default, non-public resource limiting settings (`kv.bulk_sst.max_request_time` or `admission.elastic_cpu.enabled`) were enabled. [#92825][#92825] -- The `pg_function_is_visible` function now correctly reports visibility based on the functions that are visible on the current `search_path`. [#90657][#90657] -- Fixed a rare bug that could cause upgrades from v22.1 to v22.2 to fail if the job coordinator node crashes in the middle of a specific upgrade migration. [#93487][#93487] -- Fixed a bug for queries with disjunctions (i.e., contains `OR`) where all the columns referenced in the disjunctions are known to have a single value. [#93480][#93480] -- Fixed a bug introduced in v22.1.0 in which the non-default nulls ordering, `NULLS LAST`, was ignored in window and aggregate functions. This bug would cause incorrect query results when `NULLS LAST` was used. [#93426][#93426] -- Fixed a bug that caused an internal error when trying to execute a UDF with an empty function body. This bug was present since UDFs were introduced in v22.2.0. [#93331][#93331] -- Fixed an issue where `DISTINCT ON` queries would fail with the error "SELECT DISTINCT ON expressions must match initial ORDER BY expressions" when the query included an `ORDER BY` clause containing `ASC NULLS LAST` or `DESC NULLS FIRST`. [#93567][#93567] -- Fixed a bug where selecting a small timeframe in the past in a timeseries query resulted in no data in the graphs. [#93293][#93293] -- Fixed a bug where CockroachDB would error when receiving Geometry/Geography using binary parameters. [#93563][#93563] -- Fixed an internal error that could occur when comparing a column of type void to `NULL` using `col IS NULL` or `col IS NOT NULL`. [#93652][#93652] -- Fixed a bug where a query would incorrectly pass if a given interval for `AS OF SYSTEM TIME` interval was a small positive duration. [#93146][#93146] +- The flag `--sql-advertise-addr` now properly works even when the SQL and RPC ports are shared (because `--sql-addr` was not specified). Note that this port sharing is a deprecated feature in v22.2. +- Fixed a bug introduced in v21.2 that could cause an internal error in rare cases when a query required a constrained index scan to return results in order. +- Fixed a bug that existed from before v21.1 that could cause an internal error when executing a query with a limit ordering on the output of a window function. +- Fixed an incorrect default value of `cloudstorage.gs.chunking.retry_timeout` to 60 seconds +- Fixed a bug in `pg_catalog` tables that could result in an internal error if a schema is concurrently dropped. +- Fixed a bug that caused `ALTER CHANGEFEED` to fail if the changefeed was created with a cursor option and had been running for more than `gc.ttlseconds`. +- Fixed a bug that could cause a panic when running a query with `EXPLAIN` that attempts to order on a non-output column. +- Fixed missing automatic statistics collection at cluster startup when the `sql.stats.automatic_collection.enabled` cluster setting is false, but there are tables with the storage parameter `sql_stats_automatic_collection_enabled` set to true. +- Fixes an issue where when a statement bundle was collected for a query that results in an error due to a `statement_timeout`, the bundle would not be saved. +- CockroachDB now excludes check constraints of hash-shared indexes from being invalidated when executing `IMPORT INTO`. +- CockroachDB now flushes WAL when writing storage checkpoints on consistency checker failures. +- Fixed optimizer selectivity and cost estimates of zigzag joins in order to prevent query plans from using it when it would perform poorly (e.g., when many rows are qualified). +- Changefeeds will now never permanently error on a "failed to send RPC" error. +- Fixed a bug that could occur when dropping a role that owned two schemas with the same name in different databases. The bug was introduced in v22.1.0. +- CockroachDB now avoids a source of internal connectivity problems that would resolve after restarting the affected node. +- CockroachDB now shows the correct value on table stats on UI, when there are no values to show. +- Charts on the **Statement Details** page in the DB Console are no longer overlapping. +- It is now possible to create tables, views, columns, etc. with the name `nothing` (e.g., `CREATE TABLE nothing...`) without having to quote the name, like in PostgreSQL. This bug was introduced in CockroachDB v2.0. +- Fixed detection and erroring out of queries using locality-optimized joins when the session setting `enforce_home_region` is true and the input table to the join has no home region or its home region does not match the gateway region. +- Fixed an issue with the `enforce_home_region` session setting which may cause `SHOW CREATE TABLE` or other non-DML statements to error out if the optimizer plan for the statement involves accessing a multi-region table. +- Fixed a bug in `changefeed.batch_reduction_retry` which resulted in only a single level of retry being able to occur. +- During JWT based auth, CockroachDB now infers the algorithm type if it is not specified by the JWKS. This enables support for a wider range of keys. +- Fixed an extremely rare out of bounds crash in the protected timestamp subsystem. +- Fixed the calculation of the `pg_attribute.attnum` column for indexes so that the `attnum` is always based on the order the column appears in the index. Also fixed the `pg_attribute` table so that it includes stored columns in secondary indexes. +- Fixed a bug in the DB Console where when the height of the filter was big, you had to scroll to get to the **Apply** button. +- Fixed a bug in the DB Console to now send the proper start and end values to the endpoint used on the **SQL Activity** page so it returns the full hour as described on the UI. +- Fixed a rare bug where concurrent follower read/split operations could lead to invalid read results. +- Fixed a bug that could cause `UPDATE .. FROM` clauses to update the same row multiple times, resulting in incorrect `UPDATED` row counts and duplicate output rows for statements with a `RETURNING` clause. The bug only appeared when the target table had a hidden primary key column (e.g., an implicit `rowid` primary key column). The bug has been present since support for `UPDATE .. FROM` was added in v19.0. +- Protected timestamps are now created during index validation. Before, index validation could be starved if it took longer than any GC jobs for a given table. +- Fixed a bug where `SELECT *` operations on tables with virtual computed columns undergoing schema changes could potentially fail. +- Fixed a bug where in large, multi-region clusters it was possible for the leasing mechanism used for jobs to get caught in a live-lock scenario whereby jobs could not be adopted. +- CockroachDB now ensures changefeeds shut down when one of the aggregator nodes returns an error. +- Fixed a bug the occurred when attempting to reduce the size of a fixed-size `VARCHAR` column. +- Fixed a bug that caused ranges to remain without a leaseholder in cases of asymmetric network partitions. +- Fixed a bug that would prevent data from a failed restore from being cleaned up quickly. +- Fixed a bug which, in rare cases, could result in a changefeed missing rows which occur around the time of a split in writing transactions which take longer than the closed timestamp target duration (defaults to 3s). +- Fixed a bug where point lookups on the `pg_catalog.pg_type` table would fail to find the implicit record type that gets created for tables in the `pg_catalog`, `information_schema`, and `crdb_internal` schemas. +- Fixed a bug that prevented the usage of implicit record types for tables in the `pg_catalog`, `information_schema`, and `crdb_internal` schemas. +- Fixed a bug that could result in transient errors when dropping a database and immediately recreating a database with the same name and connecting to it for use. +- Fixes a bug that resulted in the regions listed for databases and tables including an incorrect list of regions due to the logic including information about tables which are adjacent in the keyspace. +- Fixed a bug where the experimental `scrub` command did not handle type descriptors in the database. +- Fixed a panic that could occur when calling `st_distancespheroid` or `st_distancesphere` with a spatial object containing an `NaN` coordinate. This now produces an error, with the message "input is out of range". +- Fixed a bug that could result in infrequent progress updates for very large backup or restore jobs. +- Added leading zeros to fingerprint IDs with less than 16 characters. +- Fixed a bug causing changefeeds to fail when a value is deleted while running on a non-primary column family with multiple columns. +- Fixed a bug that existed since before v21.1 where the `cgroup` memory limit was undetected when using `systemd`. +- Fixed a bug that existed since v20.2 that could cause incorrect results in rare cases for queries with inner joins and left joins. +- Fixed an unhandled error that could happen if `ALTER DEFAULT PRIVILEGES` was run on the system database. +- CockroachDB now prevents schema changes on the `crdb_internal_expiration` table. +- When configured to true, the `sql.metrics.statement_details.dump_to_logs` cluster setting no longer causes a mutex deadlock. +- Fixed a bug that could lead to errors when running multiple schema change statements in a single command using a driver that uses the extended pgwire protocol internally (for example the Npgsql C# driver). The error messages was "attempted to update job for mutation 2, but job already exists with mutation 1". +- Fixed the **Statement Activity** page so that it no longer shows multi-statement implicit transactions as "explicit." +- Server crashes that occur during startup are now more clearly reported in logs and the standard error output. +- Fixed incorrect cancellation logic when attempting to detect stuck rangefeeds. +- Fixed an internal error when comparing a tuple type with a non-tuple type. +- Fixed incorrect selectivity estimation for queries with `OR` predicates all referencing a common single table. +- Added sort setting to tables on the **Transaction** and **Statement Insights Details** pages. +- Fixed an issue where `changefeed.emitted_messages` would be increased twice per message for changefeed cloud storage sinks. +- Fixed a bug where `attidentity` in `pg_attribute` for the `GENERATED BY DEFAULT AS IDENTITY` column should be `d`. +- CockroachDB previously could incorrectly evaluate queries that performed left semi and left anti "virtual lookup" joins on tables in `pg_catalog` or `information_schema`. These join types can be planned when a subquery is used inside of a filter condition. The bug was introduced in v20.2.0 and is now fixed. +- Fixed a link to index details on the **Drop Index Insights** in the Cloud Console. +- Fixed a bug where encoding of `ARRAY` type to Parquet format would fail in some cases during the `EXPORT` command. +- Fixed a rare panic only present in v22.2.0 that occurs when using particular forms of existing statistics in table statistics forecasting. +- In the presence of several backup files, CockroachDB now speeds up slow listing calls that could manifest as restore queries hanging during execution. +- Prepared statements that use type hints can now succeed type-checking in more cases when the placeholder type is ambiguous. +- Fixed a bug where glob patterns that matched no tables in `GRANT` or `REVOKE` statements would return an internal error with a confusing message as opposed to the appropriate "no objects matched" error. +- Fixed a bug where empty `COPY` commands would not escape after an EOF character or error if encountering a `\.` with no input. +- Fixed a bug where in PostgreSQL extended protocol mode it was possible for auto-commits to not execute certain logic for DDL, when certain DML (insert/update/delete) and DDL were combined in an implicit transaction. +- Fixed the `pg_table_is_visible` built-in function so it correctly reports visibility of indexes based on the current `search_path`. +- Fixed a bug that would result in incomplete backups when non-default, non-public resource limiting settings (`kv.bulk_sst.max_request_time` or `admission.elastic_cpu.enabled`) were enabled. +- The `pg_function_is_visible` function now correctly reports visibility based on the functions that are visible on the current `search_path`. +- Fixed a rare bug that could cause upgrades from v22.1 to v22.2 to fail if the job coordinator node crashes in the middle of a specific upgrade migration. +- Fixed a bug for queries with disjunctions (i.e., contains `OR`) where all the columns referenced in the disjunctions are known to have a single value. +- Fixed a bug introduced in v22.1.0 in which the non-default nulls ordering, `NULLS LAST`, was ignored in window and aggregate functions. This bug would cause incorrect query results when `NULLS LAST` was used. +- Fixed a bug that caused an internal error when trying to execute a UDF with an empty function body. This bug was present since UDFs were introduced in v22.2.0. +- Fixed an issue where `DISTINCT ON` queries would fail with the error "SELECT DISTINCT ON expressions must match initial ORDER BY expressions" when the query included an `ORDER BY` clause containing `ASC NULLS LAST` or `DESC NULLS FIRST`. +- Fixed a bug where selecting a small timeframe in the past in a timeseries query resulted in no data in the graphs. +- Fixed a bug where CockroachDB would error when receiving Geometry/Geography using binary parameters. +- Fixed an internal error that could occur when comparing a column of type void to `NULL` using `col IS NULL` or `col IS NOT NULL`. +- Fixed a bug where a query would incorrectly pass if a given interval for `AS OF SYSTEM TIME` interval was a small positive duration.

Performance improvements

-- The [optimizer]({% link v23.1/cost-based-optimizer.md %}) will now plan [inverted index]({% link v23.1/inverted-indexes.md %}) scans for queries with JSON subscripting filters, like `json_col['field'] = '"value"`. [#87957][#87957] -- CockroachDB now avoids wasteful contention on the gossip mutex caused by checking if the network needs tightening hundreds of times per second. [#88472][#88472] -- Some types of queries with comparisons with constant values now execute faster. [#88638][#88638] -- The [optimizer]({% link v23.1/cost-based-optimizer.md %}) now explores plans with a single [lookup join]({% link v23.1/joins.md %}#lookup-joins) expressions in rare cases where it previously planned two lookup join expressions. [#88491][#88491] -- Consistency checks are now properly cancelled on timeout, preventing them from piling up. [#86591][#86591] -- Raft ticks now adapt to scheduling delays. This helps preventing re-elections, and the corresponding performance effects, in the event of relatively short (sub-second) processing delays. [#86240][#86240] -- HTTP requests with `Accept-encoding: gzip` previously resulted in valid GZIP-encoded, but uncompressed, responses. This resulted in inefficient HTTP transfer times, as far more bytes were transferred than necessary. Those responses are now properly compressed, resulting in smaller network responses. [#88950][#88950] -- `pg_catalog.col_description` is now much faster when resolving columns for tables in the `pg_catalog`, `crdb_internal`, or `information_schema` namespaces. [#89465][#89465] -- The [optimizer]({% link v23.1/cost-based-optimizer.md %}) now does less copying of histograms while planning queries, which will reduce memory pressure a little. [#88526][#88526] -- Added early inlining of `VALUES` clauses and unnested arrays in `WITH` queries in order to eliminate unnecessary joins. [#87790][#87790] -- Added significantly faster JSON parsing, which should help with any workloads that insert large amounts of JSON data, including [`IMPORT`]({% link v23.1/import.md %}) workloads. [#89884][#89884] -- Loading the **Database Details** page in the DB Console is now somewhat less expensive when there are a large number of databases and a large number of tables in each database and a large number of ranges in the cluster. [#90198][#90198] -- Tables in `pg_catalog` and `information_schema` (when not explicitly referenced as `"".information_schema`) may now be much faster if the current database has a small number of relations relative to the total number in the cluster. [#90116][#90116] -- The overhead of running [`EXPLAIN ANALYZE`]({% link v23.1/explain-analyze.md %}) and `EXPLAIN ANALYZE (DISTSQL)` has been significantly reduced. The overhead of `EXPLAIN ANALYZE (DEBUG)` did not change. [#91117][#91117] -- Enabled more efficient [lookup joins]({% link v23.1/joins.md %}#lookup-joins) by deriving new join constraints when equijoin predicates exist on the column(s) of a unique constraint on one table which are a proper subset of the referencing columns of a foreign key constraint on the other table. If an index exists on those foreign key constraint referencing columns, equijoin predicates are derived between the primary key and foreign key columns not currently bound by `ON` clause predicates. [#90599][#90599] -- The setup of the distributed query execution is now fully parallelized which should reduce the query latencies, especially in multi-region setups. [#89649][#89649] -- Performance of the `LIKE` and `ILIKE` operators using patterns without any wildcards has been improved. [#91895][#91895] -- The [optimizer]({% link v23.1/cost-based-optimizer.md %}) can now better calculate the properties of recursive [common table expressions]({% link v23.1/common-table-expressions.md %}) in the presence of a `LIMIT`. [#90725][#90725] -- Certain types of reads will now have a far smaller contention footprint with conflicting concurrent writers. [#85993][#85993] -- In some cases, the key-value store client now needs to look up where to send requests. Prior to this change, such lookup requests were always routed to the leaseholder of the metadata range storing that information. Now the client can attempt to look up this metadata from followers. This can improve tail latency in multi-region clusters in cases where the range addressing cache is cold. [#91638][#91638] -- The garbage collection score triggering a MVCC GC run has been lowered. The GC Score is a ratio computed from MVCC stats and uses the ratio of live objects and estimated garbage age to estimate collectability of existing data. The reduced score will trigger garbage collection earlier, lowering the interval between runs 3 times, giving 2 times reduced peak garbage usage at the expense of 30% increase of wasteful data scanning on constantly updated data. [#92118][#92118] -- CockroachDB in some cases now correctly incorporates the value of the `OFFSET` clause when determining the number of rows that need to be read when the `LIMIT` clause is also present. Note that there was no correctness issue here, only that extra unnecessary rows could be read. [#92779][#92779] -- In 22.2, privileges on virtual tables (system catalogs like `pg_catalog`, `information_schema`, and `crdb_internal`) were introduced. A problem with this new feature is that we now must fetch those privileges into a cache before we can use those tables or determine their visibility in other system catalogs. This process used to occur on-demand, when the privilege was needed. Now, CockroachDB will fetch these privileges eagerly during startup to mitigate latency when accessing `pg_catalog` right after the server boots up. [#93557][#93557] +- The [optimizer]({% link v23.1/cost-based-optimizer.md %}) will now plan [inverted index]({% link v23.1/inverted-indexes.md %}) scans for queries with JSON subscripting filters, like `json_col['field'] = '"value"`. +- CockroachDB now avoids wasteful contention on the gossip mutex caused by checking if the network needs tightening hundreds of times per second. +- Some types of queries with comparisons with constant values now execute faster. +- The [optimizer]({% link v23.1/cost-based-optimizer.md %}) now explores plans with a single [lookup join]({% link v23.1/joins.md %}#lookup-joins) expressions in rare cases where it previously planned two lookup join expressions. +- Consistency checks are now properly cancelled on timeout, preventing them from piling up. +- Raft ticks now adapt to scheduling delays. This helps preventing re-elections, and the corresponding performance effects, in the event of relatively short (sub-second) processing delays. +- HTTP requests with `Accept-encoding: gzip` previously resulted in valid GZIP-encoded, but uncompressed, responses. This resulted in inefficient HTTP transfer times, as far more bytes were transferred than necessary. Those responses are now properly compressed, resulting in smaller network responses. +- `pg_catalog.col_description` is now much faster when resolving columns for tables in the `pg_catalog`, `crdb_internal`, or `information_schema` namespaces. +- The [optimizer]({% link v23.1/cost-based-optimizer.md %}) now does less copying of histograms while planning queries, which will reduce memory pressure a little. +- Added early inlining of `VALUES` clauses and unnested arrays in `WITH` queries in order to eliminate unnecessary joins. +- Added significantly faster JSON parsing, which should help with any workloads that insert large amounts of JSON data, including [`IMPORT`]({% link v23.1/import.md %}) workloads. +- Loading the **Database Details** page in the DB Console is now somewhat less expensive when there are a large number of databases and a large number of tables in each database and a large number of ranges in the cluster. +- Tables in `pg_catalog` and `information_schema` (when not explicitly referenced as `"".information_schema`) may now be much faster if the current database has a small number of relations relative to the total number in the cluster. +- The overhead of running [`EXPLAIN ANALYZE`]({% link v23.1/explain-analyze.md %}) and `EXPLAIN ANALYZE (DISTSQL)` has been significantly reduced. The overhead of `EXPLAIN ANALYZE (DEBUG)` did not change. +- Enabled more efficient [lookup joins]({% link v23.1/joins.md %}#lookup-joins) by deriving new join constraints when equijoin predicates exist on the column(s) of a unique constraint on one table which are a proper subset of the referencing columns of a foreign key constraint on the other table. If an index exists on those foreign key constraint referencing columns, equijoin predicates are derived between the primary key and foreign key columns not currently bound by `ON` clause predicates. +- The setup of the distributed query execution is now fully parallelized which should reduce the query latencies, especially in multi-region setups. +- Performance of the `LIKE` and `ILIKE` operators using patterns without any wildcards has been improved. +- The [optimizer]({% link v23.1/cost-based-optimizer.md %}) can now better calculate the properties of recursive [common table expressions]({% link v23.1/common-table-expressions.md %}) in the presence of a `LIMIT`. +- Certain types of reads will now have a far smaller contention footprint with conflicting concurrent writers. +- In some cases, the key-value store client now needs to look up where to send requests. Prior to this change, such lookup requests were always routed to the leaseholder of the metadata range storing that information. Now the client can attempt to look up this metadata from followers. This can improve tail latency in multi-region clusters in cases where the range addressing cache is cold. +- The garbage collection score triggering a MVCC GC run has been lowered. The GC Score is a ratio computed from MVCC stats and uses the ratio of live objects and estimated garbage age to estimate collectability of existing data. The reduced score will trigger garbage collection earlier, lowering the interval between runs 3 times, giving 2 times reduced peak garbage usage at the expense of 30% increase of wasteful data scanning on constantly updated data. +- CockroachDB in some cases now correctly incorporates the value of the `OFFSET` clause when determining the number of rows that need to be read when the `LIMIT` clause is also present. Note that there was no correctness issue here, only that extra unnecessary rows could be read. +- In 22.2, privileges on virtual tables (system catalogs like `pg_catalog`, `information_schema`, and `crdb_internal`) were introduced. A problem with this new feature is that we now must fetch those privileges into a cache before we can use those tables or determine their visibility in other system catalogs. This process used to occur on-demand, when the privilege was needed. Now, CockroachDB will fetch these privileges eagerly during startup to mitigate latency when accessing `pg_catalog` right after the server boots up.
@@ -310,279 +310,3 @@ We would like to thank the following contributors from the CockroachDB community - shralex
- -[#80848]: https://github.com/cockroachdb/cockroach/pull/80848 -[#82028]: https://github.com/cockroachdb/cockroach/pull/82028 -[#82891]: https://github.com/cockroachdb/cockroach/pull/82891 -[#84509]: https://github.com/cockroachdb/cockroach/pull/84509 -[#84888]: https://github.com/cockroachdb/cockroach/pull/84888 -[#85177]: https://github.com/cockroachdb/cockroach/pull/85177 -[#85993]: https://github.com/cockroachdb/cockroach/pull/85993 -[#86106]: https://github.com/cockroachdb/cockroach/pull/86106 -[#86176]: https://github.com/cockroachdb/cockroach/pull/86176 -[#86240]: https://github.com/cockroachdb/cockroach/pull/86240 -[#86457]: https://github.com/cockroachdb/cockroach/pull/86457 -[#86591]: https://github.com/cockroachdb/cockroach/pull/86591 -[#86603]: https://github.com/cockroachdb/cockroach/pull/86603 -[#86968]: https://github.com/cockroachdb/cockroach/pull/86968 -[#87166]: https://github.com/cockroachdb/cockroach/pull/87166 -[#87244]: https://github.com/cockroachdb/cockroach/pull/87244 -[#87320]: https://github.com/cockroachdb/cockroach/pull/87320 -[#87412]: https://github.com/cockroachdb/cockroach/pull/87412 -[#87562]: https://github.com/cockroachdb/cockroach/pull/87562 -[#87606]: https://github.com/cockroachdb/cockroach/pull/87606 -[#87763]: https://github.com/cockroachdb/cockroach/pull/87763 -[#87790]: https://github.com/cockroachdb/cockroach/pull/87790 -[#87817]: https://github.com/cockroachdb/cockroach/pull/87817 -[#87957]: https://github.com/cockroachdb/cockroach/pull/87957 -[#87994]: https://github.com/cockroachdb/cockroach/pull/87994 -[#88064]: https://github.com/cockroachdb/cockroach/pull/88064 -[#88080]: https://github.com/cockroachdb/cockroach/pull/88080 -[#88136]: https://github.com/cockroachdb/cockroach/pull/88136 -[#88173]: https://github.com/cockroachdb/cockroach/pull/88173 -[#88342]: https://github.com/cockroachdb/cockroach/pull/88342 -[#88395]: https://github.com/cockroachdb/cockroach/pull/88395 -[#88402]: https://github.com/cockroachdb/cockroach/pull/88402 -[#88441]: https://github.com/cockroachdb/cockroach/pull/88441 -[#88472]: https://github.com/cockroachdb/cockroach/pull/88472 -[#88491]: https://github.com/cockroachdb/cockroach/pull/88491 -[#88526]: https://github.com/cockroachdb/cockroach/pull/88526 -[#88539]: https://github.com/cockroachdb/cockroach/pull/88539 -[#88562]: https://github.com/cockroachdb/cockroach/pull/88562 -[#88568]: https://github.com/cockroachdb/cockroach/pull/88568 -[#88625]: https://github.com/cockroachdb/cockroach/pull/88625 -[#88635]: https://github.com/cockroachdb/cockroach/pull/88635 -[#88638]: https://github.com/cockroachdb/cockroach/pull/88638 -[#88672]: https://github.com/cockroachdb/cockroach/pull/88672 -[#88673]: https://github.com/cockroachdb/cockroach/pull/88673 -[#88720]: https://github.com/cockroachdb/cockroach/pull/88720 -[#88770]: https://github.com/cockroachdb/cockroach/pull/88770 -[#88798]: https://github.com/cockroachdb/cockroach/pull/88798 -[#88861]: https://github.com/cockroachdb/cockroach/pull/88861 -[#88950]: https://github.com/cockroachdb/cockroach/pull/88950 -[#88974]: https://github.com/cockroachdb/cockroach/pull/88974 -[#89021]: https://github.com/cockroachdb/cockroach/pull/89021 -[#89033]: https://github.com/cockroachdb/cockroach/pull/89033 -[#89035]: https://github.com/cockroachdb/cockroach/pull/89035 -[#89124]: https://github.com/cockroachdb/cockroach/pull/89124 -[#89150]: https://github.com/cockroachdb/cockroach/pull/89150 -[#89217]: https://github.com/cockroachdb/cockroach/pull/89217 -[#89231]: https://github.com/cockroachdb/cockroach/pull/89231 -[#89256]: https://github.com/cockroachdb/cockroach/pull/89256 -[#89261]: https://github.com/cockroachdb/cockroach/pull/89261 -[#89329]: https://github.com/cockroachdb/cockroach/pull/89329 -[#89333]: https://github.com/cockroachdb/cockroach/pull/89333 -[#89358]: https://github.com/cockroachdb/cockroach/pull/89358 -[#89369]: https://github.com/cockroachdb/cockroach/pull/89369 -[#89392]: https://github.com/cockroachdb/cockroach/pull/89392 -[#89451]: https://github.com/cockroachdb/cockroach/pull/89451 -[#89465]: https://github.com/cockroachdb/cockroach/pull/89465 -[#89502]: https://github.com/cockroachdb/cockroach/pull/89502 -[#89504]: https://github.com/cockroachdb/cockroach/pull/89504 -[#89517]: https://github.com/cockroachdb/cockroach/pull/89517 -[#89531]: https://github.com/cockroachdb/cockroach/pull/89531 -[#89539]: https://github.com/cockroachdb/cockroach/pull/89539 -[#89540]: https://github.com/cockroachdb/cockroach/pull/89540 -[#89557]: https://github.com/cockroachdb/cockroach/pull/89557 -[#89649]: https://github.com/cockroachdb/cockroach/pull/89649 -[#89650]: https://github.com/cockroachdb/cockroach/pull/89650 -[#89668]: https://github.com/cockroachdb/cockroach/pull/89668 -[#89678]: https://github.com/cockroachdb/cockroach/pull/89678 -[#89757]: https://github.com/cockroachdb/cockroach/pull/89757 -[#89768]: https://github.com/cockroachdb/cockroach/pull/89768 -[#89780]: https://github.com/cockroachdb/cockroach/pull/89780 -[#89847]: https://github.com/cockroachdb/cockroach/pull/89847 -[#89867]: https://github.com/cockroachdb/cockroach/pull/89867 -[#89873]: https://github.com/cockroachdb/cockroach/pull/89873 -[#89884]: https://github.com/cockroachdb/cockroach/pull/89884 -[#89886]: https://github.com/cockroachdb/cockroach/pull/89886 -[#89899]: https://github.com/cockroachdb/cockroach/pull/89899 -[#89903]: https://github.com/cockroachdb/cockroach/pull/89903 -[#89913]: https://github.com/cockroachdb/cockroach/pull/89913 -[#89971]: https://github.com/cockroachdb/cockroach/pull/89971 -[#89989]: https://github.com/cockroachdb/cockroach/pull/89989 -[#90000]: https://github.com/cockroachdb/cockroach/pull/90000 -[#90002]: https://github.com/cockroachdb/cockroach/pull/90002 -[#90007]: https://github.com/cockroachdb/cockroach/pull/90007 -[#90014]: https://github.com/cockroachdb/cockroach/pull/90014 -[#90055]: https://github.com/cockroachdb/cockroach/pull/90055 -[#90070]: https://github.com/cockroachdb/cockroach/pull/90070 -[#90107]: https://github.com/cockroachdb/cockroach/pull/90107 -[#90116]: https://github.com/cockroachdb/cockroach/pull/90116 -[#90153]: https://github.com/cockroachdb/cockroach/pull/90153 -[#90198]: https://github.com/cockroachdb/cockroach/pull/90198 -[#90210]: https://github.com/cockroachdb/cockroach/pull/90210 -[#90218]: https://github.com/cockroachdb/cockroach/pull/90218 -[#90250]: https://github.com/cockroachdb/cockroach/pull/90250 -[#90270]: https://github.com/cockroachdb/cockroach/pull/90270 -[#90287]: https://github.com/cockroachdb/cockroach/pull/90287 -[#90357]: https://github.com/cockroachdb/cockroach/pull/90357 -[#90403]: https://github.com/cockroachdb/cockroach/pull/90403 -[#90427]: https://github.com/cockroachdb/cockroach/pull/90427 -[#90439]: https://github.com/cockroachdb/cockroach/pull/90439 -[#90457]: https://github.com/cockroachdb/cockroach/pull/90457 -[#90485]: https://github.com/cockroachdb/cockroach/pull/90485 -[#90488]: https://github.com/cockroachdb/cockroach/pull/90488 -[#90491]: https://github.com/cockroachdb/cockroach/pull/90491 -[#90520]: https://github.com/cockroachdb/cockroach/pull/90520 -[#90599]: https://github.com/cockroachdb/cockroach/pull/90599 -[#90619]: https://github.com/cockroachdb/cockroach/pull/90619 -[#90649]: https://github.com/cockroachdb/cockroach/pull/90649 -[#90657]: https://github.com/cockroachdb/cockroach/pull/90657 -[#90660]: https://github.com/cockroachdb/cockroach/pull/90660 -[#90670]: https://github.com/cockroachdb/cockroach/pull/90670 -[#90725]: https://github.com/cockroachdb/cockroach/pull/90725 -[#90767]: https://github.com/cockroachdb/cockroach/pull/90767 -[#90789]: https://github.com/cockroachdb/cockroach/pull/90789 -[#90810]: https://github.com/cockroachdb/cockroach/pull/90810 -[#90842]: https://github.com/cockroachdb/cockroach/pull/90842 -[#90865]: https://github.com/cockroachdb/cockroach/pull/90865 -[#90875]: https://github.com/cockroachdb/cockroach/pull/90875 -[#90924]: https://github.com/cockroachdb/cockroach/pull/90924 -[#90956]: https://github.com/cockroachdb/cockroach/pull/90956 -[#90981]: https://github.com/cockroachdb/cockroach/pull/90981 -[#91040]: https://github.com/cockroachdb/cockroach/pull/91040 -[#91078]: https://github.com/cockroachdb/cockroach/pull/91078 -[#91085]: https://github.com/cockroachdb/cockroach/pull/91085 -[#91098]: https://github.com/cockroachdb/cockroach/pull/91098 -[#91116]: https://github.com/cockroachdb/cockroach/pull/91116 -[#91117]: https://github.com/cockroachdb/cockroach/pull/91117 -[#91130]: https://github.com/cockroachdb/cockroach/pull/91130 -[#91153]: https://github.com/cockroachdb/cockroach/pull/91153 -[#91162]: https://github.com/cockroachdb/cockroach/pull/91162 -[#91174]: https://github.com/cockroachdb/cockroach/pull/91174 -[#91179]: https://github.com/cockroachdb/cockroach/pull/91179 -[#91205]: https://github.com/cockroachdb/cockroach/pull/91205 -[#91228]: https://github.com/cockroachdb/cockroach/pull/91228 -[#91248]: https://github.com/cockroachdb/cockroach/pull/91248 -[#91255]: https://github.com/cockroachdb/cockroach/pull/91255 -[#91290]: https://github.com/cockroachdb/cockroach/pull/91290 -[#91323]: https://github.com/cockroachdb/cockroach/pull/91323 -[#91382]: https://github.com/cockroachdb/cockroach/pull/91382 -[#91425]: https://github.com/cockroachdb/cockroach/pull/91425 -[#91564]: https://github.com/cockroachdb/cockroach/pull/91564 -[#91604]: https://github.com/cockroachdb/cockroach/pull/91604 -[#91629]: https://github.com/cockroachdb/cockroach/pull/91629 -[#91638]: https://github.com/cockroachdb/cockroach/pull/91638 -[#91668]: https://github.com/cockroachdb/cockroach/pull/91668 -[#91689]: https://github.com/cockroachdb/cockroach/pull/91689 -[#91698]: https://github.com/cockroachdb/cockroach/pull/91698 -[#91720]: https://github.com/cockroachdb/cockroach/pull/91720 -[#91762]: https://github.com/cockroachdb/cockroach/pull/91762 -[#91789]: https://github.com/cockroachdb/cockroach/pull/91789 -[#91823]: https://github.com/cockroachdb/cockroach/pull/91823 -[#91870]: https://github.com/cockroachdb/cockroach/pull/91870 -[#91885]: https://github.com/cockroachdb/cockroach/pull/91885 -[#91895]: https://github.com/cockroachdb/cockroach/pull/91895 -[#91947]: https://github.com/cockroachdb/cockroach/pull/91947 -[#91955]: https://github.com/cockroachdb/cockroach/pull/91955 -[#92017]: https://github.com/cockroachdb/cockroach/pull/92017 -[#92075]: https://github.com/cockroachdb/cockroach/pull/92075 -[#92118]: https://github.com/cockroachdb/cockroach/pull/92118 -[#92131]: https://github.com/cockroachdb/cockroach/pull/92131 -[#92231]: https://github.com/cockroachdb/cockroach/pull/92231 -[#92232]: https://github.com/cockroachdb/cockroach/pull/92232 -[#92253]: https://github.com/cockroachdb/cockroach/pull/92253 -[#92263]: https://github.com/cockroachdb/cockroach/pull/92263 -[#92272]: https://github.com/cockroachdb/cockroach/pull/92272 -[#92284]: https://github.com/cockroachdb/cockroach/pull/92284 -[#92300]: https://github.com/cockroachdb/cockroach/pull/92300 -[#92330]: https://github.com/cockroachdb/cockroach/pull/92330 -[#92351]: https://github.com/cockroachdb/cockroach/pull/92351 -[#92357]: https://github.com/cockroachdb/cockroach/pull/92357 -[#92406]: https://github.com/cockroachdb/cockroach/pull/92406 -[#92408]: https://github.com/cockroachdb/cockroach/pull/92408 -[#92463]: https://github.com/cockroachdb/cockroach/pull/92463 -[#92464]: https://github.com/cockroachdb/cockroach/pull/92464 -[#92542]: https://github.com/cockroachdb/cockroach/pull/92542 -[#92545]: https://github.com/cockroachdb/cockroach/pull/92545 -[#92571]: https://github.com/cockroachdb/cockroach/pull/92571 -[#92573]: https://github.com/cockroachdb/cockroach/pull/92573 -[#92582]: https://github.com/cockroachdb/cockroach/pull/92582 -[#92591]: https://github.com/cockroachdb/cockroach/pull/92591 -[#92612]: https://github.com/cockroachdb/cockroach/pull/92612 -[#92635]: https://github.com/cockroachdb/cockroach/pull/92635 -[#92685]: https://github.com/cockroachdb/cockroach/pull/92685 -[#92694]: https://github.com/cockroachdb/cockroach/pull/92694 -[#92695]: https://github.com/cockroachdb/cockroach/pull/92695 -[#92707]: https://github.com/cockroachdb/cockroach/pull/92707 -[#92713]: https://github.com/cockroachdb/cockroach/pull/92713 -[#92765]: https://github.com/cockroachdb/cockroach/pull/92765 -[#92775]: https://github.com/cockroachdb/cockroach/pull/92775 -[#92779]: https://github.com/cockroachdb/cockroach/pull/92779 -[#92825]: https://github.com/cockroachdb/cockroach/pull/92825 -[#92834]: https://github.com/cockroachdb/cockroach/pull/92834 -[#92871]: https://github.com/cockroachdb/cockroach/pull/92871 -[#92948]: https://github.com/cockroachdb/cockroach/pull/92948 -[#92951]: https://github.com/cockroachdb/cockroach/pull/92951 -[#92953]: https://github.com/cockroachdb/cockroach/pull/92953 -[#92957]: https://github.com/cockroachdb/cockroach/pull/92957 -[#93072]: https://github.com/cockroachdb/cockroach/pull/93072 -[#93100]: https://github.com/cockroachdb/cockroach/pull/93100 -[#93146]: https://github.com/cockroachdb/cockroach/pull/93146 -[#93173]: https://github.com/cockroachdb/cockroach/pull/93173 -[#93211]: https://github.com/cockroachdb/cockroach/pull/93211 -[#93217]: https://github.com/cockroachdb/cockroach/pull/93217 -[#93255]: https://github.com/cockroachdb/cockroach/pull/93255 -[#93283]: https://github.com/cockroachdb/cockroach/pull/93283 -[#93293]: https://github.com/cockroachdb/cockroach/pull/93293 -[#93300]: https://github.com/cockroachdb/cockroach/pull/93300 -[#93331]: https://github.com/cockroachdb/cockroach/pull/93331 -[#93343]: https://github.com/cockroachdb/cockroach/pull/93343 -[#93399]: https://github.com/cockroachdb/cockroach/pull/93399 -[#93416]: https://github.com/cockroachdb/cockroach/pull/93416 -[#93418]: https://github.com/cockroachdb/cockroach/pull/93418 -[#93423]: https://github.com/cockroachdb/cockroach/pull/93423 -[#93426]: https://github.com/cockroachdb/cockroach/pull/93426 -[#93480]: https://github.com/cockroachdb/cockroach/pull/93480 -[#93487]: https://github.com/cockroachdb/cockroach/pull/93487 -[#93528]: https://github.com/cockroachdb/cockroach/pull/93528 -[#93545]: https://github.com/cockroachdb/cockroach/pull/93545 -[#93557]: https://github.com/cockroachdb/cockroach/pull/93557 -[#93563]: https://github.com/cockroachdb/cockroach/pull/93563 -[#93567]: https://github.com/cockroachdb/cockroach/pull/93567 -[#93652]: https://github.com/cockroachdb/cockroach/pull/93652 -[0755afad4]: https://github.com/cockroachdb/cockroach/commit/0755afad4 -[083c44d42]: https://github.com/cockroachdb/cockroach/commit/083c44d42 -[0fc005ffe]: https://github.com/cockroachdb/cockroach/commit/0fc005ffe -[14c89e140]: https://github.com/cockroachdb/cockroach/commit/14c89e140 -[1dbc43e15]: https://github.com/cockroachdb/cockroach/commit/1dbc43e15 -[239786a46]: https://github.com/cockroachdb/cockroach/commit/239786a46 -[241d790aa]: https://github.com/cockroachdb/cockroach/commit/241d790aa -[25ace40d6]: https://github.com/cockroachdb/cockroach/commit/25ace40d6 -[26961cae5]: https://github.com/cockroachdb/cockroach/commit/26961cae5 -[2b0042753]: https://github.com/cockroachdb/cockroach/commit/2b0042753 -[2c41acedc]: https://github.com/cockroachdb/cockroach/commit/2c41acedc -[35ba9e615]: https://github.com/cockroachdb/cockroach/commit/35ba9e615 -[3925dea41]: https://github.com/cockroachdb/cockroach/commit/3925dea41 -[397d5da2c]: https://github.com/cockroachdb/cockroach/commit/397d5da2c -[4ef9e78a9]: https://github.com/cockroachdb/cockroach/commit/4ef9e78a9 -[4f93166cf]: https://github.com/cockroachdb/cockroach/commit/4f93166cf -[51e22010b]: https://github.com/cockroachdb/cockroach/commit/51e22010b -[5a0435b87]: https://github.com/cockroachdb/cockroach/commit/5a0435b87 -[5a85950bf]: https://github.com/cockroachdb/cockroach/commit/5a85950bf -[654fa25dd]: https://github.com/cockroachdb/cockroach/commit/654fa25dd -[6f1a6d8e0]: https://github.com/cockroachdb/cockroach/commit/6f1a6d8e0 -[714b4d363]: https://github.com/cockroachdb/cockroach/commit/714b4d363 -[89058d537]: https://github.com/cockroachdb/cockroach/commit/89058d537 -[8f96adfc4]: https://github.com/cockroachdb/cockroach/commit/8f96adfc4 -[9181af088]: https://github.com/cockroachdb/cockroach/commit/9181af088 -[91953e542]: https://github.com/cockroachdb/cockroach/commit/91953e542 -[93d118387]: https://github.com/cockroachdb/cockroach/commit/93d118387 -[a7f3ae671]: https://github.com/cockroachdb/cockroach/commit/a7f3ae671 -[aa3c59ccb]: https://github.com/cockroachdb/cockroach/commit/aa3c59ccb -[acbcd7380]: https://github.com/cockroachdb/cockroach/commit/acbcd7380 -[bed0710b7]: https://github.com/cockroachdb/cockroach/commit/bed0710b7 -[bf8f93064]: https://github.com/cockroachdb/cockroach/commit/bf8f93064 -[c6bc7b47c]: https://github.com/cockroachdb/cockroach/commit/c6bc7b47c -[c98c82b0f]: https://github.com/cockroachdb/cockroach/commit/c98c82b0f -[e0f8edec4]: https://github.com/cockroachdb/cockroach/commit/e0f8edec4 -[e2d92e896]: https://github.com/cockroachdb/cockroach/commit/e2d92e896 -[e8226497d]: https://github.com/cockroachdb/cockroach/commit/e8226497d -[eb84eba69]: https://github.com/cockroachdb/cockroach/commit/eb84eba69 -[f1e59d1b6]: https://github.com/cockroachdb/cockroach/commit/f1e59d1b6 -[f4118b091]: https://github.com/cockroachdb/cockroach/commit/f4118b091 -[faa7072ef]: https://github.com/cockroachdb/cockroach/commit/faa7072ef -[fb6157ab2]: https://github.com/cockroachdb/cockroach/commit/fb6157ab2 -[fc2d18064]: https://github.com/cockroachdb/cockroach/commit/fc2d18064 -[fd0d77e2d]: https://github.com/cockroachdb/cockroach/commit/fd0d77e2d diff --git a/src/current/_includes/releases/v23.1/v23.1.0-alpha.2.md b/src/current/_includes/releases/v23.1/v23.1.0-alpha.2.md index 5d7fcc00a21..5f535cf601e 100644 --- a/src/current/_includes/releases/v23.1/v23.1.0-alpha.2.md +++ b/src/current/_includes/releases/v23.1/v23.1.0-alpha.2.md @@ -14,18 +14,18 @@ Release Date: February 13, 2022 - Instead of: `SELECT range_id FROM crdb_internal.ranges WHERE table_name = 'x'`, use: `SELECT range_id FROM [SHOW RANGES FROM TABLE x]` - Instead of `SELECT range_id FROM crdb_internal.ranges WHERE table_name = $1 OR table_id = $2` (variable / unpredictable table name or ID), use: `SELECT range_id FROM [SHOW RANGES FROM CURRENT_CATALOG WITH TABLES] WHERE table_name = $1 OR table_id = $2` - Instead of `SELECT start_key FROM crdb_internal.ranges WHERE table_name = 'x'`, use: `SELECT raw_start_key FROM [SHOW RANGES FROM TABLE x WITH KEYS]` - - Instead of `SELECT start_key FROM crdb_internal.ranges WHERE table_name = $1 OR table_id = $2` (unpredictable / variable table name or ID), use: `SELECT raw_start_key FROM [SHOW RANGES FROM CURRENT_CATALOG WITH TABLES, KEYS] WHERE table_name = $1 OR table_id = $2` [#93644][#93644] -- The format of the columns `start_key` and `end_key` for `SHOW RANGES FROM DATABASE` and `SHOW RANGES FROM TABLE` have been extended to include which table/index the key belongs to. This is necessary because a range can now contain data from more than one table/index. [#93644][#93644] -- The format of the columns `start_key` and `end_key` for `SHOW RANGE ... FOR ROW` has been changed to be consistent with the output of `SHOW RANGES FROM INDEX`. [#93644][#93644] -- The output of [`SHOW RANGES`]({% link v23.1/show-ranges.md %}) no longer includes `range_size`, `range_size_mb`, `lease_holder`, or `lease_holder_localities` by default. This ensures that `SHOW RANGES` remains fast in the common case. Use the new option `WITH DETAILS` to include these columns. [#93644][#93644] -- Changefeeds using "preview" expressions (released in v22.2.0) and that access the previous state of the row using the `cdc_prev()` function will no longer work and will need to be recreated with new syntax. [#94429][#94429] -- Fixed a bug where, when `server.identity_map.configuration` was used, CockroachDB did not verify the client-provided username against the target mappings. Note that **this means that the client must now provide a valid DB username.** This requirement is compatible with PostgreSQL; it was not previously required by CockroachDB but it is now. This does not apply when identity maps are not in use. [#94915][#94915] -- Previously, the type of the `replicas`, `voting_replicas`,`non_voting_replicas` and `learner_replicas` in `crdb_internal.ranges` were overridden to `INT2VECTOR` causing incompatible indexing between `.ranges` and `.ranges_no_leases`. Now the types of those columns in the two tables are set to `INT[]`. [#96287][#96287] + - Instead of `SELECT start_key FROM crdb_internal.ranges WHERE table_name = $1 OR table_id = $2` (unpredictable / variable table name or ID), use: `SELECT raw_start_key FROM [SHOW RANGES FROM CURRENT_CATALOG WITH TABLES, KEYS] WHERE table_name = $1 OR table_id = $2` +- The format of the columns `start_key` and `end_key` for `SHOW RANGES FROM DATABASE` and `SHOW RANGES FROM TABLE` have been extended to include which table/index the key belongs to. This is necessary because a range can now contain data from more than one table/index. +- The format of the columns `start_key` and `end_key` for `SHOW RANGE ... FOR ROW` has been changed to be consistent with the output of `SHOW RANGES FROM INDEX`. +- The output of [`SHOW RANGES`]({% link v23.1/show-ranges.md %}) no longer includes `range_size`, `range_size_mb`, `lease_holder`, or `lease_holder_localities` by default. This ensures that `SHOW RANGES` remains fast in the common case. Use the new option `WITH DETAILS` to include these columns. +- Changefeeds using "preview" expressions (released in v22.2.0) and that access the previous state of the row using the `cdc_prev()` function will no longer work and will need to be recreated with new syntax. +- Fixed a bug where, when `server.identity_map.configuration` was used, CockroachDB did not verify the client-provided username against the target mappings. Note that **this means that the client must now provide a valid DB username.** This requirement is compatible with PostgreSQL; it was not previously required by CockroachDB but it is now. This does not apply when identity maps are not in use. +- Previously, the type of the `replicas`, `voting_replicas`,`non_voting_replicas` and `learner_replicas` in `crdb_internal.ranges` were overridden to `INT2VECTOR` causing incompatible indexing between `.ranges` and `.ranges_no_leases`. Now the types of those columns in the two tables are set to `INT[]`.

Security updates

-- Added an option to re-enable "old" cipher suites for use with very old clients. Fixes [issue #1989](https://github.com/cockroachlabs/support/issues/1989). [#95091][#95091] -- Previously, the `ENCRYPTION_PASSPHRASE` option passed to [`RESTORE`]({% link v23.1/restore.md %}) would appear as 'redacted'. It now appears as '******' which is consistent with [`SHOW BACKUP`]({% link v23.1/show-backup.md %}) and [`BACKUP`]({% link v23.1/backup.md %}). [#95562][#95562] +- Added an option to re-enable "old" cipher suites for use with very old clients. Fixes [issue #1989](https://github.com/cockroachlabs/support/issues/1989). +- Previously, the `ENCRYPTION_PASSPHRASE` option passed to [`RESTORE`]({% link v23.1/restore.md %}) would appear as 'redacted'. It now appears as '******' which is consistent with [`SHOW BACKUP`]({% link v23.1/show-backup.md %}) and [`BACKUP`]({% link v23.1/backup.md %}).

General changes

@@ -35,40 +35,40 @@ With CockroachDB v23.1, the `RANGE DEFAULT` value is lowered to `4h` but only fo Cockroach Labs has found the `25h` value to translate to higher-than-necessary storage costs, especially for workloads where rows are deleted frequently. It can also make for costlier reads with respect to CPU since we currently have to scan over overwritten values to get to the one of interest. Finally, we've also observed cluster instability due to large unsplittable ranges that have accumulated an excessive amount of MVCC garbage. -We chose a default of `25h` originally to accommodate daily incremental backups with revision history. But with the introduction of scheduled backups introduced in v22.2, we no longer need a large GC TTL. Scheduled backups "chain together" and prevent garbage collection of relevant data to ensure coverage of revision history across backups, decoupling it from whatever value is used for GC TTL. The GC TTL determines how far back `AS OF SYSTEM TIME` queries can go, which now if going past `now()-4h`, will start failing informatively. To support larger windows for `AS OF SYSTEM TIME` queries, users are encouraged to pick a more appropriate GC TTL and set it using `ALTER ... CONFIGURE ZONE using gc.ttlseconds = `. The earlier considerations around storage use, read costs, and stability still apply. [#93836][#93836] +We chose a default of `25h` originally to accommodate daily incremental backups with revision history. But with the introduction of scheduled backups introduced in v22.2, we no longer need a large GC TTL. Scheduled backups "chain together" and prevent garbage collection of relevant data to ensure coverage of revision history across backups, decoupling it from whatever value is used for GC TTL. The GC TTL determines how far back `AS OF SYSTEM TIME` queries can go, which now if going past `now()-4h`, will start failing informatively. To support larger windows for `AS OF SYSTEM TIME` queries, users are encouraged to pick a more appropriate GC TTL and set it using `ALTER ... CONFIGURE ZONE using gc.ttlseconds = `. The earlier considerations around storage use, read costs, and stability still apply.

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

-- The `changefeed.active_protected_timestamps.enabled` [[cluster setting]({% link v23.1/cluster-settings.md %})]({% link v23.1/cluster-settings.md %}) has been removed and is now always treated as if it was `true`. [#89975][#89975] -- Improved [changefeed expressions]({% link v23.1/cdc-queries.md %}) logic to rely on the optimizer to evaluate star expansion. [#93979][#93979] -- Changefeed expressions now support system columns. [#93979][#93979] -- Changefeed expressions now have access to the `cdc_prev` tuple which contains the previous state of the row. [#94429][#94429] -- Changefeed expressions now support non-volatile user defined functions (UDFs). [#94429][#94429] -- Changefeed transformations (e.g., `CREATE CHANGEFEED ... AS SELECT ...`) no longer require the `schema_change_policy=stop` option. [#94653][#94653] -- Changefeed transformations introduced in the v22.2 release in preview mode are no longer experimental. This feature can now be considered to be fully production-ready. [#94806][#94806] -- The [`CREATE EXTERNAL CONNECTION`]({% link v23.1/create-external-connection.md %}) statement now supports URIs with the prefixes `azure`, `gs`, `gcpubsub`, `http`, `https`, `webhook-https`, `nodelocal`, `s3`, and `kafka` for use by changefeeds. [#86061][#86061] -- The `CONTROLCHANGEFEED` [role option]({% link v23.1/alter-role.md %}#role-options) will be deprecated in the future (see issue [#94757](https://github.com/cockroachdb/cockroach/issues/94757)). With this change, usages of the `CONTROLCHANGEFEED` role option will come with a deprecation warning. Its existing behavior remains the same. The `SELECT` and `CHANGEFEED` privileges will be used for changefeeds henceforth: +- The `changefeed.active_protected_timestamps.enabled` [[cluster setting]({% link v23.1/cluster-settings.md %})]({% link v23.1/cluster-settings.md %}) has been removed and is now always treated as if it was `true`. +- Improved [changefeed expressions]({% link v23.1/cdc-queries.md %}) logic to rely on the optimizer to evaluate star expansion. +- Changefeed expressions now support system columns. +- Changefeed expressions now have access to the `cdc_prev` tuple which contains the previous state of the row. +- Changefeed expressions now support non-volatile user defined functions (UDFs). +- Changefeed transformations (e.g., `CREATE CHANGEFEED ... AS SELECT ...`) no longer require the `schema_change_policy=stop` option. +- Changefeed transformations introduced in the v22.2 release in preview mode are no longer experimental. This feature can now be considered to be fully production-ready. +- The [`CREATE EXTERNAL CONNECTION`]({% link v23.1/create-external-connection.md %}) statement now supports URIs with the prefixes `azure`, `gs`, `gcpubsub`, `http`, `https`, `webhook-https`, `nodelocal`, `s3`, and `kafka` for use by changefeeds. +- The `CONTROLCHANGEFEED` [role option]({% link v23.1/alter-role.md %}#role-options) will be deprecated in the future (see issue). With this change, usages of the `CONTROLCHANGEFEED` role option will come with a deprecation warning. Its existing behavior remains the same. The `SELECT` and `CHANGEFEED` privileges will be used for changefeeds henceforth: - The `SELECT` privilege on a set of tables allows a user to run core changefeeds against them. - The `CHANGEFEED` privilege on a set of tables allows a user to run enterprise changefeeds on them, and also manage the underlying changefeed job (ie. view, pause, cancel, and resume the job). - Notably, a new [cluster setting]({% link v23.1/cluster-settings.md %}) `changefeed.permissions.require_external_connection_sink.enabled` is added and set to `false` by default. Enabling this setting restricts users with `CHANGEFEED` on a set of tables to create enterprise changefeeds into external connections only. To use a given external connection, a user typically needs the `USAGE` privilege on it. Note that `ALTER DEFAULT PRIVILEGES` can be used with both the `CHANGEFEED` and `SELECT` privileges to assign coarse-grained permissions (i.e., assign permissions to all tables in a schema rather than manually assign them for each table). [#94796][#94796] -- Changefeeds created/altered with a `metrics_label` set while `server.child_metrics.enabled` is set to `false` will now provide the user a notice upon creation. [#94948][#94948] -- Fix a bug in [`ALTER CHANGEFEED`]({% link v23.1/alter-changefeed.md %}) that would panic when altering changefeeds to remove a table that has already been dropped. [#95739][#95739] -- Reduced the default size of scan RPC replies to improve cluster stability during changefeed accounting for transient memory. [#95798][#95798] -- Changefeed expressions now support the `changefeed_created_timestamp` function. [#95179][#95179] -- Increased the default `changefeed.memory.per_changefeed_limit` [cluster setting]({% link v23.1/cluster-settings.md %}) to `1/2GiB`. This should result in changefeeds being able to produce larger files. [#96340][#96340] -- The `confluent_schema_registry` URI for avro changefeeds now supports `client_cert` and `client_key` parameters. [#96510][#96510] + Notably, a new [cluster setting]({% link v23.1/cluster-settings.md %}) `changefeed.permissions.require_external_connection_sink.enabled` is added and set to `false` by default. Enabling this setting restricts users with `CHANGEFEED` on a set of tables to create enterprise changefeeds into external connections only. To use a given external connection, a user typically needs the `USAGE` privilege on it. Note that `ALTER DEFAULT PRIVILEGES` can be used with both the `CHANGEFEED` and `SELECT` privileges to assign coarse-grained permissions (i.e., assign permissions to all tables in a schema rather than manually assign them for each table). +- Changefeeds created/altered with a `metrics_label` set while `server.child_metrics.enabled` is set to `false` will now provide the user a notice upon creation. +- Fix a bug in [`ALTER CHANGEFEED`]({% link v23.1/alter-changefeed.md %}) that would panic when altering changefeeds to remove a table that has already been dropped. +- Reduced the default size of scan RPC replies to improve cluster stability during changefeed accounting for transient memory. +- Changefeed expressions now support the `changefeed_created_timestamp` function. +- Increased the default `changefeed.memory.per_changefeed_limit` [cluster setting]({% link v23.1/cluster-settings.md %}) to `1/2GiB`. This should result in changefeeds being able to produce larger files. +- The `confluent_schema_registry` URI for avro changefeeds now supports `client_cert` and `client_key` parameters.

SQL language changes

-- Added the `pg_get_function_arguments` [built-in function]({% link v23.1/functions-and-operators.md %}). This returns the argument list (with defaults) necessary to identify the function with a given OID. [#93675][#93675] -- Added `voting_replicas` and `non_voting_replicas` columns to the output of `SHOW RANGE` and `SHOW RANGES` statements. [#93513][#93513] -- It is now possible to create and alter [`NOT VISIBLE`]({% link v23.1/create-table.md %}#not-visible-property) indexes using the alias `INVISIBLE`. The alias can be used anywhere `NOT VISIBLE` is used when creating or altering indexes. NOTE: the `INVISIBLE` alias is **not supported** for `NOT VISIBLE` columns. [#93750][#93750] -- The `system.table_statistics` table now contains a column called `fullStatisticsID` to store an id referencing the full table statistic the partial statistic was derived from. [#93751][#93751] -- Ordinal column references (e.g., `SELECT @1, @2 FROM t`) are now deprecated. By default, statements using this syntax will now result in an error. If desired, such statements can be allowed using the session setting `SET allow_ordinal_column_references=true`. Support for ordinal column references is scheduled to be removed in upcoming version v23.2. [#93754][#93754] -- The optimizer will now use table statistics that are merged combinations of the newest partial statistic and latest full statistic collection. And, if forecasting is enabled, the merged statistic will be used in the forecast. [#91933][#91933] -- Added the column `indexes_usage` and the index `indexes_usage_idx` on value on the table `system.statement_statistics`. [#93089][#93089] -- Add the `log_timezone` session variable, which is read-only and always `UTC`. [#94123][#94123] -- Added Two new virtual tables `crdb_internal.index_spans` and `.table_spans`, which list the logical keyspace used by each index/table. [#93644][#93644] +- Added the `pg_get_function_arguments` [built-in function]({% link v23.1/functions-and-operators.md %}). This returns the argument list (with defaults) necessary to identify the function with a given OID. +- Added `voting_replicas` and `non_voting_replicas` columns to the output of `SHOW RANGE` and `SHOW RANGES` statements. +- It is now possible to create and alter [`NOT VISIBLE`]({% link v23.1/create-table.md %}#not-visible-property) indexes using the alias `INVISIBLE`. The alias can be used anywhere `NOT VISIBLE` is used when creating or altering indexes. NOTE: the `INVISIBLE` alias is **not supported** for `NOT VISIBLE` columns. +- The `system.table_statistics` table now contains a column called `fullStatisticsID` to store an id referencing the full table statistic the partial statistic was derived from. +- Ordinal column references (e.g., `SELECT @1, @2 FROM t`) are now deprecated. By default, statements using this syntax will now result in an error. If desired, such statements can be allowed using the session setting `SET allow_ordinal_column_references=true`. Support for ordinal column references is scheduled to be removed in upcoming version v23.2. +- The optimizer will now use table statistics that are merged combinations of the newest partial statistic and latest full statistic collection. And, if forecasting is enabled, the merged statistic will be used in the forecast. +- Added the column `indexes_usage` and the index `indexes_usage_idx` on value on the table `system.statement_statistics`. +- Add the `log_timezone` session variable, which is read-only and always `UTC`. +- Added Two new virtual tables `crdb_internal.index_spans` and `.table_spans`, which list the logical keyspace used by each index/table. - The following new statements are introduced: - `SHOW RANGES FROM CURRENT_CATALOG` and `SHOW RANGES` without a parameter: functions as an alias for `SHOW RANGES FROM DATABASE` on the session's current database. - `SHOW RANGES FROM DATABASE ... WITH TABLES`: reports at least one row per table. It is possible for the same range ID to be repeated across multiple rows, when a range spans multiple tables. @@ -77,182 +77,182 @@ We chose a default of `25h` originally to accommodate daily incremental backups - `SHOW CLUSTER RANGES [ WITH { INDEXES | TABLES } ]`: reports ranges across the entire cluster, including ranges that do not contain table data. The behavior of `WITH INDEXES` and `WITH TABLES` is the same as `SHOW RANGES FROM DATABASE`. Additionally, the following new options have been added to the `SHOW RANGES` statement: - `WITH KEYS`: produces the raw bytes of the start/end key boundaries. - `WITH DETAILS`: produces more details, using computations that require extra network roundtrips. This option will make the operation slower overall. - - `WITH EXPLAIN`: produces the text of the SQL query used to run the statement. [#93644][#93644] -- Implemented the `pg_timezone_names` `pg_catalog` table, which lists all supported timezones. [#94122][#94122] -- Improved the performance of trigram operations. [#93757][#93757] -- Previously, CockroachDB would crash if a user creates a [user-defined function (UDF)]({% link v23.1/user-defined-functions.md %}) whose function signature includes a implicit record type (essentially a table) which has a column using a user defined enum type. The root cause was a hydration deadloop when looking up descriptors during hydration. This fix adds a new flag to avoid hydration in order to avoid the deadloop. [#94106][#94106] -- Previously, error messages for missing users sometimes had different forms. This is now unified in the form `role/user "user" does not exist`. [#94677][#94677] -- [User-defined functions (UDFs)]({% link v23.1/user-defined-functions.md %}) with subqueries in the body of the function are now supported. [#94962][#94962] -- Previously, setting a table's locality was not allowed if the table contained any hash sharded index. This restriction is now removed. [#94436][#94436] -- Users can now add a super region when creating a database. [#93939][#93939] -- [`COPY`]({% link v23.1/copy.md %}) now logs an error during the insert phase on the `SQL_EXEC` logging channel. [#95038][#95038] -- Added a new `REDACT` flag to [`EXPLAIN`]({% link v23.1/explain.md %}) which causes constants, literal values, parameter values, and any other user data to be redacted in explain output. Redacted statement diagnostics bundles can now be collected with [`EXPLAIN ANALYZE (DEBUG, REDACT)`]({% link v23.1/explain-analyze.md %}). [#94950][#94950] + - `WITH EXPLAIN`: produces the text of the SQL query used to run the statement. +- Implemented the `pg_timezone_names` `pg_catalog` table, which lists all supported timezones. +- Improved the performance of trigram operations. +- Previously, CockroachDB would crash if a user creates a [user-defined function (UDF)]({% link v23.1/user-defined-functions.md %}) whose function signature includes a implicit record type (essentially a table) which has a column using a user defined enum type. The root cause was a hydration deadloop when looking up descriptors during hydration. This fix adds a new flag to avoid hydration in order to avoid the deadloop. +- Previously, error messages for missing users sometimes had different forms. This is now unified in the form `role/user "user" does not exist`. +- [User-defined functions (UDFs)]({% link v23.1/user-defined-functions.md %}) with subqueries in the body of the function are now supported. +- Previously, setting a table's locality was not allowed if the table contained any hash sharded index. This restriction is now removed. +- Users can now add a super region when creating a database. +- [`COPY`]({% link v23.1/copy.md %}) now logs an error during the insert phase on the `SQL_EXEC` logging channel. +- Added a new `REDACT` flag to [`EXPLAIN`]({% link v23.1/explain.md %}) which causes constants, literal values, parameter values, and any other user data to be redacted in explain output. Redacted statement diagnostics bundles can now be collected with [`EXPLAIN ANALYZE (DEBUG, REDACT)`]({% link v23.1/explain-analyze.md %}). - Added two new virtual tables displaying execution insights for transactions: - `crdb_internal.cluster_txn_execution_insights` - - `crdb_internal.node_txn_execution_insights` [#94720][#94720] -- Some queries which previously resulted in the error "could not decorrelate subquery" now succeed. [#95234][#95234] -- If `copy_from_retries_enabled` is set, [`COPY`]({% link v23.1/copy.md %}) is now able to retry certain safe circumstances: namely when `copy_from_atomic_enabled` is `false`, there is no transaction running `COPY` and the error returned is retriable. This prevents users who keep running into `TransactionProtoWithRefreshError` from having issues. [#95275][#95275] -- Fixed the databases list API when the database name has special characters. [#95209][#95209] -- The pgwire protocol implementation can now accept arguments of the `JSON[]` type (oid=199). Previously, it could only accept `JSONB[]` (oid=3804). Internally, `JSON[]` and `JSONB[]` values are still identical, so this change only affects how the values are received over the wire protocol. [#94705][#94705] -- CPU time spent during SQL execution is now visible in the output of queries run with [`EXPLAIN ANALYZE`]({% link v23.1/explain-analyze.md %}). This measure does not include CPU time spent while serving KV requests, and CPU time is not shown for queries that perform mutations or for plans that aren't vectorized. This can be useful for diagnosing performance issues and optimizing SQL queries. [#93952][#93952] -- The [`SHOW GRANTS ON EXTERNAL CONNECTION`]({% link v23.1/show-grants.md %}) and [`SHOW SYSTEM GRANTS`]({% link v23.1/show-system-grants.md %}) statements now use a column name of `privilege_type` rather than `privilege`. For external connections, the `name` column has been changed to `connection_name`. This makes the commands consistent with other `SHOW GRANTS` commands. [#95532][#95532] -- The [`SHOW INDEXES`]({% link v23.1/show-index.md %}) statement will now show the expression used to define an index, if one was used. [#95413][#95413] -- It is now possible to run efficient `tsvector @@ tsquery` searches when there is an inverted index on the `tsvector` column being searched. [#93769][#93769] -- Added a `cpuNanos` field to the statistics column of the `crdb_internal.statement_statistics` and `system.statement_statistics` tables that reports the amount of CPU time in nanoseconds during SQL execution for queries that track CPU time. [#95639][#95639] + - `crdb_internal.node_txn_execution_insights` +- Some queries which previously resulted in the error "could not decorrelate subquery" now succeed. +- If `copy_from_retries_enabled` is set, [`COPY`]({% link v23.1/copy.md %}) is now able to retry certain safe circumstances: namely when `copy_from_atomic_enabled` is `false`, there is no transaction running `COPY` and the error returned is retriable. This prevents users who keep running into `TransactionProtoWithRefreshError` from having issues. +- Fixed the databases list API when the database name has special characters. +- The pgwire protocol implementation can now accept arguments of the `JSON[]` type (oid=199). Previously, it could only accept `JSONB[]` (oid=3804). Internally, `JSON[]` and `JSONB[]` values are still identical, so this change only affects how the values are received over the wire protocol. +- CPU time spent during SQL execution is now visible in the output of queries run with [`EXPLAIN ANALYZE`]({% link v23.1/explain-analyze.md %}). This measure does not include CPU time spent while serving KV requests, and CPU time is not shown for queries that perform mutations or for plans that aren't vectorized. This can be useful for diagnosing performance issues and optimizing SQL queries. +- The [`SHOW GRANTS ON EXTERNAL CONNECTION`]({% link v23.1/show-grants.md %}) and [`SHOW SYSTEM GRANTS`]({% link v23.1/show-system-grants.md %}) statements now use a column name of `privilege_type` rather than `privilege`. For external connections, the `name` column has been changed to `connection_name`. This makes the commands consistent with other `SHOW GRANTS` commands. +- The [`SHOW INDEXES`]({% link v23.1/show-index.md %}) statement will now show the expression used to define an index, if one was used. +- It is now possible to run efficient `tsvector @@ tsquery` searches when there is an inverted index on the `tsvector` column being searched. +- Added a `cpuNanos` field to the statistics column of the `crdb_internal.statement_statistics` and `system.statement_statistics` tables that reports the amount of CPU time in nanoseconds during SQL execution for queries that track CPU time. - Previously, [`SHOW BACKUP`]({% link v23.1/show-backup.md %}) options would get parsed as `kv_options`, which meant that a user could not pass multiple values to a `SHOW BACKUP` option, causing feature gaps in `SHOW BACKUP` relative to [`BACKUP`]({% link v23.1/backup.md %}) and [`RESTORE`]({% link v23.1/restore.md %}). This patch rewrites the show backup option parser, closing the following feature gaps: - A user can now pass and check multiple KMS URIs in `SHOW BACKUP` - - A user can pass locality-aware `incremental_locations`, allowing a user to also pass the `check_files` parameter to a locality-aware backup chain that also specifies the backup incremental location. [#95562][#95562] -- Updated the name of the `cpuNanos` column to `cpuSQLNanos` on `crdb_internal.statement_statistics` and `system.statement_statistics` [#96278][#96278] -- Some queries with `EXISTS` subqueries which previously resulted in the error "could not decorrelate subquery" now succeed. [#95883][#95883] -- Users can query the `crdb_internal.kv_dropped_relation` table to see which tables, materialized views and sequences are currently already dropped but have not yet been garbage collected, along with the garbage collection TTL setting that is currently in force. This setting originates from the table's own zone configuration, or from its parent database which it inherits, or in turn from the default zone configuration. These settings are typically set using `ALTER TABLE ... CONFIGURE ZONE USING gc.ttlseconds = ...;`. [#96217][#96217] -- Administrators may now call a new [built-in function]({% link v23.1/functions-and-operators.md %}) `crdb_internal.upsert_dropped_relation_gc_ttl` to retroactively set the garbage collection TTL on a table, materialized view, or sequence which has already been dropped. Effectively, this retroactively performs `ALTER TABLE ... CONFIGURE ZONE USING gc.ttlseconds = ...;`. Note that this statement is prevented from being executed on dropped tables because they can no longer be referenced by name at that point. Usage of this built-in is typically in conjunction with the recently-added `crdb_internal.kv_dropped_relations` virtual table. For example, garbage collection can be triggered ASAP for all dropped relations by querying: `SELECT crdb_internal.upsert_dropped_relation_gc_ttl(id, '1 second') FROM crdb_internal.kv_dropped_relations;`. Doing so for all tables in a dropped database requires filtering on the `parent_id` column, the database name being lost at that point. [#96217][#96217] -- Allow `*` expressions in [user-defined functions (UDFs)]({% link v23.1/user-defined-functions.md %}). [#95710][#95710] -- Previously, [user-defined functions (UDFs)]({% link v23.1/user-defined-functions.md %}) could be created with any volatility no matter if the function body statements contained any expression which would violate the target volatility. For example, an immutable function might use `random()` in it. This change added validations to guarantee that all statements in the function body should be as strict as the expected UDF volatility. [#96476][#96476] + - A user can pass locality-aware `incremental_locations`, allowing a user to also pass the `check_files` parameter to a locality-aware backup chain that also specifies the backup incremental location. +- Updated the name of the `cpuNanos` column to `cpuSQLNanos` on `crdb_internal.statement_statistics` and `system.statement_statistics` +- Some queries with `EXISTS` subqueries which previously resulted in the error "could not decorrelate subquery" now succeed. +- Users can query the `crdb_internal.kv_dropped_relation` table to see which tables, materialized views and sequences are currently already dropped but have not yet been garbage collected, along with the garbage collection TTL setting that is currently in force. This setting originates from the table's own zone configuration, or from its parent database which it inherits, or in turn from the default zone configuration. These settings are typically set using `ALTER TABLE ... CONFIGURE ZONE USING gc.ttlseconds = ...;`. +- Administrators may now call a new [built-in function]({% link v23.1/functions-and-operators.md %}) `crdb_internal.upsert_dropped_relation_gc_ttl` to retroactively set the garbage collection TTL on a table, materialized view, or sequence which has already been dropped. Effectively, this retroactively performs `ALTER TABLE ... CONFIGURE ZONE USING gc.ttlseconds = ...;`. Note that this statement is prevented from being executed on dropped tables because they can no longer be referenced by name at that point. Usage of this built-in is typically in conjunction with the recently-added `crdb_internal.kv_dropped_relations` virtual table. For example, garbage collection can be triggered ASAP for all dropped relations by querying: `SELECT crdb_internal.upsert_dropped_relation_gc_ttl(id, '1 second') FROM crdb_internal.kv_dropped_relations;`. Doing so for all tables in a dropped database requires filtering on the `parent_id` column, the database name being lost at that point. +- Allow `*` expressions in [user-defined functions (UDFs)]({% link v23.1/user-defined-functions.md %}). +- Previously, [user-defined functions (UDFs)]({% link v23.1/user-defined-functions.md %}) could be created with any volatility no matter if the function body statements contained any expression which would violate the target volatility. For example, an immutable function might use `random()` in it. This change added validations to guarantee that all statements in the function body should be as strict as the expected UDF volatility.

Operational changes

-- Updated the metrics `queue.gc.info.clearrangesuccess` and `queue.gc.info.clearrangefailed` to include statistics about GC operations that perform `ClearRange` on parts of the range keyspace. Previously those metrics only included requests to remove range data completely when performing a schema change. [#90830][#90830] -- The load-based splitter has been redesigned to be more consistent with CPU-based rebalancing rather than QPS-based rebalancing to improve range splits. This redesign is disabled by default currently. [#93838][#93838] -- The [cluster setting]({% link v23.1/cluster-settings.md %}) `storage.value_blocks.enabled`, when set to `true`, writes the values of older versions of the same key to separate value blocks in the same sstable. For workloads that create many versions, this can improve the performance of reads by increasing locality. It can also help scan performance with single versions due to an optimization that avoids a key comparison (useful if the key are not very short). The default value of this setting is currently `false`. [#94634][#94634] -- The bytes read from SQL clients prior to authentication are now reported via the metric `sql.pre_serve.bytesin`. Previously, this was reported via the `sql.bytesin` metric. [#92580][#92580] -- Transaction errors will contain more detailed information in redacted logs. [#93760][#93760] -- Added the `COCKROACH_RAFT_MAX_INFLIGHT_BYTES` environment variable, which helps strictly limit inflight traffic from a Raft leader to its followers, particularly in situations when many large messages are sent and significantly exceed `COCKROACH_RAFT_MAX_SIZE_PER_MSG * COCKROACH_RAFT_MAX_INFLIGHT_MSGS` which is a softer limit. [#94692][#94692] -- Log messages for write stalls have been adjusted slightly. [#95436][#95436] -- Histogram metrics can now optionally use the legacy `HdrHistogram` model by setting a new environment variable `COCKROACH_ENABLE_HDR_HISTOGRAMS` to `true` on CockroachDB nodes. **Note that this is not recommended** unless users are having difficulties with the newer Prometheus-backed histogram model. Enabling legacy historgrams can cause performance issues with timeseries databases like Prometheus, as processing and storing the increased number of buckets is taxing on both CPU and storage. Note that the legacy `HdrHistogram` model is slated for full deprecation in upcoming releases. [#96029][#96029] -- Prometheus histograms will now export more buckets across the board to improve precision & fidelity of information reported by histogram metrics, such as quantiles. This will lead to an increase in storage requirements to process these histogram metrics in downstream systems like Prometheus, but should still be a marked improvement when compared to the legacy HdrHistogram model. If users have issues with the precision of these bucket boundaries, they can set the environment variable `COCKROACH_ENABLE_HDR_HISTOGRAMS=true` to revert to using the legacy HdrHistogram model instead, although this is not recommended otherwise as the HdrHistogram strains systems like Prometheus with excessive numbers of histogram buckets. Note that HdrHistograms are slated for full deprecation in upcoming releases. [#96029][#96029] -- In the rare event of a range inconsistency, the consistency checker now saves a storage checkpoint on each storage the range belongs to. Previously, this was a full checkpoint, so its cost could quickly escalate on the nodes that went on running. This change makes the checkpoints partial, i.e., they now only contain the relevant range and its neighbors. This eliminates the time pressure on the cluster operator to remove the checkpoints. [#95963][#95963] -- The count of new SQL connections is now also reported on `sql.pre_serve.new_conns`. [#92580][#92580] -- The count of network bytes sent to report re-authentication errors to a SQL client is now reported via the metric `sql.pre_serve.bytesout` (instead of `sql.bytesout` previously). The count of pre-authentication errors is now reported via the metric `sql.pre_serve.conn.failures` (instead of `sql.conn.failures` previously). [#92580][#92580] +- Updated the metrics `queue.gc.info.clearrangesuccess` and `queue.gc.info.clearrangefailed` to include statistics about GC operations that perform `ClearRange` on parts of the range keyspace. Previously those metrics only included requests to remove range data completely when performing a schema change. +- The load-based splitter has been redesigned to be more consistent with CPU-based rebalancing rather than QPS-based rebalancing to improve range splits. This redesign is disabled by default currently. +- The [cluster setting]({% link v23.1/cluster-settings.md %}) `storage.value_blocks.enabled`, when set to `true`, writes the values of older versions of the same key to separate value blocks in the same sstable. For workloads that create many versions, this can improve the performance of reads by increasing locality. It can also help scan performance with single versions due to an optimization that avoids a key comparison (useful if the key are not very short). The default value of this setting is currently `false`. +- The bytes read from SQL clients prior to authentication are now reported via the metric `sql.pre_serve.bytesin`. Previously, this was reported via the `sql.bytesin` metric. +- Transaction errors will contain more detailed information in redacted logs. +- Added the `COCKROACH_RAFT_MAX_INFLIGHT_BYTES` environment variable, which helps strictly limit inflight traffic from a Raft leader to its followers, particularly in situations when many large messages are sent and significantly exceed `COCKROACH_RAFT_MAX_SIZE_PER_MSG * COCKROACH_RAFT_MAX_INFLIGHT_MSGS` which is a softer limit. +- Log messages for write stalls have been adjusted slightly. +- Histogram metrics can now optionally use the legacy `HdrHistogram` model by setting a new environment variable `COCKROACH_ENABLE_HDR_HISTOGRAMS` to `true` on CockroachDB nodes. **Note that this is not recommended** unless users are having difficulties with the newer Prometheus-backed histogram model. Enabling legacy historgrams can cause performance issues with timeseries databases like Prometheus, as processing and storing the increased number of buckets is taxing on both CPU and storage. Note that the legacy `HdrHistogram` model is slated for full deprecation in upcoming releases. +- Prometheus histograms will now export more buckets across the board to improve precision & fidelity of information reported by histogram metrics, such as quantiles. This will lead to an increase in storage requirements to process these histogram metrics in downstream systems like Prometheus, but should still be a marked improvement when compared to the legacy HdrHistogram model. If users have issues with the precision of these bucket boundaries, they can set the environment variable `COCKROACH_ENABLE_HDR_HISTOGRAMS=true` to revert to using the legacy HdrHistogram model instead, although this is not recommended otherwise as the HdrHistogram strains systems like Prometheus with excessive numbers of histogram buckets. Note that HdrHistograms are slated for full deprecation in upcoming releases. +- In the rare event of a range inconsistency, the consistency checker now saves a storage checkpoint on each storage the range belongs to. Previously, this was a full checkpoint, so its cost could quickly escalate on the nodes that went on running. This change makes the checkpoints partial, i.e., they now only contain the relevant range and its neighbors. This eliminates the time pressure on the cluster operator to remove the checkpoints. +- The count of new SQL connections is now also reported on `sql.pre_serve.new_conns`. +- The count of network bytes sent to report re-authentication errors to a SQL client is now reported via the metric `sql.pre_serve.bytesout` (instead of `sql.bytesout` previously). The count of pre-authentication errors is now reported via the metric `sql.pre_serve.conn.failures` (instead of `sql.conn.failures` previously).

Command-line changes

-- The TLS parameters to connect to a [`cockroach demo`]({% link v23.1/cockroach-demo.md %}) cluster from SQL clients have been simplified. [#94421][#94421] -- The password assigned to the `demo` user in [`cockroach demo`]({% link v23.1/cockroach-demo.md %}) can now be overridden by the env var `COCKROACH_DEMO_PASSWORD`. This is meant for use in automated tests, when tests cannot be configured to use TLS client certificate authentication using the client certificates in `$HOME/.cockroach-demo`. [#94421][#94421] -- [`cockroach sql`]({% link v23.1/cockroach-sql.md %}) and [`cockroach demo`]({% link v23.1/cockroach-demo.md %}) now support an `\info` client-side command to print the server details again. [#94421][#94421] -- [`cockroach demo`]({% link v23.1/cockroach-demo.md %}) is now able to preserve open web sessions across restarts of the `cockroach demo` command. The sessions are saved in the directory `~/.cockroach-demo` alongside the TLS certificates and keys. [#94455][#94455] -- The file format used for transient loss of quorum recovery files has changed. It is not possible to use replica info files generated by earlier versions to be used with current and future versions. [#93157][#93157] -- Workloads that take a `--seed` argument previously defaulted to `1`. Now, they use a randomly generated seed in each run. Users can still pass a custom seed with the `--seed` flag. [#95326][#95326] -- Added `cpu_time_per_second` to the `hot-ranges.sh` utility `debug zip` script. [#96213][#96213] +- The TLS parameters to connect to a [`cockroach demo`]({% link v23.1/cockroach-demo.md %}) cluster from SQL clients have been simplified. +- The password assigned to the `demo` user in [`cockroach demo`]({% link v23.1/cockroach-demo.md %}) can now be overridden by the env var `COCKROACH_DEMO_PASSWORD`. This is meant for use in automated tests, when tests cannot be configured to use TLS client certificate authentication using the client certificates in `$HOME/.cockroach-demo`. +- [`cockroach sql`]({% link v23.1/cockroach-sql.md %}) and [`cockroach demo`]({% link v23.1/cockroach-demo.md %}) now support an `\info` client-side command to print the server details again. +- [`cockroach demo`]({% link v23.1/cockroach-demo.md %}) is now able to preserve open web sessions across restarts of the `cockroach demo` command. The sessions are saved in the directory `~/.cockroach-demo` alongside the TLS certificates and keys. +- The file format used for transient loss of quorum recovery files has changed. It is not possible to use replica info files generated by earlier versions to be used with current and future versions. +- Workloads that take a `--seed` argument previously defaulted to `1`. Now, they use a randomly generated seed in each run. Users can still pass a custom seed with the `--seed` flag. +- Added `cpu_time_per_second` to the `hot-ranges.sh` utility `debug zip` script.

DB Console changes

-- Secure clusters now show correct login information in the top right corner. [#94021][#94021] -- The databases filter dropdown in the **Statements** page now uses the `getDatabasesList()` API call, resulting in all cluster databases showing up. [#93657][#93657] -- Added information about the selected plan to the **Explain Plan** tab under **Statement Details**. [#94719][#94719] -- The **Databases** page and the **Databases Details** pages now each contain search and filter components, allowing the ability to search and filter through databases and their tables. [#92589][#92589] -- Graphs can now be clicked on to toggle legend "stickiness" and make the points stop following the mouse. This makes it easier to read dense graphs with many series plotted together. [#92949][#92949] -- The **Statement Fingerprint Details** page in the DB Console no longer infinitely loads after 5 minutes. [#92596][#92596] -- Added a time picker to the **Workload Insights Overview** pages in the DB Console. [#92285][#92285] -- Added all three session status options (`Active`, `Closed`, and `Idle`) and an empty results placeholder. [#95005][#95005] -- Added a list of all statement fingerprints that use a given index to the **Index Details page**. [#94863][#94863] -- Removed `reset sql stats` and `reset index stats` from the DB Console when the user is a non-admin. [#95303][#95303] -- Remove `reset sql stats` from the **Transactions** page for non-admins. [#95461][#95461] -- Added an insights type filter for the **Workload Insights** page, and added an execution status filter for the **Active Execution** pages. [#94002][#94002] -- Hid the apply option for index recommendation when the user is not an admin. [#95516][#95516] -- The Database list filter now shows all databases in the cluster on CC console. [#95450][#95450] -- Hid the filter for the **Databases** and **Database Details** pages if both the node and regions dropdowns are also hidden. [#95376][#95376] +- Secure clusters now show correct login information in the top right corner. +- The databases filter dropdown in the **Statements** page now uses the `getDatabasesList()` API call, resulting in all cluster databases showing up. +- Added information about the selected plan to the **Explain Plan** tab under **Statement Details**. +- The **Databases** page and the **Databases Details** pages now each contain search and filter components, allowing the ability to search and filter through databases and their tables. +- Graphs can now be clicked on to toggle legend "stickiness" and make the points stop following the mouse. This makes it easier to read dense graphs with many series plotted together. +- The **Statement Fingerprint Details** page in the DB Console no longer infinitely loads after 5 minutes. +- Added a time picker to the **Workload Insights Overview** pages in the DB Console. +- Added all three session status options (`Active`, `Closed`, and `Idle`) and an empty results placeholder. +- Added a list of all statement fingerprints that use a given index to the **Index Details page**. +- Removed `reset sql stats` and `reset index stats` from the DB Console when the user is a non-admin. +- Remove `reset sql stats` from the **Transactions** page for non-admins. +- Added an insights type filter for the **Workload Insights** page, and added an execution status filter for the **Active Execution** pages. +- Hid the apply option for index recommendation when the user is not an admin. +- The Database list filter now shows all databases in the cluster on CC console. +- Hid the filter for the **Databases** and **Database Details** pages if both the node and regions dropdowns are also hidden. - The introduction of the **Key Visualizer** makes it easy to identify historical hotspots. To support this new feature, three new [cluster settings]({% link v23.1/cluster-settings.md %}) are introduced: - `keyvisualizer.enabled`: enables the Key Visualizer. - `keyvisualizer.sample_interval`: controls the frequency at which the Key Visualizer collects samples. - - `keyvisualizer.max_buckets` controls the maximum number of buckets in a sample. [#88353][#88353] -- Added a CPU Time chart to the **Statement Details** page. [#95796][#95796] -- Added CPU time as a column on the **Statement and Transaction** tables. [#95795][#95795] -- Hid the list of used fingerprints per index on the **Index Details** page for non-admin users. [#95997][#95997] -- Added write bytes, write keys, read bytes, read keys and cpu statistics to the `/hotranges` DB Console page. These statistics are the rated average over the last 30 minutes. [#95190][#95190] -- The loading spinner on the **Insights Overview** page now only shows when a request is pending and either the data is nullish or invalid (i.e., a new time range selected). [#93219][#93219] -- Previously, transaction start time for the **Transaction Insights** page was only available for transaction insights with high contention as the issue. This information is now available for all transaction insights: start time, end time, and time elapsed. [#93219][#93219] -- Added search, filter and time picker for the list of most-used statement fingerprints on the **Index Details** page. [#96112][#96112] -- Added CPU Time to the **Statement and Transaction Insights** page. [#96279][#96279] -- Previously, the stale node metrics displayed in the **Cluster Overview Nodes** table may mislead users in to thinking that they are current values when in fact they are stale. Now these metrics are displayed with a stale tag, allowing for users to be informed about the staleness of the data displayed to them regarding dead nodes. [#95868][#95868] + - `keyvisualizer.max_buckets` controls the maximum number of buckets in a sample. +- Added a CPU Time chart to the **Statement Details** page. +- Added CPU time as a column on the **Statement and Transaction** tables. +- Hid the list of used fingerprints per index on the **Index Details** page for non-admin users. +- Added write bytes, write keys, read bytes, read keys and cpu statistics to the `/hotranges` DB Console page. These statistics are the rated average over the last 30 minutes. +- The loading spinner on the **Insights Overview** page now only shows when a request is pending and either the data is nullish or invalid (i.e., a new time range selected). +- Previously, transaction start time for the **Transaction Insights** page was only available for transaction insights with high contention as the issue. This information is now available for all transaction insights: start time, end time, and time elapsed. +- Added search, filter and time picker for the list of most-used statement fingerprints on the **Index Details** page. +- Added CPU Time to the **Statement and Transaction Insights** page. +- Previously, the stale node metrics displayed in the **Cluster Overview Nodes** table may mislead users in to thinking that they are current values when in fact they are stale. Now these metrics are displayed with a stale tag, allowing for users to be informed about the staleness of the data displayed to them regarding dead nodes.

Bug fixes

-- Fixed a bug where the `session_id` session variable would not be properly set if used from a subquery. [#93748][#93748] -- Fixed a bug where CockroachDB could, in rare cases, encounter an internal error when evaluating the `crdb_internal.range_stats` [built-in function]({% link v23.1/functions-and-operators.md %}) (which powers the [`SHOW RANGES`]({% link v23.1/show-ranges.md %}) command among other things). The bug was introduced in v22.2.0 and is now fixed. [#93868][#93868] -- Fixed a bug that could prevent `CASE` expressions that used placeholder return values from type-checking correctly. [#93855][#93855] -- Updated the volatility of the `hmac`, `digest`, and `crypt` built-ins to be immutable. [#93628][#93628] -- Server logs are now correctly fsynced at every syncInterval. [#93956][#93956] -- The `stxnamespace`, `stxkind` and `stxstattarget` columns are now defined in `pg_statistics_ext`. [#93274][#93274] -- Fixed a bug where, when experimental MVCC range tombstones are enabled (they are disabled by default), a bulk ingestion (e.g., an `IMPORT`) could fail to take a committed-but-unresolved write intent into account during conflict checks when written above an MVCC range tombstone. It was therefore possible in very rare circumstances for the ingestion to write a value below the timestamp of the committed intent, causing the ingested value to disappear. [#93938][#93938] -- This patch fixes `JOIN` queries involving tables with unique constraints using `LIMIT`, `GROUP BY`, and `ORDER BY` clauses to ensure that the optimizer considers streaming group-by with no `TopK` operation, when possible. This is often the most efficient query plan. [#93858][#93858] -- Secure clusters now show correct login information in the top right corner. [#94021][#94021] -- Previously, CockroachDB could crash in rare circumstances when evaluating lookup and index joins. The bug has been present since the v22.2.0 release. You can also employ a temporary workaround without upgrading to the release with this fix by changing the value of the undocumented [cluster setting]({% link v23.1/cluster-settings.md %}) `sql.distsql.use_streamer.enabled` to `false`. [#94031][#94031] -- The `CREATE ROLE`, `DELETE ROLE`, `GRANT`, and `REVOKE` statements no longer function when the transaction is in read-only mode. [#93991][#93991] -- Fixed a bug where, when experimental MVCC range tombstones are enabled (they are disabled by default), a bulk ingestion (e.g., an `IMPORT`) could, in some situations, fail to properly check for conflicts with existing MVCC range tombstones. This could cause the ingestion to write below a recently-written MVCC range tombstone, in turn losing the ingested data. This could only happen in rare circumstances where a bulk ingestion was applied concurrently with an import cancellation. [#94045][#94045] -- Fixed a bug where, in some cases, the start/end key columns of the output of [`SHOW RANGES`]({% link v23.1/show-ranges.md %}) was missing. [#93644][#93644] -- Fixed a bug where trigrams ignored unicode (multi-byte) characters from input strings. [#93757][#93757] -- Fixed a bug that could happen when type-checking an array expression that only contains NULLs and placeholder values. The bug was only present in v22.2.1. [#94207][#94207] -- Fixed a bug where tables which receive writes concurrently with portions of an `ALTER TABLE ... SET LOCALITY REGIONAL BY ROW` may fail with an error: `duplicate key value violates unique constraint "new_primary_key"`. This bug was introduced in 22.1. [#94151][#94151] -- Fixed a bug where CockroachDB could encounter an internal error when evaluating window functions with `RANGE` window frame mode with an `OFFSET PRECEDING` or `OFFSET FOLLOWING` boundary set when an `ORDER BY` clause has the `NULLS LAST` option set. This will now result in a regular error since the feature is marked as unsupported. [#94342][#94342] -- Previously, CockroachDB could delay the release of the locks acquired when evaluating `SELECT FOR UPDATE` statements in some cases. This delay (up to 5s) could then block future readers. The bug was introduced in 22.2.0, and the temporary workaround without upgrading to a release with this fix is to set the undocumented [cluster setting]({% link v23.1/cluster-settings.md %}) `sql.distsql.use_streamer.enabled` to `false`. [#94399][#94399] -- Record types can now be encoded with the binary encoding of the Postgres wire protocol. Previously, trying to use this encoding could case a panic. [#94405][#94405] -- Fixed a panic that could be caused when using a SQL cursor to access tables in the `crdb_internal` schema. [#94425][#94425] -- Fixed a bug in which `RESTORE SYSTEM USERS` would fail to restore [role options]({% link v23.1/alter-role.md %}#role-options). [#94134][#94134] -- Fixed a crash that could occur on the gateway node when collecting a statement diagnostics bundle (e.g., [`EXPLAIN ANALYZE (DEBUG)`]({% link v23.1/explain-analyze.md %})) on a statement that fails with certain errors. This crash has existed in various forms since the introduction of statement bundles in v20.1.0. [#94440][#94440] -- Fixed a recursive CTE expressions which cause internal errors when explicit CASTs of initial expressions to output types are missing. [#94581][#94581] -- Previously, certain `GRANT` or `REVOKE` commands on a user which does not exist would error with the correct PG code. This is now fixed. [#94677][#94677] -- The `pg_proc` and `pg_type` virtual OID indexes no longer incorrectly show cross-db objects. [#94339][#94339] -- It is now possible to run `cockroach version` and `cockroach start` (and possibly other sub-commands) when the user running the command does not have permission to access the current working directory. [#94894][#94894] -- It is now possible to use a directory whose name is `"disabled"` via `--external-io-dir`. To actually disable external I/O, use `--external-io-dir=""`. [#94985][#94985] -- This patch fixes an internal error occurring in CASE expressions when a column present in a `THEN` or `ELSE` expression is of an inequivalent type compared to that of a constant this column is compared to in an equality predicate, e.g., `(CASE WHEN false THEN int_col ELSE 1 END) IN (int_col) AND int_col=3/2`. [#94791][#94791] -- The `pronamespace` column of the `pg_proc` table now correctly reports the `crdb_internal` schema for [built-in functions]({% link v23.1/functions-and-operators.md %}) that have the "crdb_internal" prefix. [#95029][#95029] -- In the SQL shell ([`cockroach sql`]({% link v23.1/cockroach-sql.md %}) / [`cockroach demo`]({% link v23.1/cockroach-demo.md %})), when using `\c`/`\connect` to connect to a different server, CockroachDB would previously report an error if the new server had a different cluster ID. This has been fixed: this situation is merely a warning. [#95219][#95219] -- When using identity maps (via `server.identity_map.configuration`), authentication now correctly verifies that the client-provided username matches at least one of the mappings for the system identity. Previously, the client-provided username was incorrectly ignored and authentication could fail if the first candidate mapping did not result in a valid DB username. [#94915][#94915] -- The `prokind` column of `pg_catalog.pg_proc` is now populated properly. [#95289][#95289] -- `pg_catalog.pg_description` and `pg_catalog.obj_description()` are now able to retrieve the descriptive help for [built-in functions]({% link v23.1/functions-and-operators.md %}). [#95294][#95294] -- Fixed a crash that could occur when formatting a tuple with an unknown type. [#95009][#95009] -- Fixed a bug where a DNS lookup was performed during gossip remote forwarding while holding the gossip mutex. This could cause processing stalls if the DNS server was slow to respond. [#95426][#95426] -- Fixed a bug where `CLOSE ALL` would not respect the "ALL" flag and would instead attempt to close a cursor with no name. [#95414][#95414] -- Fixed a bug where default expressions could have a type which differs from the type of the column as long as the expression's type could be cast in an assignment context, which could lead to a panic during a backfill if such a default expression was added to a new column. This bug was introduced in v22.2.0. [#95398][#95398] -- DB Console features that check for the `VIEWACTIVITYREDACTED` privilege now also account for [system-level privileges](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges). [#95258][#95258] -- CockroachDB now supports receiving `regXXX`-type values in binary extended protocol. [#94355][#94355] -- Operations like [`BACKUP`]({% link v23.1/backup.md %}) can now reuse a previously created AWS KMS client if the client was created with the same parameters. This addresses the `NoCredentialProviders` errors on EC2 for backups with long incremental chains. [#95026][#95026] -- The syntax `EXPLAIN (DDL) COMMENT ON` is now possible. [#95467][#95467] -- Fixed a bug where a database [`RESTORE`]({% link v23.1/restore.md %}) would not grant `CREATE` and `USAGE` on the public schema to the public role. [#95466][#95466] -- Fixed the formatting of JSON values inside of a SQL array so they no longer have improper quoting. [#94705][#94705] -- Fixed a bug which could cause expressions with side-effects (e.g., volatile expressions or data-modifying statements like `INSERT`) in `NOT MATERIALIZED` CTEs to be executed more than once. This bug was present since `NOT MATERIALIZED` was first supported in version 20.2.0. [#95454][#95454] -- Fixed `pg_get_indexdef` so that it shows the expression used to define an expression-based index. In addition, the function was previously including columns stored by the index, which was incorrect and has now also been fixed. [#95413][#95413] -- Reduced register session, deregister session, and session cancel query contention. [#95553][#95553] -- Fixed a bug that could cause arguments of a [`COALESCE`]({% link v23.1/functions-and-operators.md %}#conditional-and-function-like-operators) statement to be evaluated when previous arguments always evaluated to non-NULL values. This bug could cause query errors to originate from arguments of a `COALESCE` that should have never been evaluated. [#95599][#95599] -- Fixed the `array_to_string` [built-in function]({% link v23.1/functions-and-operators.md %}) so that nested arrays are traversed without printing 'ARRAY' at each nesting level. [#95802][#95802] -- Fixed a bug where using the [`COPY`]({% link v23.1/copy.md %}) statement to copy data into a column with collated strings would result in an error similar to `internal error: unknown type collatedstring`. [#95894][#95894] -- The content of `column_default` in `information_schema.columns` no longer has type annotations. [#94153][#94153] -- Fixed a long-standing bug that caused incorrect parsing of double-quoted identifiers separated by one or more newlines. [#96019][#96019] -- Fixed a rare internal errors in `LATERAL` queries with redundant function calls. [#96048][#96048] -- Fixed an internal error which may occur in the `SHOW RANGE FROM TABLE` statement when the `FOR ROW` clause specifies a `BYTE` literal and the corresponding column data type is `BIT`. [#96002][#96002] -- Fixed an internal errors which may occur on some `AS OF SYSTEM TIME` expressions. [#96113][#96113] -- Fixed a bug where a node with a disk stall would continue to accept new connections and preserve existing connections until the disk stall abated. [#96371][#96371] -- Fixed a bug where a [`RESTORE`]({% link v23.1/restore.md %}) flow could hang indefinitely in the face of a context cancellation, manifesting as a stuck restore job. [#96302][#96302] -- Fixed a bug where the `NOSQLLOGIN` [system-level privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges) had a bug that made CockroachDB ignore it entirely, so it had no effect. The bug was introduced in v22.2.0-alpha.1. The `NOSQLLOGIN` [role option]({% link v23.1/alter-role.md %}#role-options) is unaffected by this bug. [#96466][#96466] -- The compatibility scalar functions in `information_schema` are now listed in the proper namespace in `pg_catalog.pg_proc`. [#96562][#96562] -- Fixed a bug in which the [`CREATE SCHEDULE`]({% link v23.1/create-schedule-for-backup.md %}) statement would not properly handle a placeholder for the `revision_history` option. [#95675][#95675] +- Fixed a bug where the `session_id` session variable would not be properly set if used from a subquery. +- Fixed a bug where CockroachDB could, in rare cases, encounter an internal error when evaluating the `crdb_internal.range_stats` [built-in function]({% link v23.1/functions-and-operators.md %}) (which powers the [`SHOW RANGES`]({% link v23.1/show-ranges.md %}) command among other things). The bug was introduced in v22.2.0 and is now fixed. +- Fixed a bug that could prevent `CASE` expressions that used placeholder return values from type-checking correctly. +- Updated the volatility of the `hmac`, `digest`, and `crypt` built-ins to be immutable. +- Server logs are now correctly fsynced at every syncInterval. +- The `stxnamespace`, `stxkind` and `stxstattarget` columns are now defined in `pg_statistics_ext`. +- Fixed a bug where, when experimental MVCC range tombstones are enabled (they are disabled by default), a bulk ingestion (e.g., an `IMPORT`) could fail to take a committed-but-unresolved write intent into account during conflict checks when written above an MVCC range tombstone. It was therefore possible in very rare circumstances for the ingestion to write a value below the timestamp of the committed intent, causing the ingested value to disappear. +- This patch fixes `JOIN` queries involving tables with unique constraints using `LIMIT`, `GROUP BY`, and `ORDER BY` clauses to ensure that the optimizer considers streaming group-by with no `TopK` operation, when possible. This is often the most efficient query plan. +- Secure clusters now show correct login information in the top right corner. +- Previously, CockroachDB could crash in rare circumstances when evaluating lookup and index joins. The bug has been present since the v22.2.0 release. You can also employ a temporary workaround without upgrading to the release with this fix by changing the value of the undocumented [cluster setting]({% link v23.1/cluster-settings.md %}) `sql.distsql.use_streamer.enabled` to `false`. +- The `CREATE ROLE`, `DELETE ROLE`, `GRANT`, and `REVOKE` statements no longer function when the transaction is in read-only mode. +- Fixed a bug where, when experimental MVCC range tombstones are enabled (they are disabled by default), a bulk ingestion (e.g., an `IMPORT`) could, in some situations, fail to properly check for conflicts with existing MVCC range tombstones. This could cause the ingestion to write below a recently-written MVCC range tombstone, in turn losing the ingested data. This could only happen in rare circumstances where a bulk ingestion was applied concurrently with an import cancellation. +- Fixed a bug where, in some cases, the start/end key columns of the output of [`SHOW RANGES`]({% link v23.1/show-ranges.md %}) was missing. +- Fixed a bug where trigrams ignored unicode (multi-byte) characters from input strings. +- Fixed a bug that could happen when type-checking an array expression that only contains NULLs and placeholder values. The bug was only present in v22.2.1. +- Fixed a bug where tables which receive writes concurrently with portions of an `ALTER TABLE ... SET LOCALITY REGIONAL BY ROW` may fail with an error: `duplicate key value violates unique constraint "new_primary_key"`. This bug was introduced in 22.1. +- Fixed a bug where CockroachDB could encounter an internal error when evaluating window functions with `RANGE` window frame mode with an `OFFSET PRECEDING` or `OFFSET FOLLOWING` boundary set when an `ORDER BY` clause has the `NULLS LAST` option set. This will now result in a regular error since the feature is marked as unsupported. +- Previously, CockroachDB could delay the release of the locks acquired when evaluating `SELECT FOR UPDATE` statements in some cases. This delay (up to 5s) could then block future readers. The bug was introduced in 22.2.0, and the temporary workaround without upgrading to a release with this fix is to set the undocumented [cluster setting]({% link v23.1/cluster-settings.md %}) `sql.distsql.use_streamer.enabled` to `false`. +- Record types can now be encoded with the binary encoding of the Postgres wire protocol. Previously, trying to use this encoding could case a panic. +- Fixed a panic that could be caused when using a SQL cursor to access tables in the `crdb_internal` schema. +- Fixed a bug in which `RESTORE SYSTEM USERS` would fail to restore [role options]({% link v23.1/alter-role.md %}#role-options). +- Fixed a crash that could occur on the gateway node when collecting a statement diagnostics bundle (e.g., [`EXPLAIN ANALYZE (DEBUG)`]({% link v23.1/explain-analyze.md %})) on a statement that fails with certain errors. This crash has existed in various forms since the introduction of statement bundles in v20.1.0. +- Fixed a recursive CTE expressions which cause internal errors when explicit CASTs of initial expressions to output types are missing. +- Previously, certain `GRANT` or `REVOKE` commands on a user which does not exist would error with the correct PG code. This is now fixed. +- The `pg_proc` and `pg_type` virtual OID indexes no longer incorrectly show cross-db objects. +- It is now possible to run `cockroach version` and `cockroach start` (and possibly other sub-commands) when the user running the command does not have permission to access the current working directory. +- It is now possible to use a directory whose name is `"disabled"` via `--external-io-dir`. To actually disable external I/O, use `--external-io-dir=""`. +- This patch fixes an internal error occurring in CASE expressions when a column present in a `THEN` or `ELSE` expression is of an inequivalent type compared to that of a constant this column is compared to in an equality predicate, e.g., `(CASE WHEN false THEN int_col ELSE 1 END) IN (int_col) AND int_col=3/2`. +- The `pronamespace` column of the `pg_proc` table now correctly reports the `crdb_internal` schema for [built-in functions]({% link v23.1/functions-and-operators.md %}) that have the "crdb_internal" prefix. +- In the SQL shell ([`cockroach sql`]({% link v23.1/cockroach-sql.md %}) / [`cockroach demo`]({% link v23.1/cockroach-demo.md %})), when using `\c`/`\connect` to connect to a different server, CockroachDB would previously report an error if the new server had a different cluster ID. This has been fixed: this situation is merely a warning. +- When using identity maps (via `server.identity_map.configuration`), authentication now correctly verifies that the client-provided username matches at least one of the mappings for the system identity. Previously, the client-provided username was incorrectly ignored and authentication could fail if the first candidate mapping did not result in a valid DB username. +- The `prokind` column of `pg_catalog.pg_proc` is now populated properly. +- `pg_catalog.pg_description` and `pg_catalog.obj_description()` are now able to retrieve the descriptive help for [built-in functions]({% link v23.1/functions-and-operators.md %}). +- Fixed a crash that could occur when formatting a tuple with an unknown type. +- Fixed a bug where a DNS lookup was performed during gossip remote forwarding while holding the gossip mutex. This could cause processing stalls if the DNS server was slow to respond. +- Fixed a bug where `CLOSE ALL` would not respect the "ALL" flag and would instead attempt to close a cursor with no name. +- Fixed a bug where default expressions could have a type which differs from the type of the column as long as the expression's type could be cast in an assignment context, which could lead to a panic during a backfill if such a default expression was added to a new column. This bug was introduced in v22.2.0. +- DB Console features that check for the `VIEWACTIVITYREDACTED` privilege now also account for [system-level privileges](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges). +- CockroachDB now supports receiving `regXXX`-type values in binary extended protocol. +- Operations like [`BACKUP`]({% link v23.1/backup.md %}) can now reuse a previously created AWS KMS client if the client was created with the same parameters. This addresses the `NoCredentialProviders` errors on EC2 for backups with long incremental chains. +- The syntax `EXPLAIN (DDL) COMMENT ON` is now possible. +- Fixed a bug where a database [`RESTORE`]({% link v23.1/restore.md %}) would not grant `CREATE` and `USAGE` on the public schema to the public role. +- Fixed the formatting of JSON values inside of a SQL array so they no longer have improper quoting. +- Fixed a bug which could cause expressions with side-effects (e.g., volatile expressions or data-modifying statements like `INSERT`) in `NOT MATERIALIZED` CTEs to be executed more than once. This bug was present since `NOT MATERIALIZED` was first supported in version 20.2.0. +- Fixed `pg_get_indexdef` so that it shows the expression used to define an expression-based index. In addition, the function was previously including columns stored by the index, which was incorrect and has now also been fixed. +- Reduced register session, deregister session, and session cancel query contention. +- Fixed a bug that could cause arguments of a [`COALESCE`]({% link v23.1/functions-and-operators.md %}#conditional-and-function-like-operators) statement to be evaluated when previous arguments always evaluated to non-NULL values. This bug could cause query errors to originate from arguments of a `COALESCE` that should have never been evaluated. +- Fixed the `array_to_string` [built-in function]({% link v23.1/functions-and-operators.md %}) so that nested arrays are traversed without printing 'ARRAY' at each nesting level. +- Fixed a bug where using the [`COPY`]({% link v23.1/copy.md %}) statement to copy data into a column with collated strings would result in an error similar to `internal error: unknown type collatedstring`. +- The content of `column_default` in `information_schema.columns` no longer has type annotations. +- Fixed a long-standing bug that caused incorrect parsing of double-quoted identifiers separated by one or more newlines. +- Fixed a rare internal errors in `LATERAL` queries with redundant function calls. +- Fixed an internal error which may occur in the `SHOW RANGE FROM TABLE` statement when the `FOR ROW` clause specifies a `BYTE` literal and the corresponding column data type is `BIT`. +- Fixed an internal errors which may occur on some `AS OF SYSTEM TIME` expressions. +- Fixed a bug where a node with a disk stall would continue to accept new connections and preserve existing connections until the disk stall abated. +- Fixed a bug where a [`RESTORE`]({% link v23.1/restore.md %}) flow could hang indefinitely in the face of a context cancellation, manifesting as a stuck restore job. +- Fixed a bug where the `NOSQLLOGIN` [system-level privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges) had a bug that made CockroachDB ignore it entirely, so it had no effect. The bug was introduced in v22.2.0-alpha.1. The `NOSQLLOGIN` [role option]({% link v23.1/alter-role.md %}#role-options) is unaffected by this bug. +- The compatibility scalar functions in `information_schema` are now listed in the proper namespace in `pg_catalog.pg_proc`. +- Fixed a bug in which the [`CREATE SCHEDULE`]({% link v23.1/create-schedule-for-backup.md %}) statement would not properly handle a placeholder for the `revision_history` option.

Performance improvements

-- The optimizer can now avoid planning a sort in more cases with joins that perform lookups into an index with one or more columns sorted in descending order. This can significantly decrease the number of rows that have to be scanned in order to satisfy a [`LIMIT`]({% link v23.1/limit-offset.md %}) clause. [#93673][#93673] -- Significantly reduced CPU usage of the underlying gossip network in large clusters. [#89613][#89613] -- Refactored the query logic when fetching database index recommendations for the `DatabaseDetails` API endpoint, greatly reducing the query time and cost, particularly for large schemas. [#93937][#93937] -- Improved performance when populating `crdb_internal.default_privileges`. [#94247][#94247] -- Some types of [user-defined functions (UDFs)]({% link v23.1/user-defined-functions.md %}) are now inlined in query plans as relation expressions, which speeds up their evaluation. UDFs must be non-volatile and have a single statement in the function body to be inlined. [#92955][#92955] -- Improved the performance of `pg_{function,table,type}_is_visible`. [#94339][#94339] -- Long chains of incremental backups and restore of such chains will now allocate less memory during the unmarshaling of metadata. [#93997][#93997] -- Extended the RPC compression encoding with a length prefixing format, allowing more efficient decompression on receivers. [#93871][#93871] -- When planning lookup joins with a [`LIMIT`]({% link v23.1/limit-offset.md %}) clause from a `REGIONAL BY ROW` input table, the optimizer will now explore a locality-optimized-search plan of two lookup joins to possibly avoid high latency of reading rows in a remote region. [#93377][#93377] -- Improve the performance of the `SHOW FUNCTIONS` statement. [#94771][#94771] -- Improved the performance of several PostgreSQL compatibility built-ins. [#94771][#94771] -- In some cases, when planning an inverted zigzag join, the optimizer can now detect whether it is necessary to re-apply the filter after the zigzag join. If it is not necessary, the optimizer can produce a more efficient plan. [#95638][#95638] -- Fixed a bug which could lead to very slow drop when tables or views have a very large number of columns (greater than 1000). [#95850][#95850] -- In 22.2, CockroachDB introduced support for `DISCARD TEMP` and made `DISCARD ALL` actually discard temp tables. This implementation ran expensive logic to discover temporary schemas rather than consulting in-memory data structures. As a result, `DISCARD ALL`, which is issued regularly by connection pools, became an expensive operation when it should be cheap. This problem is now resolved. [#95876][#95876] -- In 22.2, logic was added to make `SET SESSION AUTHORIZATION DEFAULT` not a no-op. This implementation used more general code for setting the role for a session which made sure that the role exists. This improves the performance of the `DISCARD ALL` and `SET SESSION AUTHORIZATION DEFAULT` statements. [#95876][#95876] -- The optimizer now plans inverted index scans for queries that filter by JSON fetch value operators (`->`) with integer indices, e.g, `json_col->0 = '{"b": "c"}'`. [#95848][#95848] -- The optimizer now plans inverted index scans for queries that filter by JSON fetch value operators (`->`) with integer indices alongside the "contains" or the "contained by" operators, e.g, `json_col->0 @> '{"b": "c"}' or json_col->0 <@ '{"b": "c"}'`. [#96202][#96202] -- Added delegated snapshots which can reduce WAN traffic for snapshot movement. If there is another replica for this range with a closer locality than the delegate, the leaseholder will attempt to have that delegate send the snapshot. This is particularly useful in the case of a decommission of a node where most snapshots are transferred to another replica in the same locality. [#83991][#83991] -- The Raft proposal pipeline has been optimized to reduce interference between Raft proposals. This improves average and tail write latency at high concurrency. [#94165][#94165] +- The optimizer can now avoid planning a sort in more cases with joins that perform lookups into an index with one or more columns sorted in descending order. This can significantly decrease the number of rows that have to be scanned in order to satisfy a [`LIMIT`]({% link v23.1/limit-offset.md %}) clause. +- Significantly reduced CPU usage of the underlying gossip network in large clusters. +- Refactored the query logic when fetching database index recommendations for the `DatabaseDetails` API endpoint, greatly reducing the query time and cost, particularly for large schemas. +- Improved performance when populating `crdb_internal.default_privileges`. +- Some types of [user-defined functions (UDFs)]({% link v23.1/user-defined-functions.md %}) are now inlined in query plans as relation expressions, which speeds up their evaluation. UDFs must be non-volatile and have a single statement in the function body to be inlined. +- Improved the performance of `pg_{function,table,type}_is_visible`. +- Long chains of incremental backups and restore of such chains will now allocate less memory during the unmarshaling of metadata. +- Extended the RPC compression encoding with a length prefixing format, allowing more efficient decompression on receivers. +- When planning lookup joins with a [`LIMIT`]({% link v23.1/limit-offset.md %}) clause from a `REGIONAL BY ROW` input table, the optimizer will now explore a locality-optimized-search plan of two lookup joins to possibly avoid high latency of reading rows in a remote region. +- Improve the performance of the `SHOW FUNCTIONS` statement. +- Improved the performance of several PostgreSQL compatibility built-ins. +- In some cases, when planning an inverted zigzag join, the optimizer can now detect whether it is necessary to re-apply the filter after the zigzag join. If it is not necessary, the optimizer can produce a more efficient plan. +- Fixed a bug which could lead to very slow drop when tables or views have a very large number of columns (greater than 1000). +- In 22.2, CockroachDB introduced support for `DISCARD TEMP` and made `DISCARD ALL` actually discard temp tables. This implementation ran expensive logic to discover temporary schemas rather than consulting in-memory data structures. As a result, `DISCARD ALL`, which is issued regularly by connection pools, became an expensive operation when it should be cheap. This problem is now resolved. +- In 22.2, logic was added to make `SET SESSION AUTHORIZATION DEFAULT` not a no-op. This implementation used more general code for setting the role for a session which made sure that the role exists. This improves the performance of the `DISCARD ALL` and `SET SESSION AUTHORIZATION DEFAULT` statements. +- The optimizer now plans inverted index scans for queries that filter by JSON fetch value operators (`->`) with integer indices, e.g, `json_col->0 = '{"b": "c"}'`. +- The optimizer now plans inverted index scans for queries that filter by JSON fetch value operators (`->`) with integer indices alongside the "contains" or the "contained by" operators, e.g, `json_col->0 @> '{"b": "c"}' or json_col->0 <@ '{"b": "c"}'`. +- Added delegated snapshots which can reduce WAN traffic for snapshot movement. If there is another replica for this range with a closer locality than the delegate, the leaseholder will attempt to have that delegate send the snapshot. This is particularly useful in the case of a decommission of a node where most snapshots are transferred to another replica in the same locality. +- The Raft proposal pipeline has been optimized to reduce interference between Raft proposals. This improves average and tail write latency at high concurrency.

Build changes

-- The native binary for Cypress is now only downloaded and installed when UI end-to-end tests are run, instead of eagerly downloading it on all platforms at build-time. This restores the ability for non-{Windows, Darwin, Linux} platforms like FreeBSD and illumos to build CRDB without modifications, which broke in the initial 22.2 release. [#93800][#93800] -- Required NPM dependencies are now fetched from a Google Cloud Storage bucket managed by Cockroach Labs instead of from a git submodule committed in-tree. [#94152][#94152] +- The native binary for Cypress is now only downloaded and installed when UI end-to-end tests are run, instead of eagerly downloading it on all platforms at build-time. This restores the ability for non-{Windows, Darwin, Linux} platforms like FreeBSD and illumos to build CRDB without modifications, which broke in the initial 22.2 release. +- Required NPM dependencies are now fetched from a Google Cloud Storage bucket managed by Cockroach Labs instead of from a git submodule committed in-tree.
@@ -265,246 +265,3 @@ We would like to thank the following contributors from the CockroachDB community - Vivian Kong
- -[#83991]: https://github.com/cockroachdb/cockroach/pull/83991 -[#86061]: https://github.com/cockroachdb/cockroach/pull/86061 -[#88353]: https://github.com/cockroachdb/cockroach/pull/88353 -[#89613]: https://github.com/cockroachdb/cockroach/pull/89613 -[#89975]: https://github.com/cockroachdb/cockroach/pull/89975 -[#90830]: https://github.com/cockroachdb/cockroach/pull/90830 -[#91933]: https://github.com/cockroachdb/cockroach/pull/91933 -[#92285]: https://github.com/cockroachdb/cockroach/pull/92285 -[#92580]: https://github.com/cockroachdb/cockroach/pull/92580 -[#92589]: https://github.com/cockroachdb/cockroach/pull/92589 -[#92596]: https://github.com/cockroachdb/cockroach/pull/92596 -[#92949]: https://github.com/cockroachdb/cockroach/pull/92949 -[#92955]: https://github.com/cockroachdb/cockroach/pull/92955 -[#93068]: https://github.com/cockroachdb/cockroach/pull/93068 -[#93089]: https://github.com/cockroachdb/cockroach/pull/93089 -[#93157]: https://github.com/cockroachdb/cockroach/pull/93157 -[#93190]: https://github.com/cockroachdb/cockroach/pull/93190 -[#93219]: https://github.com/cockroachdb/cockroach/pull/93219 -[#93274]: https://github.com/cockroachdb/cockroach/pull/93274 -[#93377]: https://github.com/cockroachdb/cockroach/pull/93377 -[#93414]: https://github.com/cockroachdb/cockroach/pull/93414 -[#93513]: https://github.com/cockroachdb/cockroach/pull/93513 -[#93628]: https://github.com/cockroachdb/cockroach/pull/93628 -[#93644]: https://github.com/cockroachdb/cockroach/pull/93644 -[#93657]: https://github.com/cockroachdb/cockroach/pull/93657 -[#93673]: https://github.com/cockroachdb/cockroach/pull/93673 -[#93675]: https://github.com/cockroachdb/cockroach/pull/93675 -[#93748]: https://github.com/cockroachdb/cockroach/pull/93748 -[#93750]: https://github.com/cockroachdb/cockroach/pull/93750 -[#93751]: https://github.com/cockroachdb/cockroach/pull/93751 -[#93754]: https://github.com/cockroachdb/cockroach/pull/93754 -[#93757]: https://github.com/cockroachdb/cockroach/pull/93757 -[#93760]: https://github.com/cockroachdb/cockroach/pull/93760 -[#93769]: https://github.com/cockroachdb/cockroach/pull/93769 -[#93800]: https://github.com/cockroachdb/cockroach/pull/93800 -[#93824]: https://github.com/cockroachdb/cockroach/pull/93824 -[#93836]: https://github.com/cockroachdb/cockroach/pull/93836 -[#93838]: https://github.com/cockroachdb/cockroach/pull/93838 -[#93855]: https://github.com/cockroachdb/cockroach/pull/93855 -[#93858]: https://github.com/cockroachdb/cockroach/pull/93858 -[#93868]: https://github.com/cockroachdb/cockroach/pull/93868 -[#93871]: https://github.com/cockroachdb/cockroach/pull/93871 -[#93891]: https://github.com/cockroachdb/cockroach/pull/93891 -[#93901]: https://github.com/cockroachdb/cockroach/pull/93901 -[#93937]: https://github.com/cockroachdb/cockroach/pull/93937 -[#93938]: https://github.com/cockroachdb/cockroach/pull/93938 -[#93939]: https://github.com/cockroachdb/cockroach/pull/93939 -[#93952]: https://github.com/cockroachdb/cockroach/pull/93952 -[#93956]: https://github.com/cockroachdb/cockroach/pull/93956 -[#93974]: https://github.com/cockroachdb/cockroach/pull/93974 -[#93979]: https://github.com/cockroachdb/cockroach/pull/93979 -[#93991]: https://github.com/cockroachdb/cockroach/pull/93991 -[#93997]: https://github.com/cockroachdb/cockroach/pull/93997 -[#94002]: https://github.com/cockroachdb/cockroach/pull/94002 -[#94021]: https://github.com/cockroachdb/cockroach/pull/94021 -[#94031]: https://github.com/cockroachdb/cockroach/pull/94031 -[#94045]: https://github.com/cockroachdb/cockroach/pull/94045 -[#94106]: https://github.com/cockroachdb/cockroach/pull/94106 -[#94122]: https://github.com/cockroachdb/cockroach/pull/94122 -[#94123]: https://github.com/cockroachdb/cockroach/pull/94123 -[#94134]: https://github.com/cockroachdb/cockroach/pull/94134 -[#94151]: https://github.com/cockroachdb/cockroach/pull/94151 -[#94152]: https://github.com/cockroachdb/cockroach/pull/94152 -[#94153]: https://github.com/cockroachdb/cockroach/pull/94153 -[#94154]: https://github.com/cockroachdb/cockroach/pull/94154 -[#94165]: https://github.com/cockroachdb/cockroach/pull/94165 -[#94207]: https://github.com/cockroachdb/cockroach/pull/94207 -[#94246]: https://github.com/cockroachdb/cockroach/pull/94246 -[#94247]: https://github.com/cockroachdb/cockroach/pull/94247 -[#94285]: https://github.com/cockroachdb/cockroach/pull/94285 -[#94314]: https://github.com/cockroachdb/cockroach/pull/94314 -[#94339]: https://github.com/cockroachdb/cockroach/pull/94339 -[#94342]: https://github.com/cockroachdb/cockroach/pull/94342 -[#94355]: https://github.com/cockroachdb/cockroach/pull/94355 -[#94399]: https://github.com/cockroachdb/cockroach/pull/94399 -[#94405]: https://github.com/cockroachdb/cockroach/pull/94405 -[#94421]: https://github.com/cockroachdb/cockroach/pull/94421 -[#94425]: https://github.com/cockroachdb/cockroach/pull/94425 -[#94429]: https://github.com/cockroachdb/cockroach/pull/94429 -[#94432]: https://github.com/cockroachdb/cockroach/pull/94432 -[#94436]: https://github.com/cockroachdb/cockroach/pull/94436 -[#94440]: https://github.com/cockroachdb/cockroach/pull/94440 -[#94455]: https://github.com/cockroachdb/cockroach/pull/94455 -[#94581]: https://github.com/cockroachdb/cockroach/pull/94581 -[#94634]: https://github.com/cockroachdb/cockroach/pull/94634 -[#94645]: https://github.com/cockroachdb/cockroach/pull/94645 -[#94653]: https://github.com/cockroachdb/cockroach/pull/94653 -[#94670]: https://github.com/cockroachdb/cockroach/pull/94670 -[#94677]: https://github.com/cockroachdb/cockroach/pull/94677 -[#94692]: https://github.com/cockroachdb/cockroach/pull/94692 -[#94700]: https://github.com/cockroachdb/cockroach/pull/94700 -[#94705]: https://github.com/cockroachdb/cockroach/pull/94705 -[#94710]: https://github.com/cockroachdb/cockroach/pull/94710 -[#94719]: https://github.com/cockroachdb/cockroach/pull/94719 -[#94720]: https://github.com/cockroachdb/cockroach/pull/94720 -[#94725]: https://github.com/cockroachdb/cockroach/pull/94725 -[#94739]: https://github.com/cockroachdb/cockroach/pull/94739 -[#94771]: https://github.com/cockroachdb/cockroach/pull/94771 -[#94777]: https://github.com/cockroachdb/cockroach/pull/94777 -[#94791]: https://github.com/cockroachdb/cockroach/pull/94791 -[#94796]: https://github.com/cockroachdb/cockroach/pull/94796 -[#94806]: https://github.com/cockroachdb/cockroach/pull/94806 -[#94863]: https://github.com/cockroachdb/cockroach/pull/94863 -[#94894]: https://github.com/cockroachdb/cockroach/pull/94894 -[#94915]: https://github.com/cockroachdb/cockroach/pull/94915 -[#94948]: https://github.com/cockroachdb/cockroach/pull/94948 -[#94950]: https://github.com/cockroachdb/cockroach/pull/94950 -[#94958]: https://github.com/cockroachdb/cockroach/pull/94958 -[#94962]: https://github.com/cockroachdb/cockroach/pull/94962 -[#94985]: https://github.com/cockroachdb/cockroach/pull/94985 -[#95005]: https://github.com/cockroachdb/cockroach/pull/95005 -[#95009]: https://github.com/cockroachdb/cockroach/pull/95009 -[#95016]: https://github.com/cockroachdb/cockroach/pull/95016 -[#95020]: https://github.com/cockroachdb/cockroach/pull/95020 -[#95026]: https://github.com/cockroachdb/cockroach/pull/95026 -[#95029]: https://github.com/cockroachdb/cockroach/pull/95029 -[#95038]: https://github.com/cockroachdb/cockroach/pull/95038 -[#95091]: https://github.com/cockroachdb/cockroach/pull/95091 -[#95179]: https://github.com/cockroachdb/cockroach/pull/95179 -[#95190]: https://github.com/cockroachdb/cockroach/pull/95190 -[#95209]: https://github.com/cockroachdb/cockroach/pull/95209 -[#95219]: https://github.com/cockroachdb/cockroach/pull/95219 -[#95234]: https://github.com/cockroachdb/cockroach/pull/95234 -[#95258]: https://github.com/cockroachdb/cockroach/pull/95258 -[#95275]: https://github.com/cockroachdb/cockroach/pull/95275 -[#95289]: https://github.com/cockroachdb/cockroach/pull/95289 -[#95291]: https://github.com/cockroachdb/cockroach/pull/95291 -[#95294]: https://github.com/cockroachdb/cockroach/pull/95294 -[#95303]: https://github.com/cockroachdb/cockroach/pull/95303 -[#95326]: https://github.com/cockroachdb/cockroach/pull/95326 -[#95376]: https://github.com/cockroachdb/cockroach/pull/95376 -[#95397]: https://github.com/cockroachdb/cockroach/pull/95397 -[#95398]: https://github.com/cockroachdb/cockroach/pull/95398 -[#95413]: https://github.com/cockroachdb/cockroach/pull/95413 -[#95414]: https://github.com/cockroachdb/cockroach/pull/95414 -[#95426]: https://github.com/cockroachdb/cockroach/pull/95426 -[#95436]: https://github.com/cockroachdb/cockroach/pull/95436 -[#95450]: https://github.com/cockroachdb/cockroach/pull/95450 -[#95454]: https://github.com/cockroachdb/cockroach/pull/95454 -[#95461]: https://github.com/cockroachdb/cockroach/pull/95461 -[#95466]: https://github.com/cockroachdb/cockroach/pull/95466 -[#95467]: https://github.com/cockroachdb/cockroach/pull/95467 -[#95516]: https://github.com/cockroachdb/cockroach/pull/95516 -[#95532]: https://github.com/cockroachdb/cockroach/pull/95532 -[#95544]: https://github.com/cockroachdb/cockroach/pull/95544 -[#95553]: https://github.com/cockroachdb/cockroach/pull/95553 -[#95556]: https://github.com/cockroachdb/cockroach/pull/95556 -[#95562]: https://github.com/cockroachdb/cockroach/pull/95562 -[#95591]: https://github.com/cockroachdb/cockroach/pull/95591 -[#95599]: https://github.com/cockroachdb/cockroach/pull/95599 -[#95638]: https://github.com/cockroachdb/cockroach/pull/95638 -[#95639]: https://github.com/cockroachdb/cockroach/pull/95639 -[#95675]: https://github.com/cockroachdb/cockroach/pull/95675 -[#95710]: https://github.com/cockroachdb/cockroach/pull/95710 -[#95739]: https://github.com/cockroachdb/cockroach/pull/95739 -[#95795]: https://github.com/cockroachdb/cockroach/pull/95795 -[#95796]: https://github.com/cockroachdb/cockroach/pull/95796 -[#95798]: https://github.com/cockroachdb/cockroach/pull/95798 -[#95802]: https://github.com/cockroachdb/cockroach/pull/95802 -[#95848]: https://github.com/cockroachdb/cockroach/pull/95848 -[#95850]: https://github.com/cockroachdb/cockroach/pull/95850 -[#95868]: https://github.com/cockroachdb/cockroach/pull/95868 -[#95876]: https://github.com/cockroachdb/cockroach/pull/95876 -[#95883]: https://github.com/cockroachdb/cockroach/pull/95883 -[#95894]: https://github.com/cockroachdb/cockroach/pull/95894 -[#95911]: https://github.com/cockroachdb/cockroach/pull/95911 -[#95963]: https://github.com/cockroachdb/cockroach/pull/95963 -[#95997]: https://github.com/cockroachdb/cockroach/pull/95997 -[#96002]: https://github.com/cockroachdb/cockroach/pull/96002 -[#96010]: https://github.com/cockroachdb/cockroach/pull/96010 -[#96019]: https://github.com/cockroachdb/cockroach/pull/96019 -[#96023]: https://github.com/cockroachdb/cockroach/pull/96023 -[#96029]: https://github.com/cockroachdb/cockroach/pull/96029 -[#96030]: https://github.com/cockroachdb/cockroach/pull/96030 -[#96048]: https://github.com/cockroachdb/cockroach/pull/96048 -[#96112]: https://github.com/cockroachdb/cockroach/pull/96112 -[#96113]: https://github.com/cockroachdb/cockroach/pull/96113 -[#96115]: https://github.com/cockroachdb/cockroach/pull/96115 -[#96202]: https://github.com/cockroachdb/cockroach/pull/96202 -[#96213]: https://github.com/cockroachdb/cockroach/pull/96213 -[#96217]: https://github.com/cockroachdb/cockroach/pull/96217 -[#96243]: https://github.com/cockroachdb/cockroach/pull/96243 -[#96278]: https://github.com/cockroachdb/cockroach/pull/96278 -[#96279]: https://github.com/cockroachdb/cockroach/pull/96279 -[#96287]: https://github.com/cockroachdb/cockroach/pull/96287 -[#96302]: https://github.com/cockroachdb/cockroach/pull/96302 -[#96314]: https://github.com/cockroachdb/cockroach/pull/96314 -[#96340]: https://github.com/cockroachdb/cockroach/pull/96340 -[#96371]: https://github.com/cockroachdb/cockroach/pull/96371 -[#96456]: https://github.com/cockroachdb/cockroach/pull/96456 -[#96466]: https://github.com/cockroachdb/cockroach/pull/96466 -[#96476]: https://github.com/cockroachdb/cockroach/pull/96476 -[#96510]: https://github.com/cockroachdb/cockroach/pull/96510 -[#96562]: https://github.com/cockroachdb/cockroach/pull/96562 -[#96563]: https://github.com/cockroachdb/cockroach/pull/96563 -[019299b04]: https://github.com/cockroachdb/cockroach/commit/019299b04 -[0e57b6aef]: https://github.com/cockroachdb/cockroach/commit/0e57b6aef -[2428a4377]: https://github.com/cockroachdb/cockroach/commit/2428a4377 -[25f5dd3ba]: https://github.com/cockroachdb/cockroach/commit/25f5dd3ba -[26f442706]: https://github.com/cockroachdb/cockroach/commit/26f442706 -[28288d23b]: https://github.com/cockroachdb/cockroach/commit/28288d23b -[2abca5cb4]: https://github.com/cockroachdb/cockroach/commit/2abca5cb4 -[2ed44c54c]: https://github.com/cockroachdb/cockroach/commit/2ed44c54c -[2f69d92ad]: https://github.com/cockroachdb/cockroach/commit/2f69d92ad -[317c6e5af]: https://github.com/cockroachdb/cockroach/commit/317c6e5af -[3dbb321e1]: https://github.com/cockroachdb/cockroach/commit/3dbb321e1 -[4e6aaf381]: https://github.com/cockroachdb/cockroach/commit/4e6aaf381 -[55b032315]: https://github.com/cockroachdb/cockroach/commit/55b032315 -[6663caeb8]: https://github.com/cockroachdb/cockroach/commit/6663caeb8 -[68fd6477f]: https://github.com/cockroachdb/cockroach/commit/68fd6477f -[72ee36ab8]: https://github.com/cockroachdb/cockroach/commit/72ee36ab8 -[74dd4a175]: https://github.com/cockroachdb/cockroach/commit/74dd4a175 -[7b92c4eb0]: https://github.com/cockroachdb/cockroach/commit/7b92c4eb0 -[7d1db1cd7]: https://github.com/cockroachdb/cockroach/commit/7d1db1cd7 -[82d4c7cdf]: https://github.com/cockroachdb/cockroach/commit/82d4c7cdf -[9235a8b92]: https://github.com/cockroachdb/cockroach/commit/9235a8b92 -[9247472f5]: https://github.com/cockroachdb/cockroach/commit/9247472f5 -[99a7b47f2]: https://github.com/cockroachdb/cockroach/commit/99a7b47f2 -[9a8de1ede]: https://github.com/cockroachdb/cockroach/commit/9a8de1ede -[9f64db7f1]: https://github.com/cockroachdb/cockroach/commit/9f64db7f1 -[a94858bff]: https://github.com/cockroachdb/cockroach/commit/a94858bff -[a954f43a8]: https://github.com/cockroachdb/cockroach/commit/a954f43a8 -[afeaf3484]: https://github.com/cockroachdb/cockroach/commit/afeaf3484 -[b9a0471e4]: https://github.com/cockroachdb/cockroach/commit/b9a0471e4 -[b9d00ddd7]: https://github.com/cockroachdb/cockroach/commit/b9d00ddd7 -[bd7c9b961]: https://github.com/cockroachdb/cockroach/commit/bd7c9b961 -[bf6ce14e2]: https://github.com/cockroachdb/cockroach/commit/bf6ce14e2 -[c0231f35a]: https://github.com/cockroachdb/cockroach/commit/c0231f35a -[c7b299369]: https://github.com/cockroachdb/cockroach/commit/c7b299369 -[c94d0b7fc]: https://github.com/cockroachdb/cockroach/commit/c94d0b7fc -[ce5db0c69]: https://github.com/cockroachdb/cockroach/commit/ce5db0c69 -[d05c9699d]: https://github.com/cockroachdb/cockroach/commit/d05c9699d -[d8d13ce98]: https://github.com/cockroachdb/cockroach/commit/d8d13ce98 -[e14fe033d]: https://github.com/cockroachdb/cockroach/commit/e14fe033d -[e7d394b34]: https://github.com/cockroachdb/cockroach/commit/e7d394b34 -[ec0a2c4c1]: https://github.com/cockroachdb/cockroach/commit/ec0a2c4c1 -[edad297aa]: https://github.com/cockroachdb/cockroach/commit/edad297aa -[f2351f0e0]: https://github.com/cockroachdb/cockroach/commit/f2351f0e0 -[f7170c5db]: https://github.com/cockroachdb/cockroach/commit/f7170c5db -[f8a2c20f5]: https://github.com/cockroachdb/cockroach/commit/f8a2c20f5 -[fc0ec5521]: https://github.com/cockroachdb/cockroach/commit/fc0ec5521 -[ffad33a5a]: https://github.com/cockroachdb/cockroach/commit/ffad33a5a diff --git a/src/current/_includes/releases/v23.1/v23.1.0-alpha.3.md b/src/current/_includes/releases/v23.1/v23.1.0-alpha.3.md index c4f44c35165..054873a8be2 100644 --- a/src/current/_includes/releases/v23.1/v23.1.0-alpha.3.md +++ b/src/current/_includes/releases/v23.1/v23.1.0-alpha.3.md @@ -6,52 +6,52 @@ Release Date: February 21, 2023

General changes

-- Added new metrics to count [paused jobs]({% link v23.1/pause-job.md %}) for every job type. For example, the metric for paused changefeed jobs is `jobs.changefeed.currently_paused`. These metrics are updated at an interval defined by the cluster setting `jobs.metrics.interval.poll`, which defaults to 10 seconds. [#89752][#89752] +- Added new metrics to count [paused jobs]({% link v23.1/pause-job.md %}) for every job type. For example, the metric for paused changefeed jobs is `jobs.changefeed.currently_paused`. These metrics are updated at an interval defined by the cluster setting `jobs.metrics.interval.poll`, which defaults to 10 seconds.

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

- Added support for Azure Key Vault KMS, which will allow users to [encrypt and decrypt their backups]({% link v23.1/take-and-restore-encrypted-backups.md %}#use-key-management-service) using keys stored in Azure Key Vault. App Registration authentication (Azure RBAC) for Azure Storage is also now supported.[#96459][#96459] -- Introduced a new locality filter option (`coordinator_locality`) that can be specified when a [backup job]({% link v23.1/backup.md %}) is created. This option restricts the backup metadata writing to the designated nodes. [#95791][#95791] -- Fixed a bug that caused the server to crash if trying to restore a table from a backup generated by `BACKUP TABLE` from a schema that includes [user-defined functions]({% link v23.1/user-defined-functions.md %}), and the restore target database does not have a schema with the same name. [#96911][#96911] -- Changefeeds with the `unordered` option can use multi-region [Google Cloud Pub/Sub topics]({% link v23.1/changefeed-sinks.md %}). [#96567][#96567] -- Fixed a bug in changefeeds where long running [initial scans]({% link v23.1/create-changefeed.md %}#initial-scan) will fail to generate checkpoints. Failure to generate [checkpoints]({% link v23.1/how-does-an-enterprise-changefeed-work.md %}) is particularly bad if the changefeed restarts. Without checkpoints, the changefeed will restart from the beginning, and in the worst case, when exporting substantially sized tables, the changefeed initial scan may not complete. [#96995][#96995] +- Introduced a new locality filter option (`coordinator_locality`) that can be specified when a [backup job]({% link v23.1/backup.md %}) is created. This option restricts the backup metadata writing to the designated nodes. +- Fixed a bug that caused the server to crash if trying to restore a table from a backup generated by `BACKUP TABLE` from a schema that includes [user-defined functions]({% link v23.1/user-defined-functions.md %}), and the restore target database does not have a schema with the same name. +- Changefeeds with the `unordered` option can use multi-region [Google Cloud Pub/Sub topics]({% link v23.1/changefeed-sinks.md %}). +- Fixed a bug in changefeeds where long running [initial scans]({% link v23.1/create-changefeed.md %}#initial-scan) will fail to generate checkpoints. Failure to generate [checkpoints]({% link v23.1/how-does-an-enterprise-changefeed-work.md %}) is particularly bad if the changefeed restarts. Without checkpoints, the changefeed will restart from the beginning, and in the worst case, when exporting substantially sized tables, the changefeed initial scan may not complete.

SQL language changes

- Added [latency information]({% link cockroachcloud/statements-page.md %}#statement-statistics) in seconds to the statement statistics on `crdb_internal.statement_statistics`, `system.statement_statistics`, and `crdb_internal.cluster_statement_statistics`, with information about: `min`, `max`, `p50`, `p90`, and `p99. Also added the columns: `latency_seconds_min`, `latency_seconds_max`, `latency_seconds_p50`, `latency_seconds_p90`, and `latency_seconds_p99` to `crdb_internal.node_statement_statistics`.[#96396][#96396] -- Deprecated the `PGDUMP` and `MYSQLDUMP` formats for [`IMPORT`]({% link v23.1/import.md %}). They are still present, but will be removed in a future release. See the [Migration Overview]({% link molt/migration-overview.md %}) page for alternatives. [#96386][#96386] -- [`COPY ... FROM ... QUOTE '"'`]({% link v23.1/copy.md %}) will no longer error. [#96572][#96572] -- Added `last_error_code` column to the `crdb_internal.node_statement_statistics` table. Added `last_error_code` field to the `statistics` JSON blob in the `crdb_internal.statement_statistics` and `system.statement_statistics` tables. [#96436][#96436] -- Added support for expressions of the form `COLLATE "default"`, `COLLATE "C"`, and `COLLATE "POSIX"`. Since the default [collation]({% link v23.1/collate.md %}) cannot be changed currently, these expressions are all equivalent. The expressions are evaluated by treating the input as a normal string, and ignoring the collation. This means that comparisons between strings and collated strings that use `"default"`, `"C"`, or `"POSIX"` are now supported. Creating a column with the `"C"` or `"POSIX"` collations is still not supported. [#96828][#96828] -- The insights subsystem in `sqlstats` is now able to detect failed executions, regardless if they were slow or not. [#97039][#97039] -- The internal `statement_statistics` and `transaction_statistics` tables now include sampled execution statistics on storage iteration. [#96016][#96016] -- Introduced the `declare_cursor_statement_timeout_enabled` [session variable]({% link v23.1/set-vars.md %}) that disables statement timeouts during `FETCH` when using `DECLARE CURSOR`. [#96607][#96607] +- Deprecated the `PGDUMP` and `MYSQLDUMP` formats for [`IMPORT`]({% link v23.1/import.md %}). They are still present, but will be removed in a future release. See the [Migration Overview]({% link molt/migration-overview.md %}) page for alternatives. +- [`COPY ... FROM ... QUOTE '"'`]({% link v23.1/copy.md %}) will no longer error. +- Added `last_error_code` column to the `crdb_internal.node_statement_statistics` table. Added `last_error_code` field to the `statistics` JSON blob in the `crdb_internal.statement_statistics` and `system.statement_statistics` tables. +- Added support for expressions of the form `COLLATE "default"`, `COLLATE "C"`, and `COLLATE "POSIX"`. Since the default [collation]({% link v23.1/collate.md %}) cannot be changed currently, these expressions are all equivalent. The expressions are evaluated by treating the input as a normal string, and ignoring the collation. This means that comparisons between strings and collated strings that use `"default"`, `"C"`, or `"POSIX"` are now supported. Creating a column with the `"C"` or `"POSIX"` collations is still not supported. +- The insights subsystem in `sqlstats` is now able to detect failed executions, regardless if they were slow or not. +- The internal `statement_statistics` and `transaction_statistics` tables now include sampled execution statistics on storage iteration. +- Introduced the `declare_cursor_statement_timeout_enabled` [session variable]({% link v23.1/set-vars.md %}) that disables statement timeouts during `FETCH` when using `DECLARE CURSOR`.

Operational changes

-- A [`BACKUP`]({% link v23.1/backup.md %}) that encounters too many retryable errors will now fail instead of pausing to allow subsequent backups the chance to succeed. [#96673][#96673] -- Added an option to balance CPU time (`cpu`) instead of queries per second (`qps`) among stores in a cluster. This is done by setting `kv.allocator.load_based_rebalancing.objective='cpu'`. `kv.allocator.cpu_rebalance_threshold` is also added, similar to `kv.allocator.qps_rebalance_threshold` to control the target range for store CPU above and below the cluster mean. [#96127][#96127] -- The [load-based splitter]({% link v23.1/load-based-splitting.md %}) now supports using request CPU usage to split ranges. This is introduced with the previous cluster setting `kv.allocator.load_based_rebalancing.objective`, which when set to `cpu`, will use request CPU usage. The threshold above which CPU usage of a range is considered for splitting is defined in the cluster setting `kv.range_split.load_cpu_threshold`, which has a default value of `250ms`. [#96128][#96128] -- Added the flag `--disable-max-offset-check` to disable node self-termination when it detects [clock skew]({% link v23.1/operational-faqs.md %}#what-happens-when-node-clocks-are-not-properly-synchronized) with the rest of the cluster beyond `--max-offset`. The operator assumes responsibility for ensuring that real clock skew never exceeds `--max-offset`. [#96141][#96141] +- A [`BACKUP`]({% link v23.1/backup.md %}) that encounters too many retryable errors will now fail instead of pausing to allow subsequent backups the chance to succeed. +- Added an option to balance CPU time (`cpu`) instead of queries per second (`qps`) among stores in a cluster. This is done by setting `kv.allocator.load_based_rebalancing.objective='cpu'`. `kv.allocator.cpu_rebalance_threshold` is also added, similar to `kv.allocator.qps_rebalance_threshold` to control the target range for store CPU above and below the cluster mean. +- The [load-based splitter]({% link v23.1/load-based-splitting.md %}) now supports using request CPU usage to split ranges. This is introduced with the previous cluster setting `kv.allocator.load_based_rebalancing.objective`, which when set to `cpu`, will use request CPU usage. The threshold above which CPU usage of a range is considered for splitting is defined in the cluster setting `kv.range_split.load_cpu_threshold`, which has a default value of `250ms`. +- Added the flag `--disable-max-offset-check` to disable node self-termination when it detects [clock skew]({% link v23.1/operational-faqs.md %}#what-happens-when-node-clocks-are-not-properly-synchronized) with the rest of the cluster beyond `--max-offset`. The operator assumes responsibility for ensuring that real clock skew never exceeds `--max-offset`.

DB Console changes

-- Added execution insights to the [Statement Fingerprint Details](https://www.cockroachlabs.com/docs/cockroachcloud/statements-page.html#sql-statement-fingerprints) and [Transaction Fingerprint Details]({% link v23.1/ui-transactions-page.md %}#transaction-fingerprints-view) pages. [#96440][#96440] -- Transaction insights that were not found will now display a message `Insight not found`. [#96832][#96832] -- Added a waiting statement ID and fingerprint to the [Insights Transaction]({% link v23.1/ui-insights-page.md %}#transaction-executions-view) details page. Added a blocking transaction ID and fingerprint to the the [Insights Statement]({% link v23.1/ui-insights-page.md %}#statement-executions-view) page. [#96872][#96872] +- Added execution insights to the [Statement Fingerprint Details](https://www.cockroachlabs.com/docs/cockroachcloud/statements-page.html#sql-statement-fingerprints) and [Transaction Fingerprint Details]({% link v23.1/ui-transactions-page.md %}#transaction-fingerprints-view) pages. +- Transaction insights that were not found will now display a message `Insight not found`. +- Added a waiting statement ID and fingerprint to the [Insights Transaction]({% link v23.1/ui-insights-page.md %}#transaction-executions-view) details page. Added a blocking transaction ID and fingerprint to the the [Insights Statement]({% link v23.1/ui-insights-page.md %}#statement-executions-view) page.

Bug fixes

-- Fixed a bug where casting a [`TIMETZ`]({% link v23.1/time.md %}) to an [`ARRAY`]({% link v23.1/array.md %}) results in displaying second offsets, even if they are zero. [#96583][#96583] +- Fixed a bug where casting a [`TIMETZ`]({% link v23.1/time.md %}) to an [`ARRAY`]({% link v23.1/array.md %}) results in displaying second offsets, even if they are zero. - Allowed [`ALTER TABLE .. ADD/DROP CONSTRAINT .. NOT VALID`]({% link v23.1/alter-table.md %}) and [`VALIDATE CONSTRAINT ..`]({% link v23.1/alter-table.md %}#validate-constraints) to behave consistently with PostgreSQL. Previously, the `VALIDATE CONSTRAINT` would fail and cause the whole statement to fail.[#96648][#96648] -- Resolved the [`TIMESTAMPTZ`]({% link v23.1/timestamp.md %}) to match PostgreSQL. We previously included the minute/second offset for `TIMESTAMPTZ` in certain places when casting it to [`STRING`]({% link v23.1/string.md %}), even when they were zero. [#96833][#96833] -- Resolved using negative years instead of BC when casting a [`TIMESTAMPTZ`]({% link v23.1/timestamp.md %}) to a [`STRING`]({% link v23.1/string.md %}). [#96833][#96833] -- Fixed the [`SHOW GRANTS FOR public`]({% link v23.1/show-grants.md %}) command so it works correctly. Previously, this would return an error saying that the `public` role does not exist. [#96957][#96957] -- Statement source (square bracket) syntax is no longer allowed in [user-defined functions]({% link v23.1/user-defined-functions.md %}). Prior to this fix, using this syntax in a UDF would cause a panic. This restriction will be lifted in the future. [#96824][#96824] +- Resolved the [`TIMESTAMPTZ`]({% link v23.1/timestamp.md %}) to match PostgreSQL. We previously included the minute/second offset for `TIMESTAMPTZ` in certain places when casting it to [`STRING`]({% link v23.1/string.md %}), even when they were zero. +- Resolved using negative years instead of BC when casting a [`TIMESTAMPTZ`]({% link v23.1/timestamp.md %}) to a [`STRING`]({% link v23.1/string.md %}). +- Fixed the [`SHOW GRANTS FOR public`]({% link v23.1/show-grants.md %}) command so it works correctly. Previously, this would return an error saying that the `public` role does not exist. +- Statement source (square bracket) syntax is no longer allowed in [user-defined functions]({% link v23.1/user-defined-functions.md %}). Prior to this fix, using this syntax in a UDF would cause a panic. This restriction will be lifted in the future.

Performance improvements

-- The execution of multiple [`FOREIGN KEY`]({% link v23.1/foreign-key.md %}) and [`UNIQUE`]({% link v23.1/unique.md %}) constraint checks have been parallelized in some cases. As a result, these checks should be completed faster, particularly in multi-region environments where the checks require cross-region reads. [#96123][#96123] +- The execution of multiple [`FOREIGN KEY`]({% link v23.1/foreign-key.md %}) and [`UNIQUE`]({% link v23.1/unique.md %}) constraint checks have been parallelized in some cases. As a result, these checks should be completed faster, particularly in multi-region environments where the checks require cross-region reads.
@@ -63,40 +63,3 @@ We would like to thank the following contributors from the CockroachDB community - Ivan Gorbachev (first-time contributor)
- -[#89752]: https://github.com/cockroachdb/cockroach/pull/89752 -[#94825]: https://github.com/cockroachdb/cockroach/pull/94825 -[#95791]: https://github.com/cockroachdb/cockroach/pull/95791 -[#96016]: https://github.com/cockroachdb/cockroach/pull/96016 -[#96123]: https://github.com/cockroachdb/cockroach/pull/96123 -[#96127]: https://github.com/cockroachdb/cockroach/pull/96127 -[#96128]: https://github.com/cockroachdb/cockroach/pull/96128 -[#96141]: https://github.com/cockroachdb/cockroach/pull/96141 -[#96386]: https://github.com/cockroachdb/cockroach/pull/96386 -[#96396]: https://github.com/cockroachdb/cockroach/pull/96396 -[#96436]: https://github.com/cockroachdb/cockroach/pull/96436 -[#96440]: https://github.com/cockroachdb/cockroach/pull/96440 -[#96459]: https://github.com/cockroachdb/cockroach/pull/96459 -[#96567]: https://github.com/cockroachdb/cockroach/pull/96567 -[#96572]: https://github.com/cockroachdb/cockroach/pull/96572 -[#96583]: https://github.com/cockroachdb/cockroach/pull/96583 -[#96607]: https://github.com/cockroachdb/cockroach/pull/96607 -[#96648]: https://github.com/cockroachdb/cockroach/pull/96648 -[#96673]: https://github.com/cockroachdb/cockroach/pull/96673 -[#96824]: https://github.com/cockroachdb/cockroach/pull/96824 -[#96828]: https://github.com/cockroachdb/cockroach/pull/96828 -[#96832]: https://github.com/cockroachdb/cockroach/pull/96832 -[#96833]: https://github.com/cockroachdb/cockroach/pull/96833 -[#96872]: https://github.com/cockroachdb/cockroach/pull/96872 -[#96902]: https://github.com/cockroachdb/cockroach/pull/96902 -[#96911]: https://github.com/cockroachdb/cockroach/pull/96911 -[#96957]: https://github.com/cockroachdb/cockroach/pull/96957 -[#96995]: https://github.com/cockroachdb/cockroach/pull/96995 -[#97039]: https://github.com/cockroachdb/cockroach/pull/97039 -[0529c92d4]: https://github.com/cockroachdb/cockroach/commit/0529c92d4 -[14301f0d8]: https://github.com/cockroachdb/cockroach/commit/14301f0d8 -[15b1c6ae6]: https://github.com/cockroachdb/cockroach/commit/15b1c6ae6 -[470777fa3]: https://github.com/cockroachdb/cockroach/commit/470777fa3 -[8cf2cedb6]: https://github.com/cockroachdb/cockroach/commit/8cf2cedb6 -[9266fdc2a]: https://github.com/cockroachdb/cockroach/commit/9266fdc2a -[ac23f4667]: https://github.com/cockroachdb/cockroach/commit/ac23f4667 diff --git a/src/current/_includes/releases/v23.1/v23.1.0-alpha.4.md b/src/current/_includes/releases/v23.1/v23.1.0-alpha.4.md index ec383b0fedf..76d985bd123 100644 --- a/src/current/_includes/releases/v23.1/v23.1.0-alpha.4.md +++ b/src/current/_includes/releases/v23.1/v23.1.0-alpha.4.md @@ -6,18 +6,18 @@ Release Date: February 27, 2023

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

-- Some of the transformations specific to changefeeds have been deprecated and replaced. These functions were released in limited access in v22.2. Deprecated changefeed transformations continue to function. Closely monitor changefeeds that are created during upgrade. While effort was made to maintain backward compatibility, the updated changefeed transformation may produce slightly different output, such as different column names. [#96295][#96295] -- Add support for implicit authentication to Azure Storage and KMS. [#96825][#96825] -- Add support for `CREATE EXTERNAL CONNECTION ... AS "postgresql://"` or `"postgres://"`. These external connections may be specified as the source in streaming replication. [#96551][#96551] -- Add support for referencing [user defined functions (UDFs)]({% link v23.1/user-defined-functions.md %}) from other objects. Backup and restore operations can now read and write UDF descriptors. [#97038][#97038] +- Some of the transformations specific to changefeeds have been deprecated and replaced. These functions were released in limited access in v22.2. Deprecated changefeed transformations continue to function. Closely monitor changefeeds that are created during upgrade. While effort was made to maintain backward compatibility, the updated changefeed transformation may produce slightly different output, such as different column names. +- Add support for implicit authentication to Azure Storage and KMS. +- Add support for `CREATE EXTERNAL CONNECTION ... AS "postgresql://"` or `"postgres://"`. These external connections may be specified as the source in streaming replication. +- Add support for referencing [user defined functions (UDFs)]({% link v23.1/user-defined-functions.md %}) from other objects. Backup and restore operations can now read and write UDF descriptors.

SQL language changes

-- UDFs can now return a set of results by setting the return type to `SETOF`. [#96698][#96698] -- UDFs with implicit record return types will return an error when called if the return type has been altered and is no longer compatible with the body of the UDF. [#96696][#96696] -- The `COPY ... TO STDOUT` statement allows you to export a table or arbitrary query in the PostgreSQL wire-compatible format. Text and CSV formats are supported. [#94408][#94408] -- Add the read-only "ssl" session variable. Value is "off" if the server was started in insecure mode (which disables TLS), or "on" otherwise. This is based on the Postgres variable of the same name. [#97257][#97257] -- Add a hard limit of how much data can be flushed to system tables for sql stats. [#97123][#97123] +- UDFs can now return a set of results by setting the return type to `SETOF`. +- UDFs with implicit record return types will return an error when called if the return type has been altered and is no longer compatible with the body of the UDF. +- The `COPY ... TO STDOUT` statement allows you to export a table or arbitrary query in the PostgreSQL wire-compatible format. Text and CSV formats are supported. +- Add the read-only "ssl" session variable. Value is "off" if the server was started in insecure mode (which disables TLS), or "on" otherwise. This is based on the Postgres variable of the same name. +- Add a hard limit of how much data can be flushed to system tables for sql stats. - Add support for the `REDACT` flag to the following variants of `EXPLAIN`: - `EXPLAIN` - `EXPLAIN (PLAN)` @@ -25,44 +25,44 @@ Release Date: February 27, 2023 - `EXPLAIN ANALYZE` - `EXPLAIN ANALYZE (PLAN)` - These explain statements (along with `EXPLAIN ANALYZE (DEBUG)`, which already supported `REDACT`) will have constants, literal values, parameter values, and any other user data redacted in output. [#95136][#95136] -- Previously UDFs are not allowed in tables and any other object. This patch enables UDF usage in CHECK constraints of tables in both legacy schema changer and delcarative schema changer. Circular ependencies are not allowed, namely if a UDF depends on a table, then the table can't use that UDF. [#97038][#97038] -- A version gate has been added to prevent UDF usage in CHECK constraints before a cluster is fully upgraded to v23.1 or above. [#97038][#97038] -- Previously users were able to use UDFs from tables with `SET DEFAULT` and `SET ON UPDATE` even when they are disallowed from `CREATE TABLE` and `ADD COLUMN`. This patch disallows those two cases from `ALTER TABLE ALTER COLUMN`. [#97390][#97390] + These explain statements (along with `EXPLAIN ANALYZE (DEBUG)`, which already supported `REDACT`) will have constants, literal values, parameter values, and any other user data redacted in output. +- Previously UDFs are not allowed in tables and any other object. This patch enables UDF usage in CHECK constraints of tables in both legacy schema changer and delcarative schema changer. Circular ependencies are not allowed, namely if a UDF depends on a table, then the table can't use that UDF. +- A version gate has been added to prevent UDF usage in CHECK constraints before a cluster is fully upgraded to v23.1 or above. +- Previously users were able to use UDFs from tables with `SET DEFAULT` and `SET ON UPDATE` even when they are disallowed from `CREATE TABLE` and `ADD COLUMN`. This patch disallows those two cases from `ALTER TABLE ALTER COLUMN`.

Operational changes

-- Add `COCKROACH_RAFT_LOG_QUEUE_CONCURRENCY` env var which controls the number of parallel workers doing Raft log truncations. It can be used to make the in-memory log truncations more agressive and reduce the amount of Raft log data flushed to disk. [#97029][#97029] -- The new timeseries metric `storage.keys.tombstone.count` shows the current count of point and range deletion tombstones across the storage engine. [#97306][#97306] -- The value of `kv.range_split.load_cpu_threshold` controls the CPU per-second threshold above which a range will be split. Its default value has been increased from `250ms` to `500ms`, based on performance experiments. [#97113][#97113] -- CPU balancing is enabled as the default load based rebalancing objective. This can be reverted by setting `kv.allocator.load_based_rebalancing.objective` to `qps`. [#97424][#97424] +- Add `COCKROACH_RAFT_LOG_QUEUE_CONCURRENCY` env var which controls the number of parallel workers doing Raft log truncations. It can be used to make the in-memory log truncations more agressive and reduce the amount of Raft log data flushed to disk. +- The new timeseries metric `storage.keys.tombstone.count` shows the current count of point and range deletion tombstones across the storage engine. +- The value of `kv.range_split.load_cpu_threshold` controls the CPU per-second threshold above which a range will be split. Its default value has been increased from `250ms` to `500ms`, based on performance experiments. +- CPU balancing is enabled as the default load based rebalancing objective. This can be reverted by setting `kv.allocator.load_based_rebalancing.objective` to `qps`.

DB Console changes

-- Add columns p50, p90, p99, max and min latency for Statement table on SQL Activity page. [#97082][#97082] -- Show a warning for Statement Insights when the SQL API returns a "max size exceed" error. [#97153][#97153] -- Show a warning for Transaction Insights when the SQL API returns a "max size exceed" error. [#97277][#97277] -- Show a warning for Schema Insights when the SQL API returns a "max size exceed" error. [#97312][#97312] +- Add columns p50, p90, p99, max and min latency for Statement table on SQL Activity page. +- Show a warning for Statement Insights when the SQL API returns a "max size exceed" error. +- Show a warning for Transaction Insights when the SQL API returns a "max size exceed" error. +- Show a warning for Schema Insights when the SQL API returns a "max size exceed" error.

Bug fixes

-- Fixed a bug where the `AS OF SYSTEM TIME` clause was handled incorrectly in an implicit transaction that had multiple statements. [#97063][#97063] -- This patch fixes asymmetric typing of `>` and `<` expressions which may cause erroring of expressions which are legal. [#97022][#97022] -- This patch fixes possible internal errors in `SOME`, `ANY` and `ALL` expressions of the form: `expr > SOME(expr1, expr2, expr3...)` [#97022][#97022] -- Fixed the syntax error for `SELECT ... QUERY` (without `AS`) statement. [#97041][#97041] -- Decommissions that would violate constraints set on a subset of replicas for a range (e.g. `num_replicas = 3, : 1`) will no longer be able to execute, respecting constraints during and after the decommission. [#94810][#94810] -- Adjusted the size reported for `TIME`, `TIMETZ`, `TIMESTAMP`, `TIMESTAMPTZ`, and `DATE` types in the pgwire protocol. [#97145][#97145] -- The ParameterStatus message is now only sent over the pgwire protocol if the value of the parameter changed. (The parameters that are sent this way are timezone, intervalstyle, datestyle, is_superuser, and application_name.) [#97145][#97145] -- Users can now go to the next page of results when there are more than 20 active statements or transactions in the Active Execution page. [#97122][#97122] -- Since 22.1 when rangefeed enablement overrides in span configs were introduced, rangefeed requests that reached spans outside the range would not cause range cache invalidation due to the setting being checked first, thus requests could repeatedly hit the same incorrect range, causing errors until cache invalidation or node restart. This fix correctly checks that the span is within the range prior to checking the enablement settings, thus invalidating the cache when a request reaches an incorrect range and causing subsequent requests to successfully reach the correct range. [#97212][#97212] -- A bug has been fixed that caused errors when creating multiple user-defined functions with the same name and different argument types in the same type family. For example, it was impossible to create both functions `f(i INT2)` and `f(INT4)`. [#96481][#96481] -- The following spammy log message was removed: > lease [...] expired before being followed by lease [...]; foreground traffic may have been impacted [#97358][#97358] -- Previously, `ALTER TABLE ... INJECT STATISTICS` command would fail if a column with COLLATED STRING type had histograms to be injected, and this is now fixed. The bug has been present since at least 21.2. [#96695][#96695] -- Fixed a bug in the query engine that could cause incorrect results in some cases when a zigzag join was planned. The bug could occur when the two indexes used for the zigzag join had a suffix of matching columns but with different directions. For example, planning a zigzag join with `INDEX(a ASC, b ASC)` and `INDEX(c ASC, b DESC)` could cause incorrect results. This bug has existed since at least v19.1. It is now fixed, because the optimizer will no longer plan a zigzag join in such cases. [#97151][#97151] +- Fixed a bug where the `AS OF SYSTEM TIME` clause was handled incorrectly in an implicit transaction that had multiple statements. +- This patch fixes asymmetric typing of `>` and `<` expressions which may cause erroring of expressions which are legal. +- This patch fixes possible internal errors in `SOME`, `ANY` and `ALL` expressions of the form: `expr > SOME(expr1, expr2, expr3...)` +- Fixed the syntax error for `SELECT ... QUERY` (without `AS`) statement. +- Decommissions that would violate constraints set on a subset of replicas for a range (e.g. `num_replicas = 3, : 1`) will no longer be able to execute, respecting constraints during and after the decommission. +- Adjusted the size reported for `TIME`, `TIMETZ`, `TIMESTAMP`, `TIMESTAMPTZ`, and `DATE` types in the pgwire protocol. +- The ParameterStatus message is now only sent over the pgwire protocol if the value of the parameter changed. (The parameters that are sent this way are timezone, intervalstyle, datestyle, is_superuser, and application_name.) +- Users can now go to the next page of results when there are more than 20 active statements or transactions in the Active Execution page. +- Since 22.1 when rangefeed enablement overrides in span configs were introduced, rangefeed requests that reached spans outside the range would not cause range cache invalidation due to the setting being checked first, thus requests could repeatedly hit the same incorrect range, causing errors until cache invalidation or node restart. This fix correctly checks that the span is within the range prior to checking the enablement settings, thus invalidating the cache when a request reaches an incorrect range and causing subsequent requests to successfully reach the correct range. +- A bug has been fixed that caused errors when creating multiple user-defined functions with the same name and different argument types in the same type family. For example, it was impossible to create both functions `f(i INT2)` and `f(INT4)`. +- The following spammy log message was removed: > lease [...] expired before being followed by lease [...]; foreground traffic may have been impacted +- Previously, `ALTER TABLE ... INJECT STATISTICS` command would fail if a column with COLLATED STRING type had histograms to be injected, and this is now fixed. The bug has been present since at least 21.2. +- Fixed a bug in the query engine that could cause incorrect results in some cases when a zigzag join was planned. The bug could occur when the two indexes used for the zigzag join had a suffix of matching columns but with different directions. For example, planning a zigzag join with `INDEX(a ASC, b ASC)` and `INDEX(c ASC, b DESC)` could cause incorrect results. This bug has existed since at least v19.1. It is now fixed, because the optimizer will no longer plan a zigzag join in such cases.

Performance improvements

-- The optimizer now plans inverted index scans for queries that filter by JSON fetch value operators `(->)` that contain both a string and an integer index value after the IN operator. For example the optimizer plans inverted index scans for the following filters: `json_col->0 IN ('1', '2')`, `json_col->'a' IN ('1', '2')`. [#96471][#96471] +- The optimizer now plans inverted index scans for queries that filter by JSON fetch value operators `(->)` that contain both a string and an integer index value after the IN operator. For example the optimizer plans inverted index scans for the following filters: `json_col->0 IN ('1', '2')`, `json_col->'a' IN ('1', '2')`.

Build changes

@@ -70,8 +70,8 @@ Release Date: February 27, 2023

Miscellaneous

-- [#97229][#97229] -- Fix a bug in which `RESTORE`, `BACKUP`, and `IMPORT` jobs would fail if the coordinator node of the job was drained. [#97033][#97033] +- +- Fix a bug in which `RESTORE`, `BACKUP`, and `IMPORT` jobs would fail if the coordinator node of the job was drained.
@@ -83,43 +83,3 @@ We would like to thank the following contributors from the CockroachDB community - DQ (first-time contributor)
- -[#94408]: https://github.com/cockroachdb/cockroach/pull/94408 -[#94810]: https://github.com/cockroachdb/cockroach/pull/94810 -[#95136]: https://github.com/cockroachdb/cockroach/pull/95136 -[#96107]: https://github.com/cockroachdb/cockroach/pull/96107 -[#96295]: https://github.com/cockroachdb/cockroach/pull/96295 -[#96393]: https://github.com/cockroachdb/cockroach/pull/96393 -[#96471]: https://github.com/cockroachdb/cockroach/pull/96471 -[#96481]: https://github.com/cockroachdb/cockroach/pull/96481 -[#96551]: https://github.com/cockroachdb/cockroach/pull/96551 -[#96695]: https://github.com/cockroachdb/cockroach/pull/96695 -[#96696]: https://github.com/cockroachdb/cockroach/pull/96696 -[#96698]: https://github.com/cockroachdb/cockroach/pull/96698 -[#96825]: https://github.com/cockroachdb/cockroach/pull/96825 -[#97022]: https://github.com/cockroachdb/cockroach/pull/97022 -[#97029]: https://github.com/cockroachdb/cockroach/pull/97029 -[#97033]: https://github.com/cockroachdb/cockroach/pull/97033 -[#97038]: https://github.com/cockroachdb/cockroach/pull/97038 -[#97041]: https://github.com/cockroachdb/cockroach/pull/97041 -[#97063]: https://github.com/cockroachdb/cockroach/pull/97063 -[#97082]: https://github.com/cockroachdb/cockroach/pull/97082 -[#97113]: https://github.com/cockroachdb/cockroach/pull/97113 -[#97122]: https://github.com/cockroachdb/cockroach/pull/97122 -[#97123]: https://github.com/cockroachdb/cockroach/pull/97123 -[#97145]: https://github.com/cockroachdb/cockroach/pull/97145 -[#97151]: https://github.com/cockroachdb/cockroach/pull/97151 -[#97153]: https://github.com/cockroachdb/cockroach/pull/97153 -[#97171]: https://github.com/cockroachdb/cockroach/pull/97171 -[#97212]: https://github.com/cockroachdb/cockroach/pull/97212 -[#97229]: https://github.com/cockroachdb/cockroach/pull/97229 -[#97257]: https://github.com/cockroachdb/cockroach/pull/97257 -[#97277]: https://github.com/cockroachdb/cockroach/pull/97277 -[#97306]: https://github.com/cockroachdb/cockroach/pull/97306 -[#97312]: https://github.com/cockroachdb/cockroach/pull/97312 -[#97344]: https://github.com/cockroachdb/cockroach/pull/97344 -[#97358]: https://github.com/cockroachdb/cockroach/pull/97358 -[#97390]: https://github.com/cockroachdb/cockroach/pull/97390 -[#97424]: https://github.com/cockroachdb/cockroach/pull/97424 -[42a849c67]: https://github.com/cockroachdb/cockroach/commit/42a849c67 -[7ff5bfd74]: https://github.com/cockroachdb/cockroach/commit/7ff5bfd74 diff --git a/src/current/_includes/releases/v23.1/v23.1.0-alpha.5.md b/src/current/_includes/releases/v23.1/v23.1.0-alpha.5.md index 52d81469513..5964cfba937 100644 --- a/src/current/_includes/releases/v23.1/v23.1.0-alpha.5.md +++ b/src/current/_includes/releases/v23.1/v23.1.0-alpha.5.md @@ -6,42 +6,42 @@ Release Date: March 6, 2023

Security updates

-- The new [cluster setting]({% link v23.1/cluster-settings.md %}) `server.user_login.downgrade_scram_stored_passwords_to_bcrypt.enabled`, which allows you to migrate passwords from SCRAM to bcrypt during user authentication, defaults to `true`. If it is `true` and if `server.user_login.password_encryption` is `crdb-bcrypt`, then during login, the stored hashed password will be migrated from SCRAM to bcrypt. [#97429][#97429] +- The new [cluster setting]({% link v23.1/cluster-settings.md %}) `server.user_login.downgrade_scram_stored_passwords_to_bcrypt.enabled`, which allows you to migrate passwords from SCRAM to bcrypt during user authentication, defaults to `true`. If it is `true` and if `server.user_login.password_encryption` is `crdb-bcrypt`, then during login, the stored hashed password will be migrated from SCRAM to bcrypt.

General changes

-- Users with the `CONTROLJOB` [role option]({% link v23.1/create-role.md %}#role-options) can now [view jobs]({% link v23.1/show-jobs.md %}) owned by admins. [#96382][#96382] -- Users with the `VIEWJOB` [role option]({% link v23.1/create-role.md %}#role-options) can now [view all jobs]({% link v23.1/show-jobs.md %}). This role can be revoked by granting the `NOVIEWJOB` role option. [#96382][#96382] +- Users with the `CONTROLJOB` [role option]({% link v23.1/create-role.md %}#role-options) can now [view jobs]({% link v23.1/show-jobs.md %}) owned by admins. +- Users with the `VIEWJOB` [role option]({% link v23.1/create-role.md %}#role-options) can now [view all jobs]({% link v23.1/show-jobs.md %}). This role can be revoked by granting the `NOVIEWJOB` role option.

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

-- Jobs that utilize a protected timestamp system (such as `BACKUP`, `CHANGEFEED`, or `IMPORT`) now produce metrics that can be monitored to detect cases when a job leaves a stale protected timestamp that will prevent garbage collection from occurring. [#97148][#97148] -- [Changefeeds]({% link v23.1/create-changefeed.md %}) now automatically expire protected timestamp records for paused jobs if the changefeed is configured with the `gc_protect_expires_after` option. [#97148][#97148] -- User-defined functions (UDFs) can now be referenced from column [`DEFAULT`]({% link v23.1/default-value.md %}) expressions when creating a new table or issuing the `SET DEFAULT` command. Backup and restore operations also back up and restore UDF IDs that are referenced in a column's DEFAULT expression. If UDF dependencies are missing and the `skip_missing_udfs` flag is provided, the `DEFAULT` expressions are dropped during a restore operation. [#97501][#97501] +- Jobs that utilize a protected timestamp system (such as `BACKUP`, `CHANGEFEED`, or `IMPORT`) now produce metrics that can be monitored to detect cases when a job leaves a stale protected timestamp that will prevent garbage collection from occurring. +- [Changefeeds]({% link v23.1/create-changefeed.md %}) now automatically expire protected timestamp records for paused jobs if the changefeed is configured with the `gc_protect_expires_after` option. +- User-defined functions (UDFs) can now be referenced from column [`DEFAULT`]({% link v23.1/default-value.md %}) expressions when creating a new table or issuing the `SET DEFAULT` command. Backup and restore operations also back up and restore UDF IDs that are referenced in a column's DEFAULT expression. If UDF dependencies are missing and the `skip_missing_udfs` flag is provided, the `DEFAULT` expressions are dropped during a restore operation.

SQL language changes

-- String literals are now allowed for region names in DDL syntax, in addition to quoted syntax. [#97021][#97021] -- It is now possible to use `*` inside a [`CREATE VIEW`]({% link v23.1/create-view.md %}) statement. The list of columns is expanded at the time the view is created, so that new columns added after the view was defined are not included in the view. This behavior is the same as in PostgreSQL. [#97515][#97515] -- The default value of `sql.stats.cleanup.rows_to_delete_per_txn` has been increased to `10000` to increase efficiency of the cleanup job for SQL statistics. [#97642][#97642] -- The new [session setting]({% link v23.1/set-vars.md %}) `optimizer_use_improved_split_disjunction_for_joins` allows the optimizer to split disjunctions (`OR` expressions) in more `JOIN` conditions by building a `UNION` of two `JOIN` expressions. If this setting is true, all disjunctions in inner, semi, and anti `JOIN`s will be split. Otherwise, only disjunctions that potentially contain an equijoin condition will be split. [#97696][#97696] -- Builtins have been added for `tsvector`, `to_tsquery`, `phraseto_tsquery`, and `plainto_tsquery`, which parse input documents into tsvectors and tsqueries, respectively. The new `ts_parse` builtin is used to debug the text search parser. [#92966][#92966] -- The new [session variable]({% link v23.1/set-vars.md %}) `inject_retry_errors_on_commit_enabled` returns a [transaction retry error]({% link v23.1/transaction-retry-error-reference.md %}) if it is run inside of an explicit transaction when it is set to `true`. The transaction retry error continues to be returned until `inject_retry_errors_on_commit_enabled` is set to `false`. This setting allows you to test your transaction retry logic. [#97226][#97226] -- Previously, [`ADD PRIMARY KEY NOT VALID`]({% link v23.1/primary-key.md %}) ignored the `NOT VALID` qualifier. This behavior was not compatible with PostgreSQL. CockroachDB now throws the error `PRIMARY KEY constraints cannot be marked NOT VALID`. [#97746][#97746] +- String literals are now allowed for region names in DDL syntax, in addition to quoted syntax. +- It is now possible to use `*` inside a [`CREATE VIEW`]({% link v23.1/create-view.md %}) statement. The list of columns is expanded at the time the view is created, so that new columns added after the view was defined are not included in the view. This behavior is the same as in PostgreSQL. +- The default value of `sql.stats.cleanup.rows_to_delete_per_txn` has been increased to `10000` to increase efficiency of the cleanup job for SQL statistics. +- The new [session setting]({% link v23.1/set-vars.md %}) `optimizer_use_improved_split_disjunction_for_joins` allows the optimizer to split disjunctions (`OR` expressions) in more `JOIN` conditions by building a `UNION` of two `JOIN` expressions. If this setting is true, all disjunctions in inner, semi, and anti `JOIN`s will be split. Otherwise, only disjunctions that potentially contain an equijoin condition will be split. +- Builtins have been added for `tsvector`, `to_tsquery`, `phraseto_tsquery`, and `plainto_tsquery`, which parse input documents into tsvectors and tsqueries, respectively. The new `ts_parse` builtin is used to debug the text search parser. +- The new [session variable]({% link v23.1/set-vars.md %}) `inject_retry_errors_on_commit_enabled` returns a [transaction retry error]({% link v23.1/transaction-retry-error-reference.md %}) if it is run inside of an explicit transaction when it is set to `true`. The transaction retry error continues to be returned until `inject_retry_errors_on_commit_enabled` is set to `false`. This setting allows you to test your transaction retry logic. +- Previously, [`ADD PRIMARY KEY NOT VALID`]({% link v23.1/primary-key.md %}) ignored the `NOT VALID` qualifier. This behavior was not compatible with PostgreSQL. CockroachDB now throws the error `PRIMARY KEY constraints cannot be marked NOT VALID`.

Operational changes

- The following [cluster settings]({% link v23.1/cluster-settings.md %}), which control rebalancing and upreplication behavior in the face of IO-overloaded storage, have been deprecated: - `kv.allocator.l0_sublevels_threshold` - `kv.allocator.l0_sublevels_threshold_enforce` - These cluster settings have been replaced by internal mechanisms. [#97142][#97142] + These cluster settings have been replaced by internal mechanisms. -- Max timeout-to-intent resolution has been added to prevent intent resolution from becoming stuck indefinitely and blocking other ranges attempting to resolve intents. [#91815][#91815] -- Nodes are now considered suspect when rejoining a cluster and cannot accept lease transfers for one `server.time_after_store_suspect` window, which defaults to 30 seconds. [#97532][#97532] +- Max timeout-to-intent resolution has been added to prevent intent resolution from becoming stuck indefinitely and blocking other ranges attempting to resolve intents. +- Nodes are now considered suspect when rejoining a cluster and cannot accept lease transfers for one `server.time_after_store_suspect` window, which defaults to 30 seconds.

Command-line changes

-- The SQL shell ([`cockroach sql`]({% link v23.1/cockroach-sql.md %}), [`cockroach demo`]({% link v23.1/cockroach-demo.md %})) now supports the client-side commands `\l`, `\dn`, `\d`, `\di`, `\dm`, `\ds`, `\dt`, `\dv`, `\dC`, `\dT`, `\dd`, `\dg`, `\du` and `\dd` in a similar manner to PostgreSQL, including the modifier flags `S` and `+`, for convenience for users migrating from PostgreSQL. A notable difference is that when a pattern argument is specified, it should use the SQL `LIKE` syntax (with `%` representing the wildcard character) instead of PostgreSQL's glob-like syntax (with `*` representing wildcards). [#88061][#88061] +- The SQL shell ([`cockroach sql`]({% link v23.1/cockroach-sql.md %}), [`cockroach demo`]({% link v23.1/cockroach-demo.md %})) now supports the client-side commands `\l`, `\dn`, `\d`, `\di`, `\dm`, `\ds`, `\dt`, `\dv`, `\dC`, `\dT`, `\dd`, `\dg`, `\du` and `\dd` in a similar manner to PostgreSQL, including the modifier flags `S` and `+`, for convenience for users migrating from PostgreSQL. A notable difference is that when a pattern argument is specified, it should use the SQL `LIKE` syntax (with `%` representing the wildcard character) instead of PostgreSQL's glob-like syntax (with `*` representing wildcards).

DB Console changes

@@ -69,39 +69,39 @@ Release Date: March 6, 2023 - `sql.mem.sql.session.prepared.max-p99.99` - `sql.mem.sql.session.prepared.max-p99.999` - [#97590][#97590] + -- Active execution information is now shown on the [Statements page]({% link v23.1/ui-statements-page.md %}) even when there is a max size limit error. [#97662][#97662] -- "Retrying" is no longer a status shown in the [Jobs]({% link v23.1/ui-jobs-page.md %}) page. [#97505][#97505] +- Active execution information is now shown on the [Statements page]({% link v23.1/ui-statements-page.md %}) even when there is a max size limit error. +- "Retrying" is no longer a status shown in the [Jobs]({% link v23.1/ui-jobs-page.md %}) page.

Bug fixes

-- Transaction uncertainty intervals are now correctly configured for reverse scans, to prevent reverse scans from serving stale reads when clocks in a cluster are skewed. [#97443][#97443] -- The formatting of uniqueness violation errors now matches the corresponding errors from PostgreSQL. [#96914][#96914] -- Previously, when a new column name would require quoting due to mixed-case or special characters, [`ALTER TABLE ... ADD COLUMN`]({% link v23.1/alter-table.md %}#add-column) would not run in an explicit or multi-statement transaction. This is now fixed. [#97514][#97514] -- Fixed a bug when formatting [`CREATE TYPE` statements for user-defined types]({% link v23.1/create-type.md %}) which require quoting which might prevent those statements from round-tripping. [#97514][#97514] -- Using subqueries in user-defined functions without an `AS` clause is now supported, for consistency with the syntax supported outside of user-defined functions. [#97515][#97515] -- Fixed a rare bug introduced before v22.1.x that could cause a projected expression to replace column references with the wrong values. [#97554][#97554] -- Cross-descriptor validation on lease renewal is now disabled, because it can starve [online schema changes]({% link v23.1/online-schema-changes.md %}) when there are many descriptors with many foreign key references. [#97630][#97630] -- Fixed a bug with pagination on the [Insights]({% link v23.1/ui-insights-page.md %}) page. [#97640][#97640] -- Columns referenced in partial index predicates and partial unique constraint predicates can no longer be dropped. The [`ALTER TABLE .. DROP COLUMN`]({% link v23.1/alter-table.md %}#drop-column) statement now returns an error with a suggestion to drop the indexes and constraints first. This is a temporary safeguard to prevent users from hitting [#96924][#96924]. This restriction will be lifted when that bug is fixed. [#97372][#97372] -- The [Jobs]({% link v23.1/ui-jobs-page.md %}) page now displays an error state when an error is encountered during data fetching. [#97486][#97486] -- Fixed a bug introduced in v22.1 that caused the internal error `no bytes in account to release ...`. [#97750][#97750] -- The [`COPY FROM`]({% link v23.1/copy.md %}) command now respects the `statement_timeout` and `transaction_timeout` [cluster settings]({% link v23.1/cluster-settings.md %}). [#97808][#97808] -- [`COPY FROM`]({% link v23.1/copy.md %}) commands now appear in the output of the [`SHOW STATEMENTS`]({% link v23.1/show-statements.md %}) command. [#97808][#97808] -- Fixed an error where querying a `pg_catalog` table included information about a temporary table created in another session. [#97727][#97727] +- Transaction uncertainty intervals are now correctly configured for reverse scans, to prevent reverse scans from serving stale reads when clocks in a cluster are skewed. +- The formatting of uniqueness violation errors now matches the corresponding errors from PostgreSQL. +- Previously, when a new column name would require quoting due to mixed-case or special characters, [`ALTER TABLE ... ADD COLUMN`]({% link v23.1/alter-table.md %}#add-column) would not run in an explicit or multi-statement transaction. This is now fixed. +- Fixed a bug when formatting [`CREATE TYPE` statements for user-defined types]({% link v23.1/create-type.md %}) which require quoting which might prevent those statements from round-tripping. +- Using subqueries in user-defined functions without an `AS` clause is now supported, for consistency with the syntax supported outside of user-defined functions. +- Fixed a rare bug introduced before v22.1.x that could cause a projected expression to replace column references with the wrong values. +- Cross-descriptor validation on lease renewal is now disabled, because it can starve [online schema changes]({% link v23.1/online-schema-changes.md %}) when there are many descriptors with many foreign key references. +- Fixed a bug with pagination on the [Insights]({% link v23.1/ui-insights-page.md %}) page. +- Columns referenced in partial index predicates and partial unique constraint predicates can no longer be dropped. The [`ALTER TABLE .. DROP COLUMN`]({% link v23.1/alter-table.md %}#drop-column) statement now returns an error with a suggestion to drop the indexes and constraints first. This is a temporary safeguard to prevent users from hitting. This restriction will be lifted when that bug is fixed. +- The [Jobs]({% link v23.1/ui-jobs-page.md %}) page now displays an error state when an error is encountered during data fetching. +- Fixed a bug introduced in v22.1 that caused the internal error `no bytes in account to release ...`. +- The [`COPY FROM`]({% link v23.1/copy.md %}) command now respects the `statement_timeout` and `transaction_timeout` [cluster settings]({% link v23.1/cluster-settings.md %}). +- [`COPY FROM`]({% link v23.1/copy.md %}) commands now appear in the output of the [`SHOW STATEMENTS`]({% link v23.1/show-statements.md %}) command. +- Fixed an error where querying a `pg_catalog` table included information about a temporary table created in another session.

Performance improvements

-- If the [session setting]({% link v23.1/set-vars.md %}) `optimizer_use_improved_split_disjunction_for_joins` is `true`, the optimizer now creates a better query plan in some cases where an inner, semi, or anti join contains a join predicate with a disjuction (`OR` condition). [#97696][#97696] +- If the [session setting]({% link v23.1/set-vars.md %}) `optimizer_use_improved_split_disjunction_for_joins` is `true`, the optimizer now creates a better query plan in some cases where an inner, semi, or anti join contains a join predicate with a disjuction (`OR` condition).

Miscellaneous

-- UDFs can now return the `RECORD` result type, which represents any tuple. For example, `CREATE FUNCTION f() RETURNS RECORD AS 'SELECT * FROM t' LANGUAGE SQL;` is equivalent to `CREATE FUNCTION f() RETURNS t AS 'SELECT * FROM t' LANGUAGE SQL;`. [#97199][#97199] -- The parameters for [delegated snapshots](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer#snapshots) have been marked as internal. [#97408][#97408] -- Fixed an error when calling [`CREATE OR REPLACE FUNCTION`]({% link v23.1/create-function.md %}) with a [user-defined return type]({% link v23.1/create-type.md %}) if the user-defined type was modified after the original [user-defined function]({% link v23.1/create-function.md %}) was created. The command now succeeds as long as the function body returns output that matches the modified user-defined type. [#97274][#97274] -- Columns with referenced constraints can now be dropped. [#97579][#97579] -- Index cascades with a dependent inbound foreign key can now be dropped. [#97065][#97065] +- UDFs can now return the `RECORD` result type, which represents any tuple. For example, `CREATE FUNCTION f() RETURNS RECORD AS 'SELECT * FROM t' LANGUAGE SQL;` is equivalent to `CREATE FUNCTION f() RETURNS t AS 'SELECT * FROM t' LANGUAGE SQL;`. +- The parameters for [delegated snapshots](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer#snapshots) have been marked as internal. +- Fixed an error when calling [`CREATE OR REPLACE FUNCTION`]({% link v23.1/create-function.md %}) with a [user-defined return type]({% link v23.1/create-type.md %}) if the user-defined type was modified after the original [user-defined function]({% link v23.1/create-function.md %}) was created. The command now succeeds as long as the function body returns output that matches the modified user-defined type. +- Columns with referenced constraints can now be dropped. +- Index cascades with a dependent inbound foreign key can now be dropped.
@@ -113,45 +113,3 @@ We would like to thank the following contributors from the CockroachDB community - Eric.Yang (first-time contributor)
- -[#88061]: https://github.com/cockroachdb/cockroach/pull/88061 -[#91815]: https://github.com/cockroachdb/cockroach/pull/91815 -[#92966]: https://github.com/cockroachdb/cockroach/pull/92966 -[#96350]: https://github.com/cockroachdb/cockroach/pull/96350 -[#96382]: https://github.com/cockroachdb/cockroach/pull/96382 -[#96914]: https://github.com/cockroachdb/cockroach/pull/96914 -[#97021]: https://github.com/cockroachdb/cockroach/pull/97021 -[#97065]: https://github.com/cockroachdb/cockroach/pull/97065 -[#97142]: https://github.com/cockroachdb/cockroach/pull/97142 -[#97148]: https://github.com/cockroachdb/cockroach/pull/97148 -[#97199]: https://github.com/cockroachdb/cockroach/pull/97199 -[#97226]: https://github.com/cockroachdb/cockroach/pull/97226 -[#97274]: https://github.com/cockroachdb/cockroach/pull/97274 -[#97372]: https://github.com/cockroachdb/cockroach/pull/97372 -[#97408]: https://github.com/cockroachdb/cockroach/pull/97408 -[#97429]: https://github.com/cockroachdb/cockroach/pull/97429 -[#97443]: https://github.com/cockroachdb/cockroach/pull/97443 -[#97486]: https://github.com/cockroachdb/cockroach/pull/97486 -[#97487]: https://github.com/cockroachdb/cockroach/pull/97487 -[#97501]: https://github.com/cockroachdb/cockroach/pull/97501 -[#97505]: https://github.com/cockroachdb/cockroach/pull/97505 -[#97514]: https://github.com/cockroachdb/cockroach/pull/97514 -[#97515]: https://github.com/cockroachdb/cockroach/pull/97515 -[#97532]: https://github.com/cockroachdb/cockroach/pull/97532 -[#97554]: https://github.com/cockroachdb/cockroach/pull/97554 -[#97579]: https://github.com/cockroachdb/cockroach/pull/97579 -[#97590]: https://github.com/cockroachdb/cockroach/pull/97590 -[#97630]: https://github.com/cockroachdb/cockroach/pull/97630 -[#97640]: https://github.com/cockroachdb/cockroach/pull/97640 -[#97642]: https://github.com/cockroachdb/cockroach/pull/97642 -[#97656]: https://github.com/cockroachdb/cockroach/pull/97656 -[#97662]: https://github.com/cockroachdb/cockroach/pull/97662 -[#97696]: https://github.com/cockroachdb/cockroach/pull/97696 -[#97727]: https://github.com/cockroachdb/cockroach/pull/97727 -[#97746]: https://github.com/cockroachdb/cockroach/pull/97746 -[#97750]: https://github.com/cockroachdb/cockroach/pull/97750 -[#97808]: https://github.com/cockroachdb/cockroach/pull/97808 -[8c6cf2877]: https://github.com/cockroachdb/cockroach/commit/8c6cf2877 -[a53a8d354]: https://github.com/cockroachdb/cockroach/commit/a53a8d354 -[f84bd02ae]: https://github.com/cockroachdb/cockroach/commit/f84bd02ae -[#96924]: https://github.com/cockroachdb/cockroach/issue/97808 diff --git a/src/current/_includes/releases/v23.1/v23.1.0-alpha.6.md b/src/current/_includes/releases/v23.1/v23.1.0-alpha.6.md index 2b6eaefb977..1aeb7d9cd4e 100644 --- a/src/current/_includes/releases/v23.1/v23.1.0-alpha.6.md +++ b/src/current/_includes/releases/v23.1/v23.1.0-alpha.6.md @@ -6,36 +6,36 @@ Release Date: March 13, 2023

SQL language changes

-- Previously, an `ALTER TABLE .. ADD UNIQUE .. NOT VALID` statement would be processed by ignoring the `NOT VALID` qualifier. This is not in keeping with PostgreSQL, which would throw an error instead. Now, CockroachDB throws the same error as PostgreSQL for such a statement: "UNIQUE constraints cannot be marked NOT VALID". [#97758][#97758] -- Introduced a new internal virtual table `crdb_internal.node_memory_monitors`, which exposes all of the current reservations with the memory accounting system on a single node. Access to the table requires the `VIEWACTIVITY` [system privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges) (or the legacy `VIEWACTIVITY` [role option](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#role-options)), or the `VIEWACTIVITYREDACTED` [system privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges) (or the legacy `VIEWACTIVITYREDACTED` [role option](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#role-options)) defined. [#97657][#97657] -- Each type cast is now expressible as a function, e.g., `now()::date` can be expressed as `date(now())`. [#97093][#97093] -- Added support for a new syntax to provide options to the [`COPY`]({% link v23.1/copy.md %}) statement. The options can now be given in a comma-separated list enclosed by parentheses. The old syntax is still supported. [#97863][#97863] -- Added support for the syntax `CREATE DATABASE IF NOT EXISTS ... WITH OWNER`. [#97951][#97951] -- Added a new internal [built-in function]({% link v23.1/functions-and-operators.md %}#trigrams-functions), `crdb_internal.redactable_sql_constants`, which can be used to redact SQL statements passed in as strings. [#97834][#97834] -- Added an `error_code` column to the `crdb_internal.cluster_execution_insights` and `crdb_internal.node_execution_insights`virtual tables, which contains the error code for a failed execution. Also added a `last_error_code` column to the `crdb_internal.cluster_txn_execution_insights` and `crdb_internal.node_txn_execution_insights` virtual tables, which contains the error code of the last failed statement in that transaction. [#97046][#97046] -- Added a new internal [built-in function]({% link v23.1/functions-and-operators.md %}#trigrams-functions), `crdb_internal.redact`, which replaces substrings surrounded by redaction markers with the redacted marker. [#98008][#98008] +- Previously, an `ALTER TABLE .. ADD UNIQUE .. NOT VALID` statement would be processed by ignoring the `NOT VALID` qualifier. This is not in keeping with PostgreSQL, which would throw an error instead. Now, CockroachDB throws the same error as PostgreSQL for such a statement: "UNIQUE constraints cannot be marked NOT VALID". +- Introduced a new internal virtual table `crdb_internal.node_memory_monitors`, which exposes all of the current reservations with the memory accounting system on a single node. Access to the table requires the `VIEWACTIVITY` [system privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges) (or the legacy `VIEWACTIVITY` [role option](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#role-options)), or the `VIEWACTIVITYREDACTED` [system privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges) (or the legacy `VIEWACTIVITYREDACTED` [role option](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#role-options)) defined. +- Each type cast is now expressible as a function, e.g., `now()::date` can be expressed as `date(now())`. +- Added support for a new syntax to provide options to the [`COPY`]({% link v23.1/copy.md %}) statement. The options can now be given in a comma-separated list enclosed by parentheses. The old syntax is still supported. +- Added support for the syntax `CREATE DATABASE IF NOT EXISTS ... WITH OWNER`. +- Added a new internal [built-in function]({% link v23.1/functions-and-operators.md %}#trigrams-functions), `crdb_internal.redactable_sql_constants`, which can be used to redact SQL statements passed in as strings. +- Added an `error_code` column to the `crdb_internal.cluster_execution_insights` and `crdb_internal.node_execution_insights`virtual tables, which contains the error code for a failed execution. Also added a `last_error_code` column to the `crdb_internal.cluster_txn_execution_insights` and `crdb_internal.node_txn_execution_insights` virtual tables, which contains the error code of the last failed statement in that transaction. +- Added a new internal [built-in function]({% link v23.1/functions-and-operators.md %}#trigrams-functions), `crdb_internal.redact`, which replaces substrings surrounded by redaction markers with the redacted marker.

Command-line changes

-- The [`cockroach node decommission`]({% link v23.1/cockroach-node.md %}) operation now validates the ability of the node to complete a decommission before attempting it, given the cluster configuration and the ranges with replicas present on the node. When errors are detected that would result in the inability to complete node decommission, they will be printed to stderr and the command will exit, instead of marking the node as `decommissioning` and beginning the node decommission process. Strict readiness evaluation mode can be used by setting`--checks=strict`. In this case, any ranges that need preliminary actions prior to replacement for the decommission process (e.g., ranges that are not yet fully up-replicated) will block the decommission process. Validation can be skipped by using the flag `--checks=skip`. [#96100][#96100] +- The [`cockroach node decommission`]({% link v23.1/cockroach-node.md %}) operation now validates the ability of the node to complete a decommission before attempting it, given the cluster configuration and the ranges with replicas present on the node. When errors are detected that would result in the inability to complete node decommission, they will be printed to stderr and the command will exit, instead of marking the node as `decommissioning` and beginning the node decommission process. Strict readiness evaluation mode can be used by setting`--checks=strict`. In this case, any ranges that need preliminary actions prior to replacement for the decommission process (e.g., ranges that are not yet fully up-replicated) will block the decommission process. Validation can be skipped by using the flag `--checks=skip`.

DB Console changes

-- Updated the description for [Suboptimal Insight]({% link v23.1/ui-insights-page.md %}) and added a **Learn more** link to it. [#97719][#97719] +- Updated the description for [Suboptimal Insight]({% link v23.1/ui-insights-page.md %}) and added a **Learn more** link to it.

Bug fixes

-- The unquoted value `none` is now allowed as the value in a [`SET`]({% link v23.1/set-vars.md %}) statement. [#97816][#97816] -- `IMPORT INTO ... DELIMITED DATA` will now correctly handle quoted fields that contain unescaped newlines. [#97545][#97545] -- Previously, casting an `inet` to a string type omitted the mask if a mask was not provided. This was not in keeping with PostgreSQL and is now resolved. [#97093][#97093] -- Fixed link encoding on links to database/table/index pages. [#97893][#97893] -- Fixed the [`SHOW CREATE ALL {TYPES|SCHEMAS|TABLES}`]({% link v23.1/show-create.md %}) commands so they handle database names that have mixed-case, hyphens, or quotes. [#97915][#97915] -- Tables referenced in index recommendations are now fully qualified, ensuring that they are not ambiguous. [#97262][#97262] -- Changed the database used for [SQL API]({% link v23.1/sql-statements.md %}) calls, to no longer use `defaultdb`, which was causing error messages on some pages when that database no longer exists. [#97990][#97990] +- The unquoted value `none` is now allowed as the value in a [`SET`]({% link v23.1/set-vars.md %}) statement. +- `IMPORT INTO ... DELIMITED DATA` will now correctly handle quoted fields that contain unescaped newlines. +- Previously, casting an `inet` to a string type omitted the mask if a mask was not provided. This was not in keeping with PostgreSQL and is now resolved. +- Fixed link encoding on links to database/table/index pages. +- Fixed the [`SHOW CREATE ALL {TYPES|SCHEMAS|TABLES}`]({% link v23.1/show-create.md %}) commands so they handle database names that have mixed-case, hyphens, or quotes. +- Tables referenced in index recommendations are now fully qualified, ensuring that they are not ambiguous. +- Changed the database used for [SQL API]({% link v23.1/sql-statements.md %}) calls, to no longer use `defaultdb`, which was causing error messages on some pages when that database no longer exists.

Build changes

-- Changes to source files in `pkg/ui/workspaces/db-console` now properly bust the build cache, and are consistently included in local builds. [#97956][#97956] +- Changes to source files in `pkg/ui/workspaces/db-console` now properly bust the build cache, and are consistently included in local builds.
@@ -44,26 +44,3 @@ Release Date: March 13, 2023 This release includes 69 merged PRs by 39 authors.
- -[#96100]: https://github.com/cockroachdb/cockroach/pull/96100 -[#97046]: https://github.com/cockroachdb/cockroach/pull/97046 -[#97093]: https://github.com/cockroachdb/cockroach/pull/97093 -[#97262]: https://github.com/cockroachdb/cockroach/pull/97262 -[#97534]: https://github.com/cockroachdb/cockroach/pull/97534 -[#97545]: https://github.com/cockroachdb/cockroach/pull/97545 -[#97657]: https://github.com/cockroachdb/cockroach/pull/97657 -[#97719]: https://github.com/cockroachdb/cockroach/pull/97719 -[#97758]: https://github.com/cockroachdb/cockroach/pull/97758 -[#97784]: https://github.com/cockroachdb/cockroach/pull/97784 -[#97816]: https://github.com/cockroachdb/cockroach/pull/97816 -[#97834]: https://github.com/cockroachdb/cockroach/pull/97834 -[#97863]: https://github.com/cockroachdb/cockroach/pull/97863 -[#97893]: https://github.com/cockroachdb/cockroach/pull/97893 -[#97915]: https://github.com/cockroachdb/cockroach/pull/97915 -[#97935]: https://github.com/cockroachdb/cockroach/pull/97935 -[#97951]: https://github.com/cockroachdb/cockroach/pull/97951 -[#97956]: https://github.com/cockroachdb/cockroach/pull/97956 -[#97990]: https://github.com/cockroachdb/cockroach/pull/97990 -[#98008]: https://github.com/cockroachdb/cockroach/pull/98008 -[8a5e74a01]: https://github.com/cockroachdb/cockroach/commit/8a5e74a01 -[eae9c4ff4]: https://github.com/cockroachdb/cockroach/commit/eae9c4ff4 diff --git a/src/current/_includes/releases/v23.1/v23.1.0-alpha.7.md b/src/current/_includes/releases/v23.1/v23.1.0-alpha.7.md index f4e1578c9af..712414e722d 100644 --- a/src/current/_includes/releases/v23.1/v23.1.0-alpha.7.md +++ b/src/current/_includes/releases/v23.1/v23.1.0-alpha.7.md @@ -6,49 +6,49 @@ Release Date: March 20, 2023

Security updates

-- The default value for the `server.user_login.password_hashes.default_cost.scram_sha_256` [cluster setting]({% link v23.1/cluster-settings.md %}) is now 10610. (Previously the default was 119680.) The old value was found to have been too high for many types of client hardware, and in some cases could cause regressions in connection latency. The new value was chosen by running tests with clients that have 1 or 2 vCPUs provisioned. Additionally, the new cluster setting `server.user_login.rehash_scram_stored_passwords_on_cost_change.enabled` was added, and defaults to `true`. If it is `true` and the stored SCRAM password for a user has a different cost than the configured default cost, then the next time the user logs in, their password will automatically be rehashed using the configured default cost. If the rehashing is not desired, then operators should update the `server.user_login.password_hashes.default_cost.scram_sha_256` cluster setting to the value they desire before upgrading. This change is being backported to [v22.2]({% link releases/v22.2.md %}). [#98254][#98254] +- The default value for the `server.user_login.password_hashes.default_cost.scram_sha_256` [cluster setting]({% link v23.1/cluster-settings.md %}) is now 10610. (Previously the default was 119680.) The old value was found to have been too high for many types of client hardware, and in some cases could cause regressions in connection latency. The new value was chosen by running tests with clients that have 1 or 2 vCPUs provisioned. Additionally, the new cluster setting `server.user_login.rehash_scram_stored_passwords_on_cost_change.enabled` was added, and defaults to `true`. If it is `true` and the stored SCRAM password for a user has a different cost than the configured default cost, then the next time the user logs in, their password will automatically be rehashed using the configured default cost. If the rehashing is not desired, then operators should update the `server.user_login.password_hashes.default_cost.scram_sha_256` cluster setting to the value they desire before upgrading. This change is being backported to [v22.2]({% link releases/v22.2.md %}).

General changes

-- CockroachDB now uses the soft memory limit of Go runtime by default. This feature of Go has been available since v22.2 by setting the `GOMEMLIMIT` environment variable. Now it is enabled by default, which should reduce the likelihood of the CockroachDB process [OOMing]({% link v23.1/cluster-setup-troubleshooting.md %}#out-of-memory-oom-crash). This soft memory limit can be disabled by specifying `--max-go-memory=0` to [`cockroach start`]({% link v23.1/cockroach-start.md %}). [#97666][#97666] -- Previously, the output of [`SHOW CHANGEFEED JOBS`]({% link v23.1/show-jobs.md %}#show-changefeed-jobs) was limited to show unfinished jobs and finished jobs from the last 14 days. This change makes the command show all changefeed jobs, regardless of if they finished and when they finished. Note that jobs still obey the [cluster setting]({% link v23.1/cluster-settings.md %}#setting-jobs-retention-time) `jobs.retention_time`. Completed jobs older than that time are deleted. Fixes: https://github.com/cockroachdb/cockroach/issues/97883 [#98175][#98175] +- CockroachDB now uses the soft memory limit of Go runtime by default. This feature of Go has been available since v22.2 by setting the `GOMEMLIMIT` environment variable. Now it is enabled by default, which should reduce the likelihood of the CockroachDB process [OOMing]({% link v23.1/cluster-setup-troubleshooting.md %}#out-of-memory-oom-crash). This soft memory limit can be disabled by specifying `--max-go-memory=0` to [`cockroach start`]({% link v23.1/cockroach-start.md %}). +- Previously, the output of [`SHOW CHANGEFEED JOBS`]({% link v23.1/show-jobs.md %}#show-changefeed-jobs) was limited to show unfinished jobs and finished jobs from the last 14 days. This change makes the command show all changefeed jobs, regardless of if they finished and when they finished. Note that jobs still obey the [cluster setting]({% link v23.1/cluster-settings.md %}#setting-jobs-retention-time) `jobs.retention_time`. Completed jobs older than that time are deleted.

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

-- Sinkless [changefeeds]({% link v23.1/create-changefeed.md %}) that use the [`AS SELECT`]({% link v23.1/selection-queries.md %}) syntax now require an enterprise license. [#98241][#98241] -- [External connections]({% link v23.1/create-external-connection.md %}) can now be used as the URI value for a Confluent schema registry. For example, `CREATE EXTERNAL CONNECTION reg AS "https://example.cloud?opt=val"; CREATE CHANGEFEED FOR foo WITH format='avro',confluent_schema_registry='external://reg'` [#97140][#97140] -- [Backup schedules]({% link v23.1/create-schedule-for-backup.md %}) created or altered to have the option `on_previous_running` will have the full backup schedule created with the user specified option, but will override the incremental backup schedule to always default to `on_previous_running = wait`. This ensures correctness of the backup chains created by the incremental schedule by preventing duplicate incremental jobs from racing against each other. [#98249][#98249] -- [Changefeeds]({% link v23.1/changefeed-sinks.md %}#kafka) to a Kafka sink now support the `OAUTHBEARER` `sasl_mechanism`. [#98053][#98053] -- [Changefeeds]({% link v23.1/changefeed-examples.md %}) running with the `changefeed.mux_rangefeed.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}) set to `true` are more efficient, particularly when executing against large tables. [#96756][#96756] +- Sinkless [changefeeds]({% link v23.1/create-changefeed.md %}) that use the [`AS SELECT`]({% link v23.1/selection-queries.md %}) syntax now require an enterprise license. +- [External connections]({% link v23.1/create-external-connection.md %}) can now be used as the URI value for a Confluent schema registry. For example, `CREATE EXTERNAL CONNECTION reg AS "https://example.cloud?opt=val"; CREATE CHANGEFEED FOR foo WITH format='avro',confluent_schema_registry='external://reg'` +- [Backup schedules]({% link v23.1/create-schedule-for-backup.md %}) created or altered to have the option `on_previous_running` will have the full backup schedule created with the user specified option, but will override the incremental backup schedule to always default to `on_previous_running = wait`. This ensures correctness of the backup chains created by the incremental schedule by preventing duplicate incremental jobs from racing against each other. +- [Changefeeds]({% link v23.1/changefeed-sinks.md %}#kafka) to a Kafka sink now support the `OAUTHBEARER` `sasl_mechanism`. +- [Changefeeds]({% link v23.1/changefeed-examples.md %}) running with the `changefeed.mux_rangefeed.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}) set to `true` are more efficient, particularly when executing against large tables.

SQL language changes

-- A regions field was added to the `statistics` column of [`crdb_internal.statement_statistics`](https://www.cockroachlabs.com/docs/v23.1/crdb-internal#statement_statistics), reporting the [regions]({% link v23.1/show-regions.md %}) of the nodes on which the statement was executed. [#95449][#95449] +- A regions field was added to the `statistics` column of [`crdb_internal.statement_statistics`](https://www.cockroachlabs.com/docs/v23.1/crdb-internal#statement_statistics), reporting the [regions]({% link v23.1/show-regions.md %}) of the nodes on which the statement was executed. - The `enforce_home_region` [session setting]({% link v23.1/set-vars.md %}#enforce-home-region) was extended with a new optional preview feature and session setting, which is disabled by default, to dynamically detect and report the home region for [`SELECT`]({% link v23.1/selection-queries.md %}) queries based on the [locality]({% link v23.1/show-locality.md %}) of the queried rows, if different from the region of the [gateway node]({% link v23.1/ui-sessions-page.md %}#session-details-gateway-node). [cockroachdb/cockroach#97827][#97827] -- Added a URL to errors related to the `enforce_home_region` [session setting]({% link v23.1/set-vars.md %}#enforce-home-region) that users can view to see additional information about the error. [#97827][#97827] -- Added a new [session setting]({% link v23.1/set-vars.md %}) `enforce_home_region_follower_reads_enabled` as a preview feature to allow errors triggered by the `enforce_home_region` [session setting]({% link v23.1/set-vars.md %}#enforce-home-region) to perform reads using [`AS OF SYSTEM TIME follower_read_timestamp()`]({% link v23.1/follower-reads.md %}) in order to find and report a query's [home region]({% link v23.1/multiregion-overview.md %}#table-localities). [#97827][#97827] -- Added a new aggregate [builtin function]({% link v23.1/functions-and-operators.md %}#array-functions) `array_cat_agg`. It behaves similarly to `array_agg(unnest(array_column))`: it takes arrays as its input, unnests them into the array elements which are then aggregated into a single result array. It's similar to concatenating all input arrays into a single array. [#97826][#97826] -- Added a new [session setting]({% link v23.1/set-vars.md %}) `optimizer_always_use_histograms`, which ensures that the [optimizer]({% link v23.1/cost-based-optimizer.md %}) always uses histograms when available to calculate the [statistics]({% link v23.1/cost-based-optimizer.md %}#table-statistics) of every plan that it explores. Enabling this setting can prevent the optimizer from choosing a suboptimal [index]({% link v23.1/indexes.md %}) when statistics for a table are stale. [#98194][#98194] -- Added the `MODIFYSQLCLUSTERSETTING` [system privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges). This privilege allows users the ability to view all [cluster settings]({% link v23.1/cluster-settings.md %}), but only modify those settings with the `sql.defaults.*` prefix. This re-introduces the modify functionality seen with `MODIFYCLUSTERSETTING` CockroachDB [v22.2]({% link releases/v22.2.md %}). [#97521][#97521] +- Added a URL to errors related to the `enforce_home_region` [session setting]({% link v23.1/set-vars.md %}#enforce-home-region) that users can view to see additional information about the error. +- Added a new [session setting]({% link v23.1/set-vars.md %}) `enforce_home_region_follower_reads_enabled` as a preview feature to allow errors triggered by the `enforce_home_region` [session setting]({% link v23.1/set-vars.md %}#enforce-home-region) to perform reads using [`AS OF SYSTEM TIME follower_read_timestamp()`]({% link v23.1/follower-reads.md %}) in order to find and report a query's [home region]({% link v23.1/multiregion-overview.md %}#table-localities). +- Added a new aggregate [builtin function]({% link v23.1/functions-and-operators.md %}#array-functions) `array_cat_agg`. It behaves similarly to `array_agg(unnest(array_column))`: it takes arrays as its input, unnests them into the array elements which are then aggregated into a single result array. It's similar to concatenating all input arrays into a single array. +- Added a new [session setting]({% link v23.1/set-vars.md %}) `optimizer_always_use_histograms`, which ensures that the [optimizer]({% link v23.1/cost-based-optimizer.md %}) always uses histograms when available to calculate the [statistics]({% link v23.1/cost-based-optimizer.md %}#table-statistics) of every plan that it explores. Enabling this setting can prevent the optimizer from choosing a suboptimal [index]({% link v23.1/indexes.md %}) when statistics for a table are stale. +- Added the `MODIFYSQLCLUSTERSETTING` [system privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges). This privilege allows users the ability to view all [cluster settings]({% link v23.1/cluster-settings.md %}), but only modify those settings with the `sql.defaults.*` prefix. This re-introduces the modify functionality seen with `MODIFYCLUSTERSETTING` CockroachDB [v22.2]({% link releases/v22.2.md %}). - Added a `status` column to the following [`crdb_internal`](https://www.cockroachlabs.com/docs/v23.1/crdb-internal#) virtual tables: `crdb_internal.cluster_txn_execution_insights` and `crdb_internal.node_txn_execution_insights`. [cockroachdb/cockroach#98217][#98217] -- Added a new session variable `allow_role_memberships_to_change_during_transaction` which can be used to make the [granting]({% link v23.1/grant.md %}) and [revoking]({% link v23.1/revoke.md %}) of [role memberships](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#roles) faster at the cost of some [isolation](https://www.cockroachlabs.com/docs/v23.1/architecture/transaction-layer#isolation-levels) claims. By default, when granting or revoking a role from another role, CockroachDB waits for all [transactions]({% link v23.1/transactions.md %}) that are consulting the current set of role memberships to complete. This means that by the time the transaction which performed the grant or revoke operation returns successfully, the user has a proof that no ongoing transaction is relying on the state that existed prior to the change. The downside of this waiting is that it means that `GRANT` and `REVOKE` will take longer than the longest currently executing transaction. In some cases, users do not care about whether concurrent transactions will immediately see the side-effects of the operation, and would instead prefer that the grant or revoke finish rapidly. In order to aid in those cases, the session variable `allow_role_memberships_to_change_during_transaction` has been added. Now, the grant or revoke will only need to wait for the completion of statements in [sessions]({% link v23.1/show-sessions.md %}) which do not have this option set. One can set the option as enabled by default in all sessions in order to accelerate and grant and revoke role operations. [#98370][#98370] -- Fixed a bug where CockroachDB panicked when a user tried to [truncate a table]({% link v23.1/truncate.md %}) which had an ongoing [Row-level TTL]({% link v23.1/row-level-ttl.md %}) change. CockroachDB still does not support truncating a table in this scenario, but instead of panicking an "unimplemented" error is returned. [#98537][#98537] +- Added a new session variable `allow_role_memberships_to_change_during_transaction` which can be used to make the [granting]({% link v23.1/grant.md %}) and [revoking]({% link v23.1/revoke.md %}) of [role memberships](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#roles) faster at the cost of some [isolation](https://www.cockroachlabs.com/docs/v23.1/architecture/transaction-layer#isolation-levels) claims. By default, when granting or revoking a role from another role, CockroachDB waits for all [transactions]({% link v23.1/transactions.md %}) that are consulting the current set of role memberships to complete. This means that by the time the transaction which performed the grant or revoke operation returns successfully, the user has a proof that no ongoing transaction is relying on the state that existed prior to the change. The downside of this waiting is that it means that `GRANT` and `REVOKE` will take longer than the longest currently executing transaction. In some cases, users do not care about whether concurrent transactions will immediately see the side-effects of the operation, and would instead prefer that the grant or revoke finish rapidly. In order to aid in those cases, the session variable `allow_role_memberships_to_change_during_transaction` has been added. Now, the grant or revoke will only need to wait for the completion of statements in [sessions]({% link v23.1/show-sessions.md %}) which do not have this option set. One can set the option as enabled by default in all sessions in order to accelerate and grant and revoke role operations. +- Fixed a bug where CockroachDB panicked when a user tried to [truncate a table]({% link v23.1/truncate.md %}) which had an ongoing [Row-level TTL]({% link v23.1/row-level-ttl.md %}) change. CockroachDB still does not support truncating a table in this scenario, but instead of panicking an "unimplemented" error is returned.

Operational changes

-- [Range leases]({% link v23.1/architecture/overview.md %}#architecture-leaseholder) will no longer be transferred to [stores]({% link v23.1/cockroach-start.md %}#store) which are IO overloaded. [#97587][#97587] -- The environment variable `COCKROACH_IGNORE_CLUSTER_SETTINGS` can be used to [start a node]({% link v23.1/cockroach-start.md %}) so that it ignores all stored [cluster setting]({% link v23.1/cluster-settings.md %}) values in an emergency. [#97805][#97805] -- Introduce two [cluster settings]({% link v23.1/cluster-settings.md %}) to control disk utilization thresholds for [replica allocation](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer): `kv.allocator.rebalance_to_max_disk_utilization_threshold`, which controls the maximum disk utilization before a store will never be used as a rebalance target, and `kv.allocator.max_disk_utilization_threshold`, which controls maximum disk utilization before a store will never be used as a rebalance or allocation target _and_ will actively have [replicas](https://www.cockroachlabs.com/docs/v23.1/architecture/overview#architecture-replica) moved off of it. [#97409][#97409] -- The [cluster setting]({% link v23.1/cluster-settings.md %}) `kv.trace.slow_request_stacks.threshold` can be used to attach available stack history from [tracer snapshots]({% link v23.1/show-trace.md %}) to traces of [slow requests](https://www.cockroachlabs.com/docs/v23.1/logging#sql_perf). [#97895][#97895] -- Added a new [metric]({% link v23.1/metrics.md %}) `changefeed.schema_registry.retry_count`. This measures the number of request retries performed when sending requests to the [changefeed schema registry]({% link v23.1/changefeed-examples.md %}). Observing a nonzero value may indicate improper configuration of the schema registry or changefeed parameters. [#98338][#98338] -- The `kv.range_split.load_cpu_threshold` [cluster setting]({% link v23.1/cluster-settings.md %}#setting-kv-range-split-load-cpu-threshold) now has a minimum setting value of `10ms`. [#98250][#98250] +- [Range leases]({% link v23.1/architecture/overview.md %}#architecture-leaseholder) will no longer be transferred to [stores]({% link v23.1/cockroach-start.md %}#store) which are IO overloaded. +- The environment variable `COCKROACH_IGNORE_CLUSTER_SETTINGS` can be used to [start a node]({% link v23.1/cockroach-start.md %}) so that it ignores all stored [cluster setting]({% link v23.1/cluster-settings.md %}) values in an emergency. +- Introduce two [cluster settings]({% link v23.1/cluster-settings.md %}) to control disk utilization thresholds for [replica allocation](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer): `kv.allocator.rebalance_to_max_disk_utilization_threshold`, which controls the maximum disk utilization before a store will never be used as a rebalance target, and `kv.allocator.max_disk_utilization_threshold`, which controls maximum disk utilization before a store will never be used as a rebalance or allocation target _and_ will actively have [replicas](https://www.cockroachlabs.com/docs/v23.1/architecture/overview#architecture-replica) moved off of it. +- The [cluster setting]({% link v23.1/cluster-settings.md %}) `kv.trace.slow_request_stacks.threshold` can be used to attach available stack history from [tracer snapshots]({% link v23.1/show-trace.md %}) to traces of [slow requests](https://www.cockroachlabs.com/docs/v23.1/logging#sql_perf). +- Added a new [metric]({% link v23.1/metrics.md %}) `changefeed.schema_registry.retry_count`. This measures the number of request retries performed when sending requests to the [changefeed schema registry]({% link v23.1/changefeed-examples.md %}). Observing a nonzero value may indicate improper configuration of the schema registry or changefeed parameters. +- The `kv.range_split.load_cpu_threshold` [cluster setting]({% link v23.1/cluster-settings.md %}#setting-kv-range-split-load-cpu-threshold) now has a minimum setting value of `10ms`. - The `kv.allocator.lease_io_overload_threshold_enforcement` [cluster setting]({% link v23.1/cluster-settings.md %}) value which disables enforcement is updated to be spelled correctly as "ignore" rather than "ingore". [cockroachdb/cockroach#98543][#98543] -- The [range lease](https://www.cockroachlabs.com/docs/v23.1/architecture/overview#architecture-leaseholder) duration can now be adjusted via the environment variable `COCKROACH_RANGE_LEASE_DURATION`. Users are advised to exercise caution when adjusting this, and consider the relationship with e.g. [Raft](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer#raft) election timeouts and network timeouts. [#98616][#98616] +- The [range lease](https://www.cockroachlabs.com/docs/v23.1/architecture/overview#architecture-leaseholder) duration can now be adjusted via the environment variable `COCKROACH_RANGE_LEASE_DURATION`. Users are advised to exercise caution when adjusting this, and consider the relationship with e.g. [Raft](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer#raft) election timeouts and network timeouts.

Command-line changes

-- [`cockroach sql`]({% link v23.1/cockroach-sql.md %}) and [`cockroach demo`]({% link v23.1/cockroach-demo.md %}) now support the client-side command `\s` to display the previous command history. [#98035][#98035] -- Added a new flag `--max-go-memory` to the [`cockroach start`]({% link v23.1/cockroach-start.md %}) command. It controls the soft memory limit on the Go runtime which adjusts the behavior of the Go garbage collector to try keeping the memory usage under the soft memory limit (the limit is "soft" in a sense that it is not enforced if live objects (RSS) exceed it). Similar to the [`--max-sql-memory` flag]({% link v23.1/cockroach-start.md %}), the new flag `--max-go-memory` accepts numbers interpreted as bytes, size suffixes (e.g. `1GB` and `1GiB`) or a percentage of physical memory (e.g. `.25`). If left unspecified, the flag defaults to 2.25x of `--max-sql-memory` (subject to `--max-go-memory + 1.15 x --cache` not exceeding 90% of available RAM). Set to `0` to disable the soft memory limit (not recommended). If the `GOMEMLIMIT` env var is set and `--max-go-memory` is not, then the value from the env var is used; if both are set, then the flag takes precedence. [#97666][#97666] +- [`cockroach sql`]({% link v23.1/cockroach-sql.md %}) and [`cockroach demo`]({% link v23.1/cockroach-demo.md %}) now support the client-side command `\s` to display the previous command history. +- Added a new flag `--max-go-memory` to the [`cockroach start`]({% link v23.1/cockroach-start.md %}) command. It controls the soft memory limit on the Go runtime which adjusts the behavior of the Go garbage collector to try keeping the memory usage under the soft memory limit (the limit is "soft" in a sense that it is not enforced if live objects (RSS) exceed it). Similar to the [`--max-sql-memory` flag]({% link v23.1/cockroach-start.md %}), the new flag `--max-go-memory` accepts numbers interpreted as bytes, size suffixes (e.g. `1GB` and `1GiB`) or a percentage of physical memory (e.g. `.25`). If left unspecified, the flag defaults to 2.25x of `--max-sql-memory` (subject to `--max-go-memory + 1.15 x --cache` not exceeding 90% of available RAM). Set to `0` to disable the soft memory limit (not recommended). If the `GOMEMLIMIT` env var is set and `--max-go-memory` is not, then the value from the env var is used; if both are set, then the flag takes precedence. - Here are a few examples of how the default value is calculated on a machine with 16GiB of RAM. In the first two lines we use the default formula `2.25x --max-sql-memory`. In the third line, the default formula results in exceeding the upper bound on total usage (including the cache), so we use the upper bound determined as `0.9 * total RAM - 1.15 * cache size`. In the fourth line, the default formula results in 225MiB which is smaller than the lower bound of 256MiB, so we bump the value to that lower bound. In the fifth line, we use the value specified by the user (even though it is smaller than the lower bound on the default value). | Command line flags | Computed max SQL memory | Computed cache size | Computed max Go memory | @@ -59,40 +59,40 @@ Release Date: March 20, 2023 | --max-sql-memory=100MiB | 100MiB | 128MiB | 256MiB | | --max-sql-memory=.4 --cache=.2 --max-go-memory=100MiB | 6.4GiB | 3.2GiB | 100MiB | -- The `--drain-wait` argument to the [`cockroach node drain`]({% link v23.1/cockroach-node.md %}) command will be automatically increased if the command detects that it is smaller than the sum of the [cluster settings]({% link v23.1/node-shutdown.md %}#cluster-settings) `server.shutdown.drain_wait`, `server.shutdown.connection_wait`, `server.shutdown.query_wait` times two, and `server.shutdown.lease_transfer_wait`. If the `--drain-wait` argument is 0, then no timeout is used. This recommendation [was already documented]({% link v23.1/node-shutdown.md %}#drain-timeout), but now the advice will be applied automatically. [#98390][#98390] +- The `--drain-wait` argument to the [`cockroach node drain`]({% link v23.1/cockroach-node.md %}) command will be automatically increased if the command detects that it is smaller than the sum of the [cluster settings]({% link v23.1/node-shutdown.md %}#cluster-settings) `server.shutdown.drain_wait`, `server.shutdown.connection_wait`, `server.shutdown.query_wait` times two, and `server.shutdown.lease_transfer_wait`. If the `--drain-wait` argument is 0, then no timeout is used. This recommendation [was already documented]({% link v23.1/node-shutdown.md %}#drain-timeout), but now the advice will be applied automatically.

DB Console changes

-- Fixed the error `Cannot read properties of undefined (reading 'length')` which could cause [DB Console]({% link v23.1/ui-overview.md %}) pages to fail to load. [#98222][#98222] -- Added a new metric to the [Hardware dashboard]({% link v23.1/ui-hardware-dashboard.md %}) showing the system-wide CPU usage in addition to the existing CockroachDB CPU usage. [#98187][#98187] +- Fixed the error `Cannot read properties of undefined (reading 'length')` which could cause [DB Console]({% link v23.1/ui-overview.md %}) pages to fail to load. +- Added a new metric to the [Hardware dashboard]({% link v23.1/ui-hardware-dashboard.md %}) showing the system-wide CPU usage in addition to the existing CockroachDB CPU usage. - Users will see an upgrade error message when a response from the SQL-over-HTTP API (from `/api/v2/sql/`) says that a relation or column does not exist. [cockroachdb/cockroach#98312][#98312] -- The description of the average QPS graph in the [Replication Metrics Dashboard]({% link v23.1/ui-replication-dashboard.md %}) no longer claims the average is exponentially weighted. [#98270][#98270] -- The metric `rebalancing.cpunanospersecond` is now included in the [Replication Metrics Dashboard]({% link v23.1/ui-replication-dashboard.md %}). [#98270][#98270] +- The description of the average QPS graph in the [Replication Metrics Dashboard]({% link v23.1/ui-replication-dashboard.md %}) no longer claims the average is exponentially weighted. +- The metric `rebalancing.cpunanospersecond` is now included in the [Replication Metrics Dashboard]({% link v23.1/ui-replication-dashboard.md %}). - Added an error code column to the insights table for a failed execution to the statement and transaction detail views on the [Insights Page]({% link v23.1/ui-insights-page.md %}). Added a status column to the statement and transaction workload insights tables on the [Insights Page]({% link v23.1/ui-insights-page.md %}). [cockroachdb/cockroach#97138][#97138]

Bug fixes

-- RPC connections between nodes now require RPC connections to be established in both directions, otherwise the connection will be closed. This is done to prevent asymmetric network partitions where nodes are able to send outbound messages but not receive inbound messages, which could result in persistent unavailability. This behavior can be disabled by the [cluster setting]({% link v23.1/cluster-settings.md %}) `rpc.dialback.enabled`. [#94778][#94778] -- The owner of the public schema can now be changed using [`ALTER SCHEMA public OWNER TO new_owner`]({% link v23.1/alter-schema.md %}). [#98000][#98000] -- Fixed a bug in which [common table expressions]({% link v23.1/common-table-expressions.md %}) (CTEs) marked as `WITH RECURSIVE` which were not actually recursive could return incorrect results. This could happen if the CTE used a `UNION ALL`, because the [optimizer]({% link v23.1/cost-based-optimizer.md %}) incorrectly converted the `UNION ALL` to a `UNION`. This bug had existed since support for recursive CTEs was first added in v20.1. [#98042][#98042] +- RPC connections between nodes now require RPC connections to be established in both directions, otherwise the connection will be closed. This is done to prevent asymmetric network partitions where nodes are able to send outbound messages but not receive inbound messages, which could result in persistent unavailability. This behavior can be disabled by the [cluster setting]({% link v23.1/cluster-settings.md %}) `rpc.dialback.enabled`. +- The owner of the public schema can now be changed using [`ALTER SCHEMA public OWNER TO new_owner`]({% link v23.1/alter-schema.md %}). +- Fixed a bug in which [common table expressions]({% link v23.1/common-table-expressions.md %}) (CTEs) marked as `WITH RECURSIVE` which were not actually recursive could return incorrect results. This could happen if the CTE used a `UNION ALL`, because the [optimizer]({% link v23.1/cost-based-optimizer.md %}) incorrectly converted the `UNION ALL` to a `UNION`. This bug had existed since support for recursive CTEs was first added in v20.1. - Internal queries that are executed in order to serve a client-initiated query already appeared in [statistics]({% link v23.1/cost-based-optimizer.md %}#table-statistics) with an `application_name` prefixed by the string `$$`. But this name was not used in the output of [`SHOW QUERIES`]({% link v23.1/show-statements.md %}). Now, `SHOW QUERIES` also shows the `$$` prefix for these types of queries. - Fixed a bug in evaluation of `ANY`, `SOME`, and `ALL` [sub-operators]({% link v23.1/functions-and-operators.md %}#operators) that would cause expressions like `NULL = ANY(ARRAY[]::INT[])` to return `NULL` instead of `False`. [cockroachdb/cockroach#97948][#97948] -- Fixed a bug that could crash the process when a query contained a literal [tuple expression]({% link v23.1/scalar-expressions.md %}#tuple-constructors) with more than two elements and only a single label, e.g., `((1, 2, 3) AS foo)`. [#98142][#98142] -- Fixed a bug where certain special character combinations in the [`options` field in connection URLs]({% link v23.1/connection-parameters.md %}#supported-options-parameters) were not properly supported by CockroachDB. [#98302][#98302] +- Fixed a bug that could crash the process when a query contained a literal [tuple expression]({% link v23.1/scalar-expressions.md %}#tuple-constructors) with more than two elements and only a single label, e.g., `((1, 2, 3) AS foo)`. +- Fixed a bug where certain special character combinations in the [`options` field in connection URLs]({% link v23.1/connection-parameters.md %}#supported-options-parameters) were not properly supported by CockroachDB. - Fixed a bug where the stats columns on the [Transaction Fingerprints overview page]({% link v23.1/ui-transactions-page.md %}#transaction-fingerprints-view) was continuously incrementing. The fix was to ensure we don't re-use the stats object between re-renders by creating a new copy of the stats for every aggregation. [cockroachdb/cockroach#98307][#98307] -- Fixed a bug where [transactions]({% link v23.1/transactions.md %}) that performed a [`SELECT FOR UPDATE`]({% link v23.1/select-for-update.md %}) across multiple [ranges](https://www.cockroachlabs.com/docs/v23.1/architecture/overview#architecture-range) but never performed writes could fail to eagerly clean up their [locks](https://www.cockroachlabs.com/docs/v23.1/architecture/transaction-layer#writing) after commit. Future transactions that encountered these abandoned locks could be delayed for 50ms before unlocking them. [#98044][#98044] -- Fixed a bug which could result in some [`CREATE INDEX`]({% link v23.1/create-index.md %}) statements to fail with the error `failed to verify keys for Scan`. [#98262][#98262] -- Fixed a bug where CockroachDB could encounter an internal error `concurrent txn use detected`. The bug was introduced in [v22.2.0]({% link releases/v22.2.md %}). [#98120][#98120] -- Fixed a bug where if an [`UPDATE`]({% link v23.1/update.md %}) was performed during an on-going [`ADD COLUMN`]({% link v23.1/alter-table.md %}#add-column) or [`DROP COLUMN`]({% link v23.1/alter-table.md %}#drop-column) on a table, the update could incorrectly fail due to a duplicate key error. [#98354][#98354] -- Fixed a bug where it was possible for CockroachDB to temporarily not respect [zone configurations]({% link v23.1/configure-replication-zones.md %}) other than [the default zone config]({% link v23.1/configure-replication-zones.md %}#view-the-default-replication-zone). This could only happen for a short window of a few seconds after nodes with existing [replicas](https://www.cockroachlabs.com/docs/v23.1/architecture/overview#architecture-replica) were [restarted]({% link v23.1/cockroach-start.md %}), and self-rectified (also within seconds). [#98422][#98422] +- Fixed a bug where [transactions]({% link v23.1/transactions.md %}) that performed a [`SELECT FOR UPDATE`]({% link v23.1/select-for-update.md %}) across multiple [ranges](https://www.cockroachlabs.com/docs/v23.1/architecture/overview#architecture-range) but never performed writes could fail to eagerly clean up their [locks](https://www.cockroachlabs.com/docs/v23.1/architecture/transaction-layer#writing) after commit. Future transactions that encountered these abandoned locks could be delayed for 50ms before unlocking them. +- Fixed a bug which could result in some [`CREATE INDEX`]({% link v23.1/create-index.md %}) statements to fail with the error `failed to verify keys for Scan`. +- Fixed a bug where CockroachDB could encounter an internal error `concurrent txn use detected`. The bug was introduced in [v22.2.0]({% link releases/v22.2.md %}). +- Fixed a bug where if an [`UPDATE`]({% link v23.1/update.md %}) was performed during an on-going [`ADD COLUMN`]({% link v23.1/alter-table.md %}#add-column) or [`DROP COLUMN`]({% link v23.1/alter-table.md %}#drop-column) on a table, the update could incorrectly fail due to a duplicate key error. +- Fixed a bug where it was possible for CockroachDB to temporarily not respect [zone configurations]({% link v23.1/configure-replication-zones.md %}) other than [the default zone config]({% link v23.1/configure-replication-zones.md %}#view-the-default-replication-zone). This could only happen for a short window of a few seconds after nodes with existing [replicas](https://www.cockroachlabs.com/docs/v23.1/architecture/overview#architecture-replica) were [restarted]({% link v23.1/cockroach-start.md %}), and self-rectified (also within seconds). - This manifested in a few ways: - If [`num_replicas`](https://www.cockroachlabs.com/docs/v23.1/configure-replication-zones#num_replicas) was set to something other than 3, we would still add or remove replicas to get to 3x replication. - If [`num_voters`](https://www.cockroachlabs.com/docs/v23.1/configure-replication-zones#num_voters) was set explicitly to get a mix of voting and [non-voting replicas](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer#non-voting-replicas), it would be ignored. CockroachDB could possibly even remove non-voting replicas. - If [`range_min_bytes`]({% link v23.1/configure-replication-zones.md %}#range-min-bytes) or [`range_max_bytes`]({% link v23.1/configure-replication-zones.md %}#range-max-bytes) were changed from their default values of 128 MiB and 512 MiB respectively, we would instead try to size ranges to be within [128 MiB, 512MiB]. This could appear as an excess amount of [range splits](https://www.cockroachlabs.com/docs/v23.1/architecture/distribution-layer#range-splits) or [merges](https://www.cockroachlabs.com/docs/v23.1/architecture/distribution-layer#range-merges), as visible in the [Replication Dashboard]({% link v23.1/ui-replication-dashboard.md %}) under "Range Operations". - If [`gc.ttlseconds`]({% link v23.1/configure-replication-zones.md %}#gc-ttlseconds) was set to something other than the default 90000 seconds (25h), we would still only GC data older than 90000s. If the GC TTL was set to something larger than 25h, [`AS OF SYSTEM TIME`]({% link v23.1/as-of-system-time.md %}) queries going further back could start failing. For GC TTLs less than the default, clusters would observe increased disk usage due to more retained [MVCC garbage]({% link v23.1/performance-recipes.md %}#too-many-mvcc-values). - If [`constraints`]({% link v23.1/configure-replication-zones.md %}#constraints), [`lease_preferences`](https://www.cockroachlabs.com/docs/v23.1/configure-replication-zones#lease_preferences) or [`voter_constraints`](https://www.cockroachlabs.com/docs/v23.1/configure-replication-zones#voter_constraints) were set, they would be ignored. Range data and [leases](https://www.cockroachlabs.com/docs/v23.1/architecture/glossary#architecture-leaseholder) would possibly be moved outside where prescribed. -- Allow users with the `VIEWACTIVITY`/`VIEWACTIVITYREDACTED` [permissions](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#role-options) to access the [`crdb_internal.ranges_no_leases`]({% link v23.1/crdb-internal.md %}) table, necessary to view important DB Console pages (specifically, the [Databases Page]({% link v23.1/ui-databases-page.md %}), including database details, and database tables). [#98535][#98535] -- Fixed a bug that caused incorrect results when comparisons of [tuples]({% link v23.1/scalar-expressions.md %}#tuple-constructors) were done using the `ANY` [operator]({% link v23.1/functions-and-operators.md %}#operators). For example, an expression like (x, y) = ANY (SELECT a, b FROM t WHERE ...) could return `true` instead of the correct result of `NULL` when `x` and `y` were `NULL`, or `a` and `b` were `NULL`. This could only occur if the [subquery was correlated]({% link v23.1/subqueries.md %}#correlated-subqueries), i.e., it references columns from the outer part of the query. This bug was present since the [cost-based optimizer]({% link v23.1/cost-based-optimizer.md %}) was introduced in [v2.1]({% link releases/v2.1.md %}). [#98700][#98700] +- Allow users with the `VIEWACTIVITY`/`VIEWACTIVITYREDACTED` [permissions](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#role-options) to access the [`crdb_internal.ranges_no_leases`]({% link v23.1/crdb-internal.md %}) table, necessary to view important DB Console pages (specifically, the [Databases Page]({% link v23.1/ui-databases-page.md %}), including database details, and database tables). +- Fixed a bug that caused incorrect results when comparisons of [tuples]({% link v23.1/scalar-expressions.md %}#tuple-constructors) were done using the `ANY` [operator]({% link v23.1/functions-and-operators.md %}#operators). For example, an expression like (x, y) = ANY (SELECT a, b FROM t WHERE ...) could return `true` instead of the correct result of `NULL` when `x` and `y` were `NULL`, or `a` and `b` were `NULL`. This could only occur if the [subquery was correlated]({% link v23.1/subqueries.md %}#correlated-subqueries), i.e., it references columns from the outer part of the query. This bug was present since the [cost-based optimizer]({% link v23.1/cost-based-optimizer.md %}) was introduced in [v2.1]({% link releases/v2.1.md %}).

Miscellaneous

@@ -105,60 +105,3 @@ Release Date: March 20, 2023 This release includes 245 merged PRs by 65 authors. - -[#94778]: https://github.com/cockroachdb/cockroach/pull/94778 -[#95449]: https://github.com/cockroachdb/cockroach/pull/95449 -[#96449]: https://github.com/cockroachdb/cockroach/pull/96449 -[#96756]: https://github.com/cockroachdb/cockroach/pull/96756 -[#97138]: https://github.com/cockroachdb/cockroach/pull/97138 -[#97140]: https://github.com/cockroachdb/cockroach/pull/97140 -[#97409]: https://github.com/cockroachdb/cockroach/pull/97409 -[#97521]: https://github.com/cockroachdb/cockroach/pull/97521 -[#97569]: https://github.com/cockroachdb/cockroach/pull/97569 -[#97587]: https://github.com/cockroachdb/cockroach/pull/97587 -[#97666]: https://github.com/cockroachdb/cockroach/pull/97666 -[#97805]: https://github.com/cockroachdb/cockroach/pull/97805 -[#97826]: https://github.com/cockroachdb/cockroach/pull/97826 -[#97827]: https://github.com/cockroachdb/cockroach/pull/97827 -[#97895]: https://github.com/cockroachdb/cockroach/pull/97895 -[#97948]: https://github.com/cockroachdb/cockroach/pull/97948 -[#97991]: https://github.com/cockroachdb/cockroach/pull/97991 -[#97995]: https://github.com/cockroachdb/cockroach/pull/97995 -[#98000]: https://github.com/cockroachdb/cockroach/pull/98000 -[#98035]: https://github.com/cockroachdb/cockroach/pull/98035 -[#98042]: https://github.com/cockroachdb/cockroach/pull/98042 -[#98044]: https://github.com/cockroachdb/cockroach/pull/98044 -[#98053]: https://github.com/cockroachdb/cockroach/pull/98053 -[#98060]: https://github.com/cockroachdb/cockroach/pull/98060 -[#98092]: https://github.com/cockroachdb/cockroach/pull/98092 -[#98120]: https://github.com/cockroachdb/cockroach/pull/98120 -[#98135]: https://github.com/cockroachdb/cockroach/pull/98135 -[#98142]: https://github.com/cockroachdb/cockroach/pull/98142 -[#98175]: https://github.com/cockroachdb/cockroach/pull/98175 -[#98186]: https://github.com/cockroachdb/cockroach/pull/98186 -[#98187]: https://github.com/cockroachdb/cockroach/pull/98187 -[#98194]: https://github.com/cockroachdb/cockroach/pull/98194 -[#98217]: https://github.com/cockroachdb/cockroach/pull/98217 -[#98222]: https://github.com/cockroachdb/cockroach/pull/98222 -[#98241]: https://github.com/cockroachdb/cockroach/pull/98241 -[#98249]: https://github.com/cockroachdb/cockroach/pull/98249 -[#98250]: https://github.com/cockroachdb/cockroach/pull/98250 -[#98254]: https://github.com/cockroachdb/cockroach/pull/98254 -[#98261]: https://github.com/cockroachdb/cockroach/pull/98261 -[#98262]: https://github.com/cockroachdb/cockroach/pull/98262 -[#98270]: https://github.com/cockroachdb/cockroach/pull/98270 -[#98302]: https://github.com/cockroachdb/cockroach/pull/98302 -[#98307]: https://github.com/cockroachdb/cockroach/pull/98307 -[#98312]: https://github.com/cockroachdb/cockroach/pull/98312 -[#98338]: https://github.com/cockroachdb/cockroach/pull/98338 -[#98354]: https://github.com/cockroachdb/cockroach/pull/98354 -[#98370]: https://github.com/cockroachdb/cockroach/pull/98370 -[#98390]: https://github.com/cockroachdb/cockroach/pull/98390 -[#98403]: https://github.com/cockroachdb/cockroach/pull/98403 -[#98422]: https://github.com/cockroachdb/cockroach/pull/98422 -[#98445]: https://github.com/cockroachdb/cockroach/pull/98445 -[#98535]: https://github.com/cockroachdb/cockroach/pull/98535 -[#98537]: https://github.com/cockroachdb/cockroach/pull/98537 -[#98543]: https://github.com/cockroachdb/cockroach/pull/98543 -[#98616]: https://github.com/cockroachdb/cockroach/pull/98616 -[#98700]: https://github.com/cockroachdb/cockroach/pull/98700 diff --git a/src/current/_includes/releases/v23.1/v23.1.0-alpha.8.md b/src/current/_includes/releases/v23.1/v23.1.0-alpha.8.md index eda36313d00..ddccf7f2140 100644 --- a/src/current/_includes/releases/v23.1/v23.1.0-alpha.8.md +++ b/src/current/_includes/releases/v23.1/v23.1.0-alpha.8.md @@ -6,72 +6,72 @@ Release Date: March 27, 2023

Security updates

-- Previously, users could gain unauthorized access to [statement diagnostic bundles]({% link v23.1/ui-statements-page.md %}#diagnostics) they did not create if they requested the bundle through an HTTP request to `/_admin/v1/stmtbundle/` and correctly guessed its (non-secret) `ID`. This change ensures that only authorized SQL users can request statement diagnostic bundles. [#99051][#99051] +- Previously, users could gain unauthorized access to [statement diagnostic bundles]({% link v23.1/ui-statements-page.md %}#diagnostics) they did not create if they requested the bundle through an HTTP request to `/_admin/v1/stmtbundle/` and correctly guessed its (non-secret) `ID`. This change ensures that only authorized SQL users can request statement diagnostic bundles.

General changes

-- Increased the specificity of log messages to help troubleshoot [DB Console SSO]({% link v23.1/sso-db-console.md %}) issues. [#98522][#98522] +- Increased the specificity of log messages to help troubleshoot [DB Console SSO]({% link v23.1/sso-db-console.md %}) issues.

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

-- The MuxRangefeed client, which is enabled with the `changefeed.mux_rangefeed.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}), is now more efficient when running against large-scale workloads. [#97957][#97957] -- The `server.oidc_authentication.claim_json_key` [cluster setting]({% link v23.1/cluster-settings.md %}) for DB Console SSO now accepts list-valued token claims. [#98522][#98522] -- Added the `WITH` key_column option to override the message metadata key for [changefeeds]({% link v23.1/changefeed-examples.md %}). This changes the key hashed to determine Kafka partitions. It does not affect the output of `key_in_value` or the domain of the per-key ordering guarantee. [#98806][#98806] -- The [Node Map]({% link v23.1/ui-cluster-overview-page.md %}#node-map) now shows normalized CPU usage. [#98225][#98225] +- The MuxRangefeed client, which is enabled with the `changefeed.mux_rangefeed.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}), is now more efficient when running against large-scale workloads. +- The `server.oidc_authentication.claim_json_key` [cluster setting]({% link v23.1/cluster-settings.md %}) for DB Console SSO now accepts list-valued token claims. +- Added the `WITH` key_column option to override the message metadata key for [changefeeds]({% link v23.1/changefeed-examples.md %}). This changes the key hashed to determine Kafka partitions. It does not affect the output of `key_in_value` or the domain of the per-key ordering guarantee. +- The [Node Map]({% link v23.1/ui-cluster-overview-page.md %}#node-map) now shows normalized CPU usage.

SQL language changes

-- Fixed a bug where the check constraint on an `OID` type column results in a panic in the legacy schema changer. [#98800][#98800] -- Added a new `WITH REDACT` option to the following statements: [`SHOW CREATE`]({% link v23.1/show-create.md %}), [`SHOW CREATE TABLE`]({% link v23.1/show-create.md %}#show-the-create-table-statement-for-a-table), and [`SHOW CREATE VIEW`]({% link v23.1/show-create.md %}#show-the-create-view-statement-for-a-view) which replaces constants and literals in the printed `CREATE` statement with the redacted marker, `‹×›`. [#98251][#98251] -- Added support for the `REDACT` flag to the following variants of [`EXPLAIN`]({% link v23.1/explain.md %}): `EXPLAIN (OPT)`, `EXPLAIN (OPT, CATALOG)`, `EXPLAIN (OPT, MEMO)`, `EXPLAIN (OPT, TYPES)`, and `EXPLAIN (OPT, VERBOSE)`. These `EXPLAIN` statements will have constants, literal values, parameter values, and any other user data redacted in the output. [#97549][#97549] -- Disallowed the [`RESTORE`]({% link v23.1/restore.md %}) of backups taken on a cluster version older than the minimum binary version the current cluster can interoperate with. This is described in an updated version of the policy outlined in ["Restoring Backups Across Versions"]({% link v23.1/restoring-backups-across-versions.md %}). [#98597][#98597] -- Bulk [`COPY FROM`]({% link v23.1/copy.md %}) statements are now processed with a vectorized insert and can be anywhere from 0.5x to 5x faster. Typical hardware and schemas should see a 2x improvement. Vectorized inserts are only used for `COPY` statements and are not yet applied to regular inserts. Both the `vectorize` and `copy_fast_path_enabled` session variables can be used to disable this feature. [#98605][#98605] -- Added [stemming and stopword-eliminating](https://www.cockroachlabs.com/blog/full-text-indexing-search/) text search configurations for English, Danish, Dutch, Finnish, French, German, Hungarian, Italian, Norwegian, Portuguese, Russian, Spanish, Swedish, and Turkish. [#97677][#97677] -- Added the `system.statement_activity` and `system.transaction_activity` tables. These tables are used to populate the [SQL Activity]({% link v23.1/ui-statements-page.md %}) pages, and contain the top N statements and transactions based on different key columns. [#99179][#99179] -- Added helper text for [`UPDATE`]({% link v23.1/update.md %}) to include `FROM `. [#99301][#99301] -- Added the `default_text_search_config` variable for compatibility with single-argument variants to the following text search functions: `to_tsvector`, `to_tsquery`, `phraseto_tsquery`, and `plainto_tsquery`, which use the value of `default_text_search_config` instead of expecting one to be included as in the two-argument variants. The default value of this setting is `english`. [#99323][#99323] -- Added the `ts_rank` function for ranking text search query results. [#99323][#99323] -- Renamed the `coordinator_locality` option in `BACKUP` to [`EXECUTION LOCALITY`]({% link v23.1/take-locality-restricted-backups.md %}). This option allows the user to control the nodes involved in the execution of a backup job, including the processing of row data and job coordination. For example, defining an execution locality for a backup job could reduce latency when a cluster is running heavy workloads and has a frequent backup schedule. [#99176][#99176] +- Fixed a bug where the check constraint on an `OID` type column results in a panic in the legacy schema changer. +- Added a new `WITH REDACT` option to the following statements: [`SHOW CREATE`]({% link v23.1/show-create.md %}), [`SHOW CREATE TABLE`]({% link v23.1/show-create.md %}#show-the-create-table-statement-for-a-table), and [`SHOW CREATE VIEW`]({% link v23.1/show-create.md %}#show-the-create-view-statement-for-a-view) which replaces constants and literals in the printed `CREATE` statement with the redacted marker, `‹×›`. +- Added support for the `REDACT` flag to the following variants of [`EXPLAIN`]({% link v23.1/explain.md %}): `EXPLAIN (OPT)`, `EXPLAIN (OPT, CATALOG)`, `EXPLAIN (OPT, MEMO)`, `EXPLAIN (OPT, TYPES)`, and `EXPLAIN (OPT, VERBOSE)`. These `EXPLAIN` statements will have constants, literal values, parameter values, and any other user data redacted in the output. +- Disallowed the [`RESTORE`]({% link v23.1/restore.md %}) of backups taken on a cluster version older than the minimum binary version the current cluster can interoperate with. This is described in an updated version of the policy outlined in ["Restoring Backups Across Versions"]({% link v23.1/restoring-backups-across-versions.md %}). +- Bulk [`COPY FROM`]({% link v23.1/copy.md %}) statements are now processed with a vectorized insert and can be anywhere from 0.5x to 5x faster. Typical hardware and schemas should see a 2x improvement. Vectorized inserts are only used for `COPY` statements and are not yet applied to regular inserts. Both the `vectorize` and `copy_fast_path_enabled` session variables can be used to disable this feature. +- Added [stemming and stopword-eliminating](https://www.cockroachlabs.com/blog/full-text-indexing-search/) text search configurations for English, Danish, Dutch, Finnish, French, German, Hungarian, Italian, Norwegian, Portuguese, Russian, Spanish, Swedish, and Turkish. +- Added the `system.statement_activity` and `system.transaction_activity` tables. These tables are used to populate the [SQL Activity]({% link v23.1/ui-statements-page.md %}) pages, and contain the top N statements and transactions based on different key columns. +- Added helper text for [`UPDATE`]({% link v23.1/update.md %}) to include `FROM `. +- Added the `default_text_search_config` variable for compatibility with single-argument variants to the following text search functions: `to_tsvector`, `to_tsquery`, `phraseto_tsquery`, and `plainto_tsquery`, which use the value of `default_text_search_config` instead of expecting one to be included as in the two-argument variants. The default value of this setting is `english`. +- Added the `ts_rank` function for ranking text search query results. +- Renamed the `coordinator_locality` option in `BACKUP` to [`EXECUTION LOCALITY`]({% link v23.1/take-locality-restricted-backups.md %}). This option allows the user to control the nodes involved in the execution of a backup job, including the processing of row data and job coordination. For example, defining an execution locality for a backup job could reduce latency when a cluster is running heavy workloads and has a frequent backup schedule.

Operational changes

-- Checkpoint directories that can be created in the rare event of range inconsistency are now clearly indicated as `pending` until they are fully populated. This helps operators distinguish valid checkpoints from corrupted ones. [#99119][#99119] -- [Prometheus]({% link v23.1/monitor-cockroachdb-with-prometheus.md %}) metrics available at the `_status/vars` path now contain a `node_id` label that identifies the node they were scraped from. [#99235][#99235] +- Checkpoint directories that can be created in the rare event of range inconsistency are now clearly indicated as `pending` until they are fully populated. This helps operators distinguish valid checkpoints from corrupted ones. +- [Prometheus]({% link v23.1/monitor-cockroachdb-with-prometheus.md %}) metrics available at the `_status/vars` path now contain a `node_id` label that identifies the node they were scraped from.

DB Console changes

-- The [Statement & Transaction Fingerprints]({% link v23.1/ui-statements-page.md %}#statement-fingerprint-page) pages no longer poll data, to simplify the user experience and reduce any performance impact. [#98331][#98331] -- Data on the [Statement Fingerprint Details]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-view) page no longer updates automatically every 5mins. [#99298][#99298] -- Updated the Jobs table column name from "Last Modified Time" to "Last Execution Time". [#99021][#99021] -- On the [SQL Activity Fingerprints]({% link v23.1/ui-overview.md %}#sql-activity) pages, users will not see stats that have not yet been flushed to disk. [#98815][#98815] -- Users can now request `top-k statements by % runtime` on the SQL Activity Fingerprints pages. [#98815][#98815] -- Added Search Criteria to the [Statements]({% link v23.1/ui-statements-page.md %}) and [Transactions]({% link v23.1/ui-transactions-page.md %}) pages, and updated the UX with improvements. [#98815][#98815] -- Added badges for each selected filter on the [SQL Activity]({% link v23.1/ui-overview.md %}#sql-activity) and [Insights]({% link v23.1/ui-insights-page.md %}) pages. [#98988][#98988] -- The default request sort for the [Statement Fingerprints Overview]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-view) page is now `% of All Runtime`. [#99298][#99298] -- Fixed a bug where the table's `CREATE` statement would not display correctly on the [Table Details]({% link v23.1/ui-databases-page.md %}#table-details) page. [#99434][#99434] -- Added an assertion on the KV side to prevent other existing or future attempts of LeafTxn issuing locking requests. This ensures the KV API is used as agreed upon and can be helpful in debugging latency issues caused by holding locks. [#99412][#99412] +- The [Statement & Transaction Fingerprints]({% link v23.1/ui-statements-page.md %}#statement-fingerprint-page) pages no longer poll data, to simplify the user experience and reduce any performance impact. +- Data on the [Statement Fingerprint Details]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-view) page no longer updates automatically every 5mins. +- Updated the Jobs table column name from "Last Modified Time" to "Last Execution Time". +- On the [SQL Activity Fingerprints]({% link v23.1/ui-overview.md %}#sql-activity) pages, users will not see stats that have not yet been flushed to disk. +- Users can now request `top-k statements by % runtime` on the SQL Activity Fingerprints pages. +- Added Search Criteria to the [Statements]({% link v23.1/ui-statements-page.md %}) and [Transactions]({% link v23.1/ui-transactions-page.md %}) pages, and updated the UX with improvements. +- Added badges for each selected filter on the [SQL Activity]({% link v23.1/ui-overview.md %}#sql-activity) and [Insights]({% link v23.1/ui-insights-page.md %}) pages. +- The default request sort for the [Statement Fingerprints Overview]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-view) page is now `% of All Runtime`. +- Fixed a bug where the table's `CREATE` statement would not display correctly on the [Table Details]({% link v23.1/ui-databases-page.md %}#table-details) page. +- Added an assertion on the KV side to prevent other existing or future attempts of LeafTxn issuing locking requests. This ensures the KV API is used as agreed upon and can be helpful in debugging latency issues caused by holding locks.

Bug fixes

-- Fixed a rare panic in `upstream etcd-io/raft` when a message appends race with log compaction. [#98721][#98721] -- In the DB Console Stats pages, issuing a new request for stats while one is pending is now allowed and will replace the pending request. [#98331][#98331] -- Fixed a bug in which [`SET avoid_buffering = true`]({% link v23.1/set-vars.md %}) could produce a crash on subsequent operations. [#98290][#98290] -- Fixed a bug where using [`ST_Transform`](https://www.cockroachlabs.com/docs/v23.1/functions-and-operators#st_transform) could result in a memory leak. [#98740][#98740] -- Fixed internal errors in [`SHOW JOBS`]({% link v23.1/show-jobs.md %}) statements that have a `WITH` clause. [#98389][#98389] -- Previously, the [`ADD COLUMN ... DEFAULT cluster_logical_timestamp()`]({% link v23.1/alter-table.md %}#add-column) statement would crash the node and leave the table in a corrupt state. The root cause is a `nil` pointer dereference. The bug is now fixed by returning an unimplemented error and hence disallowing using the [builtin function]({% link v23.1/functions-and-operators.md %}#array-functions) as the default value when backfilling. [#98696][#98696] -- Fixed a bug that could prevent a cached query with a user-defined type reference from being invalidated even after a schema change that should prevent the type from being resolved. [#96045][#96045] -- Fixed a bug that could prevent a cached query from being invalidated when a [UDF]({% link v23.1/user-defined-functions.md %}) referenced by that query was altered or dropped. [#96045][#96045] -- Fixed the replacement of in-flight requests for `KeyedCachedDataReducer`s to prevent permanent loading on requests stuck on an `inFlight` status. [#99095][#99095] -- Improved the reliability of latency data in v23.1 clusters. [#99294][#99294] +- Fixed a rare panic in `upstream etcd-io/raft` when a message appends race with log compaction. +- In the DB Console Stats pages, issuing a new request for stats while one is pending is now allowed and will replace the pending request. +- Fixed a bug in which [`SET avoid_buffering = true`]({% link v23.1/set-vars.md %}) could produce a crash on subsequent operations. +- Fixed a bug where using [`ST_Transform`](https://www.cockroachlabs.com/docs/v23.1/functions-and-operators#st_transform) could result in a memory leak. +- Fixed internal errors in [`SHOW JOBS`]({% link v23.1/show-jobs.md %}) statements that have a `WITH` clause. +- Previously, the [`ADD COLUMN ... DEFAULT cluster_logical_timestamp()`]({% link v23.1/alter-table.md %}#add-column) statement would crash the node and leave the table in a corrupt state. The root cause is a `nil` pointer dereference. The bug is now fixed by returning an unimplemented error and hence disallowing using the [builtin function]({% link v23.1/functions-and-operators.md %}#array-functions) as the default value when backfilling. +- Fixed a bug that could prevent a cached query with a user-defined type reference from being invalidated even after a schema change that should prevent the type from being resolved. +- Fixed a bug that could prevent a cached query from being invalidated when a [UDF]({% link v23.1/user-defined-functions.md %}) referenced by that query was altered or dropped. +- Fixed the replacement of in-flight requests for `KeyedCachedDataReducer`s to prevent permanent loading on requests stuck on an `inFlight` status. +- Improved the reliability of latency data in v23.1 clusters.

Performance improvements

-- The Raft tick interval has been increased from `200ms` to `500ms` in order to reduce per-replica CPU costs, and can now be adjusted via `COCKROACH_RAFT_TICK_INTERVAL`. Dependant parameters such as the Raft election timeout (`COCKROACH_RAFT_ELECTION_TIMEOUT_TICKS`), reproposal timeout (`COCKROACH_RAFT_REPROPOSAL_TIMEOUT_TICKS`), and heartbeat interval (`COCKROACH_RAFT_HEARTBEAT_INTERVAL_TICKS`) have been adjusted such that their wall-time value remains the same. [#98584][#98584] -- The Raft scheduler is now sharded to relieve contention during range Raft processing, which can significantly improve performance at high CPU core counts. [#98854][#98854] +- The Raft tick interval has been increased from `200ms` to `500ms` in order to reduce per-replica CPU costs, and can now be adjusted via `COCKROACH_RAFT_TICK_INTERVAL`. Dependant parameters such as the Raft election timeout (`COCKROACH_RAFT_ELECTION_TIMEOUT_TICKS`), reproposal timeout (`COCKROACH_RAFT_REPROPOSAL_TIMEOUT_TICKS`), and heartbeat interval (`COCKROACH_RAFT_HEARTBEAT_INTERVAL_TICKS`) have been adjusted such that their wall-time value remains the same. +- The Raft scheduler is now sharded to relieve contention during range Raft processing, which can significantly improve performance at high CPU core counts.

Build changes

-- Running `./dev ui test` (or `bazel test //pkg/ui/workspaces/db-console:jest`) now uses less memory. [#98880][#98880] +- Running `./dev ui test` (or `bazel test //pkg/ui/workspaces/db-console:jest`) now uses less memory.
@@ -83,46 +83,3 @@ We would like to thank the following contributors from the CockroachDB community - Eric.Yang
- -[#96045]: https://github.com/cockroachdb/cockroach/pull/96045 -[#97549]: https://github.com/cockroachdb/cockroach/pull/97549 -[#97677]: https://github.com/cockroachdb/cockroach/pull/97677 -[#97957]: https://github.com/cockroachdb/cockroach/pull/97957 -[#98077]: https://github.com/cockroachdb/cockroach/pull/98077 -[#98225]: https://github.com/cockroachdb/cockroach/pull/98225 -[#98251]: https://github.com/cockroachdb/cockroach/pull/98251 -[#98290]: https://github.com/cockroachdb/cockroach/pull/98290 -[#98331]: https://github.com/cockroachdb/cockroach/pull/98331 -[#98353]: https://github.com/cockroachdb/cockroach/pull/98353 -[#98389]: https://github.com/cockroachdb/cockroach/pull/98389 -[#98522]: https://github.com/cockroachdb/cockroach/pull/98522 -[#98584]: https://github.com/cockroachdb/cockroach/pull/98584 -[#98597]: https://github.com/cockroachdb/cockroach/pull/98597 -[#98605]: https://github.com/cockroachdb/cockroach/pull/98605 -[#98696]: https://github.com/cockroachdb/cockroach/pull/98696 -[#98721]: https://github.com/cockroachdb/cockroach/pull/98721 -[#98740]: https://github.com/cockroachdb/cockroach/pull/98740 -[#98758]: https://github.com/cockroachdb/cockroach/pull/98758 -[#98800]: https://github.com/cockroachdb/cockroach/pull/98800 -[#98806]: https://github.com/cockroachdb/cockroach/pull/98806 -[#98815]: https://github.com/cockroachdb/cockroach/pull/98815 -[#98826]: https://github.com/cockroachdb/cockroach/pull/98826 -[#98844]: https://github.com/cockroachdb/cockroach/pull/98844 -[#98854]: https://github.com/cockroachdb/cockroach/pull/98854 -[#98880]: https://github.com/cockroachdb/cockroach/pull/98880 -[#98988]: https://github.com/cockroachdb/cockroach/pull/98988 -[#99021]: https://github.com/cockroachdb/cockroach/pull/99021 -[#99050]: https://github.com/cockroachdb/cockroach/pull/99050 -[#99051]: https://github.com/cockroachdb/cockroach/pull/99051 -[#99052]: https://github.com/cockroachdb/cockroach/pull/99052 -[#99095]: https://github.com/cockroachdb/cockroach/pull/99095 -[#99119]: https://github.com/cockroachdb/cockroach/pull/99119 -[#99176]: https://github.com/cockroachdb/cockroach/pull/99176 -[#99179]: https://github.com/cockroachdb/cockroach/pull/99179 -[#99235]: https://github.com/cockroachdb/cockroach/pull/99235 -[#99294]: https://github.com/cockroachdb/cockroach/pull/99294 -[#99298]: https://github.com/cockroachdb/cockroach/pull/99298 -[#99301]: https://github.com/cockroachdb/cockroach/pull/99301 -[#99323]: https://github.com/cockroachdb/cockroach/pull/99323 -[#99412]: https://github.com/cockroachdb/cockroach/pull/99412 -[#99434]: https://github.com/cockroachdb/cockroach/pull/99434 diff --git a/src/current/_includes/releases/v23.1/v23.1.0-alpha.9.md b/src/current/_includes/releases/v23.1/v23.1.0-alpha.9.md index 16f6d54e4ed..9b51ed8048d 100644 --- a/src/current/_includes/releases/v23.1/v23.1.0-alpha.9.md +++ b/src/current/_includes/releases/v23.1/v23.1.0-alpha.9.md @@ -6,24 +6,24 @@ Release Date: April 4, 2023

Backward-incompatible changes

-- The output of the [`SHOW RANGES`]({% link v23.1/show-ranges.md %}) command for the `crdb_internal.ranges` and `crdb_internal.ranges_no_leases` tables has been updated, and the previous output is deprecated. To enable the new command output, set the `sql.show_ranges_deprecated_behavior.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}) to `false`. The new output will become default in v23.2. [#99618][#99618] +- The output of the [`SHOW RANGES`]({% link v23.1/show-ranges.md %}) command for the `crdb_internal.ranges` and `crdb_internal.ranges_no_leases` tables has been updated, and the previous output is deprecated. To enable the new command output, set the `sql.show_ranges_deprecated_behavior.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}) to `false`. The new output will become default in v23.2.

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

-- The [`CREATE CHANGEFEED`]({% link v23.1/create-changefeed.md %}) statement now allows you to limit the nodes that can execute a changefeed by including a locality filter in the `WITH` clause. A node can execute the changefeed only if it was started with a matching [`--locality`](https://cockroachlabs.com/docs/v23.1/cockroach-start#locality) flag. Replace `{locality}` with a comma-separated list of key-value pairs. [#99935][#99935] +- The [`CREATE CHANGEFEED`]({% link v23.1/create-changefeed.md %}) statement now allows you to limit the nodes that can execute a changefeed by including a locality filter in the `WITH` clause. A node can execute the changefeed only if it was started with a matching [`--locality`](https://cockroachlabs.com/docs/v23.1/cockroach-start#locality) flag. Replace `{locality}` with a comma-separated list of key-value pairs.

SQL language changes

-- The new `prepared_statements_cache_size` [session setting](https://www.cockroachlabs.com/docs/v22.2/set-vars) helps to prevent [prepared statement]({% link v23.1/savepoint.md %}#savepoints-and-prepared-statements) leaks by automatically deallocating the least-recently-used prepared statements when the cache reaches a given size. [#99254][#99254] +- The new `prepared_statements_cache_size` [session setting](https://www.cockroachlabs.com/docs/v22.2/set-vars) helps to prevent [prepared statement]({% link v23.1/savepoint.md %}#savepoints-and-prepared-statements) leaks by automatically deallocating the least-recently-used prepared statements when the cache reaches a given size.

Operational changes

-- The new `COCKROACH_DISABLE_NODE_AND_TENANT_METRIC_LABELS` [environment variable]({% link v23.1/cockroach-commands.md %}#environment-variables) allows you to suppress metrics from a cluster's [Prometheus endpoint]({% link v23.1/monitoring-and-alerting.md %}#prometheus-endpoint) if they conflict with labels that are applied by external tools that collect metrics from the endpoint. Set the environment variable to a comma-separated list of key-value pairs. [#99820][#99820] +- The new `COCKROACH_DISABLE_NODE_AND_TENANT_METRIC_LABELS` [environment variable]({% link v23.1/cockroach-commands.md %}#environment-variables) allows you to suppress metrics from a cluster's [Prometheus endpoint]({% link v23.1/monitoring-and-alerting.md %}#prometheus-endpoint) if they conflict with labels that are applied by external tools that collect metrics from the endpoint. Set the environment variable to a comma-separated list of key-value pairs.

DB Console changes

-- The [**Index Details**]({% link v23.1/ui-databases-page.md %}#index-details) section of the **Databases** page now displays the list of most-frequently-used index fingerprints to all users, rather than only to `admin` users, because the page now queries a view rather than a system table directly. [#99485][#99485] -- When you search or filter within the [**Statements** page]({% link v23.1/ui-statements-page.md %}) or [**Transactions** page]({% link v23.1/ui-transactions-page.md %}), if you interactively sort the results using a column that was not part of the original query, a warning displays if you are viewing only a subset of the results, along with a suggestion to update the original query. [#99795][#99795] +- The [**Index Details**]({% link v23.1/ui-databases-page.md %}#index-details) section of the **Databases** page now displays the list of most-frequently-used index fingerprints to all users, rather than only to `admin` users, because the page now queries a view rather than a system table directly. +- When you search or filter within the [**Statements** page]({% link v23.1/ui-statements-page.md %}) or [**Transactions** page]({% link v23.1/ui-transactions-page.md %}), if you interactively sort the results using a column that was not part of the original query, a warning displays if you are viewing only a subset of the results, along with a suggestion to update the original query.

Miscellaneous

@@ -36,19 +36,19 @@ Release Date: April 4, 2023 - `total_estimated_execution_time` - `p99_latency` - [#99417][#99417] +

Bug fixes

-- Fixed pagination bugs when searching or filtering within the [**Databases** page]({% link v23.1/ui-databases-page.md %}) or viewing the details of a database. [#99513][#99513] -- Fixed a rare bug introduced in v22.2.0 that could cause a node to crash with an `attempting to append refresh spans after the tracked timestamp has moved forward` error when querying virtual tables in the [`crdb_internal`]({% link v23.1/crdb-internal.md %}) or [`pg_catalog`]({% link v23.1/pg-catalog.md %}) system catalogs. If you are experiencing this bug, set the `sql.distsql.use_streamer.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}) to `false` before upgrading a cluster to v23.1. [#99443][#99443] -- Fixed a bug that could erroneously cause multiple garbage-collection jobs to be created when executing a [`DROP SCHEMA ... CASCADE`]({% link v23.1/drop-schema.md %}) command, one job for each table and one for the cascaded `DROP` itself. [#99706][#99706] -- Fixed a bug in the [**Insights** page]({% link v23.1/ui-insights-page.md %}#schema-insights-tab) that prevented a recommendation to drop an index from being executed if the index's name contained a space. [#100023][#100023] -- Fixed a rare bug that prevented the garbage-collection job for a [`TRUNCATE`]({% link v23.1/truncate.md %}) command from successfully finishing if the table descriptor had already been garbage-collected. The garbage-collection job now succeeds in this situation. [#100009][#100009] -- Fixed a rare bug that could cause a query of a virtual table in the [`crdb_internal`]({% link v23.1/crdb-internal.md %}) or [`pg_catalog`]({% link v23.1/pg-catalog.md %}) system catalog to hang indefinitely if the query returned an error. [#99969][#99969] -- Fixed a bug introduced prior to v21.2 that could cause the SQL gateway node to crash if you [created a view]({% link v23.1/create-view.md %}) with a circular or self-referencing dependencies. This situation no longer crashes the node, and a `cyclic view dependency for relation` error is now logged. [#100159][#100159] -- Several rare bugs have been fixed that could cause corruption in the existing primary index when a rollback occurs concurrent to adding or removing a [column family]({% link v23.1/column-families.md %}). This could lead to subsequent unavailability of the table. [#100030][#100030] -- Fixed a bug that could cause a node to crash with an out-of-memory (OOM) exception when viewing details in the [**Statements** page]({% link v23.1/ui-statements-page.md %}) or [**Transactions** page]({% link v23.1/ui-transactions-page.md %}). [#99550][#99550] +- Fixed pagination bugs when searching or filtering within the [**Databases** page]({% link v23.1/ui-databases-page.md %}) or viewing the details of a database. +- Fixed a rare bug introduced in v22.2.0 that could cause a node to crash with an `attempting to append refresh spans after the tracked timestamp has moved forward` error when querying virtual tables in the [`crdb_internal`]({% link v23.1/crdb-internal.md %}) or [`pg_catalog`]({% link v23.1/pg-catalog.md %}) system catalogs. If you are experiencing this bug, set the `sql.distsql.use_streamer.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}) to `false` before upgrading a cluster to v23.1. +- Fixed a bug that could erroneously cause multiple garbage-collection jobs to be created when executing a [`DROP SCHEMA ... CASCADE`]({% link v23.1/drop-schema.md %}) command, one job for each table and one for the cascaded `DROP` itself. +- Fixed a bug in the [**Insights** page]({% link v23.1/ui-insights-page.md %}#schema-insights-tab) that prevented a recommendation to drop an index from being executed if the index's name contained a space. +- Fixed a rare bug that prevented the garbage-collection job for a [`TRUNCATE`]({% link v23.1/truncate.md %}) command from successfully finishing if the table descriptor had already been garbage-collected. The garbage-collection job now succeeds in this situation. +- Fixed a rare bug that could cause a query of a virtual table in the [`crdb_internal`]({% link v23.1/crdb-internal.md %}) or [`pg_catalog`]({% link v23.1/pg-catalog.md %}) system catalog to hang indefinitely if the query returned an error. +- Fixed a bug introduced prior to v21.2 that could cause the SQL gateway node to crash if you [created a view]({% link v23.1/create-view.md %}) with a circular or self-referencing dependencies. This situation no longer crashes the node, and a `cyclic view dependency for relation` error is now logged. +- Several rare bugs have been fixed that could cause corruption in the existing primary index when a rollback occurs concurrent to adding or removing a [column family]({% link v23.1/column-families.md %}). This could lead to subsequent unavailability of the table. +- Fixed a bug that could cause a node to crash with an out-of-memory (OOM) exception when viewing details in the [**Statements** page]({% link v23.1/ui-statements-page.md %}) or [**Transactions** page]({% link v23.1/ui-transactions-page.md %}).
@@ -57,24 +57,3 @@ Release Date: April 4, 2023 This release includes 75 merged PRs by 41 authors.
- -[#100009]: https://github.com/cockroachdb/cockroach/pull/100009 -[#100011]: https://github.com/cockroachdb/cockroach/pull/100011 -[#100023]: https://github.com/cockroachdb/cockroach/pull/100023 -[#100030]: https://github.com/cockroachdb/cockroach/pull/100030 -[#100159]: https://github.com/cockroachdb/cockroach/pull/100159 -[#99254]: https://github.com/cockroachdb/cockroach/pull/99254 -[#99398]: https://github.com/cockroachdb/cockroach/pull/99398 -[#99417]: https://github.com/cockroachdb/cockroach/pull/99417 -[#99443]: https://github.com/cockroachdb/cockroach/pull/99443 -[#99485]: https://github.com/cockroachdb/cockroach/pull/99485 -[#99513]: https://github.com/cockroachdb/cockroach/pull/99513 -[#99550]: https://github.com/cockroachdb/cockroach/pull/99550 -[#99618]: https://github.com/cockroachdb/cockroach/pull/99618 -[#99706]: https://github.com/cockroachdb/cockroach/pull/99706 -[#99795]: https://github.com/cockroachdb/cockroach/pull/99795 -[#99820]: https://github.com/cockroachdb/cockroach/pull/99820 -[#99935]: https://github.com/cockroachdb/cockroach/pull/99935 -[#99969]: https://github.com/cockroachdb/cockroach/pull/99969 -[2dc0229e5]: https://github.com/cockroachdb/cockroach/commit/2dc0229e5 -[ebdec3c98]: https://github.com/cockroachdb/cockroach/commit/ebdec3c98 diff --git a/src/current/_includes/releases/v23.1/v23.1.0-beta.1.md b/src/current/_includes/releases/v23.1/v23.1.0-beta.1.md index ab7a58dbe3b..af403b1f849 100644 --- a/src/current/_includes/releases/v23.1/v23.1.0-beta.1.md +++ b/src/current/_includes/releases/v23.1/v23.1.0-beta.1.md @@ -6,44 +6,44 @@ Release Date: April 13, 2023

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

-- The [Avro]({% link v23.1/changefeed-messages.md %}#avro) schema registry URI now allows an additional `timeout=T` query parameter, which allows you to change the default timeout for contacting the schema registry. [#99300][#99300] +- The [Avro]({% link v23.1/changefeed-messages.md %}#avro) schema registry URI now allows an additional `timeout=T` query parameter, which allows you to change the default timeout for contacting the schema registry.

SQL language changes

-- Changed the [GC TTL]({% link v23.1/configure-replication-zones.md %}#gc-ttlseconds) on the SQL Stats table to 1h on CockroachDB {{ site.data.products.dedicated }} and Self-Hosted clusters. This change is not applicable to CockroachDB {{ site.data.products.serverless }} clusters. [#100359][#100359] -- When there is no data persisted, show the in-memory data. [#100505][#100505] -- Added two new [cluster settings]({% link v23.1/cluster-settings.md %}) that enable users to change the number of histogram samples and buckets collected when building histograms as part of table statistics collection. While the default values should work for most cases, it may be beneficial to increase the number of samples and buckets for very large tables to avoid creating a histogram that misses important values: [#100662][#100662] +- Changed the [GC TTL]({% link v23.1/configure-replication-zones.md %}#gc-ttlseconds) on the SQL Stats table to 1h on CockroachDB {{ site.data.products.dedicated }} and Self-Hosted clusters. This change is not applicable to CockroachDB {{ site.data.products.serverless }} clusters. +- When there is no data persisted, show the in-memory data. +- Added two new [cluster settings]({% link v23.1/cluster-settings.md %}) that enable users to change the number of histogram samples and buckets collected when building histograms as part of table statistics collection. While the default values should work for most cases, it may be beneficial to increase the number of samples and buckets for very large tables to avoid creating a histogram that misses important values: - `sql.stats.histogram_samples.count` - `sql.stats.histogram_buckets.count` -- Added two new table storage parameters, `sql_stats_histogram_buckets_count` and `sql_stats_histogram_samples_count`. These parameters can be used to override the [cluster settings]({% link v23.1/cluster-settings.md %}) `sql.stats.histogram_buckets.count` and `sql.stats.histogram_samples.count` at the table level, allowing you to change the number of histogram samples and buckets collected when building histograms as part of table statistics collection. While the default values should work for most cases, it may be beneficial to increase the number of samples and buckets for very large tables to avoid creating a histogram that misses important values. [#100662][#100662] +- Added two new table storage parameters, `sql_stats_histogram_buckets_count` and `sql_stats_histogram_samples_count`. These parameters can be used to override the [cluster settings]({% link v23.1/cluster-settings.md %}) `sql.stats.histogram_buckets.count` and `sql.stats.histogram_samples.count` at the table level, allowing you to change the number of histogram samples and buckets collected when building histograms as part of table statistics collection. While the default values should work for most cases, it may be beneficial to increase the number of samples and buckets for very large tables to avoid creating a histogram that misses important values.

Operational changes

-- Introduced seven new timeseries [metrics]({% link v23.1/metrics.md %}) for better visibility into the behavior of storage engine iterators and their internals. [#100445][#100445] +- Introduced seven new timeseries [metrics]({% link v23.1/metrics.md %}) for better visibility into the behavior of storage engine iterators and their internals. - Added a new [metric]({% link v23.1/metrics.md %}) `range.snapshots.delegate.in-progress` and renamed two metrics: - `range.snapshot.delegate.successes` -> `range.snapshots.delegate.successes` - - `range.snapshot.delegate.failures` -> `range.snapshots.delegate.failures` [#100421][#100421] -- Added two new timeseries [metrics]({% link v23.1/metrics.md %}), providing some observability into the volume of keys preserved by open LSM snapshots: [#100878][#100878] + - `range.snapshot.delegate.failures` -> `range.snapshots.delegate.failures` +- Added two new timeseries [metrics]({% link v23.1/metrics.md %}), providing some observability into the volume of keys preserved by open LSM snapshots: - `storage.compactions.keys.pinned.count` - `storage.compactions.keys.pinned.bytes`

DB Console changes

-- Fixed an issue with properly rendering placeholders on the **Node Map** view for [insecure]({% link v23.1/start-a-local-cluster.md %}) clusters. [#100214][#100214] +- Fixed an issue with properly rendering placeholders on the **Node Map** view for [insecure]({% link v23.1/start-a-local-cluster.md %}) clusters.

Bug fixes

-- Fixed a bug which could cause [`SHOW CLUSTER SETTING version`]({% link v23.1/show-cluster-setting.md %}) to hang and return an opaque error while cluster finalization is ongoing. [#100259][#100259] -- Fixed a bug that could cause internal errors and corrupt partial indexes when deleting rows with the `DELETE FROM .. USING` syntax. This bug is only present in alpha versions of v23.1.0. [#100307][#100307] -- The [**Hot Ranges** page]({% link v23.1/ui-hot-ranges-page.md %}) DB Console page would show hot ranges by CPU and not QPS (queries per second), depending on the value of the `kv.allocator.load_based_rebalancing.objective` [cluster setting]({% link v23.1/cluster-settings.md %}) (default `cpu`). Now the page will always collect statistics based on QPS. [#100211][#100211] -- In rare cases involving overload and schema changes, users could sometimes, transiently, see errors of the form `deadline below read timestamp is nonsensical; txn has would have no chance to commit`. These errors carried and internal pgcode and could not be retried. This form of error is now classified as a retriable error and will be retried automatically either by the client or internally. [#100256][#100256] -- Fixed a bug in the declarative schema changer in v23.1 where unique without index can be incorrectly added in tables with duplicate values if it was added with a [`ALTER TABLE ... ADD/DROP COLUMN`]({% link v23.1/alter-table.md %}) in one `ALTER TABLE` statement. [#100535][#100535] -- Fixed an issue where the `enforce_home_region` [session setting]({% link v23.1/set-vars.md %}) did not prevent a locality-optimized anti-join from looking up rows in remote regions. This bug is only present in alpha versions of v23.1.0. [#100735][#100735] +- Fixed a bug which could cause [`SHOW CLUSTER SETTING version`]({% link v23.1/show-cluster-setting.md %}) to hang and return an opaque error while cluster finalization is ongoing. +- Fixed a bug that could cause internal errors and corrupt partial indexes when deleting rows with the `DELETE FROM .. USING` syntax. This bug is only present in alpha versions of v23.1.0. +- The [**Hot Ranges** page]({% link v23.1/ui-hot-ranges-page.md %}) DB Console page would show hot ranges by CPU and not QPS (queries per second), depending on the value of the `kv.allocator.load_based_rebalancing.objective` [cluster setting]({% link v23.1/cluster-settings.md %}) (default `cpu`). Now the page will always collect statistics based on QPS. +- In rare cases involving overload and schema changes, users could sometimes, transiently, see errors of the form `deadline below read timestamp is nonsensical; txn has would have no chance to commit`. These errors carried and internal pgcode and could not be retried. This form of error is now classified as a retriable error and will be retried automatically either by the client or internally. +- Fixed a bug in the declarative schema changer in v23.1 where unique without index can be incorrectly added in tables with duplicate values if it was added with a [`ALTER TABLE ... ADD/DROP COLUMN`]({% link v23.1/alter-table.md %}) in one `ALTER TABLE` statement. +- Fixed an issue where the `enforce_home_region` [session setting]({% link v23.1/set-vars.md %}) did not prevent a locality-optimized anti-join from looking up rows in remote regions. This bug is only present in alpha versions of v23.1.0.

Performance improvements

-- Audit logging should no longer incur extra latency when resolving table/view/sequence names. [#99548][#99548] -- The webhook sink is now able to handle a drastically higher maximum throughput by enabling the `changefeed.new_webhook_sink_enabled` [cluster setting]({% link v23.1/cluster-settings.md %}). [#100639][#100639] +- Audit logging should no longer incur extra latency when resolving table/view/sequence names. +- The webhook sink is now able to handle a drastically higher maximum throughput by enabling the `changefeed.new_webhook_sink_enabled` [cluster setting]({% link v23.1/cluster-settings.md %}).
@@ -52,29 +52,3 @@ Release Date: April 13, 2023 This release includes 116 merged PRs by 44 authors.
- -[#100162]: https://github.com/cockroachdb/cockroach/pull/100162 -[#100211]: https://github.com/cockroachdb/cockroach/pull/100211 -[#100214]: https://github.com/cockroachdb/cockroach/pull/100214 -[#100256]: https://github.com/cockroachdb/cockroach/pull/100256 -[#100259]: https://github.com/cockroachdb/cockroach/pull/100259 -[#100307]: https://github.com/cockroachdb/cockroach/pull/100307 -[#100359]: https://github.com/cockroachdb/cockroach/pull/100359 -[#100421]: https://github.com/cockroachdb/cockroach/pull/100421 -[#100424]: https://github.com/cockroachdb/cockroach/pull/100424 -[#100445]: https://github.com/cockroachdb/cockroach/pull/100445 -[#100505]: https://github.com/cockroachdb/cockroach/pull/100505 -[#100535]: https://github.com/cockroachdb/cockroach/pull/100535 -[#100604]: https://github.com/cockroachdb/cockroach/pull/100604 -[#100628]: https://github.com/cockroachdb/cockroach/pull/100628 -[#100639]: https://github.com/cockroachdb/cockroach/pull/100639 -[#100662]: https://github.com/cockroachdb/cockroach/pull/100662 -[#100720]: https://github.com/cockroachdb/cockroach/pull/100720 -[#100735]: https://github.com/cockroachdb/cockroach/pull/100735 -[#100878]: https://github.com/cockroachdb/cockroach/pull/100878 -[#99300]: https://github.com/cockroachdb/cockroach/pull/99300 -[#99548]: https://github.com/cockroachdb/cockroach/pull/99548 -[43306383f]: https://github.com/cockroachdb/cockroach/commit/43306383f -[4fd02898c]: https://github.com/cockroachdb/cockroach/commit/4fd02898c -[925e1600a]: https://github.com/cockroachdb/cockroach/commit/925e1600a -[f27e6b2eb]: https://github.com/cockroachdb/cockroach/commit/f27e6b2eb diff --git a/src/current/_includes/releases/v23.1/v23.1.0-beta.2.md b/src/current/_includes/releases/v23.1/v23.1.0-beta.2.md index 5cd2883fa1a..7303eb374a6 100644 --- a/src/current/_includes/releases/v23.1/v23.1.0-beta.2.md +++ b/src/current/_includes/releases/v23.1/v23.1.0-beta.2.md @@ -6,31 +6,31 @@ Release Date: April 17, 2023

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

-- [CDC queries]({% link v23.1/create-changefeed.md %}) now support wrapped envelope with diff (`envelope='wrapped', diff`). [#101391][#101391] +- [CDC queries]({% link v23.1/create-changefeed.md %}) now support wrapped envelope with diff (`envelope='wrapped', diff`).

SQL language changes

-- Added the [session variable]({% link v23.1/set-vars.md %}#supported-variables) `multiple_active_portals_enabled`. This setting is only for a [preview feature]({% link v23.1/cockroachdb-feature-availability.md %}). When set to `true`, it allows multiple portals to be open at the same time, with their execution interleaved with each other. In other words, these portals can be paused. The underlying statement for a pausable portal must be a read-only [`SELECT`]({% link v23.1/selection-queries.md %}) query without [sub-queries]({% link v23.1/subqueries.md %}) or postqueries (such as executed by [foreign key]({% link v23.1/foreign-key.md %}) checks), and such a portal is always executed with a [local query plan](https://www.cockroachlabs.com/docs/v23.1/architecture/sql-layer#distsql). [#101026][#101026] +- Added the [session variable]({% link v23.1/set-vars.md %}#supported-variables) `multiple_active_portals_enabled`. This setting is only for a [preview feature]({% link v23.1/cockroachdb-feature-availability.md %}). When set to `true`, it allows multiple portals to be open at the same time, with their execution interleaved with each other. In other words, these portals can be paused. The underlying statement for a pausable portal must be a read-only [`SELECT`]({% link v23.1/selection-queries.md %}) query without [sub-queries]({% link v23.1/subqueries.md %}) or postqueries (such as executed by [foreign key]({% link v23.1/foreign-key.md %}) checks), and such a portal is always executed with a [local query plan](https://www.cockroachlabs.com/docs/v23.1/architecture/sql-layer#distsql).

DB Console changes

-- Update sort label on *Search Criteria* to match the name on the table columns on the [Statements]({% link v23.1/ui-statements-page.md %}) and [Transactions]({% link v23.1/ui-transactions-page.md %}) pages. [#101126][#101126] -- By default, we now show the `Application Name` column in the fingerprints overview pages. [Statement fingerprints]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-view) and [Transaction fingerprints]({% link v23.1/ui-transactions-page.md %}#transaction-fingerprints-view) will be displayed per application on the overview pages rather than grouped into a single fingerprint ID. [#101235][#101235] -- When going from the Fingerprint Overview pages or the Insight Details pages to the Fingerprint Details page for [statements]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-view) or [transactions]({% link v23.1/ui-transactions-page.md %}#transaction-fingerprints-view), the details page will fetch data for the statement with the provided application name. For overview pages, this is the app name of the selected row. For insight details, it is the app of the execution that generated the insight. [#101235][#101235] +- Update sort label on *Search Criteria* to match the name on the table columns on the [Statements]({% link v23.1/ui-statements-page.md %}) and [Transactions]({% link v23.1/ui-transactions-page.md %}) pages. +- By default, we now show the `Application Name` column in the fingerprints overview pages. [Statement fingerprints]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-view) and [Transaction fingerprints]({% link v23.1/ui-transactions-page.md %}#transaction-fingerprints-view) will be displayed per application on the overview pages rather than grouped into a single fingerprint ID. +- When going from the Fingerprint Overview pages or the Insight Details pages to the Fingerprint Details page for [statements]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-view) or [transactions]({% link v23.1/ui-transactions-page.md %}#transaction-fingerprints-view), the details page will fetch data for the statement with the provided application name. For overview pages, this is the app name of the selected row. For insight details, it is the app of the execution that generated the insight.

Bug fixes

-- Fixed a bug so that the text search `@@` [operator]({% link v23.1/functions-and-operators.md %}) ("matches") can work with variable expressions. Fixed a bug where incorrect results were returned when one of the arguments was a [`TEXT`]({% link v23.1/string.md %}) expression and the other argument was a `TEXT` or `TSQuery` expression. [#100918][#100918] -- Fixed a bug where running [`DROP COLUMN ... CASCADE`]({% link v23.1/alter-table.md %}#drop-column) when that column is used in an [index]({% link v23.1/indexes.md %}) that includes other columns caused a panic. [#100856][#100856] -- Fixed a rare race condition on [node startup]({% link v23.1/cockroach-start.md %}) that could cause an `invalid memory address or nil pointer dereference` error. [#100626][#100626] -- Fixed a bug that was causing nodes running on Windows to crash on startup. This bug only existed in v23.1 alphas. [#101091][#101091] -- Fixed a rare condition that could allow a [transaction]({% link v23.1/transactions.md %}) to get stuck indefinitely waiting on a released row-level [lock](https://www.cockroachlabs.com/docs/v23.1/architecture/transaction-layer#concurrency-control) if the per-range lock count limit was exceeded while the transaction was waiting on another lock. [#100946][#100946] -- Fixed a rare internal error in the [optimizer]({% link v23.1/cost-based-optimizer.md %}) that has existed since before version v22.1, which could occur while enforcing orderings between SQL operators. [#101355][#101355] -- Fixed a bug so that the `crdb_internal.deserialize_session` internal function works properly with prepared statements that have more param type hints than params. Before this bugfix, deserializing a [session]({% link v23.1/show-sessions.md %}) containing a prepared statement with more parameter type hints than parameters would panic. For example: `PREPARE p (int) AS SELECT 1`. These extra type hints are now ignored by `crdb_internal.deserialize_session`. [#101368][#101368] +- Fixed a bug so that the text search `@@` [operator]({% link v23.1/functions-and-operators.md %}) ("matches") can work with variable expressions. Fixed a bug where incorrect results were returned when one of the arguments was a [`TEXT`]({% link v23.1/string.md %}) expression and the other argument was a `TEXT` or `TSQuery` expression. +- Fixed a bug where running [`DROP COLUMN ... CASCADE`]({% link v23.1/alter-table.md %}#drop-column) when that column is used in an [index]({% link v23.1/indexes.md %}) that includes other columns caused a panic. +- Fixed a rare race condition on [node startup]({% link v23.1/cockroach-start.md %}) that could cause an `invalid memory address or nil pointer dereference` error. +- Fixed a bug that was causing nodes running on Windows to crash on startup. This bug only existed in v23.1 alphas. +- Fixed a rare condition that could allow a [transaction]({% link v23.1/transactions.md %}) to get stuck indefinitely waiting on a released row-level [lock](https://www.cockroachlabs.com/docs/v23.1/architecture/transaction-layer#concurrency-control) if the per-range lock count limit was exceeded while the transaction was waiting on another lock. +- Fixed a rare internal error in the [optimizer]({% link v23.1/cost-based-optimizer.md %}) that has existed since before version v22.1, which could occur while enforcing orderings between SQL operators. +- Fixed a bug so that the `crdb_internal.deserialize_session` internal function works properly with prepared statements that have more param type hints than params. Before this bugfix, deserializing a [session]({% link v23.1/show-sessions.md %}) containing a prepared statement with more parameter type hints than parameters would panic. For example: `PREPARE p (int) AS SELECT 1`. These extra type hints are now ignored by `crdb_internal.deserialize_session`.

Performance improvements

-- Google Cloud Pub/Sub sink [changefeeds]({% link v23.1/create-changefeed.md %}) can now support higher throughputs by enabling the `changefeed.new_pubsub_sink_enabled` [cluster setting]({% link v23.1/cluster-settings.md %}). Enabling this setting will cause changefeeds to use a newer Pub/Sub sink, which uses capitalized top-level fields in the message: `{Key: ..., Value: ..., Topic: ...}`. As a result, you may need to reconfigure downstream systems to parse the new message format. If you do not enable `changefeed.new_pubsub_sink_enabled`, the top-level message fields remain all lowercase: `{key: ..., value: ..., topic: ...}`. [#100930][#100930] +- Google Cloud Pub/Sub sink [changefeeds]({% link v23.1/create-changefeed.md %}) can now support higher throughputs by enabling the `changefeed.new_pubsub_sink_enabled` [cluster setting]({% link v23.1/cluster-settings.md %}). Enabling this setting will cause changefeeds to use a newer Pub/Sub sink, which uses capitalized top-level fields in the message: `{Key: ..., Value: ..., Topic: ...}`. As a result, you may need to reconfigure downstream systems to parse the new message format. If you do not enable `changefeed.new_pubsub_sink_enabled`, the top-level message fields remain all lowercase: `{key: ..., value: ..., topic: ...}`.
@@ -39,16 +39,3 @@ Release Date: April 17, 2023 This release includes 57 merged PRs by 29 authors.
- -[#100626]: https://github.com/cockroachdb/cockroach/pull/100626 -[#100856]: https://github.com/cockroachdb/cockroach/pull/100856 -[#100918]: https://github.com/cockroachdb/cockroach/pull/100918 -[#100930]: https://github.com/cockroachdb/cockroach/pull/100930 -[#100946]: https://github.com/cockroachdb/cockroach/pull/100946 -[#101026]: https://github.com/cockroachdb/cockroach/pull/101026 -[#101091]: https://github.com/cockroachdb/cockroach/pull/101091 -[#101126]: https://github.com/cockroachdb/cockroach/pull/101126 -[#101235]: https://github.com/cockroachdb/cockroach/pull/101235 -[#101355]: https://github.com/cockroachdb/cockroach/pull/101355 -[#101368]: https://github.com/cockroachdb/cockroach/pull/101368 -[#101391]: https://github.com/cockroachdb/cockroach/pull/101391 diff --git a/src/current/_includes/releases/v23.1/v23.1.0-beta.3.md b/src/current/_includes/releases/v23.1/v23.1.0-beta.3.md index 714b1cf739d..7b79d4e0f4e 100644 --- a/src/current/_includes/releases/v23.1/v23.1.0-beta.3.md +++ b/src/current/_includes/releases/v23.1/v23.1.0-beta.3.md @@ -6,58 +6,39 @@ Release Date: April 24, 2023

Backward-incompatible changes

-- Previously, if a user specified a [`search_path`]({% link v23.1/sql-name-resolution.md %}#current-schema) in the connection string parameters, it would always be treated as case sensitive. Now, in order to have the schema names in the `search_path` respect case, the user must include double quotes around the name. [#101492][#101492] +- Previously, if a user specified a [`search_path`]({% link v23.1/sql-name-resolution.md %}#current-schema) in the connection string parameters, it would always be treated as case sensitive. Now, in order to have the schema names in the `search_path` respect case, the user must include double quotes around the name.

SQL language changes

-- Statements of type [`SET ...`]({% link v23.1/set-vars.md %}) are no longer displayed on the [Insights page]({% link v23.1/ui-insights-page.md %}). [#101672][#101672] +- Statements of type [`SET ...`]({% link v23.1/set-vars.md %}) are no longer displayed on the [Insights page]({% link v23.1/ui-insights-page.md %}).

Operational changes

-- The amount of [replication](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer) traffic in flight from a single [Raft leader](https://www.cockroachlabs.com/docs/v23.1/architecture/reads-and-writes-overview#architecture-raft-leader) to a follower has been reduced from 256 MB to 32 MB. This reduces the chance of running out of memory during bulk write operations. This can be controlled via the environment variable `COCKROACH_RAFT_MAX_INFLIGHT_BYTES`. [#101508][#101508] +- The amount of [replication](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer) traffic in flight from a single [Raft leader](https://www.cockroachlabs.com/docs/v23.1/architecture/reads-and-writes-overview#architecture-raft-leader) to a follower has been reduced from 256 MB to 32 MB. This reduces the chance of running out of memory during bulk write operations. This can be controlled via the environment variable `COCKROACH_RAFT_MAX_INFLIGHT_BYTES`.

DB Console changes

-- When a user activates diagnostics on the [SQL Activity]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-view) page, there is now an option to select the trace rate for statement diagnostics collection. [#101762][#101762] -- Updated the **Network Latency** side navigation name and Network Diagnostics page title to Network. Updated the Advanced Debugging page title to [Advanced Debug]({% link v23.1/ui-debug-pages.md %}). [#101761][#101761] -- Introduced a "draining node" **Node Status** on the [Cluster Overview panel]({% link v23.1/ui-cluster-overview-page.md %}#cluster-overview-panel) so that "draining node" has it own value instead of counting as a "dead node". [#101794][#101794] -- Added a time scale selector to the [**Diagnostics** tab]({% link v23.1/ui-statements-page.md %}#diagnostics) under the Statement Details page. This allows users to view bundles from the selected period only. [#101803][#101803] +- When a user activates diagnostics on the [SQL Activity]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-view) page, there is now an option to select the trace rate for statement diagnostics collection. +- Updated the **Network Latency** side navigation name and Network Diagnostics page title to Network. Updated the Advanced Debugging page title to [Advanced Debug]({% link v23.1/ui-debug-pages.md %}). +- Introduced a "draining node" **Node Status** on the [Cluster Overview panel]({% link v23.1/ui-cluster-overview-page.md %}#cluster-overview-panel) so that "draining node" has it own value instead of counting as a "dead node". +- Added a time scale selector to the [**Diagnostics** tab]({% link v23.1/ui-statements-page.md %}#diagnostics) under the Statement Details page. This allows users to view bundles from the selected period only.

Bug fixes

-- Fixed a bug that caused internal errors when executing [user-defined functions]({% link v23.1/user-defined-functions.md %}) with empty bodies. This bug was only present in alpha pre-release versions of 23.1. [#101383][#101383] -- Fixed a bug that caused a [restore]({% link v23.1/restore.md %}) to fail occasionally due to incorrect schema ID resolution when restoring a [backup]({% link v23.1/backup.md %}) with [user-defined schemas]({% link v23.1/schema-design-schema.md %}). [#101310][#101310] -- Fixed a bug in parsing a [`search_path`]({% link v23.1/sql-name-resolution.md %}#current-schema) with a quote in it when specified in the [connection string]({% link v23.1/connection-parameters.md %}). Also, the `search_path` [session variable]({% link v23.1/set-vars.md %}) now supports schema names that have commas in them. [#101492][#101492] -- Fixed a bug that has existed since [user-defined functions]({% link v23.1/user-defined-functions.md %}) were introduced that could cause a function call to resolve to the wrong function after changes to the [schema search path]({% link v23.1/sql-name-resolution.md %}#current-schema). [#101513][#101513] -- Previously, CockroachDB v23.1 alpha and beta versions would panic on [`cockroach start`]({% link v23.1/cockroach-start.md %}) command when the `GOMEMLIMIT` environment variable was set and the `--max-go-memory` flag wasn't specified. This is now fixed. [#101565][#101565] -- Fixed a bug that caused errors in test builds and potentially incorrect results in release builds when invoking a [user-defined function]({% link v23.1/user-defined-functions.md %}) with a [subquery]({% link v23.1/subqueries.md %}) argument. This bug was only present in v23.1 alpha versions. [#101639][#101639] -- Fixed an internal error that could occur when the `enforce_home_region` [session setting]({% link v23.1/set-vars.md %}) is on and the input to the [lookup join]({% link v23.1/joins.md %}#lookup-joins) is a `SELECT` of [scalar expressions]({% link v23.1/scalar-expressions.md %}) (e.g., `1+1`). Also, [subqueries]({% link v23.1/subqueries.md %}) with no [home region]({% link v23.1/multiregion-overview.md %}#table-localities) now error out with `enforce_home_region` set. [#101504][#101504] -- Point [inserts]({% link v23.1/insert.md %}) and [updates]({% link v23.1/update.md %}) that write to a remote region of a table created with the [`REGIONAL BY ROW AS`]({% link v23.1/create-table.md %}#create-a-table-with-a-regional-by-row-locality-using-a-custom-region-column) clause will now error out. [#101708][#101708] -- Fixed a bug in the [built-in functions]({% link v23.1/functions-and-operators.md %}) `pg_get_indexdef` and `col_description` that could cause the functions to return errors if the user created tables named `pg_indexes` or `pg_attribute`. Or, if the user created a schema named `system` with a table named `comments`. This bug was only present in pre-release versions of v23.1. [#101690][#101690] -- Fixed a bug where, when CockroachDB failed to retrieve [contention information]({% link v23.1/performance-best-practices-overview.md %}#transaction-contention), the full [Insights page]({% link v23.1/ui-insights-page.md %}) would return an error. Now the Insights page will load even when there is an issue with decoding contention information. [#101784][#101784] -- Fixed a bug to ensure that the [list of fingerprints]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-view) used per [index]({% link v23.1/indexes.md %}) is shown even when there is a max-size limit on the SQL API. [#101785][#101785] +- Fixed a bug that caused internal errors when executing [user-defined functions]({% link v23.1/user-defined-functions.md %}) with empty bodies. This bug was only present in alpha pre-release versions of 23.1. +- Fixed a bug that caused a [restore]({% link v23.1/restore.md %}) to fail occasionally due to incorrect schema ID resolution when restoring a [backup]({% link v23.1/backup.md %}) with [user-defined schemas]({% link v23.1/schema-design-schema.md %}). +- Fixed a bug in parsing a [`search_path`]({% link v23.1/sql-name-resolution.md %}#current-schema) with a quote in it when specified in the [connection string]({% link v23.1/connection-parameters.md %}). Also, the `search_path` [session variable]({% link v23.1/set-vars.md %}) now supports schema names that have commas in them. +- Fixed a bug that has existed since [user-defined functions]({% link v23.1/user-defined-functions.md %}) were introduced that could cause a function call to resolve to the wrong function after changes to the [schema search path]({% link v23.1/sql-name-resolution.md %}#current-schema). +- Previously, CockroachDB v23.1 alpha and beta versions would panic on [`cockroach start`]({% link v23.1/cockroach-start.md %}) command when the `GOMEMLIMIT` environment variable was set and the `--max-go-memory` flag wasn't specified. This is now fixed. +- Fixed a bug that caused errors in test builds and potentially incorrect results in release builds when invoking a [user-defined function]({% link v23.1/user-defined-functions.md %}) with a [subquery]({% link v23.1/subqueries.md %}) argument. This bug was only present in v23.1 alpha versions. +- Fixed an internal error that could occur when the `enforce_home_region` [session setting]({% link v23.1/set-vars.md %}) is on and the input to the [lookup join]({% link v23.1/joins.md %}#lookup-joins) is a `SELECT` of [scalar expressions]({% link v23.1/scalar-expressions.md %}) (e.g., `1+1`). Also, [subqueries]({% link v23.1/subqueries.md %}) with no [home region]({% link v23.1/multiregion-overview.md %}#table-localities) now error out with `enforce_home_region` set. +- Point [inserts]({% link v23.1/insert.md %}) and [updates]({% link v23.1/update.md %}) that write to a remote region of a table created with the [`REGIONAL BY ROW AS`]({% link v23.1/create-table.md %}#create-a-table-with-a-regional-by-row-locality-using-a-custom-region-column) clause will now error out. +- Fixed a bug in the [built-in functions]({% link v23.1/functions-and-operators.md %}) `pg_get_indexdef` and `col_description` that could cause the functions to return errors if the user created tables named `pg_indexes` or `pg_attribute`. Or, if the user created a schema named `system` with a table named `comments`. This bug was only present in pre-release versions of v23.1. +- Fixed a bug where, when CockroachDB failed to retrieve [contention information]({% link v23.1/performance-best-practices-overview.md %}#transaction-contention), the full [Insights page]({% link v23.1/ui-insights-page.md %}) would return an error. Now the Insights page will load even when there is an issue with decoding contention information. +- Fixed a bug to ensure that the [list of fingerprints]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-view) used per [index]({% link v23.1/indexes.md %}) is shown even when there is a max-size limit on the SQL API.

Contributors

This release includes 36 merged PRs by 15 authors. - -[#101310]: https://github.com/cockroachdb/cockroach/pull/101310 -[#101383]: https://github.com/cockroachdb/cockroach/pull/101383 -[#101432]: https://github.com/cockroachdb/cockroach/pull/101432 -[#101492]: https://github.com/cockroachdb/cockroach/pull/101492 -[#101504]: https://github.com/cockroachdb/cockroach/pull/101504 -[#101508]: https://github.com/cockroachdb/cockroach/pull/101508 -[#101513]: https://github.com/cockroachdb/cockroach/pull/101513 -[#101565]: https://github.com/cockroachdb/cockroach/pull/101565 -[#101639]: https://github.com/cockroachdb/cockroach/pull/101639 -[#101672]: https://github.com/cockroachdb/cockroach/pull/101672 -[#101690]: https://github.com/cockroachdb/cockroach/pull/101690 -[#101708]: https://github.com/cockroachdb/cockroach/pull/101708 -[#101761]: https://github.com/cockroachdb/cockroach/pull/101761 -[#101762]: https://github.com/cockroachdb/cockroach/pull/101762 -[#101784]: https://github.com/cockroachdb/cockroach/pull/101784 -[#101785]: https://github.com/cockroachdb/cockroach/pull/101785 -[#101794]: https://github.com/cockroachdb/cockroach/pull/101794 -[#101803]: https://github.com/cockroachdb/cockroach/pull/101803 diff --git a/src/current/_includes/releases/v23.1/v23.1.0-rc.1.md b/src/current/_includes/releases/v23.1/v23.1.0-rc.1.md index 723327689d9..ed4ee821d46 100644 --- a/src/current/_includes/releases/v23.1/v23.1.0-rc.1.md +++ b/src/current/_includes/releases/v23.1/v23.1.0-rc.1.md @@ -6,39 +6,39 @@ Release Date: May 2, 2023

SQL language changes

-- Two views have been added to the [`crdb_internal` system catalog]({% link v23.1/crdb-internal.md %}): `crdb_internal.statement_activity` surfaces data in the persisted `system.statement_activity` table, and `crdb_internal.transaction_activity` surfaces the `system.transaction_activity` table. [#102047][#102047] -- Span statistics are now unavailable on mixed-version clusters. [#101878][#101878] +- Two views have been added to the [`crdb_internal` system catalog]({% link v23.1/crdb-internal.md %}): `crdb_internal.statement_activity` surfaces data in the persisted `system.statement_activity` table, and `crdb_internal.transaction_activity` surfaces the `system.transaction_activity` table. +- Span statistics are now unavailable on mixed-version clusters.

DB Console changes

-- Timestamps are now displayed in DB Console in the timezone specified in the `ui.display_timezone` [cluster setting]({% link v23.1/cluster-settings.md %}), if set. Currently supported timezones are `Coordinated Universal Time` and `America/New_York`. [#102241][#102241] -- DB Console now limits historical data for SQL Activity pages to 200000 rows by default, based on the new `sql.stats.activity.persisted_rows.max` [cluster setting]({% link v23.1/cluster-settings.md %}). A background job automatically prunes the system tables `transaction_activity` and `statement_activity`. [#101995][#101995] -- Improved performance when viewing the [`crdb_internal.transaction_contention_events` table]({% link v23.1/crdb-internal.md %}) in DB Console if there are a large number of rows. [#101871][#101871] +- Timestamps are now displayed in DB Console in the timezone specified in the `ui.display_timezone` [cluster setting]({% link v23.1/cluster-settings.md %}), if set. Currently supported timezones are `Coordinated Universal Time` and `America/New_York`. +- DB Console now limits historical data for SQL Activity pages to 200000 rows by default, based on the new `sql.stats.activity.persisted_rows.max` [cluster setting]({% link v23.1/cluster-settings.md %}). A background job automatically prunes the system tables `transaction_activity` and `statement_activity`. +- Improved performance when viewing the [`crdb_internal.transaction_contention_events` table]({% link v23.1/crdb-internal.md %}) in DB Console if there are a large number of rows.

Bug fixes

-- Fixed a bug introduced prior to v22.1 where an `EXPORT` statement could be incorrectly evaluated and result in a node panic or incorrect query results if it had projection or rendering on top of the `EXPORT`, such as the statement `WITH cte AS (EXPORT INTO CSV 'nodelocal://1/export1/' FROM SELECT * FROM t) SELECT filename FROM cte;`. Only the presentation of the query result was affected, not the exported data. [#101806][#101806] -- The descriptions of the `rebalancing.readbytespersecond` and `rebalancing.writebytespersecond` metrics now correctly reference bytes read and bytes written, respectively. [#101710][#101710] -- Fixed a rare bug introduced prior to v22.1 where distributed plans could cause the graceful drain of a node to become stuck retrying forever during [node shutdown]({% link v23.1/node-shutdown.md %}). This bug leads to errors like `drain details: distSQL execution flows:`, together with a non-zero number of flows that is not reducing over a long period of time. [#101884][#101884] -- Fixed a bug where a [`RESTORE`]({% link v23.1/restore.md %}) operation with `skip_localities_check` could fail with errors if regions were missing on a cluster. [#101798][#101798] -- Fixed a bug introduced in testing releases of v23.1 that could cause incorrect results for queries with `STRICT` [user-defined functions]({% link v23.1/user-defined-functions.md %}). [#101951][#101951] -- Fixed a rare bug that could cause keys to be unexpectedly deleted locally within a store by replica rebalancing during a write heavy workload. [#102166][#102166] -- Fixed a bug where a failed or cancelled [`IMPORT`]({% link v23.1/import.md %}) operation could leave some of the imported rows behind after it was cancelled, if the writing processes were slow enough to continue writing after the cleanup process started. [#102246][#102246] -- Fixed a bug in the behavior of the `enforce_home_region` [session variable]({% link v23.1/set-vars.md %}) that may have allowed a hash join to be favored over a lookup join, or failed to error out remote accesses done by uniqueness checks for mutations on [`REGIONAL BY ROW` tables]({% link v23.1/regional-tables.md %}). [#102287][#102287] -- Fixed a bug introduced in testing releases of v23.1 where a node could crash when evaluating a [`COPY`]({% link v23.1/copy.md %}) command when the schema had `INT2` or `INT4` type. [#102307][#102307] -- Fixed a bug where a backup of a key's revision history may not correctly be restored to the proper revision of the key if it is split across multiple sorted string tables. [#102342][#102342] -- Fixed a bug introduced in testing releases of v23.1 where a user could be prevented from logging in or viewing or changing [`GRANT`s]({% link v23.1/grant.md %}) if the cluster had a long period of inactivity. [#102488][#102488] -- Fixed a bug where a node that transferred a lease away and missed a liveness heartbeat could then erroneously update the closed timestamp during the stasis period of its liveness. This could lead to closed timestamp invariant violation and could cause the node to crash. In extreme cases, this could lead to inconsistencies in read-only queries. [#102602][#102602] -- Fixed a bug that caused memory leaks when a closed or cancelled connection was released. [#101810][#101810] +- Fixed a bug introduced prior to v22.1 where an `EXPORT` statement could be incorrectly evaluated and result in a node panic or incorrect query results if it had projection or rendering on top of the `EXPORT`, such as the statement `WITH cte AS (EXPORT INTO CSV 'nodelocal://1/export1/' FROM SELECT * FROM t) SELECT filename FROM cte;`. Only the presentation of the query result was affected, not the exported data. +- The descriptions of the `rebalancing.readbytespersecond` and `rebalancing.writebytespersecond` metrics now correctly reference bytes read and bytes written, respectively. +- Fixed a rare bug introduced prior to v22.1 where distributed plans could cause the graceful drain of a node to become stuck retrying forever during [node shutdown]({% link v23.1/node-shutdown.md %}). This bug leads to errors like `drain details: distSQL execution flows:`, together with a non-zero number of flows that is not reducing over a long period of time. +- Fixed a bug where a [`RESTORE`]({% link v23.1/restore.md %}) operation with `skip_localities_check` could fail with errors if regions were missing on a cluster. +- Fixed a bug introduced in testing releases of v23.1 that could cause incorrect results for queries with `STRICT` [user-defined functions]({% link v23.1/user-defined-functions.md %}). +- Fixed a rare bug that could cause keys to be unexpectedly deleted locally within a store by replica rebalancing during a write heavy workload. +- Fixed a bug where a failed or cancelled [`IMPORT`]({% link v23.1/import.md %}) operation could leave some of the imported rows behind after it was cancelled, if the writing processes were slow enough to continue writing after the cleanup process started. +- Fixed a bug in the behavior of the `enforce_home_region` [session variable]({% link v23.1/set-vars.md %}) that may have allowed a hash join to be favored over a lookup join, or failed to error out remote accesses done by uniqueness checks for mutations on [`REGIONAL BY ROW` tables]({% link v23.1/regional-tables.md %}). +- Fixed a bug introduced in testing releases of v23.1 where a node could crash when evaluating a [`COPY`]({% link v23.1/copy.md %}) command when the schema had `INT2` or `INT4` type. +- Fixed a bug where a backup of a key's revision history may not correctly be restored to the proper revision of the key if it is split across multiple sorted string tables. +- Fixed a bug introduced in testing releases of v23.1 where a user could be prevented from logging in or viewing or changing [`GRANT`s]({% link v23.1/grant.md %}) if the cluster had a long period of inactivity. +- Fixed a bug where a node that transferred a lease away and missed a liveness heartbeat could then erroneously update the closed timestamp during the stasis period of its liveness. This could lead to closed timestamp invariant violation and could cause the node to crash. In extreme cases, this could lead to inconsistencies in read-only queries. +- Fixed a bug that caused memory leaks when a closed or cancelled connection was released.

Performance improvements

-- [SQL Activity]({% link v23.1/ui-sql-dashboard.md %}) dashboards now default to using a table optimized with the top data for the most used cases. Otherwise, they use persisted data if available, and in-memory data otherwise. [#102310][#102310] -- Static erroring of some locality-optimized lookup [joins]({% link v23.1/joins.md %}) is now handled dynamically during query execution. [#102287][#102287] +- [SQL Activity]({% link v23.1/ui-sql-dashboard.md %}) dashboards now default to using a table optimized with the top data for the most used cases. Otherwise, they use persisted data if available, and in-memory data otherwise. +- Static erroring of some locality-optimized lookup [joins]({% link v23.1/joins.md %}) is now handled dynamically during query execution.

Miscellaneous

-- Two new statistics help to track the efficiency of snapshot transfers and to keep the number of failures due to system-level races as low as possible. `range.snapshots.recv-failed` shows the number of snapshot send attempts that are initiated but not accepted by the recipient. `range.snapshots.recv-unusable` shows the number of snapshots that were fully transmitted but not used. [#101835][#101835] +- Two new statistics help to track the efficiency of snapshot transfers and to keep the number of failures due to system-level races as low as possible. `range.snapshots.recv-failed` shows the number of snapshot send attempts that are initiated but not accepted by the recipient. `range.snapshots.recv-unusable` shows the number of snapshots that were fully transmitted but not used.
@@ -50,26 +50,3 @@ We would like to thank the following contributors from the CockroachDB community - ajwerner
- -[#101710]: https://github.com/cockroachdb/cockroach/pull/101710 -[#101798]: https://github.com/cockroachdb/cockroach/pull/101798 -[#101806]: https://github.com/cockroachdb/cockroach/pull/101806 -[#101810]: https://github.com/cockroachdb/cockroach/pull/101810 -[#101835]: https://github.com/cockroachdb/cockroach/pull/101835 -[#101871]: https://github.com/cockroachdb/cockroach/pull/101871 -[#101878]: https://github.com/cockroachdb/cockroach/pull/101878 -[#101884]: https://github.com/cockroachdb/cockroach/pull/101884 -[#101951]: https://github.com/cockroachdb/cockroach/pull/101951 -[#101995]: https://github.com/cockroachdb/cockroach/pull/101995 -[#101997]: https://github.com/cockroachdb/cockroach/pull/101997 -[#102047]: https://github.com/cockroachdb/cockroach/pull/102047 -[#102166]: https://github.com/cockroachdb/cockroach/pull/102166 -[#102241]: https://github.com/cockroachdb/cockroach/pull/102241 -[#102246]: https://github.com/cockroachdb/cockroach/pull/102246 -[#102287]: https://github.com/cockroachdb/cockroach/pull/102287 -[#102307]: https://github.com/cockroachdb/cockroach/pull/102307 -[#102310]: https://github.com/cockroachdb/cockroach/pull/102310 -[#102342]: https://github.com/cockroachdb/cockroach/pull/102342 -[#102488]: https://github.com/cockroachdb/cockroach/pull/102488 -[#102602]: https://github.com/cockroachdb/cockroach/pull/102602 -[89e1a0086]: https://github.com/cockroachdb/cockroach/commit/89e1a0086 diff --git a/src/current/_includes/releases/v23.1/v23.1.0-rc.2.md b/src/current/_includes/releases/v23.1/v23.1.0-rc.2.md index 252ecfdf4a9..388396aa985 100644 --- a/src/current/_includes/releases/v23.1/v23.1.0-rc.2.md +++ b/src/current/_includes/releases/v23.1/v23.1.0-rc.2.md @@ -6,7 +6,7 @@ Release Date: May 4, 2023

Bug fixes

-- Fixed a bug introduced in versions 22.1.19, 22.2.8, and pre-release versions of 23.1 that could cause queries to return spurious insufficient [privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization) errors. For the bug to occur, two databases would need to have duplicate tables, each with a [foreign key]({% link v23.1/foreign-key.md %}) reference to another table. The error would then occur if the same SQL string was executed against both databases concurrently by users that have [privileges](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization) over only one of the tables. [#102651][#102651] +- Fixed a bug introduced in versions 22.1.19, 22.2.8, and pre-release versions of 23.1 that could cause queries to return spurious insufficient [privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization) errors. For the bug to occur, two databases would need to have duplicate tables, each with a [foreign key]({% link v23.1/foreign-key.md %}) reference to another table. The error would then occur if the same SQL string was executed against both databases concurrently by users that have [privileges](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization) over only one of the tables.
@@ -15,5 +15,3 @@ Release Date: May 4, 2023 This release includes 4 merged PRs by 4 authors.
- -[#102651]: https://github.com/cockroachdb/cockroach/pull/102651 diff --git a/src/current/_includes/releases/v23.1/v23.1.0.md b/src/current/_includes/releases/v23.1/v23.1.0.md index 80e320ac0b5..892dd365fce 100644 --- a/src/current/_includes/releases/v23.1/v23.1.0.md +++ b/src/current/_includes/releases/v23.1/v23.1.0.md @@ -427,8 +427,8 @@ This change will only apply to new clusters. Existing clusters will retain the 2 Before [upgrading to CockroachDB v23.1]({% link v23.1/upgrade-cockroach-version.md %}), be sure to review the following backward-incompatible changes, as well as key cluster setting changes, and adjust your deployment as necessary. -- Replaced the `cdc_prev()` [function]({% link v23.1/functions-and-operators.md %}) in favor of a `cdc_prev` tuple. This is an incompatible change that may break [changefeeds]({% link v23.1/change-data-capture-overview.md %}) that use the previous `cdc_prev()` function. [#85177][#85177] -- [`SHOW RANGES FOR TABLE`]({% link v23.1/show-ranges.md %}) now includes rows for all indexes that support the table. Prior to this change, `SHOW RANGES FOR TABLE foo` was an alias for `SHOW RANGES FOR INDEX foo@primary`. This was causing confusion, as it would miss data for secondary indexes. It is still possible to filter to just the primary index using `SHOW RANGES FOR INDEX foo@primary`. The statement output now also includes the index name. [#93545][#93545] +- Replaced the `cdc_prev()` [function]({% link v23.1/functions-and-operators.md %}) in favor of a `cdc_prev` tuple. This is an incompatible change that may break [changefeeds]({% link v23.1/change-data-capture-overview.md %}) that use the previous `cdc_prev()` function. +- [`SHOW RANGES FOR TABLE`]({% link v23.1/show-ranges.md %}) now includes rows for all indexes that support the table. Prior to this change, `SHOW RANGES FOR TABLE foo` was an alias for `SHOW RANGES FOR INDEX foo@primary`. This was causing confusion, as it would miss data for secondary indexes. It is still possible to filter to just the primary index using `SHOW RANGES FOR INDEX foo@primary`. The statement output now also includes the index name. - CockroachDB now supports sharing storage ranges across multiple indexes/tables. This behavior is not enabled by default in v23.1, but will be enabled by default in a future release. When the behavior is enabled, there will no longer be a guarantee that there is at most one SQL object (e.g., table/index/sequence/materialized view) per storage range. As a result, the columns `table_id`, `database_name`, `schema_name`, `table_name` and `index_name` in `crdb_internal.ranges` and `.ranges_no_leases` will become meaningless, since a range will no longer be attributed to a single table/index. In v23.1, the default behavior of [`SHOW RANGES`]({% link v23.1/show-ranges.md %}) is retained, but you should consider setting the [`sql.show_ranges_deprecated_behavior.enabled`]({% link v23.1/cluster-settings.md %}#setting-sql-show-ranges-deprecated-behavior-enabled) cluster setting to `false`. This will have the following effects that will become the defaults in a future release: - The aforementioned columns in the `crdb_internal` virtual tables will be removed. Existing code can use the updated output of the [`SHOW RANGES`]({% link v23.1/show-ranges.md %}) statement instead, optionally using `WITH KEYS` to expose the raw start/end keys. @@ -437,17 +437,17 @@ Before [upgrading to CockroachDB v23.1]({% link v23.1/upgrade-cockroach-version. - Instead of: `SELECT range_id FROM crdb_internal.ranges WHERE table_name = 'x'`, use: `SELECT range_id FROM [SHOW RANGES FROM TABLE x]` - Instead of `SELECT range_id FROM crdb_internal.ranges WHERE table_name = $1 OR table_id = $2` (variable / unpredictable table name or ID), use: `SELECT range_id FROM [SHOW RANGES FROM CURRENT_CATALOG WITH TABLES] WHERE table_name = $1 OR table_id = $2` - Instead of `SELECT start_key FROM crdb_internal.ranges WHERE table_name = 'x'`, use: `SELECT raw_start_key FROM [SHOW RANGES FROM TABLE x WITH KEYS]` - - Instead of `SELECT start_key FROM crdb_internal.ranges WHERE table_name = $1 OR table_id = $2` (unpredictable / variable table name or ID), use: `SELECT raw_start_key FROM [SHOW RANGES FROM CURRENT_CATALOG WITH TABLES, KEYS] WHERE table_name = $1 OR table_id = $2` [#93644][#93644] -- When the [cluster setting `sql.show_ranges_deprecated_behavior.enabled` is set to `false` (recommended in v23.1)]({% link v23.1/cluster-settings.md %}#setting-sql-show-ranges-deprecated-behavior-enabled), the format of the columns `start_key` and `end_key` for [`SHOW RANGES FROM DATABASE`]({% link v23.1/show-ranges.md %}) and `SHOW RANGES FROM TABLE` have been extended to include which table/index the key belongs to. This is necessary because a range can now contain data from more than one table/index. [#93644][#93644] -- When the [cluster setting `sql.show_ranges_deprecated_behavior.enabled` is set to `false` (recommended in v23.1)]({% link v23.1/cluster-settings.md %}#setting-sql-show-ranges-deprecated-behavior-enabled), the output of [`SHOW RANGES`]({% link v23.1/show-ranges.md %}) no longer includes `range_size`, `range_size_mb`, `lease_holder`, or `lease_holder_localities` by default. This ensures that `SHOW RANGES` remains fast in the common case. Use the new option [`WITH DETAILS`]({% link v23.1/show-ranges.md %}#options) to include these columns. [#93644][#93644] -- The format of the columns `start_key` and `end_key` for `SHOW RANGE ... FOR ROW` has been changed to be consistent with the output of `SHOW RANGES FROM INDEX`. [#93644][#93644] -- Changefeeds using "preview" expressions (released in v23.1.0) and that access the previous state of the row using the `cdc_prev()` function will no longer work and will need to be recreated with new syntax. [#94429][#94429] -- Some of the transformations specific to changefeeds have been deprecated and replaced. These functions were released in limited access in v22.2. Deprecated changefeed transformations continue to function. Closely monitor changefeeds that are created during upgrade. While effort was made to maintain backward compatibility, the updated changefeed transformation may produce slightly different output, such as different column names. [#96295][#96295] -- Fixed a bug where, when `server.identity_map.configuration` was used, CockroachDB did not verify the client-provided username against the target mappings. Note that **this means that the client must now provide a valid DB username.** This requirement is compatible with PostgreSQL; it was not previously required by CockroachDB but it is now. This does not apply when identity maps are not in use. [#94915][#94915] -- Previously, the type of the `replicas`, `voting_replicas`,`non_voting_replicas` and `learner_replicas` in `crdb_internal.ranges` were overridden to `INT2VECTOR` causing incompatible indexing between `.ranges` and `.ranges_no_leases`. Now the types of those columns in the two tables are set to `INT[]`. [#96287][#96287] -- The output of the [`SHOW RANGES`]({% link v23.1/show-ranges.md %}) command for the `crdb_internal.ranges` and `crdb_internal.ranges_no_leases` tables has been updated, and the previous output is deprecated. To enable the new command output, set the `sql.show_ranges_deprecated_behavior.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}) to `false`. The new output will become default in v23.2. [#99618][#99618] -- Previously, if a user specified a [`search_path`]({% link v23.1/sql-name-resolution.md %}#current-schema) in the connection string parameters, it would always be treated as case sensitive. Now, in order to have the schema names in the `search_path` respect case, the user must include double quotes around the name. [#101492][#101492] -- The deprecated CLI command `debug unsafe-remove-dead-replicas` has been removed. Use `debug recover` instead. [#89150][#89150] + - Instead of `SELECT start_key FROM crdb_internal.ranges WHERE table_name = $1 OR table_id = $2` (unpredictable / variable table name or ID), use: `SELECT raw_start_key FROM [SHOW RANGES FROM CURRENT_CATALOG WITH TABLES, KEYS] WHERE table_name = $1 OR table_id = $2` +- When the [cluster setting `sql.show_ranges_deprecated_behavior.enabled` is set to `false` (recommended in v23.1)]({% link v23.1/cluster-settings.md %}#setting-sql-show-ranges-deprecated-behavior-enabled), the format of the columns `start_key` and `end_key` for [`SHOW RANGES FROM DATABASE`]({% link v23.1/show-ranges.md %}) and `SHOW RANGES FROM TABLE` have been extended to include which table/index the key belongs to. This is necessary because a range can now contain data from more than one table/index. +- When the [cluster setting `sql.show_ranges_deprecated_behavior.enabled` is set to `false` (recommended in v23.1)]({% link v23.1/cluster-settings.md %}#setting-sql-show-ranges-deprecated-behavior-enabled), the output of [`SHOW RANGES`]({% link v23.1/show-ranges.md %}) no longer includes `range_size`, `range_size_mb`, `lease_holder`, or `lease_holder_localities` by default. This ensures that `SHOW RANGES` remains fast in the common case. Use the new option [`WITH DETAILS`]({% link v23.1/show-ranges.md %}#options) to include these columns. +- The format of the columns `start_key` and `end_key` for `SHOW RANGE ... FOR ROW` has been changed to be consistent with the output of `SHOW RANGES FROM INDEX`. +- Changefeeds using "preview" expressions (released in v23.1.0) and that access the previous state of the row using the `cdc_prev()` function will no longer work and will need to be recreated with new syntax. +- Some of the transformations specific to changefeeds have been deprecated and replaced. These functions were released in limited access in v22.2. Deprecated changefeed transformations continue to function. Closely monitor changefeeds that are created during upgrade. While effort was made to maintain backward compatibility, the updated changefeed transformation may produce slightly different output, such as different column names. +- Fixed a bug where, when `server.identity_map.configuration` was used, CockroachDB did not verify the client-provided username against the target mappings. Note that **this means that the client must now provide a valid DB username.** This requirement is compatible with PostgreSQL; it was not previously required by CockroachDB but it is now. This does not apply when identity maps are not in use. +- Previously, the type of the `replicas`, `voting_replicas`,`non_voting_replicas` and `learner_replicas` in `crdb_internal.ranges` were overridden to `INT2VECTOR` causing incompatible indexing between `.ranges` and `.ranges_no_leases`. Now the types of those columns in the two tables are set to `INT[]`. +- The output of the [`SHOW RANGES`]({% link v23.1/show-ranges.md %}) command for the `crdb_internal.ranges` and `crdb_internal.ranges_no_leases` tables has been updated, and the previous output is deprecated. To enable the new command output, set the `sql.show_ranges_deprecated_behavior.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}) to `false`. The new output will become default in v23.2. +- Previously, if a user specified a [`search_path`]({% link v23.1/sql-name-resolution.md %}#current-schema) in the connection string parameters, it would always be treated as case sensitive. Now, in order to have the schema names in the `search_path` respect case, the user must include double quotes around the name. +- The deprecated CLI command `debug unsafe-remove-dead-replicas` has been removed. Use `debug recover` instead.

Key Cluster Setting Changes

@@ -455,27 +455,27 @@ The following changes should be reviewed prior to upgrading. Default cluster set | Category | Description | Change Type | Backport version | |---|---|---|---| -| SQL language change | The [cluster setting]({% link v23.1/cluster-settings.md %}) `sql.ttl.default_range_concurrency` and table storage parameter `ttl_range_concurrency` are no longer configurable. [#89392](https://github.com/cockroachdb/cockroach/pull/89392) | No longer configurable | v22.2.1 | -| SQL language change | The `sql.distsql.max_running_flows` [cluster setting]({% link v23.1/cluster-settings.md %}) has been removed. [#84888](https://github.com/cockroachdb/cockroach/pull/84888) | Removed | None | -| Operational change | The [cluster settings]({% link v23.1/cluster-settings.md %}) `server.web_session.purge.period` and `server.web_session.purge.max_deletions_per_cycle`, which were specific to the cleanup function for `system.web_sessions`, have been replaced by `server.log_gc.period` and `server.log_gc.max_deletions_per_cycle` which apply to the cleanup function for `system.eventlog`, `system.rangelog` and `system.web_sessions` equally. [#90789](https://github.com/cockroachdb/cockroach/pull/90789) | Removed, repurposed | None | -| Operational change | The [cluster setting]({% link v23.1/cluster-settings.md %}) `server.web_session.auto_logout.timeout` has been removed. [#90789](https://github.com/cockroachdb/cockroach/pull/90789) | Removed, defaults to true | None | -| Operational change | The [load-based splitter]({% link v23.1/load-based-splitting.md %}) now supports using request CPU usage to split ranges. This is introduced with the previous cluster setting `kv.allocator.load_based_rebalancing.objective`, which when set to `cpu`, will use request CPU usage. The threshold above which CPU usage of a range is considered for splitting is defined in the cluster setting `kv.range_split.load_cpu_threshold`, which has a default value of `250ms`. (Relates to #100211 in this table.) [#96128](https://github.com/cockroachdb/cockroach/pull/96128) | Repurposed | None | -| Operational change | The `kv.range_split.load_cpu_threshold` [cluster setting]({% link v23.1/cluster-settings.md %}#setting-kv-range-split-load-cpu-threshold) now has a minimum setting value of `10ms`. Previously there was no minimum so, while unlikely, this could have an impact if you had chosen a custom setting lower than the established minimum. [#98250](https://github.com/cockroachdb/cockroach/pull/98250) | New minimum | None | -| Security update | The new [cluster setting]({% link v23.1/cluster-settings.md %}) `server.user_login.downgrade_scram_stored_passwords_to_bcrypt.enabled`, which allows you to migrate passwords from SCRAM to bcrypt during user authentication, defaults to `true`. If it is `true` and if `server.user_login.password_encryption` is `crdb-bcrypt`, then during login, the stored hashed password will be migrated from SCRAM to bcrypt. [#97429](https://github.com/cockroachdb/cockroach/pull/97429) | New setting | v22.2.6 | -| Security update | The default value for the `server.user_login.password_hashes.default_cost.scram_sha_256` [cluster setting]({% link v23.1/cluster-settings.md %}) is now 10610. (Previously the default was 119680.) The old value was found to have been too high for many types of client hardware, and in some cases could cause regressions in connection latency. The new value was chosen by running tests with clients that have 1 or 2 vCPUs provisioned. Additionally, the new cluster setting `server.user_login.rehash_scram_stored_passwords_on_cost_change.enabled` was added, and defaults to `true`. If it is `true` and the stored SCRAM password for a user has a different cost than the configured default cost, then the next time the user logs in, their password will automatically be rehashed using the configured default cost. If the rehashing is not desired, then operators should update the `server.user_login.password_hashes.default_cost.scram_sha_256` cluster setting to the value they desire before upgrading. This change is being backported to [v22.2](https://www.cockroachlabs.com/docs/releases/v22.2). [#98254](https://github.com/cockroachdb/cockroach/pull/98254) | Changed default | v22.2.7 | -| Command-line change | The `--drain-wait` argument to the [`cockroach node drain`]({% link v23.1/cockroach-node.md %}) command will be automatically increased if the command detects that it is smaller than the sum of the [cluster settings]({% link v23.1/node-shutdown.md %}#cluster-settings) `server.shutdown.drain_wait`, `server.shutdown.connection_wait`, `server.shutdown.query_wait` times two, and `server.shutdown.lease_transfer_wait`. If the `--drain-wait` argument is 0, then no timeout is used. This recommendation [was already documented]({% link v23.1/node-shutdown.md %}#drain-timeout), but now the advice will be applied automatically. [#98390](https://github.com/cockroachdb/cockroach/pull/98390) | New effect | v22.2.1 | -| Bug fix | RPC connections between nodes now require RPC connections to be established in both directions, otherwise the connection will be closed. This is done to prevent asymmetric network partitions where nodes are able to send outbound messages but not receive inbound messages, which could result in persistent unavailability. This behavior can be disabled by the [cluster setting]({% link v23.1/cluster-settings.md %}) `rpc.dialback.enabled`. [#94778](https://github.com/cockroachdb/cockroach/pull/94778) | New setting, enabled by default | None | -| Bug fix | Fixed a rare bug introduced in v22.2.0 that could cause a node to crash with an `attempting to append refresh spans after the tracked timestamp has moved forward` error when querying virtual tables in the [`crdb_internal`]({% link v23.1/crdb-internal.md %}) or [`pg_catalog`]({% link v23.1/pg-catalog.md %}) system catalogs. If you are experiencing this bug, set the `sql.distsql.use_streamer.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}) to `false` before upgrading a cluster to v23.1. [#99443](https://github.com/cockroachdb/cockroach/pull/99443) | New guidance | v22.2.8 | -| Bug fix | The [**Hot Ranges** page]({% link v23.1/ui-hot-ranges-page.md %}) DB Console page would show hot ranges by CPU and not QPS (queries per second), depending on the value of the `kv.allocator.load_based_rebalancing.objective` [cluster setting]({% link v23.1/cluster-settings.md %}) (default `cpu`). Now the page will always collect statistics based on QPS. (Relates to #96128 in this table.) [#100211](https://github.com/cockroachdb/cockroach/pull/100211) | Repurposed setting | No | +| SQL language change | The [cluster setting]({% link v23.1/cluster-settings.md %}) `sql.ttl.default_range_concurrency` and table storage parameter `ttl_range_concurrency` are no longer configurable. | No longer configurable | v22.2.1 | +| SQL language change | The `sql.distsql.max_running_flows` [cluster setting]({% link v23.1/cluster-settings.md %}) has been removed. | Removed | None | +| Operational change | The [cluster settings]({% link v23.1/cluster-settings.md %}) `server.web_session.purge.period` and `server.web_session.purge.max_deletions_per_cycle`, which were specific to the cleanup function for `system.web_sessions`, have been replaced by `server.log_gc.period` and `server.log_gc.max_deletions_per_cycle` which apply to the cleanup function for `system.eventlog`, `system.rangelog` and `system.web_sessions` equally. | Removed, repurposed | None | +| Operational change | The [cluster setting]({% link v23.1/cluster-settings.md %}) `server.web_session.auto_logout.timeout` has been removed. | Removed, defaults to true | None | +| Operational change | The [load-based splitter]({% link v23.1/load-based-splitting.md %}) now supports using request CPU usage to split ranges. This is introduced with the previous cluster setting `kv.allocator.load_based_rebalancing.objective`, which when set to `cpu`, will use request CPU usage. The threshold above which CPU usage of a range is considered for splitting is defined in the cluster setting `kv.range_split.load_cpu_threshold`, which has a default value of `250ms`. (Relates to #100211 in this table.) | Repurposed | None | +| Operational change | The `kv.range_split.load_cpu_threshold` [cluster setting]({% link v23.1/cluster-settings.md %}#setting-kv-range-split-load-cpu-threshold) now has a minimum setting value of `10ms`. Previously there was no minimum so, while unlikely, this could have an impact if you had chosen a custom setting lower than the established minimum. | New minimum | None | +| Security update | The new [cluster setting]({% link v23.1/cluster-settings.md %}) `server.user_login.downgrade_scram_stored_passwords_to_bcrypt.enabled`, which allows you to migrate passwords from SCRAM to bcrypt during user authentication, defaults to `true`. If it is `true` and if `server.user_login.password_encryption` is `crdb-bcrypt`, then during login, the stored hashed password will be migrated from SCRAM to bcrypt. | New setting | v22.2.6 | +| Security update | The default value for the `server.user_login.password_hashes.default_cost.scram_sha_256` [cluster setting]({% link v23.1/cluster-settings.md %}) is now 10610. (Previously the default was 119680.) The old value was found to have been too high for many types of client hardware, and in some cases could cause regressions in connection latency. The new value was chosen by running tests with clients that have 1 or 2 vCPUs provisioned. Additionally, the new cluster setting `server.user_login.rehash_scram_stored_passwords_on_cost_change.enabled` was added, and defaults to `true`. If it is `true` and the stored SCRAM password for a user has a different cost than the configured default cost, then the next time the user logs in, their password will automatically be rehashed using the configured default cost. If the rehashing is not desired, then operators should update the `server.user_login.password_hashes.default_cost.scram_sha_256` cluster setting to the value they desire before upgrading. This change is being backported to [v22.2](https://www.cockroachlabs.com/docs/releases/v22.2). | Changed default | v22.2.7 | +| Command-line change | The `--drain-wait` argument to the [`cockroach node drain`]({% link v23.1/cockroach-node.md %}) command will be automatically increased if the command detects that it is smaller than the sum of the [cluster settings]({% link v23.1/node-shutdown.md %}#cluster-settings) `server.shutdown.drain_wait`, `server.shutdown.connection_wait`, `server.shutdown.query_wait` times two, and `server.shutdown.lease_transfer_wait`. If the `--drain-wait` argument is 0, then no timeout is used. This recommendation [was already documented]({% link v23.1/node-shutdown.md %}#drain-timeout), but now the advice will be applied automatically. | New effect | v22.2.1 | +| Bug fix | RPC connections between nodes now require RPC connections to be established in both directions, otherwise the connection will be closed. This is done to prevent asymmetric network partitions where nodes are able to send outbound messages but not receive inbound messages, which could result in persistent unavailability. This behavior can be disabled by the [cluster setting]({% link v23.1/cluster-settings.md %}) `rpc.dialback.enabled`. | New setting, enabled by default | None | +| Bug fix | Fixed a rare bug introduced in v22.2.0 that could cause a node to crash with an `attempting to append refresh spans after the tracked timestamp has moved forward` error when querying virtual tables in the [`crdb_internal`]({% link v23.1/crdb-internal.md %}) or [`pg_catalog`]({% link v23.1/pg-catalog.md %}) system catalogs. If you are experiencing this bug, set the `sql.distsql.use_streamer.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}) to `false` before upgrading a cluster to v23.1. | New guidance | v22.2.8 | +| Bug fix | The [**Hot Ranges** page]({% link v23.1/ui-hot-ranges-page.md %}) DB Console page would show hot ranges by CPU and not QPS (queries per second), depending on the value of the `kv.allocator.load_based_rebalancing.objective` [cluster setting]({% link v23.1/cluster-settings.md %}) (default `cpu`). Now the page will always collect statistics based on QPS. (Relates to #96128 in this table.) | Repurposed setting | No |

Deprecations

-- Ordinal column references (e.g., `SELECT @1, @2 FROM t`) are now deprecated. By default, statements using this syntax will now result in an error. If desired, such statements can be allowed using the session setting `SET allow_ordinal_column_references=true`. Support for ordinal column references is scheduled to be removed in upcoming version v23.2. [#93754][#93754] -- The `CONTROLCHANGEFEED` [role option]({% link v23.1/alter-role.md %}#role-options) will be deprecated in the future (see issue [#94757](https://github.com/cockroachdb/cockroach/issues/94757)). With this change, usages of the `CONTROLCHANGEFEED` role option will come with a deprecation warning. Its existing behavior remains the same. The `SELECT` and `CHANGEFEED` privileges will be used for changefeeds henceforth: +- Ordinal column references (e.g., `SELECT @1, @2 FROM t`) are now deprecated. By default, statements using this syntax will now result in an error. If desired, such statements can be allowed using the session setting `SET allow_ordinal_column_references=true`. Support for ordinal column references is scheduled to be removed in upcoming version v23.2. +- The `CONTROLCHANGEFEED` [role option]({% link v23.1/alter-role.md %}#role-options) will be deprecated in the future (see issue). With this change, usages of the `CONTROLCHANGEFEED` role option will come with a deprecation warning. Its existing behavior remains the same. The `SELECT` and `CHANGEFEED` privileges will be used for changefeeds henceforth: - The `SELECT` privilege on a set of tables allows a user to run core changefeeds against them. - The `CHANGEFEED` privilege on a set of tables allows a user to run enterprise changefeeds on them, and also manage the underlying changefeed job (ie. view, pause, cancel, and resume the job). - Notably, a new [cluster setting]({% link v23.1/cluster-settings.md %}) `changefeed.permissions.require_external_connection_sink.enabled` is added and set to `false` by default. Enabling this setting restricts users with `CHANGEFEED` on a set of tables to create enterprise changefeeds into external connections only. To use a given external connection, a user typically needs the `USAGE` privilege on it. Note that `ALTER DEFAULT PRIVILEGES` can be used with both the `CHANGEFEED` and `SELECT` privileges to assign coarse-grained permissions (i.e., assign permissions to all tables in a schema rather than manually assign them for each table). [#94796][#94796] -- Deprecated the `PGDUMP` and `MYSQLDUMP` formats for [`IMPORT`]({% link v23.1/import.md %}). They are still present, but will be removed in a future release. See the [Migration Overview]({% link molt/migration-overview.md %}) page for alternatives. [#96386][#96386] + Notably, a new [cluster setting]({% link v23.1/cluster-settings.md %}) `changefeed.permissions.require_external_connection_sink.enabled` is added and set to `false` by default. Enabling this setting restricts users with `CHANGEFEED` on a set of tables to create enterprise changefeeds into external connections only. To use a given external connection, a user typically needs the `USAGE` privilege on it. Note that `ALTER DEFAULT PRIVILEGES` can be used with both the `CHANGEFEED` and `SELECT` privileges to assign coarse-grained permissions (i.e., assign permissions to all tables in a schema rather than manually assign them for each table). +- Deprecated the `PGDUMP` and `MYSQLDUMP` formats for [`IMPORT`]({% link v23.1/import.md %}). They are still present, but will be removed in a future release. See the [Migration Overview]({% link molt/migration-overview.md %}) page for alternatives.

Known limitations

diff --git a/src/current/_includes/releases/v23.1/v23.1.1.md b/src/current/_includes/releases/v23.1/v23.1.1.md index 860c1e56dd2..e4515774edc 100644 --- a/src/current/_includes/releases/v23.1/v23.1.1.md +++ b/src/current/_includes/releases/v23.1/v23.1.1.md @@ -6,7 +6,7 @@ Release Date: May 16, 2023

Bug fixes

-- In CockroachDB v23.1.0 and its testing releases, executing [`COPY`]({% link v23.1/copy.md %}) to a target table that has multiple column families could corrupt the table. If data was copied into a table with existing rows, the data in those rows may be irrecoverable. The data would need to be dropped and re-[copied]({% link v23.1/copy.md %}) to be encoded correctly. This has now been fixed. See [Technical Advisory 103220](https://www.cockroachlabs.com/docs/advisories/a103220) for more information. [#103323][#103323] +- In CockroachDB v23.1.0 and its testing releases, executing [`COPY`]({% link v23.1/copy.md %}) to a target table that has multiple column families could corrupt the table. If data was copied into a table with existing rows, the data in those rows may be irrecoverable. The data would need to be dropped and re-[copied]({% link v23.1/copy.md %}) to be encoded correctly. This has now been fixed. See [Technical Advisory 103220](https://www.cockroachlabs.com/docs/advisories/a103220) for more information.
@@ -15,5 +15,3 @@ Release Date: May 16, 2023 This release includes 2 merged PRs by 2 authors.
- -[#103323]: https://github.com/cockroachdb/cockroach/pull/103323 diff --git a/src/current/_includes/releases/v23.1/v23.1.10.md b/src/current/_includes/releases/v23.1/v23.1.10.md index 63e6b1f0015..49217c448f2 100644 --- a/src/current/_includes/releases/v23.1/v23.1.10.md +++ b/src/current/_includes/releases/v23.1/v23.1.10.md @@ -6,7 +6,7 @@ Release Date: September 18, 2023

Bug fixes

-- Removed buggy [TTL]({% link v23.1/row-level-ttl.md %}) descriptor repair. In v23.1.9, upgrading from v22.2 to v23.1.9 incorrectly removed TTL storage parameters from tables (visible by running `SHOW CREATE TABLE ;`) while attempting to repair the table descriptors. This resulted in the node that attempted to run the TTL job crashing due to a panic caused by the missing TTL storage parameters. Clusters currently on v22.2 should upgrade to v23.1.10 and higher, **not** to v23.1.9. [#110569][#110569] +- Removed buggy [TTL]({% link v23.1/row-level-ttl.md %}) descriptor repair. In v23.1.9, upgrading from v22.2 to v23.1.9 incorrectly removed TTL storage parameters from tables (visible by running `SHOW CREATE TABLE ;`) while attempting to repair the table descriptors. This resulted in the node that attempted to run the TTL job crashing due to a panic caused by the missing TTL storage parameters. Clusters currently on v22.2 should upgrade to v23.1.10 and higher, **not** to v23.1.9.
@@ -15,5 +15,3 @@ Release Date: September 18, 2023 This release includes 2 merged PRs by 2 authors.
- -[#110569]: https://github.com/cockroachdb/cockroach/pull/110569 diff --git a/src/current/_includes/releases/v23.1/v23.1.11.md b/src/current/_includes/releases/v23.1/v23.1.11.md index 1d6bbb627fe..6054df96424 100644 --- a/src/current/_includes/releases/v23.1/v23.1.11.md +++ b/src/current/_includes/releases/v23.1/v23.1.11.md @@ -6,72 +6,72 @@ Release Date: October 2, 2023

SQL language changes

-- Added a new syntax to [`SHOW DEFAULT PRIVILEGES`]({% link v23.1/show-default-privileges.md %}), `SHOW DEFAULT PRIVILEGES FOR GRANTEE ` that shows the default privileges that a grantee received. [#108285][#108285] -- The admin API [database details]({% link v23.1/cluster-api.md %}) endpoint now returns authoritative range statistics. [#108727][#108727] -- Added the [cluster setting](../v23.1/cluster-settings.html) `sql.stats.limit_table_size.enabled`, which controls whether or not CockroachDB enforces the row limit set by `sql.stats.persisted_rows.max` in the `system.statement_statistics` and `system.transaction_statistics` tables. [#108912][#108912] -- Optimized the `sql-stats-compaction` [job](../v23.1/show-jobs.html)'s [delete query](../v23.1/delete.html) to avoid a [full scan](../v23.1/sql-tuning-with-explain.html#issue-full-table-scans). This helps avoid a [transaction retry error](../v23.1/common-errors.html#restart-transaction), which can cause the job to fail. [#108987][#108987] -- Fixed an issue where the UI was missing query text and details when looking at the [SQL activity transactions page]({% link v23.1/ui-sql-dashboard.md %}#transactions) if there were more than 500 transactions or statements. The `crdb_internal.statement_activity` table now includes all statements for a transaction that are in the `crdb_internal.transaction_activity` table. [#109479][#109479] -- Added the `VIEWSYSTEMTABLE` [system privilege]({% link v23.1/security-reference/authorization.md %}#supported-privileges). Users with this privilege have [`SELECT`](../v23.1/selection-queries.html) privileges for all tables in the `system` database. [#109525][#109525] -- The `oidvectortypes` [built-in function]({% link v23.1/functions-and-operators.md %}) has been implemented, which can format an `oidvector`. [#109711][#109711] -- The internal persisted [statistics](../v23.1/cost-based-optimizer.html#table-statistics) table max size check is now done once an hour instead of every 10 minutes. This reduces the risk of serialization errors on the statistics tables. [#109707][#109707] -- Introspection queries will now show the internal `node` user as the owner of tables in [`pg_catalog`]({% link v23.1/pg-catalog.md %}) and [`information_schema`]({% link v23.1/information-schema.md %}). Previously, the owner was shown as `admin`, but that was inaccurate since users with the [`admin` role]({% link v23.1/security-reference/authorization.md %}#admin-role) could not modify these tables in any way. [#109735][#109735] +- Added a new syntax to [`SHOW DEFAULT PRIVILEGES`]({% link v23.1/show-default-privileges.md %}), `SHOW DEFAULT PRIVILEGES FOR GRANTEE ` that shows the default privileges that a grantee received. +- The admin API [database details]({% link v23.1/cluster-api.md %}) endpoint now returns authoritative range statistics. +- Added the [cluster setting](../v23.1/cluster-settings.html) `sql.stats.limit_table_size.enabled`, which controls whether or not CockroachDB enforces the row limit set by `sql.stats.persisted_rows.max` in the `system.statement_statistics` and `system.transaction_statistics` tables. +- Optimized the `sql-stats-compaction` [job](../v23.1/show-jobs.html)'s [delete query](../v23.1/delete.html) to avoid a [full scan](../v23.1/sql-tuning-with-explain.html#issue-full-table-scans). This helps avoid a [transaction retry error](../v23.1/common-errors.html#restart-transaction), which can cause the job to fail. +- Fixed an issue where the UI was missing query text and details when looking at the [SQL activity transactions page]({% link v23.1/ui-sql-dashboard.md %}#transactions) if there were more than 500 transactions or statements. The `crdb_internal.statement_activity` table now includes all statements for a transaction that are in the `crdb_internal.transaction_activity` table. +- Added the `VIEWSYSTEMTABLE` [system privilege]({% link v23.1/security-reference/authorization.md %}#supported-privileges). Users with this privilege have [`SELECT`](../v23.1/selection-queries.html) privileges for all tables in the `system` database. +- The `oidvectortypes` [built-in function]({% link v23.1/functions-and-operators.md %}) has been implemented, which can format an `oidvector`. +- The internal persisted [statistics](../v23.1/cost-based-optimizer.html#table-statistics) table max size check is now done once an hour instead of every 10 minutes. This reduces the risk of serialization errors on the statistics tables. +- Introspection queries will now show the internal `node` user as the owner of tables in [`pg_catalog`]({% link v23.1/pg-catalog.md %}) and [`information_schema`]({% link v23.1/information-schema.md %}). Previously, the owner was shown as `admin`, but that was inaccurate since users with the [`admin` role]({% link v23.1/security-reference/authorization.md %}#admin-role) could not modify these tables in any way.

Operational changes

-- Added the `kv.enqueue_in_replicate_queue_on_span_config_update.enabled` [cluster setting](../v23.1/cluster-settings.html). When set to `true`, [stores](../v23.1/cockroach-start.html#store) in the cluster will enqueue [replicas](../v23.1/architecture/overview.html#architecture-replica) for [replication changes](../v23.1/architecture/replication-layer.html) upon receiving config updates that could affect the replica. This setting is off by default. Enabling this setting speeds up how quickly config-triggered replication changes begin, but adds additional CPU overhead. The overhead scales with the number of leaseholders. [#108812][#108812] -- Added a new [cluster setting](../v23.1/cluster-settings.html) named `server.hot_ranges_request.node.timeout`, with a default value of 5 minutes. The setting controls the maximum amount of time that a [hot ranges request]({% link v23.1/ui-hot-ranges-page.md %}) will spend waiting for a node to provide a response. Set it to `0` to disable timeouts. [#109015][#109015] -- Span stats requests will return a partial result if the request encounters any errors. Errors that would have previously terminated the request are now included in the response. [#109008][#109008] -- [`BACKUP`](../v23.1/backup.html) now skips contacting the ranges for tables on which [`exclude_data_from_backup`](../v23.1/alter-table.html#exclude-a-tables-data-from-backups) is set, and can thus succeed even if an excluded table is unavailable. [#109123][#109123] -- The [RPC]({% link v23.1/architecture/distribution-layer.md %}#grpc) dial and heartbeat timeouts can now be configured via the environment variables `COCKROACH_RPC_DIAL_TIMEOUT` (default 2x `COCKROACH_NETWORK_TIMEOUT` or 2x2=4 seconds) and `COCKROACH_RPC_HEARTBEAT_TIMEOUT` (default 3x `COCKROACH_NETWORK_TIMEOUT` or 3x2=6 seconds). This allows configuring these values independently of `COCKROACH_NETWORK_TIMEOUT`. [#109358][#109358] -- The default [gRPC]({% link v23.1/architecture/distribution-layer.md %}#grpc) server-side send timeout has been increased from 2 seconds to 4 seconds (1x to 2x of `COCKROACH_NETWORK_TIMEOUT`), to avoid spurious connection failures in certain scenarios. This can be controlled via the new environment variable `COCKROACH_RPC_SERVER_TIMEOUT`. [#109620][#109620] -- Added a new gauge [metric](../v23.1/metrics.html) `sql.schema.invalid_objects`. This gauge is periodically updated based on the schedule set by the `sql.schema.telemetry.recurrence` [cluster setting](../v23.1/cluster-settings.html). When the metric is updated, it counts the number of schema objects ([tables](../v23.1/create-table.html), [types](../v23.1/create-type.html), [schemas](../v23.1/create-schema.html), [databases](../v23.1/create-database.html), and [functions](../v23.1/user-defined-functions.html)) that are in an invalid state according to CockroachDB's internal validation checks. This metric is expected to be zero (`0`) in a healthy cluster. If it is not zero, it indicates that there is a problem that must be repaired. [#109733][#109733] -- Added two new [changefeed metrics](../v23.1/monitor-and-debug-changefeeds.html#recommended-changefeed-metrics-to-track): `changefeed.checkpoint_progress` is similar to `changefeed.max_behind_nanos`, but it also supports [metrics labels](../v23.1/monitor-and-debug-changefeeds.html#using-changefeed-metrics-labels). `changefeed.aggregator_progress` tracks the progress of individual aggregators (the lowest timestamp for which all aggregators with the label have emitted all values they're responsible for). [#109744][#109744] +- Added the `kv.enqueue_in_replicate_queue_on_span_config_update.enabled` [cluster setting](../v23.1/cluster-settings.html). When set to `true`, [stores](../v23.1/cockroach-start.html#store) in the cluster will enqueue [replicas](../v23.1/architecture/overview.html#architecture-replica) for [replication changes](../v23.1/architecture/replication-layer.html) upon receiving config updates that could affect the replica. This setting is off by default. Enabling this setting speeds up how quickly config-triggered replication changes begin, but adds additional CPU overhead. The overhead scales with the number of leaseholders. +- Added a new [cluster setting](../v23.1/cluster-settings.html) named `server.hot_ranges_request.node.timeout`, with a default value of 5 minutes. The setting controls the maximum amount of time that a [hot ranges request]({% link v23.1/ui-hot-ranges-page.md %}) will spend waiting for a node to provide a response. Set it to `0` to disable timeouts. +- Span stats requests will return a partial result if the request encounters any errors. Errors that would have previously terminated the request are now included in the response. +- [`BACKUP`](../v23.1/backup.html) now skips contacting the ranges for tables on which [`exclude_data_from_backup`](../v23.1/alter-table.html#exclude-a-tables-data-from-backups) is set, and can thus succeed even if an excluded table is unavailable. +- The [RPC]({% link v23.1/architecture/distribution-layer.md %}#grpc) dial and heartbeat timeouts can now be configured via the environment variables `COCKROACH_RPC_DIAL_TIMEOUT` (default 2x `COCKROACH_NETWORK_TIMEOUT` or 2x2=4 seconds) and `COCKROACH_RPC_HEARTBEAT_TIMEOUT` (default 3x `COCKROACH_NETWORK_TIMEOUT` or 3x2=6 seconds). This allows configuring these values independently of `COCKROACH_NETWORK_TIMEOUT`. +- The default [gRPC]({% link v23.1/architecture/distribution-layer.md %}#grpc) server-side send timeout has been increased from 2 seconds to 4 seconds (1x to 2x of `COCKROACH_NETWORK_TIMEOUT`), to avoid spurious connection failures in certain scenarios. This can be controlled via the new environment variable `COCKROACH_RPC_SERVER_TIMEOUT`. +- Added a new gauge [metric](../v23.1/metrics.html) `sql.schema.invalid_objects`. This gauge is periodically updated based on the schedule set by the `sql.schema.telemetry.recurrence` [cluster setting](../v23.1/cluster-settings.html). When the metric is updated, it counts the number of schema objects ([tables](../v23.1/create-table.html), [types](../v23.1/create-type.html), [schemas](../v23.1/create-schema.html), [databases](../v23.1/create-database.html), and [functions](../v23.1/user-defined-functions.html)) that are in an invalid state according to CockroachDB's internal validation checks. This metric is expected to be zero (`0`) in a healthy cluster. If it is not zero, it indicates that there is a problem that must be repaired. +- Added two new [changefeed metrics](../v23.1/monitor-and-debug-changefeeds.html#recommended-changefeed-metrics-to-track): `changefeed.checkpoint_progress` is similar to `changefeed.max_behind_nanos`, but it also supports [metrics labels](../v23.1/monitor-and-debug-changefeeds.html#using-changefeed-metrics-labels). `changefeed.aggregator_progress` tracks the progress of individual aggregators (the lowest timestamp for which all aggregators with the label have emitted all values they're responsible for).

Command-line changes

-- Removed the command `\demo recommission` from [`cockroach demo`]({% link v23.1/cockroach-demo.md %}). It had been obsolete and non-functional since v20.2. [#108631][#108631] +- Removed the command `\demo recommission` from [`cockroach demo`]({% link v23.1/cockroach-demo.md %}). It had been obsolete and non-functional since v20.2.

DB Console changes

-- Users without the `VIEWCLUSTERSETTINGS` [permission]({% link v23.1/security-reference/authorization.md %}#supported-privileges), but with the `VIEWACTIVITY` or `VIEWACTIVITYREDACTED` permissions, can now see [index recommendations]({% link v23.1/ui-databases-page.md %}#index-recommendations). [#109466][#109466] -- CockroachDB will now show a warning when the time period selected on the [SQL Activity page](../v23.1/ui-overview.html#sql-activity) is older than the oldest data available. [#109468][#109468] +- Users without the `VIEWCLUSTERSETTINGS` [permission]({% link v23.1/security-reference/authorization.md %}#supported-privileges), but with the `VIEWACTIVITY` or `VIEWACTIVITYREDACTED` permissions, can now see [index recommendations]({% link v23.1/ui-databases-page.md %}#index-recommendations). +- CockroachDB will now show a warning when the time period selected on the [SQL Activity page](../v23.1/ui-overview.html#sql-activity) is older than the oldest data available.

Bug fixes

-- Fixed a buggy TTL descriptor repair by removing it. Previously, upgrading from v22.2.x to 23.1.9 incorrectly removed [TTL storage params]({% link v23.1/row-level-ttl.md %}#ttl-storage-parameters) from tables (visible via [`SHOW CREATE TABLE `]({% link v23.1/show-create.md %})) while attempting to repair table descriptors. This resulted in the node that attempts to run the TTL [job](../v23.1/show-jobs.html) crashing due to a panic caused by the missing TTL storage parameters. Clusters currently on v22.2.x should **not** be upgraded to v23.1.9 and should be upgraded directly to v23.1.10 or later. For more information, see [Technical Advisory 110363](../advisories/a110363.html). [#110562][#110562] -- Users with the `VIEWACTIVITY` [privilege]({% link v23.1/security-reference/authorization.md %}#supported-privileges) should be able to see other users' sessions from both the [CLI]({% link v23.1/cockroach-sql.md %}) and the [DB Console]({% link v23.1/ui-overview.md %}). [#108571][#108571] -- Fixed errors on the [**Sessions** page](../v23.1/ui-sessions-page.html) in the [DB Console](../v23.1/ui-overview.html) when a session's memory usage is zero bytes. [#108619][#108619] -- Fixed a bug in [`cockroach demo`]({% link v23.1/cockroach-demo.md %}) whereby `\demo add` could sometimes crash with an error "`index out of range [...] with length ...`". This bug was introduced in v19.x. [#108631][#108631] -- Fixed a bug whereby the command `\demo decommission` in [`cockroach demo`]({% link v23.1/cockroach-demo.md %}) could sometime leave the demo cluster in a broken state. This bug was introduced in v20.2. [#108631][#108631] -- Fixed a bug in the [index](../v23.1/indexes.html) recommendations provided in the [`EXPLAIN`]({% link v23.1/explain.md %}) output where [`ALTER INDEX ... VISIBLE`](../v23.1/alter-index.html) index recommendations may suggest making the wrong index visible when there are multiple invisible indexes in a table. [#108646][#108646] -- Fixed a bug that could cause a query with [`LIMIT`]({% link v23.1/limit-offset.md %}) and [`ORDER BY`](../v23.1/order-by.html) to return results in the wrong order. This bug could cause incorrect results as well if the `LIMIT` was nested within an outer query, e.g. under another `LIMIT`. This bug had existed since before v22.2. [#106798][#106798] -- Fixed a bug with [collated string]({% link v23.1/collate.md %}) type checking with nested [case expressions]({% link v23.1/scalar-expressions.md %}#simple-case-expressions) where an inner case had no explicit collated type. [#108345][#108345] -- Fixed a bug where [`RELEASE SAVEPOINT`]({% link v23.1/release-savepoint.md %}) could incorrectly emit the message `"cannot publish new versions for descriptors"` instead of a [retryable error]({% link v23.1/common-errors.md %}#restart-transaction) to applications. [#108478][#108478] -- Fixed a bug that could cause CPU usage to increase over time. [#108801][#108801] -- Fixed a bug introduced in v22.1 that could cause a [join](../v23.1/joins.html) to infinite-loop in rare cases when (1) the join filter is not an equality and (2) no columns from the left input are returned. [#106875][#106875] -- Users with the `VIEWACTIVITY` [permission]({% link v23.1/security-reference/authorization.md %}#supported-privileges) can now view correct values for the current timezone in the [DB Console]({% link v23.1/ui-overview.md %}). [#108780][#108780] -- Fixed a bug present since v23.1.0 that would cause queries on the `pg_catalog.pg_statistic_ext` table to fail if a table was dropped recently. This bug also caused the `\d` [CLI]({% link v23.1/cockroach-sql.md %}) shortcut to encounter errors. [#108909][#108909] -- Fixed a bug where `pg_attribute` and `pg_attrdef` did not properly return results for generated columns. [#109035][#109035] -- The [Schema Insights](../v23.1/ui-insights-page.html#schema-insights-tab) view should hit request timeouts less frequently, if at all. [#109014][#109014] -- Fixed a bug that caused nodes to crash when attempting to `EXECUTE` a prepared statement with an argument that referenced a [user-defined function]({% link v23.1/user-defined-functions.md %}). This bug was present since user-defined functions were introduced in v22.2. [#108469][#108469] -- Fixed a bug so the filter on the [Statements Page](../v23.1/ui-statements-page.html) works when the app name is an empty string (represented as 'unset'). [#108985][#108985] -- Fixed a bug where a `SpanStatsRequest` would return post-replicated MVCC stats, which was causing incorrect output in [`SHOW RANGES ... WITH DETAILS`]({% link v23.1/show-ranges.md %}). Now, a `SpanStatsRequest` returns the logical MVCC stats for the requested span. [#109234][#109234] -- Fixed an issue with [the "full scan" filter in the UI]({% link v23.1/ui-sql-dashboard.md %}#full-table-index-scans), where the filter was not returning any results. [#109274][#109274] -- Going to the [Transaction Details Page]({% link v23.1/ui-transactions-page.md %}#transaction-details-page) from [Workload Insights > High Contention]({% link v23.1/ui-insights-page.md %}#high-contention) is fixed. Previously, the link would not show any results. [#109253][#109253] -- Fixed the column names on the [`SELECT` queries]({% link v23.1/selection-queries.md %}) against the tables `crdb_internal.node_txn_execution_insights` and `crdb_internal.cluster_txn_execution_insights` during the [creation of debug.zip files]({% link v23.1/cockroach-debug-zip.md %}). [#109515][#109515] -- Fixed a bug that could cause some rows to be silently skipped during [`IMPORT`](../v23.1/import.html) when a node failed. [#109663][#109663] -- Fixed a bug in [geospatial queries]({% link v23.1/spatial-data-overview.md %}) where more rows could be returned by the query than expected. This could happen when a query filter of the form `ST_Distance(geog1, geog2) > constant` or `ST_MaxDistance(geom1, geom2) > constant`, where the operator was one of `>`, `<`, `>=`, `<=`, or a filter of the form `ST_Distance(geog1, geog2, false) = 0` would sometimes mistakenly evaluate to `true` when one or both of the inputs was `NULL` or an empty [geography]({% link v23.1/architecture/glossary.md %}#geography) or [geometry]({% link v23.1/architecture/glossary.md %}#geometry). [#109393][#109393] -- Fixed an issue where a [split](../v23.1/architecture/distribution-layer.html#range-splits) can be called on an invalid key that's in the form of `someValidKey.Next()` during [restore](../v23.1/restore.html). This split key can land in the middle of a row with [column families](../v23.1/column-families.html), and thus result in failing SQL queries when querying the restored table. [#109777][#109777] -- Fixed an issue where a [split](../v23.1/architecture/distribution-layer.html#range-splits) can be called on an invalid key that's in the form of `someValidKey.Next()` during [restore](../v23.1/restore.html) with the `bulkio.restore.use_simple_import_spans` [cluster setting]({% link v23.1/cluster-settings.md %}) set to `true`. This split key can land in the middle of a row with [column families](../v23.1/column-families.html), and thus result in failing SQL queries when querying the restored table. [#109940][#109940] -- The `difference` [built-in function]({% link v23.1/functions-and-operators.md %}) had its return type incorrectly set to [`string`]({% link v23.1/string.md %}) instead of [`integer`]({% link v23.1/int.md %}). [#109752][#109752] -- Fixed a bug where dependencies on [sequences]({% link v23.1/show-sequences.md %}) from [tables]({% link v23.1/show-tables.md %}) would be reported with the wrong value for the `classid` column in the [`pg_catalog.pg_depend` table]({% link v23.1/pg-catalog.md %}). [#110206][#110206] -- Fixed a bug that could cause a [transaction](../v23.1/transactions.html) performing multiple parallel [foreign key]({% link v23.1/foreign-key.md %}) checks to return a `concurrent txn use detected` error. [#110273][#110273] -- Various observability pages in the [DB Console]({% link v23.1/ui-overview.md %}) no longer crash when they encounter zeros (e.g., a session with no memory allocated). [#108785][#108785] +- Fixed a buggy TTL descriptor repair by removing it. Previously, upgrading from v22.2.x to 23.1.9 incorrectly removed [TTL storage params]({% link v23.1/row-level-ttl.md %}#ttl-storage-parameters) from tables (visible via [`SHOW CREATE TABLE `]({% link v23.1/show-create.md %})) while attempting to repair table descriptors. This resulted in the node that attempts to run the TTL [job](../v23.1/show-jobs.html) crashing due to a panic caused by the missing TTL storage parameters. Clusters currently on v22.2.x should **not** be upgraded to v23.1.9 and should be upgraded directly to v23.1.10 or later. For more information, see [Technical Advisory 110363](../advisories/a110363.html). +- Users with the `VIEWACTIVITY` [privilege]({% link v23.1/security-reference/authorization.md %}#supported-privileges) should be able to see other users' sessions from both the [CLI]({% link v23.1/cockroach-sql.md %}) and the [DB Console]({% link v23.1/ui-overview.md %}). +- Fixed errors on the [**Sessions** page](../v23.1/ui-sessions-page.html) in the [DB Console](../v23.1/ui-overview.html) when a session's memory usage is zero bytes. +- Fixed a bug in [`cockroach demo`]({% link v23.1/cockroach-demo.md %}) whereby `\demo add` could sometimes crash with an error "`index out of range [...] with length ...`". This bug was introduced in v19.x. +- Fixed a bug whereby the command `\demo decommission` in [`cockroach demo`]({% link v23.1/cockroach-demo.md %}) could sometime leave the demo cluster in a broken state. This bug was introduced in v20.2. +- Fixed a bug in the [index](../v23.1/indexes.html) recommendations provided in the [`EXPLAIN`]({% link v23.1/explain.md %}) output where [`ALTER INDEX ... VISIBLE`](../v23.1/alter-index.html) index recommendations may suggest making the wrong index visible when there are multiple invisible indexes in a table. +- Fixed a bug that could cause a query with [`LIMIT`]({% link v23.1/limit-offset.md %}) and [`ORDER BY`](../v23.1/order-by.html) to return results in the wrong order. This bug could cause incorrect results as well if the `LIMIT` was nested within an outer query, e.g. under another `LIMIT`. This bug had existed since before v22.2. +- Fixed a bug with [collated string]({% link v23.1/collate.md %}) type checking with nested [case expressions]({% link v23.1/scalar-expressions.md %}#simple-case-expressions) where an inner case had no explicit collated type. +- Fixed a bug where [`RELEASE SAVEPOINT`]({% link v23.1/release-savepoint.md %}) could incorrectly emit the message `"cannot publish new versions for descriptors"` instead of a [retryable error]({% link v23.1/common-errors.md %}#restart-transaction) to applications. +- Fixed a bug that could cause CPU usage to increase over time. +- Fixed a bug introduced in v22.1 that could cause a [join](../v23.1/joins.html) to infinite-loop in rare cases when (1) the join filter is not an equality and (2) no columns from the left input are returned. +- Users with the `VIEWACTIVITY` [permission]({% link v23.1/security-reference/authorization.md %}#supported-privileges) can now view correct values for the current timezone in the [DB Console]({% link v23.1/ui-overview.md %}). +- Fixed a bug present since v23.1.0 that would cause queries on the `pg_catalog.pg_statistic_ext` table to fail if a table was dropped recently. This bug also caused the `\d` [CLI]({% link v23.1/cockroach-sql.md %}) shortcut to encounter errors. +- Fixed a bug where `pg_attribute` and `pg_attrdef` did not properly return results for generated columns. +- The [Schema Insights](../v23.1/ui-insights-page.html#schema-insights-tab) view should hit request timeouts less frequently, if at all. +- Fixed a bug that caused nodes to crash when attempting to `EXECUTE` a prepared statement with an argument that referenced a [user-defined function]({% link v23.1/user-defined-functions.md %}). This bug was present since user-defined functions were introduced in v22.2. +- Fixed a bug so the filter on the [Statements Page](../v23.1/ui-statements-page.html) works when the app name is an empty string (represented as 'unset'). +- Fixed a bug where a `SpanStatsRequest` would return post-replicated MVCC stats, which was causing incorrect output in [`SHOW RANGES ... WITH DETAILS`]({% link v23.1/show-ranges.md %}). Now, a `SpanStatsRequest` returns the logical MVCC stats for the requested span. +- Fixed an issue with [the "full scan" filter in the UI]({% link v23.1/ui-sql-dashboard.md %}#full-table-index-scans), where the filter was not returning any results. +- Going to the [Transaction Details Page]({% link v23.1/ui-transactions-page.md %}#transaction-details-page) from [Workload Insights > High Contention]({% link v23.1/ui-insights-page.md %}#high-contention) is fixed. Previously, the link would not show any results. +- Fixed the column names on the [`SELECT` queries]({% link v23.1/selection-queries.md %}) against the tables `crdb_internal.node_txn_execution_insights` and `crdb_internal.cluster_txn_execution_insights` during the [creation of debug.zip files]({% link v23.1/cockroach-debug-zip.md %}). +- Fixed a bug that could cause some rows to be silently skipped during [`IMPORT`](../v23.1/import.html) when a node failed. +- Fixed a bug in [geospatial queries]({% link v23.1/spatial-data-overview.md %}) where more rows could be returned by the query than expected. This could happen when a query filter of the form `ST_Distance(geog1, geog2) > constant` or `ST_MaxDistance(geom1, geom2) > constant`, where the operator was one of `>`, `<`, `>=`, `<=`, or a filter of the form `ST_Distance(geog1, geog2, false) = 0` would sometimes mistakenly evaluate to `true` when one or both of the inputs was `NULL` or an empty [geography]({% link v23.1/architecture/glossary.md %}#geography) or [geometry]({% link v23.1/architecture/glossary.md %}#geometry). +- Fixed an issue where a [split](../v23.1/architecture/distribution-layer.html#range-splits) can be called on an invalid key that's in the form of `someValidKey.Next()` during [restore](../v23.1/restore.html). This split key can land in the middle of a row with [column families](../v23.1/column-families.html), and thus result in failing SQL queries when querying the restored table. +- Fixed an issue where a [split](../v23.1/architecture/distribution-layer.html#range-splits) can be called on an invalid key that's in the form of `someValidKey.Next()` during [restore](../v23.1/restore.html) with the `bulkio.restore.use_simple_import_spans` [cluster setting]({% link v23.1/cluster-settings.md %}) set to `true`. This split key can land in the middle of a row with [column families](../v23.1/column-families.html), and thus result in failing SQL queries when querying the restored table. +- The `difference` [built-in function]({% link v23.1/functions-and-operators.md %}) had its return type incorrectly set to [`string`]({% link v23.1/string.md %}) instead of [`integer`]({% link v23.1/int.md %}). +- Fixed a bug where dependencies on [sequences]({% link v23.1/show-sequences.md %}) from [tables]({% link v23.1/show-tables.md %}) would be reported with the wrong value for the `classid` column in the [`pg_catalog.pg_depend` table]({% link v23.1/pg-catalog.md %}). +- Fixed a bug that could cause a [transaction](../v23.1/transactions.html) performing multiple parallel [foreign key]({% link v23.1/foreign-key.md %}) checks to return a `concurrent txn use detected` error. +- Various observability pages in the [DB Console]({% link v23.1/ui-overview.md %}) no longer crash when they encounter zeros (e.g., a session with no memory allocated).

Performance improvements

-- Improved the cost of resolving a user-defined [enum](../v23.1/enum.html) type that has many values. [#109470][#109470] -- Queries that access the [`pg_catalog`]({% link v23.1/pg-catalog.md %}) and [`information_schema`]({% link v23.1/information-schema.md %}) that perform introspection on other tables in those schemas are now significantly faster. [#109735][#109735] +- Improved the cost of resolving a user-defined [enum](../v23.1/enum.html) type that has many values. +- Queries that access the [`pg_catalog`]({% link v23.1/pg-catalog.md %}) and [`information_schema`]({% link v23.1/information-schema.md %}) that perform introspection on other tables in those schemas are now significantly faster.
@@ -80,58 +80,3 @@ Release Date: October 2, 2023 This release includes 204 merged PRs by 63 authors.
- -[#106798]: https://github.com/cockroachdb/cockroach/pull/106798 -[#106875]: https://github.com/cockroachdb/cockroach/pull/106875 -[#108285]: https://github.com/cockroachdb/cockroach/pull/108285 -[#108345]: https://github.com/cockroachdb/cockroach/pull/108345 -[#108469]: https://github.com/cockroachdb/cockroach/pull/108469 -[#108478]: https://github.com/cockroachdb/cockroach/pull/108478 -[#108571]: https://github.com/cockroachdb/cockroach/pull/108571 -[#108619]: https://github.com/cockroachdb/cockroach/pull/108619 -[#108631]: https://github.com/cockroachdb/cockroach/pull/108631 -[#108646]: https://github.com/cockroachdb/cockroach/pull/108646 -[#108727]: https://github.com/cockroachdb/cockroach/pull/108727 -[#108780]: https://github.com/cockroachdb/cockroach/pull/108780 -[#108785]: https://github.com/cockroachdb/cockroach/pull/108785 -[#108801]: https://github.com/cockroachdb/cockroach/pull/108801 -[#108812]: https://github.com/cockroachdb/cockroach/pull/108812 -[#108909]: https://github.com/cockroachdb/cockroach/pull/108909 -[#108912]: https://github.com/cockroachdb/cockroach/pull/108912 -[#108985]: https://github.com/cockroachdb/cockroach/pull/108985 -[#108987]: https://github.com/cockroachdb/cockroach/pull/108987 -[#109008]: https://github.com/cockroachdb/cockroach/pull/109008 -[#109014]: https://github.com/cockroachdb/cockroach/pull/109014 -[#109015]: https://github.com/cockroachdb/cockroach/pull/109015 -[#109018]: https://github.com/cockroachdb/cockroach/pull/109018 -[#109035]: https://github.com/cockroachdb/cockroach/pull/109035 -[#109123]: https://github.com/cockroachdb/cockroach/pull/109123 -[#109144]: https://github.com/cockroachdb/cockroach/pull/109144 -[#109195]: https://github.com/cockroachdb/cockroach/pull/109195 -[#109234]: https://github.com/cockroachdb/cockroach/pull/109234 -[#109235]: https://github.com/cockroachdb/cockroach/pull/109235 -[#109253]: https://github.com/cockroachdb/cockroach/pull/109253 -[#109274]: https://github.com/cockroachdb/cockroach/pull/109274 -[#109358]: https://github.com/cockroachdb/cockroach/pull/109358 -[#109393]: https://github.com/cockroachdb/cockroach/pull/109393 -[#109466]: https://github.com/cockroachdb/cockroach/pull/109466 -[#109468]: https://github.com/cockroachdb/cockroach/pull/109468 -[#109470]: https://github.com/cockroachdb/cockroach/pull/109470 -[#109479]: https://github.com/cockroachdb/cockroach/pull/109479 -[#109515]: https://github.com/cockroachdb/cockroach/pull/109515 -[#109525]: https://github.com/cockroachdb/cockroach/pull/109525 -[#109620]: https://github.com/cockroachdb/cockroach/pull/109620 -[#109632]: https://github.com/cockroachdb/cockroach/pull/109632 -[#109663]: https://github.com/cockroachdb/cockroach/pull/109663 -[#109707]: https://github.com/cockroachdb/cockroach/pull/109707 -[#109711]: https://github.com/cockroachdb/cockroach/pull/109711 -[#109733]: https://github.com/cockroachdb/cockroach/pull/109733 -[#109735]: https://github.com/cockroachdb/cockroach/pull/109735 -[#109744]: https://github.com/cockroachdb/cockroach/pull/109744 -[#109752]: https://github.com/cockroachdb/cockroach/pull/109752 -[#109777]: https://github.com/cockroachdb/cockroach/pull/109777 -[#109859]: https://github.com/cockroachdb/cockroach/pull/109859 -[#109940]: https://github.com/cockroachdb/cockroach/pull/109940 -[#110206]: https://github.com/cockroachdb/cockroach/pull/110206 -[#110273]: https://github.com/cockroachdb/cockroach/pull/110273 -[#110562]: https://github.com/cockroachdb/cockroach/pull/110562 diff --git a/src/current/_includes/releases/v23.1/v23.1.12.md b/src/current/_includes/releases/v23.1/v23.1.12.md index dc4729fa249..69f0e74c0cc 100644 --- a/src/current/_includes/releases/v23.1/v23.1.12.md +++ b/src/current/_includes/releases/v23.1/v23.1.12.md @@ -6,83 +6,83 @@ Release Date: November 13, 2023

Security updates

-- The `SIGHUP` signal now clears the cached expiration times for [client certificates]({% link v23.1/cockroach-cert.md %}#how-security-certificates-work) that are reported by the `security.certificate.expiration.client` metric. [#111006][#111006] -- SQL commands that were previously limited to the `admin` [system privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges) can now be used by users with the `VIEWCLUSTERMETADATA` or `REPAIRCLUSTERMETADATA` system privilege, depending on whether the operation is read-only or modifies state. [#111131][#111131] +- The `SIGHUP` signal now clears the cached expiration times for [client certificates]({% link v23.1/cockroach-cert.md %}#how-security-certificates-work) that are reported by the `security.certificate.expiration.client` metric. +- SQL commands that were previously limited to the `admin` [system privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges) can now be used by users with the `VIEWCLUSTERMETADATA` or `REPAIRCLUSTERMETADATA` system privilege, depending on whether the operation is read-only or modifies state.

General changes

-- The maximum permitted value of the `COCKROACH_RPC_INITIAL_WINDOW_SIZE` environment variable has been increased to `64MB`. By increasing this environment variable, in conjunction with tuning OS-level maximum TCP window size, you can increase the throughput that [Raft replication](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer#raft) can sustain over high latency network links. [#111287][#111287] -- Updated Go version to 1.19.13. [#112204][#112204] +- The maximum permitted value of the `COCKROACH_RPC_INITIAL_WINDOW_SIZE` environment variable has been increased to `64MB`. By increasing this environment variable, in conjunction with tuning OS-level maximum TCP window size, you can increase the throughput that [Raft replication](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer#raft) can sustain over high latency network links. +- Updated Go version to 1.19.13.

SQL language changes

-- New datetime built-ins (`make_date`, `make_timestamp`, and `make_timestamptz`) have been added, allowing for the creation of timestamps, timestamps with time zones, and dates. In addition, `date_trunc` now allows for a timestamp to be truncated in a specified timezone (to a specified precision). [#110338][#110338] -- New system privileges `CREATEROLE`, `CREATELOGIN`, `CREATEDB`, and `CONTROLJOB` have been introduced. Each is analogous to its existing [role option]({% link v23.1/create-user.md %}#role-options) counterpart but can additionally be inherited through role membership. [#110359][#110359], [#110359][#110359], [#110359][#110359], [#110359][#110359] -- [`RESTORE`]({% link v23.1/restore.md %}) can now be passed a `WITH EXECUTION LOCALITY` option similar to `BACKUP` to restrict execution of the job to nodes with matching localities. [#110611][#110611] -- The `statement_activity` and `transaction_activity` table column `execution_total_cluster_seconds` is now accurate. The `combinedstmts` endpoint returns the correct value for the `StmtsTotalRuntimeSecs` and `TxnsTotalRuntimeSecs` properties. [#109639][#109639] -- The `discard` [log message]({% link v23.1/logging-overview.md %}) is now limited to once per minute by default. The message now includes both the number of transactions and the number of statements that were discarded. [#110983][#110983] +- New datetime built-ins (`make_date`, `make_timestamp`, and `make_timestamptz`) have been added, allowing for the creation of timestamps, timestamps with time zones, and dates. In addition, `date_trunc` now allows for a timestamp to be truncated in a specified timezone (to a specified precision). +- New system privileges `CREATEROLE`, `CREATELOGIN`, `CREATEDB`, and `CONTROLJOB` have been introduced. Each is analogous to its existing [role option]({% link v23.1/create-user.md %}#role-options) counterpart but can additionally be inherited through role membership.,,, +- [`RESTORE`]({% link v23.1/restore.md %}) can now be passed a `WITH EXECUTION LOCALITY` option similar to `BACKUP` to restrict execution of the job to nodes with matching localities. +- The `statement_activity` and `transaction_activity` table column `execution_total_cluster_seconds` is now accurate. The `combinedstmts` endpoint returns the correct value for the `StmtsTotalRuntimeSecs` and `TxnsTotalRuntimeSecs` properties. +- The `discard` [log message]({% link v23.1/logging-overview.md %}) is now limited to once per minute by default. The message now includes both the number of transactions and the number of statements that were discarded.

Operational changes

-- The [`cockroach debug zip`](https://www.cockroachlabs.com/docs/v23.1/cockroach-debug-zip.md) command now has an option to omit goroutine stack dumps. This impacts the creation of `nodes/*/stacks.txt` and `nodes/*/stacks_with_labels.txt` within debug ZIP bundles. Users can opt to exclude these goroutine stacks by using the `--include-goroutine-stacks=false` flag. Fetching stack traces for all goroutines is a "stop-the-world" operation, which can momentarily but significantly increase SQL service latency. Any periodic goroutine dumps previously taken on the node will still be included in `nodes/*/goroutines/*.txt.gz`, since they have already been generated and don't require any stop-the-world operations. [#110266][#110266] -- Requests for database details or table details from the UI, or usages of `SHOW RANGES WITH DETAILS` are no longer subject to errors if the number of requested spans is too large. [#109902][#109902] -- Added a new [metric]({% link v23.1/metrics.md %}) `changefeed.lagging_ranges` that shows the number of [ranges](https://www.cockroachlabs.com/docs/v22.2/architecture/overview#architecture-range) which are behind in changefeeds. This metric can be used with the [`metrics_label` changefeed option]({% link v23.1/create-changefeed.md %}#options). The calculation of this metric is controlled by two new [cluster settings]({% link v23.1/cluster-settings.md %}): (1) `lagging_ranges_threshold`, with a default of 3 minutes, is the amount of time a range needs to be behind to be considered lagging, and (2) `lagging_ranges_polling_interval`, with a default of 1 minute, controls how often the lagging ranges calculation is done. Note that polling adds latency to the metric being updated. For example, if a range falls behind by 3 minutes, the metric may not update until an additional minute afterwards. Also note that ranges undergoing an initial scan for longer than the threshold are considered to be lagging. Starting a changefeed with an initial scan on a large table will likely increment the metric for each range in the table. However, as ranges complete the initial scan, the number of lagging ranges will decrease. [#110963][#110963] -- The [DB Console]({% link v23.1/ui-overview.md %}) now constructs client-side requests using relative URLs instead of absolute ones. This enables proxying of the DB Console at arbitrary subpaths. [#111652][#111652] +- The [`cockroach debug zip`](https://www.cockroachlabs.com/docs/v23.1/cockroach-debug-zip.md) command now has an option to omit goroutine stack dumps. This impacts the creation of `nodes/*/stacks.txt` and `nodes/*/stacks_with_labels.txt` within debug ZIP bundles. Users can opt to exclude these goroutine stacks by using the `--include-goroutine-stacks=false` flag. Fetching stack traces for all goroutines is a "stop-the-world" operation, which can momentarily but significantly increase SQL service latency. Any periodic goroutine dumps previously taken on the node will still be included in `nodes/*/goroutines/*.txt.gz`, since they have already been generated and don't require any stop-the-world operations. +- Requests for database details or table details from the UI, or usages of `SHOW RANGES WITH DETAILS` are no longer subject to errors if the number of requested spans is too large. +- Added a new [metric]({% link v23.1/metrics.md %}) `changefeed.lagging_ranges` that shows the number of [ranges](https://www.cockroachlabs.com/docs/v22.2/architecture/overview#architecture-range) which are behind in changefeeds. This metric can be used with the [`metrics_label` changefeed option]({% link v23.1/create-changefeed.md %}#options). The calculation of this metric is controlled by two new [cluster settings]({% link v23.1/cluster-settings.md %}): (1) `lagging_ranges_threshold`, with a default of 3 minutes, is the amount of time a range needs to be behind to be considered lagging, and (2) `lagging_ranges_polling_interval`, with a default of 1 minute, controls how often the lagging ranges calculation is done. Note that polling adds latency to the metric being updated. For example, if a range falls behind by 3 minutes, the metric may not update until an additional minute afterwards. Also note that ranges undergoing an initial scan for longer than the threshold are considered to be lagging. Starting a changefeed with an initial scan on a large table will likely increment the metric for each range in the table. However, as ranges complete the initial scan, the number of lagging ranges will decrease. +- The [DB Console]({% link v23.1/ui-overview.md %}) now constructs client-side requests using relative URLs instead of absolute ones. This enables proxying of the DB Console at arbitrary subpaths. - Added a new [cluster setting]({% link v23.1/cluster-settings.md %}) `server.http.base_path` that controls the redirection of the browser after successful login with [OIDC SSO]({% link v23.1/sso-db-console.md %}). Most users do not need to modify this setting. However, it is helpful in cases where CockroachDB is running behind a load balancer or proxy that serves CockroachDB under a subpath, such as `https:// /crdb/ `. In those cases, it is necessary for the browser to redirect to `/ crdb` after login instead of `/`, which has always been the hard-coded default.[#112038][#112038]

DB Console changes

-- Non-admin users can now view the [**Database**, **Database Details**, and **Database table** pages]({% link v23.1/ui-databases-page.md %}). [#110342][#110342] -- The [SQL Connection Rate metric]({% link v23.1/ui-sql-dashboard.md %}#sql-connection-rate) on the [SQL Dashboard]({% link v23.1/ui-sql-dashboard.md %}) is downsampled using the MAX function instead of SUM. This improves situations where zooming out would cause the connection rate to increase for downsampled data. [#110497][#110497] -- Fixed a bug in DB Console's [Statement Diagnostic page]({% link cockroachcloud/statements-page.md %}#diagnostics) that could cause the page to crash if the response was larger than 50 KB. The page now keeps pulling results until no maximum size errors are encountered. [#111278][#111278] -- Fixed an error on the [SQL Activity page]({% link v23.1/ui-overview.md %}#sql-activity) when there was a workload, and then the workload stopped so that no queries ran against the database in the last hour. [#111496][#111496] -- The [**Jobs** table]({% link v23.1/ui-jobs-page.md %}) will now correctly display timestamps for creation, last modified, and the completed time fields. [#111901][#111901] -- The `Reset Sql Stats` button is now visible to users with the admin role on the DB Console. [#110256][#110256] -- Reduced memory usage in [SQL activity]({% link cockroachcloud/statements-page.md %}) jobs. [#112323][#112323] +- Non-admin users can now view the [**Database**, **Database Details**, and **Database table** pages]({% link v23.1/ui-databases-page.md %}). +- The [SQL Connection Rate metric]({% link v23.1/ui-sql-dashboard.md %}#sql-connection-rate) on the [SQL Dashboard]({% link v23.1/ui-sql-dashboard.md %}) is downsampled using the MAX function instead of SUM. This improves situations where zooming out would cause the connection rate to increase for downsampled data. +- Fixed a bug in DB Console's [Statement Diagnostic page]({% link cockroachcloud/statements-page.md %}#diagnostics) that could cause the page to crash if the response was larger than 50 KB. The page now keeps pulling results until no maximum size errors are encountered. +- Fixed an error on the [SQL Activity page]({% link v23.1/ui-overview.md %}#sql-activity) when there was a workload, and then the workload stopped so that no queries ran against the database in the last hour. +- The [**Jobs** table]({% link v23.1/ui-jobs-page.md %}) will now correctly display timestamps for creation, last modified, and the completed time fields. +- The `Reset Sql Stats` button is now visible to users with the admin role on the DB Console. +- Reduced memory usage in [SQL activity]({% link cockroachcloud/statements-page.md %}) jobs.

Bug fixes

-- The new backup option `updates_cluster_monitoring_metrics` tracks the timestamp of the last backup failure due to a KMS error. This option is disabled by default. [#111310][#111310] -- Fixed a bug where vectorized `COPY FROM` could produce a plan with more than one RenderNodes, when only zero or one should be allowed. This could result in multiple render nodes in a table with a hash sharded primary key. [#111412][#111412] -- Fixed a bug that caused CockroachDB to stop collecting new statistics about [Statement fingerprints]({% link v23.1/ui-statements-page.md %}#statement-fingerprint-page) and [Transaction fingerprints]({% link v23.1/ui-transactions-page.md %}). [#111641][#111641] -- Fixed a bug where, internally, printing a 0 decimal with a very low exponent uses excessive memory. The [DECIMAL](https://www.cockroachlabs.com/docs/v23.1/decimal.md) type type is not impacted, but `crdb_internal` functions may be. [#110564][#110564] -- Fixed a bug where executing the [`EXPORT INTO PARQUET`]({% link v23.1/export.md %}#export-a-table-into-parquet) statement could cause an [out-of-memory crash (OOM)]({% link v23.1/cluster-setup-troubleshooting.md %}#out-of-memory-oom-crash). Now, if memory is exceeded, the `EXPORT INTO PARQUET` statement returns an error. If you see an error related to memory, retry the `EXPORT INTO PARQUET` statement using a smaller value for the [`chunk_rows` option]({% link v23.1/export.md %}#export-options). Cockroach Labs [recommends using changefeeds to export data]({% link v23.1/export-data-with-changefeeds.md %}) because they provide better performance for growing workloads. Additionally, changefeeds [operate as jobs]({% link v23.1/show-jobs.md %}), which offer [observability]({% link v23.1/monitor-and-debug-changefeeds.md %}) and [job management]({% link v23.1/create-and-configure-changefeeds.md %}). [#110717][#110717] [#110717][#110717] -- Added limited `statement_statistics` to the `debug.zip` output. [#110662][#110662] -- Fixed a nil dereference panic during node startup that could be caused by an incorrect initialization order. [#109684][#109684] +- The new backup option `updates_cluster_monitoring_metrics` tracks the timestamp of the last backup failure due to a KMS error. This option is disabled by default. +- Fixed a bug where vectorized `COPY FROM` could produce a plan with more than one RenderNodes, when only zero or one should be allowed. This could result in multiple render nodes in a table with a hash sharded primary key. +- Fixed a bug that caused CockroachDB to stop collecting new statistics about [Statement fingerprints]({% link v23.1/ui-statements-page.md %}#statement-fingerprint-page) and [Transaction fingerprints]({% link v23.1/ui-transactions-page.md %}). +- Fixed a bug where, internally, printing a 0 decimal with a very low exponent uses excessive memory. The [DECIMAL](https://www.cockroachlabs.com/docs/v23.1/decimal.md) type type is not impacted, but `crdb_internal` functions may be. +- Fixed a bug where executing the [`EXPORT INTO PARQUET`]({% link v23.1/export.md %}#export-a-table-into-parquet) statement could cause an [out-of-memory crash (OOM)]({% link v23.1/cluster-setup-troubleshooting.md %}#out-of-memory-oom-crash). Now, if memory is exceeded, the `EXPORT INTO PARQUET` statement returns an error. If you see an error related to memory, retry the `EXPORT INTO PARQUET` statement using a smaller value for the [`chunk_rows` option]({% link v23.1/export.md %}#export-options). Cockroach Labs [recommends using changefeeds to export data]({% link v23.1/export-data-with-changefeeds.md %}) because they provide better performance for growing workloads. Additionally, changefeeds [operate as jobs]({% link v23.1/show-jobs.md %}), which offer [observability]({% link v23.1/monitor-and-debug-changefeeds.md %}) and [job management]({% link v23.1/create-and-configure-changefeeds.md %}). +- Added limited `statement_statistics` to the `debug.zip` output. +- Fixed a nil dereference panic during node startup that could be caused by an incorrect initialization order. - Fixed a bug where the [`BEGIN` statement]({% link v23.1/begin-transaction.md %}) incorrectly displayed a transaction ID in telemetry logs. It now correctly shows no transaction ID, since there is no open transaction when `BEGIN` is executed.[#109840][#109840] -- Fixed a bug that could cause a transaction performing multiple parallel foreign key checks to return a `concurrent txn use detected` error. [#109849][#109849] -- Fixed a bug where dependencies on sequences from tables would be reported with the wrong value for the `classid` column in the `pg_catalog.pg_depend` table. [#110207][#110207] -- Fixed edge cases in decimal and float evaluation for division operators. `'NaN'::DECIMAL / 0` will now return `NaN` instead of a division-by-zero error, and `0 / 'inf'::DECIMAL` will return `0` instead of `0E-2019`. [#110296][#110296] -- Fixed a DB Console issue where the `DROP_UNUSED` index recommendations produced by the table details page produced an invalid `DROP INDEX` statement. [#110453][#110453] -- Executing two [`ALTER RANGE default CONFIGURE ZONE`]({% link v23.1/alter-range.md %}#configure-zone) statements on the same line no longer triggers an error. [#110337][#110337] -- Removed a buggy TTL descriptor repair. Previously, upgrading from v22.2.x to 23.1.9 incorrectly removed [TTL storage parameters]({% link v23.1/row-level-ttl.md %}#ttl-storage-parameters) from tables (visible via [`SHOW CREATE TABLE `]({% link v23.1/show-create.md %})) while attempting to repair table descriptors. A node that attempts to run the TTL [job](https://www.cockroachlabs.com/docs/v23.1/show-jobs.html) could crash due to a panic caused by the missing TTL storage parameters. Clusters currently on v22.2.x should **not** be upgraded to v23.1.9, but should move directly to v23.1.10 or later. For more information, refer to [Technical Advisory 110363](../advisories/a110363.html). [#110500][#110500] -- Fixed a performance regression when disabling `sql.metrics.statement_details.enabled`, which caused execution stats to be collected for all queries instead of the default 1% of queries. [#109881][#109881] -- `cockroach debug pebble` commands now work correctly with encrypted stores which don't use the default `cockroach-data` path, and you no longer need to pass the `--store` option. [#110507][#110507] -- The [**Database** pages]({% link cockroachcloud/databases-page.md %}) no longer displays `undefined` regions or outdated node information. [#110741][#110741] -- Fixed a bug where `RESET (ttl_expire_after)` could incorrectly remove `ttl_expiration_expression`. [#110746][#110746] -- Fixed a bug where an [`ALTER TABLE ... ADD CONSTRAINT CHECK ...`]({% link v23.1/alter-table.md %}#add-constraint) statement with a user-defined function (UDF) in the `CHECK` could cause a validation error. [#110720][#110720] -- Fixed a bug where `CREATE INDEX` for [partial indexes]({% link v23.1/partial-indexes.md %}) could fail with `ERROR: duplicate key value violates unique constraint` if concurrent inserts happened simultaneously. [#110584][#110584] -- Fixed a bug where a [`CREATE TABLE`]({% link v23.1/create-table.md %}) command with an `IDENTITY` column did not properly propagate the type of the column into the sequence. [#111014][#111014] -- Fixed a bug where the `format_type` built-in did not honor `typemod` information for array types, leading to incorrect output. [#110940][#110940] -- Fixed compaction behavior to prevent rapid sublevel growth when removing replicas from a store, such as during decommissioning. [#111141][#111141] -- Fixed a bug that could occur when the [multiple active portals]({% link v23.1/postgresql-compatibility.md %}#multiple-active-portals) execution mode (Preview) was enabled to evaluate queries such as lookup joins. The bug could result in an internal error like `unexpected 40960 leftover bytes` if the portal was not fully consumed. [#110666][#110666] -- External connection URLs now accept the scheme `azure-blob` for connections to Azure Blob Storage and the scheme `azure-kms` for connections to Azure KMS. For backward compatibility, schemes `azure` and `azure-storage` schemes continue to work for connections to Azure Blob Storage. [#111246][#111246] -- Fixed a bug where changing the setting `server.telemetry.hot_ranges_stats.interval` had no effect. [#111373][#111373] -- Added a check for values before using `mean` on the DB Console [Plan Details page]({% link v23.1/ui-statements-page.md %}), fixing a crash. [#111505][#111505] -- Fixed a bug where dependencies on sequences from tables would be reported with the wrong value for the `classid` column in the `pg_catalog.pg_depend` table. [#111600][#111600] -- Fixed a bug where `atttypmod` in `pg_attribute` was not populated for [`TIMESTAMP`]({% link v23.1/timestamp.md %}) / [`INTERVAL`]({% link v23.1/interval.md %}) types, which meant that ORMs could not know the precision of these types properly. [#111727][#111727] -- Fixed a bug in the DB Console [Transaction Insight Details]({% link v23.1/ui-insights-page.md %}) page , which showed contention details of other transactions. Now, CockroachDB will only surface contention details for the current transaction. [#111880][#111880] -- Fixed a bug where `indoption` inside `pg_index` was not properly encoded. Clients were unable to decode it as `int2vector`. [#111957][#111957] -- RPC failures on writes now use the parallel commit protocol and execute in parallel to the commit operation. This change prevents incorrect retryable failures and `transaction unexpectedly committed` assertions by detecting when writes cannot be retried idempotently, instead returning an `AmbiguousResultError`. [#111876][#111876] -- Fixed a bug that prevented the [optimizer]({% link v23.1/cost-based-optimizer.md %}) from honoring the `statement_timeout` session setting when generating constrained index scans for queries with large `IN` lists or `= ANY` predicates on multiple index key columns. This bug could cause an Out-of-Memory (OOM) condition on the node. [#112076][#112076] -- Fixed a bug that caused internal errors during query optimization in rare cases. The bug has been present since version v2.1.11, but it is more likely to occur in version v21.2.0 and later, though it is still rare. The bug only presents when a query contains `min` and `max` [aggregate functions]({% link v23.1/functions-and-operators.md %}#aggregate-functions) [#112254][#112254] -- Fixed a bug where a lookup or index join on a table with at least three column families could be evaluated incorrectly, leading to a "non-nullable column with no value" error or incorrect query results. The bug was introduced in v22.2. [#113107][#113107] -- Fixed a bug that could cause internal errors or panics while attempting to forecast statistics on a numeric column. [#113881][#113881] +- Fixed a bug that could cause a transaction performing multiple parallel foreign key checks to return a `concurrent txn use detected` error. +- Fixed a bug where dependencies on sequences from tables would be reported with the wrong value for the `classid` column in the `pg_catalog.pg_depend` table. +- Fixed edge cases in decimal and float evaluation for division operators. `'NaN'::DECIMAL / 0` will now return `NaN` instead of a division-by-zero error, and `0 / 'inf'::DECIMAL` will return `0` instead of `0E-2019`. +- Fixed a DB Console issue where the `DROP_UNUSED` index recommendations produced by the table details page produced an invalid `DROP INDEX` statement. +- Executing two [`ALTER RANGE default CONFIGURE ZONE`]({% link v23.1/alter-range.md %}#configure-zone) statements on the same line no longer triggers an error. +- Removed a buggy TTL descriptor repair. Previously, upgrading from v22.2.x to 23.1.9 incorrectly removed [TTL storage parameters]({% link v23.1/row-level-ttl.md %}#ttl-storage-parameters) from tables (visible via [`SHOW CREATE TABLE `]({% link v23.1/show-create.md %})) while attempting to repair table descriptors. A node that attempts to run the TTL [job](https://www.cockroachlabs.com/docs/v23.1/show-jobs.html) could crash due to a panic caused by the missing TTL storage parameters. Clusters currently on v22.2.x should **not** be upgraded to v23.1.9, but should move directly to v23.1.10 or later. For more information, refer to [Technical Advisory 110363](../advisories/a110363.html). +- Fixed a performance regression when disabling `sql.metrics.statement_details.enabled`, which caused execution stats to be collected for all queries instead of the default 1% of queries. +- `cockroach debug pebble` commands now work correctly with encrypted stores which don't use the default `cockroach-data` path, and you no longer need to pass the `--store` option. +- The [**Database** pages]({% link cockroachcloud/databases-page.md %}) no longer displays `undefined` regions or outdated node information. +- Fixed a bug where `RESET (ttl_expire_after)` could incorrectly remove `ttl_expiration_expression`. +- Fixed a bug where an [`ALTER TABLE ... ADD CONSTRAINT CHECK ...`]({% link v23.1/alter-table.md %}#add-constraint) statement with a user-defined function (UDF) in the `CHECK` could cause a validation error. +- Fixed a bug where `CREATE INDEX` for [partial indexes]({% link v23.1/partial-indexes.md %}) could fail with `ERROR: duplicate key value violates unique constraint` if concurrent inserts happened simultaneously. +- Fixed a bug where a [`CREATE TABLE`]({% link v23.1/create-table.md %}) command with an `IDENTITY` column did not properly propagate the type of the column into the sequence. +- Fixed a bug where the `format_type` built-in did not honor `typemod` information for array types, leading to incorrect output. +- Fixed compaction behavior to prevent rapid sublevel growth when removing replicas from a store, such as during decommissioning. +- Fixed a bug that could occur when the [multiple active portals]({% link v23.1/postgresql-compatibility.md %}#multiple-active-portals) execution mode (Preview) was enabled to evaluate queries such as lookup joins. The bug could result in an internal error like `unexpected 40960 leftover bytes` if the portal was not fully consumed. +- External connection URLs now accept the scheme `azure-blob` for connections to Azure Blob Storage and the scheme `azure-kms` for connections to Azure KMS. For backward compatibility, schemes `azure` and `azure-storage` schemes continue to work for connections to Azure Blob Storage. +- Fixed a bug where changing the setting `server.telemetry.hot_ranges_stats.interval` had no effect. +- Added a check for values before using `mean` on the DB Console [Plan Details page]({% link v23.1/ui-statements-page.md %}), fixing a crash. +- Fixed a bug where dependencies on sequences from tables would be reported with the wrong value for the `classid` column in the `pg_catalog.pg_depend` table. +- Fixed a bug where `atttypmod` in `pg_attribute` was not populated for [`TIMESTAMP`]({% link v23.1/timestamp.md %}) / [`INTERVAL`]({% link v23.1/interval.md %}) types, which meant that ORMs could not know the precision of these types properly. +- Fixed a bug in the DB Console [Transaction Insight Details]({% link v23.1/ui-insights-page.md %}) page , which showed contention details of other transactions. Now, CockroachDB will only surface contention details for the current transaction. +- Fixed a bug where `indoption` inside `pg_index` was not properly encoded. Clients were unable to decode it as `int2vector`. +- RPC failures on writes now use the parallel commit protocol and execute in parallel to the commit operation. This change prevents incorrect retryable failures and `transaction unexpectedly committed` assertions by detecting when writes cannot be retried idempotently, instead returning an `AmbiguousResultError`. +- Fixed a bug that prevented the [optimizer]({% link v23.1/cost-based-optimizer.md %}) from honoring the `statement_timeout` session setting when generating constrained index scans for queries with large `IN` lists or `= ANY` predicates on multiple index key columns. This bug could cause an Out-of-Memory (OOM) condition on the node. +- Fixed a bug that caused internal errors during query optimization in rare cases. The bug has been present since version v2.1.11, but it is more likely to occur in version v21.2.0 and later, though it is still rare. The bug only presents when a query contains `min` and `max` [aggregate functions]({% link v23.1/functions-and-operators.md %}#aggregate-functions) +- Fixed a bug where a lookup or index join on a table with at least three column families could be evaluated incorrectly, leading to a "non-nullable column with no value" error or incorrect query results. The bug was introduced in v22.2. +- Fixed a bug that could cause internal errors or panics while attempting to forecast statistics on a numeric column.

Performance improvements

-- Queries that compare collated strings now use less memory and may execute faster. [#110147][#110147] -- Reduced the impact of high-concurrency blind writes to the same key on goroutine scheduling latency. [#109370][#109370] +- Queries that compare collated strings now use less memory and may execute faster. +- Reduced the impact of high-concurrency blind writes to the same key on goroutine scheduling latency.
@@ -91,71 +91,3 @@ Release Date: November 13, 2023 This release includes 207 merged PRs by 64 authors.
- -[#109370]: https://github.com/cockroachdb/cockroach/pull/109370 -[#109639]: https://github.com/cockroachdb/cockroach/pull/109639 -[#109684]: https://github.com/cockroachdb/cockroach/pull/109684 -[#109840]: https://github.com/cockroachdb/cockroach/pull/109840 -[#109849]: https://github.com/cockroachdb/cockroach/pull/109849 -[#109881]: https://github.com/cockroachdb/cockroach/pull/109881 -[#109902]: https://github.com/cockroachdb/cockroach/pull/109902 -[#110147]: https://github.com/cockroachdb/cockroach/pull/110147 -[#110207]: https://github.com/cockroachdb/cockroach/pull/110207 -[#110246]: https://github.com/cockroachdb/cockroach/pull/110246 -[#110256]: https://github.com/cockroachdb/cockroach/pull/110256 -[#110266]: https://github.com/cockroachdb/cockroach/pull/110266 -[#110296]: https://github.com/cockroachdb/cockroach/pull/110296 -[#110337]: https://github.com/cockroachdb/cockroach/pull/110337 -[#110338]: https://github.com/cockroachdb/cockroach/pull/110338 -[#110342]: https://github.com/cockroachdb/cockroach/pull/110342 -[#110359]: https://github.com/cockroachdb/cockroach/pull/110359 -[#110369]: https://github.com/cockroachdb/cockroach/pull/110369 -[#110453]: https://github.com/cockroachdb/cockroach/pull/110453 -[#110497]: https://github.com/cockroachdb/cockroach/pull/110497 -[#110500]: https://github.com/cockroachdb/cockroach/pull/110500 -[#110507]: https://github.com/cockroachdb/cockroach/pull/110507 -[#110564]: https://github.com/cockroachdb/cockroach/pull/110564 -[#110584]: https://github.com/cockroachdb/cockroach/pull/110584 -[#110588]: https://github.com/cockroachdb/cockroach/pull/110588 -[#110611]: https://github.com/cockroachdb/cockroach/pull/110611 -[#110662]: https://github.com/cockroachdb/cockroach/pull/110662 -[#110666]: https://github.com/cockroachdb/cockroach/pull/110666 -[#110680]: https://github.com/cockroachdb/cockroach/pull/110680 -[#110717]: https://github.com/cockroachdb/cockroach/pull/110717 -[#110720]: https://github.com/cockroachdb/cockroach/pull/110720 -[#110741]: https://github.com/cockroachdb/cockroach/pull/110741 -[#110746]: https://github.com/cockroachdb/cockroach/pull/110746 -[#110940]: https://github.com/cockroachdb/cockroach/pull/110940 -[#110963]: https://github.com/cockroachdb/cockroach/pull/110963 -[#110983]: https://github.com/cockroachdb/cockroach/pull/110983 -[#111006]: https://github.com/cockroachdb/cockroach/pull/111006 -[#111014]: https://github.com/cockroachdb/cockroach/pull/111014 -[#111058]: https://github.com/cockroachdb/cockroach/pull/111058 -[#111075]: https://github.com/cockroachdb/cockroach/pull/111075 -[#111131]: https://github.com/cockroachdb/cockroach/pull/111131 -[#111141]: https://github.com/cockroachdb/cockroach/pull/111141 -[#111246]: https://github.com/cockroachdb/cockroach/pull/111246 -[#111278]: https://github.com/cockroachdb/cockroach/pull/111278 -[#111287]: https://github.com/cockroachdb/cockroach/pull/111287 -[#111310]: https://github.com/cockroachdb/cockroach/pull/111310 -[#111373]: https://github.com/cockroachdb/cockroach/pull/111373 -[#111412]: https://github.com/cockroachdb/cockroach/pull/111412 -[#111496]: https://github.com/cockroachdb/cockroach/pull/111496 -[#111505]: https://github.com/cockroachdb/cockroach/pull/111505 -[#111600]: https://github.com/cockroachdb/cockroach/pull/111600 -[#111641]: https://github.com/cockroachdb/cockroach/pull/111641 -[#111652]: https://github.com/cockroachdb/cockroach/pull/111652 -[#111727]: https://github.com/cockroachdb/cockroach/pull/111727 -[#111876]: https://github.com/cockroachdb/cockroach/pull/111876 -[#111880]: https://github.com/cockroachdb/cockroach/pull/111880 -[#111901]: https://github.com/cockroachdb/cockroach/pull/111901 -[#111957]: https://github.com/cockroachdb/cockroach/pull/111957 -[#112038]: https://github.com/cockroachdb/cockroach/pull/112038 -[#112076]: https://github.com/cockroachdb/cockroach/pull/112076 -[#112204]: https://github.com/cockroachdb/cockroach/pull/112204 -[#112254]: https://github.com/cockroachdb/cockroach/pull/112254 -[#112323]: https://github.com/cockroachdb/cockroach/pull/112323 -[#113107]: https://github.com/cockroachdb/cockroach/pull/113107 -[#113881]: https://github.com/cockroachdb/cockroach/pull/113881 -[5b78f1812]: https://github.com/cockroachdb/cockroach/commit/5b78f1812 -[d3ec7909c]: https://github.com/cockroachdb/cockroach/commit/d3ec7909c diff --git a/src/current/_includes/releases/v23.1/v23.1.13.md b/src/current/_includes/releases/v23.1/v23.1.13.md index 240b565113b..a973514264b 100644 --- a/src/current/_includes/releases/v23.1/v23.1.13.md +++ b/src/current/_includes/releases/v23.1/v23.1.13.md @@ -8,46 +8,46 @@ Release Date: December 11, 2023 - A new option for the [`RESTORE`](https://www.cockroachlabs.com/docs/v23.1/restore.html) syntax, `strip_localities`, has been added. This can be used to strip the [locality information](https://www.cockroachlabs.com/docs/v23.1/alter-table.html#set-locality) from a backup when there are mismatched [cluster regions](https://www.cockroachlabs.com/docs/v23.1/multiregion-overview.html#cluster-regions) between the backup's cluster and the target cluster. The following are behaviors that will most likely not be encountered with the specific use case that this patch provides, but are documented nonetheless: - Adding a [primary region](https://www.cockroachlabs.com/docs/v23.1/alter-database.html#set-primary-region) to a regionless restore (with or without [regional by row table(s)](https://www.cockroachlabs.com/docs/v23.1/table-localities.html#regional-by-row-tables)) will not work out-of-the-box, but does produce an accurate message instructing a user to [`DROP TYPE {database}.public.crdb_internal_region;`](https://www.cockroachlabs.com/docs/v23.1/drop-type.html) (and for cluster restores, [`ALTER DATABASE {database} CONFIGURE ZONE DISCARD;`](https://www.cockroachlabs.com/docs/v23.1/alter-database.html#remove-a-replication-zone)). - - Restoring a cluster/database/table with a [regional by row table](https://www.cockroachlabs.com/docs/v23.1/table-localities.html#regional-by-row-tables) will not work out-of-the box. In particular, when performing writes, the [`crdb_region` column](https://www.cockroachlabs.com/docs/v23.1/alter-table.html#crdb_region) needs to specify the region of the new row(s) being written to the table. The user will need to alter said column and set a default that makes sense, along with discarding the [zone configuration](https://www.cockroachlabs.com/docs/v23.1/configure-replication-zones.html) (this latter is due to the fact that the zone config holds all outdated info related to the [partitions](https://www.cockroachlabs.com/docs/v23.1/partitioning.html), [constraints](https://www.cockroachlabs.com/docs/v23.1/constraints.html), etc.). These are due to a conflict with the `crdb_region` column already being present in the regionless restore. This column specifies each row's home region and is a prefix to the table's primary key. Stripping localities does not touch this column as it would be an expensive operation that includes rewriting the entire table. [#111863][#111863] -- The [`RESTORE`](https://www.cockroachlabs.com/docs/v23.1/restore.html) option `strip_localities` has been renamed to `remove_regions`. [#111863][#111863] -- You can no longer perform a [`RESTORE`](https://www.cockroachlabs.com/docs/v23.1/restore.html) with the `remove_regions` option if the object being restored contains a [regional by row table](https://www.cockroachlabs.com/docs/v23.1/table-localities.html#regional-by-row-tables). [#111863][#111863] -- Added a [builtin function](https://www.cockroachlabs.com/docs/v23.1/functions-and-operators.html) `jsonb_array_to_string_array` that converts a [JSONB](https://www.cockroachlabs.com/docs/v23.1/jsonb.html) array to a string array. [#112864][#112864] -- Updated the [builtin function](https://www.cockroachlabs.com/docs/v23.1/functions-and-operators.html) `jsonb_array_to_string_array` to return [_NULL_](https://www.cockroachlabs.com/docs/v23.1/null-handling.html) objects. Previously, they were removed from the output. [#112864][#112864] -- Fixed the [**SQL Activity** page](https://www.cockroachlabs.com/docs/v23.1/monitoring-and-alerting.html#sql-activity-pages) update job to avoid conflicts on update, reduce the amount of data cached to just what the overview page requires, and fix the correctness of the top queries. [#112864][#112864] + - Restoring a cluster/database/table with a [regional by row table](https://www.cockroachlabs.com/docs/v23.1/table-localities.html#regional-by-row-tables) will not work out-of-the box. In particular, when performing writes, the [`crdb_region` column](https://www.cockroachlabs.com/docs/v23.1/alter-table.html#crdb_region) needs to specify the region of the new row(s) being written to the table. The user will need to alter said column and set a default that makes sense, along with discarding the [zone configuration](https://www.cockroachlabs.com/docs/v23.1/configure-replication-zones.html) (this latter is due to the fact that the zone config holds all outdated info related to the [partitions](https://www.cockroachlabs.com/docs/v23.1/partitioning.html), [constraints](https://www.cockroachlabs.com/docs/v23.1/constraints.html), etc.). These are due to a conflict with the `crdb_region` column already being present in the regionless restore. This column specifies each row's home region and is a prefix to the table's primary key. Stripping localities does not touch this column as it would be an expensive operation that includes rewriting the entire table. +- The [`RESTORE`](https://www.cockroachlabs.com/docs/v23.1/restore.html) option `strip_localities` has been renamed to `remove_regions`. +- You can no longer perform a [`RESTORE`](https://www.cockroachlabs.com/docs/v23.1/restore.html) with the `remove_regions` option if the object being restored contains a [regional by row table](https://www.cockroachlabs.com/docs/v23.1/table-localities.html#regional-by-row-tables). +- Added a [builtin function](https://www.cockroachlabs.com/docs/v23.1/functions-and-operators.html) `jsonb_array_to_string_array` that converts a [JSONB](https://www.cockroachlabs.com/docs/v23.1/jsonb.html) array to a string array. +- Updated the [builtin function](https://www.cockroachlabs.com/docs/v23.1/functions-and-operators.html) `jsonb_array_to_string_array` to return [_NULL_](https://www.cockroachlabs.com/docs/v23.1/null-handling.html) objects. Previously, they were removed from the output. +- Fixed the [**SQL Activity** page](https://www.cockroachlabs.com/docs/v23.1/monitoring-and-alerting.html#sql-activity-pages) update job to avoid conflicts on update, reduce the amount of data cached to just what the overview page requires, and fix the correctness of the top queries.

Operational changes

- Added [metrics](https://www.cockroachlabs.com/docs/v23.1/metrics.html) for [Raft](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer.html#raft) proposals and reproposals, specifically: - `raft.commands.proposed`: commands proposed to Raft by [leaseholders](https://www.cockroachlabs.com/docs/v23.1/architecture/overview.html#architecture-leaseholder). (Note that this metric includes both of the reproposed metrics below.) - `raft.commands.reproposed.unchanged`: commands retried/reproposed to Raft because they take too long to apply (so they might be dropped). - - `raft.commands.reproposed.new-lai`: commands retried/reproposed to Raft because they were committed to Raft out of order (failed the LAI (lease applied index) or [closed timestamp](https://www.cockroachlabs.com/docs/v23.1/architecture/transaction-layer.html#closed-timestamps) check). [#113153][#113153] -- Added a new [cluster setting](https://www.cockroachlabs.com/docs/v23.1/cluster-settings.html) `kv.gc.sticky_hint.enabled` that helps expedite [garbage collection](https://www.cockroachlabs.com/docs/v23.1/architecture/storage-layer.html#garbage-collection) after range deletions, such as when a SQL table or index is dropped. This setting is disabled by default. [#110643][#110643] + - `raft.commands.reproposed.new-lai`: commands retried/reproposed to Raft because they were committed to Raft out of order (failed the LAI (lease applied index) or [closed timestamp](https://www.cockroachlabs.com/docs/v23.1/architecture/transaction-layer.html#closed-timestamps) check). +- Added a new [cluster setting](https://www.cockroachlabs.com/docs/v23.1/cluster-settings.html) `kv.gc.sticky_hint.enabled` that helps expedite [garbage collection](https://www.cockroachlabs.com/docs/v23.1/architecture/storage-layer.html#garbage-collection) after range deletions, such as when a SQL table or index is dropped. This setting is disabled by default.

DB Console changes

-- [DB Console](https://www.cockroachlabs.com/docs/v23.1/ui-overview.html) instances proxied at different subpaths that use [OIDC](https://www.cockroachlabs.com/docs/cockroachcloud/configure-cloud-org-sso.html#oidc) will now point to the correct relative path when attempting to use OIDC login. [#111290][#111290] +- [DB Console](https://www.cockroachlabs.com/docs/v23.1/ui-overview.html) instances proxied at different subpaths that use [OIDC](https://www.cockroachlabs.com/docs/cockroachcloud/configure-cloud-org-sso.html#oidc) will now point to the correct relative path when attempting to use OIDC login.

Bug fixes

-- Fixed a bug where the `pg_attribute` could have sparsely populated `attnum`s since dropped columns were not included. Previously, the attribute number generated inside `pg_attribute` could be sparse because there would be gaps after columns were dropped. This could be problematic for ORMs since this would mean that attribute numbers could be sparse, and they may not be designed to handle such gaps. To address this, this patch adds dropped synthetic columns into the `pg_attribute` table, which allows these tools to work correctly. [#111119][#111119] -- Fixed a bug that could prevent [`RESTORE`](https://www.cockroachlabs.com/docs/v23.1/restore.html) from working if it was performed during a [cluster upgrade](https://www.cockroachlabs.com/docs/v23.1/upgrade-cockroach-version.html). [#112758][#112758] -- Fixed a bug where queries with the `st_union` [aggregate function](https://www.cockroachlabs.com/docs/v23.1/functions-and-operators.html#aggregate-functions) could produce incorrect results in some cases due to the [query optimizer](https://www.cockroachlabs.com/docs/v23.1/cost-based-optimizer.html) performing invalid optimizations. This bug has been present since the `st_union` function was introduced in v20.2.0. [#112795][#112795] -- A warning for [technical advisory 99561](https://www.cockroachlabs.com/docs/advisories/a99561) could incorrectly surface when [dropping secondary indexes](https://www.cockroachlabs.com/docs/v23.1/drop-index.html) that store [primary key](https://www.cockroachlabs.com/docs/v23.1/primary-key.html) columns. This is now fixed. [#112906][#112906] -- Fixed a bug where creating a [trigram index](https://www.cockroachlabs.com/docs/v23.1/trigram-indexes.html) and later displaying it via [`SHOW CREATE TABLE`](https://www.cockroachlabs.com/docs/v23.1/show-create.html), would not show the opclass for this trigram index. [#113077][#113077] -- Fixed a bug introduced in v22.2 where CockroachDB could incorrectly evaluate [lookup and index joins](https://www.cockroachlabs.com/docs/v23.1/joins.html) into tables with at least 3 [column families](https://www.cockroachlabs.com/docs/v23.1/column-families.html) in some cases (either a `non-nullable column with no value` internal error would occur, or the query would return incorrect results). [#113108][#113108] -- Fixed a bug that could occasionally cause [schema change jobs](https://www.cockroachlabs.com/docs/v23.1/online-schema-changes.html) (e.g., table/index drops) to appear stuck in state "waiting for MVCC GC" for much longer than expected. This fix only applies to future schema changes. Existing stuck jobs can be processed by manually force-enqueueing the relevant [ranges](https://www.cockroachlabs.com/docs/v23.1/architecture/overview.html#architecture-range) in the MVCC GC queue under the [DB Console's **Advanced Debug** page](https://www.cockroachlabs.com/docs/v23.1/ui-debug-pages.html). [#110643][#110643] -- Fixed a bug that could cause internal errors or panics while attempting to forecast [statistics](https://www.cockroachlabs.com/docs/v23.1/cost-based-optimizer.html#table-statistics) on a numeric column. [#113798][#113798] -- Fixed a bug where [`ALTER PRIMARY KEY`](https://www.cockroachlabs.com/docs/v23.1/alter-table.html#alter-primary-key) would incorrectly disable [secondary indexes](https://www.cockroachlabs.com/docs/v23.1/indexes.html) while new secondary indexes were being backfilled when using the [declarative schema changer](https://www.cockroachlabs.com/docs/v23.1/online-schema-changes.html). [#113183][#113183] -- Previously, when executing queries with [index / lookup joins](https://www.cockroachlabs.com/docs/v23.1/joins.html) when the ordering needs to be maintained, CockroachDB could in some cases inadvertently increase query latency, possibly by 1 or 2 orders of magnitude. This bug was introduced in v22.2 and is now fixed. [#114143][#114143] -- Fixed a bug where the [`SHOW STATISTICS`](https://www.cockroachlabs.com/docs/v23.1/show-statistics.html) command would incorrectly require the user to have the [admin role](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization.html#admin-role). It was intended to only require the user to have any privilege on the table being inspected. [#114479][#114479] -- Fixed a bug that could cause a query plan to skip scanning rows from the local region when performing a [lookup join](https://www.cockroachlabs.com/docs/v23.1/joins.html) with a [`REGIONAL BY ROW`](https://www.cockroachlabs.com/docs/v23.1/table-localities.html#regional-by-row-tables) table as the input. [#114456][#114456] -- Fixed a bug that could cause [`ALTER DATABASE ... ADD/DROP REGION`](https://www.cockroachlabs.com/docs/v23.1/alter-database.html#add-region) to hang if node localities were changed after regions were added. [#114197][#114197] +- Fixed a bug where the `pg_attribute` could have sparsely populated `attnum`s since dropped columns were not included. Previously, the attribute number generated inside `pg_attribute` could be sparse because there would be gaps after columns were dropped. This could be problematic for ORMs since this would mean that attribute numbers could be sparse, and they may not be designed to handle such gaps. To address this, this patch adds dropped synthetic columns into the `pg_attribute` table, which allows these tools to work correctly. +- Fixed a bug that could prevent [`RESTORE`](https://www.cockroachlabs.com/docs/v23.1/restore.html) from working if it was performed during a [cluster upgrade](https://www.cockroachlabs.com/docs/v23.1/upgrade-cockroach-version.html). +- Fixed a bug where queries with the `st_union` [aggregate function](https://www.cockroachlabs.com/docs/v23.1/functions-and-operators.html#aggregate-functions) could produce incorrect results in some cases due to the [query optimizer](https://www.cockroachlabs.com/docs/v23.1/cost-based-optimizer.html) performing invalid optimizations. This bug has been present since the `st_union` function was introduced in v20.2.0. +- A warning for [technical advisory 99561](https://www.cockroachlabs.com/docs/advisories/a99561) could incorrectly surface when [dropping secondary indexes](https://www.cockroachlabs.com/docs/v23.1/drop-index.html) that store [primary key](https://www.cockroachlabs.com/docs/v23.1/primary-key.html) columns. This is now fixed. +- Fixed a bug where creating a [trigram index](https://www.cockroachlabs.com/docs/v23.1/trigram-indexes.html) and later displaying it via [`SHOW CREATE TABLE`](https://www.cockroachlabs.com/docs/v23.1/show-create.html), would not show the opclass for this trigram index. +- Fixed a bug introduced in v22.2 where CockroachDB could incorrectly evaluate [lookup and index joins](https://www.cockroachlabs.com/docs/v23.1/joins.html) into tables with at least 3 [column families](https://www.cockroachlabs.com/docs/v23.1/column-families.html) in some cases (either a `non-nullable column with no value` internal error would occur, or the query would return incorrect results). +- Fixed a bug that could occasionally cause [schema change jobs](https://www.cockroachlabs.com/docs/v23.1/online-schema-changes.html) (e.g., table/index drops) to appear stuck in state "waiting for MVCC GC" for much longer than expected. This fix only applies to future schema changes. Existing stuck jobs can be processed by manually force-enqueueing the relevant [ranges](https://www.cockroachlabs.com/docs/v23.1/architecture/overview.html#architecture-range) in the MVCC GC queue under the [DB Console's **Advanced Debug** page](https://www.cockroachlabs.com/docs/v23.1/ui-debug-pages.html). +- Fixed a bug that could cause internal errors or panics while attempting to forecast [statistics](https://www.cockroachlabs.com/docs/v23.1/cost-based-optimizer.html#table-statistics) on a numeric column. +- Fixed a bug where [`ALTER PRIMARY KEY`](https://www.cockroachlabs.com/docs/v23.1/alter-table.html#alter-primary-key) would incorrectly disable [secondary indexes](https://www.cockroachlabs.com/docs/v23.1/indexes.html) while new secondary indexes were being backfilled when using the [declarative schema changer](https://www.cockroachlabs.com/docs/v23.1/online-schema-changes.html). +- Previously, when executing queries with [index / lookup joins](https://www.cockroachlabs.com/docs/v23.1/joins.html) when the ordering needs to be maintained, CockroachDB could in some cases inadvertently increase query latency, possibly by 1 or 2 orders of magnitude. This bug was introduced in v22.2 and is now fixed. +- Fixed a bug where the [`SHOW STATISTICS`](https://www.cockroachlabs.com/docs/v23.1/show-statistics.html) command would incorrectly require the user to have the [admin role](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization.html#admin-role). It was intended to only require the user to have any privilege on the table being inspected. +- Fixed a bug that could cause a query plan to skip scanning rows from the local region when performing a [lookup join](https://www.cockroachlabs.com/docs/v23.1/joins.html) with a [`REGIONAL BY ROW`](https://www.cockroachlabs.com/docs/v23.1/table-localities.html#regional-by-row-tables) table as the input. +- Fixed a bug that could cause [`ALTER DATABASE ... ADD/DROP REGION`](https://www.cockroachlabs.com/docs/v23.1/alter-database.html#add-region) to hang if node localities were changed after regions were added.

Performance improvements

-- Addressed a performance regression that could happen when the [declarative schema changer](https://www.cockroachlabs.com/docs/v23.1/online-schema-changes.html) is being used to [create an index](https://www.cockroachlabs.com/docs/v23.1/create-index.html) with a concurrent workload. [#113724][#113724] -- Added an off-by-default [cluster setting](https://www.cockroachlabs.com/docs/v23.1/cluster-settings.html), `kv.dist_sender.follower_reads_unhealthy.enabled`, which when enabled will prevent failed requests from being issued on followers that are [draining](https://www.cockroachlabs.com/docs/v23.1/node-shutdown.html#draining), [decommissioning](https://www.cockroachlabs.com/docs/v23.1/node-shutdown?filters=decommission), or otherwise unhealthy. This will prevent [follower reads](https://www.cockroachlabs.com/docs/v23.1/follower-reads.html) against nodes in such states. This prevents latency spikes if those nodes later go offline. [#114367][#114367] -- [Query planning](https://www.cockroachlabs.com/docs/v23.1/cost-based-optimizer.html) time has been reduced significantly for some queries in which many tables are [joined](https://www.cockroachlabs.com/docs/v23.1/joins.html). [#114835][#114835] +- Addressed a performance regression that could happen when the [declarative schema changer](https://www.cockroachlabs.com/docs/v23.1/online-schema-changes.html) is being used to [create an index](https://www.cockroachlabs.com/docs/v23.1/create-index.html) with a concurrent workload. +- Added an off-by-default [cluster setting](https://www.cockroachlabs.com/docs/v23.1/cluster-settings.html), `kv.dist_sender.follower_reads_unhealthy.enabled`, which when enabled will prevent failed requests from being issued on followers that are [draining](https://www.cockroachlabs.com/docs/v23.1/node-shutdown.html#draining), [decommissioning](https://www.cockroachlabs.com/docs/v23.1/node-shutdown?filters=decommission), or otherwise unhealthy. This will prevent [follower reads](https://www.cockroachlabs.com/docs/v23.1/follower-reads.html) against nodes in such states. This prevents latency spikes if those nodes later go offline. +- [Query planning](https://www.cockroachlabs.com/docs/v23.1/cost-based-optimizer.html) time has been reduced significantly for some queries in which many tables are [joined](https://www.cockroachlabs.com/docs/v23.1/joins.html).
@@ -56,27 +56,3 @@ Release Date: December 11, 2023 This release includes 118 merged PRs by 42 authors.
- -[#110643]: https://github.com/cockroachdb/cockroach/pull/110643 -[#111119]: https://github.com/cockroachdb/cockroach/pull/111119 -[#111290]: https://github.com/cockroachdb/cockroach/pull/111290 -[#111863]: https://github.com/cockroachdb/cockroach/pull/111863 -[#112758]: https://github.com/cockroachdb/cockroach/pull/112758 -[#112795]: https://github.com/cockroachdb/cockroach/pull/112795 -[#112864]: https://github.com/cockroachdb/cockroach/pull/112864 -[#112906]: https://github.com/cockroachdb/cockroach/pull/112906 -[#113039]: https://github.com/cockroachdb/cockroach/pull/113039 -[#113077]: https://github.com/cockroachdb/cockroach/pull/113077 -[#113108]: https://github.com/cockroachdb/cockroach/pull/113108 -[#113153]: https://github.com/cockroachdb/cockroach/pull/113153 -[#113171]: https://github.com/cockroachdb/cockroach/pull/113171 -[#113183]: https://github.com/cockroachdb/cockroach/pull/113183 -[#113724]: https://github.com/cockroachdb/cockroach/pull/113724 -[#113798]: https://github.com/cockroachdb/cockroach/pull/113798 -[#114143]: https://github.com/cockroachdb/cockroach/pull/114143 -[#114197]: https://github.com/cockroachdb/cockroach/pull/114197 -[#114367]: https://github.com/cockroachdb/cockroach/pull/114367 -[#114456]: https://github.com/cockroachdb/cockroach/pull/114456 -[#114479]: https://github.com/cockroachdb/cockroach/pull/114479 -[#114529]: https://github.com/cockroachdb/cockroach/pull/114529 -[#114835]: https://github.com/cockroachdb/cockroach/pull/114835 diff --git a/src/current/_includes/releases/v23.1/v23.1.14.md b/src/current/_includes/releases/v23.1/v23.1.14.md index 8c0c98f97c0..679ff817707 100644 --- a/src/current/_includes/releases/v23.1/v23.1.14.md +++ b/src/current/_includes/releases/v23.1/v23.1.14.md @@ -6,17 +6,17 @@ Release Date: January 17, 2024

SQL language changes

-- CockroachDB now supports [importing into]({% link v23.1/import-into.md %}) a table that has columns typed as arrays of user-defined types (such as enums). Tables that use multiple user-defined types with the same name but different schemas are still unsupported. [#116361][#116361] -- Added a new field, `StmtPosInTxn`, to the `CommonSQLExecDetails` (included in SQL audit logs, SQL execution logs, and telemetry events) to represent the statement's index (position) in the transaction. The first statement's `StmtPosInTxn` is `1`. [#116558][#116558] +- CockroachDB now supports [importing into]({% link v23.1/import-into.md %}) a table that has columns typed as arrays of user-defined types (such as enums). Tables that use multiple user-defined types with the same name but different schemas are still unsupported. +- Added a new field, `StmtPosInTxn`, to the `CommonSQLExecDetails` (included in SQL audit logs, SQL execution logs, and telemetry events) to represent the statement's index (position) in the transaction. The first statement's `StmtPosInTxn` is `1`.

Operational changes

-- Updated the [`changefeed.lagging_ranges_threshold`]({% link v23.1/cluster-settings.md %}#settings) and [`changefeed.lagging_ranges_polling_interval`]({% link v23.1/cluster-settings.md %}#settings) cluster settings to be public in v23.1. [#115803][#115803] +- Updated the [`changefeed.lagging_ranges_threshold`]({% link v23.1/cluster-settings.md %}#settings) and [`changefeed.lagging_ranges_polling_interval`]({% link v23.1/cluster-settings.md %}#settings) cluster settings to be public in v23.1.

DB Console changes

-- The [**Cluster Overview** page]({% link v23.1/ui-cluster-overview-page.md %}) now correctly renders the background color for email signups, fixing an issue where it was difficult to read the text. [#114546][#114546] -- Updated the **CPU Time** label to **SQL CPU Time** on the [Overview page]({% link v23.1/ui-overview-dashboard.md %}) and clarified the tooltip. [#116448][#116448] +- The [**Cluster Overview** page]({% link v23.1/ui-cluster-overview-page.md %}) now correctly renders the background color for email signups, fixing an issue where it was difficult to read the text. +- Updated the **CPU Time** label to **SQL CPU Time** on the [Overview page]({% link v23.1/ui-overview-dashboard.md %}) and clarified the tooltip. - Fixed an issue where the following `AggHistogram`-powered metrics reported quantiles incorrectly in the [Overview page]({% link v23.1/ui-overview-dashboard.md %}). The list of affected metrics is: - `changefeed.message_size_hist` - `changefeed.parallel_io_queue_nanos` @@ -28,34 +28,34 @@ Release Date: January 17, 2024 - `jobs.row_level_ttl.select_duration` - `jobs.row_level_ttl.delete_duration` - This bug affected only DB Console dashboards and not the Prometheus-compatible endpoint `/_status/vars`. [#114747][#114747] -- In the **SQL Activity Transaction Details** page, you can now view a transaction fingerprint ID across multiple applications by passing a comma-separated encoded string of transaction fingerprint IDs in the `appNames` URL search parameter. [#116102][#116102] + This bug affected only DB Console dashboards and not the Prometheus-compatible endpoint `/_status/vars`. +- In the **SQL Activity Transaction Details** page, you can now view a transaction fingerprint ID across multiple applications by passing a comma-separated encoded string of transaction fingerprint IDs in the `appNames` URL search parameter.

Bug fixes

- Fixed a bug in in the TimeScale component's **Now** button behavior that could prevent charts from updating after a custom time range was selected.[#115513][#115513] -- Fixed a bug where an active replication report update could get stuck in a retry loop on clusters with over 10000 ranges, which would prevent a node from shutting down cleanly. [#114242][#114242] -- Fixed a nil pointer dereference bug in the error handling for `GetFiles`. [#114829][#114829] -- Fixed a bug that prevented the **SQL Activity** page from showing internal statements when the `sql.stats.response.show_internal.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}) was set to `true`. [#114819][#114819] -- Fixed a bug that could cause a discrepancy between computed statistics and the stored value for statics when a delete was rolled back. [#113772][#113772] -- Fixed a bug introduced in v23.1 that could cause an internal error Previously, CockroachDB could encounter an internal error when using a prepared statement using the `text` format with a user-defined composite type. [#115063][#115063] -- Fixed a bug that would cause a [prepared statement](https://www.cockroachlabs.com/docs/v23.1/sql-grammar#prepare_stmt) to fail if it references an enum as well as a table that has undergone a schema change. [#115174][#115174] -- Fixed a bug that could cause finalization during a major-version upgrade to contend with descriptor lease renewals on a large cluster. Descriptor lease renewals now always have a lower priority than finalization. [#114672][#114672] -- [Backups]({% link v23.1/backup.md %}) now evenly distribute their work across all replicas, including followers, regardless of leaseholder placement. [#115018][#115018] -- Fixed a bug that could cause replica processing in store queues to get stuck if a the replica's ID has changed. [#115036][#115036] -- Fixed an bug introduced in v22.2 that could lead to stuck queries or inaccurate results when using lookup [joins]({% link v23.1/joins.md %}) involving equality columns and multiple ranges. [#115581][#115581] -- Fixed a bug in the declarative schema changer that could cause [`CREATE INDEX`]({% link v23.1/create-index.md %}) with expressions to fail on materialized [views]({% link v23.1/views.md %}). [#115596][#115596] -- Fixed a bug that could cause an inaccorate "too few columns" error for a query that used `ANY {array}` syntax with a subquery. [#115591][#115591] -- Fixed a bug that could cause a "too few/many columns" errors for a query that used an `IN` or `NOT IN` clause with a non-trivial right operand, such as a subquery (rather than a constant tuple). [#115591][#115591] -- Fixed a bug introduced in v22.2 that could cause errors or inaccurate results when performing a lookup or index [join]({% link v23.1/joins.md %}) on a table with three or more column families. [#115899][#115899] -- Fixed a bug that could cause an internal error or a panic while attempting to forecast statistics on a numeric column. [#115899][#115899] -- Fixed a bug when issuing a [`BEGIN`]({% link v23.1/begin-transaction.md %}) statement where incorrect `Age` field could be logged in the statement log. This bug could also cause statements to incorrectly appear in the slow query log. [#115257][#115257] -- Fixed a bug in the SQL Statistics UI where the runtime was incorrectly calculated. This bug could cause recorded values to appear to exceed 100%. [#117497][#117497] -- Fixed a bug that could cause a `CREATE CHANGEFEED WITH {key_column}` statement to retry forever. [#117555][#117555] +- Fixed a bug where an active replication report update could get stuck in a retry loop on clusters with over 10000 ranges, which would prevent a node from shutting down cleanly. +- Fixed a nil pointer dereference bug in the error handling for `GetFiles`. +- Fixed a bug that prevented the **SQL Activity** page from showing internal statements when the `sql.stats.response.show_internal.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}) was set to `true`. +- Fixed a bug that could cause a discrepancy between computed statistics and the stored value for statics when a delete was rolled back. +- Fixed a bug introduced in v23.1 that could cause an internal error Previously, CockroachDB could encounter an internal error when using a prepared statement using the `text` format with a user-defined composite type. +- Fixed a bug that would cause a [prepared statement](https://www.cockroachlabs.com/docs/v23.1/sql-grammar#prepare_stmt) to fail if it references an enum as well as a table that has undergone a schema change. +- Fixed a bug that could cause finalization during a major-version upgrade to contend with descriptor lease renewals on a large cluster. Descriptor lease renewals now always have a lower priority than finalization. +- [Backups]({% link v23.1/backup.md %}) now evenly distribute their work across all replicas, including followers, regardless of leaseholder placement. +- Fixed a bug that could cause replica processing in store queues to get stuck if a the replica's ID has changed. +- Fixed an bug introduced in v22.2 that could lead to stuck queries or inaccurate results when using lookup [joins]({% link v23.1/joins.md %}) involving equality columns and multiple ranges. +- Fixed a bug in the declarative schema changer that could cause [`CREATE INDEX`]({% link v23.1/create-index.md %}) with expressions to fail on materialized [views]({% link v23.1/views.md %}). +- Fixed a bug that could cause an inaccorate "too few columns" error for a query that used `ANY {array}` syntax with a subquery. +- Fixed a bug that could cause a "too few/many columns" errors for a query that used an `IN` or `NOT IN` clause with a non-trivial right operand, such as a subquery (rather than a constant tuple). +- Fixed a bug introduced in v22.2 that could cause errors or inaccurate results when performing a lookup or index [join]({% link v23.1/joins.md %}) on a table with three or more column families. +- Fixed a bug that could cause an internal error or a panic while attempting to forecast statistics on a numeric column. +- Fixed a bug when issuing a [`BEGIN`]({% link v23.1/begin-transaction.md %}) statement where incorrect `Age` field could be logged in the statement log. This bug could also cause statements to incorrectly appear in the slow query log. +- Fixed a bug in the SQL Statistics UI where the runtime was incorrectly calculated. This bug could cause recorded values to appear to exceed 100%. +- Fixed a bug that could cause a `CREATE CHANGEFEED WITH {key_column}` statement to retry forever.

Performance improvements

-- Reduced query planning time significantly for some queries that join multiple tables. [#114512][#114512][#116107][#116107] +- Reduced query planning time significantly for some queries that join multiple tables.[#116107][#116107]
@@ -64,33 +64,3 @@ Release Date: January 17, 2024 This release includes 128 merged PRs by 42 authors.
- -[#113772]: https://github.com/cockroachdb/cockroach/pull/113772 -[#114242]: https://github.com/cockroachdb/cockroach/pull/114242 -[#114512]: https://github.com/cockroachdb/cockroach/pull/114512 -[#114546]: https://github.com/cockroachdb/cockroach/pull/114546 -[#114672]: https://github.com/cockroachdb/cockroach/pull/114672 -[#114747]: https://github.com/cockroachdb/cockroach/pull/114747 -[#114819]: https://github.com/cockroachdb/cockroach/pull/114819 -[#114829]: https://github.com/cockroachdb/cockroach/pull/114829 -[#115018]: https://github.com/cockroachdb/cockroach/pull/115018 -[#115036]: https://github.com/cockroachdb/cockroach/pull/115036 -[#115063]: https://github.com/cockroachdb/cockroach/pull/115063 -[#115174]: https://github.com/cockroachdb/cockroach/pull/115174 -[#115257]: https://github.com/cockroachdb/cockroach/pull/115257 -[#115513]: https://github.com/cockroachdb/cockroach/pull/115513 -[#115581]: https://github.com/cockroachdb/cockroach/pull/115581 -[#115591]: https://github.com/cockroachdb/cockroach/pull/115591 -[#115596]: https://github.com/cockroachdb/cockroach/pull/115596 -[#115603]: https://github.com/cockroachdb/cockroach/pull/115603 -[#115803]: https://github.com/cockroachdb/cockroach/pull/115803 -[#115899]: https://github.com/cockroachdb/cockroach/pull/115899 -[#116102]: https://github.com/cockroachdb/cockroach/pull/116102 -[#116107]: https://github.com/cockroachdb/cockroach/pull/116107 -[#116361]: https://github.com/cockroachdb/cockroach/pull/116361 -[#116448]: https://github.com/cockroachdb/cockroach/pull/116448 -[#116517]: https://github.com/cockroachdb/cockroach/pull/116517 -[#116558]: https://github.com/cockroachdb/cockroach/pull/116558 -[#117497]: https://github.com/cockroachdb/cockroach/pull/117497 -[#117555]: https://github.com/cockroachdb/cockroach/pull/117555 -[d27790ece]: https://github.com/cockroachdb/cockroach/commit/d27790ece diff --git a/src/current/_includes/releases/v23.1/v23.1.15.md b/src/current/_includes/releases/v23.1/v23.1.15.md index 98946611bf8..47ea45b232e 100644 --- a/src/current/_includes/releases/v23.1/v23.1.15.md +++ b/src/current/_includes/releases/v23.1/v23.1.15.md @@ -6,30 +6,30 @@ Release Date: February 20, 2024

Security updates

-- The [DB Console]({% link v23.1/ui-overview.md %}) `session` cookie is now marked `HttpOnly` to prevent it from being read by any Javascript code and is marked `Secure` by the browser when the cluster operates in secure mode. [#119248][#119248] +- The [DB Console]({% link v23.1/ui-overview.md %}) `session` cookie is now marked `HttpOnly` to prevent it from being read by any Javascript code and is marked `Secure` by the browser when the cluster operates in secure mode.

Bug fixes

-- Fixed a bug where [changefeeds]({% link v23.1/change-data-capture-overview.md %}) that targeted schema-locked tables could fail due to an old high-water timestamp being incorrectly persisted. [#117960][#117960] -- Fixed a bug where creating a [changefeed]({% link v23.1/change-data-capture-overview.md %}) that targeted tables with a `DECIMAL(n)` column (that is, zero-scale [`DECIMAL`]({% link v23.1/decimal.md %}) column), `format='avro'`, and `diff` would cause a panic. [#118893][#118893] -- Fixed a bug that could cause a [`CREATE CHANGEFEED WITH {key_column}`]({% link v23.1/create-changefeed.md %}) statement to retry forever. [#116966][#116966] -- Fixed a bug that prevented database [restore]({% link v23.1/restore.md %}) when the database contained a view or routine that referenced a user-defined type in the body string. For views, this bug was introduced in v20.2 when UDTs were introduced. For routines, this bug was introduced in v22.2 when UDFs were introduced. [#116903][#116903] -- Fixed a durability issue in the Raft log storage mechanism due to improper synchronization of filesystem metadata, potentially leading to the loss of specific write operations (`AddSSTable`), notably utilized by operations such as `RESTORE`. This vulnerability was exposed only under conditions of power failure or operating system crashes, potentially causing CockroachDB to enter a crash loop upon restart. In extreme scenarios, such as a simultaneous power outage or crash across multiple nodes, it could result in an irrecoverable quorum loss. [#117383][#117383] -- Fixed an issue in Raft log truncation that had the potential to cause crash loops and irretrievable quorum loss, especially in the rare but severe scenario where all replicas concurrently enter a crash loop. This issue emerged under conditions where the cluster was processing a bulk write operation (such as schema changes, imports, or restores), while a log truncation command was active, and the CockroachDB process experienced a crash. [#117299][#117299] -- Fixed the total runtime value referenced in SQL stats, resolving the bug where the [Console]({% link v23.1/ui-overview.md %}) erroneously displayed percentages over 100%. [#117496][#117496] -- Fixed an issue where the values for the current and past hour in the top Activity table were calculated incorrectly, causing a missing data issue in SQL stats and, consequently, on the [SQL Activity]({% link v23.1/ui-overview.md %}#sql-activity) page. [#118427][#118427] -- Fixed a bug where CockroachDB would erroneously return an error if an empty search path parameter was encountered during search path setting. [#117556][#117556] -- Fixed a bug in the [Row-Level TTL]({% link v23.1/row-level-ttl.md %}) job that would cause it to skip expired rows if the primary key of the table included columns of the collated string type. This bug was present since the initial release of row-level TTL in v22.2.0. [#117513][#117513] -- Fixed a bug that could cause [`DELETE`]({% link v23.1/delete.md %}) queries sent by the [Row-Level TTL]({% link v23.1/row-level-ttl.md %}) job to use a secondary index rather than the primary index to find the rows to delete. This could lead to some `DELETE` operations taking a much longer time than they should. This bug was present since v22.2.0. [#118336][#118336] -- Fixed a bug where concurrent [`GRANT`]({% link v23.1/grant.md %}) statements can cause deadlocks. [#117712][#117712] -- Reduced the impact of bulk deletions ([`DROP TABLE`]({% link v23.1/drop-table.md %}), [`TRUNCATE`]({% link v23.1/truncate.md %}), or replica removals) on foreground traffic by altering storage engine compaction priorities. [#116560][#116560] -- Resolved an issue where DML operations would fail during the creation of a hash-sharded index, resulting in an error stating column `crdb_internal_val_shard_16` does not exist. This bug was present since v23.1.0. [#118238][#118238] -- [`AUTO CREATE STATS`]({% link v23.1/show-jobs.md %}#show-automatic-jobs) jobs no longer lead to growth in an internal system table resulting in slower job-system related queries. [#118980][#118980] -- [`ALTER PRIMARY KEY`]({% link v23.1/alter-table.md %}#alter-primary-key) no longer fail with an `non-nullable column with no value! Index scanned ..` error when validating recreated secondary indexes. [#118969][#118969] -- Fixed a bug where CockroachDB could encounter an error `unable to encode table key: *tree.DTSQuery` when operating on columns of [`TSQuery`]({% link v23.1/tsquery.md %}) type in some contexts (e.g. when collecting table statistics or when performing a `DISTINCT` operation). The bug has been present since 23.1 when support for TSQuery type was added. [#118320][#118320] -- Fixed a bug where in some cases CockroachDB could incorrectly evaluate queries that scanned an inverted index and had a `WHERE` filter in which two sides of the `AND` expression had "similar" expressions (e.g. `ARRAY['str1'] <@ col AND (ARRAY['str1'] && col OR ...)`). The bug has been present since pre-22.2 version. [#118359][#118359] -- CockroachDB now correctly logs the top 5 hot ranges per cluster instead of per node. [#118371][#118371] -- Fixed a bug where a [changefeed]({% link v23.1/change-data-capture-overview.md %}) could omit events in rare cases, logging the error `cdc ux violation: detected timestamp ... that is less or equal to the local frontier`. This can happen if a [rangefeed]({% link v23.1/create-and-configure-changefeeds.md %}#enable-rangefeeds) runs on a follower replica that lags significantly behind the leaseholder, a transaction commits and removes its transaction record before its intent resolution is applied on the follower, the follower's closed timestamp has advanced past the transaction commit timestamp, and the rangefeed attempts to push the transaction to a new timestamp (at least 10 seconds after the transaction began). This may cause the rangefeed to prematurely emit a checkpoint before emitting writes at lower timestamps, which in turn may cause the changefeed to drop these events entirely, never emitting them. [#119270][#119270] +- Fixed a bug where [changefeeds]({% link v23.1/change-data-capture-overview.md %}) that targeted schema-locked tables could fail due to an old high-water timestamp being incorrectly persisted. +- Fixed a bug where creating a [changefeed]({% link v23.1/change-data-capture-overview.md %}) that targeted tables with a `DECIMAL(n)` column (that is, zero-scale [`DECIMAL`]({% link v23.1/decimal.md %}) column), `format='avro'`, and `diff` would cause a panic. +- Fixed a bug that could cause a [`CREATE CHANGEFEED WITH {key_column}`]({% link v23.1/create-changefeed.md %}) statement to retry forever. +- Fixed a bug that prevented database [restore]({% link v23.1/restore.md %}) when the database contained a view or routine that referenced a user-defined type in the body string. For views, this bug was introduced in v20.2 when UDTs were introduced. For routines, this bug was introduced in v22.2 when UDFs were introduced. +- Fixed a durability issue in the Raft log storage mechanism due to improper synchronization of filesystem metadata, potentially leading to the loss of specific write operations (`AddSSTable`), notably utilized by operations such as `RESTORE`. This vulnerability was exposed only under conditions of power failure or operating system crashes, potentially causing CockroachDB to enter a crash loop upon restart. In extreme scenarios, such as a simultaneous power outage or crash across multiple nodes, it could result in an irrecoverable quorum loss. +- Fixed an issue in Raft log truncation that had the potential to cause crash loops and irretrievable quorum loss, especially in the rare but severe scenario where all replicas concurrently enter a crash loop. This issue emerged under conditions where the cluster was processing a bulk write operation (such as schema changes, imports, or restores), while a log truncation command was active, and the CockroachDB process experienced a crash. +- Fixed the total runtime value referenced in SQL stats, resolving the bug where the [Console]({% link v23.1/ui-overview.md %}) erroneously displayed percentages over 100%. +- Fixed an issue where the values for the current and past hour in the top Activity table were calculated incorrectly, causing a missing data issue in SQL stats and, consequently, on the [SQL Activity]({% link v23.1/ui-overview.md %}#sql-activity) page. +- Fixed a bug where CockroachDB would erroneously return an error if an empty search path parameter was encountered during search path setting. +- Fixed a bug in the [Row-Level TTL]({% link v23.1/row-level-ttl.md %}) job that would cause it to skip expired rows if the primary key of the table included columns of the collated string type. This bug was present since the initial release of row-level TTL in v22.2.0. +- Fixed a bug that could cause [`DELETE`]({% link v23.1/delete.md %}) queries sent by the [Row-Level TTL]({% link v23.1/row-level-ttl.md %}) job to use a secondary index rather than the primary index to find the rows to delete. This could lead to some `DELETE` operations taking a much longer time than they should. This bug was present since v22.2.0. +- Fixed a bug where concurrent [`GRANT`]({% link v23.1/grant.md %}) statements can cause deadlocks. +- Reduced the impact of bulk deletions ([`DROP TABLE`]({% link v23.1/drop-table.md %}), [`TRUNCATE`]({% link v23.1/truncate.md %}), or replica removals) on foreground traffic by altering storage engine compaction priorities. +- Resolved an issue where DML operations would fail during the creation of a hash-sharded index, resulting in an error stating column `crdb_internal_val_shard_16` does not exist. This bug was present since v23.1.0. +- [`AUTO CREATE STATS`]({% link v23.1/show-jobs.md %}#show-automatic-jobs) jobs no longer lead to growth in an internal system table resulting in slower job-system related queries. +- [`ALTER PRIMARY KEY`]({% link v23.1/alter-table.md %}#alter-primary-key) no longer fail with an `non-nullable column with no value! Index scanned ..` error when validating recreated secondary indexes. +- Fixed a bug where CockroachDB could encounter an error `unable to encode table key: *tree.DTSQuery` when operating on columns of [`TSQuery`]({% link v23.1/tsquery.md %}) type in some contexts (e.g. when collecting table statistics or when performing a `DISTINCT` operation). The bug has been present since 23.1 when support for TSQuery type was added. +- Fixed a bug where in some cases CockroachDB could incorrectly evaluate queries that scanned an inverted index and had a `WHERE` filter in which two sides of the `AND` expression had "similar" expressions (e.g. `ARRAY['str1'] <@ col AND (ARRAY['str1'] && col OR ...)`). The bug has been present since pre-22.2 version. +- CockroachDB now correctly logs the top 5 hot ranges per cluster instead of per node. +- Fixed a bug where a [changefeed]({% link v23.1/change-data-capture-overview.md %}) could omit events in rare cases, logging the error `cdc ux violation: detected timestamp ... that is less or equal to the local frontier`. This can happen if a [rangefeed]({% link v23.1/create-and-configure-changefeeds.md %}#enable-rangefeeds) runs on a follower replica that lags significantly behind the leaseholder, a transaction commits and removes its transaction record before its intent resolution is applied on the follower, the follower's closed timestamp has advanced past the transaction commit timestamp, and the rangefeed attempts to push the transaction to a new timestamp (at least 10 seconds after the transaction began). This may cause the rangefeed to prematurely emit a checkpoint before emitting writes at lower timestamps, which in turn may cause the changefeed to drop these events entirely, never emitting them.
@@ -41,33 +41,3 @@ We would like to thank the following contributors from the CockroachDB community - Nikolai Vladimirov (first-time contributor)
- -[#116560]: https://github.com/cockroachdb/cockroach/pull/116560 -[#116903]: https://github.com/cockroachdb/cockroach/pull/116903 -[#116966]: https://github.com/cockroachdb/cockroach/pull/116966 -[#117299]: https://github.com/cockroachdb/cockroach/pull/117299 -[#117383]: https://github.com/cockroachdb/cockroach/pull/117383 -[#117496]: https://github.com/cockroachdb/cockroach/pull/117496 -[#117513]: https://github.com/cockroachdb/cockroach/pull/117513 -[#117556]: https://github.com/cockroachdb/cockroach/pull/117556 -[#117712]: https://github.com/cockroachdb/cockroach/pull/117712 -[#117742]: https://github.com/cockroachdb/cockroach/pull/117742 -[#117960]: https://github.com/cockroachdb/cockroach/pull/117960 -[#118141]: https://github.com/cockroachdb/cockroach/pull/118141 -[#118238]: https://github.com/cockroachdb/cockroach/pull/118238 -[#118320]: https://github.com/cockroachdb/cockroach/pull/118320 -[#118336]: https://github.com/cockroachdb/cockroach/pull/118336 -[#118359]: https://github.com/cockroachdb/cockroach/pull/118359 -[#118371]: https://github.com/cockroachdb/cockroach/pull/118371 -[#118427]: https://github.com/cockroachdb/cockroach/pull/118427 -[#118564]: https://github.com/cockroachdb/cockroach/pull/118564 -[#118590]: https://github.com/cockroachdb/cockroach/pull/118590 -[#118893]: https://github.com/cockroachdb/cockroach/pull/118893 -[#118919]: https://github.com/cockroachdb/cockroach/pull/118919 -[#118969]: https://github.com/cockroachdb/cockroach/pull/118969 -[#118980]: https://github.com/cockroachdb/cockroach/pull/118980 -[#119248]: https://github.com/cockroachdb/cockroach/pull/119248 -[#119270]: https://github.com/cockroachdb/cockroach/pull/119270 -[566a30300]: https://github.com/cockroachdb/cockroach/commit/566a30300 -[7667710a0]: https://github.com/cockroachdb/cockroach/commit/7667710a0 -[ce971160e]: https://github.com/cockroachdb/cockroach/commit/ce971160e diff --git a/src/current/_includes/releases/v23.1/v23.1.16.md b/src/current/_includes/releases/v23.1/v23.1.16.md index 68054969555..2263230db6f 100644 --- a/src/current/_includes/releases/v23.1/v23.1.16.md +++ b/src/current/_includes/releases/v23.1/v23.1.16.md @@ -6,12 +6,10 @@ Release Date: February 27, 2024

Bug fixes

-- Fixed a bug where [rangefeed]({% link v23.1/create-and-configure-changefeeds.md %}#enable-rangefeeds) resolved timestamps could get stuck, continually emitting the [log message]({% link v23.1/logging.md %}) `"pushing old intents failed: range barrier failed, range split"`, typically following a [range merge](https://www.cockroachlabs.com/docs/v23.1/architecture/distribution-layer#range-merges). This bug was introduced in v23.1.15. [#119559][#119559] +- Fixed a bug where [rangefeed]({% link v23.1/create-and-configure-changefeeds.md %}#enable-rangefeeds) resolved timestamps could get stuck, continually emitting the [log message]({% link v23.1/logging.md %}) `"pushing old intents failed: range barrier failed, range split"`, typically following a [range merge](https://www.cockroachlabs.com/docs/v23.1/architecture/distribution-layer#range-merges). This bug was introduced in v23.1.15.

Contributors

This release includes 2 merged PRs by 2 authors. - -[#119559]: https://github.com/cockroachdb/cockroach/pull/119559 diff --git a/src/current/_includes/releases/v23.1/v23.1.17.md b/src/current/_includes/releases/v23.1/v23.1.17.md index 7749138fad7..103b41d558a 100644 --- a/src/current/_includes/releases/v23.1/v23.1.17.md +++ b/src/current/_includes/releases/v23.1/v23.1.17.md @@ -6,35 +6,35 @@ Release Date: March 19, 2024

Security updates

-- A user with the [`VIEWACTIVITY` privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges) can now request a statement bundle from the [**Statements** page]({% link v23.1/ui-statements-page.md %}) in the DB Console or with the internal builtin function `crdb_internal.requests_statement_bundle`. [#119638][#119638] -- Clusters using [Cluster Single Sign-on (SSO) with JSON web tokens (JWTs)]({% link v23.1/sso-sql.md %}) can now optionally fetch signing keys from configured issuers instead of configuring static signing keys for each issuer. When the new [cluster setting]({% link v23.1/cluster-settings.md %}) `server.jwt_authentication.jwks_auto_fetch.enabled` is set to `true`, signing keys are automatically fetched from the issuer using metadata published in its OpenID configuration. In this case, static signing keys in `server.jwt_authentication.jwks` are ignored. When automatic fetching is enabled, there may be a slight increase in network latency for each JWT authentication request, proportional to the latency between the cluster and the issuer's endpoint. [#120063][#120063] -- [DB Console]({% link v23.1/ui-overview.md %}) cookies are marked `Secure` for the browser when the cluster is running in secure mode. [#119262][#119262] -- The [DB Console]({% link v23.1/ui-overview.md %}) `session` cookie is now marked `HttpOnly` to prevent it from being read by any Javascript code. [#119262][#119262] +- A user with the [`VIEWACTIVITY` privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges) can now request a statement bundle from the [**Statements** page]({% link v23.1/ui-statements-page.md %}) in the DB Console or with the internal builtin function `crdb_internal.requests_statement_bundle`. +- Clusters using [Cluster Single Sign-on (SSO) with JSON web tokens (JWTs)]({% link v23.1/sso-sql.md %}) can now optionally fetch signing keys from configured issuers instead of configuring static signing keys for each issuer. When the new [cluster setting]({% link v23.1/cluster-settings.md %}) `server.jwt_authentication.jwks_auto_fetch.enabled` is set to `true`, signing keys are automatically fetched from the issuer using metadata published in its OpenID configuration. In this case, static signing keys in `server.jwt_authentication.jwks` are ignored. When automatic fetching is enabled, there may be a slight increase in network latency for each JWT authentication request, proportional to the latency between the cluster and the issuer's endpoint. +- [DB Console]({% link v23.1/ui-overview.md %}) cookies are marked `Secure` for the browser when the cluster is running in secure mode. +- The [DB Console]({% link v23.1/ui-overview.md %}) `session` cookie is now marked `HttpOnly` to prevent it from being read by any Javascript code.

SQL language changes

-- The new [cluster setting](https://cockroachlabs.com/docs/v23.1/cluster-settings) `server.max_open_transactions_per_gateway`, when set to a non-negative value, prevents users without the [`admin` role ](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#admin-role) from executing a query if more than this number of [transactions]({% link v23.1/transactions.md %}) are open on the current [gateway node](https://www.cockroachlabs.com/docs/v23.1/architecture/life-of-a-distributed-transaction#gateway). [#118949][#118949] -- Added support for [index hinting]({% link v23.1/table-expressions.md %}#force-index-selection) with [`INSERT`]({% link v23.1/insert.md %}) and [`UPSERT`]({% link v23.1/upsert.md %}) statements. This allows `INSERT ... ON CONFLICT` and `UPSERT` queries to use index hints in the same way as [`UPDATE`]({% link v23.1/update.md %}) and [`DELETE`]({% link v23.1/delete.md %}) statements. [#119600][#119600] +- The new [cluster setting](https://cockroachlabs.com/docs/v23.1/cluster-settings) `server.max_open_transactions_per_gateway`, when set to a non-negative value, prevents users without the [`admin` role ](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#admin-role) from executing a query if more than this number of [transactions]({% link v23.1/transactions.md %}) are open on the current [gateway node](https://www.cockroachlabs.com/docs/v23.1/architecture/life-of-a-distributed-transaction#gateway). +- Added support for [index hinting]({% link v23.1/table-expressions.md %}#force-index-selection) with [`INSERT`]({% link v23.1/insert.md %}) and [`UPSERT`]({% link v23.1/upsert.md %}) statements. This allows `INSERT ... ON CONFLICT` and `UPSERT` queries to use index hints in the same way as [`UPDATE`]({% link v23.1/update.md %}) and [`DELETE`]({% link v23.1/delete.md %}) statements.

Operational changes

-- You can now pass the `--include-range-info` flag when [generating a diagnostic bundle]({% link v23.1/cockroach-debug-zip.md %}) to include problem ranges. [#119233][#119233] +- You can now pass the `--include-range-info` flag when [generating a diagnostic bundle]({% link v23.1/cockroach-debug-zip.md %}) to include problem ranges. - In unredacted diagnostic bundles, two columns have been added to the `crdb_internal.transaction_contention_events` table: - `waiting_stmt_query`: the query of the statement that is waiting to run. - `blocking_txn_queries_unordered`: an unordered list of the blocking transaction's queries. - [#119422][#119422] +

DB Console changes

-- The [**Statements** page]({% link v23.1/ui-statements-page.md %}) now always shows the entire selected period, instead of only the period that contains data. [#118811][#118811] +- The [**Statements** page]({% link v23.1/ui-statements-page.md %}) now always shows the entire selected period, instead of only the period that contains data. - The [**Overload Dashboard**]({% link v23.1/ui-overload-dashboard.md %}) page now includes two additional graphs: - **Elastic CPU Utilization**: Shows the actual CPU used for elastic work compared with the configured limit. - - **Elastic CPU Exhausted Duration Per Second**: Shows how much time, in milliseconds, that elastic work has been subject to CPU exhaustion. [#118908][#118908] + - **Elastic CPU Exhausted Duration Per Second**: Shows how much time, in milliseconds, that elastic work has been subject to CPU exhaustion.

Bug fixes

-- Fixed a bug where creating a [changefeed]({% link v23.1/change-data-capture-overview.md %}) that targeted tables with a zero-scale [`DECIMAL(n)`]({% link v23.1/decimal.md %}) column, `format='avro'`, and `diff` would cause a panic. [#118848][#118848] +- Fixed a bug where creating a [changefeed]({% link v23.1/change-data-capture-overview.md %}) that targeted tables with a zero-scale [`DECIMAL(n)`]({% link v23.1/decimal.md %}) column, `format='avro'`, and `diff` would cause a panic. - Fixed a bug where a [changefeed](https://www.cockroachlabs.com/docs/v23.1/change-data-capture-overview.html) could omit events in rare cases, logging the error `cdc ux violation: detected timestamp ... that is less or equal to the local frontier`. This could happen in the following scenario: 1. A [rangefeed](https://www.cockroachlabs.com/docs/v23.1/create-and-configure-changefeeds.html#enable-rangefeeds) runs on a follower [replica](https://www.cockroachlabs.com/docs/v23.1/architecture/glossary#cockroachdb-architecture-terms) that lags significantly behind the [leaseholder](https://www.cockroachlabs.com/docs/v23.1/architecture/glossary#cockroachdb-architecture-terms). 1. A transaction commits and removes its [transaction record](https://www.cockroachlabs.com/docs/v23.1/architecture/transaction-layer#transaction-records) before its [intent](https://www.cockroachlabs.com/docs/v23.1/architecture/transaction-layer#writing) resolution is applied on the follower. @@ -42,24 +42,24 @@ Release Date: March 19, 2024 1. The rangefeed attempts to push the transaction to a new timestamp (at least 10 seconds after the transaction began). 1. This may cause the rangefeed to prematurely emit a checkpoint before emitting writes at lower timestamps, which in turn may cause the [changefeed]({% link v23.1/change-data-capture-overview.md %}) to drop these events entirely, never emitting them. - [#118415][#118415] -- Fixed a bug introduced in v22.2 where queries issued by [TTL jobs]({% link v23.1/row-level-ttl.md %}#view-scheduled-ttl-jobs) did not use optimal plans. [#118496][#118496] -- Fixed a bug introduced in v23.1.0 where a [decommissioning](https://www.cockroachlabs.com/docs/v23.1/node-shutdown?filters=decommission#decommission-the-node) replica that is part of a mis-replicated range could get stuck on a rebalance operation that was falsely determined to be unsafe. [#118437][#118437] -- Fixed a bug introduced in v22.2 where adding multiple columns with [`UNIQUE` constraints]({% link v23.1/unique.md %}) in a single statement could result in the error `secondary index for backfill contains physical column not present in source primary index`. [#118137][#118137] -- Fixed a bug where an `unable to get CPU capacity` error could be logged every 10 seconds when running outside of a CPU `cgroup`. [#118670][#118670] -- Fixed a bug where an [`AUTO CREATE STATS` job]({% link v23.1/show-jobs.md %}#show-automatic-jobs) could cause an internal system table to grow, and this could cause slow queries related to the job system. [#118944][#118944] -- Fixed a bug that caused a confusing error when a sequence name allocated by [`SERIAL`]({% link v23.1/serial.md %}) conflicted with an existing type name. [#118948][#118948] -- Fixed a bug where an [`ALTER PRIMARY KEY`]({% link v23.1/alter-table.md %}#alter-primary-key) query could fail with the error `non-nullable column {x} with no value! Index scanned ..` when validating a recreated [secondary index]({% link v23.1/indexes.md %}). [#118972][#118972] -- Fixed a bug introduced in v23.1 that could cause the internal error `attempting to append refresh spans after the tracked timestamp has moved forward` to be logged in some cases when using virtual tables such as`crdb_internal.system_jobs`. [#119186][#119186] -- Fixed a bug in the `crdb_internal.leases` table where a deadlock in the leasing system could cause a node to become unavailable. [#119374][#119374] -- Fixed a bug introduced in v23.1.15 where a [rangefeed]({% link v23.1/create-and-configure-changefeeds.md %}#enable-rangefeeds)-resolved timestamp could get stuck after a [range merge](https://www.cockroachlabs.com/docs/v23.1/architecture/distribution-layer#range-merges) if the range cache thinks the barrier spans multiple ranges. The log message `pushing old intents failed: range barrier failed, range split` is constantly emitted. [#119543][#119543] -- Fixed a rare panic that could happen during a [`pg_dump` import]({% link v23.1/import.md %}) that contains a subquery in one of its arguments, such as a function like `SELECT addgeometrycolumn(...)`. Now, attempting to import a `pg_dump` with a function that has a subquery in one of its arguments results in an error rather than a panic. [#118611][#118611] -- Fixed a bug in the [webhook sink]({% link v23.1/changefeed-sinks.md %}#webhook-sink) where the `http` request body may not be initialized on retries, resulting in the error `http: ContentLength=... with Body length 0`. [#119495][#119495] -- Fixed a bug where some files were not closed when inspecting backup metadata during [`BACKUP`]({% link v23.1/backup.md %}) and [`RESTORE`]({% link v23.1/restore.md %}) operations. [#119634][#119634] -- Fixed a bug that could cause internal errors to be logged when executing an [`EXPORT`]({% link v23.1/export.md %}) statement. [#119712][#119712] -- Fixed a bug where a [schema change]({% link v23.1/online-schema-changes.md %}) with a large number of descriptors could perform a [full table scan]({% link v23.1/show-full-table-scans.md %}) on the `system.leases` table. [#119466][#119466] -- Fixed a bug introduced in v22.1.0 that could cause the `sql.txns.open.internal` and `sql.statements.active.internal` gauge metrics never to be updated, leading to an incorrect count of the number of transactions and statements executed by operations internal to CockroachDB. These metrics do not include operations executed by external SQL clients. [#119338][#119338] -- Fixed a bug introduced in v22.2.9 that could cause a slow memory leak that can accumulate when opening many new connections. [#120244][#120244] + +- Fixed a bug introduced in v22.2 where queries issued by [TTL jobs]({% link v23.1/row-level-ttl.md %}#view-scheduled-ttl-jobs) did not use optimal plans. +- Fixed a bug introduced in v23.1.0 where a [decommissioning](https://www.cockroachlabs.com/docs/v23.1/node-shutdown?filters=decommission#decommission-the-node) replica that is part of a mis-replicated range could get stuck on a rebalance operation that was falsely determined to be unsafe. +- Fixed a bug introduced in v22.2 where adding multiple columns with [`UNIQUE` constraints]({% link v23.1/unique.md %}) in a single statement could result in the error `secondary index for backfill contains physical column not present in source primary index`. +- Fixed a bug where an `unable to get CPU capacity` error could be logged every 10 seconds when running outside of a CPU `cgroup`. +- Fixed a bug where an [`AUTO CREATE STATS` job]({% link v23.1/show-jobs.md %}#show-automatic-jobs) could cause an internal system table to grow, and this could cause slow queries related to the job system. +- Fixed a bug that caused a confusing error when a sequence name allocated by [`SERIAL`]({% link v23.1/serial.md %}) conflicted with an existing type name. +- Fixed a bug where an [`ALTER PRIMARY KEY`]({% link v23.1/alter-table.md %}#alter-primary-key) query could fail with the error `non-nullable column {x} with no value! Index scanned ..` when validating a recreated [secondary index]({% link v23.1/indexes.md %}). +- Fixed a bug introduced in v23.1 that could cause the internal error `attempting to append refresh spans after the tracked timestamp has moved forward` to be logged in some cases when using virtual tables such as`crdb_internal.system_jobs`. +- Fixed a bug in the `crdb_internal.leases` table where a deadlock in the leasing system could cause a node to become unavailable. +- Fixed a bug introduced in v23.1.15 where a [rangefeed]({% link v23.1/create-and-configure-changefeeds.md %}#enable-rangefeeds)-resolved timestamp could get stuck after a [range merge](https://www.cockroachlabs.com/docs/v23.1/architecture/distribution-layer#range-merges) if the range cache thinks the barrier spans multiple ranges. The log message `pushing old intents failed: range barrier failed, range split` is constantly emitted. +- Fixed a rare panic that could happen during a [`pg_dump` import]({% link v23.1/import.md %}) that contains a subquery in one of its arguments, such as a function like `SELECT addgeometrycolumn(...)`. Now, attempting to import a `pg_dump` with a function that has a subquery in one of its arguments results in an error rather than a panic. +- Fixed a bug in the [webhook sink]({% link v23.1/changefeed-sinks.md %}#webhook-sink) where the `http` request body may not be initialized on retries, resulting in the error `http: ContentLength=... with Body length 0`. +- Fixed a bug where some files were not closed when inspecting backup metadata during [`BACKUP`]({% link v23.1/backup.md %}) and [`RESTORE`]({% link v23.1/restore.md %}) operations. +- Fixed a bug that could cause internal errors to be logged when executing an [`EXPORT`]({% link v23.1/export.md %}) statement. +- Fixed a bug where a [schema change]({% link v23.1/online-schema-changes.md %}) with a large number of descriptors could perform a [full table scan]({% link v23.1/show-full-table-scans.md %}) on the `system.leases` table. +- Fixed a bug introduced in v22.1.0 that could cause the `sql.txns.open.internal` and `sql.statements.active.internal` gauge metrics never to be updated, leading to an incorrect count of the number of transactions and statements executed by operations internal to CockroachDB. These metrics do not include operations executed by external SQL clients. +- Fixed a bug introduced in v22.2.9 that could cause a slow memory leak that can accumulate when opening many new connections.
@@ -68,36 +68,3 @@ Release Date: March 19, 2024 This release includes 94 merged PRs by 33 authors.
- -[#118137]: https://github.com/cockroachdb/cockroach/pull/118137 -[#118415]: https://github.com/cockroachdb/cockroach/pull/118415 -[#118437]: https://github.com/cockroachdb/cockroach/pull/118437 -[#118496]: https://github.com/cockroachdb/cockroach/pull/118496 -[#118560]: https://github.com/cockroachdb/cockroach/pull/118560 -[#118611]: https://github.com/cockroachdb/cockroach/pull/118611 -[#118670]: https://github.com/cockroachdb/cockroach/pull/118670 -[#118811]: https://github.com/cockroachdb/cockroach/pull/118811 -[#118848]: https://github.com/cockroachdb/cockroach/pull/118848 -[#118908]: https://github.com/cockroachdb/cockroach/pull/118908 -[#118944]: https://github.com/cockroachdb/cockroach/pull/118944 -[#118948]: https://github.com/cockroachdb/cockroach/pull/118948 -[#118949]: https://github.com/cockroachdb/cockroach/pull/118949 -[#118972]: https://github.com/cockroachdb/cockroach/pull/118972 -[#118992]: https://github.com/cockroachdb/cockroach/pull/118992 -[#119186]: https://github.com/cockroachdb/cockroach/pull/119186 -[#119233]: https://github.com/cockroachdb/cockroach/pull/119233 -[#119262]: https://github.com/cockroachdb/cockroach/pull/119262 -[#119338]: https://github.com/cockroachdb/cockroach/pull/119338 -[#119374]: https://github.com/cockroachdb/cockroach/pull/119374 -[#119400]: https://github.com/cockroachdb/cockroach/pull/119400 -[#119422]: https://github.com/cockroachdb/cockroach/pull/119422 -[#119466]: https://github.com/cockroachdb/cockroach/pull/119466 -[#119495]: https://github.com/cockroachdb/cockroach/pull/119495 -[#119543]: https://github.com/cockroachdb/cockroach/pull/119543 -[#119600]: https://github.com/cockroachdb/cockroach/pull/119600 -[#119634]: https://github.com/cockroachdb/cockroach/pull/119634 -[#119638]: https://github.com/cockroachdb/cockroach/pull/119638 -[#119695]: https://github.com/cockroachdb/cockroach/pull/119695 -[#119712]: https://github.com/cockroachdb/cockroach/pull/119712 -[#120063]: https://github.com/cockroachdb/cockroach/pull/120063 -[#120244]: https://github.com/cockroachdb/cockroach/pull/120244 diff --git a/src/current/_includes/releases/v23.1/v23.1.18.md b/src/current/_includes/releases/v23.1/v23.1.18.md index 22c8b3b49aa..277b9fd00a8 100644 --- a/src/current/_includes/releases/v23.1/v23.1.18.md +++ b/src/current/_includes/releases/v23.1/v23.1.18.md @@ -6,30 +6,30 @@ Release Date: April 9, 2024

SQL language changes

-- Fixed an oversight where CockroachDB was allowing mutation statements (such as [`UPDATE`]({% link v23.1/update.md %}) or [`DELETE`]({% link v23.1/delete.md %})) and locking statements (such as [`SELECT ... FOR UPDATE`]({% link v23.1/select-for-update.md %})) in implicit single-statement [transactions]({% link v23.1/transactions.md %}) using [`AS OF SYSTEM TIME`]({% link v23.1/as-of-system-time.md %}). [#120159][#120159] +- Fixed an oversight where CockroachDB was allowing mutation statements (such as [`UPDATE`]({% link v23.1/update.md %}) or [`DELETE`]({% link v23.1/delete.md %})) and locking statements (such as [`SELECT ... FOR UPDATE`]({% link v23.1/select-for-update.md %})) in implicit single-statement [transactions]({% link v23.1/transactions.md %}) using [`AS OF SYSTEM TIME`]({% link v23.1/as-of-system-time.md %}).

Operational changes

-- The `admission.kv.bulk_only.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}), when set to `true`, only skips store-level [admission control]({% link v23.1/admission-control.md %}) for normal priority work, and continues to subject the work to CPU admission control. [#119173][#119173] +- The `admission.kv.bulk_only.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}), when set to `true`, only skips store-level [admission control]({% link v23.1/admission-control.md %}) for normal priority work, and continues to subject the work to CPU admission control.

DB Console changes

-- Resolved an issue where clusters with multiple [stores]({% link v23.1/cockroach-start.md %}#store) per node could list inaccurate region/node information on the [Databases Page]({% link v23.1/ui-databases-page.md %}). [#120234][#120234] -- Fixed a bug where the [timeseries graphs shown on the **SQL Activity Statement Fingerprint** page]({% link v23.1/ui-statements-page.md %}#charts) in [DB Console]({% link v23.1/ui-overview.md %}) were not rendering properly. This involved fixing a bug related to setting the time range of the charts. [#121783][#121783] +- Resolved an issue where clusters with multiple [stores]({% link v23.1/cockroach-start.md %}#store) per node could list inaccurate region/node information on the [Databases Page]({% link v23.1/ui-databases-page.md %}). +- Fixed a bug where the [timeseries graphs shown on the **SQL Activity Statement Fingerprint** page]({% link v23.1/ui-statements-page.md %}#charts) in [DB Console]({% link v23.1/ui-overview.md %}) were not rendering properly. This involved fixing a bug related to setting the time range of the charts.

Bug fixes

-- Previously, on long-running [sessions]({% link v23.1/show-sessions.md %}) that issue many (hundreds of thousands or more) [transactions]({% link v23.1/transactions.md %}), CockroachDB's internal memory accounting system, the limit for which is configured via the [`--max-sql-memory` flag]({% link v23.1/cockroach-start.md %}#general)), could leak. This bug, in turn, could result in the error message `"root: memory budget exceeded"` for other queries. The bug was present in v23.1.17 and is now fixed. [#121874][#121874] -- Fix a bug where running [`RESTORE`]({% link v23.1/restore.md %}) on certain [backups]({% link v23.1/backup-and-restore-overview.md %}) would open a very large number of connections to the [backup storage provider]({% link v23.1/use-cloud-storage.md %}). [#119925][#119925] -- A user with the `VIEWACTIVITYREDACTED` [privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#managing-privileges) can no longer see constants inside of queries that originate from other [users](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#roles) in the [`SHOW SESSIONS`]({% link v23.1/show-sessions.md %}) result. Previously, this redaction did not occur. [#119963][#119963] -- Previously, the [`SHOW QUERIES`]({% link v23.1/show-statements.md %}#aliases) and [`SHOW STATEMENTS`]({% link v23.1/show-statements.md %}) required the user to have the `VIEWACTIVITY` or `VIEWACTIVITYREDACTED` [privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#managing-privileges). However, a user should always be able to view their own queries, even without these privileges. This is now fixed. [#119963][#119963] -- Fixed a bug in which it was possible to `SET transaction_read_only = false` during an [`AS OF SYSTEM TIME`]({% link v23.1/as-of-system-time.md %}) transaction. [#120159][#120159] -- Fixed a slow memory leak that could accumulate when opening many new [connections]({% link v23.1/connection-pooling.md %}). The bug was present in v22.2.9+ and v23.1+. [#120242][#120242] -- Users will no longer see [views]({% link v23.1/views.md %}) displayed on the [**Databases** page]({% link v23.1/ui-databases-page.md %}) in [DB Console]({% link v23.1/ui-overview.md %}). Previously, views would be listed with no information, only displaying errors. [#120213][#120213] +- Previously, on long-running [sessions]({% link v23.1/show-sessions.md %}) that issue many (hundreds of thousands or more) [transactions]({% link v23.1/transactions.md %}), CockroachDB's internal memory accounting system, the limit for which is configured via the [`--max-sql-memory` flag]({% link v23.1/cockroach-start.md %}#general)), could leak. This bug, in turn, could result in the error message `"root: memory budget exceeded"` for other queries. The bug was present in v23.1.17 and is now fixed. +- Fix a bug where running [`RESTORE`]({% link v23.1/restore.md %}) on certain [backups]({% link v23.1/backup-and-restore-overview.md %}) would open a very large number of connections to the [backup storage provider]({% link v23.1/use-cloud-storage.md %}). +- A user with the `VIEWACTIVITYREDACTED` [privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#managing-privileges) can no longer see constants inside of queries that originate from other [users](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#roles) in the [`SHOW SESSIONS`]({% link v23.1/show-sessions.md %}) result. Previously, this redaction did not occur. +- Previously, the [`SHOW QUERIES`]({% link v23.1/show-statements.md %}#aliases) and [`SHOW STATEMENTS`]({% link v23.1/show-statements.md %}) required the user to have the `VIEWACTIVITY` or `VIEWACTIVITYREDACTED` [privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#managing-privileges). However, a user should always be able to view their own queries, even without these privileges. This is now fixed. +- Fixed a bug in which it was possible to `SET transaction_read_only = false` during an [`AS OF SYSTEM TIME`]({% link v23.1/as-of-system-time.md %}) transaction. +- Fixed a slow memory leak that could accumulate when opening many new [connections]({% link v23.1/connection-pooling.md %}). The bug was present in v22.2.9+ and v23.1+. +- Users will no longer see [views]({% link v23.1/views.md %}) displayed on the [**Databases** page]({% link v23.1/ui-databases-page.md %}) in [DB Console]({% link v23.1/ui-overview.md %}). Previously, views would be listed with no information, only displaying errors.

Performance improvements

-- Enabled the [admission control]({% link v23.1/admission-control.md %}) CPU limiter for [row-level TTL]({% link v23.1/row-level-ttl.md %}) to reduce latency impact from CPU-intensive scans issued as part of [row-level TTL jobs]({% link v23.1/row-level-ttl.md %}#view-scheduled-ttl-jobs). [#120516][#120516] +- Enabled the [admission control]({% link v23.1/admission-control.md %}) CPU limiter for [row-level TTL]({% link v23.1/row-level-ttl.md %}) to reduce latency impact from CPU-intensive scans issued as part of [row-level TTL jobs]({% link v23.1/row-level-ttl.md %}#view-scheduled-ttl-jobs).
@@ -38,19 +38,3 @@ Release Date: April 9, 2024 This release includes 45 merged PRs by 27 authors.
- -[#119173]: https://github.com/cockroachdb/cockroach/pull/119173 -[#119827]: https://github.com/cockroachdb/cockroach/pull/119827 -[#119855]: https://github.com/cockroachdb/cockroach/pull/119855 -[#119925]: https://github.com/cockroachdb/cockroach/pull/119925 -[#119963]: https://github.com/cockroachdb/cockroach/pull/119963 -[#119969]: https://github.com/cockroachdb/cockroach/pull/119969 -[#120020]: https://github.com/cockroachdb/cockroach/pull/120020 -[#120159]: https://github.com/cockroachdb/cockroach/pull/120159 -[#120213]: https://github.com/cockroachdb/cockroach/pull/120213 -[#120234]: https://github.com/cockroachdb/cockroach/pull/120234 -[#120242]: https://github.com/cockroachdb/cockroach/pull/120242 -[#120429]: https://github.com/cockroachdb/cockroach/pull/120429 -[#120516]: https://github.com/cockroachdb/cockroach/pull/120516 -[#121783]: https://github.com/cockroachdb/cockroach/pull/121783 -[#121874]: https://github.com/cockroachdb/cockroach/pull/121874 diff --git a/src/current/_includes/releases/v23.1/v23.1.19.md b/src/current/_includes/releases/v23.1/v23.1.19.md index ecae59e1828..6b4f0aa883c 100644 --- a/src/current/_includes/releases/v23.1/v23.1.19.md +++ b/src/current/_includes/releases/v23.1/v23.1.19.md @@ -6,5 +6,4 @@ Release Date: April 18, 2024

Bug fixes

-- Reintroduced [cluster setting]({% link v23.1/cluster-settings.md %}) `sql.auth.modify_cluster_setting_applies_to_all.enabled` so that mixed-version clusters can migrate off of this setting, which is deprecated in favor of the privilege [`MODIFYSQLCLUSTERSETTING`]({% link v23.1/set-cluster-setting.md %}#required-privileges). [#122455][#122455] -[#122455]: https://github.com/cockroachdb/cockroach/pull/122455 +- Reintroduced [cluster setting]({% link v23.1/cluster-settings.md %}) `sql.auth.modify_cluster_setting_applies_to_all.enabled` so that mixed-version clusters can migrate off of this setting, which is deprecated in favor of the privilege [`MODIFYSQLCLUSTERSETTING`]({% link v23.1/set-cluster-setting.md %}#required-privileges). diff --git a/src/current/_includes/releases/v23.1/v23.1.2.md b/src/current/_includes/releases/v23.1/v23.1.2.md index fbd28487c6a..44cfcf92525 100644 --- a/src/current/_includes/releases/v23.1/v23.1.2.md +++ b/src/current/_includes/releases/v23.1/v23.1.2.md @@ -6,160 +6,160 @@ Release Date: May 30, 2023

Backward-incompatible changes

-- Schema names in the [`search_path`]({% link v23.1/sql-name-resolution.md %}#search-path) session variable now respect case and must be delimited with double quotation marks. Previously, if a `search_path` was specified in the connection string parameters, it would be treated case insensitive by default. [#101493][#101493] +- Schema names in the [`search_path`]({% link v23.1/sql-name-resolution.md %}#search-path) session variable now respect case and must be delimited with double quotation marks. Previously, if a `search_path` was specified in the connection string parameters, it would be treated case insensitive by default. + - [#101493][#101493]

General changes

-- Queries with invalid syntax are now logged at [the `INFO` level]({% link v23.1/logging.md %}#info) in the `SQL_EXEC` log channel. Previously, these were logged at the `ERROR` level. [#101094][#101094] +- Queries with invalid syntax are now logged at [the `INFO` level]({% link v23.1/logging.md %}#info) in the `SQL_EXEC` log channel. Previously, these were logged at the `ERROR` level.

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

-- [CDC queries]({% link v23.1/cdc-queries.md %}) now support wrapped envelope with diff (`envelope='wrapped', diff`). [#101392][#101392] -- [Changefeeds using the `WITH confluent_schema_registry` option]({% link v23.1/stream-a-changefeed-to-a-confluent-cloud-kafka-cluster.md %}) will make fewer duplicate schema registrations. [#100844][#100844] -- Added logic to set the cluster's multi-region system database's [survival goal]({% link v23.1/multiregion-overview.md %}#survival-goals) to the max non-system database's survival whenever an `ALTER DATABASE...SURVIVE...FAILURE` is issued. [#102379][#102379] -- [Cluster SSO using JSON web tokens]({% link v23.1/sso-sql.md %}) (JWT) can now read SQL usernames from any JWT claims instead of requiring the subject claim to be used. The claim can be controlled by the `server.jwt_authentication.claim` [cluster setting]({% link v23.1/cluster-settings.md %}) with an empty string or "sub" equivalent to the previous behavior. [#103526][#103526] +- [CDC queries]({% link v23.1/cdc-queries.md %}) now support wrapped envelope with diff (`envelope='wrapped', diff`). +- [Changefeeds using the `WITH confluent_schema_registry` option]({% link v23.1/stream-a-changefeed-to-a-confluent-cloud-kafka-cluster.md %}) will make fewer duplicate schema registrations. +- Added logic to set the cluster's multi-region system database's [survival goal]({% link v23.1/multiregion-overview.md %}#survival-goals) to the max non-system database's survival whenever an `ALTER DATABASE...SURVIVE...FAILURE` is issued. +- [Cluster SSO using JSON web tokens]({% link v23.1/sso-sql.md %}) (JWT) can now read SQL usernames from any JWT claims instead of requiring the subject claim to be used. The claim can be controlled by the `server.jwt_authentication.claim` [cluster setting]({% link v23.1/cluster-settings.md %}) with an empty string or "sub" equivalent to the previous behavior.

SQL language changes

-- Added a new [session variable]({% link v23.1/set-vars.md %}) `unbounded_parallel_scans`, which controls whether scans will be parallelized across [ranges](https://www.cockroachlabs.com/docs/v23.1/architecture/overview#architecture-range) in more cases. Note that using this feature can lead to increased likelihood of [out-of-memory errors (OOMs)]({% link v23.1/cluster-setup-troubleshooting.md %}#out-of-memory-oom-crash), so it should be used with care (namely when you expect that the scan should read a "reasonable" number of rows - probably less than 10k). Also note that [queries with `LIMIT`s]({% link v23.1/limit-offset.md %}) aren't affected by this variable; cross-range parallelism of scans continue to be disabled for such queries. [#100948][#100948] -- Statements of type [`SET ...`]({% link v23.1/set-vars.md %}) are not longer displayed on the [Insights page]({% link v23.1/ui-insights-page.md %}). [#101669][#101669] -- Fixed [`crdb_internal.transaction_contention_events`](https://www.cockroachlabs.com/docs/v23.1/crdb-internal#transaction_contention_events), so it generates even if an error occurs when getting the names. [#101870][#101870] -- Added a new SQL activity updater job which updates the `system.transaction_activity` and `system.statement_activity` tables based on the [statistics]({% link v23.1/ui-statements-page.md %}#statement-statistics) tables. [#101996][#101996] -- Added two views to the [`crdb_internal catalog`]({% link v23.1/crdb-internal.md %}): `crdb_internal.statement_activity`, which surfaces data in the `persisted system.statement_activity` table and `crdb_internal.transaction_activity`, which surfaces the `system.transaction_activity` table. [#102002][#102002] -- Tables with [Row-level TTL]({% link v23.1/row-level-ttl.md %}) settings can now have outbound [foreign keys]({% link v23.1/foreign-key.md %}). [#101874][#101874] -- Span statistics are now unavailable on mixed-version clusters. [#101877][#101877] -- Introduced the `to_char(date, format)` [built-in function]({% link v23.1/functions-and-operators.md %}), which converts a given date to a string using the given format string. [#102989][#102989] -- Renamed an existing metric `changefeed.table_metadata_nanos` to `changefeed.schemafeed.table_metadata_nanos` and introduced a new metric `changefeed.schemafeed.table_history_scans`, which records the number of table history scans the [schema feed]({% link v23.1/changefeed-examples.md %}) performs. [#102977][#102977] -- Changed the [`OID`]({% link v23.1/oid.md %}) generation for `pg_catalog`. For example `column`, `index` and `constraint` `OID`'s will have different values. `Relation`, `type` and `function` `OID`'s remain unchanged. [#103556][#103556] -- Added a new [session setting]({% link v23.1/set-vars.md %}) `optimizer_use_improved_computed_column_filters_derivation`, which defaults to `FALSE`. When `TRUE`, the optimizer will derive filters on computed columns in more cases. [#103412][#103412] -- `Crdb_internal.transaction_contention_events`, `crdb_internal.node_contention_events`, and `crdb_internal.cluster_locks` will now redact keys provided the user has [`VIEWACTIVITYREDACTED`](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization). `Crdb_internal.node_contention_events` can only be viewed if the user has any of `admin`, `VIEWACTIVITY` or `VIEWACTIVITYREDACTED`. [#103637][#103637] +- Added a new [session variable]({% link v23.1/set-vars.md %}) `unbounded_parallel_scans`, which controls whether scans will be parallelized across [ranges](https://www.cockroachlabs.com/docs/v23.1/architecture/overview#architecture-range) in more cases. Note that using this feature can lead to increased likelihood of [out-of-memory errors (OOMs)]({% link v23.1/cluster-setup-troubleshooting.md %}#out-of-memory-oom-crash), so it should be used with care (namely when you expect that the scan should read a "reasonable" number of rows - probably less than 10k). Also note that [queries with `LIMIT`s]({% link v23.1/limit-offset.md %}) aren't affected by this variable; cross-range parallelism of scans continue to be disabled for such queries. +- Statements of type [`SET ...`]({% link v23.1/set-vars.md %}) are not longer displayed on the [Insights page]({% link v23.1/ui-insights-page.md %}). +- Fixed [`crdb_internal.transaction_contention_events`](https://www.cockroachlabs.com/docs/v23.1/crdb-internal#transaction_contention_events), so it generates even if an error occurs when getting the names. +- Added a new SQL activity updater job which updates the `system.transaction_activity` and `system.statement_activity` tables based on the [statistics]({% link v23.1/ui-statements-page.md %}#statement-statistics) tables. +- Added two views to the [`crdb_internal catalog`]({% link v23.1/crdb-internal.md %}): `crdb_internal.statement_activity`, which surfaces data in the `persisted system.statement_activity` table and `crdb_internal.transaction_activity`, which surfaces the `system.transaction_activity` table. +- Tables with [Row-level TTL]({% link v23.1/row-level-ttl.md %}) settings can now have outbound [foreign keys]({% link v23.1/foreign-key.md %}). +- Span statistics are now unavailable on mixed-version clusters. +- Introduced the `to_char(date, format)` [built-in function]({% link v23.1/functions-and-operators.md %}), which converts a given date to a string using the given format string. +- Renamed an existing metric `changefeed.table_metadata_nanos` to `changefeed.schemafeed.table_metadata_nanos` and introduced a new metric `changefeed.schemafeed.table_history_scans`, which records the number of table history scans the [schema feed]({% link v23.1/changefeed-examples.md %}) performs. +- Changed the [`OID`]({% link v23.1/oid.md %}) generation for `pg_catalog`. For example `column`, `index` and `constraint` `OID`'s will have different values. `Relation`, `type` and `function` `OID`'s remain unchanged. +- Added a new [session setting]({% link v23.1/set-vars.md %}) `optimizer_use_improved_computed_column_filters_derivation`, which defaults to `FALSE`. When `TRUE`, the optimizer will derive filters on computed columns in more cases. +- `Crdb_internal.transaction_contention_events`, `crdb_internal.node_contention_events`, and `crdb_internal.cluster_locks` will now redact keys provided the user has [`VIEWACTIVITYREDACTED`](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization). `Crdb_internal.node_contention_events` can only be viewed if the user has any of `admin`, `VIEWACTIVITY` or `VIEWACTIVITYREDACTED`.

Operational changes

-- Added the `rebalancing.replicas.cpunanospersecond` histogram [metric]({% link v23.1/metrics.md %}), which provides insight into the distribution of replica CPU usage within a store. [#100509][#100509] -- Added the `rebalancing.replicas.queriespersecond` histogram [metric]({% link v23.1/metrics.md %}), which provides insight into the distribution of queries per replica within a store. [#100509][#100509] -- The amount of [replication](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer) traffic in flight from a single [Raft leader](https://www.cockroachlabs.com/docs/v23.1/architecture/reads-and-writes-overview#architecture-raft-leader) to a follower has been reduced from 256 MB to 32 MB. This reduces the chance of running out-of-memory during bulk write operations. This can be controlled via the environment variable `COCKROACH_RAFT_MAX_INFLIGHT_BYTES`. [#101507][#101507] -- Added the [metric]({% link v23.1/metrics.md %}) `leases.requests.latency`, which records a histogram of lease request latencies. [#100475][#100475] -- When local corruption of data is encountered by a background job in the [storage engine](https://www.cockroachlabs.com/docs/v23.1/architecture/storage-layer), a node will now exit immediately. [#102274][#102274] -- When the [`--experimental-dns-srv`]({% link v23.1/cockroach-start.md %}#networking) flag is enabled, the `crdb` node will always attempt to query SRV records of an address when dialing remote targets, and fall back to use the address verbatim if the SRV query fails. Previously, SRV queries were only attempted once when a node starts. [#102468][#102468] -- The default Raft scheduler concurrency, controlled by `COCKROACH_SCHEDULER_CONCURRENCY` and defaulting to 8 per CPU core capped at 96, is now divided evenly across stores instead of applying individually per store. This avoids excessive Go scheduler pressure and memory usage on nodes with many stores. The common case of 1 store per node is not affected. [#103073][#103073] -- Workload generators now export Go runtime metrics via [Prometheus]({% link v23.1/monitor-cockroachdb-with-prometheus.md %}) endpoint. [#102392][#102392] -- [Multi-region]({% link v23.1/multiregion-overview.md %}) Serverless databases that are created without a primary region will now inherit regions from the Serverless cluster's regions. [#102627][#102627] +- Added the `rebalancing.replicas.cpunanospersecond` histogram [metric]({% link v23.1/metrics.md %}), which provides insight into the distribution of replica CPU usage within a store. +- Added the `rebalancing.replicas.queriespersecond` histogram [metric]({% link v23.1/metrics.md %}), which provides insight into the distribution of queries per replica within a store. +- The amount of [replication](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer) traffic in flight from a single [Raft leader](https://www.cockroachlabs.com/docs/v23.1/architecture/reads-and-writes-overview#architecture-raft-leader) to a follower has been reduced from 256 MB to 32 MB. This reduces the chance of running out-of-memory during bulk write operations. This can be controlled via the environment variable `COCKROACH_RAFT_MAX_INFLIGHT_BYTES`. +- Added the [metric]({% link v23.1/metrics.md %}) `leases.requests.latency`, which records a histogram of lease request latencies. +- When local corruption of data is encountered by a background job in the [storage engine](https://www.cockroachlabs.com/docs/v23.1/architecture/storage-layer), a node will now exit immediately. +- When the [`--experimental-dns-srv`]({% link v23.1/cockroach-start.md %}#networking) flag is enabled, the `crdb` node will always attempt to query SRV records of an address when dialing remote targets, and fall back to use the address verbatim if the SRV query fails. Previously, SRV queries were only attempted once when a node starts. +- The default Raft scheduler concurrency, controlled by `COCKROACH_SCHEDULER_CONCURRENCY` and defaulting to 8 per CPU core capped at 96, is now divided evenly across stores instead of applying individually per store. This avoids excessive Go scheduler pressure and memory usage on nodes with many stores. The common case of 1 store per node is not affected. +- Workload generators now export Go runtime metrics via [Prometheus]({% link v23.1/monitor-cockroachdb-with-prometheus.md %}) endpoint. +- [Multi-region]({% link v23.1/multiregion-overview.md %}) Serverless databases that are created without a primary region will now inherit regions from the Serverless cluster's regions.

Command-line changes

-- The [`cockroach debug zip`]({% link v23.1/cockroach-debug-zip.md %}) command now accepts an `--include-range-info` flag, which determines whether CockroachDB retrieves individual `nodes/*/ranges/*.json` files, which was previously done by default. For large clusters, this can dramatically reduce the size of the generated artifacts. This flag defaults to `FALSE`. [#102862][#102862] -- [Workload]({% link v23.1/cockroach-workload.md %}) now jitters the teardown of connections to prevent a [thundering herd](https://wikipedia.org/wiki/Thundering_herd_problem) of queries impacting P99 latency results. [#102395][#102395] -- Workload utility now has flags to tune the [connection pool]({% link v23.1/connection-pooling.md %}) used for testing. See `--conn-healthcheck-period`, `--min-conns`, and `--max-conn-*` flags for details. [#102395][#102395] -- Workload now supports every [PostgreSQL query mode](https://github.com/jackc/pgx/blob/fa5fbed497bc75acee05c1667a8760ce0d634cba/conn.go#L167-L182) available via the underlying `pgx` driver. [#102395][#102395] -- The `\connect` client-side command for the SQL shell (included in `cockroach sql`, `cockroach demo`, `cockroach-sql`) now recognizes the option `autocerts` as its last argument. When provided, `\c` will now try to discover a [Transport Layer Security (TLS)](https://www.cockroachlabs.com/docs/v23.1/security-reference/transport-layer-security) client certificate and key in the same directory(ies) as used by the previous connection URL. This feature makes it easier to switch usernames when TLS client/key files are available for both the previous and new username. [#103144][#103144] +- The [`cockroach debug zip`]({% link v23.1/cockroach-debug-zip.md %}) command now accepts an `--include-range-info` flag, which determines whether CockroachDB retrieves individual `nodes/*/ranges/*.json` files, which was previously done by default. For large clusters, this can dramatically reduce the size of the generated artifacts. This flag defaults to `FALSE`. +- [Workload]({% link v23.1/cockroach-workload.md %}) now jitters the teardown of connections to prevent a [thundering herd](https://wikipedia.org/wiki/Thundering_herd_problem) of queries impacting P99 latency results. +- Workload utility now has flags to tune the [connection pool]({% link v23.1/connection-pooling.md %}) used for testing. See `--conn-healthcheck-period`, `--min-conns`, and `--max-conn-*` flags for details. +- Workload now supports every [PostgreSQL query mode](https://github.com/jackc/pgx/blob/fa5fbed497bc75acee05c1667a8760ce0d634cba/conn.go#L167-L182) available via the underlying `pgx` driver. +- The `\connect` client-side command for the SQL shell (included in `cockroach sql`, `cockroach demo`, `cockroach-sql`) now recognizes the option `autocerts` as its last argument. When provided, `\c` will now try to discover a [Transport Layer Security (TLS)](https://www.cockroachlabs.com/docs/v23.1/security-reference/transport-layer-security) client certificate and key in the same directory(ies) as used by the previous connection URL. This feature makes it easier to switch usernames when TLS client/key files are available for both the previous and new username.

DB Console changes

-- The `Application Name` column is now shown by default in the [Fingerprints Overview]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-view) pages. Statements and transactions fingerprints will be displayed per application on the Overview pages rather than grouped into a single fingerprint ID. [#101164][#101164] -- When going from the [Fingerprints Overview]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-view) pages or the [Insight Details]({% link v23.1/ui-insights-page.md %}) pages to the Fingerprint Details page, the Details page will fetch data for the statement with the provided application name. For Overview pages, this is the application name of the selected row. For Insight details, this is the application of the execution that generated the insight. [#101164][#101164] -- Updated the [Network Latency]({% link v23.1/ui-network-latency-page.md %}) side nav name and Network Diagnostics page title to Network. Updated the [Advanced Debugging]({% link v23.1/ui-debug-pages.md %}) page title to Advanced Debug. [#101758][#101758] -- Added an option to select the trace rate for [Statement Diagnostics]({% link v23.1/ui-statements-page.md %}#diagnostics) collection. [#101759][#101759] -- Added a time scale selector to the [Statement Diagnostics]({% link v23.1/ui-statements-page.md %}#diagnostics) page, making it possible to see bundles only from the selected period. [#101802][#101802] -- Added draining node as its own value on the [DB Console Overview]({% link v23.1/ui-overview.md %}) page, instead of counting it as a dead node. [#101793][#101793] -- Added the ability for users to view timestamps in [DB Console]({% link v23.1/ui-overview.md %}) in their preferred timezone via the cluster setting `ui.display_timezone`. Previously, only the timezones Coordinated Universal Time and America/New_York were supported. [#102195][#102195] -- An alert on [DB Console Overview]({% link v23.1/ui-overview.md %}) page is shown when the cluster setting `cluster.preserve_downgrade_option` is set, and no longer waits 48 hours to show. [#102913][#102913] -- Added [Transaction Insights]({% link cockroachcloud/insights-page.md %}) for Serverless. [#103363][#103363] -- Added `_status/load` to the list of Raw Status Endpoints on the [Advanced Debug]({% link v23.1/ui-debug-pages.md %}) page. [#103420][#103420] -- If a page crashed, a force refresh is no longer required to be able to see the other pages on [DB Console]({% link v23.1/ui-overview.md %}). [#103328][#103328] -- The filter on the [SQL Activity]({% link v23.1/ui-overview.md %}#sql-activity) page is now working properly. Fixed the type on the JSON object from `stmtTyp` to `stmtType`. [#103411][#103411] -- Added missing information on the [Index Details]({% link v23.1/ui-databases-page.md %}#index-recommendations) page about latency information of most used fingerprints. [#103421][#103421] +- The `Application Name` column is now shown by default in the [Fingerprints Overview]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-view) pages. Statements and transactions fingerprints will be displayed per application on the Overview pages rather than grouped into a single fingerprint ID. +- When going from the [Fingerprints Overview]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-view) pages or the [Insight Details]({% link v23.1/ui-insights-page.md %}) pages to the Fingerprint Details page, the Details page will fetch data for the statement with the provided application name. For Overview pages, this is the application name of the selected row. For Insight details, this is the application of the execution that generated the insight. +- Updated the [Network Latency]({% link v23.1/ui-network-latency-page.md %}) side nav name and Network Diagnostics page title to Network. Updated the [Advanced Debugging]({% link v23.1/ui-debug-pages.md %}) page title to Advanced Debug. +- Added an option to select the trace rate for [Statement Diagnostics]({% link v23.1/ui-statements-page.md %}#diagnostics) collection. +- Added a time scale selector to the [Statement Diagnostics]({% link v23.1/ui-statements-page.md %}#diagnostics) page, making it possible to see bundles only from the selected period. +- Added draining node as its own value on the [DB Console Overview]({% link v23.1/ui-overview.md %}) page, instead of counting it as a dead node. +- Added the ability for users to view timestamps in [DB Console]({% link v23.1/ui-overview.md %}) in their preferred timezone via the cluster setting `ui.display_timezone`. Previously, only the timezones Coordinated Universal Time and America/New_York were supported. +- An alert on [DB Console Overview]({% link v23.1/ui-overview.md %}) page is shown when the cluster setting `cluster.preserve_downgrade_option` is set, and no longer waits 48 hours to show. +- Added [Transaction Insights]({% link cockroachcloud/insights-page.md %}) for Serverless. +- Added `_status/load` to the list of Raw Status Endpoints on the [Advanced Debug]({% link v23.1/ui-debug-pages.md %}) page. +- If a page crashed, a force refresh is no longer required to be able to see the other pages on [DB Console]({% link v23.1/ui-overview.md %}). +- The filter on the [SQL Activity]({% link v23.1/ui-overview.md %}#sql-activity) page is now working properly. Fixed the type on the JSON object from `stmtTyp` to `stmtType`. +- Added missing information on the [Index Details]({% link v23.1/ui-databases-page.md %}#index-recommendations) page about latency information of most used fingerprints.

Bug fixes

-- Fixed the `sql.mem.distsql.current` [metric]({% link v23.1/metrics.md %}) so it would no longer double count the memory usage of remote DistSQL flows. [#100049][#100049] -- Fixed a rare bug introduced prior to v22.1 where distributed plans could cause the graceful drain of a node to become stuck retrying forever during [node shutdown]({% link v23.1/node-shutdown.md %}). This bug led to errors like `drain details: distSQL execution flows:`, together with a non-zero number of flows that does not reduce over a long period of time. [#100841][#100841] -- Fixed a bug that caused a [restore]({% link v23.1/restore.md %}) to fail occasionally due to incorrect schema ID resolution when restoring a backup with [user-defined schemas]({% link v23.1/schema-design-schema.md %}). [#101309][#101309] -- Fixed a bug that caused suboptimal query plans to be generated by [the optimizer]({% link v23.1/cost-based-optimizer.md %}) when the table being queried contained infinite values, e.g., `'+Infinity'::DECIMAL`. This bug was present since v22.1 (and likely earlier). It could also be triggered in rare cases when [table statistics]({% link v23.1/show-statistics.md %}) forecasts created a forecasted bucket with an infinite value. [#101135][#101135] -- Fixed a rare internal error in [the optimizer]({% link v23.1/cost-based-optimizer.md %}) that existed since before v22.1, which could occur while enforcing orderings between SQL operators. [#101173][#101173] -- Fixed a bug so that `crdb_internal.deserialize_session` internal function works properly with prepared statements that have more param type hints than params. [#101367][#101367] -- Fixed a bug that caused internal errors when executing [user-defined functions]({% link v23.1/user-defined-functions.md %}) with empty bodies. This bug was only present in alpha pre-release versions of 23.1. [#101382][#101382] -- The `search_path` [session variable]({% link v23.1/set-vars.md %}) now supports schema names that have commas in them. Also, fixed a bug in parsing a `search_path` with a quote in it when specified in the [connection string]({% link v23.1/connection-parameters.md %}). [#101493][#101493] -- Fixed a bug that has existed since [user-defined functions]({% link v23.1/user-defined-functions.md %}) were introduced that could cause a function call to resolve to the wrong function after changes to the [schema `search_path`]({% link v23.1/sql-name-resolution.md %}#current-schema). [#101491][#101491] -- Fixed an internal error that could occur when the `enforce_home_region` [session setting]({% link v23.1/set-vars.md %}) is on and the input to the lookup join is a `SELECT` of scalar expressions (e.g., `1+1`). Also, [subqueries]({% link v23.1/subqueries.md %}) with no home region now error out with `enforce_home_region` set. [#101483][#101483] -- Previously, CockroachDB alpha and beta versions of 23.1 would panic on [`cockroach start`]({% link v23.1/cockroach-start.md %}) command when the `GOMEMLIMIT` environment variable was set and the `--max-go-memory` flag wasn't specified. This is now fixed. [#101564][#101564] -- Fixed a bug whereby some tables' physical disk space could not be calculated by [the storage engine](https://www.cockroachlabs.com/docs/v23.1/architecture/storage-layer). [#100939][#100939] -- Fixed a bug that caused errors in test builds and potentially incorrect results in release builds when invoking a [user-defined function]({% link v23.1/user-defined-functions.md %}) with a subquery argument. This bug was only present in v23.1 alpha versions. [#101641][#101641] +- Fixed the `sql.mem.distsql.current` [metric]({% link v23.1/metrics.md %}) so it would no longer double count the memory usage of remote DistSQL flows. +- Fixed a rare bug introduced prior to v22.1 where distributed plans could cause the graceful drain of a node to become stuck retrying forever during [node shutdown]({% link v23.1/node-shutdown.md %}). This bug led to errors like `drain details: distSQL execution flows:`, together with a non-zero number of flows that does not reduce over a long period of time. +- Fixed a bug that caused a [restore]({% link v23.1/restore.md %}) to fail occasionally due to incorrect schema ID resolution when restoring a backup with [user-defined schemas]({% link v23.1/schema-design-schema.md %}). +- Fixed a bug that caused suboptimal query plans to be generated by [the optimizer]({% link v23.1/cost-based-optimizer.md %}) when the table being queried contained infinite values, e.g., `'+Infinity'::DECIMAL`. This bug was present since v22.1 (and likely earlier). It could also be triggered in rare cases when [table statistics]({% link v23.1/show-statistics.md %}) forecasts created a forecasted bucket with an infinite value. +- Fixed a rare internal error in [the optimizer]({% link v23.1/cost-based-optimizer.md %}) that existed since before v22.1, which could occur while enforcing orderings between SQL operators. +- Fixed a bug so that `crdb_internal.deserialize_session` internal function works properly with prepared statements that have more param type hints than params. +- Fixed a bug that caused internal errors when executing [user-defined functions]({% link v23.1/user-defined-functions.md %}) with empty bodies. This bug was only present in alpha pre-release versions of 23.1. +- The `search_path` [session variable]({% link v23.1/set-vars.md %}) now supports schema names that have commas in them. Also, fixed a bug in parsing a `search_path` with a quote in it when specified in the [connection string]({% link v23.1/connection-parameters.md %}). +- Fixed a bug that has existed since [user-defined functions]({% link v23.1/user-defined-functions.md %}) were introduced that could cause a function call to resolve to the wrong function after changes to the [schema `search_path`]({% link v23.1/sql-name-resolution.md %}#current-schema). +- Fixed an internal error that could occur when the `enforce_home_region` [session setting]({% link v23.1/set-vars.md %}) is on and the input to the lookup join is a `SELECT` of scalar expressions (e.g., `1+1`). Also, [subqueries]({% link v23.1/subqueries.md %}) with no home region now error out with `enforce_home_region` set. +- Previously, CockroachDB alpha and beta versions of 23.1 would panic on [`cockroach start`]({% link v23.1/cockroach-start.md %}) command when the `GOMEMLIMIT` environment variable was set and the `--max-go-memory` flag wasn't specified. This is now fixed. +- Fixed a bug whereby some tables' physical disk space could not be calculated by [the storage engine](https://www.cockroachlabs.com/docs/v23.1/architecture/storage-layer). +- Fixed a bug that caused errors in test builds and potentially incorrect results in release builds when invoking a [user-defined function]({% link v23.1/user-defined-functions.md %}) with a subquery argument. This bug was only present in v23.1 alpha versions. - Point [inserts]({% link v23.1/insert.md %}) and [updates]({% link v23.1/update.md %}) that write to a remote region of a table created with the [`REGIONAL BY ROW AS`]({% link v23.1/create-table.md %}#create-a-table-with-a-regional-by-row-locality-using-a-custom-region-column) clause will now error out. -- Fixed a bug in the [built-in functions]({% link v23.1/functions-and-operators.md %}) `pg_get_indexdef` and `col_description` that could cause the functions to return errors if the user created tables named `pg_indexes` or `pg_attribute`. Or, if the user created a schema named `system` with a table named `comments`. This bug was only present in pre-release versions of v23.1. [#101688][#101688] -- The descriptions of `rebalancing.readbytespersecond` and `rebalancing.writebytespersecond` metrics now correctly reference bytes read and bytes written, respectively. [#101709][#101709] -- Fixed a bug to ensure that the [list of fingerprints]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-view) used per index is shown even when there is a max-size limit on the SQL API. [#101783][#101783] -- Fixed a bug where, when CockroachDB failed to retrieve [contention information]({% link v23.1/performance-best-practices-overview.md %}#transaction-contention), the full [Insights]({% link v23.1/ui-insights-page.md %}) page would return an error. Now, the Insights page will load even when there is an issue with decoding contention information. [#101782][#101782] -- Fixed a bug where a [`RESTORE`]({% link v23.1/restore.md %}) operation with `skip_localities_check` could fail with errors if regions were missing on a cluster. [#101797][#101797] -- Fixed a bug in [the optimizer]({% link v23.1/cost-based-optimizer.md %}) that could cause an internal error in rare cases for a query with [outer joins]({% link v23.1/joins.md %}#full-outer-joins) that could be simplified to non-outer joins and at least one semi-join. This bug was present since before v22.1. [#100670][#100670] -- Fixed a bug where CockroachDB previously incorrectly evaluated [`EXPORT`]({% link v23.1/export.md %}) statements that had projections or rendering on top of the `EXPORT` (e.g. the [common table expression]({% link v23.1/common-table-expressions.md %}) `WITH cte AS (EXPORT INTO CSV 'nodelocal://1/export1/' FROM SELECT * FROM t) SELECT filename FROM cte;`). Such statements would result in panics or incorrect query results. Note that the exported data wasn't affected, only the presentation of the query result. This bug had been present since v22.1 or earlier. [#101805][#101805] -- Fixed a bug in [the optimizer]({% link v23.1/cost-based-optimizer.md %}) introduced in v22.2.0 that could cause queries containing a [subquery]({% link v23.1/subqueries.md %}) with a lateral join, in which the right side of the lateral join was an [aliased data source]({% link v23.1/table-expressions.md %}#aliased-table-expressions), to return an internal error in some cases. For example, it could cause an error if the subquery was provided as an argument to an [aggregate function]({% link v23.1/functions-and-operators.md %}#aggregate-functions). [#101863][#101863] -- Fixed handling of expressions in `IN` clauses such as `(c1, c2) IN (SELECT c3+1, c4+1 FROM ...)`. Previously, such query expressions would error out during type checking. [#102027][#102027] -- Fixed a potential bug whereby a failed or cancelled [`IMPORT`]({% link v23.1/import.md %}) could leave some of the imported rows behind after it was cancelled, in the rare event that the writing processes were slow enough to continue writing after the cleanup process had started. [#101443][#101443] -- Fixed a bug that could cause incorrect results for queries invoking `STRICT` [user-defined functions]({% link v23.1/user-defined-functions.md %}). This bug was only present in pre-release versions of 23.1. [#101950][#101950] -- Fixed a bug where CockroachDB's [pgwire]({% link v23.1/postgresql-compatibility.md %}) implementation would incorrectly parse arrays if they were sent as placeholder arguments to a prepared statement, and the argument had spaces in between the array elements. [#101596][#101596] -- Fixed a very rare bug that could cause keys to be unexpectedly deleted locally within a [store]({% link v23.1/cockroach-start.md %}#flags-store) by [replica rebalancing](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer) during a write heavy workload. [#102167][#102167] -- Fixed a bug in the behavior of the `enforce_home_region` [session variable]({% link v23.1/set-vars.md %}) that may have allowed a hash join to be favored over a lookup join, or failed to error out remote accesses done by uniqueness checks for mutations on [`REGIONAL BY ROW` tables]({% link v23.1/regional-tables.md %}). Also, fixed static erroring of some locality-optimized lookup joins to now be handled dynamically during query execution. [#102207][#102207] -- Fixed a bug introduced in testing releases of v23.1 where a node could crash when evaluating a [`COPY`]({% link v23.1/copy.md %}) command when the schema had `INT2` or `INT4` type. [#102306][#102306] -- Fixed a bug where a [backup]({% link v23.1/backup-and-restore-overview.md %}) with a key's revision history split across multiple [SST files](https://www.cockroachlabs.com/docs/v23.1/architecture/storage-layer#ssts) may not have correctly restored the proper revision of the key. [#102343][#102343] -- Fixed a bug in testing releases of v23.1 where a user could be prevented from logging in or viewing or changing [`GRANT`s]({% link v23.1/grant.md %}) if the cluster had a long enough period of inactivity. [#102489][#102489] -- Previously, CockroachDB could encounter a "command is too large" error when evaluating [`UPSERT`]({% link v23.1/upsert.md %}) statements such that the new values combined exceeded the size of the `kv.raft.command.max_size` cluster setting. This bug had been present since before v21.1 and initially all write operations ([`INSERT`]({% link v23.1/insert.md %}), [`UPDATE`]({% link v23.1/update.md %}), [`DELETE`]({% link v23.1/delete.md %})) were affected; however, in v21.2 those three were fixed, but `UPSERT` was forgotten about. This is now fixed. [#102514][#102514] -- Fixed a bug introduced in v22.1.19, v22.2.8, and pre-release versions of 23.1 that could cause queries to return spurious insufficient [privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization) errors. For the bug to occur, two databases would need to have duplicate tables each with a [foreign key]({% link v23.1/foreign-key.md %}) reference to another table. The error would then occur if the same SQL string was executed against both databases concurrently by users that have [privileges](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization) over only one of the tables. [#102626][#102626] -- Fixed a bug where [`RENAME COLUMN`]({% link v23.1/alter-table.md %}#rename-column) was incorrectly allowed and would modify these columns node-wide. [#102460][#102460] -- Fixed a bug where the internal `node` pseudo-role was not viewable through introspection of `pg_catalog` tables. [#102662][#102662] -- Fixed a bug where [`COPY ... TO`]({% link v23.1/copy.md %}) statements would always fail when used in a prepared statement. CockroachDB now matches the pgwire handling of prepared `COPY ... TO` statements. [#102663][#102663] -- Fixed a bug where the [`ALTER DEFAULT PRIVILEGES ... GRANT USAGE ON SEQUENCES`]({% link v23.1/alter-default-privileges.md %}) statement would fail because the sequence object was mapped to an incorrect internal privilege object. [#102724][#102724] -- Fixed a minor bug that caused an internal error for some queries with nested [subqueries]({% link v23.1/subqueries.md %}) instead of the more appropriate "could not decorrelate subquery" error. This bug was only present in pre-release alpha and beta versions of 23.1. [#102384][#102384] -- Fixed a bug that allowed values to be inserted into an [`ARRAY`]({% link v23.1/array.md %})-type column that did not conform to the inner-type of the array. For example, it was possible to insert `ARRAY['foo']` into a column of type `CHAR(1)[]`. This could cause incorrect results when querying the table. The insert now errors, which is expected. This bug was present since v21.1. [#102807][#102807] -- Fixed an issue where running `SHOW HISTOGRAM` to see the histogram for an [`ENUM`]({% link v23.1/enum.md %})-type column could cause a panic and crash the cockroach process. This issue has existed since v20.2.0. [#102828][#102828] -- Fixed the behavior of [user-defined functions (UDFs)]({% link v23.1/user-defined-functions.md %}) to return its results as a row instead of a tuple when UDFs are called in a query as a data source. This is now compatible with PostgreSQL behavior. [#102188][#102188] -- Fixed a bug in [closed timestamp](https://www.cockroachlabs.com/docs/v23.1/architecture/transaction-layer#closed-timestamps) updates within its side-transport. Previously, during asymmetric partitions, a node that transfers a lease away, and misses a liveness heartbeat, could then erroneously update the closed timestamp during the stasis period of its liveness. This could lead to closed timestamp invariant violation, and node crashes; in extreme cases, this could lead to inconsistencies in read-only queries. [#102601][#102601] -- Fixed a bug where [Row-level TTL]({% link v23.1/row-level-ttl.md %}) jobs would incorrectly process a table that spanned multiple ranges in rare cases. This bug had been present since v22.2.0. You were affected by this bug if you saw the error message `"error decoding EncDatum of ...: did not find terminator ... in buffer ..."`. [#102881][#102881] -- The `Retry.Max` field of the [`webhook_sink_config`]({% link v23.1/changefeed-sinks.md %}#webhook-sink) option for changefeeds was not correctly defined in the docs. The existing docs mention that it is "The maximum amount of time the sink will retry a single HTTP request to send a batch", but this is incorrect. It actually represents the maximum number of retries which will be attempted when sending a batch in an HTTP request fails. This is now fixed to correctly capture its behavior. Also, fixed a bug where the retry time would wait for 4 seconds, regardless of `Retry.Max`. With this change, the new maximum retry time is 30 seconds. The initial backoff will keep doubling every time a retry occurs until the maximum of 30 seconds is reached. E.g. If `Retry.Max = 4` and the initial backoff is 10 seconds, at most 4 retries will be performed with the backoff times 10, 20, 30, 30 seconds respectively. [#102958][#102958] -- Stopped using a `NULL` value for `pg_constraint.conparentid`. Now the value is hard-coded to `0`, since CockroachDB does not support constraints on [partitions]({% link v23.1/partitioning.md %}). [#103234][#103234] -- Fixed a bug where [`COPY`]({% link v23.1/copy.md %}) in v23.1.0 and beta versions would incorrectly encode data with multiple column families. The data must be dropped and re-imported to be encoded correctly. [#103355][#103355] -- Optimized over-head of [`pg_catalog.pg_description`]({% link v23.1/pg-catalog.md %}) and [`pg_catalog.pg_shdescription`]({% link v23.1/pg-catalog.md %}), which can lead to performance regression relative to v22.2 [#103331][#103331] -- Timeseries [metric]({% link v23.1/metrics.md %}) counts will now show cumulative counts for a histogram rather than a windowed count. A `-sum` timeseries is also exported to keep track of the cumulative sum of all samples in the histogram. [#103444][#103444] +- Fixed a bug in the [built-in functions]({% link v23.1/functions-and-operators.md %}) `pg_get_indexdef` and `col_description` that could cause the functions to return errors if the user created tables named `pg_indexes` or `pg_attribute`. Or, if the user created a schema named `system` with a table named `comments`. This bug was only present in pre-release versions of v23.1. +- The descriptions of `rebalancing.readbytespersecond` and `rebalancing.writebytespersecond` metrics now correctly reference bytes read and bytes written, respectively. +- Fixed a bug to ensure that the [list of fingerprints]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-view) used per index is shown even when there is a max-size limit on the SQL API. +- Fixed a bug where, when CockroachDB failed to retrieve [contention information]({% link v23.1/performance-best-practices-overview.md %}#transaction-contention), the full [Insights]({% link v23.1/ui-insights-page.md %}) page would return an error. Now, the Insights page will load even when there is an issue with decoding contention information. +- Fixed a bug where a [`RESTORE`]({% link v23.1/restore.md %}) operation with `skip_localities_check` could fail with errors if regions were missing on a cluster. +- Fixed a bug in [the optimizer]({% link v23.1/cost-based-optimizer.md %}) that could cause an internal error in rare cases for a query with [outer joins]({% link v23.1/joins.md %}#full-outer-joins) that could be simplified to non-outer joins and at least one semi-join. This bug was present since before v22.1. +- Fixed a bug where CockroachDB previously incorrectly evaluated [`EXPORT`]({% link v23.1/export.md %}) statements that had projections or rendering on top of the `EXPORT` (e.g. the [common table expression]({% link v23.1/common-table-expressions.md %}) `WITH cte AS (EXPORT INTO CSV 'nodelocal://1/export1/' FROM SELECT * FROM t) SELECT filename FROM cte;`). Such statements would result in panics or incorrect query results. Note that the exported data wasn't affected, only the presentation of the query result. This bug had been present since v22.1 or earlier. +- Fixed a bug in [the optimizer]({% link v23.1/cost-based-optimizer.md %}) introduced in v22.2.0 that could cause queries containing a [subquery]({% link v23.1/subqueries.md %}) with a lateral join, in which the right side of the lateral join was an [aliased data source]({% link v23.1/table-expressions.md %}#aliased-table-expressions), to return an internal error in some cases. For example, it could cause an error if the subquery was provided as an argument to an [aggregate function]({% link v23.1/functions-and-operators.md %}#aggregate-functions). +- Fixed handling of expressions in `IN` clauses such as `(c1, c2) IN (SELECT c3+1, c4+1 FROM ...)`. Previously, such query expressions would error out during type checking. +- Fixed a potential bug whereby a failed or cancelled [`IMPORT`]({% link v23.1/import.md %}) could leave some of the imported rows behind after it was cancelled, in the rare event that the writing processes were slow enough to continue writing after the cleanup process had started. +- Fixed a bug that could cause incorrect results for queries invoking `STRICT` [user-defined functions]({% link v23.1/user-defined-functions.md %}). This bug was only present in pre-release versions of 23.1. +- Fixed a bug where CockroachDB's [pgwire]({% link v23.1/postgresql-compatibility.md %}) implementation would incorrectly parse arrays if they were sent as placeholder arguments to a prepared statement, and the argument had spaces in between the array elements. +- Fixed a very rare bug that could cause keys to be unexpectedly deleted locally within a [store]({% link v23.1/cockroach-start.md %}#flags-store) by [replica rebalancing](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer) during a write heavy workload. +- Fixed a bug in the behavior of the `enforce_home_region` [session variable]({% link v23.1/set-vars.md %}) that may have allowed a hash join to be favored over a lookup join, or failed to error out remote accesses done by uniqueness checks for mutations on [`REGIONAL BY ROW` tables]({% link v23.1/regional-tables.md %}). Also, fixed static erroring of some locality-optimized lookup joins to now be handled dynamically during query execution. +- Fixed a bug introduced in testing releases of v23.1 where a node could crash when evaluating a [`COPY`]({% link v23.1/copy.md %}) command when the schema had `INT2` or `INT4` type. +- Fixed a bug where a [backup]({% link v23.1/backup-and-restore-overview.md %}) with a key's revision history split across multiple [SST files](https://www.cockroachlabs.com/docs/v23.1/architecture/storage-layer#ssts) may not have correctly restored the proper revision of the key. +- Fixed a bug in testing releases of v23.1 where a user could be prevented from logging in or viewing or changing [`GRANT`s]({% link v23.1/grant.md %}) if the cluster had a long enough period of inactivity. +- Previously, CockroachDB could encounter a "command is too large" error when evaluating [`UPSERT`]({% link v23.1/upsert.md %}) statements such that the new values combined exceeded the size of the `kv.raft.command.max_size` cluster setting. This bug had been present since before v21.1 and initially all write operations ([`INSERT`]({% link v23.1/insert.md %}), [`UPDATE`]({% link v23.1/update.md %}), [`DELETE`]({% link v23.1/delete.md %})) were affected; however, in v21.2 those three were fixed, but `UPSERT` was forgotten about. This is now fixed. +- Fixed a bug introduced in v22.1.19, v22.2.8, and pre-release versions of 23.1 that could cause queries to return spurious insufficient [privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization) errors. For the bug to occur, two databases would need to have duplicate tables each with a [foreign key]({% link v23.1/foreign-key.md %}) reference to another table. The error would then occur if the same SQL string was executed against both databases concurrently by users that have [privileges](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization) over only one of the tables. +- Fixed a bug where [`RENAME COLUMN`]({% link v23.1/alter-table.md %}#rename-column) was incorrectly allowed and would modify these columns node-wide. +- Fixed a bug where the internal `node` pseudo-role was not viewable through introspection of `pg_catalog` tables. +- Fixed a bug where [`COPY ... TO`]({% link v23.1/copy.md %}) statements would always fail when used in a prepared statement. CockroachDB now matches the pgwire handling of prepared `COPY ... TO` statements. +- Fixed a bug where the [`ALTER DEFAULT PRIVILEGES ... GRANT USAGE ON SEQUENCES`]({% link v23.1/alter-default-privileges.md %}) statement would fail because the sequence object was mapped to an incorrect internal privilege object. +- Fixed a minor bug that caused an internal error for some queries with nested [subqueries]({% link v23.1/subqueries.md %}) instead of the more appropriate "could not decorrelate subquery" error. This bug was only present in pre-release alpha and beta versions of 23.1. +- Fixed a bug that allowed values to be inserted into an [`ARRAY`]({% link v23.1/array.md %})-type column that did not conform to the inner-type of the array. For example, it was possible to insert `ARRAY['foo']` into a column of type `CHAR(1)[]`. This could cause incorrect results when querying the table. The insert now errors, which is expected. This bug was present since v21.1. +- Fixed an issue where running `SHOW HISTOGRAM` to see the histogram for an [`ENUM`]({% link v23.1/enum.md %})-type column could cause a panic and crash the cockroach process. This issue has existed since v20.2.0. +- Fixed the behavior of [user-defined functions (UDFs)]({% link v23.1/user-defined-functions.md %}) to return its results as a row instead of a tuple when UDFs are called in a query as a data source. This is now compatible with PostgreSQL behavior. +- Fixed a bug in [closed timestamp](https://www.cockroachlabs.com/docs/v23.1/architecture/transaction-layer#closed-timestamps) updates within its side-transport. Previously, during asymmetric partitions, a node that transfers a lease away, and misses a liveness heartbeat, could then erroneously update the closed timestamp during the stasis period of its liveness. This could lead to closed timestamp invariant violation, and node crashes; in extreme cases, this could lead to inconsistencies in read-only queries. +- Fixed a bug where [Row-level TTL]({% link v23.1/row-level-ttl.md %}) jobs would incorrectly process a table that spanned multiple ranges in rare cases. This bug had been present since v22.2.0. You were affected by this bug if you saw the error message `"error decoding EncDatum of ...: did not find terminator ... in buffer ..."`. +- The `Retry.Max` field of the [`webhook_sink_config`]({% link v23.1/changefeed-sinks.md %}#webhook-sink) option for changefeeds was not correctly defined in the docs. The existing docs mention that it is "The maximum amount of time the sink will retry a single HTTP request to send a batch", but this is incorrect. It actually represents the maximum number of retries which will be attempted when sending a batch in an HTTP request fails. This is now fixed to correctly capture its behavior. Also, fixed a bug where the retry time would wait for 4 seconds, regardless of `Retry.Max`. With this change, the new maximum retry time is 30 seconds. The initial backoff will keep doubling every time a retry occurs until the maximum of 30 seconds is reached. E.g. If `Retry.Max = 4` and the initial backoff is 10 seconds, at most 4 retries will be performed with the backoff times 10, 20, 30, 30 seconds respectively. +- Stopped using a `NULL` value for `pg_constraint.conparentid`. Now the value is hard-coded to `0`, since CockroachDB does not support constraints on [partitions]({% link v23.1/partitioning.md %}). +- Fixed a bug where [`COPY`]({% link v23.1/copy.md %}) in v23.1.0 and beta versions would incorrectly encode data with multiple column families. The data must be dropped and re-imported to be encoded correctly. +- Optimized over-head of [`pg_catalog.pg_description`]({% link v23.1/pg-catalog.md %}) and [`pg_catalog.pg_shdescription`]({% link v23.1/pg-catalog.md %}), which can lead to performance regression relative to v22.2 +- Timeseries [metric]({% link v23.1/metrics.md %}) counts will now show cumulative counts for a histogram rather than a windowed count. A `-sum` timeseries is also exported to keep track of the cumulative sum of all samples in the histogram. - Fixed a bug where CockroachDB could produce incorrect results when evaluating queries with [`ORDER BY`]({% link v23.1/order-by.md %}) clause in rare circumstances. In particular, some rows could be duplicated if all of the following conditions were met: 1. The query had a `LIMIT` clause. 1. The `SORT` operation had to spill to disk (meaning that `LIMIT` number of rows used up non-trivial amounts of memory, e.g. the rows were "wide"). 1. The `ORDER BY` clause contained multiple columns **and** the ordering on the prefix of those columns was already provided by the index. - The bug has been present since at least v22.1. [#102790][#102790] -- Fixed a bug where CockroachDB could previously encounter a nil pointer crash when populating data for [SQL Activity]({% link v23.1/ui-overview.md %}#sql-activity) page in some rare cases. The bug was present in v22.2.9 and v23.1.1 releases. [#103521][#103521] -- Fixed calls to undefined objects. [#103520][#103520] -- Fixed a bug where `0` with `exponents < -6` would display as `0E(exponent)` instead of printing all `0`s, e.g. `0E-7` should be `0.0000000`. [#103640][#103640] -- Fixed a bug that could prevent [`RESTORE`]({% link v23.1/restore.md %}) from working if the backup had a refresh materialized view mutation in it. [#103233][#103233] -- In earlier patch releases of v23.1, it was possible for [backups]({% link v23.1/backup-and-restore-overview.md %}) to be excessively slow, slower than they were in earlier releases. It was also possible for them to fail with errors of the following form: `operation "Export Request for span ..." timed out after 5m0.001s`. At least one of the reasons for this behavior is now addressed. This problem also affected v22.2 clusters if using a hidden-by-default, default-as-disabled `admission.elastic_cpu.enabled` cluster setting. [#103626][#103626] -- Fixed a crash/panic that could occur if placeholder arguments were used with the `with_min_timestamp(to_timestamp($1))` [functions]({% link v23.1/functions-and-operators.md %}). [#103630][#103630] -- Fixed a panic that could occur if a [`COPY TO`]({% link v23.1/copy.md %}) statement had a subquery that was logged with redaction markers. [#103689][#103689] -- Fixed a bug where [`SET PRIMARY REGION`]({% link v23.1/alter-database.md %}#set-primary-region) and [`SET SECONDARY REGION`]({% link v23.1/alter-database.md %}#set-secondary-region) did not validate transactionally, which could prevent cleaning up removed regions after a [restore]({% link v23.1/restore.md %}). [#103631][#103631] -- [`DROP ROLE`]({% link v23.1/drop-role.md %}) now correctly returns a 2BP01 error when the given role has been granted privileges on a schema. [#103546][#103546] -- Fixed a bug where, under high CPU load, HTTP requests to certain API endpoints such as the `health` endpoint would start failing and then never succeed again until the node was restarted. This bug was introduced in v23.1. [#103775][#103775] -- When the option `WITH TABLES` or `WITH INDEXES` is passed to [`SHOW RANGES`]({% link v23.1/show-ranges.md %}), the per-object start/end key columns now properly refers to the part of the object included inside the range identified by the current row. Previously, they could incorrectly point to keys outside of the current range's boundaries. This bug had been introduced in v23.1. [#103777][#103777] -- Fixed a bug in `VALUES` clauses containing a call to a record-returning [UDF]({% link v23.1/user-defined-functions.md %}) that could manifest as an internal error in some queries. [#103639][#103639] -- Fixed a bug with choosing optimal plan where [prepared statements]({% link v23.1/savepoint.md %}#savepoints-and-prepared-statements) using placeholders in recursive CTEs sometimes did not re-optimize correctly after plugging in the parameters. [#99823][#99823] -- Fixed a bug where `kv` was read when fetching a qualified name of a leased [UDF]({% link v23.1/user-defined-functions.md %}). [#103089][#103089] + The bug has been present since at least v22.1. +- Fixed a bug where CockroachDB could previously encounter a nil pointer crash when populating data for [SQL Activity]({% link v23.1/ui-overview.md %}#sql-activity) page in some rare cases. The bug was present in v22.2.9 and v23.1.1 releases. +- Fixed calls to undefined objects. +- Fixed a bug where `0` with `exponents < -6` would display as `0E(exponent)` instead of printing all `0`s, e.g. `0E-7` should be `0.0000000`. +- Fixed a bug that could prevent [`RESTORE`]({% link v23.1/restore.md %}) from working if the backup had a refresh materialized view mutation in it. +- In earlier patch releases of v23.1, it was possible for [backups]({% link v23.1/backup-and-restore-overview.md %}) to be excessively slow, slower than they were in earlier releases. It was also possible for them to fail with errors of the following form: `operation "Export Request for span ..." timed out after 5m0.001s`. At least one of the reasons for this behavior is now addressed. This problem also affected v22.2 clusters if using a hidden-by-default, default-as-disabled `admission.elastic_cpu.enabled` cluster setting. +- Fixed a crash/panic that could occur if placeholder arguments were used with the `with_min_timestamp(to_timestamp($1))` [functions]({% link v23.1/functions-and-operators.md %}). +- Fixed a panic that could occur if a [`COPY TO`]({% link v23.1/copy.md %}) statement had a subquery that was logged with redaction markers. +- Fixed a bug where [`SET PRIMARY REGION`]({% link v23.1/alter-database.md %}#set-primary-region) and [`SET SECONDARY REGION`]({% link v23.1/alter-database.md %}#set-secondary-region) did not validate transactionally, which could prevent cleaning up removed regions after a [restore]({% link v23.1/restore.md %}). +- [`DROP ROLE`]({% link v23.1/drop-role.md %}) now correctly returns a 2BP01 error when the given role has been granted privileges on a schema. +- Fixed a bug where, under high CPU load, HTTP requests to certain API endpoints such as the `health` endpoint would start failing and then never succeed again until the node was restarted. This bug was introduced in v23.1. +- When the option `WITH TABLES` or `WITH INDEXES` is passed to [`SHOW RANGES`]({% link v23.1/show-ranges.md %}), the per-object start/end key columns now properly refers to the part of the object included inside the range identified by the current row. Previously, they could incorrectly point to keys outside of the current range's boundaries. This bug had been introduced in v23.1. +- Fixed a bug in `VALUES` clauses containing a call to a record-returning [UDF]({% link v23.1/user-defined-functions.md %}) that could manifest as an internal error in some queries. +- Fixed a bug with choosing optimal plan where [prepared statements]({% link v23.1/savepoint.md %}#savepoints-and-prepared-statements) using placeholders in recursive CTEs sometimes did not re-optimize correctly after plugging in the parameters. +- Fixed a bug where `kv` was read when fetching a qualified name of a leased [UDF]({% link v23.1/user-defined-functions.md %}).

Performance improvements

-- Added an opt-in pacing mechanism to [rangefeed]({% link v23.1/create-and-configure-changefeeds.md %}#enable-rangefeeds) closed timestamp notifications. Pacing is controlled by the `kv.rangefeed.closed_timestamp_smear_interval` [cluster setting]({% link v23.1/cluster-settings.md %}), which defaults to `kv.rangefeed.closed_timestamp_refresh_interval`. Lowering the smear interval makes the rangefeed closed timestamp delivery less spikey, which ultimately reduces its impact on foreground SQL latencies. [#99946][#99946] -- Queries that have [subqueries]({% link v23.1/subqueries.md %}) in equality expressions are now more efficiently planned by [the optimizer]({% link v23.1/cost-based-optimizer.md %}) when `optimizer_hoist_uncorrelated_equality_subqueries` is set to `true`. [#101753][#101753] -- [SQL Activity]({% link v23.1/ui-sql-dashboard.md %}) dashboards now default to using a table optimized with the top data for the most used cases. Else, they use persisted data if available, and in-memory data otherwise. [#102309][#102309] -- Statistics on the `system.jobs` table are now automatically collected, which will enable [the optimizer]({% link v23.1/cost-based-optimizer.md %}) to produce better query plans for internal queries that access the `system.jobs` table. This may result in better performance of the system. [#102637][#102637] -- Improved [changefeeds]({% link v23.1/change-data-capture-overview.md %}) to decrease the commit-to-emit latency (i.e. The difference between an event's MVCC timestamp and the time it is ready to emit to a downstream sink). Previously, it is determined by a non-documented cluster setting (`changefeed.experimental_poll_interval`) which defaults to `1s`. To enable this performance improvement, users should "lock" the watched table with [`ALTER TABLE SET (schema_locked =t);`]({% link v23.1/alter-table.md %}#set-storage-parameter), which would disallow schema changes on ``. If a schema change statement is attempted on a locked table, CockroachDB will reject it and return an error. The user could lock the table either before creating a changefeed or, when a changefeed is running, CockroachDB will be able to detect that and enable this performance improvement automatically. If the user is running a changefeed on a locked table but wishes to perform schema changes to the table, they need to explicitly unlock the table first with [`ALTER TABLE RESET schema_locked`]({% link v23.1/alter-table.md %}#reset-storage-parameter). After the schema change completes, the user can lock the table again to re-gain this performance improvement. The changefeed job itself does not need to be modified in any way by the user (e.g. the user does not need to pause the job when locking/unlocking a table). This change is a "pure" optimization in that if the table is not locked, everything should still work the way it used to. [#102977][#102977] -- Improved performance when joining with the `pg_description` table. [#103331][#103331] -- Added concurrency to speed up the phase of the [restore]({% link v23.1/restore.md %}) that ingests backed up table statisitcs. [#102694][#102694] -- Added support for constrained scans using computed columns which are part of an [index]({% link v23.1/indexes.md %}) when there is an `IN` list or `OR`'ed predicate on the columns that appear in the computed column expression. [#103412][#103412] +- Added an opt-in pacing mechanism to [rangefeed]({% link v23.1/create-and-configure-changefeeds.md %}#enable-rangefeeds) closed timestamp notifications. Pacing is controlled by the `kv.rangefeed.closed_timestamp_smear_interval` [cluster setting]({% link v23.1/cluster-settings.md %}), which defaults to `kv.rangefeed.closed_timestamp_refresh_interval`. Lowering the smear interval makes the rangefeed closed timestamp delivery less spikey, which ultimately reduces its impact on foreground SQL latencies. +- Queries that have [subqueries]({% link v23.1/subqueries.md %}) in equality expressions are now more efficiently planned by [the optimizer]({% link v23.1/cost-based-optimizer.md %}) when `optimizer_hoist_uncorrelated_equality_subqueries` is set to `true`. +- [SQL Activity]({% link v23.1/ui-sql-dashboard.md %}) dashboards now default to using a table optimized with the top data for the most used cases. Else, they use persisted data if available, and in-memory data otherwise. +- Statistics on the `system.jobs` table are now automatically collected, which will enable [the optimizer]({% link v23.1/cost-based-optimizer.md %}) to produce better query plans for internal queries that access the `system.jobs` table. This may result in better performance of the system. +- Improved [changefeeds]({% link v23.1/change-data-capture-overview.md %}) to decrease the commit-to-emit latency (i.e. The difference between an event's MVCC timestamp and the time it is ready to emit to a downstream sink). Previously, it is determined by a non-documented cluster setting (`changefeed.experimental_poll_interval`) which defaults to `1s`. To enable this performance improvement, users should "lock" the watched table with [`ALTER TABLE SET (schema_locked =t);`]({% link v23.1/alter-table.md %}#set-storage-parameter), which would disallow schema changes on ``. If a schema change statement is attempted on a locked table, CockroachDB will reject it and return an error. The user could lock the table either before creating a changefeed or, when a changefeed is running, CockroachDB will be able to detect that and enable this performance improvement automatically. If the user is running a changefeed on a locked table but wishes to perform schema changes to the table, they need to explicitly unlock the table first with [`ALTER TABLE RESET schema_locked`]({% link v23.1/alter-table.md %}#reset-storage-parameter). After the schema change completes, the user can lock the table again to re-gain this performance improvement. The changefeed job itself does not need to be modified in any way by the user (e.g. the user does not need to pause the job when locking/unlocking a table). This change is a "pure" optimization in that if the table is not locked, everything should still work the way it used to. +- Improved performance when joining with the `pg_description` table. +- Added concurrency to speed up the phase of the [restore]({% link v23.1/restore.md %}) that ingests backed up table statisitcs. +- Added support for constrained scans using computed columns which are part of an [index]({% link v23.1/indexes.md %}) when there is an `IN` list or `OR`'ed predicate on the columns that appear in the computed column expression. - Added two new statistics which are useful for tracking the efficiency of [snapshot transfers](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer#snapshots). Some snapshots will always fail due to system level "races", but the goal is to keep it as low as possible. - `range.snapshots.recv-failed` - The number of snapshots sent attempts that are initiated but not accepted by the recipient. - - `range.snapshots.recv-unusable` - The number of snapshots that were fully transmitted but not used. [#101837][#101837] + - `range.snapshots.recv-unusable` - The number of snapshots that were fully transmitted but not used.

Build changes

-- Updated the reported `Build Tag` for nightly (non-release) builds. [#101998][#101998] +- Updated the reported `Build Tag` for nightly (non-release) builds.
@@ -171,135 +171,3 @@ We would like to thank the following contributors from the CockroachDB community - Eric.Yang
- -[#100049]: https://github.com/cockroachdb/cockroach/pull/100049 -[#100475]: https://github.com/cockroachdb/cockroach/pull/100475 -[#100509]: https://github.com/cockroachdb/cockroach/pull/100509 -[#100670]: https://github.com/cockroachdb/cockroach/pull/100670 -[#100841]: https://github.com/cockroachdb/cockroach/pull/100841 -[#100844]: https://github.com/cockroachdb/cockroach/pull/100844 -[#100939]: https://github.com/cockroachdb/cockroach/pull/100939 -[#100948]: https://github.com/cockroachdb/cockroach/pull/100948 -[#101094]: https://github.com/cockroachdb/cockroach/pull/101094 -[#101135]: https://github.com/cockroachdb/cockroach/pull/101135 -[#101164]: https://github.com/cockroachdb/cockroach/pull/101164 -[#101173]: https://github.com/cockroachdb/cockroach/pull/101173 -[#101301]: https://github.com/cockroachdb/cockroach/pull/101301 -[#101309]: https://github.com/cockroachdb/cockroach/pull/101309 -[#101367]: https://github.com/cockroachdb/cockroach/pull/101367 -[#101382]: https://github.com/cockroachdb/cockroach/pull/101382 -[#101392]: https://github.com/cockroachdb/cockroach/pull/101392 -[#101428]: https://github.com/cockroachdb/cockroach/pull/101428 -[#101443]: https://github.com/cockroachdb/cockroach/pull/101443 -[#101483]: https://github.com/cockroachdb/cockroach/pull/101483 -[#101491]: https://github.com/cockroachdb/cockroach/pull/101491 -[#101493]: https://github.com/cockroachdb/cockroach/pull/101493 -[#101507]: https://github.com/cockroachdb/cockroach/pull/101507 -[#101564]: https://github.com/cockroachdb/cockroach/pull/101564 -[#101596]: https://github.com/cockroachdb/cockroach/pull/101596 -[#101641]: https://github.com/cockroachdb/cockroach/pull/101641 -[#101669]: https://github.com/cockroachdb/cockroach/pull/101669 -[#101688]: https://github.com/cockroachdb/cockroach/pull/101688 -[#101697]: https://github.com/cockroachdb/cockroach/pull/101697 -[#101709]: https://github.com/cockroachdb/cockroach/pull/101709 -[#101753]: https://github.com/cockroachdb/cockroach/pull/101753 -[#101758]: https://github.com/cockroachdb/cockroach/pull/101758 -[#101759]: https://github.com/cockroachdb/cockroach/pull/101759 -[#101782]: https://github.com/cockroachdb/cockroach/pull/101782 -[#101783]: https://github.com/cockroachdb/cockroach/pull/101783 -[#101793]: https://github.com/cockroachdb/cockroach/pull/101793 -[#101797]: https://github.com/cockroachdb/cockroach/pull/101797 -[#101802]: https://github.com/cockroachdb/cockroach/pull/101802 -[#101805]: https://github.com/cockroachdb/cockroach/pull/101805 -[#101809]: https://github.com/cockroachdb/cockroach/pull/101809 -[#101837]: https://github.com/cockroachdb/cockroach/pull/101837 -[#101863]: https://github.com/cockroachdb/cockroach/pull/101863 -[#101870]: https://github.com/cockroachdb/cockroach/pull/101870 -[#101874]: https://github.com/cockroachdb/cockroach/pull/101874 -[#101877]: https://github.com/cockroachdb/cockroach/pull/101877 -[#101950]: https://github.com/cockroachdb/cockroach/pull/101950 -[#101996]: https://github.com/cockroachdb/cockroach/pull/101996 -[#101998]: https://github.com/cockroachdb/cockroach/pull/101998 -[#102002]: https://github.com/cockroachdb/cockroach/pull/102002 -[#102027]: https://github.com/cockroachdb/cockroach/pull/102027 -[#102167]: https://github.com/cockroachdb/cockroach/pull/102167 -[#102188]: https://github.com/cockroachdb/cockroach/pull/102188 -[#102195]: https://github.com/cockroachdb/cockroach/pull/102195 -[#102207]: https://github.com/cockroachdb/cockroach/pull/102207 -[#102274]: https://github.com/cockroachdb/cockroach/pull/102274 -[#102306]: https://github.com/cockroachdb/cockroach/pull/102306 -[#102309]: https://github.com/cockroachdb/cockroach/pull/102309 -[#102343]: https://github.com/cockroachdb/cockroach/pull/102343 -[#102379]: https://github.com/cockroachdb/cockroach/pull/102379 -[#102384]: https://github.com/cockroachdb/cockroach/pull/102384 -[#102392]: https://github.com/cockroachdb/cockroach/pull/102392 -[#102395]: https://github.com/cockroachdb/cockroach/pull/102395 -[#102460]: https://github.com/cockroachdb/cockroach/pull/102460 -[#102468]: https://github.com/cockroachdb/cockroach/pull/102468 -[#102489]: https://github.com/cockroachdb/cockroach/pull/102489 -[#102514]: https://github.com/cockroachdb/cockroach/pull/102514 -[#102601]: https://github.com/cockroachdb/cockroach/pull/102601 -[#102626]: https://github.com/cockroachdb/cockroach/pull/102626 -[#102627]: https://github.com/cockroachdb/cockroach/pull/102627 -[#102637]: https://github.com/cockroachdb/cockroach/pull/102637 -[#102662]: https://github.com/cockroachdb/cockroach/pull/102662 -[#102663]: https://github.com/cockroachdb/cockroach/pull/102663 -[#102694]: https://github.com/cockroachdb/cockroach/pull/102694 -[#102700]: https://github.com/cockroachdb/cockroach/pull/102700 -[#102724]: https://github.com/cockroachdb/cockroach/pull/102724 -[#102790]: https://github.com/cockroachdb/cockroach/pull/102790 -[#102807]: https://github.com/cockroachdb/cockroach/pull/102807 -[#102828]: https://github.com/cockroachdb/cockroach/pull/102828 -[#102862]: https://github.com/cockroachdb/cockroach/pull/102862 -[#102881]: https://github.com/cockroachdb/cockroach/pull/102881 -[#102913]: https://github.com/cockroachdb/cockroach/pull/102913 -[#102947]: https://github.com/cockroachdb/cockroach/pull/102947 -[#102958]: https://github.com/cockroachdb/cockroach/pull/102958 -[#102977]: https://github.com/cockroachdb/cockroach/pull/102977 -[#102989]: https://github.com/cockroachdb/cockroach/pull/102989 -[#103073]: https://github.com/cockroachdb/cockroach/pull/103073 -[#103089]: https://github.com/cockroachdb/cockroach/pull/103089 -[#103144]: https://github.com/cockroachdb/cockroach/pull/103144 -[#103233]: https://github.com/cockroachdb/cockroach/pull/103233 -[#103234]: https://github.com/cockroachdb/cockroach/pull/103234 -[#103328]: https://github.com/cockroachdb/cockroach/pull/103328 -[#103331]: https://github.com/cockroachdb/cockroach/pull/103331 -[#103355]: https://github.com/cockroachdb/cockroach/pull/103355 -[#103363]: https://github.com/cockroachdb/cockroach/pull/103363 -[#103411]: https://github.com/cockroachdb/cockroach/pull/103411 -[#103412]: https://github.com/cockroachdb/cockroach/pull/103412 -[#103420]: https://github.com/cockroachdb/cockroach/pull/103420 -[#103421]: https://github.com/cockroachdb/cockroach/pull/103421 -[#103444]: https://github.com/cockroachdb/cockroach/pull/103444 -[#103450]: https://github.com/cockroachdb/cockroach/pull/103450 -[#103451]: https://github.com/cockroachdb/cockroach/pull/103451 -[#103466]: https://github.com/cockroachdb/cockroach/pull/103466 -[#103474]: https://github.com/cockroachdb/cockroach/pull/103474 -[#103520]: https://github.com/cockroachdb/cockroach/pull/103520 -[#103521]: https://github.com/cockroachdb/cockroach/pull/103521 -[#103526]: https://github.com/cockroachdb/cockroach/pull/103526 -[#103546]: https://github.com/cockroachdb/cockroach/pull/103546 -[#103556]: https://github.com/cockroachdb/cockroach/pull/103556 -[#103559]: https://github.com/cockroachdb/cockroach/pull/103559 -[#103626]: https://github.com/cockroachdb/cockroach/pull/103626 -[#103630]: https://github.com/cockroachdb/cockroach/pull/103630 -[#103631]: https://github.com/cockroachdb/cockroach/pull/103631 -[#103637]: https://github.com/cockroachdb/cockroach/pull/103637 -[#103639]: https://github.com/cockroachdb/cockroach/pull/103639 -[#103640]: https://github.com/cockroachdb/cockroach/pull/103640 -[#103689]: https://github.com/cockroachdb/cockroach/pull/103689 -[#103775]: https://github.com/cockroachdb/cockroach/pull/103775 -[#103777]: https://github.com/cockroachdb/cockroach/pull/103777 -[#99823]: https://github.com/cockroachdb/cockroach/pull/99823 -[#99946]: https://github.com/cockroachdb/cockroach/pull/99946 -[0903f9790]: https://github.com/cockroachdb/cockroach/commit/0903f9790 -[194007ac9]: https://github.com/cockroachdb/cockroach/commit/194007ac9 -[26f915186]: https://github.com/cockroachdb/cockroach/commit/26f915186 -[406baeb6b]: https://github.com/cockroachdb/cockroach/commit/406baeb6b -[448802fbd]: https://github.com/cockroachdb/cockroach/commit/448802fbd -[653aba7be]: https://github.com/cockroachdb/cockroach/commit/653aba7be -[8734e2c66]: https://github.com/cockroachdb/cockroach/commit/8734e2c66 -[ad2e4eda2]: https://github.com/cockroachdb/cockroach/commit/ad2e4eda2 -[c6f062a53]: https://github.com/cockroachdb/cockroach/commit/c6f062a53 -[cab396771]: https://github.com/cockroachdb/cockroach/commit/cab396771 -[ccfd125aa]: https://github.com/cockroachdb/cockroach/commit/ccfd125aa diff --git a/src/current/_includes/releases/v23.1/v23.1.20.md b/src/current/_includes/releases/v23.1/v23.1.20.md index 770b9a3bd46..a406923d6ea 100644 --- a/src/current/_includes/releases/v23.1/v23.1.20.md +++ b/src/current/_includes/releases/v23.1/v23.1.20.md @@ -6,21 +6,21 @@ Release Date: May 1, 2024

SQL language changes

-- Added a [session variable]({% link v23.1/set-vars.md %}) `optimizer_use_improved_multi_column_selectivity_estimate`, which if enabled, causes the [optimizer]({% link v23.1/cost-based-optimizer.md %}) to use an improved selectivity estimate for multi-column predicates. This setting will default to `true` on versions 24.2+, and `false` on prior versions. [#123152][#123152] +- Added a [session variable]({% link v23.1/set-vars.md %}) `optimizer_use_improved_multi_column_selectivity_estimate`, which if enabled, causes the [optimizer]({% link v23.1/cost-based-optimizer.md %}) to use an improved selectivity estimate for multi-column predicates. This setting will default to `true` on versions 24.2+, and `false` on prior versions. - Added three new [cluster settings]({% link v23.1/cluster-settings.md %}) for controlling [optimizer table statistics]({% link v23.1/cost-based-optimizer.md %}#table-statistics) forecasting: 1. `sql.stats.forecasts.min_observations` is the minimum number of observed statistics required to produce a forecast. 1. `sql.stats.forecasts.min_goodness_of_fit` is the minimum R² (goodness of fit) measurement required from all predictive models to use a forecast. - 1. `sql.stats.forecasts.max_decrease` is the most a prediction can decrease, expressed as the minimum ratio of the prediction to the lowest prior observation. [#123149][#123149] + 1. `sql.stats.forecasts.max_decrease` is the most a prediction can decrease, expressed as the minimum ratio of the prediction to the lowest prior observation.

Bug fixes

-- Statistics forecasts of zero rows by [the optimizer]({% link v23.1/cost-based-optimizer.md %}#table-statistics) can cause bad plans. This commit changes forecasting to avoid predicting zero rows for most downward-trending statistics. [#123149][#123149] -- A [job]({% link v23.1/show-jobs.md %}) will now [log]({% link v23.1/logging.md %}#ops) rather than fail if it reports an out-of bound progress fraction. [#123133][#123133] +- Statistics forecasts of zero rows by [the optimizer]({% link v23.1/cost-based-optimizer.md %}#table-statistics) can cause bad plans. This commit changes forecasting to avoid predicting zero rows for most downward-trending statistics. +- A [job]({% link v23.1/show-jobs.md %}) will now [log]({% link v23.1/logging.md %}#ops) rather than fail if it reports an out-of bound progress fraction.

Performance improvements

-- Added a new [session variable]({% link v23.1/set-vars.md %}) `optimizer_use_improved_zigzag_join_costing`. When enabled, the cost of [zigzag joins]({% link v23.1/cost-based-optimizer.md %}#zigzag-joins) is updated so zigzag joins will only be chosen over scans if the zigzag joins produce fewer rows. This change only applies if the session variable `enable_zigzag_join` is also `on`. [#123152][#123152] -- Improved the selectivity estimation of multi-column filters by the [optimizer]({% link v23.1/cost-based-optimizer.md %}) when the multi-column distinct count is high. This avoids cases where CockroachDB significantly over-estimates the selectivity of a multi-column predicate and as a result can prevent the optimizer from choosing a bad query plan. [#123152][#123152] +- Added a new [session variable]({% link v23.1/set-vars.md %}) `optimizer_use_improved_zigzag_join_costing`. When enabled, the cost of [zigzag joins]({% link v23.1/cost-based-optimizer.md %}#zigzag-joins) is updated so zigzag joins will only be chosen over scans if the zigzag joins produce fewer rows. This change only applies if the session variable `enable_zigzag_join` is also `on`. +- Improved the selectivity estimation of multi-column filters by the [optimizer]({% link v23.1/cost-based-optimizer.md %}) when the multi-column distinct count is high. This avoids cases where CockroachDB significantly over-estimates the selectivity of a multi-column predicate and as a result can prevent the optimizer from choosing a bad query plan.
@@ -29,7 +29,3 @@ Release Date: May 1, 2024 This release includes 5 merged PRs by 5 authors.
- -[#123133]: https://github.com/cockroachdb/cockroach/pull/123133 -[#123149]: https://github.com/cockroachdb/cockroach/pull/123149 -[#123152]: https://github.com/cockroachdb/cockroach/pull/123152 diff --git a/src/current/_includes/releases/v23.1/v23.1.21.md b/src/current/_includes/releases/v23.1/v23.1.21.md index 58cd97fef33..fb195d98668 100644 --- a/src/current/_includes/releases/v23.1/v23.1.21.md +++ b/src/current/_includes/releases/v23.1/v23.1.21.md @@ -6,53 +6,37 @@ Release Date: May 7, 2024

SQL language changes

-- The `FORCE_INVERTED_INDEX` hint causes the [optimizer]({% link v23.1/cost-based-optimizer.md %}) to prefer a query plan scan over any [inverted index]({% link v23.1/inverted-indexes.md %}) of the hinted table. An error is emitted if no such query plan can be generated. [#122301][#122301] +- The `FORCE_INVERTED_INDEX` hint causes the [optimizer]({% link v23.1/cost-based-optimizer.md %}) to prefer a query plan scan over any [inverted index]({% link v23.1/inverted-indexes.md %}) of the hinted table. An error is emitted if no such query plan can be generated. - Introduced three new [cluster settings]({% link v23.1/cluster-settings.md %}) for controlling [table statistics]({% link v23.1/cost-based-optimizer.md %}#table-statistics) forecasting: - [`sql.stats.forecasts.min_observations`]({% link v23.1/cluster-settings.md %}) is the minimum number of observed statistics required to produce a forecast. - [`sql.stats.forecasts.min_goodness_of_fit`]({% link v23.1/cluster-settings.md %}) is the minimum R² (goodness of fit) measurement required from all predictive models to use a forecast. - - [`sql.stats.forecasts.max_decrease`]({% link v23.1/cluster-settings.md %}) is the most a prediction can decrease, expressed as the minimum ratio of the prediction to the lowest prior observation. [#122990][#122990] -- Added a [session variable]({% link v23.1/set-vars.md %}) `optimizer_use_improved_multi_column_selectivity_estimate`, which if enabled, causes the [optimizer]({% link v23.1/cost-based-optimizer.md %}) to use an improved selectivity estimate for multi-column predicates. This setting will default to `true` on v24.2 and later, and `false` on prior versions. [#123068][#123068] + - [`sql.stats.forecasts.max_decrease`]({% link v23.1/cluster-settings.md %}) is the most a prediction can decrease, expressed as the minimum ratio of the prediction to the lowest prior observation. +- Added a [session variable]({% link v23.1/set-vars.md %}) `optimizer_use_improved_multi_column_selectivity_estimate`, which if enabled, causes the [optimizer]({% link v23.1/cost-based-optimizer.md %}) to use an improved selectivity estimate for multi-column predicates. This setting will default to `true` on v24.2 and later, and `false` on prior versions.

Operational changes

-- A minimum [Raft scheduler]({% link v23.1/architecture/replication-layer.md %}#raft) concurrency is now enforced per [store]({% link v23.1/architecture/storage-layer.md %}#overview) so that nodes with many stores do not spread workers too thinly. This helps to avoid high scheduler latency across replicas on a store when load is imbalanced. [#120797][#120797] +- A minimum [Raft scheduler]({% link v23.1/architecture/replication-layer.md %}#raft) concurrency is now enforced per [store]({% link v23.1/architecture/storage-layer.md %}#overview) so that nodes with many stores do not spread workers too thinly. This helps to avoid high scheduler latency across replicas on a store when load is imbalanced.

Bug fixes

-- Fixed a bug introduced in v22.2.9 that could cause a slow memory leak that can accumulate when opening many new connections. [#121056][#121056] -- [Sequence]({% link v23.1/create-sequence.md %}) options for `NO MINVALUE` and `NO MAXVALUE` now match [PostgreSQL behavior](https://www.postgresql.org/docs/current/sql-createsequence.html). Sequence `MINVALUE` and `MAXVALUE` now automatically adjust to the bounds of a new integer type in [`ALTER SEQUENCE ... AS`]({% link v23.1/alter-sequence.md %}), matching PostgreSQL behavior. [#121307][#121307] -- Fixed a bug where the [timeseries graphs shown on the **SQL Activity Statement Fingerprint** page]({% link v23.1/ui-statements-page.md %}#charts) in the [DB Console]({% link v23.1/ui-overview.md %}) were not rendering properly. This involved fixing a bug related to setting the time range of the charts. [#121382][#121382] [#122235][#122235] -- Fixed a bug where CockroachDB could incorrectly evaluate `IN` expressions that had `INT2` or `INT4` type on the left side, and values on the right side that were outside the range of the left side. The bug had been present since at least v21.1. [#121955][#121955] -- Previously, on long-running [sessions]({% link v23.1/show-sessions.md %}) that issue many (hundreds of thousands or more) [transactions]({% link v23.1/transactions.md %}), CockroachDB's internal memory accounting system, the limit for which is configured via the [`--max-sql-memory` flag]({% link v23.1/cockroach-start.md %}#general) could leak. This bug, in turn, could result in the error message `"root: memory budget exceeded"` for other queries. The bug was present in v23.1.17 and is now fixed. [#121949][#121949] [#122235][#122235] -- Reintroduced [cluster setting]({% link v23.1/cluster-settings.md %}) `sql.auth.modify_cluster_setting_applies_to_all.enabled` so that mixed-version clusters can migrate off of this setting, which is deprecated in favor of the privilege [`MODIFYSQLCLUSTERSETTING`]({% link v23.1/set-cluster-setting.md %}#required-privileges). [#122055][#122055] [#122635][#122635] -- Fixed a bug where a [`GRANT ... ON ALL TABLES`]({% link v23.1/grant.md %}) statement could fail if sequences existed and they did not support a privilege (e.g., `BACKUP`). [#122057][#122057] -- Fixed a bug where [client certificate authentication]({% link v23.1/authentication.md %}#client-authentication) combined with [identity maps]({% link v23.1/sso-sql.md %}#identity-map-configuration) (`server.identity_map.configuration`) did not work. For the feature to work correctly, the client must specify a valid database user in the [connection string]({% link v23.1/connection-parameters.md %}). This bug had been present since v23.1. [#122746][#122746] -- Statistics forecasts of zero rows can cause suboptimal [query plans]({% link v23.1/cost-based-optimizer.md %}). Forecasting will now avoid predicting zero rows for most downward-trending statistics. [#122990][#122990] +- Fixed a bug introduced in v22.2.9 that could cause a slow memory leak that can accumulate when opening many new connections. +- [Sequence]({% link v23.1/create-sequence.md %}) options for `NO MINVALUE` and `NO MAXVALUE` now match [PostgreSQL behavior](https://www.postgresql.org/docs/current/sql-createsequence.html). Sequence `MINVALUE` and `MAXVALUE` now automatically adjust to the bounds of a new integer type in [`ALTER SEQUENCE ... AS`]({% link v23.1/alter-sequence.md %}), matching PostgreSQL behavior. +- Fixed a bug where the [timeseries graphs shown on the **SQL Activity Statement Fingerprint** page]({% link v23.1/ui-statements-page.md %}#charts) in the [DB Console]({% link v23.1/ui-overview.md %}) were not rendering properly. This involved fixing a bug related to setting the time range of the charts. +- Fixed a bug where CockroachDB could incorrectly evaluate `IN` expressions that had `INT2` or `INT4` type on the left side, and values on the right side that were outside the range of the left side. The bug had been present since at least v21.1. +- Previously, on long-running [sessions]({% link v23.1/show-sessions.md %}) that issue many (hundreds of thousands or more) [transactions]({% link v23.1/transactions.md %}), CockroachDB's internal memory accounting system, the limit for which is configured via the [`--max-sql-memory` flag]({% link v23.1/cockroach-start.md %}#general) could leak. This bug, in turn, could result in the error message `"root: memory budget exceeded"` for other queries. The bug was present in v23.1.17 and is now fixed. +- Reintroduced [cluster setting]({% link v23.1/cluster-settings.md %}) `sql.auth.modify_cluster_setting_applies_to_all.enabled` so that mixed-version clusters can migrate off of this setting, which is deprecated in favor of the privilege [`MODIFYSQLCLUSTERSETTING`]({% link v23.1/set-cluster-setting.md %}#required-privileges). +- Fixed a bug where a [`GRANT ... ON ALL TABLES`]({% link v23.1/grant.md %}) statement could fail if sequences existed and they did not support a privilege (e.g., `BACKUP`). +- Fixed a bug where [client certificate authentication]({% link v23.1/authentication.md %}#client-authentication) combined with [identity maps]({% link v23.1/sso-sql.md %}#identity-map-configuration) (`server.identity_map.configuration`) did not work. For the feature to work correctly, the client must specify a valid database user in the [connection string]({% link v23.1/connection-parameters.md %}). This bug had been present since v23.1. +- Statistics forecasts of zero rows can cause suboptimal [query plans]({% link v23.1/cost-based-optimizer.md %}). Forecasting will now avoid predicting zero rows for most downward-trending statistics.

Performance improvements

-- More efficient [query plans]({% link v23.1/cost-based-optimizer.md %}) are now generated for queries with text similarity filters, for example, `text_col % 'foobar'`. These plans are generated if the `optimizer_use_trigram_similarity_optimization` [session setting]({% link v23.1/set-vars.md %}) is enabled. It is disabled by default. [#122683][#122683] -- Added a new [session variable]({% link v23.1/set-vars.md %}) `optimizer_use_improved_zigzag_join_costing`. When enabled, the cost of [zigzag joins]({% link v23.1/cost-based-optimizer.md %}#zigzag-joins) is updated so zigzag joins will only be chosen over scans if the zigzag joins produce fewer rows. This change only applies if the session variable `enable_zigzag_join` is also `on`. [#123068][#123068] -- Improved the selectivity estimation of multi-column filters by the [optimizer]({% link v23.1/cost-based-optimizer.md %}) when the multi-column distinct count is high. This avoids cases where CockroachDB significantly over-estimates the selectivity of a multi-column predicate and as a result can prevent the optimizer from choosing a bad query plan. [#123068][#123068] +- More efficient [query plans]({% link v23.1/cost-based-optimizer.md %}) are now generated for queries with text similarity filters, for example, `text_col % 'foobar'`. These plans are generated if the `optimizer_use_trigram_similarity_optimization` [session setting]({% link v23.1/set-vars.md %}) is enabled. It is disabled by default. +- Added a new [session variable]({% link v23.1/set-vars.md %}) `optimizer_use_improved_zigzag_join_costing`. When enabled, the cost of [zigzag joins]({% link v23.1/cost-based-optimizer.md %}#zigzag-joins) is updated so zigzag joins will only be chosen over scans if the zigzag joins produce fewer rows. This change only applies if the session variable `enable_zigzag_join` is also `on`. +- Improved the selectivity estimation of multi-column filters by the [optimizer]({% link v23.1/cost-based-optimizer.md %}) when the multi-column distinct count is high. This avoids cases where CockroachDB significantly over-estimates the selectivity of a multi-column predicate and as a result can prevent the optimizer from choosing a bad query plan.

Contributors

This release includes 59 merged PRs by 26 authors. - -[#120797]: https://github.com/cockroachdb/cockroach/pull/120797 -[#121056]: https://github.com/cockroachdb/cockroach/pull/121056 -[#121307]: https://github.com/cockroachdb/cockroach/pull/121307 -[#121382]: https://github.com/cockroachdb/cockroach/pull/121382 -[#121949]: https://github.com/cockroachdb/cockroach/pull/121949 -[#121955]: https://github.com/cockroachdb/cockroach/pull/121955 -[#122055]: https://github.com/cockroachdb/cockroach/pull/122055 -[#122057]: https://github.com/cockroachdb/cockroach/pull/122057 -[#122235]: https://github.com/cockroachdb/cockroach/pull/122235 -[#122301]: https://github.com/cockroachdb/cockroach/pull/122301 -[#122635]: https://github.com/cockroachdb/cockroach/pull/122635 -[#122683]: https://github.com/cockroachdb/cockroach/pull/122683 -[#122746]: https://github.com/cockroachdb/cockroach/pull/122746 -[#122990]: https://github.com/cockroachdb/cockroach/pull/122990 -[#123068]: https://github.com/cockroachdb/cockroach/pull/123068 diff --git a/src/current/_includes/releases/v23.1/v23.1.22.md b/src/current/_includes/releases/v23.1/v23.1.22.md index 4a71c1e8df2..4f3c8c5bd76 100644 --- a/src/current/_includes/releases/v23.1/v23.1.22.md +++ b/src/current/_includes/releases/v23.1/v23.1.22.md @@ -11,39 +11,39 @@ Release Date: May 23, 2024 - The cluster settings `changefeed.frontier_checkpoint_frequency` and `low changefeed.frontier_highwater_lag_checkpoint_threshold` were set low, which resulted in the initial scan taking many multiples of the configured frequency to complete. - There were multiple target tables with significant differences in row counts in one changefeed. - The changefeed target tables were large with many ranges. - - The initial scan took a long time to complete (an hour or longer). [#124454][#124454] + - The initial scan took a long time to complete (an hour or longer).

SQL language changes

-- Updated the [`SHOW GRANTS`]({% link v23.1/show-grants.md %}) responses to display the `object_type` and `object_name`, which has replaced the `relation_name` column. [#122718][#122718] -- Added [external connection]({% link v23.1/create-external-connection.md %}) granted privileges to the [`SHOW GRANTS`]({% link v23.1/show-grants.md %}) command. [#122718][#122718] +- Updated the [`SHOW GRANTS`]({% link v23.1/show-grants.md %}) responses to display the `object_type` and `object_name`, which has replaced the `relation_name` column. +- Added [external connection]({% link v23.1/create-external-connection.md %}) granted privileges to the [`SHOW GRANTS`]({% link v23.1/show-grants.md %}) command. - Introduced three new [cluster settings]({% link v23.1/cluster-settings.md %}) for controlling table statistics forecasting: - [`sql.stats.forecasts.min_observations`]({% link v23.1/cluster-settings.md %}) is the minimum number of observed statistics required to produce a forecast. - [`sql.stats.forecasts.min_goodness_of_fit`]({% link v23.1/cluster-settings.md %}) is the minimum R² (goodness of fit) measurement required from all predictive models to use a forecast. - - [`sql.stats.forecasts.max_decrease`]({% link v23.1/cluster-settings.md %}) is the most a prediction can decrease, expressed as the minimum ratio of the prediction to the lowest prior observation. [#122594][#122594] -- Added a new [session setting]({% link v23.1/session-variables.md %}) `optimizer_use_improved_multi_column_selectivity_estimate`, which if enabled, causes the [optimizer]({% link v23.1/cost-based-optimizer.md %}) to use an improved selectivity estimate for multi-column predicates. This setting will default to `true` on v24.2 and later, and `false` on earlier versions. [#123083][#123083] + - [`sql.stats.forecasts.max_decrease`]({% link v23.1/cluster-settings.md %}) is the most a prediction can decrease, expressed as the minimum ratio of the prediction to the lowest prior observation. +- Added a new [session setting]({% link v23.1/session-variables.md %}) `optimizer_use_improved_multi_column_selectivity_estimate`, which if enabled, causes the [optimizer]({% link v23.1/cost-based-optimizer.md %}) to use an improved selectivity estimate for multi-column predicates. This setting will default to `true` on v24.2 and later, and `false` on earlier versions.

Command-line changes

-- Changed the default `debug compact` maximum compaction concurrency to the number of processors, and added a `--max-concurrency` flag for overriding the new default. [#123070][#123070] +- Changed the default `debug compact` maximum compaction concurrency to the number of processors, and added a `--max-concurrency` flag for overriding the new default.

Bug fixes

-- Fixed a bug where a [`RESTORE`](../v23.1/restore.html) of a backup that itself contained a table created by the `RESTORE` of a table with an in-progress [`IMPORT INTO`](../v23.1/import-into.html) would fail to restore all rows. [#120542][#120542] -- Fixed a bug where [client certificate authentication]({% link v23.1/authentication.md %}#client-authentication) combined with [identity maps]({% link v23.1/sso-sql.md %}#identity-map-configuration) (`server.identity_map.configuration`) did not work. For the feature to work correctly, the client must specify a valid database user in the [connection string]({% link v23.1/connection-parameters.md %}). [#122747][#122747] -- Fixed a bug where the [row-based execution engine]({% link v23.1/architecture/sql-layer.md %}#query-execution) could drop a [`LIMIT`]({% link v23.1/limit-offset.md %}) clause when there was an [`ORDER BY`]({% link v23.1/order-by.md %}) clause, and the ordering was partially provided by an input operator. For example, this bug could occur with an ordering such as `ORDER BY a, b` when the scanned index was only ordered on column `a`. The impact of this bug was that more rows may have been returned than specified by the `LIMIT` clause. This bug is only present when not using the [vectorized execution engine]({% link v23.1/architecture/sql-layer.md %}#vectorized-query-execution). That is, when running with `SET vectorize = off;`. This bug has existed since CockroachDB v22.1. [#122835][#122835] -- Statistics forecasts of zero rows can cause suboptimal [query plans]({% link v23.1/cost-based-optimizer.md %}). Forecasting will now avoid predicting zero rows for most downward-trending statistics. [#122594][#122594] -- Fixed a bug in the DB Console's [**Custom Chart**]({% link v23.1/ui-custom-chart-debug-page.md %}) tool where store-level metrics were displayed only for the first store ID associated with the node. Now data is displayed for all stores present on a node, and a single time series is shown for each store, rather than an aggregated value for all of the node's stores. This allows finer-grained monitoring of store-level metrics. [#122806][#122806] -- Fixed a bug where a [job]({% link v23.1/show-jobs.md %}) would fail if it reported an out-of-bound progress fraction. The error is now logged and no longer causes the job to fail. [#122963][#122963] -- Fixed a bug where, in certain cases, using virtual tables such as `crdb_internal.system_jobs` could result in the internal error `attempting to append refresh spans after the tracked timestamp has moved forward`. [#123154][#123154] +- Fixed a bug where a [`RESTORE`](../v23.1/restore.html) of a backup that itself contained a table created by the `RESTORE` of a table with an in-progress [`IMPORT INTO`](../v23.1/import-into.html) would fail to restore all rows. +- Fixed a bug where [client certificate authentication]({% link v23.1/authentication.md %}#client-authentication) combined with [identity maps]({% link v23.1/sso-sql.md %}#identity-map-configuration) (`server.identity_map.configuration`) did not work. For the feature to work correctly, the client must specify a valid database user in the [connection string]({% link v23.1/connection-parameters.md %}). +- Fixed a bug where the [row-based execution engine]({% link v23.1/architecture/sql-layer.md %}#query-execution) could drop a [`LIMIT`]({% link v23.1/limit-offset.md %}) clause when there was an [`ORDER BY`]({% link v23.1/order-by.md %}) clause, and the ordering was partially provided by an input operator. For example, this bug could occur with an ordering such as `ORDER BY a, b` when the scanned index was only ordered on column `a`. The impact of this bug was that more rows may have been returned than specified by the `LIMIT` clause. This bug is only present when not using the [vectorized execution engine]({% link v23.1/architecture/sql-layer.md %}#vectorized-query-execution). That is, when running with `SET vectorize = off;`. This bug has existed since CockroachDB v22.1. +- Statistics forecasts of zero rows can cause suboptimal [query plans]({% link v23.1/cost-based-optimizer.md %}). Forecasting will now avoid predicting zero rows for most downward-trending statistics. +- Fixed a bug in the DB Console's [**Custom Chart**]({% link v23.1/ui-custom-chart-debug-page.md %}) tool where store-level metrics were displayed only for the first store ID associated with the node. Now data is displayed for all stores present on a node, and a single time series is shown for each store, rather than an aggregated value for all of the node's stores. This allows finer-grained monitoring of store-level metrics. +- Fixed a bug where a [job]({% link v23.1/show-jobs.md %}) would fail if it reported an out-of-bound progress fraction. The error is now logged and no longer causes the job to fail. +- Fixed a bug where, in certain cases, using virtual tables such as `crdb_internal.system_jobs` could result in the internal error `attempting to append refresh spans after the tracked timestamp has moved forward`.

Performance improvements

-- More efficient [query plans]({% link v23.1/cost-based-optimizer.md %}) are now generated for queries with text similarity filters, for example, `text_col % 'foobar'`. These plans are generated if the `optimizer_use_trigram_similarity_optimization` [session setting]({% link v23.1/set-vars.md %}) is enabled. It is disabled by default. [#122723][#122723] -- The [optimizer]({% link v23.1/cost-based-optimizer.md %}) now costs `distinct-on` operators more accurately. It may produce more efficient query plans in some cases. [#122851][#122851] -- Added a new [session setting]({% link v23.1/session-variables.md %}) `optimizer_use_improved_zigzag_join_costing`. When enabled and when the [cluster setting]({% link v23.1/cluster-settings.md %}) `enable_zigzag_join` is also enabled, the cost of zigzag joins is updated such that a zigzag join will be chosen over a scan only if it produces fewer rows than a scan. [#123083][#123083] -- Improved the selectivity estimation of multi-column filters when the multi-column distinct count is high. This prevents the [optimizer]({% link v23.1/cost-based-optimizer.md %}) from choosing a bad query plan due to over-estimating the selectivity of a multi-column predicate. [#123083][#123083] -- Improved the efficiency of error handling in the [vectorized execution engine]({% link v23.1/vectorized-execution.md %}) to reduce the CPU overhead of statement timeout handling and reduce the potential for more statement timeouts. [#123503][#123503] +- More efficient [query plans]({% link v23.1/cost-based-optimizer.md %}) are now generated for queries with text similarity filters, for example, `text_col % 'foobar'`. These plans are generated if the `optimizer_use_trigram_similarity_optimization` [session setting]({% link v23.1/set-vars.md %}) is enabled. It is disabled by default. +- The [optimizer]({% link v23.1/cost-based-optimizer.md %}) now costs `distinct-on` operators more accurately. It may produce more efficient query plans in some cases. +- Added a new [session setting]({% link v23.1/session-variables.md %}) `optimizer_use_improved_zigzag_join_costing`. When enabled and when the [cluster setting]({% link v23.1/cluster-settings.md %}) `enable_zigzag_join` is also enabled, the cost of zigzag joins is updated such that a zigzag join will be chosen over a scan only if it produces fewer rows than a scan. +- Improved the selectivity estimation of multi-column filters when the multi-column distinct count is high. This prevents the [optimizer]({% link v23.1/cost-based-optimizer.md %}) from choosing a bad query plan due to over-estimating the selectivity of a multi-column predicate. +- Improved the efficiency of error handling in the [vectorized execution engine]({% link v23.1/vectorized-execution.md %}) to reduce the CPU overhead of statement timeout handling and reduce the potential for more statement timeouts.
@@ -52,21 +52,3 @@ Release Date: May 23, 2024 This release includes 51 merged PRs by 23 authors.
- -[#120542]: https://github.com/cockroachdb/cockroach/pull/120542 -[#122594]: https://github.com/cockroachdb/cockroach/pull/122594 -[#122718]: https://github.com/cockroachdb/cockroach/pull/122718 -[#122723]: https://github.com/cockroachdb/cockroach/pull/122723 -[#122747]: https://github.com/cockroachdb/cockroach/pull/122747 -[#122806]: https://github.com/cockroachdb/cockroach/pull/122806 -[#122835]: https://github.com/cockroachdb/cockroach/pull/122835 -[#122851]: https://github.com/cockroachdb/cockroach/pull/122851 -[#122963]: https://github.com/cockroachdb/cockroach/pull/122963 -[#123070]: https://github.com/cockroachdb/cockroach/pull/123070 -[#123083]: https://github.com/cockroachdb/cockroach/pull/123083 -[#123154]: https://github.com/cockroachdb/cockroach/pull/123154 -[#123377]: https://github.com/cockroachdb/cockroach/pull/123377 -[#123396]: https://github.com/cockroachdb/cockroach/pull/123396 -[#123503]: https://github.com/cockroachdb/cockroach/pull/123503 -[#124454]: https://github.com/cockroachdb/cockroach/pull/124454 -[dc349c389]: https://github.com/cockroachdb/cockroach/commit/dc349c389 diff --git a/src/current/_includes/releases/v23.1/v23.1.23.md b/src/current/_includes/releases/v23.1/v23.1.23.md index 35c3fd9e98e..0bf8bdf9218 100644 --- a/src/current/_includes/releases/v23.1/v23.1.23.md +++ b/src/current/_includes/releases/v23.1/v23.1.23.md @@ -10,46 +10,46 @@ Release Date: June 20, 2024 - The [cluster settings]({% link v23.1/cluster-settings.md %}) `changefeed.frontier_checkpoint_frequency` and `changefeed.frontier_highwater_lag_checkpoint_threshold` were set low, which resulted in the initial scan taking many multiples of the configured frequency to complete. - There were multiple target tables with significant differences in row counts in one changefeed. - The changefeed target tables were large with many ranges. - - The initial scan took a long time to complete (an hour or longer). [#123970][#123970] [#124759][#124759] -- Introduced the `changefeed.random_replica_selection.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}) that changes the behavior of changefeed planning work distribution. When `changefeed.random_replica_selection.enabled` is set to `true`, [changefeeds]({% link v23.1/change-data-capture-overview.md %}) will evenly distribute their work across all [replicas]({% link v23.1/architecture/glossary.md %}#replica), including [followers]({% link v23.1/architecture/replication-layer.md %}#raft), regardless of [leaseholder]({% link v23.1/architecture/glossary.md %}#leaseholder) placement. `changefeed.random_replica_selection.enabled` is disabled by default. [#124930][#124930] + - The initial scan took a long time to complete (an hour or longer). +- Introduced the `changefeed.random_replica_selection.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}) that changes the behavior of changefeed planning work distribution. When `changefeed.random_replica_selection.enabled` is set to `true`, [changefeeds]({% link v23.1/change-data-capture-overview.md %}) will evenly distribute their work across all [replicas]({% link v23.1/architecture/glossary.md %}#replica), including [followers]({% link v23.1/architecture/replication-layer.md %}#raft), regardless of [leaseholder]({% link v23.1/architecture/glossary.md %}#leaseholder) placement. `changefeed.random_replica_selection.enabled` is disabled by default.

SQL language changes

- Introduced three new [cluster settings]({% link v23.1/cluster-settings.md %}) for controlling [table statistics forecasting]({% link v23.1/show-statistics.md %}#display-forecasted-statistics): - [`sql.stats.forecasts.min_observations`]({% link v23.1/cluster-settings.md %}) is the minimum number of observed statistics required to produce a forecast. - [`sql.stats.forecasts.min_goodness_of_fit`]({% link v23.1/cluster-settings.md %}) is the minimum R² (goodness of fit) measurement required from all predictive models to use a forecast. - - [`sql.stats.forecasts.max_decrease`]({% link v23.1/cluster-settings.md %}) is the most a prediction can decrease, expressed as the minimum ratio of the prediction to the lowest prior observation. [#124076][#124076] -- Added a new [session setting]({% link v23.1/session-variables.md %}) `optimizer_use_improved_multi_column_selectivity_estimate`, which if enabled, causes the [optimizer]({% link v23.1/cost-based-optimizer.md %}) to use an improved selectivity estimate for multi-column predicates. This setting will default to `true` on v24.2 and later, and `false` on earlier versions. [#124076][#124076] -- The [row-level TTL]({% link v23.1/row-level-ttl.md %}) setting [`ttl_delete_rate_limit`]({% link v23.1/row-level-ttl.md %}#ttl-storage-parameters) is now set to `100` by default, which sets the rate limit for deleting expired rows to `100`. [#124362][#124362] -- CockroachDB no longer limits precision when converting [spatial data types]({% link v23.1/architecture/glossary.md %}#data-types) to [JSON]({% link v23.1/jsonb.md %}). [#124534][#124534] + - [`sql.stats.forecasts.max_decrease`]({% link v23.1/cluster-settings.md %}) is the most a prediction can decrease, expressed as the minimum ratio of the prediction to the lowest prior observation. +- Added a new [session setting]({% link v23.1/session-variables.md %}) `optimizer_use_improved_multi_column_selectivity_estimate`, which if enabled, causes the [optimizer]({% link v23.1/cost-based-optimizer.md %}) to use an improved selectivity estimate for multi-column predicates. This setting will default to `true` on v24.2 and later, and `false` on earlier versions. +- The [row-level TTL]({% link v23.1/row-level-ttl.md %}) setting [`ttl_delete_rate_limit`]({% link v23.1/row-level-ttl.md %}#ttl-storage-parameters) is now set to `100` by default, which sets the rate limit for deleting expired rows to `100`. +- CockroachDB no longer limits precision when converting [spatial data types]({% link v23.1/architecture/glossary.md %}#data-types) to [JSON]({% link v23.1/jsonb.md %}).

Operational changes

-- - The `client_authentication_ok` and `client_session_end` events are now logged to the [`SESSIONS` log channel]({% link v23.1/logging-use-cases.md %}#sessions) unconditionally. Previously, these would only be logged if the `server.auth_log.sql_sessions.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}) was set to `true`. All other `SESSIONS` log messages are still only logged if `server.auth_log.sql_sessions.enabled` or `server.auth_log.sql_connections.enabled` are set to `true`. To not show `client_authentication_ok` and `client_session_end` events, disable the `SESSIONS` log channel entirely. [#124375][#124375] +- - The `client_authentication_ok` and `client_session_end` events are now logged to the [`SESSIONS` log channel]({% link v23.1/logging-use-cases.md %}#sessions) unconditionally. Previously, these would only be logged if the `server.auth_log.sql_sessions.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}) was set to `true`. All other `SESSIONS` log messages are still only logged if `server.auth_log.sql_sessions.enabled` or `server.auth_log.sql_connections.enabled` are set to `true`. To not show `client_authentication_ok` and `client_session_end` events, disable the `SESSIONS` log channel entirely.

DB Console changes

-- Viewing the [**SQL Activity**]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-results) sorted by `% of Runtime` now correctly sorts entries by the runtime amount. [#123899][#123899] -- The [DB Console]({% link v23.1/ui-overview.md %}) favicon and other image files now render properly. [#122702][#122702] +- Viewing the [**SQL Activity**]({% link v23.1/ui-statements-page.md %}#statement-fingerprints-results) sorted by `% of Runtime` now correctly sorts entries by the runtime amount. +- The [DB Console]({% link v23.1/ui-overview.md %}) favicon and other image files now render properly.

Bug fixes

-- Fixed a bug where a failed [restore]({% link v23.1/restore.md %}) job could leave the system in a state where re-attempting the restore was not possible without manual intervention. [#123462][#123462] -- [Index recommendations]({% link v23.1/ui-databases-page.md %}#index-recommendations) in the [DB Console]({% link v23.1/ui-overview.md %}) will now function properly for indexes on tables or columns whose names contain quotation marks or whitespace. For example: `CREATE INDEX ON "my table" ("my col");`. [#122117][#122117] -- Fixed a bug introduced in v23.1 where [client certificate authentication]({% link v23.1/authentication.md %}#client-authentication) combined with [identity maps]({% link v23.1/sso-sql.md %}#identity-map-configuration) (`server.identity_map.configuration`) did not work. For the feature to work correctly, the client must specify a valid database user in the [connection string]({% link v23.1/connection-parameters.md %}). [#124076][#124076] -- Statistics forecasts of zero rows can cause suboptimal [query plans]({% link v23.1/cost-based-optimizer.md %}). Forecasting will now avoid predicting zero rows for most downward-trending statistics. [#124076][#124076] -- Fixed a bug where [`DROP ROLE`]({% link v23.1/drop-role.md %}) and [`DROP USER`]({% link v23.1/drop-user.md %}) could leave references behind inside [`TYPE`s]({% link v23.1/create-type.md %}), which could prevent [`SHOW GRANTS`]({% link v23.1/show-grants.md %}) from working. [#124645][#124645] -- Scattering a range with a replication factor of 1 now no longer erroneously up-replicates the range to two replicas. Leases will also no longer thrash between nodes when perturbed with a replication factor of 1. [#124500][#124500] -- Fixed a bug where, if the `ttl_row_stats_poll_interval` storage parameter was non-zero for a table with [row-level TTL]({% link v23.1/row-level-ttl.md %}) enabled, the queries issued to update row statistics could block the job from completing. Now, if the job completes, these statistics queries are cancelled. This means that the `jobs.row_level_ttl.total_rows` and `jobs.row_level_ttl.total_expired_rows` metrics will report `0` if the job finishes before the row stats queries complete. [#124625][#124625] -- Fixed a bug where the `results_buffer_size` [session variable]({% link v23.1/session-variables.md %}) could not be configured by using the "options" query parameter in the connection string, but only as a top-level query parameter. Now, `results_buffer_size` can be configured in either part of the connection string. This variable still cannot be changed with the [`SET`]({% link v23.1/set-vars.md %}) command after the session begins. [#124773][#124773] -- [`SHOW TYPES`]({% link v23.1/show-types.md %}) now includes user-defined [composite types]({% link v23.1/create-type.md %}#create-a-composite-data-type). `SHOW TYPES` previously omitted composite types, which were added in v23.1.0. [#124815][#124815] -- Fixed a bug where a change to a [user-defined type]({% link v23.1/create-type.md %}) could cause queries against tables using that type to fail with the error `histogram.go:694: span must be fully contained in the bucket`. The change to the user-defined type could come directly from an [`ALTER TYPE`]({% link v23.1/alter-type.md %}) statement, or indirectly from an [`ALTER DATABASE ADD REGION`]({% link v23.1/alter-database.md %}#add-region) or [`DROP REGION`]({% link v23.1/alter-database.md %}#drop-region) statement (which implicitly change the `crdb_internal_region` type). This bug was present since user-defined types were introduced in v20.2. [#125473][#125473] +- Fixed a bug where a failed [restore]({% link v23.1/restore.md %}) job could leave the system in a state where re-attempting the restore was not possible without manual intervention. +- [Index recommendations]({% link v23.1/ui-databases-page.md %}#index-recommendations) in the [DB Console]({% link v23.1/ui-overview.md %}) will now function properly for indexes on tables or columns whose names contain quotation marks or whitespace. For example: `CREATE INDEX ON "my table" ("my col");`. +- Fixed a bug introduced in v23.1 where [client certificate authentication]({% link v23.1/authentication.md %}#client-authentication) combined with [identity maps]({% link v23.1/sso-sql.md %}#identity-map-configuration) (`server.identity_map.configuration`) did not work. For the feature to work correctly, the client must specify a valid database user in the [connection string]({% link v23.1/connection-parameters.md %}). +- Statistics forecasts of zero rows can cause suboptimal [query plans]({% link v23.1/cost-based-optimizer.md %}). Forecasting will now avoid predicting zero rows for most downward-trending statistics. +- Fixed a bug where [`DROP ROLE`]({% link v23.1/drop-role.md %}) and [`DROP USER`]({% link v23.1/drop-user.md %}) could leave references behind inside [`TYPE`s]({% link v23.1/create-type.md %}), which could prevent [`SHOW GRANTS`]({% link v23.1/show-grants.md %}) from working. +- Scattering a range with a replication factor of 1 now no longer erroneously up-replicates the range to two replicas. Leases will also no longer thrash between nodes when perturbed with a replication factor of 1. +- Fixed a bug where, if the `ttl_row_stats_poll_interval` storage parameter was non-zero for a table with [row-level TTL]({% link v23.1/row-level-ttl.md %}) enabled, the queries issued to update row statistics could block the job from completing. Now, if the job completes, these statistics queries are cancelled. This means that the `jobs.row_level_ttl.total_rows` and `jobs.row_level_ttl.total_expired_rows` metrics will report `0` if the job finishes before the row stats queries complete. +- Fixed a bug where the `results_buffer_size` [session variable]({% link v23.1/session-variables.md %}) could not be configured by using the "options" query parameter in the connection string, but only as a top-level query parameter. Now, `results_buffer_size` can be configured in either part of the connection string. This variable still cannot be changed with the [`SET`]({% link v23.1/set-vars.md %}) command after the session begins. +- [`SHOW TYPES`]({% link v23.1/show-types.md %}) now includes user-defined [composite types]({% link v23.1/create-type.md %}#create-a-composite-data-type). `SHOW TYPES` previously omitted composite types, which were added in v23.1.0. +- Fixed a bug where a change to a [user-defined type]({% link v23.1/create-type.md %}) could cause queries against tables using that type to fail with the error `histogram.go:694: span must be fully contained in the bucket`. The change to the user-defined type could come directly from an [`ALTER TYPE`]({% link v23.1/alter-type.md %}) statement, or indirectly from an [`ALTER DATABASE ADD REGION`]({% link v23.1/alter-database.md %}#add-region) or [`DROP REGION`]({% link v23.1/alter-database.md %}#drop-region) statement (which implicitly change the `crdb_internal_region` type). This bug was present since user-defined types were introduced in v20.2.

Performance improvements

-- More efficient [query plans]({% link v23.1/cost-based-optimizer.md %}) are now generated for queries with text similarity filters, for example, `text_col % 'foobar'`. These plans are generated if the `optimizer_use_trigram_similarity_optimization` [session setting]({% link v23.1/session-variables.md %}) is enabled. It is disabled by default. [#124076][#124076] -- Added a new [session setting]({% link v23.1/session-variables.md %}) `optimizer_use_improved_zigzag_join_costing`. When enabled and when the [cluster setting]({% link v23.1/cluster-settings.md %}) `enable_zigzag_join` is also enabled, the cost of zigzag joins is updated such that a zigzag join will be chosen over a scan only if it produces fewer rows than a scan. [#124076][#124076] -- Improved the selectivity estimation of multi-column filters when the multi-column distinct count is high. This prevents the [optimizer]({% link v23.1/cost-based-optimizer.md %}) from choosing a suboptimal query plan due to over-estimating the selectivity of a multi-column predicate. [#124076][#124076] +- More efficient [query plans]({% link v23.1/cost-based-optimizer.md %}) are now generated for queries with text similarity filters, for example, `text_col % 'foobar'`. These plans are generated if the `optimizer_use_trigram_similarity_optimization` [session setting]({% link v23.1/session-variables.md %}) is enabled. It is disabled by default. +- Added a new [session setting]({% link v23.1/session-variables.md %}) `optimizer_use_improved_zigzag_join_costing`. When enabled and when the [cluster setting]({% link v23.1/cluster-settings.md %}) `enable_zigzag_join` is also enabled, the cost of zigzag joins is updated such that a zigzag join will be chosen over a scan only if it produces fewer rows than a scan. +- Improved the selectivity estimation of multi-column filters when the multi-column distinct count is high. This prevents the [optimizer]({% link v23.1/cost-based-optimizer.md %}) from choosing a suboptimal query plan due to over-estimating the selectivity of a multi-column predicate.
@@ -58,23 +58,3 @@ Release Date: June 20, 2024 This release includes 48 merged PRs by 23 authors.
- -[#122117]: https://github.com/cockroachdb/cockroach/pull/122117 -[#122702]: https://github.com/cockroachdb/cockroach/pull/122702 -[#123462]: https://github.com/cockroachdb/cockroach/pull/123462 -[#123899]: https://github.com/cockroachdb/cockroach/pull/123899 -[#123970]: https://github.com/cockroachdb/cockroach/pull/123970 -[#124076]: https://github.com/cockroachdb/cockroach/pull/124076 -[#124296]: https://github.com/cockroachdb/cockroach/pull/124296 -[#124362]: https://github.com/cockroachdb/cockroach/pull/124362 -[#124375]: https://github.com/cockroachdb/cockroach/pull/124375 -[#124500]: https://github.com/cockroachdb/cockroach/pull/124500 -[#124534]: https://github.com/cockroachdb/cockroach/pull/124534 -[#124625]: https://github.com/cockroachdb/cockroach/pull/124625 -[#124645]: https://github.com/cockroachdb/cockroach/pull/124645 -[#124759]: https://github.com/cockroachdb/cockroach/pull/124759 -[#124773]: https://github.com/cockroachdb/cockroach/pull/124773 -[#124815]: https://github.com/cockroachdb/cockroach/pull/124815 -[#124930]: https://github.com/cockroachdb/cockroach/pull/124930 -[#125473]: https://github.com/cockroachdb/cockroach/pull/125473 -[268fbf5b4]: https://github.com/cockroachdb/cockroach/commit/268fbf5b4 diff --git a/src/current/_includes/releases/v23.1/v23.1.24.md b/src/current/_includes/releases/v23.1/v23.1.24.md index 379186b4715..a980bd90eb1 100644 --- a/src/current/_includes/releases/v23.1/v23.1.24.md +++ b/src/current/_includes/releases/v23.1/v23.1.24.md @@ -6,24 +6,24 @@ Release Date: July 18, 2024

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

-- [`ALTER CHANGEFEED`]({% link v23.1/alter-changefeed.md %}) no longer removes the CDC query when modifying [changefeed]({% link v23.1/change-data-capture-overview.md %}) properties. [#125436][#125436] +- [`ALTER CHANGEFEED`]({% link v23.1/alter-changefeed.md %}) no longer removes the CDC query when modifying [changefeed]({% link v23.1/change-data-capture-overview.md %}) properties.

Operational changes

-- Improved disk usage metric reporting over volumes that dynamically change their size over the life of the `cockroach` process. [#125106][#125106] -- Removed `crdb_internal.cluster_execution_insights.txt` and `crdb_internal.cluster_txn_execution_insights.txt` from the [`debug zip`]({% link v23.1/cockroach-debug-zip.md %}). These files contained cluster-wide insights for statements and transactions. Users can still rely on the per-node execution insights in `crdb_internal.node_execution_insights.txt` and `crdb_internal.node_txn_execution_insights.txt`. [#125810][#125810] -- Some debugging-only information about physical plans is no longer collected in the `system.job_info` table for changefeeds, because it has the potential to grow very large. [#126102][#126102] +- Improved disk usage metric reporting over volumes that dynamically change their size over the life of the `cockroach` process. +- Removed `crdb_internal.cluster_execution_insights.txt` and `crdb_internal.cluster_txn_execution_insights.txt` from the [`debug zip`]({% link v23.1/cockroach-debug-zip.md %}). These files contained cluster-wide insights for statements and transactions. Users can still rely on the per-node execution insights in `crdb_internal.node_execution_insights.txt` and `crdb_internal.node_txn_execution_insights.txt`. +- Some debugging-only information about physical plans is no longer collected in the `system.job_info` table for changefeeds, because it has the potential to grow very large.

Bug fixes

-- Fixed handling in the [declarative schema changer]({% link v23.1/online-schema-changes.md %}) when columns are included in the `STORING()` clause of [`CREATE INDEX`]({% link v23.1/create-index.md %}). CockroachDB now checks if the column is virtual up-front, and properly detects when a column is already handled by an existing index when the column name has `UTF-8` characters. [#125208][#125208] -- Fixed a bug where a change to a [user-defined type (UDT)]({% link v23.1/create-type.md %}) could cause queries against tables using that type to fail with an error message like: `histogram.go:694: span must be fully contained in the bucket`. The change to the user-defined type could occur either directly from an [`ALTER TYPE`]({% link v23.1/alter-type.md %} statement or indirectly from an [`ALTER DATABASE ... ADD REGION`]({% link v23.1/alter-database.md %}#add-region) or [`ALTER DATABASE ... DROP REGION`]({% link v23.1/alter-database.md %}#drop-region) statement, which implicitly modifies the `crdb_internal_region` UDT. This bug had existed since UDTs were introduced in v20.2. [#124855][#124855] -- Fixed an issue where [adding a column]({% link v23.1/alter-table.md %}#add-column) with a default value of an empty array would not succeed. [#125328][#125328] -- [`ALTER TABLE ... ADD CONSTRAINT UNIQUE`]({% link v23.1/alter-table.md %}#add-constraint) will now fail with a well-formed error message and code `42601` if a statement tries to add a unique constraint on an expression. [#125420][#125420] -- Fixed a bug in v24.1, v23.2, and v23.1 where using [`changefeed.aggregator.flush_jitter`]({% link v23.1/cluster-settings.md %}#setting-changefeed-aggregator-flush-jitter) with [`min_checkpoint_frequency`]({% link v23.1/create-changefeed.md %}#min-checkpoint-frequency) set to zero could cause panics. [#125495][#125495] -- Fixed a bug in which constant `LIKE` patterns containing certain sequences of backslashes did not become constrained scans. This bug has been present since v21.1.13 when support for building constrained scans from `LIKE` patterns containing backslashes was added. [#125537][#125537] -- Fixed a bug that could cause calling a routine to return an unexpected `function ... does not exist` error. The bug is triggered when the routine is called twice using the exact same SQL query, and either: (a) the routine has polymorphic arguments, or: (b) in between the two calls, the routine is replaced by a routine with the same name and different parameters. This bug had existed since alpha versions of v23.1. [#123513][#123513] -- Fixed the statistics estimation code in the [optimizer]({% link v23.1/cost-based-optimizer.md %}) so it does not use the empty histograms produced if histogram collection has been disabled during statistics collection due to excessive memory utilization. Now the optimizer will rely on distinct counts instead of the empty histograms and should produce better plans as a result. This bug had existed since v22.1. [#126158][#126158] +- Fixed handling in the [declarative schema changer]({% link v23.1/online-schema-changes.md %}) when columns are included in the `STORING()` clause of [`CREATE INDEX`]({% link v23.1/create-index.md %}). CockroachDB now checks if the column is virtual up-front, and properly detects when a column is already handled by an existing index when the column name has `UTF-8` characters. +- Fixed a bug where a change to a [user-defined type (UDT)]({% link v23.1/create-type.md %}) could cause queries against tables using that type to fail with an error message like: `histogram.go:694: span must be fully contained in the bucket`. The change to the user-defined type could occur either directly from an [`ALTER TYPE`]({% link v23.1/alter-type.md %} statement or indirectly from an [`ALTER DATABASE ... ADD REGION`]({% link v23.1/alter-database.md %}#add-region) or [`ALTER DATABASE ... DROP REGION`]({% link v23.1/alter-database.md %}#drop-region) statement, which implicitly modifies the `crdb_internal_region` UDT. This bug had existed since UDTs were introduced in v20.2. +- Fixed an issue where [adding a column]({% link v23.1/alter-table.md %}#add-column) with a default value of an empty array would not succeed. +- [`ALTER TABLE ... ADD CONSTRAINT UNIQUE`]({% link v23.1/alter-table.md %}#add-constraint) will now fail with a well-formed error message and code `42601` if a statement tries to add a unique constraint on an expression. +- Fixed a bug in v24.1, v23.2, and v23.1 where using [`changefeed.aggregator.flush_jitter`]({% link v23.1/cluster-settings.md %}#setting-changefeed-aggregator-flush-jitter) with [`min_checkpoint_frequency`]({% link v23.1/create-changefeed.md %}#min-checkpoint-frequency) set to zero could cause panics. +- Fixed a bug in which constant `LIKE` patterns containing certain sequences of backslashes did not become constrained scans. This bug has been present since v21.1.13 when support for building constrained scans from `LIKE` patterns containing backslashes was added. +- Fixed a bug that could cause calling a routine to return an unexpected `function ... does not exist` error. The bug is triggered when the routine is called twice using the exact same SQL query, and either: (a) the routine has polymorphic arguments, or: (b) in between the two calls, the routine is replaced by a routine with the same name and different parameters. This bug had existed since alpha versions of v23.1. +- Fixed the statistics estimation code in the [optimizer]({% link v23.1/cost-based-optimizer.md %}) so it does not use the empty histograms produced if histogram collection has been disabled during statistics collection due to excessive memory utilization. Now the optimizer will rely on distinct counts instead of the empty histograms and should produce better plans as a result. This bug had existed since v22.1.
@@ -32,20 +32,3 @@ Release Date: July 18, 2024 This release includes 56 merged PRs by 27 authors.
- -[#123513]: https://github.com/cockroachdb/cockroach/pull/123513 -[#124855]: https://github.com/cockroachdb/cockroach/pull/124855 -[#125106]: https://github.com/cockroachdb/cockroach/pull/125106 -[#125208]: https://github.com/cockroachdb/cockroach/pull/125208 -[#125328]: https://github.com/cockroachdb/cockroach/pull/125328 -[#125420]: https://github.com/cockroachdb/cockroach/pull/125420 -[#125436]: https://github.com/cockroachdb/cockroach/pull/125436 -[#125495]: https://github.com/cockroachdb/cockroach/pull/125495 -[#125528]: https://github.com/cockroachdb/cockroach/pull/125528 -[#125537]: https://github.com/cockroachdb/cockroach/pull/125537 -[#125810]: https://github.com/cockroachdb/cockroach/pull/125810 -[#126102]: https://github.com/cockroachdb/cockroach/pull/126102 -[#126147]: https://github.com/cockroachdb/cockroach/pull/126147 -[#126158]: https://github.com/cockroachdb/cockroach/pull/126158 -[#126223]: https://github.com/cockroachdb/cockroach/pull/126223 -[87ba56fce]: https://github.com/cockroachdb/cockroach/commit/87ba56fce diff --git a/src/current/_includes/releases/v23.1/v23.1.25.md b/src/current/_includes/releases/v23.1/v23.1.25.md index 51f17f47949..0d86a1d6deb 100644 --- a/src/current/_includes/releases/v23.1/v23.1.25.md +++ b/src/current/_includes/releases/v23.1/v23.1.25.md @@ -21,60 +21,38 @@ Release Date: August 15, 2024 - [`CREATE EXTERNAL CONNECTION`]({% link v23.1/create-external-connection.md %}) - [`COPY`]({% link v23.1/copy.md %}) - [#127537][#127537] + - The cluster setting [`server.jwt_authentication.issuers`]({% link v23.1/sso-sql.md %}#cluster-settings) can now take multiple values to support various kinds of providers and their mapped JWKS URIs. This can be set to one of the following values: - Simple string that Go can parse as a valid issuer URL: `'https://accounts.google.com'`. - String that can be parsed as a valid JSON array of issuer URLs list: `['example.com/adfs','https://accounts.google.com']`. - String that can be parsed as a valid JSON and deserialized into a map of issuer URLs to corresponding JWKS URIs. In the third case, CockroachDB will override the JWKS URI present in the issuer's well-known endpoint: `'{ "issuer_jwks_map": { "https://accounts.google.com": "https://www.googleapis.com/oauth2/v3/certs", "example.com/adfs": "https://example.com/adfs/discovery/keys" } }'`. - When `issuer_jwks_map` is set, CockroachDB directly uses the JWKS URI to get the key set. In all other cases where [`server.jwt_authentication.jwks_auto_fetch.enabled`]({% link v23.1/sso-sql.md %}#cluster-settings) is set CockroachDB obtains the JWKS URI first from the issuer's well-known endpoint and then uses this endpoint. [#128751][#128751] + When `issuer_jwks_map` is set, CockroachDB directly uses the JWKS URI to get the key set. In all other cases where [`server.jwt_authentication.jwks_auto_fetch.enabled`]({% link v23.1/sso-sql.md %}#cluster-settings) is set CockroachDB obtains the JWKS URI first from the issuer's well-known endpoint and then uses this endpoint.

SQL language changes

-- Added the `sql.auth.grant_option_inheritance.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}#setting-sql-auth-grant-option-inheritance-enabled). The default value is `true`, which results in behavior that matches the existing behavior of CockroachDB. When set to `false`, the [`GRANT OPTION`]({% link v23.1/grant.md %}) is not inherited via role membership, which will prevent the descendant roles from being able to grant the privilege to others. The privilege itself is still inherited via role membership. [#126862][#126862] -- Added the `sql.auth.grant_option_for_owner.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}#setting-sql-auth-grant-option-for-owner-enabled). The default value is `true`, which results in behavior that matches the existing behavior of CockroachDB. When set to `false`, then the [`GRANT OPTION`]({% link v23.1/grant.md %}) is not implcitly given to the owner of an object. The object owner still implicitly has all privileges on the object, just not the ability to grant them to other users. [#127005][#127005] +- Added the `sql.auth.grant_option_inheritance.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}#setting-sql-auth-grant-option-inheritance-enabled). The default value is `true`, which results in behavior that matches the existing behavior of CockroachDB. When set to `false`, the [`GRANT OPTION`]({% link v23.1/grant.md %}) is not inherited via role membership, which will prevent the descendant roles from being able to grant the privilege to others. The privilege itself is still inherited via role membership. +- Added the `sql.auth.grant_option_for_owner.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}#setting-sql-auth-grant-option-for-owner-enabled). The default value is `true`, which results in behavior that matches the existing behavior of CockroachDB. When set to `false`, then the [`GRANT OPTION`]({% link v23.1/grant.md %}) is not implcitly given to the owner of an object. The object owner still implicitly has all privileges on the object, just not the ability to grant them to other users.

DB Console changes

-- The [Database]({% link v23.1/ui-databases-page.md %}) details and Table details pages in the [DB Console]({% link v23.1/ui-overview.md %}) now display the correct `"stats last created"` value. [#126415][#126415] -- The [Database]({% link v23.1/ui-databases-page.md %}) and Tables pages in the [DB Console]({% link v23.1/ui-overview.md %}) will show a loading state while loading information for databases and tables including size and [range]({% link v23.1/architecture/glossary.md %}#architecture-range) counts. [#127699][#127699] -- In the [Database]({% link v23.1/ui-databases-page.md %}) details page, the table name will no longer appear with quotes around the schema and table name. [#127763][#127763] -- [`ALTER ROLE`]({% link v23.1/alter-role.md %}) events in the [DB Console]({% link v23.1/ui-overview.md %}) event log now render correctly when the event does not contain any role options. [#126563][#126563] -- Fixed a bug where the [Databases]({% link v24.1/ui-databases-page.md %}) page crashed if the range information was not available. [#127090][#127090] +- The [Database]({% link v23.1/ui-databases-page.md %}) details and Table details pages in the [DB Console]({% link v23.1/ui-overview.md %}) now display the correct `"stats last created"` value. +- The [Database]({% link v23.1/ui-databases-page.md %}) and Tables pages in the [DB Console]({% link v23.1/ui-overview.md %}) will show a loading state while loading information for databases and tables including size and [range]({% link v23.1/architecture/glossary.md %}#architecture-range) counts. +- In the [Database]({% link v23.1/ui-databases-page.md %}) details page, the table name will no longer appear with quotes around the schema and table name. +- [`ALTER ROLE`]({% link v23.1/alter-role.md %}) events in the [DB Console]({% link v23.1/ui-overview.md %}) event log now render correctly when the event does not contain any role options. +- Fixed a bug where the [Databases]({% link v24.1/ui-databases-page.md %}) page crashed if the range information was not available.

Bug fixes

-- Fixed a bug in which the [`DISCARD`]({% link v23.1/alter-table.md %}) statement was disallowed with [`default_transaction_read_only = on`]({% link v23.1/session-variables.md %}). [#127549][#127549] -- Fixed a bug where [`ALTER DATABASE ... DROP REGION`]({% link v23.1/alter-database.md %}#drop-region) could fail if any tables under the given database have [indexes on expressions]({% link v23.1/expression-indexes.md %}). [#126600][#126600] -- Fixed a bug when [restoring]({% link v23.1/restore.md %}) a database with a [composite type]({% link v23.1/create-type.md %}#create-a-composite-data-type). [#126847][#126847] -- Fixed a bug when inputting [`public` role]({% link v23.1/security-reference/authorization.md %}#default-roles) as user name for [built-in compatibility functions]({% link v23.1/functions-and-operators.md %}#compatibility-functions), such as `has_database_privilege` and `has_schema_privilege`. [#126853][#126853] -- Fixed a bug where CockroachDB could incorrectly evaluate an [`IS NOT NULL`]({% link v23.1/null-handling.md %}#nulls-and-simple-comparisons) filter if it was applied to non-`NULL` tuples that had `NULL` elements, such as `(1, NULL)` or `(NULL, NULL)`. This bug has existed since v20.2. [#126942][#126942] -- Fixed a bug where [`CREATE TABLE`]({% link v23.1/create-table.md %}) with [index expressions]({% link v23.1/expression-indexes.md %}) could hit undefined column errors on [transaction retries]({% link v23.1/transaction-retry-error-reference.md %}). [#126200][#126200] -- Fixed a bug that caused a memory leak when executing SQL statements with comments, for example, `SELECT /* comment */ 1;`. Memory owned by a SQL session would continue to grow as these types of statements were executed. The memory would only be released when closing the [SQL session]({% link v24.2/show-sessions.md %}). This bug has been present since v23.1. [#127757][#127757] -- Fixed a bug where [`CREATE INDEX IF NOT EXISTS`]({% link v23.1/create-index.md %}) would not correctly short-circuit if the given index already existed. [#128239][#128239] -- Fixed a bug in syntax validation, in which the `DESCENDING` clause was not allowed for non-terminal columns of an [inverted index]({% link v23.1/inverted-indexes.md %}). Only the last column of an inverted index should be prevented from being `DESCENDING`. This is now properly checked. [#128239][#128239] -- Fixed a bug where an [index]({% link v23.1/indexes.md %}) could store a column in the primary index if that column had a mixed-case name. [#128239][#128239] -- Fixed a memory leak that could occur when specifying a non-existent virtual cluster name in the connection string. [#128110][#128110] -- Setting or dropping a default value on a [computed column]({% link v23.1/computed-columns.md %}) is now blocked, even for `NULL` defaults. Previously, setting or dropping a default value on a computed column was a no-op. [#128468][#128468] - -[#126200]: https://github.com/cockroachdb/cockroach/pull/126200 -[#126415]: https://github.com/cockroachdb/cockroach/pull/126415 -[#126563]: https://github.com/cockroachdb/cockroach/pull/126563 -[#126600]: https://github.com/cockroachdb/cockroach/pull/126600 -[#126847]: https://github.com/cockroachdb/cockroach/pull/126847 -[#126853]: https://github.com/cockroachdb/cockroach/pull/126853 -[#126862]: https://github.com/cockroachdb/cockroach/pull/126862 -[#126942]: https://github.com/cockroachdb/cockroach/pull/126942 -[#127005]: https://github.com/cockroachdb/cockroach/pull/127005 -[#127090]: https://github.com/cockroachdb/cockroach/pull/127090 -[#127537]: https://github.com/cockroachdb/cockroach/pull/127537 -[#127549]: https://github.com/cockroachdb/cockroach/pull/127549 -[#127606]: https://github.com/cockroachdb/cockroach/pull/127606 -[#127699]: https://github.com/cockroachdb/cockroach/pull/127699 -[#127757]: https://github.com/cockroachdb/cockroach/pull/127757 -[#127763]: https://github.com/cockroachdb/cockroach/pull/127763 -[#128110]: https://github.com/cockroachdb/cockroach/pull/128110 -[#128239]: https://github.com/cockroachdb/cockroach/pull/128239 -[#128468]: https://github.com/cockroachdb/cockroach/pull/128468 -[#128586]: https://github.com/cockroachdb/cockroach/pull/128586 -[#128751]: https://github.com/cockroachdb/cockroach/pull/128751 +- Fixed a bug in which the [`DISCARD`]({% link v23.1/alter-table.md %}) statement was disallowed with [`default_transaction_read_only = on`]({% link v23.1/session-variables.md %}). +- Fixed a bug where [`ALTER DATABASE ... DROP REGION`]({% link v23.1/alter-database.md %}#drop-region) could fail if any tables under the given database have [indexes on expressions]({% link v23.1/expression-indexes.md %}). +- Fixed a bug when [restoring]({% link v23.1/restore.md %}) a database with a [composite type]({% link v23.1/create-type.md %}#create-a-composite-data-type). +- Fixed a bug when inputting [`public` role]({% link v23.1/security-reference/authorization.md %}#default-roles) as user name for [built-in compatibility functions]({% link v23.1/functions-and-operators.md %}#compatibility-functions), such as `has_database_privilege` and `has_schema_privilege`. +- Fixed a bug where CockroachDB could incorrectly evaluate an [`IS NOT NULL`]({% link v23.1/null-handling.md %}#nulls-and-simple-comparisons) filter if it was applied to non-`NULL` tuples that had `NULL` elements, such as `(1, NULL)` or `(NULL, NULL)`. This bug has existed since v20.2. +- Fixed a bug where [`CREATE TABLE`]({% link v23.1/create-table.md %}) with [index expressions]({% link v23.1/expression-indexes.md %}) could hit undefined column errors on [transaction retries]({% link v23.1/transaction-retry-error-reference.md %}). +- Fixed a bug that caused a memory leak when executing SQL statements with comments, for example, `SELECT /* comment */ 1;`. Memory owned by a SQL session would continue to grow as these types of statements were executed. The memory would only be released when closing the [SQL session]({% link v24.2/show-sessions.md %}). This bug has been present since v23.1. +- Fixed a bug where [`CREATE INDEX IF NOT EXISTS`]({% link v23.1/create-index.md %}) would not correctly short-circuit if the given index already existed. +- Fixed a bug in syntax validation, in which the `DESCENDING` clause was not allowed for non-terminal columns of an [inverted index]({% link v23.1/inverted-indexes.md %}). Only the last column of an inverted index should be prevented from being `DESCENDING`. This is now properly checked. +- Fixed a bug where an [index]({% link v23.1/indexes.md %}) could store a column in the primary index if that column had a mixed-case name. +- Fixed a memory leak that could occur when specifying a non-existent virtual cluster name in the connection string. +- Setting or dropping a default value on a [computed column]({% link v23.1/computed-columns.md %}) is now blocked, even for `NULL` defaults. Previously, setting or dropping a default value on a computed column was a no-op. diff --git a/src/current/_includes/releases/v23.1/v23.1.26.md b/src/current/_includes/releases/v23.1/v23.1.26.md index b027c8fa013..f1b7cc53b3d 100644 --- a/src/current/_includes/releases/v23.1/v23.1.26.md +++ b/src/current/_includes/releases/v23.1/v23.1.26.md @@ -10,13 +10,13 @@ Release Date: September 12, 2024 1. A string that contains a JSON array of valid issuer URIs. Example: `['example.com/adfs','https://accounts.google.com']` 1. A string that contains a JSON map of valid issuer URIs to corresponding JWKS URIs and deserialized into a map of issuer URLs to corresponding JWKS URIs. A JSON map overrides the JWKS URI published in the issuer's `well-known/` endpoint. Example: `'{ "issuer_jwks_map": { "https://accounts.google.com": "https://www.googleapis.com/oauth2/v3/certs", "example.com/adfs": "https://example.com/adfs/discovery/keys" } }'` - When `issuer_jwks_map` is set, the key set is fetched from the JWKS URI directly. Otherwise, when `JWKSAutoFetchEnabled` is set, the JWKS URI is fetched from the issuer's `well-known/` endpoint. [#128669][#128669] + When `issuer_jwks_map` is set, the key set is fetched from the JWKS URI directly. Otherwise, when `JWKSAutoFetchEnabled` is set, the JWKS URI is fetched from the issuer's `well-known/` endpoint.

Operational changes

- New [structured logging events]({% link v23.1/logging.md %}) in the `OPS` channel report broken connections and related transactions during node shutdown. - `node_shutdown_connection_timeout`: Logged if there are still open client connections after the timeout defined by `server.shutdown.connections.timeout` expires. - - `node_shutdown_transaction_timeout`: Logged if there are still open transactions on those open client connections after the timeout defined by `server.shutdown.transactions.timeout` expires. [#128709][#128709] + - `node_shutdown_transaction_timeout`: Logged if there are still open transactions on those open client connections after the timeout defined by `server.shutdown.transactions.timeout` expires.

Bug fixes

@@ -25,17 +25,9 @@ Release Date: September 12, 2024 - `EXPLAIN (OPT, REDACT) CREATE VIEW` - `EXPLAIN (OPT, REDACT) CREATE FUNCTION` - [#128487][#128487] + -- Fixed a bug where incorrect values could be produced for virtual [computed columns]({% link v23.1/computed-columns.md %}) in rare cases when the virtual column expression's type did not match the type of the virtual column. [#129008][#129008] -- Fixed a bug where errors like `ERROR: column 'crdb_internal_idx_expr' does not exist` could be logged when accessing a table with an [expression index]({% link v23.1/expression-indexes.md %}) where the expression evaluates to an `ENUM` type. Example: `CREATE INDEX ON t ((col::an_enum))` [#129091][#129091] -- Fixed a bug introduced in v23.1 where a [user-defined function's]({% link v23.1/user-defined-functions.md %}) return type's parameters could not be named when dropping a user-defined function or procedure. [#115906][#115906] -- Fixed a slow-building memory leak when a cluster uses [GSSAPI Kerberos authentication]({% link v23.1/gssapi_authentication.md %}). [#130320][#130320] - -[#115906]: https://github.com/cockroachdb/cockroach/pull/115906 -[#128487]: https://github.com/cockroachdb/cockroach/pull/128487 -[#128669]: https://github.com/cockroachdb/cockroach/pull/128669 -[#128709]: https://github.com/cockroachdb/cockroach/pull/128709 -[#129008]: https://github.com/cockroachdb/cockroach/pull/129008 -[#129091]: https://github.com/cockroachdb/cockroach/pull/129091 -[#130320]: https://github.com/cockroachdb/cockroach/pull/130320 +- Fixed a bug where incorrect values could be produced for virtual [computed columns]({% link v23.1/computed-columns.md %}) in rare cases when the virtual column expression's type did not match the type of the virtual column. +- Fixed a bug where errors like `ERROR: column 'crdb_internal_idx_expr' does not exist` could be logged when accessing a table with an [expression index]({% link v23.1/expression-indexes.md %}) where the expression evaluates to an `ENUM` type. Example: `CREATE INDEX ON t ((col::an_enum))` +- Fixed a bug introduced in v23.1 where a [user-defined function's]({% link v23.1/user-defined-functions.md %}) return type's parameters could not be named when dropping a user-defined function or procedure. +- Fixed a slow-building memory leak when a cluster uses [GSSAPI Kerberos authentication]({% link v23.1/gssapi_authentication.md %}). diff --git a/src/current/_includes/releases/v23.1/v23.1.27.md b/src/current/_includes/releases/v23.1/v23.1.27.md index e474b6b76e1..d38a952b096 100644 --- a/src/current/_includes/releases/v23.1/v23.1.27.md +++ b/src/current/_includes/releases/v23.1/v23.1.27.md @@ -5,6 +5,4 @@ Release Date: October 3, 2024 {% include releases/new-release-downloads-docker-image.md release=include.release %}

Bug fixes

-- Fixed a rare bug where a [lease transfer]({% link v23.1/architecture/replication-layer.md %}#epoch-based-leases-table-data) could lead to a `side-transport update saw closed timestamp regression` panic. The bug could occur when a node was [overloaded]({% link v23.1/ui-overload-dashboard.md %}) and failing to heartbeat its [node liveness]({% link v23.1/cluster-setup-troubleshooting.md %}#node-liveness-issues) record. [#131679][#131679] - -[#131679]: https://github.com/cockroachdb/cockroach/pull/131679 +- Fixed a rare bug where a [lease transfer]({% link v23.1/architecture/replication-layer.md %}#epoch-based-leases-table-data) could lead to a `side-transport update saw closed timestamp regression` panic. The bug could occur when a node was [overloaded]({% link v23.1/ui-overload-dashboard.md %}) and failing to heartbeat its [node liveness]({% link v23.1/cluster-setup-troubleshooting.md %}#node-liveness-issues) record. diff --git a/src/current/_includes/releases/v23.1/v23.1.28.md b/src/current/_includes/releases/v23.1/v23.1.28.md index 3b030cc944c..74864e4d261 100644 --- a/src/current/_includes/releases/v23.1/v23.1.28.md +++ b/src/current/_includes/releases/v23.1/v23.1.28.md @@ -6,44 +6,25 @@ Release Date: October 10, 2024

Security changes

-- [`SHOW JOBS`]({% link v23.1/show-jobs.md %}) and its variants [`SHOW CHANGEFEED JOB`]({% link v23.1/show-jobs.md %}#show-changefeed-jobs) and [`SHOW CHANGEFEED JOBS`]({% link v23.1/show-jobs.md %}#show-changefeed-jobs) no longer expose user sensitive information like `client_key`. [#129910][#129910] +- [`SHOW JOBS`]({% link v23.1/show-jobs.md %}) and its variants [`SHOW CHANGEFEED JOB`]({% link v23.1/show-jobs.md %}#show-changefeed-jobs) and [`SHOW CHANGEFEED JOBS`]({% link v23.1/show-jobs.md %}#show-changefeed-jobs) no longer expose user sensitive information like `client_key`.

General changes

-- Upgraded [gRPC]({% link v23.1/architecture/distribution-layer.md %}#grpc) to v1.56.3. [#130044][#130044] +- Upgraded [gRPC]({% link v23.1/architecture/distribution-layer.md %}#grpc) to v1.56.3.

Operational changes

-- Added the `ranges.decommissioning` metric that represents the number of [ranges]({% link v23.1/architecture/glossary.md %}#range) which have a [replica]({% link v23.1/architecture/glossary.md %}#replica) on a [decommissioning node]({% link v23.1/node-shutdown.md %}). [#130254][#130254] +- Added the `ranges.decommissioning` metric that represents the number of [ranges]({% link v23.1/architecture/glossary.md %}#range) which have a [replica]({% link v23.1/architecture/glossary.md %}#replica) on a [decommissioning node]({% link v23.1/node-shutdown.md %}).

DB Console changes

-- DB Console will show an alert message when the [license]({% link v23.1/licensing-faqs.md %}) is expired or there are less than 15 days left before it expires. [#130439][#130439] -- DB Console will show a notification alerting customers without an Enterprise [license]({% link v23.1/licensing-faqs.md %}) to upcoming license changes with a link to more information. [#130439][#130439] +- DB Console will show an alert message when the [license]({% link v23.1/licensing-faqs.md %}) is expired or there are less than 15 days left before it expires. +- DB Console will show a notification alerting customers without an Enterprise [license]({% link v23.1/licensing-faqs.md %}) to upcoming license changes with a link to more information.

Bug fixes

-- Fixed a bug where the [`schema_locked` table parameter]({% link v23.1/with-storage-parameter.md %}#table-parameters) did not prevent a table from being referenced by a [foreign key]({% link v23.1/foreign-key.md %}). [#129752][#129752] -- Fixed a bug where the [`require_explicit_primary_keys`]({% link v23.1/session-variables.md %}#require-explicit-primary-keys) session variable would overly aggressively prevent all [`CREATE TABLE`]({% link v23.1/create-table.md %}) statements from working. [#129905][#129905] -- Fixed a rare bug where a [lease transfer]({% link v23.1/architecture/replication-layer.md %}#epoch-based-leases-table-data) could lead to a `side-transport update saw closed timestamp regression` panic. The bug could occur when a node was [overloaded]({% link v23.1/ui-overload-dashboard.md %}) and failing to heartbeat its [node liveness]({% link v23.1/cluster-setup-troubleshooting.md %}#node-liveness-issues) record. [#130124][#130124] -- Resolve a log message that read: `expiration of liveness record ... is not greater than expiration of the previous lease ... after liveness heartbeat`. This message is no longer possible. [#130623][#130623] -- Fixed a potential memory leak in [changefeeds]({% link v23.1/change-data-capture-overview.md %}) using a [cloud storage sink]({% link v23.1/changefeed-sinks.md %}#cloud-storage-sink). The memory leak could occur if both `changefeed.fast_gzip.enabled` and `changefeed.cloudstorage.async_flush.enabled` are `true` and the changefeed received an error while attempting to write to the cloud storage sink. [#130613][#130613] - - -[#128068]: https://github.com/cockroachdb/cockroach/pull/128068 -[#129752]: https://github.com/cockroachdb/cockroach/pull/129752 -[#129905]: https://github.com/cockroachdb/cockroach/pull/129905 -[#129910]: https://github.com/cockroachdb/cockroach/pull/129910 -[#130044]: https://github.com/cockroachdb/cockroach/pull/130044 -[#130124]: https://github.com/cockroachdb/cockroach/pull/130124 -[#130254]: https://github.com/cockroachdb/cockroach/pull/130254 -[#130316]: https://github.com/cockroachdb/cockroach/pull/130316 -[#130439]: https://github.com/cockroachdb/cockroach/pull/130439 -[#130613]: https://github.com/cockroachdb/cockroach/pull/130613 -[#130623]: https://github.com/cockroachdb/cockroach/pull/130623 -[#130689]: https://github.com/cockroachdb/cockroach/pull/130689 -[#130816]: https://github.com/cockroachdb/cockroach/pull/130816 -[#130820]: https://github.com/cockroachdb/cockroach/pull/130820 -[038cda982]: https://github.com/cockroachdb/cockroach/commit/038cda982 -[7f4a0e989]: https://github.com/cockroachdb/cockroach/commit/7f4a0e989 -[d5a2b0d4a]: https://github.com/cockroachdb/cockroach/commit/d5a2b0d4a +- Fixed a bug where the [`schema_locked` table parameter]({% link v23.1/with-storage-parameter.md %}#table-parameters) did not prevent a table from being referenced by a [foreign key]({% link v23.1/foreign-key.md %}). +- Fixed a bug where the [`require_explicit_primary_keys`]({% link v23.1/session-variables.md %}#require-explicit-primary-keys) session variable would overly aggressively prevent all [`CREATE TABLE`]({% link v23.1/create-table.md %}) statements from working. +- Fixed a rare bug where a [lease transfer]({% link v23.1/architecture/replication-layer.md %}#epoch-based-leases-table-data) could lead to a `side-transport update saw closed timestamp regression` panic. The bug could occur when a node was [overloaded]({% link v23.1/ui-overload-dashboard.md %}) and failing to heartbeat its [node liveness]({% link v23.1/cluster-setup-troubleshooting.md %}#node-liveness-issues) record. +- Resolve a log message that read: `expiration of liveness record ... is not greater than expiration of the previous lease ... after liveness heartbeat`. This message is no longer possible. +- Fixed a potential memory leak in [changefeeds]({% link v23.1/change-data-capture-overview.md %}) using a [cloud storage sink]({% link v23.1/changefeed-sinks.md %}#cloud-storage-sink). The memory leak could occur if both `changefeed.fast_gzip.enabled` and `changefeed.cloudstorage.async_flush.enabled` are `true` and the changefeed received an error while attempting to write to the cloud storage sink. diff --git a/src/current/_includes/releases/v23.1/v23.1.29.md b/src/current/_includes/releases/v23.1/v23.1.29.md index c0ca86e7318..4ad88fa7902 100644 --- a/src/current/_includes/releases/v23.1/v23.1.29.md +++ b/src/current/_includes/releases/v23.1/v23.1.29.md @@ -6,18 +6,18 @@ Release Date: November 18, 2024

General changes

-- Changed the license CockroachDB is distributed under to the new CockroachDB Software License (CSL). [#131704][#131704] [#131916][#131916] [#131917][#131917] [#131966][#131966] [#131971][#131971] [#131969][#131969] [#131980][#131980] [#131979][#131979] [#131974][#131974] [#131975][#131975] [#132052][#132052] [#132059][#132059] [#132804][#132804] [#132800][#132800] -- Attempting to install a second enterprise trial license on the same cluster will now fail. [#131977][#131977] -- The cluster setting `diagnostics.reporting.enabled` is now ignored if the cluster has a Trial or Free license, or if the reporting job is unable to load any license at all. [#132347][#132347] +- Changed the license CockroachDB is distributed under to the new CockroachDB Software License (CSL). +- Attempting to install a second enterprise trial license on the same cluster will now fail. +- The cluster setting `diagnostics.reporting.enabled` is now ignored if the cluster has a Trial or Free license, or if the reporting job is unable to load any license at all.

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

-- A new `changefeed.total_ranges` metric has been added and can be used to monitor the number of ranges that are watched by changefeed aggregators. It shares the same polling interval as `changefeed.lagging_ranges`, which is controlled by the existing `changefeed.lagging_ranges_polling_interval` cluster setting. [#131246][#131246] -- Allowed access to DB console APIs via JWT, which can be supplied as a Bearer token in the Authorization header. [#133457][#133457] +- A new `changefeed.total_ranges` metric has been added and can be used to monitor the number of ranges that are watched by changefeed aggregators. It shares the same polling interval as `changefeed.lagging_ranges`, which is controlled by the existing `changefeed.lagging_ranges_polling_interval` cluster setting. +- Allowed access to DB console APIs via JWT, which can be supplied as a Bearer token in the Authorization header.

DB Console changes

-- DB Console will reflect any throttling behavior from the cluster due to an expired license or missing telemetry data. Enterprise licenses are not affected. [#131858][#131858] +- DB Console will reflect any throttling behavior from the cluster due to an expired license or missing telemetry data. Enterprise licenses are not affected.

Bug fixes

@@ -26,53 +26,21 @@ Release Date: November 18, 2024 2. The correlated subquery has a `GroupBy` or `DistinctOn` operator with an outer-column reference in its input. 3. The correlated subquery is in the input of a `Select` or `Join` operator 4. The `Select` or `Join` has a filter that sets the outer-column reference from (2) equal to a non-outer column in the input of the grouping operator. - 5. The grouping column set does not include the replacement column, and functionally determines the replacement column. [#130987][#130987] -- The AWS endpoint and cloud custom HTTP client configuration are now considered when implicit authentication is used, whereas previously these were only considered when using explicit credentials. [#131200][#131200] -- Fixed a bug that could cause spurious user permission errors when multiple databases shared a common schema with a routine referencing a table. The bug has existed since UDFs were introduced in v22.2. [#126414][#126414] -- Fixed a rare bug where a lease transfer could lead to a `side-transport update saw closed timestamp regression` panic. The bug could occur when a node was overloaded and failing to heartbeat its node liveness record. [#131838][#131838] -- Fixed an error that could happen if an aggregate function was used as the value in a `SET` command. [#131957][#131957] -- Fixed a bug where a span stats request on a mixed version cluster resulted in a null pointer exception (NPE). [#132685][#132685] + 5. The grouping column set does not include the replacement column, and functionally determines the replacement column. +- The AWS endpoint and cloud custom HTTP client configuration are now considered when implicit authentication is used, whereas previously these were only considered when using explicit credentials. +- Fixed a bug that could cause spurious user permission errors when multiple databases shared a common schema with a routine referencing a table. The bug has existed since UDFs were introduced in v22.2. +- Fixed a rare bug where a lease transfer could lead to a `side-transport update saw closed timestamp regression` panic. The bug could occur when a node was overloaded and failing to heartbeat its node liveness record. +- Fixed an error that could happen if an aggregate function was used as the value in a `SET` command. +- Fixed a bug where a span stats request on a mixed version cluster resulted in a null pointer exception (NPE). - Fixed a rare bug in which an update of a primary key column which is also the only column in a separate column family can sometimes fail to update the primary index. This bug has existed since v22.2. Requirements to hit the bug are: 1. A table with multiple column families. 2. A column family containing a single primary key column. 3. That column family is not the first column family. 4. That column family existed before its column was in the primary key. 5. That column must be of type `FLOAT4/8`, `DECIMAL`, `JSON`, collated `STRING`, or `ARRAY`. - 6. An update changes that column from a composite value to a non-composite value. [#132124][#132124] -- The `proretset` column of the `pg_catalog.pg_proc` table is now properly set to `true` for set-returning builtin functions. [#132873][#132873] -- Fixed a bug in the query optimizer which could cause CockroachDB nodes to crash in rare cases. The bug could occur when a query contained a filter of the form `col IN (elem0, elem1, ..., elemN)` such that `N` is very large, e.g. 1.6+ million, and when `col` exists in a hash-sharded index or exists in a table with an indexed, computed column dependent on `col`. [#133068][#133068] -- Users with the admin role can now run `ALTER DEFAULT PRIVILEGES FOR target_role ...` on any `target_role`. Previously, this could result in a privilege error, which is incorrect as admins are allowed to perform any operation. [#133067][#133067] -- `REASSIGN OWNED BY` will now transfer ownership of the public schema. Previously, it would always skip over the public schema even if it was owned by the target role. [#133067][#133067] -- Fixed a bug where backup schedules could advance a protected timestamp too early, which caused incremental backups to fail. [#131388][#131388] - -[#126414]: https://github.com/cockroachdb/cockroach/pull/126414 -[#130987]: https://github.com/cockroachdb/cockroach/pull/130987 -[#131200]: https://github.com/cockroachdb/cockroach/pull/131200 -[#131246]: https://github.com/cockroachdb/cockroach/pull/131246 -[#131388]: https://github.com/cockroachdb/cockroach/pull/131388 -[#131704]: https://github.com/cockroachdb/cockroach/pull/131704 -[#131838]: https://github.com/cockroachdb/cockroach/pull/131838 -[#131858]: https://github.com/cockroachdb/cockroach/pull/131858 -[#131916]: https://github.com/cockroachdb/cockroach/pull/131916 -[#131917]: https://github.com/cockroachdb/cockroach/pull/131917 -[#131957]: https://github.com/cockroachdb/cockroach/pull/131957 -[#131966]: https://github.com/cockroachdb/cockroach/pull/131966 -[#131969]: https://github.com/cockroachdb/cockroach/pull/131969 -[#131971]: https://github.com/cockroachdb/cockroach/pull/131971 -[#131974]: https://github.com/cockroachdb/cockroach/pull/131974 -[#131975]: https://github.com/cockroachdb/cockroach/pull/131975 -[#131977]: https://github.com/cockroachdb/cockroach/pull/131977 -[#131979]: https://github.com/cockroachdb/cockroach/pull/131979 -[#131980]: https://github.com/cockroachdb/cockroach/pull/131980 -[#132052]: https://github.com/cockroachdb/cockroach/pull/132052 -[#132059]: https://github.com/cockroachdb/cockroach/pull/132059 -[#132124]: https://github.com/cockroachdb/cockroach/pull/132124 -[#132347]: https://github.com/cockroachdb/cockroach/pull/132347 -[#132452]: https://github.com/cockroachdb/cockroach/pull/132452 -[#132685]: https://github.com/cockroachdb/cockroach/pull/132685 -[#132800]: https://github.com/cockroachdb/cockroach/pull/132800 -[#132804]: https://github.com/cockroachdb/cockroach/pull/132804 -[#132873]: https://github.com/cockroachdb/cockroach/pull/132873 -[#133067]: https://github.com/cockroachdb/cockroach/pull/133067 -[#133068]: https://github.com/cockroachdb/cockroach/pull/133068 -[#133457]: https://github.com/cockroachdb/cockroach/pull/133457 + 6. An update changes that column from a composite value to a non-composite value. +- The `proretset` column of the `pg_catalog.pg_proc` table is now properly set to `true` for set-returning builtin functions. +- Fixed a bug in the query optimizer which could cause CockroachDB nodes to crash in rare cases. The bug could occur when a query contained a filter of the form `col IN (elem0, elem1, ..., elemN)` such that `N` is very large, e.g. 1.6+ million, and when `col` exists in a hash-sharded index or exists in a table with an indexed, computed column dependent on `col`. +- Users with the admin role can now run `ALTER DEFAULT PRIVILEGES FOR target_role ...` on any `target_role`. Previously, this could result in a privilege error, which is incorrect as admins are allowed to perform any operation. +- `REASSIGN OWNED BY` will now transfer ownership of the public schema. Previously, it would always skip over the public schema even if it was owned by the target role. +- Fixed a bug where backup schedules could advance a protected timestamp too early, which caused incremental backups to fail. diff --git a/src/current/_includes/releases/v23.1/v23.1.3.md b/src/current/_includes/releases/v23.1/v23.1.3.md index d6ea7009b3d..6f97f20574a 100644 --- a/src/current/_includes/releases/v23.1/v23.1.3.md +++ b/src/current/_includes/releases/v23.1/v23.1.3.md @@ -3,18 +3,18 @@ Release Date: June 13, 2023 {{site.data.alerts.callout_danger}} -A [bug](https://github.com/cockroachdb/cockroach/issues/104798) was discovered in a change included in v23.1.3 (this release). This bug can affect clusters upgrading to v23.1.3 from [v22.2.x]({% link releases/v22.2.md %}). In an affected cluster, jobs that were running during the upgrade could hang or fail to run after the upgrade is finalized. Users upgrading from v22.2.x are advised to use [v23.1.2](#v23-1-2) to upgrade, or to set the [`cluster.preserve_downgrade_option`]({% link v23.1/upgrade-cockroach-version.md %}#step-3-decide-how-the-upgrade-will-be-finalized) cluster setting to delay finalization of the upgrade until they can upgrade to v23.1.4. +A was discovered in a change included in v23.1.3 (this release). This bug can affect clusters upgrading to v23.1.3 from [v22.2.x]({% link releases/v22.2.md %}). In an affected cluster, jobs that were running during the upgrade could hang or fail to run after the upgrade is finalized. Users upgrading from v22.2.x are advised to use [v23.1.2](#v23-1-2) to upgrade, or to set the [`cluster.preserve_downgrade_option`]({% link v23.1/upgrade-cockroach-version.md %}#step-3-decide-how-the-upgrade-will-be-finalized) cluster setting to delay finalization of the upgrade until they can upgrade to v23.1.4. {{site.data.alerts.end}} {% include releases/new-release-downloads-docker-image.md release=include.release %}

Security updates

-- The new `server.client_cert_expiration_cache.capacity` [cluster setting]({% link v23.1/cluster-settings.md %}) allows you to configure the minimum time until a user's set of client certificates will expire. When `server.client_cert_expiration_cache.capacity` is set to a non-zero value, the new metric `security.certificate.expiration.client` tracks the number of client certificates that have expired. [#104165][#104165] +- The new `server.client_cert_expiration_cache.capacity` [cluster setting]({% link v23.1/cluster-settings.md %}) allows you to configure the minimum time until a user's set of client certificates will expire. When `server.client_cert_expiration_cache.capacity` is set to a non-zero value, the new metric `security.certificate.expiration.client` tracks the number of client certificates that have expired.

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

-- Role-based audit logging is now an {{ site.data.products.enterprise }} feature. Only {{ site.data.products.enterprise }} users will be able to configure role-based audit logging using the `sql.log.user_audit` [cluster setting]({% link v23.1/cluster-settings.md %}). [#104453][#104453] +- Role-based audit logging is now an {{ site.data.products.enterprise }} feature. Only {{ site.data.products.enterprise }} users will be able to configure role-based audit logging using the `sql.log.user_audit` [cluster setting]({% link v23.1/cluster-settings.md %}). - The new `sql.log.user_audit` [cluster setting]({% link v23.1/cluster-settings.md %}) enables role-based auditing. When the setting is enabled, you can set an audit logging configuration using a table-like syntax. Each row in the configuration represents an _audit setting_ in the configuration. An audit setting is comprised of the following columns: `USER/ROLE` and `STATEMENT_FILTER`: ~~~sql @@ -25,123 +25,73 @@ A [bug](https://github.com/cockroachdb/cockroach/issues/104798) was discovered i '; ~~~ - [#104179][#104179] -- Introduced the `sql.log.user_audit.reduced_config.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}). When enabled, this cluster setting computes a "reduced" [audit configuration](https://www.cockroachlabs.com/docs/v23.1/eventlog#role_based_audit_event) based on the user's current role memberships and the current value for the `sql.log.user_audit` cluster setting. The "reduced" audit configuration is computed at the **first SQL event emit by the user, after the setting is enabled**. When the cluster setting is enabled, CockroachDB can compute the audit configuration once at session start, which provides around a 5% increase in throughput. However, changes to the audit configuration (user role memberships or cluster setting configuration) are not reflected within a session. A new session should be started to reflect the configuration changes in auditing behavior. [#104372][#104372] + +- Introduced the `sql.log.user_audit.reduced_config.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}). When enabled, this cluster setting computes a "reduced" [audit configuration](https://www.cockroachlabs.com/docs/v23.1/eventlog#role_based_audit_event) based on the user's current role memberships and the current value for the `sql.log.user_audit` cluster setting. The "reduced" audit configuration is computed at the **first SQL event emit by the user, after the setting is enabled**. When the cluster setting is enabled, CockroachDB can compute the audit configuration once at session start, which provides around a 5% increase in throughput. However, changes to the audit configuration (user role memberships or cluster setting configuration) are not reflected within a session. A new session should be started to reflect the configuration changes in auditing behavior.

SQL language changes

-- When the `sql.trace.stmt.enable_threshold` or `sql.trace.txn.enable_threshold` [cluster settings]({% link v23.1/cluster-settings.md %}) is enabled, the logging output is now emitted on the [`SQL_EXEC` channel](https://www.cockroachlabs.com/docs/v23.1/logging#sql_exec). Previously, this was emitted to the [`DEV` channel]({% link v23.1/logging.md %}#dev). [#104047][#104047] -- [`SHOW GRANTS`]({% link v23.1/show-grants.md %}) now lists privileges inherited by role membership. `SHOW GRANTS ON ROLE` statements no longer require any privileges and also lists implicit grantees. [#104587][#104587] +- When the `sql.trace.stmt.enable_threshold` or `sql.trace.txn.enable_threshold` [cluster settings]({% link v23.1/cluster-settings.md %}) is enabled, the logging output is now emitted on the [`SQL_EXEC` channel](https://www.cockroachlabs.com/docs/v23.1/logging#sql_exec). Previously, this was emitted to the [`DEV` channel]({% link v23.1/logging.md %}#dev). +- [`SHOW GRANTS`]({% link v23.1/show-grants.md %}) now lists privileges inherited by role membership. `SHOW GRANTS ON ROLE` statements no longer require any privileges and also lists implicit grantees.

Operational changes

-- The new [metric]({% link v23.1/metrics.md %}) `leases.liveness` shows the number of [liveness range]({% link v23.1/configure-replication-zones.md %}#create-a-replication-zone-for-a-system-range) leases per node to track the liveness range leaseholder. [#104076][#104076] +- The new [metric]({% link v23.1/metrics.md %}) `leases.liveness` shows the number of [liveness range]({% link v23.1/configure-replication-zones.md %}#create-a-replication-zone-for-a-system-range) leases per node to track the liveness range leaseholder. - The new a gauge metric `sql.conns_waiting_to_hash` counts the number of connection attempts that are being limited due to the number of concurrent password hashing operations. This behavior has been present since v21.2 to [prevent password hashing from increasing CPU load]({% link v23.1/query-behavior-troubleshooting.md %}#high-client-cpu-load-connection-pool-exhaustion-or-increased-connection-latency-when-scram-password-based-authentication-is-enabled). The metric is expected to be `0`, or close to `0`, in a healthy setup. If the metric is consistently high and connection latencies are high, then an operator should do one or more of the following: - Ensure applications using the cluster have properly configured [connection pools]({% link v23.1/connection-pooling.md %}). - Add more vCPU or more nodes to the cluster. - - Increase the password hashing concurrency using the `COCKROACH_MAX_PW_HASH_COMPUTE_CONCURRENCY` [environment variable]({% link v23.1/cockroach-commands.md %}#environment-variables). [#104388][#104388] + - Increase the password hashing concurrency using the `COCKROACH_MAX_PW_HASH_COMPUTE_CONCURRENCY` [environment variable]({% link v23.1/cockroach-commands.md %}#environment-variables).

DB Console changes

-- Added merge queue failure and merge queue processing time metrics to the [**Queue Processing Failures**]({% link v23.1/ui-queues-dashboard.md %}#queue-processing-failures) and [**Queue Processing Times**]({% link v23.1/ui-queues-dashboard.md %}#queue-processing-times) graphs respectively. [#104034][#104034] -- Removed the **Circuit Breaker Tripped Events** graph from the [**Replication**]({% link v23.1/ui-replication-dashboard.md %}) dashboard. [#104038][#104038] -- Added **Completed time** to [**Jobs**]({% link v23.1/ui-jobs-page.md %}) and [**Job details**]({% link v23.1/ui-jobs-page.md %}#job-details) pages, and updated the time format on those pages to include seconds and milliseconds. [#104063][#104063] -- Added a **Created SQL Connections** chart on the [**SQL**]({% link v23.1/ui-sql-dashboard.md %}) dashboard under **Metrics**. [#104072][#104072] -- Added **Ranges in Catchup Mode** and **Rangefeed Catchup Scans Duration** charts to the [**Changefeeds**]({% link v23.1/ui-cdc-dashboard.md %}) dashboard. [#104122][#104122] -- The sort setting on the [**Hot Ranges**]({% link v23.1/ui-hot-ranges-page.md %}) page is now persisted across page reloads and navigation. [#104112][#104112] -- The [**Databases**]({% link v23.1/ui-databases-page.md %}) page now supports a large number of tables for a single database. If more than 40 tables are present in a database, the sort on the page will be disabled; however, it is still possible to filter by table name. [#103854][#103854] -- On the **Statement Details** page, renamed the "Idle Latency" metric to "Client Wait Time" and separated it into its own chart. [#103915][#103915] +- Added merge queue failure and merge queue processing time metrics to the [**Queue Processing Failures**]({% link v23.1/ui-queues-dashboard.md %}#queue-processing-failures) and [**Queue Processing Times**]({% link v23.1/ui-queues-dashboard.md %}#queue-processing-times) graphs respectively. +- Removed the **Circuit Breaker Tripped Events** graph from the [**Replication**]({% link v23.1/ui-replication-dashboard.md %}) dashboard. +- Added **Completed time** to [**Jobs**]({% link v23.1/ui-jobs-page.md %}) and [**Job details**]({% link v23.1/ui-jobs-page.md %}#job-details) pages, and updated the time format on those pages to include seconds and milliseconds. +- Added a **Created SQL Connections** chart on the [**SQL**]({% link v23.1/ui-sql-dashboard.md %}) dashboard under **Metrics**. +- Added **Ranges in Catchup Mode** and **Rangefeed Catchup Scans Duration** charts to the [**Changefeeds**]({% link v23.1/ui-cdc-dashboard.md %}) dashboard. +- The sort setting on the [**Hot Ranges**]({% link v23.1/ui-hot-ranges-page.md %}) page is now persisted across page reloads and navigation. +- The [**Databases**]({% link v23.1/ui-databases-page.md %}) page now supports a large number of tables for a single database. If more than 40 tables are present in a database, the sort on the page will be disabled; however, it is still possible to filter by table name. +- On the **Statement Details** page, renamed the "Idle Latency" metric to "Client Wait Time" and separated it into its own chart. - Added more search criteria options on the [**SQL Activity**]({% link v23.1/ui-overview.md %}#sql-activity) page: - For the **Top** dropdown: `1000`, `5000`, and `10000`. - For the **By** dropdown on the **Statements** tab: Last Execution Time, Max Latency, Max Memory, Min Latency, Network, P50 Latency, P90 Latency, Retries, and Rows Processed. - - For the **By** dropdown on the **Transactions** tab: Max Memory, Network, Retries, and Rows Processed. [#104054][#104054] -- Added a new link to the **Range Status** page on the [**Replication**]({% link v23.1/ui-replication-dashboard.md %}) dashboard that opens the **Enqueue Ranges** page with the node ID already completed. [#104100][#104100] -- The DB Console will no longer show `DROP INDEX` recommendations for unique indexes. [#104287][#104287] -- On the **Transactions** tab of the [**SQL Activity**]({% link v23.1/ui-overview.md %}#sql-activity) page, the **Status** will be `Idle` if the executing transaction is not currently executing a statement. Previously, the status would be `Executing`. [#103925][#103925] -- Fixed the job that updates the `statement_activity` and `transaction_activity` tables on the [**SQL Activity**]({% link v23.1/ui-overview.md %}#sql-activity) page. The table size is now constrained when there are a lot of unique queries. This fix helps to prevent slowing down the **SQL Activity** page. [#104340][#104340] + - For the **By** dropdown on the **Transactions** tab: Max Memory, Network, Retries, and Rows Processed. +- Added a new link to the **Range Status** page on the [**Replication**]({% link v23.1/ui-replication-dashboard.md %}) dashboard that opens the **Enqueue Ranges** page with the node ID already completed. +- The DB Console will no longer show `DROP INDEX` recommendations for unique indexes. +- On the **Transactions** tab of the [**SQL Activity**]({% link v23.1/ui-overview.md %}#sql-activity) page, the **Status** will be `Idle` if the executing transaction is not currently executing a statement. Previously, the status would be `Executing`. +- Fixed the job that updates the `statement_activity` and `transaction_activity` tables on the [**SQL Activity**]({% link v23.1/ui-overview.md %}#sql-activity) page. The table size is now constrained when there are a lot of unique queries. This fix helps to prevent slowing down the **SQL Activity** page.

Bug fixes

-- Fixed a panic that could occur while a [`COPY`]({% link v23.1/copy.md %}) statement is logged for telemetry purposes. [#103848][#103848] -- Fixed a bug where disk space used by deleted and [garbage collected](https://www.cockroachlabs.com/docs/v23.1/architecture/storage-layer#garbage-collection) data would not be reclaimed in a timely manner, especially when a store has low-write workload. [#103865][#103865] -- Fixed a problem that could lead to erroneously refused lease transfers, causing the following error message: `refusing to transfer lease to [...] because target may need a Raft snapshot: replica in StateProbe`. [#103849][#103849] -- Fixed a bug where [`COPY`]({% link v23.1/copy.md %}) in v23.1.0 and beta versions would incorrectly encode data with multiple [column families]({% link v23.1/column-families.md %}). The data must be dropped and re-imported to be encoded correctly. [#103393][#103393] -- Fixed a bug where running a [`debug` command]({% link v23.1/cockroach-commands.md %}#commands) that manipulates a store (e.g., `debug compact`) without first terminating the node using the store, could result in corruption of the node's store if encryption-at-rest was enabled. [#102877][#102877] -- Fixed a bug where [`SHOW DEFAULT PRIVILEGES`]({% link v23.1/show-default-privileges.md %}) did not work correctly if the database name or schema name being inspected had upper-case or special characters. [#103952][#103952] -- Fixed a bug that could cause queries with [joins]({% link v23.1/joins.md %}) or [subqueries]({% link v23.1/subqueries.md %}) to omit rows where column values are `NULL` in very rare cases. This bug was present since v20.2. [#103803][#103803] -- Fixed a bug that could cause goroutines to hang during [SCRAM authentication](https://www.cockroachlabs.com/docs/v23.1/security-reference/scram-authentication). [#104197][#104197] -- The `sys.cpu.combined.percent-normalized` metric now uses `GOMAXPROCS`, if lower than the number of CPU shares when calculating CPU utilization. [#104191][#104191] -- The warning message about a missing `--advertise-addr` flag is no longer displayed when the flag is specified on server start. [#104227][#104227] -- Fixed a rare bug where stale multi-column table [statistics]({% link v23.1/cost-based-optimizer.md %}) could cause table statistics forecasts to be inaccurate, leading to un-optimal query plans. [#104229][#104229] -- Fixed a bug in v23.1.0 where the `node_id` field would be omitted from logs. The `node_id` value has now been restored to the logs. [#103798][#103798] -- Fixed a bug where the collection of `KV bytes read` and `KV gRPC calls` execution statistics during [`EXPLAIN ANALYZE`]({% link v23.1/explain-analyze.md %}) could be incorrect (it would remain at zero) in some cases. The bug was introduced in the v23.1.0 release. [#104194][#104194] -- Fixed an incorrect results bug in v22.2.10 and v23.1.2 and above when the `optimizer_use_improved_computed_column_filters_derivation` [session setting]({% link v23.1/set-vars.md %}) is `true`. Predicates on [computed columns]({% link v23.1/computed-columns.md %}) are derived when an ORed predicate on a column in the computed column expression is present. [#104276][#104276] -- The [`keyvisualizer` job]({% link v23.1/ui-key-visualizer.md %}) no longer panics if an error is encountered while cleaning up stale samples. Instead, if the job encounters an error, the job will try again later. [#104374][#104374] -- Fixed a bug where it was possible for a SQL row to be split across two ranges. When this occurred, SQL queries could return unexpected errors. The real keys are now inspected rather than just request keys to determine load-based split points. [#103876][#103876] -- Fixed a bug which could cause a panic when a [`CREATE FUNCTION`]({% link v23.1/create-function.md %}) statement used the [`setval()` built-in function]({% link v23.1/functions-and-operators.md %}). [#104297][#104297] -- Fixed a rare race condition that could allow large [restore]({% link v23.1/restore.md %}) jobs to fail with an `unable to find store` error. [#100955][#100955] -- Fixed a bug where CockroachDB would not ignore the messages that it should, if there was an error while in the [PostgreSQL extended protocol]({% link v23.1/postgresql-compatibility.md %}). [#104459][#104459] -- Fixed a bug in which some [Google Cloud Platform]({% link v23.1/use-cloud-storage.md %})-related errors would be returned with an uninformative error. [#104065][#104065] -- Fixed a bug where in rare cases a panic could occur during shutdown in relation to the SQL activity computation. This bug was introduced in v23.1.0. [#104515][#104515] -- The backfill of `system.job_info` upgrade migration that runs during upgrades from v22.2 now processes rows in batches to avoid cases where it could become stuck due to [contention]({% link v23.1/performance-best-practices-overview.md %}#transaction-contention) and transaction retries. [#104574][#104574] -- Fixes a bug in which [`SHOW BACKUP`]({% link v23.1/show-backup.md %}) would fail to show a [locality-aware backup]({% link v23.1/take-and-restore-locality-aware-backups.md %}) that contained [incremental backups]({% link v23.1/take-full-and-incremental-backups.md %}). [#103761][#103761] +- Fixed a panic that could occur while a [`COPY`]({% link v23.1/copy.md %}) statement is logged for telemetry purposes. +- Fixed a bug where disk space used by deleted and [garbage collected](https://www.cockroachlabs.com/docs/v23.1/architecture/storage-layer#garbage-collection) data would not be reclaimed in a timely manner, especially when a store has low-write workload. +- Fixed a problem that could lead to erroneously refused lease transfers, causing the following error message: `refusing to transfer lease to [...] because target may need a Raft snapshot: replica in StateProbe`. +- Fixed a bug where [`COPY`]({% link v23.1/copy.md %}) in v23.1.0 and beta versions would incorrectly encode data with multiple [column families]({% link v23.1/column-families.md %}). The data must be dropped and re-imported to be encoded correctly. +- Fixed a bug where running a [`debug` command]({% link v23.1/cockroach-commands.md %}#commands) that manipulates a store (e.g., `debug compact`) without first terminating the node using the store, could result in corruption of the node's store if encryption-at-rest was enabled. +- Fixed a bug where [`SHOW DEFAULT PRIVILEGES`]({% link v23.1/show-default-privileges.md %}) did not work correctly if the database name or schema name being inspected had upper-case or special characters. +- Fixed a bug that could cause queries with [joins]({% link v23.1/joins.md %}) or [subqueries]({% link v23.1/subqueries.md %}) to omit rows where column values are `NULL` in very rare cases. This bug was present since v20.2. +- Fixed a bug that could cause goroutines to hang during [SCRAM authentication](https://www.cockroachlabs.com/docs/v23.1/security-reference/scram-authentication). +- The `sys.cpu.combined.percent-normalized` metric now uses `GOMAXPROCS`, if lower than the number of CPU shares when calculating CPU utilization. +- The warning message about a missing `--advertise-addr` flag is no longer displayed when the flag is specified on server start. +- Fixed a rare bug where stale multi-column table [statistics]({% link v23.1/cost-based-optimizer.md %}) could cause table statistics forecasts to be inaccurate, leading to un-optimal query plans. +- Fixed a bug in v23.1.0 where the `node_id` field would be omitted from logs. The `node_id` value has now been restored to the logs. +- Fixed a bug where the collection of `KV bytes read` and `KV gRPC calls` execution statistics during [`EXPLAIN ANALYZE`]({% link v23.1/explain-analyze.md %}) could be incorrect (it would remain at zero) in some cases. The bug was introduced in the v23.1.0 release. +- Fixed an incorrect results bug in v22.2.10 and v23.1.2 and above when the `optimizer_use_improved_computed_column_filters_derivation` [session setting]({% link v23.1/set-vars.md %}) is `true`. Predicates on [computed columns]({% link v23.1/computed-columns.md %}) are derived when an ORed predicate on a column in the computed column expression is present. +- The [`keyvisualizer` job]({% link v23.1/ui-key-visualizer.md %}) no longer panics if an error is encountered while cleaning up stale samples. Instead, if the job encounters an error, the job will try again later. +- Fixed a bug where it was possible for a SQL row to be split across two ranges. When this occurred, SQL queries could return unexpected errors. The real keys are now inspected rather than just request keys to determine load-based split points. +- Fixed a bug which could cause a panic when a [`CREATE FUNCTION`]({% link v23.1/create-function.md %}) statement used the [`setval()` built-in function]({% link v23.1/functions-and-operators.md %}). +- Fixed a rare race condition that could allow large [restore]({% link v23.1/restore.md %}) jobs to fail with an `unable to find store` error. +- Fixed a bug where CockroachDB would not ignore the messages that it should, if there was an error while in the [PostgreSQL extended protocol]({% link v23.1/postgresql-compatibility.md %}). +- Fixed a bug in which some [Google Cloud Platform]({% link v23.1/use-cloud-storage.md %})-related errors would be returned with an uninformative error. +- Fixed a bug where in rare cases a panic could occur during shutdown in relation to the SQL activity computation. This bug was introduced in v23.1.0. +- The backfill of `system.job_info` upgrade migration that runs during upgrades from v22.2 now processes rows in batches to avoid cases where it could become stuck due to [contention]({% link v23.1/performance-best-practices-overview.md %}#transaction-contention) and transaction retries. +- Fixes a bug in which [`SHOW BACKUP`]({% link v23.1/show-backup.md %}) would fail to show a [locality-aware backup]({% link v23.1/take-and-restore-locality-aware-backups.md %}) that contained [incremental backups]({% link v23.1/take-full-and-incremental-backups.md %}).

Performance improvements

-- If [`transaction_rows_read_err`]({% link v23.1/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction) is set to a non-zero value, CockroachDB now ensures that any single scan never reads more than `transaction_rows_read_err` + 1 rows. This prevents transactions that would error due to the `transaction_rows_read_err` setting from causing a large performance overhead due to large scans. [#104364][#104364] -- Improved the efficiency of the an internal job that during upgrades deleted descriptors of dropped functions. Previously, the job would check every single ID until the max descriptor ID, which was particularly inefficient when this was large. Now, the job only queries the upper bound ID of each batch. [#104590][#104590] +- If [`transaction_rows_read_err`]({% link v23.1/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction) is set to a non-zero value, CockroachDB now ensures that any single scan never reads more than `transaction_rows_read_err` + 1 rows. This prevents transactions that would error due to the `transaction_rows_read_err` setting from causing a large performance overhead due to large scans. +- Improved the efficiency of the an internal job that during upgrades deleted descriptors of dropped functions. Previously, the job would check every single ID until the max descriptor ID, which was particularly inefficient when this was large. Now, the job only queries the upper bound ID of each batch.

Contributors

This release includes 111 merged PRs by 41 authors. - -[#100955]: https://github.com/cockroachdb/cockroach/pull/100955 -[#102877]: https://github.com/cockroachdb/cockroach/pull/102877 -[#103393]: https://github.com/cockroachdb/cockroach/pull/103393 -[#103761]: https://github.com/cockroachdb/cockroach/pull/103761 -[#103798]: https://github.com/cockroachdb/cockroach/pull/103798 -[#103803]: https://github.com/cockroachdb/cockroach/pull/103803 -[#103841]: https://github.com/cockroachdb/cockroach/pull/103841 -[#103848]: https://github.com/cockroachdb/cockroach/pull/103848 -[#103849]: https://github.com/cockroachdb/cockroach/pull/103849 -[#103854]: https://github.com/cockroachdb/cockroach/pull/103854 -[#103865]: https://github.com/cockroachdb/cockroach/pull/103865 -[#103876]: https://github.com/cockroachdb/cockroach/pull/103876 -[#103915]: https://github.com/cockroachdb/cockroach/pull/103915 -[#103925]: https://github.com/cockroachdb/cockroach/pull/103925 -[#103952]: https://github.com/cockroachdb/cockroach/pull/103952 -[#104034]: https://github.com/cockroachdb/cockroach/pull/104034 -[#104038]: https://github.com/cockroachdb/cockroach/pull/104038 -[#104047]: https://github.com/cockroachdb/cockroach/pull/104047 -[#104054]: https://github.com/cockroachdb/cockroach/pull/104054 -[#104063]: https://github.com/cockroachdb/cockroach/pull/104063 -[#104065]: https://github.com/cockroachdb/cockroach/pull/104065 -[#104072]: https://github.com/cockroachdb/cockroach/pull/104072 -[#104076]: https://github.com/cockroachdb/cockroach/pull/104076 -[#104100]: https://github.com/cockroachdb/cockroach/pull/104100 -[#104112]: https://github.com/cockroachdb/cockroach/pull/104112 -[#104122]: https://github.com/cockroachdb/cockroach/pull/104122 -[#104165]: https://github.com/cockroachdb/cockroach/pull/104165 -[#104179]: https://github.com/cockroachdb/cockroach/pull/104179 -[#104191]: https://github.com/cockroachdb/cockroach/pull/104191 -[#104194]: https://github.com/cockroachdb/cockroach/pull/104194 -[#104197]: https://github.com/cockroachdb/cockroach/pull/104197 -[#104227]: https://github.com/cockroachdb/cockroach/pull/104227 -[#104229]: https://github.com/cockroachdb/cockroach/pull/104229 -[#104276]: https://github.com/cockroachdb/cockroach/pull/104276 -[#104287]: https://github.com/cockroachdb/cockroach/pull/104287 -[#104297]: https://github.com/cockroachdb/cockroach/pull/104297 -[#104340]: https://github.com/cockroachdb/cockroach/pull/104340 -[#104361]: https://github.com/cockroachdb/cockroach/pull/104361 -[#104364]: https://github.com/cockroachdb/cockroach/pull/104364 -[#104372]: https://github.com/cockroachdb/cockroach/pull/104372 -[#104374]: https://github.com/cockroachdb/cockroach/pull/104374 -[#104388]: https://github.com/cockroachdb/cockroach/pull/104388 -[#104416]: https://github.com/cockroachdb/cockroach/pull/104416 -[#104453]: https://github.com/cockroachdb/cockroach/pull/104453 -[#104459]: https://github.com/cockroachdb/cockroach/pull/104459 -[#104515]: https://github.com/cockroachdb/cockroach/pull/104515 -[#104574]: https://github.com/cockroachdb/cockroach/pull/104574 -[#104587]: https://github.com/cockroachdb/cockroach/pull/104587 -[#104590]: https://github.com/cockroachdb/cockroach/pull/104590 diff --git a/src/current/_includes/releases/v23.1/v23.1.30.md b/src/current/_includes/releases/v23.1/v23.1.30.md index 84ca49d3100..0a5a54f6b76 100644 --- a/src/current/_includes/releases/v23.1/v23.1.30.md +++ b/src/current/_includes/releases/v23.1/v23.1.30.md @@ -6,30 +6,18 @@ Release Date: December 12, 2024

Security updates

-- All cluster settings that accept strings are now fully redacted when transmitted as part of CockroachDB's diagnostics telemetry. The transmitted payload includes a record of modified cluster settings and their values when they are not strings. If you previously applied the mitigations in [Technical Advisory 133479]({% link advisories/a133479.md %}), you can safely turn on diagnostic reporting via the `diagnostics.reporting.enabled` cluster setting without leaking sensitive cluster settings values. [#134063][#134063] +- All cluster settings that accept strings are now fully redacted when transmitted as part of CockroachDB's diagnostics telemetry. The transmitted payload includes a record of modified cluster settings and their values when they are not strings. If you previously applied the mitigations in [Technical Advisory 133479]({% link advisories/a133479.md %}), you can safely turn on diagnostic reporting via the `diagnostics.reporting.enabled` cluster setting without leaking sensitive cluster settings values.

General changes

-- `COCKROACH_SKIP_ENABLING_DIAGNOSTIC_REPORTING` is no longer mentioned in the `cockroach demo` command. [#134083][#134083] +- `COCKROACH_SKIP_ENABLING_DIAGNOSTIC_REPORTING` is no longer mentioned in the `cockroach demo` command.

Bug fixes

-- Fixed a bug where CockroachDB could encounter an internal error `interface conversion: coldata.Column is` in an edge case. The bug was present in v22.2.13+, v23.1.9+, and v23.2+. [#133758][#133758] -- Fixed a bug that caused incorrect `NOT NULL` constraint violation errors on `UPSERT` and `INSERT ... ON CONFLICT ... DO UPDATE` statements when those statements updated an existing row and a subset of columns that did not include a `NOT NULL` column of the table. This bug had been present since at least v20.1.0. [#133824][#133824] -- Fixed an unhandled error that could occur when using `REVOKE ... ON SEQUENCE FROM ... user` on an object that is not a sequence. [#133706][#133706] -- Addressed a panic that could occur inside `CREATE TABLE AS` if sequence builtin expressions had invalid function overloads. [#133866][#133866] -- Previously, when executing queries with index / lookup joins where ordering needed to be maintained, CockroachDB's behavior could lead to increased query latency, potentially by several orders of magnitude. This bug was introduced in v22.2, and is now fixed. [#134363][#134363] -- Fixed a bug where `DROP CASCADE` would occasionally panic with an `un-dropped backref` message on partitioned tables. [#134524][#134524] -- Reduced the duration of partitions in the gossip network when a node crashes. This eliminates false positives in the `ranges.unavailable` metric. [#134603][#134603] - -[#133706]: https://github.com/cockroachdb/cockroach/pull/133706 -[#133758]: https://github.com/cockroachdb/cockroach/pull/133758 -[#133824]: https://github.com/cockroachdb/cockroach/pull/133824 -[#133866]: https://github.com/cockroachdb/cockroach/pull/133866 -[#134063]: https://github.com/cockroachdb/cockroach/pull/134063 -[#134083]: https://github.com/cockroachdb/cockroach/pull/134083 -[#134363]: https://github.com/cockroachdb/cockroach/pull/134363 -[#134524]: https://github.com/cockroachdb/cockroach/pull/134524 -[#134603]: https://github.com/cockroachdb/cockroach/pull/134603 -[#134649]: https://github.com/cockroachdb/cockroach/pull/134649 -[154e9f0e0]: https://github.com/cockroachdb/cockroach/commit/154e9f0e0 +- Fixed a bug where CockroachDB could encounter an internal error `interface conversion: coldata.Column is` in an edge case. The bug was present in v22.2.13+, v23.1.9+, and v23.2+. +- Fixed a bug that caused incorrect `NOT NULL` constraint violation errors on `UPSERT` and `INSERT ... ON CONFLICT ... DO UPDATE` statements when those statements updated an existing row and a subset of columns that did not include a `NOT NULL` column of the table. This bug had been present since at least v20.1.0. +- Fixed an unhandled error that could occur when using `REVOKE ... ON SEQUENCE FROM ... user` on an object that is not a sequence. +- Addressed a panic that could occur inside `CREATE TABLE AS` if sequence builtin expressions had invalid function overloads. +- Previously, when executing queries with index / lookup joins where ordering needed to be maintained, CockroachDB's behavior could lead to increased query latency, potentially by several orders of magnitude. This bug was introduced in v22.2, and is now fixed. +- Fixed a bug where `DROP CASCADE` would occasionally panic with an `un-dropped backref` message on partitioned tables. +- Reduced the duration of partitions in the gossip network when a node crashes. This eliminates false positives in the `ranges.unavailable` metric. diff --git a/src/current/_includes/releases/v23.1/v23.1.4.md b/src/current/_includes/releases/v23.1/v23.1.4.md index 9f528b9918d..f27324205bb 100644 --- a/src/current/_includes/releases/v23.1/v23.1.4.md +++ b/src/current/_includes/releases/v23.1/v23.1.4.md @@ -6,39 +6,39 @@ Release Date: June 20, 2023

Security updates

-- The new [`sql.auth.createrole_allows_grant_role_membership.enabled`]({% link v23.1/cluster-settings.md %}#setting-sql-auth-createrole-allows-grant-role-membership-enabled) cluster setting allows a user with the [`CREATEROLE` role option]({% link v23.1/create-user.md %}#role-options) to grant and revoke non-admin roles. This cluster setting defaults to `false`, but is expected to become the default behavior in the future. [#104445][#104445] +- The new [`sql.auth.createrole_allows_grant_role_membership.enabled`]({% link v23.1/cluster-settings.md %}#setting-sql-auth-createrole-allows-grant-role-membership-enabled) cluster setting allows a user with the [`CREATEROLE` role option]({% link v23.1/create-user.md %}#role-options) to grant and revoke non-admin roles. This cluster setting defaults to `false`, but is expected to become the default behavior in the future.

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

-- Fixed an initialization race condition in [changefeed schema feeds]({% link v23.1/changefeed-examples.md %}) that could cause a node to crash with a null pointer exception. [#104934][#104934] +- Fixed an initialization race condition in [changefeed schema feeds]({% link v23.1/changefeed-examples.md %}) that could cause a node to crash with a null pointer exception.

SQL language changes

-- Users with [`MODIFYSQLCLUSTERSETTING`](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges) can now view only `sql.defaults` [cluster settings]({% link v23.1/cluster-settings.md %}) instead of all cluster settings. [#104542][#104542] +- Users with [`MODIFYSQLCLUSTERSETTING`](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges) can now view only `sql.defaults` [cluster settings]({% link v23.1/cluster-settings.md %}) instead of all cluster settings.

Operational changes

-- The [`debug.zip`]({% link v23.1/cockroach-debug-zip.md %}) archive now contains the files formerly located at `nodes/*/ranges/*.json` in one file per node, `nodes/*/ranges.json`. [#104248][#104248] -- The `http-defaults` and `http-servers` sections of the [log config]({% link v23.1/configure-logs.md %}) will now accept a `headers` field containing a map of key-value string pairs which will comprise custom HTTP headers appended to every request. Additionally, a `compression` value can now be set to `gzip` or `none` to select a compression method for the HTTP request body. By default, `gzip` is selected. Previous functionality did not compress by default. [#104814][#104814] +- The [`debug.zip`]({% link v23.1/cockroach-debug-zip.md %}) archive now contains the files formerly located at `nodes/*/ranges/*.json` in one file per node, `nodes/*/ranges.json`. +- The `http-defaults` and `http-servers` sections of the [log config]({% link v23.1/configure-logs.md %}) will now accept a `headers` field containing a map of key-value string pairs which will comprise custom HTTP headers appended to every request. Additionally, a `compression` value can now be set to `gzip` or `none` to select a compression method for the HTTP request body. By default, `gzip` is selected. Previous functionality did not compress by default.

Command-line changes

-- The new log config option [`buffering`]({% link v23.1/configure-logs.md %}#log-buffering-for-network-sinks) allows you to [format buffer output as JSON arrays]({% link v23.1/configure-logs.md %}#file-logging-format). This is useful for APIs that consume JSON arrays, such as the Datadog logs API. [#104790][#104790] +- The new log config option [`buffering`]({% link v23.1/configure-logs.md %}#log-buffering-for-network-sinks) allows you to [format buffer output as JSON arrays]({% link v23.1/configure-logs.md %}#file-logging-format). This is useful for APIs that consume JSON arrays, such as the Datadog logs API.

DB Console changes

-- The DB Console overview page now displays a warning when all nodes are running on a new version but the cluster upgrade has not been finalized. [#104874][#104874] -- The histogram window merge calculation now interpolates quantile values more accurately, and [**Metrics** charts]({% link v23.1/ui-overview.md %}#metrics) in the DB Console are smoother and more accurate. [#104815][#104815] +- The DB Console overview page now displays a warning when all nodes are running on a new version but the cluster upgrade has not been finalized. +- The histogram window merge calculation now interpolates quantile values more accurately, and [**Metrics** charts]({% link v23.1/ui-overview.md %}#metrics) in the DB Console are smoother and more accurate.

Bug fixes

-- Fixed a bug where a transaction retry could miss job rows during the backfill of the [**Jobs** table]({% link v23.1/ui-jobs-page.md %}#jobs-table). [#104757][#104757] -- Fixed a bug where admin or root user privileges were erroneously required to use [`SHOW SYSTEM GRANTS`]({% link v23.1/show-system-grants.md %}). [#104732][#104732] -- Fixed a bug that prevented display of the column selector on the [**Jobs** page]({% link v23.1/ui-jobs-page.md %}). [#104738][#104738] -- Fixed a bug where an invalid split could crash and prevent restarts of nodes that hold a replica for the right-hand side. [#104850][#104850] -- Fixed the `debug recover make-plan` command to ignore partial range metadata when the metadata can't be fully read, and instead rely solely on replica info from storage to produce the recovery plan. [#104774][#104774] +- Fixed a bug where a transaction retry could miss job rows during the backfill of the [**Jobs** table]({% link v23.1/ui-jobs-page.md %}#jobs-table). +- Fixed a bug where admin or root user privileges were erroneously required to use [`SHOW SYSTEM GRANTS`]({% link v23.1/show-system-grants.md %}). +- Fixed a bug that prevented display of the column selector on the [**Jobs** page]({% link v23.1/ui-jobs-page.md %}). +- Fixed a bug where an invalid split could crash and prevent restarts of nodes that hold a replica for the right-hand side. +- Fixed the `debug recover make-plan` command to ignore partial range metadata when the metadata can't be fully read, and instead rely solely on replica info from storage to produce the recovery plan. - Fixed a metric bug that could cause volumes such as RAID logical volumes to be counted twice.[#104806][#104806] -- Fixed a bug in `upstream etcd-io/raft` which could cause an unlimited amount of log to be loaded into memory. This could cause a node to crash with an out-of-memory (OOM) exception. The log scan now has a limited memory footprint. [#104968][#104968] +- Fixed a bug in `upstream etcd-io/raft` which could cause an unlimited amount of log to be loaded into memory. This could cause a node to crash with an out-of-memory (OOM) exception. The log scan now has a limited memory footprint.
@@ -47,20 +47,3 @@ Release Date: June 20, 2023 This release includes 53 merged PRs by 30 authors.
- -[#104248]: https://github.com/cockroachdb/cockroach/pull/104248 -[#104445]: https://github.com/cockroachdb/cockroach/pull/104445 -[#104542]: https://github.com/cockroachdb/cockroach/pull/104542 -[#104732]: https://github.com/cockroachdb/cockroach/pull/104732 -[#104738]: https://github.com/cockroachdb/cockroach/pull/104738 -[#104757]: https://github.com/cockroachdb/cockroach/pull/104757 -[#104774]: https://github.com/cockroachdb/cockroach/pull/104774 -[#104790]: https://github.com/cockroachdb/cockroach/pull/104790 -[#104806]: https://github.com/cockroachdb/cockroach/pull/104806 -[#104814]: https://github.com/cockroachdb/cockroach/pull/104814 -[#104815]: https://github.com/cockroachdb/cockroach/pull/104815 -[#104819]: https://github.com/cockroachdb/cockroach/pull/104819 -[#104850]: https://github.com/cockroachdb/cockroach/pull/104850 -[#104874]: https://github.com/cockroachdb/cockroach/pull/104874 -[#104934]: https://github.com/cockroachdb/cockroach/pull/104934 -[#104968]: https://github.com/cockroachdb/cockroach/pull/104968 diff --git a/src/current/_includes/releases/v23.1/v23.1.5.md b/src/current/_includes/releases/v23.1/v23.1.5.md index f737af77996..06dc715483d 100644 --- a/src/current/_includes/releases/v23.1/v23.1.5.md +++ b/src/current/_includes/releases/v23.1/v23.1.5.md @@ -6,53 +6,53 @@ Release Date: July 5, 2023

Security updates

-- The full set of TLS ciphers that was present in v22.1 have been included in the existing cipher suites list, which can be enabled with the `COCKROACH_TLS_ENABLE_OLD_CIPHER_SUITES` environment variable. [#105370][#105370] +- The full set of TLS ciphers that was present in v22.1 have been included in the existing cipher suites list, which can be enabled with the `COCKROACH_TLS_ENABLE_OLD_CIPHER_SUITES` environment variable.

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

-- Added new [cluster settings]({% link v23.1/cluster-settings.md %}) in the `server.oidc_authentication.generate_cluster_sso_token` namespace that support using OIDC to generate a [JWT auth token for cluster SSO]({% link v23.1/sso-sql.md %}). [#105643][#105643] +- Added new [cluster settings]({% link v23.1/cluster-settings.md %}) in the `server.oidc_authentication.generate_cluster_sso_token` namespace that support using OIDC to generate a [JWT auth token for cluster SSO]({% link v23.1/sso-sql.md %}).

SQL language changes

-- Improved the inline documentation and error messages related to [`SHOW RANGES`]({% link v23.1/show-ranges.md %}). [#105278][#105278] -- Inbound [foreign keys]({% link v23.1/foreign-key.md %}) on TTL tables are now allowed. [#105341][#105341] -- Added the columns `default_value` and `origin` ( with the values `default`, `override`, `external-override`) to the [`SHOW CLUSTER SETTING`]({% link v23.1/show-cluster-setting.md %}) command. [#105452][#105452] -- Added the `VIEWACTIVITY` and `VIEWACTIVITYREDACTED` [system privileges](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges) for the `crdb_internal.cluster_queries` and `crdb_internal.node_queries` [tables]({% link v23.1/crdb-internal.md %}). [#105467][#105467] -- Fixed the error message to be more understandable when attempting to create [UDFs]({% link v23.1/user-defined-functions.md %}) under a virtual or temporary schema. [#105627][#105627] +- Improved the inline documentation and error messages related to [`SHOW RANGES`]({% link v23.1/show-ranges.md %}). +- Inbound [foreign keys]({% link v23.1/foreign-key.md %}) on TTL tables are now allowed. +- Added the columns `default_value` and `origin` ( with the values `default`, `override`, `external-override`) to the [`SHOW CLUSTER SETTING`]({% link v23.1/show-cluster-setting.md %}) command. +- Added the `VIEWACTIVITY` and `VIEWACTIVITYREDACTED` [system privileges](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges) for the `crdb_internal.cluster_queries` and `crdb_internal.node_queries` [tables]({% link v23.1/crdb-internal.md %}). +- Fixed the error message to be more understandable when attempting to create [UDFs]({% link v23.1/user-defined-functions.md %}) under a virtual or temporary schema.

Command-line changes

-- Running [`cockroch node decommission `]({% link v23.1/cockroach-node.md %}#node-decommission) for a node that has already been decommissioned will now exit with code 0, as had been the case in CockroachDB versions prior to v23.1.0. [#103933][#103933] +- Running [`cockroch node decommission `]({% link v23.1/cockroach-node.md %}#node-decommission) for a node that has already been decommissioned will now exit with code 0, as had been the case in CockroachDB versions prior to v23.1.0.

DB Console changes

-- The [**Range Report** page]({% link v23.1/ui-hot-ranges-page.md %}#range-report) (route `/reports/range/:rangeID`) shows the **Hot Ranges** menu item as highlighted in the left-side menu. The back button in the **Range Report** page redirects back to the **Hot Ranges** page. [#104980][#104980] -- Added description to the tooltip for the `Idle` status only for the Active Transactions view. Excluded `Idle` status filter option for the Active Statements view. [#105062][#105062] +- The [**Range Report** page]({% link v23.1/ui-hot-ranges-page.md %}#range-report) (route `/reports/range/:rangeID`) shows the **Hot Ranges** menu item as highlighted in the left-side menu. The back button in the **Range Report** page redirects back to the **Hot Ranges** page. +- Added description to the tooltip for the `Idle` status only for the Active Transactions view. Excluded `Idle` status filter option for the Active Statements view.

Bug fixes

-- Added more precision to small percentage values on the percentage bars on the DB Console. [#105078][#105078] -- Fixed a crash when using `DurationToNumber` with empty duration object on SQL Activity tables. [#105152][#105152] -- `SpanStats` is no longer subject to stale information, and should be considered authoritative. [#105000][#105000] -- Fixed a bug in MuxRangefeed implementation that may cause MuxRangefeed to become stuck if enough ranges encountered certain error concurrently. [#105186][#105186] -- [`SHOW CHANGEFEED JOBS`]({% link v23.1/show-jobs.md %}) no longer fails on v22.2 and v23.1 mixed-version clusters. [#105008][#105008] -- [`GRANT SYSTEM ALL ...`]({% link v23.1/grant.md %}) no longer causes the grantee to be unable to log in. This was due to a bug where `ALL` would include the `NOSQLLOGIN` [system privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges). Since `NOSQLLOGIN` is the only "negative" privilege, it is now excluded from the `ALL` shorthand, and must be granted explicitly in order to restrict logins. [#105080][#105080] -- CockroachDB previously could encounter `zero transaction timestamp in EvalContext` when evaluating the [`COPY FROM`]({% link v23.1/copy.md %}) command. The bug was introduced in v23.1.0 and is now fixed. [#105295][#105295] -- Fixed the data fetching for the **Database** and **Table Details** pages. Prior to this change, some databases/tables could be permanently stuck in a loading state, causing their corresponding page to permanently show a spinner. This change fixes the data fetching for these pages to ensure all databases and tables are loaded correctly. [#105315][#105315] -- Fixed a bug where [`INSERT .. ON CONFLICT .. DO UPDATE`]({% link v23.1/insert.md %}) queries incorrectly resulted in an "ambiguous column" error. The bug only presented if the target table had a computed column with an expression referencing a column with a `DEFAULT` value. [#105025][#105025] -- On the **SQL Statistics** pages, a transaction query is now available as long as the statement fingerprints associated with the transaction also exist in the payload. [#105318][#105318] -- Previously, CockroachDB would crash when evaluating [`CREATE TABLE .. AS or CREATE MATERIALIZED VIEW .. AS`]({% link v23.1/create-table.md %}) statements when the `AS` clause selected data from `crdb_internal.cluster_statement_statistics` or `crdb_internal.cluster_transaction_statistics` virtual tables. The bug has been present since at least v22.1 and is now fixed. [#105325][#105325] -- Fixed a source of mutex contention within the storage engine that could increase tail latencies on high-CPU, high-throughput deployments. [#105361][#105361] -- Fixed a bug where nodes could terminate with the following message: `server startup failed: cockroach server exited with error: ‹migration-job-find-already-completed›: key range id:X is unavailable: ‹failed to send RPC: no replica node information available via gossip for rX›`. [#104246][#104246] -- Previously, cross-database type references were allowed through `CREATE TABLE...AS` statements if the source table was from another database and any of its columns was of a user-defined type. This introduced a bug where the source table could be dropped and the type could not be found for the CTAS table. This commit disallows such CTAS as a fix. [#105621][#105621] -- CockroachDB can now automatically delete statistics for dropped tables from `system.table_statistics` table. However, out of caution, this mechanism is disabled by default on v23.1 releases. [#105479][#105479] -- Fixed a race condition that can occur when multiple SQL servers are created simultaneously, causing simultaneous writes to an unprotected global variable used to configure a CCL audit logging feature. [#105725][#105725] -- Previously, referencing a user-defined type in the body of a [user-defined function]({% link v23.1/user-defined-functions.md %}) would result in an error at the time of creating the function. This is now fixed. [#105617][#105617] -- CockroachDB now returns an error during [UDF]({% link v23.1/user-defined-functions.md %}) creation if an input argument has type `RECORD`. [#105735][#105735] +- Added more precision to small percentage values on the percentage bars on the DB Console. +- Fixed a crash when using `DurationToNumber` with empty duration object on SQL Activity tables. +- `SpanStats` is no longer subject to stale information, and should be considered authoritative. +- Fixed a bug in MuxRangefeed implementation that may cause MuxRangefeed to become stuck if enough ranges encountered certain error concurrently. +- [`SHOW CHANGEFEED JOBS`]({% link v23.1/show-jobs.md %}) no longer fails on v22.2 and v23.1 mixed-version clusters. +- [`GRANT SYSTEM ALL ...`]({% link v23.1/grant.md %}) no longer causes the grantee to be unable to log in. This was due to a bug where `ALL` would include the `NOSQLLOGIN` [system privilege](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#supported-privileges). Since `NOSQLLOGIN` is the only "negative" privilege, it is now excluded from the `ALL` shorthand, and must be granted explicitly in order to restrict logins. +- CockroachDB previously could encounter `zero transaction timestamp in EvalContext` when evaluating the [`COPY FROM`]({% link v23.1/copy.md %}) command. The bug was introduced in v23.1.0 and is now fixed. +- Fixed the data fetching for the **Database** and **Table Details** pages. Prior to this change, some databases/tables could be permanently stuck in a loading state, causing their corresponding page to permanently show a spinner. This change fixes the data fetching for these pages to ensure all databases and tables are loaded correctly. +- Fixed a bug where [`INSERT .. ON CONFLICT .. DO UPDATE`]({% link v23.1/insert.md %}) queries incorrectly resulted in an "ambiguous column" error. The bug only presented if the target table had a computed column with an expression referencing a column with a `DEFAULT` value. +- On the **SQL Statistics** pages, a transaction query is now available as long as the statement fingerprints associated with the transaction also exist in the payload. +- Previously, CockroachDB would crash when evaluating [`CREATE TABLE .. AS or CREATE MATERIALIZED VIEW .. AS`]({% link v23.1/create-table.md %}) statements when the `AS` clause selected data from `crdb_internal.cluster_statement_statistics` or `crdb_internal.cluster_transaction_statistics` virtual tables. The bug has been present since at least v22.1 and is now fixed. +- Fixed a source of mutex contention within the storage engine that could increase tail latencies on high-CPU, high-throughput deployments. +- Fixed a bug where nodes could terminate with the following message: `server startup failed: cockroach server exited with error: ‹migration-job-find-already-completed›: key range id:X is unavailable: ‹failed to send RPC: no replica node information available via gossip for rX›`. +- Previously, cross-database type references were allowed through `CREATE TABLE...AS` statements if the source table was from another database and any of its columns was of a user-defined type. This introduced a bug where the source table could be dropped and the type could not be found for the CTAS table. This commit disallows such CTAS as a fix. +- CockroachDB can now automatically delete statistics for dropped tables from `system.table_statistics` table. However, out of caution, this mechanism is disabled by default on v23.1 releases. +- Fixed a race condition that can occur when multiple SQL servers are created simultaneously, causing simultaneous writes to an unprotected global variable used to configure a CCL audit logging feature. +- Previously, referencing a user-defined type in the body of a [user-defined function]({% link v23.1/user-defined-functions.md %}) would result in an error at the time of creating the function. This is now fixed. +- CockroachDB now returns an error during [UDF]({% link v23.1/user-defined-functions.md %}) creation if an input argument has type `RECORD`.

Performance improvements

-- If the `sql.optimizer.uniqueness_checks_for_gen_random_uuid.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}) is disabled, the optimizer can now eliminate uniqueness checks for `STRING` and `BYTES` columns when the value is set to `gen_random_uuid()` (with an implicit or explicit cast to `STRING` or `BYTES`). If you still want the checks, you can set `sql.optimizer.uniqueness_checks_for_gen_random_uuid.enabled` to `true` (the default is `false`). [#105446][#105446] +- If the `sql.optimizer.uniqueness_checks_for_gen_random_uuid.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}) is disabled, the optimizer can now eliminate uniqueness checks for `STRING` and `BYTES` columns when the value is set to `gen_random_uuid()` (with an implicit or explicit cast to `STRING` or `BYTES`). If you still want the checks, you can set `sql.optimizer.uniqueness_checks_for_gen_random_uuid.enabled` to `true` (the default is `false`).
@@ -61,33 +61,3 @@ Release Date: July 5, 2023 This release includes 115 merged PRs by 44 authors.
- -[#103933]: https://github.com/cockroachdb/cockroach/pull/103933 -[#104246]: https://github.com/cockroachdb/cockroach/pull/104246 -[#104980]: https://github.com/cockroachdb/cockroach/pull/104980 -[#105000]: https://github.com/cockroachdb/cockroach/pull/105000 -[#105008]: https://github.com/cockroachdb/cockroach/pull/105008 -[#105025]: https://github.com/cockroachdb/cockroach/pull/105025 -[#105062]: https://github.com/cockroachdb/cockroach/pull/105062 -[#105078]: https://github.com/cockroachdb/cockroach/pull/105078 -[#105080]: https://github.com/cockroachdb/cockroach/pull/105080 -[#105152]: https://github.com/cockroachdb/cockroach/pull/105152 -[#105186]: https://github.com/cockroachdb/cockroach/pull/105186 -[#105278]: https://github.com/cockroachdb/cockroach/pull/105278 -[#105295]: https://github.com/cockroachdb/cockroach/pull/105295 -[#105315]: https://github.com/cockroachdb/cockroach/pull/105315 -[#105318]: https://github.com/cockroachdb/cockroach/pull/105318 -[#105325]: https://github.com/cockroachdb/cockroach/pull/105325 -[#105341]: https://github.com/cockroachdb/cockroach/pull/105341 -[#105361]: https://github.com/cockroachdb/cockroach/pull/105361 -[#105370]: https://github.com/cockroachdb/cockroach/pull/105370 -[#105446]: https://github.com/cockroachdb/cockroach/pull/105446 -[#105452]: https://github.com/cockroachdb/cockroach/pull/105452 -[#105467]: https://github.com/cockroachdb/cockroach/pull/105467 -[#105479]: https://github.com/cockroachdb/cockroach/pull/105479 -[#105617]: https://github.com/cockroachdb/cockroach/pull/105617 -[#105621]: https://github.com/cockroachdb/cockroach/pull/105621 -[#105627]: https://github.com/cockroachdb/cockroach/pull/105627 -[#105643]: https://github.com/cockroachdb/cockroach/pull/105643 -[#105725]: https://github.com/cockroachdb/cockroach/pull/105725 -[#105735]: https://github.com/cockroachdb/cockroach/pull/105735 diff --git a/src/current/_includes/releases/v23.1/v23.1.6.md b/src/current/_includes/releases/v23.1/v23.1.6.md index 56c000b932a..e971d337296 100644 --- a/src/current/_includes/releases/v23.1/v23.1.6.md +++ b/src/current/_includes/releases/v23.1/v23.1.6.md @@ -6,9 +6,9 @@ Release Date: July 24, 2023

Bug fixes

-- Fixed a bug in v23.1.5 where [debug zips]({% link v23.1/cockroach-debug-zip.md %}) were empty in the `crdb_internal.cluster_settings.txt` file. Debug zips now properly show the information from `cluster_settings`. [#107105][#107105] -- Fixed a bug where some primary indexes would incorrectly be treated internally as secondary indexes, which could cause schema change operations to fail. The bug could occur if [`ALTER PRIMARY KEY`]({% link v23.1/alter-table.md %}#alter-primary-key) was used on v21.1 or earlier, and the cluster was upgraded. [#106426][#106426] -- Extended the `cockroach debug doctor` to detect [indexes]({% link v23.1/indexes.md %}) which could potentially lose data by being dropped when a column is stored inside them and added a check inside [`DROP INDEX`]({% link v23.1/drop-index.md %}) to prevent dropping indexes with this problem to avoid data loss. [#106863][#106863] +- Fixed a bug in v23.1.5 where [debug zips]({% link v23.1/cockroach-debug-zip.md %}) were empty in the `crdb_internal.cluster_settings.txt` file. Debug zips now properly show the information from `cluster_settings`. +- Fixed a bug where some primary indexes would incorrectly be treated internally as secondary indexes, which could cause schema change operations to fail. The bug could occur if [`ALTER PRIMARY KEY`]({% link v23.1/alter-table.md %}#alter-primary-key) was used on v21.1 or earlier, and the cluster was upgraded. +- Extended the `cockroach debug doctor` to detect [indexes]({% link v23.1/indexes.md %}) which could potentially lose data by being dropped when a column is stored inside them and added a check inside [`DROP INDEX`]({% link v23.1/drop-index.md %}) to prevent dropping indexes with this problem to avoid data loss.
@@ -17,7 +17,3 @@ Release Date: July 24, 2023 This release includes 3 merged PRs by 15 authors.
- -[#106863]: https://github.com/cockroachdb/cockroach/pull/106863 -[#106426]: https://github.com/cockroachdb/cockroach/pull/106426 -[#107105]: https://github.com/cockroachdb/cockroach/pull/107105 diff --git a/src/current/_includes/releases/v23.1/v23.1.7.md b/src/current/_includes/releases/v23.1/v23.1.7.md index 116c3b86d81..08aec02e482 100644 --- a/src/current/_includes/releases/v23.1/v23.1.7.md +++ b/src/current/_includes/releases/v23.1/v23.1.7.md @@ -7,28 +7,28 @@ Release Date: July 31, 2023

SQL language changes

-- Added the `crdb_internal.reset_activity_tables` [built-in function]({% link v23.1/functions-and-operators.md %}) to allow users to reset the statistics in the `system.{statement|transaction}_activity` tables. Users require the [`admin` role](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#admin-role) to use this built-in function. [#106129][#106129] -- Added the `sql.telemetry.query_sampling.internal.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}), which is `false` by default. If set to `true`, internal app queries will be reported to [telemetry]({% link v23.1/logging.md %}#telemetry) when query sampling to telemetry is [enabled]({% link v23.1/configure-logs.md %}). [#107182][#107182] +- Added the `crdb_internal.reset_activity_tables` [built-in function]({% link v23.1/functions-and-operators.md %}) to allow users to reset the statistics in the `system.{statement|transaction}_activity` tables. Users require the [`admin` role](https://www.cockroachlabs.com/docs/v23.1/security-reference/authorization#admin-role) to use this built-in function. +- Added the `sql.telemetry.query_sampling.internal.enabled` [cluster setting]({% link v23.1/cluster-settings.md %}), which is `false` by default. If set to `true`, internal app queries will be reported to [telemetry]({% link v23.1/logging.md %}#telemetry) when query sampling to telemetry is [enabled]({% link v23.1/configure-logs.md %}).

DB Console changes

-- Added a timescale label to the [**Diagnostics** tab]({% link v23.1/ui-statements-page.md %}#diagnostics) of the [**Statement Details** page]({% link v23.1/ui-statements-page.md %}). The time window for the statement diagnostics is now displayed. [#107082][#107082] -- Increased the timeout duration for loading the [**Hot Ranges** page]({% link v23.1/ui-hot-ranges-page.md %}) to 30 minutes. [#107497][#107497] +- Added a timescale label to the [**Diagnostics** tab]({% link v23.1/ui-statements-page.md %}#diagnostics) of the [**Statement Details** page]({% link v23.1/ui-statements-page.md %}). The time window for the statement diagnostics is now displayed. +- Increased the timeout duration for loading the [**Hot Ranges** page]({% link v23.1/ui-hot-ranges-page.md %}) to 30 minutes.

Bug fixes

-- The **Regions/Nodes** column on the [**Database** and **Database Details** pages]({% link v23.1/ui-databases-page.md %}) will now render properly. This column displays for clusters with more than 1 node. [#105824][#105824] -- Fixed a bug where the [**Job Details** page]({% link v23.1/ui-jobs-page.md %}#job-details) would flicker between the job details and a loading animation while a job is still executing. [#106153][#106153] -- Fixed a bug where the [**Key Visualizer** page]({% link v23.1/ui-key-visualizer.md %}) would crash due to an invalid conversion to `int` error. [#106357][#106357] -- Fixed a bug that caused an infinite re-render on the [**Key Visualizer** page]({% link v23.1/ui-key-visualizer.md %}) when a custom time period was selected. [#106430][#106430] -- Fixed a bug on the **SQL Activity**, [**Statements** page]({% link v23.1/ui-statements-page.md %}) where the database filter would not return results even when statements existed for the selected database. This is now fixed so that selecting a database filter from the filters menu on the [**Statements** page]({% link v23.1/ui-statements-page.md %}) will function as expected. [#106434][#106434] -- Fixed a bug where the [**Metrics** page]({% link v23.1/ui-overview-dashboard.md %}) was not updating automatically on rolling window options. [#106766][#106766] -- Fixed a bug where [statement diagnostics]({% link v23.1/ui-statements-page.md %}#diagnostics) on the [**Statements** page]({% link v23.1/ui-statements-page.md %}) were not always showing. This is now fixed with statement diagnostics displaying for the correct time period. [#106766][#106766] -- Fixed a bug where the **Sort** dropdown on the [**Network Latency** page]({% link v23.1/ui-network-latency-page.md %}) would not persist the selected value because a page reload was triggered. [#107213][#107213] -- Fixed a bug where the index recommendation on the [**Insights** page]({% link v23.1/ui-insights-page.md %}) would use the fully qualified table name to create an index name, which would cause an error due to the invalid syntax. Indexes can now be created directly from the DB Console without encountering this error. [#107218][#107218] -- Fixed a bug where [changefeeds]({% link v23.1/change-data-capture-overview.md %}) would fail when upgrading to version [v23.1.5](#v23-1-5) because the job record did not have a `clusterID` field set. [#106399][#106399] -- Fixed a bug where `UPDATE`, `UPSERT`, `DELETE` statements running concurrently with [`ALTER TABLE..ADD COLUMN`]({% link v23.1/alter-table.md %}#add-column) of a virtual computed column on the same table would fail. [#107403][#107403] -- Fixed a bug where [SQL statistics compaction jobs]({% link v23.1/show-jobs.md %}#show-automatic-jobs) would fail. This is now fixed by reducing the contention on the `system.statement_statistics` table. [#107573][#107573] +- The **Regions/Nodes** column on the [**Database** and **Database Details** pages]({% link v23.1/ui-databases-page.md %}) will now render properly. This column displays for clusters with more than 1 node. +- Fixed a bug where the [**Job Details** page]({% link v23.1/ui-jobs-page.md %}#job-details) would flicker between the job details and a loading animation while a job is still executing. +- Fixed a bug where the [**Key Visualizer** page]({% link v23.1/ui-key-visualizer.md %}) would crash due to an invalid conversion to `int` error. +- Fixed a bug that caused an infinite re-render on the [**Key Visualizer** page]({% link v23.1/ui-key-visualizer.md %}) when a custom time period was selected. +- Fixed a bug on the **SQL Activity**, [**Statements** page]({% link v23.1/ui-statements-page.md %}) where the database filter would not return results even when statements existed for the selected database. This is now fixed so that selecting a database filter from the filters menu on the [**Statements** page]({% link v23.1/ui-statements-page.md %}) will function as expected. +- Fixed a bug where the [**Metrics** page]({% link v23.1/ui-overview-dashboard.md %}) was not updating automatically on rolling window options. +- Fixed a bug where [statement diagnostics]({% link v23.1/ui-statements-page.md %}#diagnostics) on the [**Statements** page]({% link v23.1/ui-statements-page.md %}) were not always showing. This is now fixed with statement diagnostics displaying for the correct time period. +- Fixed a bug where the **Sort** dropdown on the [**Network Latency** page]({% link v23.1/ui-network-latency-page.md %}) would not persist the selected value because a page reload was triggered. +- Fixed a bug where the index recommendation on the [**Insights** page]({% link v23.1/ui-insights-page.md %}) would use the fully qualified table name to create an index name, which would cause an error due to the invalid syntax. Indexes can now be created directly from the DB Console without encountering this error. +- Fixed a bug where [changefeeds]({% link v23.1/change-data-capture-overview.md %}) would fail when upgrading to version [v23.1.5](#v23-1-5) because the job record did not have a `clusterID` field set. +- Fixed a bug where `UPDATE`, `UPSERT`, `DELETE` statements running concurrently with [`ALTER TABLE..ADD COLUMN`]({% link v23.1/alter-table.md %}#add-column) of a virtual computed column on the same table would fail. +- Fixed a bug where [SQL statistics compaction jobs]({% link v23.1/show-jobs.md %}#show-automatic-jobs) would fail. This is now fixed by reducing the contention on the `system.statement_statistics` table. - Fixed a bug where running a [changefeed]({% link v23.2/change-data-capture-overview.md %}) that targets a table with a user-defined type column and with the [`envelope` option]({% link v23.2/create-changefeed.md %}#envelope) set to any value other than `wrapped` would cause a node panic due to a nil dereference. [#119746][119746]
@@ -38,21 +38,3 @@ Release Date: July 31, 2023 This release includes 16 merged PRs by 11 authors.
- -[#105824]: https://github.com/cockroachdb/cockroach/pull/105824 -[#105947]: https://github.com/cockroachdb/cockroach/pull/105947 -[#106129]: https://github.com/cockroachdb/cockroach/pull/106129 -[#106153]: https://github.com/cockroachdb/cockroach/pull/106153 -[#106357]: https://github.com/cockroachdb/cockroach/pull/106357 -[#106434]: https://github.com/cockroachdb/cockroach/pull/106434 -[#106430]: https://github.com/cockroachdb/cockroach/pull/106430 -[#106766]: https://github.com/cockroachdb/cockroach/pull/106766 -[#107082]: https://github.com/cockroachdb/cockroach/pull/107082 -[#107182]: https://github.com/cockroachdb/cockroach/pull/107182 -[#107213]: https://github.com/cockroachdb/cockroach/pull/107213 -[#107218]: https://github.com/cockroachdb/cockroach/pull/107213 -[#106399]: https://github.com/cockroachdb/cockroach/pull/106399 -[#107403]: https://github.com/cockroachdb/cockroach/pull/107403 -[#107497]: https://github.com/cockroachdb/cockroach/pull/107497 -[#107573]: https://github.com/cockroachdb/cockroach/pull/107573 -[#119746]: https://github.com/cockroachdb/cockroach/pull/119746 diff --git a/src/current/_includes/releases/v23.1/v23.1.8.md b/src/current/_includes/releases/v23.1/v23.1.8.md index 9bb4f784fdd..2ff8a42e527 100644 --- a/src/current/_includes/releases/v23.1/v23.1.8.md +++ b/src/current/_includes/releases/v23.1/v23.1.8.md @@ -15,12 +15,12 @@ Release Date: August 7, 2023 azure_client_secret: {MY_CLIENT_SECRET} ~~~ - Set the environment variable `COCKROACH_AZURE_APPLICATION_CREDENTIALS_FILE` to the path of the file. The implicit authentication method first attempts to authenticate using credentials in the file before attempting to authenticate using any other credentials specified in the [`DefaultAzureCredential` class](https://learn.microsoft.com/dotnet/api/azure.identity.defaultazurecredential?view=azure-dotnet), such as environment variables and Managed Identity. These credentials can also be used for [encrypted backups]({% link v23.1/take-and-restore-encrypted-backups.md %}#use-key-management-service). [#106688][#106688] + Set the environment variable `COCKROACH_AZURE_APPLICATION_CREDENTIALS_FILE` to the path of the file. The implicit authentication method first attempts to authenticate using credentials in the file before attempting to authenticate using any other credentials specified in the [`DefaultAzureCredential` class](https://learn.microsoft.com/dotnet/api/azure.identity.defaultazurecredential?view=azure-dotnet), such as environment variables and Managed Identity. These credentials can also be used for [encrypted backups]({% link v23.1/take-and-restore-encrypted-backups.md %}#use-key-management-service).

Bug fixes

-- Fixed a bug where [`DROP INDEX ... CASCADE`](../v23.1/drop-index.html) could drop unrelated [foreign key constraints](../v23.1/foreign-key.html). For example, if `DROP INDEX ... CASCADE` was executed on a unique index for a `Table A`, and if a `Table B` had a foreign key reference to `Table A`, unrelated outbound foreign key constraints on `Table B` would be dropped. [#107793][#107793] -- Fixed a bug that would result in corruption of [encrypted data at rest on a cluster node](../v23.1/security-reference/encryption.html#encryption-at-rest). If a node with this corrupted state was restarted, the node could fail to rejoin the cluster. If multiple nodes encountered this bug at the same time during roll out, the cluster could lose [quorum](../v23.1/architecture/replication-layer.html#overview). For more information, refer to [Technical Advisory 106617](https://www.cockroachlabs.com/docs/advisories/a106617). [#107277][#107277] +- Fixed a bug where [`DROP INDEX ... CASCADE`](../v23.1/drop-index.html) could drop unrelated [foreign key constraints](../v23.1/foreign-key.html). For example, if `DROP INDEX ... CASCADE` was executed on a unique index for a `Table A`, and if a `Table B` had a foreign key reference to `Table A`, unrelated outbound foreign key constraints on `Table B` would be dropped. +- Fixed a bug that would result in corruption of [encrypted data at rest on a cluster node](../v23.1/security-reference/encryption.html#encryption-at-rest). If a node with this corrupted state was restarted, the node could fail to rejoin the cluster. If multiple nodes encountered this bug at the same time during roll out, the cluster could lose [quorum](../v23.1/architecture/replication-layer.html#overview). For more information, refer to [Technical Advisory 106617](https://www.cockroachlabs.com/docs/advisories/a106617).
@@ -29,7 +29,3 @@ Release Date: August 7, 2023 This release includes 5 merged PRs by 5 authors.
- -[#106688]: https://github.com/cockroachdb/cockroach/pull/106688 -[#107793]: https://github.com/cockroachdb/cockroach/pull/107793 -[#107277]: https://github.com/cockroachdb/cockroach/pull/107277 diff --git a/src/current/_includes/releases/v23.1/v23.1.9.md b/src/current/_includes/releases/v23.1/v23.1.9.md index 0c93cdc147f..0c9bfe19c73 100644 --- a/src/current/_includes/releases/v23.1/v23.1.9.md +++ b/src/current/_includes/releases/v23.1/v23.1.9.md @@ -6,123 +6,123 @@ Release Date: September 7, 2023

General changes

-- All [cluster version upgrades](../v23.1/upgrade-cockroach-version.html) perform a [catalog](../v23.1/system-catalogs.html) health check and repair upgrade step before proceeding to other upgrade steps. [#105826][#105826] -- [Upgrading the cluster version](../v23.1/upgrade-cockroach-version.html) to a new release will not only check for descriptor and other [catalog](../v23.1/system-catalogs.html) corruptions, but will attempt to repair some of them on a best-effort basis. This should seamlessly get rid of all longstanding descriptor back-reference corruptions, which typically don't manifest themselves until a [schema change](../v23.1/online-schema-changes.html) or an upgrade are performed. [#106217][#106217] +- All [cluster version upgrades](../v23.1/upgrade-cockroach-version.html) perform a [catalog](../v23.1/system-catalogs.html) health check and repair upgrade step before proceeding to other upgrade steps. +- [Upgrading the cluster version](../v23.1/upgrade-cockroach-version.html) to a new release will not only check for descriptor and other [catalog](../v23.1/system-catalogs.html) corruptions, but will attempt to repair some of them on a best-effort basis. This should seamlessly get rid of all longstanding descriptor back-reference corruptions, which typically don't manifest themselves until a [schema change](../v23.1/online-schema-changes.html) or an upgrade are performed.

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

-- [Changefeeds](../v23.1/create-and-configure-changefeeds.html) should no longer fail when upgrading to [v23.1.5](../releases/v23.1.html#v23-1-5). [#106399][#106399] -- Fixed an issue where [changefeeds](../v23.1/create-changefeed.html) emitting to a cloud sink with compression could experience resource leakage (memory and goroutines) when experiencing transient errors. [#106857][#106857] -- Augmented the credentials lookup chain for the implicit authentication method in Azure storage and KMS to first look for credentials in a file before proceeding on to the rest of the chain specified in the `DefaultAzureCredential` class (env vars, Managed Identity, etc.). The path of this file is specified by the environment variable `COCKROACH_AZURE_APPLICATION_CREDENTIALS_FILE` and, if not empty, is expected to point to a file that provides the Azure Tenant ID, Client ID, and Client Secret that will be used to access the storage or KMS resource in the following YAML format: `azure_tenant_id: MY_TENANT_ID, azure_client_id: MY_CLIENT_ID, azure_client_secret: MY_CLIENT_SECRET ` [#106688][#106688] -- Fixed a rare [changefeed](../v23.1/create-changefeed.html) issue that was triggered when the parent database or types were dropped, and instead of exiting with a descriptive error message, the changefeed would observe the following opaque error instead: `value type is not BYTES: UNKNOWN`. [#107933][#107933] -- Fixed a potential deadlock when running [changefeeds](../v23.1/create-changefeed.html) with the `end_time` option set. [#108074][#108074] +- [Changefeeds](../v23.1/create-and-configure-changefeeds.html) should no longer fail when upgrading to [v23.1.5](../releases/v23.1.html#v23-1-5). +- Fixed an issue where [changefeeds](../v23.1/create-changefeed.html) emitting to a cloud sink with compression could experience resource leakage (memory and goroutines) when experiencing transient errors. +- Augmented the credentials lookup chain for the implicit authentication method in Azure storage and KMS to first look for credentials in a file before proceeding on to the rest of the chain specified in the `DefaultAzureCredential` class (env vars, Managed Identity, etc.). The path of this file is specified by the environment variable `COCKROACH_AZURE_APPLICATION_CREDENTIALS_FILE` and, if not empty, is expected to point to a file that provides the Azure Tenant ID, Client ID, and Client Secret that will be used to access the storage or KMS resource in the following YAML format: `azure_tenant_id: MY_TENANT_ID, azure_client_id: MY_CLIENT_ID, azure_client_secret: MY_CLIENT_SECRET ` +- Fixed a rare [changefeed](../v23.1/create-changefeed.html) issue that was triggered when the parent database or types were dropped, and instead of exiting with a descriptive error message, the changefeed would observe the following opaque error instead: `value type is not BYTES: UNKNOWN`. +- Fixed a potential deadlock when running [changefeeds](../v23.1/create-changefeed.html) with the `end_time` option set.

SQL language changes

-- Added a `crdb_internal.reset_activity_tables` [builtin function](../v23.1/functions-and-operators.html) to allow users to reset the [statistics](../v23.1/cost-based-optimizer.html#table-statistics) in the `system.statement_activity` and `system.transaction_activity` tables. Users require [`admin`](../v23.1/security-reference/authorization.html#admin-role) to use this builtin. [#106129][#106129] -- CockroachDB now reports [contention](../v23.1/performance-best-practices-overview.html#transaction-contention) time encountered while executing the mutation statements ([`INSERT`](../v23.1/insert.html), [`UPSERT`](../v23.1/upsert.html), [`UPDATE`](../v23.1/update.html), and [`DELETE`](../v23.1/delete.html)) when run via [`EXPLAIN ANALYZE`](../v23.1/explain-analyze.html). [#106432][#106432] -- Fixed a bug in [`COPY CSV WITH HEADER`](../v23.1/copy.html) that was first introduced in [v23.1](../releases/v23.1.html). On previous versions of CockroachDB, a workaround is to disable [vectorized](../v23.1/vectorized-execution.html) `COPY` by setting the `vectorize` [session variable](../v23.1/set-vars.html#supported-variables) to `false` or to remove the header row from the `COPY` data. [#106967][#106967] -- Added a new boolean [cluster setting ](../v23.1/cluster-settings.html) `sql.telemetry.query_sampling.internal.enabled`. If `true`, internal app queries will be reported to telemetry when query sampling to telemetry is enabled. [#107182][#107182] -- The `SHOW QUERIES` and [`SHOW SESSIONS`](../v23.1/show-sessions.html) commands will now display timestamps using the session's timezone setting. [#108144][#108144] -- Added the [cluster setting](../v23.1/cluster-settings.html) `sql.stats.limit_table_size.enabled`, which controls whether or not we enforce the row limit set by the `sql.stats.persisted_rows.max` cluster setting in the `system.statement_statistics` and `system.transaction_statistics` tables. [#108913][#108913] -- Optimized the `sql-stats-compaction` [job](../v23.1/show-jobs.html)'s [delete query](../v23.1/delete.html) to avoid a [full scan](../v23.1/sql-tuning-with-explain.html#issue-full-table-scans). This helps avoid a [transaction retry error](../v23.1/common-errors.html#restart-transaction) which can cause the job to fail. [#108990][#108990] -- Introspection queries will now show the internal `node` user as the owner of tables in [`pg_catalog`](../v23.1/pg-catalog.html) and [`information_schema`](../v23.1/information-schema.html). Previously, the owner was shown as `admin`, but that was inaccurate since users with [the `admin` role](../v23.1/security-reference/authorization.html#admin-role) could not modify these tables in any way. [#109736][#109736] +- Added a `crdb_internal.reset_activity_tables` [builtin function](../v23.1/functions-and-operators.html) to allow users to reset the [statistics](../v23.1/cost-based-optimizer.html#table-statistics) in the `system.statement_activity` and `system.transaction_activity` tables. Users require [`admin`](../v23.1/security-reference/authorization.html#admin-role) to use this builtin. +- CockroachDB now reports [contention](../v23.1/performance-best-practices-overview.html#transaction-contention) time encountered while executing the mutation statements ([`INSERT`](../v23.1/insert.html), [`UPSERT`](../v23.1/upsert.html), [`UPDATE`](../v23.1/update.html), and [`DELETE`](../v23.1/delete.html)) when run via [`EXPLAIN ANALYZE`](../v23.1/explain-analyze.html). +- Fixed a bug in [`COPY CSV WITH HEADER`](../v23.1/copy.html) that was first introduced in [v23.1](../releases/v23.1.html). On previous versions of CockroachDB, a workaround is to disable [vectorized](../v23.1/vectorized-execution.html) `COPY` by setting the `vectorize` [session variable](../v23.1/set-vars.html#supported-variables) to `false` or to remove the header row from the `COPY` data. +- Added a new boolean [cluster setting ](../v23.1/cluster-settings.html) `sql.telemetry.query_sampling.internal.enabled`. If `true`, internal app queries will be reported to telemetry when query sampling to telemetry is enabled. +- The `SHOW QUERIES` and [`SHOW SESSIONS`](../v23.1/show-sessions.html) commands will now display timestamps using the session's timezone setting. +- Added the [cluster setting](../v23.1/cluster-settings.html) `sql.stats.limit_table_size.enabled`, which controls whether or not we enforce the row limit set by the `sql.stats.persisted_rows.max` cluster setting in the `system.statement_statistics` and `system.transaction_statistics` tables. +- Optimized the `sql-stats-compaction` [job](../v23.1/show-jobs.html)'s [delete query](../v23.1/delete.html) to avoid a [full scan](../v23.1/sql-tuning-with-explain.html#issue-full-table-scans). This helps avoid a [transaction retry error](../v23.1/common-errors.html#restart-transaction) which can cause the job to fail. +- Introspection queries will now show the internal `node` user as the owner of tables in [`pg_catalog`](../v23.1/pg-catalog.html) and [`information_schema`](../v23.1/information-schema.html). Previously, the owner was shown as `admin`, but that was inaccurate since users with [the `admin` role](../v23.1/security-reference/authorization.html#admin-role) could not modify these tables in any way.

Operational changes

-- Added two new [metrics](../v23.1/metrics.html) to monitor [lease range preference](../v23.1/configure-replication-zones.html#lease_preferences) conformance: `leases.preferences.violating` indicates the number of valid leases a [store](../v23.1/cockroach-start.html#store) owns that satisfy none of the preferences applied; `leases.preferences.less-preferred` indicates the number of valid leases a store owns that satisfy some of the preferences applied, but not the first preference. [#107622][#107622] -- Added the `kv.enqueue_in_replicate_queue_on_span_config_update.enabled` [cluster setting.](../v23.1/cluster-settings.html). When set to `true`, [stores](../v23.1/cockroach-start.html#store) in the cluster will enqueue [replicas](../v23.1/architecture/overview.html#architecture-replica) for [replication changes](../v23.1/architecture/replication-layer.html) upon receiving config updates which could affect the replica. This setting is off by default. Enabling this setting speeds up how quickly config-triggered replication changes begin, but adds additional CPU overhead. The overhead scales with the number of leaseholders. [#108816][#108816] -- The RPC dial and heartbeat timeouts can now be configured via the following environment variables: `COCKROACH_RPC_DIAL_TIMEOUT`, which defaults to 2x the value of `COCKROACH_NETWORK_TIMEOUT`; `COCKROACH_RPC_HEARTBEAT_TIMEOUT`, which defaults to 3x `COCKROACH_NETWORK_TIMEOUT`. This allows configuring these values independently of [`COCKROACH_NETWORK_TIMEOUT`](../v23.1/architecture/distribution-layer.html#grpc), which defaults to {{site.data.constants.cockroach_network_timeout}}. [#109359][#109359] -- The default gRPC server-side send timeout has been increased from 2 seconds to 4 seconds (that is, from 1x to 2x the default value of [`COCKROACH_NETWORK_TIMEOUT`](../v23.1/architecture/distribution-layer.html#grpc)), to avoid spurious connection failures in certain scenarios. This can be controlled via the new environment variable `COCKROACH_RPC_SERVER_TIMEOUT`. [#109621][#109621] -- Added a new gauge [metric](../v23.1/metrics.html) `sql.schema.invalid_objects`. This gauge is periodically updated based on the schedule set by the `sql.schema.telemetry.recurrence` [cluster setting](../v23.1/cluster-settings.html). When the metric is updated, it counts the number of schema objects ([tables](../v23.1/create-table.html), [types](../v23.1/create-type.html), [schemas](../v23.1/create-schema.html), [databases](../v23.1/create-database.html), and [functions](../v23.1/user-defined-functions.html)) that are in an invalid state according to CockroachDB's internal validation checks. This metric is expected to be zero (`0`) in a healthy cluster. If it is not zero, it indicates that there is a problem that must be repaired. [#109739][#109739] -- The [cluster setting](../v23.1/cluster-settings.html) `kv.allocator.lease_rebalance_threshold` can now be used to control the minimum fraction away from the mean a [store's](../v23.1/cockroach-start.html#store) lease count before it is considered for lease transfers. The default setting is 0.05. [#105950][#105950] -- On Linux/ARM64, 16k page sizes are now used in jemalloc. This allows Linux/ARM64 users with 16k pages to run `cockroach`. [#107131][#107131] +- Added two new [metrics](../v23.1/metrics.html) to monitor [lease range preference](../v23.1/configure-replication-zones.html#lease_preferences) conformance: `leases.preferences.violating` indicates the number of valid leases a [store](../v23.1/cockroach-start.html#store) owns that satisfy none of the preferences applied; `leases.preferences.less-preferred` indicates the number of valid leases a store owns that satisfy some of the preferences applied, but not the first preference. +- Added the `kv.enqueue_in_replicate_queue_on_span_config_update.enabled` [cluster setting.](../v23.1/cluster-settings.html). When set to `true`, [stores](../v23.1/cockroach-start.html#store) in the cluster will enqueue [replicas](../v23.1/architecture/overview.html#architecture-replica) for [replication changes](../v23.1/architecture/replication-layer.html) upon receiving config updates which could affect the replica. This setting is off by default. Enabling this setting speeds up how quickly config-triggered replication changes begin, but adds additional CPU overhead. The overhead scales with the number of leaseholders. +- The RPC dial and heartbeat timeouts can now be configured via the following environment variables: `COCKROACH_RPC_DIAL_TIMEOUT`, which defaults to 2x the value of `COCKROACH_NETWORK_TIMEOUT`; `COCKROACH_RPC_HEARTBEAT_TIMEOUT`, which defaults to 3x `COCKROACH_NETWORK_TIMEOUT`. This allows configuring these values independently of [`COCKROACH_NETWORK_TIMEOUT`](../v23.1/architecture/distribution-layer.html#grpc), which defaults to {{site.data.constants.cockroach_network_timeout}}. +- The default gRPC server-side send timeout has been increased from 2 seconds to 4 seconds (that is, from 1x to 2x the default value of [`COCKROACH_NETWORK_TIMEOUT`](../v23.1/architecture/distribution-layer.html#grpc)), to avoid spurious connection failures in certain scenarios. This can be controlled via the new environment variable `COCKROACH_RPC_SERVER_TIMEOUT`. +- Added a new gauge [metric](../v23.1/metrics.html) `sql.schema.invalid_objects`. This gauge is periodically updated based on the schedule set by the `sql.schema.telemetry.recurrence` [cluster setting](../v23.1/cluster-settings.html). When the metric is updated, it counts the number of schema objects ([tables](../v23.1/create-table.html), [types](../v23.1/create-type.html), [schemas](../v23.1/create-schema.html), [databases](../v23.1/create-database.html), and [functions](../v23.1/user-defined-functions.html)) that are in an invalid state according to CockroachDB's internal validation checks. This metric is expected to be zero (`0`) in a healthy cluster. If it is not zero, it indicates that there is a problem that must be repaired. +- The [cluster setting](../v23.1/cluster-settings.html) `kv.allocator.lease_rebalance_threshold` can now be used to control the minimum fraction away from the mean a [store's](../v23.1/cockroach-start.html#store) lease count before it is considered for lease transfers. The default setting is 0.05. +- On Linux/ARM64, 16k page sizes are now used in jemalloc. This allows Linux/ARM64 users with 16k pages to run `cockroach`.

DB Console changes

-- The generic DB Console "unexpected error" message now includes details about the actual error, along with other context to make it easier to root cause. [#106404][#106404] -- Fixed a bug where the [job details page](../v23.1/ui-jobs-page.html) would flicker between the job details and a loading animation when a job was still executing. [#106153][#106153] -- Added a timescale label to the **Diagnostics** tab of the [Statement Details page](../v23.1/ui-statements-page.html). Users are now able to see the time window for which the [statement diagnostics](../v23.1/explain-analyze.html#explain-analyze-debug) are displayed. [#107082][#107082] -- Fixed the options selection in the **Sort** dropdown on the [Network Latency page](../v23.1/ui-network-latency-page.html). [#107213][#107213] -- Search is performed on all ID fields of the **Transaction Executions** and **Statement Executions** views on the [Insights Page](../v23.1/ui-insights-page.html). [#107762][#107762] -- Enabled the `Now` option on the time picker that appears on several pages of the [DB Console](../v23.1/ui-overview.html). [#107837][#107837] +- The generic DB Console "unexpected error" message now includes details about the actual error, along with other context to make it easier to root cause. +- Fixed a bug where the [job details page](../v23.1/ui-jobs-page.html) would flicker between the job details and a loading animation when a job was still executing. +- Added a timescale label to the **Diagnostics** tab of the [Statement Details page](../v23.1/ui-statements-page.html). Users are now able to see the time window for which the [statement diagnostics](../v23.1/explain-analyze.html#explain-analyze-debug) are displayed. +- Fixed the options selection in the **Sort** dropdown on the [Network Latency page](../v23.1/ui-network-latency-page.html). +- Search is performed on all ID fields of the **Transaction Executions** and **Statement Executions** views on the [Insights Page](../v23.1/ui-insights-page.html). +- Enabled the `Now` option on the time picker that appears on several pages of the [DB Console](../v23.1/ui-overview.html).

Bug fixes

-- Fixed a bug where the **node** and **regions** columns on the [Databases Page](../v23.1/ui-databases-page.html) did not properly render. This column is shown for clusters with more than 1 node. [#105824][#105824] -- Fixed an internal error when using [`EXPLAIN (TYPES)`](../v23.1/explain.html#types-option) on a [`DELETE FROM ... USING ... RETURNING`](../v23.1/delete.html) statement. This error was introduced in v23.1.0. [#106196][#106196] -- Fixed a bug which manifested itself in error messages containing "failed to drop all of the relevant elements" when executing DDL statements with the declarative [schema changer](../v23.1/online-schema-changes.html). What this really means is that there's a concurrent schema change that is ongoing. Instead we now behave as expected and wait for it to finish. [#106286][#106286] -- Fixed a panic executing [`CREATE AS`](../v23.1/create-table-as.html) with `pg_catalog.pg_prepared_statements` as a source. For example: [`CREATE TABLE t AS SELECT * FROM pg_catalog.pg_prepared_statements`](../v23.1/create-table-as.html); [`CREATE MATERIALIZED VIEW v AS SELECT * FROM pg_catalog.pg_prepared_statements`](../v23.1/create-view.html). [#106274][#106274] -- Fixed a panic executing [`CREATE AS`](../v23.1/create-table-as.html) with `pg_catalog.cursors` as a source. For example: [`CREATE TABLE t AS SELECT * FROM pg_catalog.pg_cursors`](../v23.1/create-table-as.html); [`CREATE MATERIALIZED VIEW v AS SELECT * FROM pg_catalog.pg_cursors`](../v23.1/create-view.html). [#106274][#106274] -- Fixed a panic executing [`CREATE AS`](../v23.1/create-table-as.html) with `crdb_internal.create_statements` as a source. For example: [`CREATE TABLE t AS SELECT * FROM crdb_internal.create_statements`](../v23.1/create-table-as.html); [`CREATE MATERIALIZED VIEW v AS SELECT * FROM crdb_internal.create_statements`](../v23.1/create-view.html). [#106274][#106274] -- Fixed a bug where the [Key Visualizer](../v23.1/ui-key-visualizer.html) was crashing with an "invalid conversion to int" message. [#106357][#106357] -- Fixed a bug in the declarative [schema changer](../v23.1/online-schema-changes.html) where adding a [foreign key](../v23.1/foreign-key.html) or setting a column to `NOT NULL` with a non-existent column produced an assertion error instead of the proper pgcode. [#105719][#105719] -- [`SHOW SCHEMAS FROM db_name`](../v23.1/show-schemas.html) will no longer incorrectly show schemas from the current database when the current database has a schema named `db_name`. [#106199][#106199] -- Fixed a bug in [optimizer](../v23.1/cost-based-optimizer.html) row count estimates of a scan from a partitioned [partial index](../v23.1/partial-indexes.html), which may cause an underestimated row count or a panic if the row count goes to zero. [#106309][#106309] -- Fixed a bug where a [transaction retry](../v23.1/transactions.html#transaction-retries) during the backfill of the `job_type` column in the [jobs table](../v23.1/show-jobs.html) could result in some job records with no `job_type` value. [#106412][#106412] -- Fixed a bug where some [secondary indexes](../v23.1/indexes.html) would incorrectly be treated internally as [primary indexes](../v23.1/primary-key.html), which could cause some [schema change](../v23.1/online-schema-changes.html) operations to fail. The bug could occur if [`ALTER TABLE ... ALTER PRIMARY KEY`](../v23.1/alter-table.html#alter-primary-key) was used on CockroachDB [v21.1](../releases/v21.1.html) or earlier, and the cluster was upgraded. [#106426][#106426] -- In the [DB Console](../v23.1/ui-overview.html), selecting a database filter from the filters menu in the [SQL Activity Page](../v23.1/ui-overview.html#sql-activity) should function as expected. This fixes a bug where the filter would break and not show any results when the results were retrieved from the statement activity table instead of the persisted table. [#106434][#106434] -- The statement tag for [`SHOW SEQUENCES`](../v23.1/show-sequences.html) is now corrected to be `SHOW SEQUENCES` instead of [`SHOW SCHEMAS`](../v23.1/show-schemas.html). [#106797][#106797] -- Fixed a rare bug in which some uploads via [`cockroach userfile upload`](../v23.1/cockroach-userfile-upload.html) would silently upload incorrect data. [#106698][#106698] -- Under prolonged unavailability (such as loss of [quorum](../v23.1/architecture/overview.html#architecture-overview-consensus)), affected [ranges](../v23.1/architecture/overview.html#architecture-range) would exhibit [Raft log](../v23.1/architecture/replication-layer.html#raft-logs) growth that was quadratic as a function of the duration of the outage. Now this growth is approximately linear instead. [#106054][#106054] -- Fixed a bug on the [**Metrics**](../v23.1/metrics.html) page that was causing it to not update automatically on rolling window options. [#106766][#106766] -- Blocked dropping of [indexes](../v23.1/indexes.html) impacted by [Technical Advisory 99561](../advisories/a99561.html) if dropping those indexes could cause data loss to occur. [#106863][#106863] -- [Debug zips](../v23.1/cockroach-debug-zip.html) are now properly showing the information from [`crdb_internal.cluster_settings`](../v23.1/crdb-internal.html). The file `crdb_internal.cluster_settings.txt` in debug zips was empty due to this bug on CockroachDB [v23.1.5](../releases/v23.1.html#v23-1-5) (which was the only version affected). [#107105][#107105] -- A bug has been fixed that caused internal errors instead of user errors when queries contained labelled [tuples](../v23.1/scalar-expressions.html#tuple-constructors) with a different number of elements and labels, e.g., `(ROW(1, 2) AS a)`. This bug had been present since CockroachDB [v23.1.0](../releases/v23.1.html). [#106959][#106959] -- Fixed a failing [schema change](../v23.1/online-schema-changes.html) [job](../v23.1/show-jobs.html) when [CREATE TABLE AS](../v23.1/create-table-as.html) or [`CREATE MATERIALIZED VIEW AS`](../v23.1/create-view.html) sources from a `SHOW` command as in the following examples [#107226][#107226]: +- Fixed a bug where the **node** and **regions** columns on the [Databases Page](../v23.1/ui-databases-page.html) did not properly render. This column is shown for clusters with more than 1 node. +- Fixed an internal error when using [`EXPLAIN (TYPES)`](../v23.1/explain.html#types-option) on a [`DELETE FROM ... USING ... RETURNING`](../v23.1/delete.html) statement. This error was introduced in v23.1.0. +- Fixed a bug which manifested itself in error messages containing "failed to drop all of the relevant elements" when executing DDL statements with the declarative [schema changer](../v23.1/online-schema-changes.html). What this really means is that there's a concurrent schema change that is ongoing. Instead we now behave as expected and wait for it to finish. +- Fixed a panic executing [`CREATE AS`](../v23.1/create-table-as.html) with `pg_catalog.pg_prepared_statements` as a source. For example: [`CREATE TABLE t AS SELECT * FROM pg_catalog.pg_prepared_statements`](../v23.1/create-table-as.html); [`CREATE MATERIALIZED VIEW v AS SELECT * FROM pg_catalog.pg_prepared_statements`](../v23.1/create-view.html). +- Fixed a panic executing [`CREATE AS`](../v23.1/create-table-as.html) with `pg_catalog.cursors` as a source. For example: [`CREATE TABLE t AS SELECT * FROM pg_catalog.pg_cursors`](../v23.1/create-table-as.html); [`CREATE MATERIALIZED VIEW v AS SELECT * FROM pg_catalog.pg_cursors`](../v23.1/create-view.html). +- Fixed a panic executing [`CREATE AS`](../v23.1/create-table-as.html) with `crdb_internal.create_statements` as a source. For example: [`CREATE TABLE t AS SELECT * FROM crdb_internal.create_statements`](../v23.1/create-table-as.html); [`CREATE MATERIALIZED VIEW v AS SELECT * FROM crdb_internal.create_statements`](../v23.1/create-view.html). +- Fixed a bug where the [Key Visualizer](../v23.1/ui-key-visualizer.html) was crashing with an "invalid conversion to int" message. +- Fixed a bug in the declarative [schema changer](../v23.1/online-schema-changes.html) where adding a [foreign key](../v23.1/foreign-key.html) or setting a column to `NOT NULL` with a non-existent column produced an assertion error instead of the proper pgcode. +- [`SHOW SCHEMAS FROM db_name`](../v23.1/show-schemas.html) will no longer incorrectly show schemas from the current database when the current database has a schema named `db_name`. +- Fixed a bug in [optimizer](../v23.1/cost-based-optimizer.html) row count estimates of a scan from a partitioned [partial index](../v23.1/partial-indexes.html), which may cause an underestimated row count or a panic if the row count goes to zero. +- Fixed a bug where a [transaction retry](../v23.1/transactions.html#transaction-retries) during the backfill of the `job_type` column in the [jobs table](../v23.1/show-jobs.html) could result in some job records with no `job_type` value. +- Fixed a bug where some [secondary indexes](../v23.1/indexes.html) would incorrectly be treated internally as [primary indexes](../v23.1/primary-key.html), which could cause some [schema change](../v23.1/online-schema-changes.html) operations to fail. The bug could occur if [`ALTER TABLE ... ALTER PRIMARY KEY`](../v23.1/alter-table.html#alter-primary-key) was used on CockroachDB [v21.1](../releases/v21.1.html) or earlier, and the cluster was upgraded. +- In the [DB Console](../v23.1/ui-overview.html), selecting a database filter from the filters menu in the [SQL Activity Page](../v23.1/ui-overview.html#sql-activity) should function as expected. This fixes a bug where the filter would break and not show any results when the results were retrieved from the statement activity table instead of the persisted table. +- The statement tag for [`SHOW SEQUENCES`](../v23.1/show-sequences.html) is now corrected to be `SHOW SEQUENCES` instead of [`SHOW SCHEMAS`](../v23.1/show-schemas.html). +- Fixed a rare bug in which some uploads via [`cockroach userfile upload`](../v23.1/cockroach-userfile-upload.html) would silently upload incorrect data. +- Under prolonged unavailability (such as loss of [quorum](../v23.1/architecture/overview.html#architecture-overview-consensus)), affected [ranges](../v23.1/architecture/overview.html#architecture-range) would exhibit [Raft log](../v23.1/architecture/replication-layer.html#raft-logs) growth that was quadratic as a function of the duration of the outage. Now this growth is approximately linear instead. +- Fixed a bug on the [**Metrics**](../v23.1/metrics.html) page that was causing it to not update automatically on rolling window options. +- Blocked dropping of [indexes](../v23.1/indexes.html) impacted by [Technical Advisory 99561](../advisories/a99561.html) if dropping those indexes could cause data loss to occur. +- [Debug zips](../v23.1/cockroach-debug-zip.html) are now properly showing the information from [`crdb_internal.cluster_settings`](../v23.1/crdb-internal.html). The file `crdb_internal.cluster_settings.txt` in debug zips was empty due to this bug on CockroachDB [v23.1.5](../releases/v23.1.html#v23-1-5) (which was the only version affected). +- A bug has been fixed that caused internal errors instead of user errors when queries contained labelled [tuples](../v23.1/scalar-expressions.html#tuple-constructors) with a different number of elements and labels, e.g., `(ROW(1, 2) AS a)`. This bug had been present since CockroachDB [v23.1.0](../releases/v23.1.html). +- Fixed a failing [schema change](../v23.1/online-schema-changes.html) [job](../v23.1/show-jobs.html) when [CREATE TABLE AS](../v23.1/create-table-as.html) or [`CREATE MATERIALIZED VIEW AS`](../v23.1/create-view.html) sources from a `SHOW` command as in the following examples: - `CREATE TABLE t AS SELECT * FROM [SHOW CREATE TABLE tbl];` - `CREATE TABLE t AS SELECT * FROM [SHOW INDEXES FROM tbl];` - `CREATE TABLE t AS SELECT * FROM [SHOW COLUMNS FROM tbl];` - `CREATE TABLE t AS SELECT * FROM [SHOW CONSTRAINTS FROM tbl];` - `CREATE TABLE t AS SELECT * FROM [SHOW PARTITIONS FROM TABLE tbl];` - `CREATE TABLE t AS SELECT * FROM [SHOW PARTITIONS FROM INDEX tbl@tbl_pkey];` -- Index recommendations in the [DB Console](../v23.1/ui-overview.html) no longer use the fully qualified name of a table to create an index name, allowing the creating of [indexes](../v23.1/indexes.html) directly from the DB Console to work. [#107218][#107218] -- Fixed a bug where [`SHOW GRANTS`](../v23.1/show-grants.html) could fail if any objects were offline, which can happen during a [`RESTORE`](../v23.1/restore.html). [#107238][#107238] -- The `pg_get_serial_sequence` [builtin function](../v23.1/functions-and-operators.html) can now handle mixed-case names correctly. [#107372][#107372] -- Fixed a bug with the "SQL statement diagnostic request" [HTTP API](../v23.1/cluster-api.html) that would affect CockroachDB {{ site.data.products.serverless }} clusters was fixed. This bug had existed since CockroachDB [v22.1]({% link releases/v22.1.md %}). [#107385][#107385] -- Fixed a bug where under rare circumstances, a [replication](../v23.1/architecture/replication-layer.html) change could get stuck when proposed near lease/leadership changes (and likely under overload), and the [replica circuit breakers](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer#per-replica-circuit-breakers) could trip. [#107059][#107059] -- Fixed a bug in upstream `etcd-io/raft` which could result in pulling unlimited amount of logs into memory, and lead to out-of-memory errors. Now the log scan has a limited memory footprint. [#104483][#104483] -- Fixed a bug where, in rare circumstances, a [replication](https://cockroachlabs.com/docs/v23.1/architecture/replication-layer) could get stuck when proposed near lease or leadership changes, especially under overload, and the [replica circuit breakers]([../v23.1](https://cockroachlabs.com/docs/v23.1/architecture/replication-layer#per-replica-circuit-breakers) could trip. A previous attempt to fix this issue has been reverted in favor of this fix. [#106515][#106515] -- Fixed a bug in the SQL syntax for [`CREATE TABLE AS`](../v23.1/create-table-as.html) [schema change](../v23.1/online-schema-changes.html) [job](../v23.1/show-jobs.html) description. [#107404][#107404] -- Fixed an internal error in [`UPDATE`](../v23.1/update.html), [`UPSERT`](../v23.1/upsert.html), [`INSERT`](../v23.1/insert.html), or [`DELETE`](../v23.1/delete.html) statements run concurrently with [`ALTER TABLE ... ADD COLUMN`](../v23.1/alter-table.html#add-column) of a [virtual computed column](../v23.1/computed-columns.html#virtual-computed-columns) on the same table. [#107403][#107403] -- Fixed a bug that caused internal errors when using [user-defined types](../v23.1/create-type.html) in [views](../v23.1/views.html) and [user-defined functions](../v23.1/user-defined-functions.html) that have [subqueries](../v23.1/subqueries.html). This bug was present when using views since version v21.2. It was present when using user-defined functions since [v23.1](../releases/v23.1.html). [#106955][#106955] -- The timeout duration when loading the [**Hot Ranges** page](../v23.1/ui-hot-ranges-page.html) has been increased to 30 minutes. [#107497][#107497] -- Fixed the SQL syntax for [`CREATE MATERIALIZED VIEW AS`](../v23.1/views.html#materialized-views) [schema change](../v23.1/online-schema-changes.html) [job](../v23.1/show-jobs.html) descriptions. [#107471][#107471] -- Reduced [contention](../v23.1/performance-best-practices-overview.html#transaction-contention) on the `system.statement_statistics` table which has caused the [SQL statistics](../v23.1/cost-based-optimizer.html#table-statistics) compaction [job](../v23.1/show-jobs.html) to fail. [#107573][#107573] -- The `ST_ClosestPoint` [spatial function](../v23.1/functions-and-operators.html#spatial-functions) previously did not preserve the correct [SRID](../v23.1/srid-4326.html) when comparing two different [points](../v23.1/point.html). This is now resolved. [#107595][#107595] -- CockroachDB would previously crash when evaluating the `ST_AsEncodedPolyline` [builtin function](../v23.1/functions-and-operators.html#spatial-functions) on a [`GEOMETRYCOLLECTION` geometry type](../v23.1/geometrycollection.html). The bug was introduced before CockroachDB [v22.1](../releases/v22.1.html) and is now fixed. [#107901][#107901] -- Fixed a bug where dropping an [index](../v23.1/indexes.html) could end up failing or cleaning [foreign keys](../v23.1/foreign-key.html) (when `CASCADE` is specified) on other tables referencing the target table with this index. [#107793][#107793] -- Fixed a bug where CockroachDB would return an error when using [`SHOW RANGE ... FOR ROW ...`](../v23.1/show-range-for-row.html) in a [`CREATE TABLE AS`](../v23.1/create-table-as.html) construct. [#107603][#107603] -- Cloud buckets containing [backups](../v23.1/backup.html) can now be copied via AWS DataSync and other third-party services which insert empty objects with a trailing `/`. Previously, [restore](../v23.1/restore.html) would fail with the following error message: `read LATEST path: path does not contain a completed latest backup: NoSuchKey`. [#106235][#106235] -- Fixed a bug where [`DROP COLUMN CASCADE`](../v23.1/alter-table.html#drop-column) involving a [primary key](../v23.1/primary-key.html) column could end up hanging. [#107987][#107987] -- Fixed a nil pointer dereference caused by a race condition when using the `to_char` [builtin function](../v23.1/functions-and-operators.html). [#108079][#108079] -- Since [v22.2.0](../releases/v22.2.html), using a PTP clock device (enabled by the [`--clock-device` flag](../v23.1/cockroach-start.html#flags-clock-device)) would generate timestamps in the far future. It now generates the correct time. This could cause nodes to crash due to incorrect timestamps, or in the worst case irreversibly advance the cluster's [HLC clock](../v23.1/architecture/transaction-layer.html#time-and-hybrid-logical-clocks) into the far future. [#108113][#108113] -- Previously, CockroachDB, when planning expressions containing many sub-expressions (e.g., deeply-nested `AND` / `OR` structures), would use memory quadratic in the number of sub-expressions. In the worst cases (thousands of sub-expressions), this could lead to [OOMs](../v23.1/cluster-setup-troubleshooting.html#out-of-memory-oom-crash). The bug had been present since at least [v22.1](../releases/v22.1.html) and has now been fixed. [#107368][#107368] -- When losing a [leaseholder](../v23.1/architecture/overview.html#architecture-leaseholder) and using [lease preferences](../v23.1/configure-replication-zones.html#lease_preferences), the lease can be acquired by any other [replica](../v23.1/architecture/overview.html#architecture-replica) (regardless of lease preferences) in order to restore availability as soon as possible. The new leaseholder will now immediately check if it violates the lease preferences, and attempt to transfer the lease to a replica that satisfies the preferences if possible. [#107625][#107625] -- Fixed the [schema changer](../v23.1/online-schema-changes.html) [job](../v23.1/show-jobs.html) when [`CREATE AS`](../v23.1/create-table-as.html) sources from [`SHOW CREATE FUNCTION`](../v23.1/show-create.html#show-the-create-function-statement-for-a-function), e.g.: `CREATE TABLE t AS SELECT * FROM [SHOW CREATE FUNCTION f]`. [#108195][#108195] -- Added cancel checking to [index](../v23.1/indexes.html) constraint initialization code to allow queries to timeout during [query optimization](../v23.1/cost-based-optimizer.html) if analyzing predicates to constrain an index starts using too many resources. Example of setting a timeout using the [`statement_timeout` session setting](../v23.1/set-vars.html#statement-timeout): `SET statement_timeout='5.0s';` [#106942][#106942] -- Previously, CockroachDB could encounter an internal error `unexpected non-zero bytes limit for txnKVStreamer` when evaluating [locality-optimized](../v23.1/cost-based-optimizer.html#locality-optimized-search-in-multi-region-clusters) lookup [joins](../v23.1/joins.html) in case it had to perform the remote regions' lookup. The bug was introduced in [v22.2](../releases/v22.2.html) and is now fixed. A temporary workaround can be accomplished without upgrading by setting the `streamer_enabled` [session variable](../v23.1/session-variables.html): `SET streamer_enabled = false;`. [#108251][#108251] -- Fixed a spurious error `no data source matches prefix` that could occur during [planning for a query](../v23.1/cost-based-optimizer.html) with `DISTINCT ON` and [`ORDER BY ASC NULLS LAST`](../v23.1/order-by.html) or `ORDER BY DESC NULLS FIRST`. [#108303][#108303] -- Fixed an [optimizer](../v23.1/cost-based-optimizer.html) costing bug introduced in [v23.1](../releases/v23.1.html) that could cause a query involving two or more [joins](../v23.1/joins.html) with [`REGIONAL BY ROW`](../v23.1/table-localities.html#regional-by-row-tables) tables to not pick the most optimal [lookup joins](../v23.1/joins.html#lookup-joins). [#108308][#108308] -- Fixed an [optimizer](../v23.1/cost-based-optimizer.html) costing bug introduced in [v23.1](../releases/v23.1.html) that could cause a query whose best-cost query plan is a string of [lookup joins](../v23.1/joins.html#lookup-joins) with [`REGIONAL BY ROW`](../v23.1/table-localities.html#regional-by-row-tables) tables, one after the other in sequence, to not pick the most optimal join plan. [#108308][#108308] -- Previously, using [`IMPORT INTO`](../v23.1/import-into.html) for `DELIMITED DATA` or MySQL imports would error with `column ... does not exist` if it was importing into a [collated string](../v23.1/collate.html) column. This is now fixed. [#108286][#108286] -- Fixed a bug introduced in [v23.1](../releases/v23.1.html) that could cause the precision of some values to be incorrectly truncated for a query with a correlated [subquery](../v23.1/subqueries.html) and an equality between a column from the subquery and the outer query. This applies to types that are "equivalent" but have different precision levels, e.g., [`DECIMAL(10, 0)`](../v23.1/decimal.html) vs `DECIMAL(10, 2)` or `NAME` vs [`CHAR`](../v23.1/string.html). [#108198][#108198] -- Fixed a bug where [`BEGIN`](../v23.1/begin-transaction.html), [`COMMIT`](../v23.1/commit-transaction.html), [`SET`](../v23.1/set-vars.html), [`ROLLBACK`](../v23.1/rollback-transaction.html), and [`SAVEPOINT`](../v23.1/savepoint.html) statements would not be written to the [execution](../v23.1/logging-overview.html#logging-destinations) or [audit logs](../v23.1/sql-audit-logging.html). [#108411][#108411] -- Fixed a bug where a session migration performed by `SHOW TRANSFER STATE` would not handle prepared statements that used the [`AS OF SYSTEM TIME` clause](../v23.1/as-of-system-time.html). Users who encountered this bug would see errors such as `expected 1 or 0 for number of format codes, got N`. This bug was present since [v22.2.0](../releases/v22.2.html). [#108548][#108548] -- Fixed errors on the [**Sessions** page](../v23.1/ui-sessions-page.html) in the [DB Console](../v23.1/ui-overview.html) when a session's memory usage is zero bytes. [#108733][#108733] -- Fixed a bug introduced in [v22.1](../releases/v22.1.html) that could cause a [join](../v23.1/joins.html) to infinite-loop in rare cases when (1) the join filter is not an equality and (2) no columns from the left input are returned. [#108821][#108821] -- Fixed an issue with the full scan filter on the [**Statements** page](../v23.1/ui-statements-page.html) where the filter was always evaluating to false, even if a full scan had occurred. [#109254][#109254] -- Fixed a bug that could cause CPU usage to increase over time. [#109298][#109298] -- Fixed a bug that could cause some rows to be silently skipped during [`IMPORT`](../v23.1/import.html) when a node's import worker failed. [#109664][#109664] -- Fixed a bug in [geospatial](../v23.1/spatial-data-overview.html) queries, where a query filter of the form `ST_Distance(geog1, geog2) > constant`, or `ST_MaxDistance(geom1, geom2) > constant`, where the operator is one of `>`, `<`, `>=`, `<=`, or a filter of the form `ST_Distance(geog1, geog2, false) = 0` may mistakenly evaluate to `true` when one or both of the inputs is `NULL` or an empty [geography](../v23.1/architecture/glossary.html#geography) or [geometry](../v23.1/architecture/glossary.html#geometry). More rows could be returned by the query than expected. [#109395][#109395] -- Fixed an issue where a [split](../v23.1/architecture/distribution-layer.html#range-splits) can be called on an invalid key that's in the form of `someValidKey.Next()` during [restore](../v23.1/restore.html). This split key can land in the middle of a row with [column families](../v23.1/column-families.html), and thus result in failing SQL queries when querying the restored table. [#109778][#109778] -- Fixed an issue where a [split](../v23.1/architecture/distribution-layer.html#range-splits) can be called on an invalid key that's in the form of `someValidKey.Next()` during [restore](../v23.1/restore.html) with the [cluster setting](../v23.1/cluster-settings.html) `bulkio.restore.use_simple_import_spans=true`. This split key can land in the middle of a row with [column families](../v23.1/column-families.html), and thus result in failing SQL queries when querying the restored table. [#109939][#109939] -- Fixed a bug that caused a flood of requests to refresh [cluster settings](../v23.1/cluster-settings.html) on the [Advanced Debug page](../v23.1/ui-debug-pages.html#configuration). If a user would like to see the effect of a modified cluster setting in [DB Console](../v23.1/ui-overview.html), a page reload is now required. [#108125][#108125] +- Index recommendations in the [DB Console](../v23.1/ui-overview.html) no longer use the fully qualified name of a table to create an index name, allowing the creating of [indexes](../v23.1/indexes.html) directly from the DB Console to work. +- Fixed a bug where [`SHOW GRANTS`](../v23.1/show-grants.html) could fail if any objects were offline, which can happen during a [`RESTORE`](../v23.1/restore.html). +- The `pg_get_serial_sequence` [builtin function](../v23.1/functions-and-operators.html) can now handle mixed-case names correctly. +- Fixed a bug with the "SQL statement diagnostic request" [HTTP API](../v23.1/cluster-api.html) that would affect CockroachDB {{ site.data.products.serverless }} clusters was fixed. This bug had existed since CockroachDB [v22.1]({% link releases/v22.1.md %}). +- Fixed a bug where under rare circumstances, a [replication](../v23.1/architecture/replication-layer.html) change could get stuck when proposed near lease/leadership changes (and likely under overload), and the [replica circuit breakers](https://www.cockroachlabs.com/docs/v23.1/architecture/replication-layer#per-replica-circuit-breakers) could trip. +- Fixed a bug in upstream `etcd-io/raft` which could result in pulling unlimited amount of logs into memory, and lead to out-of-memory errors. Now the log scan has a limited memory footprint. +- Fixed a bug where, in rare circumstances, a [replication](https://cockroachlabs.com/docs/v23.1/architecture/replication-layer) could get stuck when proposed near lease or leadership changes, especially under overload, and the [replica circuit breakers]([../v23.1](https://cockroachlabs.com/docs/v23.1/architecture/replication-layer#per-replica-circuit-breakers) could trip. A previous attempt to fix this issue has been reverted in favor of this fix. +- Fixed a bug in the SQL syntax for [`CREATE TABLE AS`](../v23.1/create-table-as.html) [schema change](../v23.1/online-schema-changes.html) [job](../v23.1/show-jobs.html) description. +- Fixed an internal error in [`UPDATE`](../v23.1/update.html), [`UPSERT`](../v23.1/upsert.html), [`INSERT`](../v23.1/insert.html), or [`DELETE`](../v23.1/delete.html) statements run concurrently with [`ALTER TABLE ... ADD COLUMN`](../v23.1/alter-table.html#add-column) of a [virtual computed column](../v23.1/computed-columns.html#virtual-computed-columns) on the same table. +- Fixed a bug that caused internal errors when using [user-defined types](../v23.1/create-type.html) in [views](../v23.1/views.html) and [user-defined functions](../v23.1/user-defined-functions.html) that have [subqueries](../v23.1/subqueries.html). This bug was present when using views since version v21.2. It was present when using user-defined functions since [v23.1](../releases/v23.1.html). +- The timeout duration when loading the [**Hot Ranges** page](../v23.1/ui-hot-ranges-page.html) has been increased to 30 minutes. +- Fixed the SQL syntax for [`CREATE MATERIALIZED VIEW AS`](../v23.1/views.html#materialized-views) [schema change](../v23.1/online-schema-changes.html) [job](../v23.1/show-jobs.html) descriptions. +- Reduced [contention](../v23.1/performance-best-practices-overview.html#transaction-contention) on the `system.statement_statistics` table which has caused the [SQL statistics](../v23.1/cost-based-optimizer.html#table-statistics) compaction [job](../v23.1/show-jobs.html) to fail. +- The `ST_ClosestPoint` [spatial function](../v23.1/functions-and-operators.html#spatial-functions) previously did not preserve the correct [SRID](../v23.1/srid-4326.html) when comparing two different [points](../v23.1/point.html). This is now resolved. +- CockroachDB would previously crash when evaluating the `ST_AsEncodedPolyline` [builtin function](../v23.1/functions-and-operators.html#spatial-functions) on a [`GEOMETRYCOLLECTION` geometry type](../v23.1/geometrycollection.html). The bug was introduced before CockroachDB [v22.1](../releases/v22.1.html) and is now fixed. +- Fixed a bug where dropping an [index](../v23.1/indexes.html) could end up failing or cleaning [foreign keys](../v23.1/foreign-key.html) (when `CASCADE` is specified) on other tables referencing the target table with this index. +- Fixed a bug where CockroachDB would return an error when using [`SHOW RANGE ... FOR ROW ...`](../v23.1/show-range-for-row.html) in a [`CREATE TABLE AS`](../v23.1/create-table-as.html) construct. +- Cloud buckets containing [backups](../v23.1/backup.html) can now be copied via AWS DataSync and other third-party services which insert empty objects with a trailing `/`. Previously, [restore](../v23.1/restore.html) would fail with the following error message: `read LATEST path: path does not contain a completed latest backup: NoSuchKey`. +- Fixed a bug where [`DROP COLUMN CASCADE`](../v23.1/alter-table.html#drop-column) involving a [primary key](../v23.1/primary-key.html) column could end up hanging. +- Fixed a nil pointer dereference caused by a race condition when using the `to_char` [builtin function](../v23.1/functions-and-operators.html). +- Since [v22.2.0](../releases/v22.2.html), using a PTP clock device (enabled by the [`--clock-device` flag](../v23.1/cockroach-start.html#flags-clock-device)) would generate timestamps in the far future. It now generates the correct time. This could cause nodes to crash due to incorrect timestamps, or in the worst case irreversibly advance the cluster's [HLC clock](../v23.1/architecture/transaction-layer.html#time-and-hybrid-logical-clocks) into the far future. +- Previously, CockroachDB, when planning expressions containing many sub-expressions (e.g., deeply-nested `AND` / `OR` structures), would use memory quadratic in the number of sub-expressions. In the worst cases (thousands of sub-expressions), this could lead to [OOMs](../v23.1/cluster-setup-troubleshooting.html#out-of-memory-oom-crash). The bug had been present since at least [v22.1](../releases/v22.1.html) and has now been fixed. +- When losing a [leaseholder](../v23.1/architecture/overview.html#architecture-leaseholder) and using [lease preferences](../v23.1/configure-replication-zones.html#lease_preferences), the lease can be acquired by any other [replica](../v23.1/architecture/overview.html#architecture-replica) (regardless of lease preferences) in order to restore availability as soon as possible. The new leaseholder will now immediately check if it violates the lease preferences, and attempt to transfer the lease to a replica that satisfies the preferences if possible. +- Fixed the [schema changer](../v23.1/online-schema-changes.html) [job](../v23.1/show-jobs.html) when [`CREATE AS`](../v23.1/create-table-as.html) sources from [`SHOW CREATE FUNCTION`](../v23.1/show-create.html#show-the-create-function-statement-for-a-function), e.g.: `CREATE TABLE t AS SELECT * FROM [SHOW CREATE FUNCTION f]`. +- Added cancel checking to [index](../v23.1/indexes.html) constraint initialization code to allow queries to timeout during [query optimization](../v23.1/cost-based-optimizer.html) if analyzing predicates to constrain an index starts using too many resources. Example of setting a timeout using the [`statement_timeout` session setting](../v23.1/set-vars.html#statement-timeout): `SET statement_timeout='5.0s';` +- Previously, CockroachDB could encounter an internal error `unexpected non-zero bytes limit for txnKVStreamer` when evaluating [locality-optimized](../v23.1/cost-based-optimizer.html#locality-optimized-search-in-multi-region-clusters) lookup [joins](../v23.1/joins.html) in case it had to perform the remote regions' lookup. The bug was introduced in [v22.2](../releases/v22.2.html) and is now fixed. A temporary workaround can be accomplished without upgrading by setting the `streamer_enabled` [session variable](../v23.1/session-variables.html): `SET streamer_enabled = false;`. +- Fixed a spurious error `no data source matches prefix` that could occur during [planning for a query](../v23.1/cost-based-optimizer.html) with `DISTINCT ON` and [`ORDER BY ASC NULLS LAST`](../v23.1/order-by.html) or `ORDER BY DESC NULLS FIRST`. +- Fixed an [optimizer](../v23.1/cost-based-optimizer.html) costing bug introduced in [v23.1](../releases/v23.1.html) that could cause a query involving two or more [joins](../v23.1/joins.html) with [`REGIONAL BY ROW`](../v23.1/table-localities.html#regional-by-row-tables) tables to not pick the most optimal [lookup joins](../v23.1/joins.html#lookup-joins). +- Fixed an [optimizer](../v23.1/cost-based-optimizer.html) costing bug introduced in [v23.1](../releases/v23.1.html) that could cause a query whose best-cost query plan is a string of [lookup joins](../v23.1/joins.html#lookup-joins) with [`REGIONAL BY ROW`](../v23.1/table-localities.html#regional-by-row-tables) tables, one after the other in sequence, to not pick the most optimal join plan. +- Previously, using [`IMPORT INTO`](../v23.1/import-into.html) for `DELIMITED DATA` or MySQL imports would error with `column ... does not exist` if it was importing into a [collated string](../v23.1/collate.html) column. This is now fixed. +- Fixed a bug introduced in [v23.1](../releases/v23.1.html) that could cause the precision of some values to be incorrectly truncated for a query with a correlated [subquery](../v23.1/subqueries.html) and an equality between a column from the subquery and the outer query. This applies to types that are "equivalent" but have different precision levels, e.g., [`DECIMAL(10, 0)`](../v23.1/decimal.html) vs `DECIMAL(10, 2)` or `NAME` vs [`CHAR`](../v23.1/string.html). +- Fixed a bug where [`BEGIN`](../v23.1/begin-transaction.html), [`COMMIT`](../v23.1/commit-transaction.html), [`SET`](../v23.1/set-vars.html), [`ROLLBACK`](../v23.1/rollback-transaction.html), and [`SAVEPOINT`](../v23.1/savepoint.html) statements would not be written to the [execution](../v23.1/logging-overview.html#logging-destinations) or [audit logs](../v23.1/sql-audit-logging.html). +- Fixed a bug where a session migration performed by `SHOW TRANSFER STATE` would not handle prepared statements that used the [`AS OF SYSTEM TIME` clause](../v23.1/as-of-system-time.html). Users who encountered this bug would see errors such as `expected 1 or 0 for number of format codes, got N`. This bug was present since [v22.2.0](../releases/v22.2.html). +- Fixed errors on the [**Sessions** page](../v23.1/ui-sessions-page.html) in the [DB Console](../v23.1/ui-overview.html) when a session's memory usage is zero bytes. +- Fixed a bug introduced in [v22.1](../releases/v22.1.html) that could cause a [join](../v23.1/joins.html) to infinite-loop in rare cases when (1) the join filter is not an equality and (2) no columns from the left input are returned. +- Fixed an issue with the full scan filter on the [**Statements** page](../v23.1/ui-statements-page.html) where the filter was always evaluating to false, even if a full scan had occurred. +- Fixed a bug that could cause CPU usage to increase over time. +- Fixed a bug that could cause some rows to be silently skipped during [`IMPORT`](../v23.1/import.html) when a node's import worker failed. +- Fixed a bug in [geospatial](../v23.1/spatial-data-overview.html) queries, where a query filter of the form `ST_Distance(geog1, geog2) > constant`, or `ST_MaxDistance(geom1, geom2) > constant`, where the operator is one of `>`, `<`, `>=`, `<=`, or a filter of the form `ST_Distance(geog1, geog2, false) = 0` may mistakenly evaluate to `true` when one or both of the inputs is `NULL` or an empty [geography](../v23.1/architecture/glossary.html#geography) or [geometry](../v23.1/architecture/glossary.html#geometry). More rows could be returned by the query than expected. +- Fixed an issue where a [split](../v23.1/architecture/distribution-layer.html#range-splits) can be called on an invalid key that's in the form of `someValidKey.Next()` during [restore](../v23.1/restore.html). This split key can land in the middle of a row with [column families](../v23.1/column-families.html), and thus result in failing SQL queries when querying the restored table. +- Fixed an issue where a [split](../v23.1/architecture/distribution-layer.html#range-splits) can be called on an invalid key that's in the form of `someValidKey.Next()` during [restore](../v23.1/restore.html) with the [cluster setting](../v23.1/cluster-settings.html) `bulkio.restore.use_simple_import_spans=true`. This split key can land in the middle of a row with [column families](../v23.1/column-families.html), and thus result in failing SQL queries when querying the restored table. +- Fixed a bug that caused a flood of requests to refresh [cluster settings](../v23.1/cluster-settings.html) on the [Advanced Debug page](../v23.1/ui-debug-pages.html#configuration). If a user would like to see the effect of a modified cluster setting in [DB Console](../v23.1/ui-overview.html), a page reload is now required.

Performance improvements

-- [Backups](../v23.1/backup-and-restore-overview.html) no longer perform work proportional to the number of pending [write intents](../v23.1/architecture/transaction-layer.html#write-intents) that they encounter, so they are more than 100x faster when encountering long-running, bulk writing transactions. [#105526][#105526] -- Queries that access [`pg_catalog`](../v23.1/pg-catalog.html) and [`information_schema`](../v23.1/information-schema.html) that perform introspection on other tables in those schemas are now significantly faster. [#109736][#109736] +- [Backups](../v23.1/backup-and-restore-overview.html) no longer perform work proportional to the number of pending [write intents](../v23.1/architecture/transaction-layer.html#write-intents) that they encounter, so they are more than 100x faster when encountering long-running, bulk writing transactions. +- Queries that access [`pg_catalog`](../v23.1/pg-catalog.html) and [`information_schema`](../v23.1/information-schema.html) that perform introspection on other tables in those schemas are now significantly faster.
@@ -132,103 +132,103 @@ This release includes 378 merged PRs by 67 authors.
-[#105526]: https://github.com/cockroachdb/cockroach/pull/105526 -[#105719]: https://github.com/cockroachdb/cockroach/pull/105719 -[#105824]: https://github.com/cockroachdb/cockroach/pull/105824 -[#105826]: https://github.com/cockroachdb/cockroach/pull/105826 -[#105950]: https://github.com/cockroachdb/cockroach/pull/105950 -[#106054]: https://github.com/cockroachdb/cockroach/pull/106054 -[#106129]: https://github.com/cockroachdb/cockroach/pull/106129 -[#106153]: https://github.com/cockroachdb/cockroach/pull/106153 -[#106179]: https://github.com/cockroachdb/cockroach/pull/106179 -[#106184]: https://github.com/cockroachdb/cockroach/pull/106184 -[#106196]: https://github.com/cockroachdb/cockroach/pull/106196 -[#106199]: https://github.com/cockroachdb/cockroach/pull/106199 -[#106217]: https://github.com/cockroachdb/cockroach/pull/106217 -[#106235]: https://github.com/cockroachdb/cockroach/pull/106235 -[#106274]: https://github.com/cockroachdb/cockroach/pull/106274 -[#106286]: https://github.com/cockroachdb/cockroach/pull/106286 -[#106309]: https://github.com/cockroachdb/cockroach/pull/106309 -[#106357]: https://github.com/cockroachdb/cockroach/pull/106357 -[#106376]: https://github.com/cockroachdb/cockroach/pull/106376 -[#106399]: https://github.com/cockroachdb/cockroach/pull/106399 -[#106404]: https://github.com/cockroachdb/cockroach/pull/106404 -[#106412]: https://github.com/cockroachdb/cockroach/pull/106412 -[#106426]: https://github.com/cockroachdb/cockroach/pull/106426 -[#106432]: https://github.com/cockroachdb/cockroach/pull/106432 -[#106434]: https://github.com/cockroachdb/cockroach/pull/106434 -[#106465]: https://github.com/cockroachdb/cockroach/pull/106465 -[#106688]: https://github.com/cockroachdb/cockroach/pull/106688 -[#106698]: https://github.com/cockroachdb/cockroach/pull/106698 -[#106766]: https://github.com/cockroachdb/cockroach/pull/106766 -[#106776]: https://github.com/cockroachdb/cockroach/pull/106776 -[#106797]: https://github.com/cockroachdb/cockroach/pull/106797 -[#106806]: https://github.com/cockroachdb/cockroach/pull/106806 -[#106807]: https://github.com/cockroachdb/cockroach/pull/106807 -[#106857]: https://github.com/cockroachdb/cockroach/pull/106857 -[#106863]: https://github.com/cockroachdb/cockroach/pull/106863 -[#106942]: https://github.com/cockroachdb/cockroach/pull/106942 -[#106955]: https://github.com/cockroachdb/cockroach/pull/106955 -[#106959]: https://github.com/cockroachdb/cockroach/pull/106959 -[#106967]: https://github.com/cockroachdb/cockroach/pull/106967 -[#107059]: https://github.com/cockroachdb/cockroach/pull/107059 -[#107082]: https://github.com/cockroachdb/cockroach/pull/107082 -[#107105]: https://github.com/cockroachdb/cockroach/pull/107105 -[#107131]: https://github.com/cockroachdb/cockroach/pull/107131 -[#107182]: https://github.com/cockroachdb/cockroach/pull/107182 -[#107213]: https://github.com/cockroachdb/cockroach/pull/107213 -[#107218]: https://github.com/cockroachdb/cockroach/pull/107218 -[#107226]: https://github.com/cockroachdb/cockroach/pull/107226 -[#107238]: https://github.com/cockroachdb/cockroach/pull/107238 -[#107368]: https://github.com/cockroachdb/cockroach/pull/107368 -[#107372]: https://github.com/cockroachdb/cockroach/pull/107372 -[#107385]: https://github.com/cockroachdb/cockroach/pull/107385 -[#107403]: https://github.com/cockroachdb/cockroach/pull/107403 -[#107404]: https://github.com/cockroachdb/cockroach/pull/107404 -[#107471]: https://github.com/cockroachdb/cockroach/pull/107471 -[#107497]: https://github.com/cockroachdb/cockroach/pull/107497 -[#107573]: https://github.com/cockroachdb/cockroach/pull/107573 -[#107575]: https://github.com/cockroachdb/cockroach/pull/107575 -[#107595]: https://github.com/cockroachdb/cockroach/pull/107595 -[#107603]: https://github.com/cockroachdb/cockroach/pull/107603 -[#107622]: https://github.com/cockroachdb/cockroach/pull/107622 -[#107625]: https://github.com/cockroachdb/cockroach/pull/107625 -[#107762]: https://github.com/cockroachdb/cockroach/pull/107762 -[#107793]: https://github.com/cockroachdb/cockroach/pull/107793 -[#107837]: https://github.com/cockroachdb/cockroach/pull/107837 -[#107901]: https://github.com/cockroachdb/cockroach/pull/107901 -[#107933]: https://github.com/cockroachdb/cockroach/pull/107933 -[#107987]: https://github.com/cockroachdb/cockroach/pull/107987 -[#108074]: https://github.com/cockroachdb/cockroach/pull/108074 -[#108079]: https://github.com/cockroachdb/cockroach/pull/108079 -[#108113]: https://github.com/cockroachdb/cockroach/pull/108113 -[#108125]: https://github.com/cockroachdb/cockroach/pull/108125 -[#108144]: https://github.com/cockroachdb/cockroach/pull/108144 -[#108195]: https://github.com/cockroachdb/cockroach/pull/108195 -[#108198]: https://github.com/cockroachdb/cockroach/pull/108198 -[#108251]: https://github.com/cockroachdb/cockroach/pull/108251 -[#108286]: https://github.com/cockroachdb/cockroach/pull/108286 -[#108303]: https://github.com/cockroachdb/cockroach/pull/108303 -[#108308]: https://github.com/cockroachdb/cockroach/pull/108308 -[#108411]: https://github.com/cockroachdb/cockroach/pull/108411 -[#108457]: https://github.com/cockroachdb/cockroach/pull/108457 -[#108548]: https://github.com/cockroachdb/cockroach/pull/108548 -[#108733]: https://github.com/cockroachdb/cockroach/pull/108733 -[#108816]: https://github.com/cockroachdb/cockroach/pull/108816 -[#108821]: https://github.com/cockroachdb/cockroach/pull/108821 -[#108913]: https://github.com/cockroachdb/cockroach/pull/108913 -[#108990]: https://github.com/cockroachdb/cockroach/pull/108990 -[#109019]: https://github.com/cockroachdb/cockroach/pull/109019 -[#109254]: https://github.com/cockroachdb/cockroach/pull/109254 -[#109298]: https://github.com/cockroachdb/cockroach/pull/109298 -[#109359]: https://github.com/cockroachdb/cockroach/pull/109359 -[#109395]: https://github.com/cockroachdb/cockroach/pull/109395 -[#109621]: https://github.com/cockroachdb/cockroach/pull/109621 -[#109664]: https://github.com/cockroachdb/cockroach/pull/109664 -[#109736]: https://github.com/cockroachdb/cockroach/pull/109736 -[#109739]: https://github.com/cockroachdb/cockroach/pull/109739 -[#109778]: https://github.com/cockroachdb/cockroach/pull/109778 -[#109860]: https://github.com/cockroachdb/cockroach/pull/109860 -[#109939]: https://github.com/cockroachdb/cockroach/pull/109939 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/current/_includes/releases/v23.2/v23.2.0-alpha.1.md b/src/current/_includes/releases/v23.2/v23.2.0-alpha.1.md index d329f7f0319..cca78281bbf 100644 --- a/src/current/_includes/releases/v23.2/v23.2.0-alpha.1.md +++ b/src/current/_includes/releases/v23.2/v23.2.0-alpha.1.md @@ -6,43 +6,43 @@ Release Date: September 26, 2023

Backward-incompatible changes

-- The pre-v23.1 output produced by `SHOW RANGES`, `crdb_internal.ranges`, and `crdb_internal.ranges_no_leases` was deprecated in 23.1 and is now replaced by default with output that's compatible with coalesced ranges (i.e., ranges that pack multiple tables/indexes/partitions into individual ranges). See the [v23.1 release notes]({% link releases/v23.1.md %}) for `SHOW RANGES` for more details. [#102961][#102961] -- When a deployment is configured to use a time zone (new feature) for log file output using formats `crdb-v1` or `crdb-v2`, it becomes impossible to process the new output log files using the [`cockroach debug merge-logs` command]({% link v23.2/cockroach-debug-merge-logs.md %}) from a previous version. The newest `cockroach debug merge-logs` code must be used instead. [#104265][#104265] -- When customizing the [SQL shell's interactive prompt]({% link v23.2/cockroach-sql.md %}), the special sequence `%M` now expands to the full host name instead of the combination of host name and port number. To include the port number explicitly, use `%>`. The special sequence `%m` now expands to the host name up to the first period. [#105137][#105137] -- The [`cockroach debug zip`]({% link v23.2/cockroach-debug-zip.md %}) command stores data retrieved from SQL tables in the remote cluster using the TSV format by default. [#107474][#107474] -- The [`changefeed.protect_timestamp.max_age` cluster setting]({% link v23.2/protect-changefeed-data.md %}) will only apply to newly created changefeeds in v23.2. For existing changefeeds, you can set the [`protect_data_from_gc_on_pause`]({% link v23.2/create-changefeed.md %}#protect-pause) option so that changefeeds do not experience infinite retries and accumulate protected change data. You can use the [`ALTER CHANGEFEED`]({% link v23.2/alter-changefeed.md %}) statement to add `protect_data_from_gc_on_pause` to existing changefeeds. [#103539][#103539] +- The pre-v23.1 output produced by `SHOW RANGES`, `crdb_internal.ranges`, and `crdb_internal.ranges_no_leases` was deprecated in 23.1 and is now replaced by default with output that's compatible with coalesced ranges (i.e., ranges that pack multiple tables/indexes/partitions into individual ranges). See the [v23.1 release notes]({% link releases/v23.1.md %}) for `SHOW RANGES` for more details. +- When a deployment is configured to use a time zone (new feature) for log file output using formats `crdb-v1` or `crdb-v2`, it becomes impossible to process the new output log files using the [`cockroach debug merge-logs` command]({% link v23.2/cockroach-debug-merge-logs.md %}) from a previous version. The newest `cockroach debug merge-logs` code must be used instead. +- When customizing the [SQL shell's interactive prompt]({% link v23.2/cockroach-sql.md %}), the special sequence `%M` now expands to the full host name instead of the combination of host name and port number. To include the port number explicitly, use `%>`. The special sequence `%m` now expands to the host name up to the first period. +- The [`cockroach debug zip`]({% link v23.2/cockroach-debug-zip.md %}) command stores data retrieved from SQL tables in the remote cluster using the TSV format by default. +- The [`changefeed.protect_timestamp.max_age` cluster setting]({% link v23.2/protect-changefeed-data.md %}) will only apply to newly created changefeeds in v23.2. For existing changefeeds, you can set the [`protect_data_from_gc_on_pause`]({% link v23.2/create-changefeed.md %}#protect-pause) option so that changefeeds do not experience infinite retries and accumulate protected change data. You can use the [`ALTER CHANGEFEED`]({% link v23.2/alter-changefeed.md %}) statement to add `protect_data_from_gc_on_pause` to existing changefeeds. - The `changefeed.new_pubsub_sink_enabled` cluster setting is now enabled by default, which improves changefeed throughput. With this setting enabled, the top-level fields in JSON-encoded messages are capitalized: `{Key: ..., Value: ..., Topic: ...}`. After upgrading to CockroachDB v23.2, you may need to reconfigure downstream systems to parse the new message format. If you disable this setting, changefeeds emitting to Pub/Sub sinks with JSON-encoded events have the top-level message fields all lowercase: `{key: ..., value: ..., topic: ...}`.

Security updates

-- Users who have the [`CREATEROLE` role option]({% link v23.2/grant.md %}) can now grant and revoke role membership in any non-admin role. This change also removes the [`sql.auth.createrole_allows_grant_role_membership.enabled` cluster setting]({% link v23.2/cluster-settings.md %}), which was added in v23.1. In v23.2, the cluster setting is effectively always true. [#104376][#104376] +- Users who have the [`CREATEROLE` role option]({% link v23.2/grant.md %}) can now grant and revoke role membership in any non-admin role. This change also removes the [`sql.auth.createrole_allows_grant_role_membership.enabled` cluster setting]({% link v23.2/cluster-settings.md %}), which was added in v23.1. In v23.2, the cluster setting is effectively always true.

General changes

-- You can now set [Docker]({% link v23.2/start-a-local-cluster-in-docker-mac.md %}) command arguments using the `COCKROACH_ARGS` environment variable. [#98899][#98899] -- Extended the [`/api/v2/nodes` API endpoint](https://www.cockroachlabs.com/docs/api/cluster/v2.html) with a `storeMetrics` field. [#98208][#98208] -- CockroachDB would previously use separate [ranges]({% link v23.2/architecture/distribution-layer.md %}) for each table, index, or partition. This is no longer true. It is possible now to have multiple tables, indexes, and partitions get packed into the same range. For users with many of these schema objects, this will reduce the total range count in their clusters. This is especially true if individual tables, indexes, or partitions are smaller than the default configured maximum range size (controlled using [zone configs]({% link v23.2/zone-config-extensions.md %}), specifically the `range_max_bytes` parameter). We made this change to improve scalability with respect to the number of schema objects, since the underlying range count is now no longer a bottleneck. Users upgrading from v22.2, when finalizing their upgrade, may observe a round of range merges and snapshot transfers (to power said range merges) as a result of this change. If users want to opt-out of this optimization, they can configure the following cluster setting: `SET CLUSTER SETTING spanconfig.storage_coalesce_adjacent.enabled = false;` [#98820][#98820] -- [`EXPORT INTO PARQUET`]({% link v23.2/export.md %}) will now use a new internal implementation for writing Parquet files using the Parquet spec version 2.6. There should be no significant impact to the structure of files being written. There is one minor change: all columns written to Parquet files will be nullable (i.e., the Parquet repetition type is `OPTIONAL`). [#104234][#104234] -- [Spatial libraries]({% link v23.2/spatial-data-overview.md %}) for CockroachDB now rely on GEOS 3.11 instead of GEOS 3.8. [#106642][#106642] -- CockroachDB no longer distributes `libgeos` for the experimental [Windows build]({% link v23.2/install-cockroachdb-windows.md %}). Users can instead install GEOS directly from the source: . [#106642][#106642] -- The Formatting of byte figures in Pebble logs has been improved. Tools that parse these logs might need updating. [#107392][#107392] -- CockroachDB now has a new [CLI option]({% link v23.2/cockroach-commands.md %}), `--experimental-shared-storage` to rebalance data faster from node to node. [#105839][#105839] -- Fixed a bug where, internally, if we print a 0 decimal with a very low exponent we use excessive memory. This is not possible when using the [DECIMAL]({% link v23.2/decimal.md %}) type, but may be possible when using `crdb_internal` functions. [#110527][#110527] +- You can now set [Docker]({% link v23.2/start-a-local-cluster-in-docker-mac.md %}) command arguments using the `COCKROACH_ARGS` environment variable. +- Extended the [`/api/v2/nodes` API endpoint](https://www.cockroachlabs.com/docs/api/cluster/v2.html) with a `storeMetrics` field. +- CockroachDB would previously use separate [ranges]({% link v23.2/architecture/distribution-layer.md %}) for each table, index, or partition. This is no longer true. It is possible now to have multiple tables, indexes, and partitions get packed into the same range. For users with many of these schema objects, this will reduce the total range count in their clusters. This is especially true if individual tables, indexes, or partitions are smaller than the default configured maximum range size (controlled using [zone configs]({% link v23.2/zone-config-extensions.md %}), specifically the `range_max_bytes` parameter). We made this change to improve scalability with respect to the number of schema objects, since the underlying range count is now no longer a bottleneck. Users upgrading from v22.2, when finalizing their upgrade, may observe a round of range merges and snapshot transfers (to power said range merges) as a result of this change. If users want to opt-out of this optimization, they can configure the following cluster setting: `SET CLUSTER SETTING spanconfig.storage_coalesce_adjacent.enabled = false;` +- [`EXPORT INTO PARQUET`]({% link v23.2/export.md %}) will now use a new internal implementation for writing Parquet files using the Parquet spec version 2.6. There should be no significant impact to the structure of files being written. There is one minor change: all columns written to Parquet files will be nullable (i.e., the Parquet repetition type is `OPTIONAL`). +- [Spatial libraries]({% link v23.2/spatial-data-overview.md %}) for CockroachDB now rely on GEOS 3.11 instead of GEOS 3.8. +- CockroachDB no longer distributes `libgeos` for the experimental [Windows build]({% link v23.2/install-cockroachdb-windows.md %}). Users can instead install GEOS directly from the source: . +- The Formatting of byte figures in Pebble logs has been improved. Tools that parse these logs might need updating. +- CockroachDB now has a new [CLI option]({% link v23.2/cockroach-commands.md %}), `--experimental-shared-storage` to rebalance data faster from node to node. +- Fixed a bug where, internally, if we print a 0 decimal with a very low exponent we use excessive memory. This is not possible when using the [DECIMAL]({% link v23.2/decimal.md %}) type, but may be possible when using `crdb_internal` functions.

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

-- The [`kafka_sink_config`]({% link v23.2/advanced-changefeed-configuration.md %}) `Compression` and `RequiredAcks` options are now case-insensitive. [#100929][#100929] -- [Changefeeds]({% link v23.2/change-data-capture-overview.md %}) emit significantly fewer duplicate messages during node and cluster restarts. [#102717][#102717] -- CockroachDB has a new `changefeed.protect_timestamp.max_age` setting (by default 4 days), which will cancel running changefeed jobs if they fail to make forward progress for a period of time. This setting is used if the explicit `gc_protect_expires_after` option is not set. In addition, the `protect_data_from_gc_on_pause` option has been deprecated. This option is no longer needed since changefeed jobs always protect data. [#103539][#103539] -- Changefeeds now officially support the Parquet format using specification version 2.6. It is only usable with the [cloud storage sink]({% link v23.2/changefeed-sinks.md %}#cloud-storage-sink). The syntax to use Parquet is: `CREATE CHANGEFEED FOR foo INTO ... WITH format=parquet`. It supports all standard changefeed options and features including CDC transformations, except it does not support the `topic_in_value` option. [#104528][#104528] -- Changefeeds that create files over an HTTP connection may now be specified using `INTO 'file-https://'` to disambiguate with `webhook-https`. [#107572][#107572] -- The `pgcrypto` [functions]({% link v23.2/functions-and-operators.md %}) `encrypt`, `encrypt_iv`, `decrypt`, and `decrypt_iv` are now implemented. These functions require an enterprise license on a CCL distribution. [#105654][#105654] -- CockroachDB now paces the rangefeed goroutine creation rate to improve scheduler latency. This improves observability by adding an additional column in the `crdb_internal.active_rangefeed` table to indicate if the range is currently in catchup scan mode. [#109346][#109346] +- The [`kafka_sink_config`]({% link v23.2/advanced-changefeed-configuration.md %}) `Compression` and `RequiredAcks` options are now case-insensitive. +- [Changefeeds]({% link v23.2/change-data-capture-overview.md %}) emit significantly fewer duplicate messages during node and cluster restarts. +- CockroachDB has a new `changefeed.protect_timestamp.max_age` setting (by default 4 days), which will cancel running changefeed jobs if they fail to make forward progress for a period of time. This setting is used if the explicit `gc_protect_expires_after` option is not set. In addition, the `protect_data_from_gc_on_pause` option has been deprecated. This option is no longer needed since changefeed jobs always protect data. +- Changefeeds now officially support the Parquet format using specification version 2.6. It is only usable with the [cloud storage sink]({% link v23.2/changefeed-sinks.md %}#cloud-storage-sink). The syntax to use Parquet is: `CREATE CHANGEFEED FOR foo INTO ... WITH format=parquet`. It supports all standard changefeed options and features including CDC transformations, except it does not support the `topic_in_value` option. +- Changefeeds that create files over an HTTP connection may now be specified using `INTO 'file-https://'` to disambiguate with `webhook-https`. +- The `pgcrypto` [functions]({% link v23.2/functions-and-operators.md %}) `encrypt`, `encrypt_iv`, `decrypt`, and `decrypt_iv` are now implemented. These functions require an enterprise license on a CCL distribution. +- CockroachDB now paces the rangefeed goroutine creation rate to improve scheduler latency. This improves observability by adding an additional column in the `crdb_internal.active_rangefeed` table to indicate if the range is currently in catchup scan mode.

SQL language changes

-- Fixed the helper message on [UPDATE]({% link v23.2/update.md %}) SQL statements to include the optional FROM cause. [#98709][#98709] -- CockroachDB now supports enabling forward [indexes]({% link v23.2/indexes.md %}) and ordering on [JSON]({% link v23.2/jsonb.md %}) values. [#99275][#99275] +- Fixed the helper message on [UPDATE]({% link v23.2/update.md %}) SQL statements to include the optional FROM cause. +- CockroachDB now supports enabling forward [indexes]({% link v23.2/indexes.md %}) and ordering on [JSON]({% link v23.2/jsonb.md %}) values. - Added a new column `visibility` to `crdb_internal.table_indexes` and `information_schema.statistics`. Also added a new column `visibility` to the output of following SQL statements: {% include_cached copy-clipboard.html %} @@ -70,35 +70,35 @@ Release Date: September 26, 2023 SHOW KEYS FROM DATABASE (database_name); ~~~ - This new column contains a floating point number specifying the level of visibility of the index, from 0 (not visible) to 1 (fully visible). If the value is between 0 and 1, the index will be visible to the corresponding fraction of queries. [#101334][#101334] - -- `ALTER INDEX ... VISIBILITY ...` is now supported. It can change an index visibility to any visibility between 0.0 and 1.0. Visibility 0.0 means the index is not visible to the [optimizer]({% link v23.2/cost-based-optimizer.md %}), while visibility 1.0 means the index is fully visible. A value in the range between 0.0 and 1.0 means the index will be visible to the corresponding fraction of queries. [#87301][#87301] -- CockroachDB now has support for non-aggregate expressions involving columns outside of the grouping columns when the grouping columns include all key columns of a unique index and those key columns are not nullable. [#101675][#101675] -- CockroachDB now supports [`CREATE INDEX ... VISIBILITY ...`]({% link v23.2/create-index.md %}) and [`CREATE TABLE ... (... INDEX (...) VISIBILITY ...)`]({% link v23.2/create-table.md %}). This allows users to set the index visibility to any visibility between 0.0 and 1.0. Visibility 0.0 means the index is not visible to the optimizer, while visibility 1.0 means the index is fully visible. A value in the range between 0.0 and 1.0 means the index will be visible to the corresponding fraction of queries. [#101812][#101812] -- [Row level TTL]({% link v23.2/row-level-ttl.md %}) now supports `DESC` order primary key columns. [#101869][#101869] -- Added the `ST_BdPolyFromText` [built-in]({% link v23.2/functions-and-operators.md %}#spatial-functions) which copies the behavior of the PostGIS function. Takes in only a multilinestring geometry and returns a polygon. It will return an error if anything other than a multilinestring is input, and will return an error if internally a multipolygon is created for some reason. `NULL` inputs also return `NULL`. [#102708][#102708] -- [`SHOW SCHEDULES`]({% link v23.2/show-schedules.md %}) now shows the schedule options with which the schedules were created. `SHOW SCHEDULES FOR BACKUP` additionally shows if the schedule is a full or incremental backup schedule. [#102890][#102890] -- You can no longer use `PREPARE` with [`EXPLAIN ANALYZE`]({% link v23.2/explain-analyze.md %}) statements. Previously, this was allowed, but attempts to `EXECUTE` the prepared `EXPLAIN ANALYZE` statements would result in an error. [#103259][#103259] -- `ttl_expiration_expression` now allows stable operators and functions. This allows intervals to be directly added to `TIMESTAMPTZ` expressions. See . [#102974][#102974] -- CockroachDB now allows `INSERT` commands in [UDF]({% link v23.2/user-defined-functions.md %}) statement bodies. [#102773][#102773] -- CockroachDB now allows `UPDATE` and `UPSERT` commands in UDF statement bodies. [#102773][#102773] + This new column contains a floating point number specifying the level of visibility of the index, from 0 (not visible) to 1 (fully visible). If the value is between 0 and 1, the index will be visible to the corresponding fraction of queries. + +- `ALTER INDEX ... VISIBILITY ...` is now supported. It can change an index visibility to any visibility between 0.0 and 1.0. Visibility 0.0 means the index is not visible to the [optimizer]({% link v23.2/cost-based-optimizer.md %}), while visibility 1.0 means the index is fully visible. A value in the range between 0.0 and 1.0 means the index will be visible to the corresponding fraction of queries. +- CockroachDB now has support for non-aggregate expressions involving columns outside of the grouping columns when the grouping columns include all key columns of a unique index and those key columns are not nullable. +- CockroachDB now supports [`CREATE INDEX ... VISIBILITY ...`]({% link v23.2/create-index.md %}) and [`CREATE TABLE ... (... INDEX (...) VISIBILITY ...)`]({% link v23.2/create-table.md %}). This allows users to set the index visibility to any visibility between 0.0 and 1.0. Visibility 0.0 means the index is not visible to the optimizer, while visibility 1.0 means the index is fully visible. A value in the range between 0.0 and 1.0 means the index will be visible to the corresponding fraction of queries. +- [Row level TTL]({% link v23.2/row-level-ttl.md %}) now supports `DESC` order primary key columns. +- Added the `ST_BdPolyFromText` [built-in]({% link v23.2/functions-and-operators.md %}#spatial-functions) which copies the behavior of the PostGIS function. Takes in only a multilinestring geometry and returns a polygon. It will return an error if anything other than a multilinestring is input, and will return an error if internally a multipolygon is created for some reason. `NULL` inputs also return `NULL`. +- [`SHOW SCHEDULES`]({% link v23.2/show-schedules.md %}) now shows the schedule options with which the schedules were created. `SHOW SCHEDULES FOR BACKUP` additionally shows if the schedule is a full or incremental backup schedule. +- You can no longer use `PREPARE` with [`EXPLAIN ANALYZE`]({% link v23.2/explain-analyze.md %}) statements. Previously, this was allowed, but attempts to `EXECUTE` the prepared `EXPLAIN ANALYZE` statements would result in an error. +- `ttl_expiration_expression` now allows stable operators and functions. This allows intervals to be directly added to `TIMESTAMPTZ` expressions. See . +- CockroachDB now allows `INSERT` commands in [UDF]({% link v23.2/user-defined-functions.md %}) statement bodies. +- CockroachDB now allows `UPDATE` and `UPSERT` commands in UDF statement bodies. - The `READ COMMITTED` [isolation level]({% link v23.2/transactions.md %}#isolation-levels) is now supported. It can be used in the following ways: - When starting a transaction, use `BEGIN ISOLATION LEVEL READ COMMITTED`. - After starting a transaction, but before performing reads or writes, use `SET TRANSACTION ISOLATION READ COMMITTED`. - Configure it as the default isolation level using the `default_transaction_isolation` session variable. To see the isolation level of the currently running transaction, use either `SHOW TRANSACTION ISOLATION LEVEL` or `SHOW transaction_isolation`. - [#103482][#103482] - -- Added version gates which require all nodes in a given cluster to have a minimum binary version number, which in turn is required for creating forward indexes on JSON columns and for ordering JSON columns. [#101932][#101932] -- CockroachDB now allows `DELETE` commands in UDF statement bodies. [#103531][#103531] -- Added a new cluster setting `sql.auth.public_schema_create_privilege.enabled` which controls whether users receive [`CREATE` privileges]({% link v23.2/grant.md %}) on the public schema or not. The setting applies at the time that the public schema is created, which happens whenever a database is created. The setting is `true` by default. [#103598][#103598] -- [`EXPLAIN (DDL)`]({% link v23.2/explain.md %}) statements now have descriptor, index, column, constraint, and other ID values decorated with names when available. There is now also a new `EXPLAIN (DDL, SHAPE)` statement that provides information on costly operations planned by the declarative schema changer, like which index backfills and validations will get performed. [#103930][#103930] -- A new statistic `KV pairs read` is now exposed on [`EXPLAIN ANALYZE`]({% link v23.2/explain-analyze.md %}) output in some cases (when this number is different from the `KV rows read` statistic or when the `VERBOSE` option is requested). This new statistic is also added to the telemetry sampled query events. [#104079][#104079] -- The `KV rows read` statistic in `EXPLAIN ANALYZE` output has been renamed to `KV rows decoded` to better reflect its meaning. [#104079][#104079] -- Table names are now allowed in `SELECT` lists inside [view]({% link v23.2/views.md %}) and UDF definitions. [#104929][#104929] -- [`SHOW JOB WITH EXECUTION DETAILS`]({% link v23.2/show-jobs.md %}) for a backup job will regenerate the DistSQL plan diagram with per-node and per-processor progress information. This will help users better understand the state of a running backup job. [#103145][#103145] -- The `crdb_internal.node_transactions` and `crdb_internal.cluster_transactions` tables now have columns for `isolation_level`, `priority`, and `quality_of_service`. [#105009][#105009] + + +- Added version gates which require all nodes in a given cluster to have a minimum binary version number, which in turn is required for creating forward indexes on JSON columns and for ordering JSON columns. +- CockroachDB now allows `DELETE` commands in UDF statement bodies. +- Added a new cluster setting `sql.auth.public_schema_create_privilege.enabled` which controls whether users receive [`CREATE` privileges]({% link v23.2/grant.md %}) on the public schema or not. The setting applies at the time that the public schema is created, which happens whenever a database is created. The setting is `true` by default. +- [`EXPLAIN (DDL)`]({% link v23.2/explain.md %}) statements now have descriptor, index, column, constraint, and other ID values decorated with names when available. There is now also a new `EXPLAIN (DDL, SHAPE)` statement that provides information on costly operations planned by the declarative schema changer, like which index backfills and validations will get performed. +- A new statistic `KV pairs read` is now exposed on [`EXPLAIN ANALYZE`]({% link v23.2/explain-analyze.md %}) output in some cases (when this number is different from the `KV rows read` statistic or when the `VERBOSE` option is requested). This new statistic is also added to the telemetry sampled query events. +- The `KV rows read` statistic in `EXPLAIN ANALYZE` output has been renamed to `KV rows decoded` to better reflect its meaning. +- Table names are now allowed in `SELECT` lists inside [view]({% link v23.2/views.md %}) and UDF definitions. +- [`SHOW JOB WITH EXECUTION DETAILS`]({% link v23.2/show-jobs.md %}) for a backup job will regenerate the DistSQL plan diagram with per-node and per-processor progress information. This will help users better understand the state of a running backup job. +- The `crdb_internal.node_transactions` and `crdb_internal.cluster_transactions` tables now have columns for `isolation_level`, `priority`, and `quality_of_service`. - The [`SHOW RANGES`]({% link v23.2/show-ranges.md %}) command will now emit span statistics when the `DETAILS` option is specified. The statistics are included in a new column named `span_stats`, as a `JSON` object. The statistics are calculated for the identifier of each row. `SHOW RANGES WITH DETAILS` will compute span statistics for each range. `SHOW RANGES WITH TABLES, DETAILS` will compute span statistics for each table, and so on. The `span_stats` `JSON` object has the following keys: - `approximate_disk_bytes` @@ -117,9 +117,9 @@ Release Date: September 26, 2023 `intent_count` is the number of keys tracked under `intent_bytes`. It is equal to the number of meta keys in the system with a non-empty Transaction proto. `intent_bytes` is the number of bytes in intent key-value pairs (without their meta keys). - [#103128][#103128] + -- Introduced the `pg_lsn` data type, which is used to store the `lsn` associated with replication. [#105031][#105031] +- Introduced the `pg_lsn` data type, which is used to store the `lsn` associated with replication. - Users now can issue one [`ALTER TABLE` statement]({% link v23.2/alter-table.md %}) with a combination of any number of `ADD COLUMN`, any number of `DROP COLUMN`, one `ALTER PRIMARY KEY`, and any number of `ADD CONSTRAINT` clauses. For example, with this PR, we now support statements like: {% include_cached copy-clipboard.html %} @@ -127,70 +127,70 @@ Release Date: September 26, 2023 CREATE TABLE t (i INT PRIMARY KEY, j INT NOT NULL, k INT NOT NULL); ALTER TABLE t ADD COLUMN p INT DEFAULT 30, ALTER PRIMARY KEY USING COLUMNS (j), DROP COLUMN k, ADD CHECK (i > 0); ~~~ - [#99526][#99526] - -- Added the ability to add numeric values to LSNs, or sub a decimal value from a LSN. [#105326][#105326] -- Implemented the `pg_lsn - pg_lsn = decimal` built-in function, which subtracts 2 LSNs to return a decimal. [#105326][#105326] -- Added limited support for scalar PL/pgSQL functions. Supported statements are variable declarations, variable assignments, `IF` statements, simple `LOOP` statements (with no conditions), `EXIT` and `CONTINUE` statements, and `RETURN` statements. [#104755][#104755] -- Implemented the spatial built-in `ST_AsMVTGeom`. [#105530][#105530] -- `Pg_class`'s `relreplident` field was previously unpopulated. It is now populated with `d` for all tables (as each table has a primary key) and `n` otherwise. [#106242][#106242] -- Added the `pg_sequence_last_value` built-in function, which returns the last value generated by the sequence. [#106445][#106445] -- [`RESTORE`]({% link v23.2/restore.md %}) can now be passed a `WITH EXECUTION LOCALITY` option similar to [`BACKUP`]({% link v23.2/backup.md %}), to restrict execution of the job to nodes with matching localities. [#104439][#104439] -- Added the `REPLICATION` user role option, which allows a user to use the streaming replication protocol. There is a corresponding [`REPLICATION` system privilege]({% link v23.2/grant.md %}). [#106082][#106082] -- A new view-only [session variable]({% link v23.2/session-variables.md %}), `max_connections` was added. This can be used with `SHOW` to view the maximum amount of non-superuser SQL connections allowed at a given time. [#106952][#106952] -- Added the `nameconcatoid` built-in function, which concatenates a name with an OID. [#105944][#105944] -- The `pg_catalog.pg_language` table is now populated with data about the languages used to define functions. [#105944][#105944] -- The `information_schema.routines` view is now populated with information about functions. [#105944][#105944] -- The `information_schema.parameters` table is now populated with information about function parameters. [#105944][#105944] -- Added support for the PLpgSQL `RAISE` statement, which allows sending notices to the client and raising errors. Currently the notice is only sent to the client. Support for logging notices will be added in a future release. [#106351][#106351] -- The `public` pseudo-role now receives the `EXECUTE` privilege by default for all user-defined functions that are created. This can be adjusted by using `ALTER DEFAULT PRIVILEGES`. [#107317][#107317] -- The `crdb_interanal.node_statement_statistics` table redacts the error message if the user has the `VIEWACTIVITYREDACTED` privilege, and does not redact the error message if the user has `VIEWACTIVITY`. If the user has both, `VIEWACTIVITYREDACTED` takes precedence and the last error is redacted. [#107076][#107076] -- The `crdb_internal.cluster_locks` table now has a `isolation_level` column indicating the isolation level. [#107309][#107309] -- In `CommonSQLExecDetails`, which is emitted as part of the SQL audit logs, SQL exec logs, and telemetry events, there is a new field: `StmtPosInTxn`. It represents the statement's index in the transaction, starting at 1. [#107081][#107081] -- `cluster_logical_timestamp` now returns an error when called at isolation levels lower than `SERIALIZABLE`. [#107090][#107090] + + +- Added the ability to add numeric values to LSNs, or sub a decimal value from a LSN. +- Implemented the `pg_lsn - pg_lsn = decimal` built-in function, which subtracts 2 LSNs to return a decimal. +- Added limited support for scalar PL/pgSQL functions. Supported statements are variable declarations, variable assignments, `IF` statements, simple `LOOP` statements (with no conditions), `EXIT` and `CONTINUE` statements, and `RETURN` statements. +- Implemented the spatial built-in `ST_AsMVTGeom`. +- `Pg_class`'s `relreplident` field was previously unpopulated. It is now populated with `d` for all tables (as each table has a primary key) and `n` otherwise. +- Added the `pg_sequence_last_value` built-in function, which returns the last value generated by the sequence. +- [`RESTORE`]({% link v23.2/restore.md %}) can now be passed a `WITH EXECUTION LOCALITY` option similar to [`BACKUP`]({% link v23.2/backup.md %}), to restrict execution of the job to nodes with matching localities. +- Added the `REPLICATION` user role option, which allows a user to use the streaming replication protocol. There is a corresponding [`REPLICATION` system privilege]({% link v23.2/grant.md %}). +- A new view-only [session variable]({% link v23.2/session-variables.md %}), `max_connections` was added. This can be used with `SHOW` to view the maximum amount of non-superuser SQL connections allowed at a given time. +- Added the `nameconcatoid` built-in function, which concatenates a name with an OID. +- The `pg_catalog.pg_language` table is now populated with data about the languages used to define functions. +- The `information_schema.routines` view is now populated with information about functions. +- The `information_schema.parameters` table is now populated with information about function parameters. +- Added support for the PLpgSQL `RAISE` statement, which allows sending notices to the client and raising errors. Currently the notice is only sent to the client. Support for logging notices will be added in a future release. +- The `public` pseudo-role now receives the `EXECUTE` privilege by default for all user-defined functions that are created. This can be adjusted by using `ALTER DEFAULT PRIVILEGES`. +- The `crdb_interanal.node_statement_statistics` table redacts the error message if the user has the `VIEWACTIVITYREDACTED` privilege, and does not redact the error message if the user has `VIEWACTIVITY`. If the user has both, `VIEWACTIVITYREDACTED` takes precedence and the last error is redacted. +- The `crdb_internal.cluster_locks` table now has a `isolation_level` column indicating the isolation level. +- In `CommonSQLExecDetails`, which is emitted as part of the SQL audit logs, SQL exec logs, and telemetry events, there is a new field: `StmtPosInTxn`. It represents the statement's index in the transaction, starting at 1. +- `cluster_logical_timestamp` now returns an error when called at isolation levels lower than `SERIALIZABLE`. - `EXPLAIN ANALYZE` output now includes: - The isolation level of the statement's transaction. - The priority of the statement's transaction. - The quality of service level of the statement's transaction. - [#105857][#105857] - -- Added a new session variable, `enable_implicit_fk_locking_for_serializable`, which controls locking during foreign key checks under `SERIALIZABLE` isolation. With this set to `true`, foreign key checks of the referenced (parent) table, such as those performed during an `INSERT` or `UPDATE` of the referencing (child) table, will lock the referenced row using `SELECT FOR SHARE` locking. This is somewhat analogous to the existing `enable_implicit_select_for_update` variable but applies to the foreign key checks of a mutation statement instead of the initial row fetch. Under weaker isolation levels such as read committed, `SELECT FOR SHARE` locking will always be used to ensure the database maintains the foreign key constraint, regardless of the current setting of `enable_implicit_fk_locking_for_serializable`. [#105857][#105857] -- Add a new session variable, `enable_durable_locking_for_serializable`, which controls locking durability under `SERIALIZABLE` isolation. With this set to true, `SELECT FOR UPDATE` locks, `SELECT FOR SHARED` locks, and constraint check locks (e.g., locks acquired during foreign key checks if `enable_implicit_fk_locking_for_serializable` is set to `true`) will be guaranteed-durable under serializable isolation, meaning they will always be held to transaction commit. These locks are always guaranteed-durable under weaker isolation levels. By default, under serializable isolation these locks are best-effort rather than guaranteed-durable, meaning in some cases (e.g., leaseholder transfer, node loss, etc.) they could be released before the transaction commits. Serializable isolation does not rely on locking for correctness, only using it to improve performance under contention, so this default is a deliberate choice to avoid the performance overhead of lock replication. [#107749][#107749] -- The cluster setting `server.cpu_profile.enabled` has been removed. `server.cpu_profile.cpu_usage_combined_threshold` can enable and disable CPU profiling. [#107717][#107717] -- Added support for `CONSTANT` variable declarations in PLpgSQL routines. Any assignment to a variable declared with the `CONSTANT` keyword will raise a compile-time error. [#107682][#107682] -- Added a new syntax to `SHOW DEFAULT PRIVILEGES`, `SHOW DEFAULT PRIVILEGES FOR GRANTEE `, that shows the default privileges that a grantee received. [#107953][#107953] -- The Statement diagnostics feature has been extended to support collecting a bundle for a particular plan. Namely, the existing fingerprint-based matching has been extended to also include plan-gist-based matching. Such bundles will miss a couple of things: `plan.txt` file as well as the tracing of the optimizer. At the moment, the feature is only exposed via an overload to the `crdb_internal.request_statement_bundle` built-in function. We now also support "anti-match": collecting a bundle for any plan other than the provided plan gist. [#105477][#105477] -- [`SHOW BACKUP`]({% link v23.2/show-backup.md %})'s timestamp columns are now `TIMESTAMPTZ`, meaning they render in the session offset. [#108290][#108290] -- Attempting to [drop a column]({% link v23.2/alter-table.md %}#drop-column) when safe updates are enabled (`sql_safe_updates = on`) now additionally warns users that indexes referencing that column will be automatically dropped. [#108047][#108047] -- `NOTICE`s are now emitted for each index dropped by an `ALTER TABLE ... DROP COLUMN ...` statement. [#108047][#108047] -- `SHOW JOBS` now returns times (`created`, `last_run`, and so on) using the `TIMESTAMPTZ` column type instead of the `TIMESTAMP` type, meaning they are now rendered using the session offset. [#108353][#108353] -- Added a cluster setting `sql.schema.force_declarative_statements` to enable/disable DDL in the [declarative schema changer]({% link v23.2/online-schema-changes.md %}). [#107815][#107815] -- Added the new built-in functions `workload_index_recs()` and `workload_index_recs(TIMESTAMPTZ)`, which return workload level index recommendations (columns of string, each string represent an index recommendation) from statement level index recommendations (as candidates) in `system.statement_statistics`. If the `TIMESTAMPTZ` is given, it will only consider those candidates generated after that `TIMESTAMPTZ` value. [#106525][#106525] -- Added support for specifying PLpgSQL `IF` statements with `ELSIF` branches. [#108211][#108211] -- The admin API database details endpoint now returns authoritative range statistics. [#108037][#108037] -- Added the `max_retries_for_read_committed` session variable. It defaults to 10, and determines the number of times an individual statement in an explicit `READ COMMITTED` transaction will be retried if it encounters a retryable transaction error. [#107044][#107044] -- Added support for the execution of PLpgSQL functions with exception blocks. This allows a PLpgSQL function to catch and handle arbitrary errors it encounters during its execution. [#107601][#107601] -- Added the built-in functions `bitmask_or`, `bitmask_and` and `bitmask_xor` for variable-length input bitwise `OR`, `AND`, and `XOR` operations, respectively. [#107863][#107863] -- The `oidvectortypes` built-in has been implemented, which can format `oidvector`. [#108467][#108467] -- Added support for executing SQL statements directly within PLpgSQL routines. Note that this currently only applies to the subset of statements that can be executed within SQL UDFs, so `CREATE TABLE` is not supported, for example. `INTO` syntax is also supported. For example, `SELECT * INTO a, b FROM xy;`. [#107920][#107920] -- A SQL client can now request strict atomicity for mixed DDL/DML transactions with the new session variable `strict_ddl_atomicity`, which defaults to `false`. When this variable is set to `true`, CockroachDB will refuse to accept processing those specific DDL statements inside `BEGIN...COMMIT` for which it cannot guarantee atomic processing (other DDL statements are still allowed). Note that schema changes implicit in certain operations (e.g., `IMPORT`) are not protected via the new mechanism and can still fail with `XXA00` errors. [#42063][#42063] -- Fixed an issue where the UI was missing query text and details on the SQL Activity [Transactions page]({% link v23.2/ui-transactions-page.md %}) if there were more than 500 transactions or statements. The `statement_activity` table now includes all statements for a transaction that are in the `transaction_activity` table. [#109424][#109424] -- Added the [`VIEWSYSTEMTABLE` system privilege]({% link v23.2/grant.md %}). Users with this privilege have `SELECT` privileges for all tables in the system database. [#109474][#109474] -- The `statement_activity` and `transaction_activity` tables column `execution_total_cluster_seconds` is now accurate. The `combinedstmts` endpoint returns the correct value for the `StmtsTotalRuntimeSecs` and `TxnsTotalRuntimeSecs` properties. [#109592][#109592] -- The `persistedsqlstats` table maximum size check is now done once an hour instead of every 10 minutes. This reduces the risk of serialization errors on the statistics tables. [#109696][#109696] -- The deprecated session variable `idle_in_session_timeout` is now hidden from introspection. It was previously changed to `idle_session_timeout`. [#109872][#109872] -- The session variable `ssl` is now visible through introspection for better compatibility with PostgreSQL. [#109872][#109872] -- The session variable `session_user` is now invisible through introspection, in a way consistent with `session_authorization` and PostgreSQL. [#109872][#109872] -- There is now a `CREATEROLE` system privilege, which is analogous to the existing `CREATEROLE` role option, but can also be inherited by role membership. [#109258][#109258] -- Added the `gen_random_bytes` built-in function, which generates cryptographically secure random bytes. [#110107][#110107] -- The hash function used by [hash-sharded indexes]({% link v23.2/hash-sharded-indexes.md %}) was changed to `mod(fnv32(md5(crdb_internal.datums_to_bytes(columns))), bucket_count)`. Previously, it did not use `md5`. This change was made to enhance the uniformity of bucket distribution in cases when the bucket count is a power of 2, and the columns being sharded have numerical properties that make the `fnv32` function return values with a non-uniformly distributed modulus. [#109374][#109374] -- New datetime built-ins (`make_date`, `make_timestamp`, and `make_timestamptz`) have been added, allowing for the creation of timestamps, timestamps with time zones, and dates. In addition, `date_trunc` now allows for a timestamp to be truncated in a specified timezone (to a specified precision). [#108824][#108824] -- There is now a `CREATELOGIN` system privilege, which is analogous to the existing `CREATELOGIN` role option, but can also be inherited by role membership. [#110220][#110220] -- There is now a `CREATEDB` system privilege, which is analogous to the existing `CREATEDB` role option, but can also be inherited by role membership. [#110220][#110220] -- There is now a `CONTROLJOB` system privilege, which is analogous to the existing `CONTROLJOB` role option, but can also be inherited by role membership. [#110220][#110220] -- The `persistedsqlstats` table maximum size check is now done once an hour instead of every 10 minutes. This reduces the risk of serialization errors on the statistics tables. [#110173][#110173] + + +- Added a new session variable, `enable_implicit_fk_locking_for_serializable`, which controls locking during foreign key checks under `SERIALIZABLE` isolation. With this set to `true`, foreign key checks of the referenced (parent) table, such as those performed during an `INSERT` or `UPDATE` of the referencing (child) table, will lock the referenced row using `SELECT FOR SHARE` locking. This is somewhat analogous to the existing `enable_implicit_select_for_update` variable but applies to the foreign key checks of a mutation statement instead of the initial row fetch. Under weaker isolation levels such as read committed, `SELECT FOR SHARE` locking will always be used to ensure the database maintains the foreign key constraint, regardless of the current setting of `enable_implicit_fk_locking_for_serializable`. +- Add a new session variable, `enable_durable_locking_for_serializable`, which controls locking durability under `SERIALIZABLE` isolation. With this set to true, `SELECT FOR UPDATE` locks, `SELECT FOR SHARED` locks, and constraint check locks (e.g., locks acquired during foreign key checks if `enable_implicit_fk_locking_for_serializable` is set to `true`) will be guaranteed-durable under serializable isolation, meaning they will always be held to transaction commit. These locks are always guaranteed-durable under weaker isolation levels. By default, under serializable isolation these locks are best-effort rather than guaranteed-durable, meaning in some cases (e.g., leaseholder transfer, node loss, etc.) they could be released before the transaction commits. Serializable isolation does not rely on locking for correctness, only using it to improve performance under contention, so this default is a deliberate choice to avoid the performance overhead of lock replication. +- The cluster setting `server.cpu_profile.enabled` has been removed. `server.cpu_profile.cpu_usage_combined_threshold` can enable and disable CPU profiling. +- Added support for `CONSTANT` variable declarations in PLpgSQL routines. Any assignment to a variable declared with the `CONSTANT` keyword will raise a compile-time error. +- Added a new syntax to `SHOW DEFAULT PRIVILEGES`, `SHOW DEFAULT PRIVILEGES FOR GRANTEE `, that shows the default privileges that a grantee received. +- The Statement diagnostics feature has been extended to support collecting a bundle for a particular plan. Namely, the existing fingerprint-based matching has been extended to also include plan-gist-based matching. Such bundles will miss a couple of things: `plan.txt` file as well as the tracing of the optimizer. At the moment, the feature is only exposed via an overload to the `crdb_internal.request_statement_bundle` built-in function. We now also support "anti-match": collecting a bundle for any plan other than the provided plan gist. +- [`SHOW BACKUP`]({% link v23.2/show-backup.md %})'s timestamp columns are now `TIMESTAMPTZ`, meaning they render in the session offset. +- Attempting to [drop a column]({% link v23.2/alter-table.md %}#drop-column) when safe updates are enabled (`sql_safe_updates = on`) now additionally warns users that indexes referencing that column will be automatically dropped. +- `NOTICE`s are now emitted for each index dropped by an `ALTER TABLE ... DROP COLUMN ...` statement. +- `SHOW JOBS` now returns times (`created`, `last_run`, and so on) using the `TIMESTAMPTZ` column type instead of the `TIMESTAMP` type, meaning they are now rendered using the session offset. +- Added a cluster setting `sql.schema.force_declarative_statements` to enable/disable DDL in the [declarative schema changer]({% link v23.2/online-schema-changes.md %}). +- Added the new built-in functions `workload_index_recs()` and `workload_index_recs(TIMESTAMPTZ)`, which return workload level index recommendations (columns of string, each string represent an index recommendation) from statement level index recommendations (as candidates) in `system.statement_statistics`. If the `TIMESTAMPTZ` is given, it will only consider those candidates generated after that `TIMESTAMPTZ` value. +- Added support for specifying PLpgSQL `IF` statements with `ELSIF` branches. +- The admin API database details endpoint now returns authoritative range statistics. +- Added the `max_retries_for_read_committed` session variable. It defaults to 10, and determines the number of times an individual statement in an explicit `READ COMMITTED` transaction will be retried if it encounters a retryable transaction error. +- Added support for the execution of PLpgSQL functions with exception blocks. This allows a PLpgSQL function to catch and handle arbitrary errors it encounters during its execution. +- Added the built-in functions `bitmask_or`, `bitmask_and` and `bitmask_xor` for variable-length input bitwise `OR`, `AND`, and `XOR` operations, respectively. +- The `oidvectortypes` built-in has been implemented, which can format `oidvector`. +- Added support for executing SQL statements directly within PLpgSQL routines. Note that this currently only applies to the subset of statements that can be executed within SQL UDFs, so `CREATE TABLE` is not supported, for example. `INTO` syntax is also supported. For example, `SELECT * INTO a, b FROM xy;`. +- A SQL client can now request strict atomicity for mixed DDL/DML transactions with the new session variable `strict_ddl_atomicity`, which defaults to `false`. When this variable is set to `true`, CockroachDB will refuse to accept processing those specific DDL statements inside `BEGIN...COMMIT` for which it cannot guarantee atomic processing (other DDL statements are still allowed). Note that schema changes implicit in certain operations (e.g., `IMPORT`) are not protected via the new mechanism and can still fail with `XXA00` errors. +- Fixed an issue where the UI was missing query text and details on the SQL Activity [Transactions page]({% link v23.2/ui-transactions-page.md %}) if there were more than 500 transactions or statements. The `statement_activity` table now includes all statements for a transaction that are in the `transaction_activity` table. +- Added the [`VIEWSYSTEMTABLE` system privilege]({% link v23.2/grant.md %}). Users with this privilege have `SELECT` privileges for all tables in the system database. +- The `statement_activity` and `transaction_activity` tables column `execution_total_cluster_seconds` is now accurate. The `combinedstmts` endpoint returns the correct value for the `StmtsTotalRuntimeSecs` and `TxnsTotalRuntimeSecs` properties. +- The `persistedsqlstats` table maximum size check is now done once an hour instead of every 10 minutes. This reduces the risk of serialization errors on the statistics tables. +- The deprecated session variable `idle_in_session_timeout` is now hidden from introspection. It was previously changed to `idle_session_timeout`. +- The session variable `ssl` is now visible through introspection for better compatibility with PostgreSQL. +- The session variable `session_user` is now invisible through introspection, in a way consistent with `session_authorization` and PostgreSQL. +- There is now a `CREATEROLE` system privilege, which is analogous to the existing `CREATEROLE` role option, but can also be inherited by role membership. +- Added the `gen_random_bytes` built-in function, which generates cryptographically secure random bytes. +- The hash function used by [hash-sharded indexes]({% link v23.2/hash-sharded-indexes.md %}) was changed to `mod(fnv32(md5(crdb_internal.datums_to_bytes(columns))), bucket_count)`. Previously, it did not use `md5`. This change was made to enhance the uniformity of bucket distribution in cases when the bucket count is a power of 2, and the columns being sharded have numerical properties that make the `fnv32` function return values with a non-uniformly distributed modulus. +- New datetime built-ins (`make_date`, `make_timestamp`, and `make_timestamptz`) have been added, allowing for the creation of timestamps, timestamps with time zones, and dates. In addition, `date_trunc` now allows for a timestamp to be truncated in a specified timezone (to a specified precision). +- There is now a `CREATELOGIN` system privilege, which is analogous to the existing `CREATELOGIN` role option, but can also be inherited by role membership. +- There is now a `CREATEDB` system privilege, which is analogous to the existing `CREATEDB` role option, but can also be inherited by role membership. +- There is now a `CONTROLJOB` system privilege, which is analogous to the existing `CONTROLJOB` role option, but can also be inherited by role membership. +- The `persistedsqlstats` table maximum size check is now done once an hour instead of every 10 minutes. This reduces the risk of serialization errors on the statistics tables. - The new [cluster setting]({% link v23.2/cluster-settings.md %}) `sql.txn.read_committed_syntax.enabled`, controls whether transactions run under `READ COMMITTED` or `SERIALIZABLE` isolation. It defaults to `false`. When set to `true`, the following statements will configure transactions to run under `READ COMMITTED` isolation: - `BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED` @@ -198,17 +198,17 @@ Release Date: September 26, 2023 - `SET default_transaction_isolation = 'read committed'` - `SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED` - [#110624][#110624] + -- The [cluster setting]({% link v23.2/cluster-settings.md %}) `sql.metrics.statement_details.gateway_node.enabled` now defaults to false, to reduce the number of rows generated in SQL Statistics pages. [#107788][#107788] -- The default value for the [`ttl_job_cron`](https://cockroachlabs.com/docs/v23.2/row-level-ttl) table storage parameter is now `@daily` rather than `@hourly`. This parameter controls the default recurrence of the row-level TTL job. As part of this change, the output of the `SHOW CREATE TABLE` statements now include the `ttl_cron_job` parameter only if it is explicitly set. [#110623][#110623] +- The [cluster setting]({% link v23.2/cluster-settings.md %}) `sql.metrics.statement_details.gateway_node.enabled` now defaults to false, to reduce the number of rows generated in SQL Statistics pages. +- The default value for the [`ttl_job_cron`](https://cockroachlabs.com/docs/v23.2/row-level-ttl) table storage parameter is now `@daily` rather than `@hourly`. This parameter controls the default recurrence of the row-level TTL job. As part of this change, the output of the `SHOW CREATE TABLE` statements now include the `ttl_cron_job` parameter only if it is explicitly set.

Operational changes

-- Removed a timeseries metric that has not been reported for several versions. [#100524][#100524] -- Added two new metrics, `range.snapshots.(send|recv)-queue-bytes`, to track the total size of all snapshots waiting in the snapshot queue. [#100942][#100942] -- Exposed a new metric `storage.compactions.duration`, computed by the storage engine, that provides the cumulative time the storage engine has spent in compactions. This duration may exceed time elapsed, because of concurrent compactions, and may be useful in monitoring compaction concurrency. [#103670][#103670] -- Two new store metrics, `range.snapshots.cross-region.sent-bytes` and `range.snapshots.cross-region.rcvd-bytes`, were added to track the aggregate of snapshot bytes sent from and received at a store across different regions. Note that these metrics require the nodes' localities to include a “region” tier key. If a node lacks this key but is involved in cross-region batch activities, an error message will be logged. [#104111][#104111] +- Removed a timeseries metric that has not been reported for several versions. +- Added two new metrics, `range.snapshots.(send|recv)-queue-bytes`, to track the total size of all snapshots waiting in the snapshot queue. +- Exposed a new metric `storage.compactions.duration`, computed by the storage engine, that provides the cumulative time the storage engine has spent in compactions. This duration may exceed time elapsed, because of concurrent compactions, and may be useful in monitoring compaction concurrency. +- Two new store metrics, `range.snapshots.cross-region.sent-bytes` and `range.snapshots.cross-region.rcvd-bytes`, were added to track the aggregate of snapshot bytes sent from and received at a store across different regions. Note that these metrics require the nodes' localities to include a “region” tier key. If a node lacks this key but is involved in cross-region batch activities, an error message will be logged. - Added new store metrics to track the aggregate of snapshot bytes sent from and received at a store across different zones. - `range.snapshots.cross-zone.sent-bytes` @@ -220,7 +220,7 @@ Release Date: September 26, 2023 - Within a node locality, ensure unique region and zone tier keys. - Maintain consistent configuration of region and zone tiers across nodes. - [#104417][#104417] + - Added new store metrics: @@ -231,7 +231,7 @@ Release Date: September 26, 2023 - `raft.rcvd.cross_zone.bytes` - `raft.sent.cross_zone.bytes` - [#105122][#105122] + - Added new DistSender metrics: @@ -242,7 +242,7 @@ Release Date: September 26, 2023 - `distsender.batch_requests.cross_zone.bytes` - `distsender.batch_responses.cross_zone.bytes`. - [#103963][#103963] + - Added new Node metrics: @@ -253,7 +253,7 @@ Release Date: September 26, 2023 - `batch_requests.cross_zone.bytes` - `batch_responses.cross_zone.bytes` - [#104585][#104585] + - Added new RPC metrics to help you to diagnose RPC connection issues: @@ -265,41 +265,41 @@ Release Date: September 26, 2023 - `rpc.connection.unhealthy` - `rpc.connection.unhealthy_nanos` - [#99191][#99191] - -- Added a new metric `changefeed.lagging_ranges` that shows the number of ranges which are behind in changefeeds. This metric can be used with the `metrics_label` changefeed option. Added a new [changefeed option](https://cockroachlabs.com/docs/v23.2/create-changefeed) `lagging_ranges_threshold`, which is the amount of time a range needs to be behind to be considered lagging. By default this is 3 minutes. Added a new option `lagging_ranges_polling_interval`, which controls how often the lagging ranges calculation is done. This setting defaults to polling every 1 minute. Note that polling adds latency to the metric being updated. For example, if a range falls behind by 3 minutes, the metric may not update for an additional minute afterwards. Also note that ranges undergoing an initial scan for longer than the threshold are considered to be lagging. Starting a changefeed with an initial scan on a large table will likely increment the metric for each range in the table. However, as ranges complete the initial scan, the number of ranges will decrease. [#109835][#109835] -- A histogram metric `raft.replication.latency` was added. It tracks the time between evaluation and application of the command. This includes time spent in the quota pool, in replication (including re-proposals) as well as log application, but notably *not* sequencing latency (i.e., contention and latch acquisition). [#106094][#106094] -- The default Raft scheduler concurrency cap has been increased from 96 to 128 workers, scaling with 8 workers per CPU up to the cap. The scheduler concurrency can be controlled using the `COCKROACH_SCHEDULER_CONCURRENCY` environment variable. [#105521][#105521] -- The new cluster setting `server.hot_ranges_request.node.timeout` controls the maximum amount of time that a hot ranges request will spend waiting for a node to provide a response. It defaults to 5 minutes. To disable timeouts, set it to `0`. [#107796][#107796] -- Two new cluster settings control whether intent resolution is subject to admission control: `kv.intent_resolver.send_immediately.bypass_admission_control.enabled` and `kv.intent_resolver.batch.bypass_admission_control.enabled`. [#109932][#109932] -- The new cluster setting `admission.l0_min_size_per_sub_level` reduces the probability of [admission control]({% link v23.2/admission-control.md %}) throttling when there is a sequence of small `memtable` flushes or small files ingested into L0. [#109332][#109332] -- The new cluster setting `kv.intent_resolver.batcher.in_flight_backpressure_limit.enabled` controls whether an in-flight RPC limit is enforced on intent resolution RPCs. It defaults to `false`. [#109899][#109899] -- [`BACKUP`]({% link v23.2/backup.md %}) now skips contacting the ranges for tables on which `exclude_data_from_backup` is set, and can thus succeed even if an excluded table is unavailable. [#108627][#108627] -- Span stats requests will return a partial result if the request encounters any errors. Errors that would have previously terminated the request are now included in the response. [#108456][#108456] -- The rangefeed closed timestamp interval controlled by `kv.rangefeed.closed_timestamp_refresh_interval` now defaults to 3 seconds. This affects how often rangefeeds emit resolved timestamps, and thus how often changefeeds can emit checkpoints. Previously, its default value of 0 would fall back to `kv.closed_timestamp.side_transport_interval`, which defaults to 200 milliseconds. Users who rely on the setting `kv.closed_timestamp.side_transport_interval` to control the rangefeed closed timestamp interval should make sure they either set `kv.rangefeed.closed_timestamp_refresh_interval` to 0 to retain the old behavior (preferably before upgrading), or to an appropriate value. [#108667][#108667] -- The default value of `timeout` for `http-servers` [logging sinks]({% link v23.2/configure-logs.md %}#configure-log-sinks) has been changed from `0` (i.e., "no timeout") to `2s`. This is reflected in the `http-defaults` section of the log configuration. Users still maintain the ability to override the timeout, or disable it by explicitly setting it to `0` (e.g. `timeout: 0`). [#109264][#109264] -- [Changefeed]({% link v23.2/change-data-capture-overview.md %}) metrics now include a `changefeed.checkpoint_progress` metric which is similar to `changefeed.max_behind_nanos` but supports metrics labels, as well as a `changefeed.aggregator_progress` metric which can track the progress of individual aggregators (the lowest timestamp for which all aggregators with the label have emitted all values they're responsible for). [#108757][#108757] -- Added support for Prometheus native histograms behind an environment variable flag. [#104302][#104302] -- Requests for database details or table details from the UI, or usages of [`SHOW RANGES WITH DETAILS`]{% link v23.2/show-ranges.md %} are no longer subject to errors if the number of requested spans is too large. [#109464][#109464] -- The [`cockroach debug zip`]({% link v23.2/cockroach-debug-zip.md %}) command now has an option to omit goroutine stack dumps. This impacts the creation of `nodes/*/stacks.txt` and `nodes/*/stacks_with_labels.txt` within debug ZIP bundles. Users can opt to exclude these goroutine stacks by using the `--include-goroutine-stacks=false` flag. Note that fetching stack traces for all goroutines is a "stop-the-world" operation, which can momentarily have negative impacts on SQL service latency. Note also that any periodic goroutine dumps previously taken on the node will still be included in `nodes/*/goroutines/*.txt.gz`, as these would have already been generated and don't require any stop-the-world operations. [#110177][#110177] -- New rangefeed metrics help to troubleshoot rangefeed restarts. The metric names have the format `distsender.rangefeed.retry.{reason}`. [#109346][#109346] -- Rangefeeds regularly attempt to push long-running transactions to a future timestamp in order to emit checkpoints. The interval at which this is attempted has been increased from 250 milliseconds to 1 seconds. This is now configurable via the environment variable `COCKROACH_RANGEFEED_PUSH_TXNS_INTERVAL`. [#110332][#110332] + + +- Added a new metric `changefeed.lagging_ranges` that shows the number of ranges which are behind in changefeeds. This metric can be used with the `metrics_label` changefeed option. Added a new [changefeed option](https://cockroachlabs.com/docs/v23.2/create-changefeed) `lagging_ranges_threshold`, which is the amount of time a range needs to be behind to be considered lagging. By default this is 3 minutes. Added a new option `lagging_ranges_polling_interval`, which controls how often the lagging ranges calculation is done. This setting defaults to polling every 1 minute. Note that polling adds latency to the metric being updated. For example, if a range falls behind by 3 minutes, the metric may not update for an additional minute afterwards. Also note that ranges undergoing an initial scan for longer than the threshold are considered to be lagging. Starting a changefeed with an initial scan on a large table will likely increment the metric for each range in the table. However, as ranges complete the initial scan, the number of ranges will decrease. +- A histogram metric `raft.replication.latency` was added. It tracks the time between evaluation and application of the command. This includes time spent in the quota pool, in replication (including re-proposals) as well as log application, but notably *not* sequencing latency (i.e., contention and latch acquisition). +- The default Raft scheduler concurrency cap has been increased from 96 to 128 workers, scaling with 8 workers per CPU up to the cap. The scheduler concurrency can be controlled using the `COCKROACH_SCHEDULER_CONCURRENCY` environment variable. +- The new cluster setting `server.hot_ranges_request.node.timeout` controls the maximum amount of time that a hot ranges request will spend waiting for a node to provide a response. It defaults to 5 minutes. To disable timeouts, set it to `0`. +- Two new cluster settings control whether intent resolution is subject to admission control: `kv.intent_resolver.send_immediately.bypass_admission_control.enabled` and `kv.intent_resolver.batch.bypass_admission_control.enabled`. +- The new cluster setting `admission.l0_min_size_per_sub_level` reduces the probability of [admission control]({% link v23.2/admission-control.md %}) throttling when there is a sequence of small `memtable` flushes or small files ingested into L0. +- The new cluster setting `kv.intent_resolver.batcher.in_flight_backpressure_limit.enabled` controls whether an in-flight RPC limit is enforced on intent resolution RPCs. It defaults to `false`. +- [`BACKUP`]({% link v23.2/backup.md %}) now skips contacting the ranges for tables on which `exclude_data_from_backup` is set, and can thus succeed even if an excluded table is unavailable. +- Span stats requests will return a partial result if the request encounters any errors. Errors that would have previously terminated the request are now included in the response. +- The rangefeed closed timestamp interval controlled by `kv.rangefeed.closed_timestamp_refresh_interval` now defaults to 3 seconds. This affects how often rangefeeds emit resolved timestamps, and thus how often changefeeds can emit checkpoints. Previously, its default value of 0 would fall back to `kv.closed_timestamp.side_transport_interval`, which defaults to 200 milliseconds. Users who rely on the setting `kv.closed_timestamp.side_transport_interval` to control the rangefeed closed timestamp interval should make sure they either set `kv.rangefeed.closed_timestamp_refresh_interval` to 0 to retain the old behavior (preferably before upgrading), or to an appropriate value. +- The default value of `timeout` for `http-servers` [logging sinks]({% link v23.2/configure-logs.md %}#configure-log-sinks) has been changed from `0` (i.e., "no timeout") to `2s`. This is reflected in the `http-defaults` section of the log configuration. Users still maintain the ability to override the timeout, or disable it by explicitly setting it to `0` (e.g. `timeout: 0`). +- [Changefeed]({% link v23.2/change-data-capture-overview.md %}) metrics now include a `changefeed.checkpoint_progress` metric which is similar to `changefeed.max_behind_nanos` but supports metrics labels, as well as a `changefeed.aggregator_progress` metric which can track the progress of individual aggregators (the lowest timestamp for which all aggregators with the label have emitted all values they're responsible for). +- Added support for Prometheus native histograms behind an environment variable flag. +- Requests for database details or table details from the UI, or usages of [`SHOW RANGES WITH DETAILS`]{% link v23.2/show-ranges.md %} are no longer subject to errors if the number of requested spans is too large. +- The [`cockroach debug zip`]({% link v23.2/cockroach-debug-zip.md %}) command now has an option to omit goroutine stack dumps. This impacts the creation of `nodes/*/stacks.txt` and `nodes/*/stacks_with_labels.txt` within debug ZIP bundles. Users can opt to exclude these goroutine stacks by using the `--include-goroutine-stacks=false` flag. Note that fetching stack traces for all goroutines is a "stop-the-world" operation, which can momentarily have negative impacts on SQL service latency. Note also that any periodic goroutine dumps previously taken on the node will still be included in `nodes/*/goroutines/*.txt.gz`, as these would have already been generated and don't require any stop-the-world operations. +- New rangefeed metrics help to troubleshoot rangefeed restarts. The metric names have the format `distsender.rangefeed.retry.{reason}`. +- Rangefeeds regularly attempt to push long-running transactions to a future timestamp in order to emit checkpoints. The interval at which this is attempted has been increased from 250 milliseconds to 1 seconds. This is now configurable via the environment variable `COCKROACH_RANGEFEED_PUSH_TXNS_INTERVAL`.

Cluster virtualization

When cluster virtualization is enabled: -- A selection box displays in DB Console Metrics pages when you are connected to the system virtual cluster, and allows you to view metrics for a specific virtual cluster. [#103308][#103308] -- A "no data" empty graph state has been added when switching to a virtual cluster with no data. [#103971][#103971] -- A selection box displays on custom charts in the DB Console and allows you to select a specific virtual cluster. [#103780][#103780] -- The name of the virtual cluster, when known, is now reported in logging events. [#108807][#108807] -- When `cockroach debug zip` is run for a cluster with virtualization enabled, data about virtual clusters is now stored in a `virtual` subdirectory rather than a `tenants` subdirectory. [#106117][#106117] -- When cluster virtualization is enabled, the following closed timestamp side-transport settings can be set only from the system virtual cluster: `kv.closed_timestamp.target_duration`, `kv.closed_timestamp.side_transport_interval`, and `kv.closed_timestamp.lead_for_global_reads_override`. [#108678][#108678] +- A selection box displays in DB Console Metrics pages when you are connected to the system virtual cluster, and allows you to view metrics for a specific virtual cluster. +- A "no data" empty graph state has been added when switching to a virtual cluster with no data. +- A selection box displays on custom charts in the DB Console and allows you to select a specific virtual cluster. +- The name of the virtual cluster, when known, is now reported in logging events. +- When `cockroach debug zip` is run for a cluster with virtualization enabled, data about virtual clusters is now stored in a `virtual` subdirectory rather than a `tenants` subdirectory. +- When cluster virtualization is enabled, the following closed timestamp side-transport settings can be set only from the system virtual cluster: `kv.closed_timestamp.target_duration`, `kv.closed_timestamp.side_transport_interval`, and `kv.closed_timestamp.lead_for_global_reads_override`.

Command-line changes

-- The CLI commands that output SQL data now support the JSON output format (`--format=json`), in addition to newline-delimited JSON (ND-JSON, `--format=ndjson`) that had been supported since v22.2. [#102595][#102595] -- [`cockroach debug zip`]({% link v23.2/cockroach-debug-zip.md %}) now supports the command-line flag `--format` to select the format used to store SQL table data, in the same way as [`cockroach sql`]({% link v23.2/cockroach-sql.md %}). In contrast to `cockroach sql` however, its default value is `json` (resulting in files named `.json`) and the default is not dependent on whether the terminal is interactive. [#102607][#102607] +- The CLI commands that output SQL data now support the JSON output format (`--format=json`), in addition to newline-delimited JSON (ND-JSON, `--format=ndjson`) that had been supported since v22.2. +- [`cockroach debug zip`]({% link v23.2/cockroach-debug-zip.md %}) now supports the command-line flag `--format` to select the format used to store SQL table data, in the same way as [`cockroach sql`]({% link v23.2/cockroach-sql.md %}). In contrast to `cockroach sql` however, its default value is `json` (resulting in files named `.json`) and the default is not dependent on whether the terminal is interactive. - The SQL shell now supports argument quoting for client-side commands in a similar way to `psql`: inside single quotes, `\` can escape characters and recognize octal/hexadecimal sequences; and inside double quotes characters are passed through. The quote characters themselves, when doubled, result in themselves as part of the string. For example, the following commands both result in a SQL prompt that says `go "world"`: @@ -319,7 +319,7 @@ When cluster virtualization is enabled: These quoting rules are similar to PostgreSQL, but are different from the rules used by POSIX shells and of other programming languages like Python or Go. For example, octal and hex escape sequences support a variable number of digits, and double quoted strings preserve the surrounding quotes. When in doubt, refer to the PostgreSQL documentation. - [#104610][#104610] + - The configuration for log output sinks now accepts a new `format-options` field. This can be used to customize the output of a given format. Each format accepts different options. One available option for the `json` output format is `datetime-format`. @@ -341,7 +341,7 @@ When cluster virtualization is enabled: - `iso8601` / `rfc3339`: format the time stamp like "2006-01-02T15:04:05.999999999Z". - `rfc1123`: format the time stamp like "Mon, 02 Jan 2006 15:04:05 +0000". - Enabling the `datetime` field introduces CPU overhead and is not recommended. When using output to a log collector such as Fluent or Datadog, the log collector can be configured to transform the timestamp provided by CockroachDB without requiring participation from CockroachDB itself. When inspecting a log file containing JSON output produced by CockroachDB, the command `cockroach debug merge-log` can consume the JSON data and reformat it using the `crdb-v2` format which also includes the date and time using the RFC3339 format. [#104265][#104265] + Enabling the `datetime` field introduces CPU overhead and is not recommended. When using output to a log collector such as Fluent or Datadog, the log collector can be configured to transform the timestamp provided by CockroachDB without requiring participation from CockroachDB itself. When inspecting a log file containing JSON output produced by CockroachDB, the command `cockroach debug merge-log` can consume the JSON data and reformat it using the `crdb-v2` format which also includes the date and time using the RFC3339 format. - The `json` log output format now recognizes the extra format option `datetime-timezone` which selects which timezone to use when formatting the `datetime` field. `datetime-timezone` must be combined with `datetime-format` because the default value for the latter option is `none` (i.e., `datetime` is not produced by default). For example: @@ -354,11 +354,11 @@ When cluster virtualization is enabled: format-options: {datetime-format: rfc3339, datetime-timezone: America/New_York} ~~~ - [#104265][#104265] + -- The `json` log format now recognizes the format options `tag-style` and `fluent-tag`. The existing formats `json-compact`, `json-fluent`, `json-fluent-compact` have been redefined to become aliases for `json` with different defaults for the two new options. [#104265][#104265] -- The `crdb-v1` log format now recognizes the format options `show-counter` and `colors`. The existing formats `crdb-v1-tty`, `crdb-v1-count`, `crdb-v1-tty-count` have been redefined to become aliases for `crdb-v1` with different defaults for the two new options. [#104265][#104265] -- The `crdb-v2` log format now recognizes the format option `colors`. The existing formats `crdb-v2-tty` has been redefined to become aliases for `crdb-v2` with a different default for the new option. [#104265][#104265] +- The `json` log format now recognizes the format options `tag-style` and `fluent-tag`. The existing formats `json-compact`, `json-fluent`, `json-fluent-compact` have been redefined to become aliases for `json` with different defaults for the two new options. +- The `crdb-v1` log format now recognizes the format options `show-counter` and `colors`. The existing formats `crdb-v1-tty`, `crdb-v1-count`, `crdb-v1-tty-count` have been redefined to become aliases for `crdb-v1` with different defaults for the two new options. +- The `crdb-v2` log format now recognizes the format option `colors`. The existing formats `crdb-v2-tty` has been redefined to become aliases for `crdb-v2` with a different default for the new option. - The log output formats `crdb-v1` and `crdb-v2` now support the format option `timezone`. When specified, the corresponding time zone is used to produce the timestamp column. For example: {% include_cached copy-clipboard.html %} @@ -374,15 +374,15 @@ When cluster virtualization is enabled: I230606 12:43:01.553407-040000 1 1@cli/start.go:575 ⋮ [n?] 4 soft memory limit of Go runtime is set to 35 GiB ^^^^^^^ indicates GMT-4 was used ~~~ - The timezone offset is also always included in the format if it is not zero (e.g., for non-UTC time zones). This is necessary to ensure that the times can be read back precisely. [#104265][#104265] + The timezone offset is also always included in the format if it is not zero (e.g., for non-UTC time zones). This is necessary to ensure that the times can be read back precisely. -- The command `cockroach debug merge-log` was adapted to understand time zones in input files read with format `crdb-v1` or `crdb-v2`. [#104265][#104265] -- When customizing the SQL interactive prompt, `%M` and `%m` now behave more like `psql` when connecting over a Unix datagram socket. [#105137][#105137] -- The default value of the `--format` parameter to `cockroach debug zip` is `tsv`, like other CLI commands that can extract SQL data. [#107474][#107474] -- The `debug.zip` now includes the `crdb_internal.probe_range` table with a limit of 100 rows to prevent the query from taking too long. [#107720][#107720] -- The default value for the `--max-sql-memory` parameter of the [`cockroach demo` command]({% link v23.2/cockroach-demo.md %}) has been increased from 128 MiB to 256 MiB. [#103642][#103642] -- The command `\demo recommission` has been removed from [`cockroach demo`]({% link v23.2/cockroach-demo.md %}). It had been obsolete and non-functional ever since v20.2. [#108566][#108566] -- Added limited `statement_statistics` to the debug ZIP file. [#108210][#108210] +- The command `cockroach debug merge-log` was adapted to understand time zones in input files read with format `crdb-v1` or `crdb-v2`. +- When customizing the SQL interactive prompt, `%M` and `%m` now behave more like `psql` when connecting over a Unix datagram socket. +- The default value of the `--format` parameter to `cockroach debug zip` is `tsv`, like other CLI commands that can extract SQL data. +- The `debug.zip` now includes the `crdb_internal.probe_range` table with a limit of 100 rows to prevent the query from taking too long. +- The default value for the `--max-sql-memory` parameter of the [`cockroach demo` command]({% link v23.2/cockroach-demo.md %}) has been increased from 128 MiB to 256 MiB. +- The command `\demo recommission` has been removed from [`cockroach demo`]({% link v23.2/cockroach-demo.md %}). It had been obsolete and non-functional ever since v20.2. +- Added limited `statement_statistics` to the debug ZIP file. - The following user-visible cluster settings have been renamed. The previous name is still available for backward compatibility. | Previous name | New name | @@ -398,7 +398,7 @@ When cluster virtualization is enabled: | `sql.trace.log_statement_execute` | `sql.log.all_statements.enabled` | | `trace.debug.enable`| `trace.http_debug_endpoint.enabled`| - [#109074][#109074] + - The following cluster settings have been renamed. The previous names are available for backward-compatibility. @@ -407,106 +407,106 @@ When cluster virtualization is enabled: | `spanconfig.tenant_coalesce_adjacent.enabled` | `spanconfig.range_coalescing.application.enabled` | | `spanconfig.storage_coalesce_adjacent.enabled` | `spanconfig.range_coalescing.system.enabled`| - [#109077][#109077] + -- The new `cockroach gen metric-list` command generates metadata that describes the various metrics collected by an idle server. The list does not include dynamic metric names whose names are generated based on the workload. [#109042][#109042] +- The new `cockroach gen metric-list` command generates metadata that describes the various metrics collected by an idle server. The list does not include dynamic metric names whose names are generated based on the workload.

DB Console changes

-- The time window selection for metrics charts is now encoded in the URL via query params. [#101258][#101258] -- The [Job Details page]({% link v23.2/ui-jobs-page.md %}#job-details) now has a tabbed UI that will allow users to toggle between the Overview and other future views for advanced debugging and observability. [#102737][#102737] -- Renamed "recent executions" to "active executions" in the UI. [#103784][#103784] -- The [Changefeed Dashboard]({% link v23.2/ui-cdc-dashboard.md %}) has been updated with new graphs to track backfill progress, protected timestamps age, and the number of schema registry registrations. The updates include renaming the **Sink Byte Traffic** graph to **Emitted Bytes** and the **Max Changefeed Latency** graph to **Max Checkpoint Latency**. [#101790][#101790] +- The time window selection for metrics charts is now encoded in the URL via query params. +- The [Job Details page]({% link v23.2/ui-jobs-page.md %}#job-details) now has a tabbed UI that will allow users to toggle between the Overview and other future views for advanced debugging and observability. +- Renamed "recent executions" to "active executions" in the UI. +- The [Changefeed Dashboard]({% link v23.2/ui-cdc-dashboard.md %}) has been updated with new graphs to track backfill progress, protected timestamps age, and the number of schema registry registrations. The updates include renaming the **Sink Byte Traffic** graph to **Emitted Bytes** and the **Max Changefeed Latency** graph to **Max Checkpoint Latency**. - A new **Networking** tab has been added to the DB Console metrics dashboard. Metrics for network bytes sent and received are now displayed in the **Networking** tab rather than the **Hardware** tab. In addition, the following metrics have been added: - `cr.node.round-trip-latency-p50` - `cr.node.round-trip-latency-p99` - `cr.node.rpc.connection.unhealthy` - [#104394][#104394] + -- The Job Details page now has a profiler tab for more advanced observability into a job's execution. Currently, we support collecting a cluster-wide CPU profile of the job. [#103945][#103945] -- The active executions views in the SQL Activity pages now support toggling between automatic and manual refresh. A manual refresh button was also added along with a timestamp indicating when the last refresh was performed. [#103786][#103786] -- The visibility of the cluster setting `ui.display_timezone` has been set to public. Documentation of the cluster setting has been added. No functionality has been changed. [#106530][#106530] -- Added a table in the Profiler job details page that lists all the available files describing a job's execution details [#106879][#106879] -- Add columns for p50, p90, p99 percentiles and latency min and max on Explain Plan tab on the [Statement Execution Details page]({% link v23.2/ui-statements-page.md %}#statement-execution-details-page). [#107719][#107719] -- Fixed a broken query for the database details page that was causing an infinite loading state. [#107893][#107893] -- Added summary cards with total/average values for statistics on the Statement Execution Details page. [#109056][#109056] -- The DB Console now Shows a warning when the time period selected on SQL Activity pages is older than the oldest data available. [#109164][#109164] -- Users without the `VIEWCLUSTERSETTINGS` permission but with `VIEWACTIVITY` or `VIEWACTIVITYREDACTED` can now see index recommendations. [#109047][#109047] -- The DB Console now allows non-admin users to view the [Databases page]({% link v23.2/ui-databases-page.md %}). [#109245][#109245] -- Non-admin users are able to use the Database Details page. [#109432][#109432] -- Non-admin users are able to use the Database Table page. [#109521][#109521] -- The "SQL Connection Rate" metric on the [SQL Dashboard]({% link v23.2/ui-sql-dashboard.md %}) is downsampled using the MAX function instead of SUM. This improves situations where zooming out would cause the connection rate to increase for downsampled data. [#110391][#110391] +- The Job Details page now has a profiler tab for more advanced observability into a job's execution. Currently, we support collecting a cluster-wide CPU profile of the job. +- The active executions views in the SQL Activity pages now support toggling between automatic and manual refresh. A manual refresh button was also added along with a timestamp indicating when the last refresh was performed. +- The visibility of the cluster setting `ui.display_timezone` has been set to public. Documentation of the cluster setting has been added. No functionality has been changed. +- Added a table in the Profiler job details page that lists all the available files describing a job's execution details +- Add columns for p50, p90, p99 percentiles and latency min and max on Explain Plan tab on the [Statement Execution Details page]({% link v23.2/ui-statements-page.md %}#statement-execution-details-page). +- Fixed a broken query for the database details page that was causing an infinite loading state. +- Added summary cards with total/average values for statistics on the Statement Execution Details page. +- The DB Console now Shows a warning when the time period selected on SQL Activity pages is older than the oldest data available. +- Users without the `VIEWCLUSTERSETTINGS` permission but with `VIEWACTIVITY` or `VIEWACTIVITYREDACTED` can now see index recommendations. +- The DB Console now allows non-admin users to view the [Databases page]({% link v23.2/ui-databases-page.md %}). +- Non-admin users are able to use the Database Details page. +- Non-admin users are able to use the Database Table page. +- The "SQL Connection Rate" metric on the [SQL Dashboard]({% link v23.2/ui-sql-dashboard.md %}) is downsampled using the MAX function instead of SUM. This improves situations where zooming out would cause the connection rate to increase for downsampled data.

Bug fixes

-- Fixed an internal error that can occur when [`CREATE OR REPLACE VIEW`]({% link v23.2/create-view.md %}) replaces a view with fewer columns and another entity depended on the view. [#99057][#99057] -- If views are created with circular dependencies, CockroachDB now returns an error (`cyclic view dependency for relation`) instead of crashing the node. This bug was present since at least 21.1. [#99174][#99174] -- Fixed a potential bug whereby a failed or cancelled [IMPORT]({% link v23.2/import.md %}) could in some cases leave some of the imported rows behind after it was cancelled, in the rare event that the writing processes were slow enough to continue writing after the cleanup process started. [#97071][#97071] -- Fixed a very rare bug that could cause keys to get unexpectedly deleted when rebalances occurred in a write-heavy workload. [#102164][#102164] -- It is now possible to properly redirect the output of SQL queries using the `ndjson` output table format in [`cockroach sql`]({% link v23.2/cockroach-sql.md %}). This bug had been introduced in v22.2. [#102595][#102595] -- The `unaccent` built-in [function]({% link v23.2/functions-and-operators.md %}) no longer removes spaces. [#103819][#103819] -- The details of errors pertaining to invalid descriptors are not included any more in redacted debug ZIP files. [#104050][#104050] -- Fixed a bug where join expressions were processed incorrectly. [#103782][#103782] -- Fixed a bug that could cause a [UDF]({% link v23.2/user-defined-functions.md %}) to return a value that does not conform to the return type of the UDF. This bug was only present for UDFs that return user-defined types. The bug was present since v23.1. [#104151][#104151] -- Fixed a bug where if a user was logged in while a different session dropped that user, the dropped user would still inherit privileges from the `public` role. Now, CockroachDB checks that the user exists before allowing it to inherit privileges from the `public` role. In addition, any active web sessions are now revoked when a user is dropped. [#104215][#104215] -- Fixed a bug in upstream `etcd-io/raft` which could result in pulling unlimited amount of logs into memory, and lead to out-of-memory errors. Now the log scan has a limited memory footprint. [#104483][#104483] -- Fixed a bug where, in rare circumstances, a [replication](https://cockroachlabs.com/docs/v23.2/architecture/replication-layer) could get stuck when proposed near lease or leadership changes, especially under overload, and the [replica circuit breakers]([../v23.2](https://cockroachlabs.com/docs/v23.2/architecture/replication-layer#per-replica-circuit-breakers) could trip. A previous attempt to fix this issue has been reverted in favor of this fix. [#106515][#106515] -- CockroachDB now automatically deletes statistics for dropped tables from the `system.table_statistics` table. [#105364][#105364] -- Fixed a rare internal error which occurs when a query uses a "project set" operation involving simple column expressions. [#104756][#104756] -- The [Raft]({% link v23.2/architecture/replication-layer.md %}#raft) `PreVote` and `CheckQuorum` mechanisms are now fully enabled. These prevent spurious elections when followers already have an active leader, and cause leaders to step down if they don't hear back from a quorum of followers. This improves reliability under partial and asymmetric network partitions, by avoiding spurious elections and preventing unavailability where a partially partitioned node could steal leadership away from an established leaseholder who would then no longer be able to reach the leader and submit writes. [#104042][#104042] -- Fixed a bug that could produce incorrect values for [virtual computed columns]({% link v23.2/computed-columns.md %}) in rare cases. The bug only occurred when the virtual column expression's type did not match the type of the virtual column. [#105736][#105736] -- Fixed a rounding error that could cause distributed execution for some decimal aggregate functions to return slightly inaccurate results in rare cases. [#105694][#105694] -- Fixed the `StatementStatistics.Nodes` to contain all of the nodes involved in the query. Fixed the region info in [`EXPLAIN ANALYZE (DISTSQL)`]({% link v23.2/explain-analyze.md %}) for virtual clusters. [#106587][#106587] -- Fixed a bug that caused [backups]({% link v23.2/take-full-and-incremental-backups.md %}) to fail if there are tables and functions of the same name. [#106626][#106626] -- Fixed edge cases in decimal and float evaluation for division operators. `'NaN'::DECIMAL / 0` will now return `NaN` instead of a division-by-zero error, and `0 / 'inf'::DECIMAL` will return `0` instead of `0E-2019`. [#106472][#106472] -- Fixed a bug present since before v22.2 that could cause a query with `LIMIT` and `ORDER BY` to return results in the wrong order. This bug could cause incorrect results as well if the `LIMIT` was nested within an outer query (e.g., under another `LIMIT`). [#106717][#106717] -- Added missing `SQLInstanceIDs` used to execute the statement to the telemetry `SampledQuery` event. [#106753][#106753] -- Fixed a bug where inserting geometries into a table with an inverted index involving a NaN coordinate could result in a panic. This now produces errors instead. [#106671][#106671] -- Avoid displaying `undefined` regions on the [Databases page]({% link v23.2/ui-databases-page.md %}). [#106778][#106778] -- The [`cockroach userfile upload` command]({% link v23.2/cockroach-userfile-upload.md %}) uses less memory when uploading a file. [#106056][#106056] -- `CASE`, `IF`, `COALESCE`, and `IFNULL` expressions now return an error when passed a generator function as an argument. This mirrors the behavior of PostgreSQL. [#105582][#105582] -- Fixed a bug that allowed views created with `CREATE OR REPLACE VIEW` to reference user-defined types in other databases, even with `sql.cross_db_views.enabled` set to `false`. This bug was present since user-defined types were introduced in v20.1. [#106869][#106869] -- Removed a source of unnecessary Raft snapshots during replica movement. [#106793][#106793] -- Fixed a bug where in rare situations nodes would get stuck during start-up. It would manifest itself through a stack frame sitting on a select in `waitForAdditionalStoreInit` for extended periods of time (i.e., minutes). [#107124][#107124] -- Fixed a bug that caused internal errors when using an aggregate function in an `ORDER BY` clause of a [`DELETE`]({% link v23.2/delete.md %}) or [`UPDATE`]({% link v23.2/update.md %}) statement. Aggregate functions are no longer allowed in these contexts. The bug has been present since at least v20.2. [#107641][#107641] -- The filter on the [Statements page]({% link v23.2/ui-statements-page.md %}) works when application name is an empty string. [#107750][#107750] -- The [Transaction Details page]({% link v23.2/ui-transactions-page.md %}#transaction-details-page) now loads with the fingerprint details even if no application is specified in the URL. [#107742][#107742] -- The [Schema Insights page]({% link v23.2/ui-insights-page.md %}#schema-insights-tab) no longer times out. [#107292][#107292] -- The last SQL statement in a user-defined function with a `VOID` return type can now produce any number of columns of any type. This bug was present since UDFs were introduced in v22.2. [#108299][#108299] -- Fixed a bug that caused nodes to crash when attempting to `EXECUTE` a prepared statement with an argument that referenced a user-defined function. This bug was present since user-defined functions were introduced in v22.2. [#108213][#108213] -- Fixed a bug where a release [save point]({% link v23.2/savepoint.md %}) could incorrectly emit a "cannot publish new versions for descriptors" error instead of a retryable error. [#108133][#108133] -- Users with the `VIEWACTIVITY` privilege now are able to see other users sessions from both the CLI and the DB Console. [#106590][#106590] -- Fixed a bug in [`cockroach demo`]({% link v23.2/cockroach-demo.md %}) whereby `\demo add` could sometimes crash with an error "`index out of range [...] with length ...`". This bug had been introduced in v19.x. [#108566][#108566] -- Fixed a bug introduced in v20.2 where the command `\demo decommission` in `cockroach demo` could leave the demo cluster in a broken state. [#108566][#108566] -- Fixed a bug where [`cockroach start`]({% link v23.2/cockroach-start.md %}) would sometimes incorrectly hang upon shutting down a server after encountering an internal error. This bug had been introduced some time in v22.x. [#108612][#108612] -- Fixed a bug in the index recommendations provided in the [`EXPLAIN`]({% link v23.2/explain.md %}) output where `ALTER INDEX ... VISIBLE` index recommendations may suggest making the wrong index visible when there are multiple invisible indexes in a table. [#108576][#108576] -- Users with the [`VIEWACTIVITY` privilege]({% link v23.2/grant.md %}) can now view correct values for timezones. [#108486][#108486] -- Fixed a bug present since v23.1.0 that would cause queries on the `pg_catalog.pg_statistic_ext` table to fail if a table was dropped recently. This bug also caused the `\d` CLI shortcut to encounter errors. [#108818][#108818] -- Fixed a bug where `pg_attribute` and `pg_attrdef` did not properly return results for generated columns. [#108964][#108964] -- Fixed a bug where a `SpanStatsRequest` would return post-replicated MVCC stats. Now, a `SpanStatsRequest` returns the logical MVCC stats for the requested span. [#108852][#108852] -- Fixed the column name on the selects on the tables `crdb_internal.node_txn_execution_insights` and `crdb_internal.cluster_txn_execution_insights` upon the creation of `debug.zip`. [#109444][#109444] -- Fixed the type resolution logic for `CASE` statements to more closely match Postgres' logic. In particular, we now adhere to rule 5 listed in the [PostgreSQL documentation](https://www.postgresql.org/docs/current/typeconv-union-case.html), which requires that we select the first non-unknown input type as the candidate type, then consider each other non-unknown input type, left to right (`CASE` treats its `ELSE` clause (if any) as the "first" input, with the `THEN` clauses(s) considered after that). If the candidate type can be implicitly converted to the other type, but not vice-versa, select the other type as the new candidate type. Then continue considering the remaining inputs. If, at any stage of this process, a preferred type is selected, stop considering additional inputs (note that CockroachDB does not yet support the concept of a "preferred type"). [#108387][#108387] -- Fixed an issue on the [Metrics page]({% link v23.2/ui-overview-dashboard.md %}) where no metrics would load when viewing metrics for a virtual cluster with a hyphenated name in a global context. [#109174][#109174] -- Fixed a potential livelock between a high-priority transactional read and a normal-priority write. The read pushes the timestamp of the write, but if the read gets pushed as well, it may repeatedly fail to refresh because it keeps encountering the intent of the write. [#108190][#108190] -- Fixed a nil dereference panic during node startup that could be caused by an incorrect initialization order. [#109659][#109659] -- The `difference` built-in had its return type incorrectly set to a string instead of an integer. [#109731][#109731] -- Fixed a bug that could cause a transaction performing multiple parallel foreign key checks to return a `concurrent txn use detected` error. [#109510][#109510] -- Fixed a bug causing performance regression when disabling `sql.metrics.statement_details.enabled` which caused execution stats to be collected for all queries instead of the default one percent. [#109785][#109785] -- Fixed a bug where certain SQL session variables meant to be hidden from introspection were showing up in `information_schema.session_variables`, which was incoherent with the handling in `pg_catalog.pg_settings`. [#109872][#109872] -- CockroachDB now properly handles RPC failures on writes using the parallel commit protocol that execute in parallel to the commit operation, avoiding incorrect retryable failures and `transaction unexpectedly committed` assertions by detecting when writes cannot be retried idempotently, instead returning an `AmbiguousResultError`. [#107658][#107658] -- Fixed a bug where dependencies on sequences from tables would be reported with the wrong value for the `classid` column in the `pg_catalog.pg_depend` table. [#110144][#110144] -- Two `ALTER RANGE default CONFIGURE ZONE` statements on the same line no longer displays an error. [#109774][#109774] -- Fixed a DB Console issue where the `DROP_UNUSED` index recommendations produced by the table details page produced an invalid `DROP INDEX` statement. [#110429][#110429] -- Removed buggy [TTL]({% link v23.2/row-level-ttl.md %}) descriptor repair. Previously, upgrading from v22.2.X to v23.1.9 incorrectly removed TTL storage parameters from tables (visible by running a `SHOW CREATE TABLE ;` statement) while attempting to repair table descriptors. This resulted in the node that attempted to run the TTL job crashing due to a panic caused by the missing TTL storage parameters. [#110364][#110364] -- `cockroach debug pebble` commands now work correctly with encrypted stores which don't use the default `cockroach-data` path without having to also pass `--store`. [#110150][#110150] -- Fixed a bug where `CREATE INDEX` for [partial indexes]({% link v23.2/partial-indexes.md %}) could fail with `ERROR: duplicate key value violates unique constraint` if concurrent inserts happened simultaneously. [#110216][#110216] -- Observability pages no longer crash when they encounter zeros (e.g., a session with no memory allocated). [#108752][#108752] +- Fixed an internal error that can occur when [`CREATE OR REPLACE VIEW`]({% link v23.2/create-view.md %}) replaces a view with fewer columns and another entity depended on the view. +- If views are created with circular dependencies, CockroachDB now returns an error (`cyclic view dependency for relation`) instead of crashing the node. This bug was present since at least 21.1. +- Fixed a potential bug whereby a failed or cancelled [IMPORT]({% link v23.2/import.md %}) could in some cases leave some of the imported rows behind after it was cancelled, in the rare event that the writing processes were slow enough to continue writing after the cleanup process started. +- Fixed a very rare bug that could cause keys to get unexpectedly deleted when rebalances occurred in a write-heavy workload. +- It is now possible to properly redirect the output of SQL queries using the `ndjson` output table format in [`cockroach sql`]({% link v23.2/cockroach-sql.md %}). This bug had been introduced in v22.2. +- The `unaccent` built-in [function]({% link v23.2/functions-and-operators.md %}) no longer removes spaces. +- The details of errors pertaining to invalid descriptors are not included any more in redacted debug ZIP files. +- Fixed a bug where join expressions were processed incorrectly. +- Fixed a bug that could cause a [UDF]({% link v23.2/user-defined-functions.md %}) to return a value that does not conform to the return type of the UDF. This bug was only present for UDFs that return user-defined types. The bug was present since v23.1. +- Fixed a bug where if a user was logged in while a different session dropped that user, the dropped user would still inherit privileges from the `public` role. Now, CockroachDB checks that the user exists before allowing it to inherit privileges from the `public` role. In addition, any active web sessions are now revoked when a user is dropped. +- Fixed a bug in upstream `etcd-io/raft` which could result in pulling unlimited amount of logs into memory, and lead to out-of-memory errors. Now the log scan has a limited memory footprint. +- Fixed a bug where, in rare circumstances, a [replication](https://cockroachlabs.com/docs/v23.2/architecture/replication-layer) could get stuck when proposed near lease or leadership changes, especially under overload, and the [replica circuit breakers]([../v23.2](https://cockroachlabs.com/docs/v23.2/architecture/replication-layer#per-replica-circuit-breakers) could trip. A previous attempt to fix this issue has been reverted in favor of this fix. +- CockroachDB now automatically deletes statistics for dropped tables from the `system.table_statistics` table. +- Fixed a rare internal error which occurs when a query uses a "project set" operation involving simple column expressions. +- The [Raft]({% link v23.2/architecture/replication-layer.md %}#raft) `PreVote` and `CheckQuorum` mechanisms are now fully enabled. These prevent spurious elections when followers already have an active leader, and cause leaders to step down if they don't hear back from a quorum of followers. This improves reliability under partial and asymmetric network partitions, by avoiding spurious elections and preventing unavailability where a partially partitioned node could steal leadership away from an established leaseholder who would then no longer be able to reach the leader and submit writes. +- Fixed a bug that could produce incorrect values for [virtual computed columns]({% link v23.2/computed-columns.md %}) in rare cases. The bug only occurred when the virtual column expression's type did not match the type of the virtual column. +- Fixed a rounding error that could cause distributed execution for some decimal aggregate functions to return slightly inaccurate results in rare cases. +- Fixed the `StatementStatistics.Nodes` to contain all of the nodes involved in the query. Fixed the region info in [`EXPLAIN ANALYZE (DISTSQL)`]({% link v23.2/explain-analyze.md %}) for virtual clusters. +- Fixed a bug that caused [backups]({% link v23.2/take-full-and-incremental-backups.md %}) to fail if there are tables and functions of the same name. +- Fixed edge cases in decimal and float evaluation for division operators. `'NaN'::DECIMAL / 0` will now return `NaN` instead of a division-by-zero error, and `0 / 'inf'::DECIMAL` will return `0` instead of `0E-2019`. +- Fixed a bug present since before v22.2 that could cause a query with `LIMIT` and `ORDER BY` to return results in the wrong order. This bug could cause incorrect results as well if the `LIMIT` was nested within an outer query (e.g., under another `LIMIT`). +- Added missing `SQLInstanceIDs` used to execute the statement to the telemetry `SampledQuery` event. +- Fixed a bug where inserting geometries into a table with an inverted index involving a NaN coordinate could result in a panic. This now produces errors instead. +- Avoid displaying `undefined` regions on the [Databases page]({% link v23.2/ui-databases-page.md %}). +- The [`cockroach userfile upload` command]({% link v23.2/cockroach-userfile-upload.md %}) uses less memory when uploading a file. +- `CASE`, `IF`, `COALESCE`, and `IFNULL` expressions now return an error when passed a generator function as an argument. This mirrors the behavior of PostgreSQL. +- Fixed a bug that allowed views created with `CREATE OR REPLACE VIEW` to reference user-defined types in other databases, even with `sql.cross_db_views.enabled` set to `false`. This bug was present since user-defined types were introduced in v20.1. +- Removed a source of unnecessary Raft snapshots during replica movement. +- Fixed a bug where in rare situations nodes would get stuck during start-up. It would manifest itself through a stack frame sitting on a select in `waitForAdditionalStoreInit` for extended periods of time (i.e., minutes). +- Fixed a bug that caused internal errors when using an aggregate function in an `ORDER BY` clause of a [`DELETE`]({% link v23.2/delete.md %}) or [`UPDATE`]({% link v23.2/update.md %}) statement. Aggregate functions are no longer allowed in these contexts. The bug has been present since at least v20.2. +- The filter on the [Statements page]({% link v23.2/ui-statements-page.md %}) works when application name is an empty string. +- The [Transaction Details page]({% link v23.2/ui-transactions-page.md %}#transaction-details-page) now loads with the fingerprint details even if no application is specified in the URL. +- The [Schema Insights page]({% link v23.2/ui-insights-page.md %}#schema-insights-tab) no longer times out. +- The last SQL statement in a user-defined function with a `VOID` return type can now produce any number of columns of any type. This bug was present since UDFs were introduced in v22.2. +- Fixed a bug that caused nodes to crash when attempting to `EXECUTE` a prepared statement with an argument that referenced a user-defined function. This bug was present since user-defined functions were introduced in v22.2. +- Fixed a bug where a release [save point]({% link v23.2/savepoint.md %}) could incorrectly emit a "cannot publish new versions for descriptors" error instead of a retryable error. +- Users with the `VIEWACTIVITY` privilege now are able to see other users sessions from both the CLI and the DB Console. +- Fixed a bug in [`cockroach demo`]({% link v23.2/cockroach-demo.md %}) whereby `\demo add` could sometimes crash with an error "`index out of range [...] with length ...`". This bug had been introduced in v19.x. +- Fixed a bug introduced in v20.2 where the command `\demo decommission` in `cockroach demo` could leave the demo cluster in a broken state. +- Fixed a bug where [`cockroach start`]({% link v23.2/cockroach-start.md %}) would sometimes incorrectly hang upon shutting down a server after encountering an internal error. This bug had been introduced some time in v22.x. +- Fixed a bug in the index recommendations provided in the [`EXPLAIN`]({% link v23.2/explain.md %}) output where `ALTER INDEX ... VISIBLE` index recommendations may suggest making the wrong index visible when there are multiple invisible indexes in a table. +- Users with the [`VIEWACTIVITY` privilege]({% link v23.2/grant.md %}) can now view correct values for timezones. +- Fixed a bug present since v23.1.0 that would cause queries on the `pg_catalog.pg_statistic_ext` table to fail if a table was dropped recently. This bug also caused the `\d` CLI shortcut to encounter errors. +- Fixed a bug where `pg_attribute` and `pg_attrdef` did not properly return results for generated columns. +- Fixed a bug where a `SpanStatsRequest` would return post-replicated MVCC stats. Now, a `SpanStatsRequest` returns the logical MVCC stats for the requested span. +- Fixed the column name on the selects on the tables `crdb_internal.node_txn_execution_insights` and `crdb_internal.cluster_txn_execution_insights` upon the creation of `debug.zip`. +- Fixed the type resolution logic for `CASE` statements to more closely match Postgres' logic. In particular, we now adhere to rule 5 listed in the [PostgreSQL documentation](https://www.postgresql.org/docs/current/typeconv-union-case.html), which requires that we select the first non-unknown input type as the candidate type, then consider each other non-unknown input type, left to right (`CASE` treats its `ELSE` clause (if any) as the "first" input, with the `THEN` clauses(s) considered after that). If the candidate type can be implicitly converted to the other type, but not vice-versa, select the other type as the new candidate type. Then continue considering the remaining inputs. If, at any stage of this process, a preferred type is selected, stop considering additional inputs (note that CockroachDB does not yet support the concept of a "preferred type"). +- Fixed an issue on the [Metrics page]({% link v23.2/ui-overview-dashboard.md %}) where no metrics would load when viewing metrics for a virtual cluster with a hyphenated name in a global context. +- Fixed a potential livelock between a high-priority transactional read and a normal-priority write. The read pushes the timestamp of the write, but if the read gets pushed as well, it may repeatedly fail to refresh because it keeps encountering the intent of the write. +- Fixed a nil dereference panic during node startup that could be caused by an incorrect initialization order. +- The `difference` built-in had its return type incorrectly set to a string instead of an integer. +- Fixed a bug that could cause a transaction performing multiple parallel foreign key checks to return a `concurrent txn use detected` error. +- Fixed a bug causing performance regression when disabling `sql.metrics.statement_details.enabled` which caused execution stats to be collected for all queries instead of the default one percent. +- Fixed a bug where certain SQL session variables meant to be hidden from introspection were showing up in `information_schema.session_variables`, which was incoherent with the handling in `pg_catalog.pg_settings`. +- CockroachDB now properly handles RPC failures on writes using the parallel commit protocol that execute in parallel to the commit operation, avoiding incorrect retryable failures and `transaction unexpectedly committed` assertions by detecting when writes cannot be retried idempotently, instead returning an `AmbiguousResultError`. +- Fixed a bug where dependencies on sequences from tables would be reported with the wrong value for the `classid` column in the `pg_catalog.pg_depend` table. +- Two `ALTER RANGE default CONFIGURE ZONE` statements on the same line no longer displays an error. +- Fixed a DB Console issue where the `DROP_UNUSED` index recommendations produced by the table details page produced an invalid `DROP INDEX` statement. +- Removed buggy [TTL]({% link v23.2/row-level-ttl.md %}) descriptor repair. Previously, upgrading from v22.2.X to v23.1.9 incorrectly removed TTL storage parameters from tables (visible by running a `SHOW CREATE TABLE ;` statement) while attempting to repair table descriptors. This resulted in the node that attempted to run the TTL job crashing due to a panic caused by the missing TTL storage parameters. +- `cockroach debug pebble` commands now work correctly with encrypted stores which don't use the default `cockroach-data` path without having to also pass `--store`. +- Fixed a bug where `CREATE INDEX` for [partial indexes]({% link v23.2/partial-indexes.md %}) could fail with `ERROR: duplicate key value violates unique constraint` if concurrent inserts happened simultaneously. +- Observability pages no longer crash when they encounter zeros (e.g., a session with no memory allocated). - Removed the [cluster setting]({% link v23.2/cluster-settings.md %}) `kv.snapshot_recovery.max_rate`: - In v23.2, this setting is disabled; it is a no-op. If you previously set `kv.snapshot_recovery.max_rate` on a cluster running v23.1 and upgraded to v23.2, the setting is ignored, and the [`kv.snapshot_rebalance.max_rate`]({% link v23.2/cluster-settings.md %}#setting-kv-snapshot-rebalance-max-rate ) setting is used instead. - - In v24.1 and later, this setting is removed entirely. If you had previously set `kv.snapshot_recovery.max_rate` prior to upgrade, it will be cleared, and any attempts to set it will fail with the error message: `ERROR: unknown cluster setting 'kv.snapshot_recovery.max_rate'`. [#102596][#102596] + - In v24.1 and later, this setting is removed entirely. If you had previously set `kv.snapshot_recovery.max_rate` prior to upgrade, it will be cleared, and any attempts to set it will fail with the error message: `ERROR: unknown cluster setting 'kv.snapshot_recovery.max_rate'`. - Fixed a bug in which a `CREATE FUNCTION` may produce a syntax error if the UDF body wrapped in tagged dollar quotes (e.g., `$func$`), contains two consecutive dollar signs `$$`. If the UDF body is known to contain dollar signs, then the caller should use tagged dollar quotes or single quotes when defining the UDF. For example: {% include_cached copy-clipboard.html %} @@ -514,46 +514,46 @@ When cluster virtualization is enabled: CREATE FUNCTION f(a STRING) RETURNS STRING LANGUAGE SQL AS $func$ SELECT concat('$$', a); $func$ ~~~ - [#101352][#101352] + -- CockroachDB now prevents setting `max_range_size` below the `COCKROACH_MIN_RANGE_MAX_BYTES` environment variable, which defaults to 64 MiB (half of the default minimum range size). [#96725][#96725] -- Fixed a bug that could occasionally cause schema change jobs, such as table or index drops, to appear stuck in state "waiting for MVCC GC" for much longer than expected. The fix only applies to future schema changes. To process existing stuck jobs, manually force-enqueue the relevant ranges in the MVCC GC queue from the DB Console's [Advanced Debug](https://cockroachlabs.com/docs/v23.2/ui-debug-pages) page. [#110078][#110078] -- Fixed a bug introduced when the `ChartCatalog` API endpoint was introduced, where the endpoint did not correctly report the unit of metrics. [#109042][#109042] -- Fixed a bug that could occur when the "multiple active portals" execution mode (Preview) was enabled to evaluate queries such as lookup joins. The bug could result in an internal error like `unexpected 40960 leftover bytes` if the portal was not fully consumed. [#110625][#110625] -- Fixed a bug where an `ALTER TABLE ... ADD CONSTRAINT CHECK ...` statement that utilized a user-defined function in the `CHECK` could cause a validation error. [#110130][#110130] -- Fixed a bug where `RESET (ttl_expire_after)` could incorrectly remove `ttl_expiration_expression`. [#110252][#110252] -- Fixed a bug where the `format_type` built-in did not honor `typemod` information for array types, leading to incorrect output. [#110900][#110900] -- Fixed a bug introduced in v22.2 that incorrectly allowed users without the `EXECUTE` privilege to execute a user-defined function. [#107587][#107587] +- CockroachDB now prevents setting `max_range_size` below the `COCKROACH_MIN_RANGE_MAX_BYTES` environment variable, which defaults to 64 MiB (half of the default minimum range size). +- Fixed a bug that could occasionally cause schema change jobs, such as table or index drops, to appear stuck in state "waiting for MVCC GC" for much longer than expected. The fix only applies to future schema changes. To process existing stuck jobs, manually force-enqueue the relevant ranges in the MVCC GC queue from the DB Console's [Advanced Debug](https://cockroachlabs.com/docs/v23.2/ui-debug-pages) page. +- Fixed a bug introduced when the `ChartCatalog` API endpoint was introduced, where the endpoint did not correctly report the unit of metrics. +- Fixed a bug that could occur when the "multiple active portals" execution mode (Preview) was enabled to evaluate queries such as lookup joins. The bug could result in an internal error like `unexpected 40960 leftover bytes` if the portal was not fully consumed. +- Fixed a bug where an `ALTER TABLE ... ADD CONSTRAINT CHECK ...` statement that utilized a user-defined function in the `CHECK` could cause a validation error. +- Fixed a bug where `RESET (ttl_expire_after)` could incorrectly remove `ttl_expiration_expression`. +- Fixed a bug where the `format_type` built-in did not honor `typemod` information for array types, leading to incorrect output. +- Fixed a bug introduced in v22.2 that incorrectly allowed users without the `EXECUTE` privilege to execute a user-defined function.

Performance improvements

-- The [optimizer]({% link v23.2/cost-based-optimizer.md %}) now plans inverted index scans for queries using `IN` or the `=` operators without the fetch val (`->`) operator. For example: `json_col = '{"b":"c"}' OR json_col IN ('"a"', '1')` [#101178][#101178] -- Queries that have subqueries in equality expressions are now more efficiently planned by the optimizer. [#100881][#100881] -- Query planning time has been reduced for some queries with multiple [joins]({% link v23.2/joins.md %}). [#102011][#102011] -- CockroachDB now enables the pacing mechanism in rangefeed closed timestamp notifications, by setting the default `kv.rangefeed.closed_timestamp_smear_interval` cluster setting to 1ms. This makes rangefeed closed timestamp delivery more uniform and less spikey, which reduces its impact on the Go scheduler and, ultimately, foreground SQL latencies. [#103006][#103006] -- Some large, long-running [`INSERT`]({% link v23.2/insert.md %}) statements now perform less work during their commit phase and can run faster. [#103241][#103241] -- Ranges now only quiesce after 3 seconds without proposals, to avoid frequent unquiescence which incurs an additional Raft proposal. This is configurable via the `COCKROACH_QUIESCE_AFTER_TICKS` environment variable, which defaults to 6. [#103266][#103266] -- SQL statements that must clean up intents from many different previously abandoned transactions now do so moderately more efficiently. [#103265][#103265] -- The optimizer can now avoid a grouping stage in more cases when de-duplicating the input to an [`UPSERT`]({% link v23.2/upsert.md %}) or `INSERT ... ON CONFLICT` statement. [#105206][#105206] -- The optimizer can now eliminate joins in more cases. [#105214][#105214] -- CockroachDB now improves the time to disk space reclamation when deleting rows. Previously, in scenarios where rows had large variations in row size, it was possible for disk space to not be reclaimed after MVCC garbage collection deleted the rows. [#104539][#104539] -- CockroachDB now has improved disk space reclamation heuristics, making disk space reclamation more timely. [#106177][#106177] -- `bool_and` and `bool_or` aggregates will now scale linearly instead of quadratically when used as a window function with a non-shrinking window, [#106477][#106477] -- CockroachDB now has reduced lock contention on `ssmemstorage.RecordStatement`. This is useful for workloads that execute the same statement concurrently on the same SQL instance. [#106860][#106860] -- The optimizer now produces more efficient query plans in some cases for queries with subqueries and user-defined functions. [#107133][#107133] -- The default Raft entry cache size has been increased from 16 MB to 1/256 of system memory with a minimum of 32 MB, divided evenly between all stores. This can be configured using the `COCKROACH_RAFT_ENTRY_CACHE_SIZE` environment variable. [#107424][#107424] -- CockroachDB now automatically collects table statistics on the `system.jobs` table, which will enable the optimizer to produce better query plans for internal queries that access the `system.jobs` table. This may result in better performance of the system. [#108139][#108139] -- The impact of high concurrency blind writes to the same key on goroutine scheduling latency was reduced. [#109349][#109349] -- [Changefeeds]({% link v23.2/change-data-capture-overview.md %}) to Webhook or Pub/Sub endpoints now support much higher throughput [#109351][#109351] -- This release improved the cost of resolving a user-defined enum type that has many values. [#109394][#109394] -- Queries that compare collated strings now use less memory and may execute faster. [#110066][#110066] -- Added a scheduler based rangefeed processor which improves rangefeed and changefeed performance for very large tables. The new processor is disabled by default, but can be enabled by setting `kv.rangefeed.scheduler.enabled` cluster setting to `true`. [#107553][#107553] -- This release disables `sql.defaults.zigzag_join.enabled` by default. [#110214][#110214] +- The [optimizer]({% link v23.2/cost-based-optimizer.md %}) now plans inverted index scans for queries using `IN` or the `=` operators without the fetch val (`->`) operator. For example: `json_col = '{"b":"c"}' OR json_col IN ('"a"', '1')` +- Queries that have subqueries in equality expressions are now more efficiently planned by the optimizer. +- Query planning time has been reduced for some queries with multiple [joins]({% link v23.2/joins.md %}). +- CockroachDB now enables the pacing mechanism in rangefeed closed timestamp notifications, by setting the default `kv.rangefeed.closed_timestamp_smear_interval` cluster setting to 1ms. This makes rangefeed closed timestamp delivery more uniform and less spikey, which reduces its impact on the Go scheduler and, ultimately, foreground SQL latencies. +- Some large, long-running [`INSERT`]({% link v23.2/insert.md %}) statements now perform less work during their commit phase and can run faster. +- Ranges now only quiesce after 3 seconds without proposals, to avoid frequent unquiescence which incurs an additional Raft proposal. This is configurable via the `COCKROACH_QUIESCE_AFTER_TICKS` environment variable, which defaults to 6. +- SQL statements that must clean up intents from many different previously abandoned transactions now do so moderately more efficiently. +- The optimizer can now avoid a grouping stage in more cases when de-duplicating the input to an [`UPSERT`]({% link v23.2/upsert.md %}) or `INSERT ... ON CONFLICT` statement. +- The optimizer can now eliminate joins in more cases. +- CockroachDB now improves the time to disk space reclamation when deleting rows. Previously, in scenarios where rows had large variations in row size, it was possible for disk space to not be reclaimed after MVCC garbage collection deleted the rows. +- CockroachDB now has improved disk space reclamation heuristics, making disk space reclamation more timely. +- `bool_and` and `bool_or` aggregates will now scale linearly instead of quadratically when used as a window function with a non-shrinking window, +- CockroachDB now has reduced lock contention on `ssmemstorage.RecordStatement`. This is useful for workloads that execute the same statement concurrently on the same SQL instance. +- The optimizer now produces more efficient query plans in some cases for queries with subqueries and user-defined functions. +- The default Raft entry cache size has been increased from 16 MB to 1/256 of system memory with a minimum of 32 MB, divided evenly between all stores. This can be configured using the `COCKROACH_RAFT_ENTRY_CACHE_SIZE` environment variable. +- CockroachDB now automatically collects table statistics on the `system.jobs` table, which will enable the optimizer to produce better query plans for internal queries that access the `system.jobs` table. This may result in better performance of the system. +- The impact of high concurrency blind writes to the same key on goroutine scheduling latency was reduced. +- [Changefeeds]({% link v23.2/change-data-capture-overview.md %}) to Webhook or Pub/Sub endpoints now support much higher throughput +- This release improved the cost of resolving a user-defined enum type that has many values. +- Queries that compare collated strings now use less memory and may execute faster. +- Added a scheduler based rangefeed processor which improves rangefeed and changefeed performance for very large tables. The new processor is disabled by default, but can be enabled by setting `kv.rangefeed.scheduler.enabled` cluster setting to `true`. +- This release disables `sql.defaults.zigzag_join.enabled` by default.

Build changes

-- Go has been upgraded to 1.20.8. [#109773][#109773] -- The top-level `Makefile` was replaced by a stub `GNUmakefile` which defers its behavior to `dev`. The common targets `make [all]`, `make test`, and `make install` remain for compatibility with most UNIX installation guides. The previous `make` rules remain available via `make -C build/GNUmakefile.obsolete`. [#84565][#84565] +- Go has been upgraded to 1.20.8. +- The top-level `Makefile` was replaced by a stub `GNUmakefile` which defers its behavior to `dev`. The common targets `make [all]`, `make test`, and `make install` remain for compatibility with most UNIX installation guides. The previous `make` rules remain available via `make -C build/GNUmakefile.obsolete`.
@@ -562,468 +562,3 @@ When cluster virtualization is enabled: This release includes 3208 merged PRs by 124 authors.
- -[#100113]: https://github.com/cockroachdb/cockroach/pull/100113 -[#100199]: https://github.com/cockroachdb/cockroach/pull/100199 -[#100524]: https://github.com/cockroachdb/cockroach/pull/100524 -[#100612]: https://github.com/cockroachdb/cockroach/pull/100612 -[#100742]: https://github.com/cockroachdb/cockroach/pull/100742 -[#100858]: https://github.com/cockroachdb/cockroach/pull/100858 -[#100881]: https://github.com/cockroachdb/cockroach/pull/100881 -[#100898]: https://github.com/cockroachdb/cockroach/pull/100898 -[#100929]: https://github.com/cockroachdb/cockroach/pull/100929 -[#100942]: https://github.com/cockroachdb/cockroach/pull/100942 -[#101095]: https://github.com/cockroachdb/cockroach/pull/101095 -[#101178]: https://github.com/cockroachdb/cockroach/pull/101178 -[#101258]: https://github.com/cockroachdb/cockroach/pull/101258 -[#101334]: https://github.com/cockroachdb/cockroach/pull/101334 -[#101352]: https://github.com/cockroachdb/cockroach/pull/101352 -[#101388]: https://github.com/cockroachdb/cockroach/pull/101388 -[#101525]: https://github.com/cockroachdb/cockroach/pull/101525 -[#101675]: https://github.com/cockroachdb/cockroach/pull/101675 -[#101787]: https://github.com/cockroachdb/cockroach/pull/101787 -[#101790]: https://github.com/cockroachdb/cockroach/pull/101790 -[#101812]: https://github.com/cockroachdb/cockroach/pull/101812 -[#101869]: https://github.com/cockroachdb/cockroach/pull/101869 -[#101931]: https://github.com/cockroachdb/cockroach/pull/101931 -[#101932]: https://github.com/cockroachdb/cockroach/pull/101932 -[#102011]: https://github.com/cockroachdb/cockroach/pull/102011 -[#102033]: https://github.com/cockroachdb/cockroach/pull/102033 -[#102164]: https://github.com/cockroachdb/cockroach/pull/102164 -[#102595]: https://github.com/cockroachdb/cockroach/pull/102595 -[#102596]: https://github.com/cockroachdb/cockroach/pull/102596 -[#102607]: https://github.com/cockroachdb/cockroach/pull/102607 -[#102708]: https://github.com/cockroachdb/cockroach/pull/102708 -[#102717]: https://github.com/cockroachdb/cockroach/pull/102717 -[#102737]: https://github.com/cockroachdb/cockroach/pull/102737 -[#102772]: https://github.com/cockroachdb/cockroach/pull/102772 -[#102773]: https://github.com/cockroachdb/cockroach/pull/102773 -[#102890]: https://github.com/cockroachdb/cockroach/pull/102890 -[#102961]: https://github.com/cockroachdb/cockroach/pull/102961 -[#102974]: https://github.com/cockroachdb/cockroach/pull/102974 -[#103006]: https://github.com/cockroachdb/cockroach/pull/103006 -[#103051]: https://github.com/cockroachdb/cockroach/pull/103051 -[#103077]: https://github.com/cockroachdb/cockroach/pull/103077 -[#103115]: https://github.com/cockroachdb/cockroach/pull/103115 -[#103128]: https://github.com/cockroachdb/cockroach/pull/103128 -[#103138]: https://github.com/cockroachdb/cockroach/pull/103138 -[#103145]: https://github.com/cockroachdb/cockroach/pull/103145 -[#103241]: https://github.com/cockroachdb/cockroach/pull/103241 -[#103259]: https://github.com/cockroachdb/cockroach/pull/103259 -[#103265]: https://github.com/cockroachdb/cockroach/pull/103265 -[#103266]: https://github.com/cockroachdb/cockroach/pull/103266 -[#103285]: https://github.com/cockroachdb/cockroach/pull/103285 -[#103301]: https://github.com/cockroachdb/cockroach/pull/103301 -[#103308]: https://github.com/cockroachdb/cockroach/pull/103308 -[#103436]: https://github.com/cockroachdb/cockroach/pull/103436 -[#103476]: https://github.com/cockroachdb/cockroach/pull/103476 -[#103482]: https://github.com/cockroachdb/cockroach/pull/103482 -[#103525]: https://github.com/cockroachdb/cockroach/pull/103525 -[#103531]: https://github.com/cockroachdb/cockroach/pull/103531 -[#103539]: https://github.com/cockroachdb/cockroach/pull/103539 -[#103590]: https://github.com/cockroachdb/cockroach/pull/103590 -[#103598]: https://github.com/cockroachdb/cockroach/pull/103598 -[#103642]: https://github.com/cockroachdb/cockroach/pull/103642 -[#103670]: https://github.com/cockroachdb/cockroach/pull/103670 -[#103780]: https://github.com/cockroachdb/cockroach/pull/103780 -[#103782]: https://github.com/cockroachdb/cockroach/pull/103782 -[#103784]: https://github.com/cockroachdb/cockroach/pull/103784 -[#103786]: https://github.com/cockroachdb/cockroach/pull/103786 -[#103819]: https://github.com/cockroachdb/cockroach/pull/103819 -[#103921]: https://github.com/cockroachdb/cockroach/pull/103921 -[#103923]: https://github.com/cockroachdb/cockroach/pull/103923 -[#103930]: https://github.com/cockroachdb/cockroach/pull/103930 -[#103945]: https://github.com/cockroachdb/cockroach/pull/103945 -[#103963]: https://github.com/cockroachdb/cockroach/pull/103963 -[#103971]: https://github.com/cockroachdb/cockroach/pull/103971 -[#104042]: https://github.com/cockroachdb/cockroach/pull/104042 -[#104050]: https://github.com/cockroachdb/cockroach/pull/104050 -[#104079]: https://github.com/cockroachdb/cockroach/pull/104079 -[#104111]: https://github.com/cockroachdb/cockroach/pull/104111 -[#104151]: https://github.com/cockroachdb/cockroach/pull/104151 -[#104215]: https://github.com/cockroachdb/cockroach/pull/104215 -[#104234]: https://github.com/cockroachdb/cockroach/pull/104234 -[#104265]: https://github.com/cockroachdb/cockroach/pull/104265 -[#104302]: https://github.com/cockroachdb/cockroach/pull/104302 -[#104375]: https://github.com/cockroachdb/cockroach/pull/104375 -[#104376]: https://github.com/cockroachdb/cockroach/pull/104376 -[#104394]: https://github.com/cockroachdb/cockroach/pull/104394 -[#104410]: https://github.com/cockroachdb/cockroach/pull/104410 -[#104417]: https://github.com/cockroachdb/cockroach/pull/104417 -[#104439]: https://github.com/cockroachdb/cockroach/pull/104439 -[#104483]: https://github.com/cockroachdb/cockroach/pull/104483 -[#104528]: https://github.com/cockroachdb/cockroach/pull/104528 -[#104539]: https://github.com/cockroachdb/cockroach/pull/104539 -[#104585]: https://github.com/cockroachdb/cockroach/pull/104585 -[#104610]: https://github.com/cockroachdb/cockroach/pull/104610 -[#104755]: https://github.com/cockroachdb/cockroach/pull/104755 -[#104756]: https://github.com/cockroachdb/cockroach/pull/104756 -[#104772]: https://github.com/cockroachdb/cockroach/pull/104772 -[#104777]: https://github.com/cockroachdb/cockroach/pull/104777 -[#104915]: https://github.com/cockroachdb/cockroach/pull/104915 -[#104929]: https://github.com/cockroachdb/cockroach/pull/104929 -[#104945]: https://github.com/cockroachdb/cockroach/pull/104945 -[#105006]: https://github.com/cockroachdb/cockroach/pull/105006 -[#105009]: https://github.com/cockroachdb/cockroach/pull/105009 -[#105031]: https://github.com/cockroachdb/cockroach/pull/105031 -[#105122]: https://github.com/cockroachdb/cockroach/pull/105122 -[#105137]: https://github.com/cockroachdb/cockroach/pull/105137 -[#105206]: https://github.com/cockroachdb/cockroach/pull/105206 -[#105214]: https://github.com/cockroachdb/cockroach/pull/105214 -[#105270]: https://github.com/cockroachdb/cockroach/pull/105270 -[#105326]: https://github.com/cockroachdb/cockroach/pull/105326 -[#105364]: https://github.com/cockroachdb/cockroach/pull/105364 -[#105456]: https://github.com/cockroachdb/cockroach/pull/105456 -[#105477]: https://github.com/cockroachdb/cockroach/pull/105477 -[#105521]: https://github.com/cockroachdb/cockroach/pull/105521 -[#105530]: https://github.com/cockroachdb/cockroach/pull/105530 -[#105582]: https://github.com/cockroachdb/cockroach/pull/105582 -[#105654]: https://github.com/cockroachdb/cockroach/pull/105654 -[#105694]: https://github.com/cockroachdb/cockroach/pull/105694 -[#105716]: https://github.com/cockroachdb/cockroach/pull/105716 -[#105736]: https://github.com/cockroachdb/cockroach/pull/105736 -[#105750]: https://github.com/cockroachdb/cockroach/pull/105750 -[#105839]: https://github.com/cockroachdb/cockroach/pull/105839 -[#105842]: https://github.com/cockroachdb/cockroach/pull/105842 -[#105857]: https://github.com/cockroachdb/cockroach/pull/105857 -[#105876]: https://github.com/cockroachdb/cockroach/pull/105876 -[#105877]: https://github.com/cockroachdb/cockroach/pull/105877 -[#105881]: https://github.com/cockroachdb/cockroach/pull/105881 -[#105944]: https://github.com/cockroachdb/cockroach/pull/105944 -[#106056]: https://github.com/cockroachdb/cockroach/pull/106056 -[#106082]: https://github.com/cockroachdb/cockroach/pull/106082 -[#106094]: https://github.com/cockroachdb/cockroach/pull/106094 -[#106103]: https://github.com/cockroachdb/cockroach/pull/106103 -[#106104]: https://github.com/cockroachdb/cockroach/pull/106104 -[#106117]: https://github.com/cockroachdb/cockroach/pull/106117 -[#106145]: https://github.com/cockroachdb/cockroach/pull/106145 -[#106177]: https://github.com/cockroachdb/cockroach/pull/106177 -[#106242]: https://github.com/cockroachdb/cockroach/pull/106242 -[#106267]: https://github.com/cockroachdb/cockroach/pull/106267 -[#106270]: https://github.com/cockroachdb/cockroach/pull/106270 -[#106351]: https://github.com/cockroachdb/cockroach/pull/106351 -[#106402]: https://github.com/cockroachdb/cockroach/pull/106402 -[#106438]: https://github.com/cockroachdb/cockroach/pull/106438 -[#106445]: https://github.com/cockroachdb/cockroach/pull/106445 -[#106472]: https://github.com/cockroachdb/cockroach/pull/106472 -[#106477]: https://github.com/cockroachdb/cockroach/pull/106477 -[#106525]: https://github.com/cockroachdb/cockroach/pull/106525 -[#106530]: https://github.com/cockroachdb/cockroach/pull/106530 -[#106549]: https://github.com/cockroachdb/cockroach/pull/106549 -[#106574]: https://github.com/cockroachdb/cockroach/pull/106574 -[#106587]: https://github.com/cockroachdb/cockroach/pull/106587 -[#106590]: https://github.com/cockroachdb/cockroach/pull/106590 -[#106595]: https://github.com/cockroachdb/cockroach/pull/106595 -[#106607]: https://github.com/cockroachdb/cockroach/pull/106607 -[#106626]: https://github.com/cockroachdb/cockroach/pull/106626 -[#106642]: https://github.com/cockroachdb/cockroach/pull/106642 -[#106671]: https://github.com/cockroachdb/cockroach/pull/106671 -[#106717]: https://github.com/cockroachdb/cockroach/pull/106717 -[#106750]: https://github.com/cockroachdb/cockroach/pull/106750 -[#106753]: https://github.com/cockroachdb/cockroach/pull/106753 -[#106778]: https://github.com/cockroachdb/cockroach/pull/106778 -[#106793]: https://github.com/cockroachdb/cockroach/pull/106793 -[#106860]: https://github.com/cockroachdb/cockroach/pull/106860 -[#106869]: https://github.com/cockroachdb/cockroach/pull/106869 -[#106879]: https://github.com/cockroachdb/cockroach/pull/106879 -[#106952]: https://github.com/cockroachdb/cockroach/pull/106952 -[#107044]: https://github.com/cockroachdb/cockroach/pull/107044 -[#107076]: https://github.com/cockroachdb/cockroach/pull/107076 -[#107081]: https://github.com/cockroachdb/cockroach/pull/107081 -[#107090]: https://github.com/cockroachdb/cockroach/pull/107090 -[#107124]: https://github.com/cockroachdb/cockroach/pull/107124 -[#107128]: https://github.com/cockroachdb/cockroach/pull/107128 -[#107133]: https://github.com/cockroachdb/cockroach/pull/107133 -[#107178]: https://github.com/cockroachdb/cockroach/pull/107178 -[#107211]: https://github.com/cockroachdb/cockroach/pull/107211 -[#107292]: https://github.com/cockroachdb/cockroach/pull/107292 -[#107294]: https://github.com/cockroachdb/cockroach/pull/107294 -[#107296]: https://github.com/cockroachdb/cockroach/pull/107296 -[#107299]: https://github.com/cockroachdb/cockroach/pull/107299 -[#107303]: https://github.com/cockroachdb/cockroach/pull/107303 -[#107309]: https://github.com/cockroachdb/cockroach/pull/107309 -[#107317]: https://github.com/cockroachdb/cockroach/pull/107317 -[#107392]: https://github.com/cockroachdb/cockroach/pull/107392 -[#107424]: https://github.com/cockroachdb/cockroach/pull/107424 -[#107474]: https://github.com/cockroachdb/cockroach/pull/107474 -[#107533]: https://github.com/cockroachdb/cockroach/pull/107533 -[#107553]: https://github.com/cockroachdb/cockroach/pull/107553 -[#107563]: https://github.com/cockroachdb/cockroach/pull/107563 -[#107572]: https://github.com/cockroachdb/cockroach/pull/107572 -[#107601]: https://github.com/cockroachdb/cockroach/pull/107601 -[#107613]: https://github.com/cockroachdb/cockroach/pull/107613 -[#107641]: https://github.com/cockroachdb/cockroach/pull/107641 -[#107658]: https://github.com/cockroachdb/cockroach/pull/107658 -[#107682]: https://github.com/cockroachdb/cockroach/pull/107682 -[#107717]: https://github.com/cockroachdb/cockroach/pull/107717 -[#107719]: https://github.com/cockroachdb/cockroach/pull/107719 -[#107720]: https://github.com/cockroachdb/cockroach/pull/107720 -[#107742]: https://github.com/cockroachdb/cockroach/pull/107742 -[#107749]: https://github.com/cockroachdb/cockroach/pull/107749 -[#107750]: https://github.com/cockroachdb/cockroach/pull/107750 -[#107796]: https://github.com/cockroachdb/cockroach/pull/107796 -[#107815]: https://github.com/cockroachdb/cockroach/pull/107815 -[#107863]: https://github.com/cockroachdb/cockroach/pull/107863 -[#107893]: https://github.com/cockroachdb/cockroach/pull/107893 -[#107920]: https://github.com/cockroachdb/cockroach/pull/107920 -[#107953]: https://github.com/cockroachdb/cockroach/pull/107953 -[#107984]: https://github.com/cockroachdb/cockroach/pull/107984 -[#108037]: https://github.com/cockroachdb/cockroach/pull/108037 -[#108047]: https://github.com/cockroachdb/cockroach/pull/108047 -[#108133]: https://github.com/cockroachdb/cockroach/pull/108133 -[#108139]: https://github.com/cockroachdb/cockroach/pull/108139 -[#108190]: https://github.com/cockroachdb/cockroach/pull/108190 -[#108210]: https://github.com/cockroachdb/cockroach/pull/108210 -[#108211]: https://github.com/cockroachdb/cockroach/pull/108211 -[#108213]: https://github.com/cockroachdb/cockroach/pull/108213 -[#108289]: https://github.com/cockroachdb/cockroach/pull/108289 -[#108290]: https://github.com/cockroachdb/cockroach/pull/108290 -[#108299]: https://github.com/cockroachdb/cockroach/pull/108299 -[#108353]: https://github.com/cockroachdb/cockroach/pull/108353 -[#108387]: https://github.com/cockroachdb/cockroach/pull/108387 -[#108401]: https://github.com/cockroachdb/cockroach/pull/108401 -[#108456]: https://github.com/cockroachdb/cockroach/pull/108456 -[#108467]: https://github.com/cockroachdb/cockroach/pull/108467 -[#108486]: https://github.com/cockroachdb/cockroach/pull/108486 -[#108566]: https://github.com/cockroachdb/cockroach/pull/108566 -[#108576]: https://github.com/cockroachdb/cockroach/pull/108576 -[#108597]: https://github.com/cockroachdb/cockroach/pull/108597 -[#108612]: https://github.com/cockroachdb/cockroach/pull/108612 -[#108627]: https://github.com/cockroachdb/cockroach/pull/108627 -[#108667]: https://github.com/cockroachdb/cockroach/pull/108667 -[#108678]: https://github.com/cockroachdb/cockroach/pull/108678 -[#108752]: https://github.com/cockroachdb/cockroach/pull/108752 -[#108757]: https://github.com/cockroachdb/cockroach/pull/108757 -[#108807]: https://github.com/cockroachdb/cockroach/pull/108807 -[#108818]: https://github.com/cockroachdb/cockroach/pull/108818 -[#108824]: https://github.com/cockroachdb/cockroach/pull/108824 -[#108852]: https://github.com/cockroachdb/cockroach/pull/108852 -[#108883]: https://github.com/cockroachdb/cockroach/pull/108883 -[#108923]: https://github.com/cockroachdb/cockroach/pull/108923 -[#108964]: https://github.com/cockroachdb/cockroach/pull/108964 -[#109047]: https://github.com/cockroachdb/cockroach/pull/109047 -[#109056]: https://github.com/cockroachdb/cockroach/pull/109056 -[#109074]: https://github.com/cockroachdb/cockroach/pull/109074 -[#109077]: https://github.com/cockroachdb/cockroach/pull/109077 -[#109164]: https://github.com/cockroachdb/cockroach/pull/109164 -[#109165]: https://github.com/cockroachdb/cockroach/pull/109165 -[#109166]: https://github.com/cockroachdb/cockroach/pull/109166 -[#109171]: https://github.com/cockroachdb/cockroach/pull/109171 -[#109174]: https://github.com/cockroachdb/cockroach/pull/109174 -[#109226]: https://github.com/cockroachdb/cockroach/pull/109226 -[#109229]: https://github.com/cockroachdb/cockroach/pull/109229 -[#109245]: https://github.com/cockroachdb/cockroach/pull/109245 -[#109258]: https://github.com/cockroachdb/cockroach/pull/109258 -[#109264]: https://github.com/cockroachdb/cockroach/pull/109264 -[#109332]: https://github.com/cockroachdb/cockroach/pull/109332 -[#109346]: https://github.com/cockroachdb/cockroach/pull/109346 -[#109349]: https://github.com/cockroachdb/cockroach/pull/109349 -[#109351]: https://github.com/cockroachdb/cockroach/pull/109351 -[#109374]: https://github.com/cockroachdb/cockroach/pull/109374 -[#109394]: https://github.com/cockroachdb/cockroach/pull/109394 -[#109424]: https://github.com/cockroachdb/cockroach/pull/109424 -[#109432]: https://github.com/cockroachdb/cockroach/pull/109432 -[#109444]: https://github.com/cockroachdb/cockroach/pull/109444 -[#109464]: https://github.com/cockroachdb/cockroach/pull/109464 -[#109474]: https://github.com/cockroachdb/cockroach/pull/109474 -[#109510]: https://github.com/cockroachdb/cockroach/pull/109510 -[#109530]: https://github.com/cockroachdb/cockroach/pull/109530 -[#109592]: https://github.com/cockroachdb/cockroach/pull/109592 -[#109659]: https://github.com/cockroachdb/cockroach/pull/109659 -[#109694]: https://github.com/cockroachdb/cockroach/pull/109694 -[#109696]: https://github.com/cockroachdb/cockroach/pull/109696 -[#109720]: https://github.com/cockroachdb/cockroach/pull/109720 -[#109727]: https://github.com/cockroachdb/cockroach/pull/109727 -[#109731]: https://github.com/cockroachdb/cockroach/pull/109731 -[#109773]: https://github.com/cockroachdb/cockroach/pull/109773 -[#109774]: https://github.com/cockroachdb/cockroach/pull/109774 -[#109785]: https://github.com/cockroachdb/cockroach/pull/109785 -[#109790]: https://github.com/cockroachdb/cockroach/pull/109790 -[#109835]: https://github.com/cockroachdb/cockroach/pull/109835 -[#109844]: https://github.com/cockroachdb/cockroach/pull/109844 -[#109872]: https://github.com/cockroachdb/cockroach/pull/109872 -[#109899]: https://github.com/cockroachdb/cockroach/pull/109899 -[#109932]: https://github.com/cockroachdb/cockroach/pull/109932 -[#110066]: https://github.com/cockroachdb/cockroach/pull/110066 -[#110107]: https://github.com/cockroachdb/cockroach/pull/110107 -[#110144]: https://github.com/cockroachdb/cockroach/pull/110144 -[#110150]: https://github.com/cockroachdb/cockroach/pull/110150 -[#110173]: https://github.com/cockroachdb/cockroach/pull/110173 -[#110174]: https://github.com/cockroachdb/cockroach/pull/110174 -[#110177]: https://github.com/cockroachdb/cockroach/pull/110177 -[#110214]: https://github.com/cockroachdb/cockroach/pull/110214 -[#110216]: https://github.com/cockroachdb/cockroach/pull/110216 -[#110220]: https://github.com/cockroachdb/cockroach/pull/110220 -[#110280]: https://github.com/cockroachdb/cockroach/pull/110280 -[#110332]: https://github.com/cockroachdb/cockroach/pull/110332 -[#110364]: https://github.com/cockroachdb/cockroach/pull/110364 -[#110391]: https://github.com/cockroachdb/cockroach/pull/110391 -[#110429]: https://github.com/cockroachdb/cockroach/pull/110429 -[#110527]: https://github.com/cockroachdb/cockroach/pull/110527 -[#42063]: https://github.com/cockroachdb/cockroach/pull/42063 -[#87301]: https://github.com/cockroachdb/cockroach/pull/87301 -[#96725]: https://github.com/cockroachdb/cockroach/pull/96725 -[#97071]: https://github.com/cockroachdb/cockroach/pull/97071 -[#97728]: https://github.com/cockroachdb/cockroach/pull/97728 -[#98203]: https://github.com/cockroachdb/cockroach/pull/98203 -[#98208]: https://github.com/cockroachdb/cockroach/pull/98208 -[#98382]: https://github.com/cockroachdb/cockroach/pull/98382 -[#98562]: https://github.com/cockroachdb/cockroach/pull/98562 -[#98709]: https://github.com/cockroachdb/cockroach/pull/98709 -[#98820]: https://github.com/cockroachdb/cockroach/pull/98820 -[#98848]: https://github.com/cockroachdb/cockroach/pull/98848 -[#98899]: https://github.com/cockroachdb/cockroach/pull/98899 -[#99057]: https://github.com/cockroachdb/cockroach/pull/99057 -[#99069]: https://github.com/cockroachdb/cockroach/pull/99069 -[#99126]: https://github.com/cockroachdb/cockroach/pull/99126 -[#99174]: https://github.com/cockroachdb/cockroach/pull/99174 -[#99191]: https://github.com/cockroachdb/cockroach/pull/99191 -[#99275]: https://github.com/cockroachdb/cockroach/pull/99275 -[#99348]: https://github.com/cockroachdb/cockroach/pull/99348 -[#99526]: https://github.com/cockroachdb/cockroach/pull/99526 -[#99789]: https://github.com/cockroachdb/cockroach/pull/99789 -[#99839]: https://github.com/cockroachdb/cockroach/pull/99839 -[#99842]: https://github.com/cockroachdb/cockroach/pull/99842 -[#99847]: https://github.com/cockroachdb/cockroach/pull/99847 -[#99876]: https://github.com/cockroachdb/cockroach/pull/99876 -[06cd54a4e]: https://github.com/cockroachdb/cockroach/commit/06cd54a4e -[09506add4]: https://github.com/cockroachdb/cockroach/commit/09506add4 -[0c660fa0d]: https://github.com/cockroachdb/cockroach/commit/0c660fa0d -[0de1c8aaf]: https://github.com/cockroachdb/cockroach/commit/0de1c8aaf -[1629e11a6]: https://github.com/cockroachdb/cockroach/commit/1629e11a6 -[1b8d40fbc]: https://github.com/cockroachdb/cockroach/commit/1b8d40fbc -[208a7eb6c]: https://github.com/cockroachdb/cockroach/commit/208a7eb6c -[20e033cf2]: https://github.com/cockroachdb/cockroach/commit/20e033cf2 -[2132ebd00]: https://github.com/cockroachdb/cockroach/commit/2132ebd00 -[22bbef16d]: https://github.com/cockroachdb/cockroach/commit/22bbef16d -[26d007b7e]: https://github.com/cockroachdb/cockroach/commit/26d007b7e -[27af3713a]: https://github.com/cockroachdb/cockroach/commit/27af3713a -[28fe10f03]: https://github.com/cockroachdb/cockroach/commit/28fe10f03 -[29edf817d]: https://github.com/cockroachdb/cockroach/commit/29edf817d -[2b1553ce6]: https://github.com/cockroachdb/cockroach/commit/2b1553ce6 -[2b39f1af4]: https://github.com/cockroachdb/cockroach/commit/2b39f1af4 -[2bbd66e03]: https://github.com/cockroachdb/cockroach/commit/2bbd66e03 -[2f782d32a]: https://github.com/cockroachdb/cockroach/commit/2f782d32a -[311fdc318]: https://github.com/cockroachdb/cockroach/commit/311fdc318 -[338e99bb4]: https://github.com/cockroachdb/cockroach/commit/338e99bb4 -[346bbc9a9]: https://github.com/cockroachdb/cockroach/commit/346bbc9a9 -[36d18daf8]: https://github.com/cockroachdb/cockroach/commit/36d18daf8 -[36e098f6b]: https://github.com/cockroachdb/cockroach/commit/36e098f6b -[3b35d3b0d]: https://github.com/cockroachdb/cockroach/commit/3b35d3b0d -[3c12e0d20]: https://github.com/cockroachdb/cockroach/commit/3c12e0d20 -[3c64af25d]: https://github.com/cockroachdb/cockroach/commit/3c64af25d -[3faf1e1eb]: https://github.com/cockroachdb/cockroach/commit/3faf1e1eb -[401cc12f8]: https://github.com/cockroachdb/cockroach/commit/401cc12f8 -[43cc87f80]: https://github.com/cockroachdb/cockroach/commit/43cc87f80 -[4741147f7]: https://github.com/cockroachdb/cockroach/commit/4741147f7 -[488e5a3ae]: https://github.com/cockroachdb/cockroach/commit/488e5a3ae -[49855990f]: https://github.com/cockroachdb/cockroach/commit/49855990f -[4b5fa7ce6]: https://github.com/cockroachdb/cockroach/commit/4b5fa7ce6 -[4e8a998bc]: https://github.com/cockroachdb/cockroach/commit/4e8a998bc -[4f02d6c09]: https://github.com/cockroachdb/cockroach/commit/4f02d6c09 -[5320237ce]: https://github.com/cockroachdb/cockroach/commit/5320237ce -[53f2fcd9a]: https://github.com/cockroachdb/cockroach/commit/53f2fcd9a -[55745a86e]: https://github.com/cockroachdb/cockroach/commit/55745a86e -[5b3e4e311]: https://github.com/cockroachdb/cockroach/commit/5b3e4e311 -[5bf79409d]: https://github.com/cockroachdb/cockroach/commit/5bf79409d -[5c1909bde]: https://github.com/cockroachdb/cockroach/commit/5c1909bde -[5c2920177]: https://github.com/cockroachdb/cockroach/commit/5c2920177 -[5ef1e3442]: https://github.com/cockroachdb/cockroach/commit/5ef1e3442 -[5f4496b89]: https://github.com/cockroachdb/cockroach/commit/5f4496b89 -[5fe941557]: https://github.com/cockroachdb/cockroach/commit/5fe941557 -[62665c54d]: https://github.com/cockroachdb/cockroach/commit/62665c54d -[655588aa2]: https://github.com/cockroachdb/cockroach/commit/655588aa2 -[6886ce4ce]: https://github.com/cockroachdb/cockroach/commit/6886ce4ce -[69c682c17]: https://github.com/cockroachdb/cockroach/commit/69c682c17 -[6f1a0761a]: https://github.com/cockroachdb/cockroach/commit/6f1a0761a -[70b00643b]: https://github.com/cockroachdb/cockroach/commit/70b00643b -[70c51c0a3]: https://github.com/cockroachdb/cockroach/commit/70c51c0a3 -[70dce126e]: https://github.com/cockroachdb/cockroach/commit/70dce126e -[746d4ff92]: https://github.com/cockroachdb/cockroach/commit/746d4ff92 -[759e606b8]: https://github.com/cockroachdb/cockroach/commit/759e606b8 -[75ec8b7cd]: https://github.com/cockroachdb/cockroach/commit/75ec8b7cd -[76860d69b]: https://github.com/cockroachdb/cockroach/commit/76860d69b -[7846c54ee]: https://github.com/cockroachdb/cockroach/commit/7846c54ee -[788decfef]: https://github.com/cockroachdb/cockroach/commit/788decfef -[7a6dbc31b]: https://github.com/cockroachdb/cockroach/commit/7a6dbc31b -[7c307a8e6]: https://github.com/cockroachdb/cockroach/commit/7c307a8e6 -[7f433bb0f]: https://github.com/cockroachdb/cockroach/commit/7f433bb0f -[7fa8b09c9]: https://github.com/cockroachdb/cockroach/commit/7fa8b09c9 -[836ca4355]: https://github.com/cockroachdb/cockroach/commit/836ca4355 -[85c5ff414]: https://github.com/cockroachdb/cockroach/commit/85c5ff414 -[89639fc5d]: https://github.com/cockroachdb/cockroach/commit/89639fc5d -[8a54f4d3c]: https://github.com/cockroachdb/cockroach/commit/8a54f4d3c -[8eecff7cf]: https://github.com/cockroachdb/cockroach/commit/8eecff7cf -[8fc9cf3bf]: https://github.com/cockroachdb/cockroach/commit/8fc9cf3bf -[90862db03]: https://github.com/cockroachdb/cockroach/commit/90862db03 -[9194c4fb3]: https://github.com/cockroachdb/cockroach/commit/9194c4fb3 -[92def9e4e]: https://github.com/cockroachdb/cockroach/commit/92def9e4e -[9332af775]: https://github.com/cockroachdb/cockroach/commit/9332af775 -[9397945fd]: https://github.com/cockroachdb/cockroach/commit/9397945fd -[968870b00]: https://github.com/cockroachdb/cockroach/commit/968870b00 -[9816f30fc]: https://github.com/cockroachdb/cockroach/commit/9816f30fc -[98744d378]: https://github.com/cockroachdb/cockroach/commit/98744d378 -[9885b80f3]: https://github.com/cockroachdb/cockroach/commit/9885b80f3 -[99c8020da]: https://github.com/cockroachdb/cockroach/commit/99c8020da -[9b5991d4d]: https://github.com/cockroachdb/cockroach/commit/9b5991d4d -[9d96bb69d]: https://github.com/cockroachdb/cockroach/commit/9d96bb69d -[9faf13771]: https://github.com/cockroachdb/cockroach/commit/9faf13771 -[a2545b4f8]: https://github.com/cockroachdb/cockroach/commit/a2545b4f8 -[a65c98636]: https://github.com/cockroachdb/cockroach/commit/a65c98636 -[a732de028]: https://github.com/cockroachdb/cockroach/commit/a732de028 -[a83c0e1e8]: https://github.com/cockroachdb/cockroach/commit/a83c0e1e8 -[a9358f9cb]: https://github.com/cockroachdb/cockroach/commit/a9358f9cb -[ab9f165ef]: https://github.com/cockroachdb/cockroach/commit/ab9f165ef -[af4df7927]: https://github.com/cockroachdb/cockroach/commit/af4df7927 -[b0360e59b]: https://github.com/cockroachdb/cockroach/commit/b0360e59b -[b1a554371]: https://github.com/cockroachdb/cockroach/commit/b1a554371 -[b2add06c5]: https://github.com/cockroachdb/cockroach/commit/b2add06c5 -[b40009496]: https://github.com/cockroachdb/cockroach/commit/b40009496 -[b4dead6ac]: https://github.com/cockroachdb/cockroach/commit/b4dead6ac -[b56d4660f]: https://github.com/cockroachdb/cockroach/commit/b56d4660f -[ba3b8a4b8]: https://github.com/cockroachdb/cockroach/commit/ba3b8a4b8 -[bb5d813e5]: https://github.com/cockroachdb/cockroach/commit/bb5d813e5 -[bc8c500f8]: https://github.com/cockroachdb/cockroach/commit/bc8c500f8 -[bea148291]: https://github.com/cockroachdb/cockroach/commit/bea148291 -[bed253e8c]: https://github.com/cockroachdb/cockroach/commit/bed253e8c -[c096bd7f3]: https://github.com/cockroachdb/cockroach/commit/c096bd7f3 -[c2e4b695b]: https://github.com/cockroachdb/cockroach/commit/c2e4b695b -[c42294531]: https://github.com/cockroachdb/cockroach/commit/c42294531 -[c968a33a5]: https://github.com/cockroachdb/cockroach/commit/c968a33a5 -[caaa7d8c2]: https://github.com/cockroachdb/cockroach/commit/caaa7d8c2 -[cc232325e]: https://github.com/cockroachdb/cockroach/commit/cc232325e -[ceb5cd52d]: https://github.com/cockroachdb/cockroach/commit/ceb5cd52d -[cfa437560]: https://github.com/cockroachdb/cockroach/commit/cfa437560 -[d14d7b678]: https://github.com/cockroachdb/cockroach/commit/d14d7b678 -[d1c7fcd34]: https://github.com/cockroachdb/cockroach/commit/d1c7fcd34 -[d21226daa]: https://github.com/cockroachdb/cockroach/commit/d21226daa -[d795e6d12]: https://github.com/cockroachdb/cockroach/commit/d795e6d12 -[db60a0718]: https://github.com/cockroachdb/cockroach/commit/db60a0718 -[df30a451b]: https://github.com/cockroachdb/cockroach/commit/df30a451b -[e3c07672d]: https://github.com/cockroachdb/cockroach/commit/e3c07672d -[e3e9b77b9]: https://github.com/cockroachdb/cockroach/commit/e3e9b77b9 -[e9f52e5fb]: https://github.com/cockroachdb/cockroach/commit/e9f52e5fb -[ea5a2ff15]: https://github.com/cockroachdb/cockroach/commit/ea5a2ff15 -[ec0ca0730]: https://github.com/cockroachdb/cockroach/commit/ec0ca0730 -[f0da5e8ec]: https://github.com/cockroachdb/cockroach/commit/f0da5e8ec -[f2ab387b9]: https://github.com/cockroachdb/cockroach/commit/f2ab387b9 -[f3619c1e1]: https://github.com/cockroachdb/cockroach/commit/f3619c1e1 -[f5800498f]: https://github.com/cockroachdb/cockroach/commit/f5800498f -[f9aca5d95]: https://github.com/cockroachdb/cockroach/commit/f9aca5d95 -[fb8f99b15]: https://github.com/cockroachdb/cockroach/commit/fb8f99b15 -[fc5920459]: https://github.com/cockroachdb/cockroach/commit/fc5920459 -[fedb692ae]: https://github.com/cockroachdb/cockroach/commit/fedb692ae -[fef97d93c]: https://github.com/cockroachdb/cockroach/commit/fef97d93c -[#110624]: https://github.com/cockroachdb/cockroach/pull/110624 -[#110623]: https://github.com/cockroachdb/cockroach/pull/110623 -[#107788]: https://github.com/cockroachdb/cockroach/pull/107788 -[#109042]: https://github.com/cockroachdb/cockroach/pull/109042 -[#109521]: https://github.com/cockroachdb/cockroach/pull/109521 -[#110078]: https://github.com/cockroachdb/cockroach/pull/110078 -[#110625]: https://github.com/cockroachdb/cockroach/pull/110625 -[#110130]: https://github.com/cockroachdb/cockroach/pull/110130 -[#110252]: https://github.com/cockroachdb/cockroach/pull/110252 -[#110900]: https://github.com/cockroachdb/cockroach/pull/110900 -[#107587]: https://github.com/cockroachdb/cockroach/pull/107587 -[#106515]: https://github.com/cockroachdb/cockroach/pull/106515 -[#84565]: https://github.com/cockroachdb/cockroach/pull/84565 diff --git a/src/current/_includes/releases/v23.2/v23.2.0-alpha.2.md b/src/current/_includes/releases/v23.2/v23.2.0-alpha.2.md index 67f37ef82b7..fdbca331c4b 100644 --- a/src/current/_includes/releases/v23.2/v23.2.0-alpha.2.md +++ b/src/current/_includes/releases/v23.2/v23.2.0-alpha.2.md @@ -6,19 +6,19 @@ Release Date: October 2, 2023

Security updates

-- The `SIGHUP` signal now clears the cached expiration times for [client certificates]({% link v23.2/cockroach-cert.md %}#how-security-certificates-work) that are reported by the `security.certificate.expiration.client` metric. [#110726][#110726] +- The `SIGHUP` signal now clears the cached expiration times for [client certificates]({% link v23.2/cockroach-cert.md %}#how-security-certificates-work) that are reported by the `security.certificate.expiration.client` metric.

General changes

-- Increased the maximum permitted value of the `COCKROACH_RPC_INITIAL_WINDOW_SIZE` environment variable to 64MB. In conjunction with tuning your operating system's maximum TCP window size, this can increase the throughput that Raft replication can sustain over high latency network links. [#111255][#111255] +- Increased the maximum permitted value of the `COCKROACH_RPC_INITIAL_WINDOW_SIZE` environment variable to 64MB. In conjunction with tuning your operating system's maximum TCP window size, this can increase the throughput that Raft replication can sustain over high latency network links.

SQL language changes

-- The `discard` [log message]({% link v23.2/logging-overview.md %}) is now limited to once per minute by default. The message now includes both the number of transactions and the number of statements that were discarded. [#110805][#110805] -- The [cluster setting]({% link v23.2/cluster-settings.md %}) `kv.rangefeed.enabled` no longer controls access to `RANGEFEED SQL` commands. Instead, use `feature.changefeed.enabled`. [#110676][#110676] -- SQL commands that were previously limited to the `admin` [system privilege](https://www.cockroachlabs.com/docs/v23.2/security-reference/authorization#supported-privileges) can now be used by users with the `VIEWCLUSTERMETADATA` or `REPAIRCLUSTERMETADATA` system privilege, depending on whether the operation is read-only or modifies state. [#110084][#110084] -- Added a `last_error` column to the `cluster_execution_insights`, `node_execution_insights`, `cluster_txn_execution_insights`, and `node_txn_execution_insights` tables. These columns contain error messages for failed executions. [#110565][#110565] -- The new backup option `updates_cluster_monitoring_metrics` tracks the timestamp of the last backup failure due to a KMS error. This option is disabled by default. [#104634][#104634] +- The `discard` [log message]({% link v23.2/logging-overview.md %}) is now limited to once per minute by default. The message now includes both the number of transactions and the number of statements that were discarded. +- The [cluster setting]({% link v23.2/cluster-settings.md %}) `kv.rangefeed.enabled` no longer controls access to `RANGEFEED SQL` commands. Instead, use `feature.changefeed.enabled`. +- SQL commands that were previously limited to the `admin` [system privilege](https://www.cockroachlabs.com/docs/v23.2/security-reference/authorization#supported-privileges) can now be used by users with the `VIEWCLUSTERMETADATA` or `REPAIRCLUSTERMETADATA` system privilege, depending on whether the operation is read-only or modifies state. +- Added a `last_error` column to the `cluster_execution_insights`, `node_execution_insights`, `cluster_txn_execution_insights`, and `node_txn_execution_insights` tables. These columns contain error messages for failed executions. +- The new backup option `updates_cluster_monitoring_metrics` tracks the timestamp of the last backup failure due to a KMS error. This option is disabled by default. - The new restore option `strip_localities` optionally strips the locality information from a backup when restoring to a cluster with different regions than the source cluster. Restoring a cluster or database that contains regional-by-row tables, or restoring a regional-by-row table, requires you to modify the database: @@ -30,7 +30,7 @@ Release Date: October 2, 2023 This change is part of a larger effort, and this feature is subject to change. - [#110606][#110606] + - Added a check to disallow queries that use predicate locking, since explicit uniqueness checks are not yet supported under Read Committed isolation. `INSERT`, `UPDATE`, and `UPSERT` statements against some `REGIONAL BY ROW` tables will fail under Read Committed isolation with the following error: @@ -38,22 +38,22 @@ Release Date: October 2, 2023 unimplemented: explicit unique checks are not yet supported under read committed isolation SQLSTATE: 0A000 ~~~ - For more details about which `REGIONAL BY ROW` tables are affected, refer to [Issue #110873](https://github.com/cockroachdb/cockroach/issues/110873). + For more details about which `REGIONAL BY ROW` tables are affected, refer to . - [#110879][#110879] -- The `created` field produced by `SHOW STATISTICS` has been updated from `TIMESTAMP` to `TIMESTAMPTZ`. Statistic creation times are now displayed in the session time zone if it is set. [#110753][#110753] + +- The `created` field produced by `SHOW STATISTICS` has been updated from `TIMESTAMP` to `TIMESTAMPTZ`. Statistic creation times are now displayed in the session time zone if it is set.

Operational changes

-- Removed the node-level `engine.stalls` timeseries metric. This metric has not been updated for several releases. [#110936][#110936] +- Removed the node-level `engine.stalls` timeseries metric. This metric has not been updated for several releases.

DB Console changes

-- The legend is now always displayed on charts in DB Console Metrics pages. In addition, when you select an item from the legend that represents a single line in the chart, that line is selected in the chart. [#110809][#110809] -- When collecting a [statement bundle]({% link v23.2/cockroach-statement-diag.md %}), you can now filter by a specific [plan gist]({% link v23.2/ui-statements-page.md %}#explain-plans) or collect diagnostics for all plan gists. [#110931][#110931] -- [Statement]({% link v23.2/ui-statements-page.md %}) and [Transaction]({% link v23.2/ui-transactions-page.md %}) detail pages now include an **Error Message** row. Users with the `VIEWACTIVITY` [system privilege](https://www.cockroachlabs.com/docs/v23.2/security-reference/authorization#supported-privileges) can view the full error message, and users with the `VIEWACTIVTYREDACTED` system privilege can view the redacted error message. If a user has both privileges, `VIEWACTIVITYTREDACTED`` takes precedence. [#110849][#110849] -- A new dashboard in the [SQL Dashboard page]({% link v23.2/ui-sql-dashboard.md %}) tracks how often distributed queries with errors were rerun using the "rerun as local" mechanism, as well as how often those reruns failed. the number of times distributed queries that resulted in errors were rerun as local as well as when those reruns failed. The "rerun as local" mechanism is new in v23.2 and is enabled by default. For more information, contact your Cockroach Labs account representative. [#110619][#110619] -- The DB Console [Insights page](https://cockroachlabs.com/docs/v23.2/ui-insights-page) now shows the error message when a transaction fails at the `COMMIT` stage. [#110898][#110898] +- The legend is now always displayed on charts in DB Console Metrics pages. In addition, when you select an item from the legend that represents a single line in the chart, that line is selected in the chart. +- When collecting a [statement bundle]({% link v23.2/cockroach-statement-diag.md %}), you can now filter by a specific [plan gist]({% link v23.2/ui-statements-page.md %}#explain-plans) or collect diagnostics for all plan gists. +- [Statement]({% link v23.2/ui-statements-page.md %}) and [Transaction]({% link v23.2/ui-transactions-page.md %}) detail pages now include an **Error Message** row. Users with the `VIEWACTIVITY` [system privilege](https://www.cockroachlabs.com/docs/v23.2/security-reference/authorization#supported-privileges) can view the full error message, and users with the `VIEWACTIVTYREDACTED` system privilege can view the redacted error message. If a user has both privileges, `VIEWACTIVITYTREDACTED`` takes precedence. +- A new dashboard in the [SQL Dashboard page]({% link v23.2/ui-sql-dashboard.md %}) tracks how often distributed queries with errors were rerun using the "rerun as local" mechanism, as well as how often those reruns failed. the number of times distributed queries that resulted in errors were rerun as local as well as when those reruns failed. The "rerun as local" mechanism is new in v23.2 and is enabled by default. For more information, contact your Cockroach Labs account representative. +- The DB Console [Insights page](https://cockroachlabs.com/docs/v23.2/ui-insights-page) now shows the error message when a transaction fails at the `COMMIT` stage. - The [Overload Dashboard page]({% link v23.2/ui-overload-dashboard.md %}) now includes the following graphs to monitor [admission control](https://www.cockroachlabs.com/docs/v23.2/admission-control.html): - **IO Overload** - Charts normalized metric based on admission control target thresholds. Replaces **LSM L0 Health** graph which used raw metrics. - **KV Admission Slots Exhausted** - Replaces **KV Admission Slots** graph. @@ -64,56 +64,21 @@ Release Date: October 2, 2023

Bug fixes

-- Fixed a race condition in the [Replica lifecycle](https://www.cockroachlabs.com/docs/v23.2/architecture/replication-layer) that could result in a failed SQL request when the request could have been successfully retried. [#110806][#110806] -- Fixed a bug where a [`CREATE TABLE`]({% link v23.2/create-table.md %}) command with an `IDENTITY` column did not properly propagate the type of the column into the sequence. [#110621][#110621] -- Fixed a panic when decoding a gist in a foreign database that does not contain a table referred to by the gist. [#110966][#110966] -- A synthetic `dropped` column have been added to the `pg_attribute` table. This column tracks the attribution numbers for dropped attributions, to work around issues with ORMs that are not designed to handle gaps in attribution numbering in the `pg_attribute` table. [#111019][#111019] -- Fixed a rare internal error in the `unnest` and `information_schema._pg_expandarray` [built-in functions]({% link v23.2/functions-and-operators.md %}) where passed string arguments could be cast to an array. [#110956][#110956] -- External connection URLs now accept the scheme `azure-blob` for connections to Azure Blob Storage and the scheme `azure-kms` for connections to Azure KMS. For backward compatibility, schemes `azure` and `azure-storage` schemes continue to work for connections to Azure Blob Storage. [#111217][#111217] -- Fixed a bug where vectorized `COPY FROM` could produce a plan with more than one RenderNodes, when only zero or one should be allowed. This could result in multiple render nodes in a table with a hash sharded primary key. [#111284][#111284] -- Fixed a bug in DB Console's Statement Diagnostic page that could cause the page to crash if the response was larger than 50 KB. The page now keeps pulling results until no maximum size errors are encountered. [#111128][#111128] -- Fixed a bug where DB Console instances proxied at different subpaths that use OIDC pointed to an incorrect relative OIDC login path. [#111240][#111240] -- Fixed a bug where changing the setting `server.telemetry.hot_ranges_stats.interval` had no effect. [#111305][#111305] +- Fixed a race condition in the [Replica lifecycle](https://www.cockroachlabs.com/docs/v23.2/architecture/replication-layer) that could result in a failed SQL request when the request could have been successfully retried. +- Fixed a bug where a [`CREATE TABLE`]({% link v23.2/create-table.md %}) command with an `IDENTITY` column did not properly propagate the type of the column into the sequence. +- Fixed a panic when decoding a gist in a foreign database that does not contain a table referred to by the gist. +- A synthetic `dropped` column have been added to the `pg_attribute` table. This column tracks the attribution numbers for dropped attributions, to work around issues with ORMs that are not designed to handle gaps in attribution numbering in the `pg_attribute` table. +- Fixed a rare internal error in the `unnest` and `information_schema._pg_expandarray` [built-in functions]({% link v23.2/functions-and-operators.md %}) where passed string arguments could be cast to an array. +- External connection URLs now accept the scheme `azure-blob` for connections to Azure Blob Storage and the scheme `azure-kms` for connections to Azure KMS. For backward compatibility, schemes `azure` and `azure-storage` schemes continue to work for connections to Azure Blob Storage. +- Fixed a bug where vectorized `COPY FROM` could produce a plan with more than one RenderNodes, when only zero or one should be allowed. This could result in multiple render nodes in a table with a hash sharded primary key. +- Fixed a bug in DB Console's Statement Diagnostic page that could cause the page to crash if the response was larger than 50 KB. The page now keeps pulling results until no maximum size errors are encountered. +- Fixed a bug where DB Console instances proxied at different subpaths that use OIDC pointed to an incorrect relative OIDC login path. +- Fixed a bug where changing the setting `server.telemetry.hot_ranges_stats.interval` had no effect.

Performance improvements

-- Fixed a performance bug that could result in rewriting a 128-MB file each time a store file is created, renamed, or removed when [Encryption At Rest](https://www.cockroachlabs.com/docs/v23.2/security-reference/encryption#encryption-at-rest) is enabled on a large store with many small files. [#111069][#111069] -- Improved compaction heuristics to mitigate read amplification growth and admission control throttling when processing large deletes, such as during node decommissioning, replica rebalancing, or when dropping tables. [#111277][#111277] +- Fixed a performance bug that could result in rewriting a 128-MB file each time a store file is created, renamed, or removed when [Encryption At Rest](https://www.cockroachlabs.com/docs/v23.2/security-reference/encryption#encryption-at-rest) is enabled on a large store with many small files. +- Improved compaction heuristics to mitigate read amplification growth and admission control throttling when processing large deletes, such as during node decommissioning, replica rebalancing, or when dropping tables. -

Contributors

- -This release includes [157 merged PRs by 54 authors](https://github.com/cockroachdb/cockroach/compare/v23.2.0-alpha.1...2111b61b2d7c789bc03b1e9392062df80c779075). - -[#104634]: https://github.com/cockroachdb/cockroach/pull/104634 -[#110084]: https://github.com/cockroachdb/cockroach/pull/110084 -[#110135]: https://github.com/cockroachdb/cockroach/pull/110135 -[#110565]: https://github.com/cockroachdb/cockroach/pull/110565 -[#110606]: https://github.com/cockroachdb/cockroach/pull/110606 -[#110609]: https://github.com/cockroachdb/cockroach/pull/110609 -[#110619]: https://github.com/cockroachdb/cockroach/pull/110619 -[#110621]: https://github.com/cockroachdb/cockroach/pull/110621 -[#110676]: https://github.com/cockroachdb/cockroach/pull/110676 -[#110726]: https://github.com/cockroachdb/cockroach/pull/110726 -[#110753]: https://github.com/cockroachdb/cockroach/pull/110753 -[#110805]: https://github.com/cockroachdb/cockroach/pull/110805 -[#110806]: https://github.com/cockroachdb/cockroach/pull/110806 -[#110809]: https://github.com/cockroachdb/cockroach/pull/110809 -[#110849]: https://github.com/cockroachdb/cockroach/pull/110849 -[#110879]: https://github.com/cockroachdb/cockroach/pull/110879 -[#110898]: https://github.com/cockroachdb/cockroach/pull/110898 -[#110931]: https://github.com/cockroachdb/cockroach/pull/110931 -[#110936]: https://github.com/cockroachdb/cockroach/pull/110936 -[#110956]: https://github.com/cockroachdb/cockroach/pull/110956 -[#110966]: https://github.com/cockroachdb/cockroach/pull/110966 -[#111019]: https://github.com/cockroachdb/cockroach/pull/111019 -[#111069]: https://github.com/cockroachdb/cockroach/pull/111069 -[#111115]: https://github.com/cockroachdb/cockroach/pull/111115 -[#111128]: https://github.com/cockroachdb/cockroach/pull/111128 -[#111217]: https://github.com/cockroachdb/cockroach/pull/111217 -[#111240]: https://github.com/cockroachdb/cockroach/pull/111240 -[#111255]: https://github.com/cockroachdb/cockroach/pull/111255 -[#111277]: https://github.com/cockroachdb/cockroach/pull/111277 -[#111284]: https://github.com/cockroachdb/cockroach/pull/111284 -[#111305]: https://github.com/cockroachdb/cockroach/pull/111305 diff --git a/src/current/_includes/releases/v23.2/v23.2.0-alpha.3.md b/src/current/_includes/releases/v23.2/v23.2.0-alpha.3.md index 62a75fb043d..31b54fbf409 100644 --- a/src/current/_includes/releases/v23.2/v23.2.0-alpha.3.md +++ b/src/current/_includes/releases/v23.2/v23.2.0-alpha.3.md @@ -69,37 +69,37 @@ Release Date: October 10, 2023

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

-- [Changefeeds](../v23.2/create-and-configure-changefeeds.html) now support the `confluent-cloud://` sink scheme. This scheme can be used to connect to Kafka hosted on Confluent Cloud. The scheme functions identically to Kafka, but it has it's own authentication parameters. Namely, it requires `api_key` and `api_secret` to be passed as parameters in the sink URI. They must be URL encoded. An example URI is: `'confluent-cloud://pkc-lzvrd.us-west4.gcp.confluent.cloud:9092?api_key=&api_secret='`. By default, the options `tls_enabled=true`, `sasl_handshake=true`, `sasl_enabled=true`, and `sasl_mechanism=PLAIN` are applied. For more information about authenticating with Confluent Cloud, see https://docs.confluent.io/platform/current/security/security_tutorial.html#overview. The sink scheme still supports non-authentication parameters such as `topic_name` and `topic_prefix`. It also supports the standard Kafka changefeed options (ex. `kafka_sink_config`). [#111368][#111368] +- [Changefeeds](../v23.2/create-and-configure-changefeeds.html) now support the `confluent-cloud://` sink scheme. This scheme can be used to connect to Kafka hosted on Confluent Cloud. The scheme functions identically to Kafka, but it has it's own authentication parameters. Namely, it requires `api_key` and `api_secret` to be passed as parameters in the sink URI. They must be URL encoded. An example URI is: `'confluent-cloud://pkc-lzvrd.us-west4.gcp.confluent.cloud:9092?api_key=&api_secret='`. By default, the options `tls_enabled=true`, `sasl_handshake=true`, `sasl_enabled=true`, and `sasl_mechanism=PLAIN` are applied. For more information about authenticating with Confluent Cloud, see https://docs.confluent.io/platform/current/security/security_tutorial.html#overview. The sink scheme still supports non-authentication parameters such as `topic_name` and `topic_prefix`. It also supports the standard Kafka changefeed options (ex. `kafka_sink_config`).

SQL language changes

-- The [`RESTORE`](../v23.2/restore.html) option `strip_localities`, which was added in [#110606](https://github.com/cockroachdb/cockroach/pull/110606), has been renamed to `remove_regions`. This option will lead to a "region-less restore"; it is used to strip the locality and region information from a backup when there are mismatched cluster regions between the backup's cluster and the target cluster. Note that a restore using this option will fail if the backup's cluster had [`REGIONAL BY ROW`](../v23.2/multiregion-overview.html#table-locality) table localities. This is because the `RESTORE` statement has a contract that all tables must be available to serve writes once it finishes. [#111356][#111356] -- Added initial support for executing the PLpgSQL `OPEN` statement, which allows a PLpgSQL routine to create a [cursor](../v23.2/cursors.html). Currently, opening bound or unnamed cursors is not supported. In addition, `OPEN` statements cannot be used in a routine with an exception block. [#110709][#110709] -- Added support for declaring bound [cursors](../v23.2/cursors.html), which associate a query with a cursor in a PLpgSQL routine before it is opened. [#111092][#111092] -- The `SELECT FOR SHARE` and `SELECT FOR KEY SHARE` statements previously did not acquire any locks. Users issuing these statements would expect them to acquire shared locks (multiple readers allowed, but no writers). This patch switches over the behavior to acquire such read locks when the user has selected the [`READ COMMITTED` isolation level](../v23.2/transactions.html#isolation-levels). For serializable transactions, we default to the previous behavior, unless the `enable_shared_locking_for_serializable` [session setting](../v23.2/set-vars.html) is set to `true`. [#109638][#109638] -- When a PLpgSQL exception handler catches an error, it now rolls back any changes to database state that occurred within the block. Exception blocks are not currently permitted to catch [`40001`](../v23.2/common-errors.html#restart-transaction) and [`40003`](../v23.2/common-errors.html#result-is-ambiguous) errors. [#110998][#110998] -- Added support for unnamed PLpgSQL [cursors](../v23.2/cursors.html), which generate a unique name when no cursor name was specified. [#111329][#111329] -- Fixed a bug that caused CockroachDB to stop collecting new statistics about [Statement fingerprints](../v23.2/ui-statements-page.html#statement-fingerprint-page) and [Transaction fingerprints](../v23.2/ui-transactions-page.html). [#111613][#111613] -- Make the `max_event_frequency` [metric](../v23.2/metrics.html) visible for public documentation and usage. This is the maximum event frequency at which we sample executions for telemetry. [#111594][#111594] +- The [`RESTORE`](../v23.2/restore.html) option `strip_localities`, which was added in, has been renamed to `remove_regions`. This option will lead to a "region-less restore"; it is used to strip the locality and region information from a backup when there are mismatched cluster regions between the backup's cluster and the target cluster. Note that a restore using this option will fail if the backup's cluster had [`REGIONAL BY ROW`](../v23.2/multiregion-overview.html#table-locality) table localities. This is because the `RESTORE` statement has a contract that all tables must be available to serve writes once it finishes. +- Added initial support for executing the PLpgSQL `OPEN` statement, which allows a PLpgSQL routine to create a [cursor](../v23.2/cursors.html). Currently, opening bound or unnamed cursors is not supported. In addition, `OPEN` statements cannot be used in a routine with an exception block. +- Added support for declaring bound [cursors](../v23.2/cursors.html), which associate a query with a cursor in a PLpgSQL routine before it is opened. +- The `SELECT FOR SHARE` and `SELECT FOR KEY SHARE` statements previously did not acquire any locks. Users issuing these statements would expect them to acquire shared locks (multiple readers allowed, but no writers). This patch switches over the behavior to acquire such read locks when the user has selected the [`READ COMMITTED` isolation level](../v23.2/transactions.html#isolation-levels). For serializable transactions, we default to the previous behavior, unless the `enable_shared_locking_for_serializable` [session setting](../v23.2/set-vars.html) is set to `true`. +- When a PLpgSQL exception handler catches an error, it now rolls back any changes to database state that occurred within the block. Exception blocks are not currently permitted to catch [`40001`](../v23.2/common-errors.html#restart-transaction) and [`40003`](../v23.2/common-errors.html#result-is-ambiguous) errors. +- Added support for unnamed PLpgSQL [cursors](../v23.2/cursors.html), which generate a unique name when no cursor name was specified. +- Fixed a bug that caused CockroachDB to stop collecting new statistics about [Statement fingerprints](../v23.2/ui-statements-page.html#statement-fingerprint-page) and [Transaction fingerprints](../v23.2/ui-transactions-page.html). +- Make the `max_event_frequency` [metric](../v23.2/metrics.html) visible for public documentation and usage. This is the maximum event frequency at which we sample executions for telemetry.

Operational changes

-- Added the following [metrics](../v23.2/metrics.html) for [Raft](../v23.2/architecture/replication-layer.html#raft) proposals and reproposals: `raft.commands.proposed`, `raft.commands.reproposed.unchanged`, and `raft.commands.reproposed.new-lai`. [#111272][#111272] -- Removed the [cluster setting](../v23.2/cluster-settings.html) `spanconfig.store.enabled` and the ability to use the `COCKROACH_DISABLE_SPAN_CONFIGS` environment variable. [#110253][#110253] -- Renamed the [metric](../v23.2/metrics.html) `fluent.sink.conn.errors` to `log.fluent.sink.conn.errors`. The addition of the `log.` prefix was to better group together logging-related metrics. The behavior and purpose of the metric remains unchanged. [#111126][#111126] -- Set the Metric Type metadata on the [metric](../v23.2/metrics.html) `log.fluent.sink.conn.errors`. Previously, the Metric Type was incorrectly left unset. Note that this is an update to the metric's metadata; the behavior and purpose of the metric remains unchanged. [#111126][#111126] -- Added a new [metric](../v23.2/metrics.html) `log.buffered.messages.dropped`. Buffered network logging sinks have a `max-buffer-size` attribute, which determines, in bytes, how many log messages can be buffered. Any `fluent-server` or `http-server` log sink that makes use of a `buffering` attribute in its configuration (enabled by default) qualifies as a buffered network logging sink. If this buffer becomes full, and an additional log message is sent to the buffered log sink, the buffer would exceed this `max-buffer-size`. Therefore, the buffered log sink drops older messages in the buffer to handle, in order to make room for the new. `log.buffered.messages.dropped` counts the number of messages dropped from the buffer. Note that the count is shared across all buffered logging sinks. [#111126][#111126] -- Added the [metric](../v23.2/metrics.html) `log.messages.count`. This metric measures the count of messages logged on the node since startup. Note that this does not measure the fan-out of single log messages to the various configured [logging sinks](../v23.2/configure-logs.html#set-logging-levels). This metric can be helpful in understanding log rates and volumes. [#111126][#111126] -- Added the `file-based-headers` field found in the `http-defaults` section of the log config, which accepts 'key-filepath' pairs. This allows values found at filepaths to be updated without restarting the cluster by sending `SIGHUP` to notify that values need to be refreshed. [#111235][#111235] -- Added the [cluster setting](../v23.2/cluster-settings.html) `kv.snapshot.ingest_as_write_threshold`, which controls the size threshold below which snapshots are converted to regular writes. It defaults to `100KiB`. [#110943][#110943] +- Added the following [metrics](../v23.2/metrics.html) for [Raft](../v23.2/architecture/replication-layer.html#raft) proposals and reproposals: `raft.commands.proposed`, `raft.commands.reproposed.unchanged`, and `raft.commands.reproposed.new-lai`. +- Removed the [cluster setting](../v23.2/cluster-settings.html) `spanconfig.store.enabled` and the ability to use the `COCKROACH_DISABLE_SPAN_CONFIGS` environment variable. +- Renamed the [metric](../v23.2/metrics.html) `fluent.sink.conn.errors` to `log.fluent.sink.conn.errors`. The addition of the `log.` prefix was to better group together logging-related metrics. The behavior and purpose of the metric remains unchanged. +- Set the Metric Type metadata on the [metric](../v23.2/metrics.html) `log.fluent.sink.conn.errors`. Previously, the Metric Type was incorrectly left unset. Note that this is an update to the metric's metadata; the behavior and purpose of the metric remains unchanged. +- Added a new [metric](../v23.2/metrics.html) `log.buffered.messages.dropped`. Buffered network logging sinks have a `max-buffer-size` attribute, which determines, in bytes, how many log messages can be buffered. Any `fluent-server` or `http-server` log sink that makes use of a `buffering` attribute in its configuration (enabled by default) qualifies as a buffered network logging sink. If this buffer becomes full, and an additional log message is sent to the buffered log sink, the buffer would exceed this `max-buffer-size`. Therefore, the buffered log sink drops older messages in the buffer to handle, in order to make room for the new. `log.buffered.messages.dropped` counts the number of messages dropped from the buffer. Note that the count is shared across all buffered logging sinks. +- Added the [metric](../v23.2/metrics.html) `log.messages.count`. This metric measures the count of messages logged on the node since startup. Note that this does not measure the fan-out of single log messages to the various configured [logging sinks](../v23.2/configure-logs.html#set-logging-levels). This metric can be helpful in understanding log rates and volumes. +- Added the `file-based-headers` field found in the `http-defaults` section of the log config, which accepts 'key-filepath' pairs. This allows values found at filepaths to be updated without restarting the cluster by sending `SIGHUP` to notify that values need to be refreshed. +- Added the [cluster setting](../v23.2/cluster-settings.html) `kv.snapshot.ingest_as_write_threshold`, which controls the size threshold below which snapshots are converted to regular writes. It defaults to `100KiB`.

Cluster virtualization

-- The name of the virtual cluster that the SQL client is connected to can now be inspected via the SQL [session variable](../v23.2/set-vars.html) `virtual_cluster_name`. [#111565][#111565] +- The name of the virtual cluster that the SQL client is connected to can now be inspected via the SQL [session variable](../v23.2/set-vars.html) `virtual_cluster_name`.

Command-line changes

-- The following [cluster settings](../v23.2/cluster-settings.html) have been renamed; the previous names remain available for backward-compatibility. [#109415][#109415] +- The following [cluster settings](../v23.2/cluster-settings.html) have been renamed; the previous names remain available for backward-compatibility. | Previous name | New Name | |---------------------------------------|----------------------------------------------------| @@ -111,16 +111,16 @@ Release Date: October 10, 2023

DB Console changes

-- Fixed an error on the [SQL Activity page](../v23.2/ui-overview.html#sql-activity) when there was a workload, and then the workload stopped so that no queries ran against the database in the last hour. [#111420][#111420] -- On the [Metrics page](../v23.2/ui-overview.html#metrics), now the information about which metric is used to create each chart is available on the chart's tooltip. [#111469][#111469] +- Fixed an error on the [SQL Activity page](../v23.2/ui-overview.html#sql-activity) when there was a workload, and then the workload stopped so that no queries ran against the database in the last hour. +- On the [Metrics page](../v23.2/ui-overview.html#metrics), now the information about which metric is used to create each chart is available on the chart's tooltip.

Bug fixes

-- Fixed the error message that is returned when the user attempts to drop an [`ENUM`](../v23.2/enum.html) value that is used at least twice in an [`ARRAY`](../v23.2/array.html) column. [#111354][#111354] -- Added a check for values before using `mean` on the [Plan Details page](../v23.2/ui-statements-page.html), fixing a crash. [#111472][#111472] -- Fixed the metric name for `Schema Registry Registrations` on the [Metrics page](../v23.2/ui-overview.html#metrics). [#111469][#111469] -- Fixed a panic that could occur if a query used a [string](../v23.2/string.html) larger than 2^31-1 bytes. This was triggered by attempting to [import](../v23.2/import.html) a 2.7 GiB CSV file. [#111627][#111627] -- Fixed a bug where `atttypmod` in `pg_attribute` was not populated for [`TIMESTAMP`](../v23.2/timestamp.html) / [`INTERVAL`](../v23.2/interval.html) types, which meant that ORMs could not know the precision of these types properly. [#111400][#111400] +- Fixed the error message that is returned when the user attempts to drop an [`ENUM`](../v23.2/enum.html) value that is used at least twice in an [`ARRAY`](../v23.2/array.html) column. +- Added a check for values before using `mean` on the [Plan Details page](../v23.2/ui-statements-page.html), fixing a crash. +- Fixed the metric name for `Schema Registry Registrations` on the [Metrics page](../v23.2/ui-overview.html#metrics). +- Fixed a panic that could occur if a query used a [string](../v23.2/string.html) larger than 2^31-1 bytes. This was triggered by attempting to [import](../v23.2/import.html) a 2.7 GiB CSV file. +- Fixed a bug where `atttypmod` in `pg_attribute` was not populated for [`TIMESTAMP`](../v23.2/timestamp.html) / [`INTERVAL`](../v23.2/interval.html) types, which meant that ORMs could not know the precision of these types properly.
@@ -129,27 +129,3 @@ Release Date: October 10, 2023 This release includes 130 merged PRs by 43 authors.
- -[#109415]: https://github.com/cockroachdb/cockroach/pull/109415 -[#109638]: https://github.com/cockroachdb/cockroach/pull/109638 -[#110253]: https://github.com/cockroachdb/cockroach/pull/110253 -[#110709]: https://github.com/cockroachdb/cockroach/pull/110709 -[#110943]: https://github.com/cockroachdb/cockroach/pull/110943 -[#110998]: https://github.com/cockroachdb/cockroach/pull/110998 -[#111092]: https://github.com/cockroachdb/cockroach/pull/111092 -[#111126]: https://github.com/cockroachdb/cockroach/pull/111126 -[#111235]: https://github.com/cockroachdb/cockroach/pull/111235 -[#111272]: https://github.com/cockroachdb/cockroach/pull/111272 -[#111329]: https://github.com/cockroachdb/cockroach/pull/111329 -[#111342]: https://github.com/cockroachdb/cockroach/pull/111342 -[#111354]: https://github.com/cockroachdb/cockroach/pull/111354 -[#111356]: https://github.com/cockroachdb/cockroach/pull/111356 -[#111368]: https://github.com/cockroachdb/cockroach/pull/111368 -[#111400]: https://github.com/cockroachdb/cockroach/pull/111400 -[#111420]: https://github.com/cockroachdb/cockroach/pull/111420 -[#111469]: https://github.com/cockroachdb/cockroach/pull/111469 -[#111472]: https://github.com/cockroachdb/cockroach/pull/111472 -[#111565]: https://github.com/cockroachdb/cockroach/pull/111565 -[#111594]: https://github.com/cockroachdb/cockroach/pull/111594 -[#111613]: https://github.com/cockroachdb/cockroach/pull/111613 -[#111627]: https://github.com/cockroachdb/cockroach/pull/111627 diff --git a/src/current/_includes/releases/v23.2/v23.2.0-alpha.4.md b/src/current/_includes/releases/v23.2/v23.2.0-alpha.4.md index cf51f02ae8e..4e811668b69 100644 --- a/src/current/_includes/releases/v23.2/v23.2.0-alpha.4.md +++ b/src/current/_includes/releases/v23.2/v23.2.0-alpha.4.md @@ -6,21 +6,21 @@ Release Date: October 23, 2023

General changes

-- Updated the `licenses/CCT.txt` file to reflect the latest [Cockroachdb Community License](https://www.cockroachlabs.com/cockroachdb-community-license/). [#112494][#112494] +- Updated the `licenses/CCT.txt` file to reflect the latest [Cockroachdb Community License](https://www.cockroachlabs.com/cockroachdb-community-license/).

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

-- Renamed [cluster settings](../v23.2/cluster-settings.html) related to [physical cluster replication](../v23.2/physical-cluster-replication-overview.html) for consistency. For example, `bulkio.stream_ingestion.minimum_flush_interval` is now `physical_replication.consumer.minimum_flush_interval`. [#111197][#111197] +- Renamed [cluster settings](../v23.2/cluster-settings.html) related to [physical cluster replication](../v23.2/physical-cluster-replication-overview.html) for consistency. For example, `bulkio.stream_ingestion.minimum_flush_interval` is now `physical_replication.consumer.minimum_flush_interval`.

SQL language changes

-- [`SHOW SCHEDULES`](../v23.2/show-schedules.html) has two columns that surface the schedule options. These columns have been renamed to align with the documented option names: `on_previous_running` and `on_execution_failure`. [#111759][#111759] -- Added support for the [PLpgSQL `CLOSE` statement](https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-USING-CLOSE), which allows a PLpgSQL routine to close a cursor with the name specified by a cursor variable. [#111330][#111330] -- When a [`RESTORE`](../v23.2/restore.html) with `remove_regions` is performed, the restore job will now fail if the object contains a [`REGIONAL BY ROW`](../v23.2/table-localities.html#regional-by-row-tables) table. [#111443][#111443] -- It is now possible to open a [cursor](../v23.2/cursors.html) within a PLpgSQL function or procedure with an exception block. If an error occurs, creation of the cursor is rolled back before control reaches the exception handler. [#111735][#111735] -- If a [scheduled backup](../v23.2/create-schedule-for-backup.html) resumes on a new cluster (e.g., after [physical cluster replication cutover](../v23.2/cutover-replication.html) or a cluster restore), the backup schedule will pause. The user may [resume the schedule](../v23.2/resume-schedules.html) without changing it, but should take special care to ensure no other schedule is backing up to the same [collection](../v23.2/take-full-and-incremental-backups.html#backup-collections). The user may also want to cancel the paused schedule and start a new one. [#111578][#111578] -- Added support for PLpgSQL [`FETCH`](https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-USING-FETCH) and [`MOVE`](https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-USING-MOVE) statements. Similar to SQL `FETCH`/`MOVE` statements, commands that would seek the [cursor](../v23.2/cursors.html) backward will fail. In addition, expressions other than constant integers are not yet supported for the `count` option. [#111318][#111318] -- Added support for the [`REFCURSOR`](https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-DECLARATIONS) data type. `REFCURSOR` is a special string type that is used to handle cursors. PLpgSQL cursor declarations are required to use a variable of type `REFCURSOR`, and the name of a cursor can be passed to and from a PLpgSQL function or procedure. [#111392][#111392] +- [`SHOW SCHEDULES`](../v23.2/show-schedules.html) has two columns that surface the schedule options. These columns have been renamed to align with the documented option names: `on_previous_running` and `on_execution_failure`. +- Added support for the [PLpgSQL `CLOSE` statement](https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-USING-CLOSE), which allows a PLpgSQL routine to close a cursor with the name specified by a cursor variable. +- When a [`RESTORE`](../v23.2/restore.html) with `remove_regions` is performed, the restore job will now fail if the object contains a [`REGIONAL BY ROW`](../v23.2/table-localities.html#regional-by-row-tables) table. +- It is now possible to open a [cursor](../v23.2/cursors.html) within a PLpgSQL function or procedure with an exception block. If an error occurs, creation of the cursor is rolled back before control reaches the exception handler. +- If a [scheduled backup](../v23.2/create-schedule-for-backup.html) resumes on a new cluster (e.g., after [physical cluster replication cutover](../v23.2/cutover-replication.html) or a cluster restore), the backup schedule will pause. The user may [resume the schedule](../v23.2/resume-schedules.html) without changing it, but should take special care to ensure no other schedule is backing up to the same [collection](../v23.2/take-full-and-incremental-backups.html#backup-collections). The user may also want to cancel the paused schedule and start a new one. +- Added support for PLpgSQL [`FETCH`](https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-USING-FETCH) and [`MOVE`](https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-USING-MOVE) statements. Similar to SQL `FETCH`/`MOVE` statements, commands that would seek the [cursor](../v23.2/cursors.html) backward will fail. In addition, expressions other than constant integers are not yet supported for the `count` option. +- Added support for the [`REFCURSOR`](https://www.postgresql.org/docs/current/plpgsql-cursors.html#PLPGSQL-CURSOR-DECLARATIONS) data type. `REFCURSOR` is a special string type that is used to handle cursors. PLpgSQL cursor declarations are required to use a variable of type `REFCURSOR`, and the name of a cursor can be passed to and from a PLpgSQL function or procedure. - Added two changes to [`FOR UPDATE`](../v23.2/select-for-update.html): - Multiple `FOR UPDATE` clauses on fully parenthesized queries are now disallowed. For example, the following statements are now disallowed: @@ -55,7 +55,7 @@ Release Date: October 23, 2023 INSERT INTO t VALUES (1) FOR UPDATE; ~~~ - This matches PostgreSQL. [#111258][#111258] + This matches PostgreSQL. - `FOR UPDATE` is now permitted on some queries that were previously disallowed. Queries that use the following operations are now allowed to have `FOR UPDATE OF` as long as the prohibited operation is in a subquery not locked by the `FOR UPDATE OF`: - `UNION` - `INTERSECT` @@ -73,15 +73,15 @@ Release Date: October 23, 2023 SELECT * FROM t, (SELECT DISTINCT 0, 0 UNION SELECT a, count(*) FROM t GROUP BY a HAVING a > 0) AS u FOR UPDATE OF t; ~~~ - This matches PostgreSQL. [#111258][#111258] -- Identifiers after numeric constants that are not separated by whitespace are now disallowed to match PostgreSQL 15 behavior. [#112021][#112021] -- Added the new column `contention_type` to the [`crdb_internal.transaction_contention_events`](../v23.2/crdb-internal.html) table. This column indicates the type of [transaction contention](../v23.2/performance-best-practices-overview.html#transaction-contention) encountered. Current values are `LOCK_WAIT` and `SERIALIZATION_CONFLICT`. [#111685][#111685] -- Changed the error message: `statement error cannot execute FOR UPDATE in a read-only transaction` to `statement error cannot execute SELECT FOR UPDATE in a read-only transaction` to match PostgreSQL. [#112138][#112138] -- Added a new [session variable](../v23.2/set-vars.html) `optimizer_use_lock_op_for_serializable`, which when set enables a new implementation of `SELECT FOR UPDATE`. This new implementation of `SELECT FOR UPDATE` acquires row locks **after** any joins and filtering, and always acquires row locks on the primary index of the table being locked. This more closely matches [`SELECT FOR UPDATE`](../v23.2/select-for-update.html) behavior in PostgreSQL, but at the cost of more round trips from gateway node to replica leaseholder. Under read-committed isolation (and other isolation levels weaker than serializable), CockroachDB will always use this new implementation of `SELECT FOR UPDATE` regardless of the value of `optimizer_use_lock_op_for_serializable` to ensure correctness. [#112138][#112138] + This matches PostgreSQL. +- Identifiers after numeric constants that are not separated by whitespace are now disallowed to match PostgreSQL 15 behavior. +- Added the new column `contention_type` to the [`crdb_internal.transaction_contention_events`](../v23.2/crdb-internal.html) table. This column indicates the type of [transaction contention](../v23.2/performance-best-practices-overview.html#transaction-contention) encountered. Current values are `LOCK_WAIT` and `SERIALIZATION_CONFLICT`. +- Changed the error message: `statement error cannot execute FOR UPDATE in a read-only transaction` to `statement error cannot execute SELECT FOR UPDATE in a read-only transaction` to match PostgreSQL. +- Added a new [session variable](../v23.2/set-vars.html) `optimizer_use_lock_op_for_serializable`, which when set enables a new implementation of `SELECT FOR UPDATE`. This new implementation of `SELECT FOR UPDATE` acquires row locks **after** any joins and filtering, and always acquires row locks on the primary index of the table being locked. This more closely matches [`SELECT FOR UPDATE`](../v23.2/select-for-update.html) behavior in PostgreSQL, but at the cost of more round trips from gateway node to replica leaseholder. Under read-committed isolation (and other isolation levels weaker than serializable), CockroachDB will always use this new implementation of `SELECT FOR UPDATE` regardless of the value of `optimizer_use_lock_op_for_serializable` to ensure correctness.

Operational changes

-- Added a new [cluster setting](../v23.2/cluster-settings.html) `server.http.base_path` that controls the redirection of the browser after successful login with [OIDC SSO](../v23.2/sso-db-console.html). It is unlikely that this setting would need adjustment. However, it is helpful in cases where CockroachDB is running behind a load balancer or proxy that serves CockroachDB under a subpath, such as `https:// /crdb/ `. In those cases, it is necessary for the browser to redirect to `/ crdb` after login instead of `/`, which has always been the hard-coded default. [#111283][#111283] +- Added a new [cluster setting](../v23.2/cluster-settings.html) `server.http.base_path` that controls the redirection of the browser after successful login with [OIDC SSO](../v23.2/sso-db-console.html). It is unlikely that this setting would need adjustment. However, it is helpful in cases where CockroachDB is running behind a load balancer or proxy that serves CockroachDB under a subpath, such as `https:// /crdb/ `. In those cases, it is necessary for the browser to redirect to `/ crdb` after login instead of `/`, which has always been the hard-coded default.

Cluster virtualization

@@ -90,9 +90,9 @@ Release Date: October 23, 2023 - `server.rangelog.ttl` - `timeseries.storage.*` - [#111769][#111769] -- The [cluster settings](../v23.2/cluster-settings.html) `cluster.organization` and `enterprise.license` can now only be set via the system virtual cluster. Attempting to set them from any other virtual cluster results in an error. [#111788][#111788] -- A new flag `--internal-rpc-port-range` allows operators to specify the port range used by virtual clusters for node-to-node communication. Users implementing [physical cluster replication](../v23.2/physical-cluster-replication-overview.html) or cluster virtualization public preview features should use this flag if they require the `cockroach` processes to only communicate using ports in a known port range. [#111798][#111798] + +- The [cluster settings](../v23.2/cluster-settings.html) `cluster.organization` and `enterprise.license` can now only be set via the system virtual cluster. Attempting to set them from any other virtual cluster results in an error. +- A new flag `--internal-rpc-port-range` allows operators to specify the port range used by virtual clusters for node-to-node communication. Users implementing [physical cluster replication](../v23.2/physical-cluster-replication-overview.html) or cluster virtualization public preview features should use this flag if they require the `cockroach` processes to only communicate using ports in a known port range. - Two guardrails are available to system operators to help with users upgrading from a deployment without cluster virtualization enabled to a deployment using cluster virtualization. This is intended to help in cases where the user is not connected to the correct SQL interface to perform certain configuration operations. There are two guardrails included: - The `sql.restrict_system_interface.enabled` cluster setting encourages users to use a virtual cluster for their application workload. When set, certain common operations that end users may execute to set up an application workload are disallowed, such as running DDL statements or modifying an application level cluster setting. Users will receive an error similar to: @@ -115,38 +115,38 @@ Release Date: October 23, 2023 HINT: Connect to the system interface and modify the cluster setting from there. ~~~ - [#111568][#111568] -- The predefined config profiles related to cluster virtualization now automatically set the new [cluster settings](../v23.2/cluster-settings.html) `sql.restrict_system_interface.enabled` and `sql.error_tip_system_interface.enabled`. [#111568][#111568] -- The hidden `--secondary-tenant-port-offset` option has been removed. Users who were previously using this option should use `--internal-rpc-port-range` instead. [#112050][#112050] -- Added support for automatic finalization of a virtual cluster's version upgrade. A new setting `cluster.auto_upgrade.enabled` was added to enable and disable automatic cluster version upgrade (finalization). It will be used in automatic upgrade of both the storage cluster and its virtual clusters. [#102427][#102427] + +- The predefined config profiles related to cluster virtualization now automatically set the new [cluster settings](../v23.2/cluster-settings.html) `sql.restrict_system_interface.enabled` and `sql.error_tip_system_interface.enabled`. +- The hidden `--secondary-tenant-port-offset` option has been removed. Users who were previously using this option should use `--internal-rpc-port-range` instead. +- Added support for automatic finalization of a virtual cluster's version upgrade. A new setting `cluster.auto_upgrade.enabled` was added to enable and disable automatic cluster version upgrade (finalization). It will be used in automatic upgrade of both the storage cluster and its virtual clusters.

Command-line changes

-- [`cockroach debug zip`](../v23.2/cockroach-debug-zip.html) has an additional flag that is default off `include-running-job-traces` that will enable collecting the in-flight traces of traceable jobs, such as [backup](../v23.2/backup.html), [restore](../v23.2/restore.html), [import](../v23.2/import-into.html), [physical cluster replication](../v23.2/physical-cluster-replication-overview.html) and dump them in a `jobs/` subdirectory in the zip. [#112644][#112644] +- [`cockroach debug zip`](../v23.2/cockroach-debug-zip.html) has an additional flag that is default off `include-running-job-traces` that will enable collecting the in-flight traces of traceable jobs, such as [backup](../v23.2/backup.html), [restore](../v23.2/restore.html), [import](../v23.2/import-into.html), [physical cluster replication](../v23.2/physical-cluster-replication-overview.html) and dump them in a `jobs/` subdirectory in the zip.

DB Console changes

-- The [**Jobs** table](../v23.2/ui-jobs-page.html) will now correctly display timestamps for creation, last modified, and the completed time fields. [#110366][#110366] +- The [**Jobs** table](../v23.2/ui-jobs-page.html) will now correctly display timestamps for creation, last modified, and the completed time fields. - The [transaction insight details](../v23.2/ui-insights-page.html) will show the following details when CockroachDB has information on a transaction execution with a `40001` error code and it has captured the conflicting transaction meta details (only available if the transaction had not yet committed at the time of execution). A section called `Failed Execution` will appear when this information is available and it will contain: - Blocking transaction execution ID - Blocking transaction fingerprint ID - Conflict location - - Database, table, and index names [#111873][#111873] -- Added progressive loading functionality to the [Databases page](../v23.2/ui-databases-page.html). [#110901][#110901] + - Database, table, and index names +- Added progressive loading functionality to the [Databases page](../v23.2/ui-databases-page.html).

Bug fixes

-- Fixed a bug in [physical cluster replication](../v23.2/physical-cluster-replication-overview.html) where the primary cluster would not be able to take [backups](../v23.2/take-full-and-incremental-backups.html) when a primary cluster node was unavailable. [#111337][#111337] -- Fixed a bug in [transaction insight details](../v23.2/ui-insights-page.html) where it was possible to see the contention details of other transactions. Now, CockroachDB will only surface contention details for the current transaction. [#111867][#111867] -- [Voter constraints](../v23.2/configure-replication-zones.html) will now be satisfied by promoting existing non-voters. Previously, there was a bug where voter constraints were never satisfied due to all existing replicas being considered necessary to satisfy a replica constraint. [#111609][#111609] -- Fixed a bug where `indoption` inside `pg_index` was not properly encoded causing clients to be unable to decode it as `int2vector`. [#111911][#111911] -- This patch fixes an issue where the [optimizer](../v23.2/cost-based-optimizer.html) fails to honor the `statement_timeout` session setting when generating constrained index scans for queries with large `IN` lists or `= ANY` predicates on multiple index key columns, which may lead to an out of memory condition on the node. [#111979][#111979] -- This patch fixes a performance issue in join queries with a `LIMIT` clause, where the [optimizer](../v23.2/cost-based-optimizer.html) may fail to push a `WHERE` clause filter into a join due to how the `LIMIT` operation is internally rewritten. This causes a full scan of the table referenced in the filter. [#110593][#110593] -- Fixed a bug that caused internal errors during query optimization in rare cases. The bug has been present since version v2.1.11, but it is more likely to occur in version v21.2.0 and later, though it is still rare. The bug only presents when a query contains `min` and `max` [aggregate functions](../v23.2/functions-and-operators.html#aggregate-functions). [#112255][#112255] +- Fixed a bug in [physical cluster replication](../v23.2/physical-cluster-replication-overview.html) where the primary cluster would not be able to take [backups](../v23.2/take-full-and-incremental-backups.html) when a primary cluster node was unavailable. +- Fixed a bug in [transaction insight details](../v23.2/ui-insights-page.html) where it was possible to see the contention details of other transactions. Now, CockroachDB will only surface contention details for the current transaction. +- [Voter constraints](../v23.2/configure-replication-zones.html) will now be satisfied by promoting existing non-voters. Previously, there was a bug where voter constraints were never satisfied due to all existing replicas being considered necessary to satisfy a replica constraint. +- Fixed a bug where `indoption` inside `pg_index` was not properly encoded causing clients to be unable to decode it as `int2vector`. +- This patch fixes an issue where the [optimizer](../v23.2/cost-based-optimizer.html) fails to honor the `statement_timeout` session setting when generating constrained index scans for queries with large `IN` lists or `= ANY` predicates on multiple index key columns, which may lead to an out of memory condition on the node. +- This patch fixes a performance issue in join queries with a `LIMIT` clause, where the [optimizer](../v23.2/cost-based-optimizer.html) may fail to push a `WHERE` clause filter into a join due to how the `LIMIT` operation is internally rewritten. This causes a full scan of the table referenced in the filter. +- Fixed a bug that caused internal errors during query optimization in rare cases. The bug has been present since version v2.1.11, but it is more likely to occur in version v21.2.0 and later, though it is still rare. The bug only presents when a query contains `min` and `max` [aggregate functions](../v23.2/functions-and-operators.html#aggregate-functions).

Performance improvements

-- This patch adds support for insert fast-path uniqueness checks on [`REGIONAL BY ROW`](../v23.2/table-localities.html#regional-by-row-tables) tables where the source is a `VALUES` clause with a single row. This results in a reduction in latency for single-row inserts to `REGIONAL BY ROW` tables and hash-sharded `REGIONAL BY ROW` tables with unique indexes. [#111822][#111822] +- This patch adds support for insert fast-path uniqueness checks on [`REGIONAL BY ROW`](../v23.2/table-localities.html#regional-by-row-tables) tables where the source is a `VALUES` clause with a single row. This results in a reduction in latency for single-row inserts to `REGIONAL BY ROW` tables and hash-sharded `REGIONAL BY ROW` tables with unique indexes.

Contributors

@@ -157,41 +157,3 @@ We would like to thank the following contributors from the CockroachDB community - craig - -[#102427]: https://github.com/cockroachdb/cockroach/pull/102427 -[#110366]: https://github.com/cockroachdb/cockroach/pull/110366 -[#110593]: https://github.com/cockroachdb/cockroach/pull/110593 -[#110870]: https://github.com/cockroachdb/cockroach/pull/110870 -[#110901]: https://github.com/cockroachdb/cockroach/pull/110901 -[#111197]: https://github.com/cockroachdb/cockroach/pull/111197 -[#111258]: https://github.com/cockroachdb/cockroach/pull/111258 -[#111283]: https://github.com/cockroachdb/cockroach/pull/111283 -[#111303]: https://github.com/cockroachdb/cockroach/pull/111303 -[#111318]: https://github.com/cockroachdb/cockroach/pull/111318 -[#111330]: https://github.com/cockroachdb/cockroach/pull/111330 -[#111337]: https://github.com/cockroachdb/cockroach/pull/111337 -[#111392]: https://github.com/cockroachdb/cockroach/pull/111392 -[#111443]: https://github.com/cockroachdb/cockroach/pull/111443 -[#111568]: https://github.com/cockroachdb/cockroach/pull/111568 -[#111578]: https://github.com/cockroachdb/cockroach/pull/111578 -[#111609]: https://github.com/cockroachdb/cockroach/pull/111609 -[#111685]: https://github.com/cockroachdb/cockroach/pull/111685 -[#111735]: https://github.com/cockroachdb/cockroach/pull/111735 -[#111759]: https://github.com/cockroachdb/cockroach/pull/111759 -[#111769]: https://github.com/cockroachdb/cockroach/pull/111769 -[#111788]: https://github.com/cockroachdb/cockroach/pull/111788 -[#111798]: https://github.com/cockroachdb/cockroach/pull/111798 -[#111822]: https://github.com/cockroachdb/cockroach/pull/111822 -[#111833]: https://github.com/cockroachdb/cockroach/pull/111833 -[#111867]: https://github.com/cockroachdb/cockroach/pull/111867 -[#111873]: https://github.com/cockroachdb/cockroach/pull/111873 -[#111911]: https://github.com/cockroachdb/cockroach/pull/111911 -[#111979]: https://github.com/cockroachdb/cockroach/pull/111979 -[#112021]: https://github.com/cockroachdb/cockroach/pull/112021 -[#112050]: https://github.com/cockroachdb/cockroach/pull/112050 -[#112138]: https://github.com/cockroachdb/cockroach/pull/112138 -[#112255]: https://github.com/cockroachdb/cockroach/pull/112255 -[#112457]: https://github.com/cockroachdb/cockroach/pull/112457 -[#112494]: https://github.com/cockroachdb/cockroach/pull/112494 -[#112589]: https://github.com/cockroachdb/cockroach/pull/112589 -[#112644]: https://github.com/cockroachdb/cockroach/pull/112644 diff --git a/src/current/_includes/releases/v23.2/v23.2.0-alpha.5.md b/src/current/_includes/releases/v23.2/v23.2.0-alpha.5.md index 4a6d73c0c02..f1a5842d2d0 100644 --- a/src/current/_includes/releases/v23.2/v23.2.0-alpha.5.md +++ b/src/current/_includes/releases/v23.2/v23.2.0-alpha.5.md @@ -6,11 +6,11 @@ Release Date: October 30, 2023

SQL language changes

-- Added support for the special `OTHERS` condition in PL/pgSQL exception blocks, which allows matching any error code apart from `query_canceled` and `assert_failure`. Note that Class 40 errors (`40000`, `40001`, `40003`, `40002`, and `40P01`) cannot be caught either. This is tracked in [#111446](https://github.com/cockroachdb/cockroach/pull/111446). [#112817][#112817] +- Added support for the special `OTHERS` condition in PL/pgSQL exception blocks, which allows matching any error code apart from `query_canceled` and `assert_failure`. Note that Class 40 errors (`40000`, `40001`, `40003`, `40002`, and `40P01`) cannot be caught either. This is tracked in.

Bug fixes

-- Previously, queries with the [`ST_Union`](../v23.2/st_union.html) aggregate function could produce incorrect results in some cases due to the query optimizer performing invalid optimizations. This is now fixed. This bug had been present since the `ST_Union` function was introduced in v20.2.0. [#112780][#112780] +- Previously, queries with the [`ST_Union`](../v23.2/st_union.html) aggregate function could produce incorrect results in some cases due to the query optimizer performing invalid optimizations. This is now fixed. This bug had been present since the `ST_Union` function was introduced in v20.2.0.
@@ -19,6 +19,3 @@ Release Date: October 30, 2023 This release includes 27 merged PRs by 17 authors.
- -[#112780]: https://github.com/cockroachdb/cockroach/pull/112780 -[#112817]: https://github.com/cockroachdb/cockroach/pull/112817 diff --git a/src/current/_includes/releases/v23.2/v23.2.0-alpha.6.md b/src/current/_includes/releases/v23.2/v23.2.0-alpha.6.md index 3a62d428f4f..4db2de37545 100644 --- a/src/current/_includes/releases/v23.2/v23.2.0-alpha.6.md +++ b/src/current/_includes/releases/v23.2/v23.2.0-alpha.6.md @@ -6,62 +6,42 @@ Release Date: November 7, 2023

General changes

-- The CockroachDB Docker image is now based on [Red Hat's ubi9/ubi-minimal image](https://catalog.redhat.com/software/containers/ubi9/ubi-minimal/615bd9b4075b022acc111bf5?architecture=amd64&image=652fc5a903899c8ddcf105be) instead of the ubi8/ubi-minimal image. [#112967][#112967] +- The CockroachDB Docker image is now based on [Red Hat's ubi9/ubi-minimal image](https://catalog.redhat.com/software/containers/ubi9/ubi-minimal/615bd9b4075b022acc111bf5?architecture=amd64&image=652fc5a903899c8ddcf105be) instead of the ubi8/ubi-minimal image.

SQL language changes

-- Added the built-in [function](../v23.2/functions-and-operators.html) `jsonb_array_to_string_array` that converts [`JSONB`](../v23.2/jsonb.html) array to [`STRING`](../v23.2/string.html) array. [#112865][#112865] -- The built-in [function](../v23.2/functions-and-operators.html) `jsonb_array_to_string_array` can now return [`NULL`](../v23.2/null-handling.html) objects. [#112865][#112865] +- Added the built-in [function](../v23.2/functions-and-operators.html) `jsonb_array_to_string_array` that converts [`JSONB`](../v23.2/jsonb.html) array to [`STRING`](../v23.2/string.html) array. +- The built-in [function](../v23.2/functions-and-operators.html) `jsonb_array_to_string_array` can now return [`NULL`](../v23.2/null-handling.html) objects.

Operational changes

-- Introduced the [cluster setting](../v23.2/cluster-settings.html) `kv.gc.sticky_hint.enabled` that helps expediting [garbage collection](../v23.2/architecture/storage-layer.html#garbage-collection) after range deletions. For example, when a SQL table or index is dropped. `kv.gc.sticky_hint.enabled` is enabled by default in v23.2. The setting has been deprecated in v23.2. [#113040][#113040] -- Introduced a new [environment variable](../v23.2/set-vars.html) that allows an operator to configure the [compaction](../v23.2/architecture/storage-layer.html#compaction) concurrency. [#113313][#113313] -- [Debug zip](../v23.2/cockroach-debug-zip.html) will now collect the active traces of all running or reverting traceable jobs. This includes [restores](../v23.2/restore.html), [imports](../v23.2/import.html), [backups](../v23.2/backup.html), and [physical cluster replication](../v23.2/physical-cluster-replication-overview.html). [#113172][#113172] +- Introduced the [cluster setting](../v23.2/cluster-settings.html) `kv.gc.sticky_hint.enabled` that helps expediting [garbage collection](../v23.2/architecture/storage-layer.html#garbage-collection) after range deletions. For example, when a SQL table or index is dropped. `kv.gc.sticky_hint.enabled` is enabled by default in v23.2. The setting has been deprecated in v23.2. +- Introduced a new [environment variable](../v23.2/set-vars.html) that allows an operator to configure the [compaction](../v23.2/architecture/storage-layer.html#compaction) concurrency. +- [Debug zip](../v23.2/cockroach-debug-zip.html) will now collect the active traces of all running or reverting traceable jobs. This includes [restores](../v23.2/restore.html), [imports](../v23.2/import.html), [backups](../v23.2/backup.html), and [physical cluster replication](../v23.2/physical-cluster-replication-overview.html).

Cluster virtualization

-- The [privilege](../v23.2/security-reference/authorization.html#supported-privileges) that controls access to `CREATE VIRTUAL CLUSTER` and other virtual cluster management syntax is now called `MANAGEVIRTUALCLUSTER`. [#113076][#113076] +- The [privilege](../v23.2/security-reference/authorization.html#supported-privileges) that controls access to `CREATE VIRTUAL CLUSTER` and other virtual cluster management syntax is now called `MANAGEVIRTUALCLUSTER`.

Bug fixes

-- Fixed a bug that could prevent [`RESTORE`](../v23.2/restore.html) from working if it was performed during a cluster upgrade. [#112759][#112759] -- Fixed a bug where the opclass for a [trigram index](../v23.2/trigram-indexes.html) is not shown if CockroachDB creates a trigram index and later displays it via [`SHOW CREATE TABLE`](../v23.2/show-create.html). [#113071][#113071] -- Fixed a bug where CockroachDB could incorrectly evaluate [lookup](../v23.2/joins.html#lookup-joins) and index [joins](../v23.2/joins.html) into tables with at least three [column families](../v23.2/column-families.html). This would result in either the `non-nullable column with no value` internal error, or the query would return incorrect results. This bug was introduced in v22.2. [#113105][#113105] -- Fixed a bug where [`ALTER PRIMARY KEY`](../v23.2/alter-table.html#alter-primary-key) would incorrectly disable [secondary indexes](../v23.2/schema-design-indexes.html) while new secondary indexes were being backfilled when using the [declarative schema changer](../v23.2/online-schema-changes.html). [#112627][#112627] -- Fixed a bug where the `unique_constraint_catalog` and `unique_constraint_schema` columns in [`information_schema.referential_constraints`](../v23.2/information-schema.html#referential_constraints) could be incorrect for cross schema or cross database references. [#112739][#112739] -- Fixed a bug in a method that was used by some of the [jobs](../v23.2/show-jobs.html) observability infrastructure. This method could be triggered if a file was overwritten with a different chunking strategy. [#113290][#113290] -- Fixed a bug where the result of [`SHOW CREATE TABLE`](../v23.2/show-create.html) for a table that had a [collated string column](../v23.2/collate.html) with a default expression was incorrect because the statement could not be parsed. [#113119][#113119] -- Fixed the SQL activity update job to: avoid conflicts on update, reduce the amount of data cached to only what the overview page requires, and fix the correctness of the top queries. [#112865][#112865] -- Fixed a bug that could prevent [physical cluster replication](../v23.2/physical-cluster-replication-overview.html) from advancing in the face of some range deletion operations. [#113041][#113041] -- Fixed a bug where [`ALTER TYPE`](../v23.2/alter-type.html) could get stuck if [`DROP TYPE`](../v23.2/drop-type.html) was executed concurrently. [#113644][#113644] -- Fixed a bug that could cause internal errors or panics while attempting to forecast [statistics](../v23.2/show-statistics.html) on a numeric column. [#113797][#113797] -- Rolled back deletes no longer cause a discrepancy between computed statistics and the actual stored values. [#113766][#113766] +- Fixed a bug that could prevent [`RESTORE`](../v23.2/restore.html) from working if it was performed during a cluster upgrade. +- Fixed a bug where the opclass for a [trigram index](../v23.2/trigram-indexes.html) is not shown if CockroachDB creates a trigram index and later displays it via [`SHOW CREATE TABLE`](../v23.2/show-create.html). +- Fixed a bug where CockroachDB could incorrectly evaluate [lookup](../v23.2/joins.html#lookup-joins) and index [joins](../v23.2/joins.html) into tables with at least three [column families](../v23.2/column-families.html). This would result in either the `non-nullable column with no value` internal error, or the query would return incorrect results. This bug was introduced in v22.2. +- Fixed a bug where [`ALTER PRIMARY KEY`](../v23.2/alter-table.html#alter-primary-key) would incorrectly disable [secondary indexes](../v23.2/schema-design-indexes.html) while new secondary indexes were being backfilled when using the [declarative schema changer](../v23.2/online-schema-changes.html). +- Fixed a bug where the `unique_constraint_catalog` and `unique_constraint_schema` columns in [`information_schema.referential_constraints`](../v23.2/information-schema.html#referential_constraints) could be incorrect for cross schema or cross database references. +- Fixed a bug in a method that was used by some of the [jobs](../v23.2/show-jobs.html) observability infrastructure. This method could be triggered if a file was overwritten with a different chunking strategy. +- Fixed a bug where the result of [`SHOW CREATE TABLE`](../v23.2/show-create.html) for a table that had a [collated string column](../v23.2/collate.html) with a default expression was incorrect because the statement could not be parsed. +- Fixed the SQL activity update job to: avoid conflicts on update, reduce the amount of data cached to only what the overview page requires, and fix the correctness of the top queries. +- Fixed a bug that could prevent [physical cluster replication](../v23.2/physical-cluster-replication-overview.html) from advancing in the face of some range deletion operations. +- Fixed a bug where [`ALTER TYPE`](../v23.2/alter-type.html) could get stuck if [`DROP TYPE`](../v23.2/drop-type.html) was executed concurrently. +- Fixed a bug that could cause internal errors or panics while attempting to forecast [statistics](../v23.2/show-statistics.html) on a numeric column. +- Rolled back deletes no longer cause a discrepancy between computed statistics and the actual stored values.

Performance improvements

-- Addressed a performance regression that can happen when the declarative [schema changer](../v23.2/online-schema-changes.html) is used to create an index with a concurrent workload. [#113725][#113725] +- Addressed a performance regression that can happen when the declarative [schema changer](../v23.2/online-schema-changes.html) is used to create an index with a concurrent workload.

Contributors

This release includes 117 merged PRs by 49 authors. - -[#112627]: https://github.com/cockroachdb/cockroach/pull/112627 -[#112739]: https://github.com/cockroachdb/cockroach/pull/112739 -[#112759]: https://github.com/cockroachdb/cockroach/pull/112759 -[#112865]: https://github.com/cockroachdb/cockroach/pull/112865 -[#112967]: https://github.com/cockroachdb/cockroach/pull/112967 -[#113040]: https://github.com/cockroachdb/cockroach/pull/113040 -[#113041]: https://github.com/cockroachdb/cockroach/pull/113041 -[#113071]: https://github.com/cockroachdb/cockroach/pull/113071 -[#113076]: https://github.com/cockroachdb/cockroach/pull/113076 -[#113105]: https://github.com/cockroachdb/cockroach/pull/113105 -[#113119]: https://github.com/cockroachdb/cockroach/pull/113119 -[#113172]: https://github.com/cockroachdb/cockroach/pull/113172 -[#113284]: https://github.com/cockroachdb/cockroach/pull/113284 -[#113290]: https://github.com/cockroachdb/cockroach/pull/113290 -[#113313]: https://github.com/cockroachdb/cockroach/pull/113313 -[#113644]: https://github.com/cockroachdb/cockroach/pull/113644 -[#113725]: https://github.com/cockroachdb/cockroach/pull/113725 -[#113766]: https://github.com/cockroachdb/cockroach/pull/113766 -[#113797]: https://github.com/cockroachdb/cockroach/pull/113797 diff --git a/src/current/_includes/releases/v23.2/v23.2.0-alpha.7.md b/src/current/_includes/releases/v23.2/v23.2.0-alpha.7.md index 521e43cd835..4b785bcd8ed 100644 --- a/src/current/_includes/releases/v23.2/v23.2.0-alpha.7.md +++ b/src/current/_includes/releases/v23.2/v23.2.0-alpha.7.md @@ -6,29 +6,29 @@ Release Date: November 20, 2023

SQL language changes

-- Previously, if [session variable `use_declarative_schema_changer`](../v23.2/session-variables.html#use_declarative_schema_changer) was set to `off`, then [`ALTER TABLE ... ALTER COLUMN ... SET NOT NULL`](../v23.2/alter-table.html#alter-column) was run on a column which contained a NULL value, an error with code `23514` (`check_violation`) would be returned. Now in this scenario the error returned will have code 23502 (`not_null_violation`) to match [PostgreSQL](https://www.postgresql.org/docs/8.4/errcodes-appendix.html). [#113970][#113970] -- The `sql.txn.read_committed_syntax.enabled` [cluster setting](../v23.2/cluster-settings.html) was renamed to [`sql.txn.read_committed_isolation.enabled`](../v23.2/cluster-settings.html#setting-sql-txn-read-committed-isolation-enabled). [#113833][#113833] +- Previously, if [session variable `use_declarative_schema_changer`](../v23.2/session-variables.html#use_declarative_schema_changer) was set to `off`, then [`ALTER TABLE ... ALTER COLUMN ... SET NOT NULL`](../v23.2/alter-table.html#alter-column) was run on a column which contained a NULL value, an error with code `23514` (`check_violation`) would be returned. Now in this scenario the error returned will have code 23502 (`not_null_violation`) to match [PostgreSQL](https://www.postgresql.org/docs/8.4/errcodes-appendix.html). +- The `sql.txn.read_committed_syntax.enabled` [cluster setting](../v23.2/cluster-settings.html) was renamed to [`sql.txn.read_committed_isolation.enabled`](../v23.2/cluster-settings.html#setting-sql-txn-read-committed-isolation-enabled).

Command-line changes

-- The `cockroach connect` functionality has been deprecated. [#114241][#114241] +- The `cockroach connect` functionality has been deprecated.

DB Console changes

-- Previously, the forward arrow button on the [time selector](../v23.2/ui-statements-page.html#time-interval) would not move the time window forward if the current end time was less than "Now() - time window". For example, with a 10 minute time window, it was not possible to move forward if current end time is less that "Now() - 10 minutes". This caused the forward arrow button to become disabled even though there was more data to display. Now this scenario is handled by the forward arrow button selecting the latest available time window (similar to the **Now** button). [#113907][#113907] +- Previously, the forward arrow button on the [time selector](../v23.2/ui-statements-page.html#time-interval) would not move the time window forward if the current end time was less than "Now() - time window". For example, with a 10 minute time window, it was not possible to move forward if current end time is less that "Now() - 10 minutes". This caused the forward arrow button to become disabled even though there was more data to display. Now this scenario is handled by the forward arrow button selecting the latest available time window (similar to the **Now** button).

Bug fixes

-- Removed duplication of metrics names on [DB Console Metrics](../v23.2/ui-overview.html#metrics) charts' tooltips. [#113728][#113728] -- Fixed a bug that could cause [ALTER DATABASE ... ADD/DROP REGION](../v23.2/alter-database.html#add-region) to hang if [node localities](../v23.2/cockroach-start.html#locality) were changed after regions were added. [#114102][#114102] -- A bug in the [log configuration](../v23.2/configure-logs.html) code prevented users from setting the [`datetime-format` and `datetime-timezone` log format options](../v23.2/configure-logs.html#datetime-field-for-json-format) (set via the `format-options` structure) within their log configuration. Specifically, when users tried to use these options in `file-defaults` with any [`json`](../v23.2/log-formats.html#format-json) type log format, the log configuration was previously unable to be parsed due to validation errors. This was because the `file-defaults.format-options` were propagated to the `sinks.stderr.format-options`. `sinks.stderr` only supports a format of [`crdb-v2-tty`](../v23.2/log-formats.html#format-crdb-v2-tty). Therefore, the incorrectly propagated `format-options`, which are only supported by the `json` log format, were identified as not being supported when validating `sinks.stderr`. This bug is now fixed and the `file-defaults.format-options` are only propagated to `sinks.stderr.format-options` if both of these conditions are true: 1. `file-defaults.format` is one of [`crdb-v2`](../v23.2/log-formats.html#format-crdb-v2) or `crdb-v2-tty`. 2. `sinks.stderr.format-options` are not explicitly set in the log configuration. [#113684][#113684] -- Previously, when executing queries with [index joins](../v23.2/indexes.html#storing-columns) or [lookup joins](../v23.2/joins.html#lookup-joins) or both when the ordering needs to be maintained, CockroachDB in some cases would get into a pathological behavior which would lead to increased query latency, possibly by one or two orders of magnitude. This bug was introduced in v22.2 and is now fixed. [#114117][#114117] -- Previously, the [SHOW STATISTICS command](../v23.2/show-statistics.html) incorrectly required the user to have the admin role. Now, it correctly only requires the user to have any [privilege](../v23.2/security-reference/authorization.html#privileges) on the table being inspected. [#114449][#114449] -- Fixed a bug that could cause a [query plan](../v23.2/cost-based-optimizer.html) to skip scanning rows from the local region when performing a [lookup join](../v23.2/joins.html#lookup-joins) with a [`REGIONAL BY ROW` table](../v23.2/regional-tables.html#regional-by-row-tables) as the input. [#114458][#114458] +- Removed duplication of metrics names on [DB Console Metrics](../v23.2/ui-overview.html#metrics) charts' tooltips. +- Fixed a bug that could cause [ALTER DATABASE ... ADD/DROP REGION](../v23.2/alter-database.html#add-region) to hang if [node localities](../v23.2/cockroach-start.html#locality) were changed after regions were added. +- A bug in the [log configuration](../v23.2/configure-logs.html) code prevented users from setting the [`datetime-format` and `datetime-timezone` log format options](../v23.2/configure-logs.html#datetime-field-for-json-format) (set via the `format-options` structure) within their log configuration. Specifically, when users tried to use these options in `file-defaults` with any [`json`](../v23.2/log-formats.html#format-json) type log format, the log configuration was previously unable to be parsed due to validation errors. This was because the `file-defaults.format-options` were propagated to the `sinks.stderr.format-options`. `sinks.stderr` only supports a format of [`crdb-v2-tty`](../v23.2/log-formats.html#format-crdb-v2-tty). Therefore, the incorrectly propagated `format-options`, which are only supported by the `json` log format, were identified as not being supported when validating `sinks.stderr`. This bug is now fixed and the `file-defaults.format-options` are only propagated to `sinks.stderr.format-options` if both of these conditions are true: 1. `file-defaults.format` is one of [`crdb-v2`](../v23.2/log-formats.html#format-crdb-v2) or `crdb-v2-tty`. 2. `sinks.stderr.format-options` are not explicitly set in the log configuration. +- Previously, when executing queries with [index joins](../v23.2/indexes.html#storing-columns) or [lookup joins](../v23.2/joins.html#lookup-joins) or both when the ordering needs to be maintained, CockroachDB in some cases would get into a pathological behavior which would lead to increased query latency, possibly by one or two orders of magnitude. This bug was introduced in v22.2 and is now fixed. +- Previously, the [SHOW STATISTICS command](../v23.2/show-statistics.html) incorrectly required the user to have the admin role. Now, it correctly only requires the user to have any [privilege](../v23.2/security-reference/authorization.html#privileges) on the table being inspected. +- Fixed a bug that could cause a [query plan](../v23.2/cost-based-optimizer.html) to skip scanning rows from the local region when performing a [lookup join](../v23.2/joins.html#lookup-joins) with a [`REGIONAL BY ROW` table](../v23.2/regional-tables.html#regional-by-row-tables) as the input.

Performance improvements

-- This change prevents failed requests from being issued on follower nodes that are [draining, decommissioning](../v23.2/node-shutdown.html) or unhealthy which prevents latency spikes if those nodes later go offline. [#114259][#114259] +- This change prevents failed requests from being issued on follower nodes that are [draining, decommissioning](../v23.2/node-shutdown.html) or unhealthy which prevents latency spikes if those nodes later go offline.
@@ -37,20 +37,3 @@ Release Date: November 20, 2023 This release includes 95 merged PRs by 33 authors.
- -[#113684]: https://github.com/cockroachdb/cockroach/pull/113684 -[#113728]: https://github.com/cockroachdb/cockroach/pull/113728 -[#113833]: https://github.com/cockroachdb/cockroach/pull/113833 -[#113850]: https://github.com/cockroachdb/cockroach/pull/113850 -[#113876]: https://github.com/cockroachdb/cockroach/pull/113876 -[#113880]: https://github.com/cockroachdb/cockroach/pull/113880 -[#113907]: https://github.com/cockroachdb/cockroach/pull/113907 -[#113970]: https://github.com/cockroachdb/cockroach/pull/113970 -[#114102]: https://github.com/cockroachdb/cockroach/pull/114102 -[#114117]: https://github.com/cockroachdb/cockroach/pull/114117 -[#114241]: https://github.com/cockroachdb/cockroach/pull/114241 -[#114259]: https://github.com/cockroachdb/cockroach/pull/114259 -[#114449]: https://github.com/cockroachdb/cockroach/pull/114449 -[#114458]: https://github.com/cockroachdb/cockroach/pull/114458 -[1c1ed20ea]: https://github.com/cockroachdb/cockroach/commit/1c1ed20ea -[f3e3583fb]: https://github.com/cockroachdb/cockroach/commit/f3e3583fb diff --git a/src/current/_includes/releases/v23.2/v23.2.0-beta.1.md b/src/current/_includes/releases/v23.2/v23.2.0-beta.1.md index 649e1f40687..897701bf006 100644 --- a/src/current/_includes/releases/v23.2/v23.2.0-beta.1.md +++ b/src/current/_includes/releases/v23.2/v23.2.0-beta.1.md @@ -6,26 +6,20 @@ Release Date: November 27, 2023

SQL language changes

-- [`COPY`](../v23.2/copy.html) commands now use the [`background` quality-of-service level](../v23.2/admission-control.html#set-quality-of-service-level-for-a-session) by default, which makes `COPY` commands subject to [admission control](../v23.2/admission-control.html). The new session variable `copy_transaction_quality_of_service` controls the quality-of-service level for `COPY` commands. Previously, `COPY` used the same level as other commands, determined by the `default_transaction_quality_of_service` session variable, which is set to `regular` by default. `regular` is not subject to admission control. [#114535][#114535] +- [`COPY`](../v23.2/copy.html) commands now use the [`background` quality-of-service level](../v23.2/admission-control.html#set-quality-of-service-level-for-a-session) by default, which makes `COPY` commands subject to [admission control](../v23.2/admission-control.html). The new session variable `copy_transaction_quality_of_service` controls the quality-of-service level for `COPY` commands. Previously, `COPY` used the same level as other commands, determined by the `default_transaction_quality_of_service` session variable, which is set to `regular` by default. `regular` is not subject to admission control.

DB Console changes

-- The [Overview page](../v23.2/ui-overview.html) now correctly renders the background color for the email signup, which fixes an issue where it was difficult to read the text. [#114547][#114547] -- Fixed a bug where selecting the internal application name prefix `$ internal` from the **Application Name** dropdown on the [**SQL Activity Statements** page](../v23.2/ui-statements-page.html) was not showing internal queries. The filtering logic will now show if there are statements with the `$ internal` application name prefix. [#114517][#114517] +- The [Overview page](../v23.2/ui-overview.html) now correctly renders the background color for the email signup, which fixes an issue where it was difficult to read the text. +- Fixed a bug where selecting the internal application name prefix `$ internal` from the **Application Name** dropdown on the [**SQL Activity Statements** page](../v23.2/ui-statements-page.html) was not showing internal queries. The filtering logic will now show if there are statements with the `$ internal` application name prefix.

Bug fixes

-- Fixed a bug where an empty [range](../v23.2/architecture/overview.html#architecture-range) corresponding to a [`DROP TABLE`](../v23.2/drop-table.html) did not respect system-level span configurations such as [protected timestamps](../v23.2/architecture/storage-layer.html#protected-timestamps), which potentially caused reads above the protected timestamp to fail. [#114833][#114833] -- Fixed error handling for `GetFiles` so that it does not cause a nil pointer dereference. [#114830][#114830] +- Fixed a bug where an empty [range](../v23.2/architecture/overview.html#architecture-range) corresponding to a [`DROP TABLE`](../v23.2/drop-table.html) did not respect system-level span configurations such as [protected timestamps](../v23.2/architecture/storage-layer.html#protected-timestamps), which potentially caused reads above the protected timestamp to fail. +- Fixed error handling for `GetFiles` so that it does not cause a nil pointer dereference.

Contributors

This release includes 33 merged PRs by 21 authors. - -[#114517]: https://github.com/cockroachdb/cockroach/pull/114517 -[#114535]: https://github.com/cockroachdb/cockroach/pull/114535 -[#114547]: https://github.com/cockroachdb/cockroach/pull/114547 -[#114830]: https://github.com/cockroachdb/cockroach/pull/114830 -[#114833]: https://github.com/cockroachdb/cockroach/pull/114833 diff --git a/src/current/_includes/releases/v23.2/v23.2.0-beta.2.md b/src/current/_includes/releases/v23.2/v23.2.0-beta.2.md index a73679e6a57..d94d9299667 100644 --- a/src/current/_includes/releases/v23.2/v23.2.0-beta.2.md +++ b/src/current/_includes/releases/v23.2/v23.2.0-beta.2.md @@ -6,38 +6,38 @@ Release Date: December 5, 2023

General changes

-- CockroachDB now periodically dumps the state of its internal memory accounting system into the `heap_profiler/` directory when a heap profile is taken. To disable this behavior, set the `diagnostics.memory_monitoring_dumps.enabled` [cluster setting](https://cockroachlabs.com/docs/v23.2/cluster-settings) to `false`. [#114998][#114998] -- Multi-level compactions have been disabled to investigate possible performance issues with foreground throughput and latency. [#115481][#115481] +- CockroachDB now periodically dumps the state of its internal memory accounting system into the `heap_profiler/` directory when a heap profile is taken. To disable this behavior, set the `diagnostics.memory_monitoring_dumps.enabled` [cluster setting](https://cockroachlabs.com/docs/v23.2/cluster-settings) to `false`. +- Multi-level compactions have been disabled to investigate possible performance issues with foreground throughput and latency.

Enterprise Edition changes

-- When using [Physical Cluster Replication](https://cockroachlabs.com/docs/v23.2/physical-cluster-replication-overview), you can now [initiate a cutover](https://cockroachlabs.com/docs/v23.2/cutover-replication) as of `LATEST` before the initial scan completes. [#115101][#115101] -- Sensitive information such as `api_secret`, `sasl_password`, `client_cert`, and `ca_cert`, is now redacted in output from commands `SHOW CHANGEFEED JOB`, `SHOW CHANGEFEED JOBS`, and [`SHOW JOBS`](https://cockroachlabs.com/docs/v23.2/show-jobs). [#115567][#115567] -- The `physical_replication.frontier_lag_nanos` metric and the related DB Console graph have been removed because they sometimes display incorrect information. For [alerting](https://cockroachlabs.com/docs/v23.2/physical-cluster-replication-monitoring#prometheus), it is recommended to use the new metric `physical_replication.replicated_time_seconds` metric instead. [#115234][#115234] -- Fixed a bug in [physical cluster replication](https://cockroachlabs.com/docs/v23.2/physical-cluster-replication-overview) where replicating from a primary cluster that is on a version prior to v23.2.x to a standby cluster running on v23.2.x could fail because of an undefined builtin function in the primary cluster. [#114257][#114257] +- When using [Physical Cluster Replication](https://cockroachlabs.com/docs/v23.2/physical-cluster-replication-overview), you can now [initiate a cutover](https://cockroachlabs.com/docs/v23.2/cutover-replication) as of `LATEST` before the initial scan completes. +- Sensitive information such as `api_secret`, `sasl_password`, `client_cert`, and `ca_cert`, is now redacted in output from commands `SHOW CHANGEFEED JOB`, `SHOW CHANGEFEED JOBS`, and [`SHOW JOBS`](https://cockroachlabs.com/docs/v23.2/show-jobs). +- The `physical_replication.frontier_lag_nanos` metric and the related DB Console graph have been removed because they sometimes display incorrect information. For [alerting](https://cockroachlabs.com/docs/v23.2/physical-cluster-replication-monitoring#prometheus), it is recommended to use the new metric `physical_replication.replicated_time_seconds` metric instead. +- Fixed a bug in [physical cluster replication](https://cockroachlabs.com/docs/v23.2/physical-cluster-replication-overview) where replicating from a primary cluster that is on a version prior to v23.2.x to a standby cluster running on v23.2.x could fail because of an undefined builtin function in the primary cluster.

DB Console changes

-- In the [Changeeds dashboard]({% link v23.2/ui-cdc-dashboard.md %}), the **Max Checkpoint Latency** chart title now refers to "Lag" rather than "Latency", to better reflect the intention of the underlying metric, which measures how recently the changefeed was last checkpointed. [#115003][#115003] -- Times on the X-Axis of bar charts in **Statement details** pages are now correctly formatted in UTC. [#115220][#115220] -- In the **SQL Activity** **Transaction Details** page, you can now view a transaction fingerprint ID across multiple applications by specifying the application name in the `appNames` URL `GET` parameter using a comma-separated encoded string of transaction fingerprint IDs. [#115204][#115204] +- In the [Changeeds dashboard]({% link v23.2/ui-cdc-dashboard.md %}), the **Max Checkpoint Latency** chart title now refers to "Lag" rather than "Latency", to better reflect the intention of the underlying metric, which measures how recently the changefeed was last checkpointed. +- Times on the X-Axis of bar charts in **Statement details** pages are now correctly formatted in UTC. +- In the **SQL Activity** **Transaction Details** page, you can now view a transaction fingerprint ID across multiple applications by specifying the application name in the `appNames` URL `GET` parameter using a comma-separated encoded string of transaction fingerprint IDs.

Bug fixes

-- Fixed a bug that prevented the **Now** button on time range selectors in the DB Console from working as expected when a custom time period was previously selected. [#115514][#115514] -- Fixed a bug that prevented the **SQL Activity** page from showing internal statements when the `sql.stats.response.show_internal.enabled` [cluster setting](https://cockroachlabs.com/docs/v23.2/cluster-settings) was set to `true`. [#114824][#114824] -- Fixed a bug where an active replication report update could get stuck in a retry loop on clusters with over 10000 ranges. This could prevent a node from shutting down cleanly. [#114178][#114178] -- Fixed a bug introduced in v23.1 that could cause an internal error when using the text format (as opposed to binary) when [preparing a statement](https://www.cockroachlabs.com/docs/v23.2/sql-grammar#prepare_stmt) with a user-defined composite type. [#115064][#115064] -- Fixed a bug that could cause a replica to be stuck processing in a queue's replica set when the replica had recently been removed from purgatory for processing but was destroyed, or the replica's ID changed before being processed. These replicas are now removed from the queue when they are encountered. [#115037][#115037] -- Fixed a bug that could cause a [prepared statement](https://www.cockroachlabs.com/docs/v23.2/sql-grammar#prepare_stmt) to fail if it references both an `enum` and a table that has undergone a schema change. [#115132][#115132] -- Fixed a bug that could cause cluster version finalization to contend with descriptor lease renewals on large clusters. Descriptor lease renewals previously had a higher priority than cluster upgrade finalization. Finalization now always has a higher priority than descriptor lease renewal. [#115034][#115034] -- Fixed a bug that prevented [backups](https://cockroachlabs.com/docs/v23.2/backup) from distributing work evenly across all replicas, including followers, regardless of leaseholder placement. [#115019][#115019] -- Fixed a bug introduced in v23.2.0-beta.1 that could cause a single composite-typed variable to be incorrectly handled as the target of a PostgreSQL `INTO` clause. [#115404][#115404] -- Fixed a bug that could cause a `BEGIN` statement log to record incorrect information in the `Age` field, which could also cause them to appear erroneously in slow-query logs. [#115259][#115259] +- Fixed a bug that prevented the **Now** button on time range selectors in the DB Console from working as expected when a custom time period was previously selected. +- Fixed a bug that prevented the **SQL Activity** page from showing internal statements when the `sql.stats.response.show_internal.enabled` [cluster setting](https://cockroachlabs.com/docs/v23.2/cluster-settings) was set to `true`. +- Fixed a bug where an active replication report update could get stuck in a retry loop on clusters with over 10000 ranges. This could prevent a node from shutting down cleanly. +- Fixed a bug introduced in v23.1 that could cause an internal error when using the text format (as opposed to binary) when [preparing a statement](https://www.cockroachlabs.com/docs/v23.2/sql-grammar#prepare_stmt) with a user-defined composite type. +- Fixed a bug that could cause a replica to be stuck processing in a queue's replica set when the replica had recently been removed from purgatory for processing but was destroyed, or the replica's ID changed before being processed. These replicas are now removed from the queue when they are encountered. +- Fixed a bug that could cause a [prepared statement](https://www.cockroachlabs.com/docs/v23.2/sql-grammar#prepare_stmt) to fail if it references both an `enum` and a table that has undergone a schema change. +- Fixed a bug that could cause cluster version finalization to contend with descriptor lease renewals on large clusters. Descriptor lease renewals previously had a higher priority than cluster upgrade finalization. Finalization now always has a higher priority than descriptor lease renewal. +- Fixed a bug that prevented [backups](https://cockroachlabs.com/docs/v23.2/backup) from distributing work evenly across all replicas, including followers, regardless of leaseholder placement. +- Fixed a bug introduced in v23.2.0-beta.1 that could cause a single composite-typed variable to be incorrectly handled as the target of a PostgreSQL `INTO` clause. +- Fixed a bug that could cause a `BEGIN` statement log to record incorrect information in the `Age` field, which could also cause them to appear erroneously in slow-query logs.

Performance improvements

-- Query planning time has been reduced significantly for some queries in which many tables are joined. [#114445][#114445] +- Query planning time has been reduced significantly for some queries in which many tables are joined.
@@ -46,27 +46,3 @@ Release Date: December 5, 2023 This release includes 91 merged PRs by 35 authors.
- -[#114178]: https://github.com/cockroachdb/cockroach/pull/114178 -[#114445]: https://github.com/cockroachdb/cockroach/pull/114445 -[#114824]: https://github.com/cockroachdb/cockroach/pull/114824 -[#114998]: https://github.com/cockroachdb/cockroach/pull/114998 -[#115003]: https://github.com/cockroachdb/cockroach/pull/115003 -[#115037]: https://github.com/cockroachdb/cockroach/pull/115037 -[#115064]: https://github.com/cockroachdb/cockroach/pull/115064 -[#115101]: https://github.com/cockroachdb/cockroach/pull/115101 -[#115132]: https://github.com/cockroachdb/cockroach/pull/115132 -[#115145]: https://github.com/cockroachdb/cockroach/pull/115145 -[#115181]: https://github.com/cockroachdb/cockroach/pull/115181 -[#114257]: https://github.com/cockroachdb/cockroach/pull/114257 -[#115019]: https://github.com/cockroachdb/cockroach/pull/115019 -[#115034]: https://github.com/cockroachdb/cockroach/pull/115034 -[#115204]: https://github.com/cockroachdb/cockroach/pull/115204 -[#115220]: https://github.com/cockroachdb/cockroach/pull/115220 -[#115234]: https://github.com/cockroachdb/cockroach/pull/115234 -[#115259]: https://github.com/cockroachdb/cockroach/pull/115259 -[#115404]: https://github.com/cockroachdb/cockroach/pull/115404 -[#115481]: https://github.com/cockroachdb/cockroach/pull/115481 -[#115514]: https://github.com/cockroachdb/cockroach/pull/115514 -[#115567]: https://github.com/cockroachdb/cockroach/pull/115567 -[#115604]: https://github.com/cockroachdb/cockroach/pull/115604 diff --git a/src/current/_includes/releases/v23.2/v23.2.0-beta.3.md b/src/current/_includes/releases/v23.2/v23.2.0-beta.3.md index b99be77d2a6..2ffb1de1d2a 100644 --- a/src/current/_includes/releases/v23.2/v23.2.0-beta.3.md +++ b/src/current/_includes/releases/v23.2/v23.2.0-beta.3.md @@ -6,24 +6,24 @@ Release Date: December 13, 2023

General changes

-- Updated Go version to 1.21.3. [#116098][#116098] +- Updated Go version to 1.21.3.

SQL language changes

-- Added the `sql.ttl.default_select_rate_limit` [cluster setting](../v23.2/cluster-settings.html) and the `ttl_select_rate_limit` [table storage parameter](../v23.2/with-storage-parameter.html#table-parameters) to set the TTL select rate limit. This sets the number of records per table per second per node that can be selected by the TTL job. [#115802][#115802] +- Added the `sql.ttl.default_select_rate_limit` [cluster setting](../v23.2/cluster-settings.html) and the `ttl_select_rate_limit` [table storage parameter](../v23.2/with-storage-parameter.html#table-parameters) to set the TTL select rate limit. This sets the number of records per table per second per node that can be selected by the TTL job.

Bug fixes

-- Fixed a bug that could result in an incorrect `too few columns` error for queries that use `ANY ` syntax with a subquery. [#115592][#115592] -- Fixed a bug that could cause `too few columns`/`too many columns` errors for queries that used `IN` or `NOT IN` with a non-trivial right operand, such as a subquery (rather than a constant tuple). [#115592][#115592] -- Fixed a bug where [`CREATE INDEX`](../v23.2/create-index.html) with expressions could fail on materialized [views](../v23.2/views.html) when the declarative schema changer was used. [#115522][#115522] -- Fixed a bug that could cause PL/pgSQL routines with `SELECT INTO` syntax to return early. This bug existed only in pre-release versions v23.2.0-beta.1 and v23.2.0-beta.2. [#115676][#115676] -- Fixed a bug that could cause side effects to happen out of order for PL/pgSQL routines in rare cases. This bug existed only in v23.2 alpha versions and previous v23.2 beta versions. [#115840][#115840] -- Previously, in rare cases, CockroachDB could incorrectly evaluate queries with lookup [joins](../v23.2/joins.html) where `equality cols are key` when performing lookups on multiple ranges. This could either manifest as a stuck query or result in incorrect output. The bug was introduced in v22.2 and is now fixed. [#115580][#115580] -- Fixed a durability bug in Raft log storage that was caused by incorrect syncing of filesystem metadata. It was possible to lose writes of a particular kind (`AddSSTable`) used by (e.g.) `RESTORE`. This loss was possible only under power-off or OS crash conditions. As a result, CockroachDB could enter a crash loop on restart. In the worst case of a coordinated power-off/crash across multiple nodes, this could lead to an unrecoverable loss of quorum. [#115841][#115841] -- Fixed a bug where large jobs running with [`execution locality`](../v23.2/take-locality-restricted-backups.html) option could result in the [gateway node](../v23.2/architecture/sql-layer.html#gateway-node) being assigned most of the work causing performance degradation and cluster instability. [#115876][#115876] -- Fixed a bug that prevented naming UDT parameters when [dropping a user-defined function](../v23.2/drop-function.html) (or procedure). This bug has existed since v23.1. [#115905][#115905] -- Locking tables (e.g., with [SELECT ... FOR UPDATE](../v23.2/select-for-update.html)) on the null-extended side of outer joins (e.g., the right side of a `LEFT JOIN`) is now disallowed and returns an error. This improves compatibility with PostgreSQL and prevents ambiguity in locking semantics. This bug has existed since locking with `FOR UPDATE` was introduced. [#115879][#115879] +- Fixed a bug that could result in an incorrect `too few columns` error for queries that use `ANY ` syntax with a subquery. +- Fixed a bug that could cause `too few columns`/`too many columns` errors for queries that used `IN` or `NOT IN` with a non-trivial right operand, such as a subquery (rather than a constant tuple). +- Fixed a bug where [`CREATE INDEX`](../v23.2/create-index.html) with expressions could fail on materialized [views](../v23.2/views.html) when the declarative schema changer was used. +- Fixed a bug that could cause PL/pgSQL routines with `SELECT INTO` syntax to return early. This bug existed only in pre-release versions v23.2.0-beta.1 and v23.2.0-beta.2. +- Fixed a bug that could cause side effects to happen out of order for PL/pgSQL routines in rare cases. This bug existed only in v23.2 alpha versions and previous v23.2 beta versions. +- Previously, in rare cases, CockroachDB could incorrectly evaluate queries with lookup [joins](../v23.2/joins.html) where `equality cols are key` when performing lookups on multiple ranges. This could either manifest as a stuck query or result in incorrect output. The bug was introduced in v22.2 and is now fixed. +- Fixed a durability bug in Raft log storage that was caused by incorrect syncing of filesystem metadata. It was possible to lose writes of a particular kind (`AddSSTable`) used by (e.g.) `RESTORE`. This loss was possible only under power-off or OS crash conditions. As a result, CockroachDB could enter a crash loop on restart. In the worst case of a coordinated power-off/crash across multiple nodes, this could lead to an unrecoverable loss of quorum. +- Fixed a bug where large jobs running with [`execution locality`](../v23.2/take-locality-restricted-backups.html) option could result in the [gateway node](../v23.2/architecture/sql-layer.html#gateway-node) being assigned most of the work causing performance degradation and cluster instability. +- Fixed a bug that prevented naming UDT parameters when [dropping a user-defined function](../v23.2/drop-function.html) (or procedure). This bug has existed since v23.1. +- Locking tables (e.g., with [SELECT ... FOR UPDATE](../v23.2/select-for-update.html)) on the null-extended side of outer joins (e.g., the right side of a `LEFT JOIN`) is now disallowed and returns an error. This improves compatibility with PostgreSQL and prevents ambiguity in locking semantics. This bug has existed since locking with `FOR UPDATE` was introduced.
@@ -32,15 +32,3 @@ Release Date: December 13, 2023 This release includes 26 merged PRs by 20 authors.
- -[#115522]: https://github.com/cockroachdb/cockroach/pull/115522 -[#115580]: https://github.com/cockroachdb/cockroach/pull/115580 -[#115592]: https://github.com/cockroachdb/cockroach/pull/115592 -[#115676]: https://github.com/cockroachdb/cockroach/pull/115676 -[#115802]: https://github.com/cockroachdb/cockroach/pull/115802 -[#115840]: https://github.com/cockroachdb/cockroach/pull/115840 -[#115841]: https://github.com/cockroachdb/cockroach/pull/115841 -[#115876]: https://github.com/cockroachdb/cockroach/pull/115876 -[#115879]: https://github.com/cockroachdb/cockroach/pull/115879 -[#115905]: https://github.com/cockroachdb/cockroach/pull/115905 -[#116098]: https://github.com/cockroachdb/cockroach/pull/116098 diff --git a/src/current/_includes/releases/v23.2/v23.2.0-rc.1.md b/src/current/_includes/releases/v23.2/v23.2.0-rc.1.md index be9223ac6d7..c2da6c72c6b 100644 --- a/src/current/_includes/releases/v23.2/v23.2.0-rc.1.md +++ b/src/current/_includes/releases/v23.2/v23.2.0-rc.1.md @@ -6,35 +6,35 @@ Release Date: December 21, 2023

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

-- Added a SQL function `crdb_internal.fips_ready()` that can be used to verify the [FIPS](../v23.2/fips.html) readiness of the gateway node. [#116281][#116281] -- [Physical cluster replication](../v23.2/physical-cluster-replication-overview.html) now retries for just over 3 minutes before failing. [#116404][#116404] +- Added a SQL function `crdb_internal.fips_ready()` that can be used to verify the [FIPS](../v23.2/fips.html) readiness of the gateway node. +- [Physical cluster replication](../v23.2/physical-cluster-replication-overview.html) now retries for just over 3 minutes before failing.

SQL language changes

-- `CALL` statements can now be run with [`EXPLAIN`](../v23.2/explain.html). The `EXPLAIN (OPT)` variant will show the body of the procedure, while other variants will show only the procedure name and arguments. [#116273][#116273] -- Added support for [`IMPORT INTO`](../v23.2/import-into.html) a table that has columns typed as arrays of user-defined types (like [`ENUM`](../v23.2/enum.html)). Tables that use multiple user-defined types with the same name but different schemas are still unsupported. [#116360][#116360] -- The [`SELECT FOR UPDATE`](../v23.2/select-for-update.html) implementation used under Read Committed isolation (and under [Serializable isolation](../v23.2/demo-serializable.html) when [`optimizer_use_lock_op_for_serializable`](../v23.2/set-vars.html) is set to `true`) now locks all [column families](../v23.2/column-families.html) instead of only the first column family. [#116828][#116828] +- `CALL` statements can now be run with [`EXPLAIN`](../v23.2/explain.html). The `EXPLAIN (OPT)` variant will show the body of the procedure, while other variants will show only the procedure name and arguments. +- Added support for [`IMPORT INTO`](../v23.2/import-into.html) a table that has columns typed as arrays of user-defined types (like [`ENUM`](../v23.2/enum.html)). Tables that use multiple user-defined types with the same name but different schemas are still unsupported. +- The [`SELECT FOR UPDATE`](../v23.2/select-for-update.html) implementation used under Read Committed isolation (and under [Serializable isolation](../v23.2/demo-serializable.html) when [`optimizer_use_lock_op_for_serializable`](../v23.2/set-vars.html) is set to `true`) now locks all [column families](../v23.2/column-families.html) instead of only the first column family.

Command-line changes

-- Added the command [`cockroach debug enterprise-check-fips`](../v23.2/cockroach-commands.html) that diagnoses errors in [FIPS](../v23.2/fips.html) deployments. [#116281][#116281] -- Added the flag `--enterprise-require-fips-ready` that can be run with any [CockroachDB command](../v23.2/cockroach-commands.html) to prevent startup if certain prerequisites for [FIPS](../v23.2/fips.html) compliance are not met. [#116281][#116281] +- Added the command [`cockroach debug enterprise-check-fips`](../v23.2/cockroach-commands.html) that diagnoses errors in [FIPS](../v23.2/fips.html) deployments. +- Added the flag `--enterprise-require-fips-ready` that can be run with any [CockroachDB command](../v23.2/cockroach-commands.html) to prevent startup if certain prerequisites for [FIPS](../v23.2/fips.html) compliance are not met.

DB Console changes

-- Updated the **CPU Time** label to **SQL CPU Time** and added clarification to its tooltip on the [SQL Activity](../v23.2/ui-overview.html#sql-activity) and [Insights](../v23.2/ui-insights-page.html) pages. [#116450][#116450] -- Removed the ID when it is `undefined` from the event description in the [Metrics Events Panel](../v23.2/ui-overview-dashboard.html#events-panel). [#116519][#116519] +- Updated the **CPU Time** label to **SQL CPU Time** and added clarification to its tooltip on the [SQL Activity](../v23.2/ui-overview.html#sql-activity) and [Insights](../v23.2/ui-insights-page.html) pages. +- Removed the ID when it is `undefined` from the event description in the [Metrics Events Panel](../v23.2/ui-overview-dashboard.html#events-panel).

Bug fixes

-- Fixed a bug that caused node crashes and panics when running [`INSERT`](../v23.2/insert.html) queries on [`REGIONAL BY ROW`](../v23.2/table-localities.html#regional-by-row-tables) tables with `UNIQUE` constraints or indexes. The bug is only present in version v23.2.0-beta.1. [#116343][#116343] -- [`UPDATE`](../v23.2/update.html), [`UPSERT`](../v23.2/upsert.html), and [`INSERT ON CONFLICT`](../v23.2/insert.html#on-conflict-clause) queries are now disallowed under Read Committed isolation when the table contains a [`CHECK` constraint](../v23.2/check.html) involving a [column family](../v23.2/column-families.html) that is updated, and that `CHECK` constraint also involves a column family that is **not** updated, but **is** read. This restriction is a temporary fix to prevent possible violation of the `CHECK` constraint. However, it is important to note that this restriction will be lifted in the future. [#116429][#116429] -- Fixed a bug where [scheduled jobs](../v23.2/show-schedules.html) using [external storage providers](../v23.2/use-cloud-storage.html) may fail shortly after node startup. [#116205][#116205] -- Fixed the formatting for `plpgsql` routines, which could prevent the creation of a routine with loop labels and could prevent some expressions from being redacted correctly. The bug only existed in alpha and beta versions of v23.2. [#116711][#116711] -- Fixed a bug that would cause a syntax error during redaction of a PL/pgSQL routine. The bug existed only in alpha and beta versions of the v23.2 release. [#116711][#116711] -- Fixed a bug that would cause syntax errors when attempting to [restore a database](../v23.2/restore.html#restore-a-database) with [PL/pgSQL UDFs](https://www.postgresql.org/docs/current/sql-createfunction.html) or stored [procedures](https://www.postgresql.org/docs/16/sql-createprocedure.html). This bug only affected alpha and beta versions of v23.2. [#116711][#116711] -- Fixed a bug in PL/pgSQL where altering the name of a [sequence](../v23.2/create-sequence.html) or UDT that was used in a [PL/pgSQL function](https://www.postgresql.org/docs/current/sql-createfunction.html) or [procedure](https://www.postgresql.org/docs/16/sql-createprocedure.html) could break them. This is only present in v23.2 alpha and beta releases. [#116420][#116420] -- Fixed a bug where [`SELECT FOR UPDATE`](../v23.2/select-for-update.html) under Read Committed isolation on multi-column-family tables was not locking [column families](../v23.2/column-families.html) containing only key columns. [#116828][#116828] +- Fixed a bug that caused node crashes and panics when running [`INSERT`](../v23.2/insert.html) queries on [`REGIONAL BY ROW`](../v23.2/table-localities.html#regional-by-row-tables) tables with `UNIQUE` constraints or indexes. The bug is only present in version v23.2.0-beta.1. +- [`UPDATE`](../v23.2/update.html), [`UPSERT`](../v23.2/upsert.html), and [`INSERT ON CONFLICT`](../v23.2/insert.html#on-conflict-clause) queries are now disallowed under Read Committed isolation when the table contains a [`CHECK` constraint](../v23.2/check.html) involving a [column family](../v23.2/column-families.html) that is updated, and that `CHECK` constraint also involves a column family that is **not** updated, but **is** read. This restriction is a temporary fix to prevent possible violation of the `CHECK` constraint. However, it is important to note that this restriction will be lifted in the future. +- Fixed a bug where [scheduled jobs](../v23.2/show-schedules.html) using [external storage providers](../v23.2/use-cloud-storage.html) may fail shortly after node startup. +- Fixed the formatting for `plpgsql` routines, which could prevent the creation of a routine with loop labels and could prevent some expressions from being redacted correctly. The bug only existed in alpha and beta versions of v23.2. +- Fixed a bug that would cause a syntax error during redaction of a PL/pgSQL routine. The bug existed only in alpha and beta versions of the v23.2 release. +- Fixed a bug that would cause syntax errors when attempting to [restore a database](../v23.2/restore.html#restore-a-database) with [PL/pgSQL UDFs](https://www.postgresql.org/docs/current/sql-createfunction.html) or stored [procedures](https://www.postgresql.org/docs/16/sql-createprocedure.html). This bug only affected alpha and beta versions of v23.2. +- Fixed a bug in PL/pgSQL where altering the name of a [sequence](../v23.2/create-sequence.html) or UDT that was used in a [PL/pgSQL function](https://www.postgresql.org/docs/current/sql-createfunction.html) or [procedure](https://www.postgresql.org/docs/16/sql-createprocedure.html) could break them. This is only present in v23.2 alpha and beta releases. +- Fixed a bug where [`SELECT FOR UPDATE`](../v23.2/select-for-update.html) under Read Committed isolation on multi-column-family tables was not locking [column families](../v23.2/column-families.html) containing only key columns. - Fixed a bug where all `AggHistogram`-powered metrics were not reporting quantiles properly in the [DB Console](../v23.2/ui-overview.html). The quantiles in the DB Console are now reported correctly. This bug was only present in histograms in the [DB Console metrics](../v23.2/ui-overview-dashboard.html) features, and did **not** affect metrics reporting in the [Prometheus-compatible](../v23.2/monitor-cockroachdb-with-prometheus.html) endpoint, `/_status/vars`. The affected metrics were: - `changefeed.message_size_hist` - `changefeed.parallel_io_queue_nanos` @@ -46,24 +46,8 @@ Release Date: December 21, 2023 - `jobs.row_level_ttl.select_duration` - `jobs.row_level_ttl.delete_duration` - [#116871][#116871] +

Contributors

This release includes 49 merged PRs by 26 authors. - -[#116205]: https://github.com/cockroachdb/cockroach/pull/116205 -[#116273]: https://github.com/cockroachdb/cockroach/pull/116273 -[#116281]: https://github.com/cockroachdb/cockroach/pull/116281 -[#116343]: https://github.com/cockroachdb/cockroach/pull/116343 -[#116360]: https://github.com/cockroachdb/cockroach/pull/116360 -[#116392]: https://github.com/cockroachdb/cockroach/pull/116392 -[#116404]: https://github.com/cockroachdb/cockroach/pull/116404 -[#116420]: https://github.com/cockroachdb/cockroach/pull/116420 -[#116429]: https://github.com/cockroachdb/cockroach/pull/116429 -[#116450]: https://github.com/cockroachdb/cockroach/pull/116450 -[#116519]: https://github.com/cockroachdb/cockroach/pull/116519 -[#116711]: https://github.com/cockroachdb/cockroach/pull/116711 -[#116828]: https://github.com/cockroachdb/cockroach/pull/116828 -[#116871]: https://github.com/cockroachdb/cockroach/pull/116871 -[#116897]: https://github.com/cockroachdb/cockroach/pull/116897 diff --git a/src/current/_includes/releases/v23.2/v23.2.0-rc.2.md b/src/current/_includes/releases/v23.2/v23.2.0-rc.2.md index 7cdcddc0a66..b30f487934c 100644 --- a/src/current/_includes/releases/v23.2/v23.2.0-rc.2.md +++ b/src/current/_includes/releases/v23.2/v23.2.0-rc.2.md @@ -6,12 +6,9 @@ Release Date: January 9, 2024

Bug fixes

-- Fixed a bug introduced in v23.2 that caused internal errors and panics when certain queries ran with automatic [index recommendation collection enabled](../v23.2/cluster-settings.html#setting-sql-metrics-statement-details-index-recommendation-collection-enabled). [#117454][#117454] -- Fixed a bug where mixed-version clusters with both v23.1 and v23.2 nodes could detect a false-positive replica inconsistency in [`GLOBAL` tables](../v23.2/global-tables.html). [#117341][#117341] +- Fixed a bug introduced in v23.2 that caused internal errors and panics when certain queries ran with automatic [index recommendation collection enabled](../v23.2/cluster-settings.html#setting-sql-metrics-statement-details-index-recommendation-collection-enabled). +- Fixed a bug where mixed-version clusters with both v23.1 and v23.2 nodes could detect a false-positive replica inconsistency in [`GLOBAL` tables](../v23.2/global-tables.html).

Contributors

This release includes 12 merged PRs by 9 authors. - -[#117341]: https://github.com/cockroachdb/cockroach/pull/117341 -[#117454]: https://github.com/cockroachdb/cockroach/pull/117454 diff --git a/src/current/_includes/releases/v23.2/v23.2.0.md b/src/current/_includes/releases/v23.2/v23.2.0.md index 9e550e06224..19d3a69f678 100644 --- a/src/current/_includes/releases/v23.2/v23.2.0.md +++ b/src/current/_includes/releases/v23.2/v23.2.0.md @@ -339,12 +339,12 @@ In CockroachDB Self-Hosted, all available features are free to use unless their Before [upgrading to CockroachDB v23.2]({% link v23.2/upgrade-cockroach-version.md %}), be sure to review the following backward-incompatible changes, as well as [key cluster setting changes](#v23-2-0-cluster-settings), and adjust your deployment as necessary. -- The pre-v23.1 output produced by `SHOW RANGES`, `crdb_internal.ranges`, and `crdb_internal.ranges_no_leases` was deprecated in v23.1 and is now replaced by default with output that's compatible with coalesced ranges (anges that pack multiple tables/indexes/partitions into individual ranges). See the [v23.1 release notes]({% link releases/v23.1.md %}) for `SHOW RANGES` for more details. [#102961][#102961] -- When a deployment is configured to use a time zone for log file output using formats `crdb-v1` or `crdb-v2`, new output log entries cannot be processed by nodes that have not been upgraded to v23.2. [#104265][#104265] -- When customizing the [SQL shell's interactive prompt]({% link v23.2/cockroach-sql.md %}), the special sequence `%M` now expands to the full host name instead of the combination of host name and port number. To include the port number explicitly, use `%>`. The special sequence `%m` now expands to the host name up to the first period. [#105137][#105137] -- The [`cockroach debug zip`]({% link v23.2/cockroach-debug-zip.md %}) command stores data retrieved from SQL tables in the remote cluster using the TSV format by default. [#107474][#107474] -- The [`changefeed.protect_timestamp.max_age` cluster setting]({% link v23.2/protect-changefeed-data.md %}) will only apply to newly created changefeeds in v23.2. For existing changefeeds, you can set the [`protect_data_from_gc_on_pause`]({% link v23.2/create-changefeed.md %}#protect-pause) option so that changefeeds do not experience infinite retries and accumulate protected change data. You can use the [`ALTER CHANGEFEED`]({% link v23.2/alter-changefeed.md %}) statement to add `protect_data_from_gc_on_pause` to existing changefeeds. [#103539][#103539] -- The direct export of traces to Jaeger and the [cluster setting](../v23.2/cluster-settings.html) `trace.jaeger.agent` have been removed. The direct export functionality had been obsoleted since 2022; it stopped working altogether sometime in 2023 with the following error: `data does not fit within one UDP packet; size 65006, max 65000, spans NN`. Since 2022, Jaeger supports ingestion of traces using OTLP; and CockroachDB has supported emitting traces using OTLP since v22.1. Operators and developers who want to inspect traces are thus invited to use the OTLP protocol instead. The corresponding cluster setting is `trace.opentelemetry.collector`. For a successful deployment, an intermediate OTLP collector/forwarder should be configured. For an example of how to orchestrate the OpenTelemetry collector and Jaeger together using Docker Compose, or how to configure the `otel-collector`, see the more-detailed entry in [v23.2-alpha.3 backward-incompatible changes](#v23-2-0-alpha-3-backward-incompatible-changes). [#111342][#111342] +- The pre-v23.1 output produced by `SHOW RANGES`, `crdb_internal.ranges`, and `crdb_internal.ranges_no_leases` was deprecated in v23.1 and is now replaced by default with output that's compatible with coalesced ranges (anges that pack multiple tables/indexes/partitions into individual ranges). See the [v23.1 release notes]({% link releases/v23.1.md %}) for `SHOW RANGES` for more details. +- When a deployment is configured to use a time zone for log file output using formats `crdb-v1` or `crdb-v2`, new output log entries cannot be processed by nodes that have not been upgraded to v23.2. +- When customizing the [SQL shell's interactive prompt]({% link v23.2/cockroach-sql.md %}), the special sequence `%M` now expands to the full host name instead of the combination of host name and port number. To include the port number explicitly, use `%>`. The special sequence `%m` now expands to the host name up to the first period. +- The [`cockroach debug zip`]({% link v23.2/cockroach-debug-zip.md %}) command stores data retrieved from SQL tables in the remote cluster using the TSV format by default. +- The [`changefeed.protect_timestamp.max_age` cluster setting]({% link v23.2/protect-changefeed-data.md %}) will only apply to newly created changefeeds in v23.2. For existing changefeeds, you can set the [`protect_data_from_gc_on_pause`]({% link v23.2/create-changefeed.md %}#protect-pause) option so that changefeeds do not experience infinite retries and accumulate protected change data. You can use the [`ALTER CHANGEFEED`]({% link v23.2/alter-changefeed.md %}) statement to add `protect_data_from_gc_on_pause` to existing changefeeds. +- The direct export of traces to Jaeger and the [cluster setting](../v23.2/cluster-settings.html) `trace.jaeger.agent` have been removed. The direct export functionality had been obsoleted since 2022; it stopped working altogether sometime in 2023 with the following error: `data does not fit within one UDP packet; size 65006, max 65000, spans NN`. Since 2022, Jaeger supports ingestion of traces using OTLP; and CockroachDB has supported emitting traces using OTLP since v22.1. Operators and developers who want to inspect traces are thus invited to use the OTLP protocol instead. The corresponding cluster setting is `trace.opentelemetry.collector`. For a successful deployment, an intermediate OTLP collector/forwarder should be configured. For an example of how to orchestrate the OpenTelemetry collector and Jaeger together using Docker Compose, or how to configure the `otel-collector`, see the more-detailed entry in [v23.2-alpha.3 backward-incompatible changes](#v23-2-0-alpha-3-backward-incompatible-changes).

Key Cluster Setting Changes

@@ -357,20 +357,20 @@ The following changes should be reviewed prior to upgrading. Default cluster set - `SET default_transaction_isolation = 'read committed'` - `SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED` - [#110624][#110624] -- The `sql.txn.read_committed_syntax.enabled` [cluster setting](../v23.2/cluster-settings.html) was renamed to [`sql.txn.read_committed_isolation.enabled`](../v23.2/cluster-settings.html#setting-sql-txn-read-committed-isolation-enabled). [#113833][#113833] -- Users who have the [`CREATEROLE` role option]({% link v23.2/grant.md %}) can now grant and revoke role membership in any non-admin role. This change also removes the [`sql.auth.createrole_allows_grant_role_membership.enabled` cluster setting]({% link v23.2/cluster-settings.md %}), which was added in v23.1. In v23.2, the cluster setting is effectively always true. [#104376][#104376] -- The [cluster setting]({% link v23.2/cluster-settings.md %}) `sql.metrics.statement_details.gateway_node.enabled` now defaults to false to reduce the number of rows generated in SQL Statistics pages. [#107788][#107788] -- The [cluster setting]({% link v23.2/cluster-settings.md %}) `kv.rangefeed.enabled` no longer controls access to `RANGEFEED SQL` commands. Instead, use `feature.changefeed.enabled`. [#110676][#110676] -- The [cluster settings]({% link v23.2/cluster-settings.md %}) related to [physical cluster replication](../v23.2/physical-cluster-replication-overview.html) have been renamed for consistency. For example, `bulkio.stream_ingestion.minimum_flush_interval` is now named `physical_replication.consumer.minimum_flush_interval`. [#111197][#111197] -- CockroachDB now periodically dumps the state of its internal memory accounting system into the `heap_profiler/` directory when a heap profile is taken. To disable this behavior, set the `diagnostics.memory_monitoring_dumps.enabled` [cluster setting]({% link v23.2/cluster-settings.md %}) to `false`. [#114998][#114998] -- Introduced the [cluster setting](../v23.2/cluster-settings.html) `kv.gc.sticky_hint.enabled` in v23.1.13. This setting helps expedite [garbage collection](../v23.2/architecture/storage-layer.html#garbage-collection) after range deletions. For example, when a SQL table or index is dropped. `kv.gc.sticky_hint.enabled` is enabled by default and deprecated in v23.2. [#113040][#113040] -- CockroachDB now enables the pacing mechanism in rangefeed closed timestamp notifications, by setting the default `kv.rangefeed.closed_timestamp_smear_interval` cluster setting to 1ms. This makes rangefeed closed timestamp delivery more uniform and less spikey, which reduces its impact on the Go scheduler and, ultimately, foreground SQL latencies. [#103006][#103006] + +- The `sql.txn.read_committed_syntax.enabled` [cluster setting](../v23.2/cluster-settings.html) was renamed to [`sql.txn.read_committed_isolation.enabled`](../v23.2/cluster-settings.html#setting-sql-txn-read-committed-isolation-enabled). +- Users who have the [`CREATEROLE` role option]({% link v23.2/grant.md %}) can now grant and revoke role membership in any non-admin role. This change also removes the [`sql.auth.createrole_allows_grant_role_membership.enabled` cluster setting]({% link v23.2/cluster-settings.md %}), which was added in v23.1. In v23.2, the cluster setting is effectively always true. +- The [cluster setting]({% link v23.2/cluster-settings.md %}) `sql.metrics.statement_details.gateway_node.enabled` now defaults to false to reduce the number of rows generated in SQL Statistics pages. +- The [cluster setting]({% link v23.2/cluster-settings.md %}) `kv.rangefeed.enabled` no longer controls access to `RANGEFEED SQL` commands. Instead, use `feature.changefeed.enabled`. +- The [cluster settings]({% link v23.2/cluster-settings.md %}) related to [physical cluster replication](../v23.2/physical-cluster-replication-overview.html) have been renamed for consistency. For example, `bulkio.stream_ingestion.minimum_flush_interval` is now named `physical_replication.consumer.minimum_flush_interval`. +- CockroachDB now periodically dumps the state of its internal memory accounting system into the `heap_profiler/` directory when a heap profile is taken. To disable this behavior, set the `diagnostics.memory_monitoring_dumps.enabled` [cluster setting]({% link v23.2/cluster-settings.md %}) to `false`. +- Introduced the [cluster setting](../v23.2/cluster-settings.html) `kv.gc.sticky_hint.enabled` in v23.1.13. This setting helps expedite [garbage collection](../v23.2/architecture/storage-layer.html#garbage-collection) after range deletions. For example, when a SQL table or index is dropped. `kv.gc.sticky_hint.enabled` is enabled by default and deprecated in v23.2. +- CockroachDB now enables the pacing mechanism in rangefeed closed timestamp notifications, by setting the default `kv.rangefeed.closed_timestamp_smear_interval` cluster setting to 1ms. This makes rangefeed closed timestamp delivery more uniform and less spikey, which reduces its impact on the Go scheduler and, ultimately, foreground SQL latencies.

Deprecations

-- The `protect_data_from_gc_on_pause` option has been deprecated. This option is no longer needed since changefeed jobs always protect data. [#103539][#103539] -- The `cockroach connect` functionality has been deprecated. [#114241][#114241] +- The `protect_data_from_gc_on_pause` option has been deprecated. This option is no longer needed since changefeed jobs always protect data. +- The `cockroach connect` functionality has been deprecated.

Known limitations

@@ -389,10 +389,3 @@ Docs | [Architecture Overview](https://www.cockroachlabs.com/doc Docs | [SQL Feature Support]({% link v23.2/sql-feature-support.md %}) | The page summarizes the standard SQL features CockroachDB supports as well as common extensions to the standard. Docs | [Change Data Capture Overview]({% link v23.2/change-data-capture-overview.md %}) | This page summarizes CockroachDB's data streaming capabilities. Change data capture (CDC) provides efficient, distributed, row-level changefeeds into a configurable sink for downstream processing such as reporting, caching, or full-text indexing. Docs | [Backup Architecture]({% link v23.2/backup-architecture.md %}) | This page describes the backup job workflow with a high-level overview, diagrams, and more details on each phase of the job. - -[#102961]: https://github.com/cockroachdb/cockroach/pull/102961 -[#104265]: https://github.com/cockroachdb/cockroach/pull/104265 -[#107474]: https://github.com/cockroachdb/cockroach/pull/107474 -[#103539]: https://github.com/cockroachdb/cockroach/pull/103539 -[#104265]: https://github.com/cockroachdb/cockroach/pull/104265 -[#111342]: https://github.com/cockroachdb/cockroach/pull/111342 diff --git a/src/current/_includes/releases/v23.2/v23.2.1.md b/src/current/_includes/releases/v23.2/v23.2.1.md index c8cff79259f..c1669c5e511 100644 --- a/src/current/_includes/releases/v23.2/v23.2.1.md +++ b/src/current/_includes/releases/v23.2/v23.2.1.md @@ -6,66 +6,66 @@ Release Date: February 20, 2024

Security updates

-- Introduced the `server.redact_sensitive_settings.enabled` [cluster setting]({% link v23.2/cluster-settings.md %}), which is false by default. If set to `true`, then the values of the following settings will be redacted when accessed through `SHOW` commands or other introspection interfaces. In the future, any other sensitive cluster settings that are added will be redacted as well. Users who have the `MODIFYCLUSTERSETTING` [privilege](https://www.cockroachlabs.com/docs/v23.2/security-reference/authorization#managing-privileges) can always view the unredacted settings. [#117729][#117729] +- Introduced the `server.redact_sensitive_settings.enabled` [cluster setting]({% link v23.2/cluster-settings.md %}), which is false by default. If set to `true`, then the values of the following settings will be redacted when accessed through `SHOW` commands or other introspection interfaces. In the future, any other sensitive cluster settings that are added will be redacted as well. Users who have the `MODIFYCLUSTERSETTING` [privilege](https://www.cockroachlabs.com/docs/v23.2/security-reference/authorization#managing-privileges) can always view the unredacted settings. - `server.oidc_authentication.client_id` - `server.oidc_authentication.client_secret` -- If the `server.redact_sensitive_settings.enabled` [cluster setting]({% link v23.2/cluster-settings.md %}) is set to `true`, then the `MANAGEVIRTUALCLUSTER` [privilege](https://www.cockroachlabs.com/docs/v23.2/security-reference/authorization#managing-privileges) is required to view the values of the per-virtual-cluster overrides for sensitive cluster settings. [#117729][#117729] -- The [DB Console]({% link v23.2/ui-overview.md %}) `session` cookie is now marked `HttpOnly` to prevent it from being read by any JavaScript code. [#119249][#119249] -- [DB Console]({% link v23.2/ui-overview.md %}) cookies are marked `Secure` for the browser when the cluster is running in secure mode. [#119249][#119249] +- If the `server.redact_sensitive_settings.enabled` [cluster setting]({% link v23.2/cluster-settings.md %}) is set to `true`, then the `MANAGEVIRTUALCLUSTER` [privilege](https://www.cockroachlabs.com/docs/v23.2/security-reference/authorization#managing-privileges) is required to view the values of the per-virtual-cluster overrides for sensitive cluster settings. +- The [DB Console]({% link v23.2/ui-overview.md %}) `session` cookie is now marked `HttpOnly` to prevent it from being read by any JavaScript code. +- [DB Console]({% link v23.2/ui-overview.md %}) cookies are marked `Secure` for the browser when the cluster is running in secure mode.

General changes

-- Updated Go version to 1.21.3. [#115339][#115339] +- Updated Go version to 1.21.3.

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

-- Added a new [SQL function]({% link v23.2/functions-and-operators.md %}) `fips_ready`, which can be used to verify the [FIPS]({% link v23.2/fips.md %}) readiness of the [gateway node](https://www.cockroachlabs.com/docs/v23.2/architecture/life-of-a-distributed-transaction#gateway). [#115202][#115202] -- [Physical Cluster Replication (PCR)]({% link v23.2/physical-cluster-replication-overview.md %}) now retries for approximately 3 minutes before failing. This is increased from 20 µs. [#116402][#116402] -- Fixed a bug where [changefeeds]({% link v23.2/create-and-configure-changefeeds.md %}) that targeted schema-locked tables could fail due to a very old highwater timestamp being incorrectly persisted. [#117961][#117961] -- Fixed a bug where creating a [changefeed]({% link v23.2/create-and-configure-changefeeds.md %}) that targeted tables with a [`DECIMAL(n)`]({% link v23.2/decimal.md %}) column (i.e., zero-scale `DECIMAL` column), `format='avro'`, and `diff` would cause a panic. [#118895][#118895] +- Added a new [SQL function]({% link v23.2/functions-and-operators.md %}) `fips_ready`, which can be used to verify the [FIPS]({% link v23.2/fips.md %}) readiness of the [gateway node](https://www.cockroachlabs.com/docs/v23.2/architecture/life-of-a-distributed-transaction#gateway). +- [Physical Cluster Replication (PCR)]({% link v23.2/physical-cluster-replication-overview.md %}) now retries for approximately 3 minutes before failing. This is increased from 20 µs. +- Fixed a bug where [changefeeds]({% link v23.2/create-and-configure-changefeeds.md %}) that targeted schema-locked tables could fail due to a very old highwater timestamp being incorrectly persisted. +- Fixed a bug where creating a [changefeed]({% link v23.2/create-and-configure-changefeeds.md %}) that targeted tables with a [`DECIMAL(n)`]({% link v23.2/decimal.md %}) column (i.e., zero-scale `DECIMAL` column), `format='avro'`, and `diff` would cause a panic.

SQL language changes

-- Added the `sql.ttl.default_select_rate_limit` [cluster setting]({% link v23.2/cluster-settings.md %}) and the `ttl_select_rate_limit` table [storage parameter]({% link v23.2/row-level-ttl.md %}#ttl-storage-parameters) to set the [TTL]({% link v23.2/row-level-ttl.md %}) select rate limit. This sets the number of records per table per second per node that can be selected by the [TTL job]({% link v23.2/row-level-ttl.md %}#view-scheduled-ttl-jobs). [#115801][#115801] -- Fixed a bug in [PL/pgSQL]({% link v23.2/plpgsql.md %}) where altering the name of a [sequence]({% link v23.2/create-sequence.md %}) or [user-defined type (UDT)]({% link v23.2/create-type.md %}) that was used in a PL/pgSQL [function]({% link v23.2/user-defined-functions.md %}) or [procedure]({% link v23.2/stored-procedures.md %}) could break them. This bug was only present in v23.2 alpha and beta releases. [#116419][#116419] -- Added support for [`IMPORT INTO`]({% link v23.2/import-into.md %}) on a table that has columns typed as [arrays]({% link v23.2/array.md %}) of [user-defined types]({% link v23.2/create-type.md %}) (like [enums]({% link v23.2/enum.md %})). Tables that use multiple user-defined types with the same name but different [schemas]({% link v23.2/create-schema.md %}) are still unsupported. [#116359][#116359] -- The new [`SELECT FOR UPDATE`]({% link v23.2/select-for-update.md %}) implementation used under [Read Committed isolation]({% link v23.2/read-committed.md %}) (and under [Serializable isolation]({% link v23.2/demo-serializable.md %}) when the `optimizer_use_lock_op_for_serializable` [session variable]({% link v23.2/session-variables.md %}) is `true`) now locks all [column families]({% link v23.2/column-families.md %}) instead of only the first column family. [#116826][#116826] -- Fixed a bug where [`SELECT FOR UPDATE`]({% link v23.2/select-for-update.md %}) under [Read Committed isolation]({% link v23.2/read-committed.md %}) on multi-column-family tables was not locking [column families]({% link v23.2/column-families.md %}) containing only key columns. [#116826][#116826] -- It is now possible to run [`CALL`]({% link v23.2/call.md %}) statements with [`EXPLAIN`]({% link v23.2/explain.md %}). The `EXPLAIN (OPT)` variant will show the body of the procedure, while other variants will only show the procedure name and arguments. [#116274][#116274] -- [`EXPLAIN`]({% link v23.2/explain.md %}) output now contains detailed information about the plans for `CASCADE` actions. [#117719][#117719] +- Added the `sql.ttl.default_select_rate_limit` [cluster setting]({% link v23.2/cluster-settings.md %}) and the `ttl_select_rate_limit` table [storage parameter]({% link v23.2/row-level-ttl.md %}#ttl-storage-parameters) to set the [TTL]({% link v23.2/row-level-ttl.md %}) select rate limit. This sets the number of records per table per second per node that can be selected by the [TTL job]({% link v23.2/row-level-ttl.md %}#view-scheduled-ttl-jobs). +- Fixed a bug in [PL/pgSQL]({% link v23.2/plpgsql.md %}) where altering the name of a [sequence]({% link v23.2/create-sequence.md %}) or [user-defined type (UDT)]({% link v23.2/create-type.md %}) that was used in a PL/pgSQL [function]({% link v23.2/user-defined-functions.md %}) or [procedure]({% link v23.2/stored-procedures.md %}) could break them. This bug was only present in v23.2 alpha and beta releases. +- Added support for [`IMPORT INTO`]({% link v23.2/import-into.md %}) on a table that has columns typed as [arrays]({% link v23.2/array.md %}) of [user-defined types]({% link v23.2/create-type.md %}) (like [enums]({% link v23.2/enum.md %})). Tables that use multiple user-defined types with the same name but different [schemas]({% link v23.2/create-schema.md %}) are still unsupported. +- The new [`SELECT FOR UPDATE`]({% link v23.2/select-for-update.md %}) implementation used under [Read Committed isolation]({% link v23.2/read-committed.md %}) (and under [Serializable isolation]({% link v23.2/demo-serializable.md %}) when the `optimizer_use_lock_op_for_serializable` [session variable]({% link v23.2/session-variables.md %}) is `true`) now locks all [column families]({% link v23.2/column-families.md %}) instead of only the first column family. +- Fixed a bug where [`SELECT FOR UPDATE`]({% link v23.2/select-for-update.md %}) under [Read Committed isolation]({% link v23.2/read-committed.md %}) on multi-column-family tables was not locking [column families]({% link v23.2/column-families.md %}) containing only key columns. +- It is now possible to run [`CALL`]({% link v23.2/call.md %}) statements with [`EXPLAIN`]({% link v23.2/explain.md %}). The `EXPLAIN (OPT)` variant will show the body of the procedure, while other variants will only show the procedure name and arguments. +- [`EXPLAIN`]({% link v23.2/explain.md %}) output now contains detailed information about the plans for `CASCADE` actions.

Operational changes

-- Per-node [hot ranges]({% link v23.2/ui-hot-ranges-page.md %}) logging now logs the top 5 hot ranges on the local node instead of the top 5 hot ranges cluster-wide. [#118334][#118334] +- Per-node [hot ranges]({% link v23.2/ui-hot-ranges-page.md %}) logging now logs the top 5 hot ranges on the local node instead of the top 5 hot ranges cluster-wide.

Command-line changes

-- Added a new command `cockroach debug enterprise-check-fips`, which diagnoses errors in [FIPS]({% link v23.2/fips.md %}) deployments. [#115202][#115202] -- The new flag `--enterprise-require-fips-ready` can be added to any [`cockroach` command]({% link v23.2/cockroach-commands.md %}) to prevent startup if certain prerequisites for [FIPS]({% link v23.2/fips.md %}) compliance are not met. [#115202][#115202] -- [`cockroach workload`]({% link v23.2/cockroach-workload.md %}) commands now appropriately invoke `.Close` in the case of an error. [#116487][#116487] +- Added a new command `cockroach debug enterprise-check-fips`, which diagnoses errors in [FIPS]({% link v23.2/fips.md %}) deployments. +- The new flag `--enterprise-require-fips-ready` can be added to any [`cockroach` command]({% link v23.2/cockroach-commands.md %}) to prevent startup if certain prerequisites for [FIPS]({% link v23.2/fips.md %}) compliance are not met. +- [`cockroach workload`]({% link v23.2/cockroach-workload.md %}) commands now appropriately invoke `.Close` in the case of an error.

DB Console changes

-- Updated the "CPU Time" label on the [Runtime Dashboard]({% link v23.2/ui-runtime-dashboard.md %}) to "SQL CPU Time" and added clarifications to its tooltip. [#116449][#116449] -- [Statement bundles]({% link v23.2/ui-statements-page.md %}#diagnostics) are now enabled for Serverless clusters. [#117529][#117529] -- The [Networking Dashboard]({% link v23.2/ui-networking-dashboard.md %}) is enhanced with charts that visualize number of packets received, number of receiving packets with error, number of receiving packets that got dropped, number of packets sent, number of sending packets with error, and number of sending packets that got dropped. [#116712][#116712] -- The [Explain Plans]({% link v23.2/ui-statements-page.md %}#explain-plans) tab is now shown for the [Statements]({% link v23.2/ui-statements-page.md %}) and [Insights]({% link v23.2/ui-insights-page.md %}) pages, for Serverless clusters. [#118169][#118169] +- Updated the "CPU Time" label on the [Runtime Dashboard]({% link v23.2/ui-runtime-dashboard.md %}) to "SQL CPU Time" and added clarifications to its tooltip. +- [Statement bundles]({% link v23.2/ui-statements-page.md %}#diagnostics) are now enabled for Serverless clusters. +- The [Networking Dashboard]({% link v23.2/ui-networking-dashboard.md %}) is enhanced with charts that visualize number of packets received, number of receiving packets with error, number of receiving packets that got dropped, number of packets sent, number of sending packets with error, and number of sending packets that got dropped. +- The [Explain Plans]({% link v23.2/ui-statements-page.md %}#explain-plans) tab is now shown for the [Statements]({% link v23.2/ui-statements-page.md %}) and [Insights]({% link v23.2/ui-insights-page.md %}) pages, for Serverless clusters.

Bug fixes

-- Fixed a durability bug in [Raft log](https://www.cockroachlabs.com/docs/v23.2/architecture/replication-layer#raft) storage, caused by incorrect syncing of filesystem metadata. Previously, it was possible to lose writes of a particular kind (`AddSSTable`) that were used by e.g. [`RESTORE`]({% link v23.2/restore.md %}). This loss was possible only under power-off or operating system crash conditions. Under such conditions, CockroachDB could enter a crash loop on node restart. In the worst case of a coordinated power-off/crash across multiple nodes this could lead to an unrecoverable loss of [Raft quorum](https://www.cockroachlabs.com/docs/v23.2/architecture/replication-layer#raft). [#115709][#115709] -- Fixed a bug where large [jobs]({% link v23.2/show-jobs.md %}) running with execution locality (such as some [changefeeds]({% link v23.2/changefeeds-in-multi-region-deployments.md %}#run-a-changefeed-job-by-locality)) could result in the [gateway](https://www.cockroachlabs.com/docs/v23.2/architecture/life-of-a-distributed-transaction#gateway) node being assigned most of the work, causing performance degradation and cluster instability. [#115388][#115388] -- Fixed a bug that caused node crashes and panics when running [`INSERT`]({% link v23.2/insert.md %}) queries on [`REGIONAL BY ROW` tables with `UNIQUE` constraints or indexes]({% link v23.2/alter-table.md %}#add-a-unique-index-to-a-regional-by-row-table). The bug was only present in v23.2.0-beta.1. [#115668][#115668] -- Fixed a bug that existed only in v23.2 alpha and beta versions that could have caused side effects to happen out of order for [PL/pgSQL]({% link v23.2/plpgsql.md %}) routines in rare cases. [#115839][#115839] -- Fixed a bug that existed since v23.1 that prevented naming [user-defined type (UDT)]({% link v23.2/create-type.md %}) parameters when dropping a [user-defined function]({% link v23.2/user-defined-functions.md %}) (or procedure). [#115904][#115904] -- Fixed a bug where [scheduled jobs]({% link v23.2/show-schedules.md %}) using [external storage providers]({% link v23.2/create-external-connection.md %}) could fail shortly after node startup. [#115693][#115693] -- Locking tables (e.g., with [`SELECT FOR UPDATE`]({% link v23.2/select-for-update.md %})) on the null-extended side of [outer joins]({% link v23.2/joins.md %}) (e.g., the right side of a `LEFT JOIN`) is now disallowed and returns an error. This improves compatibility with PostgreSQL and prevents ambiguity in [locking semantics](https://www.cockroachlabs.com/docs/v23.2/architecture/transaction-layer#concurrency-control). This bug has existed since locking with `FOR UPDATE` was introduced. [#115878][#115878] -- Fixed a display bug in the [DB Console]({% link v23.2/ui-overview.md %}) where because not all types of [schema changes]({% link v23.2/online-schema-changes.md %}) are setting the value for the mutation ID, the value of the ID could previously show as "with ID undefined" on the [Events panel]({% link v23.2/ui-overview-dashboard.md %}#events-panel). Now, the notification omits the undefined value (the rest of the event notification is still displayed). [#116518][#116518] -- Fixed the formatting for [PL/pgSQL]({% link v23.2/plpgsql.md %}) routines, which could prevent creating a routine with [loop labels]({% link v23.2/create-procedure.md %}#create-a-stored-procedure-that-uses-a-while-loop), and could prevent some expressions from being [redacted]({% link v23.2/configure-logs.md %}#redact-logs) correctly. The bug only existed in v23.2 alpha and beta releases. [#116713][#116713] -- Fixed a bug that would cause a syntax error during [redaction]({% link v23.2/configure-logs.md %}#redact-logs) of a [PL/pgSQL]({% link v23.2/plpgsql.md %}) routine. The bug existed only in v23.2 alpha and beta releases. [#116713][#116713] -- Fixed a bug that would cause syntax errors when attempting to [`RESTORE`]({% link v23.2/restore.md %}) a database with [PL/pgSQL]({% link v23.2/plpgsql.md %}) [user-defined functions (UDFs)]({% link v23.2/user-defined-functions.md %}) or [stored procedures]({% link v23.2/stored-procedures.md %}). This bug only affected v23.2 alpha and beta releases. [#116713][#116713] -- [`UPDATE`]({% link v23.2/update.md %}), [`UPSERT`]({% link v23.2/upsert.md %}), and [`INSERT ON CONFLICT`]({% link v23.2/insert.md %}#on-conflict-clause) queries are now disallowed under [Read Committed isolation]({% link v23.2/read-committed.md %}) when the table contains a [check constraint]({% link v23.2/check.md %}) involving a [column family]({% link v23.2/column-families.md %}) that is updated, and the check constraint also involves a column family that is **not** updated, but **is** read. This is a temporary fix to prevent possible violation of the check constraint, and the restriction will be lifted in the future. [#116428][#116428] -- Previously, all `AggHistogram`-powered metrics were not reporting quantiles properly in the [DB Console]({% link v23.2/ui-overview.md %}). This patch fixes the histograms so that the quantiles in DB Console are reported correctly. these histograms were only broken in the [DB Console metrics dashboards]({% link v23.2/ui-overview-dashboard.md %}), but were **not** broken in the [Prometheus-compatible endpoint]({% link v23.2/monitoring-and-alerting.md %}#prometheus-endpoint), `/_status/vars`. The list of affected metrics is shown below. [#114506][#114506] +- Fixed a durability bug in [Raft log](https://www.cockroachlabs.com/docs/v23.2/architecture/replication-layer#raft) storage, caused by incorrect syncing of filesystem metadata. Previously, it was possible to lose writes of a particular kind (`AddSSTable`) that were used by e.g. [`RESTORE`]({% link v23.2/restore.md %}). This loss was possible only under power-off or operating system crash conditions. Under such conditions, CockroachDB could enter a crash loop on node restart. In the worst case of a coordinated power-off/crash across multiple nodes this could lead to an unrecoverable loss of [Raft quorum](https://www.cockroachlabs.com/docs/v23.2/architecture/replication-layer#raft). +- Fixed a bug where large [jobs]({% link v23.2/show-jobs.md %}) running with execution locality (such as some [changefeeds]({% link v23.2/changefeeds-in-multi-region-deployments.md %}#run-a-changefeed-job-by-locality)) could result in the [gateway](https://www.cockroachlabs.com/docs/v23.2/architecture/life-of-a-distributed-transaction#gateway) node being assigned most of the work, causing performance degradation and cluster instability. +- Fixed a bug that caused node crashes and panics when running [`INSERT`]({% link v23.2/insert.md %}) queries on [`REGIONAL BY ROW` tables with `UNIQUE` constraints or indexes]({% link v23.2/alter-table.md %}#add-a-unique-index-to-a-regional-by-row-table). The bug was only present in v23.2.0-beta.1. +- Fixed a bug that existed only in v23.2 alpha and beta versions that could have caused side effects to happen out of order for [PL/pgSQL]({% link v23.2/plpgsql.md %}) routines in rare cases. +- Fixed a bug that existed since v23.1 that prevented naming [user-defined type (UDT)]({% link v23.2/create-type.md %}) parameters when dropping a [user-defined function]({% link v23.2/user-defined-functions.md %}) (or procedure). +- Fixed a bug where [scheduled jobs]({% link v23.2/show-schedules.md %}) using [external storage providers]({% link v23.2/create-external-connection.md %}) could fail shortly after node startup. +- Locking tables (e.g., with [`SELECT FOR UPDATE`]({% link v23.2/select-for-update.md %})) on the null-extended side of [outer joins]({% link v23.2/joins.md %}) (e.g., the right side of a `LEFT JOIN`) is now disallowed and returns an error. This improves compatibility with PostgreSQL and prevents ambiguity in [locking semantics](https://www.cockroachlabs.com/docs/v23.2/architecture/transaction-layer#concurrency-control). This bug has existed since locking with `FOR UPDATE` was introduced. +- Fixed a display bug in the [DB Console]({% link v23.2/ui-overview.md %}) where because not all types of [schema changes]({% link v23.2/online-schema-changes.md %}) are setting the value for the mutation ID, the value of the ID could previously show as "with ID undefined" on the [Events panel]({% link v23.2/ui-overview-dashboard.md %}#events-panel). Now, the notification omits the undefined value (the rest of the event notification is still displayed). +- Fixed the formatting for [PL/pgSQL]({% link v23.2/plpgsql.md %}) routines, which could prevent creating a routine with [loop labels]({% link v23.2/create-procedure.md %}#create-a-stored-procedure-that-uses-a-while-loop), and could prevent some expressions from being [redacted]({% link v23.2/configure-logs.md %}#redact-logs) correctly. The bug only existed in v23.2 alpha and beta releases. +- Fixed a bug that would cause a syntax error during [redaction]({% link v23.2/configure-logs.md %}#redact-logs) of a [PL/pgSQL]({% link v23.2/plpgsql.md %}) routine. The bug existed only in v23.2 alpha and beta releases. +- Fixed a bug that would cause syntax errors when attempting to [`RESTORE`]({% link v23.2/restore.md %}) a database with [PL/pgSQL]({% link v23.2/plpgsql.md %}) [user-defined functions (UDFs)]({% link v23.2/user-defined-functions.md %}) or [stored procedures]({% link v23.2/stored-procedures.md %}). This bug only affected v23.2 alpha and beta releases. +- [`UPDATE`]({% link v23.2/update.md %}), [`UPSERT`]({% link v23.2/upsert.md %}), and [`INSERT ON CONFLICT`]({% link v23.2/insert.md %}#on-conflict-clause) queries are now disallowed under [Read Committed isolation]({% link v23.2/read-committed.md %}) when the table contains a [check constraint]({% link v23.2/check.md %}) involving a [column family]({% link v23.2/column-families.md %}) that is updated, and the check constraint also involves a column family that is **not** updated, but **is** read. This is a temporary fix to prevent possible violation of the check constraint, and the restriction will be lifted in the future. +- Previously, all `AggHistogram`-powered metrics were not reporting quantiles properly in the [DB Console]({% link v23.2/ui-overview.md %}). This patch fixes the histograms so that the quantiles in DB Console are reported correctly. these histograms were only broken in the [DB Console metrics dashboards]({% link v23.2/ui-overview-dashboard.md %}), but were **not** broken in the [Prometheus-compatible endpoint]({% link v23.2/monitoring-and-alerting.md %}#prometheus-endpoint), `/_status/vars`. The list of affected metrics is shown below. - `changefeed.message_size_hist` - `changefeed.parallel_io_queue_nanos` - `changefeed.sink_batch_hist_nanos` @@ -75,30 +75,30 @@ Release Date: February 20, 2024 - `jobs.row_level_ttl.span_total_duration` - `jobs.row_level_ttl.select_duration` - `jobs.row_level_ttl.delete_duration` -- Fixed a bug introduced in v23.2 that caused internal errors and panics when certain SQL queries were run with automatic [index recommendation]({% link v23.2/ui-databases-page.md %}#index-recommendations) collection enabled. [#117453][#117453] -- [Standard indexes]({% link v23.2/indexes.md %}) and [inverted indexes]({% link v23.2/inverted-indexes.md %}) may no longer be created on [PL/pgSQL]({% link v23.2/plpgsql.md %}) `REFCURSOR[]`s columns. `REFCURSOR` columns themselves are not indexable. [#116071][#116071] -- Fixed a bug that prevented database [`RESTORE`]({% link v23.2/restore.md %}) when the database contained a [view]({% link v23.2/views.md %}) or [routine]({% link v23.2/create-procedure.md %}) that referenced a [user-defined type (UDT)]({% link v23.2/create-type.md %}) in the body string. For views, this bug was introduced in v20.2, when [user-defined types (UDTs)]({% link v23.2/create-type.md %}) were introduced. For routines, this bug was introduced in v22.2, when user-defined functions (UDFs) were introduced. [#116841][#116841] -- Fixed a bug that could cause a function resolution error when attempting to use a [builtin function]({% link v23.2/functions-and-operators.md %}) like `now()` as a formatting argument to a [PL/pgSQL]({% link v23.2/plpgsql.md %}) `RAISE` statement. [#116825][#116825] -- Fixed a bug where CDC custom key columns did not function correctly with [CDC queries]({% link v23.2/create-and-configure-changefeeds.md %}). For example, `CREATE CHANGEFEED WITH key_column=..., unordered AS SELECT * FROM table` now works correctly instead of retrying forever. Note that some functionalities with CDC custom keys are not fully supported, see [#115267][#115267] for more details. [#116967][#116967] -- Fixed a bug in [Raft log](https://www.cockroachlabs.com/docs/v23.2/architecture/replication-layer#raft) truncation that could lead to crash loops, and unrecoverable loss of [quorum](https://www.cockroachlabs.com/docs/v23.2/architecture/replication-layer#raft) in the unlikely worst case that all [replicas](https://www.cockroachlabs.com/docs/v23.2/architecture/overview#architecture-replica) enter this crash loop. The bug manifested when a few things coincided: The cluster was running a bulk write workload (e.g., [schema change]({% link v23.2/online-schema-changes.md %}), [import]({% link v23.2/copy.md %}), [`RESTORE`]({% link v23.2/restore.md %})); a log truncation command was running; and the process crashed at an unfortunate moment (e.g., the process was killed, or killed itself for reasons like detecting a [disk stall]({% link v23.2/cluster-setup-troubleshooting.md %}#disk-stalls)). [#116574][#116574] -- Fixed the value used for the total runtime on SQL statistics. This was using the wrong value previously, causing the [SQL Activity]({% link v23.2/ui-overview.md %}#sql-activity) page to display values with more than 100%. [#117426][#117426] -- Fixed a bug where trying to set an empty `search_path` [session variable]({% link v23.2/session-variables.md %}) resulted in an error. [#117557][#117557] -- It is now possible to assign to the parameter of a [PL/pgSQL]({% link v23.2/plpgsql.md %}) [routine]({% link v23.2/create-procedure.md %}). Previously, attempts to do this would result in a "variable not found" error at routine creation time. In addition, variable shadowing is now explicitly disabled, where previously it would cause an internal error. These bugs existed in the v23.2.0 release and the v23.2 pre-release versions. [#117715][#117715] -- Fixed a bug in the [row-level TTL]({% link v23.2/row-level-ttl.md %}) [job]({% link v23.2/show-schedules.md %}) that would cause it to skip expired rows if the [primary key]({% link v23.2/primary-key.md %}) of the table included columns of the [collated string]({% link v23.2/collate.md %}) type. This bug was present since the initial release of row-level TTL in v22.2.0. [#117512][#117512] -- Fixed a bug where concurrent [`GRANT`]({% link v23.2/grant.md %}) statements can cause deadlocks. [#117713][#117713] -- CockroachDB can now transparently retry more retryable errors when performing a non-atomic [`COPY`]({% link v23.2/copy.md %}) command. [#117895][#117895] -- Fixed a bug that caused [DML statements]({% link v23.2/performance-best-practices-overview.md %}#dml-best-practices) to fail while a [hash-sharded index]({% link v23.2/hash-sharded-indexes.md %}) was being created. The symptom of this bug was an error like `column "crdb_internal_val_shard_16" does not exist`. This bug was present since v23.1.0. [#118215][#118215] -- Previously, CockroachDB could encounter the error `unable to encode table key: *tree.DTSQuery` when operating on columns with the internal `TSQuery` type in some contexts (e.g., when collecting [table statistics]({% link v23.2/cost-based-optimizer.md %}#table-statistics) or when performing a [`DISTINCT` operation]({% link v23.2/select-clause.md %}#eliminate-duplicate-rows)). This is now fixed. The bug had been present since v23.1 when support for the internal `TSQuery` type was added. [#118321][#118321] -- Previously, in some cases CockroachDB could incorrectly evaluate queries that scanned an [inverted index]({% link v23.2/inverted-indexes.md %}) and had a [`WHERE` filter]({% link v23.2/select-clause.md %}#where-clause) in which two sides of the `AND` expression had "similar" expressions (e.g., `ARRAY['str1'] <@ col AND (ARRAY['str1'] && col OR ...)`); this is now fixed. The bug had been present since prior to v22.2. [#118360][#118360] -- Fixed a bug that could cause [`DELETE`]({% link v23.2/delete.md %}) queries sent by the [row-level TTL]({% link v23.2/row-level-ttl.md %}) [job]({% link v23.2/show-schedules.md %}) to use a [secondary index]({% link v23.2/indexes.md %}) rather than the [primary index]({% link v23.2/primary-key.md %}) to find the rows to delete. This could lead to some `DELETE` operations taking a much longer time than they should. This bug was present since v22.2.0. [#118337][#118337] -- Fixed an issue with missing data on SQL statistics, and consequently missing data on the [SQL Activity page]({% link v23.2/ui-overview.md %}#sql-activity), by properly recalculating the value from the current and past hour on the top activity table. [#118378][#118378] -- Internal queries issued by the [row-level TTL]({% link v23.2/row-level-ttl.md %}) [jobs]({% link v23.2/show-schedules.md %}) should now use optimal plans. The bug has been present since at least v22.2. [#118494][#118494] +- Fixed a bug introduced in v23.2 that caused internal errors and panics when certain SQL queries were run with automatic [index recommendation]({% link v23.2/ui-databases-page.md %}#index-recommendations) collection enabled. +- [Standard indexes]({% link v23.2/indexes.md %}) and [inverted indexes]({% link v23.2/inverted-indexes.md %}) may no longer be created on [PL/pgSQL]({% link v23.2/plpgsql.md %}) `REFCURSOR[]`s columns. `REFCURSOR` columns themselves are not indexable. +- Fixed a bug that prevented database [`RESTORE`]({% link v23.2/restore.md %}) when the database contained a [view]({% link v23.2/views.md %}) or [routine]({% link v23.2/create-procedure.md %}) that referenced a [user-defined type (UDT)]({% link v23.2/create-type.md %}) in the body string. For views, this bug was introduced in v20.2, when [user-defined types (UDTs)]({% link v23.2/create-type.md %}) were introduced. For routines, this bug was introduced in v22.2, when user-defined functions (UDFs) were introduced. +- Fixed a bug that could cause a function resolution error when attempting to use a [builtin function]({% link v23.2/functions-and-operators.md %}) like `now()` as a formatting argument to a [PL/pgSQL]({% link v23.2/plpgsql.md %}) `RAISE` statement. +- Fixed a bug where CDC custom key columns did not function correctly with [CDC queries]({% link v23.2/create-and-configure-changefeeds.md %}). For example, `CREATE CHANGEFEED WITH key_column=..., unordered AS SELECT * FROM table` now works correctly instead of retrying forever. Note that some functionalities with CDC custom keys are not fully supported, see for more details. +- Fixed a bug in [Raft log](https://www.cockroachlabs.com/docs/v23.2/architecture/replication-layer#raft) truncation that could lead to crash loops, and unrecoverable loss of [quorum](https://www.cockroachlabs.com/docs/v23.2/architecture/replication-layer#raft) in the unlikely worst case that all [replicas](https://www.cockroachlabs.com/docs/v23.2/architecture/overview#architecture-replica) enter this crash loop. The bug manifested when a few things coincided: The cluster was running a bulk write workload (e.g., [schema change]({% link v23.2/online-schema-changes.md %}), [import]({% link v23.2/copy.md %}), [`RESTORE`]({% link v23.2/restore.md %})); a log truncation command was running; and the process crashed at an unfortunate moment (e.g., the process was killed, or killed itself for reasons like detecting a [disk stall]({% link v23.2/cluster-setup-troubleshooting.md %}#disk-stalls)). +- Fixed the value used for the total runtime on SQL statistics. This was using the wrong value previously, causing the [SQL Activity]({% link v23.2/ui-overview.md %}#sql-activity) page to display values with more than 100%. +- Fixed a bug where trying to set an empty `search_path` [session variable]({% link v23.2/session-variables.md %}) resulted in an error. +- It is now possible to assign to the parameter of a [PL/pgSQL]({% link v23.2/plpgsql.md %}) [routine]({% link v23.2/create-procedure.md %}). Previously, attempts to do this would result in a "variable not found" error at routine creation time. In addition, variable shadowing is now explicitly disabled, where previously it would cause an internal error. These bugs existed in the v23.2.0 release and the v23.2 pre-release versions. +- Fixed a bug in the [row-level TTL]({% link v23.2/row-level-ttl.md %}) [job]({% link v23.2/show-schedules.md %}) that would cause it to skip expired rows if the [primary key]({% link v23.2/primary-key.md %}) of the table included columns of the [collated string]({% link v23.2/collate.md %}) type. This bug was present since the initial release of row-level TTL in v22.2.0. +- Fixed a bug where concurrent [`GRANT`]({% link v23.2/grant.md %}) statements can cause deadlocks. +- CockroachDB can now transparently retry more retryable errors when performing a non-atomic [`COPY`]({% link v23.2/copy.md %}) command. +- Fixed a bug that caused [DML statements]({% link v23.2/performance-best-practices-overview.md %}#dml-best-practices) to fail while a [hash-sharded index]({% link v23.2/hash-sharded-indexes.md %}) was being created. The symptom of this bug was an error like `column "crdb_internal_val_shard_16" does not exist`. This bug was present since v23.1.0. +- Previously, CockroachDB could encounter the error `unable to encode table key: *tree.DTSQuery` when operating on columns with the internal `TSQuery` type in some contexts (e.g., when collecting [table statistics]({% link v23.2/cost-based-optimizer.md %}#table-statistics) or when performing a [`DISTINCT` operation]({% link v23.2/select-clause.md %}#eliminate-duplicate-rows)). This is now fixed. The bug had been present since v23.1 when support for the internal `TSQuery` type was added. +- Previously, in some cases CockroachDB could incorrectly evaluate queries that scanned an [inverted index]({% link v23.2/inverted-indexes.md %}) and had a [`WHERE` filter]({% link v23.2/select-clause.md %}#where-clause) in which two sides of the `AND` expression had "similar" expressions (e.g., `ARRAY['str1'] <@ col AND (ARRAY['str1'] && col OR ...)`); this is now fixed. The bug had been present since prior to v22.2. +- Fixed a bug that could cause [`DELETE`]({% link v23.2/delete.md %}) queries sent by the [row-level TTL]({% link v23.2/row-level-ttl.md %}) [job]({% link v23.2/show-schedules.md %}) to use a [secondary index]({% link v23.2/indexes.md %}) rather than the [primary index]({% link v23.2/primary-key.md %}) to find the rows to delete. This could lead to some `DELETE` operations taking a much longer time than they should. This bug was present since v22.2.0. +- Fixed an issue with missing data on SQL statistics, and consequently missing data on the [SQL Activity page]({% link v23.2/ui-overview.md %}#sql-activity), by properly recalculating the value from the current and past hour on the top activity table. +- Internal queries issued by the [row-level TTL]({% link v23.2/row-level-ttl.md %}) [jobs]({% link v23.2/show-schedules.md %}) should now use optimal plans. The bug has been present since at least v22.2. - Fixed a bug where a [changefeed](https://www.cockroachlabs.com/docs/v23.2/change-data-capture-overview.html) could omit events in rare cases, logging the error `cdc ux violation: detected timestamp ... that is less or equal to the local frontier`. This could happen in the following scenario: 1. A [rangefeed](https://www.cockroachlabs.com/docs/v23.2/create-and-configure-changefeeds.html#enable-rangefeeds) runs on a follower [replica](https://www.cockroachlabs.com/docs/v23.2/architecture/glossary#cockroachdb-architecture-terms) that lags significantly behind the [leaseholder](https://www.cockroachlabs.com/docs/v23.2/architecture/glossary#cockroachdb-architecture-terms). 1. A transaction commits and removes its [transaction record](https://www.cockroachlabs.com/docs/v23.2/architecture/transaction-layer#transaction-records) before its [intent](https://www.cockroachlabs.com/docs/v23.2/architecture/transaction-layer#writing) resolution is applied on the follower. 1. The follower's [closed timestamp](https://www.cockroachlabs.com/docs/v23.2/architecture/transaction-layer#closed-timestamps) has advanced past the transaction commit timestamp. 1. The rangefeed attempts to push the transaction to a new timestamp (at least 10 seconds after the transaction began). - 1. This may cause the rangefeed to prematurely emit a checkpoint before emitting writes at lower timestamps, which in turn may cause the [changefeed]({% link v23.2/change-data-capture-overview.md %}) to drop these events entirely, never emitting them. [#118981][#118981] + 1. This may cause the rangefeed to prematurely emit a checkpoint before emitting writes at lower timestamps, which in turn may cause the [changefeed]({% link v23.2/change-data-capture-overview.md %}) to drop these events entirely, never emitting them.
@@ -107,62 +107,3 @@ Release Date: February 20, 2024 This release includes 252 merged PRs by 60 authors.
- -[#114506]: https://github.com/cockroachdb/cockroach/pull/114506 -[#115202]: https://github.com/cockroachdb/cockroach/pull/115202 -[#115339]: https://github.com/cockroachdb/cockroach/pull/115339 -[#115388]: https://github.com/cockroachdb/cockroach/pull/115388 -[#115668]: https://github.com/cockroachdb/cockroach/pull/115668 -[#115693]: https://github.com/cockroachdb/cockroach/pull/115693 -[#115709]: https://github.com/cockroachdb/cockroach/pull/115709 -[#115801]: https://github.com/cockroachdb/cockroach/pull/115801 -[#115839]: https://github.com/cockroachdb/cockroach/pull/115839 -[#115878]: https://github.com/cockroachdb/cockroach/pull/115878 -[#115904]: https://github.com/cockroachdb/cockroach/pull/115904 -[#116071]: https://github.com/cockroachdb/cockroach/pull/116071 -[#116274]: https://github.com/cockroachdb/cockroach/pull/116274 -[#116359]: https://github.com/cockroachdb/cockroach/pull/116359 -[#116402]: https://github.com/cockroachdb/cockroach/pull/116402 -[#116419]: https://github.com/cockroachdb/cockroach/pull/116419 -[#116428]: https://github.com/cockroachdb/cockroach/pull/116428 -[#116449]: https://github.com/cockroachdb/cockroach/pull/116449 -[#116487]: https://github.com/cockroachdb/cockroach/pull/116487 -[#116518]: https://github.com/cockroachdb/cockroach/pull/116518 -[#116574]: https://github.com/cockroachdb/cockroach/pull/116574 -[#116599]: https://github.com/cockroachdb/cockroach/pull/116599 -[#116712]: https://github.com/cockroachdb/cockroach/pull/116712 -[#116713]: https://github.com/cockroachdb/cockroach/pull/116713 -[#116825]: https://github.com/cockroachdb/cockroach/pull/116825 -[#116826]: https://github.com/cockroachdb/cockroach/pull/116826 -[#116841]: https://github.com/cockroachdb/cockroach/pull/116841 -[#116945]: https://github.com/cockroachdb/cockroach/pull/116945 -[#116967]: https://github.com/cockroachdb/cockroach/pull/116967 -[#117324]: https://github.com/cockroachdb/cockroach/pull/117324 -[#117325]: https://github.com/cockroachdb/cockroach/pull/117325 -[#117330]: https://github.com/cockroachdb/cockroach/pull/117330 -[#117426]: https://github.com/cockroachdb/cockroach/pull/117426 -[#117453]: https://github.com/cockroachdb/cockroach/pull/117453 -[#117512]: https://github.com/cockroachdb/cockroach/pull/117512 -[#117529]: https://github.com/cockroachdb/cockroach/pull/117529 -[#117557]: https://github.com/cockroachdb/cockroach/pull/117557 -[#117594]: https://github.com/cockroachdb/cockroach/pull/117594 -[#117713]: https://github.com/cockroachdb/cockroach/pull/117713 -[#117715]: https://github.com/cockroachdb/cockroach/pull/117715 -[#117719]: https://github.com/cockroachdb/cockroach/pull/117719 -[#117729]: https://github.com/cockroachdb/cockroach/pull/117729 -[#117895]: https://github.com/cockroachdb/cockroach/pull/117895 -[#117961]: https://github.com/cockroachdb/cockroach/pull/117961 -[#118154]: https://github.com/cockroachdb/cockroach/pull/118154 -[#118169]: https://github.com/cockroachdb/cockroach/pull/118169 -[#118215]: https://github.com/cockroachdb/cockroach/pull/118215 -[#118257]: https://github.com/cockroachdb/cockroach/pull/118257 -[#118321]: https://github.com/cockroachdb/cockroach/pull/118321 -[#118334]: https://github.com/cockroachdb/cockroach/pull/118334 -[#118337]: https://github.com/cockroachdb/cockroach/pull/118337 -[#118360]: https://github.com/cockroachdb/cockroach/pull/118360 -[#118378]: https://github.com/cockroachdb/cockroach/pull/118378 -[#118494]: https://github.com/cockroachdb/cockroach/pull/118494 -[#118895]: https://github.com/cockroachdb/cockroach/pull/118895 -[#118981]: https://github.com/cockroachdb/cockroach/pull/118981 -[#115267]: https://github.com/cockroachdb/cockroach/pull/115267 -[#119249]: https://github.com/cockroachdb/cockroach/pull/119249 diff --git a/src/current/_includes/releases/v23.2/v23.2.10.md b/src/current/_includes/releases/v23.2/v23.2.10.md index a84bc9ca3db..78f20496161 100644 --- a/src/current/_includes/releases/v23.2/v23.2.10.md +++ b/src/current/_includes/releases/v23.2/v23.2.10.md @@ -20,41 +20,41 @@ Release Date: August 29, 2024 - [`IMPORT INTO`]({% link v23.2/import-into.md %}) - [`RESTORE`]({% link v23.2/restore.md %}) - [`SHOW BACKUPS`]({% link v23.2/show-backup.md %}) - - [`SHOW BACKUP`]({% link v23.2/show-backup.md %}) [#127509][#127509] + - [`SHOW BACKUP`]({% link v23.2/show-backup.md %})

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

-- Added a new [Kafka sink]({% link v23.2/changefeed-sinks.md %}#kafka) utilizing the `franz-go` library and our own `batching_sink` behind a [cluster setting]({% link v23.2/cluster-settings.md %}) (`changefeed.new_kafka_sink_enabled`, disabled by default). [#128048][#128048] -- The v2 Kafka and Google Cloud Pub/Sub [changefeed sinks]({% link v23.2/changefeed-sinks.md %}) now display notices indicating the topics they will emit to. [#128459][#128459] +- Added a new [Kafka sink]({% link v23.2/changefeed-sinks.md %}#kafka) utilizing the `franz-go` library and our own `batching_sink` behind a [cluster setting]({% link v23.2/cluster-settings.md %}) (`changefeed.new_kafka_sink_enabled`, disabled by default). +- The v2 Kafka and Google Cloud Pub/Sub [changefeed sinks]({% link v23.2/changefeed-sinks.md %}) now display notices indicating the topics they will emit to.

SQL language changes

-- Added the [`sql.auth.grant_option_for_owner.enabled` cluster setting]({% link v23.2/cluster-settings.md %}#setting-sql-auth-grant-option-for-owner-enabled). The default value is `true`, which results in behavior that matches the existing behavior of CockroachDB. When set to `false`, then the `GRANT OPTION` is not implcitly given to the owner of an object. The object owner still implicitly has all privileges on the object, just not the ability to grant them to other users. [#126958][#126958] -- Fixed a bug where the `DISCARD` statement was disallowed when the [`default_transaction_read_only`]({% link v23.2/session-variables.md %}#default-transaction-read-only) session setting was set to `on`. [#127548][#127548] +- Added the [`sql.auth.grant_option_for_owner.enabled` cluster setting]({% link v23.2/cluster-settings.md %}#setting-sql-auth-grant-option-for-owner-enabled). The default value is `true`, which results in behavior that matches the existing behavior of CockroachDB. When set to `false`, then the `GRANT OPTION` is not implcitly given to the owner of an object. The object owner still implicitly has all privileges on the object, just not the ability to grant them to other users. +- Fixed a bug where the `DISCARD` statement was disallowed when the [`default_transaction_read_only`]({% link v23.2/session-variables.md %}#default-transaction-read-only) session setting was set to `on`.

DB Console changes

-- The [**Databases** and **Tables** pages]({% link v23.2/ui-databases-page.md %}) in the DB Console now show a loading state while loading information for databases and tables, including size and range counts. [#127709][#127709] -- On the [**Databases** page]({% link v23.2/ui-databases-page.md %}) in the DB Console, table names will no longer appear with quotes around the schema and table name. [#127765][#127765] +- The [**Databases** and **Tables** pages]({% link v23.2/ui-databases-page.md %}) in the DB Console now show a loading state while loading information for databases and tables, including size and range counts. +- On the [**Databases** page]({% link v23.2/ui-databases-page.md %}) in the DB Console, table names will no longer appear with quotes around the schema and table name.

Bug fixes

-- Fixed a bug causing gateway nodes to crash while executing [`INSERT`]({% link v23.2/insert.md %}) statements in [`REGIONAL BY ROW`]({% link v23.2/table-localities.md %}#regional-by-row-tables) tables. This bug had been present since v23.2. [#127276][#127276] -- Fixed a bug where [dropping `ENUM` values]({% link v23.2/alter-type.md %}#drop-a-value-in-a-user-defined-type) that were referenced by [index expressions]({% link v23.2/expression-indexes.md %}) could fail with an error. [#127453][#127453] -- Fixed a bug that caused a memory leak when executing SQL statements with comments, e.g., [`SELECT /* comment */ 1;`]({% link v23.2/select-clause.md %}). Memory owned by a SQL session would continue to grow as these types of statements were executed. The memory would only be released when closing the SQL session. This bug had been present since v23.1. [#127758][#127758] -- Fixed a memory leak that could occur when specifying a non-existent [virtual cluster]({% link v23.2/cluster-virtualization-overview.md %}) name in the connection string. [#128104][#128104] -- Fixed a bug where [`CREATE INDEX IF NOT EXISTS`]({% link v23.2/create-index.md %}) would not correctly short-circuit if the given index already existed. [#128312][#128312] -- Fixed a bug in overly eager syntax validation, which did not allow the `DESCENDING` clause for non-terminal columns of an [inverted index]({% link v23.2/inverted-indexes.md %}). Only the last column of an inverted index should be prevented from being `DESCENDING`, and this is now properly checked. [#128312][#128312] -- Fixed a bug where an [index]({% link v23.2/indexes.md %}) could store a column in the primary index if that column had a mixed-case name. [#128312][#128312] -- Fixed small memory leaks that would occur during [changefeed creation]({% link v23.2/create-changefeed.md %}). [#128048][#128048] -- Setting or dropping a default value on a [computed column]({% link v23.2/computed-columns.md %}) is now blocked -- even for null defaults. Previously, setting or dropping a default value on a computed column was a no-op; now there will be an error message. [#128467][#128467] -- Fixed a bug that could cause spurious user permission errors when multiple databases shared a common schema with a routine referencing a table. The bug had existed since [user-defined functions]({% link v23.2/user-defined-functions.md %}) were introduced in v22.2. [#126413][#126413] -- Fixed a bug where a hash-sharded constraint could not be created if it referred to columns that had a backslash in the name. [#128676][#128676] -- Fixed a bug where `TYPEDESC SCHEMA CHANGE` jobs could end up retrying forever if the descriptor targeted by them was already dropped. [#128461][#128461] +- Fixed a bug causing gateway nodes to crash while executing [`INSERT`]({% link v23.2/insert.md %}) statements in [`REGIONAL BY ROW`]({% link v23.2/table-localities.md %}#regional-by-row-tables) tables. This bug had been present since v23.2. +- Fixed a bug where [dropping `ENUM` values]({% link v23.2/alter-type.md %}#drop-a-value-in-a-user-defined-type) that were referenced by [index expressions]({% link v23.2/expression-indexes.md %}) could fail with an error. +- Fixed a bug that caused a memory leak when executing SQL statements with comments, e.g., [`SELECT /* comment */ 1;`]({% link v23.2/select-clause.md %}). Memory owned by a SQL session would continue to grow as these types of statements were executed. The memory would only be released when closing the SQL session. This bug had been present since v23.1. +- Fixed a memory leak that could occur when specifying a non-existent [virtual cluster]({% link v23.2/cluster-virtualization-overview.md %}) name in the connection string. +- Fixed a bug where [`CREATE INDEX IF NOT EXISTS`]({% link v23.2/create-index.md %}) would not correctly short-circuit if the given index already existed. +- Fixed a bug in overly eager syntax validation, which did not allow the `DESCENDING` clause for non-terminal columns of an [inverted index]({% link v23.2/inverted-indexes.md %}). Only the last column of an inverted index should be prevented from being `DESCENDING`, and this is now properly checked. +- Fixed a bug where an [index]({% link v23.2/indexes.md %}) could store a column in the primary index if that column had a mixed-case name. +- Fixed small memory leaks that would occur during [changefeed creation]({% link v23.2/create-changefeed.md %}). +- Setting or dropping a default value on a [computed column]({% link v23.2/computed-columns.md %}) is now blocked -- even for null defaults. Previously, setting or dropping a default value on a computed column was a no-op; now there will be an error message. +- Fixed a bug that could cause spurious user permission errors when multiple databases shared a common schema with a routine referencing a table. The bug had existed since [user-defined functions]({% link v23.2/user-defined-functions.md %}) were introduced in v22.2. +- Fixed a bug where a hash-sharded constraint could not be created if it referred to columns that had a backslash in the name. +- Fixed a bug where `TYPEDESC SCHEMA CHANGE` jobs could end up retrying forever if the descriptor targeted by them was already dropped. - Fixed a bug in which the output of [`EXPLAIN (OPT, REDACT)`]({% link v23.2/explain.md %}) for various `CREATE` statements was not redacted. This bug had existed since [`EXPLAIN (REDACT)`]({% link v23.2/explain.md %}#parameters) was introduced in v23.1 and affects the following statements: - `EXPLAIN (OPT, REDACT) CREATE TABLE` - `EXPLAIN (OPT, REDACT) CREATE VIEW` - - `EXPLAIN (OPT, REDACT) CREATE FUNCTION` [#128488][#128488] + - `EXPLAIN (OPT, REDACT) CREATE FUNCTION`
@@ -63,28 +63,3 @@ Release Date: August 29, 2024 This release includes 80 merged PRs by 28 authors.
- -[#126413]: https://github.com/cockroachdb/cockroach/pull/126413 -[#126958]: https://github.com/cockroachdb/cockroach/pull/126958 -[#127276]: https://github.com/cockroachdb/cockroach/pull/127276 -[#127389]: https://github.com/cockroachdb/cockroach/pull/127389 -[#127453]: https://github.com/cockroachdb/cockroach/pull/127453 -[#127509]: https://github.com/cockroachdb/cockroach/pull/127509 -[#127548]: https://github.com/cockroachdb/cockroach/pull/127548 -[#127607]: https://github.com/cockroachdb/cockroach/pull/127607 -[#127709]: https://github.com/cockroachdb/cockroach/pull/127709 -[#127758]: https://github.com/cockroachdb/cockroach/pull/127758 -[#127765]: https://github.com/cockroachdb/cockroach/pull/127765 -[#127854]: https://github.com/cockroachdb/cockroach/pull/127854 -[#128048]: https://github.com/cockroachdb/cockroach/pull/128048 -[#128104]: https://github.com/cockroachdb/cockroach/pull/128104 -[#128312]: https://github.com/cockroachdb/cockroach/pull/128312 -[#128459]: https://github.com/cockroachdb/cockroach/pull/128459 -[#128461]: https://github.com/cockroachdb/cockroach/pull/128461 -[#128467]: https://github.com/cockroachdb/cockroach/pull/128467 -[#128488]: https://github.com/cockroachdb/cockroach/pull/128488 -[#128582]: https://github.com/cockroachdb/cockroach/pull/128582 -[#128676]: https://github.com/cockroachdb/cockroach/pull/128676 -[45ad2e9aa]: https://github.com/cockroachdb/cockroach/commit/45ad2e9aa -[dd9b455ab]: https://github.com/cockroachdb/cockroach/commit/dd9b455ab -[e7e3f836d]: https://github.com/cockroachdb/cockroach/commit/e7e3f836d diff --git a/src/current/_includes/releases/v23.2/v23.2.11.md b/src/current/_includes/releases/v23.2/v23.2.11.md index a706d42583e..71705b15922 100644 --- a/src/current/_includes/releases/v23.2/v23.2.11.md +++ b/src/current/_includes/releases/v23.2/v23.2.11.md @@ -5,9 +5,6 @@ Release Date: September 16, 2024 {% include releases/new-release-downloads-docker-image.md release=include.release %}

Bug fixes

-- Internally issued queries that are not initiated within a [SQL session]({% link v23.2/show-sessions.md %}) no longer respect a [statement timeout]({% link v23.2/session-variables.md %}#statement-timeout). This includes: background [jobs]({% link v23.2/show-jobs.md %}), queries issued by the [DB Console]({% link v23.2/ui-overview.md %}) that perform introspection, and the [Cloud SQL shell]({% link cockroachcloud/sql-shell.md %}). [#130525][#130525] -- Fixed a rare bug where a [lease transfer]({% link v23.2/architecture/replication-layer.md %}#leases) could lead to a `side-transport update saw closed timestamp regression` panic. The bug could occur when a node was [overloaded]({% link v23.2/ui-overload-dashboard.md %}) and failing to heartbeat its [node liveness]({% link v23.2/cluster-setup-troubleshooting.md %}#node-liveness-issues) record. [#130523][#130523] -- Resolved a concerning [log]({% link v23.2/logging-overview.md %}) message: `expiration of liveness record ... is not greater than expiration of the previous lease ... after liveness heartbeat`. This message is no longer possible. [#130523][#130523] - -[#130523]: https://github.com/cockroachdb/cockroach/pull/130523 -[#130525]: https://github.com/cockroachdb/cockroach/pull/130525 \ No newline at end of file +- Internally issued queries that are not initiated within a [SQL session]({% link v23.2/show-sessions.md %}) no longer respect a [statement timeout]({% link v23.2/session-variables.md %}#statement-timeout). This includes: background [jobs]({% link v23.2/show-jobs.md %}), queries issued by the [DB Console]({% link v23.2/ui-overview.md %}) that perform introspection, and the [Cloud SQL shell]({% link cockroachcloud/sql-shell.md %}). +- Fixed a rare bug where a [lease transfer]({% link v23.2/architecture/replication-layer.md %}#leases) could lead to a `side-transport update saw closed timestamp regression` panic. The bug could occur when a node was [overloaded]({% link v23.2/ui-overload-dashboard.md %}) and failing to heartbeat its [node liveness]({% link v23.2/cluster-setup-troubleshooting.md %}#node-liveness-issues) record. +- Resolved a concerning [log]({% link v23.2/logging-overview.md %}) message: `expiration of liveness record ... is not greater than expiration of the previous lease ... after liveness heartbeat`. This message is no longer possible. diff --git a/src/current/_includes/releases/v23.2/v23.2.12.md b/src/current/_includes/releases/v23.2/v23.2.12.md index 81aef686289..8b2d6c7b89a 100644 --- a/src/current/_includes/releases/v23.2/v23.2.12.md +++ b/src/current/_includes/releases/v23.2/v23.2.12.md @@ -6,72 +6,49 @@ Release Date: September 25, 2024

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

- Added a `changefeed.protect_timestamp.lag` metric, which controls how much the changefeed [protected timestamp (PTS)]({% link v23.2/protect-changefeed-data.md %}) should lag behind the [high-water mark]({% link v23.2/how-does-an-enterprise-changefeed-work.md %}). A changefeed now only updates its PTS if `changefeed.protect_timestamp.lag` has passed between the last PTS and the changefeed high-water mark. [#129685][#129685] -- [`SHOW CHANGEFEED JOB`]({% link v23.2/show-jobs.md %}#show-changefeed-jobs), [`SHOW CHANGEFEED JOBS`]({% link v23.2/show-jobs.md %}#show-changefeed-jobs), and [`SHOW JOBS`]({% link v23.2/show-jobs.md %}) no longer expose user sensitive information like `client_key`. [#122681][#122681] + Added a `changefeed.protect_timestamp.lag` metric, which controls how much the changefeed [protected timestamp (PTS)]({% link v23.2/protect-changefeed-data.md %}) should lag behind the [high-water mark]({% link v23.2/how-does-an-enterprise-changefeed-work.md %}). A changefeed now only updates its PTS if `changefeed.protect_timestamp.lag` has passed between the last PTS and the changefeed high-water mark. +- [`SHOW CHANGEFEED JOB`]({% link v23.2/show-jobs.md %}#show-changefeed-jobs), [`SHOW CHANGEFEED JOBS`]({% link v23.2/show-jobs.md %}#show-changefeed-jobs), and [`SHOW JOBS`]({% link v23.2/show-jobs.md %}) no longer expose user sensitive information like `client_key`.

SQL language changes

-- The [session setting]({% link v23.2/session-variables.md %}) `plan_cache_mode=force_generic_plan` can now be used to force prepared statements to use a query plan that is [optimized]({% link v23.2/cost-based-optimizer.md %}) once and reused in future executions without re-optimization, as long as the plan does not become stale due to [schema changes]({% link v23.2/online-schema-changes.md %}) or a collection of new [table statistics]({% link v23.2/show-statistics.md %}). The setting takes effect during [`EXECUTE`]({% link v23.2/sql-grammar.md %}#execute_stmt) commands. [`EXPLAIN ANALYZE`]({% link v23.2/explain-analyze.md %}) now includes a `plan type` field. If a generic query plan is optimized for the current execution, the `plan type` will be `generic, re-optimized`. If a generic query plan is reused for the current execution without performing optimization, the `plan type` will be `generic, reused`. Otherwise, the `plan type` will be `custom`. [#128100][#128100] -- The [session setting]({% link v23.2/session-variables.md %}) `plan_cache_mode=auto` can now be used to instruct the [cost-based optimizer]({% link v23.2/cost-based-optimizer.md %}) to automatically determine whether to use "custom" or "generic" query plans for the execution of a prepared statement. Custom query plans are optimized on every execution, while generic plans are optimized once and reused on future executions as-is. Generic query plans are beneficial in cases where query optimization contributes significant overhead to the total cost of executing a query. [#128100][#128100] +- The [session setting]({% link v23.2/session-variables.md %}) `plan_cache_mode=force_generic_plan` can now be used to force prepared statements to use a query plan that is [optimized]({% link v23.2/cost-based-optimizer.md %}) once and reused in future executions without re-optimization, as long as the plan does not become stale due to [schema changes]({% link v23.2/online-schema-changes.md %}) or a collection of new [table statistics]({% link v23.2/show-statistics.md %}). The setting takes effect during [`EXECUTE`]({% link v23.2/sql-grammar.md %}#execute_stmt) commands. [`EXPLAIN ANALYZE`]({% link v23.2/explain-analyze.md %}) now includes a `plan type` field. If a generic query plan is optimized for the current execution, the `plan type` will be `generic, re-optimized`. If a generic query plan is reused for the current execution without performing optimization, the `plan type` will be `generic, reused`. Otherwise, the `plan type` will be `custom`. +- The [session setting]({% link v23.2/session-variables.md %}) `plan_cache_mode=auto` can now be used to instruct the [cost-based optimizer]({% link v23.2/cost-based-optimizer.md %}) to automatically determine whether to use "custom" or "generic" query plans for the execution of a prepared statement. Custom query plans are optimized on every execution, while generic plans are optimized once and reused on future executions as-is. Generic query plans are beneficial in cases where query optimization contributes significant overhead to the total cost of executing a query.

Operational changes

- There are now structured logging events that report connection breakage during [node shutdown]({% link v23.2/node-shutdown.md %}). Previously, these logs existed but were unstructured. These logs appear in the `OPS` [logging channel]({% link v23.2/logging-overview.md %}#logging-channels). There are two new events: - The `node_shutdown_connection_timeout` event is logged after the timeout defined by the [cluster setting `server.shutdown.connections.timeout`]({% link v23.2/cluster-settings.md %}#setting-server-shutdown-connection-wait) transpires, if there are still open SQL connections. - - The `node_shutdown_transaction_timeout` event is logged after the timeout defined by the [cluster setting `server.shutdown.transactions.timeout` transpires]({% link v23.2/cluster-settings.md %}#setting-server-shutdown-query-wait), if there are still open [transactions]({% link v23.2/transactions.md %}) on those SQL connections. [#128710][#128710] -- Added the `ranges.decommissioning` metric, representing the number of [ranges]({% link v23.2/architecture/overview.md %}#architecture-range) which have a [replica]({% link v23.2/architecture/overview.md %}#architecture-replica) on a [decommissioning node]({% link v23.2/cockroach-node.md %}#decommission-nodes). [#130413][#130413] + - The `node_shutdown_transaction_timeout` event is logged after the timeout defined by the [cluster setting `server.shutdown.transactions.timeout` transpires]({% link v23.2/cluster-settings.md %}#setting-server-shutdown-query-wait), if there are still open [transactions]({% link v23.2/transactions.md %}) on those SQL connections. +- Added the `ranges.decommissioning` metric, representing the number of [ranges]({% link v23.2/architecture/overview.md %}#architecture-range) which have a [replica]({% link v23.2/architecture/overview.md %}#architecture-replica) on a [decommissioning node]({% link v23.2/cockroach-node.md %}#decommission-nodes). - Added three new network tracking metrics: - `rpc.connection.connected` is the number of rRPC TCP-level connections established to remote nodes. - `rpc.client.bytes.egress` is the number of TCP bytes sent via gRPC on connections we initiated. - `rpc.client.bytes.ingress` is the number of TCP bytes received via gRPC on connections we initiated. [cockroachdb/cockroach#130712][#130712] -- Added a new configuration parameter `server.cidr_mapping_url`, which maps IPv4 CIDR blocks to arbitrary tag names. [#130712][#130712] -- Modified metrics `sql.bytesin` and `sql.bytesout` to be aggregation metrics If the [`server.child_metrics.enabled`]({% link v23.2/cluster-settings.md %}#setting-server-child-metrics-enabled) cluster setting is enabled. [#130712][#130712] +- Added a new configuration parameter `server.cidr_mapping_url`, which maps IPv4 CIDR blocks to arbitrary tag names. +- Modified metrics `sql.bytesin` and `sql.bytesout` to be aggregation metrics If the [`server.child_metrics.enabled`]({% link v23.2/cluster-settings.md %}#setting-server-child-metrics-enabled) cluster setting is enabled. - Added two network metrics, `changefeed.network.bytes_in` and `changefeed.network.bytes_out`. These metrics track the number of bytes sent by individual [changefeeds]({% link v23.2/create-and-configure-changefeeds.md %}) to the following sinks: - [Kafka sinks]({% link v23.2/changefeed-sinks.md %}#kafka). If the [`server.child_metrics.enabled`]({% link v23.2/cluster-settings.md %}#setting-server-child-metrics-enabled) cluster setting is enabled, the metric will have a `kafka` label. - [Webhook sinks]({% link v23.2/changefeed-sinks.md %}#webhook-sink). If the [`server.child_metrics.enabled`]({% link v23.2/cluster-settings.md %}#setting-server-child-metrics-enabled) cluster setting is enabled, the metric will have a `webhook` label. - [Pub/Sub sinks]({% link v23.2/changefeed-sinks.md %}#google-cloud-pub-sub). If the [`server.child_metrics.enabled`]({% link v23.2/cluster-settings.md %}#setting-server-child-metrics-enabled) cluster setting is enabled, the metric will have a `pubsub` label. - - [SQL sink]({% link v23.2/changefeed-for.md %}). If the [`server.child_metrics.enabled`]({% link v23.2/cluster-settings.md %}#setting-server-child-metrics-enabled) cluster setting is enabled, the metric will have a `sql` label. [#130712][#130712] + - [SQL sink]({% link v23.2/changefeed-for.md %}). If the [`server.child_metrics.enabled`]({% link v23.2/cluster-settings.md %}#setting-server-child-metrics-enabled) cluster setting is enabled, the metric will have a `sql` label.

DB Console changes

- The [DB Console]({% link v23.2/ui-overview-dashboard.md %}) time-series graphs now have hover behavior that focuses on individual lines and shows values under the mouse pointer. [cockroachdb/cockroach#128864][#128864] -- Users with the [`VIEWACTIVITY` privilege]({% link v23.2/security-reference/authorization.md %}#viewactivity) can download [statement bundles]({% link v23.2/explain-analyze.md %}) from [DB Console]({% link v23.2/ui-overview.md %}). [#129502][#129502] -- The [DB Console]({% link v23.2/ui-overview.md %}) now displays an alert message when the [license is expired]({% link v23.2/licensing-faqs.md %}#monitor-for-license-expiry) or if there are fewer than 15 days left before the license expires. [#130509][#130509] -- The [DB Console]({% link v23.2/ui-overview.md %}) will now show a notification alerting customers without an Enterprise license to [upcoming license changes](https://www.cockroachlabs.com/enterprise-license-update/) with a link to more information. [#130509][#130509] +- Users with the [`VIEWACTIVITY` privilege]({% link v23.2/security-reference/authorization.md %}#viewactivity) can download [statement bundles]({% link v23.2/explain-analyze.md %}) from [DB Console]({% link v23.2/ui-overview.md %}). +- The [DB Console]({% link v23.2/ui-overview.md %}) now displays an alert message when the [license is expired]({% link v23.2/licensing-faqs.md %}#monitor-for-license-expiry) or if there are fewer than 15 days left before the license expires. +- The [DB Console]({% link v23.2/ui-overview.md %}) will now show a notification alerting customers without an Enterprise license to [upcoming license changes](https://www.cockroachlabs.com/enterprise-license-update/) with a link to more information.

Bug fixes

-- Fixed a bug where declarative and legacy [schema changes]({% link v23.2/online-schema-changes.md %}) were incorrectly allowed to be executed concurrently, which could lead to failing or hung schema change jobs. [#128838][#128838] -- Fixed a bug that caused errors like `ERROR: column 'crdb_internal_idx_expr' does not exist` when accessing a table with an [expression index]({% link v23.2/expression-indexes.md %}) where the expression evaluates to an [`ENUM`]({% link v23.2/enum.md %}) type, e.g., `CREATE INDEX ON t ((col::an_enum))`. [#129092][#129092] -- [Function]({% link v23.2/user-defined-functions.md %}) input parameters can no longer have the `VOID` type. [#129281][#129281] -- Internally issued queries that are not initiated within a [SQL session]({% link v23.2/show-sessions.md %}) no longer respect a statement timeout. This includes: [background jobs]({% link v23.2/show-jobs.md %}), queries issued by the [DB Console]({% link v23.2/ui-overview.md %}) that perform introspection, and the {{ site.data.products.cloud }} [SQL shell]({% link cockroachcloud/sql-shell.md %}). [#129517][#129517] -- Fixed a bug where the `schema_locked` [storage parameter]({% link v23.2/with-storage-parameter.md %}) did not prevent a table from being referenced by a [foreign key]({% link v23.2/foreign-key.md %}). [#129753][#129753] -- Users with the [`VIEWACTIVITY` SQL privilege]({% link v23.2/security-reference/authorization.md %}#viewactivity) can now request, view, and cancel [statement bundles]({% link v23.2/explain-analyze.md %}) in the [DB Console]({% link v23.2/ui-overview.md %}). [#129803][#129803] -- Fixed a bug where a [lease transfer]({% link v23.2/architecture/replication-layer.md %}#epoch-based-leases-table-data) could lead to a panic with the message `side-transport update saw closed timestamp regression`. The bug could occur when a node was overloaded and failing to [heartbeat its node liveness record]({% link v23.2/cluster-setup-troubleshooting.md %}#node-liveness-issues). [#129808][#129808] -- The [log message]({% link v23.2/logging-overview.md %}) `expiration of liveness record ... is not greater than expiration of the previous lease ... after liveness heartbeat` is no longer generated. [#129808][#129808] -- Fixed a bug where the `require_explicit_primary_keys` [session variable]({% link v23.2/session-variables.md %}) would prevent all [`CREATE TABLE`]({% link v23.2/create-table.md %}) statements from working. [#129906][#129906] -- Fixed a slow-building memory leak when using [Kerberos authentication]({% link v23.2/gssapi_authentication.md %}). [#130317][#130317] -- Fixed a potential memory leak in [changefeeds using a cloud storage sink]({% link v23.2/changefeed-examples.md %}#create-a-changefeed-connected-to-a-cloud-storage-sink). The memory leak could occur if both [`changefeed.fast_gzip.enabled`]({% link v23.2/cluster-settings.md %}#setting-changefeed-fast-gzip-enabled) and `changefeed.cloudstorage.async_flush.enabled` were `true`, and the changefeed received an error while attempting to write to the cloud storage sink. [#130624][#130624] - -[#122681]: https://github.com/cockroachdb/cockroach/pull/122681 -[#128100]: https://github.com/cockroachdb/cockroach/pull/128100 -[#128382]: https://github.com/cockroachdb/cockroach/pull/128382 -[#128710]: https://github.com/cockroachdb/cockroach/pull/128710 -[#128835]: https://github.com/cockroachdb/cockroach/pull/128835 -[#128838]: https://github.com/cockroachdb/cockroach/pull/128838 -[#128864]: https://github.com/cockroachdb/cockroach/pull/128864 -[#129092]: https://github.com/cockroachdb/cockroach/pull/129092 -[#129281]: https://github.com/cockroachdb/cockroach/pull/129281 -[#129502]: https://github.com/cockroachdb/cockroach/pull/129502 -[#129517]: https://github.com/cockroachdb/cockroach/pull/129517 -[#129685]: https://github.com/cockroachdb/cockroach/pull/129685 -[#129753]: https://github.com/cockroachdb/cockroach/pull/129753 -[#129803]: https://github.com/cockroachdb/cockroach/pull/129803 -[#129808]: https://github.com/cockroachdb/cockroach/pull/129808 -[#129906]: https://github.com/cockroachdb/cockroach/pull/129906 -[#130045]: https://github.com/cockroachdb/cockroach/pull/130045 -[#130317]: https://github.com/cockroachdb/cockroach/pull/130317 -[#130413]: https://github.com/cockroachdb/cockroach/pull/130413 -[#130509]: https://github.com/cockroachdb/cockroach/pull/130509 -[#130624]: https://github.com/cockroachdb/cockroach/pull/130624 -[#130712]: https://github.com/cockroachdb/cockroach/pull/130712 +- Fixed a bug where declarative and legacy [schema changes]({% link v23.2/online-schema-changes.md %}) were incorrectly allowed to be executed concurrently, which could lead to failing or hung schema change jobs. +- Fixed a bug that caused errors like `ERROR: column 'crdb_internal_idx_expr' does not exist` when accessing a table with an [expression index]({% link v23.2/expression-indexes.md %}) where the expression evaluates to an [`ENUM`]({% link v23.2/enum.md %}) type, e.g., `CREATE INDEX ON t ((col::an_enum))`. +- [Function]({% link v23.2/user-defined-functions.md %}) input parameters can no longer have the `VOID` type. +- Internally issued queries that are not initiated within a [SQL session]({% link v23.2/show-sessions.md %}) no longer respect a statement timeout. This includes: [background jobs]({% link v23.2/show-jobs.md %}), queries issued by the [DB Console]({% link v23.2/ui-overview.md %}) that perform introspection, and the {{ site.data.products.cloud }} [SQL shell]({% link cockroachcloud/sql-shell.md %}). +- Fixed a bug where the `schema_locked` [storage parameter]({% link v23.2/with-storage-parameter.md %}) did not prevent a table from being referenced by a [foreign key]({% link v23.2/foreign-key.md %}). +- Users with the [`VIEWACTIVITY` SQL privilege]({% link v23.2/security-reference/authorization.md %}#viewactivity) can now request, view, and cancel [statement bundles]({% link v23.2/explain-analyze.md %}) in the [DB Console]({% link v23.2/ui-overview.md %}). +- Fixed a bug where a [lease transfer]({% link v23.2/architecture/replication-layer.md %}#epoch-based-leases-table-data) could lead to a panic with the message `side-transport update saw closed timestamp regression`. The bug could occur when a node was overloaded and failing to [heartbeat its node liveness record]({% link v23.2/cluster-setup-troubleshooting.md %}#node-liveness-issues). +- The [log message]({% link v23.2/logging-overview.md %}) `expiration of liveness record ... is not greater than expiration of the previous lease ... after liveness heartbeat` is no longer generated. +- Fixed a bug where the `require_explicit_primary_keys` [session variable]({% link v23.2/session-variables.md %}) would prevent all [`CREATE TABLE`]({% link v23.2/create-table.md %}) statements from working. +- Fixed a slow-building memory leak when using [Kerberos authentication]({% link v23.2/gssapi_authentication.md %}). +- Fixed a potential memory leak in [changefeeds using a cloud storage sink]({% link v23.2/changefeed-examples.md %}#create-a-changefeed-connected-to-a-cloud-storage-sink). The memory leak could occur if both [`changefeed.fast_gzip.enabled`]({% link v23.2/cluster-settings.md %}#setting-changefeed-fast-gzip-enabled) and `changefeed.cloudstorage.async_flush.enabled` were `true`, and the changefeed received an error while attempting to write to the cloud storage sink. diff --git a/src/current/_includes/releases/v23.2/v23.2.13.md b/src/current/_includes/releases/v23.2/v23.2.13.md index 26f4a561790..c00c92b65ed 100644 --- a/src/current/_includes/releases/v23.2/v23.2.13.md +++ b/src/current/_includes/releases/v23.2/v23.2.13.md @@ -6,7 +6,7 @@ Release Date: October 17, 2024

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

-- The description for the [cluster setting]({% link v23.2/cluster-settings.md %}) `changefeed.sink_io_workers` now lists all [changefeed sinks]({% link v23.2/changefeed-sinks.md %}) that support the setting. [#130372][#130372] +- The description for the [cluster setting]({% link v23.2/cluster-settings.md %}) `changefeed.sink_io_workers` now lists all [changefeed sinks]({% link v23.2/changefeed-sinks.md %}) that support the setting. - Network metrics have been added for the following [changefeed sinks]({% link v23.2/changefeed-sinks.md %}): - Added two network metrics, `changefeed.network.bytes_in` and `changefeed.network.bytes_out`. These metrics track the number of bytes sent by individual [changefeeds]({% link v23.2/change-data-capture-overview.md %}) to the following sinks: - [Kafka sinks]({% link v23.2/changefeed-sinks.md %}#kafka). If child metrics are enabled, the metric will have a `kafka` label. @@ -14,78 +14,57 @@ Release Date: October 17, 2024 - [Pub/Sub sinks]({% link v23.2/changefeed-sinks.md %}#google-cloud-pub-sub). If child metrics are enabled, the metric will have a `pubsub` label. - [SQL sink]({% link v23.2/changefeed-for.md %}). If child metrics are enabled, the metric will have a `sql` label. - [#130664][#130664] + -- The new [metric]({% link v23.2/metrics.md %}) `changefeed.total_ranges` allows observation of the number of ranges that are watched by a changefeed aggregator. It uses the same polling interval as `changefeed.lagging_ranges`, which is controlled by the changefeed option `lagging_ranges_polling_interval`. [#130984][#130984] +- The new [metric]({% link v23.2/metrics.md %}) `changefeed.total_ranges` allows observation of the number of ranges that are watched by a changefeed aggregator. It uses the same polling interval as `changefeed.lagging_ranges`, which is controlled by the changefeed option `lagging_ranges_polling_interval`. - The following groups of [metrics]({% link v23.2/metrics.md %}) and [logs]({% link v23.2/logging.md %}) have been renamed to include the buffer they are associated with. The previous metrics are still maintained for backward compatibility. - `changefeed.buffer_entries.*` - `changefeed.buffer_entries_mem.*` - `changefeed.buffer_pushback_nanos.*` - [#131417][#131417] -- Added timers and corresponding [metrics]({% link v24.2/metrics.md %} for key parts of the [changefeed]({% link v24.2/change-data-capture-overview.md %}) pipeline to help debug issues with feeds. The `changefeed.stage.{stage}.latency` metrics now emit latency histograms for each stage. The metrics respect the changefeed `scope` label to debug a specific feed. [#131428][#131428] + +- Added timers and corresponding [metrics]({% link v24.2/metrics.md %} for key parts of the [changefeed]({% link v24.2/change-data-capture-overview.md %}) pipeline to help debug issues with feeds. The `changefeed.stage.{stage}.latency` metrics now emit latency histograms for each stage. The metrics respect the changefeed `scope` label to debug a specific feed.

Operational changes

-- The new [metric]({% link v23.2/metrics.md %}) `ranges.decommissioning` shows the number of ranges with a replica on a [decommissioning node]({% link v23.2/node-shutdown.md %}). [#130251][#130251] +- The new [metric]({% link v23.2/metrics.md %}) `ranges.decommissioning` shows the number of ranges with a replica on a [decommissioning node]({% link v23.2/node-shutdown.md %}). - The following new [metrics]({% link v23.2/metrics.md %}) show the number of RPC TCP connections established to remote nodes: - `rpc.connection.connected`: the number of gRPC TCP level connections established to remote nodes. - `rpc.client.bytes.egress`: the number of TCP bytes sent over gRPC on connections initiated by the cluster. - `rpc.client.bytes.ingress`: the number of TCP bytes received over gRPC on connections initiated by the cluster. - [#130521][#130521] -- Added a new configuration parameter, `server.cidr_mapping_url`, which maps IPv4 CIDR blocks to arbitrary tag names. [#130528][#130528] -- The [metrics]({% link v23.2/metrics.md %}) `sql.bytesin` and `sql.bytesout` are now aggregate metrics if child metrics are enabled. [#130528][#130528] + +- Added a new configuration parameter, `server.cidr_mapping_url`, which maps IPv4 CIDR blocks to arbitrary tag names. +- The [metrics]({% link v23.2/metrics.md %}) `sql.bytesin` and `sql.bytesout` are now aggregate metrics if child metrics are enabled. - The following new [metrics]({% link v23.2/metrics.md %}) track the number of bytes sent by an individual [changefeed]({% link v23.2/change-data-capture-overview.md %}) to each sink: - `changefeed.network.bytes_in` - `changefeed.network.bytes_out` - [#130664][#130664] -- You can now set the log format for the `STDERR` changefeed sink using the `format` field in the `stderr` sink section of the [logging]({% link v23.2/logging.md %}) configuration. [#131533][#131533] + +- You can now set the log format for the `STDERR` changefeed sink using the `format` field in the `stderr` sink section of the [logging]({% link v23.2/logging.md %}) configuration.

DB Console changes

-- The [DB Console]({% link v24.2/ui-overview.md %}) now shows a notification if the cluster has no Enterprise license set. Refer to [upcoming license changes](https://www.cockroachlabs.com/enterprise-license-update/) for more information. [#130425][#130425] +- The [DB Console]({% link v24.2/ui-overview.md %}) now shows a notification if the cluster has no Enterprise license set. Refer to [upcoming license changes](https://www.cockroachlabs.com/enterprise-license-update/) for more information.

Bug fixes

-- Fixed a bug where the command `SHOW CLUSTER SETTING FOR VIRTUAL CLUSTER` would erroneously return `NULL` for some settings. [#128782][#128782] -- Fixed a bug where a node could fail to start with the error `could not insert session ...: unexpected value` if an ambiguous result error occurred while inserting data into the `sqlliveness` table. [#130343][#130343] -- Fixed a bug that could prevent [upgrade finalization]({% link v23.2/upgrade-cockroach-version.md %}) due to the upgrade pre-condition for repairing descriptor corruption. [#130519][#130519] -- Fixed a rare bug where a lease transfer could lead to a `side-transport update saw closed timestamp regression` panic. The bug could occur when a node was overloaded and failing to heartbeat its node liveness record. [#130790][#130790] -- Fixed a bug that could result in the erroneous log message `expiration of liveness record ... is not greater than expiration of the previous lease ... after liveness heartbeat`. [#130790][#130790] -- Fixed a bug where queries that are not initiated within a SQL session could fail to respect a statement timeout, including [background jobs]({% link v23.2/show-jobs.md %}), queries issued by the [DB Console]({% link v23.2/ui-overview.md %}) that perform introspection, and the [CockroachDB {{ site.data.products.cloud }} SQL Shell]({% link cockroachcloud/sql-shell.md %}). [#130790][#130790] -- Fixed a bug where a connection could be incorrectly dropped if the client was attempting to change a schema at the same time that the same schema's objects were being dropped. [#130964][#130964] -- Fixed a bug that could cause the following error to be logged when executing a query under [READ COMMITTED]({% link v23.2/read-committed.md %}) isolation if it involved a table with `NOT NULL` virtual columns: `internal error: Non-nullable column ...`. [#131065][#131065] -- Fixed a potential memory leak in [changefeeds]({% link v23.2/change-data-capture-overview.md %}) that use a cloud storage sink. The memory leak could occur if both of the [cluster settings]({% link v23.2/cluster-settings.md %}) `changefeed.fast_gzip.enabled` and `changefeed.cloudstorage.async_flush.enabled` were `true` **and** if the changefeed received an error while attempting to write to the sink. [#130614][#130614] -- Fixed a bug introduced in v23.2.6, where [statistics]({% link v23.2/create-statistics.md %}) forecasting could predict a result of zero rows for a downward-trending statistic when `sql.stats.forecasts.max_decrease` is `false`. The setting is now enabled (set to `1/3` by default). [#131128][#131128] +- Fixed a bug where the command `SHOW CLUSTER SETTING FOR VIRTUAL CLUSTER` would erroneously return `NULL` for some settings. +- Fixed a bug where a node could fail to start with the error `could not insert session ...: unexpected value` if an ambiguous result error occurred while inserting data into the `sqlliveness` table. +- Fixed a bug that could prevent [upgrade finalization]({% link v23.2/upgrade-cockroach-version.md %}) due to the upgrade pre-condition for repairing descriptor corruption. +- Fixed a rare bug where a lease transfer could lead to a `side-transport update saw closed timestamp regression` panic. The bug could occur when a node was overloaded and failing to heartbeat its node liveness record. +- Fixed a bug that could result in the erroneous log message `expiration of liveness record ... is not greater than expiration of the previous lease ... after liveness heartbeat`. +- Fixed a bug where queries that are not initiated within a SQL session could fail to respect a statement timeout, including [background jobs]({% link v23.2/show-jobs.md %}), queries issued by the [DB Console]({% link v23.2/ui-overview.md %}) that perform introspection, and the [CockroachDB {{ site.data.products.cloud }} SQL Shell]({% link cockroachcloud/sql-shell.md %}). +- Fixed a bug where a connection could be incorrectly dropped if the client was attempting to change a schema at the same time that the same schema's objects were being dropped. +- Fixed a bug that could cause the following error to be logged when executing a query under [READ COMMITTED]({% link v23.2/read-committed.md %}) isolation if it involved a table with `NOT NULL` virtual columns: `internal error: Non-nullable column ...`. +- Fixed a potential memory leak in [changefeeds]({% link v23.2/change-data-capture-overview.md %}) that use a cloud storage sink. The memory leak could occur if both of the [cluster settings]({% link v23.2/cluster-settings.md %}) `changefeed.fast_gzip.enabled` and `changefeed.cloudstorage.async_flush.enabled` were `true` **and** if the changefeed received an error while attempting to write to the sink. +- Fixed a bug introduced in v23.2.6, where [statistics]({% link v23.2/create-statistics.md %}) forecasting could predict a result of zero rows for a downward-trending statistic when `sql.stats.forecasts.max_decrease` is `false`. The setting is now enabled (set to `1/3` by default). - Fixed a bug introduced in v23.1 that can cause incorrect results in the following scenario: 1. The query contains a correlated subquery. 1. The correlated subquery has a `GroupBy` or `DistinctOn` operator with an outer-column reference in its input. 1. The correlated subquery is in the input of a `SELECT` or `JOIN` clause that has a filter that sets the outer-column reference equal to an inner column that is in the input of the grouping operator. 1. The set of grouping columns does not include the replacement column explicitly. - [#130988][#130988] -- Fixed a bug where [AWS S3 and HTTP client configurations]({% link v23.2/cloud-storage-authentication.md %}) were not considered when implicit authentication was used. [#131201][#131201] -- Fixed a bug that could prevent a [changefeed]({% link v23.2/change-data-capture-overview.md %}) from resuming from a prolonged paused state. [#130919][#130919] - -[#128782]: https://github.com/cockroachdb/cockroach/pull/128782 -[#130251]: https://github.com/cockroachdb/cockroach/pull/130251 -[#130343]: https://github.com/cockroachdb/cockroach/pull/130343 -[#130372]: https://github.com/cockroachdb/cockroach/pull/130372 -[#130425]: https://github.com/cockroachdb/cockroach/pull/130425 -[#130519]: https://github.com/cockroachdb/cockroach/pull/130519 -[#130521]: https://github.com/cockroachdb/cockroach/pull/130521 -[#130528]: https://github.com/cockroachdb/cockroach/pull/130528 -[#130614]: https://github.com/cockroachdb/cockroach/pull/130614 -[#130664]: https://github.com/cockroachdb/cockroach/pull/130664 -[#130790]: https://github.com/cockroachdb/cockroach/pull/130790 -[#130919]: https://github.com/cockroachdb/cockroach/pull/130919 -[#130984]: https://github.com/cockroachdb/cockroach/pull/130984 -[#130988]: https://github.com/cockroachdb/cockroach/pull/130988 -[#131065]: https://github.com/cockroachdb/cockroach/pull/131065 -[#131128]: https://github.com/cockroachdb/cockroach/pull/131128 -[#131201]: https://github.com/cockroachdb/cockroach/pull/131201 -[#131417]: https://github.com/cockroachdb/cockroach/pull/131417 -[#131428]: https://github.com/cockroachdb/cockroach/pull/131428 -[#131533]: https://github.com/cockroachdb/cockroach/pull/131533 + +- Fixed a bug where [AWS S3 and HTTP client configurations]({% link v23.2/cloud-storage-authentication.md %}) were not considered when implicit authentication was used. +- Fixed a bug that could prevent a [changefeed]({% link v23.2/change-data-capture-overview.md %}) from resuming from a prolonged paused state. diff --git a/src/current/_includes/releases/v23.2/v23.2.14.md b/src/current/_includes/releases/v23.2/v23.2.14.md index d4164b123f7..1866fea2866 100644 --- a/src/current/_includes/releases/v23.2/v23.2.14.md +++ b/src/current/_includes/releases/v23.2/v23.2.14.md @@ -6,6 +6,4 @@ Release Date: October 31, 2024

General changes

-- Added internal client name options to distinguish backup data transfer bytes from those of other clients, such as changefeeds, for updated CockroachDB Cloud [billing metrics](https://www.cockroachlabs.com/docs/cockroachcloud/costs). [#133753][#133753] - -[#133753]: https://github.com/cockroachdb/cockroach/pull/133753 +- Added internal client name options to distinguish backup data transfer bytes from those of other clients, such as changefeeds, for updated CockroachDB Cloud [billing metrics](https://www.cockroachlabs.com/docs/cockroachcloud/costs). diff --git a/src/current/_includes/releases/v23.2/v23.2.15.md b/src/current/_includes/releases/v23.2/v23.2.15.md index 2c9b45cbc19..2d6e63d20d6 100644 --- a/src/current/_includes/releases/v23.2/v23.2.15.md +++ b/src/current/_includes/releases/v23.2/v23.2.15.md @@ -6,6 +6,4 @@ Release Date: November 15, 2024

Performance improvements

-- Reduced the write-amplification impact of rebalances by splitting snapshot `sstable` files before ingesting them into Pebble. [#135123][#135123] - -[#135123]: https://github.com/cockroachdb/cockroach/pull/135123 \ No newline at end of file +- Reduced the write-amplification impact of rebalances by splitting snapshot `sstable` files before ingesting them into Pebble. diff --git a/src/current/_includes/releases/v23.2/v23.2.16.md b/src/current/_includes/releases/v23.2/v23.2.16.md index 25346b7c0df..495084bfdca 100644 --- a/src/current/_includes/releases/v23.2/v23.2.16.md +++ b/src/current/_includes/releases/v23.2/v23.2.16.md @@ -6,83 +6,44 @@ Release Date: November 18, 2024

General changes

-- Changed the license `cockroach` is distributed under to the new CockroachDB Software License (CSL). [#131705][#131705] [#131927][#131927] [#131933][#131933] [#131981][#131981] [#131988][#131988] [#131994][#131994] [#131992][#131992] [#132000][#132000] [#132001][#132001] [#131999][#131999] [#132053][#132053] [#132803][#132803] [#132781][#132781] -- The cluster setting `diagnostics.reporting.enabled` is now ignored if the cluster has a Enterprise Trial or Enterprise Free license, or if the reporting job is unable to load any license at all. [#132461][#132461] -- Added the sink error metric (`changefeed.sink_errors`) and expanded the reporting of the internal retries metric (`changefeed.internal_retry_message_count`) to all changefeed sinks that perform internal retries. [#132569][#132569] -- Allowed access to DB console APIs via JWT, which can be supplied as a Bearer token in the Authorization header. [#133240][#133240] +- Changed the license `cockroach` is distributed under to the new CockroachDB Software License (CSL). +- The cluster setting `diagnostics.reporting.enabled` is now ignored if the cluster has a Enterprise Trial or Enterprise Free license, or if the reporting job is unable to load any license at all. +- Added the sink error metric (`changefeed.sink_errors`) and expanded the reporting of the internal retries metric (`changefeed.internal_retry_message_count`) to all changefeed sinks that perform internal retries. +- Allowed access to DB console APIs via JWT, which can be supplied as a Bearer token in the Authorization header.

DB Console changes

-- DB Console will reflect any throttling behavior from the cluster due to an expired license or missing telemetry data. Enterprise licenses are not affected. [#131859][#131859] -- Due to the inaccuracy of the **Range Count** column on the **Databases** page, and the cost incurred to fetch the correct range count for every database in a cluster, this data will no longer be visible. This data is still available via a `SHOW RANGES` query. [#133271][#133271] +- DB Console will reflect any throttling behavior from the cluster due to an expired license or missing telemetry data. Enterprise licenses are not affected. +- Due to the inaccuracy of the **Range Count** column on the **Databases** page, and the cost incurred to fetch the correct range count for every database in a cluster, this data will no longer be visible. This data is still available via a `SHOW RANGES` query.

Bug fixes

-- Fixed an error that could happen if an aggregate function was used as the value in a `SET` command. [#131958][#131958] -- Added automated clean-up/validation for dropped roles inside of default privileges. [#132169][#132169] -- Fixed a bug that could cause `RESTORE` to hang after encountering transient errors from the storage layer. [#132260][#132260] -- Fixed a bug that caused incorrect evaluation of `CASE`, `COALESCE`, and `IF` expressions with branches producing fixed-width string-like types, such as `CHAR`. In addition, the `BPCHAR` type has been fixed so that it no longer incorrectly imposes a length limit of `1`. [#130898][#130898] -- Fixed a bug that could lead to incorrect results in rare cases. The bug requires a `JOIN` between two tables, with an equality between columns with equivalent, but not identical types (e.g., `OID` and `REGCLASS`). In addition, the `JOIN` must lookup an index that includes a computed column that references one of the equivalent columns. This bug has existed since before v23.1. [#132510][#132510] -- Fixed a bug that could lead to incorrect results in rare cases. The bug requires a lookup join into a table with a computed index column, where the computed column expression is composite sensitive. A composite sensitive expression can compare differently if supplied non-identical, but equivalent input values (e.g. `2.0::DECIMAL` vs `2.00::DECIMAL`). This bug has existed since before v23.1. [#132510][#132510] -- Fixed a bug where a span stats request on a mixed-version cluster resulted in an NPE. [#132683][#132683] -- The `franz-go` library has been updated to fix a potential deadlock on changefeed restarts. [#132784][#132784] -- Fixed an issue where changefeeds would fail to update protected timestamp records in the face of retryable errors. [#132774][#132774] -- Fixed a bug that could result in changefeeds using CDC queries failing due to a system table being garbage collected. [#131655][#131655] +- Fixed an error that could happen if an aggregate function was used as the value in a `SET` command. +- Added automated clean-up/validation for dropped roles inside of default privileges. +- Fixed a bug that could cause `RESTORE` to hang after encountering transient errors from the storage layer. +- Fixed a bug that caused incorrect evaluation of `CASE`, `COALESCE`, and `IF` expressions with branches producing fixed-width string-like types, such as `CHAR`. In addition, the `BPCHAR` type has been fixed so that it no longer incorrectly imposes a length limit of `1`. +- Fixed a bug that could lead to incorrect results in rare cases. The bug requires a `JOIN` between two tables, with an equality between columns with equivalent, but not identical types (e.g., `OID` and `REGCLASS`). In addition, the `JOIN` must lookup an index that includes a computed column that references one of the equivalent columns. This bug has existed since before v23.1. +- Fixed a bug that could lead to incorrect results in rare cases. The bug requires a lookup join into a table with a computed index column, where the computed column expression is composite sensitive. A composite sensitive expression can compare differently if supplied non-identical, but equivalent input values (e.g. `2.0::DECIMAL` vs `2.00::DECIMAL`). This bug has existed since before v23.1. +- Fixed a bug where a span stats request on a mixed-version cluster resulted in an NPE. +- The `franz-go` library has been updated to fix a potential deadlock on changefeed restarts. +- Fixed an issue where changefeeds would fail to update protected timestamp records in the face of retryable errors. +- Fixed a bug that could result in changefeeds using CDC queries failing due to a system table being garbage collected. - Fixed a rare bug in which an update of a primary key column that is also the only column in a separate column family can sometimes fail to update the primary index. This bug has existed since v22.2. Requirements to hit the bug are: 1. A table with multiple column families. 2. A column family containing a single primary key column. 3. That column family is not the first column family. 4. That column family existed before its column was in the primary key. 5. That column must be of type `FLOAT4/8`, `DECIMAL`, `JSON`, collated string type, or array. - 6. An update that changes that column from a composite value to a non-composite value. [#132123][#132123] -- The `proretset` column of the `pg_catalog.pg_proc` table is now properly set to `true` for set-returning builtin functions. [#132874][#132874] -- Fixed a bug in the query optimizer that could cause CockroachDB nodes to crash in rare cases. The bug could occur when a query contains a filter in the form `col IN (elem0, elem1, ..., elemN)` only when `N` is very large, e.g., 1.6+ million, and when `col` exists in a hash-sharded index or, exists in a table with an indexed, computed column dependent on `col`. [#133066][#133066] -- Users with the `admin` role can now run `ALTER DEFAULT PRIVILEGES FOR target_role ...` on any `target_role`. Previously, this could result in a privilege error, which is incorrect as admins are allowed to perform any operation. [#133069][#133069] -- `REASSIGN OWNED BY` will now transfer ownership of the `public` schema. Previously, it would always skip over the `public` schema even if it was owned by the target role. [#133069][#133069] -- Added a timer for inner changefeed sink client flushes. Fixed a bug where timers were not correctly registered with the metric system. [#133255][#133255] -- Fixed an error that could be caused by using an `AS OF SYSTEM TIME` expression that references a user-defined (or unknown) type name. These kinds of expressions are invalid, but previously the error was not handled properly. This will now return the correct error message. [#132453][#132453] -- Fixed a bug where backup schedules could advance a protected timestamp too early, which caused incremental backups to fail. [#131389][#131389] + 6. An update that changes that column from a composite value to a non-composite value. +- The `proretset` column of the `pg_catalog.pg_proc` table is now properly set to `true` for set-returning builtin functions. +- Fixed a bug in the query optimizer that could cause CockroachDB nodes to crash in rare cases. The bug could occur when a query contains a filter in the form `col IN (elem0, elem1, ..., elemN)` only when `N` is very large, e.g., 1.6+ million, and when `col` exists in a hash-sharded index or, exists in a table with an indexed, computed column dependent on `col`. +- Users with the `admin` role can now run `ALTER DEFAULT PRIVILEGES FOR target_role ...` on any `target_role`. Previously, this could result in a privilege error, which is incorrect as admins are allowed to perform any operation. +- `REASSIGN OWNED BY` will now transfer ownership of the `public` schema. Previously, it would always skip over the `public` schema even if it was owned by the target role. +- Added a timer for inner changefeed sink client flushes. Fixed a bug where timers were not correctly registered with the metric system. +- Fixed an error that could be caused by using an `AS OF SYSTEM TIME` expression that references a user-defined (or unknown) type name. These kinds of expressions are invalid, but previously the error was not handled properly. This will now return the correct error message. +- Fixed a bug where backup schedules could advance a protected timestamp too early, which caused incremental backups to fail.

Performance improvements

-- Performance has been improved during periodic polling of table history when the `schema_locked` table storage parameter is not enabled. [#132240][#132240] -- Reduced the write-amplification impact of rebalances by splitting snapshot SSTable files into smaller ones before ingesting them into Pebble. [#134526][#134526] - -[#130898]: https://github.com/cockroachdb/cockroach/pull/130898 -[#131389]: https://github.com/cockroachdb/cockroach/pull/131389 -[#131655]: https://github.com/cockroachdb/cockroach/pull/131655 -[#131705]: https://github.com/cockroachdb/cockroach/pull/131705 -[#131859]: https://github.com/cockroachdb/cockroach/pull/131859 -[#131927]: https://github.com/cockroachdb/cockroach/pull/131927 -[#131933]: https://github.com/cockroachdb/cockroach/pull/131933 -[#131958]: https://github.com/cockroachdb/cockroach/pull/131958 -[#131973]: https://github.com/cockroachdb/cockroach/pull/131973 -[#131981]: https://github.com/cockroachdb/cockroach/pull/131981 -[#131988]: https://github.com/cockroachdb/cockroach/pull/131988 -[#131992]: https://github.com/cockroachdb/cockroach/pull/131992 -[#131994]: https://github.com/cockroachdb/cockroach/pull/131994 -[#131999]: https://github.com/cockroachdb/cockroach/pull/131999 -[#132000]: https://github.com/cockroachdb/cockroach/pull/132000 -[#132001]: https://github.com/cockroachdb/cockroach/pull/132001 -[#132053]: https://github.com/cockroachdb/cockroach/pull/132053 -[#132058]: https://github.com/cockroachdb/cockroach/pull/132058 -[#132123]: https://github.com/cockroachdb/cockroach/pull/132123 -[#132169]: https://github.com/cockroachdb/cockroach/pull/132169 -[#132240]: https://github.com/cockroachdb/cockroach/pull/132240 -[#132260]: https://github.com/cockroachdb/cockroach/pull/132260 -[#132453]: https://github.com/cockroachdb/cockroach/pull/132453 -[#132461]: https://github.com/cockroachdb/cockroach/pull/132461 -[#132510]: https://github.com/cockroachdb/cockroach/pull/132510 -[#132569]: https://github.com/cockroachdb/cockroach/pull/132569 -[#132683]: https://github.com/cockroachdb/cockroach/pull/132683 -[#132774]: https://github.com/cockroachdb/cockroach/pull/132774 -[#132781]: https://github.com/cockroachdb/cockroach/pull/132781 -[#132784]: https://github.com/cockroachdb/cockroach/pull/132784 -[#132803]: https://github.com/cockroachdb/cockroach/pull/132803 -[#132874]: https://github.com/cockroachdb/cockroach/pull/132874 -[#133066]: https://github.com/cockroachdb/cockroach/pull/133066 -[#133069]: https://github.com/cockroachdb/cockroach/pull/133069 -[#133240]: https://github.com/cockroachdb/cockroach/pull/133240 -[#133255]: https://github.com/cockroachdb/cockroach/pull/133255 -[#133271]: https://github.com/cockroachdb/cockroach/pull/133271 -[#134526]: https://github.com/cockroachdb/cockroach/pull/134526 \ No newline at end of file +- Performance has been improved during periodic polling of table history when the `schema_locked` table storage parameter is not enabled. +- Reduced the write-amplification impact of rebalances by splitting snapshot SSTable files into smaller ones before ingesting them into Pebble. diff --git a/src/current/_includes/releases/v23.2/v23.2.17.md b/src/current/_includes/releases/v23.2/v23.2.17.md index 29855bc2638..911b7016b9a 100644 --- a/src/current/_includes/releases/v23.2/v23.2.17.md +++ b/src/current/_includes/releases/v23.2/v23.2.17.md @@ -6,58 +6,36 @@ Release Date: December 12, 2024

Security updates

-- All cluster settings that accept strings are now fully redacted when transmitted as part of Cockroach Labs' diagnostics telemetry. The payload includes a record of modified cluster settings and their values when they are not strings. If you previously applied the mitigations in Technical Advisory 133479, you can safely set the value of cluster setting `server.redact_sensitive_settings.enabled` to `false` and turn on diagnostic reporting via the `diagnostics.reporting.enabled` cluster setting without leaking sensitive cluster setting values. [#134015][#134015] +- All cluster settings that accept strings are now fully redacted when transmitted as part of Cockroach Labs' diagnostics telemetry. The payload includes a record of modified cluster settings and their values when they are not strings. If you previously applied the mitigations in Technical Advisory 133479, you can safely set the value of cluster setting `server.redact_sensitive_settings.enabled` to `false` and turn on diagnostic reporting via the `diagnostics.reporting.enabled` cluster setting without leaking sensitive cluster setting values.

General changes

-- `COCKROACH_SKIP_ENABLING_DIAGNOSTIC_REPORTING` is no longer mentioned in the `cockroach demo` command. [#134085][#134085] +- `COCKROACH_SKIP_ENABLING_DIAGNOSTIC_REPORTING` is no longer mentioned in the `cockroach demo` command.

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

-- Added `system.users` to the list of system tables that changefeeds protect with protected timestamps (PTS). This table is required for CDC queries. [#134233][#134233] +- Added `system.users` to the list of system tables that changefeeds protect with protected timestamps (PTS). This table is required for CDC queries.

Operational changes

-- Added a new cluster setting `ui.database_locality_metadata.enabled`, which allows operators to disable loading extended database and table region information in the DB Console's Databases and Table Details pages. This information can cause significant CPU load on large clusters with many ranges. Versions of this page from v24.3 onwards do not have this problem. If you require this data, you can use the `SHOW RANGES FROM {DATABASE| TABLE}` query via SQL to compute on-demand. [#134093][#134093] +- Added a new cluster setting `ui.database_locality_metadata.enabled`, which allows operators to disable loading extended database and table region information in the DB Console's Databases and Table Details pages. This information can cause significant CPU load on large clusters with many ranges. Versions of this page from v24.3 onwards do not have this problem. If you require this data, you can use the `SHOW RANGES FROM {DATABASE| TABLE}` query via SQL to compute on-demand.

Bug fixes

-- Previously, CockroachDB could encounter an internal error of the form `interface conversion: coldata.Column is` in an edge case. This is now fixed. The bug was present in versions v22.2.13 and later, v23.1.9 and later, and v23.2 and later. [#133759][#133759] -- Fixed a bug that caused incorrect `NOT NULL` constraint violation errors on `UPSERT` and `INSERT ... ON CONFLICT ... DO UPDATE` statements when those statements updated an existing row and a subset of columns that did not include a `NOT NULL` column of the table. This bug had been present since at least v20.1.0. [#133823][#133823] -- Fixed an unhandled error that could occur when using `REVOKE ... ON SEQUENCE ... FROM user` on an object that was not a sequence. [#133707][#133707] -- Addressed a panic that could occur inside `CREATE TABLE AS` that occurred if sequence builtin expressions had invalid function overloads. [#133867][#133867] -- String constants can now be compared against collated strings. [#134114][#134114] -- Previously, when executing queries with index or lookup joins when the ordering needed to be maintained, CockroachDB in some cases could get into a pathological state which would lead to increased query latency, possibly by several orders of magnitude. This bug was introduced in v22.2 and is now fixed. [#134364][#134364] -- Addressed a bug with `DROP CASCADE` that would occasionally panic with an `un-dropped backref` message on partitioned tables. [#134523][#134523] -- Reduced the duration of partitions in the gossip network when a node crashes. This eliminates false positives in the `ranges.unavailable` metric. [#134602][#134602] -- An error message is no longer returned when a non-admin user runs `DROP ROLE IF EXISTS` on a user that does not exist. [#134967][#134967] -- Fixed a bug that could cause incorrect query results when the optimizer planned a lookup join on an index containing a column of type `CHAR(N)`, `VARCHAR(N)`, `BIT(N)`, `VARBIT(N)`, or `DECIMAL(M, N)`, and the query held that column constant to a single value (e.g., with an equality filter). [#135113][#135113] -- Fixed an unhandled error that would occur if `DROP SCHEMA` was executed on the `public` schema of the `system` database, or on an internal schema like `pg_catalog` or `information_schema`. [#135196][#135196] -- Fixed a bug that caused incorrect evaluation of some binary expressions involving `CHAR(N)` values and untyped string literals with trailing whitespace characters. For example, the expression `'f'::CHAR = 'f '` now correctly evaluates to `true`. [#135691][#135691] +- Previously, CockroachDB could encounter an internal error of the form `interface conversion: coldata.Column is` in an edge case. This is now fixed. The bug was present in versions v22.2.13 and later, v23.1.9 and later, and v23.2 and later. +- Fixed a bug that caused incorrect `NOT NULL` constraint violation errors on `UPSERT` and `INSERT ... ON CONFLICT ... DO UPDATE` statements when those statements updated an existing row and a subset of columns that did not include a `NOT NULL` column of the table. This bug had been present since at least v20.1.0. +- Fixed an unhandled error that could occur when using `REVOKE ... ON SEQUENCE ... FROM user` on an object that was not a sequence. +- Addressed a panic that could occur inside `CREATE TABLE AS` that occurred if sequence builtin expressions had invalid function overloads. +- String constants can now be compared against collated strings. +- Previously, when executing queries with index or lookup joins when the ordering needed to be maintained, CockroachDB in some cases could get into a pathological state which would lead to increased query latency, possibly by several orders of magnitude. This bug was introduced in v22.2 and is now fixed. +- Addressed a bug with `DROP CASCADE` that would occasionally panic with an `un-dropped backref` message on partitioned tables. +- Reduced the duration of partitions in the gossip network when a node crashes. This eliminates false positives in the `ranges.unavailable` metric. +- An error message is no longer returned when a non-admin user runs `DROP ROLE IF EXISTS` on a user that does not exist. +- Fixed a bug that could cause incorrect query results when the optimizer planned a lookup join on an index containing a column of type `CHAR(N)`, `VARCHAR(N)`, `BIT(N)`, `VARBIT(N)`, or `DECIMAL(M, N)`, and the query held that column constant to a single value (e.g., with an equality filter). +- Fixed an unhandled error that would occur if `DROP SCHEMA` was executed on the `public` schema of the `system` database, or on an internal schema like `pg_catalog` or `information_schema`. +- Fixed a bug that caused incorrect evaluation of some binary expressions involving `CHAR(N)` values and untyped string literals with trailing whitespace characters. For example, the expression `'f'::CHAR = 'f '` now correctly evaluates to `true`.

Performance improvements

-- CockroachDB now avoids loading unnecessary file blocks shortly after a rebalance in a rare case. [#134526][#134526] [#135303][#135303] [#135577][#135577] -- Reduced the write-amplification impact of rebalances by splitting snapshot sstable files into smaller ones before ingesting them into Pebble. [#134526][#134526] [#135303][#135303] [#135577][#135577] - -[#133707]: https://github.com/cockroachdb/cockroach/pull/133707 -[#133759]: https://github.com/cockroachdb/cockroach/pull/133759 -[#133823]: https://github.com/cockroachdb/cockroach/pull/133823 -[#133867]: https://github.com/cockroachdb/cockroach/pull/133867 -[#134015]: https://github.com/cockroachdb/cockroach/pull/134015 -[#134085]: https://github.com/cockroachdb/cockroach/pull/134085 -[#134093]: https://github.com/cockroachdb/cockroach/pull/134093 -[#134114]: https://github.com/cockroachdb/cockroach/pull/134114 -[#134233]: https://github.com/cockroachdb/cockroach/pull/134233 -[#134364]: https://github.com/cockroachdb/cockroach/pull/134364 -[#134523]: https://github.com/cockroachdb/cockroach/pull/134523 -[#134526]: https://github.com/cockroachdb/cockroach/pull/134526 -[#134602]: https://github.com/cockroachdb/cockroach/pull/134602 -[#134647]: https://github.com/cockroachdb/cockroach/pull/134647 -[#134967]: https://github.com/cockroachdb/cockroach/pull/134967 -[#135113]: https://github.com/cockroachdb/cockroach/pull/135113 -[#135196]: https://github.com/cockroachdb/cockroach/pull/135196 -[#135303]: https://github.com/cockroachdb/cockroach/pull/135303 -[#135577]: https://github.com/cockroachdb/cockroach/pull/135577 -[#135691]: https://github.com/cockroachdb/cockroach/pull/135691 -[#136006]: https://github.com/cockroachdb/cockroach/pull/136006 +- CockroachDB now avoids loading unnecessary file blocks shortly after a rebalance in a rare case. +- Reduced the write-amplification impact of rebalances by splitting snapshot sstable files into smaller ones before ingesting them into Pebble. diff --git a/src/current/_includes/releases/v23.2/v23.2.18.md b/src/current/_includes/releases/v23.2/v23.2.18.md index f4f9ac2546c..cf9a8e98212 100644 --- a/src/current/_includes/releases/v23.2/v23.2.18.md +++ b/src/current/_includes/releases/v23.2/v23.2.18.md @@ -6,7 +6,4 @@ Release Date: December 26, 2024

SQL language changes

-- Added the `legacy_varchar_typing` session setting. When set to `on`, type-checking comparisons involving `VARCHAR` columns behave as they did in all previous versions. When set to `off`, type-checking of these comparisons is more strict and queries that previously succeeded may now error with the message `unsupported comparison operator`. These errors can be fixed by adding explicit type casts. The `legacy_varchar_typing` session setting is on by default. [#137945][#137945] - - -[#137945]: https://github.com/cockroachdb/cockroach/pull/137945 +- Added the `legacy_varchar_typing` session setting. When set to `on`, type-checking comparisons involving `VARCHAR` columns behave as they did in all previous versions. When set to `off`, type-checking of these comparisons is more strict and queries that previously succeeded may now error with the message `unsupported comparison operator`. These errors can be fixed by adding explicit type casts. The `legacy_varchar_typing` session setting is on by default. diff --git a/src/current/_includes/releases/v23.2/v23.2.19.md b/src/current/_includes/releases/v23.2/v23.2.19.md index 436072ce485..26318769f84 100644 --- a/src/current/_includes/releases/v23.2/v23.2.19.md +++ b/src/current/_includes/releases/v23.2/v23.2.19.md @@ -9,61 +9,36 @@ Release Date: January 9, 2025 - The cluster setting `server.jwt_authentication.issuers` now takes the issuers configuration value from the URI. This can be set to one of the following values: 1. Simple string that can be parsed as a valid issuer URL. For example: `'https://accounts.google.com'`. 1. String that can be parsed as a valid JSON array of issuer URLs list. For example: `['example.com/adfs','https://accounts.google.com']`. - 1. String that can be parsed as valid JSON and deserialized into a map of issuer URLs to corresponding JWKS URIs. In this case, the JWKS URI present in the issuer's well-known endpoint will be overridden. For example: `'{"issuer_jwks_map": {"https://accounts.google.com": "https://www.googleapis.com/oauth2/v3/certs", "example.com/adfs": "https://example.com/adfs/discovery/keys"}}'`. When `issuer_jwks_map` is set, the JWKS URI is directly used to get the key set. In all other cases when `JWKSAutoFetchEnabled` is set, the JWKS URI is obtained first from the issuer's well-known endpoint and then this endpoint is used. [#138188][#138188] + 1. String that can be parsed as valid JSON and deserialized into a map of issuer URLs to corresponding JWKS URIs. In this case, the JWKS URI present in the issuer's well-known endpoint will be overridden. For example: `'{"issuer_jwks_map": {"https://accounts.google.com": "https://www.googleapis.com/oauth2/v3/certs", "example.com/adfs": "https://example.com/adfs/discovery/keys"}}'`. When `issuer_jwks_map` is set, the JWKS URI is directly used to get the key set. In all other cases when `JWKSAutoFetchEnabled` is set, the JWKS URI is obtained first from the issuer's well-known endpoint and then this endpoint is used.

General changes

-- In order to improve the granularity of changefeed pipeline metrics, the changefeed metrics `changefeed.admit_latency` and `changefeed.commit_latency` now have histogram buckets from `5ms` to `60m` (previously `500ms` to `5m`). The changefeed metrics `changefeed.parallel_io_queue_nanos`, `changefeed.parallel_io_result_queue_nanos`, `changefeed.sink_batch_hist_nanos`, `changefeed.flush_hist_nanos`, and `changefeed.kafka_throttling_hist_nanos` have histogram buckets from `5ms` to `10m` (previously `500ms` to `5m`). [#136618][#136618] -- Added support for multiple seed brokers in the new Kafka sink. [#136745][#136745] -- Added a metric `distsender.rangefeed.catchup_ranges_waiting_client_side` that counts how many rangefeeds are waiting on the client-side limiter to start performing catchup scans. [#136837][#136837] -- Added changefeed support for the `mvcc_timestamp` option with the `avro` format. If both options are specified, the Avro schema includes an `mvcc_timestamp` metadata field and emits the row's MVCC timestamp with the row data. [#136018][#136018] +- In order to improve the granularity of changefeed pipeline metrics, the changefeed metrics `changefeed.admit_latency` and `changefeed.commit_latency` now have histogram buckets from `5ms` to `60m` (previously `500ms` to `5m`). The changefeed metrics `changefeed.parallel_io_queue_nanos`, `changefeed.parallel_io_result_queue_nanos`, `changefeed.sink_batch_hist_nanos`, `changefeed.flush_hist_nanos`, and `changefeed.kafka_throttling_hist_nanos` have histogram buckets from `5ms` to `10m` (previously `500ms` to `5m`). +- Added support for multiple seed brokers in the new Kafka sink. +- Added a metric `distsender.rangefeed.catchup_ranges_waiting_client_side` that counts how many rangefeeds are waiting on the client-side limiter to start performing catchup scans. +- Added changefeed support for the `mvcc_timestamp` option with the `avro` format. If both options are specified, the Avro schema includes an `mvcc_timestamp` metadata field and emits the row's MVCC timestamp with the row data.

SQL language changes

-- Added the `legacy_varchar_typing` session setting that reverts the changes of [#133037][#133037] that caused the change in typing behavior described in [#137837][#137837]. Specifically, the `legacy_varchar_typing` session setting makes type-checking and overload resolution ignore the newly added "unpreferred" overloads. This setting defaults to `on`. [#137922][#137922] +- Added the `legacy_varchar_typing` session setting that reverts the changes of that caused the change in typing behavior described in. Specifically, the `legacy_varchar_typing` session setting makes type-checking and overload resolution ignore the newly added "unpreferred" overloads. This setting defaults to `on`.

Operational changes

-- Telemetry delivery is now considered successful even in cases where we experience a network timeout. This will prevent throttling in cases outside an operator's control. [#136477][#136477] -- When a schema change job completes, rolls back, or encounters a failure, the time taken since the job began is now logged in a structured log in the `SQL_SCHEMA` log channel. [#136952][#136952] +- Telemetry delivery is now considered successful even in cases where we experience a network timeout. This will prevent throttling in cases outside an operator's control. +- When a schema change job completes, rolls back, or encounters a failure, the time taken since the job began is now logged in a structured log in the `SQL_SCHEMA` log channel.

Bug fixes

-- `CREATE SCHEMA` now returns the correct error if the schema name is missing. [#135925][#135925] -- Fixed an issue where corrupted table statistics could cause the CockroachDB process to crash. [#136043][#136043] -- The `idle_in_session_timeout` setting now excludes the time spent waiting for schema changer jobs to complete, preventing unintended session termination during schema change operations. [#136508][#136508] -- Fixed a bug that caused the optimizer to use stale table statistics after altering an enum type used in the table. [#136832][#136832] -- CockroachDB now better respects `statement_timeout` limit on queries involving the top K sort and merge join operations. [#136650][#136650] -- Fixed an issue where license enforcement was not consistently disabled for single-node clusters started with `start-single-node`. Now, cluster restarts correctly disable licensing. [#137009][#137009] -- Fixed a bug that caused queries against tables with user-defined types to sometimes fail with errors after restoring those tables. [#137356][#137356] -- Fixed a bug that could cause an internal error if a table with an implicit (`rowid`) primary key was locked from within a subquery, for example, ` SELECT * FROM (SELECT * FROM foo WHERE x = 2) FOR UPDATE;` . The error could occur either under read-committed isolation, or with `optimizer_use_lock_op_for_serializable` enabled. [#137130][#137130] -- Fixed an issue where adding an existing column with the `IF NOT EXISTS` option could exit too early, skipping necessary handling of the abstract syntax tree (AST). This could lead to failure of the `ALTER` statement. [#137678][#137678] -- `CLOSE CURSOR` statements are now allowed in read-only transactions, similar to PostgreSQL. The bug has been present since at least v23.1. [#137788][#137788] -- Fixed an issue where a schema change could incorrectly cause a changefeed to fail with an assertion error like `received boundary timestamp ... of type ... before reaching existing boundary of type ...`. [#137703][#137703] -- Internal scans are now exempt from the `sql.defaults.disallow_full_table_scans.enabled` setting, allowing index creation even when the cluster setting is enabled. [#137720][#137720] -- A new column of type `JSON` or `JSONB` that has a `UNIQUE` constraint will now be blocked from being added to a table if the cluster has not yet finalized the upgrade to v23.2. [#137864][#137864] - -[#133037]: https://github.com/cockroachdb/cockroach/pull/133037 -[#137837]: https://github.com/cockroachdb/cockroach/pull/137837 -[#135925]: https://github.com/cockroachdb/cockroach/pull/135925 -[#136018]: https://github.com/cockroachdb/cockroach/pull/136018 -[#136043]: https://github.com/cockroachdb/cockroach/pull/136043 -[#136477]: https://github.com/cockroachdb/cockroach/pull/136477 -[#136508]: https://github.com/cockroachdb/cockroach/pull/136508 -[#136618]: https://github.com/cockroachdb/cockroach/pull/136618 -[#136650]: https://github.com/cockroachdb/cockroach/pull/136650 -[#136745]: https://github.com/cockroachdb/cockroach/pull/136745 -[#136832]: https://github.com/cockroachdb/cockroach/pull/136832 -[#136837]: https://github.com/cockroachdb/cockroach/pull/136837 -[#136952]: https://github.com/cockroachdb/cockroach/pull/136952 -[#137009]: https://github.com/cockroachdb/cockroach/pull/137009 -[#137111]: https://github.com/cockroachdb/cockroach/pull/137111 -[#137130]: https://github.com/cockroachdb/cockroach/pull/137130 -[#137356]: https://github.com/cockroachdb/cockroach/pull/137356 -[#137678]: https://github.com/cockroachdb/cockroach/pull/137678 -[#137703]: https://github.com/cockroachdb/cockroach/pull/137703 -[#137720]: https://github.com/cockroachdb/cockroach/pull/137720 -[#137788]: https://github.com/cockroachdb/cockroach/pull/137788 -[#137864]: https://github.com/cockroachdb/cockroach/pull/137864 -[#137922]: https://github.com/cockroachdb/cockroach/pull/137922 -[#138188]: https://github.com/cockroachdb/cockroach/pull/138188 +- `CREATE SCHEMA` now returns the correct error if the schema name is missing. +- Fixed an issue where corrupted table statistics could cause the CockroachDB process to crash. +- The `idle_in_session_timeout` setting now excludes the time spent waiting for schema changer jobs to complete, preventing unintended session termination during schema change operations. +- Fixed a bug that caused the optimizer to use stale table statistics after altering an enum type used in the table. +- CockroachDB now better respects `statement_timeout` limit on queries involving the top K sort and merge join operations. +- Fixed an issue where license enforcement was not consistently disabled for single-node clusters started with `start-single-node`. Now, cluster restarts correctly disable licensing. +- Fixed a bug that caused queries against tables with user-defined types to sometimes fail with errors after restoring those tables. +- Fixed a bug that could cause an internal error if a table with an implicit (`rowid`) primary key was locked from within a subquery, for example, ` SELECT * FROM (SELECT * FROM foo WHERE x = 2) FOR UPDATE;` . The error could occur either under read-committed isolation, or with `optimizer_use_lock_op_for_serializable` enabled. +- Fixed an issue where adding an existing column with the `IF NOT EXISTS` option could exit too early, skipping necessary handling of the abstract syntax tree (AST). This could lead to failure of the `ALTER` statement. +- `CLOSE CURSOR` statements are now allowed in read-only transactions, similar to PostgreSQL. The bug has been present since at least v23.1. +- Fixed an issue where a schema change could incorrectly cause a changefeed to fail with an assertion error like `received boundary timestamp ... of type ... before reaching existing boundary of type ...`. +- Internal scans are now exempt from the `sql.defaults.disallow_full_table_scans.enabled` setting, allowing index creation even when the cluster setting is enabled. +- A new column of type `JSON` or `JSONB` that has a `UNIQUE` constraint will now be blocked from being added to a table if the cluster has not yet finalized the upgrade to v23.2. diff --git a/src/current/_includes/releases/v23.2/v23.2.2.md b/src/current/_includes/releases/v23.2/v23.2.2.md index b4ebca52c21..49963c27b63 100644 --- a/src/current/_includes/releases/v23.2/v23.2.2.md +++ b/src/current/_includes/releases/v23.2/v23.2.2.md @@ -6,7 +6,7 @@ Release Date: February 27, 2024

Bug fixes

-- Fixed a bug where [rangefeed]({% link v23.2/create-and-configure-changefeeds.md %}#enable-rangefeeds) resolved timestamps could get stuck, continually emitting the log message `pushing old intents failed: range barrier failed, range split`, typically following a [range merge](https://www.cockroachlabs.com/docs/v23.2/architecture/distribution-layer#range-merges). This bug was introduced in v23.2.1. [#119558][#119558] +- Fixed a bug where [rangefeed]({% link v23.2/create-and-configure-changefeeds.md %}#enable-rangefeeds) resolved timestamps could get stuck, continually emitting the log message `pushing old intents failed: range barrier failed, range split`, typically following a [range merge](https://www.cockroachlabs.com/docs/v23.2/architecture/distribution-layer#range-merges). This bug was introduced in v23.2.1.
@@ -15,5 +15,3 @@ Release Date: February 27, 2024 This release includes 2 merged PRs by 2 authors.
- -[#119558]: https://github.com/cockroachdb/cockroach/pull/119558 diff --git a/src/current/_includes/releases/v23.2/v23.2.20.md b/src/current/_includes/releases/v23.2/v23.2.20.md index 4a38c631382..297b2550b66 100644 --- a/src/current/_includes/releases/v23.2/v23.2.20.md +++ b/src/current/_includes/releases/v23.2/v23.2.20.md @@ -6,27 +6,16 @@ Release Date: February 6, 2025

SQL language changes

-- Since v23.2, table statistics histograms have been collected for non-indexed JSON columns. Histograms are no longer collected for these columns if the `sql.stats.non_indexed_json_histograms.enabled` cluster setting is set to `false`. This reduces memory usage during table statistics collection, for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`. [#140269][#140269] +- Since v23.2, table statistics histograms have been collected for non-indexed JSON columns. Histograms are no longer collected for these columns if the `sql.stats.non_indexed_json_histograms.enabled` cluster setting is set to `false`. This reduces memory usage during table statistics collection, for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`.

Operational changes

-- The `changefeed.max_behind_nanos` metric now supports scoping with metrics labels. [#139241][#139241] +- The `changefeed.max_behind_nanos` metric now supports scoping with metrics labels.

Bug fixes

-- Previously, `SHOW CREATE TABLE` was showing incorrect data with regards to inverted indexes. It now shows the correct data that can be repeatedly entered back into CockroachDB to recreate the same table. [#138167][#138167] -- Fixed a bug where querying the `pg_catalog.pg_constraint` table while the schema changer was dropping a constraint could result in a query error. [#138286][#138286] -- Fixed a bounded memory leak that could occur when collecting table statistics on a table that had both very wide (10KiB or more) and relatively small (under 400B) `BYTES`-like values within the same row. This leak had been present since before v19.2. [#139177][#139177] -- Fixed a bug where changefeeds using CDC queries could have duplicate columns in the Parquet output. [#140155][#140155] -- Fixed a bug that prevented the `CREATE` statement for a routine from being included in a statement bundle when the routine was created on a schema other than `public`. The bug had existed since v23.1. [#140260][#140260] - -[#137998]: https://github.com/cockroachdb/cockroach/pull/137998 -[#138152]: https://github.com/cockroachdb/cockroach/pull/138152 -[#138167]: https://github.com/cockroachdb/cockroach/pull/138167 -[#138286]: https://github.com/cockroachdb/cockroach/pull/138286 -[#138952]: https://github.com/cockroachdb/cockroach/pull/138952 -[#139177]: https://github.com/cockroachdb/cockroach/pull/139177 -[#139241]: https://github.com/cockroachdb/cockroach/pull/139241 -[#140155]: https://github.com/cockroachdb/cockroach/pull/140155 -[#140260]: https://github.com/cockroachdb/cockroach/pull/140260 -[#140269]: https://github.com/cockroachdb/cockroach/pull/140269 +- Previously, `SHOW CREATE TABLE` was showing incorrect data with regards to inverted indexes. It now shows the correct data that can be repeatedly entered back into CockroachDB to recreate the same table. +- Fixed a bug where querying the `pg_catalog.pg_constraint` table while the schema changer was dropping a constraint could result in a query error. +- Fixed a bounded memory leak that could occur when collecting table statistics on a table that had both very wide (10KiB or more) and relatively small (under 400B) `BYTES`-like values within the same row. This leak had been present since before v19.2. +- Fixed a bug where changefeeds using CDC queries could have duplicate columns in the Parquet output. +- Fixed a bug that prevented the `CREATE` statement for a routine from being included in a statement bundle when the routine was created on a schema other than `public`. The bug had existed since v23.1. diff --git a/src/current/_includes/releases/v23.2/v23.2.21.md b/src/current/_includes/releases/v23.2/v23.2.21.md index 076839e443d..a017da6df31 100644 --- a/src/current/_includes/releases/v23.2/v23.2.21.md +++ b/src/current/_includes/releases/v23.2/v23.2.21.md @@ -6,17 +6,11 @@ Release Date: March 6, 2025

SQL language changes

-- Since v23.2, table statistics histograms have been collected for non-indexed `JSONB` columns. Histograms are no longer collected for these columns if the `sql.stats.non_indexed_json_histograms.enabled` cluster setting is set to `false`. This reduces memory usage during table statistics collection, for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`. [#140144][#140144] +- Since v23.2, table statistics histograms have been collected for non-indexed `JSONB` columns. Histograms are no longer collected for these columns if the `sql.stats.non_indexed_json_histograms.enabled` cluster setting is set to `false`. This reduces memory usage during table statistics collection, for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`.

Bug fixes

-- Fixed a bug where under rare circumstances draining a node could fail with `some sessions did not respond to cancellation within 1s`. [#139479][#139479] -- Fixed a bug that prevented the `CREATE` statement for a routine from being shown in a statement bundle. This happened when the routine was created on a schema other than `public`. The bug has existed since v23.1. [#136131][#136131] -- Fixed a bounded memory leak that could previously occur when evaluating some memory-intensive queries via the vectorized engine. The leak has been present since v20.2. [#139098][#139098] -- Previously, in changefeeds using CDC queries and the Parquet format, the output would include duplicate columns when it contained a user-defined primary key. Now, the columns are de-duplicated in Parquet changefeed messages. [#140380][#140380] - -[#136131]: https://github.com/cockroachdb/cockroach/pull/136131 -[#139098]: https://github.com/cockroachdb/cockroach/pull/139098 -[#139479]: https://github.com/cockroachdb/cockroach/pull/139479 -[#140144]: https://github.com/cockroachdb/cockroach/pull/140144 -[#140380]: https://github.com/cockroachdb/cockroach/pull/140380 +- Fixed a bug where under rare circumstances draining a node could fail with `some sessions did not respond to cancellation within 1s`. +- Fixed a bug that prevented the `CREATE` statement for a routine from being shown in a statement bundle. This happened when the routine was created on a schema other than `public`. The bug has existed since v23.1. +- Fixed a bounded memory leak that could previously occur when evaluating some memory-intensive queries via the vectorized engine. The leak has been present since v20.2. +- Previously, in changefeeds using CDC queries and the Parquet format, the output would include duplicate columns when it contained a user-defined primary key. Now, the columns are de-duplicated in Parquet changefeed messages. diff --git a/src/current/_includes/releases/v23.2/v23.2.22.md b/src/current/_includes/releases/v23.2/v23.2.22.md index 84926de9231..566e0442a68 100644 --- a/src/current/_includes/releases/v23.2/v23.2.22.md +++ b/src/current/_includes/releases/v23.2/v23.2.22.md @@ -7,25 +7,17 @@ Release Date: April 2, 2025

General changes

- The protected timestamp (PTS) records of running changefeeds are now updated when the set of targets changes, such as when system tables are added to the protected tables list. - [#141157][#141157] +

Bug fixes

- Fixed a bug that could cause gateway nodes to panic when performing an `UPSERT` on a table with a `BOOL` primary key column and a partial index that used the primary key column as the predicate expression. - [#141825][#141825] + - Fixed a rare bug in which a query could fail with the error `could not find computed column expression for column in table` while dropping a virtual computed column from a table. This bug was introduced in v23.2.4. - [#139874][#139874] + - Fixed a bug that could cause `nil pointer dereference` errors when executing statements with user-defined functions (UDFs). The error could also occur when executing statements with some built-in functions, like `obj_description`. - [#141666][#141666] +

Miscellaneous

- 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. - [#142831][#142831] - - -[#141666]: https://github.com/cockroachdb/cockroach/pull/141666 -[#142831]: https://github.com/cockroachdb/cockroach/pull/142831 -[#141157]: https://github.com/cockroachdb/cockroach/pull/141157 -[#141825]: https://github.com/cockroachdb/cockroach/pull/141825 -[#139874]: https://github.com/cockroachdb/cockroach/pull/139874 diff --git a/src/current/_includes/releases/v23.2/v23.2.23.md b/src/current/_includes/releases/v23.2/v23.2.23.md index a7544bc961a..3a0a4b05652 100644 --- a/src/current/_includes/releases/v23.2/v23.2.23.md +++ b/src/current/_includes/releases/v23.2/v23.2.23.md @@ -7,7 +7,3 @@ Release Date: April 9, 2025

Bug fixes

- 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. - [#144062][#144062] - - -[#144062]: https://github.com/cockroachdb/cockroach/pull/144062 diff --git a/src/current/_includes/releases/v23.2/v23.2.24.md b/src/current/_includes/releases/v23.2/v23.2.24.md index 0a33fefc949..09173e5f77a 100644 --- a/src/current/_includes/releases/v23.2/v23.2.24.md +++ b/src/current/_includes/releases/v23.2/v23.2.24.md @@ -6,6 +6,4 @@ Release Date: April 28, 2025

Bug fixes

-- Fixed a rare corruption bug that impacts import and materialized views. [#144659][#144659] - -[#144659]: https://github.com/cockroachdb/cockroach/pull/144659 \ No newline at end of file +- Fixed a rare corruption bug that impacts import and materialized views. diff --git a/src/current/_includes/releases/v23.2/v23.2.25.md b/src/current/_includes/releases/v23.2/v23.2.25.md index 0404f16fb12..4d9783c2a4a 100644 --- a/src/current/_includes/releases/v23.2/v23.2.25.md +++ b/src/current/_includes/releases/v23.2/v23.2.25.md @@ -7,25 +7,16 @@ Release Date: April 30, 2025

SQL language changes

- Added the `WITH IGNORE_FOREIGN_KEYS` option to `SHOW CREATE TABLE` which omits foreign key constraints from the output schema. This option is also allowed in `SHOW CREATE VIEW`, but has no effect. It cannot be combined with the `WITH REDACT` option. - [#142165][#142165] +

Bug fixes

- 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. - [#143312][#143312] + - Fixed a bug that caused changefeeds to fail on startup when scanning a single key. - [#143147][#143147] + - 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. - [#144029][#144029] -- 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`. - [#143291][#143291] -- 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. - [#143274][#143274] +- 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`. -[#142165]: https://github.com/cockroachdb/cockroach/pull/142165 -[#143312]: https://github.com/cockroachdb/cockroach/pull/143312 -[#143147]: https://github.com/cockroachdb/cockroach/pull/143147 -[#144029]: https://github.com/cockroachdb/cockroach/pull/144029 -[#143291]: https://github.com/cockroachdb/cockroach/pull/143291 -[#143274]: https://github.com/cockroachdb/cockroach/pull/143274 +- 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. diff --git a/src/current/_includes/releases/v23.2/v23.2.26.md b/src/current/_includes/releases/v23.2/v23.2.26.md index 06f2f27f45d..67b0609b0c2 100644 --- a/src/current/_includes/releases/v23.2/v23.2.26.md +++ b/src/current/_includes/releases/v23.2/v23.2.26.md @@ -6,14 +6,8 @@ Release Date: May 28, 2025

Bug fixes

-- Fixed a bug where using values for the cluster setting `changefeed.aggregator.flush_jitter` and the changefeed option `min_checkpoint_frequency` resulting in `changefeed.aggregator.flush_jitter * min_checkpoint_frequency < 1` would cause a panic. Jitter will now be disabled in this case. [#144423][#144423] -- Improved the performance of `SHOW CREATE TABLE` on multi-region databases with a large numbers of objects. [#145081][#145081] -- Fixed an internal assertion failure that could occur during operations like `ALTER TYPE` or `ALTER DATABASE ... ADD REGION` when temporary tables were present. [#146200][#146200] -- 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. [#146322][#146322] -- Fixed a rare corruption bug that impacts import and materialized views. [#144659][#144659] - -[#144423]: https://github.com/cockroachdb/cockroach/pull/144423 -[#145081]: https://github.com/cockroachdb/cockroach/pull/145081 -[#146200]: https://github.com/cockroachdb/cockroach/pull/146200 -[#146322]: https://github.com/cockroachdb/cockroach/pull/146322 -[#144659]: https://github.com/cockroachdb/cockroach/pull/144659 +- Fixed a bug where using values for the cluster setting `changefeed.aggregator.flush_jitter` and the changefeed option `min_checkpoint_frequency` resulting in `changefeed.aggregator.flush_jitter * min_checkpoint_frequency < 1` would cause a panic. Jitter will now be disabled in this case. +- Improved the performance of `SHOW CREATE TABLE` on multi-region databases with a large numbers of objects. +- Fixed an internal assertion failure that could occur during operations like `ALTER TYPE` or `ALTER DATABASE ... ADD REGION` when temporary tables were present. +- 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. +- Fixed a rare corruption bug that impacts import and materialized views. diff --git a/src/current/_includes/releases/v23.2/v23.2.27.md b/src/current/_includes/releases/v23.2/v23.2.27.md index f3fe0298191..88ae854ec4f 100644 --- a/src/current/_includes/releases/v23.2/v23.2.27.md +++ b/src/current/_includes/releases/v23.2/v23.2.27.md @@ -6,22 +6,15 @@ Release Date: June 25, 2025

Operational changes

-- The `goschedstats.always_use_short_sample_period.enabled` cluster setting should be set to `true` for any serious production cluster; this will prevent unnecessary queuing in admission control CPU queues. [#146742][#146742] +- The `goschedstats.always_use_short_sample_period.enabled` cluster setting should be set to `true` for any serious production cluster; this will prevent unnecessary queuing in admission control CPU queues.

Bug fixes

-- Fixed a bug that could potentially cause a changefeed to complete erroneously when one of its watched tables encounters a schema change. [#147040][#147040] -- 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. [#147219][#147219] -- 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). [#147339][#147339] -- 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. [#147456][#147456] +- Fixed a bug that could potentially cause a changefeed to complete erroneously when one of its watched tables encounters a schema change. +- 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. +- 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). +- 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.

Performance improvements

-- TTL jobs now respond to cluster topology changes by restarting and rebalancing across available nodes. [#147224][#147224] - -[#147219]: https://github.com/cockroachdb/cockroach/pull/147219 -[#147339]: https://github.com/cockroachdb/cockroach/pull/147339 -[#147456]: https://github.com/cockroachdb/cockroach/pull/147456 -[#147224]: https://github.com/cockroachdb/cockroach/pull/147224 -[#146742]: https://github.com/cockroachdb/cockroach/pull/146742 -[#147040]: https://github.com/cockroachdb/cockroach/pull/147040 +- TTL jobs now respond to cluster topology changes by restarting and rebalancing across available nodes. diff --git a/src/current/_includes/releases/v23.2/v23.2.28.md b/src/current/_includes/releases/v23.2/v23.2.28.md index c180ffa9f22..b774f8b1a64 100644 --- a/src/current/_includes/releases/v23.2/v23.2.28.md +++ b/src/current/_includes/releases/v23.2/v23.2.28.md @@ -6,6 +6,4 @@ Release Date: September 4, 2025

Performance improvements

-- Lookup joins can now be used on tables with virtual columns even if the type of the search argument is not identical to the column type referenced in the virtual column. [#152926][#152926] - -[#152926]: https://github.com/cockroachdb/cockroach/pull/152926 +- 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. diff --git a/src/current/_includes/releases/v23.2/v23.2.29.md b/src/current/_includes/releases/v23.2/v23.2.29.md index 4b4f99026ca..916df3c5a98 100644 --- a/src/current/_includes/releases/v23.2/v23.2.29.md +++ b/src/current/_includes/releases/v23.2/v23.2.29.md @@ -6,7 +6,4 @@ Release Date: February 19, 2026

Bug fixes

-- Fixed a rare race condition between range splits and MVCC garbage collection where a GCRequest could target keys outside its declared span. In rare cases, this could result in data on the post-split right-hand side (RHS) being incorrectly garbage collected, potentially leading to lost writes. The system now detects and rejects such malformed GC requests. [#163775][#163775] - - -[#163775]: https://github.com/cockroachdb/cockroach/pull/163775 +- Fixed a rare race condition between range splits and MVCC garbage collection where a GCRequest could target keys outside its declared span. In rare cases, this could result in data on the post-split right-hand side (RHS) being incorrectly garbage collected, potentially leading to lost writes. The system now detects and rejects such malformed GC requests. diff --git a/src/current/_includes/releases/v23.2/v23.2.3.md b/src/current/_includes/releases/v23.2/v23.2.3.md index a03ac245ca0..e4d7e9cfe5b 100644 --- a/src/current/_includes/releases/v23.2/v23.2.3.md +++ b/src/current/_includes/releases/v23.2/v23.2.3.md @@ -6,40 +6,40 @@ Release Date: March 20, 2024

Security updates

-- The [DB Console](../v23.2/ui-overview.html) `session` cookie is now marked `HttpOnly` to prevent it from being read by any Javascript code. Cookies are also marked `Secure` for the browser when the cluster is running in secure mode. [#119259][#119259] -- Clusters using [Cluster Single Sign-on (SSO) with JSON web tokens (JWTs)](../v23.2/sso-sql.html) can now optionally fetch signing keys from configured issuers instead of configuring static signing keys for each issuer. When the new cluster setting `server.jwt_authentication.jwks_auto_fetch.enabled` is set to `true`, signing keys are automatically fetched from the issuer using metadata published in its OpenID configuration. In this case, static signing keys in `server.jwt_authentication.jwks` are ignored. When automatic fetching is enabled, there may be a slight increase in network latency for each JWT authentication request, proportional to the latency between the cluster and the issuer's endpoint. [#119768][#119768] +- The [DB Console](../v23.2/ui-overview.html) `session` cookie is now marked `HttpOnly` to prevent it from being read by any Javascript code. Cookies are also marked `Secure` for the browser when the cluster is running in secure mode. +- Clusters using [Cluster Single Sign-on (SSO) with JSON web tokens (JWTs)](../v23.2/sso-sql.html) can now optionally fetch signing keys from configured issuers instead of configuring static signing keys for each issuer. When the new cluster setting `server.jwt_authentication.jwks_auto_fetch.enabled` is set to `true`, signing keys are automatically fetched from the issuer using metadata published in its OpenID configuration. In this case, static signing keys in `server.jwt_authentication.jwks` are ignored. When automatic fetching is enabled, there may be a slight increase in network latency for each JWT authentication request, proportional to the latency between the cluster and the issuer's endpoint.

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

-- Fixed a bug where creating a changefeed with the [`format='avro'`](../v23.2/create-changefeed.html#format) and [`diff`](../v23.2/create-changefeed.html#diff-opt) options that targeted tables with a `DECIMAL(n)` column (i.e., zero-scale `DECIMAL` column) would cause a panic. [#118847][#118847] +- Fixed a bug where creating a changefeed with the [`format='avro'`](../v23.2/create-changefeed.html#format) and [`diff`](../v23.2/create-changefeed.html#diff-opt) options that targeted tables with a `DECIMAL(n)` column (i.e., zero-scale `DECIMAL` column) would cause a panic.

SQL language changes

-- Changed the `sql.index_recommendation.drop_unused_duration` cluster setting to `public` so that it is documented on the [Cluster Settings](../v23.2/cluster-settings.html) page. [#118764][#118764] -- Added the `server.max_open_transactions_per_gateway` [cluster setting](../v23.2/cluster-settings.html). When set to a non-negative value, non-admin users cannot execute a query if the number of transactions open on the current gateway node is already at the configured limit. [#118933][#118933] -- Out-of-process SQL servers will now start exporting a new `sql.aggregated_livebytes` [metric](../v23.2/metrics.html). This metric gets updated once every 60 seconds by default, and its update interval can be configured via the `tenant_global_metrics_exporter_interval` [cluster setting](../v23.2/cluster-settings.html). [#119371][#119371] -- Added support for index hints with [`INSERT`](../v23.2/insert.html) and [`UPSERT`](../v23.2/upsert.html) statements. This allows `INSERT ... ON CONFLICT` and `UPSERT` queries to use index hints in the same way they are already supported for [`UPDATE`](../v23.2/update.html) and [`DELETE`](../v23.2/delete.html) statements. [#119601][#119601] +- Changed the `sql.index_recommendation.drop_unused_duration` cluster setting to `public` so that it is documented on the [Cluster Settings](../v23.2/cluster-settings.html) page. +- Added the `server.max_open_transactions_per_gateway` [cluster setting](../v23.2/cluster-settings.html). When set to a non-negative value, non-admin users cannot execute a query if the number of transactions open on the current gateway node is already at the configured limit. +- Out-of-process SQL servers will now start exporting a new `sql.aggregated_livebytes` [metric](../v23.2/metrics.html). This metric gets updated once every 60 seconds by default, and its update interval can be configured via the `tenant_global_metrics_exporter_interval` [cluster setting](../v23.2/cluster-settings.html). +- Added support for index hints with [`INSERT`](../v23.2/insert.html) and [`UPSERT`](../v23.2/upsert.html) statements. This allows `INSERT ... ON CONFLICT` and `UPSERT` queries to use index hints in the same way they are already supported for [`UPDATE`](../v23.2/update.html) and [`DELETE`](../v23.2/delete.html) statements.

Operational changes

-- Expanded the [`--include-range-info`](../v23.2/cockroach-debug-zip.html) flag to include problem ranges. This flag still defaults to `true`. [#119234][#119234] +- Expanded the [`--include-range-info`](../v23.2/cockroach-debug-zip.html) flag to include problem ranges. This flag still defaults to `true`. - In unredacted [debug zips](../v23.2/cockroach-debug-zip.html), the `crdb_internal.transaction_contention_events` table file has two new columns: - `waiting_stmt_query`: the query of the waiting statement. - - `blocking_txn_queries_unordered`: the unordered list of the blocking transaction's queries. [#118831][#118831] + - `blocking_txn_queries_unordered`: the unordered list of the blocking transaction's queries.

Command-line changes

-- Updated the SQL shell help URL to point to the [`cockroach sql`](../v23.2/cockroach-sql.html) page. [#118994][#118994] +- Updated the SQL shell help URL to point to the [`cockroach sql`](../v23.2/cockroach-sql.html) page. - [`cockroach debug tsdump`](../v23.2/cockroach-debug-tsdump.html) creates a `tsdump.yaml` file. The `tsdump` raw format automatically creates the YAML file in the default location `/tmp/tsdump.yaml`. Added a new flag `--yaml` that allows users to specify the path to create `tsdump.yaml` instead of using the default location. For example, `cockroach debug tsdump --host : \ --format raw --yaml=/some_path/tsdump.yaml > /some_path/tsdump.gob`.[#117741][#117741]

DB Console changes

-- Fixed a bug where a warning about the need to refresh data would remain displayed on the Active Executions view of the [Statements](../v23.2/ui-statements-page.html#active-executions-view) and [Transactions](../v23.2/ui-transactions-page.html#active-executions-view) pages despite enabling **Auto Refresh**. [#118703][#118703] -- Updated the [Statement Details page](../v23.2/ui-statements-page.html) to always show the entire selected period, instead of just the period that had data. [#118805][#118805] +- Fixed a bug where a warning about the need to refresh data would remain displayed on the Active Executions view of the [Statements](../v23.2/ui-statements-page.html#active-executions-view) and [Transactions](../v23.2/ui-transactions-page.html#active-executions-view) pages despite enabling **Auto Refresh**. +- Updated the [Statement Details page](../v23.2/ui-statements-page.html) to always show the entire selected period, instead of just the period that had data. - The [Overload dashboard](../v23.2/ui-overload-dashboard.html) now includes two additional graphs: - **Elastic CPU Utilization**: displays the CPU utilization by elastic work, compared to the limit set for elastic work. - - **Elastic CPU Exhausted Duration Per Second**: displays the duration of CPU exhaustion by elastic work, in microseconds. [#118896][#118896] -- The **Full Table/Index Scans** chart in the [SQL Metrics dashboard](../v23.2/ui-sql-dashboard.html) now shows the non-negative derivative of the number of full scans tracked. [#118860][#118860] + - **Elastic CPU Exhausted Duration Per Second**: displays the duration of CPU exhaustion by elastic work, in microseconds. +- The **Full Table/Index Scans** chart in the [SQL Metrics dashboard](../v23.2/ui-sql-dashboard.html) now shows the non-negative derivative of the number of full scans tracked.

Bug fixes

@@ -48,66 +48,29 @@ Release Date: March 20, 2024 1. A transaction commits and removes its transaction record before its [intent](../v23.2/architecture/transaction-layer.html#writing) resolution is applied on the follower. 1. The follower's [closed timestamp](../v23.2/architecture/transaction-layer.html#closed-timestamps) has advanced past the transaction commit timestamp. 1. The rangefeed attempts to push the transaction to a new timestamp (at least 10 seconds after the transaction began). - 1. This may cause the rangefeed to prematurely emit a checkpoint before emitting writes at lower timestamps, which in turn may cause the [changefeed](../v23.2/how-does-an-enterprise-changefeed-work.html) to drop these events entirely, never emitting them. [#118413][#118413] -- Decommissioning replicas that are part of a mis-replicated range will no longer get stuck on a rebalance operation that was falsely determined to be unsafe. This bug was introduced in v23.1.0. [#118343][#118343] -- CockroachDB will no longer spam the logs with `unable to get CPU capacity` errors every 10 seconds when running outside of a CPU cgroup. [#118672][#118672] -- [`AUTO CREATE STATS`](../v23.2/cost-based-optimizer.html#table-statistics) jobs could previously lead to growth in an internal system table resulting in slower job-system related queries. [#118942][#118942] -- Fixed a bug that caused an inscrutable error when a [sequence](../v23.2/create-sequence.html) name allocated by `SERIAL` conflicted with an existing type name. [#118947][#118947] -- Fixed an internal error with a message like: `LeafTxn ... incompatible with locking request` that occurs when performing an update under [`READ COMMITTED` isolation](../v23.2/read-committed.html) that cascades to a table with multiple other foreign keys. [#118931][#118931] -- Fixed a bug where [`ALTER PRIMARY KEY`](../v23.2/alter-table.html#alter-primary-key) could fail with an error `non-nullable column with no value! Index scanned ..` when validating recreated [secondary indexes]({% link v23.2/schema-design-indexes.md %}). [#118974][#118974] -- Fixed a bug where [`COMMENT ON`](../v23.2/comment-on.html) statements could fail with an `unexpected value` error if multiple `COMMENT` statements were running concurrently. [#119020][#119020] -- Previously, in certain cases, using virtual tables such as `crdb_internal.system_jobs` could result in the internal error `attempting to append refresh spans after the tracked timestamp has moved forward`. This is now fixed. The bug was introduced in CockroachDB v23.1. [#119184][#119184] -- Fixed a bug where operations on the `crdb_internal.leases` table could cause a node to become unavailable due to a deadlock in the leasing subsystem. [#119341][#119341] -- Fixed a bug where rangefeed resolved timestamps could get stuck, continually emitting the log message `pushing old intents failed: range barrier failed, range split`, typically following a [range merge](../v23.2/architecture/distribution-layer.html#range-merges). [#119541][#119541] -- Fixed a bug where running a [changefeed]({% link v23.2/change-data-capture-overview.md %}) that targets a table with a user-defined type column and with the [`envelope` option]({% link v23.2/create-changefeed.md %}#envelope) set to any value other than `wrapped` would cause a node panic due to a nil dereference. [#119738][#119738] -- Fixed a rare panic that could happen during a `pg_dump` import that contains a function that has a subquery in one of its arguments, like `SELECT addgeometrycolumn(...)`. Now, attempting to import a `pg_dump` with such a function results in an expected error. [#118612][#118612] -- Users with the [VIEWACTIVITY](../v23.2/security-reference/authorization.html#supported-privileges) privilege can now request statement bundles using `crdb_internal.request_statement_bundle` or through the DB Console [SQL Activity](../v23.2/security-reference/authorization.html#supported-privileges) page. [#118809][#118809] -- Fixed a bug in changefeed [webhook sinks](../v23.2/changefeed-sinks.html#webhook-sink) where the HTTP request body may not be initialized on retries, resulting in the error `http: ContentLength=... with Body length 0`. [#119496][#119496] -- Fixed a bug that caused internal errors when executing an [`EXPORT`](../v23.2/export.html) statement. [#119711][#119711] -- Fixed a bug that could lead to schema changes with a large number of descriptors doing full table scans on `system.leases`. [#119464][#119464] -- Fixed a bug where rangefeed resolved timestamps could get stuck, continually emitting the log message `pushing old intents failed: range barrier failed, range split`, typically following a range merge. This bug was introduced in v23.2.1. [#119702][#119702] -- Fixed a bug that occurred when using [`ALTER TABLE`](../v23.2/alter-table.html) to drop and re-add a [`CHECK`](../v23.2/check.html) constraint with the same name. [#120076][#120076] -- Fixed a bug that caused a slow memory leak that can accumulate when opening many new connections. The bug was present in v22.2.9+ and v23.1+ versions. [#120245][#120245] + 1. This may cause the rangefeed to prematurely emit a checkpoint before emitting writes at lower timestamps, which in turn may cause the [changefeed](../v23.2/how-does-an-enterprise-changefeed-work.html) to drop these events entirely, never emitting them. +- Decommissioning replicas that are part of a mis-replicated range will no longer get stuck on a rebalance operation that was falsely determined to be unsafe. This bug was introduced in v23.1.0. +- CockroachDB will no longer spam the logs with `unable to get CPU capacity` errors every 10 seconds when running outside of a CPU cgroup. +- [`AUTO CREATE STATS`](../v23.2/cost-based-optimizer.html#table-statistics) jobs could previously lead to growth in an internal system table resulting in slower job-system related queries. +- Fixed a bug that caused an inscrutable error when a [sequence](../v23.2/create-sequence.html) name allocated by `SERIAL` conflicted with an existing type name. +- Fixed an internal error with a message like: `LeafTxn ... incompatible with locking request` that occurs when performing an update under [`READ COMMITTED` isolation](../v23.2/read-committed.html) that cascades to a table with multiple other foreign keys. +- Fixed a bug where [`ALTER PRIMARY KEY`](../v23.2/alter-table.html#alter-primary-key) could fail with an error `non-nullable column with no value! Index scanned ..` when validating recreated [secondary indexes]({% link v23.2/schema-design-indexes.md %}). +- Fixed a bug where [`COMMENT ON`](../v23.2/comment-on.html) statements could fail with an `unexpected value` error if multiple `COMMENT` statements were running concurrently. +- Previously, in certain cases, using virtual tables such as `crdb_internal.system_jobs` could result in the internal error `attempting to append refresh spans after the tracked timestamp has moved forward`. This is now fixed. The bug was introduced in CockroachDB v23.1. +- Fixed a bug where operations on the `crdb_internal.leases` table could cause a node to become unavailable due to a deadlock in the leasing subsystem. +- Fixed a bug where rangefeed resolved timestamps could get stuck, continually emitting the log message `pushing old intents failed: range barrier failed, range split`, typically following a [range merge](../v23.2/architecture/distribution-layer.html#range-merges). +- Fixed a bug where running a [changefeed]({% link v23.2/change-data-capture-overview.md %}) that targets a table with a user-defined type column and with the [`envelope` option]({% link v23.2/create-changefeed.md %}#envelope) set to any value other than `wrapped` would cause a node panic due to a nil dereference. +- Fixed a rare panic that could happen during a `pg_dump` import that contains a function that has a subquery in one of its arguments, like `SELECT addgeometrycolumn(...)`. Now, attempting to import a `pg_dump` with such a function results in an expected error. +- Users with the [VIEWACTIVITY](../v23.2/security-reference/authorization.html#supported-privileges) privilege can now request statement bundles using `crdb_internal.request_statement_bundle` or through the DB Console [SQL Activity](../v23.2/security-reference/authorization.html#supported-privileges) page. +- Fixed a bug in changefeed [webhook sinks](../v23.2/changefeed-sinks.html#webhook-sink) where the HTTP request body may not be initialized on retries, resulting in the error `http: ContentLength=... with Body length 0`. +- Fixed a bug that caused internal errors when executing an [`EXPORT`](../v23.2/export.html) statement. +- Fixed a bug that could lead to schema changes with a large number of descriptors doing full table scans on `system.leases`. +- Fixed a bug where rangefeed resolved timestamps could get stuck, continually emitting the log message `pushing old intents failed: range barrier failed, range split`, typically following a range merge. This bug was introduced in v23.2.1. +- Fixed a bug that occurred when using [`ALTER TABLE`](../v23.2/alter-table.html) to drop and re-add a [`CHECK`](../v23.2/check.html) constraint with the same name. +- Fixed a bug that caused a slow memory leak that can accumulate when opening many new connections. The bug was present in v22.2.9+ and v23.1+ versions.

Contributors

This release includes 118 merged PRs by 42 authors. - -[#117741]: https://github.com/cockroachdb/cockroach/pull/117741 -[#118343]: https://github.com/cockroachdb/cockroach/pull/118343 -[#118413]: https://github.com/cockroachdb/cockroach/pull/118413 -[#118612]: https://github.com/cockroachdb/cockroach/pull/118612 -[#118672]: https://github.com/cockroachdb/cockroach/pull/118672 -[#118703]: https://github.com/cockroachdb/cockroach/pull/118703 -[#118764]: https://github.com/cockroachdb/cockroach/pull/118764 -[#118805]: https://github.com/cockroachdb/cockroach/pull/118805 -[#118809]: https://github.com/cockroachdb/cockroach/pull/118809 -[#118831]: https://github.com/cockroachdb/cockroach/pull/118831 -[#118847]: https://github.com/cockroachdb/cockroach/pull/118847 -[#118860]: https://github.com/cockroachdb/cockroach/pull/118860 -[#118896]: https://github.com/cockroachdb/cockroach/pull/118896 -[#118931]: https://github.com/cockroachdb/cockroach/pull/118931 -[#118933]: https://github.com/cockroachdb/cockroach/pull/118933 -[#118942]: https://github.com/cockroachdb/cockroach/pull/118942 -[#118947]: https://github.com/cockroachdb/cockroach/pull/118947 -[#118974]: https://github.com/cockroachdb/cockroach/pull/118974 -[#118994]: https://github.com/cockroachdb/cockroach/pull/118994 -[#119020]: https://github.com/cockroachdb/cockroach/pull/119020 -[#119184]: https://github.com/cockroachdb/cockroach/pull/119184 -[#119234]: https://github.com/cockroachdb/cockroach/pull/119234 -[#119259]: https://github.com/cockroachdb/cockroach/pull/119259 -[#119341]: https://github.com/cockroachdb/cockroach/pull/119341 -[#119371]: https://github.com/cockroachdb/cockroach/pull/119371 -[#119399]: https://github.com/cockroachdb/cockroach/pull/119399 -[#119464]: https://github.com/cockroachdb/cockroach/pull/119464 -[#119496]: https://github.com/cockroachdb/cockroach/pull/119496 -[#119541]: https://github.com/cockroachdb/cockroach/pull/119541 -[#119601]: https://github.com/cockroachdb/cockroach/pull/119601 -[#119702]: https://github.com/cockroachdb/cockroach/pull/119702 -[#119711]: https://github.com/cockroachdb/cockroach/pull/119711 -[#119738]: https://github.com/cockroachdb/cockroach/pull/119738 -[#119768]: https://github.com/cockroachdb/cockroach/pull/119768 -[#120076]: https://github.com/cockroachdb/cockroach/pull/120076 -[#120245]: https://github.com/cockroachdb/cockroach/pull/120245 diff --git a/src/current/_includes/releases/v23.2/v23.2.4.md b/src/current/_includes/releases/v23.2/v23.2.4.md index f6b48661f8d..b89b9ae128b 100644 --- a/src/current/_includes/releases/v23.2/v23.2.4.md +++ b/src/current/_includes/releases/v23.2/v23.2.4.md @@ -6,26 +6,26 @@ Release Date: April 11, 2024

SQL language changes

-- Mutation statements such as [`UPDATE`](../v23.2/update.html) and [`DELETE`](../v23.2/delete.html) as well as locking statements such as [`SELECT FOR UPDATE`](../v23.2/select-for-update.html) are not allowed in [read-only transactions](../v23.2/set-transaction.html#parameters) or [`AS OF SYSTEM TIME` transactions](../v23.2/set-transaction.html#parameters). Previously, a bug existed where mutation statements and locking statements in implicit single-statement transactions using AS OF SYSTEM TIME were allowed. [#120158][#120158] -- The new cluster setting [`sql.stats.virtual_computed_columns.enabled`](../v23.2/cluster-settings.html#setting-sql-stats-virtual-computed-columns-enabled), when enabled, allows the collection of [table statistics](../v23.2/show-statistics.html) on [virtual computed columns](../v23.2/computed-columns.html). [#120933][#120933] +- Mutation statements such as [`UPDATE`](../v23.2/update.html) and [`DELETE`](../v23.2/delete.html) as well as locking statements such as [`SELECT FOR UPDATE`](../v23.2/select-for-update.html) are not allowed in [read-only transactions](../v23.2/set-transaction.html#parameters) or [`AS OF SYSTEM TIME` transactions](../v23.2/set-transaction.html#parameters). Previously, a bug existed where mutation statements and locking statements in implicit single-statement transactions using AS OF SYSTEM TIME were allowed. +- The new cluster setting [`sql.stats.virtual_computed_columns.enabled`](../v23.2/cluster-settings.html#setting-sql-stats-virtual-computed-columns-enabled), when enabled, allows the collection of [table statistics](../v23.2/show-statistics.html) on [virtual computed columns](../v23.2/computed-columns.html). - The new [session variable](../v23.2/session-variables.html) `optimizer_use_virtual_computed_column_stats`, when enabled, configures the [cost-based optimizer](../v23.2/cost-based-optimizer.html) to use [table statistics](../v23.2/show-statistics.html) on [virtual computed columns](../v23.2/computed-columns.html). [#121329]

DB Console changes

-- Fixed an issue where clusters with multiple [stores](../v23.2/cockroach-start.html#store) per node could list inaccurate region and node information on the [**Databases** page](../v23.2/ui-databases-page.html#databases). [#120212][#120212] -- Users will no longer see [views](../v23.2/views.html) displayed on the [**Databases** page](../v23.2/ui-databases-page.html#databases). Previously views would be listed with no information, only displaying errors. [#120214][#120214] +- Fixed an issue where clusters with multiple [stores](../v23.2/cockroach-start.html#store) per node could list inaccurate region and node information on the [**Databases** page](../v23.2/ui-databases-page.html#databases). +- Users will no longer see [views](../v23.2/views.html) displayed on the [**Databases** page](../v23.2/ui-databases-page.html#databases). Previously views would be listed with no information, only displaying errors.

Bug fixes

-- Previously, on long-running [sessions](../v23.2/show-sessions.html) that issue many (hundreds of thousands or more) [transactions](../v23.2/transactions.html), CockroachDB's internal memory accounting system, the limit for which is configured via the [`--max-sql-memory` flag](../v23.2/cockroach-start.html#general)) could leak. This bug, in turn, could result in the error message `"root: memory budget exceeded"` for other queries. The bug was present in v23.2.3 and is now fixed. [#121875][#121875] -- Previously, [altering a table's locality](../v23.2/alter-table.html#set-locality) from [`REGIONAL BY ROW`](../v23.2/alter-table.html#set-the-table-locality-to-regional-by-row) to [`REGIONAL BY TABLE`](../v23.2/alter-table.html#regional-by-table) could cause [leaseholders](../v23.2/architecture/replication-layer.html#leases) to never move to the [database's primary region](../v23.2/alter-database.html#set-primary-region). This is now fixed. [#118794][#118794] -- A user with the [`VIEWACTIVITYREDACTED` privilege](../v23.2/security-reference/authorization.html#privileges) can no longer see constants inside of queries that originate from other users in the [`SHOW SESSIONS` result](../v23.2/show-sessions.html#response). Previously, this redaction did not occur. [#119884][#119884] -- Previously, the [`SHOW STATEMENTS`](../v23.2/show-statements.html) and the [`SHOW QUERIES`](../v23.2/show-statements.html#aliases) commands incorrectly required the user to have the [`VIEWACTIVITY` or `VIEWACTIVITYREDACTED` privilege](../v23.2/security-reference/authorization.html#privileges). However, a user always should be able to view their own queries, even without these privileges. This is now fixed. [#119884][#119884] -- Fixed a bug where [`RESTORE`](../v23.2/restore.html) on certain [`BACKUP`s](../v23.2/backup.html) would open a very large number of connections to the backup storage provider. [#119883][#119883] -- Fixed a bug that occurred when using [`ALTER TABLE`](../v23.2/alter-table.html) to [drop](../v23.2/alter-table.html#drop-constraint) and [add](../v23.2/alter-table.html#add-constraint) back a [`CHECK` constraint](../v23.2/check.html) with the same name. [#120075][#120075] -- Fixed a bug in which it was possible to set [session variable](../v23.2/session-variables.html) `transaction_read_only` to `false` during an [`AS OF SYSTEM TIME` transaction](../v23.2/set-transaction.html#parameters). [#120158][#120158] -- Fixed a bug where some files were not closed when inspecting [backup metadata](../v23.2/backup-architecture.html#metadata-writing-phase) during [`BACKUP`](../v23.2/backup.html) and [`RESTORE`](../v23.2/restore.html). [#119635][#119635] -- Fixed an intermittent page crash on the [**Schema Insights**](../cockroachcloud/insights-page.html#schema-insights-tab) view. [#120210][#120210] +- Previously, on long-running [sessions](../v23.2/show-sessions.html) that issue many (hundreds of thousands or more) [transactions](../v23.2/transactions.html), CockroachDB's internal memory accounting system, the limit for which is configured via the [`--max-sql-memory` flag](../v23.2/cockroach-start.html#general)) could leak. This bug, in turn, could result in the error message `"root: memory budget exceeded"` for other queries. The bug was present in v23.2.3 and is now fixed. +- Previously, [altering a table's locality](../v23.2/alter-table.html#set-locality) from [`REGIONAL BY ROW`](../v23.2/alter-table.html#set-the-table-locality-to-regional-by-row) to [`REGIONAL BY TABLE`](../v23.2/alter-table.html#regional-by-table) could cause [leaseholders](../v23.2/architecture/replication-layer.html#leases) to never move to the [database's primary region](../v23.2/alter-database.html#set-primary-region). This is now fixed. +- A user with the [`VIEWACTIVITYREDACTED` privilege](../v23.2/security-reference/authorization.html#privileges) can no longer see constants inside of queries that originate from other users in the [`SHOW SESSIONS` result](../v23.2/show-sessions.html#response). Previously, this redaction did not occur. +- Previously, the [`SHOW STATEMENTS`](../v23.2/show-statements.html) and the [`SHOW QUERIES`](../v23.2/show-statements.html#aliases) commands incorrectly required the user to have the [`VIEWACTIVITY` or `VIEWACTIVITYREDACTED` privilege](../v23.2/security-reference/authorization.html#privileges). However, a user always should be able to view their own queries, even without these privileges. This is now fixed. +- Fixed a bug where [`RESTORE`](../v23.2/restore.html) on certain [`BACKUP`s](../v23.2/backup.html) would open a very large number of connections to the backup storage provider. +- Fixed a bug that occurred when using [`ALTER TABLE`](../v23.2/alter-table.html) to [drop](../v23.2/alter-table.html#drop-constraint) and [add](../v23.2/alter-table.html#add-constraint) back a [`CHECK` constraint](../v23.2/check.html) with the same name. +- Fixed a bug in which it was possible to set [session variable](../v23.2/session-variables.html) `transaction_read_only` to `false` during an [`AS OF SYSTEM TIME` transaction](../v23.2/set-transaction.html#parameters). +- Fixed a bug where some files were not closed when inspecting [backup metadata](../v23.2/backup-architecture.html#metadata-writing-phase) during [`BACKUP`](../v23.2/backup.html) and [`RESTORE`](../v23.2/restore.html). +- Fixed an intermittent page crash on the [**Schema Insights**](../cockroachcloud/insights-page.html#schema-insights-tab) view.
@@ -34,23 +34,3 @@ Release Date: April 11, 2024 This release includes 65 merged PRs by 37 authors
- -[#118794]: https://github.com/cockroachdb/cockroach/pull/118794 -[#119635]: https://github.com/cockroachdb/cockroach/pull/119635 -[#119768]: https://github.com/cockroachdb/cockroach/pull/119768 -[#119828]: https://github.com/cockroachdb/cockroach/pull/119828 -[#119854]: https://github.com/cockroachdb/cockroach/pull/119854 -[#119883]: https://github.com/cockroachdb/cockroach/pull/119883 -[#119884]: https://github.com/cockroachdb/cockroach/pull/119884 -[#119946]: https://github.com/cockroachdb/cockroach/pull/119946 -[#120011]: https://github.com/cockroachdb/cockroach/pull/120011 -[#120075]: https://github.com/cockroachdb/cockroach/pull/120075 -[#120158]: https://github.com/cockroachdb/cockroach/pull/120158 -[#120210]: https://github.com/cockroachdb/cockroach/pull/120210 -[#120212]: https://github.com/cockroachdb/cockroach/pull/120212 -[#120214]: https://github.com/cockroachdb/cockroach/pull/120214 -[#120243]: https://github.com/cockroachdb/cockroach/pull/120243 -[#120396]: https://github.com/cockroachdb/cockroach/pull/120396 -[#120933]: https://github.com/cockroachdb/cockroach/pull/120933 -[#121329]: https://github.com/cockroachdb/cockroach/pull/121329 -[#121875]: https://github.com/cockroachdb/cockroach/pull/121875 diff --git a/src/current/_includes/releases/v23.2/v23.2.5.md b/src/current/_includes/releases/v23.2/v23.2.5.md index a5fc11c5696..e52b3bcb768 100644 --- a/src/current/_includes/releases/v23.2/v23.2.5.md +++ b/src/current/_includes/releases/v23.2/v23.2.5.md @@ -6,35 +6,35 @@ Release Date: May 7, 2024

SQL language changes

-- The new [cluster setting](../v23.2/cluster-settings.html) [`sql.stats.virtual_computed_columns.enabled`](../v23.2/cluster-settings.html#setting-sql-stats-virtual-computed-columns-enabled) enables collection of [table statistics](../v23.2/cost-based-optimizer.html#table-statistics) on virtual [computed columns](../v23.2/computed-columns.html). [#120923][#120923] -- The new [session variable](../v23.2/session-variables.html) `optimizer_use_virtual_computed_column_stats` configures the [optimizer](../v23.2/cost-based-optimizer.html) to consider table statistics on virtual computed columns. [#121179][#121179] -- The new `FORCE_INVERTED_INDEX` [hint](../v23.2/indexes.html#selection) configures the [optimizer](../v23.2/cost-based-optimizer.html) to prefer a query plan scan over any inverted index of the hinted table. If no such query plan can be generated, an error is logged. [#122300][#122300] -- The [optimizer](../v23.2/cost-based-optimizer.html) can now plan constrained scans over [partial indexes](../v23.2/partial-indexes.html) in more cases, particularly on partial indexes with predicates referencing virtual [computed columns](../v23.2/cluster-settings.html#setting-sql-stats-virtual-computed-columns-enabled). [#123408][#123408] +- The new [cluster setting](../v23.2/cluster-settings.html) [`sql.stats.virtual_computed_columns.enabled`](../v23.2/cluster-settings.html#setting-sql-stats-virtual-computed-columns-enabled) enables collection of [table statistics](../v23.2/cost-based-optimizer.html#table-statistics) on virtual [computed columns](../v23.2/computed-columns.html). +- The new [session variable](../v23.2/session-variables.html) `optimizer_use_virtual_computed_column_stats` configures the [optimizer](../v23.2/cost-based-optimizer.html) to consider table statistics on virtual computed columns. +- The new `FORCE_INVERTED_INDEX` [hint](../v23.2/indexes.html#selection) configures the [optimizer](../v23.2/cost-based-optimizer.html) to prefer a query plan scan over any inverted index of the hinted table. If no such query plan can be generated, an error is logged. +- The [optimizer](../v23.2/cost-based-optimizer.html) can now plan constrained scans over [partial indexes](../v23.2/partial-indexes.html) in more cases, particularly on partial indexes with predicates referencing virtual [computed columns](../v23.2/cluster-settings.html#setting-sql-stats-virtual-computed-columns-enabled).

Operational changes

-- A minimum [Raft](../v23.2/architecture/replication-layer.html#raft) scheduler concurrency is now enforced per [store](../v23.2/cockroach-start.html#storage) so that a node with many stores does not spread workers too thinly. This avoids high scheduler latency across [replicas](../v23.2/architecture/glossary.html#replica) on a store when load is imbalanced. [#120798][#120798] -- A [changefeed](../v23.2/change-data-capture-overview.html) optimization to reduce duplicates during aggregator restarts has been disabled due to poor performance. [#123596][#123596] +- A minimum [Raft](../v23.2/architecture/replication-layer.html#raft) scheduler concurrency is now enforced per [store](../v23.2/cockroach-start.html#storage) so that a node with many stores does not spread workers too thinly. This avoids high scheduler latency across [replicas](../v23.2/architecture/glossary.html#replica) on a store when load is imbalanced. +- A [changefeed](../v23.2/change-data-capture-overview.html) optimization to reduce duplicates during aggregator restarts has been disabled due to poor performance.

DB Console changes

-- The **Commit Latency** chart in the [Changefeed Dashboard](../v23.2/ui-cdc-dashboard.html) now aggregates by max instead of by sum for multi-node changefeeds. This more accurately reflects the amount of time for events to be acknowledged by the downstream sink. [#121235][#121235] +- The **Commit Latency** chart in the [Changefeed Dashboard](../v23.2/ui-cdc-dashboard.html) now aggregates by max instead of by sum for multi-node changefeeds. This more accurately reflects the amount of time for events to be acknowledged by the downstream sink.

Bug fixes

-- Fixed a slow memory leak when opening many new [connections](../v23.2/connect-to-the-database.html). This bug was introduced in v22.2.9 and v23.1.0. [#121055][#121055] -- Fixed a bug that occurred when using [`ALTER TABLE`](../v23.2/alter-table.html) to drop and re-add a [`CHECK` constraint](../v23.2/check.html) with the same name. [#121055][#121055] -- [Sequence](../v23.2/create-sequence.html) options `MINVALUE` and `MAXVALUE` automatically adjust to new types bounds. This mirrors the behavior of PostgreSQL. [#121309][#121309] -- Fixed a bug that could prevent timeseries graphs shown on the DB Console SQL Activity [Statement Details](../v23.2/ui-statements-page.html) page from rendering correctly when specifying a custom time range. [#121383][#121383] +- Fixed a slow memory leak when opening many new [connections](../v23.2/connect-to-the-database.html). This bug was introduced in v22.2.9 and v23.1.0. +- Fixed a bug that occurred when using [`ALTER TABLE`](../v23.2/alter-table.html) to drop and re-add a [`CHECK` constraint](../v23.2/check.html) with the same name. +- [Sequence](../v23.2/create-sequence.html) options `MINVALUE` and `MAXVALUE` automatically adjust to new types bounds. This mirrors the behavior of PostgreSQL. +- Fixed a bug that could prevent timeseries graphs shown on the DB Console SQL Activity [Statement Details](../v23.2/ui-statements-page.html) page from rendering correctly when specifying a custom time range. - Fixed a bug present since at least v21.1 that could lead to incorrect evaluation of an `IN` expression with: - [`INT2` or `INT4`](../v23.2/int.html) type on the left side, and - Values on the right side that are outside of the range of the left side. - [#121953][#121953] -- Fixed a leak in reported memory usage (not the actual memory usage) by the internal memory accounting system, the limit for which is configured via the [`--max-sql-memory`](../v23.2/cockroach-start.html#flags) flag when a long-running sessions issues hundreds of thousands or more [transactions](../v23.2/transactions.html). This reporting bug could cause `root: memory budget exceeded` errors for other queries. The bug was introduced in v23.1.17 and v23.2.3. [#121950][#121950] -- Fixed a bug introduced in v23.2.4 that could prevent collection of [table statistics](../v23.2/cost-based-optimizer.html#table-statistics) on tables that have on virtual [computed columns](../v23.2/computed-columns.html) of [user-defined type](../v23.2/create-type.html) when the newly-introduced [cluster setting](../v23.2/cluster-settings.html) [`sql.stats.virtual_computed_columns.enabled`](../v23.2/cluster-settings.html#setting-sql-stats-virtual-computed-columns-enabled) is set to `true` (defaults to `false`). The setting was introduced in v23.2.4 and is disabled by default. [#122319][#122319] -- Fixed a bug where a [`GRANT ... ON ALL TABLES`](../v23.2/grant.html) statement could fail if a sequence existed that did not support the [privilege](../v23.2/security-reference/authorization.html#privileges) being granted. [#122034][#122034] -- Fixed an existing bug where an unused value cannot be dropped from an [`ENUM`](../v23.2/enum.html) if the`ENUM` itself is referenced by a [user-defined function](../v23.2/user-defined-functions.html). A value can now be dropped from an`ENUM` as long as the value itself is not being referenced by any other data element, including a user-defined function. [#121237][#121237] + +- Fixed a leak in reported memory usage (not the actual memory usage) by the internal memory accounting system, the limit for which is configured via the [`--max-sql-memory`](../v23.2/cockroach-start.html#flags) flag when a long-running sessions issues hundreds of thousands or more [transactions](../v23.2/transactions.html). This reporting bug could cause `root: memory budget exceeded` errors for other queries. The bug was introduced in v23.1.17 and v23.2.3. +- Fixed a bug introduced in v23.2.4 that could prevent collection of [table statistics](../v23.2/cost-based-optimizer.html#table-statistics) on tables that have on virtual [computed columns](../v23.2/computed-columns.html) of [user-defined type](../v23.2/create-type.html) when the newly-introduced [cluster setting](../v23.2/cluster-settings.html) [`sql.stats.virtual_computed_columns.enabled`](../v23.2/cluster-settings.html#setting-sql-stats-virtual-computed-columns-enabled) is set to `true` (defaults to `false`). The setting was introduced in v23.2.4 and is disabled by default. +- Fixed a bug where a [`GRANT ... ON ALL TABLES`](../v23.2/grant.html) statement could fail if a sequence existed that did not support the [privilege](../v23.2/security-reference/authorization.html#privileges) being granted. +- Fixed an existing bug where an unused value cannot be dropped from an [`ENUM`](../v23.2/enum.html) if the`ENUM` itself is referenced by a [user-defined function](../v23.2/user-defined-functions.html). A value can now be dropped from an`ENUM` as long as the value itself is not being referenced by any other data element, including a user-defined function.
@@ -43,23 +43,3 @@ Release Date: May 7, 2024 This release includes 79 merged PRs by 33 authors.
- -[#120798]: https://github.com/cockroachdb/cockroach/pull/120798 -[#120923]: https://github.com/cockroachdb/cockroach/pull/120923 -[#121055]: https://github.com/cockroachdb/cockroach/pull/121055 -[#121179]: https://github.com/cockroachdb/cockroach/pull/121179 -[#121235]: https://github.com/cockroachdb/cockroach/pull/121235 -[#121237]: https://github.com/cockroachdb/cockroach/pull/121237 -[#121309]: https://github.com/cockroachdb/cockroach/pull/121309 -[#121383]: https://github.com/cockroachdb/cockroach/pull/121383 -[#121950]: https://github.com/cockroachdb/cockroach/pull/121950 -[#121953]: https://github.com/cockroachdb/cockroach/pull/121953 -[#122034]: https://github.com/cockroachdb/cockroach/pull/122034 -[#122162]: https://github.com/cockroachdb/cockroach/pull/122162 -[#122229]: https://github.com/cockroachdb/cockroach/pull/122229 -[#122300]: https://github.com/cockroachdb/cockroach/pull/122300 -[#122319]: https://github.com/cockroachdb/cockroach/pull/122319 -[#123408]: https://github.com/cockroachdb/cockroach/pull/123408 -[#123596]: https://github.com/cockroachdb/cockroach/pull/123596 -[622cd1c76]: https://github.com/cockroachdb/cockroach/commit/622cd1c76 -[894f152fa]: https://github.com/cockroachdb/cockroach/commit/894f152fa diff --git a/src/current/_includes/releases/v23.2/v23.2.6.md b/src/current/_includes/releases/v23.2/v23.2.6.md index 36dd1927e23..14fd22c8f44 100644 --- a/src/current/_includes/releases/v23.2/v23.2.6.md +++ b/src/current/_includes/releases/v23.2/v23.2.6.md @@ -11,67 +11,67 @@ Release Date: June 11, 2024 - The cluster settings `changefeed.frontier_checkpoint_frequency` and `low changefeed.frontier_highwater_lag_checkpoint_threshold` were set low, which resulted in the initial scan taking many multiples of the configured frequency to complete. - There were multiple target tables with significant differences in row counts in one changefeed. - The changefeed target tables were large with many ranges. - - The initial scan took a long time to complete (an hour or longer). [#123966][#123966] + - The initial scan took a long time to complete (an hour or longer).

SQL language changes

-- Updated the [`SHOW GRANTS`]({% link v23.2/show-grants.md %}) responses to display the `object_type` and `object_name`, which has replaced the `relation_name` column. [#122822][#122822] -- Added [external connection]({% link v23.2/create-external-connection.md %}) granted privileges to the [`SHOW GRANTS`]({% link v23.2/show-grants.md %}) command. [#122822][#122822] +- Updated the [`SHOW GRANTS`]({% link v23.2/show-grants.md %}) responses to display the `object_type` and `object_name`, which has replaced the `relation_name` column. +- Added [external connection]({% link v23.2/create-external-connection.md %}) granted privileges to the [`SHOW GRANTS`]({% link v23.2/show-grants.md %}) command. - Introduced three new [cluster settings]({% link v23.2/cluster-settings.md %}) for controlling table statistics forecasting: - [`sql.stats.forecasts.min_observations`]({% link v23.2/cluster-settings.md %}) is the minimum number of observed statistics required to produce a forecast. - [`sql.stats.forecasts.min_goodness_of_fit`]({% link v23.2/cluster-settings.md %}) is the minimum R² (goodness of fit) measurement required from all predictive models to use a forecast. - - [`sql.stats.forecasts.max_decrease`]({% link v23.2/cluster-settings.md %}) is the most a prediction can decrease, expressed as the minimum ratio of the prediction to the lowest prior observation. [#122458][#122458] -- Added a new [session setting]({% link v23.2/session-variables.md %}) `optimizer_use_improved_multi_column_selectivity_estimate`, which if enabled, causes the [optimizer]({% link v23.2/cost-based-optimizer.md %}) to use an improved selectivity estimate for multi-column predicates. This setting will default to `true` on v24.2 and later, and `false` on earlier versions. [#123100][#123100] -- The [optimizer]({% link v23.2/cost-based-optimizer.md %}) can now plan constrained scans over partial indexes in more cases, particularly on [partial indexes]({% link v23.2/partial-indexes.md %}) with predicates referencing [virtual computed columns]({% link v23.2/computed-columns.md %}). [#123469][#123469] -- The row-level TTL setting [`ttl_delete_rate_limit`]({% link v23.2/row-level-ttl.md %}) is now set to `100` by default, which sets the rate limit for deleting expired rows to `100`. [#124353][#124353] + - [`sql.stats.forecasts.max_decrease`]({% link v23.2/cluster-settings.md %}) is the most a prediction can decrease, expressed as the minimum ratio of the prediction to the lowest prior observation. +- Added a new [session setting]({% link v23.2/session-variables.md %}) `optimizer_use_improved_multi_column_selectivity_estimate`, which if enabled, causes the [optimizer]({% link v23.2/cost-based-optimizer.md %}) to use an improved selectivity estimate for multi-column predicates. This setting will default to `true` on v24.2 and later, and `false` on earlier versions. +- The [optimizer]({% link v23.2/cost-based-optimizer.md %}) can now plan constrained scans over partial indexes in more cases, particularly on [partial indexes]({% link v23.2/partial-indexes.md %}) with predicates referencing [virtual computed columns]({% link v23.2/computed-columns.md %}). +- The row-level TTL setting [`ttl_delete_rate_limit`]({% link v23.2/row-level-ttl.md %}) is now set to `100` by default, which sets the rate limit for deleting expired rows to `100`.

Operational changes

- Two new metrics track the status of the SQL Activity Update job, which pre-aggregates top K information within the SQL statistics subsytem and writes the results to `system.statement_activity` and `system.transaction_activity`: - `sql.stats.activity.updates.successful`: Number of successful updates made by the SQL activity updater job. - - `sql.stats.activity.update.latency`: The latency of updates made by the SQL activity updater job. Includes failed update attempts. [#123960][#123960] -- Added a new counter [metric]({% link v23.2/metrics.md %}), `sql.stats.flush.done_signals.ignored`, that tracks the number of times the SQL activity update job has ignored the signal that indicates that a flush has completed. This metric may indicate that the SQL activity update job is taking longer than expected to complete. [#123960][#123960] -- Added a new counter [metric]({% link v23.2/metrics.md %}), `sql.stats.activity.updates.failed`, to measure the number of update attempts made by the SQL activity update job that failed with errors. The SQL activity update job is used to pre-aggregate top K information within the SQL stats subsystem and write the results to `system.statement_activity` and `system.transaction_activity`. [#123960][#123960] -- Added a new counter [metric]({% link v23.2/metrics.md %}), `sql.stats.flush.fingerprint.count`, that tracks the number of unique statement and transaction fingerprints included in the SQL stats flush. [#123960][#123960] -- Added the `sql.pgwire.pipeline.count` [metric]({% link v23.2/metrics.md %}), which measures how many wire protocol commands have been received by the server, but have not yet started processing. This metric will only grow if clients are using the [pipeline mode](https://www.postgresql.org/docs/current/libpq-pipeline-mode.html) of the PostgreSQL wire protocol. [#124260][#124260] -- The `client_authentication_ok` and `client_session_end` events are now logged to the [`SESSIONS` log channel]({% link v23.2/logging-use-cases.md %}#sessions) unconditionally. Previously, these would only be logged if the `server.auth_log.sql_sessions.enabled` [cluster setting]({% link v23.2/cluster-settings.md %}) was set to `true`. All other `SESSIONS` log messages are still only logged if `server.auth_log.sql_sessions.enabled` or `server.auth_log.sql_connections.enabled` are set to `true`. To not show `client_authentication_ok` and `client_session_end` events, disable the `SESSIONS` log channel entirely. [#124374][#124374] + - `sql.stats.activity.update.latency`: The latency of updates made by the SQL activity updater job. Includes failed update attempts. +- Added a new counter [metric]({% link v23.2/metrics.md %}), `sql.stats.flush.done_signals.ignored`, that tracks the number of times the SQL activity update job has ignored the signal that indicates that a flush has completed. This metric may indicate that the SQL activity update job is taking longer than expected to complete. +- Added a new counter [metric]({% link v23.2/metrics.md %}), `sql.stats.activity.updates.failed`, to measure the number of update attempts made by the SQL activity update job that failed with errors. The SQL activity update job is used to pre-aggregate top K information within the SQL stats subsystem and write the results to `system.statement_activity` and `system.transaction_activity`. +- Added a new counter [metric]({% link v23.2/metrics.md %}), `sql.stats.flush.fingerprint.count`, that tracks the number of unique statement and transaction fingerprints included in the SQL stats flush. +- Added the `sql.pgwire.pipeline.count` [metric]({% link v23.2/metrics.md %}), which measures how many wire protocol commands have been received by the server, but have not yet started processing. This metric will only grow if clients are using the [pipeline mode](https://www.postgresql.org/docs/current/libpq-pipeline-mode.html) of the PostgreSQL wire protocol. +- The `client_authentication_ok` and `client_session_end` events are now logged to the [`SESSIONS` log channel]({% link v23.2/logging-use-cases.md %}#sessions) unconditionally. Previously, these would only be logged if the `server.auth_log.sql_sessions.enabled` [cluster setting]({% link v23.2/cluster-settings.md %}) was set to `true`. All other `SESSIONS` log messages are still only logged if `server.auth_log.sql_sessions.enabled` or `server.auth_log.sql_connections.enabled` are set to `true`. To not show `client_authentication_ok` and `client_session_end` events, disable the `SESSIONS` log channel entirely.

DB Console changes

-- The [**Database**]({% link v23.2/ui-databases-page.md %}) details and **Table** details pages now display the correct stats in the **Table Stats Last Updated**. [#122815][#122815] -- Viewing the [**SQL Activity**]({% link v23.2/ui-statements-page.md %}#active-executions-view) sorted by `% of Runtime` now correctly sorts entries by the runtime amount. [#123901][#123901] +- The [**Database**]({% link v23.2/ui-databases-page.md %}) details and **Table** details pages now display the correct stats in the **Table Stats Last Updated**. +- Viewing the [**SQL Activity**]({% link v23.2/ui-statements-page.md %}#active-executions-view) sorted by `% of Runtime` now correctly sorts entries by the runtime amount.

Bug fixes

-- Fixed a bug where [client certificate authentication]({% link v23.2/authentication.md %}#client-authentication) combined with [identity maps]({% link v23.2/sso-sql.md %}#identity-map-configuration) (`server.identity_map.configuration`) did not work. For the feature to work correctly, the client must specify a valid database user in the [connection string]({% link v23.2/connection-parameters.md %}). [#122749][#122749] -- Fixed a bug where the [row-based execution engine]({% link v23.2/architecture/sql-layer.md %}#query-execution) could drop a [`LIMIT`]({% link v23.2/limit-offset.md %}) clause when there was an [`ORDER BY`]({% link v23.2/order-by.md %}) clause, and the ordering was partially provided by an input operator. For example, this bug could occur with an ordering such as `ORDER BY a, b` when the scanned index was only ordered on column `a`. The impact of this bug was that more rows may have been returned than specified by the `LIMIT` clause. This bug is only present when not using the [vectorized execution engine]({% link v23.2/architecture/sql-layer.md %}#vectorized-query-execution); that is, when running with `SET vectorize = off;`. This bug has existed since CockroachDB v22.1. [#122836][#122836] -- Fixed a bug in the DB Console's [**Custom Chart**]({% link v23.2/ui-custom-chart-debug-page.md %}) tool where store-level metrics were displayed only for the first store ID associated with the node. Now data is displayed for all stores present on a node, and a single time series is shown for each store, rather than an aggregated value for all of the node's stores. This allows finer-grained monitoring of store-level metrics. [#122703][#122703] -- Fixed a bug where privileges granted for [external connections]({% link v23.2/create-external-connection.md %}) were incorrectly showing up in [`SHOW SYSTEM GRANTS`]({% link v23.2/show-system-grants.md %}), but were not useful because there was no associated object name. The privileges no longer appear in `SHOW SYSTEM GRANTS`. Instead, the `SHOW GRANTS ON EXTERNAL CONNECTION` statement should be used. [#122905][#122905] -- Statistics forecasts of zero rows can cause suboptimal [query plans]({% link v23.2/cost-based-optimizer.md %}). Forecasting will now avoid predicting zero rows for most downward-trending statistics. [#122458][#122458] +- Fixed a bug where [client certificate authentication]({% link v23.2/authentication.md %}#client-authentication) combined with [identity maps]({% link v23.2/sso-sql.md %}#identity-map-configuration) (`server.identity_map.configuration`) did not work. For the feature to work correctly, the client must specify a valid database user in the [connection string]({% link v23.2/connection-parameters.md %}). +- Fixed a bug where the [row-based execution engine]({% link v23.2/architecture/sql-layer.md %}#query-execution) could drop a [`LIMIT`]({% link v23.2/limit-offset.md %}) clause when there was an [`ORDER BY`]({% link v23.2/order-by.md %}) clause, and the ordering was partially provided by an input operator. For example, this bug could occur with an ordering such as `ORDER BY a, b` when the scanned index was only ordered on column `a`. The impact of this bug was that more rows may have been returned than specified by the `LIMIT` clause. This bug is only present when not using the [vectorized execution engine]({% link v23.2/architecture/sql-layer.md %}#vectorized-query-execution); that is, when running with `SET vectorize = off;`. This bug has existed since CockroachDB v22.1. +- Fixed a bug in the DB Console's [**Custom Chart**]({% link v23.2/ui-custom-chart-debug-page.md %}) tool where store-level metrics were displayed only for the first store ID associated with the node. Now data is displayed for all stores present on a node, and a single time series is shown for each store, rather than an aggregated value for all of the node's stores. This allows finer-grained monitoring of store-level metrics. +- Fixed a bug where privileges granted for [external connections]({% link v23.2/create-external-connection.md %}) were incorrectly showing up in [`SHOW SYSTEM GRANTS`]({% link v23.2/show-system-grants.md %}), but were not useful because there was no associated object name. The privileges no longer appear in `SHOW SYSTEM GRANTS`. Instead, the `SHOW GRANTS ON EXTERNAL CONNECTION` statement should be used. +- Statistics forecasts of zero rows can cause suboptimal [query plans]({% link v23.2/cost-based-optimizer.md %}). Forecasting will now avoid predicting zero rows for most downward-trending statistics. - Fixed a bug introduced in v23.2 that could cause a [PL/pgSQL]({% link v23.2/plpgsql.md %}) routine to return incorrect results when the routine included: - At least one parameter. - - An `IF` statement with one leak-proof branch and one branch with side effects. [#120742][#120742] -- Fixed a bug that could result in an internal error when attempting to create a [PL/pgSQL]({% link v23.2/plpgsql.md %}) routine using the (currently unsupported) `%ROWTYPE` syntax for a variable declaration. [#123010][#123010] -- Fixed a bug where a [`RESTORE`]({% link v23.2/restore.md %}) of a backup that itself contained a table created by the `RESTORE` of a table with an in-progress [`IMPORT INTO`]({% link v23.2/import-into.md %}) would fail to restore all rows. [#120543][#120543] -- Fixed a bug introduced in v23.2 that could cause a [PL/pgSQL]({% link v23.2/plpgsql.md %}) variable assignment to not be executed if the variable was never referenced after the assignment. [#123116][#123116] -- Fixed a bug where CockroachDB could run into an `attempting to append refresh spans after the tracked timestamp has moved forward` internal error in some edge cases. The bug had been present since v22.2. [#123150][#123150] -- A [job]({% link v23.2/show-jobs.md %}) will now log rather than fail if it reports an out-of-bound progress fraction. [#122964][#122964] -- Fixed a bug that would occur when [`ALTER TYPE ... DROP VALUE`]({% link v23.2/alter-type.md %}) is followed by [`DROP SCHEMA CASCADE ...`]({% link v23.2/drop-schema.md %}) in the same transaction. Previously, the `ALTER TYPE` schema change would get queued up to run at commit time, but by that point, the type may have already been removed, so the commit could fail. [#123576][#123576] -- Fixed a bug that could lead to descriptors with self references that pointed to incorrect descriptor IDs. Now, tables that see the error `invalid inbound foreign key ... origin table ID should be` or `invalid outbound foreign key ... reference table ID should be` will automatically repair post deserialization. [#123681][#123681] -- Fixed a bug where a failed [restore]({% link v23.2/restore.md %}) job could leave the system in a state where re-attempting the restore was not possible without manual intervention. [#123463][#123463] -- [Index recommendations]({% link v23.2/ui-databases-page.md %}#index-recommendations) in the [DB Console]({% link v23.2/ui-overview.md %}) will now function properly for indexes on tables or columns whose names contain quotation marks or whitespace. For example: `CREATE INDEX ON "my table" ("my col");`. [#122119][#122119] -- Fixed a crash introduced in v23.2.5 that could occur when planning [statistics collection]({% link v23.2/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) on a table with a [virtual computed column]({% link v23.2/computed-columns.md %}) using a user-defined type when the newly introduced [cluster setting]({% link v23.2/cluster-settings.md %}) `sql.stats.virtual_computed_columns.enabled` is set to `true`. (The setting was introduced in v23.2.4 and set to `false` by default.) [#124080][#124080] -- Added automated clean up and validation for [dropped roles]({% link v23.2/drop-role.md %}) inside descriptors. [#124670][#124670] -- Fixed a bug where [`DROP ROLE`]({% link v23.2/drop-role.md %}) and [`DROP USER`]({% link v23.2/drop-user.md %}) could leave references behind inside types, which could prevent [`SHOW GRANTS`]({% link v23.2/show-grants.md %}) from working. [#124668][#124668] -- Fixed a bug where a change to a [user-defined type]({% link v23.2/create-type.md %}) could cause queries against tables using that type to fail with the error `histogram.go:694: span must be fully contained in the bucket`. The change to the user-defined type could come directly from an [`ALTER TYPE`]({% link v23.2/alter-type.md %}) statement, or indirectly from an [`ALTER DATABASE ADD REGION`]({% link v23.2/alter-database.md %}#add-region) or [`DROP REGION`]({% link v23.2/alter-database.md %}#drop-region) statement (which implicitly change the `crdb_internal_region` type). This was present since user-defined types were introduced in v20.2. [#124854][#124854] + - An `IF` statement with one leak-proof branch and one branch with side effects. +- Fixed a bug that could result in an internal error when attempting to create a [PL/pgSQL]({% link v23.2/plpgsql.md %}) routine using the (currently unsupported) `%ROWTYPE` syntax for a variable declaration. +- Fixed a bug where a [`RESTORE`]({% link v23.2/restore.md %}) of a backup that itself contained a table created by the `RESTORE` of a table with an in-progress [`IMPORT INTO`]({% link v23.2/import-into.md %}) would fail to restore all rows. +- Fixed a bug introduced in v23.2 that could cause a [PL/pgSQL]({% link v23.2/plpgsql.md %}) variable assignment to not be executed if the variable was never referenced after the assignment. +- Fixed a bug where CockroachDB could run into an `attempting to append refresh spans after the tracked timestamp has moved forward` internal error in some edge cases. The bug had been present since v22.2. +- A [job]({% link v23.2/show-jobs.md %}) will now log rather than fail if it reports an out-of-bound progress fraction. +- Fixed a bug that would occur when [`ALTER TYPE ... DROP VALUE`]({% link v23.2/alter-type.md %}) is followed by [`DROP SCHEMA CASCADE ...`]({% link v23.2/drop-schema.md %}) in the same transaction. Previously, the `ALTER TYPE` schema change would get queued up to run at commit time, but by that point, the type may have already been removed, so the commit could fail. +- Fixed a bug that could lead to descriptors with self references that pointed to incorrect descriptor IDs. Now, tables that see the error `invalid inbound foreign key ... origin table ID should be` or `invalid outbound foreign key ... reference table ID should be` will automatically repair post deserialization. +- Fixed a bug where a failed [restore]({% link v23.2/restore.md %}) job could leave the system in a state where re-attempting the restore was not possible without manual intervention. +- [Index recommendations]({% link v23.2/ui-databases-page.md %}#index-recommendations) in the [DB Console]({% link v23.2/ui-overview.md %}) will now function properly for indexes on tables or columns whose names contain quotation marks or whitespace. For example: `CREATE INDEX ON "my table" ("my col");`. +- Fixed a crash introduced in v23.2.5 that could occur when planning [statistics collection]({% link v23.2/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) on a table with a [virtual computed column]({% link v23.2/computed-columns.md %}) using a user-defined type when the newly introduced [cluster setting]({% link v23.2/cluster-settings.md %}) `sql.stats.virtual_computed_columns.enabled` is set to `true`. (The setting was introduced in v23.2.4 and set to `false` by default.) +- Added automated clean up and validation for [dropped roles]({% link v23.2/drop-role.md %}) inside descriptors. +- Fixed a bug where [`DROP ROLE`]({% link v23.2/drop-role.md %}) and [`DROP USER`]({% link v23.2/drop-user.md %}) could leave references behind inside types, which could prevent [`SHOW GRANTS`]({% link v23.2/show-grants.md %}) from working. +- Fixed a bug where a change to a [user-defined type]({% link v23.2/create-type.md %}) could cause queries against tables using that type to fail with the error `histogram.go:694: span must be fully contained in the bucket`. The change to the user-defined type could come directly from an [`ALTER TYPE`]({% link v23.2/alter-type.md %}) statement, or indirectly from an [`ALTER DATABASE ADD REGION`]({% link v23.2/alter-database.md %}#add-region) or [`DROP REGION`]({% link v23.2/alter-database.md %}#drop-region) statement (which implicitly change the `crdb_internal_region` type). This was present since user-defined types were introduced in v20.2.

Performance improvements

-- More efficient [query plans]({% link v23.2/cost-based-optimizer.md %}) are now generated for queries with text similarity filters, for example, `text_col % 'foobar'`. These plans are generated if the `optimizer_use_trigram_similarity_optimization` [session setting]({% link v23.2/session-variables.md %}) is enabled. It is disabled by default. [#122753][#122753] -- The [optimizer]({% link v23.2/cost-based-optimizer.md %}) now costs [`distinct-on`]({% link v23.2/select-clause.md %}#eliminate-duplicate-rows) operators more accurately. It may produce more efficient query plans in some cases. [#122844][#122844] -- Added a new [session setting]({% link v23.2/session-variables.md %}) `optimizer_use_improved_zigzag_join_costing`. When enabled and when the [cluster setting]({% link v23.2/cluster-settings.md %}) `enable_zigzag_join` is also enabled, the cost of zigzag joins is updated such that a zigzag join will be chosen over a scan only if it produces fewer rows than a scan. [#123100][#123100] -- Improved the selectivity estimation of multi-column filters when the multi-column distinct count is high. This prevents the [optimizer]({% link v23.2/cost-based-optimizer.md %}) from choosing a bad query plan due to over-estimating the selectivity of a multi-column predicate. [#123100][#123100] -- Improved the efficiency of error handling in the [vectorized execution engine]({% link v23.2/vectorized-execution.md %}) to reduce the CPU overhead of statement timeout handling and reduce the potential for more statement timeouts. [#123502][#123502] +- More efficient [query plans]({% link v23.2/cost-based-optimizer.md %}) are now generated for queries with text similarity filters, for example, `text_col % 'foobar'`. These plans are generated if the `optimizer_use_trigram_similarity_optimization` [session setting]({% link v23.2/session-variables.md %}) is enabled. It is disabled by default. +- The [optimizer]({% link v23.2/cost-based-optimizer.md %}) now costs [`distinct-on`]({% link v23.2/select-clause.md %}#eliminate-duplicate-rows) operators more accurately. It may produce more efficient query plans in some cases. +- Added a new [session setting]({% link v23.2/session-variables.md %}) `optimizer_use_improved_zigzag_join_costing`. When enabled and when the [cluster setting]({% link v23.2/cluster-settings.md %}) `enable_zigzag_join` is also enabled, the cost of zigzag joins is updated such that a zigzag join will be chosen over a scan only if it produces fewer rows than a scan. +- Improved the selectivity estimation of multi-column filters when the multi-column distinct count is high. This prevents the [optimizer]({% link v23.2/cost-based-optimizer.md %}) from choosing a bad query plan due to over-estimating the selectivity of a multi-column predicate. +- Improved the efficiency of error handling in the [vectorized execution engine]({% link v23.2/vectorized-execution.md %}) to reduce the CPU overhead of statement timeout handling and reduce the potential for more statement timeouts.
@@ -80,42 +80,3 @@ Release Date: June 11, 2024 This release includes 115 merged PRs by 32 authors.
- -[#120543]: https://github.com/cockroachdb/cockroach/pull/120543 -[#120742]: https://github.com/cockroachdb/cockroach/pull/120742 -[#122119]: https://github.com/cockroachdb/cockroach/pull/122119 -[#122458]: https://github.com/cockroachdb/cockroach/pull/122458 -[#122703]: https://github.com/cockroachdb/cockroach/pull/122703 -[#122749]: https://github.com/cockroachdb/cockroach/pull/122749 -[#122753]: https://github.com/cockroachdb/cockroach/pull/122753 -[#122815]: https://github.com/cockroachdb/cockroach/pull/122815 -[#122822]: https://github.com/cockroachdb/cockroach/pull/122822 -[#122836]: https://github.com/cockroachdb/cockroach/pull/122836 -[#122844]: https://github.com/cockroachdb/cockroach/pull/122844 -[#122905]: https://github.com/cockroachdb/cockroach/pull/122905 -[#122964]: https://github.com/cockroachdb/cockroach/pull/122964 -[#123010]: https://github.com/cockroachdb/cockroach/pull/123010 -[#123067]: https://github.com/cockroachdb/cockroach/pull/123067 -[#123100]: https://github.com/cockroachdb/cockroach/pull/123100 -[#123116]: https://github.com/cockroachdb/cockroach/pull/123116 -[#123150]: https://github.com/cockroachdb/cockroach/pull/123150 -[#123374]: https://github.com/cockroachdb/cockroach/pull/123374 -[#123463]: https://github.com/cockroachdb/cockroach/pull/123463 -[#123469]: https://github.com/cockroachdb/cockroach/pull/123469 -[#123502]: https://github.com/cockroachdb/cockroach/pull/123502 -[#123576]: https://github.com/cockroachdb/cockroach/pull/123576 -[#123594]: https://github.com/cockroachdb/cockroach/pull/123594 -[#123681]: https://github.com/cockroachdb/cockroach/pull/123681 -[#123901]: https://github.com/cockroachdb/cockroach/pull/123901 -[#123960]: https://github.com/cockroachdb/cockroach/pull/123960 -[#123966]: https://github.com/cockroachdb/cockroach/pull/123966 -[#124071]: https://github.com/cockroachdb/cockroach/pull/124071 -[#124080]: https://github.com/cockroachdb/cockroach/pull/124080 -[#124083]: https://github.com/cockroachdb/cockroach/pull/124083 -[#124260]: https://github.com/cockroachdb/cockroach/pull/124260 -[#124298]: https://github.com/cockroachdb/cockroach/pull/124298 -[#124353]: https://github.com/cockroachdb/cockroach/pull/124353 -[#124374]: https://github.com/cockroachdb/cockroach/pull/124374 -[#124668]: https://github.com/cockroachdb/cockroach/pull/124668 -[#124670]: https://github.com/cockroachdb/cockroach/pull/124670 -[#124854]: https://github.com/cockroachdb/cockroach/pull/124854 diff --git a/src/current/_includes/releases/v23.2/v23.2.7.md b/src/current/_includes/releases/v23.2/v23.2.7.md index 08dc368650d..439521d6082 100644 --- a/src/current/_includes/releases/v23.2/v23.2.7.md +++ b/src/current/_includes/releases/v23.2/v23.2.7.md @@ -6,13 +6,13 @@ Release Date: July 2, 2024

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

-- [Changefeeds]({% link v23.2/change-data-capture-overview.md %}) can use the bulk oracle for planning, which distributes work evenly across all [replicas]({% link v23.2/architecture/reads-and-writes-overview.md %}#replica) in the locality filter, including followers if enabled. Set the `changefeed.random_replica_selection.enabled` [cluster setting]({% link v23.2/cluster-settings.md %}) to `true` to enable this planning behavior. To use the previous bin-packing oracle, set the cluster setting `changefeed.random_replica_selection.enabled` to `false`. [#124925][#124925] -- [`ALTER CHANGEFEED`]({% link v23.2/alter-changefeed.md %}) no longer removes the [CDC query]({% link v23.2/cdc-queries.md %}) when modifying changefeed properties. [#125437][#125437] +- [Changefeeds]({% link v23.2/change-data-capture-overview.md %}) can use the bulk oracle for planning, which distributes work evenly across all [replicas]({% link v23.2/architecture/reads-and-writes-overview.md %}#replica) in the locality filter, including followers if enabled. Set the `changefeed.random_replica_selection.enabled` [cluster setting]({% link v23.2/cluster-settings.md %}) to `true` to enable this planning behavior. To use the previous bin-packing oracle, set the cluster setting `changefeed.random_replica_selection.enabled` to `false`. +- [`ALTER CHANGEFEED`]({% link v23.2/alter-changefeed.md %}) no longer removes the [CDC query]({% link v23.2/cdc-queries.md %}) when modifying changefeed properties.

SQL language changes

-- Precision is no longer limited when encoding `geo` data types to JSON. [#124535][#124535] -- When the new `optimizer_push_offset_into_index_join` [session setting]({% link v23.2/set-vars.md %}) is enabled, the [optimizer]({% link v23.2/cost-based-optimizer.md %}) attempts to produce more efficient query plans by attempting to push offset expressions into index join expressions to produce more efficient query plans. [#124492][#124492] +- Precision is no longer limited when encoding `geo` data types to JSON. +- When the new `optimizer_push_offset_into_index_join` [session setting]({% link v23.2/set-vars.md %}) is enabled, the [optimizer]({% link v23.2/cost-based-optimizer.md %}) attempts to produce more efficient query plans by attempting to push offset expressions into index join expressions to produce more efficient query plans.

General changes

@@ -20,35 +20,35 @@ Release Date: July 2, 2024

Operational changes

-- Improved metrics related to [disk usage]({% link v23.2/ui-storage-dashboard.md %}#capacity-metrics) reporting for volumes that dynamically change their size over time. [#125107][#125107] +- Improved metrics related to [disk usage]({% link v23.2/ui-storage-dashboard.md %}#capacity-metrics) reporting for volumes that dynamically change their size over time.

Security changes

-- Improved the automated cleanup when dropping roles inside descriptors. [#124665][#124665] +- Improved the automated cleanup when dropping roles inside descriptors.

Bug fixes

-- Fixed a bug where a range with a replication factor of `1` to be scaled up to a replication factor of `2`. [#124487][#124487] -- Fixed a bug that could cause leases to thrash between nodes when perturbed with a replication factor of `1`. [#124487][#124487] -- Fixed a bug where, when the `ttl_row_stats_poll_interval` storage parameter is non-zero, the job to update row statistics for a table with [row-level TTL]({% link v23.2/row-level-ttl.md %}) enabled could be blocked from completing by the queries issued to update the row statistics. Now, if the job completes, these queries are cancelled, and the `jobs.row_level_ttl.total_rows` and `jobs.row_level_ttl.total_expired_rows` metrics will report 0 if the job finishes before the queries to update the row statistics complete. [#124626][#124626] -- Fixed a bug where the `results_buffer_size` [session setting]({% link v23.2/set-vars.md %}) could not be configured using the `options` query parameter in the connection string, but only as a top-level query parameter. This variable cannot be changed by using the `SET` command after the session begins. [#124774][#124774] -- Fixed a bug where dropping a role or user could leave references behind inside types. This in turn could prevent the [`SHOW GRANTS`]({% link v23.2/show-grants.md %}) command from working correctly. [#124644][#124644] - -- Fixed a bug where the [`ALTER TABLE ... ALTER PRIMARY KEY`]({% link v23.2/alter-table.md %}#alter-primary-key) command could hang for a table if its indexes are referred to by views or functions using the `force syntax` syntax. [#124569][#124569] -- Fixed a bug where the [`SHOW TYPES`]({% link v23.2/show-types.md %}) command omitted user-defined composite types. This bug was introduced in v23.1. [#124816][#124816] -- Fixed a bug where if a column name that contains UTF-8 characters is referenced in the `STORING()` clause of the [`CREATE INDEX`]({% link v23.2/create-index.md %}) command, the [declarative schema changer]({% link v23.2/online-schema-changes.md %}) cannot detect whether the column is already handled by an existing index. [#125211][#125211] -- Fixed a bug where the [declarative schema changer]({% link v23.2/online-schema-changes.md %}) erroneously includes virtual columns that are referenced in the `STORING()` clause of the [`CREATE INDEX`]({% link v23.2/create-index.md %}) command. [#125211][#125211] -- Fixed a bug introduced in v20.2, where a change to a user-defined type could cause queries against tables using that type to fail with the error like `histogram.go: span must be fully contained in the bucket`. This bug could occur if the change was from an [`ALTER TABLE`]({% link v23.2/alter-table.md %}) command or from an [`ALTER DATABASE ... ADD REGION`]({% link v23.2/alter-database.md %}) or [`ALTER DATABASE ... DROP REGION`]({% link v23.2/alter-database.md %}) command, which implicitly change the non-public `crdb_internal_region` type. [#124853][#124853] -- Fixed a bug where telemetry logs could emit the same statement fingerprint ID for different SQL statements. [#125043][#125043] -- Fixed a bug where adding a column with a default value of an empty array could fail. [#125326][#125326] -- Fixed a bug where the [declarative schema changer]({% link v23.2/online-schema-changes.md %}) could erroneously succeed despite a violation of an `ALTER TABLE ... ADD CONSTRAINT UNIQUE` constraint. Now such a violation results in an error message with the error code `42601`. [#125418][#125418] -- Fixed a [changefeed]({% link v23.2/create-and-configure-changefeeds.md %}) panic in v24.1, v23.2, and v23.1 when the [cluster setting]({% link v23.2/cluster-settings.md %}) `changefeed.aggregator.flush_jitter` [cluster setting]({% link v23.2/cluster-settings.md %}) is configured and a changefeed's [`min_checkpoint_frequency`]({% link v23.2/create-changefeed.md %}#min-checkpoint-frequency) option is set to zero. [#125469][#125469] -- Fixed a bug where the public schema was erroneously created with its owner set to the `admin` role instead of the database owner. Ownership of the public schema can be altered after the schema is created. [#125535][#125535] -- Fixed a bug introduced in v23.2.0 where inserting rows into a [`REGIONAL BY ROW` table]({% link v23.2/table-localities.md %}#regional-by-row-tables) could cause an internal error if the source was a `VALUES` clause with a single row and at least one boolean expression. [#126208][#126208] +- Fixed a bug where a range with a replication factor of `1` to be scaled up to a replication factor of `2`. +- Fixed a bug that could cause leases to thrash between nodes when perturbed with a replication factor of `1`. +- Fixed a bug where, when the `ttl_row_stats_poll_interval` storage parameter is non-zero, the job to update row statistics for a table with [row-level TTL]({% link v23.2/row-level-ttl.md %}) enabled could be blocked from completing by the queries issued to update the row statistics. Now, if the job completes, these queries are cancelled, and the `jobs.row_level_ttl.total_rows` and `jobs.row_level_ttl.total_expired_rows` metrics will report 0 if the job finishes before the queries to update the row statistics complete. +- Fixed a bug where the `results_buffer_size` [session setting]({% link v23.2/set-vars.md %}) could not be configured using the `options` query parameter in the connection string, but only as a top-level query parameter. This variable cannot be changed by using the `SET` command after the session begins. +- Fixed a bug where dropping a role or user could leave references behind inside types. This in turn could prevent the [`SHOW GRANTS`]({% link v23.2/show-grants.md %}) command from working correctly. + +- Fixed a bug where the [`ALTER TABLE ... ALTER PRIMARY KEY`]({% link v23.2/alter-table.md %}#alter-primary-key) command could hang for a table if its indexes are referred to by views or functions using the `force syntax` syntax. +- Fixed a bug where the [`SHOW TYPES`]({% link v23.2/show-types.md %}) command omitted user-defined composite types. This bug was introduced in v23.1. +- Fixed a bug where if a column name that contains UTF-8 characters is referenced in the `STORING()` clause of the [`CREATE INDEX`]({% link v23.2/create-index.md %}) command, the [declarative schema changer]({% link v23.2/online-schema-changes.md %}) cannot detect whether the column is already handled by an existing index. +- Fixed a bug where the [declarative schema changer]({% link v23.2/online-schema-changes.md %}) erroneously includes virtual columns that are referenced in the `STORING()` clause of the [`CREATE INDEX`]({% link v23.2/create-index.md %}) command. +- Fixed a bug introduced in v20.2, where a change to a user-defined type could cause queries against tables using that type to fail with the error like `histogram.go: span must be fully contained in the bucket`. This bug could occur if the change was from an [`ALTER TABLE`]({% link v23.2/alter-table.md %}) command or from an [`ALTER DATABASE ... ADD REGION`]({% link v23.2/alter-database.md %}) or [`ALTER DATABASE ... DROP REGION`]({% link v23.2/alter-database.md %}) command, which implicitly change the non-public `crdb_internal_region` type. +- Fixed a bug where telemetry logs could emit the same statement fingerprint ID for different SQL statements. +- Fixed a bug where adding a column with a default value of an empty array could fail. +- Fixed a bug where the [declarative schema changer]({% link v23.2/online-schema-changes.md %}) could erroneously succeed despite a violation of an `ALTER TABLE ... ADD CONSTRAINT UNIQUE` constraint. Now such a violation results in an error message with the error code `42601`. +- Fixed a [changefeed]({% link v23.2/create-and-configure-changefeeds.md %}) panic in v24.1, v23.2, and v23.1 when the [cluster setting]({% link v23.2/cluster-settings.md %}) `changefeed.aggregator.flush_jitter` [cluster setting]({% link v23.2/cluster-settings.md %}) is configured and a changefeed's [`min_checkpoint_frequency`]({% link v23.2/create-changefeed.md %}#min-checkpoint-frequency) option is set to zero. +- Fixed a bug where the public schema was erroneously created with its owner set to the `admin` role instead of the database owner. Ownership of the public schema can be altered after the schema is created. +- Fixed a bug introduced in v23.2.0 where inserting rows into a [`REGIONAL BY ROW` table]({% link v23.2/table-localities.md %}#regional-by-row-tables) could cause an internal error if the source was a `VALUES` clause with a single row and at least one boolean expression.

Performance improvements

-- The optimizer now generates more efficient query plans for some queries with [`OFFSET`]({% link v23.2/limit-offset.md %}#offset) clauses. [#124492][#124492] +- The optimizer now generates more efficient query plans for some queries with [`OFFSET`]({% link v23.2/limit-offset.md %}#offset) clauses.
@@ -56,26 +56,3 @@ Release Date: July 2, 2024 This release includes 77 merged PRs by 30 authors.
-[#122704]: https://github.com/cockroachdb/cockroach/pull/122704 -[#124487]: https://github.com/cockroachdb/cockroach/pull/124487 -[#124492]: https://github.com/cockroachdb/cockroach/pull/124492 -[#124535]: https://github.com/cockroachdb/cockroach/pull/124535 -[#124569]: https://github.com/cockroachdb/cockroach/pull/124569 -[#124626]: https://github.com/cockroachdb/cockroach/pull/124626 -[#124644]: https://github.com/cockroachdb/cockroach/pull/124644 -[#124665]: https://github.com/cockroachdb/cockroach/pull/124665 -[#124774]: https://github.com/cockroachdb/cockroach/pull/124774 -[#124800]: https://github.com/cockroachdb/cockroach/pull/124800 -[#124816]: https://github.com/cockroachdb/cockroach/pull/124816 -[#124853]: https://github.com/cockroachdb/cockroach/pull/124853 -[#124925]: https://github.com/cockroachdb/cockroach/pull/124925 -[#125043]: https://github.com/cockroachdb/cockroach/pull/125043 -[#125107]: https://github.com/cockroachdb/cockroach/pull/125107 -[#125211]: https://github.com/cockroachdb/cockroach/pull/125211 -[#125326]: https://github.com/cockroachdb/cockroach/pull/125326 -[#125418]: https://github.com/cockroachdb/cockroach/pull/125418 -[#125437]: https://github.com/cockroachdb/cockroach/pull/125437 -[#125469]: https://github.com/cockroachdb/cockroach/pull/125469 -[#125535]: https://github.com/cockroachdb/cockroach/pull/125535 -[#125543]: https://github.com/cockroachdb/cockroach/pull/125543 -[#126208]: https://github.com/cockroachdb/cockroach/pull/126208 diff --git a/src/current/_includes/releases/v23.2/v23.2.8.md b/src/current/_includes/releases/v23.2/v23.2.8.md index f7fe6e684d3..a943e21d319 100644 --- a/src/current/_includes/releases/v23.2/v23.2.8.md +++ b/src/current/_includes/releases/v23.2/v23.2.8.md @@ -6,12 +6,12 @@ Release Date: July 15, 2024

Performance improvements

-- Updated the [replica allocator]({% link v23.2/architecture/replication-layer.md %}) with a small performance win for very large clusters. [#126918](https://github.com/cockroachdb/cockroach/pull/#126918) -- Updated the [gossip layer]({% link v23.2/architecture/distribution-layer.md %}) to avoid unnecessary mutex contention. [#126919](https://github.com/cockroachdb/cockroach/pull/126919), [#126920](https://github.com/cockroachdb/cockroach/pull/126920) +- Updated the [replica allocator]({% link v23.2/architecture/replication-layer.md %}) with a small performance win for very large clusters. +- Updated the [gossip layer]({% link v23.2/architecture/distribution-layer.md %}) to avoid unnecessary mutex contention.,

Bug fixes

-- Fixed a bug where the `disallow_full_table_scans` [session variable]({% link v23.2/session-variables.md %}#disallow-full-table-scans) was not working for tables with [hash-sharded indexes]({% link v23.2/hash-sharded-indexes.md %}). [#126700](https://github.com/cockroachdb/cockroach/pull/126700) +- Fixed a bug where the `disallow_full_table_scans` [session variable]({% link v23.2/session-variables.md %}#disallow-full-table-scans) was not working for tables with [hash-sharded indexes]({% link v23.2/hash-sharded-indexes.md %}).
diff --git a/src/current/_includes/releases/v23.2/v23.2.9.md b/src/current/_includes/releases/v23.2/v23.2.9.md index e6df91ec36e..5988f9f7f32 100644 --- a/src/current/_includes/releases/v23.2/v23.2.9.md +++ b/src/current/_includes/releases/v23.2/v23.2.9.md @@ -6,38 +6,38 @@ Release Date: August 1, 2024

SQL language changes

-- [`EXPLAIN ANALYZE`]({% link v23.2/explain-analyze.md %}) statements are now supported when executed via Cloud Console [SQL shell]({% link cockroachcloud/sql-shell.md %}). [#125562][#125562] -- Added the [`sql.auth.grant_option_inheritance.enabled` cluster setting]({% link v23.2/cluster-settings.md %}#setting-sql-auth-grant-option-inheritance-enabled). The default value is `true`, which maintains consistency with CockroachDB's previous behavior: users granted a privilege with [`WITH GRANT OPTION`]({% link v23.2/grant.md %}) can in turn grant that privilege to others. When `sql.auth.grant_option_inheritance.enabled` is set to `false`, the `GRANT OPTION` is not inherited through role membership, thereby preventing descendant roles from granting the privilege to others. However, the privilege itself continues to be inherited through role membership. [#126298][#126298] +- [`EXPLAIN ANALYZE`]({% link v23.2/explain-analyze.md %}) statements are now supported when executed via Cloud Console [SQL shell]({% link cockroachcloud/sql-shell.md %}). +- Added the [`sql.auth.grant_option_inheritance.enabled` cluster setting]({% link v23.2/cluster-settings.md %}#setting-sql-auth-grant-option-inheritance-enabled). The default value is `true`, which maintains consistency with CockroachDB's previous behavior: users granted a privilege with [`WITH GRANT OPTION`]({% link v23.2/grant.md %}) can in turn grant that privilege to others. When `sql.auth.grant_option_inheritance.enabled` is set to `false`, the `GRANT OPTION` is not inherited through role membership, thereby preventing descendant roles from granting the privilege to others. However, the privilege itself continues to be inherited through role membership.

Operational changes

-- `crdb_internal.cluster_execution_insights.txt` and `crdb_internal.cluster_txn_execution_insights.txt` have been removed from the [debug zip]({% link v23.2/cockroach-debug-zip.md %}). These files contained cluster-wide insights for statements and transactions. Users can still rely on the [per-node execution]({% link v23.2/cockroach-debug-zip.md %}#files) insights in `crdb_internal.node_execution_insights.txt` and `crdb_internal.node_txn_execution_insights.txt`. [#125804][#125804] -- Some debugging-only information about physical plans is no longer collected in the `system.job_info` table for [changefeeds]({% link v23.2/change-data-capture-overview.md %}), because it has the potential to grow very large. [#126097][#126097] -- For the [TELEMETRY channel]({% link v23.2/logging.md %}#telemetry), TCL [`sampled_query`]({% link v23.2/eventlog.md %}#sampled_query) events will now be sampled at the rate specified by the setting [`sql.telemetry.query_sampling.max_event_frequency`]({% link v23.2/cluster-settings.md %}#setting-sql-telemetry-query-sampling-max-event-frequency), which is already used to limit the rate of sampling DML statements. [#126728][#126728] +- `crdb_internal.cluster_execution_insights.txt` and `crdb_internal.cluster_txn_execution_insights.txt` have been removed from the [debug zip]({% link v23.2/cockroach-debug-zip.md %}). These files contained cluster-wide insights for statements and transactions. Users can still rely on the [per-node execution]({% link v23.2/cockroach-debug-zip.md %}#files) insights in `crdb_internal.node_execution_insights.txt` and `crdb_internal.node_txn_execution_insights.txt`. +- Some debugging-only information about physical plans is no longer collected in the `system.job_info` table for [changefeeds]({% link v23.2/change-data-capture-overview.md %}), because it has the potential to grow very large. +- For the [TELEMETRY channel]({% link v23.2/logging.md %}#telemetry), TCL [`sampled_query`]({% link v23.2/eventlog.md %}#sampled_query) events will now be sampled at the rate specified by the setting [`sql.telemetry.query_sampling.max_event_frequency`]({% link v23.2/cluster-settings.md %}#setting-sql-telemetry-query-sampling-max-event-frequency), which is already used to limit the rate of sampling DML statements.

Bug fixes

-- Fixed a bug introduced in v23.2.0 in which CockroachDB would hit an internal error when evaluating [`INSERT`s]({% link v23.2/insert.md %}) into [`REGIONAL BY ROW`]({% link v23.2/alter-table.md %}#set-the-table-locality-to-regional-by-row) tables where the source was a [`VALUES`]({% link v23.2/selection-queries.md %}#values-clause) clause with a single row and at least one boolean expression. [#125504][#125504] [#126839][#126839] -- Fixed a bug where a [`DROP ROLE`]({% link v23.2/drop-role.md %}) or [`DROP USER`]({% link v23.2/drop-user.md %}) command could leave references behind inside types, which could prevent subsequent [`SHOW GRANTS`]({% link v23.2/show-grants.md %}) commands from working. [#125806][#125806] -- Fixed a bug that could lead to descriptors having privileges to roles that no longer exist. Added an automated clean up for [dropped roles]({% link v23.2/drop-role.md %}) inside descriptors. [#125806][#125806] -- Fixed a bug where a change to a [user-defined type (UDT)]({% link v23.2/create-type.md %}) could cause queries against tables using that type to fail with an error message like: `histogram.go:694: span must be fully contained in the bucket`. The change to the user-defined type could occur either directly from an [`ALTER TYPE`]({% link v23.2/alter-type.md %}) statement or indirectly from an [`ALTER DATABASE ... ADD REGION`]({% link v23.2/alter-database.md %}#add-region) or [`ALTER DATABASE ... DROP REGION`]({% link v23.2/alter-database.md %}#drop-region) statement, which implicitly modifies the `crdb_internal_region` UDT. This bug had existed since UDTs were introduced in v20.2. [#125806][#125806] -- Fixed a bug in which constant `LIKE` patterns containing certain sequences of backslashes did not become constrained scans. This bug has been present since v21.1.13 when support for building constrained scans from `LIKE` patterns containing backslashes was added. [#125538][#125538] -- Fixed a bug introduced in alpha versions of v23.1 where calling a routine could result in an unexpected `function ... does not exist` error. The bug is triggered when the routine is called twice using the exact same SQL query, and either: (a) the routine has polymorphic arguments, or: (b) between the two calls, the routine is replaced by a routine with the same name and different parameters. [#123518][#123518] -- Fixed the statistics estimation code in the [optimizer]({% link v23.2/cost-based-optimizer.md %}) so it does not use the empty histograms produced if [histogram collection]({% link v23.2/cost-based-optimizer.md %}#control-histogram-collection) has been disabled during stats collection due to excessive memory utilization. Now the optimizer will rely on distinct counts instead of the empty histograms and should produce better plans as a result. This bug has existed since v22.1. [#126156][#126156] -- Fixed a bug in [`cockroach debug tsdump`]({% link v23.2/cockroach-debug-tsdump.md %}) where the command fails when a custom SQL port is used and the [`--format=raw`]({% link v23.2/cockroach-debug-tsdump.md %}#flags) flag is provided. [#126184][#126184] -- Fixed a bug where a [user-defined function (UDF)]({% link v23.2/user-defined-functions.md %}) that shared a name with a [built-in function]({% link v23.2/functions-and-operators.md %}#built-in-functions) would not be resolved, even if the UDF had higher precedence according to the [`search_path`]({% link v23.2/sql-name-resolution.md %}#search-path) variable. [#126295][#126295] -- Fixed a bug that caused [background jobs]({% link v23.2/show-jobs.md %}) to incorrectly respect a statement timeout. [#126819][#126819] -- Fixed a bug where [`ALTER DATABASE ... DROP REGION`]({% link v23.2/alter-database.md %}#drop-region) could fail if any tables under the given database have [indexes on expressions]({% link v23.2/expression-indexes.md %}). [#126598][#126598] -- Fixed a bug when [restoring]({% link v23.2/restore.md %}) a database with a [composite type]({% link v23.2/create-type.md %}#create-a-composite-data-type). [#126841][#126841] -- Fixed a bug when inputting `public` role as user name for [built-in compatibility functions]({% link v24.2/functions-and-operators.md %}#compatibility-functions), such as `has_database_privilege` and `has_schema_privilege`. [#126852][#126852] -- Fixed a bug where the [Database page]({% link v23.2/ui-databases-page.md %}) could crash if range information is not available. [#127091][#127091] -- Fixed a bug where CockroachDB could incorrectly evaluate an [`IS NOT NULL`]({% link v23.2/null-handling.md %}#nulls-and-simple-comparisons) filter if it was applied to non-`NULL` tuples that had `NULL` elements, such as `(1, NULL)` or `(NULL, NULL)`. This bug has existed since v20.2. [#126937][#126937] -- In the [DB Console event log]({% link v23.2/ui-overview-dashboard.md %}#events-panel), [`ALTER ROLE`]({% link v23.2/alter-role.md %}) events now display correctly even when no [role options]({% link v23.2/alter-role.md %}#role-options) are included in the `ALTER ROLE` statement. [#126565][#126565] -- Fixed a bug where [`CREATE TABLE`]({% link v23.2/create-table.md %}) with [index expressions]({% link v23.2/expression-indexes.md %}) could hit undefined column errors on [transaction retries]({% link v23.2/transactions.md %}#transaction-retries). [#126201][#126201] +- Fixed a bug introduced in v23.2.0 in which CockroachDB would hit an internal error when evaluating [`INSERT`s]({% link v23.2/insert.md %}) into [`REGIONAL BY ROW`]({% link v23.2/alter-table.md %}#set-the-table-locality-to-regional-by-row) tables where the source was a [`VALUES`]({% link v23.2/selection-queries.md %}#values-clause) clause with a single row and at least one boolean expression. +- Fixed a bug where a [`DROP ROLE`]({% link v23.2/drop-role.md %}) or [`DROP USER`]({% link v23.2/drop-user.md %}) command could leave references behind inside types, which could prevent subsequent [`SHOW GRANTS`]({% link v23.2/show-grants.md %}) commands from working. +- Fixed a bug that could lead to descriptors having privileges to roles that no longer exist. Added an automated clean up for [dropped roles]({% link v23.2/drop-role.md %}) inside descriptors. +- Fixed a bug where a change to a [user-defined type (UDT)]({% link v23.2/create-type.md %}) could cause queries against tables using that type to fail with an error message like: `histogram.go:694: span must be fully contained in the bucket`. The change to the user-defined type could occur either directly from an [`ALTER TYPE`]({% link v23.2/alter-type.md %}) statement or indirectly from an [`ALTER DATABASE ... ADD REGION`]({% link v23.2/alter-database.md %}#add-region) or [`ALTER DATABASE ... DROP REGION`]({% link v23.2/alter-database.md %}#drop-region) statement, which implicitly modifies the `crdb_internal_region` UDT. This bug had existed since UDTs were introduced in v20.2. +- Fixed a bug in which constant `LIKE` patterns containing certain sequences of backslashes did not become constrained scans. This bug has been present since v21.1.13 when support for building constrained scans from `LIKE` patterns containing backslashes was added. +- Fixed a bug introduced in alpha versions of v23.1 where calling a routine could result in an unexpected `function ... does not exist` error. The bug is triggered when the routine is called twice using the exact same SQL query, and either: (a) the routine has polymorphic arguments, or: (b) between the two calls, the routine is replaced by a routine with the same name and different parameters. +- Fixed the statistics estimation code in the [optimizer]({% link v23.2/cost-based-optimizer.md %}) so it does not use the empty histograms produced if [histogram collection]({% link v23.2/cost-based-optimizer.md %}#control-histogram-collection) has been disabled during stats collection due to excessive memory utilization. Now the optimizer will rely on distinct counts instead of the empty histograms and should produce better plans as a result. This bug has existed since v22.1. +- Fixed a bug in [`cockroach debug tsdump`]({% link v23.2/cockroach-debug-tsdump.md %}) where the command fails when a custom SQL port is used and the [`--format=raw`]({% link v23.2/cockroach-debug-tsdump.md %}#flags) flag is provided. +- Fixed a bug where a [user-defined function (UDF)]({% link v23.2/user-defined-functions.md %}) that shared a name with a [built-in function]({% link v23.2/functions-and-operators.md %}#built-in-functions) would not be resolved, even if the UDF had higher precedence according to the [`search_path`]({% link v23.2/sql-name-resolution.md %}#search-path) variable. +- Fixed a bug that caused [background jobs]({% link v23.2/show-jobs.md %}) to incorrectly respect a statement timeout. +- Fixed a bug where [`ALTER DATABASE ... DROP REGION`]({% link v23.2/alter-database.md %}#drop-region) could fail if any tables under the given database have [indexes on expressions]({% link v23.2/expression-indexes.md %}). +- Fixed a bug when [restoring]({% link v23.2/restore.md %}) a database with a [composite type]({% link v23.2/create-type.md %}#create-a-composite-data-type). +- Fixed a bug when inputting `public` role as user name for [built-in compatibility functions]({% link v24.2/functions-and-operators.md %}#compatibility-functions), such as `has_database_privilege` and `has_schema_privilege`. +- Fixed a bug where the [Database page]({% link v23.2/ui-databases-page.md %}) could crash if range information is not available. +- Fixed a bug where CockroachDB could incorrectly evaluate an [`IS NOT NULL`]({% link v23.2/null-handling.md %}#nulls-and-simple-comparisons) filter if it was applied to non-`NULL` tuples that had `NULL` elements, such as `(1, NULL)` or `(NULL, NULL)`. This bug has existed since v20.2. +- In the [DB Console event log]({% link v23.2/ui-overview-dashboard.md %}#events-panel), [`ALTER ROLE`]({% link v23.2/alter-role.md %}) events now display correctly even when no [role options]({% link v23.2/alter-role.md %}#role-options) are included in the `ALTER ROLE` statement. +- Fixed a bug where [`CREATE TABLE`]({% link v23.2/create-table.md %}) with [index expressions]({% link v23.2/expression-indexes.md %}) could hit undefined column errors on [transaction retries]({% link v23.2/transactions.md %}#transaction-retries).

Performance improvements

-- [Schema changes]({% link v23.2/online-schema-changes.md %}) that cause a data backfill, such as adding a non-nullable column or changing the primary key, will now split and scatter the temporary indexes used to perform the change. This reduces the chance of causing a write hotspot that can slow down foreground traffic. [#126691][#126691] +- [Schema changes]({% link v23.2/online-schema-changes.md %}) that cause a data backfill, such as adding a non-nullable column or changing the primary key, will now split and scatter the temporary indexes used to perform the change. This reduces the chance of causing a write hotspot that can slow down foreground traffic.
@@ -46,30 +46,3 @@ Release Date: August 1, 2024 This release includes 100 merged PRs by 33 authors.
- -[#123518]: https://github.com/cockroachdb/cockroach/pull/123518 -[#125504]: https://github.com/cockroachdb/cockroach/pull/125504 -[#125538]: https://github.com/cockroachdb/cockroach/pull/125538 -[#125562]: https://github.com/cockroachdb/cockroach/pull/125562 -[#125804]: https://github.com/cockroachdb/cockroach/pull/125804 -[#125806]: https://github.com/cockroachdb/cockroach/pull/125806 -[#126097]: https://github.com/cockroachdb/cockroach/pull/126097 -[#126156]: https://github.com/cockroachdb/cockroach/pull/126156 -[#126184]: https://github.com/cockroachdb/cockroach/pull/126184 -[#126201]: https://github.com/cockroachdb/cockroach/pull/126201 -[#126216]: https://github.com/cockroachdb/cockroach/pull/126216 -[#126295]: https://github.com/cockroachdb/cockroach/pull/126295 -[#126298]: https://github.com/cockroachdb/cockroach/pull/126298 -[#126565]: https://github.com/cockroachdb/cockroach/pull/126565 -[#126598]: https://github.com/cockroachdb/cockroach/pull/126598 -[#126691]: https://github.com/cockroachdb/cockroach/pull/126691 -[#126728]: https://github.com/cockroachdb/cockroach/pull/126728 -[#126819]: https://github.com/cockroachdb/cockroach/pull/126819 -[#126839]: https://github.com/cockroachdb/cockroach/pull/126839 -[#126841]: https://github.com/cockroachdb/cockroach/pull/126841 -[#126852]: https://github.com/cockroachdb/cockroach/pull/126852 -[#126937]: https://github.com/cockroachdb/cockroach/pull/126937 -[#127091]: https://github.com/cockroachdb/cockroach/pull/127091 -[#127608]: https://github.com/cockroachdb/cockroach/pull/127608 -[44d16f97a]: https://github.com/cockroachdb/cockroach/commit/44d16f97a -[7fb249aa1]: https://github.com/cockroachdb/cockroach/commit/7fb249aa1 diff --git a/src/current/_includes/releases/v24.1/v24.1.0-alpha.1.md b/src/current/_includes/releases/v24.1/v24.1.0-alpha.1.md index b8f53da691e..57b8496d77c 100644 --- a/src/current/_includes/releases/v24.1/v24.1.0-alpha.1.md +++ b/src/current/_includes/releases/v24.1/v24.1.0-alpha.1.md @@ -6,169 +6,169 @@ Release Date: March 7, 2024

Backward-incompatible changes

-- [`AS OF SYSTEM TIME`]({% link v24.1/as-of-system-time.md %}) queries can no longer use a timestamp followed by a question mark to signify a future-time value. This was an undocumented syntax. [#116830][#116830] +- [`AS OF SYSTEM TIME`]({% link v24.1/as-of-system-time.md %}) queries can no longer use a timestamp followed by a question mark to signify a future-time value. This was an undocumented syntax.

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

-- [`ALTER CHANGEFEED`]({% link v24.1/alter-changefeed.md %}) no longer removes a [CDC query]({% link v24.1/cdc-queries.md %}) when modifying changefeed properties. [#116498][#116498] -- `changefeed.balance_range_distribution.enable` is now deprecated. Instead, use the new [cluster setting]({% link v24.1/cluster-settings.md %}) `changefeed.default_range_distribution_strategy`. `changefeed.default_range_distribution_strategy='balanced_simple'` has the same effect as setting `changefeed.balance_range_distribution.enable=true`. It does not require `initial_scan='only'`, which was required by the old setting. [#115166][#115166] -- CDC queries now correctly handle the [`changefeed_creation_timestamp`]({% link v24.1/cdc-queries.md %}#cdc-query-function-support) function. [#117520][#117520] -- The new syntax `ALTER VIRTUAL CLUSTER virtual-cluster START REPLICATION OF virtual-cluster ON physical-cluster` can now be used to reconfigure virtual clusters previously serving as sources for [physical cluster replication]({% link v24.1/physical-cluster-replication-overview.md %}) to become standbys to a promoted standby. This reverses the direction of replication while maximizing data reuse. [#117656][#117656] -- [`BACKUP`]({% link v24.1/backup.md %})s now load range information that is used to avoid a spike in metadata lookups when backups begin. [#116520][#116520] -- Clusters created to run [physical cluster replication]({% link v24.1/physical-cluster-replication-overview.md %}) no longer automatically disable the [`spanconfig.range_coalescing.system.enabled`]({% link v24.1/cluster-settings.md %}#setting-spanconfig-storage-coalesce-adjacent-enabled) and [`spanconfig.range_coalescing.application.enabled`]({% link v24.1/cluster-settings.md %}#setting-spanconfig-tenant-coalesce-adjacent-enabled) cluster settings. Users who started using physical cluster replication on v23.1 or v23.2 may wish to manually reset these settings. [#119221][#119221] -- Physical cluster replication is now always enabled, and the `physical_replication.enabled` cluster setting has been removed. [#119149][#119149] +- [`ALTER CHANGEFEED`]({% link v24.1/alter-changefeed.md %}) no longer removes a [CDC query]({% link v24.1/cdc-queries.md %}) when modifying changefeed properties. +- `changefeed.balance_range_distribution.enable` is now deprecated. Instead, use the new [cluster setting]({% link v24.1/cluster-settings.md %}) `changefeed.default_range_distribution_strategy`. `changefeed.default_range_distribution_strategy='balanced_simple'` has the same effect as setting `changefeed.balance_range_distribution.enable=true`. It does not require `initial_scan='only'`, which was required by the old setting. +- CDC queries now correctly handle the [`changefeed_creation_timestamp`]({% link v24.1/cdc-queries.md %}#cdc-query-function-support) function. +- The new syntax `ALTER VIRTUAL CLUSTER virtual-cluster START REPLICATION OF virtual-cluster ON physical-cluster` can now be used to reconfigure virtual clusters previously serving as sources for [physical cluster replication]({% link v24.1/physical-cluster-replication-overview.md %}) to become standbys to a promoted standby. This reverses the direction of replication while maximizing data reuse. +- [`BACKUP`]({% link v24.1/backup.md %})s now load range information that is used to avoid a spike in metadata lookups when backups begin. +- Clusters created to run [physical cluster replication]({% link v24.1/physical-cluster-replication-overview.md %}) no longer automatically disable the [`spanconfig.range_coalescing.system.enabled`]({% link v24.1/cluster-settings.md %}#setting-spanconfig-storage-coalesce-adjacent-enabled) and [`spanconfig.range_coalescing.application.enabled`]({% link v24.1/cluster-settings.md %}#setting-spanconfig-tenant-coalesce-adjacent-enabled) cluster settings. Users who started using physical cluster replication on v23.1 or v23.2 may wish to manually reset these settings. +- Physical cluster replication is now always enabled, and the `physical_replication.enabled` cluster setting has been removed.

SQL language changes

-- [`ALTER BACKUP SCHEDULE ... EXECUTE IMMEDIATELY`]({% link v24.1/alter-backup-schedule.md %}) can now be used to set the next scheduled execution of the backup schedule to the current time. [#112118][#112118] -- Fixed the [**SQL Activity**]({% link v24.1/ui-sql-dashboard.md %}) update job to avoid conflicts on update, reduced the amount of data cached to just what the overview page requires, and fixed the correctess of the top queries. [#112350][#112350] -- Previously, user-defined composite types were not populated in two `pg_catalog` tables: `pg_class` (whose row entries pertain to the type) and `pg_attribute` (whose row entries pertain to the "columns" of the type). This PostgreSQL-incompatible behavior is now fixed by populating the tables with user-defined composite types. In addition, the `typrelid` column in the `pg_type` table has the proper `oid` for composite types. [#111179][#111179] -- The newly added [built-in function]({% link v24.1/functions-and-operators.md %}#array-functions) `jsonb_array_to_string_array` no longer removes `NULL` objects. It now includes them in the resulting array. [#112975][#112975] -- Changed the display for RU estimates shown in [`EXPLAIN ANALYZE`]({% link v24.1/explain-analyze.md %}) from integer to float. This will prevent small estimates from being rounded to zero, which makes the estimate less confusing for cheap queries. [#111986][#111986] -- The `information_schema._pg_char_octet_length` [built-in function]({% link v24.1/functions-and-operators.md %}) is now supported, which improves compatibility with PostgreSQL. [#111401][#111401] -- The `pg_encoding_max_length` [built-in function]({% link v24.1/functions-and-operators.md %}) is now supported, which improves compatibility with PostgreSQL. [#111401][#111401] -- The `information_schema._pg_datetime_precision` [built-in function]({% link v24.1/functions-and-operators.md %}) is now supported, which improves compatibility with PostgreSQL. [#111401][#111401] -- The `information_schema._pg_interval_type` [built-in function]({% link v24.1/functions-and-operators.md %}) is now supported, which improves compatibility with PostgreSQL. [#111401][#111401] -- `information_schema.user_defined_types` is now populated with information about [user-defined types]({% link v24.1/create-type.md %}), and `information_schema.attributes` is now populated with information about the attributes of [composite data types]({% link v24.1/create-type.md %}#create-a-composite-data-type). [#111401][#111401] -- The [cost-based optimizer]({% link v24.1/cost-based-optimizer.md %}) will no longer generate a constrained scan that only uses filters from a [check]({% link v24.1/check.md %}) constraint. This prevents cases where a constrained scan actually scans the entire table because the constraints aren't selective. [#114332][#114332] -- Reads rolled back by savepoints are now refreshable, matching the PostgreSQL behavior and avoiding potential serializability violations. [#111424][#111424] -- Implemented the postgis `ST_TileEnvelope` [built-in function]({% link v24.1/functions-and-operators.md %}). [#112971][#112971] -- Added support for a third argument in the `array_position` [built-in function]({% link v24.1/functions-and-operators.md %}). If provided, it gives the index from which to begin searching in the array. [#112161][#112161] -- Added the `bit_count` [built-in function]({% link v24.1/functions-and-operators.md %}) for [`BIT`]({% link v24.1/bit.md %}) and [`BYTES`]({% link v24.1/bytes.md %}) types. [#115273][#115273] -- Added a `pg_backend_pid` column to `crdb_internal.node_sessions` and `crdb_internal.cluster_sessions`. This value corresponds to the numerical ID returned from `pg_backend_pid`. [#116673][#116673] -- Column type changes now require an explicit cast when automatic casting is not possible. This aligns with PostgreSQL's behavior. Previously, certain type conversions, such as [`BOOL`]({% link v24.1/bool.md %}) to [`INT`]({% link v24.1/int.md %}), were allowed without an explicit cast. [#115442][#115442] -- Added a new [session setting]({% link v24.1/session-variables.md %}), `optimizer_merge_joins_enabled` that, when true, instructs the [cost-based optimizer]({% link v24.1/cost-based-optimizer.md %}) to explore query plans with merge joins. The setting defaults to `true`. [#116410][#116410] -- CockroachDB now supports parsing queries like [`SELECT FROM t`]({% link v24.1/selection-queries.md %}) that only produce the row count and do not output any columns. [#116835][#116835] -- Added the `metaphone` [built-in function]({% link v24.1/functions-and-operators.md %}), which converts a string to its Metaphone code. [#110950][#110950] -- The new `EXPIRATION WINDOW` option for [`ALTER VIRTUAL CLUSTER`]({% link v24.1/alter-virtual-cluster.md %}) allows the user to override the default producer job expiration window of 24 hours. For example, `ALTER VIRTUAL CLUSTER appTenant SET REPLICATION EXPIRATION WINDOW ='100ms'`. The producer job expiration window determines how long the producer job stays alive without a heartbeat from the consumer job. [#117776][#117776] -- The [`SKIP LOCKED`]({% link v24.1/select-for-update.md %}#wait-policies) clause is now allowed with `SELECT ... FOR SHARE`. [#117560][#117560] -- Added configurable [cluster settings]({% link v24.1/cluster-settings.md %}) for total TCP keep alive probes (`server.sql_tcp_keep_alive.count`) and TCP probe intervals (`server.sql_tcp_keep_alive.interval`) for SQL connections. Removed the `COCKROACH_SQL_TCP_KEEP_ALIVE` environment variable subsuming it. [#115833][#115833] -- Removed the `sql.trace.session_eventlog.enabled` cluster setting and the associated event log tracing. The information in these traces is still available in the [`DEV` log channel]({% link v24.1/logging-overview.md %}#logging-channels) by enabling `--vmodule=conn_executor=2` with [`cockroach start`]({% link v24.1/cockroach-start.md %}). [#117928][#117928] -- The `array_agg` [aggregate function]({% link v24.1/functions-and-operators.md %}#aggregate-functions) can now support arrays as the input. Note that CockroachDB does not yet fully support nested arrays, and `array_agg` does not support nested arrays as inputs. [#117838][#117838] -- An execution statistic that measures "client time" is now included in `plan.txt` files of [statement diagnostics bundles]({% link v24.1/cockroach-statement-diag.md %}). Client time tracks how long the query execution was blocked on the client receiving the PGWire protocol messages. Note that when obtained via [`EXPLAIN ANALYZE (DEBUG)`]({% link v24.1/explain-analyze.md %}#debug-option), client time does not make sense because in this variant the output rows are discarded and not communicated to the client. [#117591][#117591] -- Added the `trace_id` column to the response of the [`SHOW SESSIONS`]({% link v24.1/show-sessions.md %}) command. [#118002][#118002] -- Added support for the `ENCODING` option of `COPY`, as long as the encoding of `'utf8'` is specified. [#118010][#118010] -- Added the `SHOW VARIABLES FOR ROLE` command, which allows the database administrator to easily view the default values for [session variables]({% link v24.1/session-variables.md %}) applied to a given user. [#117875][#117875] -- The `sql.txn.read_committed_isolation.enabled` [cluster setting]({% link v24.1/cluster-settings.md %}) is now `true` by default. This means that any syntax and settings that configure the [`READ COMMITTED`]({% link v24.1/read-committed.md %}) isolation level will now cause the transaction to use that isolation level, rather than automatically upgrading the transaction to `SERIALIZABLE`. [#118479][#118479] -- Added a new [cluster setting]({% link v24.1/cluster-settings.md %}), `sql.stats.virtual_computed_columns.enabled`, which when set enables collection of table statistics on [`VIRTUAL` computed columns]({% link v24.1/computed-columns.md %}). [#118241][#118241] -- Added the `autocommit_before_ddl` [session variable]({% link v24.1/session-variables.md %}). When set to `true`, any schema change statement that is sent during an explicit transaction will cause the transaction to commit before executing the schema change. [#118440][#118440] -- [`CREATE SEQUENCE`]({% link v24.1/create-sequence.md %}) is now enabled by default in the declarative schema changer. [#117793][#117793] -- [PL/pgSQL]({% link v24.1/plpgsql.md %}) now supports nested blocks, with the following limitations: variable shadowing is disallowed, and exception handlers cannot be used in a routine with nested blocks. [#117710][#117710] -- The [cluster setting]({% link v24.1/cluster-settings.md %}) `sql.index_recommendation.drop_unused_duration` is now public. [#118676][#118676] -- It is now possible to hint to the [cost-based optimizer]({% link v24.1/cost-based-optimizer.md %}) that it should plan a straight join by using the syntax `... INNER STRAIGHT JOIN ...`. If the hint is provided, the optimizer will now fix the join order as given in the query, even if it estimates that a different plan using join reordering would have a lower cost. [#116013][#116013] -- Add column `goroutine_id` to the response of the `SHOW SESSIONS` command. [#118644][#118644] -- Introduced a new [session setting]({% link v24.1/session-variables.md %}), `close_cursors_at_commit`, which causes a cursor to remain open even after its calling transaction commits. Note that transaction rollback still closes any cursor created in that transaction. [#117910][#117910] -- Added the `server.max_open_transactions_per_gateway` [cluster setting]({% link v24.1/cluster-settings.md %}). When set to a non-negative value, non-`admin` users cannot execute a query if the number of transactions open on the current gateway node is already at the configured limit. [#118781][#118781] -- Added the `setseed` [built-in function]({% link v24.1/functions-and-operators.md %}). It sets the seed for the random generator used by the `random` built-in function. [#119042][#119042] -- `OUT` and `INOUT` parameter classes are now supported in [user-defined functions]({% link v24.1/user-defined-functions.md %}). [#118610][#118610] -- Out-of-process SQL servers will now start exporting a new `sql.aggregated_livebytes` [metric]({% link v24.1/metrics.md %}). This metric gets updated once every 60 seconds by default, and its update interval can be configured via the `tenant_global_metrics_exporter_interval` [cluster setting]({% link v24.1/cluster-settings.md %}). [#119140][#119140] -- Added support for index hints with [`INSERT`]({% link v24.1/insert.md %}) and [`UPSERT`]({% link v24.1/upsert.md %}) statements. This allows `INSERT ... ON CONFLICT` and `UPSERT` queries to use index hints in the same way they are already supported for [`UPDATE`]({% link v24.1/update.md %}) and [`DELETE`]({% link v24.1/delete.md %}) statements. [#119104][#119104] -- Added a new [`ttl_disable_changefeed_replication`]({% link v24.1/row-level-ttl.md %}#filter-changefeeds-for-tables-using-row-level-ttl) table storage parameter that can be used to disable changefeed replication for [row-level TTL]({% link v24.1/row-level-ttl.md %}) on a per-table basis. [#119611][#119611] +- [`ALTER BACKUP SCHEDULE ... EXECUTE IMMEDIATELY`]({% link v24.1/alter-backup-schedule.md %}) can now be used to set the next scheduled execution of the backup schedule to the current time. +- Fixed the [**SQL Activity**]({% link v24.1/ui-sql-dashboard.md %}) update job to avoid conflicts on update, reduced the amount of data cached to just what the overview page requires, and fixed the correctess of the top queries. +- Previously, user-defined composite types were not populated in two `pg_catalog` tables: `pg_class` (whose row entries pertain to the type) and `pg_attribute` (whose row entries pertain to the "columns" of the type). This PostgreSQL-incompatible behavior is now fixed by populating the tables with user-defined composite types. In addition, the `typrelid` column in the `pg_type` table has the proper `oid` for composite types. +- The newly added [built-in function]({% link v24.1/functions-and-operators.md %}#array-functions) `jsonb_array_to_string_array` no longer removes `NULL` objects. It now includes them in the resulting array. +- Changed the display for RU estimates shown in [`EXPLAIN ANALYZE`]({% link v24.1/explain-analyze.md %}) from integer to float. This will prevent small estimates from being rounded to zero, which makes the estimate less confusing for cheap queries. +- The `information_schema._pg_char_octet_length` [built-in function]({% link v24.1/functions-and-operators.md %}) is now supported, which improves compatibility with PostgreSQL. +- The `pg_encoding_max_length` [built-in function]({% link v24.1/functions-and-operators.md %}) is now supported, which improves compatibility with PostgreSQL. +- The `information_schema._pg_datetime_precision` [built-in function]({% link v24.1/functions-and-operators.md %}) is now supported, which improves compatibility with PostgreSQL. +- The `information_schema._pg_interval_type` [built-in function]({% link v24.1/functions-and-operators.md %}) is now supported, which improves compatibility with PostgreSQL. +- `information_schema.user_defined_types` is now populated with information about [user-defined types]({% link v24.1/create-type.md %}), and `information_schema.attributes` is now populated with information about the attributes of [composite data types]({% link v24.1/create-type.md %}#create-a-composite-data-type). +- The [cost-based optimizer]({% link v24.1/cost-based-optimizer.md %}) will no longer generate a constrained scan that only uses filters from a [check]({% link v24.1/check.md %}) constraint. This prevents cases where a constrained scan actually scans the entire table because the constraints aren't selective. +- Reads rolled back by savepoints are now refreshable, matching the PostgreSQL behavior and avoiding potential serializability violations. +- Implemented the postgis `ST_TileEnvelope` [built-in function]({% link v24.1/functions-and-operators.md %}). +- Added support for a third argument in the `array_position` [built-in function]({% link v24.1/functions-and-operators.md %}). If provided, it gives the index from which to begin searching in the array. +- Added the `bit_count` [built-in function]({% link v24.1/functions-and-operators.md %}) for [`BIT`]({% link v24.1/bit.md %}) and [`BYTES`]({% link v24.1/bytes.md %}) types. +- Added a `pg_backend_pid` column to `crdb_internal.node_sessions` and `crdb_internal.cluster_sessions`. This value corresponds to the numerical ID returned from `pg_backend_pid`. +- Column type changes now require an explicit cast when automatic casting is not possible. This aligns with PostgreSQL's behavior. Previously, certain type conversions, such as [`BOOL`]({% link v24.1/bool.md %}) to [`INT`]({% link v24.1/int.md %}), were allowed without an explicit cast. +- Added a new [session setting]({% link v24.1/session-variables.md %}), `optimizer_merge_joins_enabled` that, when true, instructs the [cost-based optimizer]({% link v24.1/cost-based-optimizer.md %}) to explore query plans with merge joins. The setting defaults to `true`. +- CockroachDB now supports parsing queries like [`SELECT FROM t`]({% link v24.1/selection-queries.md %}) that only produce the row count and do not output any columns. +- Added the `metaphone` [built-in function]({% link v24.1/functions-and-operators.md %}), which converts a string to its Metaphone code. +- The new `EXPIRATION WINDOW` option for [`ALTER VIRTUAL CLUSTER`]({% link v24.1/alter-virtual-cluster.md %}) allows the user to override the default producer job expiration window of 24 hours. For example, `ALTER VIRTUAL CLUSTER appTenant SET REPLICATION EXPIRATION WINDOW ='100ms'`. The producer job expiration window determines how long the producer job stays alive without a heartbeat from the consumer job. +- The [`SKIP LOCKED`]({% link v24.1/select-for-update.md %}#wait-policies) clause is now allowed with `SELECT ... FOR SHARE`. +- Added configurable [cluster settings]({% link v24.1/cluster-settings.md %}) for total TCP keep alive probes (`server.sql_tcp_keep_alive.count`) and TCP probe intervals (`server.sql_tcp_keep_alive.interval`) for SQL connections. Removed the `COCKROACH_SQL_TCP_KEEP_ALIVE` environment variable subsuming it. +- Removed the `sql.trace.session_eventlog.enabled` cluster setting and the associated event log tracing. The information in these traces is still available in the [`DEV` log channel]({% link v24.1/logging-overview.md %}#logging-channels) by enabling `--vmodule=conn_executor=2` with [`cockroach start`]({% link v24.1/cockroach-start.md %}). +- The `array_agg` [aggregate function]({% link v24.1/functions-and-operators.md %}#aggregate-functions) can now support arrays as the input. Note that CockroachDB does not yet fully support nested arrays, and `array_agg` does not support nested arrays as inputs. +- An execution statistic that measures "client time" is now included in `plan.txt` files of [statement diagnostics bundles]({% link v24.1/cockroach-statement-diag.md %}). Client time tracks how long the query execution was blocked on the client receiving the PGWire protocol messages. Note that when obtained via [`EXPLAIN ANALYZE (DEBUG)`]({% link v24.1/explain-analyze.md %}#debug-option), client time does not make sense because in this variant the output rows are discarded and not communicated to the client. +- Added the `trace_id` column to the response of the [`SHOW SESSIONS`]({% link v24.1/show-sessions.md %}) command. +- Added support for the `ENCODING` option of `COPY`, as long as the encoding of `'utf8'` is specified. +- Added the `SHOW VARIABLES FOR ROLE` command, which allows the database administrator to easily view the default values for [session variables]({% link v24.1/session-variables.md %}) applied to a given user. +- The `sql.txn.read_committed_isolation.enabled` [cluster setting]({% link v24.1/cluster-settings.md %}) is now `true` by default. This means that any syntax and settings that configure the [`READ COMMITTED`]({% link v24.1/read-committed.md %}) isolation level will now cause the transaction to use that isolation level, rather than automatically upgrading the transaction to `SERIALIZABLE`. +- Added a new [cluster setting]({% link v24.1/cluster-settings.md %}), `sql.stats.virtual_computed_columns.enabled`, which when set enables collection of table statistics on [`VIRTUAL` computed columns]({% link v24.1/computed-columns.md %}). +- Added the `autocommit_before_ddl` [session variable]({% link v24.1/session-variables.md %}). When set to `true`, any schema change statement that is sent during an explicit transaction will cause the transaction to commit before executing the schema change. +- [`CREATE SEQUENCE`]({% link v24.1/create-sequence.md %}) is now enabled by default in the declarative schema changer. +- [PL/pgSQL]({% link v24.1/plpgsql.md %}) now supports nested blocks, with the following limitations: variable shadowing is disallowed, and exception handlers cannot be used in a routine with nested blocks. +- The [cluster setting]({% link v24.1/cluster-settings.md %}) `sql.index_recommendation.drop_unused_duration` is now public. +- It is now possible to hint to the [cost-based optimizer]({% link v24.1/cost-based-optimizer.md %}) that it should plan a straight join by using the syntax `... INNER STRAIGHT JOIN ...`. If the hint is provided, the optimizer will now fix the join order as given in the query, even if it estimates that a different plan using join reordering would have a lower cost. +- Add column `goroutine_id` to the response of the `SHOW SESSIONS` command. +- Introduced a new [session setting]({% link v24.1/session-variables.md %}), `close_cursors_at_commit`, which causes a cursor to remain open even after its calling transaction commits. Note that transaction rollback still closes any cursor created in that transaction. +- Added the `server.max_open_transactions_per_gateway` [cluster setting]({% link v24.1/cluster-settings.md %}). When set to a non-negative value, non-`admin` users cannot execute a query if the number of transactions open on the current gateway node is already at the configured limit. +- Added the `setseed` [built-in function]({% link v24.1/functions-and-operators.md %}). It sets the seed for the random generator used by the `random` built-in function. +- `OUT` and `INOUT` parameter classes are now supported in [user-defined functions]({% link v24.1/user-defined-functions.md %}). +- Out-of-process SQL servers will now start exporting a new `sql.aggregated_livebytes` [metric]({% link v24.1/metrics.md %}). This metric gets updated once every 60 seconds by default, and its update interval can be configured via the `tenant_global_metrics_exporter_interval` [cluster setting]({% link v24.1/cluster-settings.md %}). +- Added support for index hints with [`INSERT`]({% link v24.1/insert.md %}) and [`UPSERT`]({% link v24.1/upsert.md %}) statements. This allows `INSERT ... ON CONFLICT` and `UPSERT` queries to use index hints in the same way they are already supported for [`UPDATE`]({% link v24.1/update.md %}) and [`DELETE`]({% link v24.1/delete.md %}) statements. +- Added a new [`ttl_disable_changefeed_replication`]({% link v24.1/row-level-ttl.md %}#filter-changefeeds-for-tables-using-row-level-ttl) table storage parameter that can be used to disable changefeed replication for [row-level TTL]({% link v24.1/row-level-ttl.md %}) on a per-table basis.

Operational changes

-- The internal versions that are reported during [cluster upgrades]({% link v24.1/upgrade-cockroach-version.md %}) have been renamed for clarity. For example, `23.2-8` is now named `23.2-upgrading-to-24.1-step-008`. [#115223][#115223] -- Introduced a new cluster setting, `server.jwt_authentication.jwks_auto_fetch.enabled`, enabling automatic fetching of [JSON Web Key Sets (JWKS)]({% link v24.1/sso-sql.md %}) from an issuer's remote endpoint. This prevents an administrator's need to update the JWKS specified in `server.jwt_authentication.jwks` - whether manually or by custom script - when the identity provider's keys rotate. That direct specification of JWKS remains the default, as the new cluster setting defaults to `false`. [#117054][#117054] -- Updated the error message logged in the case of stalled disks to use the appropriate term "disk stall", matching the term used in metrics and dashboards. This was previously "file write stall". [#114746][#114746] -- Introduced the `changefeed.emitted_batch_sizes` histogram metric that measures the batch sizes used when emitting data to [sinks]({% link v24.1/changefeed-sinks.md %}). This metric supports [metrics labels]({% link v24.1/monitor-and-debug-changefeeds.md %}#using-changefeed-metrics-labels). [#115537][#115537] -- Introduced metrics `log_fluent_sink_conn_attempts`, `log_fluent_sink_write_attempts`, and `log_fluent_sink_write_errors` to enable more precise tracking of connection and write operations when [logging to Fluentd-compatible network collectors]({% link v24.1/configure-logs.md %}#output-to-fluentd-compatible-network-collectors). [#116699][#116699] -- The [cluster setting]({% link v24.1/cluster-settings.md %}) `sql.contention.record_serialization_conflicts.enabled` is now `on` by default. This means any [`40001` errors]({% link v24.1/transaction-retry-error-reference.md %}) that are returned containing conflicting transaction information will be recorded by the contention registry. [#116664][#116664] -- Removed the `kv.rangefeed.scheduler.enabled` [cluster setting]({% link v24.1/cluster-settings.md %}) because the [rangefeed]({% link v24.1/create-and-configure-changefeeds.md %}#enable-rangefeeds) scheduler is now unconditionally enabled. [#114410][#114410] -- Removed the `kv.rangefeed.catchup_scan_concurrency` [cluster setting]({% link v24.1/cluster-settings.md %}). Catchup scans are throttled via [`kv.rangefeed.concurrent_catchup_iterators`]({% link v24.1/advanced-changefeed-configuration.md %}) on a per-node basis. [#114408][#114408] -- Removed the [`changefeed.mux_rangefeed.enabled`]({% link v24.1/advanced-changefeed-configuration.md %}#mux-rangefeeds) cluster setting because the functionality is enabled by default. [#114408][#114408] -- The gossip status [Advanced Debug page]({% link v24.1/ui-debug-pages.md %}) now includes information about the server's high water timestamps for every other node it knows about in the gossip cluster. [#117011][#117011] -- Removed the `cockroach_rangefeed_rpc_initial_window_size` environment variable. The rangefeed connection now uses the same window size as other RPC connections. [#117545][#117545] -- [Events]({% link v24.1/eventlog.md %}#miscellaneous-sql-events) for [cluster setting]({% link v24.1/cluster-settings.md %}) changes are now emitted to the `OPS` channel rather than the `DEV` channel. [#117923][#117923] -- The new environment variable `cockroach_rpc_use_default_connection_class` enables operators to switch back to the prior default behavior of sending most network/RPC workloads, except system traffic, through a single RPC/TCP connection, in case the environment does not tolerate multiple TCP connections. v24.1 defaults to using multiple connections, each dedicated to a particular types of traffic, specifically for [Raft]({% link v24.1/architecture/replication-layer.md %}#raft) or [rangefeed]({% link v24.1/change-data-capture-overview.md %}) data. For more information, see additional release notes that reference this variable name. [#117810][#117810] +- The internal versions that are reported during [cluster upgrades]({% link v24.1/upgrade-cockroach-version.md %}) have been renamed for clarity. For example, `23.2-8` is now named `23.2-upgrading-to-24.1-step-008`. +- Introduced a new cluster setting, `server.jwt_authentication.jwks_auto_fetch.enabled`, enabling automatic fetching of [JSON Web Key Sets (JWKS)]({% link v24.1/sso-sql.md %}) from an issuer's remote endpoint. This prevents an administrator's need to update the JWKS specified in `server.jwt_authentication.jwks` - whether manually or by custom script - when the identity provider's keys rotate. That direct specification of JWKS remains the default, as the new cluster setting defaults to `false`. +- Updated the error message logged in the case of stalled disks to use the appropriate term "disk stall", matching the term used in metrics and dashboards. This was previously "file write stall". +- Introduced the `changefeed.emitted_batch_sizes` histogram metric that measures the batch sizes used when emitting data to [sinks]({% link v24.1/changefeed-sinks.md %}). This metric supports [metrics labels]({% link v24.1/monitor-and-debug-changefeeds.md %}#using-changefeed-metrics-labels). +- Introduced metrics `log_fluent_sink_conn_attempts`, `log_fluent_sink_write_attempts`, and `log_fluent_sink_write_errors` to enable more precise tracking of connection and write operations when [logging to Fluentd-compatible network collectors]({% link v24.1/configure-logs.md %}#output-to-fluentd-compatible-network-collectors). +- The [cluster setting]({% link v24.1/cluster-settings.md %}) `sql.contention.record_serialization_conflicts.enabled` is now `on` by default. This means any [`40001` errors]({% link v24.1/transaction-retry-error-reference.md %}) that are returned containing conflicting transaction information will be recorded by the contention registry. +- Removed the `kv.rangefeed.scheduler.enabled` [cluster setting]({% link v24.1/cluster-settings.md %}) because the [rangefeed]({% link v24.1/create-and-configure-changefeeds.md %}#enable-rangefeeds) scheduler is now unconditionally enabled. +- Removed the `kv.rangefeed.catchup_scan_concurrency` [cluster setting]({% link v24.1/cluster-settings.md %}). Catchup scans are throttled via [`kv.rangefeed.concurrent_catchup_iterators`]({% link v24.1/advanced-changefeed-configuration.md %}) on a per-node basis. +- Removed the [`changefeed.mux_rangefeed.enabled`]({% link v24.1/advanced-changefeed-configuration.md %}#mux-rangefeeds) cluster setting because the functionality is enabled by default. +- The gossip status [Advanced Debug page]({% link v24.1/ui-debug-pages.md %}) now includes information about the server's high water timestamps for every other node it knows about in the gossip cluster. +- Removed the `cockroach_rangefeed_rpc_initial_window_size` environment variable. The rangefeed connection now uses the same window size as other RPC connections. +- [Events]({% link v24.1/eventlog.md %}#miscellaneous-sql-events) for [cluster setting]({% link v24.1/cluster-settings.md %}) changes are now emitted to the `OPS` channel rather than the `DEV` channel. +- The new environment variable `cockroach_rpc_use_default_connection_class` enables operators to switch back to the prior default behavior of sending most network/RPC workloads, except system traffic, through a single RPC/TCP connection, in case the environment does not tolerate multiple TCP connections. v24.1 defaults to using multiple connections, each dedicated to a particular types of traffic, specifically for [Raft]({% link v24.1/architecture/replication-layer.md %}#raft) or [rangefeed]({% link v24.1/change-data-capture-overview.md %}) data. For more information, see additional release notes that reference this variable name. - In unredacted [debug zips]({% link v24.1/cockroach-debug-zip.md %}), the `crdb_internal.transaction_contention_events` table file has two new columns: - `waiting_stmt_query`: the query of the waiting statement. - - `blocking_txn_queries_unordered`: the unordered list of the blocking transaction's queries. [#118478][#118478] -- Transaction replay protection state is now passed between the outgoing and incoming [leaseholder]({% link v24.1/architecture/replication-layer.md %}#leases) for a range during a [lease transfer]({% link v24.1/architecture/replication-layer.md %}#epoch-based-leases-table-data). This avoids cases where lease transfers can cause transactions to throw `TransactionAbortedError(ABORT_REASON_NEW_LEASE_PREVENTS_TXN)` errors. [#118300][#118300] -- CockroachDB will now automatically generate [CPU profiles]({% link v24.1/automatic-cpu-profiler.md %}) if there is an increase in CPU utilization. This can help inform investigations into possible issues. [#118850][#118850] -- Expanded the [`--include-range-info`]({% link v24.1/cockroach-debug-zip.md %}) flag to include problem ranges. This flag still defaults to `true`. [#119205][#119205] + - `blocking_txn_queries_unordered`: the unordered list of the blocking transaction's queries. +- Transaction replay protection state is now passed between the outgoing and incoming [leaseholder]({% link v24.1/architecture/replication-layer.md %}#leases) for a range during a [lease transfer]({% link v24.1/architecture/replication-layer.md %}#epoch-based-leases-table-data). This avoids cases where lease transfers can cause transactions to throw `TransactionAbortedError(ABORT_REASON_NEW_LEASE_PREVENTS_TXN)` errors. +- CockroachDB will now automatically generate [CPU profiles]({% link v24.1/automatic-cpu-profiler.md %}) if there is an increase in CPU utilization. This can help inform investigations into possible issues. +- Expanded the [`--include-range-info`]({% link v24.1/cockroach-debug-zip.md %}) flag to include problem ranges. This flag still defaults to `true`.

Command-line changes

-- [Debug zips]({% link v24.1/cockroach-debug-zip.md %}) no longer include redundant `hex_` columns for system table `BYTES` columns. [#112033][#112033] -- Added the `--follower-read-percent` flag, which determines the percent (0-100) of read operations that are follower reads, to the [`cockroach workload kv run`]({% link v24.1/cockroach-workload.md %}) command. [#113094][#113094] -- The workload `schemachange` now writes a `.otlp.ndjson.gz` archive containing OTLP trace bundles for debugging purposes. [#114770][#114770] -- [`cockroach debug tsdump`]({% link v24.1/cockroach-debug-tsdump.md %}) creates a `tsdump.yaml` file. The `tsdump` raw format automatically creates the YAML file in the default location `/tmp/tsdump.yaml`. Added a new flag `--yaml` that allows users to specify the path to create `tsdump.yaml` instead of using the default location. For example, `cockroach debug tsdump --host : \ --format raw --yaml=/some_path/tsdump.yaml > /some_path/tsdump.gob`. [#114046][#114046] -- Removed the `cockroach connect` command functionality. This was [deprecated]({% link releases/v23.2.md %}#v23-2-0-deprecations) in CockroachDB v23.2. [#113893][#113893] -- Changed the SQL shell help URL to point to [`cockroach-sql`]({% link v24.1/cockroach-sql-binary.md %}). [#118960][#118960] -- Added a new `encode-uri` utility to make generating connection strings for use with [Physical Cluster Replication]({% link v24.1/physical-cluster-replication-overview.md %}) easier. [#119528][#119528] +- [Debug zips]({% link v24.1/cockroach-debug-zip.md %}) no longer include redundant `hex_` columns for system table `BYTES` columns. +- Added the `--follower-read-percent` flag, which determines the percent (0-100) of read operations that are follower reads, to the [`cockroach workload kv run`]({% link v24.1/cockroach-workload.md %}) command. +- The workload `schemachange` now writes a `.otlp.ndjson.gz` archive containing OTLP trace bundles for debugging purposes. +- [`cockroach debug tsdump`]({% link v24.1/cockroach-debug-tsdump.md %}) creates a `tsdump.yaml` file. The `tsdump` raw format automatically creates the YAML file in the default location `/tmp/tsdump.yaml`. Added a new flag `--yaml` that allows users to specify the path to create `tsdump.yaml` instead of using the default location. For example, `cockroach debug tsdump --host : \ --format raw --yaml=/some_path/tsdump.yaml > /some_path/tsdump.gob`. +- Removed the `cockroach connect` command functionality. This was [deprecated]({% link releases/v23.2.md %}#v23-2-0-deprecations) in CockroachDB v23.2. +- Changed the SQL shell help URL to point to [`cockroach-sql`]({% link v24.1/cockroach-sql-binary.md %}). +- Added a new `encode-uri` utility to make generating connection strings for use with [Physical Cluster Replication]({% link v24.1/physical-cluster-replication-overview.md %}) easier.

DB Console changes

-- Store initialization now logs progress every 10 seconds showing the current and total number of [replicas]({% link v24.1/architecture/replication-layer.md %}) initialized. [#115760][#115760] -- Introduced a new **Lease Preferences** graph on the [Replication dashboard]({% link v24.1/ui-replication-dashboard.md %}). The **Lease Preferences** graph will indicate when the current [leaseholder]({% link v24.1/architecture/replication-layer.md %}#leases) is not the first lease preference and where the current leaseholder satisfies no applied lease preference. [#116709][#116709] -- Updated the [Statement Details page]({% link v24.1/ui-statements-page.md %}) to always show the entire selected period, instead of just the period that had data. [#118680][#118680] -- Error messages displayed upon failure to load DB Console views now include information about the HTTP response status code, if one is present. [#118782][#118782] -- The **Full Table/Index Scans** chart in the [SQL Metrics dashboard]({% link v24.1/ui-sql-dashboard.md %}) now shows the non-negative derivative of the number of full scans tracked. [#118787][#118787] +- Store initialization now logs progress every 10 seconds showing the current and total number of [replicas]({% link v24.1/architecture/replication-layer.md %}) initialized. +- Introduced a new **Lease Preferences** graph on the [Replication dashboard]({% link v24.1/ui-replication-dashboard.md %}). The **Lease Preferences** graph will indicate when the current [leaseholder]({% link v24.1/architecture/replication-layer.md %}#leases) is not the first lease preference and where the current leaseholder satisfies no applied lease preference. +- Updated the [Statement Details page]({% link v24.1/ui-statements-page.md %}) to always show the entire selected period, instead of just the period that had data. +- Error messages displayed upon failure to load DB Console views now include information about the HTTP response status code, if one is present. +- The **Full Table/Index Scans** chart in the [SQL Metrics dashboard]({% link v24.1/ui-sql-dashboard.md %}) now shows the non-negative derivative of the number of full scans tracked. - The [Overload dashboard]({% link v24.1/ui-overload-dashboard.md %}) now includes two additional graphs: - **Elastic CPU Utilization**: displays the CPU utilization by elastic work, compared to the limit set for elastic work. - - **Elastic CPU Exhausted Duration Per Second**: displays the duration of CPU exhaustion by elastic work, in microseconds. [#118763][#118763] -- The `txn.restarts.writetooold` metric in the **Transaction Restarts** graph under the [SQL Dashboard]({% link v24.1/ui-sql-dashboard.md %}) now includes all restarts previously categorized as `txn.restarts.writetoooldmulti`. The former is a now a superset of the latter. The `txn.restarts.writetoooldmulti` metric will be removed in a future release. [#119411][#119411] + - **Elastic CPU Exhausted Duration Per Second**: displays the duration of CPU exhaustion by elastic work, in microseconds. +- The `txn.restarts.writetooold` metric in the **Transaction Restarts** graph under the [SQL Dashboard]({% link v24.1/ui-sql-dashboard.md %}) now includes all restarts previously categorized as `txn.restarts.writetoooldmulti`. The former is a now a superset of the latter. The `txn.restarts.writetoooldmulti` metric will be removed in a future release.

Bug fixes

-- Fixed a bug that could cause an internal error during distributed execution for an expression like `CASE` that requires its inputs to be the same type with all `NULL` inputs. [#108892][#108892] -- Fixed `NULL` input handling for the geospatial [built-ins]({% link v24.1/functions-and-operators.md %}) `st_pointfromgeohash` and `st_geomfromgeohash`. [#113781][#113781] -- The geospatial `st_makeenvelope` [built-in]({% link v24.1/functions-and-operators.md %}) now correctly supports `xmin` or `ymin` to be greater than `xmax` or `ymax`, respectively. [#113781][#113781] -- Fixed a bug that could cause v23.1 nodes in clusters that had not [finalized the v23.1 version upgrade]({% link v24.1/upgrade-cockroach-version.md %}#step-3-decide-how-the-upgrade-will-be-finalized) to use excessive CPU retrying expected errors related to the incomplete upgrade state. [#113864][#113864] -- [Debug zip]({% link v24.1/cockroach-debug-zip.md %}) now does not fail on corrupted log files. [#113722][#113722] -- Placeholder arguments can now be used in [`SET TRANSACTION`]({% link v24.1/set-transaction.md %}) statements. [#113689][#113689] -- Previously, when the session variable `use_declarative_schema_changer` was set to `off`, [`ALTER PRIMARY KEY`]({% link v24.1/alter-table.md %}#alter-primary-key) would delete any comments associated with the old primary index and old primary key constraint. This is inconsistent with the behavior of `use_declarative_schema_changer=on`, which is the default setting, where those comments would be carried over to the new primary index. Furthermore, the old behavior also caused a bug that could prevent command `SHOW CREATE t` from working. [#114354][#114354] -- Previously, when the session variable was set to `use_declarative_schema_changer=off` and there was an attempt to [`ALTER PRIMARY KEY`]({% link v24.1/alter-table.md %}#alter-primary-key) on a table that has unique secondary indexes on new primary key columns, the unique secondary index would still incorrectly have old primary key columns as its `keySuffixColumn` after the `ALTER PRIMARY KEY`. This was problematic because a subsequent dropping of the old primary key columns would unexpectedly drop those unique secondary indexes as well, even without `CASCADE`. [#114622][#114622] -- [`ALTER BACKUP SCHEDULE`]({% link v24.1/alter-backup-schedule.md %}) can now be used to set `updates_cluster_last_backup_time_metric` without providing an explicit value, matching the behavior of the option when specified during [`CREATE SCHEDULE FOR BACKUP`]({% link v24.1/create-schedule-for-backup.md %}). [#113523][#113523] -- Previously, if a table had [secondary indexes]({% link v24.1/schema-design-indexes.md %}) that stored certain columns (`col`) using the [`STORING`]({% link v24.1/indexes.md %}#storing-columns) clause, followed by an [`ALTER PRIMARY KEY`]({% link v24.1/alter-table.md %}#alter-primary-key) to `col`, an incorrect secondary index would persist. The secondary index would continue to have the `STORING` clause, despite the column being part of the primary key and the fact that CockroachDB does not permit secondary indexes to store any primary key columns. Now, after the `ALTER PRIMARY KEY`, the `STORING` clause is dropped on those secondary indexes. [#115214][#115214] -- Fixed a bug that caused uploads to [object-locked buckets]({% link v24.1/use-cloud-storage.md %}) to fail because of the absence of an `MD5` hash. [#115713][#115713] -- [`ALTER PRIMARY KEY`]({% link v24.1/alter-table.md %}#alter-primary-key) now preserves the name of the original primary index when the session variable is `use_declarative_schema_changer=off`. [#115338][#115338] -- Fixed a bug where the [`unique-without-index-not-valid` constraint]({% link v24.1/unique.md %}) added to a table would cause the `create_statement` from `SHOW CREATE t` to not be executable and error with `unique constraint cannot be NOT VALID`. [#115354][#115354] -- Fixed a bug where an empty [full backup]({% link v24.1/take-full-and-incremental-backups.md %}) followed by non-empty incremental backups taken inside an application tenant might not allow a [restore]({% link v24.1/restore.md %}) due to the use of an incorrect SQL codec. [#116316][#116316] -- Fixed a bug in the [row-level TTL]({% link v24.1/row-level-ttl.md %}) job that would cause it to skip expired rows if the primary key of the table included columns of the collated `STRING` or `DECIMAL` type. [#116988][#116988] -- Incorrectly labeled [PL/pgSQL]({% link v24.1/plpgsql.md %}) blocks now return an expected syntax error. [#117608][#117608] -- [`CREATE EXTERNAL CONNECTION IF NOT EXISTS`]({% link v24.1/create-external-connection.md %}) no longer returns an error if the connection already exists. [#117312][#117312] -- CockroachDB now correctly uses the histograms on columns of collated [`STRING`]({% link v24.1/string.md %}) type. The bug has been present since before v22.1. [#117714][#117714] -- Improved an interaction during range [lease transfers]({% link v24.1/architecture/replication-layer.md %}#epoch-based-leases-table-data) that could cause `RETRY_ASYNC_WRITE_FAILURE` errors to be returned to clients. [#117840][#117840] -- Backfilling tables for [`CREATE TABLE AS`]({% link v24.1/create-table-as.md %}) or [`CREATE MATERIALIZED VIEW`]({% link v24.1/create-view.md %}) could get into a retry loop if data was deleted and those jobs took longer than the GC TTL. [#117877][#117877] -- [Decommissioning replicas]({% link v24.1/node-shutdown.md %}) that are part of a mis-replicated range will no longer get stuck on a rebalance operation that was falsely determined to be unsafe. [#117900][#117900] -- A memory leak within the insights system was found to occur when [`sql.metrics.transaction_details.enabled`]({% link v24.1/cluster-settings.md %}) was disabled, while leaving `sql.metrics.statement_details.enabled` enabled. This patch fixes the memory leak by preventing the collection of further statement and transaction insights when `sql.metrics.transaction_details.enabled` is disabled. [#117709][#117709] -- Fixed a rare panic that could happen during a `pg_dump` import that contains a function that has a subquery in one of its arguments, like `SELECT addgeometrycolumn(...)`. Now, attempting to import a `pg_dump` with such a function results in an expected error. [#118569][#118569] -- [`AUTO CREATE STATS`]({% link v24.1/show-jobs.md %}#show-automatic-jobs) jobs could previously lead to growth in an internal system table resulting in slower job-system related queries. [#118589][#118589] -- Fixed an issue in CockroachDB where, if operating on a Linux system outside of a CPU cgroup, the system would repeatedly log the error `unable to get CPU capacity` at 10-second intervals. [#118657][#118657] -- Fixed a bug where casts of [floats]({% link v24.1/float.md %}) to [integers]({% link v24.1/int.md %}) simply truncated the decimal portion. These casts now match the PostgreSQL behavior of rounding to the nearest integer, and in cases of a value halfway between two integers, rounding to the nearest even number. This aligns with the "round half to even" rule or "bankers' rounding", offering greater overall precision across a group of such cast operations. [#117798][#117798] -- Fixed a bug where statements like `ADD COLUMN j INT, ADD UNIQUE WITHOUT INDEX (j)`, which [add new columns]({% link v24.1/alter-table.md %}#add-column) with unique constraints without creating associated indexes, would fail with an internal error. [#118291][#118291] -- Previously, [altering]({% link v24.1/alter-table.md %}) from a [`REGIONAL BY ROW`]({% link v24.1/regional-tables.md %}#regional-by-row-tables) table to a [`REGIONAL BY TABLE`]({% link v24.1/regional-tables.md %}#regional-tables) table could cause leaseholders to never move to the database's primary region. This is now fixed. [#118001][#118001] -- Users with the [VIEWACTIVITY]({% link v24.1/security-reference/authorization.md %}#supported-privileges) privilege can now request statement bundles using `crdb_internal.request_statement_bundle` or through the DB Console [SQL Activity]({% link v24.1/security-reference/authorization.md %}#supported-privileges) page. [#118760][#118760] -- Fixed an internal error with a message like: `LeafTxn ... incompatible with locking request` that occurs when performing an update under [`READ COMMITTED` isolation]({% link v24.1/read-committed.md %}) which cascades to a table with multiple other foreign keys. [#118722][#118722] -- Fixed a bug where [`ALTER PRIMARY KEY`]({% link v24.1/alter-table.md %}#alter-primary-key) could fail with an error `non-nullable column with no value! Index scanned ..` when validating recreated [secondary indexes]({% link v24.1/schema-design-indexes.md %}). [#118843][#118843] -- Fixed a bug where a sequence name allocated by [`SERIAL`]({% link v24.1/serial.md %}) that conflicted with an existing type name would cause an error. [#118861][#118861] -- Fixed a bug where [`COMMENT ON`]({% link v24.1/comment-on.md %}) statements could fail with an "unexpected value" error if multiple `COMMENT` statements were running concurrently. [#119007][#119007] -- Previously, in certain cases, using virtual tables such as `crdb_internal.system_jobs` could result in the internal error `attempting to append refresh spans after the tracked timestamp has moved forward`. This is now fixed. The bug was introduced in CockroachDB v23.1. [#119176][#119176] -- Fixed a bug where operations on the `crdb_internal.leases` table could cause a node to become unavailable due to a deadlock in the leasing subsystem. [#119305][#119305] -- If an individual [replica]({% link v24.1/architecture/replication-layer.md %})'s circuit breaker had tripped but the range was otherwise functional, for example, because the replica was partially partitioned away from the [leaseholder]({% link v24.1/architecture/replication-layer.md %}#leases), it was possible for a gateway to persistently error when contacting this replica instead of retrying against a functional leaseholder elsewhere. The [gateway]({% link v24.1/architecture/life-of-a-distributed-transaction.md %}#gateway) will now retry such errors against other replicas once. [#118737][#118737] -- Fixed a bug in changefeed [webhook sinks]({% link v24.1/changefeed-sinks.md %}#webhook-sink) where the HTTP request body may not be initialized on retries, resulting in the error `http: ContentLength=... with Body length 0`. [#119326][#119326] -- Fixed a bug where rangefeed resolved timestamps could get stuck, continually emitting the log message `pushing old intents failed: range barrier failed, range split`, typically following a [range merge]({% link v24.1/architecture/distribution-layer.md %}#range-merges). [#119512][#119512] -- Fixed a condition where some files were not closed when inspecting backup metadata during BACKUP and RESTORE. Epic: none. [#119625][#119625] -- Fixed a bug where some backup metadata files opened during [`RESTORE`]({% link v24.1/restore.md %}) were not closed. [#119625][#119625] -- Fixed a bug that caused internal errors when executing an [`EXPORT`]({% link v24.1/export.md %}) statement where the query involved sorting by columns not explicitly included in the output, due to hidden columns in the input expression. [#119538][#119538] -- Fixed a bug where a warning about the need to refresh data would remain displayed on the Active Executions view of the [Statements]({% link v24.1/ui-statements-page.md %}#active-executions-view) and [Transactions]({% link v24.1/ui-transactions-page.md %}#active-executions-view) pages despite enabling **Auto Refresh**. [#118675][#118675] +- Fixed a bug that could cause an internal error during distributed execution for an expression like `CASE` that requires its inputs to be the same type with all `NULL` inputs. +- Fixed `NULL` input handling for the geospatial [built-ins]({% link v24.1/functions-and-operators.md %}) `st_pointfromgeohash` and `st_geomfromgeohash`. +- The geospatial `st_makeenvelope` [built-in]({% link v24.1/functions-and-operators.md %}) now correctly supports `xmin` or `ymin` to be greater than `xmax` or `ymax`, respectively. +- Fixed a bug that could cause v23.1 nodes in clusters that had not [finalized the v23.1 version upgrade]({% link v24.1/upgrade-cockroach-version.md %}#step-3-decide-how-the-upgrade-will-be-finalized) to use excessive CPU retrying expected errors related to the incomplete upgrade state. +- [Debug zip]({% link v24.1/cockroach-debug-zip.md %}) now does not fail on corrupted log files. +- Placeholder arguments can now be used in [`SET TRANSACTION`]({% link v24.1/set-transaction.md %}) statements. +- Previously, when the session variable `use_declarative_schema_changer` was set to `off`, [`ALTER PRIMARY KEY`]({% link v24.1/alter-table.md %}#alter-primary-key) would delete any comments associated with the old primary index and old primary key constraint. This is inconsistent with the behavior of `use_declarative_schema_changer=on`, which is the default setting, where those comments would be carried over to the new primary index. Furthermore, the old behavior also caused a bug that could prevent command `SHOW CREATE t` from working. +- Previously, when the session variable was set to `use_declarative_schema_changer=off` and there was an attempt to [`ALTER PRIMARY KEY`]({% link v24.1/alter-table.md %}#alter-primary-key) on a table that has unique secondary indexes on new primary key columns, the unique secondary index would still incorrectly have old primary key columns as its `keySuffixColumn` after the `ALTER PRIMARY KEY`. This was problematic because a subsequent dropping of the old primary key columns would unexpectedly drop those unique secondary indexes as well, even without `CASCADE`. +- [`ALTER BACKUP SCHEDULE`]({% link v24.1/alter-backup-schedule.md %}) can now be used to set `updates_cluster_last_backup_time_metric` without providing an explicit value, matching the behavior of the option when specified during [`CREATE SCHEDULE FOR BACKUP`]({% link v24.1/create-schedule-for-backup.md %}). +- Previously, if a table had [secondary indexes]({% link v24.1/schema-design-indexes.md %}) that stored certain columns (`col`) using the [`STORING`]({% link v24.1/indexes.md %}#storing-columns) clause, followed by an [`ALTER PRIMARY KEY`]({% link v24.1/alter-table.md %}#alter-primary-key) to `col`, an incorrect secondary index would persist. The secondary index would continue to have the `STORING` clause, despite the column being part of the primary key and the fact that CockroachDB does not permit secondary indexes to store any primary key columns. Now, after the `ALTER PRIMARY KEY`, the `STORING` clause is dropped on those secondary indexes. +- Fixed a bug that caused uploads to [object-locked buckets]({% link v24.1/use-cloud-storage.md %}) to fail because of the absence of an `MD5` hash. +- [`ALTER PRIMARY KEY`]({% link v24.1/alter-table.md %}#alter-primary-key) now preserves the name of the original primary index when the session variable is `use_declarative_schema_changer=off`. +- Fixed a bug where the [`unique-without-index-not-valid` constraint]({% link v24.1/unique.md %}) added to a table would cause the `create_statement` from `SHOW CREATE t` to not be executable and error with `unique constraint cannot be NOT VALID`. +- Fixed a bug where an empty [full backup]({% link v24.1/take-full-and-incremental-backups.md %}) followed by non-empty incremental backups taken inside an application tenant might not allow a [restore]({% link v24.1/restore.md %}) due to the use of an incorrect SQL codec. +- Fixed a bug in the [row-level TTL]({% link v24.1/row-level-ttl.md %}) job that would cause it to skip expired rows if the primary key of the table included columns of the collated `STRING` or `DECIMAL` type. +- Incorrectly labeled [PL/pgSQL]({% link v24.1/plpgsql.md %}) blocks now return an expected syntax error. +- [`CREATE EXTERNAL CONNECTION IF NOT EXISTS`]({% link v24.1/create-external-connection.md %}) no longer returns an error if the connection already exists. +- CockroachDB now correctly uses the histograms on columns of collated [`STRING`]({% link v24.1/string.md %}) type. The bug has been present since before v22.1. +- Improved an interaction during range [lease transfers]({% link v24.1/architecture/replication-layer.md %}#epoch-based-leases-table-data) that could cause `RETRY_ASYNC_WRITE_FAILURE` errors to be returned to clients. +- Backfilling tables for [`CREATE TABLE AS`]({% link v24.1/create-table-as.md %}) or [`CREATE MATERIALIZED VIEW`]({% link v24.1/create-view.md %}) could get into a retry loop if data was deleted and those jobs took longer than the GC TTL. +- [Decommissioning replicas]({% link v24.1/node-shutdown.md %}) that are part of a mis-replicated range will no longer get stuck on a rebalance operation that was falsely determined to be unsafe. +- A memory leak within the insights system was found to occur when [`sql.metrics.transaction_details.enabled`]({% link v24.1/cluster-settings.md %}) was disabled, while leaving `sql.metrics.statement_details.enabled` enabled. This patch fixes the memory leak by preventing the collection of further statement and transaction insights when `sql.metrics.transaction_details.enabled` is disabled. +- Fixed a rare panic that could happen during a `pg_dump` import that contains a function that has a subquery in one of its arguments, like `SELECT addgeometrycolumn(...)`. Now, attempting to import a `pg_dump` with such a function results in an expected error. +- [`AUTO CREATE STATS`]({% link v24.1/show-jobs.md %}#show-automatic-jobs) jobs could previously lead to growth in an internal system table resulting in slower job-system related queries. +- Fixed an issue in CockroachDB where, if operating on a Linux system outside of a CPU cgroup, the system would repeatedly log the error `unable to get CPU capacity` at 10-second intervals. +- Fixed a bug where casts of [floats]({% link v24.1/float.md %}) to [integers]({% link v24.1/int.md %}) simply truncated the decimal portion. These casts now match the PostgreSQL behavior of rounding to the nearest integer, and in cases of a value halfway between two integers, rounding to the nearest even number. This aligns with the "round half to even" rule or "bankers' rounding", offering greater overall precision across a group of such cast operations. +- Fixed a bug where statements like `ADD COLUMN j INT, ADD UNIQUE WITHOUT INDEX (j)`, which [add new columns]({% link v24.1/alter-table.md %}#add-column) with unique constraints without creating associated indexes, would fail with an internal error. +- Previously, [altering]({% link v24.1/alter-table.md %}) from a [`REGIONAL BY ROW`]({% link v24.1/regional-tables.md %}#regional-by-row-tables) table to a [`REGIONAL BY TABLE`]({% link v24.1/regional-tables.md %}#regional-tables) table could cause leaseholders to never move to the database's primary region. This is now fixed. +- Users with the [VIEWACTIVITY]({% link v24.1/security-reference/authorization.md %}#supported-privileges) privilege can now request statement bundles using `crdb_internal.request_statement_bundle` or through the DB Console [SQL Activity]({% link v24.1/security-reference/authorization.md %}#supported-privileges) page. +- Fixed an internal error with a message like: `LeafTxn ... incompatible with locking request` that occurs when performing an update under [`READ COMMITTED` isolation]({% link v24.1/read-committed.md %}) which cascades to a table with multiple other foreign keys. +- Fixed a bug where [`ALTER PRIMARY KEY`]({% link v24.1/alter-table.md %}#alter-primary-key) could fail with an error `non-nullable column with no value! Index scanned ..` when validating recreated [secondary indexes]({% link v24.1/schema-design-indexes.md %}). +- Fixed a bug where a sequence name allocated by [`SERIAL`]({% link v24.1/serial.md %}) that conflicted with an existing type name would cause an error. +- Fixed a bug where [`COMMENT ON`]({% link v24.1/comment-on.md %}) statements could fail with an "unexpected value" error if multiple `COMMENT` statements were running concurrently. +- Previously, in certain cases, using virtual tables such as `crdb_internal.system_jobs` could result in the internal error `attempting to append refresh spans after the tracked timestamp has moved forward`. This is now fixed. The bug was introduced in CockroachDB v23.1. +- Fixed a bug where operations on the `crdb_internal.leases` table could cause a node to become unavailable due to a deadlock in the leasing subsystem. +- If an individual [replica]({% link v24.1/architecture/replication-layer.md %})'s circuit breaker had tripped but the range was otherwise functional, for example, because the replica was partially partitioned away from the [leaseholder]({% link v24.1/architecture/replication-layer.md %}#leases), it was possible for a gateway to persistently error when contacting this replica instead of retrying against a functional leaseholder elsewhere. The [gateway]({% link v24.1/architecture/life-of-a-distributed-transaction.md %}#gateway) will now retry such errors against other replicas once. +- Fixed a bug in changefeed [webhook sinks]({% link v24.1/changefeed-sinks.md %}#webhook-sink) where the HTTP request body may not be initialized on retries, resulting in the error `http: ContentLength=... with Body length 0`. +- Fixed a bug where rangefeed resolved timestamps could get stuck, continually emitting the log message `pushing old intents failed: range barrier failed, range split`, typically following a [range merge]({% link v24.1/architecture/distribution-layer.md %}#range-merges). +- Fixed a condition where some files were not closed when inspecting backup metadata during BACKUP and RESTORE. Epic: none. +- Fixed a bug where some backup metadata files opened during [`RESTORE`]({% link v24.1/restore.md %}) were not closed. +- Fixed a bug that caused internal errors when executing an [`EXPORT`]({% link v24.1/export.md %}) statement where the query involved sorting by columns not explicitly included in the output, due to hidden columns in the input expression. +- Fixed a bug where a warning about the need to refresh data would remain displayed on the Active Executions view of the [Statements]({% link v24.1/ui-statements-page.md %}#active-executions-view) and [Transactions]({% link v24.1/ui-transactions-page.md %}#active-executions-view) pages despite enabling **Auto Refresh**.

Performance improvements

-- [Follower reads]({% link v24.1/follower-reads.md %}) for multi-region tables now default to prioritizing replicas in the same [locality]({% link v24.1/table-localities.md %}), when available, with node latency as a tie breaker. Previously, latency was the primary criteria. This can improve the performance and predictability of follower reads. [#112993][#112993] -- During node startup, stores are now loaded in parallel by default, reducing start times for nodes with many stores. [#115285][#115285] -- Improved the efficiency and performance of [encryption at rest]({% link v24.1/security-reference/encryption.md %}#encryption-at-rest). [#115454][#115454] -- Rangefeeds, the infrastructure used for [changefeeds]({% link v24.1/change-data-capture-overview.md %}), now use a more efficient engine that reduces the number of goroutines and the associated Go scheduler pressure and latency. [#114410][#114410] -- Rangefeeds, the infrastructure used for [changefeeds]({% link v24.1/change-data-capture-overview.md %}), now use a more efficient multiplexing protocol. [#114408][#114408] -- The [cost-based optimizer]({% link v24.1/cost-based-optimizer.md %}) now generates constrained scans on indexes containing boolean, computed expressions. [#114798][#114798] -- A separate RPC connection class is now used for most [Raft]({% link v24.1/architecture/replication-layer.md %}#raft) traffic. This improves isolation and reduces interference with foreground SQL traffic, which reduces chances of head-of-line blocking caused by unrelated traffic under high-load conditions. The new `COCKROACH_RAFT_USE_DEFAULT_CONNECTION_CLASS` environment variable can be set to use the default connection class instead (the previous behavior). [#117385][#117385] -- Rangefeed traffic (typically for [changefeeds]({% link v24.1/change-data-capture-overview.md %})) is now separated into its own RPC connection class. This improves isolation and reduces interference with the foreground SQL traffic, which reduces chances of head-of-line blocking caused by unrelated traffic. The new `COCKROACH_RANGEFEED_USE_DEFAULT_CONNECTION_CLASS` environment variable can be set to use the default connection class, the previous default choice for rangefeeds. [#117730][#117730] -- The initial scan traffic for [changefeeds]({% link v24.1/change-data-capture-overview.md %}#stream-row-level-changes-with-changefeeds), which can be significant, now uses a different RPC/TCP connection than the foreground SQL/KV traffic. This reduces interference between workloads, and reduces chances of head-of-line blocking issues. [#117810][#117810] -- [`kafka_sink_config`]({% link v24.1/changefeed-sinks.md %}#kafka-sink-configuration) now supports specifying different client IDs for each changefeed, enabling users to define distinct Kafka quota configurations for each. For example, `CREATE CHANGEFEED FOR ... WITH kafka_sink_config='{"ClientID": "clientID1"}'` [#118643][#118643] -- Added the `changefeed.kafka_throttling_hist_nanos` metric, enhancing visibility into throttling times when CockroachDB operations exceed Kafka's quota limits. [#117693][#117693] -- The [cost-based optimizer]({% link v24.1/cost-based-optimizer.md %}) now generates more efficient query plans for queries with comparisons of [timestamp]({% link v24.1/timestamp.md %}) and [interval]({% link v24.1/interval.md %}) columns, for example, `timestamp_col - '1 day'::INTERVAL > now()`. [#118307][#118307] -- Statements from internal executors (use of SQL queries by the cluster itself) now correctly display when filtering by application name `$ internal` on the Statements page in [SQL Activity]({% link v24.1/ui-overview.md %}#sql-activity). Such statements are hidden when `$ internal` is not specified. [#114498][#114498] +- [Follower reads]({% link v24.1/follower-reads.md %}) for multi-region tables now default to prioritizing replicas in the same [locality]({% link v24.1/table-localities.md %}), when available, with node latency as a tie breaker. Previously, latency was the primary criteria. This can improve the performance and predictability of follower reads. +- During node startup, stores are now loaded in parallel by default, reducing start times for nodes with many stores. +- Improved the efficiency and performance of [encryption at rest]({% link v24.1/security-reference/encryption.md %}#encryption-at-rest). +- Rangefeeds, the infrastructure used for [changefeeds]({% link v24.1/change-data-capture-overview.md %}), now use a more efficient engine that reduces the number of goroutines and the associated Go scheduler pressure and latency. +- Rangefeeds, the infrastructure used for [changefeeds]({% link v24.1/change-data-capture-overview.md %}), now use a more efficient multiplexing protocol. +- The [cost-based optimizer]({% link v24.1/cost-based-optimizer.md %}) now generates constrained scans on indexes containing boolean, computed expressions. +- A separate RPC connection class is now used for most [Raft]({% link v24.1/architecture/replication-layer.md %}#raft) traffic. This improves isolation and reduces interference with foreground SQL traffic, which reduces chances of head-of-line blocking caused by unrelated traffic under high-load conditions. The new `COCKROACH_RAFT_USE_DEFAULT_CONNECTION_CLASS` environment variable can be set to use the default connection class instead (the previous behavior). +- Rangefeed traffic (typically for [changefeeds]({% link v24.1/change-data-capture-overview.md %})) is now separated into its own RPC connection class. This improves isolation and reduces interference with the foreground SQL traffic, which reduces chances of head-of-line blocking caused by unrelated traffic. The new `COCKROACH_RANGEFEED_USE_DEFAULT_CONNECTION_CLASS` environment variable can be set to use the default connection class, the previous default choice for rangefeeds. +- The initial scan traffic for [changefeeds]({% link v24.1/change-data-capture-overview.md %}#stream-row-level-changes-with-changefeeds), which can be significant, now uses a different RPC/TCP connection than the foreground SQL/KV traffic. This reduces interference between workloads, and reduces chances of head-of-line blocking issues. +- [`kafka_sink_config`]({% link v24.1/changefeed-sinks.md %}#kafka-sink-configuration) now supports specifying different client IDs for each changefeed, enabling users to define distinct Kafka quota configurations for each. For example, `CREATE CHANGEFEED FOR ... WITH kafka_sink_config='{"ClientID": "clientID1"}'` +- Added the `changefeed.kafka_throttling_hist_nanos` metric, enhancing visibility into throttling times when CockroachDB operations exceed Kafka's quota limits. +- The [cost-based optimizer]({% link v24.1/cost-based-optimizer.md %}) now generates more efficient query plans for queries with comparisons of [timestamp]({% link v24.1/timestamp.md %}) and [interval]({% link v24.1/interval.md %}) columns, for example, `timestamp_col - '1 day'::INTERVAL > now()`. +- Statements from internal executors (use of SQL queries by the cluster itself) now correctly display when filtering by application name `$ internal` on the Statements page in [SQL Activity]({% link v24.1/ui-overview.md %}#sql-activity). Such statements are hidden when `$ internal` is not specified.
@@ -197,224 +197,3 @@ We would like to thank the following contributors from the CockroachDB community - zyf123123 (first-time contributor)
- -[#108892]: https://github.com/cockroachdb/cockroach/pull/108892 -[#110950]: https://github.com/cockroachdb/cockroach/pull/110950 -[#111179]: https://github.com/cockroachdb/cockroach/pull/111179 -[#111401]: https://github.com/cockroachdb/cockroach/pull/111401 -[#111424]: https://github.com/cockroachdb/cockroach/pull/111424 -[#111895]: https://github.com/cockroachdb/cockroach/pull/111895 -[#111986]: https://github.com/cockroachdb/cockroach/pull/111986 -[#112033]: https://github.com/cockroachdb/cockroach/pull/112033 -[#112118]: https://github.com/cockroachdb/cockroach/pull/112118 -[#112161]: https://github.com/cockroachdb/cockroach/pull/112161 -[#112162]: https://github.com/cockroachdb/cockroach/pull/112162 -[#112203]: https://github.com/cockroachdb/cockroach/pull/112203 -[#112350]: https://github.com/cockroachdb/cockroach/pull/112350 -[#112357]: https://github.com/cockroachdb/cockroach/pull/112357 -[#112971]: https://github.com/cockroachdb/cockroach/pull/112971 -[#112975]: https://github.com/cockroachdb/cockroach/pull/112975 -[#112993]: https://github.com/cockroachdb/cockroach/pull/112993 -[#113094]: https://github.com/cockroachdb/cockroach/pull/113094 -[#113149]: https://github.com/cockroachdb/cockroach/pull/113149 -[#113523]: https://github.com/cockroachdb/cockroach/pull/113523 -[#113599]: https://github.com/cockroachdb/cockroach/pull/113599 -[#113679]: https://github.com/cockroachdb/cockroach/pull/113679 -[#113689]: https://github.com/cockroachdb/cockroach/pull/113689 -[#113722]: https://github.com/cockroachdb/cockroach/pull/113722 -[#113741]: https://github.com/cockroachdb/cockroach/pull/113741 -[#113781]: https://github.com/cockroachdb/cockroach/pull/113781 -[#113860]: https://github.com/cockroachdb/cockroach/pull/113860 -[#113864]: https://github.com/cockroachdb/cockroach/pull/113864 -[#113893]: https://github.com/cockroachdb/cockroach/pull/113893 -[#113993]: https://github.com/cockroachdb/cockroach/pull/113993 -[#114046]: https://github.com/cockroachdb/cockroach/pull/114046 -[#114097]: https://github.com/cockroachdb/cockroach/pull/114097 -[#114148]: https://github.com/cockroachdb/cockroach/pull/114148 -[#114186]: https://github.com/cockroachdb/cockroach/pull/114186 -[#114305]: https://github.com/cockroachdb/cockroach/pull/114305 -[#114332]: https://github.com/cockroachdb/cockroach/pull/114332 -[#114354]: https://github.com/cockroachdb/cockroach/pull/114354 -[#114408]: https://github.com/cockroachdb/cockroach/pull/114408 -[#114410]: https://github.com/cockroachdb/cockroach/pull/114410 -[#114454]: https://github.com/cockroachdb/cockroach/pull/114454 -[#114498]: https://github.com/cockroachdb/cockroach/pull/114498 -[#114599]: https://github.com/cockroachdb/cockroach/pull/114599 -[#114622]: https://github.com/cockroachdb/cockroach/pull/114622 -[#114736]: https://github.com/cockroachdb/cockroach/pull/114736 -[#114746]: https://github.com/cockroachdb/cockroach/pull/114746 -[#114770]: https://github.com/cockroachdb/cockroach/pull/114770 -[#114798]: https://github.com/cockroachdb/cockroach/pull/114798 -[#114863]: https://github.com/cockroachdb/cockroach/pull/114863 -[#114876]: https://github.com/cockroachdb/cockroach/pull/114876 -[#114973]: https://github.com/cockroachdb/cockroach/pull/114973 -[#115048]: https://github.com/cockroachdb/cockroach/pull/115048 -[#115166]: https://github.com/cockroachdb/cockroach/pull/115166 -[#115169]: https://github.com/cockroachdb/cockroach/pull/115169 -[#115214]: https://github.com/cockroachdb/cockroach/pull/115214 -[#115223]: https://github.com/cockroachdb/cockroach/pull/115223 -[#115273]: https://github.com/cockroachdb/cockroach/pull/115273 -[#115285]: https://github.com/cockroachdb/cockroach/pull/115285 -[#115338]: https://github.com/cockroachdb/cockroach/pull/115338 -[#115354]: https://github.com/cockroachdb/cockroach/pull/115354 -[#115442]: https://github.com/cockroachdb/cockroach/pull/115442 -[#115454]: https://github.com/cockroachdb/cockroach/pull/115454 -[#115473]: https://github.com/cockroachdb/cockroach/pull/115473 -[#115511]: https://github.com/cockroachdb/cockroach/pull/115511 -[#115537]: https://github.com/cockroachdb/cockroach/pull/115537 -[#115713]: https://github.com/cockroachdb/cockroach/pull/115713 -[#115722]: https://github.com/cockroachdb/cockroach/pull/115722 -[#115733]: https://github.com/cockroachdb/cockroach/pull/115733 -[#115760]: https://github.com/cockroachdb/cockroach/pull/115760 -[#115833]: https://github.com/cockroachdb/cockroach/pull/115833 -[#116013]: https://github.com/cockroachdb/cockroach/pull/116013 -[#116213]: https://github.com/cockroachdb/cockroach/pull/116213 -[#116316]: https://github.com/cockroachdb/cockroach/pull/116316 -[#116410]: https://github.com/cockroachdb/cockroach/pull/116410 -[#116474]: https://github.com/cockroachdb/cockroach/pull/116474 -[#116498]: https://github.com/cockroachdb/cockroach/pull/116498 -[#116520]: https://github.com/cockroachdb/cockroach/pull/116520 -[#116664]: https://github.com/cockroachdb/cockroach/pull/116664 -[#116673]: https://github.com/cockroachdb/cockroach/pull/116673 -[#116699]: https://github.com/cockroachdb/cockroach/pull/116699 -[#116709]: https://github.com/cockroachdb/cockroach/pull/116709 -[#116778]: https://github.com/cockroachdb/cockroach/pull/116778 -[#116783]: https://github.com/cockroachdb/cockroach/pull/116783 -[#116830]: https://github.com/cockroachdb/cockroach/pull/116830 -[#116835]: https://github.com/cockroachdb/cockroach/pull/116835 -[#116879]: https://github.com/cockroachdb/cockroach/pull/116879 -[#116988]: https://github.com/cockroachdb/cockroach/pull/116988 -[#117011]: https://github.com/cockroachdb/cockroach/pull/117011 -[#117054]: https://github.com/cockroachdb/cockroach/pull/117054 -[#117095]: https://github.com/cockroachdb/cockroach/pull/117095 -[#117117]: https://github.com/cockroachdb/cockroach/pull/117117 -[#117191]: https://github.com/cockroachdb/cockroach/pull/117191 -[#117312]: https://github.com/cockroachdb/cockroach/pull/117312 -[#117357]: https://github.com/cockroachdb/cockroach/pull/117357 -[#117385]: https://github.com/cockroachdb/cockroach/pull/117385 -[#117429]: https://github.com/cockroachdb/cockroach/pull/117429 -[#117520]: https://github.com/cockroachdb/cockroach/pull/117520 -[#117545]: https://github.com/cockroachdb/cockroach/pull/117545 -[#117554]: https://github.com/cockroachdb/cockroach/pull/117554 -[#117560]: https://github.com/cockroachdb/cockroach/pull/117560 -[#117591]: https://github.com/cockroachdb/cockroach/pull/117591 -[#117608]: https://github.com/cockroachdb/cockroach/pull/117608 -[#117636]: https://github.com/cockroachdb/cockroach/pull/117636 -[#117656]: https://github.com/cockroachdb/cockroach/pull/117656 -[#117693]: https://github.com/cockroachdb/cockroach/pull/117693 -[#117709]: https://github.com/cockroachdb/cockroach/pull/117709 -[#117710]: https://github.com/cockroachdb/cockroach/pull/117710 -[#117714]: https://github.com/cockroachdb/cockroach/pull/117714 -[#117730]: https://github.com/cockroachdb/cockroach/pull/117730 -[#117776]: https://github.com/cockroachdb/cockroach/pull/117776 -[#117793]: https://github.com/cockroachdb/cockroach/pull/117793 -[#117798]: https://github.com/cockroachdb/cockroach/pull/117798 -[#117810]: https://github.com/cockroachdb/cockroach/pull/117810 -[#117838]: https://github.com/cockroachdb/cockroach/pull/117838 -[#117840]: https://github.com/cockroachdb/cockroach/pull/117840 -[#117875]: https://github.com/cockroachdb/cockroach/pull/117875 -[#117877]: https://github.com/cockroachdb/cockroach/pull/117877 -[#117900]: https://github.com/cockroachdb/cockroach/pull/117900 -[#117910]: https://github.com/cockroachdb/cockroach/pull/117910 -[#117923]: https://github.com/cockroachdb/cockroach/pull/117923 -[#117928]: https://github.com/cockroachdb/cockroach/pull/117928 -[#117936]: https://github.com/cockroachdb/cockroach/pull/117936 -[#117937]: https://github.com/cockroachdb/cockroach/pull/117937 -[#118001]: https://github.com/cockroachdb/cockroach/pull/118001 -[#118002]: https://github.com/cockroachdb/cockroach/pull/118002 -[#118010]: https://github.com/cockroachdb/cockroach/pull/118010 -[#118241]: https://github.com/cockroachdb/cockroach/pull/118241 -[#118255]: https://github.com/cockroachdb/cockroach/pull/118255 -[#118291]: https://github.com/cockroachdb/cockroach/pull/118291 -[#118300]: https://github.com/cockroachdb/cockroach/pull/118300 -[#118307]: https://github.com/cockroachdb/cockroach/pull/118307 -[#118440]: https://github.com/cockroachdb/cockroach/pull/118440 -[#118476]: https://github.com/cockroachdb/cockroach/pull/118476 -[#118478]: https://github.com/cockroachdb/cockroach/pull/118478 -[#118479]: https://github.com/cockroachdb/cockroach/pull/118479 -[#118502]: https://github.com/cockroachdb/cockroach/pull/118502 -[#118569]: https://github.com/cockroachdb/cockroach/pull/118569 -[#118583]: https://github.com/cockroachdb/cockroach/pull/118583 -[#118589]: https://github.com/cockroachdb/cockroach/pull/118589 -[#118610]: https://github.com/cockroachdb/cockroach/pull/118610 -[#118643]: https://github.com/cockroachdb/cockroach/pull/118643 -[#118644]: https://github.com/cockroachdb/cockroach/pull/118644 -[#118657]: https://github.com/cockroachdb/cockroach/pull/118657 -[#118675]: https://github.com/cockroachdb/cockroach/pull/118675 -[#118676]: https://github.com/cockroachdb/cockroach/pull/118676 -[#118680]: https://github.com/cockroachdb/cockroach/pull/118680 -[#118722]: https://github.com/cockroachdb/cockroach/pull/118722 -[#118737]: https://github.com/cockroachdb/cockroach/pull/118737 -[#118760]: https://github.com/cockroachdb/cockroach/pull/118760 -[#118763]: https://github.com/cockroachdb/cockroach/pull/118763 -[#118781]: https://github.com/cockroachdb/cockroach/pull/118781 -[#118782]: https://github.com/cockroachdb/cockroach/pull/118782 -[#118787]: https://github.com/cockroachdb/cockroach/pull/118787 -[#118843]: https://github.com/cockroachdb/cockroach/pull/118843 -[#118850]: https://github.com/cockroachdb/cockroach/pull/118850 -[#118861]: https://github.com/cockroachdb/cockroach/pull/118861 -[#118960]: https://github.com/cockroachdb/cockroach/pull/118960 -[#119007]: https://github.com/cockroachdb/cockroach/pull/119007 -[#119042]: https://github.com/cockroachdb/cockroach/pull/119042 -[#119104]: https://github.com/cockroachdb/cockroach/pull/119104 -[#119140]: https://github.com/cockroachdb/cockroach/pull/119140 -[#119149]: https://github.com/cockroachdb/cockroach/pull/119149 -[#119176]: https://github.com/cockroachdb/cockroach/pull/119176 -[#119205]: https://github.com/cockroachdb/cockroach/pull/119205 -[#119221]: https://github.com/cockroachdb/cockroach/pull/119221 -[#119250]: https://github.com/cockroachdb/cockroach/pull/119250 -[#119251]: https://github.com/cockroachdb/cockroach/pull/119251 -[#119305]: https://github.com/cockroachdb/cockroach/pull/119305 -[#119323]: https://github.com/cockroachdb/cockroach/pull/119323 -[#119326]: https://github.com/cockroachdb/cockroach/pull/119326 -[#119366]: https://github.com/cockroachdb/cockroach/pull/119366 -[#119411]: https://github.com/cockroachdb/cockroach/pull/119411 -[#119512]: https://github.com/cockroachdb/cockroach/pull/119512 -[#119528]: https://github.com/cockroachdb/cockroach/pull/119528 -[#119538]: https://github.com/cockroachdb/cockroach/pull/119538 -[#119611]: https://github.com/cockroachdb/cockroach/pull/119611 -[#119625]: https://github.com/cockroachdb/cockroach/pull/119625 -[05049deba]: https://github.com/cockroachdb/cockroach/commit/05049deba -[0625489bc]: https://github.com/cockroachdb/cockroach/commit/0625489bc -[08a9c1ae7]: https://github.com/cockroachdb/cockroach/commit/08a9c1ae7 -[08cccf790]: https://github.com/cockroachdb/cockroach/commit/08cccf790 -[0dd1de457]: https://github.com/cockroachdb/cockroach/commit/0dd1de457 -[141c20c89]: https://github.com/cockroachdb/cockroach/commit/141c20c89 -[14220d671]: https://github.com/cockroachdb/cockroach/commit/14220d671 -[1e3eaa26d]: https://github.com/cockroachdb/cockroach/commit/1e3eaa26d -[23228632a]: https://github.com/cockroachdb/cockroach/commit/23228632a -[2545159aa]: https://github.com/cockroachdb/cockroach/commit/2545159aa -[29229633a]: https://github.com/cockroachdb/cockroach/commit/29229633a -[30d4b2ea7]: https://github.com/cockroachdb/cockroach/commit/30d4b2ea7 -[3805f6f0a]: https://github.com/cockroachdb/cockroach/commit/3805f6f0a -[3b2d243f4]: https://github.com/cockroachdb/cockroach/commit/3b2d243f4 -[409975292]: https://github.com/cockroachdb/cockroach/commit/409975292 -[412d6b88b]: https://github.com/cockroachdb/cockroach/commit/412d6b88b -[480882fdb]: https://github.com/cockroachdb/cockroach/commit/480882fdb -[57d260f09]: https://github.com/cockroachdb/cockroach/commit/57d260f09 -[691b544bb]: https://github.com/cockroachdb/cockroach/commit/691b544bb -[69725225f]: https://github.com/cockroachdb/cockroach/commit/69725225f -[6bb93f29a]: https://github.com/cockroachdb/cockroach/commit/6bb93f29a -[6c2183e53]: https://github.com/cockroachdb/cockroach/commit/6c2183e53 -[874b3fc21]: https://github.com/cockroachdb/cockroach/commit/874b3fc21 -[8802beba3]: https://github.com/cockroachdb/cockroach/commit/8802beba3 -[88cfe7d55]: https://github.com/cockroachdb/cockroach/commit/88cfe7d55 -[900408efc]: https://github.com/cockroachdb/cockroach/commit/900408efc -[9fcc551ae]: https://github.com/cockroachdb/cockroach/commit/9fcc551ae -[b01c287bb]: https://github.com/cockroachdb/cockroach/commit/b01c287bb -[b03471454]: https://github.com/cockroachdb/cockroach/commit/b03471454 -[b5799bac6]: https://github.com/cockroachdb/cockroach/commit/b5799bac6 -[b9f2d19a7]: https://github.com/cockroachdb/cockroach/commit/b9f2d19a7 -[ba13697aa]: https://github.com/cockroachdb/cockroach/commit/ba13697aa -[c6ae316e5]: https://github.com/cockroachdb/cockroach/commit/c6ae316e5 -[cad1b02a1]: https://github.com/cockroachdb/cockroach/commit/cad1b02a1 -[cf685c9fa]: https://github.com/cockroachdb/cockroach/commit/cf685c9fa -[d457b0cca]: https://github.com/cockroachdb/cockroach/commit/d457b0cca -[dbff3a09a]: https://github.com/cockroachdb/cockroach/commit/dbff3a09a -[ea8aea78c]: https://github.com/cockroachdb/cockroach/commit/ea8aea78c -[ef4605c72]: https://github.com/cockroachdb/cockroach/commit/ef4605c72 -[f2b7e9f14]: https://github.com/cockroachdb/cockroach/commit/f2b7e9f14 -[f3a28a622]: https://github.com/cockroachdb/cockroach/commit/f3a28a622 -[f67decaf2]: https://github.com/cockroachdb/cockroach/commit/f67decaf2 -[f9241be8c]: https://github.com/cockroachdb/cockroach/commit/f9241be8c -[fd6d12c72]: https://github.com/cockroachdb/cockroach/commit/fd6d12c72 diff --git a/src/current/_includes/releases/v24.1/v24.1.0-alpha.2.md b/src/current/_includes/releases/v24.1/v24.1.0-alpha.2.md index 91703fa7ad2..f0a09093e33 100644 --- a/src/current/_includes/releases/v24.1/v24.1.0-alpha.2.md +++ b/src/current/_includes/releases/v24.1/v24.1.0-alpha.2.md @@ -6,31 +6,31 @@ Release Date: March 11, 2024

Security updates

-- [DB Console](https://www.cockroachlabs.com/docs/v23.2/ui-overview) `session` cookie is now marked `HttpOnly` to prevent it from being read by any JavaScript code. [#119261][#119261] -- [DB Console](https://www.cockroachlabs.com/docs/v23.2/ui-overview) cookies are now marked `Secure` for the browser when the cluster is running in secure mode. [#119261][#119261] +- [DB Console](https://www.cockroachlabs.com/docs/v23.2/ui-overview) `session` cookie is now marked `HttpOnly` to prevent it from being read by any JavaScript code. +- [DB Console](https://www.cockroachlabs.com/docs/v23.2/ui-overview) cookies are now marked `Secure` for the browser when the cluster is running in secure mode.

General changes

-- [Gateways](https://www.cockroachlabs.com/docs/v23.2/architecture/life-of-a-distributed-transaction#gateway) will now detect faulty or stalled [replicas](https://www.cockroachlabs.com/docs/v23.2/architecture/overview#architecture-replica) and use other replicas instead, which can prevent them getting stuck in certain cases (e.g., with [disk stalls](https://www.cockroachlabs.com/docs/v23.2/cluster-setup-troubleshooting#disk-stalls)). This behavior can be disabled via the [cluster setting](https://www.cockroachlabs.com/docs/v23.2/cluster-settings) `kv.dist_sender.circuit_breaker.enabled`. [#118943][#118943] +- [Gateways](https://www.cockroachlabs.com/docs/v23.2/architecture/life-of-a-distributed-transaction#gateway) will now detect faulty or stalled [replicas](https://www.cockroachlabs.com/docs/v23.2/architecture/overview#architecture-replica) and use other replicas instead, which can prevent them getting stuck in certain cases (e.g., with [disk stalls](https://www.cockroachlabs.com/docs/v23.2/cluster-setup-troubleshooting#disk-stalls)). This behavior can be disabled via the [cluster setting](https://www.cockroachlabs.com/docs/v23.2/cluster-settings) `kv.dist_sender.circuit_breaker.enabled`.

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

-- Added a new [`ALTER ROLE ... SUBJECT` option]({% link v24.1/alter-role.md %}#set-the-subject-role-option-for-certificate-based-authentication). This role option can be set to a subject distinguished name in [RFC 2253](https://www.ietf.org/rfc/rfc2253.html) or [RFC 4514](https://www.rfc-editor.org/rfc/rfc4514.html) format. If set, then during client certificate authentication, certs that do not match the configured distinguished name will be rejected. [#119135][#119135] -- [Changefeeds](https://www.cockroachlabs.com/docs/v23.2/create-changefeed) support a new scheme `azure-event-hub://` for Kafka data streaming to Azure event hubs. The `sinkURL` must include mandatory parameters `shared_access_key_name` and `shared_access_key`. By default and as required, the options `tls_enabled=true`, `sasl_handshake=true`, `sasl_enabled=true`, and `sasl_mechanism=PLAIN` are applied, as they are the only supported options. Other parameters such as `topic_name` and `topic_prefix` are also supported. An example URI is: `azure-event-hub://myeventhubs.servicebus.windows.net:9093?shared_access_key_name=abc&shared_access_key=123`. [#115806][#115806] +- Added a new [`ALTER ROLE ... SUBJECT` option]({% link v24.1/alter-role.md %}#set-the-subject-role-option-for-certificate-based-authentication). This role option can be set to a subject distinguished name in [RFC 2253](https://www.ietf.org/rfc/rfc2253.html) or [RFC 4514](https://www.rfc-editor.org/rfc/rfc4514.html) format. If set, then during client certificate authentication, certs that do not match the configured distinguished name will be rejected. +- [Changefeeds](https://www.cockroachlabs.com/docs/v23.2/create-changefeed) support a new scheme `azure-event-hub://` for Kafka data streaming to Azure event hubs. The `sinkURL` must include mandatory parameters `shared_access_key_name` and `shared_access_key`. By default and as required, the options `tls_enabled=true`, `sasl_handshake=true`, `sasl_enabled=true`, and `sasl_mechanism=PLAIN` are applied, as they are the only supported options. Other parameters such as `topic_name` and `topic_prefix` are also supported. An example URI is: `azure-event-hub://myeventhubs.servicebus.windows.net:9093?shared_access_key_name=abc&shared_access_key=123`.

SQL language changes

-- Added an option for node-level [sequence](https://www.cockroachlabs.com/docs/v23.2/serial) caching. All the sessions on the node can share the same cache, which can be concurrently accessed. The `serial_normalization` [session variable](https://www.cockroachlabs.com/docs/v23.2/set-vars#supported-variables) can now be set to the value `sql_sequence_cached_node`. If this value is set, the [cluster setting](https://www.cockroachlabs.com/docs/v23.2/cluster-settings) `sql.defaults.serial_sequences_cache_size` can be used to control the number of values to cache in a node, with a default of 256. The `PER NODE CACHE` sequence option (syntax is `[ [ PER NODE ] CACHE # ]`) is now fully implemented and will allow nodes to cache sequence numbers. A cache size of 1 means there is no cache, and cache sizes of less than 1 are not valid. [#118546][#118546] +- Added an option for node-level [sequence](https://www.cockroachlabs.com/docs/v23.2/serial) caching. All the sessions on the node can share the same cache, which can be concurrently accessed. The `serial_normalization` [session variable](https://www.cockroachlabs.com/docs/v23.2/set-vars#supported-variables) can now be set to the value `sql_sequence_cached_node`. If this value is set, the [cluster setting](https://www.cockroachlabs.com/docs/v23.2/cluster-settings) `sql.defaults.serial_sequences_cache_size` can be used to control the number of values to cache in a node, with a default of 256. The `PER NODE CACHE` sequence option (syntax is `[ [ PER NODE ] CACHE # ]`) is now fully implemented and will allow nodes to cache sequence numbers. A cache size of 1 means there is no cache, and cache sizes of less than 1 are not valid.

Bug fixes

-- Fixed a bug that prevented the use of [PL/pgSQL](https://www.cockroachlabs.com/docs/v23.2/plpgsql) routines with complex variable names that require double quotes. This bug had existed since v23.2. [#119034][#119034] -- Fixed a bug that could cause creation of a syntactically invalid [PL/pgSQL](https://www.cockroachlabs.com/docs/v23.2/plpgsql) routine to return the wrong error. This bug had existed since v23.2. [#119034][#119034] -- Fixed a bug that could result in a syntax error if a [PL/pgSQL](https://www.cockroachlabs.com/docs/v23.2/plpgsql) routine was created with an escaped string constant in the routine body. This bug had existed since v23.2. [#119034][#119034] -- Fixed a bug where running a [changefeed]({% link v23.2/change-data-capture-overview.md %}) that targets a table with a user-defined type column and with the [`envelope` option]({% link v23.2/create-changefeed.md %}#envelope) set to any value other than `wrapped` would cause a node panic due to a nil dereference. [#119639][#119639] -- Fixed a bug where running [`RESTORE`](https://www.cockroachlabs.com/docs/v23.2/restore) on certain backups would open a very large number of connections to the backup storage provider. [#119840][#119840] -- Previously, a user with the `VIEWACTIVITYREDACTED` [privilege](https://www.cockroachlabs.com/docs/v23.2/security-reference/authorization#managing-privileges) could see constants inside of queries that originated from other [users](https://www.cockroachlabs.com/docs/v23.2/security-reference/authorization#roles) in the [`SHOW SESSIONS`](https://www.cockroachlabs.com/docs/v23.2/show-sessions) output. This information is now properly redacted. [#119820][#119820] -- Previously, the [`SHOW QUERIES`](https://www.cockroachlabs.com/docs/v23.2/show-queries) and [`SHOW STATEMENTS`](https://www.cockroachlabs.com/docs/v23.2/show-statements) commands incorrectly required the user to have the `VIEWACTIVITY` or `VIEWACTIVITYREDACTED` [privilege](https://www.cockroachlabs.com/docs/v23.2/security-reference/authorization#managing-privileges). This is now fixed, as a user should always be able to view their own queries, even without this privilege. [#119820][#119820] +- Fixed a bug that prevented the use of [PL/pgSQL](https://www.cockroachlabs.com/docs/v23.2/plpgsql) routines with complex variable names that require double quotes. This bug had existed since v23.2. +- Fixed a bug that could cause creation of a syntactically invalid [PL/pgSQL](https://www.cockroachlabs.com/docs/v23.2/plpgsql) routine to return the wrong error. This bug had existed since v23.2. +- Fixed a bug that could result in a syntax error if a [PL/pgSQL](https://www.cockroachlabs.com/docs/v23.2/plpgsql) routine was created with an escaped string constant in the routine body. This bug had existed since v23.2. +- Fixed a bug where running a [changefeed]({% link v23.2/change-data-capture-overview.md %}) that targets a table with a user-defined type column and with the [`envelope` option]({% link v23.2/create-changefeed.md %}#envelope) set to any value other than `wrapped` would cause a node panic due to a nil dereference. +- Fixed a bug where running [`RESTORE`](https://www.cockroachlabs.com/docs/v23.2/restore) on certain backups would open a very large number of connections to the backup storage provider. +- Previously, a user with the `VIEWACTIVITYREDACTED` [privilege](https://www.cockroachlabs.com/docs/v23.2/security-reference/authorization#managing-privileges) could see constants inside of queries that originated from other [users](https://www.cockroachlabs.com/docs/v23.2/security-reference/authorization#roles) in the [`SHOW SESSIONS`](https://www.cockroachlabs.com/docs/v23.2/show-sessions) output. This information is now properly redacted. +- Previously, the [`SHOW QUERIES`](https://www.cockroachlabs.com/docs/v23.2/show-queries) and [`SHOW STATEMENTS`](https://www.cockroachlabs.com/docs/v23.2/show-statements) commands incorrectly required the user to have the `VIEWACTIVITY` or `VIEWACTIVITYREDACTED` [privilege](https://www.cockroachlabs.com/docs/v23.2/security-reference/authorization#managing-privileges). This is now fixed, as a user should always be able to view their own queries, even without this privilege.
@@ -39,56 +39,3 @@ Release Date: March 11, 2024 This release includes 1939 merged PRs by 109 authors.
- -[#111895]: https://github.com/cockroachdb/cockroach/pull/111895 -[#112162]: https://github.com/cockroachdb/cockroach/pull/112162 -[#112203]: https://github.com/cockroachdb/cockroach/pull/112203 -[#112357]: https://github.com/cockroachdb/cockroach/pull/112357 -[#113149]: https://github.com/cockroachdb/cockroach/pull/113149 -[#113599]: https://github.com/cockroachdb/cockroach/pull/113599 -[#113679]: https://github.com/cockroachdb/cockroach/pull/113679 -[#113741]: https://github.com/cockroachdb/cockroach/pull/113741 -[#113860]: https://github.com/cockroachdb/cockroach/pull/113860 -[#114097]: https://github.com/cockroachdb/cockroach/pull/114097 -[#114148]: https://github.com/cockroachdb/cockroach/pull/114148 -[#114305]: https://github.com/cockroachdb/cockroach/pull/114305 -[#114454]: https://github.com/cockroachdb/cockroach/pull/114454 -[#114498]: https://github.com/cockroachdb/cockroach/pull/114498 -[#114736]: https://github.com/cockroachdb/cockroach/pull/114736 -[#114863]: https://github.com/cockroachdb/cockroach/pull/114863 -[#114876]: https://github.com/cockroachdb/cockroach/pull/114876 -[#114973]: https://github.com/cockroachdb/cockroach/pull/114973 -[#115048]: https://github.com/cockroachdb/cockroach/pull/115048 -[#115169]: https://github.com/cockroachdb/cockroach/pull/115169 -[#115473]: https://github.com/cockroachdb/cockroach/pull/115473 -[#115511]: https://github.com/cockroachdb/cockroach/pull/115511 -[#115806]: https://github.com/cockroachdb/cockroach/pull/115806 -[#116213]: https://github.com/cockroachdb/cockroach/pull/116213 -[#116474]: https://github.com/cockroachdb/cockroach/pull/116474 -[#116699]: https://github.com/cockroachdb/cockroach/pull/116699 -[#116778]: https://github.com/cockroachdb/cockroach/pull/116778 -[#116783]: https://github.com/cockroachdb/cockroach/pull/116783 -[#116879]: https://github.com/cockroachdb/cockroach/pull/116879 -[#117054]: https://github.com/cockroachdb/cockroach/pull/117054 -[#117095]: https://github.com/cockroachdb/cockroach/pull/117095 -[#117117]: https://github.com/cockroachdb/cockroach/pull/117117 -[#117191]: https://github.com/cockroachdb/cockroach/pull/117191 -[#117554]: https://github.com/cockroachdb/cockroach/pull/117554 -[#117937]: https://github.com/cockroachdb/cockroach/pull/117937 -[#118255]: https://github.com/cockroachdb/cockroach/pull/118255 -[#118476]: https://github.com/cockroachdb/cockroach/pull/118476 -[#118502]: https://github.com/cockroachdb/cockroach/pull/118502 -[#118546]: https://github.com/cockroachdb/cockroach/pull/118546 -[#118583]: https://github.com/cockroachdb/cockroach/pull/118583 -[#118780]: https://github.com/cockroachdb/cockroach/pull/118780 -[#118943]: https://github.com/cockroachdb/cockroach/pull/118943 -[#119034]: https://github.com/cockroachdb/cockroach/pull/119034 -[#119135]: https://github.com/cockroachdb/cockroach/pull/119135 -[#119250]: https://github.com/cockroachdb/cockroach/pull/119250 -[#119261]: https://github.com/cockroachdb/cockroach/pull/119261 -[#119323]: https://github.com/cockroachdb/cockroach/pull/119323 -[#119639]: https://github.com/cockroachdb/cockroach/pull/119639 -[#119763]: https://github.com/cockroachdb/cockroach/pull/119763 -[#119807]: https://github.com/cockroachdb/cockroach/pull/119807 -[#119820]: https://github.com/cockroachdb/cockroach/pull/119820 -[#119840]: https://github.com/cockroachdb/cockroach/pull/119840 diff --git a/src/current/_includes/releases/v24.1/v24.1.0-alpha.3.md b/src/current/_includes/releases/v24.1/v24.1.0-alpha.3.md index a9c256e8cf7..b6225d6f010 100644 --- a/src/current/_includes/releases/v24.1/v24.1.0-alpha.3.md +++ b/src/current/_includes/releases/v24.1/v24.1.0-alpha.3.md @@ -6,12 +6,12 @@ Release Date: March 18, 2024

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

-- [`cockroach gen encryption-key`](../v24.1/encryption.html) now accepts a `--version=2` parameter. Version 2 keys activate a new encryption implementation with improved performance. This is expected to become the default in CockroachDB v24.2. [#119913][#119913] +- [`cockroach gen encryption-key`](../v24.1/encryption.html) now accepts a `--version=2` parameter. Version 2 keys activate a new encryption implementation with improved performance. This is expected to become the default in CockroachDB v24.2.

SQL language changes

-- Mutation statements such as [`UPDATE`](../v24.1/update.html) and [`DELETE`](../v24.1/delete.html) as well as locking statements such as [`SELECT FOR UPDATE`](../v24.1/select-for-update.html) are not allowed in read-only transactions or [`AS OF SYSTEM TIME`](../v24.1/as-of-system-time.html) transactions. This fixes an oversight where CockroachDB was allowing mutation statements and locking statements in implicit single-statement transactions using `AS OF SYSTEM TIME`. [#120097][#120097] -- Added support for `RETURN` statements with no expression for routines with `OUT` parameters and routines with a `VOID` return type. [#120043][#120043] +- Mutation statements such as [`UPDATE`](../v24.1/update.html) and [`DELETE`](../v24.1/delete.html) as well as locking statements such as [`SELECT FOR UPDATE`](../v24.1/select-for-update.html) are not allowed in read-only transactions or [`AS OF SYSTEM TIME`](../v24.1/as-of-system-time.html) transactions. This fixes an oversight where CockroachDB was allowing mutation statements and locking statements in implicit single-statement transactions using `AS OF SYSTEM TIME`. +- Added support for `RETURN` statements with no expression for routines with `OUT` parameters and routines with a `VOID` return type. - [`ALTER COLUMN`](../v24.1/alter-table.html#alter-column) can now change columns to an identity column by using the syntax in one of the following: {% include_cached copy-clipboard.html %} @@ -28,25 +28,25 @@ Release Date: March 18, 2024 ALTER TABLE t ALTER COLUMN c SET GENERATED BY DEFAULT ~~~ - [#115889][#115889] + -- Added support for the [PL/pgSQL](../v24.1/plpgsql.html) `NULL` statement. [#119037][#119037] -- [`crdb_internal.leases`](../v24.1/crdb-internal.html) is now behind the [`VIEWCLUSTERMETADATA` privilege](../v24.1/security-reference/authorization.html#supported-privileges). [#120014][#120014] -- [PL/pgSQL](../v24.1/plpgsql.html) blocks can now be nested in a block that has an exception handler. [#120045][#120045] +- Added support for the [PL/pgSQL](../v24.1/plpgsql.html) `NULL` statement. +- [`crdb_internal.leases`](../v24.1/crdb-internal.html) is now behind the [`VIEWCLUSTERMETADATA` privilege](../v24.1/security-reference/authorization.html#supported-privileges). +- [PL/pgSQL](../v24.1/plpgsql.html) blocks can now be nested in a block that has an exception handler.

DB Console changes

-- Resolved an issue where clusters with multiple stores per node may list inaccurate region/node information in the [**Databases**](../v24.1/ui-databases-page.html) page. [#119260][#119260] -- `VIEW` type tables will no longer display in the DB Console [**Databases**](../v24.1/ui-databases-page.html) pages. Previously these would be listed with no information, only displaying errors. [#119890][#119890] -- Fixed an intermittent page crash in the [**Schema Insights**](../v24.1/ui-insights-page.html#schema-insights-tab) tab. [#120137][#120137] -- Fixed a bug where the **Rows written** value was incorrectly showing the **Rows read** value on the [**Insights**](../v24.1/ui-insights-page.html) page. [#120145][#120145] +- Resolved an issue where clusters with multiple stores per node may list inaccurate region/node information in the [**Databases**](../v24.1/ui-databases-page.html) page. +- `VIEW` type tables will no longer display in the DB Console [**Databases**](../v24.1/ui-databases-page.html) pages. Previously these would be listed with no information, only displaying errors. +- Fixed an intermittent page crash in the [**Schema Insights**](../v24.1/ui-insights-page.html#schema-insights-tab) tab. +- Fixed a bug where the **Rows written** value was incorrectly showing the **Rows read** value on the [**Insights**](../v24.1/ui-insights-page.html) page.

Bug fixes

-- Fixed a bug that occurred when using [`ALTER TABLE`](../v24.1/alter-table.html) to drop and re-add a [`CHECK` constraint](../v24.1/check.html) with the same name. [#120008][#120008] -- Fixed a bug in which it was possible to [`SET transaction_read_only = false`](../v24.1/show-vars.html#supported-variables) during an [`AS OF SYSTEM TIME`](../v24.1/as-of-system-time.html) transaction. [#120097][#120097] -- Fixed a bug that caused a slow memory leak that could accumulate when opening many new connections. The bug was present in v22.2.9+ and v23.1+ versions. [#119799][#119799] +- Fixed a bug that occurred when using [`ALTER TABLE`](../v24.1/alter-table.html) to drop and re-add a [`CHECK` constraint](../v24.1/check.html) with the same name. +- Fixed a bug in which it was possible to [`SET transaction_read_only = false`](../v24.1/show-vars.html#supported-variables) during an [`AS OF SYSTEM TIME`](../v24.1/as-of-system-time.html) transaction. +- Fixed a bug that caused a slow memory leak that could accumulate when opening many new connections. The bug was present in v22.2.9+ and v23.1+ versions.

Contributors

@@ -56,19 +56,3 @@ We would like to thank the following contributors from the CockroachDB community - Andrew Delph
- -[#115889]: https://github.com/cockroachdb/cockroach/pull/115889 -[#119037]: https://github.com/cockroachdb/cockroach/pull/119037 -[#119260]: https://github.com/cockroachdb/cockroach/pull/119260 -[#119752]: https://github.com/cockroachdb/cockroach/pull/119752 -[#119799]: https://github.com/cockroachdb/cockroach/pull/119799 -[#119890]: https://github.com/cockroachdb/cockroach/pull/119890 -[#119913]: https://github.com/cockroachdb/cockroach/pull/119913 -[#119996]: https://github.com/cockroachdb/cockroach/pull/119996 -[#120008]: https://github.com/cockroachdb/cockroach/pull/120008 -[#120014]: https://github.com/cockroachdb/cockroach/pull/120014 -[#120043]: https://github.com/cockroachdb/cockroach/pull/120043 -[#120045]: https://github.com/cockroachdb/cockroach/pull/120045 -[#120097]: https://github.com/cockroachdb/cockroach/pull/120097 -[#120137]: https://github.com/cockroachdb/cockroach/pull/120137 -[#120145]: https://github.com/cockroachdb/cockroach/pull/120145 diff --git a/src/current/_includes/releases/v24.1/v24.1.0-alpha.4.md b/src/current/_includes/releases/v24.1/v24.1.0-alpha.4.md index 96142fe3c6d..0b122a66e27 100644 --- a/src/current/_includes/releases/v24.1/v24.1.0-alpha.4.md +++ b/src/current/_includes/releases/v24.1/v24.1.0-alpha.4.md @@ -6,7 +6,7 @@ Release Date: March 25, 2024

Security updates

-- When [configuring logs](../v24.1/configure-logs.html#output-to-files), `file-permissions` are now applied literally, such that `file-permissions: 644` will result in files with permissions matching `644` (instead of the previous behavior's `640`). Previously, CockroachDB's `umask` (which is always at least `007`) was being applied after the `file-permissions` field was used to create files, meaning the resulting permissions did not match those specified in the log configuration. [#120669][#120669] +- When [configuring logs](../v24.1/configure-logs.html#output-to-files), `file-permissions` are now applied literally, such that `file-permissions: 644` will result in files with permissions matching `644` (instead of the previous behavior's `640`). Previously, CockroachDB's `umask` (which is always at least `007`) was being applied after the `file-permissions` field was used to create files, meaning the resulting permissions did not match those specified in the log configuration.

General changes

@@ -21,53 +21,53 @@ Release Date: March 25, 2024 - `storage.disk.weightedio.time` - `storage.disk.iopsinprogress` - The metrics match the definitions of the `sys.host.disk.*` system metrics. [#119885][#119885] + The metrics match the definitions of the `sys.host.disk.*` system metrics.

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

-- `server.controller.default_target_cluster` can now be set to any virtual cluster name by default, including a virtual cluster yet to be created or have service started. [#120080][#120080] -- The [`READ COMMITTED`](../v24.1/read-committed.html) isolation level now requires the cluster to have a valid enterprise license. [#120154][#120154] -- The new boolean changefeed option [`ignore_disable_changefeed_replication`](../v24.1/create-changefeed.html#ignore-disable-changefeed-replication), when set to `true`, prevents the changefeed from filtering events even if CDC filtering is configured via the `disable_changefeed_replication` [session variable](../v24.1/session-variables.html), `sql.ttl.changefeed_replication.disabled` [cluster setting](../v24.1/cluster-settings.html), or the `ttl_disable_changefeed_replication` [table storage parameter](../v24.1/alter-table.html#table-storage-parameters). [#120255][#120255] +- `server.controller.default_target_cluster` can now be set to any virtual cluster name by default, including a virtual cluster yet to be created or have service started. +- The [`READ COMMITTED`](../v24.1/read-committed.html) isolation level now requires the cluster to have a valid enterprise license. +- The new boolean changefeed option [`ignore_disable_changefeed_replication`](../v24.1/create-changefeed.html#ignore-disable-changefeed-replication), when set to `true`, prevents the changefeed from filtering events even if CDC filtering is configured via the `disable_changefeed_replication` [session variable](../v24.1/session-variables.html), `sql.ttl.changefeed_replication.disabled` [cluster setting](../v24.1/cluster-settings.html), or the `ttl_disable_changefeed_replication` [table storage parameter](../v24.1/alter-table.html#table-storage-parameters).

SQL language changes

-- Added support for the [PL/pgSQL](../v24.1/plpgsql.html) `COMMIT` and `ROLLBACK` statements. [#119647][#119647] -- [Identity columns](../v24.1/create-table.html#identity-columns) now support enhanced sequence management through the [`ALTER [COLUMN] column_name SET sequence_option`](../v24.1/alter-table.html#alter-column) and [`ALTER [COLUMN] column_name RESTART [WITH restart]`](../v24.1/alter-table.html#alter-column) commands. This update facilitates the fine-tuning of identity column sequences. [#119432][#119432] -- It is now possible to use the `STRICT` option with [`SELECT ... INTO`](../v24.1/plpgsql.html#assign-a-result-to-a-variable) and [`RETURNING ... INTO`](../v24.1/plpgsql.html#assign-a-result-to-a-variable) in order to enforce that a SQL statement within a [PL/pgSQL](../v24.1/plpgsql.html) routine returns exactly one row. [#120486][#120486] -- Added a [session setting](../v24.1/session-variables.html) `plpgsql_use_strict_into`, which causes PL/pgSQL [`SELECT ... INTO`](../v24.1/plpgsql.html#assign-a-result-to-a-variable) and [`RETURNING ... INTO`](../v24.1/plpgsql.html#assign-a-result-to-a-variable) to require exactly one row from the SQL statement, similar to Oracle behavior. [#120486][#120486] -- Added a new `failure_count INT NOT NULL` column to `crdb_internal.node_statement_statistics`. It represents the number of recorded statement execution failures for the given statement, as a new component of the overall statistics. [#120236][#120236] -- The `FORCE_INVERTED_INDEX` hint causes the [optimizer](../v24.1/cost-based-optimizer.html) to prefer a query plan scan over any inverted index of the hinted table. An error is emitted if no such query plan can be generated. [#120384][#120384] -- The `REPAIRCLUSTERMETADATA` privilege has been aliased to `REPAIRCLUSTER`. Both names can be used interchangeably. [#116844][#116844] +- Added support for the [PL/pgSQL](../v24.1/plpgsql.html) `COMMIT` and `ROLLBACK` statements. +- [Identity columns](../v24.1/create-table.html#identity-columns) now support enhanced sequence management through the [`ALTER [COLUMN] column_name SET sequence_option`](../v24.1/alter-table.html#alter-column) and [`ALTER [COLUMN] column_name RESTART [WITH restart]`](../v24.1/alter-table.html#alter-column) commands. This update facilitates the fine-tuning of identity column sequences. +- It is now possible to use the `STRICT` option with [`SELECT ... INTO`](../v24.1/plpgsql.html#assign-a-result-to-a-variable) and [`RETURNING ... INTO`](../v24.1/plpgsql.html#assign-a-result-to-a-variable) in order to enforce that a SQL statement within a [PL/pgSQL](../v24.1/plpgsql.html) routine returns exactly one row. +- Added a [session setting](../v24.1/session-variables.html) `plpgsql_use_strict_into`, which causes PL/pgSQL [`SELECT ... INTO`](../v24.1/plpgsql.html#assign-a-result-to-a-variable) and [`RETURNING ... INTO`](../v24.1/plpgsql.html#assign-a-result-to-a-variable) to require exactly one row from the SQL statement, similar to Oracle behavior. +- Added a new `failure_count INT NOT NULL` column to `crdb_internal.node_statement_statistics`. It represents the number of recorded statement execution failures for the given statement, as a new component of the overall statistics. +- The `FORCE_INVERTED_INDEX` hint causes the [optimizer](../v24.1/cost-based-optimizer.html) to prefer a query plan scan over any inverted index of the hinted table. An error is emitted if no such query plan can be generated. +- The `REPAIRCLUSTERMETADATA` privilege has been aliased to `REPAIRCLUSTER`. Both names can be used interchangeably.

Operational changes

-- The new [`cockroach start`](../v24.1/cockroach-start.html) option [`--wal-failover=among-stores` or `COCKROACH_WAL_FAILOVER=among-stores`]({% link v24.1/cockroach-start.md %}#write-ahead-log-wal-failover) environment variable will configure a multi-store CockroachDB node to fail over a store's write-ahead log (WAL) to another store's data directory. Failing over the write-ahead log may allow some operations against a store to continue completing, even if the underlying storage is temporarily unavailable. This feature is in [preview]({% link v24.1/cockroachdb-feature-availability.md %}#features-in-preview). [#120509][#120509] -- The new `storage.wal_failover.unhealthy_op_threshold` [cluster setting](../v24.1/cluster-settings.html) allows configuring the latency threshold at which a WAL write is considered unhealthy. [#120509][#120509] +- The new [`cockroach start`](../v24.1/cockroach-start.html) option [`--wal-failover=among-stores` or `COCKROACH_WAL_FAILOVER=among-stores`]({% link v24.1/cockroach-start.md %}#write-ahead-log-wal-failover) environment variable will configure a multi-store CockroachDB node to fail over a store's write-ahead log (WAL) to another store's data directory. Failing over the write-ahead log may allow some operations against a store to continue completing, even if the underlying storage is temporarily unavailable. This feature is in [preview]({% link v24.1/cockroachdb-feature-availability.md %}#features-in-preview). +- The new `storage.wal_failover.unhealthy_op_threshold` [cluster setting](../v24.1/cluster-settings.html) allows configuring the latency threshold at which a WAL write is considered unhealthy. - Two new metrics track the status of the SQL Activity Update job, which pre-aggregates top K information within the SQL statistics subsytem and writes the results to `system.statement_activity` and `system.transaction_activity`: - `sql.stats.activity.updates.successful`: Number of successful updates made by the SQL activity updater job. - - `sql.stats.activity.update.latency`: The latency of updates made by the SQL activity updater job. Includes failed update attempts. [#120522][#120522] -- Added a new counter metric, `sql.stats.flush.done_signals.ignored`, that tracks the number of times the SQL activity update job has ignored the signal that indicates that a flush has completed. This metric may indicate that the SQL activity update job is taking longer than expected to complete. [#120522][#120522] -- Added a new counter metric, `sql.stats.activity.updates.failed`, to measure the number of update attempts made by the SQL activity update job that failed with errors. [#120522][#120522] -- Added a new counter metric, `sql.stats.flush.fingerprint.count`, that tracks the number of unique statement and transaction fingerprints included in the SQL stats flush. [#120522][#120522] -- The `/_status/stores` endpoint now includes `node_id`, `dir`, and `wal_failover_path` fields to show the store's node ID, data directory, and path to the configured WAL failover secondary, if configured. [#120677][#120677] + - `sql.stats.activity.update.latency`: The latency of updates made by the SQL activity updater job. Includes failed update attempts. +- Added a new counter metric, `sql.stats.flush.done_signals.ignored`, that tracks the number of times the SQL activity update job has ignored the signal that indicates that a flush has completed. This metric may indicate that the SQL activity update job is taking longer than expected to complete. +- Added a new counter metric, `sql.stats.activity.updates.failed`, to measure the number of update attempts made by the SQL activity update job that failed with errors. +- Added a new counter metric, `sql.stats.flush.fingerprint.count`, that tracks the number of unique statement and transaction fingerprints included in the SQL stats flush. +- The `/_status/stores` endpoint now includes `node_id`, `dir`, and `wal_failover_path` fields to show the store's node ID, data directory, and path to the configured WAL failover secondary, if configured.

Command-line changes

-- The new `--go-gc-percent` flag of the [`cockroach start`](../v24.1/cockroach-start.html) command controls the garbage collection target percentage of the Go runtime, mirroring the existing `GOGC` environment variable. A garbage collection is triggered when the ratio of freshly allocated data to live data remaining after the previous collection reaches this percentage. If left unspecified and if a Go soft memory limit is configured (i.e., not explicitly disabled via `--max-go-memory` or `GOMEMLIMIT`), the garbage collection target percentage defaults to 300%. Setting the flag to a negative value disables the target percentage garbage collection heuristic, and only the soft memory limit heuristic triggers garbage collection. To monitor the impact of this change in the DB Console, look for an increase in **Memory usage** in the [Hardware dashboard]({% link v24.1/ui-hardware-dashboard.md %}#memory-usage) and an increase in **Go total memory usage** in the [Runtime dashboard]({% link v24.1/ui-runtime-dashboard.md %}#memory-usage). This does not increase the risk of an out-of-memory exception (OOM), because the Go memory limit (controlled by the `--max-go-memory` flag or the `GOMEMLIMIT` environment variable) prevents Go from consuming too much memory. [#119605][#119605] +- The new `--go-gc-percent` flag of the [`cockroach start`](../v24.1/cockroach-start.html) command controls the garbage collection target percentage of the Go runtime, mirroring the existing `GOGC` environment variable. A garbage collection is triggered when the ratio of freshly allocated data to live data remaining after the previous collection reaches this percentage. If left unspecified and if a Go soft memory limit is configured (i.e., not explicitly disabled via `--max-go-memory` or `GOMEMLIMIT`), the garbage collection target percentage defaults to 300%. Setting the flag to a negative value disables the target percentage garbage collection heuristic, and only the soft memory limit heuristic triggers garbage collection. To monitor the impact of this change in the DB Console, look for an increase in **Memory usage** in the [Hardware dashboard]({% link v24.1/ui-hardware-dashboard.md %}#memory-usage) and an increase in **Go total memory usage** in the [Runtime dashboard]({% link v24.1/ui-runtime-dashboard.md %}#memory-usage). This does not increase the risk of an out-of-memory exception (OOM), because the Go memory limit (controlled by the `--max-go-memory` flag or the `GOMEMLIMIT` environment variable) prevents Go from consuming too much memory.

DB Console changes

-- The [**Queues** dashboard](../v24.1/ui-queues-dashboard.html) now includes lease queue metrics. [#119386][#119386] -- The DB Console **SQL Activity** [**Statement Fingerprint**](../v24.1/ui-statements-page.html#statement-fingerprint-page) page has replaced the **Failed?** boolean column with a **Failure Count** column that shows the number of failed executions for the given statement fingerprint.
In the **SQL Activity** table, the same statement fingeprint no longer appears in separate rows for failed executions and successful executions. Instead, they are combined into a single statement fingerprint. [#120236][#120236] -- The DB Console now displays an alert message when a license has expired or will expire in fewer than 15 days. [#120490][#120490] +- The [**Queues** dashboard](../v24.1/ui-queues-dashboard.html) now includes lease queue metrics. +- The DB Console **SQL Activity** [**Statement Fingerprint**](../v24.1/ui-statements-page.html#statement-fingerprint-page) page has replaced the **Failed?** boolean column with a **Failure Count** column that shows the number of failed executions for the given statement fingerprint.
In the **SQL Activity** table, the same statement fingeprint no longer appears in separate rows for failed executions and successful executions. Instead, they are combined into a single statement fingerprint. +- The DB Console now displays an alert message when a license has expired or will expire in fewer than 15 days.

Bug fixes

-- Fixed a bug with [`DROP SCHEMA ... CASCADE`](../v24.1/drop-schema.html) that could lead to dangling function references in other schemas accessing any functions. [#119932][#119932] -- Fixed a bug where a [`RESTORE`](../v24.1/restore.html) of a backup that itself contained a table created by the `RESTORE` of a table with an in-progress [`IMPORT INTO`](../v24.1/import-into.html) would fail to restore all rows. [#120414][#120414] -- Fixed a bug where [identity columns](../v24.1/create-table.html#identity-columns) without any configured sequence options did not display the default values for identity attributes in `information_schema`. [#119459][#119459] -- Fixed a bug where a [`GRANT ... ON ALL TABLES`](../v24.1/grant.html) statement could fail if sequences existed and they did not support a privilege (e.g., `BACKUP`). [#120685][#120685] -- Fixed a bug where an [`EXPLAIN (DDL)`](../v24.1/explain.html) statement would generate event log entries for schema changes that were not executed. [#120563][#120563] +- Fixed a bug with [`DROP SCHEMA ... CASCADE`](../v24.1/drop-schema.html) that could lead to dangling function references in other schemas accessing any functions. +- Fixed a bug where a [`RESTORE`](../v24.1/restore.html) of a backup that itself contained a table created by the `RESTORE` of a table with an in-progress [`IMPORT INTO`](../v24.1/import-into.html) would fail to restore all rows. +- Fixed a bug where [identity columns](../v24.1/create-table.html#identity-columns) without any configured sequence options did not display the default values for identity attributes in `information_schema`. +- Fixed a bug where a [`GRANT ... ON ALL TABLES`](../v24.1/grant.html) statement could fail if sequences existed and they did not support a privilege (e.g., `BACKUP`). +- Fixed a bug where an [`EXPLAIN (DDL)`](../v24.1/explain.html) statement would generate event log entries for schema changes that were not executed.
@@ -76,39 +76,3 @@ Release Date: March 25, 2024 This release includes 153 merged PRs by 179 authors.
- -[#116844]: https://github.com/cockroachdb/cockroach/pull/116844 -[#119386]: https://github.com/cockroachdb/cockroach/pull/119386 -[#119432]: https://github.com/cockroachdb/cockroach/pull/119432 -[#119459]: https://github.com/cockroachdb/cockroach/pull/119459 -[#119605]: https://github.com/cockroachdb/cockroach/pull/119605 -[#119647]: https://github.com/cockroachdb/cockroach/pull/119647 -[#119819]: https://github.com/cockroachdb/cockroach/pull/119819 -[#119847]: https://github.com/cockroachdb/cockroach/pull/119847 -[#119885]: https://github.com/cockroachdb/cockroach/pull/119885 -[#119906]: https://github.com/cockroachdb/cockroach/pull/119906 -[#119932]: https://github.com/cockroachdb/cockroach/pull/119932 -[#120019]: https://github.com/cockroachdb/cockroach/pull/120019 -[#120080]: https://github.com/cockroachdb/cockroach/pull/120080 -[#120135]: https://github.com/cockroachdb/cockroach/pull/120135 -[#120154]: https://github.com/cockroachdb/cockroach/pull/120154 -[#120236]: https://github.com/cockroachdb/cockroach/pull/120236 -[#120237]: https://github.com/cockroachdb/cockroach/pull/120237 -[#120255]: https://github.com/cockroachdb/cockroach/pull/120255 -[#120263]: https://github.com/cockroachdb/cockroach/pull/120263 -[#120384]: https://github.com/cockroachdb/cockroach/pull/120384 -[#120414]: https://github.com/cockroachdb/cockroach/pull/120414 -[#120486]: https://github.com/cockroachdb/cockroach/pull/120486 -[#120490]: https://github.com/cockroachdb/cockroach/pull/120490 -[#120509]: https://github.com/cockroachdb/cockroach/pull/120509 -[#120522]: https://github.com/cockroachdb/cockroach/pull/120522 -[#120563]: https://github.com/cockroachdb/cockroach/pull/120563 -[#120669]: https://github.com/cockroachdb/cockroach/pull/120669 -[#120677]: https://github.com/cockroachdb/cockroach/pull/120677 -[#120685]: https://github.com/cockroachdb/cockroach/pull/120685 -[119853c8d]: https://github.com/cockroachdb/cockroach/commit/119853c8d -[13066e191]: https://github.com/cockroachdb/cockroach/commit/13066e191 -[6fd7ff8b1]: https://github.com/cockroachdb/cockroach/commit/6fd7ff8b1 -[83a77498b]: https://github.com/cockroachdb/cockroach/commit/83a77498b -[87c5b14ae]: https://github.com/cockroachdb/cockroach/commit/87c5b14ae -[b4994a99c]: https://github.com/cockroachdb/cockroach/commit/b4994a99c diff --git a/src/current/_includes/releases/v24.1/v24.1.0-alpha.5.md b/src/current/_includes/releases/v24.1/v24.1.0-alpha.5.md index a16f0a3f67e..1c1db1c6fe0 100644 --- a/src/current/_includes/releases/v24.1/v24.1.0-alpha.5.md +++ b/src/current/_includes/releases/v24.1/v24.1.0-alpha.5.md @@ -6,20 +6,20 @@ Release Date: April 1, 2024

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

-- [Changefeeds]({% link v24.1/change-data-capture-overview.md %}) now default to evenly distributing their work across all replicas, including followers, regardless of leaseholder placement. On upgrade to v24.1, running changefeed jobs will be restarted automatically as part of the upgrade process and will default to distributing work across replicas. To disable this behavior, set the [cluster setting]({% link v24.1/cluster-settings.md %}) `changefeed.random_replica_selection.enabled ` to `false`. If disabled, changefeed planning reverts to its previous behavior for distributing work. [#120077][#120077] -- When [physical cluster replication]({% link v24.1/physical-cluster-replication-overview.md %}) is enabled, the output of the `SHOW VIRTUAL CLUSTER ... WITH REPLICATION STATUS` command now displays replication lag. [#120782][#120782] +- [Changefeeds]({% link v24.1/change-data-capture-overview.md %}) now default to evenly distributing their work across all replicas, including followers, regardless of leaseholder placement. On upgrade to v24.1, running changefeed jobs will be restarted automatically as part of the upgrade process and will default to distributing work across replicas. To disable this behavior, set the [cluster setting]({% link v24.1/cluster-settings.md %}) `changefeed.random_replica_selection.enabled ` to `false`. If disabled, changefeed planning reverts to its previous behavior for distributing work. +- When [physical cluster replication]({% link v24.1/physical-cluster-replication-overview.md %}) is enabled, the output of the `SHOW VIRTUAL CLUSTER ... WITH REPLICATION STATUS` command now displays replication lag. - When [physical cluster replication]({% link v24.1/physical-cluster-replication-overview.md %}) is enabled, the output of the `SHOW VIRTUAL CLUSTER WITH REPLICATION STATUS to 1` command has changed: - The output no longer displays `replication_job_id` or `service_mode` return fields. - The `data_state` field has been renamed to `status`. - - The fields that are displayed are now ordered as follows: `retained_time`, `replicated_time`, `replication_lag`, `cutover_time`, `status`. [#120782][#120782] -- You can now run [physical cluster replication]({% link v24.1/physical-cluster-replication-overview.md %}) from an [existing CockroachDB cluster]({% link v24.1/set-up-physical-cluster-replication.md %}#set-up-pcr-from-an-existing-cluster), without [cluster virtualization]({% link v24.1/cluster-virtualization-overview.md %}) enabled, to a standby cluster with cluster virtualization enabled. [#122001][#122001] + - The fields that are displayed are now ordered as follows: `retained_time`, `replicated_time`, `replication_lag`, `cutover_time`, `status`. +- You can now run [physical cluster replication]({% link v24.1/physical-cluster-replication-overview.md %}) from an [existing CockroachDB cluster]({% link v24.1/set-up-physical-cluster-replication.md %}#set-up-pcr-from-an-existing-cluster), without [cluster virtualization]({% link v24.1/cluster-virtualization-overview.md %}) enabled, to a standby cluster with cluster virtualization enabled.

SQL language changes

-- You can now specify a condition for the [PL/pgSQL statements]({% link v24.1/plpgsql.md %}) `EXIT` and `CONTINUE`. [#120686][#120686] -- A [stored procedure]({% link v24.1/stored-procedures.md %}) can now invoke another stored procedure using a [`CALL` statement]({% link v24.1/call.md %}). [#120674][#120674] -- You can now use a [`SET TRANSACTION`]({% link v24.1/set-transaction.md %}) statement within a [PL/pgSQL stored procedure]({% link v24.1/plpgsql.md %}) to configure the transaction isolation level, timestamp, or priority, or to set the transaction to read-only. A `SET TRANSACTION` statement must immediately follow a `COMMIT` or `ROLLBACK`, with no other statements or block boundaries between them. [#120456][#120456] -- The new [session variable]({% link v24.1/session-variables.md %}) `optimizer_use_virtual_computed_column_stats`, when enabled, configures the [cost-based optimizer]({% link v24.1/cost-based-optimizer.md %}) to use [table statistics]({% link v24.1/show-statistics.md %}) on virtual computed columns. [#120668][#120668] +- You can now specify a condition for the [PL/pgSQL statements]({% link v24.1/plpgsql.md %}) `EXIT` and `CONTINUE`. +- A [stored procedure]({% link v24.1/stored-procedures.md %}) can now invoke another stored procedure using a [`CALL` statement]({% link v24.1/call.md %}). +- You can now use a [`SET TRANSACTION`]({% link v24.1/set-transaction.md %}) statement within a [PL/pgSQL stored procedure]({% link v24.1/plpgsql.md %}) to configure the transaction isolation level, timestamp, or priority, or to set the transaction to read-only. A `SET TRANSACTION` statement must immediately follow a `COMMIT` or `ROLLBACK`, with no other statements or block boundaries between them. +- The new [session variable]({% link v24.1/session-variables.md %}) `optimizer_use_virtual_computed_column_stats`, when enabled, configures the [cost-based optimizer]({% link v24.1/cost-based-optimizer.md %}) to use [table statistics]({% link v24.1/show-statistics.md %}) on virtual computed columns. - An [identity column]({% link v24.1/create-table.md %}#identity-columns) can now drop the `IDENTITY` constraint and related sequence using the following SQL statement: {% include_cached copy-clipboard.html %} @@ -27,53 +27,53 @@ Release Date: April 1, 2024 ALTER TABLE {table_name} ALTER COLUMN {column_name} DROP IDENTITY [IF EXISTS]; ~~~ - `IF EXISTS` is optional, and skips the command if the column is not an identity column. [#119263][#119263] + `IF EXISTS` is optional, and skips the command if the column is not an identity column. -- A shared lock that is acquired explicitly using [`SELECT FOR SHARE`]({% link v24.1/select-for-update.md %}) or implicitly by a [read-committed transaction]({% link v24.1/read-committed.md %}), can now be re-acquired with higher strength by either using a [`SELECT FOR UPDATE`]({% link v24.1/select-for-update.md %}) statement or by writing to the key. [#119671][#119671] -- [Stored procedures]({% link v24.1/stored-procedures.md %}) now support `OUT` and `INOUT` parameter classes. [#120851][#120851] -- The [PL/pgSQL]({% link v24.1/plpgsql.md %}) `EXIT` and `CONTINUE` statements can now use labels to specify which loop or block is the target. [#120733][#120733] +- A shared lock that is acquired explicitly using [`SELECT FOR SHARE`]({% link v24.1/select-for-update.md %}) or implicitly by a [read-committed transaction]({% link v24.1/read-committed.md %}), can now be re-acquired with higher strength by either using a [`SELECT FOR UPDATE`]({% link v24.1/select-for-update.md %}) statement or by writing to the key. +- [Stored procedures]({% link v24.1/stored-procedures.md %}) now support `OUT` and `INOUT` parameter classes. +- The [PL/pgSQL]({% link v24.1/plpgsql.md %}) `EXIT` and `CONTINUE` statements can now use labels to specify which loop or block is the target.

Operational changes

-- You can now enable asynchronous buffering of `file-group` [log sinks]({% link v24.1/configure-logs.md %}) using the `buffering` [configuration options]({% link v24.1/configure-logs.md %}#log-buffering-for-network-sinks) either by default or to an individual `file-group`. The `buffering` configuration option is incompatible with the `buffered-writes` configuration option. To try the `buffering` option, you must set `buffered-writes: false`. Cockroach Labs recommends setting `max-staleness` to `1s` and `flush-trigger-size` to `256KiB`. [#120428][#120428] -- A minimum [Raft scheduler]({% link v24.1/architecture/replication-layer.md %}#raft) concurrency is now enforced per store so that nodes with many stores do not spread workers too thin. This helps to avoid high scheduler latency across replicas on a store when load is imbalanced. [#120162][#120162] -- The new [metrics]({% link v24.1/metrics.md %}) `kv.split.estimated_stats` and `kv.split.total_bytes_estimates` track the number of splits that produce [MVCC]({% link v24.1/architecture/storage-layer.md %}#mvcc) statistic estimates and the total bytes of estimates produced. [#119894][#119894] -- The new [cluster setting]({% link v24.1/cluster-settings.md %}) `storage.sstable.compression_algorithm` configures the compression algorithm used when compressing sstable blocks. [#120784][#120784] -- The new [cluster setting]({% link v24.1/cluster-settings.md %}) `kv.dist_sender.proxy.enabled`, which is enabled by default, causes proxy requests to be routed through a follower replica when the leaseholder is unavailable. [#117340][#117340] -- The new startup flag `--wal-failover` allows you to explicitly set the path for WAL failover of a single-store node. [#120783][#120783] -- Cluster virtualization is now enabled using either of the new startup flags `--virtualized` or `--virtualized-empty` instead of the `--config-profile` flag. [#120813][#120813] +- You can now enable asynchronous buffering of `file-group` [log sinks]({% link v24.1/configure-logs.md %}) using the `buffering` [configuration options]({% link v24.1/configure-logs.md %}#log-buffering-for-network-sinks) either by default or to an individual `file-group`. The `buffering` configuration option is incompatible with the `buffered-writes` configuration option. To try the `buffering` option, you must set `buffered-writes: false`. Cockroach Labs recommends setting `max-staleness` to `1s` and `flush-trigger-size` to `256KiB`. +- A minimum [Raft scheduler]({% link v24.1/architecture/replication-layer.md %}#raft) concurrency is now enforced per store so that nodes with many stores do not spread workers too thin. This helps to avoid high scheduler latency across replicas on a store when load is imbalanced. +- The new [metrics]({% link v24.1/metrics.md %}) `kv.split.estimated_stats` and `kv.split.total_bytes_estimates` track the number of splits that produce [MVCC]({% link v24.1/architecture/storage-layer.md %}#mvcc) statistic estimates and the total bytes of estimates produced. +- The new [cluster setting]({% link v24.1/cluster-settings.md %}) `storage.sstable.compression_algorithm` configures the compression algorithm used when compressing sstable blocks. +- The new [cluster setting]({% link v24.1/cluster-settings.md %}) `kv.dist_sender.proxy.enabled`, which is enabled by default, causes proxy requests to be routed through a follower replica when the leaseholder is unavailable. +- The new startup flag `--wal-failover` allows you to explicitly set the path for WAL failover of a single-store node. +- Cluster virtualization is now enabled using either of the new startup flags `--virtualized` or `--virtualized-empty` instead of the `--config-profile` flag. - The following metrics, which track the SQL statistics subsystem's task to flush in-memory statistics to persisted storage, are now more consistent with other metrics used in the subsystem. - `sql.stats.flushes.successful`: Number of times SQL statistics have been flushed successfully to persistent storage. - `sql.stats.flushes.failed`: Number of attempted SQL statistics flushes that failed with errors. - - `sql.stats.flush.latency`: The latency of attempted SQL statistics flushes to persistent storage, including both successes and failures. [#120709][#120709] + - `sql.stats.flush.latency`: The latency of attempted SQL statistics flushes to persistent storage, including both successes and failures. - The following new [metrics]({% link v24.1/metrics.md %}) track the number and outcome of proxy requests when `kv.dist_sender.proxy.enabled` is set to `true`: - `distsender.rpc.proxy.sent` - `distsender.rpc.proxy.err` - `distsender.rpc.proxy.forward.sent` - `distsender.rpc.proxy.forward.err` - Cockroach Labs recommends monitoring and alerting on `distsender.rpc.proxy.sent`, because it indicates a possible network partition. [#120239][#120239] + Cockroach Labs recommends monitoring and alerting on `distsender.rpc.proxy.sent`, because it indicates a possible network partition. -- The `provisioned-rate` field of a node's store specification can no longer be used to add constraints for the disk name or bandwidth. By default, bandwidth is constrained according to the [cluster setting]({% link v24.1/cluster-settings.md %}) `kv.store.admission.provisioned_bandwidth`. To override this setting for a specific node, the storage specification must contain `provisioned-rate=bandwidth={bandwidth-bytes/s}`. [#120895][#120895] -- Removal of the [cluster setting]({% link v24.1/cluster-settings.md %}) `kv.rangefeed.scheduler.enabled`, which was announced in [v24.1.0-alpha.1](https://www.cockroachlabs.com/docs/releases/v24.1.html#v24-1-0-alpha-1), has been reverted, and the cluster setting is reinstated. [#121164][#121164] +- The `provisioned-rate` field of a node's store specification can no longer be used to add constraints for the disk name or bandwidth. By default, bandwidth is constrained according to the [cluster setting]({% link v24.1/cluster-settings.md %}) `kv.store.admission.provisioned_bandwidth`. To override this setting for a specific node, the storage specification must contain `provisioned-rate=bandwidth={bandwidth-bytes/s}`. +- Removal of the [cluster setting]({% link v24.1/cluster-settings.md %}) `kv.rangefeed.scheduler.enabled`, which was announced in [v24.1.0-alpha.1](https://www.cockroachlabs.com/docs/releases/v24.1.html#v24-1-0-alpha-1), has been reverted, and the cluster setting is reinstated.

DB Console changes

-- In generated statement fingerprints in the DB Console [**Statements** page]({% link v24.1/ui-statements-page.md %}), lists with only literals or placeholders or similar subexpressions are shortened to their first item followed by "__more__". [#120507][#120507] +- In generated statement fingerprints in the DB Console [**Statements** page]({% link v24.1/ui-statements-page.md %}), lists with only literals or placeholders or similar subexpressions are shortened to their first item followed by "__more__".

Bug fixes

- Fixed a bug introduced in v23.2 that could cause a [PL/pgSQL]({% link v24.1/plpgsql.md %}) routine to return incorrect results when the routine included: 1. At least one parameter. - 1. An `IF` statement with one leak-proof branch and one branch with side effects. [#120451][#120451] -- Fixed a rare bug where a `BACKUP` command issued shortly after an [`ALTER TABLE {table_name} SET (exclude_data_from_backup = true)`]({% link v24.1/take-full-and-incremental-backups.md %}#exclude-a-tables-data-from-backups) could exclude data from an unrelated table from the backup. [#120188][#120188] -- Fixed a behavior where a memory exhaustion error during a schema change was treated as a permanent failure and reverted. Such schema changes are now retried instead of reverted. [#120806][#120806] -- Fixed a bug where the `attname` for a dropped column was not correctly padded with 8 `.` characters to be compatible with PostgreSQL. [#120861][#120861] + 1. An `IF` statement with one leak-proof branch and one branch with side effects. +- Fixed a rare bug where a `BACKUP` command issued shortly after an [`ALTER TABLE {table_name} SET (exclude_data_from_backup = true)`]({% link v24.1/take-full-and-incremental-backups.md %}#exclude-a-tables-data-from-backups) could exclude data from an unrelated table from the backup. +- Fixed a behavior where a memory exhaustion error during a schema change was treated as a permanent failure and reverted. Such schema changes are now retried instead of reverted. +- Fixed a bug where the `attname` for a dropped column was not correctly padded with 8 `.` characters to be compatible with PostgreSQL.

Performance improvements

-- Splits no longer hold latches for time proportional to the range size while computing MVCC statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. [#119894][#119894] -- The [cost-based optimizer]({% link v24.1/cost-based-optimizer.md %}) now generates more efficient query plans for some queries with `OFFSET` clauses. [#121160][#121160] +- Splits no longer hold latches for time proportional to the range size while computing MVCC statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. +- The [cost-based optimizer]({% link v24.1/cost-based-optimizer.md %}) now generates more efficient query plans for some queries with `OFFSET` clauses.
@@ -85,35 +85,3 @@ We would like to thank the following contributors from the CockroachDB community - Andrew Delph
- - -[#117340]: https://github.com/cockroachdb/cockroach/pull/117340 -[#119263]: https://github.com/cockroachdb/cockroach/pull/119263 -[#119671]: https://github.com/cockroachdb/cockroach/pull/119671 -[#119894]: https://github.com/cockroachdb/cockroach/pull/119894 -[#120077]: https://github.com/cockroachdb/cockroach/pull/120077 -[#120162]: https://github.com/cockroachdb/cockroach/pull/120162 -[#120188]: https://github.com/cockroachdb/cockroach/pull/120188 -[#120239]: https://github.com/cockroachdb/cockroach/pull/120239 -[#120428]: https://github.com/cockroachdb/cockroach/pull/120428 -[#120451]: https://github.com/cockroachdb/cockroach/pull/120451 -[#120456]: https://github.com/cockroachdb/cockroach/pull/120456 -[#120507]: https://github.com/cockroachdb/cockroach/pull/120507 -[#120668]: https://github.com/cockroachdb/cockroach/pull/120668 -[#120674]: https://github.com/cockroachdb/cockroach/pull/120674 -[#120686]: https://github.com/cockroachdb/cockroach/pull/120686 -[#120709]: https://github.com/cockroachdb/cockroach/pull/120709 -[#120733]: https://github.com/cockroachdb/cockroach/pull/120733 -[#120782]: https://github.com/cockroachdb/cockroach/pull/120782 -[#120783]: https://github.com/cockroachdb/cockroach/pull/120783 -[#120784]: https://github.com/cockroachdb/cockroach/pull/120784 -[#120806]: https://github.com/cockroachdb/cockroach/pull/120806 -[#120813]: https://github.com/cockroachdb/cockroach/pull/120813 -[#120846]: https://github.com/cockroachdb/cockroach/pull/120846 -[#120851]: https://github.com/cockroachdb/cockroach/pull/120851 -[#120861]: https://github.com/cockroachdb/cockroach/pull/120861 -[#120895]: https://github.com/cockroachdb/cockroach/pull/120895 -[#121023]: https://github.com/cockroachdb/cockroach/pull/121023 -[#121160]: https://github.com/cockroachdb/cockroach/pull/121160 -[#121164]: https://github.com/cockroachdb/cockroach/pull/121164 -[#122001]: https://github.com/cockroachdb/cockroach/pull/122001 diff --git a/src/current/_includes/releases/v24.1/v24.1.0-beta.1.md b/src/current/_includes/releases/v24.1/v24.1.0-beta.1.md index 4a0ee755e5f..c71c3aaf6df 100644 --- a/src/current/_includes/releases/v24.1/v24.1.0-beta.1.md +++ b/src/current/_includes/releases/v24.1/v24.1.0-beta.1.md @@ -6,31 +6,31 @@ Release Date: April 17, 2024

SQL language changes

-- [`SHOW JOBS`]({% link v24.1/show-jobs.md %}) no longer displays some internal retry counter columns (`last_run`, `next_run`, `num_runs`) and now only shows the `statement`, `trace_id`, and `execution_errors` columns when inspecting a specific job ID or IDs. [#121286][#121286] -- [`SHOW JOBS`]({% link v24.1/show-jobs.md %}) now shortens long job descriptions to 100 characters to make the table easier to read while the full description and statement can be inspected using `SHOW JOB` or `SHOW JOBS` on specific job IDs. [#121286][#121286] -- Extended [`pg_depend`]({% link v24.1/pg-catalog.md %}) to include dependencies between UDFs. [#121313][#121313] -- With [`sql_safe_updates`]({% link v24.1/session-variables.md %}) set to `true`, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link v24.1/select-for-update.md %}) statements now return an error if they do not contain either a `WHERE` clause or a `LIMIT` clause. Also, `UPDATE` and `DELETE` statements without `WHERE` clauses but with `LIMIT` clauses now bypass `sql_safe_updates`, which better matches MySQL behavior. [#121466][#121466] -- Added support for [PL/pgSQL]({% link v24.1/plpgsql.md %}) `CALL` statements. It is now possible to call a stored procedure from a PL/pgSQL routine. [#121743][#121743] -- `DEFAULT` expressions for input parameters of [user-defined functions]({% link v24.1/user-defined-functions.md %}) and stored procedures are now supported. [#121811][#121811] +- [`SHOW JOBS`]({% link v24.1/show-jobs.md %}) no longer displays some internal retry counter columns (`last_run`, `next_run`, `num_runs`) and now only shows the `statement`, `trace_id`, and `execution_errors` columns when inspecting a specific job ID or IDs. +- [`SHOW JOBS`]({% link v24.1/show-jobs.md %}) now shortens long job descriptions to 100 characters to make the table easier to read while the full description and statement can be inspected using `SHOW JOB` or `SHOW JOBS` on specific job IDs. +- Extended [`pg_depend`]({% link v24.1/pg-catalog.md %}) to include dependencies between UDFs. +- With [`sql_safe_updates`]({% link v24.1/session-variables.md %}) set to `true`, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link v24.1/select-for-update.md %}) statements now return an error if they do not contain either a `WHERE` clause or a `LIMIT` clause. Also, `UPDATE` and `DELETE` statements without `WHERE` clauses but with `LIMIT` clauses now bypass `sql_safe_updates`, which better matches MySQL behavior. +- Added support for [PL/pgSQL]({% link v24.1/plpgsql.md %}) `CALL` statements. It is now possible to call a stored procedure from a PL/pgSQL routine. +- `DEFAULT` expressions for input parameters of [user-defined functions]({% link v24.1/user-defined-functions.md %}) and stored procedures are now supported.

Command-line changes

-- The [`--enterprise-encryption`]({% link v24.1/encryption.md %}#starting-a-node-with-encryption) flag now accepts the special value `path=*` to apply the specified keys to all stores. [#121111][#121111] +- The [`--enterprise-encryption`]({% link v24.1/encryption.md %}#starting-a-node-with-encryption) flag now accepts the special value `path=*` to apply the specified keys to all stores.

DB Console changes

-- The **Commit Latency** chart in the [**Changefeeds** dashboard]({% link v24.1/ui-cdc-dashboard.md %}) now aggregates by max instead of by sum for multi-node [changefeeds]({% link v24.1/change-data-capture-overview.md %}). This more accurately reflects the amount of time for events to be acknowledged by the downstream sink. [#120787][#120787] -- Introduced a license expiration message in the [DB Console]({% link v24.1/ui-overview.md %}) in the top-right corner of the primary header. This message indicates the remaining days before license expiration for clusters with an {{ site.data.products.enterprise }} or trial license. [#120830][#120830] -- The [**Jobs** table]({% link v24.1/ui-jobs-page.md %}#jobs-table) page no longer includes two columns related to a deprecated internal implementation detail (last execution time and execution count). [#121286][#121286] -- The timeseries graphs shown on the [**SQL Activity**]({% link v24.1/ui-overview.md %}#sql-activity) statement details page in the DB Console will now render properly, after fixing a bug related to setting the time range of the charts. [#121461][#121461] -- [Index recommendations]({% link v24.1/ui-databases-page.md %}#index-recommendations) in the DB Console will now function properly for indexes on tables or columns whose names contain quotation marks or whitespace. For example: `CREATE INDEX ON "my table" ("my col");`. [#122120][#122120] +- The **Commit Latency** chart in the [**Changefeeds** dashboard]({% link v24.1/ui-cdc-dashboard.md %}) now aggregates by max instead of by sum for multi-node [changefeeds]({% link v24.1/change-data-capture-overview.md %}). This more accurately reflects the amount of time for events to be acknowledged by the downstream sink. +- Introduced a license expiration message in the [DB Console]({% link v24.1/ui-overview.md %}) in the top-right corner of the primary header. This message indicates the remaining days before license expiration for clusters with an {{ site.data.products.enterprise }} or trial license. +- The [**Jobs** table]({% link v24.1/ui-jobs-page.md %}#jobs-table) page no longer includes two columns related to a deprecated internal implementation detail (last execution time and execution count). +- The timeseries graphs shown on the [**SQL Activity**]({% link v24.1/ui-overview.md %}#sql-activity) statement details page in the DB Console will now render properly, after fixing a bug related to setting the time range of the charts. +- [Index recommendations]({% link v24.1/ui-databases-page.md %}#index-recommendations) in the DB Console will now function properly for indexes on tables or columns whose names contain quotation marks or whitespace. For example: `CREATE INDEX ON "my table" ("my col");`.

Bug fixes

-- Sequence options for `NO MINVALUE` and `NO MAXVALUE` now match PostgreSQL behavior. Sequence `MINVALUE` and `MAXVALUE` automatically adjust to new types bounds mirroring behavior of PostgreSQL. [#121310][#121310] -- CockroachDB could previously "leak" reported memory usage as accounted by the internal memory accounting system, the limit for which is configured with the `--max-sql-memory` flag, on long-running sessions that issue many (hundreds of thousands or more) transactions. This, in turn, could result in `"root: memory budget exceeded"` errors for other queries. This bug was present in versions v23.1.17 and v23.2.3 and is now fixed. [#121873][#121873] -- CockroachDB could previously incorrectly evaluate `IN` expressions that had `INT2` or `INT4` type on the left side and values outside of the range of the left side on the right side. The bug has been present since at least v21.1 and is now fixed. [#121954][#121954] -- Fixed a slow memory leak in the deprecated [Pub/Sub changefeeds]({% link v24.1/changefeed-sinks.md %}), which can accumulate when restarting or canceling many deprecated Pub/Sub changefeeds. The bug had been present since the deprecated Pub/Sub changefeed was introduced in a testing release of v22.1. [#121867][#121867] +- Sequence options for `NO MINVALUE` and `NO MAXVALUE` now match PostgreSQL behavior. Sequence `MINVALUE` and `MAXVALUE` automatically adjust to new types bounds mirroring behavior of PostgreSQL. +- CockroachDB could previously "leak" reported memory usage as accounted by the internal memory accounting system, the limit for which is configured with the `--max-sql-memory` flag, on long-running sessions that issue many (hundreds of thousands or more) transactions. This, in turn, could result in `"root: memory budget exceeded"` errors for other queries. This bug was present in versions v23.1.17 and v23.2.3 and is now fixed. +- CockroachDB could previously incorrectly evaluate `IN` expressions that had `INT2` or `INT4` type on the left side and values outside of the range of the left side on the right side. The bug has been present since at least v21.1 and is now fixed. +- Fixed a slow memory leak in the deprecated [Pub/Sub changefeeds]({% link v24.1/changefeed-sinks.md %}), which can accumulate when restarting or canceling many deprecated Pub/Sub changefeeds. The bug had been present since the deprecated Pub/Sub changefeed was introduced in a testing release of v22.1.
@@ -39,18 +39,3 @@ Release Date: April 17, 2024 This release includes 134 merged PRs by 36 authors.
- -[#120787]: https://github.com/cockroachdb/cockroach/pull/120787 -[#120830]: https://github.com/cockroachdb/cockroach/pull/120830 -[#121111]: https://github.com/cockroachdb/cockroach/pull/121111 -[#121286]: https://github.com/cockroachdb/cockroach/pull/121286 -[#121310]: https://github.com/cockroachdb/cockroach/pull/121310 -[#121313]: https://github.com/cockroachdb/cockroach/pull/121313 -[#121461]: https://github.com/cockroachdb/cockroach/pull/121461 -[#121466]: https://github.com/cockroachdb/cockroach/pull/121466 -[#121743]: https://github.com/cockroachdb/cockroach/pull/121743 -[#121811]: https://github.com/cockroachdb/cockroach/pull/121811 -[#121867]: https://github.com/cockroachdb/cockroach/pull/121867 -[#121873]: https://github.com/cockroachdb/cockroach/pull/121873 -[#121954]: https://github.com/cockroachdb/cockroach/pull/121954 -[#122120]: https://github.com/cockroachdb/cockroach/pull/122120 diff --git a/src/current/_includes/releases/v24.1/v24.1.0-beta.2.md b/src/current/_includes/releases/v24.1/v24.1.0-beta.2.md index d4110a09d5a..e526d492c89 100644 --- a/src/current/_includes/releases/v24.1/v24.1.0-beta.2.md +++ b/src/current/_includes/releases/v24.1/v24.1.0-beta.2.md @@ -6,11 +6,11 @@ Release Date: April 24, 2024

Security updates

-- Added the [cluster setting]({% link v24.1/cluster-settings.md %}) `security.client_cert.subject_required.enabled` that enforces a mandatory requirement for the client certificate's role subject to be set. The subject can be defined through either the subject role option or by specifying the `root-cert-distinguished-name` and `node-cert-distinguished-name` properties. This setting applies to both RPC access and login via authCert. [#122368][#122368] +- Added the [cluster setting]({% link v24.1/cluster-settings.md %}) `security.client_cert.subject_required.enabled` that enforces a mandatory requirement for the client certificate's role subject to be set. The subject can be defined through either the subject role option or by specifying the `root-cert-distinguished-name` and `node-cert-distinguished-name` properties. This setting applies to both RPC access and login via authCert.

Bug fixes

-- Fixed a bug where table statistics were sometimes not collected on tables that have virtual [computed columns]({% link v24.1/computed-columns.md %}) of a user-defined type when the `sql.stats.virtual_computed_columns.enabled` cluster setting is enabled. The setting was introduced in v23.2.4 and is disabled by default. Only clusters running v23.2.4 with the non-default setting are affected. [#122320][#122320] +- Fixed a bug where table statistics were sometimes not collected on tables that have virtual [computed columns]({% link v24.1/computed-columns.md %}) of a user-defined type when the `sql.stats.virtual_computed_columns.enabled` cluster setting is enabled. The setting was introduced in v23.2.4 and is disabled by default. Only clusters running v23.2.4 with the non-default setting are affected.
@@ -19,6 +19,3 @@ Release Date: April 24, 2024 This release includes 52 merged PRs by 28 authors.
- -[#122320]: https://github.com/cockroachdb/cockroach/pull/122320 -[#122368]: https://github.com/cockroachdb/cockroach/pull/122368 diff --git a/src/current/_includes/releases/v24.1/v24.1.0-beta.3.md b/src/current/_includes/releases/v24.1/v24.1.0-beta.3.md index 7acb78b4f7b..ee242bc23f6 100644 --- a/src/current/_includes/releases/v24.1/v24.1.0-beta.3.md +++ b/src/current/_includes/releases/v24.1/v24.1.0-beta.3.md @@ -6,33 +6,33 @@ Release Date: April 30, 2024

SQL language changes

-- Updated the [`SHOW GRANTS`]({% link v24.1/show-grants.md %}) responses to display the `object_type` and `object_name`, which has replaced the `relation_name` column. [#122823][#122823] -- Added [external connection]({% link v24.1/create-external-connection.md %}) granted privileges to the [`SHOW GRANTS`]({% link v24.1/show-grants.md %}) command. [#122823][#122823] +- Updated the [`SHOW GRANTS`]({% link v24.1/show-grants.md %}) responses to display the `object_type` and `object_name`, which has replaced the `relation_name` column. +- Added [external connection]({% link v24.1/create-external-connection.md %}) granted privileges to the [`SHOW GRANTS`]({% link v24.1/show-grants.md %}) command. - Introduced three new [cluster settings]({% link v24.1/cluster-settings.md %}) for controlling table statistics forecasting: - [`sql.stats.forecasts.min_observations`]({% link v24.1/cluster-settings.md %}) is the minimum number of observed statistics required to produce a forecast. - [`sql.stats.forecasts.min_goodness_of_fit`]({% link v24.1/cluster-settings.md %}) is the minimum R² (goodness of fit) measurement required from all predictive models to use a forecast. - - [`sql.stats.forecasts.max_decrease`]({% link v24.1/cluster-settings.md %}) is the most a prediction can decrease, expressed as the minimum ratio of the prediction to the lowest prior observation. [#122459][#122459] + - [`sql.stats.forecasts.max_decrease`]({% link v24.1/cluster-settings.md %}) is the most a prediction can decrease, expressed as the minimum ratio of the prediction to the lowest prior observation.

Bug fixes

-- Fixed a bug that could lead to descriptors having privileges to roles that no longer exist. Added an automated clean up for [dropped roles]({% link v24.1/drop-role.md %}) inside descriptors. [#122701][#122701] -- Fixed a bug where [client certificate authentication]({% link v24.1/authentication.md %}#client-authentication) combined with [identity maps]({% link v24.1/sso-sql.md %}#identity-map-configuration) (`server.identity_map.configuration`) did not work since v23.1. For the feature to work correctly, the client must specify a valid db user in the [connection string]({% link v24.1/connection-parameters.md %}). [#122738][#122738] -- Fixed a bug where the [row-based execution engine]({% link v24.1/architecture/sql-layer.md %}#query-execution) could drop a [`LIMIT`]({% link v24.1/limit-offset.md %}) clause when there was an [`ORDER BY`]({% link v24.1/order-by.md %}) clause, and the ordering was partially provided by an input operator. For example, this bug could occur with an ordering such as `ORDER BY a, b` when the scanned index was only ordered on column `a`. The impact of this bug was that more rows may have been returned than specified by the `LIMIT` clause. This bug is only present when not using the [vectorized execution engine]({% link v24.1/architecture/sql-layer.md %}#vectorized-query-execution). That is, when running with `SET vectorize = off;`. This bug has existed since CockroachDB v22.1. [#122837][#122837] -- Previously, CockroachDB could run into an internal error when evaluating [PL/pgSQL]({% link v24.1/plpgsql.md %}) routines with nested blocks. The bug is only present in 24.1.0-beta versions. This bug is now fixed. [#122939][#122939] -- Fixed a bug where [`UPDATE`]({% link v24.1/update.md %}) and [`UPSERT`]({% link v24.1/upsert.md %}) queries with a subquery were sometimes inappropriately using implicit [`FOR UPDATE`]({% link v24.1/select-for-update.md %}) locking within the subquery. This bug has existed since implicit `FOR UPDATE` locking was introduced in v20.1. [#121391][#121391] -- [Dropping]({% link v24.1/alter-table.md %}#drop-column) and [adding]({% link v24.1/alter-table.md %}#add-column) a column with the same name no longer results in a `"column already exists error"`. [#122631][#122631] -- Fixed a bug that could cause an internal error of the form `invalid datum type given: ..., expected ...` when a `RECORD`-returning [user-defined function]({% link v24.1/user-defined-functions.md %}), used as a data source, was supplied a column definition list with mismatched types. This bug has existed since v23.1. [#122305][#122305] -- Fixed a bug that could result in an internal error when attempting to create a [PL/pgSQL]({% link v24.1/plpgsql.md %}) routine using the (unsupported) `%ROWTYPE` syntax for a variable declaration. Now, an expected syntax error is returned instead. [#122966][#122966] -- Fixed a bug that could result in an assertion error during evaluation of [PL/pgSQL]({% link v24.1/plpgsql.md %}) routines that invoke procedures while using `DEFAULT` arguments. The bug was present in v24.1.0-beta releases and is now fixed. [#122943][#122943] -- Previously, privileges granted for [external connections]({% link v24.1/create-external-connection.md %}) were displaying in `SHOW SYSTEM GRANTS` with no associated object name. Now these privileges are no longer displayed. Instead, the statement `SHOW GRANTS ON EXTERNAL CONNECTION` should be used to view external connection privileges with their associated object name. [#122857][#122857] -- Statistics forecasts of zero rows can cause suboptimal [query plans]({% link v24.1/cost-based-optimizer.md %}). Forecasting will now avoid predicting zero rows for most downward-trending statistics. [#122459][#122459] -- Fixed a bug introduced in v23.2 that could cause a [PL/pgSQL]({% link v24.1/plpgsql.md %}) variable assignment to not be executed if the variable was never referenced after the assignment. [#123045][#123045] +- Fixed a bug that could lead to descriptors having privileges to roles that no longer exist. Added an automated clean up for [dropped roles]({% link v24.1/drop-role.md %}) inside descriptors. +- Fixed a bug where [client certificate authentication]({% link v24.1/authentication.md %}#client-authentication) combined with [identity maps]({% link v24.1/sso-sql.md %}#identity-map-configuration) (`server.identity_map.configuration`) did not work since v23.1. For the feature to work correctly, the client must specify a valid db user in the [connection string]({% link v24.1/connection-parameters.md %}). +- Fixed a bug where the [row-based execution engine]({% link v24.1/architecture/sql-layer.md %}#query-execution) could drop a [`LIMIT`]({% link v24.1/limit-offset.md %}) clause when there was an [`ORDER BY`]({% link v24.1/order-by.md %}) clause, and the ordering was partially provided by an input operator. For example, this bug could occur with an ordering such as `ORDER BY a, b` when the scanned index was only ordered on column `a`. The impact of this bug was that more rows may have been returned than specified by the `LIMIT` clause. This bug is only present when not using the [vectorized execution engine]({% link v24.1/architecture/sql-layer.md %}#vectorized-query-execution). That is, when running with `SET vectorize = off;`. This bug has existed since CockroachDB v22.1. +- Previously, CockroachDB could run into an internal error when evaluating [PL/pgSQL]({% link v24.1/plpgsql.md %}) routines with nested blocks. The bug is only present in 24.1.0-beta versions. This bug is now fixed. +- Fixed a bug where [`UPDATE`]({% link v24.1/update.md %}) and [`UPSERT`]({% link v24.1/upsert.md %}) queries with a subquery were sometimes inappropriately using implicit [`FOR UPDATE`]({% link v24.1/select-for-update.md %}) locking within the subquery. This bug has existed since implicit `FOR UPDATE` locking was introduced in v20.1. +- [Dropping]({% link v24.1/alter-table.md %}#drop-column) and [adding]({% link v24.1/alter-table.md %}#add-column) a column with the same name no longer results in a `"column already exists error"`. +- Fixed a bug that could cause an internal error of the form `invalid datum type given: ..., expected ...` when a `RECORD`-returning [user-defined function]({% link v24.1/user-defined-functions.md %}), used as a data source, was supplied a column definition list with mismatched types. This bug has existed since v23.1. +- Fixed a bug that could result in an internal error when attempting to create a [PL/pgSQL]({% link v24.1/plpgsql.md %}) routine using the (unsupported) `%ROWTYPE` syntax for a variable declaration. Now, an expected syntax error is returned instead. +- Fixed a bug that could result in an assertion error during evaluation of [PL/pgSQL]({% link v24.1/plpgsql.md %}) routines that invoke procedures while using `DEFAULT` arguments. The bug was present in v24.1.0-beta releases and is now fixed. +- Previously, privileges granted for [external connections]({% link v24.1/create-external-connection.md %}) were displaying in `SHOW SYSTEM GRANTS` with no associated object name. Now these privileges are no longer displayed. Instead, the statement `SHOW GRANTS ON EXTERNAL CONNECTION` should be used to view external connection privileges with their associated object name. +- Statistics forecasts of zero rows can cause suboptimal [query plans]({% link v24.1/cost-based-optimizer.md %}). Forecasting will now avoid predicting zero rows for most downward-trending statistics. +- Fixed a bug introduced in v23.2 that could cause a [PL/pgSQL]({% link v24.1/plpgsql.md %}) variable assignment to not be executed if the variable was never referenced after the assignment.

Performance improvements

-- More efficient [query plans]({% link v24.1/cost-based-optimizer.md %}) are now generated for queries with text similarity filters, for example, `text_col % 'foobar'`. These plans are generated if the `optimizer_use_trigram_similarity_optimization` [session setting]({% link v24.1/set-vars.md %}) is enabled. It is disabled by default. [#122838][#122838] -- The [optimizer]({% link v24.1/cost-based-optimizer.md %}) now costs `distinct-on` operators more accurately. It may produce more efficient query plans in some cases. [#122850][#122850] -- Improved the speed for optimization of some statements using `GROUP BY` or `DISTINCT` or `ON CONFLICT` by skipping the [optimizer]({% link v24.1/cost-based-optimizer.md %}) rule `SplitGroupByScanIntoUnionScans` when it is not needed. [#123034][#123034] +- More efficient [query plans]({% link v24.1/cost-based-optimizer.md %}) are now generated for queries with text similarity filters, for example, `text_col % 'foobar'`. These plans are generated if the `optimizer_use_trigram_similarity_optimization` [session setting]({% link v24.1/set-vars.md %}) is enabled. It is disabled by default. +- The [optimizer]({% link v24.1/cost-based-optimizer.md %}) now costs `distinct-on` operators more accurately. It may produce more efficient query plans in some cases. +- Improved the speed for optimization of some statements using `GROUP BY` or `DISTINCT` or `ON CONFLICT` by skipping the [optimizer]({% link v24.1/cost-based-optimizer.md %}) rule `SplitGroupByScanIntoUnionScans` when it is not needed.
@@ -41,20 +41,3 @@ Release Date: April 30, 2024 This release includes 56 merged PRs by 25 authors.
- -[#121391]: https://github.com/cockroachdb/cockroach/pull/121391 -[#122305]: https://github.com/cockroachdb/cockroach/pull/122305 -[#122459]: https://github.com/cockroachdb/cockroach/pull/122459 -[#122631]: https://github.com/cockroachdb/cockroach/pull/122631 -[#122701]: https://github.com/cockroachdb/cockroach/pull/122701 -[#122738]: https://github.com/cockroachdb/cockroach/pull/122738 -[#122823]: https://github.com/cockroachdb/cockroach/pull/122823 -[#122837]: https://github.com/cockroachdb/cockroach/pull/122837 -[#122838]: https://github.com/cockroachdb/cockroach/pull/122838 -[#122850]: https://github.com/cockroachdb/cockroach/pull/122850 -[#122857]: https://github.com/cockroachdb/cockroach/pull/122857 -[#122939]: https://github.com/cockroachdb/cockroach/pull/122939 -[#122943]: https://github.com/cockroachdb/cockroach/pull/122943 -[#122966]: https://github.com/cockroachdb/cockroach/pull/122966 -[#123034]: https://github.com/cockroachdb/cockroach/pull/123034 -[#123045]: https://github.com/cockroachdb/cockroach/pull/123045 diff --git a/src/current/_includes/releases/v24.1/v24.1.0-rc.1.md b/src/current/_includes/releases/v24.1/v24.1.0-rc.1.md index 60a8d9c6d64..f649fe41976 100644 --- a/src/current/_includes/releases/v24.1/v24.1.0-rc.1.md +++ b/src/current/_includes/releases/v24.1/v24.1.0-rc.1.md @@ -6,31 +6,31 @@ Release Date: May 8, 2024

SQL language changes

-- Added a new [session setting]({% link v24.1/session-variables.md %}) `optimizer_use_improved_multi_column_selectivity_estimate`, which if enabled, causes the [optimizer]({% link v24.1/cost-based-optimizer.md %}) to use an improved selectivity estimate for multi-column predicates. This setting will default to `true` on v24.2 and later, and `false` on earlier versions. [#123106][#123106] +- Added a new [session setting]({% link v24.1/session-variables.md %}) `optimizer_use_improved_multi_column_selectivity_estimate`, which if enabled, causes the [optimizer]({% link v24.1/cost-based-optimizer.md %}) to use an improved selectivity estimate for multi-column predicates. This setting will default to `true` on v24.2 and later, and `false` on earlier versions.

Operational changes

-- Added two new [metrics]({% link v24.1/metrics.md %}): `range.snapshots.upreplication.rcvd-bytes` counts the number of [Raft]({% link v24.1/architecture/replication-layer.md %}#raft) recovery snapshot bytes received, and `range.snapshots.upreplication.sent-bytes` counts the number of Raft recovery snapshot bytes sent. Also updated `range.snapshots.recovery.rcvd-bytes` and `range.snapshots.recovery.sent-bytes` to only include Raft snapshots. A new line was added to the [**Snapshot Data Received**]({% link v24.1/ui-replication-dashboard.md %}#snapshot-data-received) graph. [#123055][#123055] +- Added two new [metrics]({% link v24.1/metrics.md %}): `range.snapshots.upreplication.rcvd-bytes` counts the number of [Raft]({% link v24.1/architecture/replication-layer.md %}#raft) recovery snapshot bytes received, and `range.snapshots.upreplication.sent-bytes` counts the number of Raft recovery snapshot bytes sent. Also updated `range.snapshots.recovery.rcvd-bytes` and `range.snapshots.recovery.sent-bytes` to only include Raft snapshots. A new line was added to the [**Snapshot Data Received**]({% link v24.1/ui-replication-dashboard.md %}#snapshot-data-received) graph.

DB Console changes

-- Added a **Replication Lag** graph to the [**Physical Cluster Replication**]({% link v24.1/physical-cluster-replication-monitoring.md %}) dashboard to measure replication lag between primary and standby clusters using [physical cluster replication]({% link v24.1/physical-cluster-replication-overview.md %}). [#123285][#123285] +- Added a **Replication Lag** graph to the [**Physical Cluster Replication**]({% link v24.1/physical-cluster-replication-monitoring.md %}) dashboard to measure replication lag between primary and standby clusters using [physical cluster replication]({% link v24.1/physical-cluster-replication-overview.md %}).

Bug fixes

-- Fixed a bug that caused the [**Tables**]({% link v24.1/ui-databases-page.md %}#tables-view) and [**Table Details**]({% link v24.1/ui-databases-page.md %}#table-details) pages in the DB Console to display an incorrect value for **Table Stats Last Updated**. [#122816][#122816] -- Fixed a bug in the DB Console's [**Custom Chart**]({% link v24.1/ui-custom-chart-debug-page.md %}) tool where store-level metrics were displayed only for the first store ID associated with the node. Now data is displayed for all stores present on a node, and a single time series is shown for each store, rather than an aggregated value for all of the node's stores. This allows finer-grained monitoring of store-level metrics. [#122705][#122705] -- Fixed a bug introduced in v22.2 that could cause the internal error `attempting to append refresh spans after the tracked timestamp has moved forward` in some edge cases. [#123136][#123136] -- Fixed a bug where a `TYPEDESC SCHEMA CHANGE` job could retry forever if the descriptor it targeted was already dropped. [#123273][#123273] +- Fixed a bug that caused the [**Tables**]({% link v24.1/ui-databases-page.md %}#tables-view) and [**Table Details**]({% link v24.1/ui-databases-page.md %}#table-details) pages in the DB Console to display an incorrect value for **Table Stats Last Updated**. +- Fixed a bug in the DB Console's [**Custom Chart**]({% link v24.1/ui-custom-chart-debug-page.md %}) tool where store-level metrics were displayed only for the first store ID associated with the node. Now data is displayed for all stores present on a node, and a single time series is shown for each store, rather than an aggregated value for all of the node's stores. This allows finer-grained monitoring of store-level metrics. +- Fixed a bug introduced in v22.2 that could cause the internal error `attempting to append refresh spans after the tracked timestamp has moved forward` in some edge cases. +- Fixed a bug where a `TYPEDESC SCHEMA CHANGE` job could retry forever if the descriptor it targeted was already dropped. - Fixed a bug where, if the legacy schema changer was enabled, the [`CREATE SEQUENCE`]({% link v24.1/create-sequence.md %}) command would incorrectly require the user to have the `CREATE` [privilege]({% link v24.1/security-reference/authorization.md %}#privileges) on the parent database rather than only on the parent schema.[#123289][#123289] -- Fixed a bug where a [job]({% link v24.1/show-jobs.md %}) would fail if it reported an out-of-bound progress fraction. The error is now logged and no longer causes the job to fail. [#122965][#122965] +- Fixed a bug where a [job]({% link v24.1/show-jobs.md %}) would fail if it reported an out-of-bound progress fraction. The error is now logged and no longer causes the job to fail.

Performance improvements

- Added a new [session setting]({% link v24.1/session-variables.md %}) `optimizer_use_improved_zigzag_join_costing`. When enabled and when the [cluster setting]({% link v24.1/cluster-settings.md %}) `enable_zigzag_join` is also enabled, the cost of zigzag joins is updated such that a zigzag join will be chosen over a scan only if it produces fewer rows than a scan.[#123106][#123106] -- Improved the selectivity estimation of multi-column filters when the multi-column distinct count is high. This prevents the [optimizer]({% link v24.1/cost-based-optimizer.md %}) from choosing a bad query plan due to over-estimating the selectivity of a multi-column predicate. [#123106][#123106] -- Improved the efficiency of error handling in the [vectorized execution engine]({% link v24.1/vectorized-execution.md %}), to reduce the CPU overhead of statement timeout handling and reduce the potential for more statement timeouts. [#123501][#123501] -- Disabled a poorly-performing [changefeed]({% link v24.1/change-data-capture-overview.md %}) optimization that was intended to reduce duplicates during aggregator restarts. [#123597][#123597] +- Improved the selectivity estimation of multi-column filters when the multi-column distinct count is high. This prevents the [optimizer]({% link v24.1/cost-based-optimizer.md %}) from choosing a bad query plan due to over-estimating the selectivity of a multi-column predicate. +- Improved the efficiency of error handling in the [vectorized execution engine]({% link v24.1/vectorized-execution.md %}), to reduce the CPU overhead of statement timeout handling and reduce the potential for more statement timeouts. +- Disabled a poorly-performing [changefeed]({% link v24.1/change-data-capture-overview.md %}) optimization that was intended to reduce duplicates during aggregator restarts.
@@ -39,17 +39,3 @@ Release Date: May 8, 2024 This release includes 57 merged PRs by 24 authors.
- -[#122705]: https://github.com/cockroachdb/cockroach/pull/122705 -[#122816]: https://github.com/cockroachdb/cockroach/pull/122816 -[#122965]: https://github.com/cockroachdb/cockroach/pull/122965 -[#123055]: https://github.com/cockroachdb/cockroach/pull/123055 -[#123106]: https://github.com/cockroachdb/cockroach/pull/123106 -[#123136]: https://github.com/cockroachdb/cockroach/pull/123136 -[#123144]: https://github.com/cockroachdb/cockroach/pull/123144 -[#123273]: https://github.com/cockroachdb/cockroach/pull/123273 -[#123285]: https://github.com/cockroachdb/cockroach/pull/123285 -[#123289]: https://github.com/cockroachdb/cockroach/pull/123289 -[#123373]: https://github.com/cockroachdb/cockroach/pull/123373 -[#123501]: https://github.com/cockroachdb/cockroach/pull/123501 -[#123597]: https://github.com/cockroachdb/cockroach/pull/123597 diff --git a/src/current/_includes/releases/v24.1/v24.1.0-rc.2.md b/src/current/_includes/releases/v24.1/v24.1.0-rc.2.md index c7dab7dd73f..29303d57ab6 100644 --- a/src/current/_includes/releases/v24.1/v24.1.0-rc.2.md +++ b/src/current/_includes/releases/v24.1/v24.1.0-rc.2.md @@ -11,8 +11,8 @@ Release Date: May 16, 2024 - The cluster settings `changefeed.frontier_checkpoint_frequency` and `low changefeed.frontier_highwater_lag_checkpoint_threshold` were set low, which resulted in the initial scan taking many multiples of the configured frequency to complete. - There were multiple target tables with significant differences in row counts in one changefeed. - The changefeed target tables were large with many ranges. - - The initial scan took a long time to complete (an hour or longer). [#123968][#123968] -- Fixed a crash introduced in v24.1.0-beta.2 that could occur when planning [statistics collection]({% link v24.1/cost-based-optimizer.md %}#table-statistics) on a table with a [virtual computed column]({% link v24.1/computed-columns.md %}) using a user-defined type and the `sql.stats.virtual_computed_columns.enabled` [cluster setting]({% link v24.1/cluster-settings.md %}) is set to `true`. `sql.stats.virtual_computed_columns.enabled` was introduced in v24.1.0-alpha.1 as `true` by default and introduced in v23.2.5 as `false` by default. [#124064][#124064] + - The initial scan took a long time to complete (an hour or longer). +- Fixed a crash introduced in v24.1.0-beta.2 that could occur when planning [statistics collection]({% link v24.1/cost-based-optimizer.md %}#table-statistics) on a table with a [virtual computed column]({% link v24.1/computed-columns.md %}) using a user-defined type and the `sql.stats.virtual_computed_columns.enabled` [cluster setting]({% link v24.1/cluster-settings.md %}) is set to `true`. `sql.stats.virtual_computed_columns.enabled` was introduced in v24.1.0-alpha.1 as `true` by default and introduced in v23.2.5 as `false` by default.
@@ -21,6 +21,3 @@ Release Date: May 16, 2024 This release includes 3 merged PRs by 3 authors.
- -[#123968]: https://github.com/cockroachdb/cockroach/pull/123968 -[#124064]: https://github.com/cockroachdb/cockroach/pull/124064 diff --git a/src/current/_includes/releases/v24.1/v24.1.0.md b/src/current/_includes/releases/v24.1/v24.1.0.md index 80bb31f523e..cdfd17deebc 100644 --- a/src/current/_includes/releases/v24.1/v24.1.0.md +++ b/src/current/_includes/releases/v24.1/v24.1.0.md @@ -475,9 +475,9 @@ COMMITTED more easily, without needing to teach the schema changer about Before [upgrading to CockroachDB v24.1]({% link v24.1/upgrade-cockroach-version.md %}), be sure to review the following backward-incompatible changes, as well as [key cluster setting changes](#v24-1-0-cluster-settings), and adjust your deployment as necessary. -- [`AS OF SYSTEM TIME`]({% link v24.1/as-of-system-time.md %}) queries can no longer use a timestamp followed by a question mark to signify a future-time value. This was an undocumented syntax. [#116830](https://github.com/cockroachdb/cockroach/pull/116830) -- The [`READ COMMITTED`]({% link v24.1/read-committed.md %}) isolation level now requires the cluster to have a valid [enterprise license](https://cockroachlabs.com/docs/v24.1/licensing-faqs#obtain-a-license). Otherwise, transactions which are configured to run as `READ COMMITTED` will be upgraded to [`SERIALIZABLE`]({% link v24.1/demo-serializable.md %}), as described in the next note. [#120154](https://github.com/cockroachdb/cockroach/pull/120154) -- The `sql.txn.read_committed_isolation.enabled` [cluster setting]({% link v24.1/cluster-settings.md %}) is now `true` by default. As a result for enterprise users, [`READ COMMITTED`]({% link v24.1/read-committed.md %}) transactions are **not** automatically upgraded to [`SERIALIZABLE`]({% link v24.1/demo-serializable.md %}), and will run as `READ COMMITTED` by default. On v23.2, refer to the [Upgrades of SQL Transaction Isolation Level]({% link v24.1/ui-sql-dashboard.md %}#upgrades-of-sql-transaction-isolation-level) graph in the DB Console to check whether any transaction is being upgraded from a weaker isolation level to `SERIALIZABLE`, and could therefore run differently on v24.1. [#118479](https://github.com/cockroachdb/cockroach/pull/118479) +- [`AS OF SYSTEM TIME`]({% link v24.1/as-of-system-time.md %}) queries can no longer use a timestamp followed by a question mark to signify a future-time value. This was an undocumented syntax. +- The [`READ COMMITTED`]({% link v24.1/read-committed.md %}) isolation level now requires the cluster to have a valid [enterprise license](https://cockroachlabs.com/docs/v24.1/licensing-faqs#obtain-a-license). Otherwise, transactions which are configured to run as `READ COMMITTED` will be upgraded to [`SERIALIZABLE`]({% link v24.1/demo-serializable.md %}), as described in the next note. +- The `sql.txn.read_committed_isolation.enabled` [cluster setting]({% link v24.1/cluster-settings.md %}) is now `true` by default. As a result for enterprise users, [`READ COMMITTED`]({% link v24.1/read-committed.md %}) transactions are **not** automatically upgraded to [`SERIALIZABLE`]({% link v24.1/demo-serializable.md %}), and will run as `READ COMMITTED` by default. On v23.2, refer to the [Upgrades of SQL Transaction Isolation Level]({% link v24.1/ui-sql-dashboard.md %}#upgrades-of-sql-transaction-isolation-level) graph in the DB Console to check whether any transaction is being upgraded from a weaker isolation level to `SERIALIZABLE`, and could therefore run differently on v24.1.

Features that require upgrade finalization

@@ -490,14 +490,14 @@ The following changes should be reviewed prior to upgrading. Default cluster set - `sql.txn.read_committed_isolation.enabled` is now `true` by default. When set to `true`, transactions use the `READ COMMITTED` isolation level if specified by `BEGIN`/`SET` commands. - If the cluster setting is `false`, as was the default in v23.2, such `READ COMMITTED` transactions will instead run as `SERIALIZABLE`. - To check whether any transactions are being upgraded to `SERIALIZABLE`, see the [**Upgrades of SQL Transaction Isolation Level**]({% link v24.1/ui-sql-dashboard.md %}#upgrades-of-sql-transaction-isolation-level) graph in the DB Console." -- The `changefeed.balance_range_distribution.enabled` [cluster setting]({% link v24.1/cluster-settings.md %}) is now deprecated. Instead, use the new cluster setting `changefeed.default_range_distribution_strategy`. `changefeed.default_range_distribution_strategy='balanced_simple'` has the same effect as setting `changefeed.balance_range_distribution.enabled=true`. It does not require `initial_scan='only'`, which was required by the old setting. [#115166][#115166] -- Added the [cluster setting]({% link v24.1/cluster-settings.md %}) `security.client_cert.subject_required.enabled` which enforces a mandatory requirement for the client certificate's role subject to be set. The subject can be defined through either the subject role option or by specifying the `root-cert-distinguished-name` and `node-cert-distinguished-name` properties. This setting applies to both RPC access and login via authCert. [#122368][#122368] -- The [cluster setting]({% link v24.1/cluster-settings.md %}) `sql.contention.record_serialization_conflicts.enabled` is now `on` by default. As a result, any [`40001` error]({% link v24.1/transaction-retry-error-reference.md %}) that contains conflicting transaction information will be recorded by the contention registry, improving the ability to troubleshoot. For more information, refer to the [Insights page]({% link v24.1/ui-insights-page.md %}) documentation. [#116664][#116664] +- The `changefeed.balance_range_distribution.enabled` [cluster setting]({% link v24.1/cluster-settings.md %}) is now deprecated. Instead, use the new cluster setting `changefeed.default_range_distribution_strategy`. `changefeed.default_range_distribution_strategy='balanced_simple'` has the same effect as setting `changefeed.balance_range_distribution.enabled=true`. It does not require `initial_scan='only'`, which was required by the old setting. +- Added the [cluster setting]({% link v24.1/cluster-settings.md %}) `security.client_cert.subject_required.enabled` which enforces a mandatory requirement for the client certificate's role subject to be set. The subject can be defined through either the subject role option or by specifying the `root-cert-distinguished-name` and `node-cert-distinguished-name` properties. This setting applies to both RPC access and login via authCert. +- The [cluster setting]({% link v24.1/cluster-settings.md %}) `sql.contention.record_serialization_conflicts.enabled` is now `on` by default. As a result, any [`40001` error]({% link v24.1/transaction-retry-error-reference.md %}) that contains conflicting transaction information will be recorded by the contention registry, improving the ability to troubleshoot. For more information, refer to the [Insights page]({% link v24.1/ui-insights-page.md %}) documentation. - The new [cluster setting]({% link v24.1/cluster-settings.md %}) `storage.sstable.compression_algorithm` configures the compression algorithm used when compressing sstable blocks. Supported values are: "snappy" and "zstd" [snappy = `1`, zstd = `2`]. Changing the default of snappy to zstd can result in substantial performance improvement, however, the effects this change may be highly dependent on the workload and data, so experimentation is recommended before enabling zstd in production environments. -- The new setting `storage.wal_failover.unhealthy_op_threshold` allows you to set the latency threshold at which a WAL (Write-Ahead Logging) write is considered unhealthy. When exceeded, the node will attempt to write WAL entries to a secondary store's volume. For more information, refer to [#120509][#120509] -- The new `server.max_open_transactions_per_gateway` [cluster setting]({% link v24.1/cluster-settings.md %}), when set to a non-negative value, allows only admin users to execute a query if the number of open transactions on the current gateway node is already at the configured limit. [#118781][#118781] -- The new `server.redact_sensitive_settings.enabled` [cluster setting]({% link v24.1/cluster-settings.md %}) (`false` by default), when set to `true`, redacts the values of the following settings in the output of `SHOW` commands or other introspection interfaces. In the future, newly-added sensitive cluster settings will be redacted as well. Users with the `MODIFYCLUSTERSETTING` [privilege](https://www.cockroachlabs.com/docs/v24.1/security-reference/authorization#managing-privileges) can always view the unredacted settings. [#117729][#117729] -- The new boolean changefeed option [`ignore_disable_changefeed_replication`](../v24.1/create-changefeed.html#ignore-disable-changefeed-replication), when set to `true`, prevents the changefeed from filtering events even if CDC filtering is configured via the `disable_changefeed_replication` [session variable](../v24.1/session-variables.html), `sql.ttl.changefeed_replication.disabled` [cluster setting](../v24.1/cluster-settings.html), or the `ttl_disable_changefeed_replication` [table storage parameter](../v24.1/alter-table.html#table-storage-parameters). [#120255][#120255] +- The new setting `storage.wal_failover.unhealthy_op_threshold` allows you to set the latency threshold at which a WAL (Write-Ahead Logging) write is considered unhealthy. When exceeded, the node will attempt to write WAL entries to a secondary store's volume. For more information, refer to +- The new `server.max_open_transactions_per_gateway` [cluster setting]({% link v24.1/cluster-settings.md %}), when set to a non-negative value, allows only admin users to execute a query if the number of open transactions on the current gateway node is already at the configured limit. +- The new `server.redact_sensitive_settings.enabled` [cluster setting]({% link v24.1/cluster-settings.md %}) (`false` by default), when set to `true`, redacts the values of the following settings in the output of `SHOW` commands or other introspection interfaces. In the future, newly-added sensitive cluster settings will be redacted as well. Users with the `MODIFYCLUSTERSETTING` [privilege](https://www.cockroachlabs.com/docs/v24.1/security-reference/authorization#managing-privileges) can always view the unredacted settings. +- The new boolean changefeed option [`ignore_disable_changefeed_replication`](../v24.1/create-changefeed.html#ignore-disable-changefeed-replication), when set to `true`, prevents the changefeed from filtering events even if CDC filtering is configured via the `disable_changefeed_replication` [session variable](../v24.1/session-variables.html), `sql.ttl.changefeed_replication.disabled` [cluster setting](../v24.1/cluster-settings.html), or the `ttl_disable_changefeed_replication` [table storage parameter](../v24.1/alter-table.html#table-storage-parameters). - The provisioned-rate field, if specified, should no longer accept a disk-name or an optional bandwidth field. To use the disk bandwidth constraint the store-spec must contain @@ -510,8 +510,8 @@ setting `kvadmission.store.provisioned_bandwidth` will be used. When set to a no

Deprecations

-- `changefeed.balance_range_distribution.enable` is now deprecated. Instead, use the new [cluster setting]({% link v24.1/cluster-settings.md %}) `changefeed.default_range_distribution_strategy`. `changefeed.default_range_distribution_strategy='balanced_simple'` has the same effect as setting `changefeed.balance_range_distribution.enable=true`. It does not require `initial_scan='only'`, which was required by the old setting. [#115166][#115166] -- The `cockroach connect` command has been removed. This command was [deprecated]({% link releases/v23.2.md %}#v23-2-0-deprecations) in CockroachDB v23.2. [#113893][#113893] +- `changefeed.balance_range_distribution.enable` is now deprecated. Instead, use the new [cluster setting]({% link v24.1/cluster-settings.md %}) `changefeed.default_range_distribution_strategy`. `changefeed.default_range_distribution_strategy='balanced_simple'` has the same effect as setting `changefeed.balance_range_distribution.enable=true`. It does not require `initial_scan='only'`, which was required by the old setting. +- The `cockroach connect` command has been removed. This command was [deprecated]({% link releases/v23.2.md %}#v23-2-0-deprecations) in CockroachDB v23.2.

Known limitations

@@ -530,13 +530,3 @@ Docs | [Architecture Overview](https://www.cockroachlabs.com/doc Docs | [SQL Feature Support]({% link v24.1/sql-feature-support.md %}) | The page summarizes the standard SQL features CockroachDB supports as well as common extensions to the standard. Docs | [Change Data Capture Overview]({% link v24.1/change-data-capture-overview.md %}) | This page summarizes CockroachDB's data streaming capabilities. Change data capture (CDC) provides efficient, distributed, row-level changefeeds into a configurable sink for downstream processing such as reporting, caching, or full-text indexing. Docs | [Backup Architecture]({% link v24.1/backup-architecture.md %}) | This page describes the backup job workflow with a high-level overview, diagrams, and more details on each phase of the job. - -[#115166]: https://github.com/cockroachdb/cockroach/pull/115166 -[#113893]: https://github.com/cockroachdb/cockroach/pull/113893 -[#115166]: https://github.com/cockroachdb/cockroach/pull/115166 -[#122368]: https://github.com/cockroachdb/cockroach/pull/122368 -[#116664]: https://github.com/cockroachdb/cockroach/pull/116664 -[#120509]: https://github.com/cockroachdb/cockroach/pull/120509 -[#118781]: https://github.com/cockroachdb/cockroach/pull/118781 -[#117729]: https://github.com/cockroachdb/cockroach/pull/117729 -[#120255]: https://github.com/cockroachdb/cockroach/pull/120255 diff --git a/src/current/_includes/releases/v24.1/v24.1.1.md b/src/current/_includes/releases/v24.1/v24.1.1.md index aef18f2ab4d..9caf042fcc0 100644 --- a/src/current/_includes/releases/v24.1/v24.1.1.md +++ b/src/current/_includes/releases/v24.1/v24.1.1.md @@ -11,53 +11,53 @@ Release Date: June 14, 2024 - The cluster settings `changefeed.frontier_checkpoint_frequency` and `low changefeed.frontier_highwater_lag_checkpoint_threshold` were set low, which resulted in the initial scan taking many multiples of the configured frequency to complete. - There were multiple target tables with significant differences in row counts in one changefeed. - The changefeed target tables were large with many ranges. - - The initial scan took a long time to complete (an hour or longer). [#123967][#123967] -- History retention jobs created upon completion of [cluster replication]({% link v24.1/physical-cluster-replication-overview.md %}) no longer erroneously indicate that they failed when they expire. [#124055][#124055] + - The initial scan took a long time to complete (an hour or longer). +- History retention jobs created upon completion of [cluster replication]({% link v24.1/physical-cluster-replication-overview.md %}) no longer erroneously indicate that they failed when they expire.

SQL language changes

-- The [optimizer]({% link v24.1/cost-based-optimizer.md %}) can now plan constrained scans over partial indexes in more cases, particularly on partial indexes with predicates referencing [virtual computed columns]({% link v24.1/computed-columns.md %}#virtual-computed-columns). [#123468][#123468] -- The storage parameter `ttl_delete_rate_limit`, which determines the rate limit for deleting expired rows, is now set to `100` by default. [#124354][#124354] -- CockroachDB no longer limits precision when converting [spatial data types]({% link v24.1/architecture/glossary.md %}#data-types) to JSON. [#124536][#124536] -- The `optimizer_push_offset_into_index_join` [session setting]({% link v24.1/session-variables.md %}) has been added. When enabled, the [optimizer]({% link v24.1/cost-based-optimizer.md %}) will attempt to push offset expressions into index join expressions to produce more efficient query plans. The setting is enabled by default on v24.1 and later, and disabled on v23.2. [#124490][#124490] -- The default value of the `sql.defaults.results_buffer.size` [cluster setting]({% link v24.1/cluster-settings.md %}) has been changed from 16KiB to 512KiB. This reduces the chance that clients using [`READ COMMITTED`]({% link v24.1/read-committed.md %}) transactions will encounter errors that cannot automatically be retried within CockroachDB. [#124633][#124633] +- The [optimizer]({% link v24.1/cost-based-optimizer.md %}) can now plan constrained scans over partial indexes in more cases, particularly on partial indexes with predicates referencing [virtual computed columns]({% link v24.1/computed-columns.md %}#virtual-computed-columns). +- The storage parameter `ttl_delete_rate_limit`, which determines the rate limit for deleting expired rows, is now set to `100` by default. +- CockroachDB no longer limits precision when converting [spatial data types]({% link v24.1/architecture/glossary.md %}#data-types) to JSON. +- The `optimizer_push_offset_into_index_join` [session setting]({% link v24.1/session-variables.md %}) has been added. When enabled, the [optimizer]({% link v24.1/cost-based-optimizer.md %}) will attempt to push offset expressions into index join expressions to produce more efficient query plans. The setting is enabled by default on v24.1 and later, and disabled on v23.2. +- The default value of the `sql.defaults.results_buffer.size` [cluster setting]({% link v24.1/cluster-settings.md %}) has been changed from 16KiB to 512KiB. This reduces the chance that clients using [`READ COMMITTED`]({% link v24.1/read-committed.md %}) transactions will encounter errors that cannot automatically be retried within CockroachDB.

Operational changes

-- The default values for the [cluster settings]({% link v24.1/cluster-settings.md %}) `sql.metrics.max_mem_stmt_fingerprints` and `sql.metrics.max_mem_txn_fingerprints` have been changed from `100000` to `5000`, thus lowering the default limits for in-memory statement and transaction fingerprints. [#123430][#123430] -- The new `sql.pgwire.pipeline.count` [gauge metric]({% link v24.1/metrics.md %}) shows the number of wire protocol commands that have been received by the server, but have not yet begun processing. This metric will only grow if clients are using the "pipeline mode" of the PostgreSQL wire protocol. [#124256][#124256] -- The `client_authentication_ok` and `client_session_end` messages are now logged to the `SESSIONS` [log channel]({% link v24.1/logging-overview.md %}#logging-channels) unconditionally. Previously, these would be logged only if the `server.auth_log.sql_sessions.enabled` [cluster setting]({% link v24.1/cluster-settings.md %}) was set to `true`. All other `SESSIONS` log messages are logged only if `server.auth_log.sql_sessions.enabled` or `server.auth_log.sql_connections.enabled` are set to `true`. To prevent logging of `client_authentication_ok` or `client_session_end` messages, you can optionally disable the `SESSIONS` log channel. [#124369][#124369] +- The default values for the [cluster settings]({% link v24.1/cluster-settings.md %}) `sql.metrics.max_mem_stmt_fingerprints` and `sql.metrics.max_mem_txn_fingerprints` have been changed from `100000` to `5000`, thus lowering the default limits for in-memory statement and transaction fingerprints. +- The new `sql.pgwire.pipeline.count` [gauge metric]({% link v24.1/metrics.md %}) shows the number of wire protocol commands that have been received by the server, but have not yet begun processing. This metric will only grow if clients are using the "pipeline mode" of the PostgreSQL wire protocol. +- The `client_authentication_ok` and `client_session_end` messages are now logged to the `SESSIONS` [log channel]({% link v24.1/logging-overview.md %}#logging-channels) unconditionally. Previously, these would be logged only if the `server.auth_log.sql_sessions.enabled` [cluster setting]({% link v24.1/cluster-settings.md %}) was set to `true`. All other `SESSIONS` log messages are logged only if `server.auth_log.sql_sessions.enabled` or `server.auth_log.sql_connections.enabled` are set to `true`. To prevent logging of `client_authentication_ok` or `client_session_end` messages, you can optionally disable the `SESSIONS` log channel.

DB Console changes

-- Fixed a bug where the [replication lag metric]({% link v24.1/physical-cluster-replication-monitoring.md %}) would falsely report high lag for multi-node clusters and on cutover. [#123585][#123585] -- Fixed a bug that caused [**SQL Activity**]({% link v23.2/ui-sql-dashboard.md %}) entries sorted by `% of Runtime` to be sorted incorrectly. [#123903][#123903] -- The "Admission Delay Rate", "Admission Work Rate", and "Requests Waiting For Flow Tokens" time-series charts have been removed from the DB Console. These charts can be difficult to interpret and provide little value for overload investigations. [#124509][#124509] -- The [**Overload** dashboard]({% link v24.1/ui-overload-dashboard.md %}) now includes descriptions for all metrics. [#124509][#124509] -- Metrics on the [**Overload** dashboard]({% link v24.1/ui-overload-dashboard.md %}) have been reordered to improve their categorization. The metrics are now roughly in the following order: 1. Metrics to help determine which resource is constrained (IO, CPU); 2. Metrics to narrow down which [admission control]({% link v24.1/admission-control.md %}) queues are seeing requests waiting; 3. More advanced metrics about system health (goroutine scheduler, L0 sublevels, etc.). [#124509][#124509] -- New metrics `cr.store.storage.l0-sublevels` and `cr.node.go.scheduler_latency-p99.9` on the [**Overload** dashboard]({% link v24.1/ui-overload-dashboard.md %}) provide better visibility into overloaded resources. [#124509][#124509] -- There are now four separate graphs for Admission Queue Delay: 1. Foreground (regular) CPU work; 2. Store (IO) work; 3. Background (elastic) CPU work; 4. Replication Admission Control (store overload on replicas). [#124509][#124509] +- Fixed a bug where the [replication lag metric]({% link v24.1/physical-cluster-replication-monitoring.md %}) would falsely report high lag for multi-node clusters and on cutover. +- Fixed a bug that caused [**SQL Activity**]({% link v23.2/ui-sql-dashboard.md %}) entries sorted by `% of Runtime` to be sorted incorrectly. +- The "Admission Delay Rate", "Admission Work Rate", and "Requests Waiting For Flow Tokens" time-series charts have been removed from the DB Console. These charts can be difficult to interpret and provide little value for overload investigations. +- The [**Overload** dashboard]({% link v24.1/ui-overload-dashboard.md %}) now includes descriptions for all metrics. +- Metrics on the [**Overload** dashboard]({% link v24.1/ui-overload-dashboard.md %}) have been reordered to improve their categorization. The metrics are now roughly in the following order: 1. Metrics to help determine which resource is constrained (IO, CPU); 2. Metrics to narrow down which [admission control]({% link v24.1/admission-control.md %}) queues are seeing requests waiting; 3. More advanced metrics about system health (goroutine scheduler, L0 sublevels, etc.). +- New metrics `cr.store.storage.l0-sublevels` and `cr.node.go.scheduler_latency-p99.9` on the [**Overload** dashboard]({% link v24.1/ui-overload-dashboard.md %}) provide better visibility into overloaded resources. +- There are now four separate graphs for Admission Queue Delay: 1. Foreground (regular) CPU work; 2. Store (IO) work; 3. Background (elastic) CPU work; 4. Replication Admission Control (store overload on replicas).

Bug fixes

-- Fixed a bug that would occur when [`ALTER TYPE ... DROP VALUE`]({% link v24.1/alter-type.md %}) is followed by `DROP SCHEMA CASCADE ...` in the same transaction. Previously, the `ALTER TYPE` schema change would get queued up to run at commit time, but by that point, the type may have already been removed, so the commit could fail. [#123577][#123577] -- Tables are now automatically repaired when the errors `invalid inbound foreign key ... origin table ID should be ...` or `invalid outbound foreign key ... reference table ID should be ...` occur. [#123668][#123668] -- Fixed a bug where a failed [`RESTORE`]({% link v24.1/restore.md %}) could not be retried without manual intervention. [#123205][#123205] -- Fixed a bug introduced in alpha versions of v23.1 where calling a routine could result in an unexpected `function ... does not exist` error. The bug is triggered when the routine is called twice using the exact same SQL query, and either: (a) the routine has polymorphic arguments, or: (b) between the two calls, the routine is replaced by a routine with the same name and different parameters. [#123516][#123516] -- Fixed a rare bug where a lease transfer could lead to a `side-transport update saw closed timestamp regression` panic. The bug could occur when a node was overloaded and [failing to heartbeat its node liveness record]({% link v24.1/cluster-setup-troubleshooting.md %}#node-liveness-issues). [#123533][#123533] -- Fixed a crash introduced in v24.1.0-beta.2 that could occur when planning statistics collection on a table with a [virtual computed column]({% link v24.1/computed-columns.md %}#virtual-computed-columns) using a [user-defined type]({% link v24.1/create-type.md %}) when the newly-introduced [cluster setting]({% link v24.1/cluster-settings.md %}) `sql.stats.virtual_computed_columns.enabled` is set to `true`. (The setting was introduced in v24.1.0-alpha.1, and defaults to `true`.) [#124060][#124060] -- Fixed a bug where an [`ALTER TABLE ... ALTER PRIMARY KEY`]({% link v24.1/alter-table.md %}#alter-primary-key) statement could hang if the table had any indexes that were referred to by [views]({% link v24.1/views.md %}) or [functions]({% link v24.1/functions-and-operators.md %}) using the `FORCE INDEX` clause. [#124323][#124323] -- Fixed a bug introduced in v24.1.0 where the `max_decimal_digits` argument of the `st_geojson` [builtin function]({% link v24.1/functions-and-operators.md %}#built-in-functions) was ignored and the default was used instead. [#124502][#124502] -- Scattering a range with a replication factor of 1 now no longer erroneously up-replicates the range to two replicas. Leases will also no longer thrash between nodes when perturbed with a replication factor of 1. [#124453][#124453] -- Fixed a bug where, if the `ttl_row_stats_poll_interval` storage parameter was non-zero for a table with [row-level TTL]({% link v24.1/row-level-ttl.md %}) enabled, the queries issued to update row statistics could block the job from completing. Now, if the job completes, these statistics queries are cancelled. This means that the `jobs.row_level_ttl.total_rows` and `jobs.row_level_ttl.total_expired_rows` metrics will report `0` if the job finishes before the row stats queries complete. [#124627][#124627] -- Fixed a bug where a [`DROP ROLE`]({% link v24.1/drop-role.md %}) or [`DROP USER`]({% link v24.1/drop-user.md %}) command could leave references behind inside types, which could prevent subsequent [`SHOW GRANTS`]({% link v24.1/show-grants.md %}) commands from working. [#124619][#124619] -- Fixed a bug where the `results_buffer_size` [session variable]({% link v24.1/session-variables.md %}) could not be configured by using the "options" query parameter in the connection string, but only as a top-level query parameter. Now, `results_buffer_size` can be configured in either part of the connection string. This variable still cannot be changed with the [`SET`]({% link v24.1/set-vars.md %}) command after the session begins. [#124775][#124775] -- Fixed a bug introduced in v20.2 where a change to a [user-defined type]({% link v24.1/create-type.md %}) could cause queries against tables using that type to fail with an error message like `histogram.go:694: span must be fully contained in the bucket`. The change to the user-defined type could come directly from an [`ALTER TYPE`]({% link v24.1/alter-type.md %}) statement, or indirectly from an [`ALTER DATABASE ... ADD REGION`]({% link v24.1/alter-database.md %}#add-region) or [`DROP REGION`]({% link v24.1/alter-database.md %}#drop-region) statement (which implicitly change the `crdb_internal_region` type). [#124856][#124856] +- Fixed a bug that would occur when [`ALTER TYPE ... DROP VALUE`]({% link v24.1/alter-type.md %}) is followed by `DROP SCHEMA CASCADE ...` in the same transaction. Previously, the `ALTER TYPE` schema change would get queued up to run at commit time, but by that point, the type may have already been removed, so the commit could fail. +- Tables are now automatically repaired when the errors `invalid inbound foreign key ... origin table ID should be ...` or `invalid outbound foreign key ... reference table ID should be ...` occur. +- Fixed a bug where a failed [`RESTORE`]({% link v24.1/restore.md %}) could not be retried without manual intervention. +- Fixed a bug introduced in alpha versions of v23.1 where calling a routine could result in an unexpected `function ... does not exist` error. The bug is triggered when the routine is called twice using the exact same SQL query, and either: (a) the routine has polymorphic arguments, or: (b) between the two calls, the routine is replaced by a routine with the same name and different parameters. +- Fixed a rare bug where a lease transfer could lead to a `side-transport update saw closed timestamp regression` panic. The bug could occur when a node was overloaded and [failing to heartbeat its node liveness record]({% link v24.1/cluster-setup-troubleshooting.md %}#node-liveness-issues). +- Fixed a crash introduced in v24.1.0-beta.2 that could occur when planning statistics collection on a table with a [virtual computed column]({% link v24.1/computed-columns.md %}#virtual-computed-columns) using a [user-defined type]({% link v24.1/create-type.md %}) when the newly-introduced [cluster setting]({% link v24.1/cluster-settings.md %}) `sql.stats.virtual_computed_columns.enabled` is set to `true`. (The setting was introduced in v24.1.0-alpha.1, and defaults to `true`.) +- Fixed a bug where an [`ALTER TABLE ... ALTER PRIMARY KEY`]({% link v24.1/alter-table.md %}#alter-primary-key) statement could hang if the table had any indexes that were referred to by [views]({% link v24.1/views.md %}) or [functions]({% link v24.1/functions-and-operators.md %}) using the `FORCE INDEX` clause. +- Fixed a bug introduced in v24.1.0 where the `max_decimal_digits` argument of the `st_geojson` [builtin function]({% link v24.1/functions-and-operators.md %}#built-in-functions) was ignored and the default was used instead. +- Scattering a range with a replication factor of 1 now no longer erroneously up-replicates the range to two replicas. Leases will also no longer thrash between nodes when perturbed with a replication factor of 1. +- Fixed a bug where, if the `ttl_row_stats_poll_interval` storage parameter was non-zero for a table with [row-level TTL]({% link v24.1/row-level-ttl.md %}) enabled, the queries issued to update row statistics could block the job from completing. Now, if the job completes, these statistics queries are cancelled. This means that the `jobs.row_level_ttl.total_rows` and `jobs.row_level_ttl.total_expired_rows` metrics will report `0` if the job finishes before the row stats queries complete. +- Fixed a bug where a [`DROP ROLE`]({% link v24.1/drop-role.md %}) or [`DROP USER`]({% link v24.1/drop-user.md %}) command could leave references behind inside types, which could prevent subsequent [`SHOW GRANTS`]({% link v24.1/show-grants.md %}) commands from working. +- Fixed a bug where the `results_buffer_size` [session variable]({% link v24.1/session-variables.md %}) could not be configured by using the "options" query parameter in the connection string, but only as a top-level query parameter. Now, `results_buffer_size` can be configured in either part of the connection string. This variable still cannot be changed with the [`SET`]({% link v24.1/set-vars.md %}) command after the session begins. +- Fixed a bug introduced in v20.2 where a change to a [user-defined type]({% link v24.1/create-type.md %}) could cause queries against tables using that type to fail with an error message like `histogram.go:694: span must be fully contained in the bucket`. The change to the user-defined type could come directly from an [`ALTER TYPE`]({% link v24.1/alter-type.md %}) statement, or indirectly from an [`ALTER DATABASE ... ADD REGION`]({% link v24.1/alter-database.md %}#add-region) or [`DROP REGION`]({% link v24.1/alter-database.md %}#drop-region) statement (which implicitly change the `crdb_internal_region` type).

Performance improvements

-- Improved the efficiency of error handling in the [vectorized execution engine]({% link v24.1/vectorized-execution.md %}) in order to reduce the CPU overhead of statement timeout handling and reduce the potential for more statement timeouts. [#123499][#123499] -- Due to its poor performance, a [changefeed]({% link v24.1/change-data-capture-overview.md %}) optimization that aimed to reduce duplicates during aggregator restarts due to its bad performance has been disabled. [#123595][#123595] +- Improved the efficiency of error handling in the [vectorized execution engine]({% link v24.1/vectorized-execution.md %}) in order to reduce the CPU overhead of statement timeout handling and reduce the potential for more statement timeouts. +- Due to its poor performance, a [changefeed]({% link v24.1/change-data-capture-overview.md %}) optimization that aimed to reduce duplicates during aggregator restarts due to its bad performance has been disabled.
@@ -66,36 +66,3 @@ Release Date: June 14, 2024 This release includes 173 merged PRs by 42 authors.
- -[#123205]: https://github.com/cockroachdb/cockroach/pull/123205 -[#123430]: https://github.com/cockroachdb/cockroach/pull/123430 -[#123468]: https://github.com/cockroachdb/cockroach/pull/123468 -[#123499]: https://github.com/cockroachdb/cockroach/pull/123499 -[#123516]: https://github.com/cockroachdb/cockroach/pull/123516 -[#123533]: https://github.com/cockroachdb/cockroach/pull/123533 -[#123577]: https://github.com/cockroachdb/cockroach/pull/123577 -[#123585]: https://github.com/cockroachdb/cockroach/pull/123585 -[#123595]: https://github.com/cockroachdb/cockroach/pull/123595 -[#123668]: https://github.com/cockroachdb/cockroach/pull/123668 -[#123903]: https://github.com/cockroachdb/cockroach/pull/123903 -[#123967]: https://github.com/cockroachdb/cockroach/pull/123967 -[#124055]: https://github.com/cockroachdb/cockroach/pull/124055 -[#124060]: https://github.com/cockroachdb/cockroach/pull/124060 -[#124085]: https://github.com/cockroachdb/cockroach/pull/124085 -[#124256]: https://github.com/cockroachdb/cockroach/pull/124256 -[#124304]: https://github.com/cockroachdb/cockroach/pull/124304 -[#124323]: https://github.com/cockroachdb/cockroach/pull/124323 -[#124354]: https://github.com/cockroachdb/cockroach/pull/124354 -[#124369]: https://github.com/cockroachdb/cockroach/pull/124369 -[#124453]: https://github.com/cockroachdb/cockroach/pull/124453 -[#124490]: https://github.com/cockroachdb/cockroach/pull/124490 -[#124502]: https://github.com/cockroachdb/cockroach/pull/124502 -[#124509]: https://github.com/cockroachdb/cockroach/pull/124509 -[#124536]: https://github.com/cockroachdb/cockroach/pull/124536 -[#124619]: https://github.com/cockroachdb/cockroach/pull/124619 -[#124627]: https://github.com/cockroachdb/cockroach/pull/124627 -[#124633]: https://github.com/cockroachdb/cockroach/pull/124633 -[#124775]: https://github.com/cockroachdb/cockroach/pull/124775 -[#124856]: https://github.com/cockroachdb/cockroach/pull/124856 -[0f67079b6]: https://github.com/cockroachdb/cockroach/commit/0f67079b6 -[eab42ef7a]: https://github.com/cockroachdb/cockroach/commit/eab42ef7a diff --git a/src/current/_includes/releases/v24.1/v24.1.10.md b/src/current/_includes/releases/v24.1/v24.1.10.md index f4eb01a3db8..a26c7969c1a 100644 --- a/src/current/_includes/releases/v24.1/v24.1.10.md +++ b/src/current/_includes/releases/v24.1/v24.1.10.md @@ -6,7 +6,7 @@ Release Date: January 9, 2025

Security updates

-- The cluster setting `server.jwt_authentication.issuers` now takes the issuer's configuration value apart from the URI. [#138187][#138187] +- The cluster setting `server.jwt_authentication.issuers` now takes the issuer's configuration value apart from the URI. - This can be set to one of the following values: 1. A string that Go can parse as a valid issuer URL, e.g., `'https://accounts.google.com'`. 1. A string that can be parsed as valid JSON array of issuer URLs, e.g., `['example.com/adfs','https://accounts.google.com']`. @@ -19,77 +19,43 @@ Release Date: January 9, 2025 - `changefeed.parallel_io_result_queue_nanos` - `changefeed.sink_batch_hist_nanos` - `changefeed.flush_hist_nanos` - - `changefeed.kafka_throttling_hist_nanos` [#136602][#136602] -- Added support for multiple seed brokers in the new Kafka sink. [#136746][#136746] -- Added a new metric (`distsender.rangefeed.catchup_ranges_waiting_client_side`) that counts how many rangefeeds are waiting on the client-side limiter to start performing catchup scans. [#136836][#136836] -- Added changefeed support for the `mvcc_timestamp` option with the `avro` format. If both options are specified, the Avro schema includes an `mvcc_timestamp` metadata field and emits the row's MVCC timestamp with the row data. [#136017][#136017] [#137594][#137594] -- Added a no-op `AWS_USE_PATH_STYLE` parameter for forward compatibility with v24.3. [#137100][#137100] + - `changefeed.kafka_throttling_hist_nanos` +- Added support for multiple seed brokers in the new Kafka sink. +- Added a new metric (`distsender.rangefeed.catchup_ranges_waiting_client_side`) that counts how many rangefeeds are waiting on the client-side limiter to start performing catchup scans. +- Added changefeed support for the `mvcc_timestamp` option with the `avro` format. If both options are specified, the Avro schema includes an `mvcc_timestamp` metadata field and emits the row's MVCC timestamp with the row data. +- Added a no-op `AWS_USE_PATH_STYLE` parameter for forward compatibility with v24.3.

SQL language changes

-- Added the `legacy_varchar_typing` session setting, which reverts the changes of [#133037](https://github.com/cockroachdb/cockroach/pull/133037) that caused the change in typing behavior described in [#137837](https://github.com/cockroachdb/cockroach/pull/137837). Specifically, it makes type-checking and overload resolution ignore the newly added "unpreferred" overloads. This setting defaults to `on`. [#137921][#137921] +- Added the `legacy_varchar_typing` session setting, which reverts the changes of that caused the change in typing behavior described in. Specifically, it makes type-checking and overload resolution ignore the newly added "unpreferred" overloads. This setting defaults to `on`.

Operational changes

-- Removed the `sql.auth.resolve_membership_single_scan.enabled` cluster setting. This was added out of precaution in case it was necessary to revert back to the old behavior for looking up role memberships, but this escape hatch has never been needed in practice since this was added in v23.1. [#136121][#136121] -- Telemetry delivery is now considered successful even in cases where CockroachDB experiences a network timeout. This will prevent throttling in cases outside an operator's control. [#136478][#136478] -- When a schema change job is completed, rolls back, or encounters a failure, the time taken since the job began is now logged in a structured log in the `SQL_SCHEMA` log channel. [#136951][#136951] +- Removed the `sql.auth.resolve_membership_single_scan.enabled` cluster setting. This was added out of precaution in case it was necessary to revert back to the old behavior for looking up role memberships, but this escape hatch has never been needed in practice since this was added in v23.1. +- Telemetry delivery is now considered successful even in cases where CockroachDB experiences a network timeout. This will prevent throttling in cases outside an operator's control. +- When a schema change job is completed, rolls back, or encounters a failure, the time taken since the job began is now logged in a structured log in the `SQL_SCHEMA` log channel.

Bug fixes

-- Fixed a bug where `ALTER COLUMN SET NOT NULL` was not enforced consistently when the table was created in the same transaction. [#136364][#136364] -- Fixed a bug where `CREATE RELATION / TYPE` could leave dangling namespace entries if the schema was concurrently being dropped. [#136408][#136408] -- The `idle_in_session_timeout` setting now excludes the time spent waiting for schema changer jobs to complete, preventing unintended session termination during schema change operations. [#136503][#136503] -- Fixed a bug that caused the optimizer to use stale table statistics after altering an `ENUM` type used in the table. [#136831][#136831] -- Table statistics collection in CockroachDB could previously run into `no bytes in account to release` errors in some edge cases (when the SQL memory budget, configured via `--max-sql-memory` flag, was close to being exhausted). The bug had been present since v21.2 and is now fixed. [#136164][#136164] -- CockroachDB now better respects the `statement_timeout` limit on queries involving the top K sort and merge join operations. [#136651][#136651] -- Fixed an issue where license enforcement was not consistently disabled for single-node clusters started with `cockroach start-single-node`. The fix ensures proper behavior on cluster restarts. [#137010][#137010] -- Fixed a bug that caused queries against tables with user-defined types to sometimes fail with errors after restoring those tables. [#137355][#137355] -- Fixed a bug that caused an incorrect filesystem to be logged as part of the store information. [#137112][#137112] -- Fixed a bug that had existed since v24.1 that would cause a set-returning UDF with `OUT` parameters to return a single row. [#137378][#137378] -- Fixed a bug that could cause an internal error if a table with an implicit (`rowid`) primary key was locked from within a subquery, e.g.: `SELECT * FROM (SELECT * FROM foo WHERE x = 2) FOR UPDATE;`. The error could occur either under `READ COMMITTED` isolation, or with `optimizer_use_lock_op_for_serializable` enabled. [#131397][#131397] -- Fixed an issue where adding an existing column with the `IF NOT EXISTS` option could exit too early, skipping necessary handling of the abstract syntax tree (AST). This could lead to failure of the `ALTER` statement. [#137677][#137677] -- Fixed an issue where a schema change could incorrectly cause a changefeed to fail with an assertion error like `received boundary timestamp ... of type ... before reaching existing boundary of type ...`. [#137704][#137704] -- Internal scans are now exempt from the `sql.defaults.disallow_full_table_scans.enabled` setting, allowing index creation even when the cluster setting is active. [#137722][#137722] -- Using more than one `DECLARE` statement in the definition of a user-defined function (UDF) now correctly declares additional variables. [#135739][#135739] -- Fixed an issue where corrupted table statistics could cause the `cockroach` process to crash. [#136040][#136040] -- Fixed a bug that could cause the password for the `root` user to be deleted while upgrading to v24.1. This bug only affected clusters that were initially created with v22.2 or earlier. The same bug could also cause the `defaultdb` and `postgres` databases to be recreated during the upgrade to v24.1 if they had been previously deleted. [#136074][#136074] -- `CLOSE CURSOR` statements are now allowed in read-only transactions, similar to PostgreSQL. The bug had been present since at least v23.1. [#137790][#137790] +- Fixed a bug where `ALTER COLUMN SET NOT NULL` was not enforced consistently when the table was created in the same transaction. +- Fixed a bug where `CREATE RELATION / TYPE` could leave dangling namespace entries if the schema was concurrently being dropped. +- The `idle_in_session_timeout` setting now excludes the time spent waiting for schema changer jobs to complete, preventing unintended session termination during schema change operations. +- Fixed a bug that caused the optimizer to use stale table statistics after altering an `ENUM` type used in the table. +- Table statistics collection in CockroachDB could previously run into `no bytes in account to release` errors in some edge cases (when the SQL memory budget, configured via `--max-sql-memory` flag, was close to being exhausted). The bug had been present since v21.2 and is now fixed. +- CockroachDB now better respects the `statement_timeout` limit on queries involving the top K sort and merge join operations. +- Fixed an issue where license enforcement was not consistently disabled for single-node clusters started with `cockroach start-single-node`. The fix ensures proper behavior on cluster restarts. +- Fixed a bug that caused queries against tables with user-defined types to sometimes fail with errors after restoring those tables. +- Fixed a bug that caused an incorrect filesystem to be logged as part of the store information. +- Fixed a bug that had existed since v24.1 that would cause a set-returning UDF with `OUT` parameters to return a single row. +- Fixed a bug that could cause an internal error if a table with an implicit (`rowid`) primary key was locked from within a subquery, e.g.: `SELECT * FROM (SELECT * FROM foo WHERE x = 2) FOR UPDATE;`. The error could occur either under `READ COMMITTED` isolation, or with `optimizer_use_lock_op_for_serializable` enabled. +- Fixed an issue where adding an existing column with the `IF NOT EXISTS` option could exit too early, skipping necessary handling of the abstract syntax tree (AST). This could lead to failure of the `ALTER` statement. +- Fixed an issue where a schema change could incorrectly cause a changefeed to fail with an assertion error like `received boundary timestamp ... of type ... before reaching existing boundary of type ...`. +- Internal scans are now exempt from the `sql.defaults.disallow_full_table_scans.enabled` setting, allowing index creation even when the cluster setting is active. +- Using more than one `DECLARE` statement in the definition of a user-defined function (UDF) now correctly declares additional variables. +- Fixed an issue where corrupted table statistics could cause the `cockroach` process to crash. +- Fixed a bug that could cause the password for the `root` user to be deleted while upgrading to v24.1. This bug only affected clusters that were initially created with v22.2 or earlier. The same bug could also cause the `defaultdb` and `postgres` databases to be recreated during the upgrade to v24.1 if they had been previously deleted. +- `CLOSE CURSOR` statements are now allowed in read-only transactions, similar to PostgreSQL. The bug had been present since at least v23.1.

Performance improvements

-- Improved the internal caching logic for role membership information. This reduces the latency impact of commands such as `DROP ROLE`, `CREATE ROLE`, and `GRANT role TO user`, which cause the role membership cache to be invalidated. [#136121][#136121] - -[#131397]: https://github.com/cockroachdb/cockroach/pull/131397 -[#135739]: https://github.com/cockroachdb/cockroach/pull/135739 -[#136017]: https://github.com/cockroachdb/cockroach/pull/136017 -[#136040]: https://github.com/cockroachdb/cockroach/pull/136040 -[#136074]: https://github.com/cockroachdb/cockroach/pull/136074 -[#136121]: https://github.com/cockroachdb/cockroach/pull/136121 -[#136164]: https://github.com/cockroachdb/cockroach/pull/136164 -[#136364]: https://github.com/cockroachdb/cockroach/pull/136364 -[#136408]: https://github.com/cockroachdb/cockroach/pull/136408 -[#136478]: https://github.com/cockroachdb/cockroach/pull/136478 -[#136503]: https://github.com/cockroachdb/cockroach/pull/136503 -[#136602]: https://github.com/cockroachdb/cockroach/pull/136602 -[#136651]: https://github.com/cockroachdb/cockroach/pull/136651 -[#136682]: https://github.com/cockroachdb/cockroach/pull/136682 -[#136708]: https://github.com/cockroachdb/cockroach/pull/136708 -[#136746]: https://github.com/cockroachdb/cockroach/pull/136746 -[#136831]: https://github.com/cockroachdb/cockroach/pull/136831 -[#136836]: https://github.com/cockroachdb/cockroach/pull/136836 -[#136951]: https://github.com/cockroachdb/cockroach/pull/136951 -[#137010]: https://github.com/cockroachdb/cockroach/pull/137010 -[#137100]: https://github.com/cockroachdb/cockroach/pull/137100 -[#137112]: https://github.com/cockroachdb/cockroach/pull/137112 -[#137114]: https://github.com/cockroachdb/cockroach/pull/137114 -[#137355]: https://github.com/cockroachdb/cockroach/pull/137355 -[#137378]: https://github.com/cockroachdb/cockroach/pull/137378 -[#137459]: https://github.com/cockroachdb/cockroach/pull/137459 -[#137594]: https://github.com/cockroachdb/cockroach/pull/137594 -[#137677]: https://github.com/cockroachdb/cockroach/pull/137677 -[#137704]: https://github.com/cockroachdb/cockroach/pull/137704 -[#137722]: https://github.com/cockroachdb/cockroach/pull/137722 -[#137790]: https://github.com/cockroachdb/cockroach/pull/137790 -[#137921]: https://github.com/cockroachdb/cockroach/pull/137921 -[#138187]: https://github.com/cockroachdb/cockroach/pull/138187 +- Improved the internal caching logic for role membership information. This reduces the latency impact of commands such as `DROP ROLE`, `CREATE ROLE`, and `GRANT role TO user`, which cause the role membership cache to be invalidated. diff --git a/src/current/_includes/releases/v24.1/v24.1.11.md b/src/current/_includes/releases/v24.1/v24.1.11.md index 593b1999cbd..96ba55a4e08 100644 --- a/src/current/_includes/releases/v24.1/v24.1.11.md +++ b/src/current/_includes/releases/v24.1/v24.1.11.md @@ -6,10 +6,8 @@ Release Date: January 31, 2025

Bug fixes

-- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `"batch timestamp ... must be after replica GC threshold"` error. [#140177][#140177] +- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `"batch timestamp ... must be after replica GC threshold"` error. {{site.data.alerts.callout_danger}} This fix is present in v24.1.11 and [v24.1.13](#v24-1-13), but was **not** released in [v24.1.12](#v24-1-12). {{site.data.alerts.end}} - -[#140177]: https://github.com/cockroachdb/cockroach/pull/140177 diff --git a/src/current/_includes/releases/v24.1/v24.1.12.md b/src/current/_includes/releases/v24.1/v24.1.12.md index 06413d38bf6..136fdf9d4e1 100644 --- a/src/current/_includes/releases/v24.1/v24.1.12.md +++ b/src/current/_includes/releases/v24.1/v24.1.12.md @@ -6,47 +6,32 @@ Release Date: February 6, 2025

General changes

-- The protected timestamp records of running changefeeds are now updated when the set of targets changes, such as when system tables are added to the protected tables list. [#138668][#138668] +- The protected timestamp records of running changefeeds are now updated when the set of targets changes, such as when system tables are added to the protected tables list.

Backward-incompatible changes

-- In [v24.1.11](#v24-1-11-bug-fixes), a bug was fixed that could cause `SHOW TABLES` and other introspection operations to encounter a `"batch timestamp ... must be after replica GC threshold"` error. This fix is **not** present in v24.1.12, but has been released in [v24.1.13](#v24-1-13). [#140177][#140177] +- In [v24.1.11](#v24-1-11-bug-fixes), a bug was fixed that could cause `SHOW TABLES` and other introspection operations to encounter a `"batch timestamp ... must be after replica GC threshold"` error. This fix is **not** present in v24.1.12, but has been released in [v24.1.13](#v24-1-13).

SQL language changes

-- Since v23.2 table statistics histograms have been collected for non-indexed JSON columns. Histograms are no longer collected for these columns if the `sql.stats.non_indexed_json_histograms.enabled` cluster setting is set to `false`. This reduces memory usage during table statistics collection, for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`. [#140268][#140268] -- Added support for a new index hint, `AVOID_FULL_SCAN`, which will prevent the optimizer from planning a full scan for the specified table if any other plan is possible. The hint can be used in the same way as other existing index hints. For example, `SELECT * FROM table_name@{AVOID_FULL_SCAN};`. This hint is similar to `NO_FULL_SCAN`, but will not error if a full scan cannot be avoided. Note that normally a full scan of a partial index would not be considered a "full scan" for the purposes of the `NO_FULL_SCAN` and `AVOID_FULL_SCAN` hints, but if the user has explicitly forced the partial index via `FORCE_INDEX=index_name`, CockroachDB does consider it a full scan. [#140272][#140272] -- Added the `optimizer_prefer_bounded_cardinality` session setting, which instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. This may help the optimizer produce better query plans in some cases. This setting is disabled by default. [#140272][#140272] -- Added the `optimizer_min_row_count` session setting, which sets a lower bound on row count estimates for relational expressions during query planning. A value of zero, which is the default, indicates no lower bound. Note that if this is set to a value greater than zero, a row count of zero can still be estimated for expressions with a cardinality of zero, e.g., for a contradictory filter. Setting this to a value higher than `0`, such as `1`, may yield better query plans in some cases, such as when statistics are frequently stale and inaccurate. [#140272][#140272] +- Since v23.2 table statistics histograms have been collected for non-indexed JSON columns. Histograms are no longer collected for these columns if the `sql.stats.non_indexed_json_histograms.enabled` cluster setting is set to `false`. This reduces memory usage during table statistics collection, for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`. +- Added support for a new index hint, `AVOID_FULL_SCAN`, which will prevent the optimizer from planning a full scan for the specified table if any other plan is possible. The hint can be used in the same way as other existing index hints. For example, `SELECT * FROM table_name@{AVOID_FULL_SCAN};`. This hint is similar to `NO_FULL_SCAN`, but will not error if a full scan cannot be avoided. Note that normally a full scan of a partial index would not be considered a "full scan" for the purposes of the `NO_FULL_SCAN` and `AVOID_FULL_SCAN` hints, but if the user has explicitly forced the partial index via `FORCE_INDEX=index_name`, CockroachDB does consider it a full scan. +- Added the `optimizer_prefer_bounded_cardinality` session setting, which instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. This may help the optimizer produce better query plans in some cases. This setting is disabled by default. +- Added the `optimizer_min_row_count` session setting, which sets a lower bound on row count estimates for relational expressions during query planning. A value of zero, which is the default, indicates no lower bound. Note that if this is set to a value greater than zero, a row count of zero can still be estimated for expressions with a cardinality of zero, e.g., for a contradictory filter. Setting this to a value higher than `0`, such as `1`, may yield better query plans in some cases, such as when statistics are frequently stale and inaccurate.

Operational changes

-- Added new metrics that expose the TTL for various certificates. [#138659][#138659] -- Introduced the metric `sql.schema_changer.object_count` that keeps track of the count of objects in the cluster. [#138839][#138839] +- Added new metrics that expose the TTL for various certificates. +- Introduced the metric `sql.schema_changer.object_count` that keeps track of the count of objects in the cluster.

Bug fixes

-- `ALTER BACKUP SCHEDULE` no longer fails on schedules with a collection URI that contains a space. [#138080][#138080] -- Previously, `SHOW CREATE TABLE` was showing incorrect data with regards to inverted indexes. It now shows the correct data that can be repeatedly entered back into CockroachDB to recreate the same table. [#138168][#138168] -- Fixed a bug where querying the `pg_catalog.pg_constraint` table while the schema changer was dropping a constraint could result in a query error. [#138285][#138285] -- Fixed a timing issue between `ALTER VIEW .. RENAME` and `DROP VIEW` that caused repeated failures in the `DROP VIEW` job. [#137887][#137887] -- Queries that perform a cast from the string representation of an array containing `GEOMETRY` or `GEOGRAPHY` types to a SQL array type will now succeed. [#138693][#138693] -- `security.certificate.*` metrics will now be updated if a node loads new certificates while running. [#138659][#138659] -- When the session variable `allow_role_memberships_to_change_during_transaction` is set, it is now possible to create and drop users quickly even when there are contending transactions on the `system.users` and `system.role_options` system tables. [#139027][#139027] -- Fixed a bug where the error `batch timestamp ... must be after replica GC threshold` could occur during a schema change backfill operation, and cause the schema change job to retry infinitely. Now this error is treated as permanent, and will cause the job to enter the `failed` state. [#139248][#139248] -- CockroachDB could previously hit a bounded memory leak when collecting table statistics on a table that had both very wide (10KiB or more) and relatively small (under 400B) `BYTES`-like values within the same row. This has been present since before v19.2. Additionally, in v24.1.0, a bug was introduced that made this leak also apply to `STRING`-like values. [#139174][#139174] - -[#137887]: https://github.com/cockroachdb/cockroach/pull/137887 -[#138080]: https://github.com/cockroachdb/cockroach/pull/138080 -[#138168]: https://github.com/cockroachdb/cockroach/pull/138168 -[#138285]: https://github.com/cockroachdb/cockroach/pull/138285 -[#138659]: https://github.com/cockroachdb/cockroach/pull/138659 -[#138668]: https://github.com/cockroachdb/cockroach/pull/138668 -[#138693]: https://github.com/cockroachdb/cockroach/pull/138693 -[#138839]: https://github.com/cockroachdb/cockroach/pull/138839 -[#139027]: https://github.com/cockroachdb/cockroach/pull/139027 -[#139174]: https://github.com/cockroachdb/cockroach/pull/139174 -[#139248]: https://github.com/cockroachdb/cockroach/pull/139248 -[#140268]: https://github.com/cockroachdb/cockroach/pull/140268 -[#140272]: https://github.com/cockroachdb/cockroach/pull/140272 -[#140177]: https://github.com/cockroachdb/cockroach/pull/140177 +- `ALTER BACKUP SCHEDULE` no longer fails on schedules with a collection URI that contains a space. +- Previously, `SHOW CREATE TABLE` was showing incorrect data with regards to inverted indexes. It now shows the correct data that can be repeatedly entered back into CockroachDB to recreate the same table. +- Fixed a bug where querying the `pg_catalog.pg_constraint` table while the schema changer was dropping a constraint could result in a query error. +- Fixed a timing issue between `ALTER VIEW .. RENAME` and `DROP VIEW` that caused repeated failures in the `DROP VIEW` job. +- Queries that perform a cast from the string representation of an array containing `GEOMETRY` or `GEOGRAPHY` types to a SQL array type will now succeed. +- `security.certificate.*` metrics will now be updated if a node loads new certificates while running. +- When the session variable `allow_role_memberships_to_change_during_transaction` is set, it is now possible to create and drop users quickly even when there are contending transactions on the `system.users` and `system.role_options` system tables. +- Fixed a bug where the error `batch timestamp ... must be after replica GC threshold` could occur during a schema change backfill operation, and cause the schema change job to retry infinitely. Now this error is treated as permanent, and will cause the job to enter the `failed` state. +- CockroachDB could previously hit a bounded memory leak when collecting table statistics on a table that had both very wide (10KiB or more) and relatively small (under 400B) `BYTES`-like values within the same row. This has been present since before v19.2. Additionally, in v24.1.0, a bug was introduced that made this leak also apply to `STRING`-like values. diff --git a/src/current/_includes/releases/v24.1/v24.1.13.md b/src/current/_includes/releases/v24.1/v24.1.13.md index 9af1aeea050..cf94218f838 100644 --- a/src/current/_includes/releases/v24.1/v24.1.13.md +++ b/src/current/_includes/releases/v24.1/v24.1.13.md @@ -6,10 +6,8 @@ Release Date: February 19, 2025

Bug fixes

-- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `"batch timestamp ... must be after replica GC threshold"` error. [#141657][#141657] +- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `"batch timestamp ... must be after replica GC threshold"` error. {{site.data.alerts.callout_danger}} This fix is present in v24.1.11 and [v24.1.13](#v24-1-13), but was **not** released in [v24.1.12](#v24-1-12). {{site.data.alerts.end}} - -[#141657]: https://github.com/cockroachdb/cockroach/pull/141657 diff --git a/src/current/_includes/releases/v24.1/v24.1.14.md b/src/current/_includes/releases/v24.1/v24.1.14.md index 9ab9e01b90f..d06f674633b 100644 --- a/src/current/_includes/releases/v24.1/v24.1.14.md +++ b/src/current/_includes/releases/v24.1/v24.1.14.md @@ -6,48 +6,29 @@ Release Date: March 6, 2025

SQL language changes

-- Since v23.2, table statistics histograms have been collected for non-indexed `JSONB` columns. Histograms are no longer collected for these columns if the `sql.stats.non_indexed_json_histograms.enabled` cluster setting is set to `false`. This reduces memory usage during table statistics collection for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`. [#140142][#140142] -- Added support for a new index hint, `AVOID_FULL_SCAN`, which will prevent the optimizer from planning a full scan for the specified table if any other plan is possible. The hint can be used in the same way as other existing index hints. For example, `SELECT * FROM table_name@{AVOID_FULL_SCAN};`. This hint is similar to `NO_FULL_SCAN`, but will not error if a full scan cannot be avoided. Note that normally a full scan of a partial index would not be considered a "full scan" for the purposes of the `NO_FULL_SCAN` and `AVOID_FULL_SCAN` hints, but if the user has explicitly forced the partial index via `FORCE_INDEX=index_name`, we do consider it a full scan. [#140259][#140259] -- Added the `optimizer_prefer_bounded_cardinality` session setting, which instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. This may help the optimizer produce better query plans in some cases. This setting is disabled by default. [#140259][#140259] -- Added the `optimizer_min_row_count` session setting, which sets a lower bound on row count estimates for relational expressions during query planning. A value of `0`, which is the default, indicates no lower bound. Note that if this is set to a value greater than 0, a row count of zero can still be estimated for expressions with a cardinality of zero, e.g., for a contradictory filter. Setting this to a value higher than `0`, such as `1`, may yield better query plans in some cases, such as when statistics are frequently stale and inaccurate. [#140259][#140259] -- Fixed a bug existing only in pre-release versions of v25.1 which could cause unexpected errors during planning for `VALUES` expressions containing function calls with multiple overloads. [#140648][#140648] -- Added the `optimizer_check_input_min_row_count` session setting to control the minimum row count estimate for buffer scans of foreign key and uniqueness checks. It defaults to `0`. [#141378][#141378] +- Since v23.2, table statistics histograms have been collected for non-indexed `JSONB` columns. Histograms are no longer collected for these columns if the `sql.stats.non_indexed_json_histograms.enabled` cluster setting is set to `false`. This reduces memory usage during table statistics collection for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`. +- Added support for a new index hint, `AVOID_FULL_SCAN`, which will prevent the optimizer from planning a full scan for the specified table if any other plan is possible. The hint can be used in the same way as other existing index hints. For example, `SELECT * FROM table_name@{AVOID_FULL_SCAN};`. This hint is similar to `NO_FULL_SCAN`, but will not error if a full scan cannot be avoided. Note that normally a full scan of a partial index would not be considered a "full scan" for the purposes of the `NO_FULL_SCAN` and `AVOID_FULL_SCAN` hints, but if the user has explicitly forced the partial index via `FORCE_INDEX=index_name`, we do consider it a full scan. +- Added the `optimizer_prefer_bounded_cardinality` session setting, which instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. This may help the optimizer produce better query plans in some cases. This setting is disabled by default. +- Added the `optimizer_min_row_count` session setting, which sets a lower bound on row count estimates for relational expressions during query planning. A value of `0`, which is the default, indicates no lower bound. Note that if this is set to a value greater than 0, a row count of zero can still be estimated for expressions with a cardinality of zero, e.g., for a contradictory filter. Setting this to a value higher than `0`, such as `1`, may yield better query plans in some cases, such as when statistics are frequently stale and inaccurate. +- Fixed a bug existing only in pre-release versions of v25.1 which could cause unexpected errors during planning for `VALUES` expressions containing function calls with multiple overloads. +- Added the `optimizer_check_input_min_row_count` session setting to control the minimum row count estimate for buffer scans of foreign key and uniqueness checks. It defaults to `0`.

Operational changes

-- The `changefeed.max_behind_nanos` metric now supports scoping with metric labels. [#139239][#139239] +- The `changefeed.max_behind_nanos` metric now supports scoping with metric labels.

Command-line changes

-- Improved the performance of the debug zip query that collects `transaction_contention_events` data, reducing the chances of "memory budget exceeded" or "query execution canceled due to statement timeout" errors. [#139752][#139752] +- Improved the performance of the debug zip query that collects `transaction_contention_events` data, reducing the chances of "memory budget exceeded" or "query execution canceled due to statement timeout" errors.

Bug fixes

-- Fixed a bug that, under rare circumstances, could cause draining a node to fail with the error message "some sessions did not respond to cancellation within 1s". [#139477][#139477] -- Fixed a bug that prevented the `CREATE` statement for a routine from being shown in a statement bundle. This happened when the routine was created on a schema other than `public`. The bug had existed since v23.1. [#136127][#136127] -- Fixed a memory leak that could previously occur when evaluating some memory-intensive queries via the vectorized engine in CockroachDB. The leak had been present since v20.2. [#139097][#139097] -- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a "batch timestamp must be after replica GC threshold" error. [#140086][#140086] -- Removed duplicate columns in the Parquet output from changefeeds using CDC queries. [#140151][#140151] -- Fixed a rare bug in which a query might fail with the error "could not find computed column expression for column in table" while dropping a virtual computed column from the table. This bug was introduced in v23.2.4. [#139873][#139873] -- Fixed a bug that would cause an internal error when the result of a `RECORD`-returning user-defined function (UDF) was wrapped by another expression (such as `COALESCE`) within a `VALUES` clause. [#140648][#140648] -- The **Data Distribution** report on the **Advanced Debug** page will no longer crash if there are null values for `raw_sql_config` in `crdb_internal.zones`. [#140659][#140659] -- Upgraded the Sarama Kafka client library to pick up a fix for a race condition bug that could occur when Kafka throttling was enabled. [#140157][#140157] - -[#136127]: https://github.com/cockroachdb/cockroach/pull/136127 -[#139097]: https://github.com/cockroachdb/cockroach/pull/139097 -[#139239]: https://github.com/cockroachdb/cockroach/pull/139239 -[#139477]: https://github.com/cockroachdb/cockroach/pull/139477 -[#139752]: https://github.com/cockroachdb/cockroach/pull/139752 -[#139873]: https://github.com/cockroachdb/cockroach/pull/139873 -[#140086]: https://github.com/cockroachdb/cockroach/pull/140086 -[#140142]: https://github.com/cockroachdb/cockroach/pull/140142 -[#140151]: https://github.com/cockroachdb/cockroach/pull/140151 -[#140157]: https://github.com/cockroachdb/cockroach/pull/140157 -[#140249]: https://github.com/cockroachdb/cockroach/pull/140249 -[#140259]: https://github.com/cockroachdb/cockroach/pull/140259 -[#140281]: https://github.com/cockroachdb/cockroach/pull/140281 -[#140648]: https://github.com/cockroachdb/cockroach/pull/140648 -[#140659]: https://github.com/cockroachdb/cockroach/pull/140659 -[#140990]: https://github.com/cockroachdb/cockroach/pull/140990 -[#141138]: https://github.com/cockroachdb/cockroach/pull/141138 -[#141378]: https://github.com/cockroachdb/cockroach/pull/141378 +- Fixed a bug that, under rare circumstances, could cause draining a node to fail with the error message "some sessions did not respond to cancellation within 1s". +- Fixed a bug that prevented the `CREATE` statement for a routine from being shown in a statement bundle. This happened when the routine was created on a schema other than `public`. The bug had existed since v23.1. +- Fixed a memory leak that could previously occur when evaluating some memory-intensive queries via the vectorized engine in CockroachDB. The leak had been present since v20.2. +- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a "batch timestamp must be after replica GC threshold" error. +- Removed duplicate columns in the Parquet output from changefeeds using CDC queries. +- Fixed a rare bug in which a query might fail with the error "could not find computed column expression for column in table" while dropping a virtual computed column from the table. This bug was introduced in v23.2.4. +- Fixed a bug that would cause an internal error when the result of a `RECORD`-returning user-defined function (UDF) was wrapped by another expression (such as `COALESCE`) within a `VALUES` clause. +- The **Data Distribution** report on the **Advanced Debug** page will no longer crash if there are null values for `raw_sql_config` in `crdb_internal.zones`. +- Upgraded the Sarama Kafka client library to pick up a fix for a race condition bug that could occur when Kafka throttling was enabled. diff --git a/src/current/_includes/releases/v24.1/v24.1.15.md b/src/current/_includes/releases/v24.1/v24.1.15.md index 54ac6c48d17..63cdec3536e 100644 --- a/src/current/_includes/releases/v24.1/v24.1.15.md +++ b/src/current/_includes/releases/v24.1/v24.1.15.md @@ -6,39 +6,24 @@ Release Date: April 3, 2025

Operational changes

-- Added the `sql.statement_timeout.count` metric to track the number of SQL statements that fail due to exceeding the statement timeout. [#142157][#142157] -- Added the `sql.transaction_timeout.count` metric to track the number of SQL statements that fail due to exceeding the transaction timeout. [#142157][#142157] -- The `node decommission` CLI command now waits until the target node is fully drained before marking it as decommissioned. Previously, the command would start draining but not wait, leaving the node in an unstable state where it could still accept client requests while being unable to communicate with the cluster, causing those requests to hang or fail with unexpected errors. [#142427][#142427] +- Added the `sql.statement_timeout.count` metric to track the number of SQL statements that fail due to exceeding the statement timeout. +- Added the `sql.transaction_timeout.count` metric to track the number of SQL statements that fail due to exceeding the transaction timeout. +- The `node decommission` CLI command now waits until the target node is fully drained before marking it as decommissioned. Previously, the command would start draining but not wait, leaving the node in an unstable state where it could still accept client requests while being unable to communicate with the cluster, causing those requests to hang or fail with unexpected errors.

Bug fixes

-- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a "batch timestamp must be after replica GC threshold" error. [#141723][#141723] -- Fixed a bug that could cause gateway nodes to panic when performing an `UPSERT` on a table with a `BOOL` primary key column and a partial index using the primary key column as the predicate expression. [#141824][#141824] -- Fixed a bug where `CREATE SEQUENCE` without concurrent DDL operations could hit a retry error due to incorrect schema modification. [#142609][#142609] -- Fixed a bug where CockroachDB could incorrectly evaluate casts to some OID types (e.g., `REGCLASS`). This issue had been present since at least v22.1. [#141959][#141959] -- Fixed a bug that could cause `nil pointer dereference` errors when executing statements with user-defined functions (UDFs) or certain built-in functions like `obj_description`. [#141651][#141651] -- Fixed a bug where nodes drained during decommissioning could interrupt active SQL connections unexpectedly, even when drain was expected to wait for them to complete. [#142816][#142816] -- Fixed a bug where the fraction completed and internal checkpoints during an index backfill operation would stop being written if any periodic fraction/checkpoint write failed. Progress is now additionally logged to aid debugging. This bug affected schema changes such as creating an index or adding a non-nullable column. [#141786][#141786] -- Fixed a bug that could prevent `SHOW CREATE TABLE` from working if a database was offline (e.g., due to a `RESTORE`). [#141510][#141510] -- Fixed a bug where tuple labels were sometimes disregarded, causing unexpected behavior, such as when converting a tuple to `JSON` with `to_jsonb`. This bug existed since v22.1.0 and became more likely to cause issues after changes in v24.1.7. [#142137][#142137] -- Fixed a bug where the declarative schema changer allowed `CREATE SEQUENCE` operations to proceed even while a `DROP SCHEMA` or `DROP DATABASE` was in progress. Such operations now retry if the parent object has a schema change in progress. [#142761][#142761] -- Fixed a bug in `v24.1.14`, `v24.3.7`, `v24.3.8`, and `v25.1` that could cause a nil-pointer error when a column's default expression contained a volatile expression (like `nextval`) as a UDF argument. [#143637][#143637] +- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a "batch timestamp must be after replica GC threshold" error. +- Fixed a bug that could cause gateway nodes to panic when performing an `UPSERT` on a table with a `BOOL` primary key column and a partial index using the primary key column as the predicate expression. +- Fixed a bug where `CREATE SEQUENCE` without concurrent DDL operations could hit a retry error due to incorrect schema modification. +- Fixed a bug where CockroachDB could incorrectly evaluate casts to some OID types (e.g., `REGCLASS`). This issue had been present since at least v22.1. +- Fixed a bug that could cause `nil pointer dereference` errors when executing statements with user-defined functions (UDFs) or certain built-in functions like `obj_description`. +- Fixed a bug where nodes drained during decommissioning could interrupt active SQL connections unexpectedly, even when drain was expected to wait for them to complete. +- Fixed a bug where the fraction completed and internal checkpoints during an index backfill operation would stop being written if any periodic fraction/checkpoint write failed. Progress is now additionally logged to aid debugging. This bug affected schema changes such as creating an index or adding a non-nullable column. +- Fixed a bug that could prevent `SHOW CREATE TABLE` from working if a database was offline (e.g., due to a `RESTORE`). +- Fixed a bug where tuple labels were sometimes disregarded, causing unexpected behavior, such as when converting a tuple to `JSON` with `to_jsonb`. This bug existed since v22.1.0 and became more likely to cause issues after changes in v24.1.7. +- Fixed a bug where the declarative schema changer allowed `CREATE SEQUENCE` operations to proceed even while a `DROP SCHEMA` or `DROP DATABASE` was in progress. Such operations now retry if the parent object has a schema change in progress. +- Fixed a bug in `v24.1.14`, `v24.3.7`, `v24.3.8`, and `v25.1` that could cause a nil-pointer error when a column's default expression contained a volatile expression (like `nextval`) as a UDF argument.

Miscellaneous

-- Configuring the `sql.ttl.default_delete_rate_limit` cluster setting now displays a notice clarifying that the TTL rate limit is per leaseholder per table, with a link to the documentation. [#142832][#142832] - -[#142157]: https://github.com/cockroachdb/cockroach/pull/142157 -[#142427]: https://github.com/cockroachdb/cockroach/pull/142427 -[#141510]: https://github.com/cockroachdb/cockroach/pull/141510 -[#142761]: https://github.com/cockroachdb/cockroach/pull/142761 -[#141824]: https://github.com/cockroachdb/cockroach/pull/141824 -[#141959]: https://github.com/cockroachdb/cockroach/pull/141959 -[#141651]: https://github.com/cockroachdb/cockroach/pull/141651 -[#143637]: https://github.com/cockroachdb/cockroach/pull/143637 -[#142609]: https://github.com/cockroachdb/cockroach/pull/142609 -[#141786]: https://github.com/cockroachdb/cockroach/pull/141786 -[#142832]: https://github.com/cockroachdb/cockroach/pull/142832 -[#141723]: https://github.com/cockroachdb/cockroach/pull/141723 -[#142816]: https://github.com/cockroachdb/cockroach/pull/142816 -[#142137]: https://github.com/cockroachdb/cockroach/pull/142137 +- Configuring the `sql.ttl.default_delete_rate_limit` cluster setting now displays a notice clarifying that the TTL rate limit is per leaseholder per table, with a link to the documentation. diff --git a/src/current/_includes/releases/v24.1/v24.1.16.md b/src/current/_includes/releases/v24.1/v24.1.16.md index 80d349a6a3e..49841b9d9c3 100644 --- a/src/current/_includes/releases/v24.1/v24.1.16.md +++ b/src/current/_includes/releases/v24.1/v24.1.16.md @@ -7,7 +7,3 @@ Release Date: April 9, 2025

Bug fixes

- 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. - [#144061][#144061] - - -[#144061]: https://github.com/cockroachdb/cockroach/pull/144061 diff --git a/src/current/_includes/releases/v24.1/v24.1.17.md b/src/current/_includes/releases/v24.1/v24.1.17.md index dc63a7226e8..657560d8dec 100644 --- a/src/current/_includes/releases/v24.1/v24.1.17.md +++ b/src/current/_includes/releases/v24.1/v24.1.17.md @@ -6,6 +6,4 @@ Release Date: April 28, 2025

Bug fixes

-- Fixed a rare corruption bug that impacts import and materialized views. [#144660][#144660] - -[#144660]: https://github.com/cockroachdb/cockroach/pull/144660 +- Fixed a rare corruption bug that impacts import and materialized views. diff --git a/src/current/_includes/releases/v24.1/v24.1.18.md b/src/current/_includes/releases/v24.1/v24.1.18.md index 1e694b1dd68..5dd0d4d60c3 100644 --- a/src/current/_includes/releases/v24.1/v24.1.18.md +++ b/src/current/_includes/releases/v24.1/v24.1.18.md @@ -7,38 +7,25 @@ Release Date: April 30, 2025

SQL language changes

- `EXPLAIN ANALYZE` statements now display the number of transaction retries and time spent retrying, if non-zero, in the plan output. - [#142931][#142931] + - Added the `WITH IGNORE_FOREIGN_KEYS` option to `SHOW CREATE TABLE` which omits foreign key constraints from the output schema. This option is also allowed in `SHOW CREATE VIEW`, but has no effect. It cannot be combined with the `WITH REDACT` option. - [#142164][#142164] +

Bug fixes

-- Fixed a rare corruption bug that impacts import and materialized views. [#144689][#144689] +- Fixed a rare corruption bug that impacts import and materialized views. - Fixed a bug that caused changefeeds to fail on startup when scanning a single key. - [#143148][#143148] + - Fixed a bug in the client certificate expiration metrics `security.certificate.expiration.client` and `security.certificate.ttl.client`. - [#142915][#142915] + - Fixed a bug in v24.1.14, v24.3.7, v24.3.8, and v25.1 that could cause a nil-pointer error when a column's default expression contained a volatile expression (like `nextval`) as a UDF argument. - [#143638][#143638] + - 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. - [#143275][#143275] + - 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. - [#144035][#144035] + - 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. - [#143313][#143313] + - 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. - [#143288][#143288] + - 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. - [#143792][#143792] - -[#143313]: https://github.com/cockroachdb/cockroach/pull/143313 -[#143288]: https://github.com/cockroachdb/cockroach/pull/143288 -[#143792]: https://github.com/cockroachdb/cockroach/pull/143792 -[#142931]: https://github.com/cockroachdb/cockroach/pull/142931 -[#142164]: https://github.com/cockroachdb/cockroach/pull/142164 -[#143638]: https://github.com/cockroachdb/cockroach/pull/143638 -[#143275]: https://github.com/cockroachdb/cockroach/pull/143275 -[#144035]: https://github.com/cockroachdb/cockroach/pull/144035 -[#143148]: https://github.com/cockroachdb/cockroach/pull/143148 -[#142915]: https://github.com/cockroachdb/cockroach/pull/142915 -[#144689]: https://github.com/cockroachdb/cockroach/pull/144689 diff --git a/src/current/_includes/releases/v24.1/v24.1.19.md b/src/current/_includes/releases/v24.1/v24.1.19.md index 834db74b345..a069abe03a5 100644 --- a/src/current/_includes/releases/v24.1/v24.1.19.md +++ b/src/current/_includes/releases/v24.1/v24.1.19.md @@ -7,54 +7,37 @@ Release Date: May 28, 2025

Operational changes

- Changed the default value of the cluster setting `admission.l0_file_count_overload_threshold` to `4000`. - [#145920][#145920] +

DB Console changes

- 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. - [#145987][#145987] +

Bug fixes

- Fixed a bug where CockroachDB could encounter a `cannot specify timestamp older than ...` error during table statistics collection in some cases (e.g., when the cluster is overloaded). The bug was present since v19.1. - [#144519][#144519] + - 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. - [#144768][#144768] + - 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. - [#144804][#144804] + - Fixed a bug in the **SQL Activity Statements** page where filtering by **Statement Type** returned no results. The filter now works as expected. - [#144853][#144853] + - Improved the performance of `SHOW CREATE TABLE` on multi-region databases with large numbers of objects. - [#145077][#145077] + - Fixed a bug that could lead to schema changes hanging after a cluster recovered from availability issues. - [#145542][#145542] + - 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. - [#145577][#145577] + - Fixed a bug where orphaned leases were not properly cleaned up. - [#146111][#146111] + - Fixed an internal assertion failure that could occur during operations like `ALTER TYPE` or `ALTER DATABASE ... ADD REGION` when temporary tables were present. - [#146199][#146199] + - 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. - [#146310][#146310] + - 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. - [#146323][#146323]\ +\ - Fixed a rare corruption bug that impacts import and materialized views. - [#144660][#144660] - - -[#144804]: https://github.com/cockroachdb/cockroach/pull/144804 -[#145577]: https://github.com/cockroachdb/cockroach/pull/145577 -[#146111]: https://github.com/cockroachdb/cockroach/pull/146111 -[#146199]: https://github.com/cockroachdb/cockroach/pull/146199 -[#146310]: https://github.com/cockroachdb/cockroach/pull/146310 -[#144660]: https://github.com/cockroachdb/cockroach/pull/144660 -[#145920]: https://github.com/cockroachdb/cockroach/pull/145920 -[#145987]: https://github.com/cockroachdb/cockroach/pull/145987 -[#144768]: https://github.com/cockroachdb/cockroach/pull/144768 -[#145077]: https://github.com/cockroachdb/cockroach/pull/145077 -[#146323]: https://github.com/cockroachdb/cockroach/pull/146323 -[#144519]: https://github.com/cockroachdb/cockroach/pull/144519 -[#144853]: https://github.com/cockroachdb/cockroach/pull/144853 -[#145542]: https://github.com/cockroachdb/cockroach/pull/145542 diff --git a/src/current/_includes/releases/v24.1/v24.1.2.md b/src/current/_includes/releases/v24.1/v24.1.2.md index 5ae9d4aed7e..75228a9ba2b 100644 --- a/src/current/_includes/releases/v24.1/v24.1.2.md +++ b/src/current/_includes/releases/v24.1/v24.1.2.md @@ -6,47 +6,47 @@ Release Date: July 2, 2024

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

-- Added error messages for unsupported Apache Pulsar [changefeed]({% link v24.1/create-changefeed.md %}) sink parameters, e.g. `topic_prefix is not yet supported`. [#124666][#124666] +- Added error messages for unsupported Apache Pulsar [changefeed]({% link v24.1/create-changefeed.md %}) sink parameters, e.g. `topic_prefix is not yet supported`. - Fixed a bug that was present since v22.2 where [changefeeds]({% link v24.1/change-data-capture-overview.md %}) with long-running [initial scans]({% link v24.1/create-changefeed.md %}#initial-scan) might incorrectly restore checkpoint job progress and drop events during [changefeed restarts]({% link v24.1/changefeed-messages.md %}#duplicate-messages) due to transient errors or node restarts. The bug was most likely to occur in clusters with the following contributing factors: - The `changefeed.shutdown_checkpoint.enabled` [cluster setting]({% link v24.1/cluster-settings.md %}) was enabled. - The cluster settings `changefeed.frontier_checkpoint_frequency` and `low changefeed.frontier_highwater_lag_checkpoint_threshold` were set low, which resulted in the initial scan taking many multiples of the configured frequency to complete. - There were multiple target tables with significant differences in row counts in one changefeed. - The changefeed target tables were large with many ranges. - - The initial scan took a long time to complete (an hour or longer). [#124996][#124996] + - The initial scan took a long time to complete (an hour or longer).

Operational changes

-- Improved [disk usage metric reporting]({% link v24.1/ui-cluster-overview-page.md %}#capacity-metrics) over volumes that dynamically change their size over the life of the `cockroach` process. [#125050][#125050] +- Improved [disk usage metric reporting]({% link v24.1/ui-cluster-overview-page.md %}#capacity-metrics) over volumes that dynamically change their size over the life of the `cockroach` process. - The default values for the following [cluster settings]({% link v24.1/cluster-settings.md %}) were updated from `100000` to `7500`. These settings control the maximum number of [fingerprints]({% link v24.1/ui-statements-page.md %}#sql-statement-fingerprints) (distinct combinations of statements and [transactions]({% link v24.1/transactions.md %})) CockroachDB can store in memory, with stats being flushed on a `10m` [interval]({% link v24.1/interval.md %}) by default. You can increase these settings if your workload produces more unique fingerprints than this amount within the flush interval, and you notice that SQL stats are missing. [cockroachdb/cockroach#125554][#125554] - [`sql.metrics.max_mem_stmt_fingerprints`]({% link v24.1/cluster-settings.md %}#setting-sql-metrics-max-mem-stmt-fingerprints) - [`sql.metrics.max_mem_txn_fingerprints`]({% link v24.1/cluster-settings.md %}#setting-sql-metrics-max-mem-txn-fingerprints)

DB Console changes

-- The favicon now renders properly for [DB Console]({% link v24.1/ui-overview.md %}), along with other image files. [#122706][#122706] +- The favicon now renders properly for [DB Console]({% link v24.1/ui-overview.md %}), along with other image files.

Bug fixes

-- [`SHOW TYPES`]({% link v24.1/show-types.md %}) now includes [user-defined composite types]({% link v24.1/create-type.md %}#create-a-composite-data-type). It had omitted those types ever since composite types were added in v23.1. [#124817][#124817] -- Fixed a crash introduced in v24.1.0-beta.2 that could occur when planning [statistics]({% link v24.1/cost-based-optimizer.md %}#table-statistics) collection on a table with a [virtual computed column]({% link v24.1/computed-columns.md %}) using a [user-defined type]({% link v24.1/create-type.md %}) when the [cluster setting]({% link v24.1/cluster-settings.md %}#setting-sql-stats-virtual-computed-columns-enabled) `sql.stats.virtual_computed_columns.enabled` (introduced in v24.1.0-alpha.1) was set to `true`. [#124996][#124996] -- Fixed handling in the [declarative schema changer]({% link v24.1/online-schema-changes.md %}) when columns are included in the `STORING()` clause of a [`CREATE INDEX`]({% link v24.1/create-index.md %}) statement. CockroachDB now checks if the column is virtual up-front, and properly detects when a column is already handled by an existing [`INDEX`]({% link v24.1/indexes.md %}) when the column name has UTF-8 characters. [#125153][#125153] -- Fixed a bug where a change to a [user-defined type]({% link v24.1/create-type.md %}) could cause queries against tables using that type to fail with an error message like: `"histogram.go:694: span must be fully contained in the bucket"`. The change to the user-defined type could come directly from an [`ALTER TYPE`]({% link v24.1/alter-type.md %}) statement, or indirectly from an [`ALTER DATABASE ... ADD REGION`]({% link v24.1/alter-database.md %}#add-region) or [`DROP REGION`]({% link v24.1/alter-database.md %}#drop-region) statement (which implicitly changes the `crdb_internal_region` type). This bug had existed since UDTs were introduced in v20.2. [#124810][#124810] -- Fixed a bug where [telemetry logs]({% link v24.1/logging.md %}#telemetry) had the same [statement fingerprint]({% link v24.1/ui-statements-page.md %}#sql-statement-fingerprints) ID for different SQL statements. [#125000][#125000] -- Fixed an issue where [adding a column]({% link v24.1/alter-table.md %}#add-column) with a default value of an empty [array]({% link v24.1/array.md %}) would not succeed. [#125325][#125325] -- [`ALTER TABLE ... ADD CONSTRAINT UNIQUE`]({% link v24.1/alter-table.md %}) will now fail with a well-formed error message and code `42601` if a statement tries to add a [unique constraint]({% link v24.1/unique.md %}) on an expression. [#125417][#125417] -- Fixed a bug where the [`public` schema]({% link v24.1/schema-design-overview.md %}#schemas) would be created with the wrong owner. Previously the [`admin` role](https://www.cockroachlabs.com/docs/v24.1/security-reference/authorization#roles) would own the `public` schema. Now, the database owner is also the owner of the `public` schema. The owner can be altered after the schema is created. [#125533][#125533] -- Fixed a bug in v24.1, v23.2, and v23.1 where using the `changefeed.aggregator.flush_jitter` [cluster setting]({% link v24.1/cluster-settings.md %}#setting-changefeed-aggregator-flush-jitter) with the [`min_checkpoint_frequency`]({% link v24.1/create-changefeed.md %}#min-checkpoint-frequency) option set to `0` could cause panics. [#125459][#125459] -- The log message `"expiration of liveness record ... is not greater than expiration of the previous lease ... after liveness heartbeat"` is no longer generated. [#125449][#125449] -- Fixed a bug introduced in v23.2.0 in which CockroachDB would hit an internal error when evaluating [`INSERT`s]({% link v24.1/insert.md %}) into [`REGIONAL BY ROW`]({% link v24.1/table-localities.md %}#regional-by-row-tables) tables where the source was a `VALUES` clause with a single row and at least one boolean expression. [#126209][#126209] +- [`SHOW TYPES`]({% link v24.1/show-types.md %}) now includes [user-defined composite types]({% link v24.1/create-type.md %}#create-a-composite-data-type). It had omitted those types ever since composite types were added in v23.1. +- Fixed a crash introduced in v24.1.0-beta.2 that could occur when planning [statistics]({% link v24.1/cost-based-optimizer.md %}#table-statistics) collection on a table with a [virtual computed column]({% link v24.1/computed-columns.md %}) using a [user-defined type]({% link v24.1/create-type.md %}) when the [cluster setting]({% link v24.1/cluster-settings.md %}#setting-sql-stats-virtual-computed-columns-enabled) `sql.stats.virtual_computed_columns.enabled` (introduced in v24.1.0-alpha.1) was set to `true`. +- Fixed handling in the [declarative schema changer]({% link v24.1/online-schema-changes.md %}) when columns are included in the `STORING()` clause of a [`CREATE INDEX`]({% link v24.1/create-index.md %}) statement. CockroachDB now checks if the column is virtual up-front, and properly detects when a column is already handled by an existing [`INDEX`]({% link v24.1/indexes.md %}) when the column name has UTF-8 characters. +- Fixed a bug where a change to a [user-defined type]({% link v24.1/create-type.md %}) could cause queries against tables using that type to fail with an error message like: `"histogram.go:694: span must be fully contained in the bucket"`. The change to the user-defined type could come directly from an [`ALTER TYPE`]({% link v24.1/alter-type.md %}) statement, or indirectly from an [`ALTER DATABASE ... ADD REGION`]({% link v24.1/alter-database.md %}#add-region) or [`DROP REGION`]({% link v24.1/alter-database.md %}#drop-region) statement (which implicitly changes the `crdb_internal_region` type). This bug had existed since UDTs were introduced in v20.2. +- Fixed a bug where [telemetry logs]({% link v24.1/logging.md %}#telemetry) had the same [statement fingerprint]({% link v24.1/ui-statements-page.md %}#sql-statement-fingerprints) ID for different SQL statements. +- Fixed an issue where [adding a column]({% link v24.1/alter-table.md %}#add-column) with a default value of an empty [array]({% link v24.1/array.md %}) would not succeed. +- [`ALTER TABLE ... ADD CONSTRAINT UNIQUE`]({% link v24.1/alter-table.md %}) will now fail with a well-formed error message and code `42601` if a statement tries to add a [unique constraint]({% link v24.1/unique.md %}) on an expression. +- Fixed a bug where the [`public` schema]({% link v24.1/schema-design-overview.md %}#schemas) would be created with the wrong owner. Previously the [`admin` role](https://www.cockroachlabs.com/docs/v24.1/security-reference/authorization#roles) would own the `public` schema. Now, the database owner is also the owner of the `public` schema. The owner can be altered after the schema is created. +- Fixed a bug in v24.1, v23.2, and v23.1 where using the `changefeed.aggregator.flush_jitter` [cluster setting]({% link v24.1/cluster-settings.md %}#setting-changefeed-aggregator-flush-jitter) with the [`min_checkpoint_frequency`]({% link v24.1/create-changefeed.md %}#min-checkpoint-frequency) option set to `0` could cause panics. +- The log message `"expiration of liveness record ... is not greater than expiration of the previous lease ... after liveness heartbeat"` is no longer generated. +- Fixed a bug introduced in v23.2.0 in which CockroachDB would hit an internal error when evaluating [`INSERT`s]({% link v24.1/insert.md %}) into [`REGIONAL BY ROW`]({% link v24.1/table-localities.md %}#regional-by-row-tables) tables where the source was a `VALUES` clause with a single row and at least one boolean expression.

Performance improvements

-- Improved the efficiency of error handling in the [vectorized execution engine]({% link v24.1/vectorized-execution.md %}) to reduce the CPU overhead of statement timeout handling and reduce the potential for more statement timeouts. [#124996][#124996] -- Some [privilege](https://www.cockroachlabs.com/docs/v24.1/security-reference/authorization#managing-privileges) checks when scanning the `crdb_internal.system_jobs` internal table now happen once before the scan, instead of once for each row. This improves performance for queries that read from `crdb_internal.system_jobs`. [#125250][#125250] +- Improved the efficiency of error handling in the [vectorized execution engine]({% link v24.1/vectorized-execution.md %}) to reduce the CPU overhead of statement timeout handling and reduce the potential for more statement timeouts. +- Some [privilege](https://www.cockroachlabs.com/docs/v24.1/security-reference/authorization#managing-privileges) checks when scanning the `crdb_internal.system_jobs` internal table now happen once before the scan, instead of once for each row. This improves performance for queries that read from `crdb_internal.system_jobs`.

Miscellaneous

-- A [changefeed]({% link v24.1/create-changefeed.md %}) optimization to reduce duplicates during aggregator restarts has been disabled due to poor performance. [#124996][#124996] +- A [changefeed]({% link v24.1/create-changefeed.md %}) optimization to reduce duplicates during aggregator restarts has been disabled due to poor performance.
@@ -55,22 +55,3 @@ Release Date: July 2, 2024 This release includes 78 merged PRs by 35 authors.
- -[#122706]: https://github.com/cockroachdb/cockroach/pull/122706 -[#124666]: https://github.com/cockroachdb/cockroach/pull/124666 -[#124801]: https://github.com/cockroachdb/cockroach/pull/124801 -[#124810]: https://github.com/cockroachdb/cockroach/pull/124810 -[#124817]: https://github.com/cockroachdb/cockroach/pull/124817 -[#124996]: https://github.com/cockroachdb/cockroach/pull/124996 -[#125000]: https://github.com/cockroachdb/cockroach/pull/125000 -[#125050]: https://github.com/cockroachdb/cockroach/pull/125050 -[#125153]: https://github.com/cockroachdb/cockroach/pull/125153 -[#125250]: https://github.com/cockroachdb/cockroach/pull/125250 -[#125325]: https://github.com/cockroachdb/cockroach/pull/125325 -[#125417]: https://github.com/cockroachdb/cockroach/pull/125417 -[#125449]: https://github.com/cockroachdb/cockroach/pull/125449 -[#125459]: https://github.com/cockroachdb/cockroach/pull/125459 -[#125522]: https://github.com/cockroachdb/cockroach/pull/125522 -[#125533]: https://github.com/cockroachdb/cockroach/pull/125533 -[#125554]: https://github.com/cockroachdb/cockroach/pull/125554 -[#126209]: https://github.com/cockroachdb/cockroach/pull/126209 diff --git a/src/current/_includes/releases/v24.1/v24.1.20.md b/src/current/_includes/releases/v24.1/v24.1.20.md index f8e472092fa..773dc54853a 100644 --- a/src/current/_includes/releases/v24.1/v24.1.20.md +++ b/src/current/_includes/releases/v24.1/v24.1.20.md @@ -7,28 +7,18 @@ Release Date: June 25, 2025

Bug fixes

- Fixed a bug that could potentially cause a changefeed to complete erroneously when one of its watched tables encounters a schema change. - [#147039][#147039] + - 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. - [#147220][#147220] + - 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). - [#147338][#147338] + - 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. - [#147457][#147457] + - Fixed a bug where prepared statements on schema changes could fail with runtime errors. - [#147668][#147668] + - Fixed a bug where `ALTER TABLE` was modifying identity attributes on columns not backed by a sequence. - [#147771][#147771] +

Performance improvements

- TTL jobs now respond to cluster topology changes by restarting and rebalancing across available nodes. - [#147213][#147213] - - -[#147668]: https://github.com/cockroachdb/cockroach/pull/147668 -[#147771]: https://github.com/cockroachdb/cockroach/pull/147771 -[#147213]: https://github.com/cockroachdb/cockroach/pull/147213 -[#147039]: https://github.com/cockroachdb/cockroach/pull/147039 -[#147220]: https://github.com/cockroachdb/cockroach/pull/147220 -[#147338]: https://github.com/cockroachdb/cockroach/pull/147338 -[#147457]: https://github.com/cockroachdb/cockroach/pull/147457 diff --git a/src/current/_includes/releases/v24.1/v24.1.21.md b/src/current/_includes/releases/v24.1/v24.1.21.md index a162506139a..1bec116bccd 100644 --- a/src/current/_includes/releases/v24.1/v24.1.21.md +++ b/src/current/_includes/releases/v24.1/v24.1.21.md @@ -7,10 +7,5 @@ Release Date: July 28, 2025

Bug fixes

- Fixed a data race in the `cloudstorage` sink. - [#147160][#147160] -- Fixed a bug where `libpq` clients using the async API could hang with large result sets (Python: psycopg; Ruby: ActiveRecord, ruby-pg). - [#148472][#148472] - -[#147160]: https://github.com/cockroachdb/cockroach/pull/147160 -[#148472]: https://github.com/cockroachdb/cockroach/pull/148472 +- Fixed a bug where `libpq` clients using the async API could hang with large result sets (Python: psycopg; Ruby: ActiveRecord, ruby-pg). diff --git a/src/current/_includes/releases/v24.1/v24.1.22.md b/src/current/_includes/releases/v24.1/v24.1.22.md index 6edb2e3a3df..83f3da89d28 100644 --- a/src/current/_includes/releases/v24.1/v24.1.22.md +++ b/src/current/_includes/releases/v24.1/v24.1.22.md @@ -7,7 +7,3 @@ Release Date: August 1, 2025

Bug fixes

- Fixed a bug that could cause some errors returned by attempts to upload backup data to external storage providers to be undetected, potentially causing incomplete backups. - [#151098][#151098] - - -[#151098]: https://github.com/cockroachdb/cockroach/pull/151098 diff --git a/src/current/_includes/releases/v24.1/v24.1.23.md b/src/current/_includes/releases/v24.1/v24.1.23.md index 38b7d15a35b..2a1e4519abd 100644 --- a/src/current/_includes/releases/v24.1/v24.1.23.md +++ b/src/current/_includes/releases/v24.1/v24.1.23.md @@ -8,26 +8,19 @@ Release Date: August 22, 2025 - Backporting detailed error logging logic gated behind a cluster setting. The cluster setting enables detailed - error logging for messages exceeding Kafka v2 size limit. [#150183][#150183] -- 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. [#150183][#150183] + error logging for messages exceeding Kafka v2 size limit. +- 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.

Bug fixes

-- Fixed an issue where the `mvcc_timestamp` field was incorrectly returning zero values when used with CDC queries. The timestamp is now emitted correctly. [#147110][#147110] -- Fixed a bug that could cause some errors returned by attempts to upload backup data to external storage providers to be undetected, potentially causing incomplete backups. [#151083][#151083] +- Fixed an issue where the `mvcc_timestamp` field was incorrectly returning zero values when used with CDC queries. The timestamp is now emitted correctly. +- Fixed a bug that could cause some errors returned by attempts to upload backup data to external storage providers to be undetected, potentially causing incomplete backups.

Build changes

-- Upgrade Go to consume security fixes [#150990][#150990] +- Upgrade Go to consume security fixes

Miscellaneous

- Restore will now re-attempt `AdminSplit` KV requests - instead of immediately failing and pausing the job. [#149618][#149618] - - -[#150990]: https://github.com/cockroachdb/cockroach/pull/150990 -[#149618]: https://github.com/cockroachdb/cockroach/pull/149618 -[#150183]: https://github.com/cockroachdb/cockroach/pull/150183 -[#147110]: https://github.com/cockroachdb/cockroach/pull/147110 -[#151083]: https://github.com/cockroachdb/cockroach/pull/151083 + instead of immediately failing and pausing the job. diff --git a/src/current/_includes/releases/v24.1/v24.1.24.md b/src/current/_includes/releases/v24.1/v24.1.24.md index 142e9efbbef..6a2aa7fc02c 100644 --- a/src/current/_includes/releases/v24.1/v24.1.24.md +++ b/src/current/_includes/releases/v24.1/v24.1.24.md @@ -6,26 +6,18 @@ Release Date: September 22, 2025

SQL language changes

-- 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. [#152603][#152603] +- 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.

Operational changes

-- 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. [#151490][#151490] +- 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.

Bug fixes

-- Fixed a bug where `debug.zip` files collected from clusters with `disallow_full_table_scans` enabled were missing system table data. [#151222][#151222] -- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. [#152312][#152312] -- Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions. [#152744][#152744] +- Fixed a bug where `debug.zip` files collected from clusters with `disallow_full_table_scans` enabled were missing system table data. +- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. +- Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions.

Performance improvements

-- Lookup joins can now be used on tables with virtual columns even if the type of the search argument is not identical to the column type referenced in the virtual column. [#152893][#152893] - - -[#152603]: https://github.com/cockroachdb/cockroach/pull/152603 -[#151490]: https://github.com/cockroachdb/cockroach/pull/151490 -[#151222]: https://github.com/cockroachdb/cockroach/pull/151222 -[#152312]: https://github.com/cockroachdb/cockroach/pull/152312 -[#152744]: https://github.com/cockroachdb/cockroach/pull/152744 -[#152893]: https://github.com/cockroachdb/cockroach/pull/152893 +- 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. diff --git a/src/current/_includes/releases/v24.1/v24.1.25.md b/src/current/_includes/releases/v24.1/v24.1.25.md index d6baa0384f8..039080b8381 100644 --- a/src/current/_includes/releases/v24.1/v24.1.25.md +++ b/src/current/_includes/releases/v24.1/v24.1.25.md @@ -6,11 +6,6 @@ Release Date: October 17, 2025

Bug fixes

-- Fixed a bug where an `INSERT` statement could fail with a type checking error while adding a `BIT(n)` column. [#153606][#153606] -- 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. [#154282][#154282] -- Fixed a bug where the presence of duplicate temporary tables in a backup caused the restore to fail with an error containing the text `restoring table desc and namespace entries: table already exists`. [#154400][#154400] - - -[#153606]: https://github.com/cockroachdb/cockroach/pull/153606 -[#154282]: https://github.com/cockroachdb/cockroach/pull/154282 -[#154400]: https://github.com/cockroachdb/cockroach/pull/154400 +- Fixed a bug where an `INSERT` statement could fail with a type checking error while adding a `BIT(n)` column. +- 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. +- Fixed a bug where the presence of duplicate temporary tables in a backup caused the restore to fail with an error containing the text `restoring table desc and namespace entries: table already exists`. diff --git a/src/current/_includes/releases/v24.1/v24.1.26.md b/src/current/_includes/releases/v24.1/v24.1.26.md index 09ee265a569..a0e487abc1b 100644 --- a/src/current/_includes/releases/v24.1/v24.1.26.md +++ b/src/current/_includes/releases/v24.1/v24.1.26.md @@ -6,9 +6,5 @@ Release Date: February 19, 2026

Bug fixes

-- Fixed a rare race condition between range splits and MVCC garbage collection where a GCRequest could target keys outside its declared span. In rare cases, this could result in data on the post-split right-hand side (RHS) being incorrectly garbage collected, potentially leading to lost writes. The system now detects and rejects such malformed GC requests. [#163777][#163777] -- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using json or json-compact formatting. Debug zip generation now safely handles malformed log lines and prevents excessive memory consumption. [#163799][#163799] - - -[#163777]: https://github.com/cockroachdb/cockroach/pull/163777 -[#163799]: https://github.com/cockroachdb/cockroach/pull/163799 +- Fixed a rare race condition between range splits and MVCC garbage collection where a GCRequest could target keys outside its declared span. In rare cases, this could result in data on the post-split right-hand side (RHS) being incorrectly garbage collected, potentially leading to lost writes. The system now detects and rejects such malformed GC requests. +- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using json or json-compact formatting. Debug zip generation now safely handles malformed log lines and prevents excessive memory consumption. diff --git a/src/current/_includes/releases/v24.1/v24.1.27.md b/src/current/_includes/releases/v24.1/v24.1.27.md index a7692d26c2a..f9031880365 100644 --- a/src/current/_includes/releases/v24.1/v24.1.27.md +++ b/src/current/_includes/releases/v24.1/v24.1.27.md @@ -6,7 +6,4 @@ Release Date: April 8, 2026

Bug fixes

-- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using `json` or `json-compact` formatting. This bug was introduced in v24.1. [#163799][#163799] - - -[#163799]: https://github.com/cockroachdb/cockroach/pull/163799 +- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using `json` or `json-compact` formatting. This bug was introduced in v24.1. diff --git a/src/current/_includes/releases/v24.1/v24.1.28.md b/src/current/_includes/releases/v24.1/v24.1.28.md index d6bb2c7920d..a75b55067cf 100644 --- a/src/current/_includes/releases/v24.1/v24.1.28.md +++ b/src/current/_includes/releases/v24.1/v24.1.28.md @@ -6,7 +6,4 @@ Release Date: April 22, 2026

Bug fixes

-- Fixed a bug where concurrent updates to a table using multiple column families during a partial index creation could result in data loss, incorrect `NULL` values, or validation failures in the resulting index. [#168782][#168782] - - -[#168782]: https://github.com/cockroachdb/cockroach/pull/168782 +- Fixed a bug where concurrent updates to a table using multiple column families during a partial index creation could result in data loss, incorrect `NULL` values, or validation failures in the resulting index. diff --git a/src/current/_includes/releases/v24.1/v24.1.3.md b/src/current/_includes/releases/v24.1/v24.1.3.md index d1a442252cd..b0eb761dce6 100644 --- a/src/current/_includes/releases/v24.1/v24.1.3.md +++ b/src/current/_includes/releases/v24.1/v24.1.3.md @@ -6,36 +6,36 @@ Release Date: August 1, 2024

SQL language changes

-- [`EXPLAIN ANALYZE`]({% link v23.2/explain-analyze.md %}) statements are now supported when executed via Cloud Console [SQL shell]({% link cockroachcloud/sql-shell.md %}). [#125563][#125563] -- Added the [`sql.auth.grant_option_inheritance.enabled` cluster setting]({% link v24.1/cluster-settings.md %}#setting-sql-auth-grant-option-inheritance-enabled). The default value is `true`, which maintains consistency with CockroachDB's previous behavior: users granted a privilege with [`WITH GRANT OPTION`]({% link v24.1/grant.md %}) can in turn grant that privilege to others. When `sql.auth.grant_option_inheritance.enabled` is set to `false`, the `GRANT OPTION` is not inherited through role membership, thereby preventing descendant roles from granting the privilege to others. However, the privilege itself continues to be inherited through role membership. [#126300][#126300] +- [`EXPLAIN ANALYZE`]({% link v23.2/explain-analyze.md %}) statements are now supported when executed via Cloud Console [SQL shell]({% link cockroachcloud/sql-shell.md %}). +- Added the [`sql.auth.grant_option_inheritance.enabled` cluster setting]({% link v24.1/cluster-settings.md %}#setting-sql-auth-grant-option-inheritance-enabled). The default value is `true`, which maintains consistency with CockroachDB's previous behavior: users granted a privilege with [`WITH GRANT OPTION`]({% link v24.1/grant.md %}) can in turn grant that privilege to others. When `sql.auth.grant_option_inheritance.enabled` is set to `false`, the `GRANT OPTION` is not inherited through role membership, thereby preventing descendant roles from granting the privilege to others. However, the privilege itself continues to be inherited through role membership.

Operational changes

-- `crdb_internal.cluster_execution_insights.txt` and `crdb_internal.cluster_txn_execution_insights.txt` have been removed from the [debug zip]({% link v24.1/cockroach-debug-zip.md %}). These files contained cluster-wide insights for statements and transactions. Users can still rely on the [per-node execution]({% link v24.1/cockroach-debug-zip.md %}#files) insights in `crdb_internal.node_execution_insights.txt` and `crdb_internal.node_txn_execution_insights.txt`. [#125807][#125807] -- For the [TELEMETRY logging channel]({% link v24.1/logging.md %}#telemetry), TCL `sampled_query` events will now be sampled at the rate specified by the setting [`sql.telemetry.query_sampling.max_event_frequency`]({% link v24.1/cluster-settings.md %}#setting-sql-telemetry-query-sampling-max-event-frequency), which is already used to limit the rate of sampling DML statements. [#126729][#126729] +- `crdb_internal.cluster_execution_insights.txt` and `crdb_internal.cluster_txn_execution_insights.txt` have been removed from the [debug zip]({% link v24.1/cockroach-debug-zip.md %}). These files contained cluster-wide insights for statements and transactions. Users can still rely on the [per-node execution]({% link v24.1/cockroach-debug-zip.md %}#files) insights in `crdb_internal.node_execution_insights.txt` and `crdb_internal.node_txn_execution_insights.txt`. +- For the [TELEMETRY logging channel]({% link v24.1/logging.md %}#telemetry), TCL `sampled_query` events will now be sampled at the rate specified by the setting [`sql.telemetry.query_sampling.max_event_frequency`]({% link v24.1/cluster-settings.md %}#setting-sql-telemetry-query-sampling-max-event-frequency), which is already used to limit the rate of sampling DML statements.

Bug fixes

-- Fixed a bug where collection of [debug information]({% link v24.1/cockroach-debug-zip.md %}) for very long-running [jobs]({% link v24.1/show-jobs.md %}) could use excessive space in the `job_info` system table and cause some interactions with the jobs system to become slow. [#126122][#126122] -- Fixed a bug where a change to a [user-defined type (UDT)]({% link v24.1/create-type.md %}) could cause queries against tables using that type to fail with an error: `histogram.go:694: span must be fully contained in the bucket`. The change to the user-defined type could come directly from an [`ALTER TYPE`]({% link v24.1/alter-type.md %}) statement, or indirectly from an [`ALTER DATABASE ADD REGION`]({% link v24.1/alter-database.md %}#add-region) or [`DROP REGION`]({% link v24.1/alter-database.md %}#drop-region) statement (which implicitly change the [`crdb_internal_region`]({% link v24.1/alter-table.md %}#set-the-table-locality-to-regional-by-row) type). This bug has existed since UDTs were introduced in v20.2. [#125800][#125800] -- Fixed a bug in which constant [`LIKE`]({% link v24.1/sql-feature-support.md %}#scalar-expressions-and-boolean-formulas) patterns containing certain sequences of backslashes did not become constrained scans. This bug has been present since v21.1.13 when support for building constrained scans from `LIKE` patterns containing backslashes was added. [#125539][#125539] -- Fixed the statistics estimation code in the [optimizer]({% link v24.1/cost-based-optimizer.md %}) so it does not use the empty histograms produced if [histogram collection]({% link v24.1/cost-based-optimizer.md %}#control-histogram-collection) has been disabled during stats collection due to excessive memory utilization. Now the optimizer will rely on distinct counts instead of the empty histograms and should produce better plans as a result. This bug has existed since CockroachDB v22.1. [#126153][#126153] -- Fixed a bug where [`CREATE TABLE`]({% link v24.1/create-table.md %}) statements with [index expressions]({% link v24.1/expression-indexes.md %}) could hit undefined column errors on [transaction retries]({% link v24.1/transactions.md %}#transaction-retries). [#125967][#125967] -- Fixed a bug where CockroachDB would hit an internal error when evaluating [`INSERT`s]({% link v24.1/insert.md %}) into [`REGIONAL BY ROW`]({% link v24.1/table-localities.md %}#regional-by-row-tables) tables where the source is a [`VALUES` clause]({% link v24.1/selection-queries.md %}#values-clause) with a single row and at least one boolean expression. The bug was introduced in v23.2.0. [#125505][#125505] -- Fixed a bug in [`cockroach debug tsdump`]({% link v24.1/cockroach-debug-tsdump.md %}) where the command fails when a custom SQL port is used and the [`--format=raw`]({% link v24.1/cockroach-debug-tsdump.md %}#flags) flag is provided. [#125980][#125980] -- Fixed a bug where a [user-defined function (UDF)]({% link v24.1/user-defined-functions.md %}) that shared a name with a [built-in function]({% link v24.1/functions-and-operators.md %}#built-in-functions) would not be resolved, even if the UDF had higher precedence according to the [`search_path`]({% link v24.1/sql-name-resolution.md %}#search-path) variable. [#126296][#126296] -- Fixed a bug that caused [background jobs]({% link v24.1/show-jobs.md %}) to incorrectly respect a statement timeout. [#126820][#126820] -- Fixed a bug where [`ALTER DATABASE ... DROP REGION`]({% link v24.1/alter-database.md %}#drop-region) could fail if any tables under the given database have [indexes on expressions]({% link v24.1/expression-indexes.md %}). [#126599][#126599] -- Fixed a PostgreSQL incompatibility bug when inputting `public` as user name for [built-in functions]({% link v24.1/functions-and-operators.md %}) such as `has_database_privilege` and `has_schema_privilege`. [#126851][#126851] -- Fixed a bug when [restoring]({% link v24.1/restore.md %}) a database with a [composite type]({% link v24.1/create-type.md %}#create-a-composite-data-type). [#126428][#126428] -- Fixed a bug where the [Databases]({% link v24.1/ui-databases-page.md %}) page crashed if the range information was not available. [#127092][#127092] -- Fixed a bug where CockroachDB could incorrectly evaluate an [`IS NOT NULL`]({% link v24.1/null-handling.md %}#nulls-and-simple-comparisons) filter if it was applied to non-`NULL` tuples that had `NULL` elements, such as `(1, NULL)` or `(NULL, NULL)`. This bug has existed since v20.2. [#126938][#126938] -- The `sql_sequence_cached_node` value of the [`serial_normalization` setting]({% link v24.1/serial.md %}#modes-of-operation) was not correctly formatted. This could lead to errors while connecting to CockroachDB if the default value of `serial_normalization` was set to `serial_normalization`. The formatting bug was fixed, which also fixes the errors when connecting. [#127675][#127675] +- Fixed a bug where collection of [debug information]({% link v24.1/cockroach-debug-zip.md %}) for very long-running [jobs]({% link v24.1/show-jobs.md %}) could use excessive space in the `job_info` system table and cause some interactions with the jobs system to become slow. +- Fixed a bug where a change to a [user-defined type (UDT)]({% link v24.1/create-type.md %}) could cause queries against tables using that type to fail with an error: `histogram.go:694: span must be fully contained in the bucket`. The change to the user-defined type could come directly from an [`ALTER TYPE`]({% link v24.1/alter-type.md %}) statement, or indirectly from an [`ALTER DATABASE ADD REGION`]({% link v24.1/alter-database.md %}#add-region) or [`DROP REGION`]({% link v24.1/alter-database.md %}#drop-region) statement (which implicitly change the [`crdb_internal_region`]({% link v24.1/alter-table.md %}#set-the-table-locality-to-regional-by-row) type). This bug has existed since UDTs were introduced in v20.2. +- Fixed a bug in which constant [`LIKE`]({% link v24.1/sql-feature-support.md %}#scalar-expressions-and-boolean-formulas) patterns containing certain sequences of backslashes did not become constrained scans. This bug has been present since v21.1.13 when support for building constrained scans from `LIKE` patterns containing backslashes was added. +- Fixed the statistics estimation code in the [optimizer]({% link v24.1/cost-based-optimizer.md %}) so it does not use the empty histograms produced if [histogram collection]({% link v24.1/cost-based-optimizer.md %}#control-histogram-collection) has been disabled during stats collection due to excessive memory utilization. Now the optimizer will rely on distinct counts instead of the empty histograms and should produce better plans as a result. This bug has existed since CockroachDB v22.1. +- Fixed a bug where [`CREATE TABLE`]({% link v24.1/create-table.md %}) statements with [index expressions]({% link v24.1/expression-indexes.md %}) could hit undefined column errors on [transaction retries]({% link v24.1/transactions.md %}#transaction-retries). +- Fixed a bug where CockroachDB would hit an internal error when evaluating [`INSERT`s]({% link v24.1/insert.md %}) into [`REGIONAL BY ROW`]({% link v24.1/table-localities.md %}#regional-by-row-tables) tables where the source is a [`VALUES` clause]({% link v24.1/selection-queries.md %}#values-clause) with a single row and at least one boolean expression. The bug was introduced in v23.2.0. +- Fixed a bug in [`cockroach debug tsdump`]({% link v24.1/cockroach-debug-tsdump.md %}) where the command fails when a custom SQL port is used and the [`--format=raw`]({% link v24.1/cockroach-debug-tsdump.md %}#flags) flag is provided. +- Fixed a bug where a [user-defined function (UDF)]({% link v24.1/user-defined-functions.md %}) that shared a name with a [built-in function]({% link v24.1/functions-and-operators.md %}#built-in-functions) would not be resolved, even if the UDF had higher precedence according to the [`search_path`]({% link v24.1/sql-name-resolution.md %}#search-path) variable. +- Fixed a bug that caused [background jobs]({% link v24.1/show-jobs.md %}) to incorrectly respect a statement timeout. +- Fixed a bug where [`ALTER DATABASE ... DROP REGION`]({% link v24.1/alter-database.md %}#drop-region) could fail if any tables under the given database have [indexes on expressions]({% link v24.1/expression-indexes.md %}). +- Fixed a PostgreSQL incompatibility bug when inputting `public` as user name for [built-in functions]({% link v24.1/functions-and-operators.md %}) such as `has_database_privilege` and `has_schema_privilege`. +- Fixed a bug when [restoring]({% link v24.1/restore.md %}) a database with a [composite type]({% link v24.1/create-type.md %}#create-a-composite-data-type). +- Fixed a bug where the [Databases]({% link v24.1/ui-databases-page.md %}) page crashed if the range information was not available. +- Fixed a bug where CockroachDB could incorrectly evaluate an [`IS NOT NULL`]({% link v24.1/null-handling.md %}#nulls-and-simple-comparisons) filter if it was applied to non-`NULL` tuples that had `NULL` elements, such as `(1, NULL)` or `(NULL, NULL)`. This bug has existed since v20.2. +- The `sql_sequence_cached_node` value of the [`serial_normalization` setting]({% link v24.1/serial.md %}#modes-of-operation) was not correctly formatted. This could lead to errors while connecting to CockroachDB if the default value of `serial_normalization` was set to `serial_normalization`. The formatting bug was fixed, which also fixes the errors when connecting.

Performance improvements

-- Starting a `cockroach` process will no longer flush buffered [logs]({% link v24.1/logging-overview.md %}) to configured [logging sinks]({% link v24.1/configure-logs.md %}#configure-log-sinks) unless the process is running under `systemd`, where cockroach runs with the `NOTIFY_SOCKET` environment variable. [#126305][#126305] -- [Schema changes]({% link v24.1/online-schema-changes.md %}) that cause a data backfill, such as adding a non-nullable column or changing the primary key, will now split and scatter the temporary indexes used to perform the change. This reduces the chance of causing a [write hotspot]({% link v24.1/performance-best-practices-overview.md %}#hot-spots) that can slow down foreground traffic. [#126684][#126684] +- Starting a `cockroach` process will no longer flush buffered [logs]({% link v24.1/logging-overview.md %}) to configured [logging sinks]({% link v24.1/configure-logs.md %}#configure-log-sinks) unless the process is running under `systemd`, where cockroach runs with the `NOTIFY_SOCKET` environment variable. +- [Schema changes]({% link v24.1/online-schema-changes.md %}) that cause a data backfill, such as adding a non-nullable column or changing the primary key, will now split and scatter the temporary indexes used to perform the change. This reduces the chance of causing a [write hotspot]({% link v24.1/performance-best-practices-overview.md %}#hot-spots) that can slow down foreground traffic.
@@ -44,28 +44,3 @@ Release Date: August 1, 2024 This release includes 122 merged PRs by 39 authors.
- -[#125505]: https://github.com/cockroachdb/cockroach/pull/125505 -[#125539]: https://github.com/cockroachdb/cockroach/pull/125539 -[#125563]: https://github.com/cockroachdb/cockroach/pull/125563 -[#125800]: https://github.com/cockroachdb/cockroach/pull/125800 -[#125807]: https://github.com/cockroachdb/cockroach/pull/125807 -[#125967]: https://github.com/cockroachdb/cockroach/pull/125967 -[#125980]: https://github.com/cockroachdb/cockroach/pull/125980 -[#126122]: https://github.com/cockroachdb/cockroach/pull/126122 -[#126153]: https://github.com/cockroachdb/cockroach/pull/126153 -[#126267]: https://github.com/cockroachdb/cockroach/pull/126267 -[#126296]: https://github.com/cockroachdb/cockroach/pull/126296 -[#126300]: https://github.com/cockroachdb/cockroach/pull/126300 -[#126305]: https://github.com/cockroachdb/cockroach/pull/126305 -[#126428]: https://github.com/cockroachdb/cockroach/pull/126428 -[#126599]: https://github.com/cockroachdb/cockroach/pull/126599 -[#126684]: https://github.com/cockroachdb/cockroach/pull/126684 -[#126729]: https://github.com/cockroachdb/cockroach/pull/126729 -[#126820]: https://github.com/cockroachdb/cockroach/pull/126820 -[#126846]: https://github.com/cockroachdb/cockroach/pull/126846 -[#126851]: https://github.com/cockroachdb/cockroach/pull/126851 -[#126938]: https://github.com/cockroachdb/cockroach/pull/126938 -[#127092]: https://github.com/cockroachdb/cockroach/pull/127092 -[#127164]: https://github.com/cockroachdb/cockroach/pull/127164 -[#127675]: https://github.com/cockroachdb/cockroach/pull/127675 diff --git a/src/current/_includes/releases/v24.1/v24.1.4.md b/src/current/_includes/releases/v24.1/v24.1.4.md index 7a3346e3378..343fe0b08ff 100644 --- a/src/current/_includes/releases/v24.1/v24.1.4.md +++ b/src/current/_includes/releases/v24.1/v24.1.4.md @@ -6,7 +6,7 @@ Release Date: August 29, 2024

Security updates

-- URLs in the following SQL statements are now sanitized of any secrets before being written to [unredacted logs]({% link v24.1/configure-logs.md %}#redact-logs). [#127506][#127506] +- URLs in the following SQL statements are now sanitized of any secrets before being written to [unredacted logs]({% link v24.1/configure-logs.md %}#redact-logs). - [`ALTER BACKUP SCHEDULE`]({% link v24.1/alter-backup-schedule.md %}) - [`ALTER BACKUP`]({% link v24.1/alter-backup.md %}) - [`ALTER CHANGEFEED SET sink`]({% link v24.1/alter-changefeed.md %}#set-options-on-a-changefeed) @@ -24,78 +24,41 @@ Release Date: August 29, 2024

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

-- Added a new Kafka [changefeed sink]({% link v24.1/changefeed-sinks.md %}) that uses the [`franz-go` library](https://github.com/twmb/franz-go) and CockroachDB's `batching_sink` implementation. The new Kafka sink can be enabled with the `changefeed.new_kafka_sink_enabled` [cluster setting]({% link v24.1/cluster-settings.md %}), which is disabled by default. [#128018][#128018] -- The new Kafka sink, enabled with [`changefeed.new_kafka_sink_enabled`]({% link v24.1/cluster-settings.md %}), as well as the Google Cloud Pub/Sub sink, now display notices indicating the topics that a changefeed will emit to. [#128333][#128333] +- Added a new Kafka [changefeed sink]({% link v24.1/changefeed-sinks.md %}) that uses the [`franz-go` library](https://github.com/twmb/franz-go) and CockroachDB's `batching_sink` implementation. The new Kafka sink can be enabled with the `changefeed.new_kafka_sink_enabled` [cluster setting]({% link v24.1/cluster-settings.md %}), which is disabled by default. +- The new Kafka sink, enabled with [`changefeed.new_kafka_sink_enabled`]({% link v24.1/cluster-settings.md %}), as well as the Google Cloud Pub/Sub sink, now display notices indicating the topics that a changefeed will emit to.

SQL language changes

-- Added a new `sql.auth.grant_option_for_owner.enabled` [cluster setting]({% link v24.1/cluster-settings.md %}) to prevent the [`GRANT OPTION`]({% link v24.1/show-grants.md %}#privilege-grants) from being given to the owner of an object by default. The cluster setting defaults to `true`, retaining the existing behavior; when it is set to `false`, the `GRANT OPTION` is not implicitly given to an object's owner. The owner will still have all privileges on an object except the ability to grant privileges to other users. [#126959][#126959] +- Added a new `sql.auth.grant_option_for_owner.enabled` [cluster setting]({% link v24.1/cluster-settings.md %}) to prevent the [`GRANT OPTION`]({% link v24.1/show-grants.md %}#privilege-grants) from being given to the owner of an object by default. The cluster setting defaults to `true`, retaining the existing behavior; when it is set to `false`, the `GRANT OPTION` is not implicitly given to an object's owner. The owner will still have all privileges on an object except the ability to grant privileges to other users.

Command-line changes

-- A `--locality-file` flag is now available on the [`cockroach start`]({% link v24.1/cockroach-start.md %}) and [`cockroach start-single-node`]({% link v24.1/cockroach-start-single-node.md %}) commands. This allows specifying node [locality]({% link v24.1/cockroach-start.md %}#locality) (typically a `region` value) as a file, rather than by using the [`--locality` flag]({% link v24.1/cockroach-start.md %}#locality). [#127475][#127475] +- A `--locality-file` flag is now available on the [`cockroach start`]({% link v24.1/cockroach-start.md %}) and [`cockroach start-single-node`]({% link v24.1/cockroach-start-single-node.md %}) commands. This allows specifying node [locality]({% link v24.1/cockroach-start.md %}#locality) (typically a `region` value) as a file, rather than by using the [`--locality` flag]({% link v24.1/cockroach-start.md %}#locality).

DB Console changes

-- The [**Databases** and **Tables** pages]({% link v24.1/ui-databases-page.md %}) in the DB Console now show a loading state while loading information for databases and tables, including size and range counts. [#127748][#127748] -- On the [**Databases** page]({% link v24.1/ui-databases-page.md %}) in the DB Console, table names will no longer appear with quotes around the schema and table name. [#127766][#127766] +- The [**Databases** and **Tables** pages]({% link v24.1/ui-databases-page.md %}) in the DB Console now show a loading state while loading information for databases and tables, including size and range counts. +- On the [**Databases** page]({% link v24.1/ui-databases-page.md %}) in the DB Console, table names will no longer appear with quotes around the schema and table name.

Bug fixes

-- Fixed a bug introduced in v23.2.0 in which CockroachDB would hit an internal error when evaluating [`INSERT`s]({% link v24.1/insert.md %}) into [`REGIONAL BY ROW`]({% link v24.1/alter-table.md %}#set-the-table-locality-to-regional-by-row) tables where the source was a [`VALUES`]({% link v24.1/selection-queries.md %}#values-clause) clause with a single row and at least one Boolean expression. [#127277][#127277] -- Fixed a bug in which the [`DISCARD`]({% link v24.1/alter-table.md %}) statement was disallowed when the [session setting]({% link v24.1/session-variables.md %}#default-transaction-read-only) `default_transaction_read_only` was set to `on`. [#127363][#127363] -- In the [DB Console event log]({% link v24.1/ui-overview-dashboard.md %}#events-panel), [`ALTER ROLE`]({% link v24.1/alter-role.md %}) events now display correctly even when no [role options]({% link v24.1/alter-role.md %}#role-options) are included in the `ALTER ROLE` statement. [#126568][#126568] -- Fixed a formatting issue with the `sql_sequence_cached_node` value of the [`serial_normalization` session setting]({% link v24.1/session-variables.md %}). This could lead to an error connecting to CockroachDB if this value was set as the default for `serial_normalization` via the cluster setting [`sql.defaults.serial_normalization`]({% link v24.1/cluster-settings.md %}#setting-sql-defaults-serial-normalization). [#127673][#127673] -- Fixed a bug where [dropping `ENUM` values]({% link v24.1/alter-type.md %}#drop-a-value-in-a-user-defined-type) that were referenced by [index expressions]({% link v24.1/expression-indexes.md %}) could fail with an error. [#127454][#127454] -- Fixed a bug that caused a memory leak when executing SQL statements with [comments]({% link v24.1/comment-on.md %}), for example, `SELECT /* comment */ 1;`. Memory owned by a SQL session would continue to grow as these types of statements were executed. The memory would only be released when closing the [SQL session]({% link v24.1/show-sessions.md %}). This bug had been present since v23.1. [#127759][#127759] -- Fixed a bug where [schema changes]({% link v24.1/online-schema-changes.md %}) could hang if the lease rangefeed stopped receiving updates. [#127487][#127487] -- Fixed small memory leaks that would occur during [changefeed]({% link v24.1/change-data-capture-overview.md %}) creation. [#128018][#128018] -- Fixed a memory leak that could occur when specifying a non-existent [virtual cluster]({% link v24.1/cluster-virtualization-overview.md %}) name in the connection string. [#128106][#128106] -- Fixed a bug where [`CREATE INDEX IF NOT EXISTS`]({% link v24.1/create-index.md %}) would not correctly short-circuit if the given index already existed. [#128311][#128311] -- Fixed a bug in syntax validation, in which the `DESCENDING` clause was not allowed for non-terminal columns of an [inverted index]({% link v24.1/inverted-indexes.md %}). Only the last column of an inverted index should be prevented from being `DESCENDING`. This is now properly checked. [#128311][#128311] -- Fixed a bug where an [index]({% link v24.1/indexes.md %}) could store a column in the primary index if that column had a mixed-case name. [#128311][#128311] -- Setting or dropping a default value on a [computed column]({% link v24.1/computed-columns.md %}) is now blocked, even for `NULL` defaults. Previously, setting or dropping a default value on a computed column was a no-op. [#128466][#128466] -- Fixed a bug that could cause spurious user permission errors when multiple databases shared a common schema with a routine referencing a table. The bug had existed since v22.2 when [user-defined functions (UDFs)]({% link v24.1/user-defined-functions.md %}) were introduced. [#126412][#126412] -- Fixed a bug where [`debug zip`]({% link v24.1/cockroach-debug-zip.md %}) would return an error while fetching unstructured/malformed logs. [#128605][#128605] -- Fixed a bug where a hash-sharded [constraint]({% link v24.1/constraints.md %}) could not be created if it referred to columns that had a backslash in the name. [#128521][#128521] +- Fixed a bug introduced in v23.2.0 in which CockroachDB would hit an internal error when evaluating [`INSERT`s]({% link v24.1/insert.md %}) into [`REGIONAL BY ROW`]({% link v24.1/alter-table.md %}#set-the-table-locality-to-regional-by-row) tables where the source was a [`VALUES`]({% link v24.1/selection-queries.md %}#values-clause) clause with a single row and at least one Boolean expression. +- Fixed a bug in which the [`DISCARD`]({% link v24.1/alter-table.md %}) statement was disallowed when the [session setting]({% link v24.1/session-variables.md %}#default-transaction-read-only) `default_transaction_read_only` was set to `on`. +- In the [DB Console event log]({% link v24.1/ui-overview-dashboard.md %}#events-panel), [`ALTER ROLE`]({% link v24.1/alter-role.md %}) events now display correctly even when no [role options]({% link v24.1/alter-role.md %}#role-options) are included in the `ALTER ROLE` statement. +- Fixed a formatting issue with the `sql_sequence_cached_node` value of the [`serial_normalization` session setting]({% link v24.1/session-variables.md %}). This could lead to an error connecting to CockroachDB if this value was set as the default for `serial_normalization` via the cluster setting [`sql.defaults.serial_normalization`]({% link v24.1/cluster-settings.md %}#setting-sql-defaults-serial-normalization). +- Fixed a bug where [dropping `ENUM` values]({% link v24.1/alter-type.md %}#drop-a-value-in-a-user-defined-type) that were referenced by [index expressions]({% link v24.1/expression-indexes.md %}) could fail with an error. +- Fixed a bug that caused a memory leak when executing SQL statements with [comments]({% link v24.1/comment-on.md %}), for example, `SELECT /* comment */ 1;`. Memory owned by a SQL session would continue to grow as these types of statements were executed. The memory would only be released when closing the [SQL session]({% link v24.1/show-sessions.md %}). This bug had been present since v23.1. +- Fixed a bug where [schema changes]({% link v24.1/online-schema-changes.md %}) could hang if the lease rangefeed stopped receiving updates. +- Fixed small memory leaks that would occur during [changefeed]({% link v24.1/change-data-capture-overview.md %}) creation. +- Fixed a memory leak that could occur when specifying a non-existent [virtual cluster]({% link v24.1/cluster-virtualization-overview.md %}) name in the connection string. +- Fixed a bug where [`CREATE INDEX IF NOT EXISTS`]({% link v24.1/create-index.md %}) would not correctly short-circuit if the given index already existed. +- Fixed a bug in syntax validation, in which the `DESCENDING` clause was not allowed for non-terminal columns of an [inverted index]({% link v24.1/inverted-indexes.md %}). Only the last column of an inverted index should be prevented from being `DESCENDING`. This is now properly checked. +- Fixed a bug where an [index]({% link v24.1/indexes.md %}) could store a column in the primary index if that column had a mixed-case name. +- Setting or dropping a default value on a [computed column]({% link v24.1/computed-columns.md %}) is now blocked, even for `NULL` defaults. Previously, setting or dropping a default value on a computed column was a no-op. +- Fixed a bug that could cause spurious user permission errors when multiple databases shared a common schema with a routine referencing a table. The bug had existed since v22.2 when [user-defined functions (UDFs)]({% link v24.1/user-defined-functions.md %}) were introduced. +- Fixed a bug where [`debug zip`]({% link v24.1/cockroach-debug-zip.md %}) would return an error while fetching unstructured/malformed logs. +- Fixed a bug where a hash-sharded [constraint]({% link v24.1/constraints.md %}) could not be created if it referred to columns that had a backslash in the name. - Fixed a bug in which the output of [`EXPLAIN (OPT, REDACT)`]({% link v24.1/explain.md %}) for various `CREATE` statements was not redacted. This bug had existed since [`EXPLAIN (REDACT)`]({% link v24.1/explain.md %}#parameters) was introduced in v23.1 and affects the following statements: - `EXPLAIN (OPT, REDACT) CREATE TABLE` - `EXPLAIN (OPT, REDACT) CREATE VIEW` - - `EXPLAIN (OPT, REDACT) CREATE FUNCTION` [#128489][#128489] - -[#126412]: https://github.com/cockroachdb/cockroach/pull/126412 -[#126568]: https://github.com/cockroachdb/cockroach/pull/126568 -[#126959]: https://github.com/cockroachdb/cockroach/pull/126959 -[#127277]: https://github.com/cockroachdb/cockroach/pull/127277 -[#127363]: https://github.com/cockroachdb/cockroach/pull/127363 -[#127390]: https://github.com/cockroachdb/cockroach/pull/127390 -[#127454]: https://github.com/cockroachdb/cockroach/pull/127454 -[#127475]: https://github.com/cockroachdb/cockroach/pull/127475 -[#127487]: https://github.com/cockroachdb/cockroach/pull/127487 -[#127506]: https://github.com/cockroachdb/cockroach/pull/127506 -[#127637]: https://github.com/cockroachdb/cockroach/pull/127637 -[#127673]: https://github.com/cockroachdb/cockroach/pull/127673 -[#127748]: https://github.com/cockroachdb/cockroach/pull/127748 -[#127759]: https://github.com/cockroachdb/cockroach/pull/127759 -[#127766]: https://github.com/cockroachdb/cockroach/pull/127766 -[#128018]: https://github.com/cockroachdb/cockroach/pull/128018 -[#128106]: https://github.com/cockroachdb/cockroach/pull/128106 -[#128185]: https://github.com/cockroachdb/cockroach/pull/128185 -[#128189]: https://github.com/cockroachdb/cockroach/pull/128189 -[#128311]: https://github.com/cockroachdb/cockroach/pull/128311 -[#128324]: https://github.com/cockroachdb/cockroach/pull/128324 -[#128333]: https://github.com/cockroachdb/cockroach/pull/128333 -[#128348]: https://github.com/cockroachdb/cockroach/pull/128348 -[#128466]: https://github.com/cockroachdb/cockroach/pull/128466 -[#128489]: https://github.com/cockroachdb/cockroach/pull/128489 -[#128521]: https://github.com/cockroachdb/cockroach/pull/128521 -[#128605]: https://github.com/cockroachdb/cockroach/pull/128605 -[#128625]: https://github.com/cockroachdb/cockroach/pull/128625 -[170656f4a]: https://github.com/cockroachdb/cockroach/commit/170656f4a -[3b9f14556]: https://github.com/cockroachdb/cockroach/commit/3b9f14556 -[633a858c9]: https://github.com/cockroachdb/cockroach/commit/633a858c9 -[656dc596e]: https://github.com/cockroachdb/cockroach/commit/656dc596e -[b5560ebc1]: https://github.com/cockroachdb/cockroach/commit/b5560ebc1 -[d0337dc3d]: https://github.com/cockroachdb/cockroach/commit/d0337dc3d -[eefaac961]: https://github.com/cockroachdb/cockroach/commit/eefaac961 -[f04d25e57]: https://github.com/cockroachdb/cockroach/commit/f04d25e57 + - `EXPLAIN (OPT, REDACT) CREATE FUNCTION` diff --git a/src/current/_includes/releases/v24.1/v24.1.5.md b/src/current/_includes/releases/v24.1/v24.1.5.md index 4211f06bf1d..860ce512b79 100644 --- a/src/current/_includes/releases/v24.1/v24.1.5.md +++ b/src/current/_includes/releases/v24.1/v24.1.5.md @@ -5,84 +5,54 @@ Release Date: September 25, 2024 {% include releases/new-release-downloads-docker-image.md release=include.release %}

General changes

-- Upgraded the `grpc` version to v1.56.3. [#130046][#130046] +- Upgraded the `grpc` version to v1.56.3.

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

-- Introduced the new [cluster setting]({% link v24.1/cluster-settings.md %}) `changefeed.protect_timestamp.lag`, which controls when a [changefeed's]({% link v24.1/change-data-capture-overview.md %}) protected timestamp is updated. The [protected timestamp]({% link v24.1/architecture/storage-layer.md %}#protected-timestamps) will only be updated if the set `changefeed.protect_timestamp.lag` value has passed between the last protected timestamp and the [changefeed high watermark]({% link v24.1/how-does-an-enterprise-changefeed-work.md %}). [#129686][#129686] -- [`SHOW CHANGEFEED JOB`]({% link v24.1/show-jobs.md %}#show-changefeed-jobs), `SHOW CHANGEFEED JOBS`, and [`SHOW JOBS`]({% link v24.1/show-jobs.md %}) no longer expose user-sensitive information like `client_key`. [#122636][#122636] +- Introduced the new [cluster setting]({% link v24.1/cluster-settings.md %}) `changefeed.protect_timestamp.lag`, which controls when a [changefeed's]({% link v24.1/change-data-capture-overview.md %}) protected timestamp is updated. The [protected timestamp]({% link v24.1/architecture/storage-layer.md %}#protected-timestamps) will only be updated if the set `changefeed.protect_timestamp.lag` value has passed between the last protected timestamp and the [changefeed high watermark]({% link v24.1/how-does-an-enterprise-changefeed-work.md %}). +- [`SHOW CHANGEFEED JOB`]({% link v24.1/show-jobs.md %}#show-changefeed-jobs), `SHOW CHANGEFEED JOBS`, and [`SHOW JOBS`]({% link v24.1/show-jobs.md %}) no longer expose user-sensitive information like `client_key`. - Added two network metrics, `changefeed.network.bytes_in` and `changefeed.network.bytes_out`. These metrics track the number of bytes sent by individual [changefeeds]({% link v24.1/change-data-capture-overview.md %}) to the following sinks: - [Kafka sinks]({% link v24.1/changefeed-sinks.md %}#kafka). If [child metrics]({% link v24.1/cluster-settings.md %}#setting-server-child-metrics-enabled) are enabled, the metric will have a `kafka` label. - [Webhook sinks]({% link v24.1/changefeed-sinks.md %}#webhook-sink). If [child metrics]({% link v24.1/cluster-settings.md %}#setting-server-child-metrics-enabled) are enabled, the metric will have a `webhook` label. - [Pub/Sub sinks]({% link v24.1/changefeed-sinks.md %}#google-cloud-pub-sub). If [child metrics]({% link v24.1/cluster-settings.md %}#setting-server-child-metrics-enabled) are enabled, the metric will have a `pubsub` label. - - [SQL sink]({% link v24.1/changefeed-for.md %}). If [child metrics]({% link v24.1/cluster-settings.md %}#setting-server-child-metrics-enabled) are enabled, the metric will have a `sql` label. [#130584][#130584] + - [SQL sink]({% link v24.1/changefeed-for.md %}). If [child metrics]({% link v24.1/cluster-settings.md %}#setting-server-child-metrics-enabled) are enabled, the metric will have a `sql` label.

SQL language changes

-- The session setting [`plan_cache_mode=force_generic_plan`]({% link v24.1/session-variables.md %}) can now be used to force [prepared statements]({% link v24.1/savepoint.md %}#savepoints-and-prepared-statements) to use query plans that are [optimized]({% link v24.1/cost-based-optimizer.md %}) once, and reused in future executions without re-optimization, as long as it does not become stale due to [schema changes]({% link v24.1/online-schema-changes.md %}) or a collection of new [table statistics]({% link v24.1/cost-based-optimizer.md %}#table-statistics). The setting takes effect during `EXECUTE` commands. [`EXPLAIN ANALYZE`]({% link v24.1/explain-analyze.md %}) includes a `plan type` field. If a generic query plan is optimized for the current execution, the `plan type` will be `generic, re-optimized`. If a generic query plan is reused for the current execution without performing optimization, the `plan type` will be `generic, reused`. Otherwise, the `plan type` will be `custom`. [#128085][#128085] -- The session setting [`plan_cache_mode=auto`]({% link v24.1/session-variables.md %}) can now be used to instruct the system to automatically determine whether to use `custom` or `generic` query plans for the execution of a [prepared statement]({% link v24.1/savepoint.md %}#savepoints-and-prepared-statements). Custom query plans are optimized on every execution, while generic plans are [optimized]({% link v24.1/cost-based-optimizer.md %}) once and reused on future executions as-is. Generic query plans are beneficial in cases where query optimization contributes significant overhead to the total cost of executing a query. [#128085][#128085] +- The session setting [`plan_cache_mode=force_generic_plan`]({% link v24.1/session-variables.md %}) can now be used to force [prepared statements]({% link v24.1/savepoint.md %}#savepoints-and-prepared-statements) to use query plans that are [optimized]({% link v24.1/cost-based-optimizer.md %}) once, and reused in future executions without re-optimization, as long as it does not become stale due to [schema changes]({% link v24.1/online-schema-changes.md %}) or a collection of new [table statistics]({% link v24.1/cost-based-optimizer.md %}#table-statistics). The setting takes effect during `EXECUTE` commands. [`EXPLAIN ANALYZE`]({% link v24.1/explain-analyze.md %}) includes a `plan type` field. If a generic query plan is optimized for the current execution, the `plan type` will be `generic, re-optimized`. If a generic query plan is reused for the current execution without performing optimization, the `plan type` will be `generic, reused`. Otherwise, the `plan type` will be `custom`. +- The session setting [`plan_cache_mode=auto`]({% link v24.1/session-variables.md %}) can now be used to instruct the system to automatically determine whether to use `custom` or `generic` query plans for the execution of a [prepared statement]({% link v24.1/savepoint.md %}#savepoints-and-prepared-statements). Custom query plans are optimized on every execution, while generic plans are [optimized]({% link v24.1/cost-based-optimizer.md %}) once and reused on future executions as-is. Generic query plans are beneficial in cases where query optimization contributes significant overhead to the total cost of executing a query.

Operational changes

- There are now structured [logging events]({% link v24.1/logging.md %}) that report connection breakage during node shutdown. Previously, the logs existed, but were unstructured. The logs appear in the [`OPS` logging channel]({% link v24.1/logging.md %}#ops). There are two new events: - The `node_shutdown_connection_timeout` event is logged after the timeout defined by the [`server.shutdown.connections.timeout`]({% link v24.1/cluster-settings.md %}) cluster setting transpires, if there are still open SQL connections. - - The `node_shutdown_transaction_timeout` event is logged after the timeout defined by the [`server.shutdown.transactions.timeout`]({% link v24.1/cluster-settings.md %}) cluster setting transpires, if there are still open transactions on those SQL connections. [#128711][#128711] -- Added a new configuration parameter `server.cidr_mapping_url`, which maps IPv4 CIDR blocks to arbitrary tag names. [#130051][#130051] -- Modified the metrics `sql.bytesin` and `sql.bytesout` to work as aggregate metrics if [child metrics]({% link v24.1/cluster-settings.md %}) are enabled. [#130051][#130051] -- Added three new network-tracking metrics. `rpc.connection.connected` is the number of rRPC TCP level connections established to remote nodes. `rpc.client.bytes.egress` is the number of TCP bytes sent via gRPC on connections CockroachDB initiates. `rpc.client.bytes.ingress` is the number of TCP bytes received via gRPC on connections CockroachDB initiated. [#130050][#130050] -- This commit adds two metrics: `changefeed.network.bytes_in` and `changefeed.network.bytes_out`. These metrics track the number of bytes sent by the individual [changefeeds]({% link v24.1/change-data-capture-overview.md %}) to different [sinks]({% link v24.1/changefeed-sinks.md %}). [#130584][#130584] + - The `node_shutdown_transaction_timeout` event is logged after the timeout defined by the [`server.shutdown.transactions.timeout`]({% link v24.1/cluster-settings.md %}) cluster setting transpires, if there are still open transactions on those SQL connections. +- Added a new configuration parameter `server.cidr_mapping_url`, which maps IPv4 CIDR blocks to arbitrary tag names. +- Modified the metrics `sql.bytesin` and `sql.bytesout` to work as aggregate metrics if [child metrics]({% link v24.1/cluster-settings.md %}) are enabled. +- Added three new network-tracking metrics. `rpc.connection.connected` is the number of rRPC TCP level connections established to remote nodes. `rpc.client.bytes.egress` is the number of TCP bytes sent via gRPC on connections CockroachDB initiates. `rpc.client.bytes.ingress` is the number of TCP bytes received via gRPC on connections CockroachDB initiated. +- This commit adds two metrics: `changefeed.network.bytes_in` and `changefeed.network.bytes_out`. These metrics track the number of bytes sent by the individual [changefeeds]({% link v24.1/change-data-capture-overview.md %}) to different [sinks]({% link v24.1/changefeed-sinks.md %}).

DB Console changes

-- The user experience for [metrics]({% link v24.1/ui-overview-dashboard.md %}) charges in the [DB Console]({% link v24.1/ui-overview.md %}) now has hover behavior that focuses on individual lines and shows values under the mouse pointer. [#128867][#128867] -- Users with the [`VIEWACTIVITY`]({% link v24.1/security-reference/authorization.md %}#supported-privileges) privilege can download statement bundles from the [DB Console]({% link v24.1/ui-overview.md %}). [#129503][#129503] -- Users with the [`VIEWACTIVITY`]({% link v24.1/security-reference/authorization.md %}#supported-privileges) privilege can now request, view, and cancel statement bundles in the [DB Console]({% link v24.1/ui-overview.md %}). [#129805][#129805] -- The [DB Console]({% link v24.1/ui-overview.md %}) will show a notification alerting customers without an {{ site.data.products.enterprise }} license to [upcoming license changes](https://www.cockroachlabs.com/enterprise-license-update/) with a link to more information. [#130510][#130510] +- The user experience for [metrics]({% link v24.1/ui-overview-dashboard.md %}) charges in the [DB Console]({% link v24.1/ui-overview.md %}) now has hover behavior that focuses on individual lines and shows values under the mouse pointer. +- Users with the [`VIEWACTIVITY`]({% link v24.1/security-reference/authorization.md %}#supported-privileges) privilege can download statement bundles from the [DB Console]({% link v24.1/ui-overview.md %}). +- Users with the [`VIEWACTIVITY`]({% link v24.1/security-reference/authorization.md %}#supported-privileges) privilege can now request, view, and cancel statement bundles in the [DB Console]({% link v24.1/ui-overview.md %}). +- The [DB Console]({% link v24.1/ui-overview.md %}) will show a notification alerting customers without an {{ site.data.products.enterprise }} license to [upcoming license changes](https://www.cockroachlabs.com/enterprise-license-update/) with a link to more information.

Bug fixes

-- Previously, [declarative]({% link v24.1/online-schema-changes.md %}) and legacy [schema changes]({% link v24.1/online-schema-changes.md %}) were incorrectly allowed to be run concurrently, which could lead to failing or hung schema change jobs. [#128805][#128805] -- Fixed a bug that caused errors like `ERROR: column 'crdb_internal_idx_expr' does not exist` when accessing a table with an [expression index]({% link v24.1/expression-indexes.md %}) where the expression evaluates to an `ENUM` type, for example, `CREATE INDEX ON t ((col::an_enum))`. [#129093][#129093] -- Fixed a bug where `NaN` or `Inf` could not be used as the default value for a parameter in [`CREATE FUNCTION`]({% link v24.1/create-function.md %}) statements. [#129086][#129086] -- Fixed a bug in which [`SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE`]({% link v24.1/select-for-update.md %}) queries using [`SKIP LOCKED`]({% link v24.1/select-for-update.md %}#wait-policies) and a [`LIMIT` and/or an `OFFSET`]({% link v24.1/limit-offset.md %}) could return incorrect results under [`READ COMMITTED`]({% link v24.1/read-committed.md %}) isolation. This bug was present when support for `SKIP LOCKED` under `READ COMMITTED` isolation was introduced in v24.1.0. [#128101][#128101] -- Fixed a bug in which some [`SELECT ... FOR UPDATE` or `SELECT ... FOR SHARE`]({% link v24.1/select-for-update.md %}) queries using [`SKIP LOCKED`]({% link v24.1/select-for-update.md %}#wait-policies) could still block on locked rows when using [`optimizer_use_lock_op_for_serializable`]({% link v24.1/session-variables.md %}#optimizer-use-lock-op-for-serializable) under [`SERIALIZABLE`]({% link v24.1/demo-serializable.md %}) isolation. This bug was present when `optimizer_use_lock_op_for_serializable` was introduced in v24.1.0. [#128101][#128101] -- Function input parameters for [user-defined functions]({% link v24.1/user-defined-functions.md %}) can no longer be of the `VOID` type, which matches the behavior of PostgreSQL. [#129280][#129280] -- Fixed a bug in the public preview of [Write Ahead Log (WAL) Failover]({% link v24.1/cockroach-start.md %}#write-ahead-log-wal-failover) that could prevent a node from starting if it crashed during a failover. [#129367][#129367] -- [Starting nodes]({% link v24.1/cockroach-start.md %}) could fail with: `could not insert session ...: unexpected value`, if an ambiguous result error was encountered when inserting into the `sqlliveness` table. [#129234][#129234] -- Internally issued queries that are not initiated within a [SQL session]({% link v24.1/show-sessions.md %}) no longer respect a [statement timeout]({% link v24.1/session-variables.md %}#statement-timeout). This includes: background [jobs]({% link v24.1/show-jobs.md %}), queries issued by the [DB Console]({% link v24.1/ui-overview.md %}) that perform introspection, and the [Cloud SQL shell]({% link cockroachcloud/sql-shell.md %}). [#129515][#129515] -- Fixed a rare bug in [`SHOW CLUSTER SETTING`]({% link v24.1/show-cluster-setting.md %}) that could cause it to fail with an error like `timed out: value differs between local setting and KV`. [#129756][#129756] -- Fixed a bug where the [`schema_locked` table parameter]({% link v24.1/with-storage-parameter.md %}#table-parameters) did not prevent a table from being referenced by a [foreign key]({% link v24.1/foreign-key.md %}). [#129754][#129754] -- Fixed a bug where the [`require_explicit_primary_keys` session variable]({% link v24.1/session-variables.md %}#require-explicit-primary-keys) would aggressively prevent all [`CREATE TABLE`]({% link v24.1/create-table.md %}) statements from working. [#129907][#129907] -- Fixed a slow-building memory leak when using [Kerberos authentication]({% link v24.1/gssapi_authentication.md %}). [#130318][#130318] -- Fixed a potential memory leak in [changefeeds]({% link v24.1/change-data-capture-overview.md %}) using a [cloud storage sink]({% link v24.1/changefeed-sinks.md %}#cloud-storage-sink). The memory leak could occur if both the cluster settings [`changefeed.fast_gzip.enabled`]({% link v24.1/cluster-settings.md %}#setting-changefeed-fast-gzip-enabled) and [`changefeed.cloudstorage.async_flush.enabled`]({% link v24.1/cluster-settings.md %}) are set to `true` and the changefeed received an error while attempting to write to the cloud storage sink. [#130626][#130626] -- Fixed a bug that prevented buffered file sinks from being included when iterating over all file sinks. This led to problems such as the `debug zip` command not being able to fetch logs for a cluster where buffering was enabled. [#130158][#130158] - -[#122636]: https://github.com/cockroachdb/cockroach/pull/122636 -[#128085]: https://github.com/cockroachdb/cockroach/pull/128085 -[#128101]: https://github.com/cockroachdb/cockroach/pull/128101 -[#128711]: https://github.com/cockroachdb/cockroach/pull/128711 -[#128805]: https://github.com/cockroachdb/cockroach/pull/128805 -[#128836]: https://github.com/cockroachdb/cockroach/pull/128836 -[#128867]: https://github.com/cockroachdb/cockroach/pull/128867 -[#129086]: https://github.com/cockroachdb/cockroach/pull/129086 -[#129093]: https://github.com/cockroachdb/cockroach/pull/129093 -[#129234]: https://github.com/cockroachdb/cockroach/pull/129234 -[#129280]: https://github.com/cockroachdb/cockroach/pull/129280 -[#129367]: https://github.com/cockroachdb/cockroach/pull/129367 -[#129402]: https://github.com/cockroachdb/cockroach/pull/129402 -[#129503]: https://github.com/cockroachdb/cockroach/pull/129503 -[#129515]: https://github.com/cockroachdb/cockroach/pull/129515 -[#129621]: https://github.com/cockroachdb/cockroach/pull/129621 -[#129686]: https://github.com/cockroachdb/cockroach/pull/129686 -[#129754]: https://github.com/cockroachdb/cockroach/pull/129754 -[#129756]: https://github.com/cockroachdb/cockroach/pull/129756 -[#129805]: https://github.com/cockroachdb/cockroach/pull/129805 -[#129907]: https://github.com/cockroachdb/cockroach/pull/129907 -[#130046]: https://github.com/cockroachdb/cockroach/pull/130046 -[#130050]: https://github.com/cockroachdb/cockroach/pull/130050 -[#130051]: https://github.com/cockroachdb/cockroach/pull/130051 -[#130158]: https://github.com/cockroachdb/cockroach/pull/130158 -[#130318]: https://github.com/cockroachdb/cockroach/pull/130318 -[#130510]: https://github.com/cockroachdb/cockroach/pull/130510 -[#130584]: https://github.com/cockroachdb/cockroach/pull/130584 -[#130626]: https://github.com/cockroachdb/cockroach/pull/130626 +- Previously, [declarative]({% link v24.1/online-schema-changes.md %}) and legacy [schema changes]({% link v24.1/online-schema-changes.md %}) were incorrectly allowed to be run concurrently, which could lead to failing or hung schema change jobs. +- Fixed a bug that caused errors like `ERROR: column 'crdb_internal_idx_expr' does not exist` when accessing a table with an [expression index]({% link v24.1/expression-indexes.md %}) where the expression evaluates to an `ENUM` type, for example, `CREATE INDEX ON t ((col::an_enum))`. +- Fixed a bug where `NaN` or `Inf` could not be used as the default value for a parameter in [`CREATE FUNCTION`]({% link v24.1/create-function.md %}) statements. +- Fixed a bug in which [`SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE`]({% link v24.1/select-for-update.md %}) queries using [`SKIP LOCKED`]({% link v24.1/select-for-update.md %}#wait-policies) and a [`LIMIT` and/or an `OFFSET`]({% link v24.1/limit-offset.md %}) could return incorrect results under [`READ COMMITTED`]({% link v24.1/read-committed.md %}) isolation. This bug was present when support for `SKIP LOCKED` under `READ COMMITTED` isolation was introduced in v24.1.0. +- Fixed a bug in which some [`SELECT ... FOR UPDATE` or `SELECT ... FOR SHARE`]({% link v24.1/select-for-update.md %}) queries using [`SKIP LOCKED`]({% link v24.1/select-for-update.md %}#wait-policies) could still block on locked rows when using [`optimizer_use_lock_op_for_serializable`]({% link v24.1/session-variables.md %}#optimizer-use-lock-op-for-serializable) under [`SERIALIZABLE`]({% link v24.1/demo-serializable.md %}) isolation. This bug was present when `optimizer_use_lock_op_for_serializable` was introduced in v24.1.0. +- Function input parameters for [user-defined functions]({% link v24.1/user-defined-functions.md %}) can no longer be of the `VOID` type, which matches the behavior of PostgreSQL. +- Fixed a bug in the public preview of [Write Ahead Log (WAL) Failover]({% link v24.1/cockroach-start.md %}#write-ahead-log-wal-failover) that could prevent a node from starting if it crashed during a failover. +- [Starting nodes]({% link v24.1/cockroach-start.md %}) could fail with: `could not insert session ...: unexpected value`, if an ambiguous result error was encountered when inserting into the `sqlliveness` table. +- Internally issued queries that are not initiated within a [SQL session]({% link v24.1/show-sessions.md %}) no longer respect a [statement timeout]({% link v24.1/session-variables.md %}#statement-timeout). This includes: background [jobs]({% link v24.1/show-jobs.md %}), queries issued by the [DB Console]({% link v24.1/ui-overview.md %}) that perform introspection, and the [Cloud SQL shell]({% link cockroachcloud/sql-shell.md %}). +- Fixed a rare bug in [`SHOW CLUSTER SETTING`]({% link v24.1/show-cluster-setting.md %}) that could cause it to fail with an error like `timed out: value differs between local setting and KV`. +- Fixed a bug where the [`schema_locked` table parameter]({% link v24.1/with-storage-parameter.md %}#table-parameters) did not prevent a table from being referenced by a [foreign key]({% link v24.1/foreign-key.md %}). +- Fixed a bug where the [`require_explicit_primary_keys` session variable]({% link v24.1/session-variables.md %}#require-explicit-primary-keys) would aggressively prevent all [`CREATE TABLE`]({% link v24.1/create-table.md %}) statements from working. +- Fixed a slow-building memory leak when using [Kerberos authentication]({% link v24.1/gssapi_authentication.md %}). +- Fixed a potential memory leak in [changefeeds]({% link v24.1/change-data-capture-overview.md %}) using a [cloud storage sink]({% link v24.1/changefeed-sinks.md %}#cloud-storage-sink). The memory leak could occur if both the cluster settings [`changefeed.fast_gzip.enabled`]({% link v24.1/cluster-settings.md %}#setting-changefeed-fast-gzip-enabled) and [`changefeed.cloudstorage.async_flush.enabled`]({% link v24.1/cluster-settings.md %}) are set to `true` and the changefeed received an error while attempting to write to the cloud storage sink. +- Fixed a bug that prevented buffered file sinks from being included when iterating over all file sinks. This led to problems such as the `debug zip` command not being able to fetch logs for a cluster where buffering was enabled. diff --git a/src/current/_includes/releases/v24.1/v24.1.6.md b/src/current/_includes/releases/v24.1/v24.1.6.md index 5633982897a..e664188f70e 100644 --- a/src/current/_includes/releases/v24.1/v24.1.6.md +++ b/src/current/_includes/releases/v24.1/v24.1.6.md @@ -6,15 +6,15 @@ Release Date: October 17, 2024

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

-- Updated the cluster setting [`changefeed.sink_io_workers`]({% link v24.1/cluster-settings.md %}#setting-changefeed-sink-io-workers) with all the [changefeed sinks]({% link v24.1/changefeed-sinks.md %}) that support the setting. [#130373][#130373] +- Updated the cluster setting [`changefeed.sink_io_workers`]({% link v24.1/cluster-settings.md %}#setting-changefeed-sink-io-workers) with all the [changefeed sinks]({% link v24.1/changefeed-sinks.md %}) that support the setting. - Added two network metrics, `changefeed.network.bytes_in` and `changefeed.network.bytes_out`. These metrics track the number of bytes sent by individual [changefeeds]({% link v24.1/change-data-capture-overview.md %}) to the following sinks: - [Kafka sinks]({% link v24.1/changefeed-sinks.md %}#kafka). If [child metrics are enabled]({% link v24.1/cluster-settings.md %}#setting-server-child-metrics-enabled), the metric will have a `kafka` label. - [Webhook sinks]({% link v24.1/changefeed-sinks.md %}#webhook-sink). If child metrics are enabled, the metric will have a `webhook` label. - [Pub/Sub sinks]({% link v24.1/changefeed-sinks.md %}#google-cloud-pub-sub). If child metrics are enabled, the metric will have a `pubsub` label. - - [SQL sink]({% link v24.1/changefeed-for.md %}). If child metrics are enabled, the metric will have a `sql` label. [#130583][#130583] -- Added a `changefeed.total_ranges` metric that can be used to monitor the number of ranges that are watched by [changefeed]({% link v24.1/change-data-capture-overview.md %}) aggregators. It shares the same polling interval as `changefeed.lagging_ranges`, which is controlled by the existing `lagging_ranges_polling_interval` option. [#130983][#130983] -- Disambiguated [metrics]({% link v24.1/essential-metrics-self-hosted.md %}) and logs for the two buffers used by the KV feed. The following metrics now have a suffix indicating which buffer they correspond to: `changefeed.buffer_entries.*`, `changefeed.buffer_entries_mem.*`, `changefeed.buffer_pushback_nanos.*`. The old versions are kept for backward compatibility, though using the new format is recommended. [#131418][#131418] -- Added timers around key parts of the [changefeed]({% link v24.1/change-data-capture-overview.md %}) pipeline to help debug feeds experiencing issues. The `changefeed.stage.{stage}.latency` metrics now emit latency histograms for each stage. The metric respects the changefeed `scope` label for debugging specific feeds. [#131429][#131429] + - [SQL sink]({% link v24.1/changefeed-for.md %}). If child metrics are enabled, the metric will have a `sql` label. +- Added a `changefeed.total_ranges` metric that can be used to monitor the number of ranges that are watched by [changefeed]({% link v24.1/change-data-capture-overview.md %}) aggregators. It shares the same polling interval as `changefeed.lagging_ranges`, which is controlled by the existing `lagging_ranges_polling_interval` option. +- Disambiguated [metrics]({% link v24.1/essential-metrics-self-hosted.md %}) and logs for the two buffers used by the KV feed. The following metrics now have a suffix indicating which buffer they correspond to: `changefeed.buffer_entries.*`, `changefeed.buffer_entries_mem.*`, `changefeed.buffer_pushback_nanos.*`. The old versions are kept for backward compatibility, though using the new format is recommended. +- Added timers around key parts of the [changefeed]({% link v24.1/change-data-capture-overview.md %}) pipeline to help debug feeds experiencing issues. The `changefeed.stage.{stage}.latency` metrics now emit latency histograms for each stage. The metric respects the changefeed `scope` label for debugging specific feeds.

General changes

@@ -22,32 +22,32 @@ Release Date: October 17, 2024

Operational changes

-- Added a `ranges.decommissioning` [metric]({% link v24.1/metrics.md %}) representing the number of ranges that have a replica on a [decommissioning node]({% link v24.1/node-shutdown.md %}?filters=decommission). [#130248][#130248] -- You can now configure the log format for the [`stderr` log sink]({% link v24.1/configure-logs.md %}#output-to-stderr) by setting the `stderr.format` field in the [YAML configuration]({% link v24.1/configure-logs.md %}#yaml-payload). [#131534][#131534] +- Added a `ranges.decommissioning` [metric]({% link v24.1/metrics.md %}) representing the number of ranges that have a replica on a [decommissioning node]({% link v24.1/node-shutdown.md %}?filters=decommission). +- You can now configure the log format for the [`stderr` log sink]({% link v24.1/configure-logs.md %}#output-to-stderr) by setting the `stderr.format` field in the [YAML configuration]({% link v24.1/configure-logs.md %}#yaml-payload).

DB Console changes

-- The [DB Console]({% link v24.1/ui-overview.md %}) will now show a notification alerting customers without an Enterprise license to [upcoming license changes](https://www.cockroachlabs.com/enterprise-license-update/) with a link to more information. [#130426][#130426] +- The [DB Console]({% link v24.1/ui-overview.md %}) will now show a notification alerting customers without an Enterprise license to [upcoming license changes](https://www.cockroachlabs.com/enterprise-license-update/) with a link to more information.

Bug fixes

-- Fixed a bug in which `SHOW CLUSTER SETTING FOR VIRTUAL CLUSTER` would erroneously return `NULL` for some settings. [#128783][#128783] -- Addressed a bug in the [upgrade]({% link v24.1/upgrade-cockroach-version.md %}) pre-condition for repairing descriptor corruption, which could lead to upgrade finalization being stuck. [#130518][#130518] -- Fixed a potential memory leak in [changefeeds]({% link v24.1/change-data-capture-overview.md %}) using a [cloud storage sink]({% link v24.1/changefeed-sinks.md %}#cloud-storage-sink). The memory leak could occur if both [`changefeed.fast_gzip.enabled`]({% link v24.1/cluster-settings.md %}#setting-changefeed-fast-gzip-enabled) and `changefeed.cloudstorage.async_flush.enabled` were `true`, and the changefeed received an error while attempting to write to the cloud storage sink. [#130601][#130601] -- Fixed a bug in which some [`SELECT FOR UPDATE`]({% link v24.1/select-for-update.md %}) or [`SELECT FOR SHARE`]({% link v24.1/select-for-update.md %}) queries using `NOWAIT` could still block on locked rows when using the `optimizer_use_lock_op_for_serializable` [session setting]({% link v24.1/session-variables.md %}) under [`SERIALIZABLE`]({% link v24.1/demo-serializable.md %}) isolation. This bug was introduced with [`optimizer_use_lock_op_for_serializable`]({% link v24.1/session-variables.md %}#optimizer-use-lock-op-for-serializable) in v23.2.0. [#130429][#130429] -- Fixed a bug that caused the [optimizer]({% link v24.1/cost-based-optimizer.md %}) to plan unnecessary post-query uniqueness checks during [`INSERT`]({% link v24.1/insert.md %}), [`UPSERT`]({% link v24.1/upsert.md %}), and [`UPDATE`]({% link v24.1/update.md %}) statements on tables with [partial]({% link v24.1/partial-indexes.md %}), [unique]({% link v24.1/create-index.md %}#unique-indexes), [hash-sharded indexes]({% link v24.1/hash-sharded-indexes.md %}). These unnecessary checks added overhead to execution of these statements, and caused the statements to error when executed under [`READ COMMITTED`]({% link v24.1/read-committed.md %}) isolation. [#130569][#130569] -- Previously, if a connection was attempting a [schema change]({% link v24.1/online-schema-changes.md %}) while the same schema objects were being dropped, it was possible for the connection to be incorrectly dropped. This is now fixed. [#130961][#130961] -- Fixed a bug that could result in the inability to garbage collect an [MVCC]({% link v24.1/architecture/storage-layer.md %}#mvcc) range tombstone within a [global table]({% link v24.1/global-tables.md %}). [#130950][#130950] -- Fixed a bug that could cause errors with the message `internal error: Non-nullable column ...` when executing statements under [`READ COMMITTED`]({% link v24.1/read-committed.md %}) isolation that involved tables with [`NOT NULL`]({% link v24.1/not-null.md %}) virtual columns. [#131064][#131064] -- Fixed a bug that could cause incorrect results for queries containing a correlated subquery with a [`GROUP BY`]({% link v24.1/select-clause.md %}#create-aggregate-groups) or [`DISTINCT ON`]({% link v24.1/select-clause.md %}#eliminate-duplicate-rows) operator referencing an outer column. This issue would occur if the correlated subquery was in the input of a [`SELECT`]({% link v24.1/select-clause.md %}) or [`JOIN`]({% link v24.1/joins.md %}) operator that had a filter equating the outer-column reference to a non-outer column in the grouping operator's input, while the grouping column set did not include the replacement column but functionally determined it. This bug was introduced in v23.1. [#130989][#130989] -- The AWS endpoint and cloud custom HTTP client configuration are now considered when [implicit authentication]({% link v24.1/cloud-storage-authentication.md %}) is used for cloud storage. Previously, these were only considered when using explicit credentials. [#131202][#131202] -- Fixed a bug where jobs created in sessions with non-zero session timezone offsets could hang before starting or report incorrect creation times when viewed in [`SHOW JOBS`]({% link v24.1/show-jobs.md %}) and the DB Console. [#131406][#131406] -- Fixed a bug that could prevent a [changefeed]({% link v24.1/change-data-capture-overview.md %}) from being able to resume after being paused for a prolonged period of time. [#130920][#130920] -- Fixed a bug where backup schedules could advance a protected timestamp too early, which caused incremental backups to fail. [#131390][#131390] +- Fixed a bug in which `SHOW CLUSTER SETTING FOR VIRTUAL CLUSTER` would erroneously return `NULL` for some settings. +- Addressed a bug in the [upgrade]({% link v24.1/upgrade-cockroach-version.md %}) pre-condition for repairing descriptor corruption, which could lead to upgrade finalization being stuck. +- Fixed a potential memory leak in [changefeeds]({% link v24.1/change-data-capture-overview.md %}) using a [cloud storage sink]({% link v24.1/changefeed-sinks.md %}#cloud-storage-sink). The memory leak could occur if both [`changefeed.fast_gzip.enabled`]({% link v24.1/cluster-settings.md %}#setting-changefeed-fast-gzip-enabled) and `changefeed.cloudstorage.async_flush.enabled` were `true`, and the changefeed received an error while attempting to write to the cloud storage sink. +- Fixed a bug in which some [`SELECT FOR UPDATE`]({% link v24.1/select-for-update.md %}) or [`SELECT FOR SHARE`]({% link v24.1/select-for-update.md %}) queries using `NOWAIT` could still block on locked rows when using the `optimizer_use_lock_op_for_serializable` [session setting]({% link v24.1/session-variables.md %}) under [`SERIALIZABLE`]({% link v24.1/demo-serializable.md %}) isolation. This bug was introduced with [`optimizer_use_lock_op_for_serializable`]({% link v24.1/session-variables.md %}#optimizer-use-lock-op-for-serializable) in v23.2.0. +- Fixed a bug that caused the [optimizer]({% link v24.1/cost-based-optimizer.md %}) to plan unnecessary post-query uniqueness checks during [`INSERT`]({% link v24.1/insert.md %}), [`UPSERT`]({% link v24.1/upsert.md %}), and [`UPDATE`]({% link v24.1/update.md %}) statements on tables with [partial]({% link v24.1/partial-indexes.md %}), [unique]({% link v24.1/create-index.md %}#unique-indexes), [hash-sharded indexes]({% link v24.1/hash-sharded-indexes.md %}). These unnecessary checks added overhead to execution of these statements, and caused the statements to error when executed under [`READ COMMITTED`]({% link v24.1/read-committed.md %}) isolation. +- Previously, if a connection was attempting a [schema change]({% link v24.1/online-schema-changes.md %}) while the same schema objects were being dropped, it was possible for the connection to be incorrectly dropped. This is now fixed. +- Fixed a bug that could result in the inability to garbage collect an [MVCC]({% link v24.1/architecture/storage-layer.md %}#mvcc) range tombstone within a [global table]({% link v24.1/global-tables.md %}). +- Fixed a bug that could cause errors with the message `internal error: Non-nullable column ...` when executing statements under [`READ COMMITTED`]({% link v24.1/read-committed.md %}) isolation that involved tables with [`NOT NULL`]({% link v24.1/not-null.md %}) virtual columns. +- Fixed a bug that could cause incorrect results for queries containing a correlated subquery with a [`GROUP BY`]({% link v24.1/select-clause.md %}#create-aggregate-groups) or [`DISTINCT ON`]({% link v24.1/select-clause.md %}#eliminate-duplicate-rows) operator referencing an outer column. This issue would occur if the correlated subquery was in the input of a [`SELECT`]({% link v24.1/select-clause.md %}) or [`JOIN`]({% link v24.1/joins.md %}) operator that had a filter equating the outer-column reference to a non-outer column in the grouping operator's input, while the grouping column set did not include the replacement column but functionally determined it. This bug was introduced in v23.1. +- The AWS endpoint and cloud custom HTTP client configuration are now considered when [implicit authentication]({% link v24.1/cloud-storage-authentication.md %}) is used for cloud storage. Previously, these were only considered when using explicit credentials. +- Fixed a bug where jobs created in sessions with non-zero session timezone offsets could hang before starting or report incorrect creation times when viewed in [`SHOW JOBS`]({% link v24.1/show-jobs.md %}) and the DB Console. +- Fixed a bug that could prevent a [changefeed]({% link v24.1/change-data-capture-overview.md %}) from being able to resume after being paused for a prolonged period of time. +- Fixed a bug where backup schedules could advance a protected timestamp too early, which caused incremental backups to fail.

Performance improvements

-- The [query optimizer]({% link v24.1/cost-based-optimizer.md %}) now plans limited, [partial index]({% link v24.1/partial-indexes.md %}) scans in more cases when the new session setting [`optimizer_push_limit_into_project_filtered_scan`]({% link v24.1/session-variables.md %}) is set to `on`. [#130336][#130336] +- The [query optimizer]({% link v24.1/cost-based-optimizer.md %}) now plans limited, [partial index]({% link v24.1/partial-indexes.md %}) scans in more cases when the new session setting [`optimizer_push_limit_into_project_filtered_scan`]({% link v24.1/session-variables.md %}) is set to `on`.
@@ -56,37 +56,3 @@ Release Date: October 17, 2024 This release includes 85 merged PRs by 39 authors.
- -[#128783]: https://github.com/cockroachdb/cockroach/pull/128783 -[#130248]: https://github.com/cockroachdb/cockroach/pull/130248 -[#130336]: https://github.com/cockroachdb/cockroach/pull/130336 -[#130373]: https://github.com/cockroachdb/cockroach/pull/130373 -[#130426]: https://github.com/cockroachdb/cockroach/pull/130426 -[#130429]: https://github.com/cockroachdb/cockroach/pull/130429 -[#130518]: https://github.com/cockroachdb/cockroach/pull/130518 -[#130569]: https://github.com/cockroachdb/cockroach/pull/130569 -[#130583]: https://github.com/cockroachdb/cockroach/pull/130583 -[#130601]: https://github.com/cockroachdb/cockroach/pull/130601 -[#130672]: https://github.com/cockroachdb/cockroach/pull/130672 -[#130677]: https://github.com/cockroachdb/cockroach/pull/130677 -[#130920]: https://github.com/cockroachdb/cockroach/pull/130920 -[#130950]: https://github.com/cockroachdb/cockroach/pull/130950 -[#130961]: https://github.com/cockroachdb/cockroach/pull/130961 -[#130983]: https://github.com/cockroachdb/cockroach/pull/130983 -[#130989]: https://github.com/cockroachdb/cockroach/pull/130989 -[#131064]: https://github.com/cockroachdb/cockroach/pull/131064 -[#131202]: https://github.com/cockroachdb/cockroach/pull/131202 -[#131240]: https://github.com/cockroachdb/cockroach/pull/131240 -[#131312]: https://github.com/cockroachdb/cockroach/pull/131312 -[#131390]: https://github.com/cockroachdb/cockroach/pull/131390 -[#131406]: https://github.com/cockroachdb/cockroach/pull/131406 -[#131418]: https://github.com/cockroachdb/cockroach/pull/131418 -[#131429]: https://github.com/cockroachdb/cockroach/pull/131429 -[#131534]: https://github.com/cockroachdb/cockroach/pull/131534 -[#131596]: https://github.com/cockroachdb/cockroach/pull/131596 -[040f8b2cf]: https://github.com/cockroachdb/cockroach/commit/040f8b2cf -[2fa598d59]: https://github.com/cockroachdb/cockroach/commit/2fa598d59 -[4174b9eee]: https://github.com/cockroachdb/cockroach/commit/4174b9eee -[5dfdef095]: https://github.com/cockroachdb/cockroach/commit/5dfdef095 -[87c44cc41]: https://github.com/cockroachdb/cockroach/commit/87c44cc41 -[969700d5f]: https://github.com/cockroachdb/cockroach/commit/969700d5f diff --git a/src/current/_includes/releases/v24.1/v24.1.7.md b/src/current/_includes/releases/v24.1/v24.1.7.md index f0d339f9c81..642c4617a7a 100644 --- a/src/current/_includes/releases/v24.1/v24.1.7.md +++ b/src/current/_includes/releases/v24.1/v24.1.7.md @@ -6,92 +6,48 @@ Release Date: November 18, 2024

Security updates

-- You can now authenticate to the DB Console by passing a JWT as the bearer token. [#133536][#133536] +- You can now authenticate to the DB Console by passing a JWT as the bearer token.

General changes

-- Changed the license `cockroach` is distributed under to the new CockroachDB Software License. [#131706][#131706] [#131939][#131939] [#131950][#131950] [#131982][#131982] [#132004][#132004] [#132005][#132005] [#132007][#132007] [#132009][#132009] [#132008][#132008] [#132010][#132010] [#132017][#132017] [#132057][#132057] [#132802][#132802] [#132750][#132750] -- Attempting to install a second Enterprise Trial license on the same cluster will now fail. [#131972][#131972] -- The cluster setting `diagnostics.reporting.enabled` is now ignored if the cluster has an Enterprise Trial or Enterprise Free license or if the license cannot be loaded. [#132463][#132463] -- The new metrics `changefeed.sink_errors` and `changefeed.internal_retry_message_count` allow you to observe the rate of errors and internal retries for a sink, respectively. [#132352][#132352] -- Added a timer for inner sink client flushes. [#133196][#133196] +- Changed the license `cockroach` is distributed under to the new CockroachDB Software License. +- Attempting to install a second Enterprise Trial license on the same cluster will now fail. +- The cluster setting `diagnostics.reporting.enabled` is now ignored if the cluster has an Enterprise Trial or Enterprise Free license or if the license cannot be loaded. +- The new metrics `changefeed.sink_errors` and `changefeed.internal_retry_message_count` allow you to observe the rate of errors and internal retries for a sink, respectively. +- Added a timer for inner sink client flushes.

DB Console changes

-- Some charts on the **Overview** and **Replication** metrics dashboard pages have more terse legends to facilitate easier browsing. [#129358][#129358] -- The DB Console now shows a warning if the cluster is throttled or will be throttled soon due to an expired Enterprise Free or Enterprise Trial license or missing telemetry data. Clusters with an Enterprise license are not throttled. [#132091][#132091] +- Some charts on the **Overview** and **Replication** metrics dashboard pages have more terse legends to facilitate easier browsing. +- The DB Console now shows a warning if the cluster is throttled or will be throttled soon due to an expired Enterprise Free or Enterprise Trial license or missing telemetry data. Clusters with an Enterprise license are not throttled. - The **Range Count** column on the **Databases** page is no longer shown due to performance issues. This data is still available via the `SHOW RANGES` command.[#133269][#133269]

Bug fixes

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

Performance improvements

-- Reduced the write-amplification impact of rebalances by splitting snapshot sorted string table (SST) files into smaller ones before ingesting them into Pebble. [#129018][#129018] -- Performance has been improved during periodic polling of table history when `schema_locked` is not used. [#132190][#132190] - -[#129018]: https://github.com/cockroachdb/cockroach/pull/129018 -[#129358]: https://github.com/cockroachdb/cockroach/pull/129358 -[#130890]: https://github.com/cockroachdb/cockroach/pull/130890 -[#131648]: https://github.com/cockroachdb/cockroach/pull/131648 -[#131706]: https://github.com/cockroachdb/cockroach/pull/131706 -[#131930]: https://github.com/cockroachdb/cockroach/pull/131930 -[#131939]: https://github.com/cockroachdb/cockroach/pull/131939 -[#131950]: https://github.com/cockroachdb/cockroach/pull/131950 -[#131959]: https://github.com/cockroachdb/cockroach/pull/131959 -[#131972]: https://github.com/cockroachdb/cockroach/pull/131972 -[#131982]: https://github.com/cockroachdb/cockroach/pull/131982 -[#132004]: https://github.com/cockroachdb/cockroach/pull/132004 -[#132005]: https://github.com/cockroachdb/cockroach/pull/132005 -[#132007]: https://github.com/cockroachdb/cockroach/pull/132007 -[#132008]: https://github.com/cockroachdb/cockroach/pull/132008 -[#132009]: https://github.com/cockroachdb/cockroach/pull/132009 -[#132010]: https://github.com/cockroachdb/cockroach/pull/132010 -[#132017]: https://github.com/cockroachdb/cockroach/pull/132017 -[#132057]: https://github.com/cockroachdb/cockroach/pull/132057 -[#132091]: https://github.com/cockroachdb/cockroach/pull/132091 -[#132122]: https://github.com/cockroachdb/cockroach/pull/132122 -[#132135]: https://github.com/cockroachdb/cockroach/pull/132135 -[#132190]: https://github.com/cockroachdb/cockroach/pull/132190 -[#132259]: https://github.com/cockroachdb/cockroach/pull/132259 -[#132325]: https://github.com/cockroachdb/cockroach/pull/132325 -[#132352]: https://github.com/cockroachdb/cockroach/pull/132352 -[#132454]: https://github.com/cockroachdb/cockroach/pull/132454 -[#132463]: https://github.com/cockroachdb/cockroach/pull/132463 -[#132509]: https://github.com/cockroachdb/cockroach/pull/132509 -[#132681]: https://github.com/cockroachdb/cockroach/pull/132681 -[#132750]: https://github.com/cockroachdb/cockroach/pull/132750 -[#132775]: https://github.com/cockroachdb/cockroach/pull/132775 -[#132785]: https://github.com/cockroachdb/cockroach/pull/132785 -[#132802]: https://github.com/cockroachdb/cockroach/pull/132802 -[#132875]: https://github.com/cockroachdb/cockroach/pull/132875 -[#132947]: https://github.com/cockroachdb/cockroach/pull/132947 -[#132958]: https://github.com/cockroachdb/cockroach/pull/132958 -[#133065]: https://github.com/cockroachdb/cockroach/pull/133065 -[#133070]: https://github.com/cockroachdb/cockroach/pull/133070 -[#133196]: https://github.com/cockroachdb/cockroach/pull/133196 -[#133269]: https://github.com/cockroachdb/cockroach/pull/133269 -[#133474]: https://github.com/cockroachdb/cockroach/pull/133474 -[#133536]: https://github.com/cockroachdb/cockroach/pull/133536 +- Reduced the write-amplification impact of rebalances by splitting snapshot sorted string table (SST) files into smaller ones before ingesting them into Pebble. +- Performance has been improved during periodic polling of table history when `schema_locked` is not used. diff --git a/src/current/_includes/releases/v24.1/v24.1.8.md b/src/current/_includes/releases/v24.1/v24.1.8.md index a6b427cf04b..fbe90471869 100644 --- a/src/current/_includes/releases/v24.1/v24.1.8.md +++ b/src/current/_includes/releases/v24.1/v24.1.8.md @@ -6,68 +6,38 @@ Release Date: December 12, 2024

Security updates

-- All cluster settings that accept strings are now fully redacted when transmitted as part of our diagnostics telemetry. The transmitted payload includes a record of modified cluster settings and their values when they are not strings. If you previously applied the mitigations in [Technical Advisory 133479]({% link advisories/a133479.md %}), you can safely set the value of cluster setting `server.redact_sensitive_settings.enabled` to false and turn on diagnostic reporting via the `diagnostics.reporting.enabled` cluster setting without leaking sensitive cluster settings values. [#134016][#134016] +- All cluster settings that accept strings are now fully redacted when transmitted as part of our diagnostics telemetry. The transmitted payload includes a record of modified cluster settings and their values when they are not strings. If you previously applied the mitigations in [Technical Advisory 133479]({% link advisories/a133479.md %}), you can safely set the value of cluster setting `server.redact_sensitive_settings.enabled` to false and turn on diagnostic reporting via the `diagnostics.reporting.enabled` cluster setting without leaking sensitive cluster settings values.

General changes

-- `COCKROACH_SKIP_ENABLING_DIAGNOSTIC_REPORTING` is no longer mentioned in the `cockroach demo` command. [#134087][#134087] -- Added `system.users` to the list of system tables that changefeeds protect with protected timestamps (PTS). This table is required for change data capture queries. [#134836][#134836] -- Added changefeed support for the `mvcc_timestamp` option with the `avro` format. If both options are specified, the `avro` schema includes an `mvcc_timestamp` metadata field and emits the row's MVCC timestamp with the row data. [#136482][#136482] +- `COCKROACH_SKIP_ENABLING_DIAGNOSTIC_REPORTING` is no longer mentioned in the `cockroach demo` command. +- Added `system.users` to the list of system tables that changefeeds protect with protected timestamps (PTS). This table is required for change data capture queries. +- Added changefeed support for the `mvcc_timestamp` option with the `avro` format. If both options are specified, the `avro` schema includes an `mvcc_timestamp` metadata field and emits the row's MVCC timestamp with the row data.

Operational changes

-- To prevent unnecessary queuing in admission control CPU queues, the `goschedstats.always_use_short_sample_period.enabled` setting should be set to `true` for any production cluster. [#133583][#133583] -- A new cluster setting `ui.database_locality_metadata.enabled`, when set to `true`, disables loading database and table region information in the DB Console Database and Table pages. This information can cause significant CPU load on large clusters with many ranges. The Database and Table pages in v24.3 onwards do not have this problem. If you require this data, use the `SHOW RANGES FROM {DATABASE|TABLE}` SQL statement to compute this information on-demand. [#134094][#134094] -- The row-level TTL job now will periodically log progress by showing the number of table spans that have been processed so far. [#135179][#135179] +- To prevent unnecessary queuing in admission control CPU queues, the `goschedstats.always_use_short_sample_period.enabled` setting should be set to `true` for any production cluster. +- A new cluster setting `ui.database_locality_metadata.enabled`, when set to `true`, disables loading database and table region information in the DB Console Database and Table pages. This information can cause significant CPU load on large clusters with many ranges. The Database and Table pages in v24.3 onwards do not have this problem. If you require this data, use the `SHOW RANGES FROM {DATABASE|TABLE}` SQL statement to compute this information on-demand. +- The row-level TTL job now will periodically log progress by showing the number of table spans that have been processed so far.

Bug fixes

-- Fixed a bug where CockroachDB could encounter an internal error `interface conversion: coldata.Column is` in an edge case. The bug was present in v22.2.13+, v23.1.9+, and v23.2+. [#133760][#133760] -- Fixed an unhandled error that could occur when using `REVOKE ... ON SEQUENCE ... FROM user` on an object that is not a sequence. [#133708][#133708] -- Fixed a bug that caused incorrect `NOT NULL` constraint violation errors on `UPSERT` and `INSERT ... ON CONFLICT ... DO UPDATE` statements when those statements updated an existing row and a subset of columns that did not include a `NOT NULL` column of the table. This bug had been present since at least v20.1.0. [#133822][#133822] -- Addressed a panic that could occur inside `CREATE TABLE AS` if sequence builtin expressions had invalid function overloads. [#133868][#133868] -- String constants can now be compared against collated strings. [#134105][#134105] -- Previously, when executing queries with index / lookup joins where ordering needed to be maintained, CockroachDB's behavior could lead to increased query latency, potentially by several orders of magnitude. This bug was introduced in v22.2, and is now fixed. [#134365][#134365] -- Fixed a bug where `DISCARD ALL` statements were counted under the `sql.ddl.count` metric. Now these statements will be counted under the `sql.misc.count` metric. [#134508][#134508] -- Fixed a bug where `DROP CASCADE` would occasionally panic with an `un-dropped backref` message on partitioned tables. [#134522][#134522] -- Reduced the duration of partitions in the gossip network when a node crashes. This eliminates false positives in the `ranges.unavailable` metric. [#134601][#134601] -- As a non-admin user who runs `DROP ROLE IF EXISTS` on a user that does not exist, you no longer get an error message. [#134968][#134968] -- Fixed a bug that caused quotes around the name of a routine to be dropped when the routine was called within another routine. This could prevent the correct routine name from being resolved if the nested routine name was case-sensitive. The bug has existed since v24.1, when nested routines were introduced. [#134001][#134001] -- Fixed a bug that could cause incorrect query results when the optimizer planned a lookup join on an index containing a column of type `CHAR(N)`, `VARCHAR(N)`, `BIT(N)`, `VARBIT(N)`, or `DECIMAL(M, N)`, and the query held that column constant to a single value (for example, with an equality filter). [#135111][#135111] -- Fixed an unhandled error that would occur if `DROP SCHEMA` was executed on the `public` schema of the `system` database, or on an internal schema, such as `pg_catalog` or `information_schema`. [#135195][#135195] -- Fixed a bug that caused incorrect evaluation of some binary expressions involving `CHAR(N)` values and untyped string literals with trailing whitespace characters. For example, the expression `'f'::CHAR = 'f '` now correctly evaluates to `true`. [#135690][#135690] -- `CREATE SCHEMA` now returns the correct error if a the schema name is missing. [#135926][#135926] +- Fixed a bug where CockroachDB could encounter an internal error `interface conversion: coldata.Column is` in an edge case. The bug was present in v22.2.13+, v23.1.9+, and v23.2+. +- Fixed an unhandled error that could occur when using `REVOKE ... ON SEQUENCE ... FROM user` on an object that is not a sequence. +- Fixed a bug that caused incorrect `NOT NULL` constraint violation errors on `UPSERT` and `INSERT ... ON CONFLICT ... DO UPDATE` statements when those statements updated an existing row and a subset of columns that did not include a `NOT NULL` column of the table. This bug had been present since at least v20.1.0. +- Addressed a panic that could occur inside `CREATE TABLE AS` if sequence builtin expressions had invalid function overloads. +- String constants can now be compared against collated strings. +- Previously, when executing queries with index / lookup joins where ordering needed to be maintained, CockroachDB's behavior could lead to increased query latency, potentially by several orders of magnitude. This bug was introduced in v22.2, and is now fixed. +- Fixed a bug where `DISCARD ALL` statements were counted under the `sql.ddl.count` metric. Now these statements will be counted under the `sql.misc.count` metric. +- Fixed a bug where `DROP CASCADE` would occasionally panic with an `un-dropped backref` message on partitioned tables. +- Reduced the duration of partitions in the gossip network when a node crashes. This eliminates false positives in the `ranges.unavailable` metric. +- As a non-admin user who runs `DROP ROLE IF EXISTS` on a user that does not exist, you no longer get an error message. +- Fixed a bug that caused quotes around the name of a routine to be dropped when the routine was called within another routine. This could prevent the correct routine name from being resolved if the nested routine name was case-sensitive. The bug has existed since v24.1, when nested routines were introduced. +- Fixed a bug that could cause incorrect query results when the optimizer planned a lookup join on an index containing a column of type `CHAR(N)`, `VARCHAR(N)`, `BIT(N)`, `VARBIT(N)`, or `DECIMAL(M, N)`, and the query held that column constant to a single value (for example, with an equality filter). +- Fixed an unhandled error that would occur if `DROP SCHEMA` was executed on the `public` schema of the `system` database, or on an internal schema, such as `pg_catalog` or `information_schema`. +- Fixed a bug that caused incorrect evaluation of some binary expressions involving `CHAR(N)` values and untyped string literals with trailing whitespace characters. For example, the expression `'f'::CHAR = 'f '` now correctly evaluates to `true`. +- `CREATE SCHEMA` now returns the correct error if a the schema name is missing.

Performance improvements

-- Unnecessary block loads of SSTable files are now avoided in some rare cases after a replica rebalance. [#134541][#134541] - -[#133583]: https://github.com/cockroachdb/cockroach/pull/133583 -[#133708]: https://github.com/cockroachdb/cockroach/pull/133708 -[#133760]: https://github.com/cockroachdb/cockroach/pull/133760 -[#133822]: https://github.com/cockroachdb/cockroach/pull/133822 -[#133868]: https://github.com/cockroachdb/cockroach/pull/133868 -[#134001]: https://github.com/cockroachdb/cockroach/pull/134001 -[#134016]: https://github.com/cockroachdb/cockroach/pull/134016 -[#134087]: https://github.com/cockroachdb/cockroach/pull/134087 -[#134094]: https://github.com/cockroachdb/cockroach/pull/134094 -[#134100]: https://github.com/cockroachdb/cockroach/pull/134100 -[#134105]: https://github.com/cockroachdb/cockroach/pull/134105 -[#134365]: https://github.com/cockroachdb/cockroach/pull/134365 -[#134446]: https://github.com/cockroachdb/cockroach/pull/134446 -[#134508]: https://github.com/cockroachdb/cockroach/pull/134508 -[#134522]: https://github.com/cockroachdb/cockroach/pull/134522 -[#134541]: https://github.com/cockroachdb/cockroach/pull/134541 -[#134601]: https://github.com/cockroachdb/cockroach/pull/134601 -[#134648]: https://github.com/cockroachdb/cockroach/pull/134648 -[#134731]: https://github.com/cockroachdb/cockroach/pull/134731 -[#134836]: https://github.com/cockroachdb/cockroach/pull/134836 -[#134968]: https://github.com/cockroachdb/cockroach/pull/134968 -[#135111]: https://github.com/cockroachdb/cockroach/pull/135111 -[#135179]: https://github.com/cockroachdb/cockroach/pull/135179 -[#135195]: https://github.com/cockroachdb/cockroach/pull/135195 -[#135614]: https://github.com/cockroachdb/cockroach/pull/135614 -[#135690]: https://github.com/cockroachdb/cockroach/pull/135690 -[#135926]: https://github.com/cockroachdb/cockroach/pull/135926 -[#136008]: https://github.com/cockroachdb/cockroach/pull/136008 -[#136482]: https://github.com/cockroachdb/cockroach/pull/136482 +- Unnecessary block loads of SSTable files are now avoided in some rare cases after a replica rebalance. diff --git a/src/current/_includes/releases/v24.1/v24.1.9.md b/src/current/_includes/releases/v24.1/v24.1.9.md index c77a46b6639..b2dd5df7b31 100644 --- a/src/current/_includes/releases/v24.1/v24.1.9.md +++ b/src/current/_includes/releases/v24.1/v24.1.9.md @@ -6,7 +6,4 @@ Release Date: December 26, 2024

SQL language changes

-- Added the `legacy_varchar_typing` session setting. When set to `on`, type-checking comparisons involving `VARCHAR` columns behave as they did in all previous versions. When set to `off`, type-checking of these comparisons is more strict and queries that previously succeeded may now error with the message `unsupported comparison operator`. These errors can be fixed by adding explicit type casts. The `legacy_varchar_typing` session setting is on by default. [#137946][#137946] - - -[#137946]: https://github.com/cockroachdb/cockroach/pull/137946 +- Added the `legacy_varchar_typing` session setting. When set to `on`, type-checking comparisons involving `VARCHAR` columns behave as they did in all previous versions. When set to `off`, type-checking of these comparisons is more strict and queries that previously succeeded may now error with the message `unsupported comparison operator`. These errors can be fixed by adding explicit type casts. The `legacy_varchar_typing` session setting is on by default. diff --git a/src/current/_includes/releases/v24.2/v24.2.0-alpha.1.md b/src/current/_includes/releases/v24.2/v24.2.0-alpha.1.md index 5edaf8c7121..753e4ea08c7 100644 --- a/src/current/_includes/releases/v24.2/v24.2.0-alpha.1.md +++ b/src/current/_includes/releases/v24.2/v24.2.0-alpha.1.md @@ -16,199 +16,98 @@ Release Date: July 1, 2024 - `storage.category-crdb-log.bytes-written` - `storage.category-sql-row-spill.bytes-written` - `storage.category-sql-col-spill.bytes-written` - - `storage.category-unspecified.bytes-written` [#119024][#119024] -- The `storage.value_blocks.enabled` [cluster setting]({% link v24.2/cluster-settings.md %}) has been removed; value blocks are always enabled. [#122164][#122164] + - `storage.category-unspecified.bytes-written` +- The `storage.value_blocks.enabled` [cluster setting]({% link v24.2/cluster-settings.md %}) has been removed; value blocks are always enabled. - The following [metrics]({% link v24.2/metrics.md %}) were added for improved observability into [disk bandwidth]({% link v24.2/common-issues-to-monitor.md %}#storage-and-disk-i-o): - `storage.disk.read-max.bytespersecond` - - `storage.disk.write-max.bytespersecond` [#121553][#121553] -- Added two new [cluster settings]({% link v24.2/cluster-settings.md %}), `storage.sstable.compression_algorithm_backup_storage` and `storage.sstable.compression_algorithm_backup_transport`, which in addition to the existing cluster setting `storage.sstable.compression_algorithm`, can be used to alter the compression algorithm used for various types of [SSTs]({% link v24.2/architecture/storage-layer.md %}#ssts). [#124245][#124245] + - `storage.disk.write-max.bytespersecond` +- Added two new [cluster settings]({% link v24.2/cluster-settings.md %}), `storage.sstable.compression_algorithm_backup_storage` and `storage.sstable.compression_algorithm_backup_transport`, which in addition to the existing cluster setting `storage.sstable.compression_algorithm`, can be used to alter the compression algorithm used for various types of [SSTs]({% link v24.2/architecture/storage-layer.md %}#ssts).

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

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

SQL language changes

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

Operational changes

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

DB Console changes

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

Bug fixes

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

Performance improvements

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

Contributors

This release includes 1234 merged PRs by 97 authors. - -[#117438]: https://github.com/cockroachdb/cockroach/pull/117438 -[#119024]: https://github.com/cockroachdb/cockroach/pull/119024 -[#120736]: https://github.com/cockroachdb/cockroach/pull/120736 -[#121293]: https://github.com/cockroachdb/cockroach/pull/121293 -[#121318]: https://github.com/cockroachdb/cockroach/pull/121318 -[#121369]: https://github.com/cockroachdb/cockroach/pull/121369 -[#121380]: https://github.com/cockroachdb/cockroach/pull/121380 -[#121456]: https://github.com/cockroachdb/cockroach/pull/121456 -[#121506]: https://github.com/cockroachdb/cockroach/pull/121506 -[#121553]: https://github.com/cockroachdb/cockroach/pull/121553 -[#121609]: https://github.com/cockroachdb/cockroach/pull/121609 -[#121709]: https://github.com/cockroachdb/cockroach/pull/121709 -[#121966]: https://github.com/cockroachdb/cockroach/pull/121966 -[#121973]: https://github.com/cockroachdb/cockroach/pull/121973 -[#122024]: https://github.com/cockroachdb/cockroach/pull/122024 -[#122045]: https://github.com/cockroachdb/cockroach/pull/122045 -[#122164]: https://github.com/cockroachdb/cockroach/pull/122164 -[#122210]: https://github.com/cockroachdb/cockroach/pull/122210 -[#122345]: https://github.com/cockroachdb/cockroach/pull/122345 -[#122529]: https://github.com/cockroachdb/cockroach/pull/122529 -[#122645]: https://github.com/cockroachdb/cockroach/pull/122645 -[#122802]: https://github.com/cockroachdb/cockroach/pull/122802 -[#122848]: https://github.com/cockroachdb/cockroach/pull/122848 -[#123089]: https://github.com/cockroachdb/cockroach/pull/123089 -[#123120]: https://github.com/cockroachdb/cockroach/pull/123120 -[#123145]: https://github.com/cockroachdb/cockroach/pull/123145 -[#123155]: https://github.com/cockroachdb/cockroach/pull/123155 -[#123350]: https://github.com/cockroachdb/cockroach/pull/123350 -[#123381]: https://github.com/cockroachdb/cockroach/pull/123381 -[#123414]: https://github.com/cockroachdb/cockroach/pull/123414 -[#123544]: https://github.com/cockroachdb/cockroach/pull/123544 -[#123545]: https://github.com/cockroachdb/cockroach/pull/123545 -[#123601]: https://github.com/cockroachdb/cockroach/pull/123601 -[#123619]: https://github.com/cockroachdb/cockroach/pull/123619 -[#123650]: https://github.com/cockroachdb/cockroach/pull/123650 -[#123791]: https://github.com/cockroachdb/cockroach/pull/123791 -[#123799]: https://github.com/cockroachdb/cockroach/pull/123799 -[#123827]: https://github.com/cockroachdb/cockroach/pull/123827 -[#123926]: https://github.com/cockroachdb/cockroach/pull/123926 -[#123959]: https://github.com/cockroachdb/cockroach/pull/123959 -[#123961]: https://github.com/cockroachdb/cockroach/pull/123961 -[#124010]: https://github.com/cockroachdb/cockroach/pull/124010 -[#124028]: https://github.com/cockroachdb/cockroach/pull/124028 -[#124053]: https://github.com/cockroachdb/cockroach/pull/124053 -[#124099]: https://github.com/cockroachdb/cockroach/pull/124099 -[#124241]: https://github.com/cockroachdb/cockroach/pull/124241 -[#124245]: https://github.com/cockroachdb/cockroach/pull/124245 -[#124289]: https://github.com/cockroachdb/cockroach/pull/124289 -[#124322]: https://github.com/cockroachdb/cockroach/pull/124322 -[#124371]: https://github.com/cockroachdb/cockroach/pull/124371 -[#124401]: https://github.com/cockroachdb/cockroach/pull/124401 -[#124409]: https://github.com/cockroachdb/cockroach/pull/124409 -[#124488]: https://github.com/cockroachdb/cockroach/pull/124488 -[#124581]: https://github.com/cockroachdb/cockroach/pull/124581 -[#124598]: https://github.com/cockroachdb/cockroach/pull/124598 -[#124604]: https://github.com/cockroachdb/cockroach/pull/124604 -[#124613]: https://github.com/cockroachdb/cockroach/pull/124613 -[#124628]: https://github.com/cockroachdb/cockroach/pull/124628 -[#124630]: https://github.com/cockroachdb/cockroach/pull/124630 -[#124631]: https://github.com/cockroachdb/cockroach/pull/124631 -[#124664]: https://github.com/cockroachdb/cockroach/pull/124664 -[#124681]: https://github.com/cockroachdb/cockroach/pull/124681 -[#124721]: https://github.com/cockroachdb/cockroach/pull/124721 -[#124730]: https://github.com/cockroachdb/cockroach/pull/124730 -[#124735]: https://github.com/cockroachdb/cockroach/pull/124735 -[#124788]: https://github.com/cockroachdb/cockroach/pull/124788 -[#124830]: https://github.com/cockroachdb/cockroach/pull/124830 -[#124851]: https://github.com/cockroachdb/cockroach/pull/124851 -[#124885]: https://github.com/cockroachdb/cockroach/pull/124885 -[#124888]: https://github.com/cockroachdb/cockroach/pull/124888 -[#124894]: https://github.com/cockroachdb/cockroach/pull/124894 -[#124896]: https://github.com/cockroachdb/cockroach/pull/124896 -[#124942]: https://github.com/cockroachdb/cockroach/pull/124942 -[#124971]: https://github.com/cockroachdb/cockroach/pull/124971 -[#124981]: https://github.com/cockroachdb/cockroach/pull/124981 -[#124999]: https://github.com/cockroachdb/cockroach/pull/124999 -[#125152]: https://github.com/cockroachdb/cockroach/pull/125152 -[#125158]: https://github.com/cockroachdb/cockroach/pull/125158 -[#125282]: https://github.com/cockroachdb/cockroach/pull/125282 -[#125284]: https://github.com/cockroachdb/cockroach/pull/125284 -[#125317]: https://github.com/cockroachdb/cockroach/pull/125317 -[#125345]: https://github.com/cockroachdb/cockroach/pull/125345 -[#125370]: https://github.com/cockroachdb/cockroach/pull/125370 -[#125455]: https://github.com/cockroachdb/cockroach/pull/125455 -[#125468]: https://github.com/cockroachdb/cockroach/pull/125468 -[#125487]: https://github.com/cockroachdb/cockroach/pull/125487 -[#125492]: https://github.com/cockroachdb/cockroach/pull/125492 -[#125507]: https://github.com/cockroachdb/cockroach/pull/125507 -[#125626]: https://github.com/cockroachdb/cockroach/pull/125626 -[#125653]: https://github.com/cockroachdb/cockroach/pull/125653 -[#125654]: https://github.com/cockroachdb/cockroach/pull/125654 -[#125663]: https://github.com/cockroachdb/cockroach/pull/125663 -[#125699]: https://github.com/cockroachdb/cockroach/pull/125699 -[#125870]: https://github.com/cockroachdb/cockroach/pull/125870 -[#125959]: https://github.com/cockroachdb/cockroach/pull/125959 -[#125968]: https://github.com/cockroachdb/cockroach/pull/125968 -[#126084]: https://github.com/cockroachdb/cockroach/pull/126084 -[#125744]: https://github.com/cockroachdb/cockroach/pull/125744 -[#125910]: https://github.com/cockroachdb/cockroach/pull/125910 -[#125979]: https://github.com/cockroachdb/cockroach/pull/125979 diff --git a/src/current/_includes/releases/v24.2/v24.2.0-alpha.2.md b/src/current/_includes/releases/v24.2/v24.2.0-alpha.2.md index 6f2d6827f32..c236c60242b 100644 --- a/src/current/_includes/releases/v24.2/v24.2.0-alpha.2.md +++ b/src/current/_includes/releases/v24.2/v24.2.0-alpha.2.md @@ -9,62 +9,34 @@ Release Date: July 10, 2024 - The compression option `none` was added to allow for the disabling of SSTable compression. This option can be used with any of the three existing cluster settings that control SSTable compression: - [`storage.sstable.compression_algorithm`]({% link v24.2/cluster-settings.md %}#setting-storage-sstable-compression-algorithm) - [`storage.sstable.compression_algorithm_backup_storage`]({% link v24.2/cluster-settings.md %}#setting-storage-sstable-compression-algorithm-backup-storage) - - [`storage.sstable.compression_algorithm_backup_transport`]({% link v24.2/cluster-settings.md %}#setting-storage-sstable-compression-algorithm-backup-transport) [#126508][#126508] + - [`storage.sstable.compression_algorithm_backup_transport`]({% link v24.2/cluster-settings.md %}#setting-storage-sstable-compression-algorithm-backup-transport)

SQL language changes

-- Added the [`sql.auth.grant_option_inheritance.enabled` cluster setting]({% link v24.2/cluster-settings.md %}#setting-sql-auth-grant-option-inheritance-enabled). The default value is `true`, which maintains consistency with CockroachDB's previous behavior: users granted a privilege with [`WITH GRANT OPTION`]({% link v24.2/grant.md %}) can in turn grant that privilege to others. When `sql.auth.grant_option_inheritance.enabled` is set to `false`, the `GRANT OPTION` is not inherited through role membership, thereby preventing descendant roles from granting the privilege to others. However, the privilege itself continues to be inherited through role membership. [#125590][#125590] -- The [`pg_catalog.pg_attribute`]({% link v24.2/pg-catalog.md %}) table now has a column named `attishidden`, which indicates if the table column or attribute is [`NOT VISIBLE`]({% link v24.2/create-table.md %}#not-visible-property). [#126397][#126397] +- Added the [`sql.auth.grant_option_inheritance.enabled` cluster setting]({% link v24.2/cluster-settings.md %}#setting-sql-auth-grant-option-inheritance-enabled). The default value is `true`, which maintains consistency with CockroachDB's previous behavior: users granted a privilege with [`WITH GRANT OPTION`]({% link v24.2/grant.md %}) can in turn grant that privilege to others. When `sql.auth.grant_option_inheritance.enabled` is set to `false`, the `GRANT OPTION` is not inherited through role membership, thereby preventing descendant roles from granting the privilege to others. However, the privilege itself continues to be inherited through role membership. +- The [`pg_catalog.pg_attribute`]({% link v24.2/pg-catalog.md %}) table now has a column named `attishidden`, which indicates if the table column or attribute is [`NOT VISIBLE`]({% link v24.2/create-table.md %}#not-visible-property).

Bug fixes

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

Performance improvements

-- Starting a `cockroach` process will no longer flush [buffered logs]({% link v24.2/configure-logs.md %}#log-buffering-for-network-sinks) to [configured logging sinks]({% link v24.2/configure-logs.md %}#configure-log-sinks) unless the process is running under `systemd`, where `cockroach` runs with the `NOTIFY_SOCKET` environment variable. [#125971][#125971] +- Starting a `cockroach` process will no longer flush [buffered logs]({% link v24.2/configure-logs.md %}#log-buffering-for-network-sinks) to [configured logging sinks]({% link v24.2/configure-logs.md %}#configure-log-sinks) unless the process is running under `systemd`, where `cockroach` runs with the `NOTIFY_SOCKET` environment variable.

Contributors

This release includes 130 merged PRs by 42 authors. - -[#123459]: https://github.com/cockroachdb/cockroach/pull/123459 -[#125590]: https://github.com/cockroachdb/cockroach/pull/125590 -[#125648]: https://github.com/cockroachdb/cockroach/pull/125648 -[#125905]: https://github.com/cockroachdb/cockroach/pull/125905 -[#125971]: https://github.com/cockroachdb/cockroach/pull/125971 -[#125996]: https://github.com/cockroachdb/cockroach/pull/125996 -[#126033]: https://github.com/cockroachdb/cockroach/pull/126033 -[#126211]: https://github.com/cockroachdb/cockroach/pull/126211 -[#126270]: https://github.com/cockroachdb/cockroach/pull/126270 -[#126281]: https://github.com/cockroachdb/cockroach/pull/126281 -[#126297]: https://github.com/cockroachdb/cockroach/pull/126297 -[#126349]: https://github.com/cockroachdb/cockroach/pull/126349 -[#126351]: https://github.com/cockroachdb/cockroach/pull/126351 -[#126354]: https://github.com/cockroachdb/cockroach/pull/126354 -[#126368]: https://github.com/cockroachdb/cockroach/pull/126368 -[#126393]: https://github.com/cockroachdb/cockroach/pull/126393 -[#126397]: https://github.com/cockroachdb/cockroach/pull/126397 -[#126403]: https://github.com/cockroachdb/cockroach/pull/126403 -[#126508]: https://github.com/cockroachdb/cockroach/pull/126508 -[#126555]: https://github.com/cockroachdb/cockroach/pull/126555 -[1756b05fa]: https://github.com/cockroachdb/cockroach/commit/1756b05fa -[24f84bcb2]: https://github.com/cockroachdb/cockroach/commit/24f84bcb2 -[5884ff568]: https://github.com/cockroachdb/cockroach/commit/5884ff568 -[8f5537acd]: https://github.com/cockroachdb/cockroach/commit/8f5537acd -[9593896c3]: https://github.com/cockroachdb/cockroach/commit/9593896c3 -[d2804f0e8]: https://github.com/cockroachdb/cockroach/commit/d2804f0e8 -[efd597f49]: https://github.com/cockroachdb/cockroach/commit/efd597f49 diff --git a/src/current/_includes/releases/v24.2/v24.2.0-beta.1.md b/src/current/_includes/releases/v24.2/v24.2.0-beta.1.md index ec4f0f7ec9d..d99ca6432f8 100644 --- a/src/current/_includes/releases/v24.2/v24.2.0-beta.1.md +++ b/src/current/_includes/releases/v24.2/v24.2.0-beta.1.md @@ -6,31 +6,31 @@ Release Date: July 18, 2024

Security updates

-- Added support for a custom certificate authority (CA) to verify certificates from the JWT issuer domain, which hosts the JSON Web Key Set (JWKS) configuration that is fetched to validate JWT, along with the new [cluster setting]({% link v24.2/cluster-settings.md %}) `server.jwt_authentication.issuer_custom_ca` to set the custom root CA. [#126062][#126062] +- Added support for a custom certificate authority (CA) to verify certificates from the JWT issuer domain, which hosts the JSON Web Key Set (JWKS) configuration that is fetched to validate JWT, along with the new [cluster setting]({% link v24.2/cluster-settings.md %}) `server.jwt_authentication.issuer_custom_ca` to set the custom root CA.

General changes

-- [Job]({% link v24.2/show-jobs.md %}) status changes now log events to the [OPS channel]({% link v24.2/logging.md %}#logging-channels), to indicate the previous and new status of the job. [#125319][#125319] +- [Job]({% link v24.2/show-jobs.md %}) status changes now log events to the [OPS channel]({% link v24.2/logging.md %}#logging-channels), to indicate the previous and new status of the job.

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

-- The new [cluster setting]({% link v24.2/cluster-settings.md %}) `server.oidc_authentication.client.timeout` allows configuration of the HTTP client timeout for external calls made during [OIDC authentication]({% link v24.2/sso-db-console.md %}). The default timeout is 30 seconds. [#125767][#125767] -- The [Kafka sink for changefeeds]({% link v24.2/changefeed-sinks.md %}) now supports authentication using AWS IAM roles, providing a more secure method for connecting to AWS Managed Streaming for Apache Kafka (MSK) clusters. [#125745][#125745] +- The new [cluster setting]({% link v24.2/cluster-settings.md %}) `server.oidc_authentication.client.timeout` allows configuration of the HTTP client timeout for external calls made during [OIDC authentication]({% link v24.2/sso-db-console.md %}). The default timeout is 30 seconds. +- The [Kafka sink for changefeeds]({% link v24.2/changefeed-sinks.md %}) now supports authentication using AWS IAM roles, providing a more secure method for connecting to AWS Managed Streaming for Apache Kafka (MSK) clusters.

SQL language changes

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

Operational changes

-- For the [TELEMETRY channel]({% link v24.2/logging.md %}#telemetry), TCL `sampled_query` events will now be sampled at the rate specified by the setting `sql.telemetry.query_sampling.max_event_frequency`, which is already used to limit the rate of sampling DML statements. [#126484][#126484] -- The `encode-uri` command now supports the `--certs-dir` option as an alternative to passing individual certificate paths. [#126793][#126793] -- Changed the metric type of runtime metrics that are semantically counters from `GAUGE` to `COUNTER`. [#127018][#127018] +- For the [TELEMETRY channel]({% link v24.2/logging.md %}#telemetry), TCL `sampled_query` events will now be sampled at the rate specified by the setting `sql.telemetry.query_sampling.max_event_frequency`, which is already used to limit the rate of sampling DML statements. +- The `encode-uri` command now supports the `--certs-dir` option as an alternative to passing individual certificate paths. +- Changed the metric type of runtime metrics that are semantically counters from `GAUGE` to `COUNTER`. - `storage.disk.io.time` - `storage.disk.read.bytes` - `storage.disk.read.count` @@ -67,22 +67,22 @@ Release Date: July 18, 2024

Command-line changes

-- The new `--shutdown` flag of the [`cockroach node drain`]({% link v24.2/cockroach-node.md %}#subcommands) command shuts down the node automatically after draining successfully completes. [#126950][#126950] +- The new `--shutdown` flag of the [`cockroach node drain`]({% link v24.2/cockroach-node.md %}#subcommands) command shuts down the node automatically after draining successfully completes.

Bug fixes

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

Performance improvements

-- The efficiency of merging partial statistics into existing [statistics]({% link v24.2/create-statistics.md %}) has been improved. [#126830][#126830] -- The [optimizer]({% link v24.2/cost-based-optimizer.md %}) now generates more efficient plans for queries with clauses like `ORDER BY col ASC NULLS LAST` and `ORDER BY col DESC NULLS FIRST` when `col` is guaranteed to not be `NULL`. [#126685][#126685] +- The efficiency of merging partial statistics into existing [statistics]({% link v24.2/create-statistics.md %}) has been improved. +- The [optimizer]({% link v24.2/cost-based-optimizer.md %}) now generates more efficient plans for queries with clauses like `ORDER BY col ASC NULLS LAST` and `ORDER BY col DESC NULLS FIRST` when `col` is guaranteed to not be `NULL`.
@@ -91,29 +91,3 @@ Release Date: July 18, 2024 This release includes 96 merged PRs by 49 authors.
- -[#103156]: https://github.com/cockroachdb/cockroach/pull/103156 -[#124292]: https://github.com/cockroachdb/cockroach/pull/124292 -[#125319]: https://github.com/cockroachdb/cockroach/pull/125319 -[#125745]: https://github.com/cockroachdb/cockroach/pull/125745 -[#125767]: https://github.com/cockroachdb/cockroach/pull/125767 -[#126062]: https://github.com/cockroachdb/cockroach/pull/126062 -[#126336]: https://github.com/cockroachdb/cockroach/pull/126336 -[#126419]: https://github.com/cockroachdb/cockroach/pull/126419 -[#126484]: https://github.com/cockroachdb/cockroach/pull/126484 -[#126504]: https://github.com/cockroachdb/cockroach/pull/126504 -[#126528]: https://github.com/cockroachdb/cockroach/pull/126528 -[#126531]: https://github.com/cockroachdb/cockroach/pull/126531 -[#126575]: https://github.com/cockroachdb/cockroach/pull/126575 -[#126585]: https://github.com/cockroachdb/cockroach/pull/126585 -[#126639]: https://github.com/cockroachdb/cockroach/pull/126639 -[#126685]: https://github.com/cockroachdb/cockroach/pull/126685 -[#126708]: https://github.com/cockroachdb/cockroach/pull/126708 -[#126747]: https://github.com/cockroachdb/cockroach/pull/126747 -[#126793]: https://github.com/cockroachdb/cockroach/pull/126793 -[#126830]: https://github.com/cockroachdb/cockroach/pull/126830 -[#126950]: https://github.com/cockroachdb/cockroach/pull/126950 -[#127012]: https://github.com/cockroachdb/cockroach/pull/127012 -[#127018]: https://github.com/cockroachdb/cockroach/pull/127018 -[#127086]: https://github.com/cockroachdb/cockroach/pull/127086 -[#127124]: https://github.com/cockroachdb/cockroach/pull/127124 diff --git a/src/current/_includes/releases/v24.2/v24.2.0-beta.2.md b/src/current/_includes/releases/v24.2/v24.2.0-beta.2.md index a4269de5375..88d98be7e5d 100644 --- a/src/current/_includes/releases/v24.2/v24.2.0-beta.2.md +++ b/src/current/_includes/releases/v24.2/v24.2.0-beta.2.md @@ -6,7 +6,7 @@ Release Date: July 24, 2024

Security updates

-- URLs in the following SQL statements are now sanitized of any secrets before being written to [unredacted logs]({% link v24.2/configure-logs.md %}#redact-logs). [#127360][#127360] +- URLs in the following SQL statements are now sanitized of any secrets before being written to [unredacted logs]({% link v24.2/configure-logs.md %}#redact-logs). - [`ALTER BACKUP SCHEDULE`]({% link v24.2/alter-backup.md %}) - [`ALTER BACKUP`]({% link v24.2/alter-backup.md %}) - [`ALTER CHANGEFEED SET sink`]({% link v24.2/alter-changefeed.md %}) @@ -24,14 +24,14 @@ Release Date: July 24, 2024

SQL language changes

-- The new [cluster setting]({% link v24.2/cluster-settings.md %}) [`sql.auth.grant_option_for_owner.enabled`]({% link v24.2/cluster-settings.md %}#setting-sql-auth-grant-option-for-owner-enabled) controls whether the owner of an object has permission to grant permission on the object to other [users]({% link v24.2/security-reference/authorization.md %}#roles). When set to `true` (the default), the [`GRANT OPTION`]({% link v24.2/show-grants.md %}#privilege-grants) is is implicitly granted to the object owner, who can grant permissions on the object to other users, preserving the existing behavior of CockroachDB. When set to `false`, the `GRANT OPTION` is not implicitly given to the owner of an object. The owner's permissions do not change, but they can no longer grant permissions to others unless the `GRANT OPTION` is granted to them explicitly. [#126960][#126960] +- The new [cluster setting]({% link v24.2/cluster-settings.md %}) [`sql.auth.grant_option_for_owner.enabled`]({% link v24.2/cluster-settings.md %}#setting-sql-auth-grant-option-for-owner-enabled) controls whether the owner of an object has permission to grant permission on the object to other [users]({% link v24.2/security-reference/authorization.md %}#roles). When set to `true` (the default), the [`GRANT OPTION`]({% link v24.2/show-grants.md %}#privilege-grants) is is implicitly granted to the object owner, who can grant permissions on the object to other users, preserving the existing behavior of CockroachDB. When set to `false`, the `GRANT OPTION` is not implicitly given to the owner of an object. The owner's permissions do not change, but they can no longer grant permissions to others unless the `GRANT OPTION` is granted to them explicitly. - Fixed a bug in which the `DISCARD` statement was disallowed when the [session setting]({% link v24.2/session-variables.md %}#default-transaction-read-only) `default_transaction_read_only = on`. [cockroachdb/cockroach#127364][#127364]

Bug fixes

-- Fixed a bug that could cause [`CREATE INVERTED INDEX`]({% link v24.2/create-index.md %}#create-gin-indexes) and [`ALTER TABLE ... SET LOCALITY REGIONAL BY ROW`]({% link v24.2/alter-table.md %}#set-the-table-locality-to-regional-by-row) statements to fail if the corresponding table contained columns with non-standard characters in their names, such as tabs or newlines. This bug was introduced along with [inverted indexes]({% link v24.2/inverted-indexes.md %}) in v2.0. [#126996][#126996] -- Fixed a bug introduced in v23.2 that could cause a [gateway node]({% link v24.2/architecture/life-of-a-distributed-transaction.md %}#gateway) to crash while executing an [`INSERT`]({% link v24.2/insert.md %}) statement in a [`REGIONAL BY ROW`]({% link v24.2/alter-table.md %}#set-the-table-locality-to-regional-by-row) table. [#127278][#127278] -- Fixed a bug where a [schema change]({% link v24.2/online-schema-changes.md %}) could hang if the [lease]({% link v24.2/architecture/replication-layer.md %}#leases) [rangefeed]({% link v24.2/create-and-configure-changefeeds.md %}#enable-rangefeeds) stopped receiving updates. [#127488][#127488] +- Fixed a bug that could cause [`CREATE INVERTED INDEX`]({% link v24.2/create-index.md %}#create-gin-indexes) and [`ALTER TABLE ... SET LOCALITY REGIONAL BY ROW`]({% link v24.2/alter-table.md %}#set-the-table-locality-to-regional-by-row) statements to fail if the corresponding table contained columns with non-standard characters in their names, such as tabs or newlines. This bug was introduced along with [inverted indexes]({% link v24.2/inverted-indexes.md %}) in v2.0. +- Fixed a bug introduced in v23.2 that could cause a [gateway node]({% link v24.2/architecture/life-of-a-distributed-transaction.md %}#gateway) to crash while executing an [`INSERT`]({% link v24.2/insert.md %}) statement in a [`REGIONAL BY ROW`]({% link v24.2/alter-table.md %}#set-the-table-locality-to-regional-by-row) table. +- Fixed a bug where a [schema change]({% link v24.2/online-schema-changes.md %}) could hang if the [lease]({% link v24.2/architecture/replication-layer.md %}#leases) [rangefeed]({% link v24.2/create-and-configure-changefeeds.md %}#enable-rangefeeds) stopped receiving updates.
@@ -40,11 +40,3 @@ Release Date: July 24, 2024 This release includes 45 merged PRs by 18 authors.
- -[#126960]: https://github.com/cockroachdb/cockroach/pull/126960 -[#126996]: https://github.com/cockroachdb/cockroach/pull/126996 -[#127278]: https://github.com/cockroachdb/cockroach/pull/127278 -[#127360]: https://github.com/cockroachdb/cockroach/pull/127360 -[#127364]: https://github.com/cockroachdb/cockroach/pull/127364 -[#127392]: https://github.com/cockroachdb/cockroach/pull/127392 -[#127488]: https://github.com/cockroachdb/cockroach/pull/127488 diff --git a/src/current/_includes/releases/v24.2/v24.2.0-beta.3.md b/src/current/_includes/releases/v24.2/v24.2.0-beta.3.md index 3ed6e1ea9a6..64ae7d1d2db 100644 --- a/src/current/_includes/releases/v24.2/v24.2.0-beta.3.md +++ b/src/current/_includes/releases/v24.2/v24.2.0-beta.3.md @@ -6,11 +6,11 @@ Release Date: August 1, 2024

Command-line changes

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

Bug fixes

-- Fixed a formatting issue with the `sql_sequence_cached_node` value of the `serial_normalization` [setting]({% link v24.2/session-variables.md %}). This could lead to an error connecting to CockroachDB if this value was set as the default for `serial_normalization` via cluster setting [`sql.defaults.serial_normalization`]({% link v24.2/cluster-settings.md %}#setting-sql-defaults-serial-normalization). [#127674][#127674] -- Dropping [ENUM]({% link v24.2/enum.md %})-type values which were referenced by [index expressions]({% link v24.2/expression-indexes.md %}) could fail with an error. [#127455][#127455] +- Fixed a formatting issue with the `sql_sequence_cached_node` value of the `serial_normalization` [setting]({% link v24.2/session-variables.md %}). This could lead to an error connecting to CockroachDB if this value was set as the default for `serial_normalization` via cluster setting [`sql.defaults.serial_normalization`]({% link v24.2/cluster-settings.md %}#setting-sql-defaults-serial-normalization). +- Dropping [ENUM]({% link v24.2/enum.md %})-type values which were referenced by [index expressions]({% link v24.2/expression-indexes.md %}) could fail with an error. This release includes 13 merged PRs by 7 authors. diff --git a/src/current/_includes/releases/v24.2/v24.2.0-rc.1.md b/src/current/_includes/releases/v24.2/v24.2.0-rc.1.md index 02b1bfc756a..a1e7724b04a 100644 --- a/src/current/_includes/releases/v24.2/v24.2.0-rc.1.md +++ b/src/current/_includes/releases/v24.2/v24.2.0-rc.1.md @@ -6,20 +6,20 @@ Release Date: August 7, 2024

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

-- Added a new Kafka [changefeed sink]({% link v24.2/changefeed-sinks.md %}) that uses the [`franz-go` library](https://github.com/twmb/franz-go) and CockroachDB's `batching_sink` implementation. The new Kafka sink can be enabled with the [`changefeed.new_kafka_sink_enabled`]({% link v24.2/cluster-settings.md %}) cluster setting, which is disabled by default. [#127899][#127899] -- The v2 Kafka [changefeed sink]({% link v24.2/changefeed-sinks.md %}) now supports [Amazon Managed Streaming for Apache Kafka (MSK)](https://aws.amazon.com/msk/) IAM SASL authentication. [#127899][#127899] +- Added a new Kafka [changefeed sink]({% link v24.2/changefeed-sinks.md %}) that uses the [`franz-go` library](https://github.com/twmb/franz-go) and CockroachDB's `batching_sink` implementation. The new Kafka sink can be enabled with the [`changefeed.new_kafka_sink_enabled`]({% link v24.2/cluster-settings.md %}) cluster setting, which is disabled by default. +- The v2 Kafka [changefeed sink]({% link v24.2/changefeed-sinks.md %}) now supports [Amazon Managed Streaming for Apache Kafka (MSK)](https://aws.amazon.com/msk/) IAM SASL authentication.

DB Console changes

-- The [Databases]({% link v24.2/ui-databases-page.md %}) and [Tables]({% link v24.2/ui-databases-page.md %}#tables-view) pages in the [DB Console]({% link v24.2/ui-overview.md %}) will show a loading state while loading information for databases and tables including size and range counts. [#127696][#127696] -- On the [Database details]({% link v24.2/ui-databases-page.md %}) page, the table name will no longer appear with quotes around the schema and table name. [#127770][#127770] +- The [Databases]({% link v24.2/ui-databases-page.md %}) and [Tables]({% link v24.2/ui-databases-page.md %}#tables-view) pages in the [DB Console]({% link v24.2/ui-overview.md %}) will show a loading state while loading information for databases and tables including size and range counts. +- On the [Database details]({% link v24.2/ui-databases-page.md %}) page, the table name will no longer appear with quotes around the schema and table name.

Bug fixes

-- Fixed a bug that caused a memory leak when executing SQL statements with comments, for example, `SELECT /* comment */ 1;`. Memory owned by a SQL session would continue to grow as these types of statements were executed. The memory would only be released when closing the [SQL session]({% link v24.2/show-sessions.md %}). This bug has been present since v23.1. [#127760][#127760] -- Fixed a bug in [debug zip]({% link v24.2/cockroach-debug-zip.md %}) generation where an error was produced while fetching unstructured/malformed [logs]({% link v24.2/log-formats.md %}). [#127883][#127883] -- Fixed small memory leaks that occur during [changefeed creation]({% link v24.2/create-changefeed.md %}). [#127899][#127899] -- Fixed a [known limitation]({% link v24.2/physical-cluster-replication-overview.md %}#known-limitations) in which [fast cutback]({% link v24.2/cutover-replication.md %}#cut-back-to-the-original-primary-cluster) could fail. Users can now protect data for the [default protection window]({% link v24.2/physical-cluster-replication-technical-overview.md %}) of 4 hours on both the primary and the standby clusters. [#127892][#127892] +- Fixed a bug that caused a memory leak when executing SQL statements with comments, for example, `SELECT /* comment */ 1;`. Memory owned by a SQL session would continue to grow as these types of statements were executed. The memory would only be released when closing the [SQL session]({% link v24.2/show-sessions.md %}). This bug has been present since v23.1. +- Fixed a bug in [debug zip]({% link v24.2/cockroach-debug-zip.md %}) generation where an error was produced while fetching unstructured/malformed [logs]({% link v24.2/log-formats.md %}). +- Fixed small memory leaks that occur during [changefeed creation]({% link v24.2/create-changefeed.md %}). +- Fixed a [known limitation]({% link v24.2/physical-cluster-replication-overview.md %}#known-limitations) in which [fast cutback]({% link v24.2/cutover-replication.md %}#cut-back-to-the-original-primary-cluster) could fail. Users can now protect data for the [default protection window]({% link v24.2/physical-cluster-replication-technical-overview.md %}) of 4 hours on both the primary and the standby clusters.
@@ -28,10 +28,3 @@ Release Date: August 7, 2024 This release includes 29 merged PRs by 21 authors.
- -[#127696]: https://github.com/cockroachdb/cockroach/pull/127696 -[#127760]: https://github.com/cockroachdb/cockroach/pull/127760 -[#127770]: https://github.com/cockroachdb/cockroach/pull/127770 -[#127883]: https://github.com/cockroachdb/cockroach/pull/127883 -[#127892]: https://github.com/cockroachdb/cockroach/pull/127892 -[#127899]: https://github.com/cockroachdb/cockroach/pull/127899 diff --git a/src/current/_includes/releases/v24.2/v24.2.0.md b/src/current/_includes/releases/v24.2/v24.2.0.md index b538ecba234..b6a915276b8 100644 --- a/src/current/_includes/releases/v24.2/v24.2.0.md +++ b/src/current/_includes/releases/v24.2/v24.2.0.md @@ -79,29 +79,29 @@ The following changes should be reviewed prior to upgrading. Default cluster set
Settings added
-- `debug.zip.redact_addresses`: Added the [cluster setting]({% link v24.2/cluster-settings.md %}) `debug.zip.redact_addresses.enabled` that allows the user to enable or disable redaction of fields like `hostname` and IP addresses. [#123544][#123544] -- `kv.transaction.randomized_anchor_key`: Previously, concurrent transactions that constructed large write batches could cause [hotspots]({% link v24.2/ui-hot-ranges-page.md %}). This was because the [transaction record]({% link v24.2/architecture/transaction-layer.md %}#transaction-records) for all [ranges]({% link v24.2/architecture/reads-and-writes-overview.md %}#range) would coalesce on a single range, which would then cause this range's [leaseholder]({% link v24.2/architecture/reads-and-writes-overview.md %}#leaseholder) to perform all intent resolution work. This is fixed by distributing transaction records randomly across the ranges the write batch touches. In turn, hotspots are prevented. [#125744][#125744] -- `server.oidc_authentication.client.timeout`: The new [cluster setting]({% link v24.2/cluster-settings.md %}#setting-server-oidc-authentication-client-timeout) `server.oidc_authentication.client.timeout` allows configuration of the HTTP client timeout for external requests made during [OIDC authentication]({% link v24.2/sso-db-console.md %}). The default timeout is 30 seconds. [#125767][#125767] -- `sql.auth.grant_option_for_owner.enabled`: The new [cluster setting]({% link v24.2/cluster-settings.md %}) [`sql.auth.grant_option_for_owner.enabled`]({% link v24.2/cluster-settings.md %}#setting-sql-auth-grant-option-for-owner-enabled) controls whether the owner of an object has permission to grant permission on the object to other [users]({% link v24.2/security-reference/authorization.md %}#roles). When set to `true` (the default), the [`GRANT OPTION`]({% link v24.2/show-grants.md %}#privilege-grants) is implicitly granted to the object owner, who can grant permissions on the object to other users, preserving the existing behavior of CockroachDB. When set to `false`, the `GRANT OPTION` is not implicitly given to the owner of an object. The owner's permissions do not change, but they can no longer grant permissions to others unless the `GRANT OPTION` is granted to them explicitly. [#126960][#126960] -- `sql.auth.grant_option_inheritance.enabled`: Added the [`sql.auth.grant_option_inheritance.enabled` cluster setting]({% link v24.2/cluster-settings.md %}#setting-sql-auth-grant-option-inheritance-enabled). The default value is `true`, which maintains consistency with CockroachDB's previous behavior: users granted a privilege with [`WITH GRANT OPTION`]({% link v24.2/grant.md %}) can in turn grant that privilege to others. When `sql.auth.grant_option_inheritance.enabled` is set to `false`, the `GRANT OPTION` is not inherited through role membership, thereby preventing descendant roles from granting the privilege to others. However, the privilege itself continues to be inherited through role membership. [#125590][#125590] -- `storage.sstable.compression_algorithm_backup_storage`, `storage.sstable.compression_algorithm_backup_transport`: Added two new [cluster settings]({% link v24.2/cluster-settings.md %}), `storage.sstable.compression_algorithm_backup_storage` and `storage.sstable.compression_algorithm_backup_transport`, which in addition to the existing cluster setting `storage.sstable.compression_algorithm`, can be used to alter the compression algorithm used for various types of [SSTs]({% link v24.2/architecture/storage-layer.md %}#ssts). [#124245][#124245] +- `debug.zip.redact_addresses`: Added the [cluster setting]({% link v24.2/cluster-settings.md %}) `debug.zip.redact_addresses.enabled` that allows the user to enable or disable redaction of fields like `hostname` and IP addresses. +- `kv.transaction.randomized_anchor_key`: Previously, concurrent transactions that constructed large write batches could cause [hotspots]({% link v24.2/ui-hot-ranges-page.md %}). This was because the [transaction record]({% link v24.2/architecture/transaction-layer.md %}#transaction-records) for all [ranges]({% link v24.2/architecture/reads-and-writes-overview.md %}#range) would coalesce on a single range, which would then cause this range's [leaseholder]({% link v24.2/architecture/reads-and-writes-overview.md %}#leaseholder) to perform all intent resolution work. This is fixed by distributing transaction records randomly across the ranges the write batch touches. In turn, hotspots are prevented. +- `server.oidc_authentication.client.timeout`: The new [cluster setting]({% link v24.2/cluster-settings.md %}#setting-server-oidc-authentication-client-timeout) `server.oidc_authentication.client.timeout` allows configuration of the HTTP client timeout for external requests made during [OIDC authentication]({% link v24.2/sso-db-console.md %}). The default timeout is 30 seconds. +- `sql.auth.grant_option_for_owner.enabled`: The new [cluster setting]({% link v24.2/cluster-settings.md %}) [`sql.auth.grant_option_for_owner.enabled`]({% link v24.2/cluster-settings.md %}#setting-sql-auth-grant-option-for-owner-enabled) controls whether the owner of an object has permission to grant permission on the object to other [users]({% link v24.2/security-reference/authorization.md %}#roles). When set to `true` (the default), the [`GRANT OPTION`]({% link v24.2/show-grants.md %}#privilege-grants) is implicitly granted to the object owner, who can grant permissions on the object to other users, preserving the existing behavior of CockroachDB. When set to `false`, the `GRANT OPTION` is not implicitly given to the owner of an object. The owner's permissions do not change, but they can no longer grant permissions to others unless the `GRANT OPTION` is granted to them explicitly. +- `sql.auth.grant_option_inheritance.enabled`: Added the [`sql.auth.grant_option_inheritance.enabled` cluster setting]({% link v24.2/cluster-settings.md %}#setting-sql-auth-grant-option-inheritance-enabled). The default value is `true`, which maintains consistency with CockroachDB's previous behavior: users granted a privilege with [`WITH GRANT OPTION`]({% link v24.2/grant.md %}) can in turn grant that privilege to others. When `sql.auth.grant_option_inheritance.enabled` is set to `false`, the `GRANT OPTION` is not inherited through role membership, thereby preventing descendant roles from granting the privilege to others. However, the privilege itself continues to be inherited through role membership. +- `storage.sstable.compression_algorithm_backup_storage`, `storage.sstable.compression_algorithm_backup_transport`: Added two new [cluster settings]({% link v24.2/cluster-settings.md %}), `storage.sstable.compression_algorithm_backup_storage` and `storage.sstable.compression_algorithm_backup_transport`, which in addition to the existing cluster setting `storage.sstable.compression_algorithm`, can be used to alter the compression algorithm used for various types of [SSTs]({% link v24.2/architecture/storage-layer.md %}#ssts).
Settings removed
-- `kv.rangefeed.range_stuck_threshold`: Removed the stuck rangefeed cancel feature and its related [cluster setting]({% link v24.2/cluster-settings.md %}) `kv.rangefeed.range_stuck_threshold`, because it was only available in [non-mux rangefeeds]({% link v24.2/advanced-changefeed-configuration.md %}#mux-rangefeeds). Previously, the stuck rangefeed cancel feature was introduced to restart single rangefeeds automatically if they had not received KV updates for some time. [#125663][#125663] -- `storage.value_blocks.enabled`: The `storage.value_blocks.enabled` [cluster setting]({% link v24.2/cluster-settings.md %}) has been removed; value blocks are always enabled. [#122164][#122164] +- `kv.rangefeed.range_stuck_threshold`: Removed the stuck rangefeed cancel feature and its related [cluster setting]({% link v24.2/cluster-settings.md %}) `kv.rangefeed.range_stuck_threshold`, because it was only available in [non-mux rangefeeds]({% link v24.2/advanced-changefeed-configuration.md %}#mux-rangefeeds). Previously, the stuck rangefeed cancel feature was introduced to restart single rangefeeds automatically if they had not received KV updates for some time. +- `storage.value_blocks.enabled`: The `storage.value_blocks.enabled` [cluster setting]({% link v24.2/cluster-settings.md %}) has been removed; value blocks are always enabled.
Settings with changed defaults
- `kv.dist_sender.circuit_breakers.mode` has had its default changed to `liveness range only = 1`. -- `sql.defaults.results_buffer.size` has had its default changed to `512 KiB`: The default value of the `sql.defaults.results_buffer.size` [cluster setting]({% link v24.2/cluster-settings.md %}) has been changed from 16KiB to 512KiB. This reduces the chance that clients using [`READ COMMITTED`]({% link v24.2/read-committed.md %}) transactions will encounter errors that cannot automatically be retried within CockroachDB. [#124633][#124633] -- `sql.metrics.max_mem_stmt_fingerprints` and `sql.metrics.max_mem_txn_fingerprints` have had their defaults changed to `7500`: The default values for the [cluster settings]({% link v24.2/cluster-settings.md %}) `sql.metrics.max_mem_stmt_fingerprints` and `sql.metrics.max_mem_txn_fingerprints` have been changed from `100000` to `7500`, thus lowering the default limits for in-memory statement and transaction fingerprints. [#123430][#123430] -- `sql.stats.histogram_samples.count` has had its default changed to `0`: Histograms are no longer constructed using a default sample size of `10k`. Samples are now sized dynamically based on table size unless the sample count has been set in the table or [cluster settings]({% link v24.2/cluster-settings.md %}). [#125345][#125345] -- `sql.ttl.default_delete_rate_limit` has had its default changed to `100`: The storage parameter `ttl_delete_rate_limit`, which determines the rate limit for deleting expired rows, is now set to `100` by default. [#124354][#124354] +- `sql.defaults.results_buffer.size` has had its default changed to `512 KiB`: The default value of the `sql.defaults.results_buffer.size` [cluster setting]({% link v24.2/cluster-settings.md %}) has been changed from 16KiB to 512KiB. This reduces the chance that clients using [`READ COMMITTED`]({% link v24.2/read-committed.md %}) transactions will encounter errors that cannot automatically be retried within CockroachDB. +- `sql.metrics.max_mem_stmt_fingerprints` and `sql.metrics.max_mem_txn_fingerprints` have had their defaults changed to `7500`: The default values for the [cluster settings]({% link v24.2/cluster-settings.md %}) `sql.metrics.max_mem_stmt_fingerprints` and `sql.metrics.max_mem_txn_fingerprints` have been changed from `100000` to `7500`, thus lowering the default limits for in-memory statement and transaction fingerprints. +- `sql.stats.histogram_samples.count` has had its default changed to `0`: Histograms are no longer constructed using a default sample size of `10k`. Samples are now sized dynamically based on table size unless the sample count has been set in the table or [cluster settings]({% link v24.2/cluster-settings.md %}). +- `sql.ttl.default_delete_rate_limit` has had its default changed to `100`: The storage parameter `ttl_delete_rate_limit`, which determines the rate limit for deleting expired rows, is now set to `100` by default.
Settings with new options
-- `storage.sstable.compression_algorithm` has added the option `none = 3`: The compression option `none` was added to allow for the disabling of SSTable compression. This option is disabled by default, but can can be used with any of the three existing cluster settings that control SSTable compression: `storage.sstable.compression_algorithm`, `storage.sstable.compression_algorithm_backup_storage`, and `storage.sstable.compression_algorithm_backup_transport`. [#126508][#126508] +- `storage.sstable.compression_algorithm` has added the option `none = 3`: The compression option `none` was added to allow for the disabling of SSTable compression. This option is disabled by default, but can can be used with any of the three existing cluster settings that control SSTable compression: `storage.sstable.compression_algorithm`, `storage.sstable.compression_algorithm_backup_storage`, and `storage.sstable.compression_algorithm_backup_transport`.
Settings with new aliases
@@ -142,16 +142,3 @@ Docs | [Architecture Overview](https://www.cockroachlabs.com/doc Docs | [SQL Feature Support]({% link v24.2/sql-feature-support.md %}) | The page summarizes the standard SQL features CockroachDB supports as well as common extensions to the standard. Docs | [Change Data Capture Overview]({% link v24.2/change-data-capture-overview.md %}) | This page summarizes CockroachDB's data streaming capabilities. Change data capture (CDC) provides efficient, distributed, row-level changefeeds into a configurable sink for downstream processing such as reporting, caching, or full-text indexing. Docs | [Backup Architecture]({% link v24.2/backup-architecture.md %}) | This page describes the backup job workflow with a high-level overview, diagrams, and more details on each phase of the job. - -[#115166]: https://github.com/cockroachdb/cockroach/pull/115166 -[#113893]: https://github.com/cockroachdb/cockroach/pull/113893 -[#115166]: https://github.com/cockroachdb/cockroach/pull/115166 -[#122368]: https://github.com/cockroachdb/cockroach/pull/122368 -[#116664]: https://github.com/cockroachdb/cockroach/pull/116664 -[#120509]: https://github.com/cockroachdb/cockroach/pull/120509 -[#118781]: https://github.com/cockroachdb/cockroach/pull/118781 -[#117729]: https://github.com/cockroachdb/cockroach/pull/117729 -[#120255]: https://github.com/cockroachdb/cockroach/pull/120255 -[#123430]: https://github.com/cockroachdb/cockroach/pull/123430 -[#124633]: https://github.com/cockroachdb/cockroach/pull/124633 -[#124354]: https://github.com/cockroachdb/cockroach/pull/124354 diff --git a/src/current/_includes/releases/v24.2/v24.2.1.md b/src/current/_includes/releases/v24.2/v24.2.1.md index 50128f9847f..4888b25086b 100644 --- a/src/current/_includes/releases/v24.2/v24.2.1.md +++ b/src/current/_includes/releases/v24.2/v24.2.1.md @@ -11,56 +11,36 @@ Release Date: September 5, 2024 - String that can be parsed as a valid JSON array of issuer URLs list: `['example.com/adfs','https://accounts.google.com']`. - String that can be parsed as a valid JSON and deserialized into a map of issuer URLs to corresponding JWKS URIs. In this case, CockroachDB will override the JWKS URI present in the issuer's well-known endpoint: `'{ "issuer_jwks_map": { "https://accounts.google.com": "https://www.googleapis.com/oauth2/v3/certs", "example.com/adfs": "https://example.com/adfs/discovery/keys" } }'`. - When `issuer_jwks_map` is set, CockroachDB directly uses the JWKS URI to get the key set. In all other cases where [`server.jwt_authentication.jwks_auto_fetch.enabled`]({% link v24.2/sso-sql.md %}#cluster-settings) is set, CockroachDB attempts to automatically obtain the JWKS URI first from the issuer's well-known endpoint. [#128178][#128178] + When `issuer_jwks_map` is set, CockroachDB directly uses the JWKS URI to get the key set. In all other cases where [`server.jwt_authentication.jwks_auto_fetch.enabled`]({% link v24.2/sso-sql.md %}#cluster-settings) is set, CockroachDB attempts to automatically obtain the JWKS URI first from the issuer's well-known endpoint.

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

-- The new Kafka [changefeed sink]({% link v24.2/changefeed-sinks.md %}) is now enabled by default. To disable it, set the cluster setting [`changefeed.new_kafka_sink_enabled`]({% link v24.2/cluster-settings.md %}) to `false`. [#128700][#128700] -- The new Kafka sink and the Google Cloud Pub/Sub sink now display the topics that a changefeed will emit to. [#128332][#128332] +- The new Kafka [changefeed sink]({% link v24.2/changefeed-sinks.md %}) is now enabled by default. To disable it, set the cluster setting [`changefeed.new_kafka_sink_enabled`]({% link v24.2/cluster-settings.md %}) to `false`. +- The new Kafka sink and the Google Cloud Pub/Sub sink now display the topics that a changefeed will emit to.

Operational changes

-- The cluster setting [`storage.ingestion.value_blocks.enabled`]({% link v24.2/cluster-settings.md %}#setting-storage-ingestion-value-blocks-enabled) can be set to `false` if a pathological huge [range]({% link v24.2/architecture/glossary.md %}#range) happens to occur in a cluster, and incoming [snapshots]({% link v24.2/architecture/replication-layer.md %}#snapshots) of that range are causing [OOMs]({% link v24.2/cluster-setup-troubleshooting.md %}#out-of-memory-oom-crash). [#128098][#128098] +- The cluster setting [`storage.ingestion.value_blocks.enabled`]({% link v24.2/cluster-settings.md %}#setting-storage-ingestion-value-blocks-enabled) can be set to `false` if a pathological huge [range]({% link v24.2/architecture/glossary.md %}#range) happens to occur in a cluster, and incoming [snapshots]({% link v24.2/architecture/replication-layer.md %}#snapshots) of that range are causing [OOMs]({% link v24.2/cluster-setup-troubleshooting.md %}#out-of-memory-oom-crash). - Two new structured logging events report connection breakage during node shutdown. Previously, these logs existed but were unstructured. These logs appear in the [`OPS` logging channel]({% link v24.2/logging.md %}#ops). - The [`node_shutdown_connection_timeout`]({% link v24.2/eventlog.md %}#node_shutdown_connection_timeout) event is logged after the timeout defined by [`server.shutdown.connections.timeout`]({% link v24.2/cluster-settings.md %}#setting-server-shutdown-connection-wait) transpires, if there are still [open SQL connections]({% link v24.2/show-sessions.md %}). - - The [`node_shutdown_transaction_timeout`]({% link v24.2/eventlog.md %}#node_shutdown_transaction_timeout) event is logged after the timeout defined by [`server.shutdown.transactions.timeout`]({% link v24.2/cluster-settings.md %}#setting-server-shutdown-query-wait) transpires, if there are still open [transactions]({% link v24.2/transactions.md %}) on those SQL connections. [#128712][#128712] + - The [`node_shutdown_transaction_timeout`]({% link v24.2/eventlog.md %}#node_shutdown_transaction_timeout) event is logged after the timeout defined by [`server.shutdown.transactions.timeout`]({% link v24.2/cluster-settings.md %}#setting-server-shutdown-query-wait) transpires, if there are still open [transactions]({% link v24.2/transactions.md %}) on those SQL connections.

DB Console changes

-- Corrected the series names in the legend for the [`Admission Queueing Delay p99 – Background (Elastic) CPU` graph]({% link v24.2/ui-overload-dashboard.md %}#admission-queueing-delay-p99-background-elastic-cpu) on the [Overload dashboard]({% link v24.2/ui-overload-dashboard.md %}) by removing the `KV write ' prefix. [#128891][#128891] -- Hovering on graphs on [Metrics dashboards]({% link v24.2/ui-overview.md %}#metrics) now highlights the line under the mouse pointer and displays the corresponding value near the mouse pointer. [#128412][#128412] +- Corrected the series names in the legend for the [`Admission Queueing Delay p99 – Background (Elastic) CPU` graph]({% link v24.2/ui-overload-dashboard.md %}#admission-queueing-delay-p99-background-elastic-cpu) on the [Overload dashboard]({% link v24.2/ui-overload-dashboard.md %}) by removing the `KV write ' prefix. +- Hovering on graphs on [Metrics dashboards]({% link v24.2/ui-overview.md %}#metrics) now highlights the line under the mouse pointer and displays the corresponding value near the mouse pointer.

Bug fixes

-- Fixed a memory leak that could occur when a connection string specifies a [virtual cluster]({% link v24.2/cluster-virtualization-overview.md %}) that does not exist. [#128108][#128108] -- Fixed a bug where [`CREATE INDEX IF NOT EXISTS`]({% link v24.2/create-index.md %}) would not correctly short-circuit if the given index already existed. [#128240][#128240] -- Fixed a bug where syntax validation incorrectly prevented use of the `DESCENDING` clause for non-terminal columns of an [inverted index]({% link v24.2/inverted-indexes.md %}). Now only the last column of an inverted index is prevented from using `DESCENDING`. [#128240][#128240] -- Fixed a bug where an [index]({% link v24.2/indexes.md %}) could store a column in the primary index if that column had a mixed-case name. [#128240][#128240] -- Setting or dropping a default value on a [computed column]({% link v24.2/computed-columns.md %}) is now disallowed -- even for null defaults. Previously, setting or dropping a default value on a computed column was a no-op; now it is an error. [#128465][#128465] -- Fixed a bug where a hash-sharded constraint could not be created if it referred to a column that had a backslash in its name. [#128522][#128522] +- Fixed a memory leak that could occur when a connection string specifies a [virtual cluster]({% link v24.2/cluster-virtualization-overview.md %}) that does not exist. +- Fixed a bug where [`CREATE INDEX IF NOT EXISTS`]({% link v24.2/create-index.md %}) would not correctly short-circuit if the given index already existed. +- Fixed a bug where syntax validation incorrectly prevented use of the `DESCENDING` clause for non-terminal columns of an [inverted index]({% link v24.2/inverted-indexes.md %}). Now only the last column of an inverted index is prevented from using `DESCENDING`. +- Fixed a bug where an [index]({% link v24.2/indexes.md %}) could store a column in the primary index if that column had a mixed-case name. +- Setting or dropping a default value on a [computed column]({% link v24.2/computed-columns.md %}) is now disallowed -- even for null defaults. Previously, setting or dropping a default value on a computed column was a no-op; now it is an error. +- Fixed a bug where a hash-sharded constraint could not be created if it referred to a column that had a backslash in its name. - Fixed a bug introduced in v23.1 where the output of [`EXPLAIN (OPT, REDACT)`]({% link v24.2/explain.md %}) for various `CREATE` statements was not redacted. This bug affects the following statements: - `EXPLAIN (OPT, REDACT) CREATE TABLE` - `EXPLAIN (OPT, REDACT) CREATE VIEW` - - `EXPLAIN (OPT, REDACT) CREATE FUNCTION` [#128490][#128490] -- Fixed a bug where legacy and [declarative schema changes]({% link v24.2/online-schema-changes.md %}) could be executed concurrently, which could lead to failing or hung schema change jobs. [#128825][#128825] -- Fixed a bug that caused errors like `ERROR: column 'crdb_internal_idx_expr' does not exist` when accessing a table with an [expression index]({% link v24.2/expression-indexes.md %}) where the expression evaluates to an [ENUM type]({% link v24.2/enum.md %}), such as `CREATE INDEX ON t ((col::an_enum))`. [#129094][#129094] - -[#128098]: https://github.com/cockroachdb/cockroach/pull/128098 -[#128108]: https://github.com/cockroachdb/cockroach/pull/128108 -[#128178]: https://github.com/cockroachdb/cockroach/pull/128178 -[#128188]: https://github.com/cockroachdb/cockroach/pull/128188 -[#128202]: https://github.com/cockroachdb/cockroach/pull/128202 -[#128240]: https://github.com/cockroachdb/cockroach/pull/128240 -[#128332]: https://github.com/cockroachdb/cockroach/pull/128332 -[#128349]: https://github.com/cockroachdb/cockroach/pull/128349 -[#128412]: https://github.com/cockroachdb/cockroach/pull/128412 -[#128465]: https://github.com/cockroachdb/cockroach/pull/128465 -[#128490]: https://github.com/cockroachdb/cockroach/pull/128490 -[#128522]: https://github.com/cockroachdb/cockroach/pull/128522 -[#128622]: https://github.com/cockroachdb/cockroach/pull/128622 -[#128700]: https://github.com/cockroachdb/cockroach/pull/128700 -[#128712]: https://github.com/cockroachdb/cockroach/pull/128712 -[#128825]: https://github.com/cockroachdb/cockroach/pull/128825 -[#128837]: https://github.com/cockroachdb/cockroach/pull/128837 -[#128891]: https://github.com/cockroachdb/cockroach/pull/128891 -[#129094]: https://github.com/cockroachdb/cockroach/pull/129094 + - `EXPLAIN (OPT, REDACT) CREATE FUNCTION` +- Fixed a bug where legacy and [declarative schema changes]({% link v24.2/online-schema-changes.md %}) could be executed concurrently, which could lead to failing or hung schema change jobs. +- Fixed a bug that caused errors like `ERROR: column 'crdb_internal_idx_expr' does not exist` when accessing a table with an [expression index]({% link v24.2/expression-indexes.md %}) where the expression evaluates to an [ENUM type]({% link v24.2/enum.md %}), such as `CREATE INDEX ON t ((col::an_enum))`. diff --git a/src/current/_includes/releases/v24.2/v24.2.10.md b/src/current/_includes/releases/v24.2/v24.2.10.md index 808bc82fd58..189ed666b20 100644 --- a/src/current/_includes/releases/v24.2/v24.2.10.md +++ b/src/current/_includes/releases/v24.2/v24.2.10.md @@ -6,52 +6,31 @@ Release Date: February 6, 2025

General changes

-- The protected timestamp (PTS) records of running changefeeds are now updated when the set of targets changes, such as when system tables are added to the protected tables list. [#138653][#138653] +- The protected timestamp (PTS) records of running changefeeds are now updated when the set of targets changes, such as when system tables are added to the protected tables list.

SQL language changes

-- The `legacy_varchar_typing` session setting has been added, which reverts the changes of [#133037][#133037] that cause the change in typing behavior described in [#137837][#137837]. Specifically, it makes type-checking and overload resolution ignore the newly added "unpreferred" overloads. This setting defaults to `on`. [#138002][#138002] -- Since v23.2 table statistics histograms had been collected for non-indexed JSON columns. Histograms are no longer collected for these columns if the `sql.stats.non_indexed_json_histograms.enabled` cluster setting is set to `false`. This reduces memory usage during table statistics collection, for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`. [#140267][#140267] -- Added support for a new index hint, `AVOID_FULL_SCAN`, which will prevent the optimizer from planning a full scan for the specified table if any other plan is possible. The hint can be used in the same way as other existing index hints. For example, `SELECT * FROM table_name@{AVOID_FULL_SCAN};`. This hint is similar to `NO_FULL_SCAN`, but will not error if a full scan cannot be avoided. Note that normally a full scan of a partial index would not be considered a "full scan" for the purposes of the `NO_FULL_SCAN` and `AVOID_FULL_SCAN` hints, but if the user has explicitly forced the partial index via `FORCE_INDEX=index_name`, CockroachDB does consider it a full scan. [#140271][#140271] -- Added the `optimizer_prefer_bounded_cardinality` session setting, which instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. This may help the optimizer produce better query plans in some cases. This setting is disabled by default. [#140271][#140271] -- Added the `optimizer_min_row_count` session setting, which sets a lower bound on row count estimates for relational expressions during query planning. A value of `0`, which is the default, indicates no lower bound. Note that if this is set to a value greater than `0`, a row count of zero can still be estimated for expressions with a cardinality of zero, e.g., for a contradictory filter. Setting this to a value higher than `0`, such as `1`, may yield better query plans in some cases, such as when statistics are frequently stale and inaccurate. [#140271][#140271] +- The `legacy_varchar_typing` session setting has been added, which reverts the changes of that cause the change in typing behavior described in. Specifically, it makes type-checking and overload resolution ignore the newly added "unpreferred" overloads. This setting defaults to `on`. +- Since v23.2 table statistics histograms had been collected for non-indexed JSON columns. Histograms are no longer collected for these columns if the `sql.stats.non_indexed_json_histograms.enabled` cluster setting is set to `false`. This reduces memory usage during table statistics collection, for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`. +- Added support for a new index hint, `AVOID_FULL_SCAN`, which will prevent the optimizer from planning a full scan for the specified table if any other plan is possible. The hint can be used in the same way as other existing index hints. For example, `SELECT * FROM table_name@{AVOID_FULL_SCAN};`. This hint is similar to `NO_FULL_SCAN`, but will not error if a full scan cannot be avoided. Note that normally a full scan of a partial index would not be considered a "full scan" for the purposes of the `NO_FULL_SCAN` and `AVOID_FULL_SCAN` hints, but if the user has explicitly forced the partial index via `FORCE_INDEX=index_name`, CockroachDB does consider it a full scan. +- Added the `optimizer_prefer_bounded_cardinality` session setting, which instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. This may help the optimizer produce better query plans in some cases. This setting is disabled by default. +- Added the `optimizer_min_row_count` session setting, which sets a lower bound on row count estimates for relational expressions during query planning. A value of `0`, which is the default, indicates no lower bound. Note that if this is set to a value greater than `0`, a row count of zero can still be estimated for expressions with a cardinality of zero, e.g., for a contradictory filter. Setting this to a value higher than `0`, such as `1`, may yield better query plans in some cases, such as when statistics are frequently stale and inaccurate.

Operational changes

-- Schema object identifiers (e.g., database names, schema names, table names, function names, and type names) are no longer redacted when logging statements in the `EXEC` or `SQL_SCHEMA` log channels. If redaction of these names is required, then the new cluster setting `sql.log.redact_names.enabled` can be set to `true`. The default value of the setting is `false`. [#138656][#138656] -- Added a metric, `sql.schema_changer.object_count`, that keeps track of the count of schema objects in the cluster. [#138838][#138838] -- The `changefeed.max_behind_nanos` metric now supports scoping with metrics labels. [#139233][#139233] +- Schema object identifiers (e.g., database names, schema names, table names, function names, and type names) are no longer redacted when logging statements in the `EXEC` or `SQL_SCHEMA` log channels. If redaction of these names is required, then the new cluster setting `sql.log.redact_names.enabled` can be set to `true`. The default value of the setting is `false`. +- Added a metric, `sql.schema_changer.object_count`, that keeps track of the count of schema objects in the cluster. +- The `changefeed.max_behind_nanos` metric now supports scoping with metrics labels.

Bug fixes

-- `CLOSE CURSOR` statements are now allowed in read-only transactions, similar to PostgreSQL. This bug had been present since at least v23.1. [#137791][#137791] -- `ALTER BACKUP SCHEDULE` no longer fails on schedules whose collection URI contains a space. [#138081][#138081] -- Previously, `SHOW CREATE TABLE` was showing incorrect data with regard to inverted indexes. It now shows the correct data in a format that can be repeatedly entered back into CockroachDB to recreate the same table. [#138084][#138084] -- Fixed a timing issue between `ALTER VIEW .. RENAME` and `DROP VIEW` that caused repeated failures in the `DROP VIEW` job. [#137888][#137888] -- Fixed a bug where querying the `pg_catalog.pg_constraint` table while the schema changer was dropping a constraint could result in a query error. [#138284][#138284] -- Queries that perform a cast from the string representation of an array containing `GEOMETRY` or `GEOGRAPHY` types to a SQL `ARRAY` type will now succeed. [#138694][#138694] -- Fixed a bug where secondary tenants could fatal when issuing HTTP requests during tenant startup. [#138754][#138754] -- Fixed a bug where CockroachDB could encounter an internal error `comparison of two different versions of enum` in some cases when a user-defined type was modified within a transaction and subsequent statements read the column of that user-defined type. The bug was introduced in v24.2. [#138053][#138053] -- When the session variable `allow_role_memberships_to_change_during_transaction` is set, it is now possible to create and drop users quickly even when there are contending transactions on the `system.users` and `system.role_options` system tables. [#139031][#139031] -- Fixed a bug where the error `batch timestamp ... must be after replica GC threshold` could occur during a schema change backfill operation, and cause the schema change job to retry infinitely. Now this error is treated as permanent, and will cause the job to enter the `failed` state. [#139249][#139249] - -[#137791]: https://github.com/cockroachdb/cockroach/pull/137791 -[#137888]: https://github.com/cockroachdb/cockroach/pull/137888 -[#138002]: https://github.com/cockroachdb/cockroach/pull/138002 -[#138053]: https://github.com/cockroachdb/cockroach/pull/138053 -[#138081]: https://github.com/cockroachdb/cockroach/pull/138081 -[#138084]: https://github.com/cockroachdb/cockroach/pull/138084 -[#138284]: https://github.com/cockroachdb/cockroach/pull/138284 -[#138653]: https://github.com/cockroachdb/cockroach/pull/138653 -[#138656]: https://github.com/cockroachdb/cockroach/pull/138656 -[#138694]: https://github.com/cockroachdb/cockroach/pull/138694 -[#138754]: https://github.com/cockroachdb/cockroach/pull/138754 -[#138838]: https://github.com/cockroachdb/cockroach/pull/138838 -[#138983]: https://github.com/cockroachdb/cockroach/pull/138983 -[#139031]: https://github.com/cockroachdb/cockroach/pull/139031 -[#139233]: https://github.com/cockroachdb/cockroach/pull/139233 -[#139249]: https://github.com/cockroachdb/cockroach/pull/139249 -[#140267]: https://github.com/cockroachdb/cockroach/pull/140267 -[#140271]: https://github.com/cockroachdb/cockroach/pull/140271 -[#133037]: https://github.com/cockroachdb/cockroach/pull/133037 -[#137837]: https://github.com/cockroachdb/cockroach/pull/137837 +- `CLOSE CURSOR` statements are now allowed in read-only transactions, similar to PostgreSQL. This bug had been present since at least v23.1. +- `ALTER BACKUP SCHEDULE` no longer fails on schedules whose collection URI contains a space. +- Previously, `SHOW CREATE TABLE` was showing incorrect data with regard to inverted indexes. It now shows the correct data in a format that can be repeatedly entered back into CockroachDB to recreate the same table. +- Fixed a timing issue between `ALTER VIEW .. RENAME` and `DROP VIEW` that caused repeated failures in the `DROP VIEW` job. +- Fixed a bug where querying the `pg_catalog.pg_constraint` table while the schema changer was dropping a constraint could result in a query error. +- Queries that perform a cast from the string representation of an array containing `GEOMETRY` or `GEOGRAPHY` types to a SQL `ARRAY` type will now succeed. +- Fixed a bug where secondary tenants could fatal when issuing HTTP requests during tenant startup. +- Fixed a bug where CockroachDB could encounter an internal error `comparison of two different versions of enum` in some cases when a user-defined type was modified within a transaction and subsequent statements read the column of that user-defined type. The bug was introduced in v24.2. +- When the session variable `allow_role_memberships_to_change_during_transaction` is set, it is now possible to create and drop users quickly even when there are contending transactions on the `system.users` and `system.role_options` system tables. +- Fixed a bug where the error `batch timestamp ... must be after replica GC threshold` could occur during a schema change backfill operation, and cause the schema change job to retry infinitely. Now this error is treated as permanent, and will cause the job to enter the `failed` state. diff --git a/src/current/_includes/releases/v24.2/v24.2.2.md b/src/current/_includes/releases/v24.2/v24.2.2.md index 27bec07c3a6..4cf9e20fc57 100644 --- a/src/current/_includes/releases/v24.2/v24.2.2.md +++ b/src/current/_includes/releases/v24.2/v24.2.2.md @@ -6,7 +6,7 @@ Release Date: September 23, 2024

Bug fixes

-- Fixed a bug that could result in the inability to garbage collect an [MVCC]({% link v24.2/architecture/storage-layer.md %}#mvcc) range tombstone within a [global table]({% link v24.2/table-localities.md %}#global-tables). [#130946][#130946] +- Fixed a bug that could result in the inability to garbage collect an [MVCC]({% link v24.2/architecture/storage-layer.md %}#mvcc) range tombstone within a [global table]({% link v24.2/table-localities.md %}#global-tables).
@@ -15,5 +15,3 @@ Release Date: September 23, 2024 This release includes 3 merged PRs by 2 authors.
- -[#130946]: https://github.com/cockroachdb/cockroach/pull/130946 \ No newline at end of file diff --git a/src/current/_includes/releases/v24.2/v24.2.3.md b/src/current/_includes/releases/v24.2/v24.2.3.md index 391b4957018..a69f00703db 100644 --- a/src/current/_includes/releases/v24.2/v24.2.3.md +++ b/src/current/_includes/releases/v24.2/v24.2.3.md @@ -6,46 +6,46 @@ Release Date: September 25, 2024

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

-- Added a `changefeed.protect_timestamp.lag` metric, which controls how much the changefeed [protected timestamp (PTS)]({% link v24.2/protect-changefeed-data.md %}) should lag behind the [high-water mark]({% link v24.2/how-does-an-enterprise-changefeed-work.md %}). A changefeed now only updates its PTS if `changefeed.protect_timestamp.lag` has passed between the last PTS and the changefeed high-water mark. [#129580][#129580] +- Added a `changefeed.protect_timestamp.lag` metric, which controls how much the changefeed [protected timestamp (PTS)]({% link v24.2/protect-changefeed-data.md %}) should lag behind the [high-water mark]({% link v24.2/how-does-an-enterprise-changefeed-work.md %}). A changefeed now only updates its PTS if `changefeed.protect_timestamp.lag` has passed between the last PTS and the changefeed high-water mark. - Added two network metrics, `changefeed.network.bytes_in` and `changefeed.network.bytes_out`. These metrics track the number of bytes sent by individual changefeeds to the following sinks: - [Kafka sinks]({% link v24.2/changefeed-sinks.md %}#kafka). If [child metrics]({% link v24.2/child-metrics.md %}) are enabled, the metric will have a `kafka` label. - [Webhook sinks]({% link v24.2/changefeed-sinks.md %}#webhook-sink). If [child metrics]({% link v24.2/child-metrics.md %}) are enabled, the metric will have a `webhook` label. - [Pub/Sub sinks]({% link v24.2/changefeed-sinks.md %}#google-cloud-pub-sub). If [child metrics]({% link v24.2/child-metrics.md %}) are enabled, the metric will have a `pubsub` label. - - [SQL sink]({% link v24.2/changefeed-for.md %}). If [child metrics]({% link v24.2/child-metrics.md %}) are enabled, the metric will have a `sql` label. [#130582][#130582] + - [SQL sink]({% link v24.2/changefeed-for.md %}). If [child metrics]({% link v24.2/child-metrics.md %}) are enabled, the metric will have a `sql` label.

Operational changes

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

DB Console changes

-- Users with the `VIEWACTIVITY` [system privilege]({% link v24.2/security-reference/authorization.md %}#supported-privileges) can now download [statement bundles]({% link v24.2/ui-statements-page.md %}#diagnostics) from the DB Console. [#129504][#129504] -- Users with the `VIEWACTIVITY` [system privilege]({% link v24.2/security-reference/authorization.md %}#supported-privileges) can now request, view, and cancel [statement bundles]({% link v24.2/ui-statements-page.md %}#diagnostics) from the DB Console. [#129809][#129809] -- The DB Console now displays a notification to alert customers without an Enterprise license to upcoming license changes. [#130511][#130511] +- Users with the `VIEWACTIVITY` [system privilege]({% link v24.2/security-reference/authorization.md %}#supported-privileges) can now download [statement bundles]({% link v24.2/ui-statements-page.md %}#diagnostics) from the DB Console. +- Users with the `VIEWACTIVITY` [system privilege]({% link v24.2/security-reference/authorization.md %}#supported-privileges) can now request, view, and cancel [statement bundles]({% link v24.2/ui-statements-page.md %}#diagnostics) from the DB Console. +- The DB Console now displays a notification to alert customers without an Enterprise license to upcoming license changes.

Bug fixes

-- Fixed a bug where `NaN` or `Inf` could not be used as the default value for a parameter in [`CREATE FUNCTION`]({% link v24.2/create-function.md %}) statements. [#129087][#129087] -- Fix a bug in which [`SELECT ... FOR UPDATE`]({% link v24.2/select-for-update.md %}) or [`SELECT ... FOR SHARE`]({% link v24.2/select-for-update.md %}) queries using `SKIP LOCKED` and a `LIMIT` and/or an `OFFSET` could return incorrect results under [`READ COMMITTED`]({% link v24.2/read-committed.md %}) isolation. This bug was present when support for `SKIP LOCKED` under `READ COMMITTED` isolation was introduced in v24.1.0. [#128102][#128102] -- Fixed a bug in which some [`SELECT ... FOR UPDATE`]({% link v24.2/select-for-update.md %}) or [`SELECT ... FOR SHARE`]({% link v24.2/select-for-update.md %}) queries using `SKIP LOCKED` could still block on locked rows when using [`optimizer_use_lock_op_for_serializable`]({% link v24.2/session-variables.md %}#optimizer-use-lock-op-for-serializable) under [`SERIALIZABLE`]({% link v24.2/demo-serializable.md %}) isolation. This bug was present when `optimizer_use_lock_op_for_serializable` was introduced in v23.2.0. [#128102][#128102] -- Fixed a bug in which [`SHOW CLUSTER SETTING FOR VIRTUAL CLUSTER`]({% link v24.2/show-cluster-setting.md %}) would erroneously return `NULL` for some settings. [#128784][#128784] -- [Function]({% link v24.2/user-defined-functions.md %}) input parameters can no longer have the `VOID` type. [#129275][#129275] -- Fixed a bug in [WAL failover]({% link v24.2/cockroach-start.md %}#enable-wal-failover) that could prevent a node from starting if it crashed during a failover. [#129364][#129364] -- Fixed a bug where starting up nodes could fail with `could not insert session ...: unexpected value` if an ambiguous result error was hit while inserting into the `sqlliveness` table. [#129235][#129235] -- Internally issued queries that are not initiated within a SQL session no longer respect a statement timeout. This includes: [background jobs]({% link v24.2/show-jobs.md %}), queries issued by the DB Console that perform introspection, and the {{ site.data.products.cloud }} [SQL shell]({% link cockroachcloud/sql-shell.md %}). [#129513][#129513] -- Fixed a rare bug in [`SHOW CLUSTER SETTING`]({% link v24.2/show-cluster-setting.md %}) that could cause it to fail with an error like `timed out: value differs between local setting and KV`. [#129745][#129745] -- Fixed a bug where the [`schema_locked` table parameter]({% link v24.2/with-storage-parameter.md %}#table-parameters) did not prevent a table from being referenced by a [foreign key]({% link v24.2/foreign-key.md %}). [#129755][#129755] -- Fixed a bug that could cause [`RESTORE`]({% link v24.2/restore.md %}) to hang after encountering transient errors from the [storage layer]({% link v24.2/architecture/storage-layer.md %}). [#129895][#129895] -- Fixed a bug where the [`require_explicit_primary_keys`]({% link v24.2/session-variables.md %}#require-explicit-primary-keys) session variable would overly aggressively prevent all [`CREATE TABLE`]({% link v24.2/create-table.md %}) statements from working. [#129908][#129908] -- Fixed a slow-building memory leak that could occur when using [Kerberos authentication]({% link v24.2/gssapi_authentication.md %}). [#130319][#130319] -- Fixed a bug that could result in the inability to garbage collect an [MVCC]({% link v24.2/architecture/storage-layer.md %}#mvcc) range tombstone within a [global table]({% link v24.2/table-localities.md %}#global-tables). [#130951][#130951] -- Fixed a potential memory leak in changefeeds using a [cloud storage sink]({% link v24.2/changefeed-sinks.md %}#cloud-storage-sink). The memory leak could occur if both [`changefeed.fast_gzip.enabled`]({% link v24.2/cluster-virtualization-setting-scopes.md %}) and `changefeed.cloudstorage.async_flush.enabled` are true and the changefeed received an error while attempting to write to the cloud storage sink. [#130625][#130625] -- Fixed a bug that prevented buffered file sinks from being included when iterating over all file sinks. This led to problems such as the `debug zip` command not being able to fetch logs for a cluster where buffering was enabled. [#130158][#130158] +- Fixed a bug where `NaN` or `Inf` could not be used as the default value for a parameter in [`CREATE FUNCTION`]({% link v24.2/create-function.md %}) statements. +- Fix a bug in which [`SELECT ... FOR UPDATE`]({% link v24.2/select-for-update.md %}) or [`SELECT ... FOR SHARE`]({% link v24.2/select-for-update.md %}) queries using `SKIP LOCKED` and a `LIMIT` and/or an `OFFSET` could return incorrect results under [`READ COMMITTED`]({% link v24.2/read-committed.md %}) isolation. This bug was present when support for `SKIP LOCKED` under `READ COMMITTED` isolation was introduced in v24.1.0. +- Fixed a bug in which some [`SELECT ... FOR UPDATE`]({% link v24.2/select-for-update.md %}) or [`SELECT ... FOR SHARE`]({% link v24.2/select-for-update.md %}) queries using `SKIP LOCKED` could still block on locked rows when using [`optimizer_use_lock_op_for_serializable`]({% link v24.2/session-variables.md %}#optimizer-use-lock-op-for-serializable) under [`SERIALIZABLE`]({% link v24.2/demo-serializable.md %}) isolation. This bug was present when `optimizer_use_lock_op_for_serializable` was introduced in v23.2.0. +- Fixed a bug in which [`SHOW CLUSTER SETTING FOR VIRTUAL CLUSTER`]({% link v24.2/show-cluster-setting.md %}) would erroneously return `NULL` for some settings. +- [Function]({% link v24.2/user-defined-functions.md %}) input parameters can no longer have the `VOID` type. +- Fixed a bug in [WAL failover]({% link v24.2/cockroach-start.md %}#enable-wal-failover) that could prevent a node from starting if it crashed during a failover. +- Fixed a bug where starting up nodes could fail with `could not insert session ...: unexpected value` if an ambiguous result error was hit while inserting into the `sqlliveness` table. +- Internally issued queries that are not initiated within a SQL session no longer respect a statement timeout. This includes: [background jobs]({% link v24.2/show-jobs.md %}), queries issued by the DB Console that perform introspection, and the {{ site.data.products.cloud }} [SQL shell]({% link cockroachcloud/sql-shell.md %}). +- Fixed a rare bug in [`SHOW CLUSTER SETTING`]({% link v24.2/show-cluster-setting.md %}) that could cause it to fail with an error like `timed out: value differs between local setting and KV`. +- Fixed a bug where the [`schema_locked` table parameter]({% link v24.2/with-storage-parameter.md %}#table-parameters) did not prevent a table from being referenced by a [foreign key]({% link v24.2/foreign-key.md %}). +- Fixed a bug that could cause [`RESTORE`]({% link v24.2/restore.md %}) to hang after encountering transient errors from the [storage layer]({% link v24.2/architecture/storage-layer.md %}). +- Fixed a bug where the [`require_explicit_primary_keys`]({% link v24.2/session-variables.md %}#require-explicit-primary-keys) session variable would overly aggressively prevent all [`CREATE TABLE`]({% link v24.2/create-table.md %}) statements from working. +- Fixed a slow-building memory leak that could occur when using [Kerberos authentication]({% link v24.2/gssapi_authentication.md %}). +- Fixed a bug that could result in the inability to garbage collect an [MVCC]({% link v24.2/architecture/storage-layer.md %}#mvcc) range tombstone within a [global table]({% link v24.2/table-localities.md %}#global-tables). +- Fixed a potential memory leak in changefeeds using a [cloud storage sink]({% link v24.2/changefeed-sinks.md %}#cloud-storage-sink). The memory leak could occur if both [`changefeed.fast_gzip.enabled`]({% link v24.2/cluster-virtualization-setting-scopes.md %}) and `changefeed.cloudstorage.async_flush.enabled` are true and the changefeed received an error while attempting to write to the cloud storage sink. +- Fixed a bug that prevented buffered file sinks from being included when iterating over all file sinks. This led to problems such as the `debug zip` command not being able to fetch logs for a cluster where buffering was enabled.
@@ -54,34 +54,3 @@ Release Date: September 25, 2024 This release includes 94 merged PRs by 38 authors.
- -[#128102]: https://github.com/cockroachdb/cockroach/pull/128102 -[#128784]: https://github.com/cockroachdb/cockroach/pull/128784 -[#128957]: https://github.com/cockroachdb/cockroach/pull/128957 -[#129071]: https://github.com/cockroachdb/cockroach/pull/129071 -[#129087]: https://github.com/cockroachdb/cockroach/pull/129087 -[#129235]: https://github.com/cockroachdb/cockroach/pull/129235 -[#129275]: https://github.com/cockroachdb/cockroach/pull/129275 -[#129364]: https://github.com/cockroachdb/cockroach/pull/129364 -[#129385]: https://github.com/cockroachdb/cockroach/pull/129385 -[#129391]: https://github.com/cockroachdb/cockroach/pull/129391 -[#129403]: https://github.com/cockroachdb/cockroach/pull/129403 -[#129456]: https://github.com/cockroachdb/cockroach/pull/129456 -[#129504]: https://github.com/cockroachdb/cockroach/pull/129504 -[#129513]: https://github.com/cockroachdb/cockroach/pull/129513 -[#129580]: https://github.com/cockroachdb/cockroach/pull/129580 -[#129745]: https://github.com/cockroachdb/cockroach/pull/129745 -[#129755]: https://github.com/cockroachdb/cockroach/pull/129755 -[#129809]: https://github.com/cockroachdb/cockroach/pull/129809 -[#129895]: https://github.com/cockroachdb/cockroach/pull/129895 -[#129908]: https://github.com/cockroachdb/cockroach/pull/129908 -[#130158]: https://github.com/cockroachdb/cockroach/pull/130158 -[#130319]: https://github.com/cockroachdb/cockroach/pull/130319 -[#130511]: https://github.com/cockroachdb/cockroach/pull/130511 -[#130582]: https://github.com/cockroachdb/cockroach/pull/130582 -[#130625]: https://github.com/cockroachdb/cockroach/pull/130625 -[#130951]: https://github.com/cockroachdb/cockroach/pull/130951 -[10b47e3aa]: https://github.com/cockroachdb/cockroach/commit/10b47e3aa -[939ef54a1]: https://github.com/cockroachdb/cockroach/commit/939ef54a1 -[97ff913c1]: https://github.com/cockroachdb/cockroach/commit/97ff913c1 -[d7307d220]: https://github.com/cockroachdb/cockroach/commit/d7307d220 diff --git a/src/current/_includes/releases/v24.2/v24.2.4.md b/src/current/_includes/releases/v24.2/v24.2.4.md index 7a2758a3daa..06d232e8113 100644 --- a/src/current/_includes/releases/v24.2/v24.2.4.md +++ b/src/current/_includes/releases/v24.2/v24.2.4.md @@ -6,90 +6,55 @@ Release Date: October 17, 2024

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

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

SQL language changes

-- The [session variable]({% link v24.2/set-vars.md %}) `enforce_home_region_follower_reads_enabled` is now deprecated, in favor of `enforce_home_region`. The deprecated variable will be removed in a future release. [#129587][#129587] +- The [session variable]({% link v24.2/set-vars.md %}) `enforce_home_region_follower_reads_enabled` is now deprecated, in favor of `enforce_home_region`. The deprecated variable will be removed in a future release.

Operational changes

-- Added the new [metric]({% link v24.2/metrics.md %}) `ranges.decommissioning` to show the number of ranges that have a replica on a [decommissioning node]({% link v24.2/node-shutdown.md %}?filters=decommission). [#130247][#130247] -- You can now configure the log format for the [`stderr` log sink]({% link v24.2/configure-logs.md %}#output-to-stderr) by setting the `stderr.format` field in the [YAML configuration]({% link v24.2/configure-logs.md %}#yaml-payload). [#131539][#131539] +- Added the new [metric]({% link v24.2/metrics.md %}) `ranges.decommissioning` to show the number of ranges that have a replica on a [decommissioning node]({% link v24.2/node-shutdown.md %}?filters=decommission). +- You can now configure the log format for the [`stderr` log sink]({% link v24.2/configure-logs.md %}#output-to-stderr) by setting the `stderr.format` field in the [YAML configuration]({% link v24.2/configure-logs.md %}#yaml-payload).

DB Console changes

-- Streamlined [metric chart]({% link v24.2/ui-overview.md %}#metrics) legends by removing the name of the chart from labels, where it was an identical prefix for all labels on the chart. [#129359][#129359] -- The [DB Console]({% link v24.2/ui-overview.md %}) now shows a notification if the cluster has no Enterprise license set. Refer to [upcoming license changes](https://www.cockroachlabs.com/enterprise-license-update/) for more information. [#130417][#130417] +- Streamlined [metric chart]({% link v24.2/ui-overview.md %}#metrics) legends by removing the name of the chart from labels, where it was an identical prefix for all labels on the chart. +- The [DB Console]({% link v24.2/ui-overview.md %}) now shows a notification if the cluster has no Enterprise license set. Refer to [upcoming license changes](https://www.cockroachlabs.com/enterprise-license-update/) for more information.

Bug fixes

-- Fixed a bug that could prevent [upgrade finalization]({% link v24.2/upgrade-cockroach-version.md %}) when attempting to resolve a large number of corrupt descriptors. [#130517][#130517] -- Fixed a potential memory leak in [changefeeds]({% link v24.2/change-data-capture-overview.md %}) using a [cloud storage sink]({% link v24.2/changefeed-sinks.md %}#cloud-storage-sink). The memory leak could occur if both [`changefeed.fast_gzip.enabled`]({% link v24.2/cluster-settings.md %}#setting-changefeed-fast-gzip-enabled) and `changefeed.cloudstorage.async_flush.enabled` were `true`, and the changefeed received an error while attempting to write to the cloud storage sink. [#130602][#130602] -- Fixed a bug where zone configuration changes issued by the [declarative schema changer]({% link v24.2/online-schema-changes.md %}) were not blocked if a table had `schema_locked` set. [#130705][#130705] -- Fixed a bug in which some [`SELECT FOR UPDATE`]({% link v24.2/select-for-update.md %}) or [`SELECT FOR SHARE`]({% link v24.2/select-for-update.md %}) queries using `NOWAIT` could still block on locked rows when using the `optimizer_use_lock_op_for_serializable` [session setting]({% link v24.2/session-variables.md %}) under [`SERIALIZABLE`]({% link v24.2/demo-serializable.md %}) isolation. This bug was introduced with [`optimizer_use_lock_op_for_serializable`]({% link v24.2/session-variables.md %}#optimizer-use-lock-op-for-serializable) in v23.2.0. [#130430][#130430] -- Fixed a bug that caused the [optimizer]({% link v24.2/cost-based-optimizer.md %}) to plan unnecessary post-query uniqueness checks during [`INSERT`]({% link v24.2/insert.md %}), [`UPSERT`]({% link v24.2/upsert.md %}), and [`UPDATE`]({% link v24.2/update.md %}) statements on tables with [partial]({% link v24.2/partial-indexes.md %}), [unique]({% link v24.2/create-index.md %}#unique-indexes) [hash-sharded indexes]({% link v24.2/hash-sharded-indexes.md %}). These unnecessary checks added overhead to execution of these statements, and caused the statements to error when executed under [`READ COMMITTED`]({% link v24.2/read-committed.md %}) isolation. [#130570][#130570] -- Fixed a bug that could result in the inability to garbage collect an [MVCC]({% link v24.2/architecture/storage-layer.md %}#mvcc) range tombstone within a [global table]({% link v24.2/global-tables.md %}). [#130940][#130940] -- Fixed a bug where a connection could be dropped if the client was attempting a [schema change]({% link v24.2/online-schema-changes.md %}) while the same schema objects were being dropped. [#130962][#130962] -- Fixed a bug introduced in v23.2 where the [`IS NOT NULL`]({% link v24.2/null-handling.md %}#nulls-and-simple-comparisons) clause would incorrectly allow tuples containing `NULL` elements, e.g. `(1, NULL)` or `(NULL, NULL)`. [#130947][#130947] -- Fixed a bug that could cause errors with the message `internal error: Non-nullable column ...` when executing statements under [`READ COMMITTED`]({% link v24.2/read-committed.md %}) isolation that involved tables with [`NOT NULL`]({% link v24.2/not-null.md %}) [virtual columns]({% link v24.2/computed-columns.md %}). [#131019][#131019] -- Fixed a bug where [AWS S3 and HTTP client configurations]({% link v24.2/use-cloud-storage.md %}) were not considered when implicit authentication was used. [#131173][#131173] +- Fixed a bug that could prevent [upgrade finalization]({% link v24.2/upgrade-cockroach-version.md %}) when attempting to resolve a large number of corrupt descriptors. +- Fixed a potential memory leak in [changefeeds]({% link v24.2/change-data-capture-overview.md %}) using a [cloud storage sink]({% link v24.2/changefeed-sinks.md %}#cloud-storage-sink). The memory leak could occur if both [`changefeed.fast_gzip.enabled`]({% link v24.2/cluster-settings.md %}#setting-changefeed-fast-gzip-enabled) and `changefeed.cloudstorage.async_flush.enabled` were `true`, and the changefeed received an error while attempting to write to the cloud storage sink. +- Fixed a bug where zone configuration changes issued by the [declarative schema changer]({% link v24.2/online-schema-changes.md %}) were not blocked if a table had `schema_locked` set. +- Fixed a bug in which some [`SELECT FOR UPDATE`]({% link v24.2/select-for-update.md %}) or [`SELECT FOR SHARE`]({% link v24.2/select-for-update.md %}) queries using `NOWAIT` could still block on locked rows when using the `optimizer_use_lock_op_for_serializable` [session setting]({% link v24.2/session-variables.md %}) under [`SERIALIZABLE`]({% link v24.2/demo-serializable.md %}) isolation. This bug was introduced with [`optimizer_use_lock_op_for_serializable`]({% link v24.2/session-variables.md %}#optimizer-use-lock-op-for-serializable) in v23.2.0. +- Fixed a bug that caused the [optimizer]({% link v24.2/cost-based-optimizer.md %}) to plan unnecessary post-query uniqueness checks during [`INSERT`]({% link v24.2/insert.md %}), [`UPSERT`]({% link v24.2/upsert.md %}), and [`UPDATE`]({% link v24.2/update.md %}) statements on tables with [partial]({% link v24.2/partial-indexes.md %}), [unique]({% link v24.2/create-index.md %}#unique-indexes) [hash-sharded indexes]({% link v24.2/hash-sharded-indexes.md %}). These unnecessary checks added overhead to execution of these statements, and caused the statements to error when executed under [`READ COMMITTED`]({% link v24.2/read-committed.md %}) isolation. +- Fixed a bug that could result in the inability to garbage collect an [MVCC]({% link v24.2/architecture/storage-layer.md %}#mvcc) range tombstone within a [global table]({% link v24.2/global-tables.md %}). +- Fixed a bug where a connection could be dropped if the client was attempting a [schema change]({% link v24.2/online-schema-changes.md %}) while the same schema objects were being dropped. +- Fixed a bug introduced in v23.2 where the [`IS NOT NULL`]({% link v24.2/null-handling.md %}#nulls-and-simple-comparisons) clause would incorrectly allow tuples containing `NULL` elements, e.g. `(1, NULL)` or `(NULL, NULL)`. +- Fixed a bug that could cause errors with the message `internal error: Non-nullable column ...` when executing statements under [`READ COMMITTED`]({% link v24.2/read-committed.md %}) isolation that involved tables with [`NOT NULL`]({% link v24.2/not-null.md %}) [virtual columns]({% link v24.2/computed-columns.md %}). +- Fixed a bug where [AWS S3 and HTTP client configurations]({% link v24.2/use-cloud-storage.md %}) were not considered when implicit authentication was used. - Fixed a bug introduced in v23.1 that can cause incorrect query results under the following conditions: 1. The query contains a correlated subquery. 1. The correlated subquery has a `GroupBy` or `DistinctOn` operator with an outer-column reference in its input. 1. The correlated subquery is in the input of a `SELECT` or `JOIN` clause that has a filter that sets the outer-column reference equal to an inner column that is in the input of the grouping operator. 1. The set of grouping columns does not include the replacement column explicitly. - [#130990][#130990] -- Fixed a bug where jobs created in a session with a timezone offset configured could fail to start or could report an incorrect creation time in the output of [`SHOW JOBS`]({% link v24.2/show-jobs.md %}) and in the [DB Console]({% link v24.2/ui-overview.md %}). [#131407][#131407] -- Fixed a bug that could prevent a [changefeed]({% link v24.2/change-data-capture-overview.md %}) from resuming after a prolonged [paused state]({% link v24.2/create-and-configure-changefeeds.md %}#pause). [#130921][#130921] -- Fixed a bug where backup schedules could advance a protected timestamp too early, which caused incremental backups to fail. [#131391][#131391] + +- Fixed a bug where jobs created in a session with a timezone offset configured could fail to start or could report an incorrect creation time in the output of [`SHOW JOBS`]({% link v24.2/show-jobs.md %}) and in the [DB Console]({% link v24.2/ui-overview.md %}). +- Fixed a bug that could prevent a [changefeed]({% link v24.2/change-data-capture-overview.md %}) from resuming after a prolonged [paused state]({% link v24.2/create-and-configure-changefeeds.md %}#pause). +- Fixed a bug where backup schedules could advance a protected timestamp too early, which caused incremental backups to fail.

Performance improvements

-- The [query optimizer]({% link v24.2/cost-based-optimizer.md %}) now plans limited [partial index]({% link v24.2/partial-indexes.md %}) scans in more cases when the new [session variable]({% link v24.2/session-variables.md %}) `optimizer_push_limit_into_project_filtered_scan` is set to `on`. [#130335][#130335] -- Reduced the write-amplification impact of rebalances by splitting snapshot [SST files]({% link v24.2/architecture/storage-layer.md %}#pebble) before ingesting them into [Pebble]({% link v24.2/architecture/storage-layer.md %}#ssts). [#128997][#128997] - -[#128997]: https://github.com/cockroachdb/cockroach/pull/128997 -[#129359]: https://github.com/cockroachdb/cockroach/pull/129359 -[#129587]: https://github.com/cockroachdb/cockroach/pull/129587 -[#130247]: https://github.com/cockroachdb/cockroach/pull/130247 -[#130335]: https://github.com/cockroachdb/cockroach/pull/130335 -[#130374]: https://github.com/cockroachdb/cockroach/pull/130374 -[#130417]: https://github.com/cockroachdb/cockroach/pull/130417 -[#130430]: https://github.com/cockroachdb/cockroach/pull/130430 -[#130517]: https://github.com/cockroachdb/cockroach/pull/130517 -[#130570]: https://github.com/cockroachdb/cockroach/pull/130570 -[#130578]: https://github.com/cockroachdb/cockroach/pull/130578 -[#130602]: https://github.com/cockroachdb/cockroach/pull/130602 -[#130673]: https://github.com/cockroachdb/cockroach/pull/130673 -[#130676]: https://github.com/cockroachdb/cockroach/pull/130676 -[#130705]: https://github.com/cockroachdb/cockroach/pull/130705 -[#130921]: https://github.com/cockroachdb/cockroach/pull/130921 -[#130935]: https://github.com/cockroachdb/cockroach/pull/130935 -[#130940]: https://github.com/cockroachdb/cockroach/pull/130940 -[#130947]: https://github.com/cockroachdb/cockroach/pull/130947 -[#130962]: https://github.com/cockroachdb/cockroach/pull/130962 -[#130982]: https://github.com/cockroachdb/cockroach/pull/130982 -[#130990]: https://github.com/cockroachdb/cockroach/pull/130990 -[#131019]: https://github.com/cockroachdb/cockroach/pull/131019 -[#131173]: https://github.com/cockroachdb/cockroach/pull/131173 -[#131199]: https://github.com/cockroachdb/cockroach/pull/131199 -[#131210]: https://github.com/cockroachdb/cockroach/pull/131210 -[#131239]: https://github.com/cockroachdb/cockroach/pull/131239 -[#131311]: https://github.com/cockroachdb/cockroach/pull/131311 -[#131372]: https://github.com/cockroachdb/cockroach/pull/131372 -[#131391]: https://github.com/cockroachdb/cockroach/pull/131391 -[#131407]: https://github.com/cockroachdb/cockroach/pull/131407 -[#131419]: https://github.com/cockroachdb/cockroach/pull/131419 -[#131539]: https://github.com/cockroachdb/cockroach/pull/131539 -[#131619]: https://github.com/cockroachdb/cockroach/pull/131619 +- The [query optimizer]({% link v24.2/cost-based-optimizer.md %}) now plans limited [partial index]({% link v24.2/partial-indexes.md %}) scans in more cases when the new [session variable]({% link v24.2/session-variables.md %}) `optimizer_push_limit_into_project_filtered_scan` is set to `on`. +- Reduced the write-amplification impact of rebalances by splitting snapshot [SST files]({% link v24.2/architecture/storage-layer.md %}#pebble) before ingesting them into [Pebble]({% link v24.2/architecture/storage-layer.md %}#ssts). diff --git a/src/current/_includes/releases/v24.2/v24.2.5.md b/src/current/_includes/releases/v24.2/v24.2.5.md index 844401e23df..e41497369b5 100644 --- a/src/current/_includes/releases/v24.2/v24.2.5.md +++ b/src/current/_includes/releases/v24.2/v24.2.5.md @@ -6,44 +6,44 @@ Release Date: November 18, 2024

Security updates

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

General changes

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

DB Console changes

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

Bug fixes

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

Performance improvements

-- Performance has been improved during periodic polling of table history when `schema_locked` is not used. [#132191][#132191] - -[#130889]: https://github.com/cockroachdb/cockroach/pull/130889 -[#131649]: https://github.com/cockroachdb/cockroach/pull/131649 -[#131707]: https://github.com/cockroachdb/cockroach/pull/131707 -[#131931]: https://github.com/cockroachdb/cockroach/pull/131931 -[#131956]: https://github.com/cockroachdb/cockroach/pull/131956 -[#131960]: https://github.com/cockroachdb/cockroach/pull/131960 -[#131961]: https://github.com/cockroachdb/cockroach/pull/131961 -[#131970]: https://github.com/cockroachdb/cockroach/pull/131970 -[#131983]: https://github.com/cockroachdb/cockroach/pull/131983 -[#132011]: https://github.com/cockroachdb/cockroach/pull/132011 -[#132012]: https://github.com/cockroachdb/cockroach/pull/132012 -[#132013]: https://github.com/cockroachdb/cockroach/pull/132013 -[#132014]: https://github.com/cockroachdb/cockroach/pull/132014 -[#132015]: https://github.com/cockroachdb/cockroach/pull/132015 -[#132016]: https://github.com/cockroachdb/cockroach/pull/132016 -[#132054]: https://github.com/cockroachdb/cockroach/pull/132054 -[#132056]: https://github.com/cockroachdb/cockroach/pull/132056 -[#132093]: https://github.com/cockroachdb/cockroach/pull/132093 -[#132107]: https://github.com/cockroachdb/cockroach/pull/132107 -[#132120]: https://github.com/cockroachdb/cockroach/pull/132120 -[#132136]: https://github.com/cockroachdb/cockroach/pull/132136 -[#132191]: https://github.com/cockroachdb/cockroach/pull/132191 -[#132326]: https://github.com/cockroachdb/cockroach/pull/132326 -[#132353]: https://github.com/cockroachdb/cockroach/pull/132353 -[#132455]: https://github.com/cockroachdb/cockroach/pull/132455 -[#132464]: https://github.com/cockroachdb/cockroach/pull/132464 -[#132508]: https://github.com/cockroachdb/cockroach/pull/132508 -[#132680]: https://github.com/cockroachdb/cockroach/pull/132680 -[#132704]: https://github.com/cockroachdb/cockroach/pull/132704 -[#132739]: https://github.com/cockroachdb/cockroach/pull/132739 -[#132748]: https://github.com/cockroachdb/cockroach/pull/132748 -[#132773]: https://github.com/cockroachdb/cockroach/pull/132773 -[#132787]: https://github.com/cockroachdb/cockroach/pull/132787 -[#132801]: https://github.com/cockroachdb/cockroach/pull/132801 -[#132868]: https://github.com/cockroachdb/cockroach/pull/132868 -[#132876]: https://github.com/cockroachdb/cockroach/pull/132876 -[#132946]: https://github.com/cockroachdb/cockroach/pull/132946 -[#132959]: https://github.com/cockroachdb/cockroach/pull/132959 -[#133071]: https://github.com/cockroachdb/cockroach/pull/133071 -[#133197]: https://github.com/cockroachdb/cockroach/pull/133197 -[#133268]: https://github.com/cockroachdb/cockroach/pull/133268 -[#133368]: https://github.com/cockroachdb/cockroach/pull/133368 -[#133470]: https://github.com/cockroachdb/cockroach/pull/133470 -[#133534]: https://github.com/cockroachdb/cockroach/pull/133534 -[#133565]: https://github.com/cockroachdb/cockroach/pull/133565 +- Performance has been improved during periodic polling of table history when `schema_locked` is not used. diff --git a/src/current/_includes/releases/v24.2/v24.2.6.md b/src/current/_includes/releases/v24.2/v24.2.6.md index 3cedad5d3a0..7fb427fc6bd 100644 --- a/src/current/_includes/releases/v24.2/v24.2.6.md +++ b/src/current/_includes/releases/v24.2/v24.2.6.md @@ -6,73 +6,39 @@ Release Date: December 12, 2024

Security updates

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

General changes

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

Operational changes

-- The `goschedstats.always_use_short_sample_period.enabled` setting should be set to true for any production cluster, to prevent unnecessary queuing in admission control CPU queues. [#133584][#133584] -- Added a new cluster setting `ui.database_locality_metadata.enabled` that allows operators to disable loading extended database and table region information in the DB Console Database and Table pages. This information can cause significant CPU load on large clusters with many ranges. Versions of this page from v24.3 and later do not have this problem. If customers require this data, they can use the `SHOW RANGES FROM {DATABASE| TABLE}` query via SQL to compute on-demand. [#134095][#134095] -- Row-level TTL jobs now periodically log progress by showing the number of table spans that have been processed so far. [#135170][#135170] +- The `goschedstats.always_use_short_sample_period.enabled` setting should be set to true for any production cluster, to prevent unnecessary queuing in admission control CPU queues. +- Added a new cluster setting `ui.database_locality_metadata.enabled` that allows operators to disable loading extended database and table region information in the DB Console Database and Table pages. This information can cause significant CPU load on large clusters with many ranges. Versions of this page from v24.3 and later do not have this problem. If customers require this data, they can use the `SHOW RANGES FROM {DATABASE| TABLE}` query via SQL to compute on-demand. +- Row-level TTL jobs now periodically log progress by showing the number of table spans that have been processed so far.

Bug fixes

-- Fixed a bug that caused non-reusable query plans, e.g., plans for DDL and `SHOW ...` statements, to be cached and reused in future executions, possibly causing stale results to be returned. This bug only occurred when `plan_cache_mode` was set to `auto` or `force_generic_plan`, both of which are not currently the default settings. [#133074][#133074] -- Previously, CockroachDB could encounter an internal error of the form `interface conversion: coldata.Column is` in an edge case and this is now fixed. The bug is present in v22.2.13+, v23.1.9+, v23.2+. [#133761][#133761] -- Fixed a bug that caused incorrect `NOT NULL` constraint violation errors on `UPSERT` and `INSERT .. ON CONFLICT .. DO UPDATE` statements when those statements updated an existing row and a subset of columns that did not include a `NOT NULL` column of the table. This bug has been present since at least v20.1.0. [#133821][#133821] -- Fixed an unhandled error that could occur when using `REVOKE ... ON SEQUENCE FROM ... user` on an object that is not a sequence. [#133709][#133709] -- Addressed a panic inside `CREATE TABLE AS` if sequence builtin expressions had invalid function overloads. [#133869][#133869] -- `STRING`constants can now be compared against collated strings. [#134084][#134084] -- When executing queries with index / lookup joins when the ordering needs to be maintained, previously CockroachDB could experience increased query latency, possibly by several orders of magnitude. This bug was introduced in v22.2 and is now fixed. [#134366][#134366] -- Fixed a minor bug where `DISCARD ALL` statements were counted under the `sql.ddl.count` metric. Now these will be counted under the `sql.misc.count` metric. [#134509][#134509] -- Addressed a bug with `DROP CASCADE` that would occasionally panic with an undropped `backref` message on partitioned tables. [#134472][#134472] -- Reduced the duration of partitions in the gossip network when a node crashes in order to eliminate false positives in the `ranges.unavailable` metric. [#134600][#134600] -- Non-`admin` users that run `DROP ROLE IF EXISTS` on a user that does not exist will no longer receive an error message. [#134969][#134969] -- Fixed a bug that caused quotes around the name of a routine to be dropped when it was called within another routine. This could prevent the correct routine from being resolved if the nested routine name was case sensitive. The bug has existed since v24.1, when nested routines were introduced. [#134000][#134000] -- Fixed a bug that could cause incorrect query results when the optimizer planned a lookup join on an index containing a column of type `CHAR(N)`, `VARCHAR(N)`, `BIT(N)`, `VARBIT(N)`, or `DECIMAL(M, N)`, and the query held that column constant to a single value (e.g., with an equality filter). [#135076][#135076] -- Fixed an unhandled error that would occur if `DROP SCHEMA` was executed on the `public` schema of the `system` database, or on an internal schema like `pg_catalog` or `information_schema`. [#135180][#135180] -- Fixed a bug that caused incorrect evaluation of some binary expressions involving `CHAR(N)` values and untyped string literals with trailing whitespace characters. For example, the expression `'f'::CHAR = 'f '` now correctly evaluates to `true`. [#135689][#135689] -- Fixed a bug where `ALTER DATABASE` operations that modify the zone config would hang if an invalid zone config already exists. [#135215][#135215] -- `CREATE SCHEMA` now returns the correct error if a the schema name is missing. [#135927][#135927] -- Using more than one `DECLARE` statment in the definition of a user-defined function now correctly declares additional variables. [#135738][#135738] -- Fixed a bug where CockroachDB would encounter an internal error when evaluating `FETCH ABSOLUTE 0` statements. The bug has been present since v22.1. [#134992][#134992] -- Fixed an issue where corrupted table statistics could cause the `cockroach` process to crash. [#136041][#136041] -- Fixed a bug that causes the optimizer to use stale table statistics after altering an `ENUM` type used in the table. [#136812][#136812] - -[#133074]: https://github.com/cockroachdb/cockroach/pull/133074 -[#133584]: https://github.com/cockroachdb/cockroach/pull/133584 -[#133709]: https://github.com/cockroachdb/cockroach/pull/133709 -[#133761]: https://github.com/cockroachdb/cockroach/pull/133761 -[#133821]: https://github.com/cockroachdb/cockroach/pull/133821 -[#133869]: https://github.com/cockroachdb/cockroach/pull/133869 -[#134000]: https://github.com/cockroachdb/cockroach/pull/134000 -[#134017]: https://github.com/cockroachdb/cockroach/pull/134017 -[#134084]: https://github.com/cockroachdb/cockroach/pull/134084 -[#134088]: https://github.com/cockroachdb/cockroach/pull/134088 -[#134095]: https://github.com/cockroachdb/cockroach/pull/134095 -[#134099]: https://github.com/cockroachdb/cockroach/pull/134099 -[#134366]: https://github.com/cockroachdb/cockroach/pull/134366 -[#134447]: https://github.com/cockroachdb/cockroach/pull/134447 -[#134472]: https://github.com/cockroachdb/cockroach/pull/134472 -[#134509]: https://github.com/cockroachdb/cockroach/pull/134509 -[#134600]: https://github.com/cockroachdb/cockroach/pull/134600 -[#134646]: https://github.com/cockroachdb/cockroach/pull/134646 -[#134730]: https://github.com/cockroachdb/cockroach/pull/134730 -[#134837]: https://github.com/cockroachdb/cockroach/pull/134837 -[#134969]: https://github.com/cockroachdb/cockroach/pull/134969 -[#134992]: https://github.com/cockroachdb/cockroach/pull/134992 -[#135076]: https://github.com/cockroachdb/cockroach/pull/135076 -[#135170]: https://github.com/cockroachdb/cockroach/pull/135170 -[#135180]: https://github.com/cockroachdb/cockroach/pull/135180 -[#135215]: https://github.com/cockroachdb/cockroach/pull/135215 -[#135611]: https://github.com/cockroachdb/cockroach/pull/135611 -[#135689]: https://github.com/cockroachdb/cockroach/pull/135689 -[#135738]: https://github.com/cockroachdb/cockroach/pull/135738 -[#135927]: https://github.com/cockroachdb/cockroach/pull/135927 -[#136010]: https://github.com/cockroachdb/cockroach/pull/136010 -[#136041]: https://github.com/cockroachdb/cockroach/pull/136041 -[#136812]: https://github.com/cockroachdb/cockroach/pull/136812 +- Fixed a bug that caused non-reusable query plans, e.g., plans for DDL and `SHOW ...` statements, to be cached and reused in future executions, possibly causing stale results to be returned. This bug only occurred when `plan_cache_mode` was set to `auto` or `force_generic_plan`, both of which are not currently the default settings. +- Previously, CockroachDB could encounter an internal error of the form `interface conversion: coldata.Column is` in an edge case and this is now fixed. The bug is present in v22.2.13+, v23.1.9+, v23.2+. +- Fixed a bug that caused incorrect `NOT NULL` constraint violation errors on `UPSERT` and `INSERT .. ON CONFLICT .. DO UPDATE` statements when those statements updated an existing row and a subset of columns that did not include a `NOT NULL` column of the table. This bug has been present since at least v20.1.0. +- Fixed an unhandled error that could occur when using `REVOKE ... ON SEQUENCE FROM ... user` on an object that is not a sequence. +- Addressed a panic inside `CREATE TABLE AS` if sequence builtin expressions had invalid function overloads. +- `STRING`constants can now be compared against collated strings. +- When executing queries with index / lookup joins when the ordering needs to be maintained, previously CockroachDB could experience increased query latency, possibly by several orders of magnitude. This bug was introduced in v22.2 and is now fixed. +- Fixed a minor bug where `DISCARD ALL` statements were counted under the `sql.ddl.count` metric. Now these will be counted under the `sql.misc.count` metric. +- Addressed a bug with `DROP CASCADE` that would occasionally panic with an undropped `backref` message on partitioned tables. +- Reduced the duration of partitions in the gossip network when a node crashes in order to eliminate false positives in the `ranges.unavailable` metric. +- Non-`admin` users that run `DROP ROLE IF EXISTS` on a user that does not exist will no longer receive an error message. +- Fixed a bug that caused quotes around the name of a routine to be dropped when it was called within another routine. This could prevent the correct routine from being resolved if the nested routine name was case sensitive. The bug has existed since v24.1, when nested routines were introduced. +- Fixed a bug that could cause incorrect query results when the optimizer planned a lookup join on an index containing a column of type `CHAR(N)`, `VARCHAR(N)`, `BIT(N)`, `VARBIT(N)`, or `DECIMAL(M, N)`, and the query held that column constant to a single value (e.g., with an equality filter). +- Fixed an unhandled error that would occur if `DROP SCHEMA` was executed on the `public` schema of the `system` database, or on an internal schema like `pg_catalog` or `information_schema`. +- Fixed a bug that caused incorrect evaluation of some binary expressions involving `CHAR(N)` values and untyped string literals with trailing whitespace characters. For example, the expression `'f'::CHAR = 'f '` now correctly evaluates to `true`. +- Fixed a bug where `ALTER DATABASE` operations that modify the zone config would hang if an invalid zone config already exists. +- `CREATE SCHEMA` now returns the correct error if a the schema name is missing. +- Using more than one `DECLARE` statment in the definition of a user-defined function now correctly declares additional variables. +- Fixed a bug where CockroachDB would encounter an internal error when evaluating `FETCH ABSOLUTE 0` statements. The bug has been present since v22.1. +- Fixed an issue where corrupted table statistics could cause the `cockroach` process to crash. +- Fixed a bug that causes the optimizer to use stale table statistics after altering an `ENUM` type used in the table. diff --git a/src/current/_includes/releases/v24.2/v24.2.7.md b/src/current/_includes/releases/v24.2/v24.2.7.md index 7a06916a8da..9f4f600cb65 100644 --- a/src/current/_includes/releases/v24.2/v24.2.7.md +++ b/src/current/_includes/releases/v24.2/v24.2.7.md @@ -6,7 +6,4 @@ Release Date: December 26, 2024

SQL language changes

-- Added the `legacy_varchar_typing` session setting. When set to `on`, type-checking comparisons involving `VARCHAR` columns behave as they did in all previous versions. When set to `off`, type-checking of these comparisons is more strict and queries that previously succeeded may now error with the message `unsupported comparison operator`. These errors can be fixed by adding explicit type casts. The `legacy_varchar_typing` session setting is on by default. [#137944][#137944] - - -[#137944]: https://github.com/cockroachdb/cockroach/pull/137944 \ No newline at end of file +- Added the `legacy_varchar_typing` session setting. When set to `on`, type-checking comparisons involving `VARCHAR` columns behave as they did in all previous versions. When set to `off`, type-checking of these comparisons is more strict and queries that previously succeeded may now error with the message `unsupported comparison operator`. These errors can be fixed by adding explicit type casts. The `legacy_varchar_typing` session setting is on by default. diff --git a/src/current/_includes/releases/v24.2/v24.2.8.md b/src/current/_includes/releases/v24.2/v24.2.8.md index a03ecb132ec..e3bcabeac36 100644 --- a/src/current/_includes/releases/v24.2/v24.2.8.md +++ b/src/current/_includes/releases/v24.2/v24.2.8.md @@ -11,74 +11,43 @@ Release Date: January 9, 2025 - `changefeed.parallel_io_result_queue_nanos` - `changefeed.sink_batch_hist_nanos` - `changefeed.flush_hist_nanos` - - `changefeed.kafka_throttling_hist_nanos` [#136603][#136603] -- Added support for multiple seed brokers in the new Kafka sink. [#136748][#136748] -- Added a new metric (`distsender.rangefeed.catchup_ranges_waiting_client_side`) that counts how many rangefeeds are waiting on the client-side limiter to start performing catchup scans. [#136835][#136835] -- Added changefeed support for the `mvcc_timestamp` option with the `avro` format. If both options are specified, the Avro schema includes an `mvcc_timestamp` metadata field and emits the row's MVCC timestamp with the row data. [#136016][#136016] -- Added a no-op `AWS_USE_PATH_STYLE` parameter for forward compatibility with v24.3. [#137025][#137025] + - `changefeed.kafka_throttling_hist_nanos` +- Added support for multiple seed brokers in the new Kafka sink. +- Added a new metric (`distsender.rangefeed.catchup_ranges_waiting_client_side`) that counts how many rangefeeds are waiting on the client-side limiter to start performing catchup scans. +- Added changefeed support for the `mvcc_timestamp` option with the `avro` format. If both options are specified, the Avro schema includes an `mvcc_timestamp` metadata field and emits the row's MVCC timestamp with the row data. +- Added a no-op `AWS_USE_PATH_STYLE` parameter for forward compatibility with v24.3.

SQL language changes

-- Added the `legacy_varchar_typing` session setting, which reverts the changes of [#133037](https://github.com/cockroachdb/cockroach/pull/133037) that causes the change in typing behavior described in [#137837](https://github.com/cockroachdb/cockroach/pull/137837). Specifically, it makes type-checking and overload resolution ignore the newly added "unpreferred" overloads. This setting defaults to `on`. [#137920][#137920] +- Added the `legacy_varchar_typing` session setting, which reverts the changes of that causes the change in typing behavior described in. Specifically, it makes type-checking and overload resolution ignore the newly added "unpreferred" overloads. This setting defaults to `on`.

Operational changes

-- Removed the `sql.auth.resolve_membership_single_scan.enabled` cluster setting. This was added out of precaution in case it was necessary to revert back to the old behavior for looking up role memberships, but this escape hatch has never been needed in practice since this was added in v23.1. [#136161][#136161] -- Telemetry delivery is now considered successful even in cases where we experience a network timeout. This will prevent throttling in cases outside an operator's control. [#136479][#136479] -- When a schema change job is completed, rolls back, or encounters a failure, the time taken since the job began is now logged in a structured log in the `SQL_SCHEMA` log channel. [#136928][#136928] -- Added a new configurable parameter `kv.transaction.max_intents_and_locks` that will prevent transactions from creating too many intents. [#137700][#137700] -- Added the metric `txn.count_limit_rejected`, which tracks the KV transactions that have been aborted because they exceeded the max number of writes and locking reads allowed. [#137700][#137700] -- Added the metric `txn.count_limit_on_response`, which tracks the number of KV transactions that have exceeded the count limit on a response. [#137700][#137700] +- Removed the `sql.auth.resolve_membership_single_scan.enabled` cluster setting. This was added out of precaution in case it was necessary to revert back to the old behavior for looking up role memberships, but this escape hatch has never been needed in practice since this was added in v23.1. +- Telemetry delivery is now considered successful even in cases where we experience a network timeout. This will prevent throttling in cases outside an operator's control. +- When a schema change job is completed, rolls back, or encounters a failure, the time taken since the job began is now logged in a structured log in the `SQL_SCHEMA` log channel. +- Added a new configurable parameter `kv.transaction.max_intents_and_locks` that will prevent transactions from creating too many intents. +- Added the metric `txn.count_limit_rejected`, which tracks the KV transactions that have been aborted because they exceeded the max number of writes and locking reads allowed. +- Added the metric `txn.count_limit_on_response`, which tracks the number of KV transactions that have exceeded the count limit on a response.

Bug fixes

-- `ALTER COLUMN SET NOT NULL` was not enforced consistently when the table was created in the same transaction. [#136365][#136365] -- Fixed a bug where `CREATE RELATION / TYPE` could leave dangling namespace entries if the schema was concurrently being dropped. [#136379][#136379] -- The `idle_in_session_timeout` setting now excludes the time spent waiting for schema changer jobs to complete, preventing unintended session termination during schema change operations. [#136502][#136502] -- Fixed a bug that causes the optimizer to use stale table statistics after altering an `ENUM` type used in the table. [#136759][#136759] -- Table statistics collection in CockroachDB could previously run into `no bytes in account to release` errors in some edge cases (when the SQL memory budget, configured via `--max-sql-memory` flag, was close to being exhausted). The bug has been present since v21.2 and is now fixed. [#136165][#136165] -- CockroachDB now better respects the `statement_timeout` limit on queries involving the top K sort and merge join operations. [#136652][#136652] -- Fixed an issue where license enforcement was not consistently disabled for single-node clusters started with `cockroach start-single-node`. The fix ensures proper behavior on cluster restarts. [#137011][#137011] -- Fixed a bug that caused queries against tables with user-defined types to sometimes fail with errors after restoring those tables. [#137354][#137354] -- Fixed a bug that caused an incorrect filesystem to be logged as part of the store information. [#137113][#137113] -- Fixed a bug that has existed since v24.1 that would cause a set-returning UDF with `OUT` parameters to return a single row. [#137377][#137377] -- Fixed a bug that could cause an internal error if a table with an implicit (`rowid`) primary key was locked from within a subquery, like: `SELECT * FROM (SELECT * FROM foo WHERE x = 2) FOR UPDATE;`. The error could occur either under read-committed isolation, or with `optimizer_use_lock_op_for_serializable` enabled. [#137129][#137129] -- Fixed an issue where adding an existing column with the `IF NOT EXISTS` option could exit too early, skipping necessary handling of the abstract syntax tree (AST). This could lead to failure of the `ALTER` statement. [#137676][#137676] -- Fixed a bug related to displaying the names of composite types in the `SHOW CREATE TABLES` command. The names are now shown as two-part names, which disambiguates the output and makes it more portable to other databases. [#137768][#137768] -- Fixed an issue where a schema change could incorrectly cause a changefeed to fail with an assertion error like `received boundary timestamp ... of type ... before reaching existing boundary of type ...`. [#137705][#137705] -- Internal scans are now exempt from the `sql.defaults.disallow_full_table_scans.enabled` setting, allowing index creation even when the cluster setting is active. [#137724][#137724] +- `ALTER COLUMN SET NOT NULL` was not enforced consistently when the table was created in the same transaction. +- Fixed a bug where `CREATE RELATION / TYPE` could leave dangling namespace entries if the schema was concurrently being dropped. +- The `idle_in_session_timeout` setting now excludes the time spent waiting for schema changer jobs to complete, preventing unintended session termination during schema change operations. +- Fixed a bug that causes the optimizer to use stale table statistics after altering an `ENUM` type used in the table. +- Table statistics collection in CockroachDB could previously run into `no bytes in account to release` errors in some edge cases (when the SQL memory budget, configured via `--max-sql-memory` flag, was close to being exhausted). The bug has been present since v21.2 and is now fixed. +- CockroachDB now better respects the `statement_timeout` limit on queries involving the top K sort and merge join operations. +- Fixed an issue where license enforcement was not consistently disabled for single-node clusters started with `cockroach start-single-node`. The fix ensures proper behavior on cluster restarts. +- Fixed a bug that caused queries against tables with user-defined types to sometimes fail with errors after restoring those tables. +- Fixed a bug that caused an incorrect filesystem to be logged as part of the store information. +- Fixed a bug that has existed since v24.1 that would cause a set-returning UDF with `OUT` parameters to return a single row. +- Fixed a bug that could cause an internal error if a table with an implicit (`rowid`) primary key was locked from within a subquery, like: `SELECT * FROM (SELECT * FROM foo WHERE x = 2) FOR UPDATE;`. The error could occur either under read-committed isolation, or with `optimizer_use_lock_op_for_serializable` enabled. +- Fixed an issue where adding an existing column with the `IF NOT EXISTS` option could exit too early, skipping necessary handling of the abstract syntax tree (AST). This could lead to failure of the `ALTER` statement. +- Fixed a bug related to displaying the names of composite types in the `SHOW CREATE TABLES` command. The names are now shown as two-part names, which disambiguates the output and makes it more portable to other databases. +- Fixed an issue where a schema change could incorrectly cause a changefeed to fail with an assertion error like `received boundary timestamp ... of type ... before reaching existing boundary of type ...`. +- Internal scans are now exempt from the `sql.defaults.disallow_full_table_scans.enabled` setting, allowing index creation even when the cluster setting is active.

Performance improvements

-- Improved the internal caching logic for role membership information. This reduces the latency impact of commands such as `DROP ROLE`, `CREATE ROLE`, and `GRANT role TO user`, which cause the role membership cache to be invalidated. [#136161][#136161] - - -[#136016]: https://github.com/cockroachdb/cockroach/pull/136016 -[#136161]: https://github.com/cockroachdb/cockroach/pull/136161 -[#136165]: https://github.com/cockroachdb/cockroach/pull/136165 -[#136365]: https://github.com/cockroachdb/cockroach/pull/136365 -[#136379]: https://github.com/cockroachdb/cockroach/pull/136379 -[#136471]: https://github.com/cockroachdb/cockroach/pull/136471 -[#136479]: https://github.com/cockroachdb/cockroach/pull/136479 -[#136502]: https://github.com/cockroachdb/cockroach/pull/136502 -[#136603]: https://github.com/cockroachdb/cockroach/pull/136603 -[#136652]: https://github.com/cockroachdb/cockroach/pull/136652 -[#136681]: https://github.com/cockroachdb/cockroach/pull/136681 -[#136748]: https://github.com/cockroachdb/cockroach/pull/136748 -[#136759]: https://github.com/cockroachdb/cockroach/pull/136759 -[#136835]: https://github.com/cockroachdb/cockroach/pull/136835 -[#136928]: https://github.com/cockroachdb/cockroach/pull/136928 -[#137011]: https://github.com/cockroachdb/cockroach/pull/137011 -[#137025]: https://github.com/cockroachdb/cockroach/pull/137025 -[#137113]: https://github.com/cockroachdb/cockroach/pull/137113 -[#137116]: https://github.com/cockroachdb/cockroach/pull/137116 -[#137129]: https://github.com/cockroachdb/cockroach/pull/137129 -[#137354]: https://github.com/cockroachdb/cockroach/pull/137354 -[#137377]: https://github.com/cockroachdb/cockroach/pull/137377 -[#137461]: https://github.com/cockroachdb/cockroach/pull/137461 -[#137676]: https://github.com/cockroachdb/cockroach/pull/137676 -[#137700]: https://github.com/cockroachdb/cockroach/pull/137700 -[#137705]: https://github.com/cockroachdb/cockroach/pull/137705 -[#137724]: https://github.com/cockroachdb/cockroach/pull/137724 -[#137768]: https://github.com/cockroachdb/cockroach/pull/137768 -[#137920]: https://github.com/cockroachdb/cockroach/pull/137920 +- Improved the internal caching logic for role membership information. This reduces the latency impact of commands such as `DROP ROLE`, `CREATE ROLE`, and `GRANT role TO user`, which cause the role membership cache to be invalidated. diff --git a/src/current/_includes/releases/v24.2/v24.2.9.md b/src/current/_includes/releases/v24.2/v24.2.9.md index c44148efec6..766c0224366 100644 --- a/src/current/_includes/releases/v24.2/v24.2.9.md +++ b/src/current/_includes/releases/v24.2/v24.2.9.md @@ -6,6 +6,4 @@ Release Date: January 31, 2025

Bug fixes

-- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `"batch timestamp ... must be after replica GC threshold"` error. [#140176][#140176] - -[#140176]: https://github.com/cockroachdb/cockroach/pull/140176 +- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `"batch timestamp ... must be after replica GC threshold"` error. diff --git a/src/current/_includes/releases/v24.3/backward-incompatible.md b/src/current/_includes/releases/v24.3/backward-incompatible.md index d81c2f57213..afb4d41043d 100644 --- a/src/current/_includes/releases/v24.3/backward-incompatible.md +++ b/src/current/_includes/releases/v24.3/backward-incompatible.md @@ -2,9 +2,9 @@ Before [upgrading to CockroachDB v24.3]({% link v24.3/upgrade-cockroach-version. If you plan to upgrade to v24.3 directly from v24.1 and skip v24.2, be sure to also review the [v24.2 release notes]({% link releases/v24.2.md %}) for backward-incompatible changes from v24.1. -- Upgrading to v24.3 is blocked if no [license]({% link v24.3/licensing-faqs.md %}) is installed, or if a trial/free license is installed with telemetry disabled. [#130576][#130576] +- Upgrading to v24.3 is blocked if no [license]({% link v24.3/licensing-faqs.md %}) is installed, or if a trial/free license is installed with telemetry disabled. + -[#130576]: https://github.com/cockroachdb/cockroach/pull/130576 {% comment %}Remove this anchor when it is added to the v24.3.0 GA release notes{% endcomment %} diff --git a/src/current/_includes/releases/v24.3/deprecations.md b/src/current/_includes/releases/v24.3/deprecations.md index abf7fd16114..03ea085c0b7 100644 --- a/src/current/_includes/releases/v24.3/deprecations.md +++ b/src/current/_includes/releases/v24.3/deprecations.md @@ -1,5 +1,3 @@ The following deprecations are announced in v24.3. If you plan to upgrade to v24.3 directly from v24.1 and skip v24.2, be sure to also review the [v24.2 release notes]({% link releases/v24.2.md %}) for deprecations. -- The session variable [`enforce_home_region_follower_reads_enabled`]({% link v24.3/session-variables.md %}#enforce-home-region-follower-reads-enabled) is now deprecated, and will be removed in a future release. The related session variable [`enforce_home_region`]({% link v24.3/session-variables.md %}#enforce-home-region) is **not** deprecated. [#129024][#129024] - -[#129024]: https://github.com/cockroachdb/cockroach/pull/129024 +- The session variable [`enforce_home_region_follower_reads_enabled`]({% link v24.3/session-variables.md %}#enforce-home-region-follower-reads-enabled) is now deprecated, and will be removed in a future release. The related session variable [`enforce_home_region`]({% link v24.3/session-variables.md %}#enforce-home-region) is **not** deprecated. diff --git a/src/current/_includes/releases/v24.3/v24.3.0-alpha.1.md b/src/current/_includes/releases/v24.3/v24.3.0-alpha.1.md index 2d1df7a681d..138ff3f988b 100644 --- a/src/current/_includes/releases/v24.3/v24.3.0-alpha.1.md +++ b/src/current/_includes/releases/v24.3/v24.3.0-alpha.1.md @@ -6,33 +6,33 @@ Release Date: October 9, 2024 {% include releases/new-release-downloads-docker-image.md release=include.release %}

Security updates

-- URLs in the [`CREATE CHANGEFEED`]({% link v24.3/create-changefeed.md %}) and [`CREATE SCHEDULE FOR CHANGEFEED`]({% link v24.3/create-schedule-for-changefeed.md %}) SQL statements are now sanitized of any secrets before being written to unredacted [logs]({% link v24.3/logging.md %}). [#126970][#126970] -- The LDAP [cluster settings]({% link v24.3/cluster-settings.md %}) `server.ldap_authentication.client.tls_certificate` and `server.ldap_authentication.client.tls_key` did not have callbacks installed to reload the settings value for LDAP authManager. This change fixes this by adding the necessary callbacks. [#131151][#131151] -- [Cluster settings]({% link v24.3/cluster-settings.md %}) for [host-based authentication]({% link v24.3/security-reference/authentication.md %}#authentication-configuration) configuration ([`server.host_based_authentication.configuration`]({% link v24.3/cluster-settings.md %}#setting-server-host-based-authentication-configuration)) and identity map configuration ([`server.identity_map.configuration`]({% link v24.3/cluster-settings.md %})) need to be redacted as they can be configured to contain LDAP bind usernames, passwords, and mapping of external identities to SQL users that are sensitive. These cluster settings can be configured for redaction via the `server.redact_sensitive_settings.enabled` cluster setting. [#131150][#131150] -- Added support for configuring authorization using LDAP. During login, the list of groups that a user belongs to are fetched from the LDAP server. These groups are mapped to [SQL roles]({% link v24.3/create-role.md %}) by extracting the common name (CN) from the group. After authenticating the user, the login flow grants these roles to the user, and revokes any other roles that are not returned by the LDAP server. The groups given by the LDAP server are treated as the sole source of truth for role memberships, so any roles that were manually granted to the user will not remain in place. [#131043][#131043] +- URLs in the [`CREATE CHANGEFEED`]({% link v24.3/create-changefeed.md %}) and [`CREATE SCHEDULE FOR CHANGEFEED`]({% link v24.3/create-schedule-for-changefeed.md %}) SQL statements are now sanitized of any secrets before being written to unredacted [logs]({% link v24.3/logging.md %}). +- The LDAP [cluster settings]({% link v24.3/cluster-settings.md %}) `server.ldap_authentication.client.tls_certificate` and `server.ldap_authentication.client.tls_key` did not have callbacks installed to reload the settings value for LDAP authManager. This change fixes this by adding the necessary callbacks. +- [Cluster settings]({% link v24.3/cluster-settings.md %}) for [host-based authentication]({% link v24.3/security-reference/authentication.md %}#authentication-configuration) configuration ([`server.host_based_authentication.configuration`]({% link v24.3/cluster-settings.md %}#setting-server-host-based-authentication-configuration)) and identity map configuration ([`server.identity_map.configuration`]({% link v24.3/cluster-settings.md %})) need to be redacted as they can be configured to contain LDAP bind usernames, passwords, and mapping of external identities to SQL users that are sensitive. These cluster settings can be configured for redaction via the `server.redact_sensitive_settings.enabled` cluster setting. +- Added support for configuring authorization using LDAP. During login, the list of groups that a user belongs to are fetched from the LDAP server. These groups are mapped to [SQL roles]({% link v24.3/create-role.md %}) by extracting the common name (CN) from the group. After authenticating the user, the login flow grants these roles to the user, and revokes any other roles that are not returned by the LDAP server. The groups given by the LDAP server are treated as the sole source of truth for role memberships, so any roles that were manually granted to the user will not remain in place. - Previously, the [host-based authentication]({% link v24.3/security-reference/authentication.md %}#authentication-configuration) (HBA) configuration cluster setting [`server.host_based_authentication.configuration`]({% link v24.3/cluster-settings.md %}#setting-server-host-based-authentication-configuration) was unable to handle double quotes in authentication method option values. For example, for the following entry: ~~~ host all all all ldap ldapserver=ldap.example.com ldapport=636 ldapbasedn="ou=users,dc=example,dc=com" ldapbinddn="cn=readonly,dc=example,dc=com" ldapbindpasswd=readonly_password ldapsearchattribute=uid ldapsearchfilter="(memberof=cn=cockroachdb_users,ou=groups,dc=example,dc=com)" ~~~ - The HBA parser would fail after incorrectly determining `ldapbinddn="cn=readonly,dc=example,dc=com"` as 2 separate options (`ldapbinddn=and cn=readonly,dc=example,dc=com`). Now, the 2 tokens are set as key and value respectively for the same HBA configuration option. [#131480][#131480] + The HBA parser would fail after incorrectly determining `ldapbinddn="cn=readonly,dc=example,dc=com"` as 2 separate options (`ldapbinddn=and cn=readonly,dc=example,dc=com`). Now, the 2 tokens are set as key and value respectively for the same HBA configuration option.

General changes

-- CockroachDB will now avoid [logging]({% link v24.3/logging.md %}) unnecessary stack traces while executing [scheduled jobs]({% link v24.3/show-jobs.md %}). [#129846][#129846] -- Upgrading to 24.3 is blocked if no [license]({% link v24.3/licensing-faqs.md %}) is installed, or if a trial/free license is installed with telemetry disabled. [#130576][#130576] -- Attempting to install a second Enterprise trial license on the same cluster will now fail. [#131422][#131422] -- Changed the license `cockroach` is distributed under to the new CockroachDB Software License (CSL). [#131690][#131690] [#131686][#131686] [#131688][#131688] [#131687][#131687] [#131717][#131717] [#131689][#131689] [#131693][#131693] [#131691][#131691] [#131777][#131777] [#131778][#131778] [#131661][#131661] +- CockroachDB will now avoid [logging]({% link v24.3/logging.md %}) unnecessary stack traces while executing [scheduled jobs]({% link v24.3/show-jobs.md %}). +- Upgrading to 24.3 is blocked if no [license]({% link v24.3/licensing-faqs.md %}) is installed, or if a trial/free license is installed with telemetry disabled. +- Attempting to install a second Enterprise trial license on the same cluster will now fail. +- Changed the license `cockroach` is distributed under to the new CockroachDB Software License (CSL).

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

-- Added a `CompressionLevel` field to the changefeed [`kafka_sink_config`]({% link v24.3/changefeed-sinks.md %}#kafka-sink-configuration) option. [Changefeeds]({% link v24.3/change-data-capture-overview.md %}) will use this compression level when emitting events to a [Kafka sink]({% link v24.3/changefeed-sinks.md %}#kafka). The possible values depend on a compression codec. The `CompressionLevel` field optimizes for faster or stronger level of [compression]({% link v24.3/changefeed-sinks.md %}#kafka-sink-configuration). [#125456][#125456] -- The updated version of the [CockroachDB changefeed Kafka sink implementation]({% link v24.3/changefeed-sinks.md %}#kafka) now supports specifying compression levels. [#127827][#127827] -- Introduced the cluster setting [`server.jwt_authentication.client.timeout`]({% link v24.3/cluster-settings.md %}) to capture the HTTP client timeout for external calls made during [JWT authentication]({% link v24.3/sso-sql.md %}). [#127145][#127145] -- The JWT authentication [cluster settings]({% link v24.3/cluster-settings.md %}) have been made `public`. [#128170][#128170] -- Updated certain error messages to refer to the `stable` docs tree rather than an explicit version. [#128842][#128842] -- Disambiguated [metrics]({% link v24.3/essential-metrics-self-hosted.md %}) and logs for the two buffers used by the KV feed. The affected metrics now have a suffix indicating which buffer they correspond to: `changefeed.buffer_entries.*`, `changefeed.buffer_entries_mem.*`, `changefeed.buffer_pushback_nanos.*`. The previous versions are still supported for backward compatibility, though using the new format is recommended. [#128813][#128813] +- Added a `CompressionLevel` field to the changefeed [`kafka_sink_config`]({% link v24.3/changefeed-sinks.md %}#kafka-sink-configuration) option. [Changefeeds]({% link v24.3/change-data-capture-overview.md %}) will use this compression level when emitting events to a [Kafka sink]({% link v24.3/changefeed-sinks.md %}#kafka). The possible values depend on a compression codec. The `CompressionLevel` field optimizes for faster or stronger level of [compression]({% link v24.3/changefeed-sinks.md %}#kafka-sink-configuration). +- The updated version of the [CockroachDB changefeed Kafka sink implementation]({% link v24.3/changefeed-sinks.md %}#kafka) now supports specifying compression levels. +- Introduced the cluster setting [`server.jwt_authentication.client.timeout`]({% link v24.3/cluster-settings.md %}) to capture the HTTP client timeout for external calls made during [JWT authentication]({% link v24.3/sso-sql.md %}). +- The JWT authentication [cluster settings]({% link v24.3/cluster-settings.md %}) have been made `public`. +- Updated certain error messages to refer to the `stable` docs tree rather than an explicit version. +- Disambiguated [metrics]({% link v24.3/essential-metrics-self-hosted.md %}) and logs for the two buffers used by the KV feed. The affected metrics now have a suffix indicating which buffer they correspond to: `changefeed.buffer_entries.*`, `changefeed.buffer_entries_mem.*`, `changefeed.buffer_pushback_nanos.*`. The previous versions are still supported for backward compatibility, though using the new format is recommended. - Added support for authorization to a CockroachDB cluster via LDAP, retrieving AD groups membership information for LDAP user. The new [HBA configuration]({% link v24.3/security-reference/authentication.md %}#authentication-configuration) cluster setting option `ldapgrouplistfilter` performs filtered search query on LDAP for matching groups. An example HBA configuration entry to support LDAP authZ configuration: {% include_cached copy-clipboard.html %} @@ -53,47 +53,47 @@ Release Date: October 9, 2024 Post configuration, the CockroachDB cluster should be able to authorize users via LDAP server if: 1. Users LDAP authentication attempt is successful, and it has the user's DN for the LDAP server. - 1. `ldapgrouplistfilter` is properly configured, and it successfully syncs groups of the user. [#128498][#128498] -- Added changefeed support for the [`mvcc_timestamp`]({% link v24.3/create-changefeed.md %}#mvcc-timestamp) option when the changefeed is emitting in [`avro`]({% link v24.3/changefeed-messages.md %}#avro) format. If both options are specified, the Avro schema includes an `mvcc_timestamp` metadata field and emits the row's [MVCC timestamp]({% link v24.3/architecture/storage-layer.md %}#mvcc) with the row data. [#129840][#129840] -- Updated the cluster setting [`changefeed.sink_io_workers`]({% link v24.3/cluster-settings.md %}#setting-changefeed-sink-io-workers) with all the [sinks]({% link v24.3/changefeed-sinks.md %}) that support the setting. [#129946][#129946] -- Added a LDAP authentication method to complement password-based login for the [DB Console]({% link v24.3/ui-overview.md %}) if HBA configuration has an entry for LDAP for the user attempting login, along with other matching criteria (like the requests originating IP address) for authentication to the DB Console. [#130418][#130418] -- Added timers around key parts of the [changefeed]({% link v24.3/change-data-capture-overview.md %}) pipeline to help debug feeds experiencing issues. The `changefeed.stage..latency` metrics now emit latency histograms for each stage. The metric respects the [changefeed `scope` label]({% link v24.3/monitor-and-debug-changefeeds.md %}#using-changefeed-metrics-labels) for debugging specific feeds. [#128794][#128794] -- For [enterprise changefeeds]({% link v24.3/how-does-a-changefeed-work.md %}), [events]({% link v24.3/eventlog.md %}) `changefeed_failed` and `create_changefeed` now include a `JobId` field. [#131396][#131396] -- The new [metric]({% link v24.3/metrics.md %}) `seconds_until_license_expiry` allows you to monitor the status of a cluster's Enterprise license. [#129052][#129052]. -- Added the `changefeed.total_ranges` metric, which [monitors]({% link v24.3/monitor-and-debug-changefeeds.md %}) the number of [ranges]({% link v24.3/architecture/overview.md %}#architecture-range) that are watched by [changefeed aggregators]({% link v24.3/how-does-a-changefeed-work.md %}). It shares the same polling interval as [`changefeed.lagging_ranges`]({% link v24.3/advanced-changefeed-configuration.md %}#lagging-ranges), which is controlled by the existing `lagging_ranges_polling_interval` option. [#130897][#130897] + 1. `ldapgrouplistfilter` is properly configured, and it successfully syncs groups of the user. +- Added changefeed support for the [`mvcc_timestamp`]({% link v24.3/create-changefeed.md %}#mvcc-timestamp) option when the changefeed is emitting in [`avro`]({% link v24.3/changefeed-messages.md %}#avro) format. If both options are specified, the Avro schema includes an `mvcc_timestamp` metadata field and emits the row's [MVCC timestamp]({% link v24.3/architecture/storage-layer.md %}#mvcc) with the row data. +- Updated the cluster setting [`changefeed.sink_io_workers`]({% link v24.3/cluster-settings.md %}#setting-changefeed-sink-io-workers) with all the [sinks]({% link v24.3/changefeed-sinks.md %}) that support the setting. +- Added a LDAP authentication method to complement password-based login for the [DB Console]({% link v24.3/ui-overview.md %}) if HBA configuration has an entry for LDAP for the user attempting login, along with other matching criteria (like the requests originating IP address) for authentication to the DB Console. +- Added timers around key parts of the [changefeed]({% link v24.3/change-data-capture-overview.md %}) pipeline to help debug feeds experiencing issues. The `changefeed.stage..latency` metrics now emit latency histograms for each stage. The metric respects the [changefeed `scope` label]({% link v24.3/monitor-and-debug-changefeeds.md %}#using-changefeed-metrics-labels) for debugging specific feeds. +- For [enterprise changefeeds]({% link v24.3/how-does-a-changefeed-work.md %}), [events]({% link v24.3/eventlog.md %}) `changefeed_failed` and `create_changefeed` now include a `JobId` field. +- The new [metric]({% link v24.3/metrics.md %}) `seconds_until_license_expiry` allows you to monitor the status of a cluster's Enterprise license.. +- Added the `changefeed.total_ranges` metric, which [monitors]({% link v24.3/monitor-and-debug-changefeeds.md %}) the number of [ranges]({% link v24.3/architecture/overview.md %}#architecture-range) that are watched by [changefeed aggregators]({% link v24.3/how-does-a-changefeed-work.md %}). It shares the same polling interval as [`changefeed.lagging_ranges`]({% link v24.3/advanced-changefeed-configuration.md %}#lagging-ranges), which is controlled by the existing `lagging_ranges_polling_interval` option.

SQL language changes

-- Added a session setting, [`optimizer_use_merged_partial_statistics`]({% link v24.3/session-variables.md %}) which defaults to `false`. When set to `true`, it enables usage of existing partial [statistics]({% link v24.3/cost-based-optimizer.md %}#table-statistics) merged with full statistics when [optimizing]({% link v24.3/cost-based-optimizer.md %}) a query. [#126948][#126948] -- The [`enable_create_stats_using_extremes`]({% link v24.3/session-variables.md %}) session setting is now `true` by default. Partial statistics at extremes can be collected using the [`CREATE STATISTICS ON FROM USING EXTREMES`]({% link v24.3/create-statistics.md %}) syntax. [#127850][#127850] -- Added [`SHOW SCHEMAS WITH COMMENT`]({% link v24.3/show-schemas.md %}) and `SHOW SCHEMAS FROM database_name WITH COMMENT` functionality similar to [`SHOW TABLES`]({% link v24.3/show-tables.md %}) and [`SHOW DATABASES`]({% link v24.3/show-databases.md %}). [#127816][#127816] -- The [`deadlock_timeout` session variable]({% link v24.3/session-variables.md %}) is now supported. The configuration can be used to specify the time to wait on a lock before pushing the lock holder for deadlock detection. It can be set at session granularity. [#128506][#128506] -- Partial statistics at extremes can now be collected on all valid columns of a table using the [`CREATE STATISTICS ` `FROM USING EXTREMES`]({% link v24.3/create-statistics.md %}) syntax, without an `ON ` clause. Valid columns are all single column prefixes of a forward [index]({% link v24.3/indexes.md %}) excluding partial, sharded, and implicitly partitioned indexes. [#127836][#127836] +- Added a session setting, [`optimizer_use_merged_partial_statistics`]({% link v24.3/session-variables.md %}) which defaults to `false`. When set to `true`, it enables usage of existing partial [statistics]({% link v24.3/cost-based-optimizer.md %}#table-statistics) merged with full statistics when [optimizing]({% link v24.3/cost-based-optimizer.md %}) a query. +- The [`enable_create_stats_using_extremes`]({% link v24.3/session-variables.md %}) session setting is now `true` by default. Partial statistics at extremes can be collected using the [`CREATE STATISTICS ON FROM USING EXTREMES`]({% link v24.3/create-statistics.md %}) syntax. +- Added [`SHOW SCHEMAS WITH COMMENT`]({% link v24.3/show-schemas.md %}) and `SHOW SCHEMAS FROM database_name WITH COMMENT` functionality similar to [`SHOW TABLES`]({% link v24.3/show-tables.md %}) and [`SHOW DATABASES`]({% link v24.3/show-databases.md %}). +- The [`deadlock_timeout` session variable]({% link v24.3/session-variables.md %}) is now supported. The configuration can be used to specify the time to wait on a lock before pushing the lock holder for deadlock detection. It can be set at session granularity. +- Partial statistics at extremes can now be collected on all valid columns of a table using the [`CREATE STATISTICS ` `FROM USING EXTREMES`]({% link v24.3/create-statistics.md %}) syntax, without an `ON ` clause. Valid columns are all single column prefixes of a forward [index]({% link v24.3/indexes.md %}) excluding partial, sharded, and implicitly partitioned indexes. - Partial [statistics]({% link v24.3/cost-based-optimizer.md %}#table-statistics) can now be automatically collected at the extremes of indexes when a certain fraction and minimum number of rows are stale (by default 5% and 100 respectively). These can be configured with new [table storage parameters]({% link v24.3/alter-table.md %}#set-and-reset-storage-parameters) and [cluster settings]({% link v24.3/cluster-settings.md %}), and the feature is disabled by default. The new cluster settings and table parameters are: - `sql.stats.automatic_partial_collection.enabled`/`sql_stats_automatic_partial_collection_enabled`, defaults to `false`. - `sql.stats.automatic_partial_collection.min_stale_rows`/`sql_stats_automatic_partial_collection_min_stale_rows`, defaults to `100`. - - `sql.stats.automatic_partial_collection.fraction_stale_rows `/`sql_stats_automatic_partial_collection_fraction_stale_rows`, Defaults to `0.05`. [#93067][#93067] -- The session variable [`enforce_home_region_follower_reads_enabled`]({% link v24.3/session-variables.md %}#enforce-home-region-follower-reads-enabled) is now deprecated, and will be removed in a future release. The related session variable [`enforce_home_region`]({% link v24.3/session-variables.md %}#enforce-home-region) is **not** deprecated. [#129024][#129024] -- Added a new [cluster setting]({% link v24.3/cluster-settings.md %}) to control whether most common values are collected as part of [histogram collection]({% link v24.3/cost-based-optimizer.md %}#control-histogram-collection) for use by the [optimizer]({% link v24.3/cost-based-optimizer.md %}). The setting is called `sql.stats.histogram_buckets.include_most_common_values.enabled`. When enabled, the histogram collection logic will ensure that the most common sampled values are represented as histogram bucket upper bounds. Since histograms in CockroachDB track the number of elements equal to the upper bound in addition to the number of elements less, this allows the optimizer to identify the most common values in the histogram and better estimate the rows processed by a query plan. To set the number of most common values to include in a histogram, a second setting `sql.stats.histogram_buckets.max_fraction_most_common_values` was added. Currently, the default is `0.1`, or `10%` of the number of buckets. With a 200 bucket histogram, by default, at most 20 buckets may be adjusted to include a most common value as the upper bound. [#129378][#129378] -- Added a new column to [`crdb_internal.table_spans`]({% link v24.3/crdb-internal.md %}#tables) to indicate whether a table is [dropped]({% link v24.3/drop-table.md %}). Rows for dropped tables will be removed once they are [garbage collected]({% link v24.3/architecture/storage-layer.md %}#garbage-collection). [#128788][#128788] + - `sql.stats.automatic_partial_collection.fraction_stale_rows `/`sql_stats_automatic_partial_collection_fraction_stale_rows`, Defaults to `0.05`. +- The session variable [`enforce_home_region_follower_reads_enabled`]({% link v24.3/session-variables.md %}#enforce-home-region-follower-reads-enabled) is now deprecated, and will be removed in a future release. The related session variable [`enforce_home_region`]({% link v24.3/session-variables.md %}#enforce-home-region) is **not** deprecated. +- Added a new [cluster setting]({% link v24.3/cluster-settings.md %}) to control whether most common values are collected as part of [histogram collection]({% link v24.3/cost-based-optimizer.md %}#control-histogram-collection) for use by the [optimizer]({% link v24.3/cost-based-optimizer.md %}). The setting is called `sql.stats.histogram_buckets.include_most_common_values.enabled`. When enabled, the histogram collection logic will ensure that the most common sampled values are represented as histogram bucket upper bounds. Since histograms in CockroachDB track the number of elements equal to the upper bound in addition to the number of elements less, this allows the optimizer to identify the most common values in the histogram and better estimate the rows processed by a query plan. To set the number of most common values to include in a histogram, a second setting `sql.stats.histogram_buckets.max_fraction_most_common_values` was added. Currently, the default is `0.1`, or `10%` of the number of buckets. With a 200 bucket histogram, by default, at most 20 buckets may be adjusted to include a most common value as the upper bound. +- Added a new column to [`crdb_internal.table_spans`]({% link v24.3/crdb-internal.md %}#tables) to indicate whether a table is [dropped]({% link v24.3/drop-table.md %}). Rows for dropped tables will be removed once they are [garbage collected]({% link v24.3/architecture/storage-layer.md %}#garbage-collection). - Added the [cluster setting]({% link v24.3/cluster-settings.md %}) `sql.txn.repeatable_read_isolation.enabled`, which defaults to` false`. When set to `true`, the following statements will configure transactions to run under `REPEATABLE READ` isolation, rather than being automatically interpreted as [`SERIALIZABLE`]({% link v24.3/demo-serializable.md %}): - `BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ` - `SET TRANSACTION ISOLATION LEVEL REPEATABLE READ` - `SET default_transaction_isolation = 'repeatable read'` - `SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL REPEATABLE READ` - This setting was added since [`REPEATABLE READ` transactions]({% link v24.3/transactions.md %}#comparison-to-ansi-sql-isolation-levels) is a [preview]({% link v24.3/cockroachdb-feature-availability.md %}) feature, so usage of it is opt-in for v24.3. In a future CockroachDB major version, this setting will change to default to `true`. [#130089][#130089] -- Previously, [`SHOW CHANGEFEED JOBS`]({% link v24.3/show-jobs.md %}#show-changefeed-jobs) showed the changefeed jobs for the last 14 days by default. Now, it uses the same age filter for [`SHOW JOBS`]({% link v24.3/show-jobs.md %}), which shows jobs from the last 12 hours by default. [#127584][#127584] -- Set the default for session variable [`large_full_scan_rows`]({% link v24.3/session-variables.md %}#large-full-scan-rows) to `0`. This means that by default, [`disallow_full_table_scans`]({% link v24.3/session-variables.md %}#disallow-full-table-scans) will disallow **all** [full table scans]({% link v24.3/show-full-table-scans.md %}), even full scans on very small tables. If `large_full_scan_rows` is set > 0, `disallow_full_table_scans` will allow full scans estimated to read fewer than `large_full_scan_rows`. [#131040][#131040] -- It is now possible to create [PL/pgSQL]({% link v24.3/plpgsql.md %}) trigger functions, which can be executed by a trigger in response to table mutation events. Note that this patch does not add support for triggers, only trigger functions. [#126734][#126734] -- Cluster settings [`enterprise.license`]({% link v24.3/cluster-settings.md %}#setting-enterprise-license) and [`diagnostics.reporting.enabled`]({% link v24.3/cluster-settings.md %}#setting-diagnostics-reporting-enabled) now have additional validation. [#131097][#131097] -- The [`SHOW SESSIONS`]({% link v24.3/show-sessions.md %}) command was changed to include an `authentication_method` column in the result. This column will show the method used to authenticate the session, for example, `password`, `cert`, `LDAP`, etc. [#131625][#131625] + This setting was added since [`REPEATABLE READ` transactions]({% link v24.3/transactions.md %}#comparison-to-ansi-sql-isolation-levels) is a [preview]({% link v24.3/cockroachdb-feature-availability.md %}) feature, so usage of it is opt-in for v24.3. In a future CockroachDB major version, this setting will change to default to `true`. +- Previously, [`SHOW CHANGEFEED JOBS`]({% link v24.3/show-jobs.md %}#show-changefeed-jobs) showed the changefeed jobs for the last 14 days by default. Now, it uses the same age filter for [`SHOW JOBS`]({% link v24.3/show-jobs.md %}), which shows jobs from the last 12 hours by default. +- Set the default for session variable [`large_full_scan_rows`]({% link v24.3/session-variables.md %}#large-full-scan-rows) to `0`. This means that by default, [`disallow_full_table_scans`]({% link v24.3/session-variables.md %}#disallow-full-table-scans) will disallow **all** [full table scans]({% link v24.3/show-full-table-scans.md %}), even full scans on very small tables. If `large_full_scan_rows` is set > 0, `disallow_full_table_scans` will allow full scans estimated to read fewer than `large_full_scan_rows`. +- It is now possible to create [PL/pgSQL]({% link v24.3/plpgsql.md %}) trigger functions, which can be executed by a trigger in response to table mutation events. Note that this patch does not add support for triggers, only trigger functions. +- Cluster settings [`enterprise.license`]({% link v24.3/cluster-settings.md %}#setting-enterprise-license) and [`diagnostics.reporting.enabled`]({% link v24.3/cluster-settings.md %}#setting-diagnostics-reporting-enabled) now have additional validation. +- The [`SHOW SESSIONS`]({% link v24.3/show-sessions.md %}) command was changed to include an `authentication_method` column in the result. This column will show the method used to authenticate the session, for example, `password`, `cert`, `LDAP`, etc.

Operational changes

-- [Events]({% link v24.3/eventlog.md %}) `DiskSlownessDetected` and `DiskSlownessCleared` are now logged when disk slowness is detected and cleared on a store. [#127025][#127025] -- Several [cluster settings]({% link v24.3/cluster-settings.md %}) allow you to configure rate-limiting traffic to cloud storage over various protocols. These settings begin with `cloudstorage`. [#127207][#127207] -- The new [cluster setting]({% link v24.3/cluster-settings.md %}) `kv.range.range_size_hard_cap` allows you to limit how large a [range]({% link v24.3/architecture/overview.md %}#architecture-range) can grow before [backpressure]({% link v24.3/common-errors.md %}#split-failed-while-applying-backpressure-are-rows-updated-in-a-tight-loop) is applied. This can help to mitigate against a situation where a range cannot be split, such as when a range is comprised of a single key due to an issue with the schema or workload pattern or a bug in client application code. The default is 8 GiB, which is 16 times the default max range size. If you have changed the max range size, you may need to adjust this cluster setting or reduce the range size. [#129450][#129450] +- [Events]({% link v24.3/eventlog.md %}) `DiskSlownessDetected` and `DiskSlownessCleared` are now logged when disk slowness is detected and cleared on a store. +- Several [cluster settings]({% link v24.3/cluster-settings.md %}) allow you to configure rate-limiting traffic to cloud storage over various protocols. These settings begin with `cloudstorage`. +- The new [cluster setting]({% link v24.3/cluster-settings.md %}) `kv.range.range_size_hard_cap` allows you to limit how large a [range]({% link v24.3/architecture/overview.md %}#architecture-range) can grow before [backpressure]({% link v24.3/common-errors.md %}#split-failed-while-applying-backpressure-are-rows-updated-in-a-tight-loop) is applied. This can help to mitigate against a situation where a range cannot be split, such as when a range is comprised of a single key due to an issue with the schema or workload pattern or a bug in client application code. The default is 8 GiB, which is 16 times the default max range size. If you have changed the max range size, you may need to adjust this cluster setting or reduce the range size. - The following `kvflowcontrol` [metrics]({% link v24.3/metrics.md %}) have been renamed. After a cluster is finalized on v24.3, old and new metrics will be populated. The previous metrics under `kvasdmission.flow_controller` will be removed. Old metric names | New metric names @@ -120,16 +120,16 @@ Release Date: October 9, 2024 `kvadmission.flow_controller.elastic_wait_duration` | `kvflowcontrol.eval_wait.elastic.duration` - [#130167][#130167] + -- The new `ranges.decommissioning` [metric]({% link v24.3/metrics.md %}) shows the number of ranges with a replica on a [decommissioning]({% link v24.3/node-shutdown.md %}) node. [#130117][#130117] +- The new `ranges.decommissioning` [metric]({% link v24.3/metrics.md %}) shows the number of ranges with a replica on a [decommissioning]({% link v24.3/node-shutdown.md %}) node. - New [cluster settings]({% link v24.3/cluster-settings.md %}) have been added which control the refresh behavior for the cached data in the **Databases** page of the [DB Console]({% link v24.3/ui-overview.md %}): - `obs.tablemetadatacache.data_valid_duration`: the duration for which the data in `system.table_metadata` is considered valid before a cache reset will occur. Default: 20 minutes. - `obs.tablemetadatacache.automatic_updates.enabled`: whether to automatically update the cache according the validity interval. Default: `false`. - [#130198][#130198] -- New gauge [metrics]({% link v24.3/metrics.md %}) `security.certificate.expiration.{cert-type}` and `security.certificate.ttl.{cert-type}` show the expiration and TTL for a certificate. [#130110][#130110] -- To set the [logging format]({% link v24.3/log-formats.md %}) for `stderr`, you can now set the `format` field to any valid format, rather than only `crdb-v2-tty`. [#131529][#131529] + +- New gauge [metrics]({% link v24.3/metrics.md %}) `security.certificate.expiration.{cert-type}` and `security.certificate.ttl.{cert-type}` show the expiration and TTL for a certificate. +- To set the [logging format]({% link v24.3/log-formats.md %}) for `stderr`, you can now set the `format` field to any valid format, rather than only `crdb-v2-tty`. - The following new [metrics]({% link v24.3/metrics.md %}) show connection latency for each SQL authentication method: Authentication method | Metric @@ -141,209 +141,89 @@ Release Date: October 9, 2024 Password | `auth_password_conn_latency` SCRAM SHA-256 | `auth_scram_conn_latency` - [#131578][#131578] + -- Verbose logging of slow [Pebble]({% link v24.3/architecture/storage-layer.md %}#pebble) reads can no longer be enabled via the shorthand flag `--vmodule=pebble_logger_and_tracer=2`, where `pebble_logger_and_tracer` contains the CockroachDB implementation of the logger needed by Pebble. Instead, you must list the Pebble files that contain the log statements. For example `--vmodule=reader=2,table=2`. [#127066][#127066] -- The lowest [admission control]({% link v24.3/admission-control.md %}) priority for the storage layer has been renamed from `ttl-low-pri` to `bulk-low-pri`. [#129564][#129564] +- Verbose logging of slow [Pebble]({% link v24.3/architecture/storage-layer.md %}#pebble) reads can no longer be enabled via the shorthand flag `--vmodule=pebble_logger_and_tracer=2`, where `pebble_logger_and_tracer` contains the CockroachDB implementation of the logger needed by Pebble. Instead, you must list the Pebble files that contain the log statements. For example `--vmodule=reader=2,table=2`. +- The lowest [admission control]({% link v24.3/admission-control.md %}) priority for the storage layer has been renamed from `ttl-low-pri` to `bulk-low-pri`. - New clusters will now have a [zone configuration]({% link v24.3/show-zone-configurations.md %}) defined for the `timeseries` range, which specifies `gc.ttlseconds` and inherits all other attributes from the zone config of the `default` range. This zone config will also be added to a cluster that is [upgraded]({% link v24.3/upgrade-cockroach-version.md %}) to v24.3 if it does not already have a zone config defined.[#128032][#128032]

Command-line changes

-- [`cockroach debug tsdump`]({% link v24.3/cockroach-debug-tsdump.md %}) now includes all the available resolutions in the time range supplied by the user. [#127186][#127186] -- Added the flag `--tenant-name-scope` to the [`cert create-client`]({% link v24.3/cockroach-cert.md %}#create-the-certificate-and-key-pair-for-a-client) command. This allows users to generate tenant-scoped [client certificates]({% link v24.3/authentication.md %}#client-authentication) using tenant names in addition to tenant IDs. [#129216][#129216] +- [`cockroach debug tsdump`]({% link v24.3/cockroach-debug-tsdump.md %}) now includes all the available resolutions in the time range supplied by the user. +- Added the flag `--tenant-name-scope` to the [`cert create-client`]({% link v24.3/cockroach-cert.md %}#create-the-certificate-and-key-pair-for-a-client) command. This allows users to generate tenant-scoped [client certificates]({% link v24.3/authentication.md %}#client-authentication) using tenant names in addition to tenant IDs.

DB Console changes

-- If a [range]({% link v24.3/architecture/overview.md %}#architecture-range) is larger than twice the max range size, it will now display in the [**Problem Ranges** page]({% link v24.3/ui-debug-pages.md %}) in the DB Console. [#129001][#129001] -- Updated some metric charts on the [Overview]({% link v24.3/ui-overview-dashboard.md %}) and [Replication]({% link v24.3/ui-replication-dashboard.md %}) dashboards to omit verbose details in the legends for easier browsing. [#129149][#129149] -- Updated the icon for notification alerts to use the new CockroachDB logo. [#130333][#130333] -- The `txn.restarts.writetoooldmulti` metric was rolled into the `txn.restarts.writetooold` metric in the v24.1.0-alpha.1 release. `txn.restarts.writetoooldmulti` has now been removed altogether. [#131642][#131642] -- The grants table in the [DB Details]({% link v24.3/ui-databases-page.md %}#databases) page will now show the database level grants. For example, when clicking a database in the databases list. Previously, it showed grants per table in the database. [#131250][#131250] -- Added new database pages that are available from the side navigation **Databases** link. [#131594][#131594] -- The [DB Console]({% link v24.3/ui-overview.md %}) will reflect any throttling behavior from the cluster due to an expired license or missing telemetry data. Enterprise licenses are not affected. [#131326][#131326] -- Users can hover over the node/region cell in multi-region deployments to view a list of nodes the database or table is on. [#130704][#130704] -- The [**Databases** pages]({% link v24.3/ui-databases-page.md %}) in the DB console have been updated to read cached metadata about database and table storage statistics. The cache update time is now displayed in the top right-hand corner of the database and tables list pages. Users may trigger a cache refresh with the **refresh** icon next to the last updated time. The cache will also update automatically when users visit a **Databases** page and the cache is older than or equal to 20 minutes. [#131463][#131463] +- If a [range]({% link v24.3/architecture/overview.md %}#architecture-range) is larger than twice the max range size, it will now display in the [**Problem Ranges** page]({% link v24.3/ui-debug-pages.md %}) in the DB Console. +- Updated some metric charts on the [Overview]({% link v24.3/ui-overview-dashboard.md %}) and [Replication]({% link v24.3/ui-replication-dashboard.md %}) dashboards to omit verbose details in the legends for easier browsing. +- Updated the icon for notification alerts to use the new CockroachDB logo. +- The `txn.restarts.writetoooldmulti` metric was rolled into the `txn.restarts.writetooold` metric in the v24.1.0-alpha.1 release. `txn.restarts.writetoooldmulti` has now been removed altogether. +- The grants table in the [DB Details]({% link v24.3/ui-databases-page.md %}#databases) page will now show the database level grants. For example, when clicking a database in the databases list. Previously, it showed grants per table in the database. +- Added new database pages that are available from the side navigation **Databases** link. +- The [DB Console]({% link v24.3/ui-overview.md %}) will reflect any throttling behavior from the cluster due to an expired license or missing telemetry data. Enterprise licenses are not affected. +- Users can hover over the node/region cell in multi-region deployments to view a list of nodes the database or table is on. +- The [**Databases** pages]({% link v24.3/ui-databases-page.md %}) in the DB console have been updated to read cached metadata about database and table storage statistics. The cache update time is now displayed in the top right-hand corner of the database and tables list pages. Users may trigger a cache refresh with the **refresh** icon next to the last updated time. The cache will also update automatically when users visit a **Databases** page and the cache is older than or equal to 20 minutes.

Bug fixes

-- Fixed a bug where CockroachDB could incorrectly evaluate an `IS NOT NULL` [filter]({% link v24.3/select-clause.md %}#filter-rows) if it was applied to non-`NULL` tuples that had `NULL` elements (like `(1, NULL)` or `(NULL, NULL)`). The bug was present since v20.2. [#126901][#126901] -- Fixed a bug related to displaying the names of composite types in the [`SHOW CREATE TABLES`]({% link v24.3/show-create.md %}) command. The names are now shown as two-part names, which disambiguates the output and makes it more portable to other databases. [#127158][#127158] -- The `CONCAT()` [built-in function]({% link v24.3/functions-and-operators.md %}) now accepts arguments of any data type. [#127098][#127098] -- Fixed a bug that prevented merged [statistics]({% link v24.3/cost-based-optimizer.md %}#table-statistics) from being created after injecting statistics or recreating [statement bundles]({% link v24.3/explain-analyze.md %}). This would occur when the injected statistics or statement bundle contained related full and partial statistics. [#127252][#127252] +- Fixed a bug where CockroachDB could incorrectly evaluate an `IS NOT NULL` [filter]({% link v24.3/select-clause.md %}#filter-rows) if it was applied to non-`NULL` tuples that had `NULL` elements (like `(1, NULL)` or `(NULL, NULL)`). The bug was present since v20.2. +- Fixed a bug related to displaying the names of composite types in the [`SHOW CREATE TABLES`]({% link v24.3/show-create.md %}) command. The names are now shown as two-part names, which disambiguates the output and makes it more portable to other databases. +- The `CONCAT()` [built-in function]({% link v24.3/functions-and-operators.md %}) now accepts arguments of any data type. +- Fixed a bug that prevented merged [statistics]({% link v24.3/cost-based-optimizer.md %}#table-statistics) from being created after injecting statistics or recreating [statement bundles]({% link v24.3/explain-analyze.md %}). This would occur when the injected statistics or statement bundle contained related full and partial statistics. - Fixed a bug where CockroachDB could encounter spurious `(error encountered after some results were delivered)` `ERROR: context canceled` errors in rare cases when evaluating some queries. The bug was present since v22.2. The conditions that triggered the bug were queries that: - Had to be executed locally. - Had a [`LIMIT`]({% link v24.3/limit-offset.md %}). - Have at least two [`UNION`]({% link v24.3/selection-queries.md %}#union-combine-two-queries) clauses. - - Have some lookup or index [joins]({% link v24.3/joins.md %}) in the `UNION` branches. [#127076][#127076] -- Updated the restore [job]({% link v24.3/show-jobs.md %}) description from `RESTORE ... FROM` to `RESTORE FROM {backup} IN {collectionURI}` to reflect the new [`RESTORE`]({% link v24.3/restore.md %}) syntax. [#127970][#127970] -- Fixed a bug that could cause a `CASE` statement with multiple [subqueries]({% link v24.3/subqueries.md %}) to produces the side effects of one of the subqueries even if that subquery shouldn't have been evaluated. [#120327][#120327] -- Changed the [schema changer]({% link v24.3/online-schema-changes.md %})’s merge process so that it can detect [contention errors]({% link v24.3/transaction-retry-error-reference.md %}) and automatically retry with a smaller batch size. This makes the merge process more likely to succeed without needing to manually tune settings. [#128201][#128201] -- [`SHOW CREATE ALL TYPES`]({% link v24.3/show-create.md %}) now shows corresponding type comments in its output. [#128084][#128084] -- Enforce the [`statement_timeout` session setting]({% link v24.3/session-variables.md %}) when waiting for [jobs]({% link v24.3/show-jobs.md %}) after a [schema change]({% link v24.3/online-schema-changes.md %}) in an [implicit transaction]({% link v24.3/transactions.md %}#individual-statements). [#128474][#128474] -- Fixed a bug where certain dropdowns in the [DB Console]({% link v24.3/ui-overview.md %}) appeared to be empty (with no options to select from) for users of the Safari browser. [#128996][#128996] -- Fixed a bug that would cause the [`hlc_to_timestamp` function]({% link v24.3/functions-and-operators.md %}) to return an incorrect [timestamp]({% link v24.3/timestamp.md %}) for some input [decimals]({% link v24.3/decimal.md %}). [#129153][#129153] -- Fixed a memory leak where [statement insight]({% link v24.3/ui-statements-page.md %}) objects could leak if the session was closed without the [transaction]({% link v24.3/transactions.md %}) finishing. [#128400][#128400] -- Fixed a bug in the public preview [WAL failover]({% link v24.3/cockroach-start.md %}#write-ahead-log-wal-failover) feature that could prevent a node from starting if it crashed during a failover. [#129331][#129331] -- Fixed a bug where `'infinity'::TIMESTAMP` returned a different result than PostgreSQL. [#127141][#127141] -- Fixed a spurious error log from the [replication queue]({% link v24.3/ui-queues-dashboard.md %}#replication-queue) involving the text `" needs lease, not adding"`. [#129351][#129351] -- Using more than one [`DECLARE`]({% link v24.3/plpgsql.md %}#structure) statement in the definition of a [user-defined function]({% link v24.3/user-defined-functions.md %}) now correctly declares additional variables. [#129951][#129951] -- Fixed a bug in which some [`SELECT FOR UPDATE`]({% link v24.3/select-for-update.md %}) or [`SELECT FOR SHARE`]({% link v24.3/select-for-update.md %}) queries using `NOWAIT` could still block on locked rows when using the `optimizer_use_lock_op_for_serializable` [session setting]({% link v24.3/session-variables.md %}) under [serializable]({% link v24.3/demo-serializable.md %}) isolation. This bug was introduced with `optimizer_use_lock_op_for_serializable` in v23.2.0. [#130103][#130103] -- Fixed a bug in the [upgrade]({% link v24.3/upgrade-cockroach-version.md %}) pre-condition for repairing descriptor corruption that could lead to finalization being stuck. [#130064][#130064] -- Fixed a bug that caused the optimizer to plan unnecessary post-query uniqueness checks during [`INSERT`]({% link v24.3/insert.md %}), [`UPSERT`]({% link v24.3/upsert.md %}), and [`UPDATE`]({% link v24.3/update.md %}) statements on tables with partial, unique, [hash-sharded indexes]({% link v24.3/hash-sharded-indexes.md %}). These unnecessary checks added overhead to execution of these statements, and caused the statements to error when executed under [`READ COMMITTED` isolation]({% link v24.3/read-committed.md %}). [#130366][#130366] -- Fixed a bug that caused incorrect evaluation of `CASE`, [`COALESCE`]({% link v24.3/functions-and-operators.md %}#conditional-and-function-like-operators), and [`IF`]({% link v24.3/functions-and-operators.md %}#conditional-and-function-like-operators) expressions with branches producing fixed-width string-like types, such as [`CHAR`]({% link v24.3/string.md %}). In addition, the `BPCHAR` type no longer incorrectly imposes a length limit of `1`. [#129007][#129007] -- Fixed a bug where [zone configuration]({% link v24.3/configure-replication-zones.md %}) changes issued by the [declarative schema changer]({% link v24.3/online-schema-changes.md %}) were not blocked if a table had the `schema_locked` [storage parameter]({% link v24.3/with-storage-parameter.md %}) set. [#130670][#130670] -- Fixed a bug that could prevent a [`CHANGEFEED`]({% link v24.3/changefeed-examples.md %}) from being able to resume after being paused for a prolonged period of time. [#130622][#130622] -- Fixed a bug where if a client connection was attempting a [schema change]({% link v24.3/online-schema-changes.md %}) while the same [schema objects]({% link v24.3/schema-design-overview.md %}) were being dropped, it was possible for the connection to be incorrectly dropped. [#130928][#130928] + - Have some lookup or index [joins]({% link v24.3/joins.md %}) in the `UNION` branches. +- Updated the restore [job]({% link v24.3/show-jobs.md %}) description from `RESTORE ... FROM` to `RESTORE FROM {backup} IN {collectionURI}` to reflect the new [`RESTORE`]({% link v24.3/restore.md %}) syntax. +- Fixed a bug that could cause a `CASE` statement with multiple [subqueries]({% link v24.3/subqueries.md %}) to produces the side effects of one of the subqueries even if that subquery shouldn't have been evaluated. +- Changed the [schema changer]({% link v24.3/online-schema-changes.md %})’s merge process so that it can detect [contention errors]({% link v24.3/transaction-retry-error-reference.md %}) and automatically retry with a smaller batch size. This makes the merge process more likely to succeed without needing to manually tune settings. +- [`SHOW CREATE ALL TYPES`]({% link v24.3/show-create.md %}) now shows corresponding type comments in its output. +- Enforce the [`statement_timeout` session setting]({% link v24.3/session-variables.md %}) when waiting for [jobs]({% link v24.3/show-jobs.md %}) after a [schema change]({% link v24.3/online-schema-changes.md %}) in an [implicit transaction]({% link v24.3/transactions.md %}#individual-statements). +- Fixed a bug where certain dropdowns in the [DB Console]({% link v24.3/ui-overview.md %}) appeared to be empty (with no options to select from) for users of the Safari browser. +- Fixed a bug that would cause the [`hlc_to_timestamp` function]({% link v24.3/functions-and-operators.md %}) to return an incorrect [timestamp]({% link v24.3/timestamp.md %}) for some input [decimals]({% link v24.3/decimal.md %}). +- Fixed a memory leak where [statement insight]({% link v24.3/ui-statements-page.md %}) objects could leak if the session was closed without the [transaction]({% link v24.3/transactions.md %}) finishing. +- Fixed a bug in the public preview [WAL failover]({% link v24.3/cockroach-start.md %}#write-ahead-log-wal-failover) feature that could prevent a node from starting if it crashed during a failover. +- Fixed a bug where `'infinity'::TIMESTAMP` returned a different result than PostgreSQL. +- Fixed a spurious error log from the [replication queue]({% link v24.3/ui-queues-dashboard.md %}#replication-queue) involving the text `" needs lease, not adding"`. +- Using more than one [`DECLARE`]({% link v24.3/plpgsql.md %}#structure) statement in the definition of a [user-defined function]({% link v24.3/user-defined-functions.md %}) now correctly declares additional variables. +- Fixed a bug in which some [`SELECT FOR UPDATE`]({% link v24.3/select-for-update.md %}) or [`SELECT FOR SHARE`]({% link v24.3/select-for-update.md %}) queries using `NOWAIT` could still block on locked rows when using the `optimizer_use_lock_op_for_serializable` [session setting]({% link v24.3/session-variables.md %}) under [serializable]({% link v24.3/demo-serializable.md %}) isolation. This bug was introduced with `optimizer_use_lock_op_for_serializable` in v23.2.0. +- Fixed a bug in the [upgrade]({% link v24.3/upgrade-cockroach-version.md %}) pre-condition for repairing descriptor corruption that could lead to finalization being stuck. +- Fixed a bug that caused the optimizer to plan unnecessary post-query uniqueness checks during [`INSERT`]({% link v24.3/insert.md %}), [`UPSERT`]({% link v24.3/upsert.md %}), and [`UPDATE`]({% link v24.3/update.md %}) statements on tables with partial, unique, [hash-sharded indexes]({% link v24.3/hash-sharded-indexes.md %}). These unnecessary checks added overhead to execution of these statements, and caused the statements to error when executed under [`READ COMMITTED` isolation]({% link v24.3/read-committed.md %}). +- Fixed a bug that caused incorrect evaluation of `CASE`, [`COALESCE`]({% link v24.3/functions-and-operators.md %}#conditional-and-function-like-operators), and [`IF`]({% link v24.3/functions-and-operators.md %}#conditional-and-function-like-operators) expressions with branches producing fixed-width string-like types, such as [`CHAR`]({% link v24.3/string.md %}). In addition, the `BPCHAR` type no longer incorrectly imposes a length limit of `1`. +- Fixed a bug where [zone configuration]({% link v24.3/configure-replication-zones.md %}) changes issued by the [declarative schema changer]({% link v24.3/online-schema-changes.md %}) were not blocked if a table had the `schema_locked` [storage parameter]({% link v24.3/with-storage-parameter.md %}) set. +- Fixed a bug that could prevent a [`CHANGEFEED`]({% link v24.3/changefeed-examples.md %}) from being able to resume after being paused for a prolonged period of time. +- Fixed a bug where if a client connection was attempting a [schema change]({% link v24.3/online-schema-changes.md %}) while the same [schema objects]({% link v24.3/schema-design-overview.md %}) were being dropped, it was possible for the connection to be incorrectly dropped. - Fixed a bug introduced in v23.1 that could cause incorrect results when: 1. The query contained a [correlated subquery]({% link v24.3/subqueries.md %}#correlated-subqueries). 2. The correlated subquery had a [`GROUP BY`]({% link v24.3/select-clause.md %}#group-by-an-alias) or [`DISTINCT`]({% link v24.3/performance-best-practices-overview.md %}#avoid-select-distinct-for-large-tables) operator with an outer-column reference in its input. 3. The correlated subquery was in the input of a [`SELECT`]({% link v24.3/select-clause.md %}) or [`JOIN`]({% link v24.3/joins.md %}) operator. 4. The `SELECT` or `JOIN` had a filter that set the outer-column reference from (2) equal to a non-outer column in the input of the grouping operator. - 5. The grouping column set did not include the replacement column, and functionally determined the replacement column. [#130925][#130925] -- Fixed a bug which could cause errors with the message `"internal error: Non-nullable column ..."` when executing statements under [`READ COMMITTED`]({% link v24.3/read-committed.md %}) isolation that involved tables with `NOT NULL` [virtual columns]({% link v24.3/computed-columns.md %}#create-a-virtual-computed-column-using-jsonb-data). [#130725][#130725] -- Fixed a bug that could cause a very rare internal error `"lists in SetPrivate are not all the same length"` when executing queries. [#130981][#130981] -- Fixed a bug that could cause incorrect evaluation of [scalar expressions]({% link v24.3/scalar-expressions.md %}) involving `NULL` values in rare cases. [#128123][#128123] -- [`SHOW CREATE ALL SCHEMAS`]({% link v24.3/show-create.md %}) now shows corresponding schema comments in its output. [#130164][#130164] -- Fixed a bug, introduced in v23.2.0, where creating a new [incremental schedule]({% link v24.3/take-full-and-incremental-backups.md %}#incremental-backups) (using [`ALTER BACKUP SCHEDULE`]({% link v24.3/alter-backup-schedule.md %})) on a [full backup schedule]({% link v24.3/take-full-and-incremental-backups.md %}#full-backups) created on an older version would fail. [#131231][#131231] -- Fixed a bug that could cause an internal error if a table with an implicit (`rowid`) [primary key]({% link v24.3/primary-key.md %}) was locked from within a [subquery]({% link v24.3/subqueries.md %}) like ` SELECT * FROM (SELECT * FROM foo WHERE x = 2) FOR UPDATE;`. The error could occur either under [`READ COMMITTED`]({% link v24.3/read-committed.md %}) isolation, or with the `optimizer_use_lock_op_for_serializable` [session setting]({% link v24.3/session-variables.md %}) enabled. [#129768][#129768] -- Fixed a bug where [jobs]({% link v24.3/show-jobs.md %}) created in a session with non-zero session [timezone offsets]({% link v24.3/set-vars.md %}#set-time-zone) could hang before starting, or report incorrect creation times when viewed in [`SHOW JOBS`]({% link v24.3/show-jobs.md %}) and the [DB Console]({% link v24.3/ui-overview.md %}). [#123632][#123632] -- Fixed a bug which could result in [changefeeds using CDC queries]({% link v24.3/create-schedule-for-changefeed.md %}#create-a-scheduled-changefeed-with-cdc-queries) failing due to a system table being [garbage collected]({% link v24.3/architecture/storage-layer.md %}#garbage-collection). [#131027][#131027] -- [`ALTER COLUMN TYPE`]({% link v24.3/alter-table.md %}#convert-to-a-different-data-type) now errors out when there is a [partial index]({% link v24.3/partial-indexes.md %}) that is dependent on the column being altered. [#131590][#131590] -- Fixed a bug that prevented buffered file sinks from being included when iterating over all file sinks. This led to problems such as the `debug zip` command not being able to fetch logs for a cluster where buffering was enabled. [#130158][#130158] -- Fixed a bug where backup schedules could advance a protected timestamp too early, which caused incremental backups to fail. [#131358][#131358] + 5. The grouping column set did not include the replacement column, and functionally determined the replacement column. +- Fixed a bug which could cause errors with the message `"internal error: Non-nullable column ..."` when executing statements under [`READ COMMITTED`]({% link v24.3/read-committed.md %}) isolation that involved tables with `NOT NULL` [virtual columns]({% link v24.3/computed-columns.md %}#create-a-virtual-computed-column-using-jsonb-data). +- Fixed a bug that could cause a very rare internal error `"lists in SetPrivate are not all the same length"` when executing queries. +- Fixed a bug that could cause incorrect evaluation of [scalar expressions]({% link v24.3/scalar-expressions.md %}) involving `NULL` values in rare cases. +- [`SHOW CREATE ALL SCHEMAS`]({% link v24.3/show-create.md %}) now shows corresponding schema comments in its output. +- Fixed a bug, introduced in v23.2.0, where creating a new [incremental schedule]({% link v24.3/take-full-and-incremental-backups.md %}#incremental-backups) (using [`ALTER BACKUP SCHEDULE`]({% link v24.3/alter-backup-schedule.md %})) on a [full backup schedule]({% link v24.3/take-full-and-incremental-backups.md %}#full-backups) created on an older version would fail. +- Fixed a bug that could cause an internal error if a table with an implicit (`rowid`) [primary key]({% link v24.3/primary-key.md %}) was locked from within a [subquery]({% link v24.3/subqueries.md %}) like ` SELECT * FROM (SELECT * FROM foo WHERE x = 2) FOR UPDATE;`. The error could occur either under [`READ COMMITTED`]({% link v24.3/read-committed.md %}) isolation, or with the `optimizer_use_lock_op_for_serializable` [session setting]({% link v24.3/session-variables.md %}) enabled. +- Fixed a bug where [jobs]({% link v24.3/show-jobs.md %}) created in a session with non-zero session [timezone offsets]({% link v24.3/set-vars.md %}#set-time-zone) could hang before starting, or report incorrect creation times when viewed in [`SHOW JOBS`]({% link v24.3/show-jobs.md %}) and the [DB Console]({% link v24.3/ui-overview.md %}). +- Fixed a bug which could result in [changefeeds using CDC queries]({% link v24.3/create-schedule-for-changefeed.md %}#create-a-scheduled-changefeed-with-cdc-queries) failing due to a system table being [garbage collected]({% link v24.3/architecture/storage-layer.md %}#garbage-collection). +- [`ALTER COLUMN TYPE`]({% link v24.3/alter-table.md %}#convert-to-a-different-data-type) now errors out when there is a [partial index]({% link v24.3/partial-indexes.md %}) that is dependent on the column being altered. +- Fixed a bug that prevented buffered file sinks from being included when iterating over all file sinks. This led to problems such as the `debug zip` command not being able to fetch logs for a cluster where buffering was enabled. +- Fixed a bug where backup schedules could advance a protected timestamp too early, which caused incremental backups to fail.

Performance improvements

-- [Raft log]({% link v24.3/architecture/replication-layer.md %}#raft-logs) sync callback handling is now parallelized, which can improve write-heavy workload performance on large, single-store nodes. [#126523][#126523] -- [Planning time]({% link v24.3/cost-based-optimizer.md %}) for complex queries has been reduced. [#128049][#128049] -- Reduced the [write-amplification]({% link v24.3/architecture/storage-layer.md %}#write-amplification) impact of [rebalances]({% link v24.3/architecture/replication-layer.md %}) by splitting snapshot SSTable files into smaller ones before ingesting them into [Pebble]({% link v24.3/architecture/storage-layer.md %}#pebble). [#127997][#127997] -- Improved the performance of [job-system]({% link v24.3/show-jobs.md %}) related queries. [#123848][#123848] -- The [query optimizer]({% link v24.3/cost-based-optimizer.md %}) now plans limited, [partial-index scans]({% link v24.3/partial-indexes.md %}) in more cases. [#129901][#129901] -- The initialization of the execution engine for a query is now more efficient when the [query plan]({% link v24.3/cost-based-optimizer.md %}) contains [aggregate functions]({% link v24.3/functions-and-operators.md %}#aggregate-functions). [#130834][#130834] -- Enabled multi-level [compactions]({% link v24.3/architecture/storage-layer.md %}#compaction) that moderately reduce [write amplification]({% link v24.3/architecture/storage-layer.md %}#write-amplification) within the [storage engine]({% link v24.3/architecture/storage-layer.md %}). [#131378][#131378] -- Increased the per-vCPU concurrency limits for KV operations. Specifically, increased the `kv.dist_sender.concurrency_limit` [cluster setting]({% link v24.3/cluster-settings.md %}) to 384/vCPU (up from 64/vCPU) and `kv.streamer.concurrency_limit` to 96/vCPU (up from 8/vCPU). [#131226][#131226] -- The [optimizer]({% link v24.3/cost-based-optimizer.md %}) now plans more efficient [lookup joins]({% link v24.3/joins.md %}#lookup-joins) in some cases. [#131383][#131383] +- [Raft log]({% link v24.3/architecture/replication-layer.md %}#raft-logs) sync callback handling is now parallelized, which can improve write-heavy workload performance on large, single-store nodes. +- [Planning time]({% link v24.3/cost-based-optimizer.md %}) for complex queries has been reduced. +- Reduced the [write-amplification]({% link v24.3/architecture/storage-layer.md %}#write-amplification) impact of [rebalances]({% link v24.3/architecture/replication-layer.md %}) by splitting snapshot SSTable files into smaller ones before ingesting them into [Pebble]({% link v24.3/architecture/storage-layer.md %}#pebble). +- Improved the performance of [job-system]({% link v24.3/show-jobs.md %}) related queries. +- The [query optimizer]({% link v24.3/cost-based-optimizer.md %}) now plans limited, [partial-index scans]({% link v24.3/partial-indexes.md %}) in more cases. +- The initialization of the execution engine for a query is now more efficient when the [query plan]({% link v24.3/cost-based-optimizer.md %}) contains [aggregate functions]({% link v24.3/functions-and-operators.md %}#aggregate-functions). +- Enabled multi-level [compactions]({% link v24.3/architecture/storage-layer.md %}#compaction) that moderately reduce [write amplification]({% link v24.3/architecture/storage-layer.md %}#write-amplification) within the [storage engine]({% link v24.3/architecture/storage-layer.md %}). +- Increased the per-vCPU concurrency limits for KV operations. Specifically, increased the `kv.dist_sender.concurrency_limit` [cluster setting]({% link v24.3/cluster-settings.md %}) to 384/vCPU (up from 64/vCPU) and `kv.streamer.concurrency_limit` to 96/vCPU (up from 8/vCPU). +- The [optimizer]({% link v24.3/cost-based-optimizer.md %}) now plans more efficient [lookup joins]({% link v24.3/joins.md %}#lookup-joins) in some cases.

Build changes

-- Changed the AWS SDK version used for interactions with external storage from v1 to v2. [#129938][#129938] - -[#120327]: https://github.com/cockroachdb/cockroach/pull/120327 -[#123632]: https://github.com/cockroachdb/cockroach/pull/123632 -[#123848]: https://github.com/cockroachdb/cockroach/pull/123848 -[#125456]: https://github.com/cockroachdb/cockroach/pull/125456 -[#126523]: https://github.com/cockroachdb/cockroach/pull/126523 -[#126734]: https://github.com/cockroachdb/cockroach/pull/126734 -[#126901]: https://github.com/cockroachdb/cockroach/pull/126901 -[#126948]: https://github.com/cockroachdb/cockroach/pull/126948 -[#126970]: https://github.com/cockroachdb/cockroach/pull/126970 -[#127025]: https://github.com/cockroachdb/cockroach/pull/127025 -[#127066]: https://github.com/cockroachdb/cockroach/pull/127066 -[#127076]: https://github.com/cockroachdb/cockroach/pull/127076 -[#127098]: https://github.com/cockroachdb/cockroach/pull/127098 -[#127141]: https://github.com/cockroachdb/cockroach/pull/127141 -[#127145]: https://github.com/cockroachdb/cockroach/pull/127145 -[#127158]: https://github.com/cockroachdb/cockroach/pull/127158 -[#127186]: https://github.com/cockroachdb/cockroach/pull/127186 -[#127207]: https://github.com/cockroachdb/cockroach/pull/127207 -[#127252]: https://github.com/cockroachdb/cockroach/pull/127252 -[#127584]: https://github.com/cockroachdb/cockroach/pull/127584 -[#127701]: https://github.com/cockroachdb/cockroach/pull/127701 -[#127816]: https://github.com/cockroachdb/cockroach/pull/127816 -[#127827]: https://github.com/cockroachdb/cockroach/pull/127827 -[#127836]: https://github.com/cockroachdb/cockroach/pull/127836 -[#127850]: https://github.com/cockroachdb/cockroach/pull/127850 -[#127970]: https://github.com/cockroachdb/cockroach/pull/127970 -[#127997]: https://github.com/cockroachdb/cockroach/pull/127997 -[#128032]: https://github.com/cockroachdb/cockroach/pull/128032 -[#128049]: https://github.com/cockroachdb/cockroach/pull/128049 -[#128084]: https://github.com/cockroachdb/cockroach/pull/128084 -[#128123]: https://github.com/cockroachdb/cockroach/pull/128123 -[#128170]: https://github.com/cockroachdb/cockroach/pull/128170 -[#128201]: https://github.com/cockroachdb/cockroach/pull/128201 -[#128400]: https://github.com/cockroachdb/cockroach/pull/128400 -[#128474]: https://github.com/cockroachdb/cockroach/pull/128474 -[#128498]: https://github.com/cockroachdb/cockroach/pull/128498 -[#128506]: https://github.com/cockroachdb/cockroach/pull/128506 -[#128788]: https://github.com/cockroachdb/cockroach/pull/128788 -[#128794]: https://github.com/cockroachdb/cockroach/pull/128794 -[#128813]: https://github.com/cockroachdb/cockroach/pull/128813 -[#128842]: https://github.com/cockroachdb/cockroach/pull/128842 -[#128996]: https://github.com/cockroachdb/cockroach/pull/128996 -[#129001]: https://github.com/cockroachdb/cockroach/pull/129001 -[#129007]: https://github.com/cockroachdb/cockroach/pull/129007 -[#129024]: https://github.com/cockroachdb/cockroach/pull/129024 -[#129052]: https://github.com/cockroachdb/cockroach/pull/129052 -[#129149]: https://github.com/cockroachdb/cockroach/pull/129149 -[#129153]: https://github.com/cockroachdb/cockroach/pull/129153 -[#129216]: https://github.com/cockroachdb/cockroach/pull/129216 -[#129331]: https://github.com/cockroachdb/cockroach/pull/129331 -[#129351]: https://github.com/cockroachdb/cockroach/pull/129351 -[#129378]: https://github.com/cockroachdb/cockroach/pull/129378 -[#129450]: https://github.com/cockroachdb/cockroach/pull/129450 -[#129564]: https://github.com/cockroachdb/cockroach/pull/129564 -[#129768]: https://github.com/cockroachdb/cockroach/pull/129768 -[#129840]: https://github.com/cockroachdb/cockroach/pull/129840 -[#129846]: https://github.com/cockroachdb/cockroach/pull/129846 -[#129901]: https://github.com/cockroachdb/cockroach/pull/129901 -[#129938]: https://github.com/cockroachdb/cockroach/pull/129938 -[#129946]: https://github.com/cockroachdb/cockroach/pull/129946 -[#129951]: https://github.com/cockroachdb/cockroach/pull/129951 -[#130064]: https://github.com/cockroachdb/cockroach/pull/130064 -[#130089]: https://github.com/cockroachdb/cockroach/pull/130089 -[#130103]: https://github.com/cockroachdb/cockroach/pull/130103 -[#130110]: https://github.com/cockroachdb/cockroach/pull/130110 -[#130117]: https://github.com/cockroachdb/cockroach/pull/130117 -[#130158]: https://github.com/cockroachdb/cockroach/pull/130158 -[#130164]: https://github.com/cockroachdb/cockroach/pull/130164 -[#130167]: https://github.com/cockroachdb/cockroach/pull/130167 -[#130198]: https://github.com/cockroachdb/cockroach/pull/130198 -[#130333]: https://github.com/cockroachdb/cockroach/pull/130333 -[#130366]: https://github.com/cockroachdb/cockroach/pull/130366 -[#130418]: https://github.com/cockroachdb/cockroach/pull/130418 -[#130576]: https://github.com/cockroachdb/cockroach/pull/130576 -[#130622]: https://github.com/cockroachdb/cockroach/pull/130622 -[#130670]: https://github.com/cockroachdb/cockroach/pull/130670 -[#130704]: https://github.com/cockroachdb/cockroach/pull/130704 -[#130725]: https://github.com/cockroachdb/cockroach/pull/130725 -[#130834]: https://github.com/cockroachdb/cockroach/pull/130834 -[#130897]: https://github.com/cockroachdb/cockroach/pull/130897 -[#130925]: https://github.com/cockroachdb/cockroach/pull/130925 -[#130928]: https://github.com/cockroachdb/cockroach/pull/130928 -[#130981]: https://github.com/cockroachdb/cockroach/pull/130981 -[#131027]: https://github.com/cockroachdb/cockroach/pull/131027 -[#131040]: https://github.com/cockroachdb/cockroach/pull/131040 -[#131043]: https://github.com/cockroachdb/cockroach/pull/131043 -[#131097]: https://github.com/cockroachdb/cockroach/pull/131097 -[#131150]: https://github.com/cockroachdb/cockroach/pull/131150 -[#131151]: https://github.com/cockroachdb/cockroach/pull/131151 -[#131226]: https://github.com/cockroachdb/cockroach/pull/131226 -[#131231]: https://github.com/cockroachdb/cockroach/pull/131231 -[#131250]: https://github.com/cockroachdb/cockroach/pull/131250 -[#131309]: https://github.com/cockroachdb/cockroach/pull/131309 -[#131326]: https://github.com/cockroachdb/cockroach/pull/131326 -[#131358]: https://github.com/cockroachdb/cockroach/pull/131358 -[#131378]: https://github.com/cockroachdb/cockroach/pull/131378 -[#131383]: https://github.com/cockroachdb/cockroach/pull/131383 -[#131396]: https://github.com/cockroachdb/cockroach/pull/131396 -[#131422]: https://github.com/cockroachdb/cockroach/pull/131422 -[#131463]: https://github.com/cockroachdb/cockroach/pull/131463 -[#131480]: https://github.com/cockroachdb/cockroach/pull/131480 -[#131529]: https://github.com/cockroachdb/cockroach/pull/131529 -[#131578]: https://github.com/cockroachdb/cockroach/pull/131578 -[#131590]: https://github.com/cockroachdb/cockroach/pull/131590 -[#131594]: https://github.com/cockroachdb/cockroach/pull/131594 -[#131625]: https://github.com/cockroachdb/cockroach/pull/131625 -[#131642]: https://github.com/cockroachdb/cockroach/pull/131642 -[#131661]: https://github.com/cockroachdb/cockroach/pull/131661 -[#131686]: https://github.com/cockroachdb/cockroach/pull/131686 -[#131687]: https://github.com/cockroachdb/cockroach/pull/131687 -[#131688]: https://github.com/cockroachdb/cockroach/pull/131688 -[#131689]: https://github.com/cockroachdb/cockroach/pull/131689 -[#131690]: https://github.com/cockroachdb/cockroach/pull/131690 -[#131691]: https://github.com/cockroachdb/cockroach/pull/131691 -[#131693]: https://github.com/cockroachdb/cockroach/pull/131693 -[#131717]: https://github.com/cockroachdb/cockroach/pull/131717 -[#131777]: https://github.com/cockroachdb/cockroach/pull/131777 -[#131778]: https://github.com/cockroachdb/cockroach/pull/131778 -[#93067]: https://github.com/cockroachdb/cockroach/pull/93067 +- Changed the AWS SDK version used for interactions with external storage from v1 to v2. diff --git a/src/current/_includes/releases/v24.3/v24.3.0-alpha.2.md b/src/current/_includes/releases/v24.3/v24.3.0-alpha.2.md index 317b4731bfd..b2b5ceac9a3 100644 --- a/src/current/_includes/releases/v24.3/v24.3.0-alpha.2.md +++ b/src/current/_includes/releases/v24.3/v24.3.0-alpha.2.md @@ -6,22 +6,22 @@ Release Date: October 14, 2024

Security updates

-- The parameters for an [HBA config entry]({% link v24.3/security-reference/authentication.md %}#hba-configuration-syntax) for LDAP are now validated when the entry is created or amended, in addition to the validation that happens during an authentication attempt. [#132086][#132086] +- The parameters for an [HBA config entry]({% link v24.3/security-reference/authentication.md %}#hba-configuration-syntax) for LDAP are now validated when the entry is created or amended, in addition to the validation that happens during an authentication attempt. -- Added automatic cleanup and validation for [default privileges]({% link v24.3/security-reference/authorization.md%}#default-privileges) that reference dropped roles after a major-version upgrade to v24.3. [#131782][#131782] +- Added automatic cleanup and validation for [default privileges]({% link v24.3/security-reference/authorization.md%}#default-privileges) that reference dropped roles after a major-version upgrade to v24.3.

General changes

-- Changed the license `cockroach` is distributed under to the new CockroachDB Software License (CSL). [#131799][#131799] [#131794][#131794] [#131793][#131793] +- Changed the license `cockroach` is distributed under to the new CockroachDB Software License (CSL).

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

-- You can now [authenticate to the DB console API]({% link v24.3/ui-overview.md %}#authentication) by supplying a Java Web Token (JWT) as a Bearer token in the Authorization header. [#130779][#130779] +- You can now [authenticate to the DB console API]({% link v24.3/ui-overview.md %}#authentication) by supplying a Java Web Token (JWT) as a Bearer token in the Authorization header.

SQL language changes

-- To view comments on a type, you can use the new [`SHOW TYPES WITH COMMENT`]({% link v24.3/show-types.md %}#) command. Comments can be added using [`COMMENT ON`]({% link v24.3/comment-on.md %}). [#131183][#131183] -- You can create or alter a [user-defined function (UDF)]({% link v24.3/user-defined-functions.md %}) or [stored procedure (SP)]({% link v24.3/stored-procedures.md %}) with `[EXTERNAL] SECURITY DEFINER` instead of the default `[EXTERNAL] SECURITY INVOKER`. With `SECURITY DEFINER`, the privileges of the owner are checked when the UDF or SP is executed, rather than the privileges of the executor. The `EXTERNAL` keyword is optional and exists for SQL language conformity. [#129720][#129720] +- To view comments on a type, you can use the new [`SHOW TYPES WITH COMMENT`]({% link v24.3/show-types.md %}#) command. Comments can be added using [`COMMENT ON`]({% link v24.3/comment-on.md %}). +- You can create or alter a [user-defined function (UDF)]({% link v24.3/user-defined-functions.md %}) or [stored procedure (SP)]({% link v24.3/stored-procedures.md %}) with `[EXTERNAL] SECURITY DEFINER` instead of the default `[EXTERNAL] SECURITY INVOKER`. With `SECURITY DEFINER`, the privileges of the owner are checked when the UDF or SP is executed, rather than the privileges of the executor. The `EXTERNAL` keyword is optional and exists for SQL language conformity.

Operational changes

@@ -36,7 +36,7 @@ Release Date: October 14, 2024 - `kvflowcontrol.send_queue.scheduled.deducted_bytes` - `kvflowcontrol.send_queue.scheduled.force_flush` - [#131857][#131857] + - The following [metrics]({% link v24.3/metrics.md %}) have been renamed: @@ -47,48 +47,25 @@ Release Date: October 14, 2024 `kvflowcontrol.tokens.send.regular.disconnected` | `kvflowcontrol.tokens.send.regular.returned.disconnect` `kvflowcontrol.tokens.send.elastic.disconnected` | `kvflowcontrol.tokens.send.elastic.returned.disconnect` - [#131857][#131857] +

Cluster virtualization changes

-- The `_status/ranges/` endpoint on DB Console [Advanced debug pages]({% link v24.3/ui-debug-pages.md %}) is now enabled for non-system virtual clusters, where it returns the ranges only for the tenant you are logged into. For the system virtual cluster, the `_status/ranges/` endpoint continues to return ranges for the specified node across all virtual clusters. [#131100][#131100] +- The `_status/ranges/` endpoint on DB Console [Advanced debug pages]({% link v24.3/ui-debug-pages.md %}) is now enabled for non-system virtual clusters, where it returns the ranges only for the tenant you are logged into. For the system virtual cluster, the `_status/ranges/` endpoint continues to return ranges for the specified node across all virtual clusters.

DB Console changes

-- Improved performance in the **Databases**, **Tables View**, and **Table Details** sections of the [**Databases page**]({% link v24.3/ui-databases-page.md %}) [#131769][#131769] +- Improved performance in the **Databases**, **Tables View**, and **Table Details** sections of the [**Databases page**]({% link v24.3/ui-databases-page.md %})

Bug fixes

-- Fixed a bug where JSON values returned by `cockroach` commands using the `--format=sql` flag were not correctly escaped if they contained double quotes within a string. [#131881][#131881] -- Fixed an error that could happen if an [aggregate function]({% link v24.3/functions-and-operators.md %}#aggregate-functions) was used as the value in a `SET` command. [#131891][#131891] -- Fixed a rare bug introduced in v22.2 in which an update of a [primary key]({% link v24.3/primary-key.md %}) column could fail to update the primary index if it is also the only column in a separate column family. [#131869][#131869] -- Fixed a rare bug where dropping a column of `FLOAT4`, `FLOAT8`, `DECIMAL`, `JSON`, `ARRAY`, or collate `STRING` type stored in a single [column family]({% link v24.3/column-families.md %}) could prevent subsequent reading of the table if the column family was not the first column family. [#131967][#131967] -- Fixed an `unimplemented` internal error that could occur when ordering by a [`VECTOR`]({% link v24.3/vector.md %}) column. [#131703][#131703] +- Fixed a bug where JSON values returned by `cockroach` commands using the `--format=sql` flag were not correctly escaped if they contained double quotes within a string. +- Fixed an error that could happen if an [aggregate function]({% link v24.3/functions-and-operators.md %}#aggregate-functions) was used as the value in a `SET` command. +- Fixed a rare bug introduced in v22.2 in which an update of a [primary key]({% link v24.3/primary-key.md %}) column could fail to update the primary index if it is also the only column in a separate column family. +- Fixed a rare bug where dropping a column of `FLOAT4`, `FLOAT8`, `DECIMAL`, `JSON`, `ARRAY`, or collate `STRING` type stored in a single [column family]({% link v24.3/column-families.md %}) could prevent subsequent reading of the table if the column family was not the first column family. +- Fixed an `unimplemented` internal error that could occur when ordering by a [`VECTOR`]({% link v24.3/vector.md %}) column.

Performance improvements

-- Efficiency has been improved when writing string-like values over the PostgreSQL wire protocol. [#131964][#131964] -- Error handling during periodic table history polling has been improved when the `schema_locked` [table parameter]({% link v24.3/with-storage-parameter.md %}#table-parameters) is not used. [#131951][#131951] - -[#129720]: https://github.com/cockroachdb/cockroach/pull/129720 -[#130779]: https://github.com/cockroachdb/cockroach/pull/130779 -[#131183]: https://github.com/cockroachdb/cockroach/pull/131183 -[#131703]: https://github.com/cockroachdb/cockroach/pull/131703 -[#131714]: https://github.com/cockroachdb/cockroach/pull/131714 -[#131769]: https://github.com/cockroachdb/cockroach/pull/131769 -[#131782]: https://github.com/cockroachdb/cockroach/pull/131782 -[#131793]: https://github.com/cockroachdb/cockroach/pull/131793 -[#131794]: https://github.com/cockroachdb/cockroach/pull/131794 -[#131799]: https://github.com/cockroachdb/cockroach/pull/131799 -[#131805]: https://github.com/cockroachdb/cockroach/pull/131805 -[#131827]: https://github.com/cockroachdb/cockroach/pull/131827 -[#131857]: https://github.com/cockroachdb/cockroach/pull/131857 -[#131869]: https://github.com/cockroachdb/cockroach/pull/131869 -[#131881]: https://github.com/cockroachdb/cockroach/pull/131881 -[#131891]: https://github.com/cockroachdb/cockroach/pull/131891 -[#131951]: https://github.com/cockroachdb/cockroach/pull/131951 -[#131964]: https://github.com/cockroachdb/cockroach/pull/131964 -[#131967]: https://github.com/cockroachdb/cockroach/pull/131967 -[#132086]: https://github.com/cockroachdb/cockroach/pull/132086 -[#132100]: https://github.com/cockroachdb/cockroach/pull/132100 -[#131100]: https://github.com/cockroachdb/cockroach/pull/131100 +- Efficiency has been improved when writing string-like values over the PostgreSQL wire protocol. +- Error handling during periodic table history polling has been improved when the `schema_locked` [table parameter]({% link v24.3/with-storage-parameter.md %}#table-parameters) is not used. diff --git a/src/current/_includes/releases/v24.3/v24.3.0-beta.1.md b/src/current/_includes/releases/v24.3/v24.3.0-beta.1.md index b663ff4d5cc..00ab53bb7f9 100644 --- a/src/current/_includes/releases/v24.3/v24.3.0-beta.1.md +++ b/src/current/_includes/releases/v24.3/v24.3.0-beta.1.md @@ -6,83 +6,51 @@ Release Date: October 24, 2024

General changes

-- The cluster setting [`diagnostics.reporting.enabled`]({% link v24.3/cluster-settings.md %}#setting-diagnostics-reporting-enabled) is now ignored if the cluster has a [{{ site.data.products.enterprise }} Trial or {{ site.data.products.enterprise }} Free license]({% link v24.3/licensing-faqs.md %}#types-of-licenses), or if the reporting job is unable to load any license at all. [#132257][#132257] +- The cluster setting [`diagnostics.reporting.enabled`]({% link v24.3/cluster-settings.md %}#setting-diagnostics-reporting-enabled) is now ignored if the cluster has a [{{ site.data.products.enterprise }} Trial or {{ site.data.products.enterprise }} Free license]({% link v24.3/licensing-faqs.md %}#types-of-licenses), or if the reporting job is unable to load any license at all.

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

-- This change ensures authorization with LDAP only works when the `ldapgrouplistfilter` option is present in the [HBA configuration]({% link v24.3/security-reference/authentication.md %}#hba-configuration-syntax), otherwise authentication will proceed with the provided LDAP auth method options in the HBA configuration. This change is to ensure external authorization with LDAP is opt-in rather than enabled by default. [#132235][#132235] -- Added a [changefeed sink]({% link v24.3/changefeed-sinks.md %}) error metric `changefeed.sink_errors`, and expanded reporting of the internal retries metric `changefeed.internal_retry_message_count` to all sinks that perform internal retries. [#132092][#132092] +- This change ensures authorization with LDAP only works when the `ldapgrouplistfilter` option is present in the [HBA configuration]({% link v24.3/security-reference/authentication.md %}#hba-configuration-syntax), otherwise authentication will proceed with the provided LDAP auth method options in the HBA configuration. This change is to ensure external authorization with LDAP is opt-in rather than enabled by default. +- Added a [changefeed sink]({% link v24.3/changefeed-sinks.md %}) error metric `changefeed.sink_errors`, and expanded reporting of the internal retries metric `changefeed.internal_retry_message_count` to all sinks that perform internal retries.

SQL language changes

-- Implemented `DROP TRIGGER` statements. The `CASCADE` option for dropping a [trigger]({% link v24.3/sql-feature-support.md %}) is not supported. [#128540][#128540] -- Added support for `CREATE TRIGGER`. The `OR REPLACE` syntax is not supported. Also, [triggers]({% link v24.3/sql-feature-support.md %}) cannot be executed, so creation is a no-op. [#128540][#128540] -- [`REGIONAL BY ROW`]({% link v24.3/table-localities.md %}#regional-by-row-tables) and [`PARTITION ALL BY`]({% link v24.3/partitioning.md %}) tables can now be inserted into under [non-`SERIALIZABLE` isolation levels]({% link v24.3/read-committed.md %}) as long as there is no `ON CONFLICT` clause in the statement. Also, [`REGIONAL BY ROW`]({% link v24.3/table-localities.md %}#regional-by-row-tables) and [`PARTITION ALL BY`]({% link v24.3/partitioning.md %}) tables can now be updated under non-`SERIALIZABLE` isolation levels. [#129837][#129837] -- Attempting to add [foreign keys]({% link v24.3/foreign-key.md %}) referencing a table with [row-level TTL]({% link v24.3/row-level-ttl.md %}) enabled will generate a notice informing the user about potential impact on the row-level TTL deletion job. Similarly, a notice is generated while attempting to enable row-level TTL on a table that has inbound foreign key references. [#127935][#127935] -- It is now possible to assign to an element of a composite typed variable in [PL/pgSQL]({% link v24.3/plpgsql.md %}). For example, given a variable `foo` with two integer elements `x` and `y`, the following assignment statement is allowed: `foo.x := 100;`. [#132628][#132628] -- [Backup]({% link v24.3/backup.md %}) and [restore]({% link v24.3/restore.md %}) now work for tables with triggers. When the [`skip_missing_udfs` option]({% link v24.3/restore.md %}#skip-missing-udfs) is applied, triggers with missing trigger functions are removed from the table. [#128555][#128555] -- `UPSERT and INSERT ... ON CONFLICT` statements are now supported on [`REGIONAL BY ROW`]({% link v24.3/table-localities.md %}#regional-by-row-tables) tables under [`READ COMMITTED` isolation]({% link v24.3/read-committed.md %}). [#132768][#132768] -- Added support for row-level `BEFORE` triggers. A row-level trigger executes the trigger function for each row that is being mutated. `BEFORE` triggers fire before the mutation operation. [#132511][#132511] -- Added support for [PL/pgSQL]({% link v24.3/plpgsql.md %}) integer `FOR` loops, which iterate over a range of integer values. [#130211][#130211] +- Implemented `DROP TRIGGER` statements. The `CASCADE` option for dropping a [trigger]({% link v24.3/sql-feature-support.md %}) is not supported. +- Added support for `CREATE TRIGGER`. The `OR REPLACE` syntax is not supported. Also, [triggers]({% link v24.3/sql-feature-support.md %}) cannot be executed, so creation is a no-op. +- [`REGIONAL BY ROW`]({% link v24.3/table-localities.md %}#regional-by-row-tables) and [`PARTITION ALL BY`]({% link v24.3/partitioning.md %}) tables can now be inserted into under [non-`SERIALIZABLE` isolation levels]({% link v24.3/read-committed.md %}) as long as there is no `ON CONFLICT` clause in the statement. Also, [`REGIONAL BY ROW`]({% link v24.3/table-localities.md %}#regional-by-row-tables) and [`PARTITION ALL BY`]({% link v24.3/partitioning.md %}) tables can now be updated under non-`SERIALIZABLE` isolation levels. +- Attempting to add [foreign keys]({% link v24.3/foreign-key.md %}) referencing a table with [row-level TTL]({% link v24.3/row-level-ttl.md %}) enabled will generate a notice informing the user about potential impact on the row-level TTL deletion job. Similarly, a notice is generated while attempting to enable row-level TTL on a table that has inbound foreign key references. +- It is now possible to assign to an element of a composite typed variable in [PL/pgSQL]({% link v24.3/plpgsql.md %}). For example, given a variable `foo` with two integer elements `x` and `y`, the following assignment statement is allowed: `foo.x := 100;`. +- [Backup]({% link v24.3/backup.md %}) and [restore]({% link v24.3/restore.md %}) now work for tables with triggers. When the [`skip_missing_udfs` option]({% link v24.3/restore.md %}#skip-missing-udfs) is applied, triggers with missing trigger functions are removed from the table. +- `UPSERT and INSERT ... ON CONFLICT` statements are now supported on [`REGIONAL BY ROW`]({% link v24.3/table-localities.md %}#regional-by-row-tables) tables under [`READ COMMITTED` isolation]({% link v24.3/read-committed.md %}). +- Added support for row-level `BEFORE` triggers. A row-level trigger executes the trigger function for each row that is being mutated. `BEFORE` triggers fire before the mutation operation. +- Added support for [PL/pgSQL]({% link v24.3/plpgsql.md %}) integer `FOR` loops, which iterate over a range of integer values.

Operational changes

-- [Admission Control]({% link v24.3/admission-control.md %}) now has an integration for pacing snapshot ingest traffic based on disk bandwidth. `kvadmission.store.snapshot_ingest_bandwidth_control.enabled` is used to turn on this integration. It requires provisioned bandwidth to be set for the store (or cluster through the [cluster setting]({% link v24.3/cluster-settings.md %})) for it to take effect. [#131243][#131243] -- Added validation to check whether [audit logging]({% link v24.3/configure-logs.md %}) and [buffering configurations]({% link v24.3/configure-logs.md %}#log-buffering-for-network-sinks) are both present in the [file log sink]({% link v24.3/configure-logs.md %}#configure-log-sinks). Audit logging and buffering configuration should not both exist in the file log sink. [#132742][#132742] -- Updated the [file log sink]({% link v24.3/configure-logs.md %}#configure-log-sinks) validation message. This would give clear indication to the user about the expected valid configuration. [#132899][#132899] +- [Admission Control]({% link v24.3/admission-control.md %}) now has an integration for pacing snapshot ingest traffic based on disk bandwidth. `kvadmission.store.snapshot_ingest_bandwidth_control.enabled` is used to turn on this integration. It requires provisioned bandwidth to be set for the store (or cluster through the [cluster setting]({% link v24.3/cluster-settings.md %})) for it to take effect. +- Added validation to check whether [audit logging]({% link v24.3/configure-logs.md %}) and [buffering configurations]({% link v24.3/configure-logs.md %}#log-buffering-for-network-sinks) are both present in the [file log sink]({% link v24.3/configure-logs.md %}#configure-log-sinks). Audit logging and buffering configuration should not both exist in the file log sink. +- Updated the [file log sink]({% link v24.3/configure-logs.md %}#configure-log-sinks) validation message. This would give clear indication to the user about the expected valid configuration.

DB Console changes

-- The value of the automatic [statistics]({% link v24.3/cost-based-optimizer.md %}#table-statistics) collection cluster setting [`sql.stats.automatic_collection.enabled`]({% link v24.3/cluster-settings.md %}#setting-sql-stats-automatic-collection-enabled) is now in the top right corner of the [**Databases**]({% link v24.3/ui-databases-page.md %}) overview page. [#132269][#132269] -- In the new [**Databases**]({% link v24.3/ui-databases-page.md %}) and [**Tables**]({% link v24.3/ui-databases-page.md %}#tables-list-tab) pages, when cached data is being refreshed, the refresh button will be disabled and its tooltip text will display, `Data is currently refreshing`. [#132462][#132462] +- The value of the automatic [statistics]({% link v24.3/cost-based-optimizer.md %}#table-statistics) collection cluster setting [`sql.stats.automatic_collection.enabled`]({% link v24.3/cluster-settings.md %}#setting-sql-stats-automatic-collection-enabled) is now in the top right corner of the [**Databases**]({% link v24.3/ui-databases-page.md %}) overview page. +- In the new [**Databases**]({% link v24.3/ui-databases-page.md %}) and [**Tables**]({% link v24.3/ui-databases-page.md %}#tables-list-tab) pages, when cached data is being refreshed, the refresh button will be disabled and its tooltip text will display, `Data is currently refreshing`.

Bug fixes

-- Addressed a rare bug that could prevent [backups]({% link v24.3/backup.md %}) taken during a [`DROP COLUMN`]({% link v24.3/alter-table.md %}#drop-column) operation with a [sequence]({% link v24.3/create-sequence.md %}) owner from [restoring]({% link v24.3/restore.md %}) with the error: `rewriting descriptor ids: missing rewrite for in SequenceOwner...`. [#132202][#132202] -- Fixed a bug existing since before v23.1 that could lead to incorrect results in rare cases. The bug requires a [join]({% link v24.3/joins.md %}) between two tables with an equality between columns with equivalent, but not identical [types]({% link v24.3/data-types.md %}) (e.g., `OID` and `REGCLASS`). In addition, the join must lookup into an [index]({% link v24.3/indexes.md %}) that includes a [computed column]({% link v24.3/computed-columns.md %}) that references one of the equivalent columns. [#126345][#126345] -- Fixed a bug existing since before v23.1 that could lead to incorrect results in rare cases. The bug requires a lookup [join]({% link v24.3/joins.md %}) into a table with a computed [index]({% link v24.3/indexes.md %}) column, where the [computed column]({% link v24.3/computed-columns.md %}) expression is composite sensitive. A composite sensitive expression can compare differently if supplied non-identical but equivalent input values (e.g., `2.0::DECIMAL` versus `2.00::DECIMAL`). [#126345][#126345] -- Fixed a bug that caused quotes around the name of a routine to be dropped when it was called within another [routine]({% link v24.3/user-defined-functions.md %}). This could prevent the correct routine from being resolved if the nested routine name was case-sensitive. The bug has existed since v24.1 when nested routines were introduced. [#131643][#131643] -- Fixed a bug where the [SQL shell]({% link v24.3/cockroach-sql.md %}) would print out the previous error message when executing the `quit` command. [#130736][#130736] -- Fixed a bug where a [span statistics]({% link v24.3/show-ranges.md %}#span-statistics) request on a mixed-version cluster resulted in a null pointer exception. [#132349][#132349] -- Fixed an issue where [changefeeds]({% link v24.3/change-data-capture-overview.md %}) would fail to update [protected timestamp records]({% link v24.3/protect-changefeed-data.md %}) in the face of [retryable errors]({% link v24.3/monitor-and-debug-changefeeds.md %}#changefeed-retry-errors). [#132712][#132712] -- The [`franz-go`](https://github.com/twmb/franz-go) library has been updated to fix a potential deadlock on [changefeed]({% link v24.3/change-data-capture-overview.md %}) restarts. [#132761][#132761] -- Fixed a bug that in rare cases could cause incorrect evaluation of [scalar expressions]({% link v24.3/scalar-expressions.md %}) involving `NULL` values. [#132261][#132261] -- Fixed a bug in the query [optimizer]({% link v24.3/cost-based-optimizer.md %}) that in rare cases could cause CockroachDB nodes to crash. The bug could occur when a query contains a filter in the form `col IN (elem0, elem1, ..., elemN)` only when `N` is very large, (e.g., 1.6+ million), and when `col` exists in a [hash-sharded index]({% link v24.3/hash-sharded-indexes.md %}), or exists a table with an indexed, [computed column]({% link v24.3/computed-columns.md %}) dependent on `col`. [#132701][#132701] -- The `proretset` column of the [`pg_catalog.pg_proc`]({% link v24.3/pg-catalog.md %}) table is now properly set to `true` for set-returning built-in functions. [#132853][#132853] -- Fixed an error that could be caused by using an [`AS OF SYSTEM TIME`]({% link v24.3/as-of-system-time.md %}) expression that references a user-defined (or unknown) type name. These kinds of expressions are invalid, but previously the error was not handled properly. Now, a correct error message is returned. [#132348][#132348] +- Addressed a rare bug that could prevent [backups]({% link v24.3/backup.md %}) taken during a [`DROP COLUMN`]({% link v24.3/alter-table.md %}#drop-column) operation with a [sequence]({% link v24.3/create-sequence.md %}) owner from [restoring]({% link v24.3/restore.md %}) with the error: `rewriting descriptor ids: missing rewrite for in SequenceOwner...`. +- Fixed a bug existing since before v23.1 that could lead to incorrect results in rare cases. The bug requires a [join]({% link v24.3/joins.md %}) between two tables with an equality between columns with equivalent, but not identical [types]({% link v24.3/data-types.md %}) (e.g., `OID` and `REGCLASS`). In addition, the join must lookup into an [index]({% link v24.3/indexes.md %}) that includes a [computed column]({% link v24.3/computed-columns.md %}) that references one of the equivalent columns. +- Fixed a bug existing since before v23.1 that could lead to incorrect results in rare cases. The bug requires a lookup [join]({% link v24.3/joins.md %}) into a table with a computed [index]({% link v24.3/indexes.md %}) column, where the [computed column]({% link v24.3/computed-columns.md %}) expression is composite sensitive. A composite sensitive expression can compare differently if supplied non-identical but equivalent input values (e.g., `2.0::DECIMAL` versus `2.00::DECIMAL`). +- Fixed a bug that caused quotes around the name of a routine to be dropped when it was called within another [routine]({% link v24.3/user-defined-functions.md %}). This could prevent the correct routine from being resolved if the nested routine name was case-sensitive. The bug has existed since v24.1 when nested routines were introduced. +- Fixed a bug where the [SQL shell]({% link v24.3/cockroach-sql.md %}) would print out the previous error message when executing the `quit` command. +- Fixed a bug where a [span statistics]({% link v24.3/show-ranges.md %}#span-statistics) request on a mixed-version cluster resulted in a null pointer exception. +- Fixed an issue where [changefeeds]({% link v24.3/change-data-capture-overview.md %}) would fail to update [protected timestamp records]({% link v24.3/protect-changefeed-data.md %}) in the face of [retryable errors]({% link v24.3/monitor-and-debug-changefeeds.md %}#changefeed-retry-errors). +- The [`franz-go`](https://github.com/twmb/franz-go) library has been updated to fix a potential deadlock on [changefeed]({% link v24.3/change-data-capture-overview.md %}) restarts. +- Fixed a bug that in rare cases could cause incorrect evaluation of [scalar expressions]({% link v24.3/scalar-expressions.md %}) involving `NULL` values. +- Fixed a bug in the query [optimizer]({% link v24.3/cost-based-optimizer.md %}) that in rare cases could cause CockroachDB nodes to crash. The bug could occur when a query contains a filter in the form `col IN (elem0, elem1, ..., elemN)` only when `N` is very large, (e.g., 1.6+ million), and when `col` exists in a [hash-sharded index]({% link v24.3/hash-sharded-indexes.md %}), or exists a table with an indexed, [computed column]({% link v24.3/computed-columns.md %}) dependent on `col`. +- The `proretset` column of the [`pg_catalog.pg_proc`]({% link v24.3/pg-catalog.md %}) table is now properly set to `true` for set-returning built-in functions. +- Fixed an error that could be caused by using an [`AS OF SYSTEM TIME`]({% link v24.3/as-of-system-time.md %}) expression that references a user-defined (or unknown) type name. These kinds of expressions are invalid, but previously the error was not handled properly. Now, a correct error message is returned.

Build changes

-- Upgraded to Go v1.23.2. [#132111][#132111] - -[#126345]: https://github.com/cockroachdb/cockroach/pull/126345 -[#127935]: https://github.com/cockroachdb/cockroach/pull/127935 -[#128540]: https://github.com/cockroachdb/cockroach/pull/128540 -[#128555]: https://github.com/cockroachdb/cockroach/pull/128555 -[#129837]: https://github.com/cockroachdb/cockroach/pull/129837 -[#130211]: https://github.com/cockroachdb/cockroach/pull/130211 -[#130736]: https://github.com/cockroachdb/cockroach/pull/130736 -[#131243]: https://github.com/cockroachdb/cockroach/pull/131243 -[#131291]: https://github.com/cockroachdb/cockroach/pull/131291 -[#131643]: https://github.com/cockroachdb/cockroach/pull/131643 -[#132023]: https://github.com/cockroachdb/cockroach/pull/132023 -[#132092]: https://github.com/cockroachdb/cockroach/pull/132092 -[#132111]: https://github.com/cockroachdb/cockroach/pull/132111 -[#132202]: https://github.com/cockroachdb/cockroach/pull/132202 -[#132235]: https://github.com/cockroachdb/cockroach/pull/132235 -[#132257]: https://github.com/cockroachdb/cockroach/pull/132257 -[#132261]: https://github.com/cockroachdb/cockroach/pull/132261 -[#132269]: https://github.com/cockroachdb/cockroach/pull/132269 -[#132348]: https://github.com/cockroachdb/cockroach/pull/132348 -[#132349]: https://github.com/cockroachdb/cockroach/pull/132349 -[#132462]: https://github.com/cockroachdb/cockroach/pull/132462 -[#132478]: https://github.com/cockroachdb/cockroach/pull/132478 -[#132511]: https://github.com/cockroachdb/cockroach/pull/132511 -[#132628]: https://github.com/cockroachdb/cockroach/pull/132628 -[#132701]: https://github.com/cockroachdb/cockroach/pull/132701 -[#132712]: https://github.com/cockroachdb/cockroach/pull/132712 -[#132742]: https://github.com/cockroachdb/cockroach/pull/132742 -[#132761]: https://github.com/cockroachdb/cockroach/pull/132761 -[#132768]: https://github.com/cockroachdb/cockroach/pull/132768 -[#132853]: https://github.com/cockroachdb/cockroach/pull/132853 -[#132899]: https://github.com/cockroachdb/cockroach/pull/132899 +- Upgraded to Go v1.23.2. diff --git a/src/current/_includes/releases/v24.3/v24.3.0-beta.2.md b/src/current/_includes/releases/v24.3/v24.3.0-beta.2.md index 2e68bc6fce9..357556e58bf 100644 --- a/src/current/_includes/releases/v24.3/v24.3.0-beta.2.md +++ b/src/current/_includes/releases/v24.3/v24.3.0-beta.2.md @@ -6,28 +6,20 @@ Release Date: October 28, 2024

SQL language changes

-- If a table is the destination of a logical data replication stream, then only schema change statements that are deemed safe are allowed on the table. Safe statements are those that do not result in a rebuild of the primary [index]({% link v24.3/indexes.md %}) and do not create an index on a virtual [computed column]({% link v24.3/computed-columns.md %}). [#133266][#133266] +- If a table is the destination of a logical data replication stream, then only schema change statements that are deemed safe are allowed on the table. Safe statements are those that do not result in a rebuild of the primary [index]({% link v24.3/indexes.md %}) and do not create an index on a virtual [computed column]({% link v24.3/computed-columns.md %}).

Operational changes

-- The two new metrics `sql.crud_query.count` and `sql.crud_query.started.count` measure the number of [`INSERT`]({% link v24.3/insert.md %})/[`UPDATE`]({% link v24.3/update.md %})/[`DELETE`]({% link v24.3/delete.md %})/[`SELECT`]({% link v24.3/selection-queries.md %}) queries executed and started respectively. [#133198][#133198] -- When creating a logical data replication stream, any [user-defined types]({% link v24.3/create-type.md %}) in the source and destination are now checked for equivalency. This allows for creating a stream that handles user-defined types without needing to use the `WITH SKIP SCHEMA CHECK` option as long as the stream uses `mode = immediate`. [#133274][#133274] -- Logical data replication streams that reference tables with [user-defined types]({% link v24.3/create-type.md %}) can now be created with the `mode = immediate` option. [#133295][#133295] +- The two new metrics `sql.crud_query.count` and `sql.crud_query.started.count` measure the number of [`INSERT`]({% link v24.3/insert.md %})/[`UPDATE`]({% link v24.3/update.md %})/[`DELETE`]({% link v24.3/delete.md %})/[`SELECT`]({% link v24.3/selection-queries.md %}) queries executed and started respectively. +- When creating a logical data replication stream, any [user-defined types]({% link v24.3/create-type.md %}) in the source and destination are now checked for equivalency. This allows for creating a stream that handles user-defined types without needing to use the `WITH SKIP SCHEMA CHECK` option as long as the stream uses `mode = immediate`. +- Logical data replication streams that reference tables with [user-defined types]({% link v24.3/create-type.md %}) can now be created with the `mode = immediate` option.

DB Console changes

-- The **SQL Statements** graph on the [**Overview**]({% link v24.3/ui-overview-dashboard.md %}) and [**SQL**]({% link v24.3/ui-sql-dashboard.md %}) dashboard pages in DB Console has been renamed [**SQL Queries Per Second**]({% link v24.3/ui-overview-dashboard.md %}#sql-queries-per-second) and now shows **Total Queries** as a general Queries Per Second (QPS) metric. [#133198][#133198] -- Due to the inaccuracy of the **Range Count** column on the [**Databases** page]({% link v24.3/ui-databases-page.md %}) and the cost incurred to fetch the correct range count for every database in a cluster, this data will no longer be visible. This data is still available via a [`SHOW RANGES`]({% link v24.3/show-ranges.md %}) query. [#133267][#133267] +- The **SQL Statements** graph on the [**Overview**]({% link v24.3/ui-overview-dashboard.md %}) and [**SQL**]({% link v24.3/ui-sql-dashboard.md %}) dashboard pages in DB Console has been renamed [**SQL Queries Per Second**]({% link v24.3/ui-overview-dashboard.md %}#sql-queries-per-second) and now shows **Total Queries** as a general Queries Per Second (QPS) metric. +- Due to the inaccuracy of the **Range Count** column on the [**Databases** page]({% link v24.3/ui-databases-page.md %}) and the cost incurred to fetch the correct range count for every database in a cluster, this data will no longer be visible. This data is still available via a [`SHOW RANGES`]({% link v24.3/show-ranges.md %}) query.

Bug fixes

-- Users with the [`admin` role]({% link v24.3/security-reference/authorization.md %}#admin-role) can now run [`ALTER DEFAULT PRIVILEGES FOR target_role ...`]({% link v24.3/alter-default-privileges.md %}) on any `target_role`. Previously, this could result in a privilege error, which is incorrect as `admin`s are allowed to perform any operation. [#133072][#133072] -- [`REASSIGN OWNED BY current_owner_role ...`]({% link v24.3/reassign-owned.md %}) will now transfer ownership of the `public` schema. Previously, it would always skip over the `public` schema even if it was owned by the `current_owner_role`. [#133072][#133072] - - -[#133072]: https://github.com/cockroachdb/cockroach/pull/133072 -[#133198]: https://github.com/cockroachdb/cockroach/pull/133198 -[#133266]: https://github.com/cockroachdb/cockroach/pull/133266 -[#133267]: https://github.com/cockroachdb/cockroach/pull/133267 -[#133274]: https://github.com/cockroachdb/cockroach/pull/133274 -[#133295]: https://github.com/cockroachdb/cockroach/pull/133295 +- Users with the [`admin` role]({% link v24.3/security-reference/authorization.md %}#admin-role) can now run [`ALTER DEFAULT PRIVILEGES FOR target_role ...`]({% link v24.3/alter-default-privileges.md %}) on any `target_role`. Previously, this could result in a privilege error, which is incorrect as `admin`s are allowed to perform any operation. +- [`REASSIGN OWNED BY current_owner_role ...`]({% link v24.3/reassign-owned.md %}) will now transfer ownership of the `public` schema. Previously, it would always skip over the `public` schema even if it was owned by the `current_owner_role`. diff --git a/src/current/_includes/releases/v24.3/v24.3.0-beta.3.md b/src/current/_includes/releases/v24.3/v24.3.0-beta.3.md index 15622478f23..ce1480fc873 100644 --- a/src/current/_includes/releases/v24.3/v24.3.0-beta.3.md +++ b/src/current/_includes/releases/v24.3/v24.3.0-beta.3.md @@ -6,26 +6,26 @@ Release Date: November 5, 2024

Security updates

-- Client authentication errors using LDAP now log more details to help with troubleshooting authentication and authorization issues. [#133812][#133812] +- Client authentication errors using LDAP now log more details to help with troubleshooting authentication and authorization issues.

SQL changes

-- [Physical Cluster Replication]({% link v24.3/physical-cluster-replication-overview.md %}) reader catalogs now bypass AOST timestamps using the `bypass_pcr_reader_catalog_aost` session variable, which can be used to modify cluster settings within the reader. [#133876][#133876] +- [Physical Cluster Replication]({% link v24.3/physical-cluster-replication-overview.md %}) reader catalogs now bypass AOST timestamps using the `bypass_pcr_reader_catalog_aost` session variable, which can be used to modify cluster settings within the reader.

Operational changes

-- Added a timer for inner [changefeed sink]({% link v24.3/changefeed-sinks.md %}) client flushes. [#133288][#133288] -- Rows replicated by Logical Data Replication in `immediate` mode are now considered in the decision to recompute SQL table statistics. [#133591][#133591] -- The new cluster setting `kvadmission.flow_controller.token_reset_epoch` can be used to refill replication [admission control]({% link v24.3/admission-control.md %}) v2 tokens. This is an advanced setting. Use it only after consultation with your account team. [#133294][#133294] -- The new cluster setting `goschedstats.always_use_short_sample_period.enabled`, when set to `true`, helps to prevent unnecessary queueing due to CPU [admission control]({% link v24.3/admission-control.md %}s. [#133585][#133585] +- Added a timer for inner [changefeed sink]({% link v24.3/changefeed-sinks.md %}) client flushes. +- Rows replicated by Logical Data Replication in `immediate` mode are now considered in the decision to recompute SQL table statistics. +- The new cluster setting `kvadmission.flow_controller.token_reset_epoch` can be used to refill replication [admission control]({% link v24.3/admission-control.md %}) v2 tokens. This is an advanced setting. Use it only after consultation with your account team. +- The new cluster setting `goschedstats.always_use_short_sample_period.enabled`, when set to `true`, helps to prevent unnecessary queueing due to CPU [admission control]({% link v24.3/admission-control.md %}s.

DB Console changes

-- In [Database]({% link v24.3/ui-databases-page.md %}) pages, the **Refresh** tooltip now includes details about the progress of cache updates and when the job started. [#133351][#133351] +- In [Database]({% link v24.3/ui-databases-page.md %}) pages, the **Refresh** tooltip now includes details about the progress of cache updates and when the job started.

Bug fixes

-- Fixed a bug where [changefeed sink]({% link v24.3/changefeed-sinks.md %})) timers were not correctly registered with the metric system. [#133288][#133288] +- Fixed a bug where [changefeed sink]({% link v24.3/changefeed-sinks.md %})) timers were not correctly registered with the metric system. - Fixed a bug that could cause new connections to fail with the following error after upgrading: `ERROR: invalid value for parameter "vectorize": "unknown(1)" SQLSTATE: 22023 HINT: Available values: off,on,experimental_always`. To encounter this bug, the cluster must have: 1. Run on version v21.1 at some point in the past 1. Run `SET CLUSTER SETTING sql.defaults.vectorize = 'on';` while running v21.1. @@ -46,26 +46,9 @@ Release Date: November 5, 2024 RESET CLUSTER SETTING sql.defaults.vectorize; ~~~ - `1` is now allowed as a value for this setting, and is equivalent to `on`. [#133371][#133371] -- Fixed a bug in v22.2.13+, v23.1.9+, and v23.2 that could cause the internal error `interface conversion: coldata.Column is` in an edge case. [#133762][#133762] -- Fixed a bug introduced in v20.1.0 that could cause erroneous `NOT NULL` constraint violation errors to be logged during `UPSERT` and `INSERT` statements with the `ON CONFLICT ...DO UPDATE` clause that update an existing row and a subset of columns that did not include a `NOT NULL` column of the table. [#133820][#133820] -- Fixed a that could cache and reuse a non-reusable query plan, such as a plan for a DDL or `SHOW` statement, when `plan_cache_mode` was set to `auto` or `force_generic_plan`, which are not the default options. [#133073][#133073] -- Fixed an unhandled error that could occur while running the command `REVOKE ... ON SEQUENCE FROM ... {user}` on an object that is not a sequence. [#133710][#133710] -- Fixed a panic that could occur while running a `CREATE TABLE AS` statement that included a [sequence]({% link v24.3/create-sequence.md %}) with an invalid function overload. [#133870][#133870] - - -[#133073]: https://github.com/cockroachdb/cockroach/pull/133073 -[#133288]: https://github.com/cockroachdb/cockroach/pull/133288 -[#133294]: https://github.com/cockroachdb/cockroach/pull/133294 -[#133351]: https://github.com/cockroachdb/cockroach/pull/133351 -[#133371]: https://github.com/cockroachdb/cockroach/pull/133371 -[#133414]: https://github.com/cockroachdb/cockroach/pull/133414 -[#133472]: https://github.com/cockroachdb/cockroach/pull/133472 -[#133585]: https://github.com/cockroachdb/cockroach/pull/133585 -[#133591]: https://github.com/cockroachdb/cockroach/pull/133591 -[#133710]: https://github.com/cockroachdb/cockroach/pull/133710 -[#133762]: https://github.com/cockroachdb/cockroach/pull/133762 -[#133812]: https://github.com/cockroachdb/cockroach/pull/133812 -[#133820]: https://github.com/cockroachdb/cockroach/pull/133820 -[#133870]: https://github.com/cockroachdb/cockroach/pull/133870 -[#133876]: https://github.com/cockroachdb/cockroach/pull/133876 + `1` is now allowed as a value for this setting, and is equivalent to `on`. +- Fixed a bug in v22.2.13+, v23.1.9+, and v23.2 that could cause the internal error `interface conversion: coldata.Column is` in an edge case. +- Fixed a bug introduced in v20.1.0 that could cause erroneous `NOT NULL` constraint violation errors to be logged during `UPSERT` and `INSERT` statements with the `ON CONFLICT ...DO UPDATE` clause that update an existing row and a subset of columns that did not include a `NOT NULL` column of the table. +- Fixed a that could cache and reuse a non-reusable query plan, such as a plan for a DDL or `SHOW` statement, when `plan_cache_mode` was set to `auto` or `force_generic_plan`, which are not the default options. +- Fixed an unhandled error that could occur while running the command `REVOKE ... ON SEQUENCE FROM ... {user}` on an object that is not a sequence. +- Fixed a panic that could occur while running a `CREATE TABLE AS` statement that included a [sequence]({% link v24.3/create-sequence.md %}) with an invalid function overload. diff --git a/src/current/_includes/releases/v24.3/v24.3.0-rc.1.md b/src/current/_includes/releases/v24.3/v24.3.0-rc.1.md index 2e4a709a00b..f0c18f00035 100644 --- a/src/current/_includes/releases/v24.3/v24.3.0-rc.1.md +++ b/src/current/_includes/releases/v24.3/v24.3.0-rc.1.md @@ -6,39 +6,39 @@ Release Date: November 18, 2024

Security updates

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

SQL language changes

-- Row-level `AFTER` triggers can now be executed in response to mutations on a table. Row-level `AFTER` triggers fire after checks and cascades have completed for the query. [#133320][#133320] -- Cascades can now execute row-level `BEFORE` triggers. By default, attempting to modify or eliminate the cascading `UPDATE` or `DELETE` operation results in a `Triggered Data Change Violation` error. To bypass this error, you can set the `unsafe_allow_triggers_modifying_cascades` query option to `true`. This could result in constraint violations. [#134444][#134444] -- String constants can now be compared with collated strings. [#134086][#134086] +- Row-level `AFTER` triggers can now be executed in response to mutations on a table. Row-level `AFTER` triggers fire after checks and cascades have completed for the query. +- Cascades can now execute row-level `BEFORE` triggers. By default, attempting to modify or eliminate the cascading `UPDATE` or `DELETE` operation results in a `Triggered Data Change Violation` error. To bypass this error, you can set the `unsafe_allow_triggers_modifying_cascades` query option to `true`. This could result in constraint violations. +- String constants can now be compared with collated strings.

Operational changes

-- The `kvadmission.low_pri_read_elastic_control.enabled` cluster setting has been removed, because all bulk requests are now subject to elastic admission control admission by default. [#134486][#134486] +- The `kvadmission.low_pri_read_elastic_control.enabled` cluster setting has been removed, because all bulk requests are now subject to elastic admission control admission by default. - The following metrics have been added for Logic Data Replication (LDR): - `logical_replication.catchup_ranges`: the number of source side ranges conducting catchup scans. - `logical_replication.scanning_ranges`: the number source side ranges conducting initial scans. - - In the DB Console, these metrics may not be accurate if multiple LDR jobs are running. The metrics are accurate when exported from the Prometheus endpoint. [#134674][#134674] -- The backup and restore syntax update of `cockroach workload` which was introduced in [#134610][#134610] #has been reverted. [#134645][#134645] + - In the DB Console, these metrics may not be accurate if multiple LDR jobs are running. The metrics are accurate when exported from the Prometheus endpoint. +- The backup and restore syntax update of `cockroach workload` which was introduced in #has been reverted.

DB Console changes

-- After finalizing an upgrade to v24.3, an updated version of the **Databases** page will be available. [#134244][#134244] -- Users with the `CONNECT` privilege can now access the **Databases** page. [#134542][#134542] +- After finalizing an upgrade to v24.3, an updated version of the **Databases** page will be available. +- Users with the `CONNECT` privilege can now access the **Databases** page.

Bug fixes

- Fixed a bug where an LDAP connection would be closed by the server and would not be retried by CockroachDB. [#134277] -- Fixed a bug that prevented LDAP authorization from successfully assigning CockroachDB roles to users when the source group name contained periods or hyphens. [#134944][#134944] -- Fixed a bug introduced in v22.2 that could cause significantly increased query latency while executing queries with index or lookup joins when the ordering needs to be maintained [#134367][#134367] -- Fixed a bug where `UPSERT` statements on regional by row tables under non-serializable isolations would not display show uniqueness constraints in `EXPLAIN` output. Even when not displayed, the constraints were enforced. [#134267][#134267] -- Fixed a bug where uniqueness constraints constraints enforced with tombstone writes were not shown in the output of `EXPLAIN (OPT)`. [#134482][#134482] -- Fixed a bug where `DISCARD ALL` statements were erroneously counted under the `sql.ddl.count` metric instead of the `sql.misc.count` metric. [#134510][#134510] -- Fixed a bug that could cause a backup or restore operation on AWS to fail with a KMS error due to a missing `default` shared config. [#134536][#134536] -- Fixed a bug that could prevent a user from running schema change operations on a restored table that was previously apart of a Logic Data Replication (LDR) stream. [#134675][#134675] +- Fixed a bug that prevented LDAP authorization from successfully assigning CockroachDB roles to users when the source group name contained periods or hyphens. +- Fixed a bug introduced in v22.2 that could cause significantly increased query latency while executing queries with index or lookup joins when the ordering needs to be maintained +- Fixed a bug where `UPSERT` statements on regional by row tables under non-serializable isolations would not display show uniqueness constraints in `EXPLAIN` output. Even when not displayed, the constraints were enforced. +- Fixed a bug where uniqueness constraints constraints enforced with tombstone writes were not shown in the output of `EXPLAIN (OPT)`. +- Fixed a bug where `DISCARD ALL` statements were erroneously counted under the `sql.ddl.count` metric instead of the `sql.misc.count` metric. +- Fixed a bug that could cause a backup or restore operation on AWS to fail with a KMS error due to a missing `default` shared config. +- Fixed a bug that could prevent a user from running schema change operations on a restored table that was previously apart of a Logic Data Replication (LDR) stream.

Performance improvements

@@ -49,33 +49,8 @@ Release Date: November 18, 2024 SELECT * FROM t WHERE j->'a' = '10' AND j->'b' = '20' ~~~ - [#134002][#134002] +

Build changes

-- Upgraded to Go 1.22.8 [#134427][#134427] - -[#133320]: https://github.com/cockroachdb/cockroach/pull/133320 -[#133997]: https://github.com/cockroachdb/cockroach/pull/133997 -[#134002]: https://github.com/cockroachdb/cockroach/pull/134002 -[#134018]: https://github.com/cockroachdb/cockroach/pull/134018 -[#134086]: https://github.com/cockroachdb/cockroach/pull/134086 -[#134089]: https://github.com/cockroachdb/cockroach/pull/134089 -[#134097]: https://github.com/cockroachdb/cockroach/pull/134097 -[#134244]: https://github.com/cockroachdb/cockroach/pull/134244 -[#134267]: https://github.com/cockroachdb/cockroach/pull/134267 -[#134277]: https://github.com/cockroachdb/cockroach/pull/134277 -[#134367]: https://github.com/cockroachdb/cockroach/pull/134367 -[#134427]: https://github.com/cockroachdb/cockroach/pull/134427 -[#134444]: https://github.com/cockroachdb/cockroach/pull/134444 -[#134448]: https://github.com/cockroachdb/cockroach/pull/134448 -[#134482]: https://github.com/cockroachdb/cockroach/pull/134482 -[#134486]: https://github.com/cockroachdb/cockroach/pull/134486 -[#134510]: https://github.com/cockroachdb/cockroach/pull/134510 -[#134536]: https://github.com/cockroachdb/cockroach/pull/134536 -[#134542]: https://github.com/cockroachdb/cockroach/pull/134542 -[#134645]: https://github.com/cockroachdb/cockroach/pull/134645 -[#134674]: https://github.com/cockroachdb/cockroach/pull/134674 -[#134675]: https://github.com/cockroachdb/cockroach/pull/134675 -[#134610]: https://github.com/cockroachdb/cockroach/pull/134610 -[#134944]: https://github.com/cockroachdb/cockroach/pull/134944 +- Upgraded to Go 1.22.8 diff --git a/src/current/_includes/releases/v24.3/v24.3.0.md b/src/current/_includes/releases/v24.3/v24.3.0.md index 5d8cdf074ef..6ce5347e753 100644 --- a/src/current/_includes/releases/v24.3/v24.3.0.md +++ b/src/current/_includes/releases/v24.3/v24.3.0.md @@ -86,32 +86,32 @@ Changes to [cluster settings]({% link v24.3/cluster-settings.md %}) should be re
Settings added
-- `goschedstats.always_use_short_sample_period.enabled`: when set to `true`, helps to prevent unnecessary queueing due to CPU [admission control]({% link v24.3/admission-control.md %}) by forcing `1ms` sampling of runnable queue lengths. The default value is `false`. [#133585][#133585] +- `goschedstats.always_use_short_sample_period.enabled`: when set to `true`, helps to prevent unnecessary queueing due to CPU [admission control]({% link v24.3/admission-control.md %}) by forcing `1ms` sampling of runnable queue lengths. The default value is `false`. -- `kv.range.range_size_hard_cap`: allows you to limit how large a [range]({% link v24.3/architecture/overview.md %}#architecture-range) can grow before [backpressure]({% link v24.3/common-errors.md %}#split-failed-while-applying-backpressure-are-rows-updated-in-a-tight-loop) is applied. This can help to mitigate against a situation where a range cannot be split, such as when a range is comprised of a single key due to an issue with the schema or workload pattern, or a bug in client application code. The default is `8 GiB`, 16 times the default maximum range size. If you have changed the maximum range size, you may need to adjust this cluster setting or reduce the range size. [#129450][#129450] +- `kv.range.range_size_hard_cap`: allows you to limit how large a [range]({% link v24.3/architecture/overview.md %}#architecture-range) can grow before [backpressure]({% link v24.3/common-errors.md %}#split-failed-while-applying-backpressure-are-rows-updated-in-a-tight-loop) is applied. This can help to mitigate against a situation where a range cannot be split, such as when a range is comprised of a single key due to an issue with the schema or workload pattern, or a bug in client application code. The default is `8 GiB`, 16 times the default maximum range size. If you have changed the maximum range size, you may need to adjust this cluster setting or reduce the range size. -- `kvadmission.flow_controller.token_reset_epoch`: can be used to refill replication [admission control]({% link v24.3/admission-control.md %}) v2 tokens. This setting is marked as `reserved`, as it is not supported for tuning, by default. Use it only after consultation with your account team. [#133294][#133294] +- `kvadmission.flow_controller.token_reset_epoch`: can be used to refill replication [admission control]({% link v24.3/admission-control.md %}) v2 tokens. This setting is marked as `reserved`, as it is not supported for tuning, by default. Use it only after consultation with your account team. -- `kvadmission.store.snapshot_ingest_bandwidth_control.enabled`: enables a new [Admission Control]({% link v24.3/admission-control.md %}) integration for pacing snapshot ingest traffic based on disk bandwidth. It requires provisioned bandwidth to be set for the store, or the cluster through the setting `kvadmission.store.provisioned_bandwidth`, for it to take effect. [#131243][#131243] +- `kvadmission.store.snapshot_ingest_bandwidth_control.enabled`: enables a new [Admission Control]({% link v24.3/admission-control.md %}) integration for pacing snapshot ingest traffic based on disk bandwidth. It requires provisioned bandwidth to be set for the store, or the cluster through the setting `kvadmission.store.provisioned_bandwidth`, for it to take effect. - Settings have been added which control the refresh behavior for the cached data in the Databases page of the [DB Console]({% link v24.3/ui-overview.md %}): - `obs.tablemetadatacache.data_valid_duration`: the duration for which the data in `system.table_metadata` is considered valid before a cache reset will occur. Default: 20 minutes. - `obs.tablemetadatacache.automatic_updates.enabled`: whether to automatically update the cache according the validity interval. Default: `false`. - [#130198][#130198] + -- `server.jwt_authentication.client.timeout`: the HTTP client timeout for external calls made during [JWT authentication]({% link v24.3/sso-sql.md %}). [#127145][#127145] +- `server.jwt_authentication.client.timeout`: the HTTP client timeout for external calls made during [JWT authentication]({% link v24.3/sso-sql.md %}). - Partial [statistics]({% link v24.3/cost-based-optimizer.md %}#table-statistics) can now be automatically collected at the extremes of indexes when a certain fraction and minimum number of rows are stale (by default 5% and 100%, respectively). These can be configured with new [table storage parameters]({% link v24.3/alter-table.md %}#set-and-reset-storage-parameters) and [cluster settings]({% link v24.3/cluster-settings.md %}): - `sql.stats.automatic_partial_collection.enabled` (table parameter `sql_stats_automatic_partial_collection_enabled`) - both default to `false`. - `sql.stats.automatic_partial_collection.min_stale_rows` (table parameter `sql_stats_automatic_partial_collection_min_stale_rows`) - both default to `100`. - `sql.stats.automatic_partial_collection.fraction_stale_rows` (table parameter `sql_stats_automatic_partial_collection_fraction_stale_rows`) - both default to `0.05`. - [#93067][#93067] + -- `sql.stats.histogram_buckets.include_most_common_values.enabled`: controls whether common values are included in [histogram collection]({% link v24.3/cost-based-optimizer.md %}#control-histogram-collection) for use by the [optimizer]({% link v24.3/cost-based-optimizer.md %}). When enabled, histogram buckets will represent the most common sampled values as upper bounds. [#129378][#129378] +- `sql.stats.histogram_buckets.include_most_common_values.enabled`: controls whether common values are included in [histogram collection]({% link v24.3/cost-based-optimizer.md %}#control-histogram-collection) for use by the [optimizer]({% link v24.3/cost-based-optimizer.md %}). When enabled, histogram buckets will represent the most common sampled values as upper bounds. -- `sql.stats.histogram_buckets.max_fraction_most_common_values`: controls the fraction of buckets that can be adjusted to include common values. Defaults to `0.1`. [#129378][#129378] +- `sql.stats.histogram_buckets.max_fraction_most_common_values`: controls the fraction of buckets that can be adjusted to include common values. Defaults to `0.1`. - `sql.txn.repeatable_read_isolation.enabled`: defaults to `false`. When set to `true`, the following statements configure transactions to run under `REPEATABLE READ` isolation, rather than being automatically interpreted as [`SERIALIZABLE`]({% link v24.3/demo-serializable.md %}): - `BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ` @@ -131,7 +131,7 @@ Changes to [cluster settings]({% link v24.3/cluster-settings.md %}) should be re - When running `SHOW CLUSTER SETTING`, the displayed setting values will depend on the node's number of vCPUs. - Contact Support if the number of `distsender.batches.async.throttled` requests is persistently greater than zero. - [#131226][#131226] + - The default for `server.oidc_authentication.client.timeout`, which sets the client timeout for external calls made during OIDC authentication, has changed from `30s` to `15s`. @@ -144,9 +144,9 @@ The following settings are now marked `public` after previously being `reserved` 1. a provider or protocol (`azure`, `gs`, `s3`, `http`, `nodelocal`, `userfile`, or `nullsink`) 1. `read` or `write` 1. `node_burst_limit` or `node_rate_limit` - - For example, `cloudstorage.s3.write.node_burst_limit`. [#127207][#127207] + - For example, `cloudstorage.s3.write.node_burst_limit`. -- JWT authentication have been made `public`. [#128170][#128170] +- JWT authentication have been made `public`. - `server.jwt_authentication.audience` - `server.jwt_authentication.claim` - `server.jwt_authentication.enabled` @@ -161,13 +161,13 @@ The following settings are now marked `public` after previously being `reserved`
Additional cluster setting changes
-- The setting `server.host_based_authentication.configuration` now supports LDAP configuration, and its value is now redacted for non-admin users when the `server.redact_sensitive_settings.enabled` is set to `true`. [#131150][#131150] +- The setting `server.host_based_authentication.configuration` now supports LDAP configuration, and its value is now redacted for non-admin users when the `server.redact_sensitive_settings.enabled` is set to `true`. -- The settings [`enterprise.license`]({% link v24.3/cluster-settings.md %}#setting-enterprise-license) and [`diagnostics.reporting.enabled`]({% link v24.3/cluster-settings.md %}#setting-diagnostics-reporting-enabled) now have additional validation. To disable diagnostics reporting, the cluster must also have a license that is not an [{{ site.data.products.enterprise }} Trial or {{ site.data.products.enterprise }} Free license]({% link v24.3/licensing-faqs.md %}#types-of-licenses). Additionally, to set one of these licenses, the cluster must already be submitting diagnostics information. [#131097][#131097] [#132257][#132257] +- The settings [`enterprise.license`]({% link v24.3/cluster-settings.md %}#setting-enterprise-license) and [`diagnostics.reporting.enabled`]({% link v24.3/cluster-settings.md %}#setting-diagnostics-reporting-enabled) now have additional validation. To disable diagnostics reporting, the cluster must also have a license that is not an [{{ site.data.products.enterprise }} Trial or {{ site.data.products.enterprise }} Free license]({% link v24.3/licensing-faqs.md %}#types-of-licenses). Additionally, to set one of these licenses, the cluster must already be submitting diagnostics information. -- `sql.defaults.vectorize` now supports the value `1` (in addition to `0` and `2`) to indicate `on`, to address a bug that could cause new connections to fail after an upgrade with a message referencing an `invalid value for parameter "vectorize": "unknown(1)"`. [#133371][#133371] +- `sql.defaults.vectorize` now supports the value `1` (in addition to `0` and `2`) to indicate `on`, to address a bug that could cause new connections to fail after an upgrade with a message referencing an `invalid value for parameter "vectorize": "unknown(1)"`. -- The description of the setting [`changefeed.sink_io_workers`]({% link v24.3/cluster-settings.md %}#setting-changefeed-sink-io-workers) has been updated to reflect all of the [sinks]({% link v24.3/changefeed-sinks.md %}) that support the setting: the batching versions of webhook, pubsub, and kafka sinks that are enabled by `changefeed.new__sink_enabled`. [#129946][#129946] +- The description of the setting [`changefeed.sink_io_workers`]({% link v24.3/cluster-settings.md %}#setting-changefeed-sink-io-workers) has been updated to reflect all of the [sinks]({% link v24.3/changefeed-sinks.md %}) that support the setting: the batching versions of webhook, pubsub, and kafka sinks that are enabled by `changefeed.new__sink_enabled`. @@ -192,5 +192,3 @@ Docs | [Architecture Overview](https://www.cockroachlabs.com/doc Docs | [SQL Feature Support]({% link v24.3/sql-feature-support.md %}) | The page summarizes the standard SQL features CockroachDB supports as well as common extensions to the standard. Docs | [Change Data Capture Overview]({% link v24.3/change-data-capture-overview.md %}) | This page summarizes CockroachDB's data streaming capabilities. Change data capture (CDC) provides efficient, distributed, row-level changefeeds into a configurable sink for downstream processing such as reporting, caching, or full-text indexing. Docs | [Backup Architecture]({% link v24.3/backup-architecture.md %}) | This page describes the backup job workflow with a high-level overview, diagrams, and more details on each phase of the job. - -[#115166]: https://github.com/cockroachdb/cockroach/pull/115166 diff --git a/src/current/_includes/releases/v24.3/v24.3.1.md b/src/current/_includes/releases/v24.3/v24.3.1.md index 4db85eb32a8..67a0eba5098 100644 --- a/src/current/_includes/releases/v24.3/v24.3.1.md +++ b/src/current/_includes/releases/v24.3/v24.3.1.md @@ -6,73 +6,39 @@ Release Date: December 12, 2024

SQL language changes

-- When triggers fire one another cyclically, the new `recursion_depth_limit` setting now limits the depth of the recursion. By default, the limit is `1000` nested trigger executions. [#135046][#135046] +- When triggers fire one another cyclically, the new `recursion_depth_limit` setting now limits the depth of the recursion. By default, the limit is `1000` nested trigger executions.

Operational changes

-- The metrics scrape HTTP endpoint at `/ _status/vars` will now truncate HELP text at the first sentence, reducing the metadata for metrics with large descriptions. Customers can still access these descriptions via our docs. [#135021][#135021] -- The row-level TTL job now periodically updates the progress meter in the jobs introspection interfaces, including `SHOW JOBS` and the Jobs page in the DB console. [#135171][#135171] -- Telemetry delivery is now considered successful even in cases where we experience a network timeout. This will prevent throttling in cases outside an operator's control. [#136481][#136481] +- The metrics scrape HTTP endpoint at `/ _status/vars` will now truncate HELP text at the first sentence, reducing the metadata for metrics with large descriptions. Customers can still access these descriptions via our docs. +- The row-level TTL job now periodically updates the progress meter in the jobs introspection interfaces, including `SHOW JOBS` and the Jobs page in the DB console. +- Telemetry delivery is now considered successful even in cases where we experience a network timeout. This will prevent throttling in cases outside an operator's control.

DB Console changes

-- When activating statement diagnostics in the DB Console, users now have the option to produce a redacted bundle as output. This bundle will omit sensitive data. [#134993][#134993] +- When activating statement diagnostics in the DB Console, users now have the option to produce a redacted bundle as output. This bundle will omit sensitive data.

Other changes

-- Protected timestamp records for changefeeds now include the `system.users` table. This ensures that user information remains available when running CDC queries against historical data. [#134238][#134238] +- Protected timestamp records for changefeeds now include the `system.users` table. This ensures that user information remains available when running CDC queries against historical data.

Bug fixes

-- Fixed a bug that could cause `DELETE` triggers not to fire on cascading delete, and which could cause `INSERT` triggers to match incorrectly in the same scenario. [#134896][#134896] -- Reduced the duration of partitions in the gossip network when a node crashes in order to eliminate false positives in the `ranges.unavailable` metric. [#134480][#134480] -- When a non-admin user runs `DROP ROLE IF EXISTS` on a user that does not exist, an error is no longer returned. [#134970][#134970] -- Fixed a bug that could cause incorrect query results when the optimizer planned a lookup join on an index containing a column of type `CHAR(N)`, `VARCHAR(N)`, `BIT(N)`, `VARBIT(N)`, or `DECIMAL(M, N)`, and the query held that column constant to a single value (e.g. with an equality filter). [#135037][#135037] -- Fixed an unhandled error that would occur if `DROP SCHEMA` was executed on the `public` schema of the `system` database, or on an internal schema like `pg_catalog` or `information_schema`. [#135181][#135181] -- A bug has been fixed that caused incorrect evaluation of some binary expressions involving `CHAR(N)` values and untyped string literals with trailing whitespace characters. For example, the expression `'f'::CHAR = 'f '` now correctly evaluates to `true`. [#134710][#134710] -- Prevent `ALTER DATABASE` operations that modify the zone config from hanging if an invalid zone config already exists. [#135216][#135216] -- `CREATE SCHEMA` now returns the correct error if a schema name is missing. [#135928][#135928] -- `percentile_cont` and `percentile_disc` aggregate functions now support `float4` data type inputs. Previously, these functions would return an error when used with `float4` values. [#135764][#135764] -- `security.certificate.*` metrics now update correctly when certificates are reloaded during node runtime. Previously, these metrics would not reflect changes to certificates after node startup. [#136227][#136227] -- SQL roles created from LDAP groups that contain periods (.) or hyphens (-) in their Common Names (CN) no longer result in authorization failures. [#134942][#134942] -- LDAP authorization now supports partial group mapping, allowing users to authenticate even when some LDAP groups do not have corresponding CockroachDB roles. Previously, authentication would fail if any LDAP group lacked a matching database role. [#135587][#135587] -- Regional by row tables with uniqueness constraints where the region is not part of those uniqueness constraints and which also contain non-unique indices will now have those constraints properly enforced when modified at `READ COMMITTED` isolation. This bug was introduced in v24.3.0. [#137367][#137367] +- Fixed a bug that could cause `DELETE` triggers not to fire on cascading delete, and which could cause `INSERT` triggers to match incorrectly in the same scenario. +- Reduced the duration of partitions in the gossip network when a node crashes in order to eliminate false positives in the `ranges.unavailable` metric. +- When a non-admin user runs `DROP ROLE IF EXISTS` on a user that does not exist, an error is no longer returned. +- Fixed a bug that could cause incorrect query results when the optimizer planned a lookup join on an index containing a column of type `CHAR(N)`, `VARCHAR(N)`, `BIT(N)`, `VARBIT(N)`, or `DECIMAL(M, N)`, and the query held that column constant to a single value (e.g. with an equality filter). +- Fixed an unhandled error that would occur if `DROP SCHEMA` was executed on the `public` schema of the `system` database, or on an internal schema like `pg_catalog` or `information_schema`. +- A bug has been fixed that caused incorrect evaluation of some binary expressions involving `CHAR(N)` values and untyped string literals with trailing whitespace characters. For example, the expression `'f'::CHAR = 'f '` now correctly evaluates to `true`. +- Prevent `ALTER DATABASE` operations that modify the zone config from hanging if an invalid zone config already exists. +- `CREATE SCHEMA` now returns the correct error if a schema name is missing. +- `percentile_cont` and `percentile_disc` aggregate functions now support `float4` data type inputs. Previously, these functions would return an error when used with `float4` values. +- `security.certificate.*` metrics now update correctly when certificates are reloaded during node runtime. Previously, these metrics would not reflect changes to certificates after node startup. +- SQL roles created from LDAP groups that contain periods (.) or hyphens (-) in their Common Names (CN) no longer result in authorization failures. +- LDAP authorization now supports partial group mapping, allowing users to authenticate even when some LDAP groups do not have corresponding CockroachDB roles. Previously, authentication would fail if any LDAP group lacked a matching database role. +- Regional by row tables with uniqueness constraints where the region is not part of those uniqueness constraints and which also contain non-unique indices will now have those constraints properly enforced when modified at `READ COMMITTED` isolation. This bug was introduced in v24.3.0.

Performance improvements

-- The `_status/nodes_ui` API no longer returns unnecessary metrics in its response. This decreases the payload size of the API and improves the load time of various DB Console pages and components. [#135209][#135209] -- PL/pgSQL loops now execute up to 3-4x faster through improved optimization, particularly when they contain subqueries. This enhancement improves performance for routines with many iterations or nested operations. [#135648][#135648] - -[#133230]: https://github.com/cockroachdb/cockroach/pull/133230 -[#134238]: https://github.com/cockroachdb/cockroach/pull/134238 -[#134480]: https://github.com/cockroachdb/cockroach/pull/134480 -[#134710]: https://github.com/cockroachdb/cockroach/pull/134710 -[#134729]: https://github.com/cockroachdb/cockroach/pull/134729 -[#134896]: https://github.com/cockroachdb/cockroach/pull/134896 -[#134942]: https://github.com/cockroachdb/cockroach/pull/134942 -[#134970]: https://github.com/cockroachdb/cockroach/pull/134970 -[#134993]: https://github.com/cockroachdb/cockroach/pull/134993 -[#135021]: https://github.com/cockroachdb/cockroach/pull/135021 -[#135037]: https://github.com/cockroachdb/cockroach/pull/135037 -[#135046]: https://github.com/cockroachdb/cockroach/pull/135046 -[#135094]: https://github.com/cockroachdb/cockroach/pull/135094 -[#135120]: https://github.com/cockroachdb/cockroach/pull/135120 -[#135171]: https://github.com/cockroachdb/cockroach/pull/135171 -[#135181]: https://github.com/cockroachdb/cockroach/pull/135181 -[#135209]: https://github.com/cockroachdb/cockroach/pull/135209 -[#135216]: https://github.com/cockroachdb/cockroach/pull/135216 -[#135587]: https://github.com/cockroachdb/cockroach/pull/135587 -[#135648]: https://github.com/cockroachdb/cockroach/pull/135648 -[#135764]: https://github.com/cockroachdb/cockroach/pull/135764 -[#135928]: https://github.com/cockroachdb/cockroach/pull/135928 -[#136011]: https://github.com/cockroachdb/cockroach/pull/136011 -[#136227]: https://github.com/cockroachdb/cockroach/pull/136227 -[#136481]: https://github.com/cockroachdb/cockroach/pull/136481 -[#137367]: https://github.com/cockroachdb/cockroach/pull/137367 -[0d7f6eed3]: https://github.com/cockroachdb/cockroach/commit/0d7f6eed3 -[1f2b1b084]: https://github.com/cockroachdb/cockroach/commit/1f2b1b084 -[3cbd07fbd]: https://github.com/cockroachdb/cockroach/commit/3cbd07fbd -[3f5305a4c]: https://github.com/cockroachdb/cockroach/commit/3f5305a4c -[965dded2a]: https://github.com/cockroachdb/cockroach/commit/965dded2a -[989a49c3f]: https://github.com/cockroachdb/cockroach/commit/989a49c3f -[9951e3e61]: https://github.com/cockroachdb/cockroach/commit/9951e3e61 +- The `_status/nodes_ui` API no longer returns unnecessary metrics in its response. This decreases the payload size of the API and improves the load time of various DB Console pages and components. +- PL/pgSQL loops now execute up to 3-4x faster through improved optimization, particularly when they contain subqueries. This enhancement improves performance for routines with many iterations or nested operations. diff --git a/src/current/_includes/releases/v24.3/v24.3.10.md b/src/current/_includes/releases/v24.3/v24.3.10.md index 02bf01d5a16..5de432465a1 100644 --- a/src/current/_includes/releases/v24.3/v24.3.10.md +++ b/src/current/_includes/releases/v24.3/v24.3.10.md @@ -7,7 +7,3 @@ Release Date: April 9, 2025

Bug fixes

- 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. - [#144060][#144060] - - -[#144060]: https://github.com/cockroachdb/cockroach/pull/144060 diff --git a/src/current/_includes/releases/v24.3/v24.3.11.md b/src/current/_includes/releases/v24.3/v24.3.11.md index 83905423c01..00226d36a0c 100644 --- a/src/current/_includes/releases/v24.3/v24.3.11.md +++ b/src/current/_includes/releases/v24.3/v24.3.11.md @@ -6,6 +6,4 @@ Release Date: April 28, 2025

Bug fixes

-- Fixed a rare corruption bug that impacts import and materialized views. [#144661][#144661] - -[#144661]: https://github.com/cockroachdb/cockroach/pull/144661 +- Fixed a rare corruption bug that impacts import and materialized views. diff --git a/src/current/_includes/releases/v24.3/v24.3.12.md b/src/current/_includes/releases/v24.3/v24.3.12.md index 66b169eeff6..2b48f7b31fa 100644 --- a/src/current/_includes/releases/v24.3/v24.3.12.md +++ b/src/current/_includes/releases/v24.3/v24.3.12.md @@ -10,55 +10,32 @@ Release Date: April 30, 2025

SQL language changes

-- Added the `WITH IGNORE_FOREIGN_KEYS` option to `SHOW CREATE TABLE` which omits foreign key constraints from the output schema. This option is also allowed in `SHOW CREATE VIEW`, but has no effect. It cannot be combined with the `WITH REDACT` option. [#142162][#142162] -- `EXPLAIN ANALYZE` statements now display the number of transaction retries and time spent retrying, if non-zero, in the plan output. [#142929][#142929] -- 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. [#143897][#143897] +- Added the `WITH IGNORE_FOREIGN_KEYS` option to `SHOW CREATE TABLE` which omits foreign key constraints from the output schema. This option is also allowed in `SHOW CREATE VIEW`, but has no effect. It cannot be combined with the `WITH REDACT` option. +- `EXPLAIN ANALYZE` statements now display the number of transaction retries and time spent retrying, if non-zero, in the plan output. +- 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.

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. [#142745][#142745] -- 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. [#142905][#142905] -- 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. [#143591][#143591] -- 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. [#145115][#145115] +- 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. +- 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. +- 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. +- 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.

Bug fixes

-- Fixed a bug in client certificate expiration metrics, `security.certificate.expiration.client` and `security.certificate.ttl.client`. [#142843][#142843] -- Fast failback could succeed even if the standby cluster protected timestamp had been removed, causing the reverse physical cluster replication (PCR) stream to enter a crashing loop. This patch ensures the failback command fast fails. [#143078][#143078] -- Fixed a bug that caused changefeeds to fail on startup when scanning a single key. [#143149][#143149] -- 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. [#143276][#143276] -- 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. [#143289][#143289] -- 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. [#143314][#143314] -- 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 virtual_cluster ON pgurl_physical_cluster WITH READ VIRTUAL CLUSTER`. [#143369][#143369] -- Fixed a crash due to "use of enum metadata before hydration" when using logical data replication (LDR) with user-defined types (UDTs). [#143376][#143376] -- 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. [#143591][#143591] -- Fixed a bug in v24.1.14, v24.3.7, v24.3.8, and v25.1 that could cause a nil-pointer error when a column's default expression contained a volatile expression (like `nextval`) as a UDF argument. [#143636][#143636] -- 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. [#143793][#143793] -- The `ALTER VIRTUAL CLUSTER SET REPLICATION READ VIRTUAL CLUSTER` syntax is now supported for adding a reader virtual cluster for an existing PCR standby. [#143905][#143905] -- Previously, whenever CockroachDB collected a statement bundle when plan-gist-based matching was used, `plan.txt` would be incomplete. This is now fixed. The bug had been present since the introduction of plan-gist-based matching in v23.1, and was partially addressed in v24.2. [#143935][#143935] -- Fixed a bug where CockroachDB could encounter a `cannot specify timestamp older than ...` error during table statistics collection in some cases (e.g., when the cluster is overloaded). The bug was present since v19.1. [#144017][#144017] -- 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. [#144030][#144030] -- Fixed a rare corruption bug that impacts `IMPORT` and materialized views. [#144688][#144688] - -[#144030]: https://github.com/cockroachdb/cockroach/pull/144030 -[#143314]: https://github.com/cockroachdb/cockroach/pull/143314 -[#143905]: https://github.com/cockroachdb/cockroach/pull/143905 -[#142905]: https://github.com/cockroachdb/cockroach/pull/142905 -[#143591]: https://github.com/cockroachdb/cockroach/pull/143591 -[#143276]: https://github.com/cockroachdb/cockroach/pull/143276 -[#143289]: https://github.com/cockroachdb/cockroach/pull/143289 -[#143369]: https://github.com/cockroachdb/cockroach/pull/143369 -[#143793]: https://github.com/cockroachdb/cockroach/pull/143793 -[#142162]: https://github.com/cockroachdb/cockroach/pull/142162 -[#142745]: https://github.com/cockroachdb/cockroach/pull/142745 -[#143935]: https://github.com/cockroachdb/cockroach/pull/143935 -[#144688]: https://github.com/cockroachdb/cockroach/pull/144688 -[#144017]: https://github.com/cockroachdb/cockroach/pull/144017 -[#145115]: https://github.com/cockroachdb/cockroach/pull/145115 -[#142929]: https://github.com/cockroachdb/cockroach/pull/142929 -[#143149]: https://github.com/cockroachdb/cockroach/pull/143149 -[#143078]: https://github.com/cockroachdb/cockroach/pull/143078 -[#143376]: https://github.com/cockroachdb/cockroach/pull/143376 -[#143636]: https://github.com/cockroachdb/cockroach/pull/143636 -[#143897]: https://github.com/cockroachdb/cockroach/pull/143897 -[#142843]: https://github.com/cockroachdb/cockroach/pull/142843 +- Fixed a bug in client certificate expiration metrics, `security.certificate.expiration.client` and `security.certificate.ttl.client`. +- Fast failback could succeed even if the standby cluster protected timestamp had been removed, causing the reverse physical cluster replication (PCR) stream to enter a crashing loop. This patch ensures the failback command fast fails. +- Fixed a bug that caused changefeeds to fail on startup when scanning a single key. +- 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. +- 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. +- 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. +- 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 virtual_cluster ON pgurl_physical_cluster WITH READ VIRTUAL CLUSTER`. +- Fixed a crash due to "use of enum metadata before hydration" when using logical data replication (LDR) with user-defined types (UDTs). +- 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. +- Fixed a bug in v24.1.14, v24.3.7, v24.3.8, and v25.1 that could cause a nil-pointer error when a column's default expression contained a volatile expression (like `nextval`) as a UDF argument. +- 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. +- The `ALTER VIRTUAL CLUSTER SET REPLICATION READ VIRTUAL CLUSTER` syntax is now supported for adding a reader virtual cluster for an existing PCR standby. +- Previously, whenever CockroachDB collected a statement bundle when plan-gist-based matching was used, `plan.txt` would be incomplete. This is now fixed. The bug had been present since the introduction of plan-gist-based matching in v23.1, and was partially addressed in v24.2. +- Fixed a bug where CockroachDB could encounter a `cannot specify timestamp older than ...` error during table statistics collection in some cases (e.g., when the cluster is overloaded). The bug was present since v19.1. +- 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. +- Fixed a rare corruption bug that impacts `IMPORT` and materialized views. diff --git a/src/current/_includes/releases/v24.3/v24.3.13.md b/src/current/_includes/releases/v24.3/v24.3.13.md index 4002919b8b8..413497bb589 100644 --- a/src/current/_includes/releases/v24.3/v24.3.13.md +++ b/src/current/_includes/releases/v24.3/v24.3.13.md @@ -7,8 +7,3 @@ Release Date: May 15, 2025

Operational changes

- The default value of the `admission.l0_file_count_overload_threshold` cluster setting is now `4000`. This change improves stability under high write load and during Write-Ahead Log (WAL) failover by addressing token exhaustion. - [#146597][#146597] - - -[#146597]: https://github.com/cockroachdb/cockroach/pull/146597 - diff --git a/src/current/_includes/releases/v24.3/v24.3.14.md b/src/current/_includes/releases/v24.3/v24.3.14.md index a2a79c23faa..20390058ee8 100644 --- a/src/current/_includes/releases/v24.3/v24.3.14.md +++ b/src/current/_includes/releases/v24.3/v24.3.14.md @@ -7,75 +7,51 @@ Release Date: May 28, 2025

Operational changes

- Changed the default value of the cluster setting `admission.l0_file_count_overload_threshold` to `4000`. - [#145919][#145919] + - 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. - [#145114][#145114] +

DB Console changes

- 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. - [#145988][#145988] +

Bug fixes

- Fixed a bug where using values `changefeed.aggregator.flush_jitter` and `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. - [#144425][#144425] + - 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 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. - [#144805][#144805] + - Fixed a bug in the **SQL Activity Statements** page where filtering by **Statement Type** returned no results. The filter now works as expected. - [#144854][#144854] + - Improved the performance of `SHOW CREATE TABLE` on multi-region databases with large numbers of objects. - [#145073][#145073] + - 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. - [#145392][#145392] + - Fixed a bug where a node that was drained as part of decommissioning may have interrupted SQL connections that were still active during drain (and for which drain would have been expected to wait). - [#145447][#145447] + - Fixed a bug that could lead to schema changes hanging after a cluster recovered from availability issues. - [#145543][#145543] + - 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. - [#145574][#145574] + - 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. - [#145915][#145915] + - 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). - [#145997][#145997] + - Fixed a bug where orphaned leases were not properly cleaned up. - [#146096][#146096] + - Fixed an internal assertion failure that could occur during operations like `ALTER TYPE` or `ALTER DATABASE ... ADD REGION` when temporary tables were present. - [#146198][#146198] + - 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. - [#146222][#146222] + - 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. - [#146324][#146324] + - Fixed a bug where an invalid comment in the `system.comment` table for a schema object could make it inaccessible. - [#146416][#146416] + - Fixed a bug in the rangefeed restarts metric that was introduced in v23.2. - [#133978][#133978] + - Fixed a rare corruption bug that impacts import and materialized views. - [#144661][#144661] - - -[#144854]: https://github.com/cockroachdb/cockroach/pull/144854 -[#145915]: https://github.com/cockroachdb/cockroach/pull/145915 -[#146096]: https://github.com/cockroachdb/cockroach/pull/146096 -[#145574]: https://github.com/cockroachdb/cockroach/pull/145574 -[#145997]: https://github.com/cockroachdb/cockroach/pull/145997 -[#146198]: https://github.com/cockroachdb/cockroach/pull/146198 -[#146222]: https://github.com/cockroachdb/cockroach/pull/146222 -[#145919]: https://github.com/cockroachdb/cockroach/pull/145919 -[#144652]: https://github.com/cockroachdb/cockroach/pull/144652 -[#145073]: https://github.com/cockroachdb/cockroach/pull/145073 -[#145543]: https://github.com/cockroachdb/cockroach/pull/145543 -[#144661]: https://github.com/cockroachdb/cockroach/pull/144661 -[#144425]: https://github.com/cockroachdb/cockroach/pull/144425 -[#144805]: https://github.com/cockroachdb/cockroach/pull/144805 -[#146416]: https://github.com/cockroachdb/cockroach/pull/146416 -[#133978]: https://github.com/cockroachdb/cockroach/pull/133978 -[#145114]: https://github.com/cockroachdb/cockroach/pull/145114 -[#145988]: https://github.com/cockroachdb/cockroach/pull/145988 -[#145392]: https://github.com/cockroachdb/cockroach/pull/145392 -[#145447]: https://github.com/cockroachdb/cockroach/pull/145447 -[#146324]: https://github.com/cockroachdb/cockroach/pull/146324 diff --git a/src/current/_includes/releases/v24.3/v24.3.15.md b/src/current/_includes/releases/v24.3/v24.3.15.md index 78d6f7b4d91..c3c6e02289b 100644 --- a/src/current/_includes/releases/v24.3/v24.3.15.md +++ b/src/current/_includes/releases/v24.3/v24.3.15.md @@ -7,46 +7,32 @@ Release Date: June 25, 2025

SQL language changes

- 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. - [#148229][#148229] + - 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`). - [#148229][#148229] +

Bug fixes

- 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. - [#146974][#146974] + - Fixed a bug that could potentially cause a changefeed to complete erroneously when one of its watched tables encounters a schema change. - [#147031][#147031] + - 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. - [#147221][#147221] + - 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). - [#147337][#147337] + - 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`. - [#147415][#147415] + - Fixed the database filter in the DB Console's Hot Ranges page, which was broken in v24.3.3, and updated the locality filter to remove duplicate entries. - [#147444][#147444] + - 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. - [#147458][#147458] + - Fixed a bug where prepared statements on schema changes could fail with runtime errors. - [#147669][#147669] + - Fixed a bug where `ALTER TABLE` was modifying identity attributes on columns not backed by a sequence. - [#147768][#147768] -- Fixed an issue with logical data replication (LDR) where the presence of a unique index could have caused spurious dead-letter queue (DLQ) entries if the unique index had a smaller index ID than the primary key index. [#147354][#147354] + +- Fixed an issue with logical data replication (LDR) where the presence of a unique index could have caused spurious dead-letter queue (DLQ) entries if the unique index had a smaller index ID than the primary key index.

Performance improvements

- TTL jobs now respond to cluster topology changes by restarting and rebalancing across available nodes. - [#147211][#147211] - -[#147031]: https://github.com/cockroachdb/cockroach/pull/147031 -[#147221]: https://github.com/cockroachdb/cockroach/pull/147221 -[#147337]: https://github.com/cockroachdb/cockroach/pull/147337 -[#147415]: https://github.com/cockroachdb/cockroach/pull/147415 -[#147444]: https://github.com/cockroachdb/cockroach/pull/147444 -[#147669]: https://github.com/cockroachdb/cockroach/pull/147669 -[#147211]: https://github.com/cockroachdb/cockroach/pull/147211 -[#148229]: https://github.com/cockroachdb/cockroach/pull/148229 -[#146974]: https://github.com/cockroachdb/cockroach/pull/146974 -[#147458]: https://github.com/cockroachdb/cockroach/pull/147458 -[#147768]: https://github.com/cockroachdb/cockroach/pull/147768 -[#147354]: https://github.com/cockroachdb/cockroach/pull/147354 diff --git a/src/current/_includes/releases/v24.3/v24.3.16.md b/src/current/_includes/releases/v24.3/v24.3.16.md index abc1bb4c8f6..57a246749f8 100644 --- a/src/current/_includes/releases/v24.3/v24.3.16.md +++ b/src/current/_includes/releases/v24.3/v24.3.16.md @@ -7,23 +7,23 @@ Release Date: July 28, 2025

SQL language changes

- 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`). - [#148228][#148228] + - 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. - [#148228][#148228] +

Operational changes

- 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. - [#149850][#149850] +

Bug fixes

- Fixed a data race in the `cloudstorage` sink. - [#147161][#147161] + - Fixed an error in `crdb_internal.table_spans` that could occur when a table's schema had been dropped. - [#148048][#148048] + - Fixed a bug where `libpq` clients using the async API could hang with large result sets (Python: psycopg; Ruby: ActiveRecord, ruby-pg). - [#148470][#148470] + - The `RESET ALL` statement no longer affects the following session variables: - `is_superuser` - `role` @@ -33,15 +33,5 @@ Release Date: July 28, 2025 - `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. [#149431][#149431] + 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. - Fixed a bug that would allow a race condition in foreign key cascades under `READ COMMITTED` and `REPEATABLE READ` isolation levels. - [#150342][#150342] - - -[#150342]: https://github.com/cockroachdb/cockroach/pull/150342 -[#148228]: https://github.com/cockroachdb/cockroach/pull/148228 -[#149850]: https://github.com/cockroachdb/cockroach/pull/149850 -[#147161]: https://github.com/cockroachdb/cockroach/pull/147161 -[#148048]: https://github.com/cockroachdb/cockroach/pull/148048 -[#148470]: https://github.com/cockroachdb/cockroach/pull/148470 -[#149431]: https://github.com/cockroachdb/cockroach/pull/149431 diff --git a/src/current/_includes/releases/v24.3/v24.3.17.md b/src/current/_includes/releases/v24.3/v24.3.17.md index b8ce1d8830f..aa506ccaa16 100644 --- a/src/current/_includes/releases/v24.3/v24.3.17.md +++ b/src/current/_includes/releases/v24.3/v24.3.17.md @@ -7,7 +7,3 @@ Release Date: August 1, 2025

Bug fixes

- Fixed a bug that could cause some errors returned by attempts to upload backup data to external storage providers to be undetected, potentially causing incomplete backups. - [#151094][#151094] - - -[#151094]: https://github.com/cockroachdb/cockroach/pull/151094 diff --git a/src/current/_includes/releases/v24.3/v24.3.18.md b/src/current/_includes/releases/v24.3/v24.3.18.md index 770a3e356ec..2cd5c08a3e8 100644 --- a/src/current/_includes/releases/v24.3/v24.3.18.md +++ b/src/current/_includes/releases/v24.3/v24.3.18.md @@ -6,7 +6,4 @@ Release Date: August 8, 2025

Bug fixes

-- 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. [#151564][#151564] - - -[#151564]: https://github.com/cockroachdb/cockroach/pull/151564 +- 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. diff --git a/src/current/_includes/releases/v24.3/v24.3.19.md b/src/current/_includes/releases/v24.3/v24.3.19.md index f03ab16406c..efd48c3ede5 100644 --- a/src/current/_includes/releases/v24.3/v24.3.19.md +++ b/src/current/_includes/releases/v24.3/v24.3.19.md @@ -8,39 +8,27 @@ Release Date: August 22, 2025 - Backporting detailed error logging logic gated behind a cluster setting. The cluster setting enables detailed - error logging for messages exceeding Kafka v2 size limit. [#150182][#150182] -- 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. [#150182][#150182] + error logging for messages exceeding Kafka v2 size limit. +- 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.

Operational changes

-- 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. [#149841][#149841] -- 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. [#151489][#151489] +- 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. +- 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.

Bug fixes

-- Fixed an issue where the `mvcc_timestamp` field was incorrectly returning zero values when used with CDC queries. The timestamp is now emitted correctly. [#147112][#147112] -- Fixed a bug that would allow a race condition in foreign key cascades under `READ COMMITTED` and `REPEATABLE READ` isolation levels. [#150336][#150336] -- Fixed a bug that could cause some errors returned by attempts to upload backup data to external storage providers to be undetected, potentially causing incomplete backups. [#151081][#151081] -- 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. [#151141][#151141] -- Fixed a bug where `debug.zip` files collected from clusters with `disallow_full_table_scans` enabled were missing system table data. [#151223][#151223] +- Fixed an issue where the `mvcc_timestamp` field was incorrectly returning zero values when used with CDC queries. The timestamp is now emitted correctly. +- Fixed a bug that would allow a race condition in foreign key cascades under `READ COMMITTED` and `REPEATABLE READ` isolation levels. +- Fixed a bug that could cause some errors returned by attempts to upload backup data to external storage providers to be undetected, potentially causing incomplete backups. +- 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. +- Fixed a bug where `debug.zip` files collected from clusters with `disallow_full_table_scans` enabled were missing system table data.

Build changes

-- Upgrade Go to consume security fixes [#150989][#150989] +- Upgrade Go to consume security fixes

Miscellaneous

- Restore will now re-attempt `AdminSplit` KV requests - instead of immediately failing and pausing the job. [#149619][#149619] - - -[#151489]: https://github.com/cockroachdb/cockroach/pull/151489 -[#147112]: https://github.com/cockroachdb/cockroach/pull/147112 -[#151081]: https://github.com/cockroachdb/cockroach/pull/151081 -[#151223]: https://github.com/cockroachdb/cockroach/pull/151223 -[#150989]: https://github.com/cockroachdb/cockroach/pull/150989 -[#150182]: https://github.com/cockroachdb/cockroach/pull/150182 -[#149841]: https://github.com/cockroachdb/cockroach/pull/149841 -[#149619]: https://github.com/cockroachdb/cockroach/pull/149619 -[#150336]: https://github.com/cockroachdb/cockroach/pull/150336 -[#151141]: https://github.com/cockroachdb/cockroach/pull/151141 + instead of immediately failing and pausing the job. diff --git a/src/current/_includes/releases/v24.3/v24.3.2.md b/src/current/_includes/releases/v24.3/v24.3.2.md index 01f29d8796a..4e4cc58cf47 100644 --- a/src/current/_includes/releases/v24.3/v24.3.2.md +++ b/src/current/_includes/releases/v24.3/v24.3.2.md @@ -6,7 +6,4 @@ Release Date: December 26, 2024

SQL language changes

-- Added the `legacy_varchar_typing` session setting. When set to `on`, type-checking comparisons involving `VARCHAR` columns behave as they did in all previous versions. When set to `off`, type-checking of these comparisons is more strict and queries that previously succeeded may now error with the message `unsupported comparison operator`. These errors can be fixed by adding explicit type casts. The `legacy_varchar_typing` session setting is on by default. [#137943][#137943] - - -[#137943]: https://github.com/cockroachdb/cockroach/pull/137943 +- Added the `legacy_varchar_typing` session setting. When set to `on`, type-checking comparisons involving `VARCHAR` columns behave as they did in all previous versions. When set to `off`, type-checking of these comparisons is more strict and queries that previously succeeded may now error with the message `unsupported comparison operator`. These errors can be fixed by adding explicit type casts. The `legacy_varchar_typing` session setting is on by default. diff --git a/src/current/_includes/releases/v24.3/v24.3.20.md b/src/current/_includes/releases/v24.3/v24.3.20.md index 798f12bf656..2bc6549056e 100644 --- a/src/current/_includes/releases/v24.3/v24.3.20.md +++ b/src/current/_includes/releases/v24.3/v24.3.20.md @@ -6,36 +6,25 @@ Release Date: September 22, 2025

SQL language changes

-- 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. [#152602][#152602] +- 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.

Bug fixes

-- Fixed a bug where invalid default expressions could cause backfilling schema changes to retry forever. [#147015][#147015] -- Fixed a bug that could cause excessive memory allocations when compacting timeseries keys. [#151813][#151813] -- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. [#152313][#152313] +- Fixed a bug where invalid default expressions could cause backfilling schema changes to retry forever. +- Fixed a bug that could cause excessive memory allocations when compacting timeseries keys. +- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. - 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;` [#152376][#152376] -- Added an automatic repair for dangling or invalid entries in the `system.comments` table. [#152468][#152468] -- Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions. [#152742][#152742] + - `SET enable_durable_locking_for_serializable = on;` +- Added an automatic repair for dangling or invalid entries in the `system.comments` table. +- Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions.

Performance improvements

-- Lookup joins can now be used on tables with virtual columns even if the type of the search argument is not identical to the column type referenced in the virtual column. [#152630][#152630] +- 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.

Miscellaneous

- Tunes S3 client retry behavior to be more reliable in the - presence of correlated errors. [#151875][#151875] - - -[#152742]: https://github.com/cockroachdb/cockroach/pull/152742 -[#152630]: https://github.com/cockroachdb/cockroach/pull/152630 -[#152602]: https://github.com/cockroachdb/cockroach/pull/152602 -[#152313]: https://github.com/cockroachdb/cockroach/pull/152313 -[#152376]: https://github.com/cockroachdb/cockroach/pull/152376 -[#152468]: https://github.com/cockroachdb/cockroach/pull/152468 -[#151875]: https://github.com/cockroachdb/cockroach/pull/151875 -[#147015]: https://github.com/cockroachdb/cockroach/pull/147015 -[#151813]: https://github.com/cockroachdb/cockroach/pull/151813 + presence of correlated errors. diff --git a/src/current/_includes/releases/v24.3/v24.3.21.md b/src/current/_includes/releases/v24.3/v24.3.21.md index 42308a470b9..56b2f63bf85 100644 --- a/src/current/_includes/releases/v24.3/v24.3.21.md +++ b/src/current/_includes/releases/v24.3/v24.3.21.md @@ -6,10 +6,6 @@ Release Date: October 17, 2025

Bug fixes

-- Fixed a bug where an `INSERT` statement could fail with a type checking error while adding a `BIT(n)` column. [#153604][#153604] -- 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. [#154284][#154284] -- Fixed a bug where the presence of duplicate temporary tables in a backup caused the restore to fail with an error containing the text `restoring table desc and namespace entries: table already exists`. [#154399][#154399] - -[#153604]: https://github.com/cockroachdb/cockroach/pull/153604 -[#154284]: https://github.com/cockroachdb/cockroach/pull/154284 -[#154399]: https://github.com/cockroachdb/cockroach/pull/154399 +- Fixed a bug where an `INSERT` statement could fail with a type checking error while adding a `BIT(n)` column. +- 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. +- Fixed a bug where the presence of duplicate temporary tables in a backup caused the restore to fail with an error containing the text `restoring table desc and namespace entries: table already exists`. diff --git a/src/current/_includes/releases/v24.3/v24.3.22.md b/src/current/_includes/releases/v24.3/v24.3.22.md index b656d2858ea..76567ca3ae5 100644 --- a/src/current/_includes/releases/v24.3/v24.3.22.md +++ b/src/current/_includes/releases/v24.3/v24.3.22.md @@ -6,6 +6,4 @@ Release Date: October 30, 2025

Bug fixes

-- 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. [#156311][#156311] - -[#156311]: https://github.com/cockroachdb/cockroach/pull/156311 +- 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. diff --git a/src/current/_includes/releases/v24.3/v24.3.23.md b/src/current/_includes/releases/v24.3/v24.3.23.md index a1cba65e22c..2bcc1425b9d 100644 --- a/src/current/_includes/releases/v24.3/v24.3.23.md +++ b/src/current/_includes/releases/v24.3/v24.3.23.md @@ -6,16 +6,12 @@ Release Date: November 14, 2025

SQL language changes

-- Added the `sql.statements.bytes_read.count` metric that counts the number of bytes scanned by SQL statements. [#156598][#156598] -- Added the `sql.statements.index_rows_written.count` metric that counts the number of primary and secondary index rows modified by SQL statements. [#156598][#156598] -- Added the `sql.statements.index_bytes_written.count` metric that counts the number of primary and secondary index bytes modified by SQL statements. [#156598][#156598] -- Added the `sql.statements.rows_read.count` metric that counts the number of index rows read by SQL statements. [#156598][#156598] +- Added the `sql.statements.bytes_read.count` metric that counts the number of bytes scanned by SQL statements. +- Added the `sql.statements.index_rows_written.count` metric that counts the number of primary and secondary index rows modified by SQL statements. +- Added the `sql.statements.index_bytes_written.count` metric that counts the number of primary and secondary index bytes modified by SQL statements. +- Added the `sql.statements.rows_read.count` metric that counts the number of index rows read by SQL statements.

Bug fixes

-- Fixed a bug where the job responsible for compacting stats for the SQL activity state could enter an unschedulable state. [#155971][#155971] -- Fixed a bug where changefeeds using CDC queries could sometimes unexpectedly fail after a schema change with a descriptor retrieval error. [#156549][#156549] - -[#155971]: https://github.com/cockroachdb/cockroach/pull/155971 -[#156549]: https://github.com/cockroachdb/cockroach/pull/156549 -[#156598]: https://github.com/cockroachdb/cockroach/pull/156598 +- Fixed a bug where the job responsible for compacting stats for the SQL activity state could enter an unschedulable state. +- Fixed a bug where changefeeds using CDC queries could sometimes unexpectedly fail after a schema change with a descriptor retrieval error. diff --git a/src/current/_includes/releases/v24.3/v24.3.24.md b/src/current/_includes/releases/v24.3/v24.3.24.md index 16f09cd74d2..34a38b31ff2 100644 --- a/src/current/_includes/releases/v24.3/v24.3.24.md +++ b/src/current/_includes/releases/v24.3/v24.3.24.md @@ -6,7 +6,4 @@ Release Date: December 12, 2025

Bug fixes

-- A mechanism that prevents unsafe replication changes from causing loss of quorum now functions correctly. An internal function has been fixed to properly return errors, enhancing the reliability of replication safeguards. [#156520][#156520] - - -[#156520]: https://github.com/cockroachdb/cockroach/pull/156520 +- A mechanism that prevents unsafe replication changes from causing loss of quorum now functions correctly. An internal function has been fixed to properly return errors, enhancing the reliability of replication safeguards. diff --git a/src/current/_includes/releases/v24.3/v24.3.25.md b/src/current/_includes/releases/v24.3/v24.3.25.md index 9d8c3ececae..82d3e8efd0b 100644 --- a/src/current/_includes/releases/v24.3/v24.3.25.md +++ b/src/current/_includes/releases/v24.3/v24.3.25.md @@ -11,10 +11,6 @@ Release Date: January 9, 2026 - The query had an equality filter on a placeholder and a `UNIQUE` column - The column contained _NULL_ values - The placeholder was assigned to _NULL_ during execution - - Starting in v25.4, the requirements to trigger the bug were loosened: the column no longer needed to be `UNIQUE`, and the bug could be reproduced if the column was included in any index. [#159078][#159078] -- Fixed a race condition that could occur during context cancellation of an incoming snapshot. [#159538][#159538] -- Fixed a bug causing a query predicate to be ignored when the predicate was on a column following one or more `ENUM` columns in an index, the predicate constrained the column to multiple values, and a lookup join to the index was chosen for the query plan. This bug was introduced in 24.3.0 and has been present in all versions since. [#159774][#159774] - -[#159078]: https://github.com/cockroachdb/cockroach/pull/159078 -[#159538]: https://github.com/cockroachdb/cockroach/pull/159538 -[#159774]: https://github.com/cockroachdb/cockroach/pull/159774 + - Starting in v25.4, the requirements to trigger the bug were loosened: the column no longer needed to be `UNIQUE`, and the bug could be reproduced if the column was included in any index. +- Fixed a race condition that could occur during context cancellation of an incoming snapshot. +- Fixed a bug causing a query predicate to be ignored when the predicate was on a column following one or more `ENUM` columns in an index, the predicate constrained the column to multiple values, and a lookup join to the index was chosen for the query plan. This bug was introduced in 24.3.0 and has been present in all versions since. diff --git a/src/current/_includes/releases/v24.3/v24.3.26.md b/src/current/_includes/releases/v24.3/v24.3.26.md index 9eaae09f193..1ad35ef8abc 100644 --- a/src/current/_includes/releases/v24.3/v24.3.26.md +++ b/src/current/_includes/releases/v24.3/v24.3.26.md @@ -6,7 +6,4 @@ Release Date: February 11, 2026

Bug fixes

-- Fixed a bug where `IMPORT` with Avro data using `OCF` format could silently lose data if the underlying storage (e.g., S3) returned an error during read. Such errors are now properly reported. Other formats (specified via `data_as_binary_records` and `data_as_json_records` options) are unaffected. The bug has been present since approximately v20.1. [#161321][#161321] - - -[#161321]: https://github.com/cockroachdb/cockroach/pull/161321 +- Fixed a bug where `IMPORT` with Avro data using `OCF` format could silently lose data if the underlying storage (e.g., S3) returned an error during read. Such errors are now properly reported. Other formats (specified via `data_as_binary_records` and `data_as_json_records` options) are unaffected. The bug has been present since approximately v20.1. diff --git a/src/current/_includes/releases/v24.3/v24.3.27.md b/src/current/_includes/releases/v24.3/v24.3.27.md index ba984601a8c..a90a1060ece 100644 --- a/src/current/_includes/releases/v24.3/v24.3.27.md +++ b/src/current/_includes/releases/v24.3/v24.3.27.md @@ -6,9 +6,5 @@ Release Date: February 19, 2026

Bug fixes

-- Fixed a rare race condition between range splits and MVCC garbage collection where a GCRequest could target keys outside its declared span. In rare cases, this could result in data on the post-split right-hand side (RHS) being incorrectly garbage collected, potentially leading to lost writes. The system now detects and rejects such malformed GC requests. [#163774][#163774] -- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using json or json-compact formatting. Debug zip generation now safely handles malformed log lines and prevents excessive memory consumption. [#163800][#163800] - - -[#163774]: https://github.com/cockroachdb/cockroach/pull/163774 -[#163800]: https://github.com/cockroachdb/cockroach/pull/163800 +- Fixed a rare race condition between range splits and MVCC garbage collection where a GCRequest could target keys outside its declared span. In rare cases, this could result in data on the post-split right-hand side (RHS) being incorrectly garbage collected, potentially leading to lost writes. The system now detects and rejects such malformed GC requests. +- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using json or json-compact formatting. Debug zip generation now safely handles malformed log lines and prevents excessive memory consumption. diff --git a/src/current/_includes/releases/v24.3/v24.3.28.md b/src/current/_includes/releases/v24.3/v24.3.28.md index 35f957fc2e5..2a0c969ce65 100644 --- a/src/current/_includes/releases/v24.3/v24.3.28.md +++ b/src/current/_includes/releases/v24.3/v24.3.28.md @@ -6,7 +6,4 @@ Release Date: March 5, 2026

Bug fixes

-- Fixed a bug where an internal context structure could grow unboundedly over time. In rare cases, on nodes running continuously for several months or more, this could cause the `cockroach` process to appear stalled when a CPU profile was requested.​​​​​​​​​​​​​​​​ [#164778][#164778] - - -[#164778]: https://github.com/cockroachdb/cockroach/pull/164778 +- Fixed a bug where an internal context structure could grow unboundedly over time. In rare cases, on nodes running continuously for several months or more, this could cause the `cockroach` process to appear stalled when a CPU profile was requested.​​​​​​​​​​​​​​​​ diff --git a/src/current/_includes/releases/v24.3/v24.3.29.md b/src/current/_includes/releases/v24.3/v24.3.29.md index fa7d3a9e81d..76aadddca62 100644 --- a/src/current/_includes/releases/v24.3/v24.3.29.md +++ b/src/current/_includes/releases/v24.3/v24.3.29.md @@ -6,18 +6,11 @@ Release Date: March 9, 2026

Bug fixes

-- Fixed a bug where AVRO file imports of data with JSON or binary records could hang indefinitely when encountering stream errors from cloud storage (such as `HTTP/2` `CANCEL` errors). Import jobs will now properly fail with an error instead of hanging. [#161438][#161438] -- Fixed a bug that, in rare cases, could cause a node to crash when using a changefeed with the `end_time` option. [#161678][#161678] -- Fixed a bug that could cause changefeeds using Kafka v1 sinks to hang when the changefeed was cancelled. [#162117][#162117] -- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using `json` or `json-compact` formatting. This bug was introduced in v24.1. [#163360][#163360] +- Fixed a bug where AVRO file imports of data with JSON or binary records could hang indefinitely when encountering stream errors from cloud storage (such as `HTTP/2` `CANCEL` errors). Import jobs will now properly fail with an error instead of hanging. +- Fixed a bug that, in rare cases, could cause a node to crash when using a changefeed with the `end_time` option. +- Fixed a bug that could cause changefeeds using Kafka v1 sinks to hang when the changefeed was cancelled. +- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using `json` or `json-compact` formatting. This bug was introduced in v24.1.

Miscellaneous

-- Fixed a bug where import rollback could incorrectly revert data in a table that was already online. This could only occur if an import job was cancelled or failed after the import had already succeeded and the table was made available for use. [#159900][#159900] - - -[#161438]: https://github.com/cockroachdb/cockroach/pull/161438 -[#161678]: https://github.com/cockroachdb/cockroach/pull/161678 -[#162117]: https://github.com/cockroachdb/cockroach/pull/162117 -[#163360]: https://github.com/cockroachdb/cockroach/pull/163360 -[#159900]: https://github.com/cockroachdb/cockroach/pull/159900 +- Fixed a bug where import rollback could incorrectly revert data in a table that was already online. This could only occur if an import job was cancelled or failed after the import had already succeeded and the table was made available for use. diff --git a/src/current/_includes/releases/v24.3/v24.3.3.md b/src/current/_includes/releases/v24.3/v24.3.3.md index d7883c73883..b0b4fa3a2a4 100644 --- a/src/current/_includes/releases/v24.3/v24.3.3.md +++ b/src/current/_includes/releases/v24.3/v24.3.3.md @@ -11,105 +11,55 @@ Release Date: January 9, 2025 - `changefeed.parallel_io_result_queue_nanos` - `changefeed.sink_batch_hist_nanos` - `changefeed.flush_hist_nanos` - - `changefeed.kafka_throttling_hist_nanos` [#136604][#136604] -- Added support for multiple seed brokers in the new Kafka sink. [#136727][#136727] -- Added a new metric `distsender.rangefeed.catchup_ranges_waiting_client_side` that counts how many rangefeeds are waiting on the client-side limiter to start performing catchup scans. [#136838][#136838] -- Added support for a new `AWS_USE_PATH_STYLE` parameter in S3 URI parsing. [#136934][#136934] + - `changefeed.kafka_throttling_hist_nanos` +- Added support for multiple seed brokers in the new Kafka sink. +- Added a new metric `distsender.rangefeed.catchup_ranges_waiting_client_side` that counts how many rangefeeds are waiting on the client-side limiter to start performing catchup scans. +- Added support for a new `AWS_USE_PATH_STYLE` parameter in S3 URI parsing.

SQL language changes

-- Added support for `SHOW TRIGGERS`, which displays the names of all triggers on a table, and whether each trigger is enabled. The user must have any privilege on the table, or be its owner. [#135862][#135862] -- Added support for `SHOW CREATE TRIGGER`, which displays the CREATE statement for a trigger. The user must have any privilege on the table, or be its owner. [#135862][#135862] -- The names of `BEFORE` triggers fired by a mutation are now included in the `EXPLAIN` output, with the trigger-function invocations also visible in the output of verbose `EXPLAIN`. [#135864][#135864] -- `AFTER` triggers are now included in the output of `EXPLAIN` and `EXPLAIN ANALYZE`. [#135864][#135864] -- Added the `legacy_varchar_typing` session setting, which reverts the changes of [#133037](https://github.com/cockroachdb/cockroach/pull/133037) that causes the change in typing behavior described in [#137837](https://github.com/cockroachdb/cockroach/pull/137837). Specifically, it makes type-checking and overload resolution ignore the newly added "unpreferred" overloads. This setting defaults to `on`. [#137919][#137919] +- Added support for `SHOW TRIGGERS`, which displays the names of all triggers on a table, and whether each trigger is enabled. The user must have any privilege on the table, or be its owner. +- Added support for `SHOW CREATE TRIGGER`, which displays the CREATE statement for a trigger. The user must have any privilege on the table, or be its owner. +- The names of `BEFORE` triggers fired by a mutation are now included in the `EXPLAIN` output, with the trigger-function invocations also visible in the output of verbose `EXPLAIN`. +- `AFTER` triggers are now included in the output of `EXPLAIN` and `EXPLAIN ANALYZE`. +- Added the `legacy_varchar_typing` session setting, which reverts the changes of that causes the change in typing behavior described in. Specifically, it makes type-checking and overload resolution ignore the newly added "unpreferred" overloads. This setting defaults to `on`.

Operational changes

-- Removed the `sql.auth.resolve_membership_single_scan.enabled` cluster setting. This was added out of precaution in case it was necessary to revert back to the old behavior for looking up role memberships, but this escape hatch has never been needed in practice since this was added in v23.1. [#136162][#136162] -- Telemetry delivery is now considered successful even in cases of a network timeout. This will prevent throttling in cases outside an operator's control. [#136480][#136480] -- When a schema change job is completed, rolls back, or encounters a failure, the time taken since the job began is now logged in a structured log in the `SQL_SCHEMA` log channel. [#136929][#136929] -- Added a new configurable parameter `kv.transaction.max_intents_and_locks` that will prevent transactions from creating too many intents. [#137687][#137687] -- Added the metric `txn.count_limit_rejected`, which tracks the KV transactions that have been aborted because they exceeded the max number of writes and locking reads allowed. [#137687][#137687] -- Added the metric `txn.count_limit_on_response`, which tracks the number of KV transactions that have exceeded the count limit on a response. [#137687][#137687] +- Removed the `sql.auth.resolve_membership_single_scan.enabled` cluster setting. This was added out of precaution in case it was necessary to revert back to the old behavior for looking up role memberships, but this escape hatch has never been needed in practice since this was added in v23.1. +- Telemetry delivery is now considered successful even in cases of a network timeout. This will prevent throttling in cases outside an operator's control. +- When a schema change job is completed, rolls back, or encounters a failure, the time taken since the job began is now logged in a structured log in the `SQL_SCHEMA` log channel. +- Added a new configurable parameter `kv.transaction.max_intents_and_locks` that will prevent transactions from creating too many intents. +- Added the metric `txn.count_limit_rejected`, which tracks the KV transactions that have been aborted because they exceeded the max number of writes and locking reads allowed. +- Added the metric `txn.count_limit_on_response`, which tracks the number of KV transactions that have exceeded the count limit on a response.

DB Console changes

-- The link on the Plan Details page to the legacy Table page has been removed. [#136504][#136504] +- The link on the Plan Details page to the legacy Table page has been removed.

Bug fixes

-- Previously, CockroachDB would encounter an internal error when evaluating `FETCH ABSOLUTE 0` statements, and this is now fixed. The bug has been present since v22.1. [#134995][#134995] -- Fixed an issue where corrupted table statistics could cause the `cockroach` process to crash. [#136042][#136042] -- A table that is participating in a logical replication stream can no longer be dropped. Previously this was allowed, which would cause all the replicated rows to end up in the dead-letter queue. [#136255][#136255] -- `ALTER COLUMN SET NOT NULL` was not enforced consistently when the table was created in the same transaction. [#136323][#136323] -- Fixed a bug where `CREATE RELATION / TYPE` could leave dangling namespace entries if the schema was concurrently being dropped. [#136378][#136378] -- `security.certificate.*` metrics will now be updated if a node loads new certificates while running. [#136226][#136226] -- The `idle_in_session_timeout` setting now excludes the time spent waiting for schema changer jobs to complete, preventing unintended session termination during schema change operations. [#136490][#136490] -- Fixed a bug that causes the optimizer to use stale table statistics after altering an `ENUM` type used in the table. [#136630][#136630] -- Changes the table, index contents of the hot ranges page in DB console. [#134988][#134988] -- Table statistics collection in CockroachDB could previously run into `no bytes in account to release` errors in some edge cases (when the SQL memory budget, configured via `--max-sql-memory` flag, was close to being exhausted). The bug has been present since v21.2 and is now fixed. [#136166][#136166] -- CockroachDB now better respects `statement_timeout` limit on queries involving the top K sort and merge join operations. [#136653][#136653] -- Fixed an issue where license enforcement was not consistently disabled for single-node clusters started with `cockroach start-single-node`. The fix ensures proper behavior on cluster restarts. [#137012][#137012] -- Fixed a bug that caused queries against tables with user-defined types to sometimes fail with errors after restoring those tables. [#137353][#137353] -- Fixed a bug that causes an incorrect filesystem to be logged as part of the store information. [#137115][#137115] -- Fixed a bug affecting uniqueness enforcement in regional by row tables when using read-committed isolation. The bug, introduced in v24.3.0, could cause internal errors or incorrect uniqueness enforcement in tables that had both non-unique and unique indexes when the region column was not part of the uniqueness constraints. [#137366][#137366] -- Fixed a bug that has existed since v24.1 that would cause a set-returning UDF with `OUT` parameters to return a single row. [#137376][#137376] -- Fixed an issue where adding an existing column with the `IF NOT EXISTS` option could exit too early, skipping necessary handling of the abstract syntax tree (AST). This could lead to failure of the `ALTER` statement. [#137675][#137675] -- An issue where a schema change could incorrectly cause a changefeed to fail with an assertion error like `received boundary timestamp ... of type ... before reaching existing boundary of type ...` has now been fixed. [#137706][#137706] -- Internal scans are now exempt from the `sql.defaults.disallow_full_table_scans.enabled` setting, allowing index creation even when the cluster setting is active. [#137725][#137725] -- The `pg_catalog.pg_type` table no longer contains `NULL` values for the columns `typinput`, `typoutput`, `typreceive`, and `typsend`. `NULL` values were erroneously added for these columns for the `trigger` type in v24.3.0. This could cause unexpected errors with some client libraries. [#137941][#137941] +- Previously, CockroachDB would encounter an internal error when evaluating `FETCH ABSOLUTE 0` statements, and this is now fixed. The bug has been present since v22.1. +- Fixed an issue where corrupted table statistics could cause the `cockroach` process to crash. +- A table that is participating in a logical replication stream can no longer be dropped. Previously this was allowed, which would cause all the replicated rows to end up in the dead-letter queue. +- `ALTER COLUMN SET NOT NULL` was not enforced consistently when the table was created in the same transaction. +- Fixed a bug where `CREATE RELATION / TYPE` could leave dangling namespace entries if the schema was concurrently being dropped. +- `security.certificate.*` metrics will now be updated if a node loads new certificates while running. +- The `idle_in_session_timeout` setting now excludes the time spent waiting for schema changer jobs to complete, preventing unintended session termination during schema change operations. +- Fixed a bug that causes the optimizer to use stale table statistics after altering an `ENUM` type used in the table. +- Changes the table, index contents of the hot ranges page in DB console. +- Table statistics collection in CockroachDB could previously run into `no bytes in account to release` errors in some edge cases (when the SQL memory budget, configured via `--max-sql-memory` flag, was close to being exhausted). The bug has been present since v21.2 and is now fixed. +- CockroachDB now better respects `statement_timeout` limit on queries involving the top K sort and merge join operations. +- Fixed an issue where license enforcement was not consistently disabled for single-node clusters started with `cockroach start-single-node`. The fix ensures proper behavior on cluster restarts. +- Fixed a bug that caused queries against tables with user-defined types to sometimes fail with errors after restoring those tables. +- Fixed a bug that causes an incorrect filesystem to be logged as part of the store information. +- Fixed a bug affecting uniqueness enforcement in regional by row tables when using read-committed isolation. The bug, introduced in v24.3.0, could cause internal errors or incorrect uniqueness enforcement in tables that had both non-unique and unique indexes when the region column was not part of the uniqueness constraints. +- Fixed a bug that has existed since v24.1 that would cause a set-returning UDF with `OUT` parameters to return a single row. +- Fixed an issue where adding an existing column with the `IF NOT EXISTS` option could exit too early, skipping necessary handling of the abstract syntax tree (AST). This could lead to failure of the `ALTER` statement. +- An issue where a schema change could incorrectly cause a changefeed to fail with an assertion error like `received boundary timestamp ... of type ... before reaching existing boundary of type ...` has now been fixed. +- Internal scans are now exempt from the `sql.defaults.disallow_full_table_scans.enabled` setting, allowing index creation even when the cluster setting is active. +- The `pg_catalog.pg_type` table no longer contains `NULL` values for the columns `typinput`, `typoutput`, `typreceive`, and `typsend`. `NULL` values were erroneously added for these columns for the `trigger` type in v24.3.0. This could cause unexpected errors with some client libraries.

Performance improvements

-- Improved the internal caching logic for role membership information. This reduces the latency impact of commands such as `DROP ROLE`, `CREATE ROLE`, and `GRANT role TO user`, which cause the role membership cache to be invalidated. [#136162][#136162] - -[#134988]: https://github.com/cockroachdb/cockroach/pull/134988 -[#134995]: https://github.com/cockroachdb/cockroach/pull/134995 -[#135862]: https://github.com/cockroachdb/cockroach/pull/135862 -[#135864]: https://github.com/cockroachdb/cockroach/pull/135864 -[#136042]: https://github.com/cockroachdb/cockroach/pull/136042 -[#136162]: https://github.com/cockroachdb/cockroach/pull/136162 -[#136166]: https://github.com/cockroachdb/cockroach/pull/136166 -[#136226]: https://github.com/cockroachdb/cockroach/pull/136226 -[#136255]: https://github.com/cockroachdb/cockroach/pull/136255 -[#136323]: https://github.com/cockroachdb/cockroach/pull/136323 -[#136326]: https://github.com/cockroachdb/cockroach/pull/136326 -[#136378]: https://github.com/cockroachdb/cockroach/pull/136378 -[#136480]: https://github.com/cockroachdb/cockroach/pull/136480 -[#136490]: https://github.com/cockroachdb/cockroach/pull/136490 -[#136504]: https://github.com/cockroachdb/cockroach/pull/136504 -[#136604]: https://github.com/cockroachdb/cockroach/pull/136604 -[#136630]: https://github.com/cockroachdb/cockroach/pull/136630 -[#136653]: https://github.com/cockroachdb/cockroach/pull/136653 -[#136680]: https://github.com/cockroachdb/cockroach/pull/136680 -[#136727]: https://github.com/cockroachdb/cockroach/pull/136727 -[#136838]: https://github.com/cockroachdb/cockroach/pull/136838 -[#136929]: https://github.com/cockroachdb/cockroach/pull/136929 -[#136934]: https://github.com/cockroachdb/cockroach/pull/136934 -[#137012]: https://github.com/cockroachdb/cockroach/pull/137012 -[#137051]: https://github.com/cockroachdb/cockroach/pull/137051 -[#137115]: https://github.com/cockroachdb/cockroach/pull/137115 -[#137117]: https://github.com/cockroachdb/cockroach/pull/137117 -[#137353]: https://github.com/cockroachdb/cockroach/pull/137353 -[#137366]: https://github.com/cockroachdb/cockroach/pull/137366 -[#137376]: https://github.com/cockroachdb/cockroach/pull/137376 -[#137462]: https://github.com/cockroachdb/cockroach/pull/137462 -[#137528]: https://github.com/cockroachdb/cockroach/pull/137528 -[#137675]: https://github.com/cockroachdb/cockroach/pull/137675 -[#137687]: https://github.com/cockroachdb/cockroach/pull/137687 -[#137706]: https://github.com/cockroachdb/cockroach/pull/137706 -[#137725]: https://github.com/cockroachdb/cockroach/pull/137725 -[#137919]: https://github.com/cockroachdb/cockroach/pull/137919 -[#137941]: https://github.com/cockroachdb/cockroach/pull/137941 -[10eab82e8]: https://github.com/cockroachdb/cockroach/commit/10eab82e8 -[1433008fc]: https://github.com/cockroachdb/cockroach/commit/1433008fc -[3d88fefff]: https://github.com/cockroachdb/cockroach/commit/3d88fefff -[6867acb55]: https://github.com/cockroachdb/cockroach/commit/6867acb55 -[738f32732]: https://github.com/cockroachdb/cockroach/commit/738f32732 -[849cbad97]: https://github.com/cockroachdb/cockroach/commit/849cbad97 -[8ac7ca4f3]: https://github.com/cockroachdb/cockroach/commit/8ac7ca4f3 -[93078f72c]: https://github.com/cockroachdb/cockroach/commit/93078f72c -[b25f499aa]: https://github.com/cockroachdb/cockroach/commit/b25f499aa -[cd6e53cb7]: https://github.com/cockroachdb/cockroach/commit/cd6e53cb7 -[db086f257]: https://github.com/cockroachdb/cockroach/commit/db086f257 +- Improved the internal caching logic for role membership information. This reduces the latency impact of commands such as `DROP ROLE`, `CREATE ROLE`, and `GRANT role TO user`, which cause the role membership cache to be invalidated. diff --git a/src/current/_includes/releases/v24.3/v24.3.30.md b/src/current/_includes/releases/v24.3/v24.3.30.md index 287ab725c7d..5629572e7f1 100644 --- a/src/current/_includes/releases/v24.3/v24.3.30.md +++ b/src/current/_includes/releases/v24.3/v24.3.30.md @@ -6,9 +6,5 @@ Release Date: April 3, 2026

Bug fixes

-- Fixed a bug where CockroachDB did not always promptly respond to the statement timeout when performing a hash join with an `ON` filter that is mostly `false`. [#164888][#164888] -- Fixed a bug that could cause row sampling for table statistics to crash a node due to a data race when processing a collated string column with values larger than 400 bytes. This bug has existed since before v23.1. [#165571][#165571] - - -[#164888]: https://github.com/cockroachdb/cockroach/pull/164888 -[#165571]: https://github.com/cockroachdb/cockroach/pull/165571 +- Fixed a bug where CockroachDB did not always promptly respond to the statement timeout when performing a hash join with an `ON` filter that is mostly `false`. +- Fixed a bug that could cause row sampling for table statistics to crash a node due to a data race when processing a collated string column with values larger than 400 bytes. This bug has existed since before v23.1. diff --git a/src/current/_includes/releases/v24.3/v24.3.31.md b/src/current/_includes/releases/v24.3/v24.3.31.md index 5f101f17de5..a1f255088c9 100644 --- a/src/current/_includes/releases/v24.3/v24.3.31.md +++ b/src/current/_includes/releases/v24.3/v24.3.31.md @@ -6,7 +6,4 @@ Release Date: April 20, 2026

Bug fixes

-- Fixed a bug where concurrent updates to a table using multiple column families during a partial index creation could result in data loss, incorrect `NULL` values, or validation failures in the resulting index. [#168474][#168474] - - -[#168474]: https://github.com/cockroachdb/cockroach/pull/168474 +- Fixed a bug where concurrent updates to a table using multiple column families during a partial index creation could result in data loss, incorrect `NULL` values, or validation failures in the resulting index. diff --git a/src/current/_includes/releases/v24.3/v24.3.32.md b/src/current/_includes/releases/v24.3/v24.3.32.md index f5c5dec4599..d7383a1325b 100644 --- a/src/current/_includes/releases/v24.3/v24.3.32.md +++ b/src/current/_includes/releases/v24.3/v24.3.32.md @@ -6,9 +6,5 @@ Release Date: May 1, 2026

Bug fixes

-- Fixed a bug where the view owner's privileges on underlying tables were not checked when selecting from a view. A view would continue to work even after the owner lost access to the underlying tables. To enforce privilege checks on underlying tables, set the `sql.auth.skip_underlying_view_privilege_checks.enabled` cluster setting to `false`. This setting defaults to `true` to prevent backward-incompatible behavior. [#166744][#166744] -- Fixed a bug where `IMPORT` error messages could include unredacted cloud storage credentials from the source URI. Credentials are now stripped from URIs before they appear in error messages. [#167947][#167947] - - -[#166744]: https://github.com/cockroachdb/cockroach/pull/166744 -[#167947]: https://github.com/cockroachdb/cockroach/pull/167947 +- Fixed a bug where the view owner's privileges on underlying tables were not checked when selecting from a view. A view would continue to work even after the owner lost access to the underlying tables. To enforce privilege checks on underlying tables, set the `sql.auth.skip_underlying_view_privilege_checks.enabled` cluster setting to `false`. This setting defaults to `true` to prevent backward-incompatible behavior. +- Fixed a bug where `IMPORT` error messages could include unredacted cloud storage credentials from the source URI. Credentials are now stripped from URIs before they appear in error messages. diff --git a/src/current/_includes/releases/v24.3/v24.3.4.md b/src/current/_includes/releases/v24.3/v24.3.4.md index 0365b6bac6c..55089838ee7 100644 --- a/src/current/_includes/releases/v24.3/v24.3.4.md +++ b/src/current/_includes/releases/v24.3/v24.3.4.md @@ -6,10 +6,8 @@ Release Date: January 31, 2025

Bug fixes

-- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `"batch timestamp ... must be after replica GC threshold"` error. [#140175][#140175] +- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `"batch timestamp ... must be after replica GC threshold"` error. {{site.data.alerts.callout_danger}} This fix is present in v24.3.4 and [v24.3.6](#v24-3-6), but was **not** released in [v24.3.5](#v24-3-5). {{site.data.alerts.end}} - -[#140175]: https://github.com/cockroachdb/cockroach/pull/140175 diff --git a/src/current/_includes/releases/v24.3/v24.3.5.md b/src/current/_includes/releases/v24.3/v24.3.5.md index 9727c2b3010..9d248c2e771 100644 --- a/src/current/_includes/releases/v24.3/v24.3.5.md +++ b/src/current/_includes/releases/v24.3/v24.3.5.md @@ -6,73 +6,45 @@ Release Date: February 6, 2025

General changes

-- The protected timestamp records of running changefeeds are now updated when the set of targets changes, such as when system tables are added to the protected tables list. [#138654][#138654] +- The protected timestamp records of running changefeeds are now updated when the set of targets changes, such as when system tables are added to the protected tables list.

Backward-incompatible changes

-- In [v24.3.4](#v24-3-4-bug-fixes), a bug was fixed that could cause `SHOW TABLES` and other introspection operations to encounter a `"batch timestamp ... must be after replica GC threshold"` error. This fix is **not** present in v24.3.5, but has been released in [v24.3.6](#v24-3-6). [#140175][#140175] +- In [v24.3.4](#v24-3-4-bug-fixes), a bug was fixed that could cause `SHOW TABLES` and other introspection operations to encounter a `"batch timestamp ... must be after replica GC threshold"` error. This fix is **not** present in v24.3.5, but has been released in [v24.3.6](#v24-3-6).

SQL language changes

-- Since v23.2 table statistics histograms have been collected for non-indexed JSON columns. Histograms are no longer collected for these columns if the `sql.stats.non_indexed_json_histograms.enabled` cluster setting is set to `false`. This reduces memory usage during table statistics collection, for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`. [#140265][#140265] -- Added support for a new index hint, `AVOID_FULL_SCAN`, which will prevent the optimizer from planning a full scan for the specified table if any other plan is possible. The hint can be used in the same way as other existing index hints. For example, `SELECT * FROM table_name@{AVOID_FULL_SCAN};`. This hint is similar to `NO_FULL_SCAN`, but will not error if a full scan cannot be avoided. Note that normally a full scan of a partial index would not be considered a "full scan" for the purposes of the `NO_FULL_SCAN` and `AVOID_FULL_SCAN` hints, but if the user has explicitly forced the partial index via `FORCE_INDEX=index_name`, CockroachDB does consider it a full scan. [#140270][#140270] -- Added the `optimizer_prefer_bounded_cardinality` session setting, which instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. This may help the optimizer produce better query plans in some cases. This setting is disabled by default. [#140270][#140270] -- Added the `optimizer_min_row_count` session setting, which sets a lower bound on row count estimates for relational expressions during query planning. A value of zero, which is the default, indicates no lower bound. Note that if this is set to a value greater than zero, a row count of zero can still be estimated for expressions with a cardinality of zero, e.g., for a contradictory filter. Setting this to a value higher than `0`, such as `1`, may yield better query plans in some cases, such as when statistics are frequently stale and inaccurate. [#140270][#140270] +- Since v23.2 table statistics histograms have been collected for non-indexed JSON columns. Histograms are no longer collected for these columns if the `sql.stats.non_indexed_json_histograms.enabled` cluster setting is set to `false`. This reduces memory usage during table statistics collection, for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`. +- Added support for a new index hint, `AVOID_FULL_SCAN`, which will prevent the optimizer from planning a full scan for the specified table if any other plan is possible. The hint can be used in the same way as other existing index hints. For example, `SELECT * FROM table_name@{AVOID_FULL_SCAN};`. This hint is similar to `NO_FULL_SCAN`, but will not error if a full scan cannot be avoided. Note that normally a full scan of a partial index would not be considered a "full scan" for the purposes of the `NO_FULL_SCAN` and `AVOID_FULL_SCAN` hints, but if the user has explicitly forced the partial index via `FORCE_INDEX=index_name`, CockroachDB does consider it a full scan. +- Added the `optimizer_prefer_bounded_cardinality` session setting, which instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. This may help the optimizer produce better query plans in some cases. This setting is disabled by default. +- Added the `optimizer_min_row_count` session setting, which sets a lower bound on row count estimates for relational expressions during query planning. A value of zero, which is the default, indicates no lower bound. Note that if this is set to a value greater than zero, a row count of zero can still be estimated for expressions with a cardinality of zero, e.g., for a contradictory filter. Setting this to a value higher than `0`, such as `1`, may yield better query plans in some cases, such as when statistics are frequently stale and inaccurate.

Operational changes

-- Schema object identifiers (e.g., database names, schema names, table names, and function names) are no longer redacted when logging statements in the `EXEC` or `SQL_SCHEMA` channels. If redaction of these names is required, then the new cluster setting `sql.log.redact_names.enabled` can be set to `true`. The default value of the setting is `false`. [#138563][#138563] -- Schema object identifiers (e.g., table names, schema names, function names, and type names) are no longer redacted in the `SQL_SCHEMA` log channel. [#138563][#138563] -- Added the metric `sql.schema_changer.object_count`, which counts the number of objects in the cluster. [#138837][#138837] -- The `changefeed.max_behind_nanos` metric now supports scoping with metrics labels. [#139234][#139234] +- Schema object identifiers (e.g., database names, schema names, table names, and function names) are no longer redacted when logging statements in the `EXEC` or `SQL_SCHEMA` channels. If redaction of these names is required, then the new cluster setting `sql.log.redact_names.enabled` can be set to `true`. The default value of the setting is `false`. +- Schema object identifiers (e.g., table names, schema names, function names, and type names) are no longer redacted in the `SQL_SCHEMA` log channel. +- Added the metric `sql.schema_changer.object_count`, which counts the number of objects in the cluster. +- The `changefeed.max_behind_nanos` metric now supports scoping with metrics labels.

DB Console changes

-- Added the `/debug/pprof/fgprof` endpoint to capture off-CPU stack traces. Use of this endpoint will have a noticable impact to performance while the endpoint is being triggered. [#138843][#138843] +- Added the `/debug/pprof/fgprof` endpoint to capture off-CPU stack traces. Use of this endpoint will have a noticable impact to performance while the endpoint is being triggered.

Bug fixes

-- `CLOSE CURSOR` statements are now allowed in read-only transactions, similar to PostgreSQL. The bug had been present since at least v23.1. [#137793][#137793] -- `ALTER BACKUP SCHEDULE` no longer fails on schedules whose collection URI contains a space. [#138082][#138082] -- Previously, `SHOW CREATE TABLE` was showing incorrect data for inverted indexes. It now shows the correct data that can be input to CockroachDB to recreate the same table. [#138083][#138083] -- Fixed a timing issue between `ALTER VIEW .. RENAME` and `DROP VIEW` that caused repeated failures in the `DROP VIEW` job. [#137889][#137889] -- Fixed a bug where querying the `pg_catalog.pg_constraint` table while the schema changer was dropping a constraint could result in a query error. [#137875][#137875] -- On the **Databases** page, users should no longer see console errors when visiting the **Databases** page directly after node/SQL pod startup. [#138377][#138377] -- In the **Databases** > **Tables** page, the `CREATE` statement will now show up as expected for tables with custom schema names. [#138378][#138378] -- Queries that perform a cast from the string representation of an array containing `GEOMETRY` or `GEOGRAPHY` types to a SQL `ARRAY` type will now succeed. [#138695][#138695] -- Previously, cluster backups taken in a multi-region cluster that had configured the system database with a region configuration could not be restored into a non-multi-region cluster. This is now fixed. [#138787][#138787] -- Fixed a bug that disregarded tuple labels in some cases. This could cause unexpected behavior, such as when converting a tuple to JSON with `to_jsonb`. See #136167 for more details. The incorrect removal of tuple labels bug was introduced in v22.1.0, and changes in v24.3.0 made unexpected behavior due to the bug more likely. [#138840][#138840] -- Previously, CockroachDB could encounter an internal error `comparison of two different versions of enum` in some cases when a user-defined type was modified within a transaction and the following statements read the column of that user-defined type. The bug was introduced in v24.2 and is now fixed. [#138052][#138052] -- Secondary tenants will no longer fatal when issuing HTTP requests during tenant startup. [#138755][#138755] -- Fixed a bug where columns created with `GENERATED ... AS IDENTITY` with the `SERIAL` type could incorrectly fail internal validations. [#139101][#139101] -- When the session variable `allow_role_memberships_to_change_during_transaction` is set, it is now possible to create and drop users quickly even when there are contending transactions on the `system.users` and `system.role_options` system tables. [#139032][#139032] -- Fixed a bug where the error `batch timestamp ... must be after replica GC threshold` could occur during a schema change backfill operation, and cause the schema change job to retry infinitely. Now this error is treated as permanent, and will cause the job to enter the `failed` state. [#139250][#139250] -- Fixed a bug that prevented the `CREATE` statement for a routine from being shown in a statement bundle. This happened when the routine was created on a schema other than `public`. The bug had existed since v23.1. [#136124][#136124] - -[#136124]: https://github.com/cockroachdb/cockroach/pull/136124 -[#137793]: https://github.com/cockroachdb/cockroach/pull/137793 -[#137875]: https://github.com/cockroachdb/cockroach/pull/137875 -[#137889]: https://github.com/cockroachdb/cockroach/pull/137889 -[#137923]: https://github.com/cockroachdb/cockroach/pull/137923 -[#138052]: https://github.com/cockroachdb/cockroach/pull/138052 -[#138082]: https://github.com/cockroachdb/cockroach/pull/138082 -[#138083]: https://github.com/cockroachdb/cockroach/pull/138083 -[#138097]: https://github.com/cockroachdb/cockroach/pull/138097 -[#138303]: https://github.com/cockroachdb/cockroach/pull/138303 -[#138377]: https://github.com/cockroachdb/cockroach/pull/138377 -[#138378]: https://github.com/cockroachdb/cockroach/pull/138378 -[#138563]: https://github.com/cockroachdb/cockroach/pull/138563 -[#138654]: https://github.com/cockroachdb/cockroach/pull/138654 -[#138695]: https://github.com/cockroachdb/cockroach/pull/138695 -[#138755]: https://github.com/cockroachdb/cockroach/pull/138755 -[#138787]: https://github.com/cockroachdb/cockroach/pull/138787 -[#138837]: https://github.com/cockroachdb/cockroach/pull/138837 -[#138840]: https://github.com/cockroachdb/cockroach/pull/138840 -[#138843]: https://github.com/cockroachdb/cockroach/pull/138843 -[#139032]: https://github.com/cockroachdb/cockroach/pull/139032 -[#139101]: https://github.com/cockroachdb/cockroach/pull/139101 -[#139234]: https://github.com/cockroachdb/cockroach/pull/139234 -[#139250]: https://github.com/cockroachdb/cockroach/pull/139250 -[#140265]: https://github.com/cockroachdb/cockroach/pull/140265 -[#140270]: https://github.com/cockroachdb/cockroach/pull/140270 -[#140175]: https://github.com/cockroachdb/cockroach/pull/140175 \ No newline at end of file +- `CLOSE CURSOR` statements are now allowed in read-only transactions, similar to PostgreSQL. The bug had been present since at least v23.1. +- `ALTER BACKUP SCHEDULE` no longer fails on schedules whose collection URI contains a space. +- Previously, `SHOW CREATE TABLE` was showing incorrect data for inverted indexes. It now shows the correct data that can be input to CockroachDB to recreate the same table. +- Fixed a timing issue between `ALTER VIEW .. RENAME` and `DROP VIEW` that caused repeated failures in the `DROP VIEW` job. +- Fixed a bug where querying the `pg_catalog.pg_constraint` table while the schema changer was dropping a constraint could result in a query error. +- On the **Databases** page, users should no longer see console errors when visiting the **Databases** page directly after node/SQL pod startup. +- In the **Databases** > **Tables** page, the `CREATE` statement will now show up as expected for tables with custom schema names. +- Queries that perform a cast from the string representation of an array containing `GEOMETRY` or `GEOGRAPHY` types to a SQL `ARRAY` type will now succeed. +- Previously, cluster backups taken in a multi-region cluster that had configured the system database with a region configuration could not be restored into a non-multi-region cluster. This is now fixed. +- Fixed a bug that disregarded tuple labels in some cases. This could cause unexpected behavior, such as when converting a tuple to JSON with `to_jsonb`. See #136167 for more details. The incorrect removal of tuple labels bug was introduced in v22.1.0, and changes in v24.3.0 made unexpected behavior due to the bug more likely. +- Previously, CockroachDB could encounter an internal error `comparison of two different versions of enum` in some cases when a user-defined type was modified within a transaction and the following statements read the column of that user-defined type. The bug was introduced in v24.2 and is now fixed. +- Secondary tenants will no longer fatal when issuing HTTP requests during tenant startup. +- Fixed a bug where columns created with `GENERATED ... AS IDENTITY` with the `SERIAL` type could incorrectly fail internal validations. +- When the session variable `allow_role_memberships_to_change_during_transaction` is set, it is now possible to create and drop users quickly even when there are contending transactions on the `system.users` and `system.role_options` system tables. +- Fixed a bug where the error `batch timestamp ... must be after replica GC threshold` could occur during a schema change backfill operation, and cause the schema change job to retry infinitely. Now this error is treated as permanent, and will cause the job to enter the `failed` state. +- Fixed a bug that prevented the `CREATE` statement for a routine from being shown in a statement bundle. This happened when the routine was created on a schema other than `public`. The bug had existed since v23.1. diff --git a/src/current/_includes/releases/v24.3/v24.3.6.md b/src/current/_includes/releases/v24.3/v24.3.6.md index c9cb630e9c0..fdeba53a0c6 100644 --- a/src/current/_includes/releases/v24.3/v24.3.6.md +++ b/src/current/_includes/releases/v24.3/v24.3.6.md @@ -6,10 +6,8 @@ Release Date: February 19, 2025

Bug fixes

-- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `"batch timestamp ... must be after replica GC threshold"` error. [#141655][#141655] +- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `"batch timestamp ... must be after replica GC threshold"` error. {{site.data.alerts.callout_danger}} This fix is present in [v24.3.4](#v24-3-4) and v24.3.6, but was **not** released in [v24.3.5](#v24-3-5). {{site.data.alerts.end}} - -[#141655]: https://github.com/cockroachdb/cockroach/pull/141655 diff --git a/src/current/_includes/releases/v24.3/v24.3.7.md b/src/current/_includes/releases/v24.3/v24.3.7.md index 1ef7b098508..4363e6ca50b 100644 --- a/src/current/_includes/releases/v24.3/v24.3.7.md +++ b/src/current/_includes/releases/v24.3/v24.3.7.md @@ -7,40 +7,40 @@ Release Date: March 6, 2025

SQL language changes

- Added support for a new index hint, `AVOID_FULL_SCAN`, which will prevent the optimizer from planning a full scan for the specified table if any other plan is possible. The hint can be used in the same way as other existing index hints. For example, `SELECT * FROM table_name@{AVOID_FULL_SCAN};`. This hint is similar to `NO_FULL_SCAN`, but will not error if a full scan cannot be avoided. Note that a full scan of a partial index would not normally be considered a "full scan" for the purposes of the `AVOID_FULL_SCAN` and `NO_FULL_SCAN` hints, but if the user has explicitly forced the partial index via `FORCE_INDEX=index_name`, it is considered a full scan. - [#140255][#140255] [#140998][#140998] + - Added the `optimizer_prefer_bounded_cardinality` session setting, which instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. This may help the optimizer produce better query plans in some cases. This setting is disabled by default. - [#140255][#140255] [#140998][#140998] + - Added the `optimizer_check_input_min_row_count` session setting to control the minimum row count estimate for buffer scans of foreign key and uniqueness checks. It defaults to `0`. - [#141375][#141375] + - Since v23.2, table statistics histograms have been collected for non-indexed JSON columns. Histograms are no longer collected for these columns if the `sql.stats.non_indexed_json_histograms.enabled` cluster setting is set to `false`. This reduces memory usage during table statistics collection, for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`. - [#139897][#139897] [#140998][#140998] + - Fixed a bug that could cause unexpected errors with SQL `VALUES` clauses that contain function calls with multiple overloads. This bug existed only in pre-release versions of v25.1. - [#140646][#140646] + - Added the `optimizer_min_row_count` session setting. This setting sets a lower bound on row count estimates for relational expressions during query planning. A value of `0` (default) indicates no lower bound. If set to a value greater than `0`, a row count of zero can still be estimated for expressions with a cardinality of zero, e.g., for a contradictory filter. Setting this to a value greater than `0`, such as `1`, may yield better query plans in some cases, such as when statistics are frequently stale and inaccurate. - [#140255][#140255] [#140998][#140998] +

Operational changes

- Reduced noise in dynamically provisioned logging sinks by logging flush errors at most once per minute. - [#139643][#139643] + - The `cockroach node decommission` CLI command now waits until the target node is drained before marking it as fully decommissioned. Previously, it would start the drain but not wait, leaving the target node briefly in a state where it would be unable to communicate with the cluster but would still accept client requests (which would then hang or hit unexpected errors). - [#139556][#139556] +

Command-line changes

- Improved the performance of the `cockroachd debug zip` command when retrieving data from `crdb_internal.transaction_contention_events`, reducing the likelihood of `memory budget exceeded` or `query execution canceled due to statement timeout` errors. - [#139754][#139754] +

Bug fixes

- Previously, in changefeeds using CDC queries and the Parquet format, the output would include duplicate columns when it contained a user-defined primary key. Now, the columns are de-duplicated columns in the output when writing to Parquet. - [#140153][#140153] + - Fixed a bug where dropping a table with a trigger using the legacy schema changer could leave an orphaned reference in the descriptor. This occurred when two tables were dependent on each other via a trigger, and the table containing the trigger was dropped. - [#141179][#141179] + - Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `"batch timestamp must be after replica GC threshold"` error. - [#140284][#140284] + - The Data Distribution and Zone Configs report on the DB Console Advanced Debug page will no longer crash if there are `NULL` values for the `raw_sql_config` column in the `crdb_internal.zones` table. - [#140661][#140661] + - Fixed possible index corruption caused by triggers that could occur when the following conditions were satisfied: 1. A query calls a user-defined function (UDF) or stored procedure, and also performs a mutation on a table. @@ -49,36 +49,15 @@ Release Date: March 6, 2025 3. The trigger modifies the same row as the outer statement. 4. Either the outer or inner mutation is something other than an `INSERT` without an `ON CONFLICT` clause. - [#138361][#138361] + - Fixed a bug where activating statement diagnostics sometimes appeared unresponsive, with no state or status update. The status now always indicates whether diagnostics are active or a statement bundle is available for download. - [#139585][#139585] + - Fixed a memory leak that could previously occur when evaluating some memory-intensive queries via the vectorized engine in CockroachDB. The leak had been present since v20.2. - [#139095][#139095] + - Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `"batch timestamp must be after replica GC threshold"` error. - [#140084][#140084] + - Fixed a bug in the `kafka_sink_config` option for changefeeds where users were previously unable to set negative GZIP compression levels. Users can now configure the `CompressionLevel` field in the range of `[-2, 9]` where `-2` enables Huffman encoding and `-1` sets the default compression. - [#141037][#141037] + - Fixed a bug that would cause an internal error when the result of a `RECORD`-returning user-defined function (UDF) was wrapped by another expression (such as `COALESCE`) within a `VALUES` clause. - [#140646][#140646] + - Fixed a rare bug in which a query could fail with the error `could not find computed column expression for column in table` while dropping a virtual computed column from a table. This bug was introduced in v23.2.4. - [#139833][#139833] - - -[#139897]: https://github.com/cockroachdb/cockroach/pull/139897 -[#139643]: https://github.com/cockroachdb/cockroach/pull/139643 -[#140153]: https://github.com/cockroachdb/cockroach/pull/140153 -[#138361]: https://github.com/cockroachdb/cockroach/pull/138361 -[#141179]: https://github.com/cockroachdb/cockroach/pull/141179 -[#140284]: https://github.com/cockroachdb/cockroach/pull/140284 -[#140998]: https://github.com/cockroachdb/cockroach/pull/140998 -[#140255]: https://github.com/cockroachdb/cockroach/pull/140255 -[#140646]: https://github.com/cockroachdb/cockroach/pull/140646 -[#140661]: https://github.com/cockroachdb/cockroach/pull/140661 -[#139585]: https://github.com/cockroachdb/cockroach/pull/139585 -[#139095]: https://github.com/cockroachdb/cockroach/pull/139095 -[#140084]: https://github.com/cockroachdb/cockroach/pull/140084 -[#141037]: https://github.com/cockroachdb/cockroach/pull/141037 -[#141375]: https://github.com/cockroachdb/cockroach/pull/141375 -[#139556]: https://github.com/cockroachdb/cockroach/pull/139556 -[#139754]: https://github.com/cockroachdb/cockroach/pull/139754 -[#139833]: https://github.com/cockroachdb/cockroach/pull/139833 diff --git a/src/current/_includes/releases/v24.3/v24.3.8.md b/src/current/_includes/releases/v24.3/v24.3.8.md index e0b70ca918f..58050db0231 100644 --- a/src/current/_includes/releases/v24.3/v24.3.8.md +++ b/src/current/_includes/releases/v24.3/v24.3.8.md @@ -7,7 +7,3 @@ Release Date: March 12, 2025

Bug fixes

- Improved S3 credential caching for STS credentials to avoid exceeding the Amazon metadata service rate limit and encountering errors related to AssumeRole API calls when accessing large numbers of files in larger clusters. - [#142679][#142679] - - -[#142679]: https://github.com/cockroachdb/cockroach/pull/142679 diff --git a/src/current/_includes/releases/v24.3/v24.3.9.md b/src/current/_includes/releases/v24.3/v24.3.9.md index e370d2af14a..ad9bb8a90c2 100644 --- a/src/current/_includes/releases/v24.3/v24.3.9.md +++ b/src/current/_includes/releases/v24.3/v24.3.9.md @@ -7,75 +7,52 @@ Release Date: April 2, 2025

SQL language changes

- Added the `WITH IGNORE_FOREIGN_KEYS` option to `SHOW CREATE TABLE`, which omits foreign key constraints from the output schema. This option is also allowed in `SHOW CREATE VIEW`, but has no effect. It cannot be combined with the `WITH REDACT` option. - [#143368][#143368] +

Operational changes

- Added the `sql.transaction_timeout.count` metric to track the number of SQL statements that fail due to exceeding the transaction timeout. - [#142156][#142156] + - Added the `sql.statement_timeout.count` to track the number of SQL statements that fail due to exceeding the statement timeout. - [#142156][#142156] + - 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. - [#143593][#143593] +

Bug fixes

- Fixed a bug that prevented starting multi-table Logical Data Replication (LDR) streams on tables that used user-defined types. - [#141793][#141793] + - 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. Also 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. - [#142323][#142323] + - 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 a bug where CockroachDB could incorrectly evaluate casts to some OID types (like `REGCLASS`) in some cases. The bug had been present since at least v22.1. - [#141958][#141958] + - Fixed a bug that could cause gateway nodes to panic when performing an `UPSERT` on a table with a `BOOL` primary key column and a partial index with the primary key column as the predicate expression. - [#141823][#141823] + - Fixed a bug that would prevent the `CREATE TRIGGER` and `DROP TRIGGER` statements from working if the `autocommit_before_ddl` setting was enabled, and if the statement was either sent as a prepared statement or as part of a batch of multiple statements. - [#142303][#142303] -- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `batch timestamp must be after replica GC threshold` error. [#141720][#141720] -- Fixed a bug where Physical Cluster Replication (PCR) reader catalogs could have orphaned rows in `system.namespace` after an object is renamed. [#142873][#142873] + +- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `batch timestamp must be after replica GC threshold` error. +- Fixed a bug where Physical Cluster Replication (PCR) reader catalogs could have orphaned rows in `system.namespace` after an object is renamed. - Fixed a bug that could cause `nil pointer dereference` errors when executing statements with user-defined functions (UDFs). The error could also occur when executing statements with some built-in functions, like `obj_description`. - [#141652][#141652] + - Fixed a bug in `v24.1.14`, `v24.3.7`, `v24.3.8`, and `v25.1` that could cause a nil-pointer error when a column's default expression contained a volatile expression (like `nextval`) as a UDF argument. - [#143635][#143635] + - Fixed a bug that could prevent `SHOW CREATE TABLE` from working if a database was offline (e.g., due to a `RESTORE` on that database). - [#141509][#141509] + - Fixed an issue where dropping a database with triggers could fail due to an undropped backreference to a trigger function. - [#142726][#142726] + - Fixed a bug where the declarative schema changer allowed `CREATE SEQUENCE` operations to proceed even while a `DROP SCHEMA` or `DROP DATABASE` was in progress. Such operations now retry if the parent object has a schema change in progress, preventing new child objects from being created under deleted parent objects. - [#142763][#142763] + - 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. - [#143593][#143593] + - Fixed a bug where the fraction completed and internal checkpoints during an index backfill operation would stop getting written if any of the periodic fraction/checkpoint write operations failed. Progress is now logged in addition to being written to the job record. This bug affected schema change operations such as creating an index or adding a non-nullable column to a table. - [#141787][#141787] + - Fixed a crash due to `use of enum metadata before hydration` when using logical data replication (LDR) with user-defined types. - [#143389][#143389] +

Miscellaneous

- When configuring the `sql.ttl.default_delete_rate_limit` cluster setting, a notice is now displayed informing the user that the TTL rate limit is per leaseholder per table with a [link to the docs](https://www.cockroachlabs.com/docs/dev/row-level-ttl). - [#142833][#142833] -- Improved S3 credential caching for AWS Security Token Service (STS) credentials. [#142437][#142437] - - -[#142833]: https://github.com/cockroachdb/cockroach/pull/142833 -[#142437]: https://github.com/cockroachdb/cockroach/pull/142437 -[#141823]: https://github.com/cockroachdb/cockroach/pull/141823 -[#141720]: https://github.com/cockroachdb/cockroach/pull/141720 -[#143635]: https://github.com/cockroachdb/cockroach/pull/143635 -[#141793]: https://github.com/cockroachdb/cockroach/pull/141793 -[#141987]: https://github.com/cockroachdb/cockroach/pull/141987 -[#142303]: https://github.com/cockroachdb/cockroach/pull/142303 -[#142873]: https://github.com/cockroachdb/cockroach/pull/142873 -[#141652]: https://github.com/cockroachdb/cockroach/pull/141652 -[#142590]: https://github.com/cockroachdb/cockroach/pull/142590 -[#143368]: https://github.com/cockroachdb/cockroach/pull/143368 -[#142156]: https://github.com/cockroachdb/cockroach/pull/142156 -[#141787]: https://github.com/cockroachdb/cockroach/pull/141787 -[#143389]: https://github.com/cockroachdb/cockroach/pull/143389 -[#143593]: https://github.com/cockroachdb/cockroach/pull/143593 -[#142323]: https://github.com/cockroachdb/cockroach/pull/142323 -[#142763]: https://github.com/cockroachdb/cockroach/pull/142763 -[#141958]: https://github.com/cockroachdb/cockroach/pull/141958 -[#141509]: https://github.com/cockroachdb/cockroach/pull/141509 -[#142726]: https://github.com/cockroachdb/cockroach/pull/142726 + +- Improved S3 credential caching for AWS Security Token Service (STS) credentials. diff --git a/src/current/_includes/releases/v25.1/backward-incompatible.md b/src/current/_includes/releases/v25.1/backward-incompatible.md index 656860fdd3c..4b8100c51df 100644 --- a/src/current/_includes/releases/v25.1/backward-incompatible.md +++ b/src/current/_includes/releases/v25.1/backward-incompatible.md @@ -1,14 +1,14 @@ Before [upgrading to CockroachDB v25.1]({% link v25.1/upgrade-cockroach-version.md %}), be sure to review the following backward-incompatible changes, as well as [key cluster setting changes](#v25-1-0-cluster-settings), and adjust your deployment as necessary. -- The old `BACKUP TO`, `RESTORE FROM `, and `SHOW BACKUP IN ` syntaxes are now fully deprecated and no longer usable. [#133610][#133610] +- The old `BACKUP TO`, `RESTORE FROM `, and `SHOW BACKUP IN ` syntaxes are now fully deprecated and no longer usable. -- Altering a paused backup schedule's recurrence or location no longer resumes the schedule. [#134829][#134829] +- Altering a paused backup schedule's recurrence or location no longer resumes the schedule. -- `BACKUP`/`RESTORE` statements no longer return index entries and bytes backed up/restored. [#134516][#134516] +- `BACKUP`/`RESTORE` statements no longer return index entries and bytes backed up/restored. -- Introduced the `legacy_varchar_typing` session setting. If `on`, type checking and overload resolution for VARCHAR types ignore overloads that cause errors, allowing comparisons between VARCHAR and non-STRING-like placeholder values to execute successfully. If `off`, type checking of these comparisons is more strict and must be handled with explicit type casts. As of v25.1.0 this setting defaults to `off`. [#137844][#137844] +- Introduced the `legacy_varchar_typing` session setting. If `on`, type checking and overload resolution for VARCHAR types ignore overloads that cause errors, allowing comparisons between VARCHAR and non-STRING-like placeholder values to execute successfully. If `off`, type checking of these comparisons is more strict and must be handled with explicit type casts. As of v25.1.0 this setting defaults to `off`. -- Several metrics are redundant and have been removed. The following list maps each removed metric to an existing, identical metric. [#138786][#138786] +- Several metrics are redundant and have been removed. The following list maps each removed metric to an existing, identical metric. - Removed `sql.schema_changer.running`, which is redundant with `jobs.schema_change.currently_running`. - Removed `sql.schema_changer.successes`, which is redundant with `jobs.schema_change.resume_completed`. - Removed `sql.schema_changer.retry_errors`, which is redundant with `jobs.schema_change.resume_retry_error`. @@ -20,14 +20,4 @@ Before [upgrading to CockroachDB v25.1]({% link v25.1/upgrade-cockroach-version. Users who do not desire the autocommit behavior can preserve the old behavior by changing the default value of `autocommit_before_ddl` with a command such as: - ``` ALTER ROLE ALL SET autocommit_before_ddl = false; ``` - - [#140156][#140156] - - -[#133610]: https://github.com/cockroachdb/cockroach/pull/133610 -[#134829]: https://github.com/cockroachdb/cockroach/pull/134829 -[#134516]: https://github.com/cockroachdb/cockroach/pull/134516 -[#137844]: https://github.com/cockroachdb/cockroach/pull/137844 -[#138786]: https://github.com/cockroachdb/cockroach/pull/138786 -[#140156]: https://github.com/cockroachdb/cockroach/pull/140156 \ No newline at end of file + ``` ALTER ROLE ALL SET autocommit_before_ddl = false; ``` diff --git a/src/current/_includes/releases/v25.1/cluster-setting-changes.md b/src/current/_includes/releases/v25.1/cluster-setting-changes.md index 758d278d707..23e3d1fd7c7 100644 --- a/src/current/_includes/releases/v25.1/cluster-setting-changes.md +++ b/src/current/_includes/releases/v25.1/cluster-setting-changes.md @@ -8,45 +8,45 @@ Changes to [cluster settings]({% link v25.1/cluster-settings.md %}) should be re
Settings added
-- `kv.transaction.max_intents_and_locks`: accepts an integer value for the maximum number of inserts or durable locks allowed for a single transactions. When set to the default of `0`, this limiting is disabled. [#135945][#135945] +- `kv.transaction.max_intents_and_locks`: accepts an integer value for the maximum number of inserts or durable locks allowed for a single transactions. When set to the default of `0`, this limiting is disabled. -- Schema object identifiers (e.g. database names, schema names, table names, and function names) are no longer redacted when logging statements in the `EXEC` or `SQL_SCHEMA` channels. If redaction of these names is required, then the new cluster setting `sql.log.redact_names.enabled` can be set to `true`. The default value of the setting is `false`. [#136897][#136897] +- Schema object identifiers (e.g. database names, schema names, table names, and function names) are no longer redacted when logging statements in the `EXEC` or `SQL_SCHEMA` channels. If redaction of these names is required, then the new cluster setting `sql.log.redact_names.enabled` can be set to `true`. The default value of the setting is `false`. -- Since v23.2, table statistics histograms have been collected for non-indexed JSON columns. Histograms are no longer collected for these columns. This reduces memory usage during table statistics collection, for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`. The previous behavior can be re-enabled by setting the cluster setting `sql.stats.non_indexed_json_histograms.enabled` to `true`. [#139898][#139898] +- Since v23.2, table statistics histograms have been collected for non-indexed JSON columns. Histograms are no longer collected for these columns. This reduces memory usage during table statistics collection, for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`. The previous behavior can be re-enabled by setting the cluster setting `sql.stats.non_indexed_json_histograms.enabled` to `true`. -- `ui.database_locality_metadata.enabled` allows operators to disable the loading of extended region information in the DB Console Database and Table pages. In versions prior to v24.3, this information can cause significant CPU load on large clusters with many ranges. When disabled, if customers require this data, they can use the query `SHOW RANGES FROM {DATABASE| TABLE}` to compute it on demand. [#133075][#133075] +- `ui.database_locality_metadata.enabled` allows operators to disable the loading of extended region information in the DB Console Database and Table pages. In versions prior to v24.3, this information can cause significant CPU load on large clusters with many ranges. When disabled, if customers require this data, they can use the query `SHOW RANGES FROM {DATABASE| TABLE}` to compute it on demand.
Settings with changed defaults
-- The `kvadmission.flow_control.mode` default value has been changed from `apply_to_elastic` to `apply_to_all`. Regular writes are now subject to admission control by default, meaning that non-quorum required replicas may not be informed of new writes from the leader if they are unable to keep up. This brings a large performance improvement in scenarios with a large backlog of replication work toward one or more nodes, such as node restarts. The behavior can be reverted to the v24.3 and earlier default by changing the setting value to `apply_to_elastic`. [#133860][#133860] +- The `kvadmission.flow_control.mode` default value has been changed from `apply_to_elastic` to `apply_to_all`. Regular writes are now subject to admission control by default, meaning that non-quorum required replicas may not be informed of new writes from the leader if they are unable to keep up. This brings a large performance improvement in scenarios with a large backlog of replication work toward one or more nodes, such as node restarts. The behavior can be reverted to the v24.3 and earlier default by changing the setting value to `apply_to_elastic`. -- `kvadmission.store.snapshot_ingest_bandwidth_control.enabled` is now `true` by default. This will enable disk-bandwidth-based admission control for range snapshot ingests. It requires the provisioned bandwidth to be set using `kvadmission.store.provisioned_bandwidth`. [#137618][#137618] +- `kvadmission.store.snapshot_ingest_bandwidth_control.enabled` is now `true` by default. This will enable disk-bandwidth-based admission control for range snapshot ingests. It requires the provisioned bandwidth to be set using `kvadmission.store.provisioned_bandwidth`. -- `sql.stats.automatic_partial_collection.enabled` is now `true` by default. This enables automatic collection of partial table stats. Partial table stats (i.e. those created with `CREATE STATISTICS ... USING EXTREMES`) scan the lower and upper ends of indexes to collect statistics outside the range covered by the previous full statistics collection. [#133988][#133988] +- `sql.stats.automatic_partial_collection.enabled` is now `true` by default. This enables automatic collection of partial table stats. Partial table stats (i.e. those created with `CREATE STATISTICS ... USING EXTREMES`) scan the lower and upper ends of indexes to collect statistics outside the range covered by the previous full statistics collection. -- The default value for `trace.span_registry.enabled` has been changed from `true` to `false`. [#135682][#135682] +- The default value for `trace.span_registry.enabled` has been changed from `true` to `false`.
Settings with changed visibility
The following settings are now marked `public` after previously being `reserved`. Reserved settings are not documented and their tuning by customers is not supported. -- `kv.bulk_io_write.min_capacity_remaining_fraction` is now public. It specifies the remaining store capacity fraction below which bulk ingestion requests are rejected. It defaults to `0.05`, and can be set between `0.04` and `0.3`. [#135779][#135779] +- `kv.bulk_io_write.min_capacity_remaining_fraction` is now public. It specifies the remaining store capacity fraction below which bulk ingestion requests are rejected. It defaults to `0.05`, and can be set between `0.04` and `0.3`.
Renamed settings
-- Renamed `changefeed.min_highwater_advance` to `changefeed.resolved_timestamp.min_update_interval` to more accurately reflect its function. The previous name remains usable for backward compatibility. Its value is the minimum amount of time that must have elapsed since the last update of a changefeed's resolved timestamp before it is eligible to be updated again. With the default of `0s`, no minimum interval is enforced, though updates are still limited by the average time needed to checkpoint progress. [#138673][#138673] +- Renamed `changefeed.min_highwater_advance` to `changefeed.resolved_timestamp.min_update_interval` to more accurately reflect its function. The previous name remains usable for backward compatibility. Its value is the minimum amount of time that must have elapsed since the last update of a changefeed's resolved timestamp before it is eligible to be updated again. With the default of `0s`, no minimum interval is enforced, though updates are still limited by the average time needed to checkpoint progress. -- Renamed `changefeed.frontier_highwater_lag_checkpoint_threshold` to `changefeed.span_checkpoint.lag_threshold`. The previous name is still available for backward compatibility. [#139064][#139064] +- Renamed `changefeed.frontier_highwater_lag_checkpoint_threshold` to `changefeed.span_checkpoint.lag_threshold`. The previous name is still available for backward compatibility.
Additional setting changes
-- Internal scans are now exempt from the `sql.defaults.disallow_full_table_scans.enabled` cluster setting. This allows index creation even when the setting is enabled. [#137681][#137681] +- Internal scans are now exempt from the `sql.defaults.disallow_full_table_scans.enabled` cluster setting. This allows index creation even when the setting is enabled. -- When `server.redact_sensitive_settings.enabled` is `true`, the same redaction logic for [Sensitive cluster settings]({% link v25.1/cluster-settings.md %}#sensitive-settings) that is used for `SHOW CLUSTER SETTINGS` now applies to the DB Console Cluster Settings page. [#139277][#139277] +- When `server.redact_sensitive_settings.enabled` is `true`, the same redaction logic for [Sensitive cluster settings]({% link v25.1/cluster-settings.md %}#sensitive-settings) that is used for `SHOW CLUSTER SETTINGS` now applies to the DB Console Cluster Settings page. -- Removed cluster setting `kv.rangefeed.scheduler.enabled`. The rangefeed scheduler is now unconditionally enabled. [#132825][#132825] +- Removed cluster setting `kv.rangefeed.scheduler.enabled`. The rangefeed scheduler is now unconditionally enabled. -- Removed cluster setting `sql.auth.resolve_membership_single_scan.enabled`. This was added in case it was necessary to revert back to the previous behavior for looking up role memberships, but this cluster setting has not been needed in practice since this was added in v23.1. [#135852][#135852] +- Removed cluster setting `sql.auth.resolve_membership_single_scan.enabled`. This was added in case it was necessary to revert back to the previous behavior for looking up role memberships, but this cluster setting has not been needed in practice since this was added in v23.1.
Settings requiring operational changes
diff --git a/src/current/_includes/releases/v25.1/deprecations.md b/src/current/_includes/releases/v25.1/deprecations.md index 7a8f724c88d..8b90eb88106 100644 --- a/src/current/_includes/releases/v25.1/deprecations.md +++ b/src/current/_includes/releases/v25.1/deprecations.md @@ -1,5 +1,3 @@ The following deprecations are announced in v25.1. -- The old `BACKUP TO`, `RESTORE FROM `, and `SHOW BACKUP IN ` syntaxes are now fully deprecated and no longer usable. [#133610][#133610] - -[#133610]: https://github.com/cockroachdb/cockroach/pull/133610 +- The old `BACKUP TO`, `RESTORE FROM `, and `SHOW BACKUP IN ` syntaxes are now fully deprecated and no longer usable. diff --git a/src/current/_includes/releases/v25.1/upgrade-finalization.md b/src/current/_includes/releases/v25.1/upgrade-finalization.md index b215c310f8e..ba304177e00 100644 --- a/src/current/_includes/releases/v25.1/upgrade-finalization.md +++ b/src/current/_includes/releases/v25.1/upgrade-finalization.md @@ -1,9 +1,9 @@ During a major-version upgrade, certain features and performance improvements may not be available until the upgrade is finalized. In v25.1, these are: - A cluster must have an [Enterprise license]({% link v25.1/licensing-faqs.md %}#set-a-license) or a [trial license]({% link v25.1/licensing-faqs.md %}#obtain-a-license) set before an upgrade to v25.1 can be finalized. -- Support for XA transactions, which allow CockroachDB to participate in distributed transactions with other resources (e.g. databases or message queues) using a two-phase commit protocol. [#129448](https://github.com/cockroachdb/cockroach/pull/129448) +- Support for XA transactions, which allow CockroachDB to participate in distributed transactions with other resources (e.g. databases or message queues) using a two-phase commit protocol. - [`ALTER TABLE ... ALTER COLUMN TYPE`]({% link v25.1/alter-table.md %}#alter-column-data-types) is in [General Availability (GA)]({% link v25.1/cockroachdb-feature-availability.md %}#feature-availability-phases). - Jobs system changes: - - `SHOW JOBS` is now based on a new mechanism for storing information about the progress and status of running jobs. [#139230](https://github.com/cockroachdb/cockroach/pull/139230) - - `ALTER JOB ... OWNER TO` can now be used to transfer ownership of a job between users/roles. [#138139](https://github.com/cockroachdb/cockroach/pull/138139) - - Users can now always see and control (pause/resume/cancel) jobs that they own. [#138178](https://github.com/cockroachdb/cockroach/pull/138178) + - `SHOW JOBS` is now based on a new mechanism for storing information about the progress and status of running jobs. + - `ALTER JOB ... OWNER TO` can now be used to transfer ownership of a job between users/roles. + - Users can now always see and control (pause/resume/cancel) jobs that they own. diff --git a/src/current/_includes/releases/v25.1/v25.1.0-alpha.1.md b/src/current/_includes/releases/v25.1/v25.1.0-alpha.1.md index 664d7d6b9da..55a8e586663 100644 --- a/src/current/_includes/releases/v25.1/v25.1.0-alpha.1.md +++ b/src/current/_includes/releases/v25.1/v25.1.0-alpha.1.md @@ -6,11 +6,11 @@ Release Date: December 19, 2024

Backward-incompatible changes

-- The old `BACKUP TO`, `RESTORE FROM `, and `SHOW BACKUP IN ` syntaxes are now fully deprecated and no longer usable. [#133610][#133610] +- The old `BACKUP TO`, `RESTORE FROM `, and `SHOW BACKUP IN ` syntaxes are now fully deprecated and no longer usable.

Security updates

-- Added support for partial roles from LDAP synced group to be mapped to CockroachDB roles and ensure appropriate erroring for undesired behavior. [#135552][#135552] +- Added support for partial roles from LDAP synced group to be mapped to CockroachDB roles and ensure appropriate erroring for undesired behavior.

General changes

@@ -21,174 +21,102 @@ Release Date: December 19, 2024 - `changefeed.flush_hist_nanos` - `changefeed.kafka_throttling_hist_nanos` [#136265][#136265] -- Added support for multiple seed brokers in the new Kafka sink. [#136632][#136632] -- Added the new metric `distsender.rangefeed.catchup_ranges_waiting_client_side` that counts how many rangefeeds are waiting on the client-side limiter to start performing catchup scans. [#136741][#136741] -- Added `system.users` to the list of system tables that changefeeds protect with protected timestamps. This table is required for change data capture queries. [#133568][#133568] -- Added the `AWS_USE_PATH_STYLE` parameter to S3 URI parsing. [#136715][#136715] +- Added support for multiple seed brokers in the new Kafka sink. +- Added the new metric `distsender.rangefeed.catchup_ranges_waiting_client_side` that counts how many rangefeeds are waiting on the client-side limiter to start performing catchup scans. +- Added `system.users` to the list of system tables that changefeeds protect with protected timestamps. This table is required for change data capture queries. +- Added the `AWS_USE_PATH_STYLE` parameter to S3 URI parsing.

SQL language changes

-- Two new builtin functions, `crdb_internal.{lease_holder, range_stats}_with_errors`, include errors encountered while fetching leaseholder and range stats. These new builtins are used by the `crdb_internal.ranges` table, which includes a new column, `errors`, that combines the errors from the builtins. [#131232][#131232] -- The cluster setting `sql.stats.automatic_partial_collection.enabled` is now enabled by default, which enables automatic collection of partial table stats. Partial table stats (i.e., those created with `CREATE STATISTICS ... USING EXTREMES`) scan the lower and upper ends of indexes to collect statistics outside the range covered by the previous full statistics collection. [#133988][#133988] -- When triggers fire one another cyclically, the new `recursion_depth_limit` session variable now limits the depth of the recursion. By default, the limit is `1000` nested trigger executions. [#134498][#134498] -- The names of `BEFORE` triggers fired by a mutation now show up in the `EXPLAIN` output. The trigger-function invocations are visible in the output of verbose `EXPLAIN`. [#135556][#135556] -- `AFTER` triggers will now show up in the output of `EXPLAIN`, as well as `EXPLAIN ANALYZE`. [#135556][#135556] -- Added support for `SHOW TRIGGERS`, which displays the names of all triggers on a table, as well as whether each trigger is enabled. The user must have any privilege on the table, or be its owner. [#135778][#135778] -- Added support for `SHOW CREATE TRIGGER`, which displays the `CREATE` statement for a trigger. The user must have any privilege on the table, or be its owner. [#135778][#135778] -- Added an informational notice to the result of `CREATE TABLE ... AS` statements that describes that indexes and constraints are not copied to the new table. [#135845][#135845] -- Altering a column’s type no longer requires enabling the `enable_experimental_alter_column_type_general` session variable. This change makes the feature generally available. [#135936][#135936] -- Added support for `COLLATE` expressions on arrays of strings to match PostgreSQL more closely. [#133751][#133751] -- Added the column `readable_high_water_timestamp` to the output of `SHOW CHANGEFEED JOBS`. This human-readable form will be easier to consume. `high_water_timestamp` still exists and is in epoch nanoseconds. [#135623][#135623] -- The `sql_safe_updates` session variable must be disabled to perform `ALTER COLUMN TYPE` operations that require a column rewrite. [#136110][#136110] -- Added the `CREATE LOGICALLY REPLICATED` syntax that will direct logical data replication jobs to create the destination table(s) using a copy of the source table(s). [#136841][#136841] -- It is now possible to execute queries with correlated joins with sub-queries or common table expressions in both the `INNER` and `OUTER` context. Errors with the following message: `unimplemented: apply joins with subqueries in the "inner" and "outer" contexts are not supported` will no longer occur. [#136506][#136506] -- It is now possible to include a common table expression within the body of a user-defined function or stored procedure. [#136506][#136506] -- Updated the column name `targets` to `tables` in the `SHOW LOGICAL REPLICATION JOBS` responses. [#134339][#134339] +- Two new builtin functions, `crdb_internal.{lease_holder, range_stats}_with_errors`, include errors encountered while fetching leaseholder and range stats. These new builtins are used by the `crdb_internal.ranges` table, which includes a new column, `errors`, that combines the errors from the builtins. +- The cluster setting `sql.stats.automatic_partial_collection.enabled` is now enabled by default, which enables automatic collection of partial table stats. Partial table stats (i.e., those created with `CREATE STATISTICS ... USING EXTREMES`) scan the lower and upper ends of indexes to collect statistics outside the range covered by the previous full statistics collection. +- When triggers fire one another cyclically, the new `recursion_depth_limit` session variable now limits the depth of the recursion. By default, the limit is `1000` nested trigger executions. +- The names of `BEFORE` triggers fired by a mutation now show up in the `EXPLAIN` output. The trigger-function invocations are visible in the output of verbose `EXPLAIN`. +- `AFTER` triggers will now show up in the output of `EXPLAIN`, as well as `EXPLAIN ANALYZE`. +- Added support for `SHOW TRIGGERS`, which displays the names of all triggers on a table, as well as whether each trigger is enabled. The user must have any privilege on the table, or be its owner. +- Added support for `SHOW CREATE TRIGGER`, which displays the `CREATE` statement for a trigger. The user must have any privilege on the table, or be its owner. +- Added an informational notice to the result of `CREATE TABLE ... AS` statements that describes that indexes and constraints are not copied to the new table. +- Altering a column’s type no longer requires enabling the `enable_experimental_alter_column_type_general` session variable. This change makes the feature generally available. +- Added support for `COLLATE` expressions on arrays of strings to match PostgreSQL more closely. +- Added the column `readable_high_water_timestamp` to the output of `SHOW CHANGEFEED JOBS`. This human-readable form will be easier to consume. `high_water_timestamp` still exists and is in epoch nanoseconds. +- The `sql_safe_updates` session variable must be disabled to perform `ALTER COLUMN TYPE` operations that require a column rewrite. +- Added the `CREATE LOGICALLY REPLICATED` syntax that will direct logical data replication jobs to create the destination table(s) using a copy of the source table(s). +- It is now possible to execute queries with correlated joins with sub-queries or common table expressions in both the `INNER` and `OUTER` context. Errors with the following message: `unimplemented: apply joins with subqueries in the "inner" and "outer" contexts are not supported` will no longer occur. +- It is now possible to include a common table expression within the body of a user-defined function or stored procedure. +- Updated the column name `targets` to `tables` in the `SHOW LOGICAL REPLICATION JOBS` responses.

Operational changes

-- Retired the cluster setting `kv.rangefeed.scheduler.enabled`. The rangefeed scheduler is now unconditionally enabled. [#132825][#132825] -- Added the cluster setting `ui.database_locality_metadata.enabled` that allows operators to disable loading extended database and table region information in the DB Console Database and Table pages. This information can cause significant CPU load on large clusters with many ranges. Versions of this page from v24.3 and later do not have this problem. If customers require this data, they can use the `SHOW RANGES FROM {DATABASE| TABLE}` query via SQL to compute on-demand. [#133075][#133075] -- The metrics scrape HTTP endpoint at `/ _status/vars` will now truncate `HELP` text at the first sentence, reducing the metadata for metrics with large descriptions. Descriptions are still accessible in the documentation. [#134724][#134724] -- The row-level TTL job will now periodically update the progress meter in the jobs introspection interfaces, including `SHOW JOBS` and the Jobs page in the DB console. [#135142][#135142] -- The `kv.bulk_io_write.min_capacity_remaining_fraction` cluster setting can be be set between `0.04` and `0.3`. [#135779][#135779] -- Added two new metrics, `sql.distsql.select.distributed_exec.count` and `sql.distsql.select.distributed_exec.count.internal`. These metrics count the number of `SELECT` statements that actually execute with full or partial distribution. These metrics differ from `sql.distsql.select.count` and `sql.distsql.select.count.internal` in that the latter count the number of `SELECT` statements that are **planned** with full or partial distribution, but might not necessarily execute with full or partial distribution, depending on the location of data. [#135236][#135236] -- Added the new metric `sql.distsql.distributed_exec.count` that counts the number of invocations of the execution engine with full or partial distribution. (This is in contrast to `sql.distsql.queries.total`, which counts the total number of invocations of the execution engine.) [#135236][#135236] +- Retired the cluster setting `kv.rangefeed.scheduler.enabled`. The rangefeed scheduler is now unconditionally enabled. +- Added the cluster setting `ui.database_locality_metadata.enabled` that allows operators to disable loading extended database and table region information in the DB Console Database and Table pages. This information can cause significant CPU load on large clusters with many ranges. Versions of this page from v24.3 and later do not have this problem. If customers require this data, they can use the `SHOW RANGES FROM {DATABASE| TABLE}` query via SQL to compute on-demand. +- The metrics scrape HTTP endpoint at `/ _status/vars` will now truncate `HELP` text at the first sentence, reducing the metadata for metrics with large descriptions. Descriptions are still accessible in the documentation. +- The row-level TTL job will now periodically update the progress meter in the jobs introspection interfaces, including `SHOW JOBS` and the Jobs page in the DB console. +- The `kv.bulk_io_write.min_capacity_remaining_fraction` cluster setting can be be set between `0.04` and `0.3`. +- Added two new metrics, `sql.distsql.select.distributed_exec.count` and `sql.distsql.select.distributed_exec.count.internal`. These metrics count the number of `SELECT` statements that actually execute with full or partial distribution. These metrics differ from `sql.distsql.select.count` and `sql.distsql.select.count.internal` in that the latter count the number of `SELECT` statements that are **planned** with full or partial distribution, but might not necessarily execute with full or partial distribution, depending on the location of data. +- Added the new metric `sql.distsql.distributed_exec.count` that counts the number of invocations of the execution engine with full or partial distribution. (This is in contrast to `sql.distsql.queries.total`, which counts the total number of invocations of the execution engine.) - Added some clarification that the following metrics count invocations of the execution engine and not SQL queries (which could each result in multiple invocations of the execution engine): - `sql.distsql.queries.active` - `sql.distsql.queries.total` - - `sql.distsql.distributed_exec.count` [#135236][#135236] -- The default value for the cluster setting `trace.span_registry.enabled` has been changed from `true` to `false`. [#135682][#135682] -- Removed the `sql.auth.resolve_membership_single_scan.enabled` cluster setting. This was added in case it was necessary to revert back to the previous behavior for looking up role memberships, but this cluster setting has not been needed in practice since this was added in v23.1. [#135852][#135852] -- Telemetry delivery is now considered successful even in cases where CockroachDB experiences a network timeout. This will prevent throttling in cases outside an operator's control. [#136219][#136219] -- When a schema change job is completed, rolls back, or encounters a failure, the time taken since the job began is now logged in a structured log in the `SQL_SCHEMA` log channel. [#136899][#136899] + - `sql.distsql.distributed_exec.count` +- The default value for the cluster setting `trace.span_registry.enabled` has been changed from `true` to `false`. +- Removed the `sql.auth.resolve_membership_single_scan.enabled` cluster setting. This was added in case it was necessary to revert back to the previous behavior for looking up role memberships, but this cluster setting has not been needed in practice since this was added in v23.1. +- Telemetry delivery is now considered successful even in cases where CockroachDB experiences a network timeout. This will prevent throttling in cases outside an operator's control. +- When a schema change job is completed, rolls back, or encounters a failure, the time taken since the job began is now logged in a structured log in the `SQL_SCHEMA` log channel.

DB Console changes

-- As of v25.1 the legacy Database page, which was previously available through the Advanced Debug page, is no longer available. [#134005][#134005] -- When activating statement diagnostics in the DB Console, users now have the option to produce a redacted bundle as output. This bundle will omit sensitive data. [#134723][#134723] -- Fixed a list of UI bugs on the DB Console Overview and Node Overview pages. [#135293][#135293] -- Removed the link for the legacy table page on the Plan Details page. [#136311][#136311] -- Changed the table and index contents of the Hot Ranges page in DB console. [#134106][#134106] +- As of v25.1 the legacy Database page, which was previously available through the Advanced Debug page, is no longer available. +- When activating statement diagnostics in the DB Console, users now have the option to produce a redacted bundle as output. This bundle will omit sensitive data. +- Fixed a list of UI bugs on the DB Console Overview and Node Overview pages. +- Removed the link for the legacy table page on the Plan Details page. +- Changed the table and index contents of the Hot Ranges page in DB console.

Bug fixes

-- Fixed a bug that prevented the `CREATE` statement for a routine from being shown in a statement bundle. This happened when the routine was created on a schema other than `public`. The bug has existed since v23.1. [#132147][#132147] -- Reduced the duration of partitions in the gossip network when a node crashes in order to eliminate false positives in the `ranges.unavailable` metric. [#133300][#133300] -- Fixed a bug that caused incorrect evaluation of some binary expressions involving `CHAR(N)` values and untyped string literals with trailing whitespace characters. For example, the expression `'f'::CHAR = 'f '` now correctly evaluates to `true`. [#133037][#133037] -- Fixed a race condition in Sarama when Kafka throttling is enabled. [#133563][#133563] -- Fixed a metrics bug in rangefeed restarts introduced in v23.2. [#133947][#133947] -- Fixed a bug that could result in incorrect metrics related to retryable rangefeed errors. [#133991][#133991] -- Fixed a bug that could cause `DELETE` triggers not to fire on cascading `DELETE`, and which could cause `INSERT` triggers to match incorrectly in the same scenario. [#134759][#134759] -- Non-`admin` users that run `DROP ROLE IF EXISTS` on a user that does not exist will no longer receive an error message. [#134850][#134850] -- Fixed a bug where CockroachDB would encounter an internal error when evaluating `FETCH ABSOLUTE 0` statements. The bug had been present since v22.1. [#134919][#134919] -- Fixed a bug that could cause incorrect query results when the optimizer planned a lookup join on an index containing a column of type `CHAR(N)`, `VARCHAR(N)`, `BIT(N)`, `VARBIT(N)`, or `DECIMAL(M, N)`, and the query held that column constant to a single value (e.g., with an equality filter). [#134891][#134891] -- Fixed a bug that prevented restoring cluster backups taken in a multi-region cluster that had configured the `system` database with a region configuration into a non-multi-region cluster. [#134604][#134604] -- Fixed an unhandled error that would occur if `DROP SCHEMA` was executed on the `public` schema of the `system` database, or on an internal schema like `pg_catalog` or `information_schema`. [#135149][#135149] -- `ALTER DATABASE` operations no longer hang when the operation modifies the zone config if an invalid zone config already exists. [#135168][#135168] -- CockroachDB now correctly evaluates `percentile_cont` and `percentile_disc` aggregates over `FLOAT4` values. [#135130][#135130] -- The schema changer's backfill process now includes a retry mechanism that reduces the batch size when memory issues occur. This improves the likelihood of operation success without requiring manual adjustment of the `bulko.index_backfill.batch_size` cluster setting. [#135563][#135563] -- `CREATE SCHEMA` now returns the correct error if a the schema name is missing. [#135910][#135910] -- Fixed an issue where corrupted table statistics could cause the `cockroach` process to crash. [#135944][#135944] -- Table statistics collection in CockroachDB could previously run into `no bytes in account to release` errors in some edge cases (when the SQL memory budget, configured via `--max-sql-memory` flag, was close to being exhausted). The bug has been present since v21.2 and is now fixed. [#135970][#135970] -- `security.certificate.*` metrics will now be updated if a node loads new certificates while running. [#135596][#135596] -- A table that is participating in logical data replication can no longer be dropped. Previously, this was allowed, which would cause all the replicated rows to end up in the dead-letter queue. [#136172][#136172] -- `ALTER COLUMN SET NOT NULL` was not enforced consistently when the table was created in the same transaction. [#136298][#136298] -- `CREATE` relation / type could leave dangling namespace entries if the schema was concurrently being dropped. [#136325][#136325] -- The `idle_in_session_timeout` session variable now excludes the time spent waiting for schema changer jobs to complete, preventing unintended session termination during schema change operations. [#136463][#136463] -- Fixed a bug that causes the optimizer to use stale table statistics after altering an `ENUM` type used in the table. [#136538][#136538] -- CockroachDB now better respects the `statement_timeout` limit on queries involving the top K sort and merge join operations. [#136631][#136631] -- Fixed a bug that would cause the `make_timestamp` and `make_timestamptz` builtin functions to incorrectly extract the `seconds` argument if the value was less than `1`. [#136804][#136804] +- Fixed a bug that prevented the `CREATE` statement for a routine from being shown in a statement bundle. This happened when the routine was created on a schema other than `public`. The bug has existed since v23.1. +- Reduced the duration of partitions in the gossip network when a node crashes in order to eliminate false positives in the `ranges.unavailable` metric. +- Fixed a bug that caused incorrect evaluation of some binary expressions involving `CHAR(N)` values and untyped string literals with trailing whitespace characters. For example, the expression `'f'::CHAR = 'f '` now correctly evaluates to `true`. +- Fixed a race condition in Sarama when Kafka throttling is enabled. +- Fixed a metrics bug in rangefeed restarts introduced in v23.2. +- Fixed a bug that could result in incorrect metrics related to retryable rangefeed errors. +- Fixed a bug that could cause `DELETE` triggers not to fire on cascading `DELETE`, and which could cause `INSERT` triggers to match incorrectly in the same scenario. +- Non-`admin` users that run `DROP ROLE IF EXISTS` on a user that does not exist will no longer receive an error message. +- Fixed a bug where CockroachDB would encounter an internal error when evaluating `FETCH ABSOLUTE 0` statements. The bug had been present since v22.1. +- Fixed a bug that could cause incorrect query results when the optimizer planned a lookup join on an index containing a column of type `CHAR(N)`, `VARCHAR(N)`, `BIT(N)`, `VARBIT(N)`, or `DECIMAL(M, N)`, and the query held that column constant to a single value (e.g., with an equality filter). +- Fixed a bug that prevented restoring cluster backups taken in a multi-region cluster that had configured the `system` database with a region configuration into a non-multi-region cluster. +- Fixed an unhandled error that would occur if `DROP SCHEMA` was executed on the `public` schema of the `system` database, or on an internal schema like `pg_catalog` or `information_schema`. +- `ALTER DATABASE` operations no longer hang when the operation modifies the zone config if an invalid zone config already exists. +- CockroachDB now correctly evaluates `percentile_cont` and `percentile_disc` aggregates over `FLOAT4` values. +- The schema changer's backfill process now includes a retry mechanism that reduces the batch size when memory issues occur. This improves the likelihood of operation success without requiring manual adjustment of the `bulko.index_backfill.batch_size` cluster setting. +- `CREATE SCHEMA` now returns the correct error if a the schema name is missing. +- Fixed an issue where corrupted table statistics could cause the `cockroach` process to crash. +- Table statistics collection in CockroachDB could previously run into `no bytes in account to release` errors in some edge cases (when the SQL memory budget, configured via `--max-sql-memory` flag, was close to being exhausted). The bug has been present since v21.2 and is now fixed. +- `security.certificate.*` metrics will now be updated if a node loads new certificates while running. +- A table that is participating in logical data replication can no longer be dropped. Previously, this was allowed, which would cause all the replicated rows to end up in the dead-letter queue. +- `ALTER COLUMN SET NOT NULL` was not enforced consistently when the table was created in the same transaction. +- `CREATE` relation / type could leave dangling namespace entries if the schema was concurrently being dropped. +- The `idle_in_session_timeout` session variable now excludes the time spent waiting for schema changer jobs to complete, preventing unintended session termination during schema change operations. +- Fixed a bug that causes the optimizer to use stale table statistics after altering an `ENUM` type used in the table. +- CockroachDB now better respects the `statement_timeout` limit on queries involving the top K sort and merge join operations. +- Fixed a bug that would cause the `make_timestamp` and `make_timestamptz` builtin functions to incorrectly extract the `seconds` argument if the value was less than `1`. - Fixed possible index corruption caused by triggers that could occur when the following conditions were satisfied: 1. A query calls a user-defined function or stored procedure, and also performs a mutation on a table. 2. The user-defined function or storage procedure contains a statement that either fires an `AFTER` trigger, or fires a `CASCADE` that itself fires a trigger. 3. The trigger modifies the same row as the outer statement. - 4. Either the outer or inner mutation is something other than an `INSERT` without an `ON CONFLICT` clause. [#136076][#136076] -- Fixed an issue where license enforcement was not consistently disabled for single-node clusters started with `cockroach start-single-node`, ensuring proper behavior on cluster restarts. [#136926][#136926] -- Fixed a bug that caused an incorrect filesystem to be logged as part of the store information. [#137024][#137024] + 4. Either the outer or inner mutation is something other than an `INSERT` without an `ON CONFLICT` clause. +- Fixed an issue where license enforcement was not consistently disabled for single-node clusters started with `cockroach start-single-node`, ensuring proper behavior on cluster restarts. +- Fixed a bug that caused an incorrect filesystem to be logged as part of the store information.

Performance improvements

-- The `/_status/nodes_ui` API no longer returns unnecessary metrics in its response. This decreases the payload size of the API and improves the load time of various DB Console pages and components. [#135186][#135186] -- Performance for some PL/pgSQL loops is now significantly improved, by as much as 3–4 times. This is due to applying tail-call optimization in more cases to the recursive sub-routines that implement loops. [#135145][#135145] -- Improved the internal caching logic for role membership information. This reduces the latency impact of commands such as `DROP ROLE`, `CREATE ROLE`, and `GRANT role TO user`, which cause the role membership cache to be invalidated. [#135852][#135852] -- The session variable `plan_cache_mode` now defaults to `auto`, enabling generic query plans for some queries. [#135668][#135668] +- The `/_status/nodes_ui` API no longer returns unnecessary metrics in its response. This decreases the payload size of the API and improves the load time of various DB Console pages and components. +- Performance for some PL/pgSQL loops is now significantly improved, by as much as 3–4 times. This is due to applying tail-call optimization in more cases to the recursive sub-routines that implement loops. +- Improved the internal caching logic for role membership information. This reduces the latency impact of commands such as `DROP ROLE`, `CREATE ROLE`, and `GRANT role TO user`, which cause the role membership cache to be invalidated. +- The session variable `plan_cache_mode` now defaults to `auto`, enabling generic query plans for some queries. - This change is reverted in v25.1.0-rc.1, so this note can be disregarded when running the latest testing release and v25.1 production releases, unless otherwise noted. -- GRPC streams are now pooled across unary intra-cluster RPCs, allowing for reuse of gRPC resources to reduce the cost of remote key-value layer access. This pooling can be disabled using the `rpc.batch_stream_pool.enabled` cluster setting. [#136648][#136648] +- GRPC streams are now pooled across unary intra-cluster RPCs, allowing for reuse of gRPC resources to reduce the cost of remote key-value layer access. This pooling can be disabled using the `rpc.batch_stream_pool.enabled` cluster setting. - This information was updated in the v25.1.0-beta.2 release notes.

Multi-tenancy

-- The `nodes` endpoint should work for `shared` secondary tenants. Since nodes are common to all the tenants, this API endpoint behaves similarly to the system tenant's endpoint. [#131644][#131644] - -[#131232]: https://github.com/cockroachdb/cockroach/pull/131232 -[#131644]: https://github.com/cockroachdb/cockroach/pull/131644 -[#132147]: https://github.com/cockroachdb/cockroach/pull/132147 -[#132825]: https://github.com/cockroachdb/cockroach/pull/132825 -[#133037]: https://github.com/cockroachdb/cockroach/pull/133037 -[#133075]: https://github.com/cockroachdb/cockroach/pull/133075 -[#133080]: https://github.com/cockroachdb/cockroach/pull/133080 -[#133215]: https://github.com/cockroachdb/cockroach/pull/133215 -[#133300]: https://github.com/cockroachdb/cockroach/pull/133300 -[#133563]: https://github.com/cockroachdb/cockroach/pull/133563 -[#133568]: https://github.com/cockroachdb/cockroach/pull/133568 -[#133610]: https://github.com/cockroachdb/cockroach/pull/133610 -[#133751]: https://github.com/cockroachdb/cockroach/pull/133751 -[#133947]: https://github.com/cockroachdb/cockroach/pull/133947 -[#133988]: https://github.com/cockroachdb/cockroach/pull/133988 -[#133991]: https://github.com/cockroachdb/cockroach/pull/133991 -[#134005]: https://github.com/cockroachdb/cockroach/pull/134005 -[#134106]: https://github.com/cockroachdb/cockroach/pull/134106 -[#134339]: https://github.com/cockroachdb/cockroach/pull/134339 -[#134498]: https://github.com/cockroachdb/cockroach/pull/134498 -[#134604]: https://github.com/cockroachdb/cockroach/pull/134604 -[#134723]: https://github.com/cockroachdb/cockroach/pull/134723 -[#134724]: https://github.com/cockroachdb/cockroach/pull/134724 -[#134759]: https://github.com/cockroachdb/cockroach/pull/134759 -[#134850]: https://github.com/cockroachdb/cockroach/pull/134850 -[#134891]: https://github.com/cockroachdb/cockroach/pull/134891 -[#134919]: https://github.com/cockroachdb/cockroach/pull/134919 -[#135130]: https://github.com/cockroachdb/cockroach/pull/135130 -[#135142]: https://github.com/cockroachdb/cockroach/pull/135142 -[#135145]: https://github.com/cockroachdb/cockroach/pull/135145 -[#135149]: https://github.com/cockroachdb/cockroach/pull/135149 -[#135168]: https://github.com/cockroachdb/cockroach/pull/135168 -[#135186]: https://github.com/cockroachdb/cockroach/pull/135186 -[#135236]: https://github.com/cockroachdb/cockroach/pull/135236 -[#135293]: https://github.com/cockroachdb/cockroach/pull/135293 -[#135552]: https://github.com/cockroachdb/cockroach/pull/135552 -[#135556]: https://github.com/cockroachdb/cockroach/pull/135556 -[#135563]: https://github.com/cockroachdb/cockroach/pull/135563 -[#135596]: https://github.com/cockroachdb/cockroach/pull/135596 -[#135623]: https://github.com/cockroachdb/cockroach/pull/135623 -[#135668]: https://github.com/cockroachdb/cockroach/pull/135668 -[#135682]: https://github.com/cockroachdb/cockroach/pull/135682 -[#135778]: https://github.com/cockroachdb/cockroach/pull/135778 -[#135779]: https://github.com/cockroachdb/cockroach/pull/135779 -[#135845]: https://github.com/cockroachdb/cockroach/pull/135845 -[#135852]: https://github.com/cockroachdb/cockroach/pull/135852 -[#135910]: https://github.com/cockroachdb/cockroach/pull/135910 -[#135936]: https://github.com/cockroachdb/cockroach/pull/135936 -[#135944]: https://github.com/cockroachdb/cockroach/pull/135944 -[#135970]: https://github.com/cockroachdb/cockroach/pull/135970 -[#136076]: https://github.com/cockroachdb/cockroach/pull/136076 -[#136110]: https://github.com/cockroachdb/cockroach/pull/136110 -[#136172]: https://github.com/cockroachdb/cockroach/pull/136172 -[#136219]: https://github.com/cockroachdb/cockroach/pull/136219 -[#136265]: https://github.com/cockroachdb/cockroach/pull/136265 -[#136298]: https://github.com/cockroachdb/cockroach/pull/136298 -[#136311]: https://github.com/cockroachdb/cockroach/pull/136311 -[#136325]: https://github.com/cockroachdb/cockroach/pull/136325 -[#136463]: https://github.com/cockroachdb/cockroach/pull/136463 -[#136506]: https://github.com/cockroachdb/cockroach/pull/136506 -[#136538]: https://github.com/cockroachdb/cockroach/pull/136538 -[#136631]: https://github.com/cockroachdb/cockroach/pull/136631 -[#136632]: https://github.com/cockroachdb/cockroach/pull/136632 -[#136648]: https://github.com/cockroachdb/cockroach/pull/136648 -[#136715]: https://github.com/cockroachdb/cockroach/pull/136715 -[#136741]: https://github.com/cockroachdb/cockroach/pull/136741 -[#136804]: https://github.com/cockroachdb/cockroach/pull/136804 -[#136841]: https://github.com/cockroachdb/cockroach/pull/136841 -[#136899]: https://github.com/cockroachdb/cockroach/pull/136899 -[#136926]: https://github.com/cockroachdb/cockroach/pull/136926 -[#137024]: https://github.com/cockroachdb/cockroach/pull/137024 \ No newline at end of file +- The `nodes` endpoint should work for `shared` secondary tenants. Since nodes are common to all the tenants, this API endpoint behaves similarly to the system tenant's endpoint. diff --git a/src/current/_includes/releases/v25.1/v25.1.0-alpha.2.md b/src/current/_includes/releases/v25.1/v25.1.0-alpha.2.md index 73e7b4545f2..be799c0d4f8 100644 --- a/src/current/_includes/releases/v25.1/v25.1.0-alpha.2.md +++ b/src/current/_includes/releases/v25.1/v25.1.0-alpha.2.md @@ -6,12 +6,12 @@ Release Date: January 9, 2025

Backward-incompatible changes

-- Altering a paused backup schedule's recurrence or location no longer resumes the schedule. [#134829][#134829] -- `BACKUP`/`RESTORE` statements no longer return index entries and bytes backed up/restored. [#134516][#134516] +- Altering a paused backup schedule's recurrence or location no longer resumes the schedule. +- `BACKUP`/`RESTORE` statements no longer return index entries and bytes backed up/restored.

General changes

-- The PTS (protected timestamp) records of running changefeeds are now updated when the set of targets changes, such as when system tables are added to the protected tables list. [#137548][#137548] +- The PTS (protected timestamp) records of running changefeeds are now updated when the set of targets changes, such as when system tables are added to the protected tables list.

SQL language changes

@@ -20,133 +20,56 @@ Release Date: January 9, 2025 - The top K sort over a large set of rows (`1000` by default, controlled via the `distribute_sort_row_count_threshold` session variable) will now force the plan distribution. - Full table scans estimated to read a certain number of rows (fewer than `10000` by default, controlled via the new `distribute_scan_row_count_threshold` session variable) no longer force the plan distribution. - The new `always_distribute_full_scans` session variable now defaults to `true` to match the previous behavior of always distributing full scans. - - Large constrained table scans estimated to read a certain number of rows (at least `10000` by default, controlled via the `distribute_scan_row_count_threshold` session variable) will now force the plan distribution. [#137072][#137072] - - Hash and merge joins for which both inputs produce a small number of rows (less than `1000` combined by default, configurable via the `distribute_join_row_count_threshold` session variable) no longer force the plan distribution. [#137562][#137562] -- `DELETE` statements now acquire locks using the `FOR UPDATE` locking mode during their initial row scan in some cases, which improves performance for contended workloads. This behavior is configurable using the `enable_implicit_select_for_update` session variable. [#137069][#137069] -- Added support for `RETURNS TABLE` syntax when creating a user-defined function (UDF). [#137251][#137251] -- Added support for XA transactions, which allow CockroachDB to participate in distributed transactions with other resources (e.g., databases, message queues, etc.) using a two-phase commit protocol. [#129448][#129448] -- Added the `legacy_varchar_typing` session setting, which reverts the changes of [#133037](https://github.com/cockroachdb/cockroach/pull/133037) that causes the change in typing behavior described in [#137837](https://github.com/cockroachdb/cockroach/pull/137837). Specifically, it makes type-checking and overload resolution ignore the newly added "unpreferred" overloads. This setting defaults to `off`. [#137844][#137844] -- Added support for a new index hint, `AVOID_FULL_SCAN`, which will prevent the optimizer from planning a full scan for the specified table if any other plan is possible. The hint can be used in the same way as other existing index hints. For example, `SELECT * FROM table_name@{AVOID_FULL_SCAN};`. This hint is similar to `NO_FULL_SCAN`, but will not error if a full scan cannot be avoided. Note that a full scan of a partial index would not normally be considered a "full scan" for the purposes of the `AVOID_FULL_SCAN` and `NO_FULL_SCAN` hints, but if the user has explicitly forced the partial index via `FORCE_INDEX=index_name`, it is considered a full scan. [#137984][#137984] -- Added a new session setting `avoid_full_table_scans_in_mutations`, which when set to `true` (default), causes the optimizer to avoid planning full table scans for mutation queries if any other plan is possible. [#137984][#137984] -- `ALTER JOB ... OWNER TO` can now be used to transfer ownership of a job between users/roles. [#138139][#138139] + - Large constrained table scans estimated to read a certain number of rows (at least `10000` by default, controlled via the `distribute_scan_row_count_threshold` session variable) will now force the plan distribution. + - Hash and merge joins for which both inputs produce a small number of rows (less than `1000` combined by default, configurable via the `distribute_join_row_count_threshold` session variable) no longer force the plan distribution. +- `DELETE` statements now acquire locks using the `FOR UPDATE` locking mode during their initial row scan in some cases, which improves performance for contended workloads. This behavior is configurable using the `enable_implicit_select_for_update` session variable. +- Added support for `RETURNS TABLE` syntax when creating a user-defined function (UDF). +- Added support for XA transactions, which allow CockroachDB to participate in distributed transactions with other resources (e.g., databases, message queues, etc.) using a two-phase commit protocol. +- Added the `legacy_varchar_typing` session setting, which reverts the changes of that causes the change in typing behavior described in. Specifically, it makes type-checking and overload resolution ignore the newly added "unpreferred" overloads. This setting defaults to `off`. +- Added support for a new index hint, `AVOID_FULL_SCAN`, which will prevent the optimizer from planning a full scan for the specified table if any other plan is possible. The hint can be used in the same way as other existing index hints. For example, `SELECT * FROM table_name@{AVOID_FULL_SCAN};`. This hint is similar to `NO_FULL_SCAN`, but will not error if a full scan cannot be avoided. Note that a full scan of a partial index would not normally be considered a "full scan" for the purposes of the `AVOID_FULL_SCAN` and `NO_FULL_SCAN` hints, but if the user has explicitly forced the partial index via `FORCE_INDEX=index_name`, it is considered a full scan. +- Added a new session setting `avoid_full_table_scans_in_mutations`, which when set to `true` (default), causes the optimizer to avoid planning full table scans for mutation queries if any other plan is possible. +- `ALTER JOB ... OWNER TO` can now be used to transfer ownership of a job between users/roles.

Operational changes

-- Added a new `sql.exec.latency.detail` histogram metric. This metric is labeled with its statement fingerprint. Enable this feature using the `sql.stats.detailed_latency_metrics.enabled` application setting. For workloads with over a couple thousand fingerprints, we advise caution in enabling `sql.stats.detailed_latency_metrics.enabled`. For most workloads, this ranges from dozens to hundreds. Use the new `sql.query.unique.count` count metric to estimate the cardinality of the set of all statement fingerprints. [#135924][#135924] -- Added a new configurable cluster setting `kv.transaction.max_intents_and_locks` that prevents transactions from creating too many intents. [#135945][#135945] -- Added the metric `txn.count_limit_rejected`, which tracks the KV transactions that have been aborted because they exceeded the max number of writes and locking reads allowed. [#135945][#135945] -- Added the metric `txn.count_limit_on_response`, which tracks the number of KV transactions that have exceeded the count limit on a response. [#135945][#135945] -- Cluster setting `kvadmission.store.snapshot_ingest_bandwidth_control.enabled` is now `true` by default. This will enable disk-bandwidth-based admission control for range snapshot ingests. It requires the provisioned bandwidth to be set using `kvadmission.store.provisioned_bandwidth`. [#137618][#137618] -- The `changefeed.max_behind_nanos` metric now supports scoping with metric labels. [#137534][#137534] +- Added a new `sql.exec.latency.detail` histogram metric. This metric is labeled with its statement fingerprint. Enable this feature using the `sql.stats.detailed_latency_metrics.enabled` application setting. For workloads with over a couple thousand fingerprints, we advise caution in enabling `sql.stats.detailed_latency_metrics.enabled`. For most workloads, this ranges from dozens to hundreds. Use the new `sql.query.unique.count` count metric to estimate the cardinality of the set of all statement fingerprints. +- Added a new configurable cluster setting `kv.transaction.max_intents_and_locks` that prevents transactions from creating too many intents. +- Added the metric `txn.count_limit_rejected`, which tracks the KV transactions that have been aborted because they exceeded the max number of writes and locking reads allowed. +- Added the metric `txn.count_limit_on_response`, which tracks the number of KV transactions that have exceeded the count limit on a response. +- Cluster setting `kvadmission.store.snapshot_ingest_bandwidth_control.enabled` is now `true` by default. This will enable disk-bandwidth-based admission control for range snapshot ingests. It requires the provisioned bandwidth to be set using `kvadmission.store.provisioned_bandwidth`. +- The `changefeed.max_behind_nanos` metric now supports scoping with metric labels.

Command-line changes

-- Previously, the `--include-files` and `--exclude-files` file filters in `cockroach debug zip` only applied to heap profiles, CPU profiles, goroutines, and logs. The filters now apply to most of the cluster-wide and per-node data captured in the debug zip. This improves `debug zip` performance. Example command: `cockroach debug zip debug.zip --redact --insecure --include-files="*" --exclude-files="*.log"`. [#136098][#136098] +- Previously, the `--include-files` and `--exclude-files` file filters in `cockroach debug zip` only applied to heap profiles, CPU profiles, goroutines, and logs. The filters now apply to most of the cluster-wide and per-node data captured in the debug zip. This improves `debug zip` performance. Example command: `cockroach debug zip debug.zip --redact --insecure --include-files="*" --exclude-files="*.log"`.

DB Console changes

-- Copy-pasting links to preset timescale views on the DB Console **Metrics** page now reflects those presets accurately (e.g., a URL looking at "last 6 hours" will always show the last 6 hours and update automatically). Clicking the **Now** button on the **Metrics** page will automatically select the live updating preset most closely matching the current inverval. If you are viewing an arbitrary 4-hour interval, the "last 6 hours" preset will be selected. [#136170][#136170] +- Copy-pasting links to preset timescale views on the DB Console **Metrics** page now reflects those presets accurately (e.g., a URL looking at "last 6 hours" will always show the last 6 hours and update automatically). Clicking the **Now** button on the **Metrics** page will automatically select the live updating preset most closely matching the current inverval. If you are viewing an arbitrary 4-hour interval, the "last 6 hours" preset will be selected.

Bug fixes

-- Fixed a bug that caused queries against tables with user-defined types to sometimes fail with errors after restoring those tables. [#137242][#137242] -- `REGIONAL BY ROW` tables with uniqueness constraints where the region is not part of those uniqueness constraints, and which also contain non-unique indexes, will now have that uniqueness properly enforced when modified under `READ COMMITTED` isolation. This bug was introduced in v24.3.0. [#137361][#137361] -- Fixed a bug existing since v24.1 that would cause a set-returning UDF with `OUT` parameters to return a single row. [#137251][#137251] -- Previously, if a `STORED` computed column was added and it was a fixed-size type such as `VARCHAR(2)`, the computed values would not be checked to make sure they were not too large for the type. Now this validation is performed, which prevents an invalid computed column definition from being added to a table. [#137299][#137299] -- Previously, if a `VIRTUAL` computed column was added and it was a fixed-size type such as `VARCHAR(2)`, the computed values would not be checked to make sure they were not too large for the type. Now this validation is performed, which prevents an invalid computed column definition from being added to a table. [#137299][#137299] -- Removed duplicate columns in the Parquet output from changefeeds using CDC queries. [#136718][#136718] -- Addressed a potential memory leak when parsing client session parameters for new connections. [#137627][#137627] -- Fixed an issue where adding an existing column with the `IF NOT EXISTS` option could exit too early, skipping necessary handling of the abstract syntax tree (AST). This could cause the `ALTER TABLE ... ADD COLUMN` statement to fail. [#137633][#137633] -- Fixed an issue where a schema change could incorrectly cause a changefeed to fail with an assertion error like `received boundary timestamp ... of type ... before reaching existing boundary of type ...`. [#137567][#137567] -- Internal scans are now exempt from the `sql.defaults.disallow_full_table_scans.enabled` cluster setting. This allows index creation even when the setting is enabled. [#137681][#137681] -- Fixed a bug that would cause an internal error when the result of a `RECORD`-returning `UDF` was wrapped by another expression (such as `COALESCE`) within a `VALUES` clause. [#129706][#129706] -- `CLOSE CURSOR` statements are now allowed in read-only transactions, similar to PostgreSQL. The bug has been present since at least v23.1. [#137744][#137744] -- Fixed a bug where querying the `pg_catalog.pg_constraint` table while the schema changer was dropping a constraint could result in a query error. [#137860][#137860] -- Fixed a timing issue between `ALTER VIEW ... RENAME` and `DROP VIEW` that caused repeated failures in the `DROP VIEW` job. [#137868][#137868] -- The `pg_catalog.pg_type` table no longer contains `NULL` values for the columns `typinput`, `typoutput`, `typreceive`, and `typsend`. `NULL` values were erroneously added for these columns for the `trigger` type in v24.3.0. This could cause unexpected errors with some client libraries. [#137928][#137928] -- `ALTER BACKUP SCHEDULE` no longer fails on schedules whose collection URI contains a space. [#137948][#137948] -- Previously in some cases, CockroachDB could encounter an internal error `comparison of two different versions of enum` when a user-defined type was modified within a transaction and the following statements read the column of that user-defined type. The bug was introduced in v24.2 and is now fixed. [#137960][#137960] -- Previously `SHOW CREATE TABLE` was showing incorrect data with regard to inverted indexes. It now shows the correct data that can be repeatedly entered back into CockroachDB to recreate the same table. [#138043][#138043] -- Resolved an issue in the Kafka sink configuration within CockroachDB, where users were previously unable to set negative GZIP compression levels. Now, users can configure the `CompressionLevel` for the Kafka sink in the range of `[-2, 9]`. [#137646][#137646] -- Users should no longer see console errors when visiting the **Databases** page directly after node/SQL pod startup. [#137993][#137993] +- Fixed a bug that caused queries against tables with user-defined types to sometimes fail with errors after restoring those tables. +- `REGIONAL BY ROW` tables with uniqueness constraints where the region is not part of those uniqueness constraints, and which also contain non-unique indexes, will now have that uniqueness properly enforced when modified under `READ COMMITTED` isolation. This bug was introduced in v24.3.0. +- Fixed a bug existing since v24.1 that would cause a set-returning UDF with `OUT` parameters to return a single row. +- Previously, if a `STORED` computed column was added and it was a fixed-size type such as `VARCHAR(2)`, the computed values would not be checked to make sure they were not too large for the type. Now this validation is performed, which prevents an invalid computed column definition from being added to a table. +- Previously, if a `VIRTUAL` computed column was added and it was a fixed-size type such as `VARCHAR(2)`, the computed values would not be checked to make sure they were not too large for the type. Now this validation is performed, which prevents an invalid computed column definition from being added to a table. +- Removed duplicate columns in the Parquet output from changefeeds using CDC queries. +- Addressed a potential memory leak when parsing client session parameters for new connections. +- Fixed an issue where adding an existing column with the `IF NOT EXISTS` option could exit too early, skipping necessary handling of the abstract syntax tree (AST). This could cause the `ALTER TABLE ... ADD COLUMN` statement to fail. +- Fixed an issue where a schema change could incorrectly cause a changefeed to fail with an assertion error like `received boundary timestamp ... of type ... before reaching existing boundary of type ...`. +- Internal scans are now exempt from the `sql.defaults.disallow_full_table_scans.enabled` cluster setting. This allows index creation even when the setting is enabled. +- Fixed a bug that would cause an internal error when the result of a `RECORD`-returning `UDF` was wrapped by another expression (such as `COALESCE`) within a `VALUES` clause. +- `CLOSE CURSOR` statements are now allowed in read-only transactions, similar to PostgreSQL. The bug has been present since at least v23.1. +- Fixed a bug where querying the `pg_catalog.pg_constraint` table while the schema changer was dropping a constraint could result in a query error. +- Fixed a timing issue between `ALTER VIEW ... RENAME` and `DROP VIEW` that caused repeated failures in the `DROP VIEW` job. +- The `pg_catalog.pg_type` table no longer contains `NULL` values for the columns `typinput`, `typoutput`, `typreceive`, and `typsend`. `NULL` values were erroneously added for these columns for the `trigger` type in v24.3.0. This could cause unexpected errors with some client libraries. +- `ALTER BACKUP SCHEDULE` no longer fails on schedules whose collection URI contains a space. +- Previously in some cases, CockroachDB could encounter an internal error `comparison of two different versions of enum` when a user-defined type was modified within a transaction and the following statements read the column of that user-defined type. The bug was introduced in v24.2 and is now fixed. +- Previously `SHOW CREATE TABLE` was showing incorrect data with regard to inverted indexes. It now shows the correct data that can be repeatedly entered back into CockroachDB to recreate the same table. +- Resolved an issue in the Kafka sink configuration within CockroachDB, where users were previously unable to set negative GZIP compression levels. Now, users can configure the `CompressionLevel` for the Kafka sink in the range of `[-2, 9]`. +- Users should no longer see console errors when visiting the **Databases** page directly after node/SQL pod startup.

Performance improvements

-- The default value of cluster setting `kvadmission.flow_control.mode` has been changed from `apply_to_elastic` to `apply_to_all`. Regular writes are now subject to admission control by default, meaning that non-quorum required replicas may not be told about new writes from the leader if they are unable to keep up. This brings a large performance improvement during instances where there is a large backlog of replication work towards a subset of node(s), such as node restarts. The setting can be reverted to the v24.3 and earlier default by setting `kvadmission.flow_control.mode` to `apply_to_elastic`. [#133860][#133860] - -[#129448]: https://github.com/cockroachdb/cockroach/pull/129448 -[#129706]: https://github.com/cockroachdb/cockroach/pull/129706 -[#133860]: https://github.com/cockroachdb/cockroach/pull/133860 -[#134516]: https://github.com/cockroachdb/cockroach/pull/134516 -[#134829]: https://github.com/cockroachdb/cockroach/pull/134829 -[#135924]: https://github.com/cockroachdb/cockroach/pull/135924 -[#135945]: https://github.com/cockroachdb/cockroach/pull/135945 -[#136098]: https://github.com/cockroachdb/cockroach/pull/136098 -[#136170]: https://github.com/cockroachdb/cockroach/pull/136170 -[#136718]: https://github.com/cockroachdb/cockroach/pull/136718 -[#137069]: https://github.com/cockroachdb/cockroach/pull/137069 -[#137072]: https://github.com/cockroachdb/cockroach/pull/137072 -[#137080]: https://github.com/cockroachdb/cockroach/pull/137080 -[#137216]: https://github.com/cockroachdb/cockroach/pull/137216 -[#137242]: https://github.com/cockroachdb/cockroach/pull/137242 -[#137251]: https://github.com/cockroachdb/cockroach/pull/137251 -[#137277]: https://github.com/cockroachdb/cockroach/pull/137277 -[#137278]: https://github.com/cockroachdb/cockroach/pull/137278 -[#137299]: https://github.com/cockroachdb/cockroach/pull/137299 -[#137311]: https://github.com/cockroachdb/cockroach/pull/137311 -[#137312]: https://github.com/cockroachdb/cockroach/pull/137312 -[#137361]: https://github.com/cockroachdb/cockroach/pull/137361 -[#137432]: https://github.com/cockroachdb/cockroach/pull/137432 -[#137534]: https://github.com/cockroachdb/cockroach/pull/137534 -[#137548]: https://github.com/cockroachdb/cockroach/pull/137548 -[#137562]: https://github.com/cockroachdb/cockroach/pull/137562 -[#137567]: https://github.com/cockroachdb/cockroach/pull/137567 -[#137618]: https://github.com/cockroachdb/cockroach/pull/137618 -[#137627]: https://github.com/cockroachdb/cockroach/pull/137627 -[#137633]: https://github.com/cockroachdb/cockroach/pull/137633 -[#137641]: https://github.com/cockroachdb/cockroach/pull/137641 -[#137646]: https://github.com/cockroachdb/cockroach/pull/137646 -[#137681]: https://github.com/cockroachdb/cockroach/pull/137681 -[#137744]: https://github.com/cockroachdb/cockroach/pull/137744 -[#137748]: https://github.com/cockroachdb/cockroach/pull/137748 -[#137751]: https://github.com/cockroachdb/cockroach/pull/137751 -[#137752]: https://github.com/cockroachdb/cockroach/pull/137752 -[#137754]: https://github.com/cockroachdb/cockroach/pull/137754 -[#137755]: https://github.com/cockroachdb/cockroach/pull/137755 -[#137831]: https://github.com/cockroachdb/cockroach/pull/137831 -[#137844]: https://github.com/cockroachdb/cockroach/pull/137844 -[#137850]: https://github.com/cockroachdb/cockroach/pull/137850 -[#137860]: https://github.com/cockroachdb/cockroach/pull/137860 -[#137868]: https://github.com/cockroachdb/cockroach/pull/137868 -[#137927]: https://github.com/cockroachdb/cockroach/pull/137927 -[#137928]: https://github.com/cockroachdb/cockroach/pull/137928 -[#137930]: https://github.com/cockroachdb/cockroach/pull/137930 -[#137948]: https://github.com/cockroachdb/cockroach/pull/137948 -[#137960]: https://github.com/cockroachdb/cockroach/pull/137960 -[#137984]: https://github.com/cockroachdb/cockroach/pull/137984 -[#137993]: https://github.com/cockroachdb/cockroach/pull/137993 -[#138043]: https://github.com/cockroachdb/cockroach/pull/138043 -[#138139]: https://github.com/cockroachdb/cockroach/pull/138139 -[05f8645d4]: https://github.com/cockroachdb/cockroach/commit/05f8645d4 -[0c54b58e4]: https://github.com/cockroachdb/cockroach/commit/0c54b58e4 -[0ed446640]: https://github.com/cockroachdb/cockroach/commit/0ed446640 -[17f161901]: https://github.com/cockroachdb/cockroach/commit/17f161901 -[1859d7674]: https://github.com/cockroachdb/cockroach/commit/1859d7674 -[47771b169]: https://github.com/cockroachdb/cockroach/commit/47771b169 -[51b3f09b0]: https://github.com/cockroachdb/cockroach/commit/51b3f09b0 -[7c758d431]: https://github.com/cockroachdb/cockroach/commit/7c758d431 -[876036c5f]: https://github.com/cockroachdb/cockroach/commit/876036c5f -[8cb26df65]: https://github.com/cockroachdb/cockroach/commit/8cb26df65 -[95025dbd5]: https://github.com/cockroachdb/cockroach/commit/95025dbd5 -[9c5816acf]: https://github.com/cockroachdb/cockroach/commit/9c5816acf -[a1de65ee3]: https://github.com/cockroachdb/cockroach/commit/a1de65ee3 -[a8d331eef]: https://github.com/cockroachdb/cockroach/commit/a8d331eef -[ae04da909]: https://github.com/cockroachdb/cockroach/commit/ae04da909 -[ae3ea37f5]: https://github.com/cockroachdb/cockroach/commit/ae3ea37f5 -[aefb58262]: https://github.com/cockroachdb/cockroach/commit/aefb58262 -[c34f407ee]: https://github.com/cockroachdb/cockroach/commit/c34f407ee -[c67e40dbf]: https://github.com/cockroachdb/cockroach/commit/c67e40dbf -[d81743d9b]: https://github.com/cockroachdb/cockroach/commit/d81743d9b -[db826f826]: https://github.com/cockroachdb/cockroach/commit/db826f826 -[e8d19c442]: https://github.com/cockroachdb/cockroach/commit/e8d19c442 -[ef1ff4e15]: https://github.com/cockroachdb/cockroach/commit/ef1ff4e15 +- The default value of cluster setting `kvadmission.flow_control.mode` has been changed from `apply_to_elastic` to `apply_to_all`. Regular writes are now subject to admission control by default, meaning that non-quorum required replicas may not be told about new writes from the leader if they are unable to keep up. This brings a large performance improvement during instances where there is a large backlog of replication work towards a subset of node(s), such as node restarts. The setting can be reverted to the v24.3 and earlier default by setting `kvadmission.flow_control.mode` to `apply_to_elastic`. diff --git a/src/current/_includes/releases/v25.1/v25.1.0-alpha.3.md b/src/current/_includes/releases/v25.1/v25.1.0-alpha.3.md index d31f0793583..057d62d6ddb 100644 --- a/src/current/_includes/releases/v25.1/v25.1.0-alpha.3.md +++ b/src/current/_includes/releases/v25.1/v25.1.0-alpha.3.md @@ -6,7 +6,7 @@ Release Date: January 15, 2025

Backward-incompatible changes

-- Several metrics are redundant and have been removed. The following list maps each removed metric to an existing, identical metric. [#138786][#138786] +- Several metrics are redundant and have been removed. The following list maps each removed metric to an existing, identical metric. - Removed `sql.schema_changer.running`, which is redundant with `jobs.schema_change.currently_running`. - Removed `sql.schema_changer.successes`, which is redundant with `jobs.schema_change.resume_completed`. - Removed `sql.schema_changer.retry_errors`, which is redundant with `jobs.schema_change.resume_retry_error`. @@ -14,59 +14,35 @@ Release Date: January 15, 2025

General changes

-- When changefeeds are created with a resolved option lower than the `min_checkpoint_frequency` option, a notice is now printed, since this may lead to unexpected behavior. [#138181][#138181] -- CockroachDB binaries are now built with profile-guided optimization (PGO) enabled. [#138700][#138700] +- When changefeeds are created with a resolved option lower than the `min_checkpoint_frequency` option, a notice is now printed, since this may lead to unexpected behavior. +- CockroachDB binaries are now built with profile-guided optimization (PGO) enabled.

SQL language changes

-- Users can now always see and control (pause/resume/cancel) jobs that they own. [#138178][#138178] -- CockroachDB now provides different options for `CREATE LOGICALLY REPLICATED TABLE`: `UNIDIRECTIONAL` and `BIDIRECTIONAL ON`. These options are used for `CREATE LOGICALLY REPLICATED TABLE`, but not `CREATE LOGICAL REPLICATION STREAM`. [#138244][#138244] -- `CHANGEFEED`s using named external connections now automatically update their configuration when the connection configuration changes. [#138237][#138237] -- Added support for `DO` statements embedded within PL/pgSQL routines and other `DO` statements. `DO` statements execute a block of code inline as an anonymous function. Currently, only a PL/pgSQL body is allowed. [#138709][#138709] -- Added support for `DO` statements in SQL, which allow a PL/pgSQL code block to be executed inline. [#138709][#138709] +- Users can now always see and control (pause/resume/cancel) jobs that they own. +- CockroachDB now provides different options for `CREATE LOGICALLY REPLICATED TABLE`: `UNIDIRECTIONAL` and `BIDIRECTIONAL ON`. These options are used for `CREATE LOGICALLY REPLICATED TABLE`, but not `CREATE LOGICAL REPLICATION STREAM`. +- `CHANGEFEED`s using named external connections now automatically update their configuration when the connection configuration changes. +- Added support for `DO` statements embedded within PL/pgSQL routines and other `DO` statements. `DO` statements execute a block of code inline as an anonymous function. Currently, only a PL/pgSQL body is allowed. +- Added support for `DO` statements in SQL, which allow a PL/pgSQL code block to be executed inline.

Operational changes

-- If a row-level TTL job is scheduled to run and the previous scheduled job for that table is still running, the scheduled run will now be skipped rather than waiting for the previous job to complete. [#138336][#138336] -- Schema object identifiers (e.g., database names, schema names, table names, and function names) are no longer redacted when logging statements in the `EXEC` or `SQL_SCHEMA` channels. If redaction of these names is required, then the new cluster setting `sql.log.redact_names.enabled` can be set to `true`. The default value of the setting is `false`. [#136897][#136897] -- Object identifiers such as table names, schema names, function names, and type names are no longer redacted in the `SQL_SCHEMA` log channel. [#136897][#136897] -- Changed the default value of the cluster setting `admission.l0_file_count_overload_threshold` to `4000`. [#138699][#138699] -- Introduced a metric, `sql.schema_changer.object_count`, that counts the number of schema objects in the cluster. [#138786][#138786] -- Renamed the `changefeed.min_highwater_advance` cluster setting to `changefeed.resolved_timestamp.min_update_interval` to more accurately reflect its function. Its description in the automatically generated documentation has also been updated. The previous name remains usable for backward compatibility. [#138673][#138673] +- If a row-level TTL job is scheduled to run and the previous scheduled job for that table is still running, the scheduled run will now be skipped rather than waiting for the previous job to complete. +- Schema object identifiers (e.g., database names, schema names, table names, and function names) are no longer redacted when logging statements in the `EXEC` or `SQL_SCHEMA` channels. If redaction of these names is required, then the new cluster setting `sql.log.redact_names.enabled` can be set to `true`. The default value of the setting is `false`. +- Object identifiers such as table names, schema names, function names, and type names are no longer redacted in the `SQL_SCHEMA` log channel. +- Changed the default value of the cluster setting `admission.l0_file_count_overload_threshold` to `4000`. +- Introduced a metric, `sql.schema_changer.object_count`, that counts the number of schema objects in the cluster. +- Renamed the `changefeed.min_highwater_advance` cluster setting to `changefeed.resolved_timestamp.min_update_interval` to more accurately reflect its function. Its description in the automatically generated documentation has also been updated. The previous name remains usable for backward compatibility.

DB Console changes

-- Added a `/debug/pprof/fgprof` endpoint to capture off-CPU stack traces. Use of this endpoint will have a noticeable impact on performance while the endpoint is being triggered. [#138779][#138779] +- Added a `/debug/pprof/fgprof` endpoint to capture off-CPU stack traces. Use of this endpoint will have a noticeable impact on performance while the endpoint is being triggered.

Bug fixes

-- In the v2 **Databases > Table** page, the `CREATE` statement will now show up as expected for tables with custom schema names. [#138294][#138294] -- Fixed issues with the virtual index scan on `crdb_internal.create_type_statements`, ensuring consistent results when querying user-defined types (UDTs) across databases. [#138295][#138295] -- Queries that perform a cast from the string representation of an array containing geometry or geography types to a SQL array type will now succeed. [#138557][#138557] -- Fixed a bug that disregarded tuple labels in some cases. This could cause unexpected behavior, such as when converting a tuple to JSON with `to_jsonb`. See [#136167][#136167] for more details. This incorrect removal of tuple labels bug was introduced in v22.1.0, and changes in v24.3.0 made unexpected behavior due to the bug more likely. [#138791][#138791] +- In the v2 **Databases > Table** page, the `CREATE` statement will now show up as expected for tables with custom schema names. +- Fixed issues with the virtual index scan on `crdb_internal.create_type_statements`, ensuring consistent results when querying user-defined types (UDTs) across databases. +- Queries that perform a cast from the string representation of an array containing geometry or geography types to a SQL array type will now succeed. +- Fixed a bug that disregarded tuple labels in some cases. This could cause unexpected behavior, such as when converting a tuple to JSON with `to_jsonb`. See for more details. This incorrect removal of tuple labels bug was introduced in v22.1.0, and changes in v24.3.0 made unexpected behavior due to the bug more likely. -- Fixed a bug where locks were taken on the system tables `system.users` and `system.role_options` even when `allow_role_memberships_to_change_during_transaction` was set. Now, users are able to create and drop users quickly when `allow_role_memberships_to_change_during_transaction` is set, even if there are contending transactions on `system.users` and `system.role_options`. [#137940][#137940] - -[#136167]: https://github.com/cockroachdb/cockroach/pull/136167 -[#136897]: https://github.com/cockroachdb/cockroach/pull/136897 -[#137750]: https://github.com/cockroachdb/cockroach/pull/137750 -[#137940]: https://github.com/cockroachdb/cockroach/pull/137940 -[#138178]: https://github.com/cockroachdb/cockroach/pull/138178 -[#138181]: https://github.com/cockroachdb/cockroach/pull/138181 -[#138223]: https://github.com/cockroachdb/cockroach/pull/138223 -[#138237]: https://github.com/cockroachdb/cockroach/pull/138237 -[#138244]: https://github.com/cockroachdb/cockroach/pull/138244 -[#138294]: https://github.com/cockroachdb/cockroach/pull/138294 -[#138295]: https://github.com/cockroachdb/cockroach/pull/138295 -[#138332]: https://github.com/cockroachdb/cockroach/pull/138332 -[#138334]: https://github.com/cockroachdb/cockroach/pull/138334 -[#138336]: https://github.com/cockroachdb/cockroach/pull/138336 -[#138343]: https://github.com/cockroachdb/cockroach/pull/138343 -[#138557]: https://github.com/cockroachdb/cockroach/pull/138557 -[#138673]: https://github.com/cockroachdb/cockroach/pull/138673 -[#138699]: https://github.com/cockroachdb/cockroach/pull/138699 -[#138700]: https://github.com/cockroachdb/cockroach/pull/138700 -[#138709]: https://github.com/cockroachdb/cockroach/pull/138709 -[#138779]: https://github.com/cockroachdb/cockroach/pull/138779 -[#138786]: https://github.com/cockroachdb/cockroach/pull/138786 -[#138791]: https://github.com/cockroachdb/cockroach/pull/138791 +- Fixed a bug where locks were taken on the system tables `system.users` and `system.role_options` even when `allow_role_memberships_to_change_during_transaction` was set. Now, users are able to create and drop users quickly when `allow_role_memberships_to_change_during_transaction` is set, even if there are contending transactions on `system.users` and `system.role_options`. diff --git a/src/current/_includes/releases/v25.1/v25.1.0-beta.1.md b/src/current/_includes/releases/v25.1/v25.1.0-beta.1.md index 23b1cdeb832..b400a89988e 100644 --- a/src/current/_includes/releases/v25.1/v25.1.0-beta.1.md +++ b/src/current/_includes/releases/v25.1/v25.1.0-beta.1.md @@ -6,37 +6,22 @@ Release Date: January 20, 2025

General changes

-- CockroachDB binaries are no longer built with profile-guided optimization (PGO) enabled. [#139092][#139092] +- CockroachDB binaries are no longer built with profile-guided optimization (PGO) enabled.

SQL language changes

- When you run `CREATE LOGICALLY REPLICATED TABLE`, you must specify one of the following options: - `UNIDIRECTIONAL`: Sets up a unidirectional stream with fast initial scan. - - `BIDIRECTIONAL ON {destination uri}`: Sets up a bidirectional stream from the original destination to the original source. [#138297][#138297] -- Logical data replication (LDR) and physical cluster replication (PCR) may now use the `crdb_route=gateway` query option to route the replication streams over a load balancer. [#138697][#138697] -- Updated the column name `description` to `command` in the `SHOW LOGICAL REPLICATION JOBS` responses. [#139030][#139030] + - `BIDIRECTIONAL ON {destination uri}`: Sets up a bidirectional stream from the original destination to the original source. +- Logical data replication (LDR) and physical cluster replication (PCR) may now use the `crdb_route=gateway` query option to route the replication streams over a load balancer. +- Updated the column name `description` to `command` in the `SHOW LOGICAL REPLICATION JOBS` responses.

Operational changes

-- The `node decommission` CLI command now waits until the target node is fully drained before marking it as decommissioned. Previously, the command would initiate the drain process but not wait for its completion, leaving the target node in a state where it could not communicate with the cluster but would still accept client requests, causing them to hang or encounter unexpected errors. [#138732][#138732] -- The cluster setting `changefeed.frontier_highwater_lag_checkpoint_threshold` has been renamed to `changefeed.span_checkpoint.lag_threshold`. The previous name is still available for backward compatibility. [#139064][#139064] +- The `node decommission` CLI command now waits until the target node is fully drained before marking it as decommissioned. Previously, the command would initiate the drain process but not wait for its completion, leaving the target node in a state where it could not communicate with the cluster but would still accept client requests, causing them to hang or encounter unexpected errors. +- The cluster setting `changefeed.frontier_highwater_lag_checkpoint_threshold` has been renamed to `changefeed.span_checkpoint.lag_threshold`. The previous name is still available for backward compatibility.

Bug fixes

-- Fixed a bounded memory leak that could occur when evaluating some memory-intensive queries using the vectorized engine. This leak had been present since v20.2. [#138804][#138804] -- Fixed a bug where columns created with `GENERATED ... BY IDENTITY` with the `SERIAL` type could incorrectly fail internal validations. [#139084][#139084] - -[#136879]: https://github.com/cockroachdb/cockroach/pull/136879 -[#137319]: https://github.com/cockroachdb/cockroach/pull/137319 -[#138283]: https://github.com/cockroachdb/cockroach/pull/138283 -[#138297]: https://github.com/cockroachdb/cockroach/pull/138297 -[#138697]: https://github.com/cockroachdb/cockroach/pull/138697 -[#138732]: https://github.com/cockroachdb/cockroach/pull/138732 -[#138804]: https://github.com/cockroachdb/cockroach/pull/138804 -[#138849]: https://github.com/cockroachdb/cockroach/pull/138849 -[#139030]: https://github.com/cockroachdb/cockroach/pull/139030 -[#139041]: https://github.com/cockroachdb/cockroach/pull/139041 -[#139042]: https://github.com/cockroachdb/cockroach/pull/139042 -[#139064]: https://github.com/cockroachdb/cockroach/pull/139064 -[#139084]: https://github.com/cockroachdb/cockroach/pull/139084 -[#139092]: https://github.com/cockroachdb/cockroach/pull/139092 +- Fixed a bounded memory leak that could occur when evaluating some memory-intensive queries using the vectorized engine. This leak had been present since v20.2. +- Fixed a bug where columns created with `GENERATED ... BY IDENTITY` with the `SERIAL` type could incorrectly fail internal validations. diff --git a/src/current/_includes/releases/v25.1/v25.1.0-beta.2.md b/src/current/_includes/releases/v25.1/v25.1.0-beta.2.md index 139dce7dc5c..b355dbf74c7 100644 --- a/src/current/_includes/releases/v25.1/v25.1.0-beta.2.md +++ b/src/current/_includes/releases/v25.1/v25.1.0-beta.2.md @@ -6,32 +6,23 @@ Release Date: January 27, 2025

SQL language changes

-- `DROP INDEX` is now labeled a [potentially unsafe SQL statement]({% link v25.1/cockroach-sql.md %}#allow-potentially-unsafe-sql-statements), so it can only be run when the `sql_safe_updates` session variable or `--safe_updates` flag is set to `false`. [#139505][#139505] -- `SHOW JOBS` is now based on a new mechanism for storing information about the progress and status of running jobs. [#139230][#139230] -- `SHOW TENANT WITH REPLICATION STATUS` now includes an `ingestion_job_id` column that displays the ID of the Physical Cluster Replication (PCR) [ingestion job]({% link v25.1/physical-cluster-replication-monitoring.md %}). [#139275][#139275] +- `DROP INDEX` is now labeled a [potentially unsafe SQL statement]({% link v25.1/cockroach-sql.md %}#allow-potentially-unsafe-sql-statements), so it can only be run when the `sql_safe_updates` session variable or `--safe_updates` flag is set to `false`. +- `SHOW JOBS` is now based on a new mechanism for storing information about the progress and status of running jobs. +- `SHOW TENANT WITH REPLICATION STATUS` now includes an `ingestion_job_id` column that displays the ID of the Physical Cluster Replication (PCR) [ingestion job]({% link v25.1/physical-cluster-replication-monitoring.md %}).

Operational changes

-- Customers must pass URIs as [external connections]({% link v25.1/create-external-connection.md %}) when [setting up Logical Data Replication (LDR)]({% link v25.1/set-up-logical-data-replication.md %}). [#139506][#139506] +- Customers must pass URIs as [external connections]({% link v25.1/create-external-connection.md %}) when [setting up Logical Data Replication (LDR)]({% link v25.1/set-up-logical-data-replication.md %}).

DB Console changes

-- The DB Console Cluster Settings page now uses the same redaction logic as `SHOW CLUSTER SETTINGS` when the setting [`server.redact_sensitive_settings.enabled`]({% link v25.1/cluster-settings.md %}#setting-server-redact-sensitive-settings-enabled) is set to `true`. [#139277][#139277] -- The [Overload dashboard]({% link v25.1/ui-overload-dashboard.md %}) in DB Console now displays only V2 Replication Admission Control metrics and omits their previous V2 prefix. Previously, both V1 and V2 metrics were displayed. Additionally, the aggregate size of queued replication entries is now displayed. [#139566][#139566] +- The DB Console Cluster Settings page now uses the same redaction logic as `SHOW CLUSTER SETTINGS` when the setting [`server.redact_sensitive_settings.enabled`]({% link v25.1/cluster-settings.md %}#setting-server-redact-sensitive-settings-enabled) is set to `true`. +- The [Overload dashboard]({% link v25.1/ui-overload-dashboard.md %}) in DB Console now displays only V2 Replication Admission Control metrics and omits their previous V2 prefix. Previously, both V1 and V2 metrics were displayed. Additionally, the aggregate size of queued replication entries is now displayed.

Bug fixes

-- Fixed a bug where the error "batch timestamp T must be after replica GC threshold" could occur during a schema change backfill operation, and cause the schema change job to retry infinitely. Now this error is treated as permanent, and will cause the job to enter the failed state. [#139251][#139251] +- Fixed a bug where the error "batch timestamp T must be after replica GC threshold" could occur during a schema change backfill operation, and cause the schema change job to retry infinitely. Now this error is treated as permanent, and will cause the job to enter the failed state.

Performance improvements

-- The cluster setting `rpc.batch_stream_pool.enabled` now defaults to `false`. This supersedes an earlier release note. This cluster setting is experimental and is not listed as `public`. [#139481][#139481] - -[#139230]: https://github.com/cockroachdb/cockroach/pull/139230 -[#139251]: https://github.com/cockroachdb/cockroach/pull/139251 -[#139275]: https://github.com/cockroachdb/cockroach/pull/139275 -[#139277]: https://github.com/cockroachdb/cockroach/pull/139277 -[#139481]: https://github.com/cockroachdb/cockroach/pull/139481 -[#139505]: https://github.com/cockroachdb/cockroach/pull/139505 -[#139506]: https://github.com/cockroachdb/cockroach/pull/139506 -[#139566]: https://github.com/cockroachdb/cockroach/pull/139566 +- The cluster setting `rpc.batch_stream_pool.enabled` now defaults to `false`. This supersedes an earlier release note. This cluster setting is experimental and is not listed as `public`. diff --git a/src/current/_includes/releases/v25.1/v25.1.0-beta.3.md b/src/current/_includes/releases/v25.1/v25.1.0-beta.3.md index 53f105b3244..77ad754a9bf 100644 --- a/src/current/_includes/releases/v25.1/v25.1.0-beta.3.md +++ b/src/current/_includes/releases/v25.1/v25.1.0-beta.3.md @@ -6,23 +6,17 @@ Release Date: February 3, 2025

Operational changes

-- Reduced noise when using dynamically provisioned logging sinks. [#139644][#139644] +- Reduced noise when using dynamically provisioned logging sinks. - Added new metrics for monitoring changefeed span-level checkpoint creation: - `changefeed.checkpoint.create_nanos`, which measures the time it takes to create a changefeed checkpoint. - `changefeed.checkpoint.total_bytes`, which measures the total size of a changefeed checkpoint in bytes. - - `changefeed.checkpoint.span_count`, which measures the number of spans in a changefeed checkpoint. [#139707][#139707] + - `changefeed.checkpoint.span_count`, which measures the number of spans in a changefeed checkpoint.

Command-line changes

-- Improved the performance of the debug zip query that collects `transaction_contention_events` data, which reduces the chance of `"memory budget exceeded"` or `"query execution canceled due to statement timeout"` errors. [#139755][#139755] +- Improved the performance of the debug zip query that collects `transaction_contention_events` data, which reduces the chance of `"memory budget exceeded"` or `"query execution canceled due to statement timeout"` errors.

Bug fixes

-- Fixed a bug where sometimes activating diagnostics for SQL activity appears unresponsive, with no state or status update upon activating. Now, the status should always reflect that diagnostics are active, or that a statement bundle is downloadable. [#139587][#139587] -- Fixed a bug where the `plan.txt` file would be incomplete whenever CockroachDB collected a statement bundle with plan-gist-based matching. The bug had been present since the introduction of plan-gist-based matching feature in v23.1, but was partially addressed in v24.2. [#139268][#139268] - -[#139268]: https://github.com/cockroachdb/cockroach/pull/139268 -[#139587]: https://github.com/cockroachdb/cockroach/pull/139587 -[#139644]: https://github.com/cockroachdb/cockroach/pull/139644 -[#139707]: https://github.com/cockroachdb/cockroach/pull/139707 -[#139755]: https://github.com/cockroachdb/cockroach/pull/139755 +- Fixed a bug where sometimes activating diagnostics for SQL activity appears unresponsive, with no state or status update upon activating. Now, the status should always reflect that diagnostics are active, or that a statement bundle is downloadable. +- Fixed a bug where the `plan.txt` file would be incomplete whenever CockroachDB collected a statement bundle with plan-gist-based matching. The bug had been present since the introduction of plan-gist-based matching feature in v23.1, but was partially addressed in v24.2. diff --git a/src/current/_includes/releases/v25.1/v25.1.0-rc.1.md b/src/current/_includes/releases/v25.1/v25.1.0-rc.1.md index 125ade072bc..e7bb6ca8b22 100644 --- a/src/current/_includes/releases/v25.1/v25.1.0-rc.1.md +++ b/src/current/_includes/releases/v25.1/v25.1.0-rc.1.md @@ -14,36 +14,20 @@ Release Date: February 10, 2025 ``` ALTER ROLE ALL SET autocommit_before_ddl = false; ``` - [#140156][#140156] +

SQL language changes

-- Since v23.2, table statistics histograms have been collected for non-indexed JSON columns. Histograms are no longer collected for these columns. This reduces memory usage during table statistics collection, for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`. The previous behavior can be re-enabled by setting the cluster setting `sql.stats.non_indexed_json_histograms.enabled` to `true`. [#139898][#139898] -- Added the session setting `optimizer_prefer_bounded_cardinality` which instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. This may help the optimizer produce better query plans in some cases. This setting is disabled by default. [#140245][#140245] -- Added the session setting `optimizer_min_row_count` which sets a lower bound on row-count estimates for relational expressions during query planning. A value of zero, which is the default, indicates no lower bound. Note that if this is set to a value greater than zero, a row count of zero can still be estimated for expressions with a cardinality of zero, e.g., for a contradictory filter. Setting this to a value higher than 0, such as 1, may yield better query plans in some cases, such as when statistics are frequently stale and inaccurate. [#140245][#140245] -- Fixed a bug existing only in testing releases of v25.1 that could cause unexpected errors during planning for `VALUES` expressions containing function calls with multiple overloads. [#140306][#140306] -- The default setting for `plan_cache_mode` has been reverted to `force_custom_plan`, after being changed to `auto` in a [prior testing release]({% link releases/v25.1.md %}#v25-1-0-alpha-1). You can disregard the [previous release note]({% link releases/v25.1.md %}#v25-1-0-alpha-1-performance-improvements). [#140405][#140405] +- Since v23.2, table statistics histograms have been collected for non-indexed JSON columns. Histograms are no longer collected for these columns. This reduces memory usage during table statistics collection, for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`. The previous behavior can be re-enabled by setting the cluster setting `sql.stats.non_indexed_json_histograms.enabled` to `true`. +- Added the session setting `optimizer_prefer_bounded_cardinality` which instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. This may help the optimizer produce better query plans in some cases. This setting is disabled by default. +- Added the session setting `optimizer_min_row_count` which sets a lower bound on row-count estimates for relational expressions during query planning. A value of zero, which is the default, indicates no lower bound. Note that if this is set to a value greater than zero, a row count of zero can still be estimated for expressions with a cardinality of zero, e.g., for a contradictory filter. Setting this to a value higher than 0, such as 1, may yield better query plans in some cases, such as when statistics are frequently stale and inaccurate. +- Fixed a bug existing only in testing releases of v25.1 that could cause unexpected errors during planning for `VALUES` expressions containing function calls with multiple overloads. +- The default setting for `plan_cache_mode` has been reverted to `force_custom_plan`, after being changed to `auto` in a [prior testing release]({% link releases/v25.1.md %}#v25-1-0-alpha-1). You can disregard the [previous release note]({% link releases/v25.1.md %}#v25-1-0-alpha-1-performance-improvements).

Bug fixes

-- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `batch timestamp ... must be after replica GC threshold` error. [#140078][#140078] -- Fixed a bug existing only in testing releases of v25.1 that could cause the creation of a PL/pgSQL routine with a CTE to fail with an error similar to: `unexpected root expression: with`. [#140145][#140145] -- Fixed a rare bug in which a query might fail with error `could not find computed column expression for column ... in table` while dropping a virtual computed column from the table. This bug was introduced in v23.2.4. [#139834][#139834] -- Configuring replication controls on a partition name of an index that is not unique across all indexes will now correctly impact only that partition. [#140293][#140293] -- The Data Distribution page in Advanced Debug will no longer crash if there are `NULL` values for `raw_sql_config` in `crdb_internal.zones`. [#140609][#140609] - -[#139834]: https://github.com/cockroachdb/cockroach/pull/139834 -[#139898]: https://github.com/cockroachdb/cockroach/pull/139898 -[#140078]: https://github.com/cockroachdb/cockroach/pull/140078 -[#140089]: https://github.com/cockroachdb/cockroach/pull/140089 -[#140145]: https://github.com/cockroachdb/cockroach/pull/140145 -[#140156]: https://github.com/cockroachdb/cockroach/pull/140156 -[#140245]: https://github.com/cockroachdb/cockroach/pull/140245 -[#140252]: https://github.com/cockroachdb/cockroach/pull/140252 -[#140293]: https://github.com/cockroachdb/cockroach/pull/140293 -[#140306]: https://github.com/cockroachdb/cockroach/pull/140306 -[#140405]: https://github.com/cockroachdb/cockroach/pull/140405 -[#140609]: https://github.com/cockroachdb/cockroach/pull/140609 -[2ea91e321]: https://github.com/cockroachdb/cockroach/commit/2ea91e321 -[62c075413]: https://github.com/cockroachdb/cockroach/commit/62c075413 -[76944423e]: https://github.com/cockroachdb/cockroach/commit/76944423e +- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `batch timestamp ... must be after replica GC threshold` error. +- Fixed a bug existing only in testing releases of v25.1 that could cause the creation of a PL/pgSQL routine with a CTE to fail with an error similar to: `unexpected root expression: with`. +- Fixed a rare bug in which a query might fail with error `could not find computed column expression for column ... in table` while dropping a virtual computed column from the table. This bug was introduced in v23.2.4. +- Configuring replication controls on a partition name of an index that is not unique across all indexes will now correctly impact only that partition. +- The Data Distribution page in Advanced Debug will no longer crash if there are `NULL` values for `raw_sql_config` in `crdb_internal.zones`. diff --git a/src/current/_includes/releases/v25.1/v25.1.0.md b/src/current/_includes/releases/v25.1/v25.1.0.md index bfb6205b994..d455f24d031 100644 --- a/src/current/_includes/releases/v25.1/v25.1.0.md +++ b/src/current/_includes/releases/v25.1/v25.1.0.md @@ -94,5 +94,3 @@ Docs | [Architecture Overview](https://www.cockroachlabs.com/doc Docs | [SQL Feature Support]({% link v25.1/sql-feature-support.md %}) | The page summarizes the standard SQL features CockroachDB supports as well as common extensions to the standard. Docs | [Change Data Capture Overview]({% link v25.1/change-data-capture-overview.md %}) | This page summarizes CockroachDB's data streaming capabilities. Change data capture (CDC) provides efficient, distributed, row-level changefeeds into a configurable sink for downstream processing such as reporting, caching, or full-text indexing. Docs | [Backup Architecture]({% link v25.1/backup-architecture.md %}) | This page describes the backup job workflow with a high-level overview, diagrams, and more details on each phase of the job. - -[#115166]: https://github.com/cockroachdb/cockroach/pull/115166 diff --git a/src/current/_includes/releases/v25.1/v25.1.1.md b/src/current/_includes/releases/v25.1/v25.1.1.md index 6be1de3139a..71fc5e2c8e1 100644 --- a/src/current/_includes/releases/v25.1/v25.1.1.md +++ b/src/current/_includes/releases/v25.1/v25.1.1.md @@ -7,7 +7,3 @@ Release Date: March 12, 2025

Bug fixes

- Improved S3 credential caching for STS credentials to avoid exceeding the Amazon metadata service rate limit and encountering errors related to AssumeRole API calls when accessing large numbers of files in larger clusters. - [#142677][#142677] - - -[#142677]: https://github.com/cockroachdb/cockroach/pull/142677 diff --git a/src/current/_includes/releases/v25.1/v25.1.10.md b/src/current/_includes/releases/v25.1/v25.1.10.md index 1d8c980475c..38ad2d9ff18 100644 --- a/src/current/_includes/releases/v25.1/v25.1.10.md +++ b/src/current/_includes/releases/v25.1/v25.1.10.md @@ -7,7 +7,3 @@ Release Date: August 1, 2025

Bug fixes

- Fixed a bug that could cause some errors returned by attempts to upload backup data to external storage providers to be undetected, potentially causing incomplete backups. - [#151097][#151097] - - -[#151097]: https://github.com/cockroachdb/cockroach/pull/151097 diff --git a/src/current/_includes/releases/v25.1/v25.1.2.md b/src/current/_includes/releases/v25.1/v25.1.2.md index fb6e996df62..9eb40777ab5 100644 --- a/src/current/_includes/releases/v25.1/v25.1.2.md +++ b/src/current/_includes/releases/v25.1/v25.1.2.md @@ -7,46 +7,31 @@ Release Date: March 12, 2025

SQL language changes

- Added the `optimizer_check_input_min_row_count` session setting to control the minimum row count estimate for buffer scans of foreign key and uniqueness checks. It defaults to `0`. - [#141374][#141374] +

DB Console changes

- The **Paused Follower** graph has been removed from the **Replication Dashboard** in DB Console because followers are no longer paused by default in CockroachDB v25.1 and later. - [#141502][#141502] +

Bug fixes

- Fixed a bug that prevented starting multi-table logical data replication (LDR) streams on tables that contained user-defined types. - [#141643][#141643] + - Fixed a bug where dropping a table with a trigger using the legacy schema changer could leave an orphaned reference in the descriptor. This issue occurred when two tables depended on each other via a trigger, and the table containing the trigger was dropped. - [#141181][#141181] + - Fixed a bug that could cause the upgrade to v25.1 to crash if a job was missing from the virtual table, such as when a malformed job had no payload information. - [#142312][#142312] + - A step in the v25.1 upgrade finalization process that required backfilling jobs now uses locks to ensure it makes progress even when there is contention on the jobs table, which prevents the possibility of becoming stuck under heavy load. - [#141460][#141460] + - Fixed a bug that could cause concurrent DML statements to prevent primary key changes from succeeding. - [#141383][#141383] + - Fixed a bug that could cause gateway nodes to panic when performing an `UPSERT` on a table with a `BOOL` primary key column and a partial index where the primary key column is used as the predicate expression. - [#141822][#141822] + - Fixed a bug that could cause `SHOW CREATE TABLE` to fail if a database was offline (e.g., due to a `RESTORE` on that database). - [#141505][#141505] + - Fixed a bug that prevented transaction retry errors encountered during implicit transactions from being automatically retried internally if the `autocommit_before_ddl` session variable was enabled and the statement was a schema change. - [#141393][#141393] + - Fixed a bug that could cause `nil pointer dereference` errors when executing statements with user-defined functions (UDFs) or certain built-in functions, such as `obj_description`. - [#141653][#141653] + - Improved S3 credential caching for STS credentials to avoid exceeding the Amazon metadata service rate limit and encountering errors related to AssumeRole API calls when accessing large numbers of files in larger clusters. - [#142690][#142690] - - -[#142690]: https://github.com/cockroachdb/cockroach/pull/142690 -[#141502]: https://github.com/cockroachdb/cockroach/pull/141502 -[#141643]: https://github.com/cockroachdb/cockroach/pull/141643 -[#141181]: https://github.com/cockroachdb/cockroach/pull/141181 -[#142312]: https://github.com/cockroachdb/cockroach/pull/142312 -[#141460]: https://github.com/cockroachdb/cockroach/pull/141460 -[#141505]: https://github.com/cockroachdb/cockroach/pull/141505 -[#141653]: https://github.com/cockroachdb/cockroach/pull/141653 -[#141374]: https://github.com/cockroachdb/cockroach/pull/141374 -[#141383]: https://github.com/cockroachdb/cockroach/pull/141383 -[#141822]: https://github.com/cockroachdb/cockroach/pull/141822 -[#141393]: https://github.com/cockroachdb/cockroach/pull/141393 diff --git a/src/current/_includes/releases/v25.1/v25.1.3.md b/src/current/_includes/releases/v25.1/v25.1.3.md index 4ecfdd67e6f..b5dbf4dbe5e 100644 --- a/src/current/_includes/releases/v25.1/v25.1.3.md +++ b/src/current/_includes/releases/v25.1/v25.1.3.md @@ -7,89 +7,62 @@ Release Date: April 2, 2025

General changes

- When changefeeds are created with a `resolved` option lower than the `min_checkpoint_frequency` option, a message was printed to inform the user. This message is now a notice, and includes extra information if either option was a default. - [#142154][#142154] +

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. - [#142746][#142746] + - Added the `sql.statement_timeout.count` metric to track the number of SQL statements that fail due to exceeding the statement timeout. - [#142155][#142155] + - Added the `sql.transaction_timeout.count` metric to track the number of SQL statements that fail due to exceeding the transaction timeout. - [#142155][#142155] +

Bug fixes

- Fixed a crash due to `use of enum metadata before hydration` when using logical data replication (LDR) with user-defined types. - [#143388][#143388] + - Fixed an issue where dropping a database with triggers could fail due to an undropped backreference to a trigger function. - [#142727][#142727] + - Fixed a bug in `v24.1.14`, `v24.3.7`, `v24.3.8`, and `v25.1` that could cause a nil-pointer error when a column's default expression contained a volatile expression (like `nextval`) as a UDF argument. - [#143632][#143632] + - A step in the 25.1 upgrade finalization process that required backfilling jobs now uses locks to ensure it makes progress even when there is contention on the jobs table to prevent the possibility of becoming stuck under heavy load. - [#142223][#142223] + - Fixed a bug where the declarative schema changer allowed `CREATE SEQUENCE` operations to proceed even while a `DROP SCHEMA` or `DROP DATABASE` was in progress. Such operations now retry if the parent object has a schema change in progress, preventing new child objects from being created under deleted parent objects. - [#142764][#142764] + - 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] + - Fixed a bug that would prevent `CREATE TRIGGER` and `DROP TRIGGER` statements from working if the `autocommit_before_ddl` setting was enabled, and if the statement was either sent as a prepared statement or as part of a batch of multiple statements. - [#142302][#142302] + - Fixed a bug where CockroachDB could incorrectly evaluate casts to some OID types (like `REGCLASS`) in some cases. The bug had been present since at least v22.1. - [#141956][#141956] + - Fixed a bug where replication controls on indexes and partitions would not get properly updated with their new IDs during index backfills, effectively discarding the replication controls set on them before the backfill. - [#142844][#142844] + - 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. - [#142938][#142938] + - 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. Also 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. - [#142324][#142324] + - Fixed a bug where the fraction completed and internal checkpoints during an index backfill operation would stop getting written if any of the periodic fraction/checkpoint write operations failed. Additional logging was added so that progress is logged in addition to being written to the job record. This bug affected schema change operations such as creating an index or adding a non-nullable column to a table. - [#141788][#141788] + - 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. - [#142980][#142980] + - 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 information. - [#142311][#142311] + - 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. - [#142865][#142865] + - Fixed a bug in client certificate expiration metrics, `security.certificate.expiration.client` and `security.certificate.ttl.client`. - [#142916][#142916] + - Fixed a bug where a node that was drained as part of decommissioning may have interrupted SQL connections that were still active during drain (and for which drain would have been expected to wait). - [#141769][#141769] + - Physical Cluster Replication (PCR) reader catalogs could have orphaned rows in `system.namespace` after an object is renamed. - [#142872][#142872] +

Miscellaneous

- Updated the `CREATE TRIGGER` `only implemented in the declarative schema changer` error message to include a helpful suggestion and link to relevant docs. - [#141872][#141872] + - 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. - [#142834][#142834] + - 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. - [#142834][#142834] + - Improved S3 credential caching for STS credentials to avoid exceeding the Amazon metadata service rate limit and encountering errors related to AssumeRole API calls when accessing large numbers of files in larger clusters. - [#142438][#142438] - - -[#142223]: https://github.com/cockroachdb/cockroach/pull/142223 -[#141788]: https://github.com/cockroachdb/cockroach/pull/141788 -[#142311]: https://github.com/cockroachdb/cockroach/pull/142311 -[#141769]: https://github.com/cockroachdb/cockroach/pull/141769 -[#141872]: https://github.com/cockroachdb/cockroach/pull/141872 -[#142438]: https://github.com/cockroachdb/cockroach/pull/142438 -[#142154]: https://github.com/cockroachdb/cockroach/pull/142154 -[#142155]: https://github.com/cockroachdb/cockroach/pull/142155 -[#142302]: https://github.com/cockroachdb/cockroach/pull/142302 -[#141956]: https://github.com/cockroachdb/cockroach/pull/141956 -[#142324]: https://github.com/cockroachdb/cockroach/pull/142324 -[#142980]: https://github.com/cockroachdb/cockroach/pull/142980 -[#142746]: https://github.com/cockroachdb/cockroach/pull/142746 -[#143632]: https://github.com/cockroachdb/cockroach/pull/143632 -[#142865]: https://github.com/cockroachdb/cockroach/pull/142865 -[#142916]: https://github.com/cockroachdb/cockroach/pull/142916 -[#142872]: https://github.com/cockroachdb/cockroach/pull/142872 -[#142834]: https://github.com/cockroachdb/cockroach/pull/142834 -[#141851]: https://github.com/cockroachdb/cockroach/pull/141851 -[#142844]: https://github.com/cockroachdb/cockroach/pull/142844 -[#142764]: https://github.com/cockroachdb/cockroach/pull/142764 -[#142938]: https://github.com/cockroachdb/cockroach/pull/142938 -[#143388]: https://github.com/cockroachdb/cockroach/pull/143388 -[#142727]: https://github.com/cockroachdb/cockroach/pull/142727 diff --git a/src/current/_includes/releases/v25.1/v25.1.4.md b/src/current/_includes/releases/v25.1/v25.1.4.md index 63b2e689f44..2530fd0fda3 100644 --- a/src/current/_includes/releases/v25.1/v25.1.4.md +++ b/src/current/_includes/releases/v25.1/v25.1.4.md @@ -7,7 +7,3 @@ Release Date: April 9, 2025

Bug fixes

- 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. - [#144059][#144059] - - -[#144059]: https://github.com/cockroachdb/cockroach/pull/144059 diff --git a/src/current/_includes/releases/v25.1/v25.1.5.md b/src/current/_includes/releases/v25.1/v25.1.5.md index 0d31ec07561..f662f146ca5 100644 --- a/src/current/_includes/releases/v25.1/v25.1.5.md +++ b/src/current/_includes/releases/v25.1/v25.1.5.md @@ -6,6 +6,4 @@ Release Date: April 28, 2025

Bug fixes

-- Fixed a rare corruption bug that impacts import and materialized views. [#144662][#144662] - -[#144662]: https://github.com/cockroachdb/cockroach/pull/144662 +- Fixed a rare corruption bug that impacts import and materialized views. diff --git a/src/current/_includes/releases/v25.1/v25.1.6.md b/src/current/_includes/releases/v25.1/v25.1.6.md index 1c4579338be..a8cb8b9a9b3 100644 --- a/src/current/_includes/releases/v25.1/v25.1.6.md +++ b/src/current/_includes/releases/v25.1/v25.1.6.md @@ -7,73 +7,52 @@ Release Date: April 30th, 2025

SQL language changes

- Added the `WITH IGNORE_FOREIGN_KEYS` option to `SHOW CREATE TABLE` which omits foreign key constraints from the output schema. This option is also allowed in `SHOW CREATE VIEW`, but has no effect. It cannot be combined with the `WITH REDACT` option. - [#142161][#142161] + - `EXPLAIN ANALYZE` statements now display the number of transaction retries and time spent retrying, if non-zero, in the plan output. - [#142928][#142928] + - 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. - [#143895][#143895] +

Operational changes

- 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. - [#142906][#142906] + - 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. - [#143729][#143729] +

Bug fixes

- Previously, fast failback for physical cluster replication (PCR) could succeed even if the destination cluster protected timestamp had been removed, causing the reverse stream to enter a crashing loop. This fix ensures the failback command fast fails. - [#142922][#142922] + - 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 virtual_cluster ON physical_cluster WITH READ VIRTUAL CLUSTER`. - [#143141][#143141] + - Fixed a bug that caused changefeeds to fail on startup when scanning a single key. - [#143150][#143150] + - 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. - [#143277][#143277] + - 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. - [#143290][#143290] + - 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. - [#143315][#143315] + - Fixed a crash due to `use of enum metadata before hydration` when using logical data replication (LDR) with user-defined types. - [#143373][#143373] + - 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. - [#143520][#143520] + - Fixed a bug in `v24.1.14`, `v24.3.7`, `v24.3.8`, and `v25.1` that could cause a nil-pointer error when a column's default expression contained a volatile expression (like `nextval`) as a UDF argument. - [#143634][#143634] + - 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. - [#143729][#143729] + - 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. - [#143794][#143794] + - 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. - [#143853][#143853] + - Fixed a bug where CockroachDB could encounter a `cannot specify timestamp older than ...` error during table statistics collection in some cases (e.g., when the cluster is overloaded). The bug was present since v19.1. - [#144018][#144018] + - 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. - [#144031][#144031] + - Fixed a bug that could lead to a node stall. - [#146410][#146410] +

Performance improvements

- Schema changes that require data to be backfilled no longer hold a protected timestamp for the entire duration of the backfill; this means there is less overhead caused by MVCC garbage collection after the backfill completes. - [#143520][#143520] - -[#142928]: https://github.com/cockroachdb/cockroach/pull/142928 -[#143729]: https://github.com/cockroachdb/cockroach/pull/143729 -[#143277]: https://github.com/cockroachdb/cockroach/pull/143277 -[#143853]: https://github.com/cockroachdb/cockroach/pull/143853 -[#144018]: https://github.com/cockroachdb/cockroach/pull/144018 -[#144031]: https://github.com/cockroachdb/cockroach/pull/144031 -[#143895]: https://github.com/cockroachdb/cockroach/pull/143895 -[#143141]: https://github.com/cockroachdb/cockroach/pull/143141 -[#143150]: https://github.com/cockroachdb/cockroach/pull/143150 -[#143290]: https://github.com/cockroachdb/cockroach/pull/143290 -[#143373]: https://github.com/cockroachdb/cockroach/pull/143373 -[#142161]: https://github.com/cockroachdb/cockroach/pull/142161 -[#142906]: https://github.com/cockroachdb/cockroach/pull/142906 -[#142922]: https://github.com/cockroachdb/cockroach/pull/142922 -[#143315]: https://github.com/cockroachdb/cockroach/pull/143315 -[#143520]: https://github.com/cockroachdb/cockroach/pull/143520 -[#143634]: https://github.com/cockroachdb/cockroach/pull/143634 -[#143794]: https://github.com/cockroachdb/cockroach/pull/143794 -[#146410]: https://github.com/cockroachdb/cockroach/pull/146410 \ No newline at end of file diff --git a/src/current/_includes/releases/v25.1/v25.1.7.md b/src/current/_includes/releases/v25.1/v25.1.7.md index 2b105097149..e99c6339bf7 100644 --- a/src/current/_includes/releases/v25.1/v25.1.7.md +++ b/src/current/_includes/releases/v25.1/v25.1.7.md @@ -7,72 +7,49 @@ Release Date: May 28, 2025

DB Console changes

- 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. - [#145989][#145989] +

Operational changes

- SQL queries run on the source cluster by logical data replication (LDR) and physical cluster replication (PCR) will now account to internal metrics like `sql.statements.active.internal` instead of metrics like `sql.statements.active` that are used to monitor application workload. - [#145110][#145110] +

Bug fixes

- Fixed a bug where using values `changefeed.aggregator.flush_jitter` and `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. - [#144426][#144426] + - 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. - [#144655][#144655] + - 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. - [#144766][#144766] -- Fixed a bug that could potentially cause a changefeed to erroneously complete when one of its watched tables encounters a schema change. [#144779][#144779] -- Fixed a bug where the **Schedules** page displayed only a subset of a cluster's schedules. The **Schedules** page now correctly displays all schedules. [#144806][#144806] + +- Fixed a bug that could potentially cause a changefeed to erroneously complete when one of its watched tables encounters a schema change. +- 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. - [#144806][#144806] + - Fixed a bug in the **SQL Activity Statements** page where filtering by **Statement Type** returned no results. The filter now works as expected. - [#144852][#144852] + - Improve the performance of `SHOW CREATE TABLE` on multi-region databases with large numbers of objects. - [#145070][#145070] + - 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. - [#145371][#145371] + - 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. - [#145384][#145384] + - Fixed a bug that could lead to schema changes hanging after a cluster recovered from availability issues. - [#145544][#145544] + - 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. - [#145575][#145575] + - 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. - [#145916][#145916] + - 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). - [#145998][#145998] + - Fixed a bug where orphaned leases were not properly cleaned up. - [#146088][#146088] + - Fixed an internal assertion failure that could occur during operations like `ALTER TYPE` or `ALTER DATABASE ... ADD REGION` when temporary tables were present. - [#146197][#146197] + - 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. - [#146325][#146325] + - Fixed a bug that could lead to a node stall. - [#146408][#146408] + - Fixed a bug where an invalid comment in the `system.comment` table for a schema object could make it inacessible. - [#146417][#146417] + - Fixed a rare corruption bug that impacts import and materialized views. - [#144662][#144662] - -[#146325]: https://github.com/cockroachdb/cockroach/pull/146325 -[#146408]: https://github.com/cockroachdb/cockroach/pull/146408 -[#144852]: https://github.com/cockroachdb/cockroach/pull/144852 -[#145575]: https://github.com/cockroachdb/cockroach/pull/145575 -[#144766]: https://github.com/cockroachdb/cockroach/pull/144766 -[#144779]: https://github.com/cockroachdb/cockroach/pull/144779 -[#144806]: https://github.com/cockroachdb/cockroach/pull/144806 -[#145384]: https://github.com/cockroachdb/cockroach/pull/145384 -[#145544]: https://github.com/cockroachdb/cockroach/pull/145544 -[#145916]: https://github.com/cockroachdb/cockroach/pull/145916 -[#145989]: https://github.com/cockroachdb/cockroach/pull/145989 -[#144426]: https://github.com/cockroachdb/cockroach/pull/144426 -[#145998]: https://github.com/cockroachdb/cockroach/pull/145998 -[#146417]: https://github.com/cockroachdb/cockroach/pull/146417 -[#145070]: https://github.com/cockroachdb/cockroach/pull/145070 -[#144662]: https://github.com/cockroachdb/cockroach/pull/144662 -[#146088]: https://github.com/cockroachdb/cockroach/pull/146088 -[#146197]: https://github.com/cockroachdb/cockroach/pull/146197 -[#145110]: https://github.com/cockroachdb/cockroach/pull/145110 -[#144655]: https://github.com/cockroachdb/cockroach/pull/144655 -[#145371]: https://github.com/cockroachdb/cockroach/pull/145371 diff --git a/src/current/_includes/releases/v25.1/v25.1.8.md b/src/current/_includes/releases/v25.1/v25.1.8.md index 3122e133a45..f4d11ce6cd3 100644 --- a/src/current/_includes/releases/v25.1/v25.1.8.md +++ b/src/current/_includes/releases/v25.1/v25.1.8.md @@ -7,42 +7,28 @@ Release Date: June 25, 2025

Bug fixes

- 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. - [#146509][#146509] + - 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. - [#146973][#146973] + - 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. - [#147222][#147222] + - 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. - [#147310][#147310] + - 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). - [#147332][#147332] + - 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. - [#147375][#147375] + - 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`. - [#147416][#147416] + - 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. - [#147459][#147459] + - Fixed a bug where prepared statements on schema changes could fail with runtime errors. - [#147670][#147670] + - Fixed a bug where `ALTER TABLE` was modifying identity attributes on columns not backed by a sequence. - [#147710][#147710] + - Fixed an issue with logical data replication where the presence of a unique index may cause spurious dead-letter queue (DLQ) entries if the unique index has a smaller index ID than the primary key index. - [#147353][#147353] +

Performance improvements

- TTL jobs now respond to cluster topology changes by restarting and rebalancing across available nodes. - [#147208][#147208] - -[#147353]: https://github.com/cockroachdb/cockroach/pull/147353 -[#147332]: https://github.com/cockroachdb/cockroach/pull/147332 -[#147375]: https://github.com/cockroachdb/cockroach/pull/147375 -[#147416]: https://github.com/cockroachdb/cockroach/pull/147416 -[#147670]: https://github.com/cockroachdb/cockroach/pull/147670 -[#147208]: https://github.com/cockroachdb/cockroach/pull/147208 -[#147710]: https://github.com/cockroachdb/cockroach/pull/147710 -[#146509]: https://github.com/cockroachdb/cockroach/pull/146509 -[#146973]: https://github.com/cockroachdb/cockroach/pull/146973 -[#147222]: https://github.com/cockroachdb/cockroach/pull/147222 -[#147310]: https://github.com/cockroachdb/cockroach/pull/147310 -[#147459]: https://github.com/cockroachdb/cockroach/pull/147459 diff --git a/src/current/_includes/releases/v25.1/v25.1.9.md b/src/current/_includes/releases/v25.1/v25.1.9.md index 62eeb044152..3fea7143422 100644 --- a/src/current/_includes/releases/v25.1/v25.1.9.md +++ b/src/current/_includes/releases/v25.1/v25.1.9.md @@ -7,23 +7,23 @@ Release Date: July 28, 2025

SQL language changes

- 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`). - [#148223][#148223] + - 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. - [#148223][#148223] +

DB Console changes

- Updated the "Learn more" link on the **Hot Ranges** page to direct users to a newer, more comprehensive reference guide about hotspots. - [#148521][#148521] +

Bug fixes

- Fixed a data race in the `cloudstorage` sink. - [#147162][#147162] + - Fixed an error in `crdb_internal.table_spans` that could occur when a table's schema had been dropped. - [#147976][#147976] + - Fixed a bug where `libpq` clients using the async API could hang with large result sets (Python: psycopg; Ruby: ActiveRecord, ruby-pg). - [#148469][#148469] + - The `RESET ALL` statement no longer affects the following session variables: - `is_superuser` - `role` @@ -34,21 +34,9 @@ Release Date: July 28, 2025 - `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. - [#149429][#149429] + - 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. - [#149624][#149624] + - 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. - [#149925][#149925] + - Fixed a bug that would allow a race condition in foreign key cascades under `READ COMMITTED` and `REPEATABLE READ` isolation levels. - [#150339][#150339] - - -[#148521]: https://github.com/cockroachdb/cockroach/pull/148521 -[#147162]: https://github.com/cockroachdb/cockroach/pull/147162 -[#147976]: https://github.com/cockroachdb/cockroach/pull/147976 -[#148469]: https://github.com/cockroachdb/cockroach/pull/148469 -[#149925]: https://github.com/cockroachdb/cockroach/pull/149925 -[#150339]: https://github.com/cockroachdb/cockroach/pull/150339 -[#148223]: https://github.com/cockroachdb/cockroach/pull/148223 -[#149624]: https://github.com/cockroachdb/cockroach/pull/149624 -[#149429]: https://github.com/cockroachdb/cockroach/pull/149429 diff --git a/src/current/_includes/releases/v25.2/backward-incompatible.md b/src/current/_includes/releases/v25.2/backward-incompatible.md index 33e6451cfa3..17014852de8 100644 --- a/src/current/_includes/releases/v25.2/backward-incompatible.md +++ b/src/current/_includes/releases/v25.2/backward-incompatible.md @@ -4,8 +4,3 @@ Before [upgrading to CockroachDB v25.2]({% link v25.2/upgrade-cockroach-version. - `DROP INDEX` can now only be run when `sql_safe_updates` is set to `false`. [#139456] - Vector indexes do not support mutation while being created with `CREATE INDEX` or rebuilt with `ALTER PRIMARY KEY`. To prevent inadvertent application downtime, set the `sql_safe_updates` session setting to `false` when using `CREATE INDEX` or `ALTER PRIMARY KEY` with a vector index. [#144601] - 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). [#144600] - -[#139871]: https://github.com/cockroachdb/cockroach/pull/139871 -[#139456]: https://github.com/cockroachdb/cockroach/pull/139456 -[#144601]: https://github.com/cockroachdb/cockroach/pull/144601 -[#144600]: https://github.com/cockroachdb/cockroach/pull/144600 \ No newline at end of file diff --git a/src/current/_includes/releases/v25.2/cluster-setting-changes.md b/src/current/_includes/releases/v25.2/cluster-setting-changes.md index a2ee5086953..ba567d43a5b 100644 --- a/src/current/_includes/releases/v25.2/cluster-setting-changes.md +++ b/src/current/_includes/releases/v25.2/cluster-setting-changes.md @@ -12,7 +12,7 @@ Changes to [cluster settings]({% link v25.2/cluster-settings.md %}) should be re The following settings are now marked `public` after previously being `reserved`. Reserved settings are not documented and their tuning by customers is not supported. -- `sql.stats.detailed_latency_metrics.enabled` - Percentile latencies are no longer available for **SQL Activity**. The implementation of these percentiles was error-prone and difficult to understand because it was computed differently from the other SQL statistics collected. Customers interested in viewing percentile latencies per statement fingerprint are encouraged to use the experimental per-fingerprint histograms that can be enabled with the `sql.stats.detailed_latency_metrics.enabled` cluster setting. This will enable externalized histogram metrics via the Prometheus scrape endpoint. [#139500](https://github.com/cockroachdb/cockroach/pulls/139500) +- `sql.stats.detailed_latency_metrics.enabled` - Percentile latencies are no longer available for **SQL Activity**. The implementation of these percentiles was error-prone and difficult to understand because it was computed differently from the other SQL statistics collected. Customers interested in viewing percentile latencies per statement fingerprint are encouraged to use the experimental per-fingerprint histograms that can be enabled with the `sql.stats.detailed_latency_metrics.enabled` cluster setting. This will enable externalized histogram metrics via the Prometheus scrape endpoint.
Settings requiring operational changes
diff --git a/src/current/_includes/releases/v25.2/v25.2.0-alpha.1.md b/src/current/_includes/releases/v25.2/v25.2.0-alpha.1.md index ab147b02fea..6ce18d2cad9 100644 --- a/src/current/_includes/releases/v25.2/v25.2.0-alpha.1.md +++ b/src/current/_includes/releases/v25.2/v25.2.0-alpha.1.md @@ -6,258 +6,151 @@ Release Date: March 24, 2025

Backward-incompatible changes

-- The default value of the `autocommit_before_ddl` session variable is now `true`. This will cause any schema change statement that is sent during a transaction to make the current transaction commit before executing the schema change in a separate transaction. CockroachDB does not have full support for multiple [schema changes in a transaction]({% link v25.1/online-schema-changes.md %}#schema-changes-within-transactions). Users who do not want the autocommit behavior can preserve the previous behavior by changing the default value of `autocommit_before_ddl` with: `ALTER ROLE ALL SET autocommit_before_ddl = false;`. [#139871][#139871] +- The default value of the `autocommit_before_ddl` session variable is now `true`. This will cause any schema change statement that is sent during a transaction to make the current transaction commit before executing the schema change in a separate transaction. CockroachDB does not have full support for multiple [schema changes in a transaction]({% link v25.1/online-schema-changes.md %}#schema-changes-within-transactions). Users who do not want the autocommit behavior can preserve the previous behavior by changing the default value of `autocommit_before_ddl` with: `ALTER ROLE ALL SET autocommit_before_ddl = false;`.

Security updates

-- Added the `server.oidc_authentication.provider.custom_ca` cluster setting to support custom root CA for verifying certificates while authenticating with the OIDC provider. [#140583][#140583] +- Added the `server.oidc_authentication.provider.custom_ca` cluster setting to support custom root CA for verifying certificates while authenticating with the OIDC provider.

General changes

-- When changefeeds are created with a `resolved` option lower than the `min_checkpoint_frequency` option, an error message was displayed to inform the user. This message is now a notice and includes extra information if either option was set to its default value. [#142094][#142094] -- Added the logging of `changefeed_canceled` events to the telemetry log. [#142139][#142139] -- Updated the response headers of HTTP requests to include `"Cache-control: no-store"` instead of `"Cache-control:no-cache"`, which means that HTTP requests to the server will no longer be cached in the client. Requests for UI assets, such as `bundle.js` and fonts, will still include `"Cache-control:no-cache"` to ensure they are cached and that the DB console loads quickly. [#142277][#142277] -- Added the `headers_json_column_name` option to the 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] -- Improved S3 credential caching for STS credentials. [#142434][#142434] +- When changefeeds are created with a `resolved` option lower than the `min_checkpoint_frequency` option, an error message was displayed to inform the user. This message is now a notice and includes extra information if either option was set to its default value. +- Added the logging of `changefeed_canceled` events to the telemetry log. +- Updated the response headers of HTTP requests to include `"Cache-control: no-store"` instead of `"Cache-control:no-cache"`, which means that HTTP requests to the server will no longer be cached in the client. Requests for UI assets, such as `bundle.js` and fonts, will still include `"Cache-control:no-cache"` to ensure they are cached and that the DB console loads quickly. +- Added the `headers_json_column_name` option to the 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. +- Improved S3 credential caching for STS credentials.

SQL language changes

-- The `plan_cache_mode` session setting now defaults to `auto`, enabling generic query plans for some queries. [#135668][#135668] -- `SHOW JOBS` is now based on a new mechanism for storing information about the progress and status of running jobs. [#138104][#138104] -- `SHOW VIRTUAL CLUSTER WITH REPLICATION STATUS` now displays the `ingestion_job_id` column after the `name` column. [#138967][#138967] -- Since v23.2 table statistics histograms have been collected for non-indexed JSON columns. Histograms are no longer collected for these columns. This reduces memory usage during table statistics collection, for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`. This can be reverted by setting the cluster setting `sql.stats.non_indexed_json_histograms.enabled` to `true`. [#139766][#139766] -- `optimizer_use_merged_partial_statistics` is now enabled by default, meaning the optimizer will use partial stats if available to estimate more up-to-date statistics. [#139925][#139925] -- The `optimizer_prefer_bounded_cardinality` session setting has been added that instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. This may help the optimizer produce better query plans in some cases. This setting is disabled by default. [#139985][#139985] -- The `optimizer_min_row_count` session setting has been added that sets a lower bound on row count estimates for relational expressions during query planning. A value of `0`, which is the default, indicates no lower bound. If this is set to a value greater than `0`, a row count of `0` can still be estimated for expressions with a cardinality of `0`, e.g., for a contradictory filter. Setting this to a value higher than `0`, such as `1`, may yield better query plans in some cases, such as when statistics are frequently stale and inaccurate. [#140065][#140065] -- Fixed a bug existing only in pre-release versions of v25.1 that could cause unexpected errors during planning for `VALUES` expressions containing function calls with multiple overloads. [#140277][#140277] -- The `optimizer_check_input_min_row_count` session setting has been added to control the minimum row count estimate for buffer scans of foreign key and uniqueness checks. It defaults to `0`. [#140735][#140735] -- Added the `jsonpath` type, without parsing, evaluation, or table creation. Currently accepts any non-empty string. [#140204][#140204] -- Added the `substring_index` built-in function, which extracts a portion of a string based on a specified delimiter and occurrence count, which follows MySQL behavior. [#141929][#141929] -- Added compression support for changefeed webhook sinks. This reduces network bandwidth and storage usage, improving performance and lowering costs. Users can enable compression by setting the `compression=` option. Supported algorithms are `gzip` and `zstd`. [#138872][#138872] -- Holdable cursors declared using `CURSOR WITH HOLD` are now supported. A holdable cursor fully executes a query upon transaction commit and stores the result in a row container, which is maintained by the session. [#141943][#141943] -- The `split_part` built-in function now supports negative `return_index_pos` values, returning the |n|th field from the end when specified. [#141944][#141944] -- Added a parser for the `jsonpath` type. Accepts setting mode (`strict/lax`), key accessors (`.name`), and array wildcards (`[*]`). [#142010][#142010] -- Added the new option `WITH IGNORE_FOREIGN_KEYS` to the `SHOW CREATE TABLE` statement so that foreign key constraints are not included in the output schema. This option is also acceptable in `SHOW CREATE VIEW`, but has no influence there. It cannot be combined with the existing `WITH REDACT` option. [#142151][#142151] -- `CREATE TABLE AS SELECT ... FROM ... AS OF SYSTEM TIME x` is now supported. It cannot be executed within an explicit transaction. [#142147][#142147] -- Invocations of stored procedures via `CALL` statements will now be counted toward the newly added `sql.call_stored_proc.count.started` and `sql.call_stored_proc.count` metrics. Previously, they were counted against the `sql.misc.count.started` and `sql.misc.count` metrics. [#142249][#142249] -- 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] +- The `plan_cache_mode` session setting now defaults to `auto`, enabling generic query plans for some queries. +- `SHOW JOBS` is now based on a new mechanism for storing information about the progress and status of running jobs. +- `SHOW VIRTUAL CLUSTER WITH REPLICATION STATUS` now displays the `ingestion_job_id` column after the `name` column. +- Since v23.2 table statistics histograms have been collected for non-indexed JSON columns. Histograms are no longer collected for these columns. This reduces memory usage during table statistics collection, for both automatic and manual collection via `ANALYZE` and `CREATE STATISTICS`. This can be reverted by setting the cluster setting `sql.stats.non_indexed_json_histograms.enabled` to `true`. +- `optimizer_use_merged_partial_statistics` is now enabled by default, meaning the optimizer will use partial stats if available to estimate more up-to-date statistics. +- The `optimizer_prefer_bounded_cardinality` session setting has been added that instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. This may help the optimizer produce better query plans in some cases. This setting is disabled by default. +- The `optimizer_min_row_count` session setting has been added that sets a lower bound on row count estimates for relational expressions during query planning. A value of `0`, which is the default, indicates no lower bound. If this is set to a value greater than `0`, a row count of `0` can still be estimated for expressions with a cardinality of `0`, e.g., for a contradictory filter. Setting this to a value higher than `0`, such as `1`, may yield better query plans in some cases, such as when statistics are frequently stale and inaccurate. +- Fixed a bug existing only in pre-release versions of v25.1 that could cause unexpected errors during planning for `VALUES` expressions containing function calls with multiple overloads. +- The `optimizer_check_input_min_row_count` session setting has been added to control the minimum row count estimate for buffer scans of foreign key and uniqueness checks. It defaults to `0`. +- Added the `jsonpath` type, without parsing, evaluation, or table creation. Currently accepts any non-empty string. +- Added the `substring_index` built-in function, which extracts a portion of a string based on a specified delimiter and occurrence count, which follows MySQL behavior. +- Added compression support for changefeed webhook sinks. This reduces network bandwidth and storage usage, improving performance and lowering costs. Users can enable compression by setting the `compression=` option. Supported algorithms are `gzip` and `zstd`. +- Holdable cursors declared using `CURSOR WITH HOLD` are now supported. A holdable cursor fully executes a query upon transaction commit and stores the result in a row container, which is maintained by the session. +- The `split_part` built-in function now supports negative `return_index_pos` values, returning the |n|th field from the end when specified. +- Added a parser for the `jsonpath` type. Accepts setting mode (`strict/lax`), key accessors (`.name`), and array wildcards (`[*]`). +- Added the new option `WITH IGNORE_FOREIGN_KEYS` to the `SHOW CREATE TABLE` statement so that foreign key constraints are not included in the output schema. This option is also acceptable in `SHOW CREATE VIEW`, but has no influence there. It cannot be combined with the existing `WITH REDACT` option. +- `CREATE TABLE AS SELECT ... FROM ... AS OF SYSTEM TIME x` is now supported. It cannot be executed within an explicit transaction. +- Invocations of stored procedures via `CALL` statements will now be counted toward the newly added `sql.call_stored_proc.count.started` and `sql.call_stored_proc.count` metrics. Previously, they were counted against the `sql.misc.count.started` and `sql.misc.count` metrics. +- 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. - Added support for the following in the `jsonpath` parser: - Double-quoted key accessors within `jsonpath` (`SELECT '$."1key"."key2"'::JSONPATH;`). - Array integer indexing (ex. `$.a[1]`). - Array ranges (ex. `$.a[1 to 3]`). - - Array unions (ex `$.a[1, 2 to 4, 7, 8]`). [#142241][#142241] -- Fixed a regression due to join-elimination rules that left a Project operator below a `JOIN`, preventing optimizer rules from applying. [#142252][#142252] -- Added `ALTER VIRTUAL CLUSTER .. SET REPLICATION SOURCE` so users can configure the producer jobs on the source cluster for physical cluster replication (PCR). Currently, they can only configure the `EXPIRATION WINDOW`. This patch also removes the `EXPIRATION WINDOW` option from the consumer side of the statement, `ALTER VIRTUAL CLUSTER SET REPLICATION`. [#142501][#142501] -- Added the `jsonb_path_query` function, which takes in a JSON object and a `jsonpath` query, and returns the resulting JSON object. [#142336][#142336] -- Updated the `CREATE TRIGGER` statement `only implemented in the declarative schema changer` error message to include a helpful suggestion and link to relevant docs. [#141738][#141738] + - Array unions (ex `$.a[1, 2 to 4, 7, 8]`). +- Fixed a regression due to join-elimination rules that left a Project operator below a `JOIN`, preventing optimizer rules from applying. +- Added `ALTER VIRTUAL CLUSTER .. SET REPLICATION SOURCE` so users can configure the producer jobs on the source cluster for physical cluster replication (PCR). Currently, they can only configure the `EXPIRATION WINDOW`. This patch also removes the `EXPIRATION WINDOW` option from the consumer side of the statement, `ALTER VIRTUAL CLUSTER SET REPLICATION`. +- Added the `jsonb_path_query` function, which takes in a JSON object and a `jsonpath` query, and returns the resulting JSON object. +- Updated the `CREATE TRIGGER` statement `only implemented in the declarative schema changer` error message to include a helpful suggestion and link to relevant docs.

Operational changes

-- Removed the `storage.queue.store-failures` metric. [#139150][#139150] -- Customers must provide URIs as external connections to create logical data replication (LDR) statements. [#139383][#139383] +- Removed the `storage.queue.store-failures` metric. +- Customers must provide URIs as external connections to create logical data replication (LDR) statements. - The following cluster settings have been deprecated: - `sql.metrics.statement_details.plan_collection.enabled` - - `sql.metrics.statement_details.plan_collection.period` [#138042][#138042] -- Reduced noise when using dynamically provisioned logging sinks. [#139565][#139565] + - `sql.metrics.statement_details.plan_collection.period` +- Reduced noise when using dynamically provisioned logging sinks. - Added metrics for monitoring changefeed span-level checkpoint creation: - `changefeed.checkpoint.create_nanos`, which measures the time it takes to create a changefeed checkpoint. - `changefeed.checkpoint.total_bytes`, which measures the total size of a changefeed checkpoint in bytes. - - `changefeed.checkpoint.span_count`, which measures the number of spans in a changefeed checkpoint. [#139375][#139375] + - `changefeed.checkpoint.span_count`, which measures the number of spans in a changefeed checkpoint. - The following schema changes are now allowlisted to run during LDR. - `ALTER INDEX RENAME`. - `ALTER INDEX .. NOT VISIBLE`. - `ALTER TABLE .. ALTER COLUMN .. SET DEFAULT`. - `ALTER TABLE .. ALTER COLUMN .. DROP DEFAULT`. - - `ALTER TABLE .. ALTER COLUMN SET VISIBLE`. [#141858][#141858] -- Added `sql.statement_timeout.count` to track the number of SQL statements that fail due to exceeding the statement timeout. [#142078][#142078] -- Added the `sql.transaction_timeout.count` metric to track the number of SQL statements that fail due to exceeding the transaction timeout. [#142105][#142105] -- 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] -- To create a logical data replication (LDR) stream, users require the `REPLICATIONDEST` privilege, instead of the `REPLICATION` privilege. [#142345][#142345] -- To create a physical cluster replication (PCR) stream, users require the `REPLICATIONDEST` privilege, in addition to the already required `MANAGEVIRTUALCLUSTER` privilege. [#142345][#142345] -- Removed the `kv.snapshot_receiver.excise.enable` cluster setting. Excise is now enabled unconditionally. [#142651][#142651] -- Introduced the cluster setting `server.child_metrics.include_aggregate.enabled`, which modifies the behavior of Prometheus metric reporting (`/_status/vars`). By default, it is set to `true`, which maintains the existing behavior. It can be sert to `false` to stop the reporting of the aggregate time series that prevents issues with double counting when querying metrics. [#141601][#141601] -- When configuring the `sql.ttl.default_delete_rate_limit` cluster setting, a notice is displayed informing that the TTL rate limit is per leaseholder per node with a link to the docs. [#142061][#142061] -- Added a new `envelope` type `enriched` for changefeeds. [#140112][#140112] -- Added support for the `enriched` envelope type to Avro format changefeeds. [#140525][#140525] -- The cluster setting `changefeed.new_webhook_sink_enabled`/`changefeed.new_webhook_sink.enabled` is no longer supported. The new webhook sink has been enabled by default since v23.2, and the first version webhook sink has been removed. [#141940][#141940] -- The cluster setting `changefeed.new_pubsub_sink_enabled`/`changefeed.new_pubsub_sink.enabled` is no longer supported. The new Google Cloud Pub/Sub sink has been enabled by default since v23.2, and the first version Pub/Sub sink has been removed. [#141948][#141948] -- `DROP INDEX` can now only be run when `sql_safe_updates` is set to `false`. [#139456][#139456] + - `ALTER TABLE .. ALTER COLUMN SET VISIBLE`. +- Added `sql.statement_timeout.count` to track the number of SQL statements that fail due to exceeding the statement timeout. +- Added the `sql.transaction_timeout.count` metric to track the number of SQL statements that fail due to exceeding the transaction timeout. +- 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. +- To create a logical data replication (LDR) stream, users require the `REPLICATIONDEST` privilege, instead of the `REPLICATION` privilege. +- To create a physical cluster replication (PCR) stream, users require the `REPLICATIONDEST` privilege, in addition to the already required `MANAGEVIRTUALCLUSTER` privilege. +- Removed the `kv.snapshot_receiver.excise.enable` cluster setting. Excise is now enabled unconditionally. +- Introduced the cluster setting `server.child_metrics.include_aggregate.enabled`, which modifies the behavior of Prometheus metric reporting (`/_status/vars`). By default, it is set to `true`, which maintains the existing behavior. It can be sert to `false` to stop the reporting of the aggregate time series that prevents issues with double counting when querying metrics. +- When configuring the `sql.ttl.default_delete_rate_limit` cluster setting, a notice is displayed informing that the TTL rate limit is per leaseholder per node with a link to the docs. +- Added a new `envelope` type `enriched` for changefeeds. +- Added support for the `enriched` envelope type to Avro format changefeeds. +- The cluster setting `changefeed.new_webhook_sink_enabled`/`changefeed.new_webhook_sink.enabled` is no longer supported. The new webhook sink has been enabled by default since v23.2, and the first version webhook sink has been removed. +- The cluster setting `changefeed.new_pubsub_sink_enabled`/`changefeed.new_pubsub_sink.enabled` is no longer supported. The new Google Cloud Pub/Sub sink has been enabled by default since v23.2, and the first version Pub/Sub sink has been removed. +- `DROP INDEX` can now only be run when `sql_safe_updates` is set to `false`.

Command-line changes

-- Improved the performance of the debug zip query that collects `transaction_contention_events` data, reducing the chances of `memory budget exceeded` or `query execution canceled due to statement timeout` errors. [#139735][#139735] -- Removed the deprecated `--storage-engine` parameter from the CLI. [#139744][#139744] +- Improved the performance of the debug zip query that collects `transaction_contention_events` data, reducing the chances of `memory budget exceeded` or `query execution canceled due to statement timeout` errors. +- Removed the deprecated `--storage-engine` parameter from the CLI.

DB Console changes

-- The `/_admin/v1/settings` API (and therefore cluster settings console page) now returns cluster settings using the same redaction logic as querying `SHOW CLUSTER SETTINGS` and `crdb_internal.cluster_settings`. This means that only settings flagged as "sensitive" will be redacted, all other settings will be visible. The same authorization is required for this endpoint, meaning the user must be an `admin`, have `MODIFYCLUSTERSETTINGS`, or `VIEWCLUSTERSETTINGS` roles to use this API. The exception is that if the user has `VIEWACTIVITY` or `VIEWACTIVITYREDACTED`, they will see console-only settings. [#138688][#138688] -- The **Overload** dashboard in the DB Console now shows only the v2 replication admission control metrics, where previously it displayed both v1 and v2 metrics. Additionally, the aggregate size of queued replication entries is now shown. [#139066][#139066] -- Jobs can now choose to emit messages that are shown on the **Jobs Details** page in v25.1 and later. [#139246][#139246] -- An event is posted when a store is getting close to full capacity. [#139199][#139199] -- Percentile latencies are no longer available for **SQL Activity**. The implementation of these percentiles was error-prone and difficult to understand because it was computed differently from the other SQL statistics collected. Customers interested in viewing percentile latencies per statement fingerprint are encouraged to use the experimental per-fingerprint histograms that can be enabled with the `sql.stats.detailed_latency_metrics.enabled` cluster setting. This will enable externalized histogram metrics via the Prometheus scrape endpoint. [#139500][#139500] -- Surfaced commit latency on the **Transactions** pages [#139946][#139946] -- Removed the **Paused Follower** graph from the **Replication** dashboard in the DB Console as followers are no longer paused by default from v25.1. [#141427][#141427] -- DB console's `index.html` page now includes a Content-Security-Policy (CSP) header to help prevent malicious XSS attacks. [#142282][#142282] +- The `/_admin/v1/settings` API (and therefore cluster settings console page) now returns cluster settings using the same redaction logic as querying `SHOW CLUSTER SETTINGS` and `crdb_internal.cluster_settings`. This means that only settings flagged as "sensitive" will be redacted, all other settings will be visible. The same authorization is required for this endpoint, meaning the user must be an `admin`, have `MODIFYCLUSTERSETTINGS`, or `VIEWCLUSTERSETTINGS` roles to use this API. The exception is that if the user has `VIEWACTIVITY` or `VIEWACTIVITYREDACTED`, they will see console-only settings. +- The **Overload** dashboard in the DB Console now shows only the v2 replication admission control metrics, where previously it displayed both v1 and v2 metrics. Additionally, the aggregate size of queued replication entries is now shown. +- Jobs can now choose to emit messages that are shown on the **Jobs Details** page in v25.1 and later. +- An event is posted when a store is getting close to full capacity. +- Percentile latencies are no longer available for **SQL Activity**. The implementation of these percentiles was error-prone and difficult to understand because it was computed differently from the other SQL statistics collected. Customers interested in viewing percentile latencies per statement fingerprint are encouraged to use the experimental per-fingerprint histograms that can be enabled with the `sql.stats.detailed_latency_metrics.enabled` cluster setting. This will enable externalized histogram metrics via the Prometheus scrape endpoint. +- Surfaced commit latency on the **Transactions** pages +- Removed the **Paused Follower** graph from the **Replication** dashboard in the DB Console as followers are no longer paused by default from v25.1. +- DB console's `index.html` page now includes a Content-Security-Policy (CSP) header to help prevent malicious XSS attacks.

Bug fixes

-- Previously, storage parameters with the same key would lead to ambiguity. This has now been fixed and an error surfaced if duplicate storage parameters are specified. [#139172][#139172] -- Fixed a bug where the error `batch timestamp T must be after replica GC threshold` could occur during a schema change backfill operation, causing the schema change job to retry infinitely. Now, this error is treated as permanent, and will cause the job to enter the `failed` state. [#139203][#139203] -- Previously, whenever CockroachDB collected a statement bundle when plan-gist-based matching was used, the `plan.txt` file would be incomplete. This bug is now fixed—it had been present since the introduction of the plan-gist-based matching feature in v23.1, but was partially addressed in the v24.2 release. [#127604][#127604] -- Previously, `EXPLAIN ANALYZE` of mutation statements would always get `actual row count: 1` execution statistic for the corresponding mutation node in the plan, regardless of how many rows were actually modified. The bug has been present since before v22.2 and is now fixed. [#139278][#139278] -- Fixed a bug where sometimes activating diagnostics for SQL activity appeared unresponsive, with no state or status update upon activating. Now, the status should always reflect that diagnostics are active or that a statement bundle is downloadable. [#139342][#139342] -- The `to_regclass`, `to_regtype`, `to_regrole`, and related functions now return `NULL` for any numerical input argument. [#139777][#139777] -- Fixed a rare bug in which a query might fail with the error `could not find computed column expression for column in table` while dropping a virtual computed column from the table. This bug was introduced in v23.2.4. [#139388][#139388] -- The optimizer could produce incorrect query plans for queries using trigram similarity filters (e.g., `col % 'val'`) when `pg_trgm.similarity_threshold` was set to `0`. This bug was introduced in v22.2.0 and is now fixed. Note that this issue does not affect v24.2.0 and later releases when the `optimizer_use_trigram_similarity_optimization` session variable (introduced in v24.2.0) is set to its default value `true`, as it would skip this behavior. [#139265][#139265] -- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `batch timestamp must be after replica GC threshold` error. [#139532][#139532] -- Fixed a bug that existed only in pre-release versions of v25.1. The bug could cause creation of a PL/pgSQL routine with a common table expression (CTE) to fail with an error like the following: `unexpected root expression: with`. [#140083][#140083] -- Configuring replication controls on a partition name of an index that is not unique across all indexes will correctly impact only that partition. [#140167][#140167] -- The **Data distribution** page in Advanced Debug will no longer crash if there are `NULL` values for `raw_sql_config` in `crdb_internal.zones`. [#140066][#140066] -- Fixed a bug where dropping a table with a trigger using the legacy schema changer could leave an orphaned reference in the descriptor. This occurred when two tables were dependent on each other via a trigger, and the table containing the trigger was dropped. [#140995][#140995] -- Addressed a bug that could cause concurrent DML operations to prevent primary key changes from succeeding. [#141189][#141189] -- Fixed a bug that prevented transaction retry errors encountered during implicit transactions from being automatically retried internally if the `autocommit_before_ddl` session variable was enabled and the statement was a schema change. [#141369][#141369] -- A step in the v25.1 upgrade finalization process that required backfilling jobs now uses locks to ensure it makes progress even when there is contention on the jobs table, which will prevent the possibility of becoming stuck under heavy load. [#141420][#141420] -- Fixed a bug that could prevent `SHOW CREATE TABLE` from working if a database was offline (e.g., due to a `RESTORE` on that database). [#141195][#141195] -- Fixed a bug that prevented starting multi-table logical data replication (LDR) streams on tables that used user-defined types. [#141634][#141634] -- Fixed a bug that could cause `nil pointer dereference` errors when executing statements with UDFs. The error could also occur when executing statements with some built-in functions, like `obj_description`. [#141596][#141596] -- Fixed a bug where a node that was drained as part of decommissioning may have interrupted SQL connections that were still active during drain (and for which drain would have been expected to wait). [#141411][#141411] -- Fixed a bug where the fraction completed and internal checkpoints during an index backfill operation would stop getting written if any of the periodic fraction/checkpoint write operations failed. Additional logging was added so that progress is logged in addition to being written to the job record. This bug affected schema change operations, such as creating an index or adding a non-nullable column to a table. [#141714][#141714] -- Fixed a bug that could cause gateway nodes to panic when performing an `UPSERT` on a table with a `BOOL` primary key column and a partial index with the primary key column as the predicate expression. [#141728][#141728] -- Fixed a bug where CockroachDB could incorrectly evaluate casts to some `OID` types (like `REGCLASS`) in some cases. The bug has been present since at least v22.1. [#141946][#141946] -- Transactions that enter the `aborted` state now release locks they are holding immediately, provided there is no `SAVEPOINT` active in the transaction. [#140160][#140160] -- Fixed a bug when running with `autocommit_before_ddl` that could cause a runtime error when binding a previously prepared DDL statement. [#142034][#142034] -- Fixed a bug where orphaned leases were not properly cleaned up. [#141429][#141429] -- Previously, the `CREATE LOGICALLY REPLICATED` syntax would always create the destination side table with the source side name, instead of the user-provided name. This change ensures the user-provided name is used. [#142235][#142235] -- Fixed a bug that would prevent `CREATE TRIGGER` and `DROP TRIGGER` statements from working if the `autocommit_before_ddl` 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] -- 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 information. [#142284][#142284] -- 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 job settings. [#141953][#141953] -- Fixed an issue where removed nodes could leave persistent entries in `crdb_internal.gossip_alerts`. [#142385][#142385] -- Invalid default expressions could cause backfilling schema changes to retry forever. [#142490][#142490] -- Fast failback could succeed even if the destination cluster's protected timestamp had been removed, causing the reverse stream to enter a crashing loop. This fix ensures the failback command fast fails. [#142231][#142231] -- Fixed an issue where dropping a database with triggers could fail due to an undropped back reference to a trigger function. [#142670][#142670] -- Fixed a bug where replication controls on indexes and partitions would not get properly updated during an index backfill (in the declarative schema changer) to its new ID; effectively discarding the replication controls set on it before the backfill. [#141800][#141800] -- Addressed a bug where `CREATE SEQUENCE` could succeed under with a `DROP SCHEMA` or `DROP DATABASE` in progress. [#142696][#142696] -- Fixed a bug in client certificate expiration metrics. [#142682][#142682] -- Physical cluster replication (PCR) reader catalogs could have orphan rows in `system.namespace` after an object is renamed. [#142829][#142829] -- Fixed a bug where during validation of a table-level zone configuration, inherited values were incorrectly populated from the default range instead of from the parent database. [#142760][#142760] -- Fixed a bug that would send a replica outside of a tenant known region, when `SURVIVE REGION FAILURE` was set and exactly 3 regions were configured. [#142838][#142838] +- Previously, storage parameters with the same key would lead to ambiguity. This has now been fixed and an error surfaced if duplicate storage parameters are specified. +- Fixed a bug where the error `batch timestamp T must be after replica GC threshold` could occur during a schema change backfill operation, causing the schema change job to retry infinitely. Now, this error is treated as permanent, and will cause the job to enter the `failed` state. +- Previously, whenever CockroachDB collected a statement bundle when plan-gist-based matching was used, the `plan.txt` file would be incomplete. This bug is now fixed—it had been present since the introduction of the plan-gist-based matching feature in v23.1, but was partially addressed in the v24.2 release. +- Previously, `EXPLAIN ANALYZE` of mutation statements would always get `actual row count: 1` execution statistic for the corresponding mutation node in the plan, regardless of how many rows were actually modified. The bug has been present since before v22.2 and is now fixed. +- Fixed a bug where sometimes activating diagnostics for SQL activity appeared unresponsive, with no state or status update upon activating. Now, the status should always reflect that diagnostics are active or that a statement bundle is downloadable. +- The `to_regclass`, `to_regtype`, `to_regrole`, and related functions now return `NULL` for any numerical input argument. +- Fixed a rare bug in which a query might fail with the error `could not find computed column expression for column in table` while dropping a virtual computed column from the table. This bug was introduced in v23.2.4. +- The optimizer could produce incorrect query plans for queries using trigram similarity filters (e.g., `col % 'val'`) when `pg_trgm.similarity_threshold` was set to `0`. This bug was introduced in v22.2.0 and is now fixed. Note that this issue does not affect v24.2.0 and later releases when the `optimizer_use_trigram_similarity_optimization` session variable (introduced in v24.2.0) is set to its default value `true`, as it would skip this behavior. +- Fixed a bug that could cause `SHOW TABLES` and other introspection operations to encounter a `batch timestamp must be after replica GC threshold` error. +- Fixed a bug that existed only in pre-release versions of v25.1. The bug could cause creation of a PL/pgSQL routine with a common table expression (CTE) to fail with an error like the following: `unexpected root expression: with`. +- Configuring replication controls on a partition name of an index that is not unique across all indexes will correctly impact only that partition. +- The **Data distribution** page in Advanced Debug will no longer crash if there are `NULL` values for `raw_sql_config` in `crdb_internal.zones`. +- Fixed a bug where dropping a table with a trigger using the legacy schema changer could leave an orphaned reference in the descriptor. This occurred when two tables were dependent on each other via a trigger, and the table containing the trigger was dropped. +- Addressed a bug that could cause concurrent DML operations to prevent primary key changes from succeeding. +- Fixed a bug that prevented transaction retry errors encountered during implicit transactions from being automatically retried internally if the `autocommit_before_ddl` session variable was enabled and the statement was a schema change. +- A step in the v25.1 upgrade finalization process that required backfilling jobs now uses locks to ensure it makes progress even when there is contention on the jobs table, which will prevent the possibility of becoming stuck under heavy load. +- Fixed a bug that could prevent `SHOW CREATE TABLE` from working if a database was offline (e.g., due to a `RESTORE` on that database). +- Fixed a bug that prevented starting multi-table logical data replication (LDR) streams on tables that used user-defined types. +- Fixed a bug that could cause `nil pointer dereference` errors when executing statements with UDFs. The error could also occur when executing statements with some built-in functions, like `obj_description`. +- Fixed a bug where a node that was drained as part of decommissioning may have interrupted SQL connections that were still active during drain (and for which drain would have been expected to wait). +- Fixed a bug where the fraction completed and internal checkpoints during an index backfill operation would stop getting written if any of the periodic fraction/checkpoint write operations failed. Additional logging was added so that progress is logged in addition to being written to the job record. This bug affected schema change operations, such as creating an index or adding a non-nullable column to a table. +- Fixed a bug that could cause gateway nodes to panic when performing an `UPSERT` on a table with a `BOOL` primary key column and a partial index with the primary key column as the predicate expression. +- Fixed a bug where CockroachDB could incorrectly evaluate casts to some `OID` types (like `REGCLASS`) in some cases. The bug has been present since at least v22.1. +- Transactions that enter the `aborted` state now release locks they are holding immediately, provided there is no `SAVEPOINT` active in the transaction. +- Fixed a bug when running with `autocommit_before_ddl` that could cause a runtime error when binding a previously prepared DDL statement. +- Fixed a bug where orphaned leases were not properly cleaned up. +- Previously, the `CREATE LOGICALLY REPLICATED` syntax would always create the destination side table with the source side name, instead of the user-provided name. This change ensures the user-provided name is used. +- Fixed a bug that would prevent `CREATE TRIGGER` and `DROP TRIGGER` statements from working if the `autocommit_before_ddl` setting was enabled, and if the statement was either sent as a prepared statement or as part of a batch of multiple statements. +- 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 information. +- 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 job settings. +- Fixed an issue where removed nodes could leave persistent entries in `crdb_internal.gossip_alerts`. +- Invalid default expressions could cause backfilling schema changes to retry forever. +- Fast failback could succeed even if the destination cluster's protected timestamp had been removed, causing the reverse stream to enter a crashing loop. This fix ensures the failback command fast fails. +- Fixed an issue where dropping a database with triggers could fail due to an undropped back reference to a trigger function. +- Fixed a bug where replication controls on indexes and partitions would not get properly updated during an index backfill (in the declarative schema changer) to its new ID; effectively discarding the replication controls set on it before the backfill. +- Addressed a bug where `CREATE SEQUENCE` could succeed under with a `DROP SCHEMA` or `DROP DATABASE` in progress. +- Fixed a bug in client certificate expiration metrics. +- Physical cluster replication (PCR) reader catalogs could have orphan rows in `system.namespace` after an object is renamed. +- Fixed a bug where during validation of a table-level zone configuration, inherited values were incorrectly populated from the default range instead of from the parent database. +- Fixed a bug that would send a replica outside of a tenant known region, when `SURVIVE REGION FAILURE` was set and exactly 3 regions were configured.

Performance improvements

-- Improved directory traversal performance by switching from `filepath.Walk` to `filepath.WalkDir`. [#139108][#139108] -- Removed a potential storage read from the Raft commit pipeline. This reduces the worst-case KV write latency. [#139609][#139609] -- The `optimizer_check_input_min_row_count` session setting now defaults to `1`, resulting in better query plans for foreign key and uniqueness checks. [#140735][#140735] -- This change restores the changefeed checkpoint immediately to the change frontier. This potentially reduces duplicate messages in the event that the frontier writes a checkpoint before it receives updates and covers the previous checkpoint from the aggregators, overwriting the checkpoint with less information. [#139969][#139969] +- Improved directory traversal performance by switching from `filepath.Walk` to `filepath.WalkDir`. +- Removed a potential storage read from the Raft commit pipeline. This reduces the worst-case KV write latency. +- The `optimizer_check_input_min_row_count` session setting now defaults to `1`, resulting in better query plans for foreign key and uniqueness checks. +- This change restores the changefeed checkpoint immediately to the change frontier. This potentially reduces duplicate messages in the event that the frontier writes a checkpoint before it receives updates and covers the previous checkpoint from the aggregators, overwriting the checkpoint with less information.

Build changes

-- Upgraded to Go v1.23.6. [#140626][#140626] -- Enabled the use of profile-guided optimization in the `cockroach` binary. [#142697][#142697] -- Upgraded to Go v1.23.7. [#142698][#142698] - -[#127604]: https://github.com/cockroachdb/cockroach/pull/127604 -[#138042]: https://github.com/cockroachdb/cockroach/pull/138042 -[#138104]: https://github.com/cockroachdb/cockroach/pull/138104 -[#138688]: https://github.com/cockroachdb/cockroach/pull/138688 -[#138872]: https://github.com/cockroachdb/cockroach/pull/138872 -[#138967]: https://github.com/cockroachdb/cockroach/pull/138967 -[#139066]: https://github.com/cockroachdb/cockroach/pull/139066 -[#139108]: https://github.com/cockroachdb/cockroach/pull/139108 -[#139150]: https://github.com/cockroachdb/cockroach/pull/139150 -[#139172]: https://github.com/cockroachdb/cockroach/pull/139172 -[#139199]: https://github.com/cockroachdb/cockroach/pull/139199 -[#139203]: https://github.com/cockroachdb/cockroach/pull/139203 -[#139246]: https://github.com/cockroachdb/cockroach/pull/139246 -[#139265]: https://github.com/cockroachdb/cockroach/pull/139265 -[#139278]: https://github.com/cockroachdb/cockroach/pull/139278 -[#139342]: https://github.com/cockroachdb/cockroach/pull/139342 -[#139365]: https://github.com/cockroachdb/cockroach/pull/139365 -[#139375]: https://github.com/cockroachdb/cockroach/pull/139375 -[#139383]: https://github.com/cockroachdb/cockroach/pull/139383 -[#139388]: https://github.com/cockroachdb/cockroach/pull/139388 -[#139456]: https://github.com/cockroachdb/cockroach/pull/139456 -[#139500]: https://github.com/cockroachdb/cockroach/pull/139500 -[#139532]: https://github.com/cockroachdb/cockroach/pull/139532 -[#139565]: https://github.com/cockroachdb/cockroach/pull/139565 -[#139609]: https://github.com/cockroachdb/cockroach/pull/139609 -[#139735]: https://github.com/cockroachdb/cockroach/pull/139735 -[#139744]: https://github.com/cockroachdb/cockroach/pull/139744 -[#139766]: https://github.com/cockroachdb/cockroach/pull/139766 -[#139777]: https://github.com/cockroachdb/cockroach/pull/139777 -[#139871]: https://github.com/cockroachdb/cockroach/pull/139871 -[#139925]: https://github.com/cockroachdb/cockroach/pull/139925 -[#139946]: https://github.com/cockroachdb/cockroach/pull/139946 -[#139969]: https://github.com/cockroachdb/cockroach/pull/139969 -[#139985]: https://github.com/cockroachdb/cockroach/pull/139985 -[#140065]: https://github.com/cockroachdb/cockroach/pull/140065 -[#140066]: https://github.com/cockroachdb/cockroach/pull/140066 -[#140083]: https://github.com/cockroachdb/cockroach/pull/140083 -[#140112]: https://github.com/cockroachdb/cockroach/pull/140112 -[#140160]: https://github.com/cockroachdb/cockroach/pull/140160 -[#140167]: https://github.com/cockroachdb/cockroach/pull/140167 -[#140204]: https://github.com/cockroachdb/cockroach/pull/140204 -[#140277]: https://github.com/cockroachdb/cockroach/pull/140277 -[#140525]: https://github.com/cockroachdb/cockroach/pull/140525 -[#140583]: https://github.com/cockroachdb/cockroach/pull/140583 -[#140626]: https://github.com/cockroachdb/cockroach/pull/140626 -[#140735]: https://github.com/cockroachdb/cockroach/pull/140735 -[#140995]: https://github.com/cockroachdb/cockroach/pull/140995 -[#141189]: https://github.com/cockroachdb/cockroach/pull/141189 -[#141195]: https://github.com/cockroachdb/cockroach/pull/141195 -[#141369]: https://github.com/cockroachdb/cockroach/pull/141369 -[#141411]: https://github.com/cockroachdb/cockroach/pull/141411 -[#141420]: https://github.com/cockroachdb/cockroach/pull/141420 -[#141427]: https://github.com/cockroachdb/cockroach/pull/141427 -[#141429]: https://github.com/cockroachdb/cockroach/pull/141429 -[#141596]: https://github.com/cockroachdb/cockroach/pull/141596 -[#141601]: https://github.com/cockroachdb/cockroach/pull/141601 -[#141634]: https://github.com/cockroachdb/cockroach/pull/141634 -[#141714]: https://github.com/cockroachdb/cockroach/pull/141714 -[#141728]: https://github.com/cockroachdb/cockroach/pull/141728 -[#141738]: https://github.com/cockroachdb/cockroach/pull/141738 -[#141800]: https://github.com/cockroachdb/cockroach/pull/141800 -[#141858]: https://github.com/cockroachdb/cockroach/pull/141858 -[#141929]: https://github.com/cockroachdb/cockroach/pull/141929 -[#141940]: https://github.com/cockroachdb/cockroach/pull/141940 -[#141943]: https://github.com/cockroachdb/cockroach/pull/141943 -[#141944]: https://github.com/cockroachdb/cockroach/pull/141944 -[#141946]: https://github.com/cockroachdb/cockroach/pull/141946 -[#141948]: https://github.com/cockroachdb/cockroach/pull/141948 -[#141953]: https://github.com/cockroachdb/cockroach/pull/141953 -[#142010]: https://github.com/cockroachdb/cockroach/pull/142010 -[#142034]: https://github.com/cockroachdb/cockroach/pull/142034 -[#142061]: https://github.com/cockroachdb/cockroach/pull/142061 -[#142078]: https://github.com/cockroachdb/cockroach/pull/142078 -[#142092]: https://github.com/cockroachdb/cockroach/pull/142092 -[#142094]: https://github.com/cockroachdb/cockroach/pull/142094 -[#142105]: https://github.com/cockroachdb/cockroach/pull/142105 -[#142139]: https://github.com/cockroachdb/cockroach/pull/142139 -[#142147]: https://github.com/cockroachdb/cockroach/pull/142147 -[#142151]: https://github.com/cockroachdb/cockroach/pull/142151 -[#142202]: https://github.com/cockroachdb/cockroach/pull/142202 -[#142231]: https://github.com/cockroachdb/cockroach/pull/142231 -[#142235]: https://github.com/cockroachdb/cockroach/pull/142235 -[#142241]: https://github.com/cockroachdb/cockroach/pull/142241 -[#142249]: https://github.com/cockroachdb/cockroach/pull/142249 -[#142252]: https://github.com/cockroachdb/cockroach/pull/142252 -[#142259]: https://github.com/cockroachdb/cockroach/pull/142259 -[#142277]: https://github.com/cockroachdb/cockroach/pull/142277 -[#142282]: https://github.com/cockroachdb/cockroach/pull/142282 -[#142284]: https://github.com/cockroachdb/cockroach/pull/142284 -[#142336]: https://github.com/cockroachdb/cockroach/pull/142336 -[#142345]: https://github.com/cockroachdb/cockroach/pull/142345 -[#142385]: https://github.com/cockroachdb/cockroach/pull/142385 -[#142434]: https://github.com/cockroachdb/cockroach/pull/142434 -[#142476]: https://github.com/cockroachdb/cockroach/pull/142476 -[#142490]: https://github.com/cockroachdb/cockroach/pull/142490 -[#142501]: https://github.com/cockroachdb/cockroach/pull/142501 -[#142651]: https://github.com/cockroachdb/cockroach/pull/142651 -[#142670]: https://github.com/cockroachdb/cockroach/pull/142670 -[#142682]: https://github.com/cockroachdb/cockroach/pull/142682 -[#142696]: https://github.com/cockroachdb/cockroach/pull/142696 -[#142697]: https://github.com/cockroachdb/cockroach/pull/142697 -[#142698]: https://github.com/cockroachdb/cockroach/pull/142698 -[#142760]: https://github.com/cockroachdb/cockroach/pull/142760 -[#142829]: https://github.com/cockroachdb/cockroach/pull/142829 -[#142838]: https://github.com/cockroachdb/cockroach/pull/142838 -[#135668]: https://github.com/cockroachdb/cockroach/pull/135668 +- Upgraded to Go v1.23.6. +- Enabled the use of profile-guided optimization in the `cockroach` binary. +- Upgraded to Go v1.23.7. diff --git a/src/current/_includes/releases/v25.2/v25.2.0-alpha.2.md b/src/current/_includes/releases/v25.2/v25.2.0-alpha.2.md index fe2123e53f8..69dbcc16cda 100644 --- a/src/current/_includes/releases/v25.2/v25.2.0-alpha.2.md +++ b/src/current/_includes/releases/v25.2/v25.2.0-alpha.2.md @@ -7,90 +7,67 @@ Release Date: March 31, 2025

SQL language changes

- `num_nulls()` and `num_nonnulls()` no longer require that all arguments have the same type. - [#141193][#141193] + - `concat()` no longer requires that all arguments have the same type. - [#141193][#141193] + - `pg_column_size()` no longer requires that all arguments have the same type. - [#141193][#141193] + - 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, will authorize via this table-level `REPLICATIONDEST` privilege. - [#142840][#142840] + - `concat_ws()` now accepts arguments of any type in the second and later positions (the separator must still be a string). - [#141193][#141193] + - 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] + - `format()` no longer requires that all post-format string arguments 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] + - Added the `jsonb_path_exists` function, which accepts a JSON object and JSONPath query and returns whether the query returned any items. - [#143028][#143028] + - Addition, subtraction, multiplication, division, and modulo operators are now supported in JSONPath queries. - [#143210][#143210] +

Operational changes

- 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] +

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 Replica Quiescence graph on the Replication dashboard in the DB Console now displays the number of replicas quiesced with leader leases. [#143215][#143215] + +- The Replica Quiescence graph on the Replication dashboard in the DB Console now displays the number of replicas quiesced with leader leases.

Bug fixes

- Fixed a bug where index backfills unnecessarily merged new data written to an index, which could lead to extra contention. - [#142768][#142768] + - 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] + PRIVILEGES FOR ROLE self_referencing_role GRANT INSERT ON TABLES TO self_referencing_role`. - Fixed a bug that caused changefeeds to fail on startup when scanning a single key. - [#143102][#143102] + - 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 crash due to `use of enum metadata before hydration` when using LDR with user-defined types. [#143311][#143311] -- 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 amounts 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 crash due to `use of enum metadata before hydration` when using LDR with user-defined types. +- 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 amounts 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. - 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 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 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] + - 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] +

Performance improvements

- 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] + - Queries that use `SHOW TABLES` without using the `estimated_row_count` column no longer need to look up the table statistics. - [#59838][#59838] +

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] - - -[#143287]: https://github.com/cockroachdb/cockroach/pull/143287 -[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 -[#59838]: https://github.com/cockroachdb/cockroach/pull/59838 -[#142772]: https://github.com/cockroachdb/cockroach/pull/142772 -[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 -[#143159]: https://github.com/cockroachdb/cockroach/pull/143159 -[#141193]: https://github.com/cockroachdb/cockroach/pull/141193 -[#143210]: https://github.com/cockroachdb/cockroach/pull/143210 -[#143215]: https://github.com/cockroachdb/cockroach/pull/143215 -[#143102]: https://github.com/cockroachdb/cockroach/pull/143102 -[#143311]: https://github.com/cockroachdb/cockroach/pull/143311 -[#143173]: https://github.com/cockroachdb/cockroach/pull/143173 -[#143072]: https://github.com/cockroachdb/cockroach/pull/143072 -[#142840]: https://github.com/cockroachdb/cockroach/pull/142840 -[#143097]: https://github.com/cockroachdb/cockroach/pull/143097 -[#141850]: https://github.com/cockroachdb/cockroach/pull/141850 -[#143252]: https://github.com/cockroachdb/cockroach/pull/143252 -[#142702]: https://github.com/cockroachdb/cockroach/pull/142702 -[#143028]: https://github.com/cockroachdb/cockroach/pull/143028 -[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 diff --git a/src/current/_includes/releases/v25.2/v25.2.0-alpha.3.md b/src/current/_includes/releases/v25.2/v25.2.0-alpha.3.md index e6cdbddb144..5c466525621 100644 --- a/src/current/_includes/releases/v25.2/v25.2.0-alpha.3.md +++ b/src/current/_includes/releases/v25.2/v25.2.0-alpha.3.md @@ -7,79 +7,58 @@ Release Date: April 7, 2025

SQL language changes

- `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] + - String comparisons are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '"a" < "b"');`. - [#143240][#143240] + - Added the `ST_3DLength` function, which returns the 3D or 2D length of `LINESTRING` and `MULTILINESTRING` spatial types. - [#139450][#139450] + - Updated 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] + - Unary arithmetic operators are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('[1, 2, 3]', '-$');`. - [#143613][#143613] + - 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] + - Null comparisons are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', 'null != 1');`. - [#143240][#143240] + - Wildcard key accessors are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{"a": 1, "b": true}', '$.*');`. - [#143588][#143588] + - `like_regex` predicate evaluation is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '"hello" like_regex "^he.*$"');`. - [#143240][#143240] +

Operational changes

- 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] +

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] +

Bug fixes

- Fixed a bug where index backfills unnecessarily merged new data written to an index, which could lead to extra contention. - [#142768][#142768] -- Column IDs are now validated when starting an `immediate` mode logical data replication stream. [#143773][#143773] + +- Column IDs are now validated when starting an `immediate` mode logical data replication stream. - 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 where index backfill progress before a `PAUSE`/`RESUME` would not get tracked. - [#142602][#142602] + - 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] + - 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] + - 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] +

Performance improvements

- 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] + - 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] - -[#143588]: https://github.com/cockroachdb/cockroach/pull/143588 -[#143384]: https://github.com/cockroachdb/cockroach/pull/143384 -[#143451]: https://github.com/cockroachdb/cockroach/pull/143451 -[#120079]: https://github.com/cockroachdb/cockroach/pull/120079 -[#143613]: https://github.com/cockroachdb/cockroach/pull/143613 -[#142768]: https://github.com/cockroachdb/cockroach/pull/142768 -[#143773]: https://github.com/cockroachdb/cockroach/pull/143773 -[#143538]: https://github.com/cockroachdb/cockroach/pull/143538 -[#143752]: https://github.com/cockroachdb/cockroach/pull/143752 -[#143674]: https://github.com/cockroachdb/cockroach/pull/143674 -[#143240]: https://github.com/cockroachdb/cockroach/pull/143240 -[#142602]: https://github.com/cockroachdb/cockroach/pull/142602 -[#143663]: https://github.com/cockroachdb/cockroach/pull/143663 -[#143777]: https://github.com/cockroachdb/cockroach/pull/143777 -[#143658]: https://github.com/cockroachdb/cockroach/pull/143658 -[#139450]: https://github.com/cockroachdb/cockroach/pull/139450 -[#142932]: https://github.com/cockroachdb/cockroach/pull/142932 -[#143456]: https://github.com/cockroachdb/cockroach/pull/143456 -[#113649]: https://github.com/cockroachdb/cockroach/pull/113649 diff --git a/src/current/_includes/releases/v25.2/v25.2.0-beta.1.md b/src/current/_includes/releases/v25.2/v25.2.0-beta.1.md index bec895e843c..2445839c8bb 100644 --- a/src/current/_includes/releases/v25.2/v25.2.0-beta.1.md +++ b/src/current/_includes/releases/v25.2/v25.2.0-beta.1.md @@ -7,55 +7,37 @@ Release Date: April 14, 2025

SQL language changes

- 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] -- 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] + +- 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. - 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] + - 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] + - `() 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] +

Operational changes

- The `kv.mvcc_gc.queue_kv_admission_control.enabled` cluster setting was retired. - [#143124][#143124] + - `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] +

Bug fixes

- Fixed an issue where hot range logging for virtual clusters omitted some hot ranges. - [#143775][#143775] + - 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 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 an issue where change data capture queries on tables without columns would fail with an internal error: `unable to determine result columns`. - [#142068][#142068] + - 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. - [#144178][#144178] + - Fixed an issue where databases, tables, and indexes were not appearing on the Hot Ranges page for application virtual clusters. - [#143441][#143441] - - -[#143827]: https://github.com/cockroachdb/cockroach/pull/143827 -[#143675]: https://github.com/cockroachdb/cockroach/pull/143675 -[#143124]: https://github.com/cockroachdb/cockroach/pull/143124 -[#143711]: https://github.com/cockroachdb/cockroach/pull/143711 -[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 -[#142068]: https://github.com/cockroachdb/cockroach/pull/142068 -[#143441]: https://github.com/cockroachdb/cockroach/pull/143441 -[#142927]: https://github.com/cockroachdb/cockroach/pull/142927 -[#143283]: https://github.com/cockroachdb/cockroach/pull/143283 -[#143857]: https://github.com/cockroachdb/cockroach/pull/143857 -[#144027]: https://github.com/cockroachdb/cockroach/pull/144027 -[#143820]: https://github.com/cockroachdb/cockroach/pull/143820 -[#143668]: https://github.com/cockroachdb/cockroach/pull/143668 -[#143122]: https://github.com/cockroachdb/cockroach/pull/143122 -[#144178]: https://github.com/cockroachdb/cockroach/pull/144178 diff --git a/src/current/_includes/releases/v25.2/v25.2.0-beta.2.md b/src/current/_includes/releases/v25.2/v25.2.0-beta.2.md index dff4a3d5ba2..7299bede992 100644 --- a/src/current/_includes/releases/v25.2/v25.2.0-beta.2.md +++ b/src/current/_includes/releases/v25.2/v25.2.0-beta.2.md @@ -7,37 +7,27 @@ Release Date: April 23, 2025

SQL language changes

- Added the `jsonb_path_match` function, which returns the result of a predicate query. - [#144271][#144271] + - The `.type()` method is now supported in JSONPath queries. For example, `SELECT jsonb_path_query('[1, 2, 3]', '$.type()');`. - [#144405][#144405] + - Removed the `ST_3DLength` function. - [#144549][#144549] + - Added the `jsonb_path_query_first` function, which returns the first result from `jsonb_path_query`. - [#144271][#144271] + - Parenthesized expressions are now supported in JSONPath queries. For example, `SELECT jsonb_path_query('{"a": {"b": true}}', '($.a).b');` - [#144298][#144298] + - The `.size()` method is now supported in JSONPath expressions. For example, `SELECT jsonb_path_query('[1, 2, 3]', '$.size()');`. - [#144405][#144405] + - Added the `jsonb_path_query_array` function, which returns the result of `jsonb_path_query` wrapped in a JSON array. - [#144271][#144271] +

Operational changes

- Logical data replication (LDR) now supports partial indexes by default. - [#144513][#144513] +

Miscellaneous

- Fixed a rare corruption bug that could affect `IMPORT`, physical cluster replication (PCR), `CREATE TABLE AS` (CTAS), and materialized view refreshes. - [#144663][#144663] -- Vector indexes created in v25.2.0-beta.1 are not compatible with later releases. Drop and re-create these indexes before using them with later releases. - [#144581][#144581] - -[#144581]: https://github.com/cockroachdb/cockroach/pull/144581 -[#144271]: https://github.com/cockroachdb/cockroach/pull/144271 -[#144405]: https://github.com/cockroachdb/cockroach/pull/144405 -[#144549]: https://github.com/cockroachdb/cockroach/pull/144549 -[#144298]: https://github.com/cockroachdb/cockroach/pull/144298 -[#144513]: https://github.com/cockroachdb/cockroach/pull/144513 -[#144663]: https://github.com/cockroachdb/cockroach/pull/144663 +- Vector indexes created in v25.2.0-beta.1 are not compatible with later releases. Drop and re-create these indexes before using them with later releases. diff --git a/src/current/_includes/releases/v25.2/v25.2.0-beta.3.md b/src/current/_includes/releases/v25.2/v25.2.0-beta.3.md index 04f425c4891..76966143553 100644 --- a/src/current/_includes/releases/v25.2/v25.2.0-beta.3.md +++ b/src/current/_includes/releases/v25.2/v25.2.0-beta.3.md @@ -6,36 +6,25 @@ Release Date: April 28, 2025

SQL language changes

-- `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. [#144601][#144601] -- Vector indexes do not support mutation while being created with `CREATE INDEX` or rebuilt with `ALTER PRIMARY KEY`. To prevent inadvertent application downtime, set the `sql_safe_updates` session setting to `false` when using `CREATE INDEX` or `ALTER PRIMARY KEY` with a vector index. [#144601][#144601] -- 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). [#144600][#144600] +- `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. +- Vector indexes do not support mutation while being created with `CREATE INDEX` or rebuilt with `ALTER PRIMARY KEY`. To prevent inadvertent application downtime, set the `sql_safe_updates` session setting to `false` when using `CREATE INDEX` or `ALTER PRIMARY KEY` with a vector index. +- 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).

Bug fixes

-- Fixed a bug that could cause a changefeed to complete erroneously when one of its watched tables encounters a schema change. [#144717][#144717] +- Fixed a bug that could cause a changefeed to complete erroneously when one of its watched tables encounters a schema change. - 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. - [#144666][#144666] + - Fixed the following bugs in the **Schedules** page of the DB Console: - Where the **Schedules** page displayed only a subset of a cluster's schedules. The **Schedules** page now correctly displays all schedules. - 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. - [#144807][#144807] + - Fixed a bug in the **SQL Activity Statements** page where filtering by **Statement Type** returned no results. The filter now works as expected. - [#144851][#144851] -- 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. - [#144656][#144656] -

Performance improvements

+- 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. -- Triggers now perform the descriptor lookup for `TG_TABLE_SCHEMA` against a cache. This can significantly reduce trigger planning latency in multi-region databases. [#144521][#144521] -- The vector search optimizer rule now supports additional projections beyond the distance column, including the implicit projections added for virtual columns. [#144583][#144583] +

Performance improvements

-[#144656]: https://github.com/cockroachdb/cockroach/pull/144656 -[#144521]: https://github.com/cockroachdb/cockroach/pull/144521 -[#144583]: https://github.com/cockroachdb/cockroach/pull/144583 -[#144601]: https://github.com/cockroachdb/cockroach/pull/144601 -[#144600]: https://github.com/cockroachdb/cockroach/pull/144600 -[#144807]: https://github.com/cockroachdb/cockroach/pull/144807 -[#144851]: https://github.com/cockroachdb/cockroach/pull/144851 -[#144717]: https://github.com/cockroachdb/cockroach/pull/144717 -[#144666]: https://github.com/cockroachdb/cockroach/pull/144666 +- Triggers now perform the descriptor lookup for `TG_TABLE_SCHEMA` against a cache. This can significantly reduce trigger planning latency in multi-region databases. +- The vector search optimizer rule now supports additional projections beyond the distance column, including the implicit projections added for virtual columns. diff --git a/src/current/_includes/releases/v25.2/v25.2.0-rc.1.md b/src/current/_includes/releases/v25.2/v25.2.0-rc.1.md index 7d519f2a400..d705977d8c9 100644 --- a/src/current/_includes/releases/v25.2/v25.2.0-rc.1.md +++ b/src/current/_includes/releases/v25.2/v25.2.0-rc.1.md @@ -7,51 +7,36 @@ Release Date: May 12, 2025

SQL language changes

- 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. - [#144819][#144819] + - 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. - [#144902][#144902] + - 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. - [#144902][#144902] + - Added support for numeric JSONPath methods `.abs()`, `.floor()`, `.ceiling()`. For example, `SELECT jsonb_path_query('-0.5', '$.abs()');`. - [#145121][#145121] + - Disabled `IMPORT INTO` for tables with vector indexes, because importing into vector indexes is not implemented. - [#145262][#145262] + - Added support for `like_regex` flags in JSONPath queries. For example, `SELECT jsonb_path_query('{}', '"a" like_regex ".*" flag "i"');`. - [#145300][#145300] + - Vector index creation is now prevented until the entire cluster upgrade has been finalized on v25.2 or later. - [#145449][#145449] +

Bug fixes

- `NULL` vectors can now be inserted into tables with vector indexes. - [#144858][#144858] + - 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. - [#145157][#145157] + - Fixed a bug that allowed a set-returning PL/pgSQL function to be created before the version change was finalized. This bug existed in v25.2 alpha and beta releases. - [#145381][#145381] + - 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. - [#145409][#145409] +

Performance improvements

- 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. - [#144825][#144825] +

Miscellaneous

- 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. - [#145111][#145111] - - -[#144819]: https://github.com/cockroachdb/cockroach/pull/144819 -[#145121]: https://github.com/cockroachdb/cockroach/pull/145121 -[#145262]: https://github.com/cockroachdb/cockroach/pull/145262 -[#145300]: https://github.com/cockroachdb/cockroach/pull/145300 -[#145381]: https://github.com/cockroachdb/cockroach/pull/145381 -[#145409]: https://github.com/cockroachdb/cockroach/pull/145409 -[#145111]: https://github.com/cockroachdb/cockroach/pull/145111 -[#144902]: https://github.com/cockroachdb/cockroach/pull/144902 -[#145449]: https://github.com/cockroachdb/cockroach/pull/145449 -[#144858]: https://github.com/cockroachdb/cockroach/pull/144858 -[#145157]: https://github.com/cockroachdb/cockroach/pull/145157 -[#144825]: https://github.com/cockroachdb/cockroach/pull/144825 diff --git a/src/current/_includes/releases/v25.2/v25.2.1.md b/src/current/_includes/releases/v25.2/v25.2.1.md index 721850ca321..11344b4be57 100644 --- a/src/current/_includes/releases/v25.2/v25.2.1.md +++ b/src/current/_includes/releases/v25.2/v25.2.1.md @@ -7,98 +7,66 @@ Release Date: June 4, 2025

SQL language changes

- Added the `sql.metrics.application_name.enabled` and `sql.metrics.database_name.enabled` cluster settings. These settings default to `false`. Set them to `true` to include the application and database name, respectively, in supported metrics. - [#144932][#144932] +

Operational changes

- 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. - [#145223][#145223] + - Logs for hot ranges (`hot_ranges_stats` events) have been moved to the `HEALTH` logging channel. - [#146762][#146762] +

DB Console changes

- 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. - [#145993][#145993] +

Bug fixes

- Improved the performance of `SHOW CREATE TABLE` on multi-region databases with large numbers of objects. - [#145004][#145004] + - 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. - [#145363][#145363] + - 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. - [#145386][#145386] + - Fixed a bug that could lead to schema changes hanging after a cluster recovered from availability issues. - [#145545][#145545] + - 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. - [#145576][#145576] + - 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. - [#145917][#145917] + - 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). - [#145999][#145999] + - Creating a vector index on a table that contains a `NULL` vector value will no longer cause an internal error. - [#146017][#146017] + - 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. - [#146128][#146128] + - Fixed an internal assertion failure that could occur during operations like `ALTER TYPE` or `ALTER DATABASE ... ADD REGION` when temporary tables were present. - [#146196][#146196] + - 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 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. - [#146326][#146326] + - Fixed a bug that could lead to a node stall. - [#146409][#146409] + - Fixed an integer overflow in the `split_part` function when using extremely negative field positions like Go's `math.MinInt64`. - [#146413][#146413] + - Fixed a bug where an invalid comment in the `system.comment` table for a schema object could make it inaccessible. - [#146418][#146418] + - 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. - [#146501][#146501] + - 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. - [#146605][#146605] + - 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. - [#146697][#146697] + - Fixed an internal error that could be hit when `ADD COLUMN UNIQUE` and `ALTER PRIMARY KEY` were executed within the same transaction. - [#146743][#146743] + - Fixed a bug where `ALTER TABLE` operations with multiple commands could generate invalid zone configurations. - [#146750][#146750] + - 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. - [#146849][#146849] + - Fixed an issue where updating child metrics and reinitializing metrics at the same time could cause scrape errors. - [#147531][#147531] + - Fixed a runtime panic in the `substring_index` function that occurred when the count argument was the minimum 64-bit integer value. - [#147550][#147550] + - 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. - [#147564][#147564] - - -[#146017]: https://github.com/cockroachdb/cockroach/pull/146017 -[#146697]: https://github.com/cockroachdb/cockroach/pull/146697 -[#147564]: https://github.com/cockroachdb/cockroach/pull/147564 -[#147550]: https://github.com/cockroachdb/cockroach/pull/147550 -[#146762]: https://github.com/cockroachdb/cockroach/pull/146762 -[#145363]: https://github.com/cockroachdb/cockroach/pull/145363 -[#146326]: https://github.com/cockroachdb/cockroach/pull/146326 -[#146409]: https://github.com/cockroachdb/cockroach/pull/146409 -[#145386]: https://github.com/cockroachdb/cockroach/pull/145386 -[#145917]: https://github.com/cockroachdb/cockroach/pull/145917 -[#146501]: https://github.com/cockroachdb/cockroach/pull/146501 -[#146605]: https://github.com/cockroachdb/cockroach/pull/146605 -[#145223]: https://github.com/cockroachdb/cockroach/pull/145223 -[#145999]: https://github.com/cockroachdb/cockroach/pull/145999 -[#146849]: https://github.com/cockroachdb/cockroach/pull/146849 -[#147531]: https://github.com/cockroachdb/cockroach/pull/147531 -[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 -[#146196]: https://github.com/cockroachdb/cockroach/pull/146196 -[#145993]: https://github.com/cockroachdb/cockroach/pull/145993 -[#146128]: https://github.com/cockroachdb/cockroach/pull/146128 -[#146413]: https://github.com/cockroachdb/cockroach/pull/146413 -[#146743]: https://github.com/cockroachdb/cockroach/pull/146743 -[#146750]: https://github.com/cockroachdb/cockroach/pull/146750 -[#144932]: https://github.com/cockroachdb/cockroach/pull/144932 -[#145004]: https://github.com/cockroachdb/cockroach/pull/145004 -[#145545]: https://github.com/cockroachdb/cockroach/pull/145545 -[#145576]: https://github.com/cockroachdb/cockroach/pull/145576 -[#146292]: https://github.com/cockroachdb/cockroach/pull/146292 -[#146418]: https://github.com/cockroachdb/cockroach/pull/146418 diff --git a/src/current/_includes/releases/v25.2/v25.2.10.md b/src/current/_includes/releases/v25.2/v25.2.10.md index b9f72be98d8..2267f22c225 100644 --- a/src/current/_includes/releases/v25.2/v25.2.10.md +++ b/src/current/_includes/releases/v25.2/v25.2.10.md @@ -6,25 +6,18 @@ Release Date: December 12, 2025

DB Console changes

-- The background (elastic) store graphs for exhausted duration, and the wait duration histogram, have been separated from the foreground (regular) graphs. [#156868][#156868] +- The background (elastic) store graphs for exhausted duration, and the wait duration histogram, have been separated from the foreground (regular) graphs.

Bug fixes

-- A mechanism that prevents unsafe replication changes from causing loss of quorum now functions correctly. An internal function has been fixed to properly return errors, enhancing the reliability of replication safeguards. [#156521][#156521] -- Fixed a bug that could cause internal errors for queries using generic query plans with `NULL` placeholder values. [#156977][#156977] +- A mechanism that prevents unsafe replication changes from causing loss of quorum now functions correctly. An internal function has been fixed to properly return errors, enhancing the reliability of replication safeguards. +- Fixed a bug that could cause internal errors for queries using generic query plans with `NULL` placeholder values.

Performance improvements

-- The cost of generic query plans is now calculated based on worst-case selectivities for placeholder equalities (e.g., `x = $1`). This reduces the chance of suboptimal generic query plans being chosen when `plan_cache_mode=auto`. [#156797][#156797] +- 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`.

Miscellaneous

- Span config reconciliation jobs no longer fail on the - destination after failover from a PCR stream of a system virtual cluster. [#156810][#156810] - - -[#156797]: https://github.com/cockroachdb/cockroach/pull/156797 -[#156810]: https://github.com/cockroachdb/cockroach/pull/156810 -[#156868]: https://github.com/cockroachdb/cockroach/pull/156868 -[#156521]: https://github.com/cockroachdb/cockroach/pull/156521 -[#156977]: https://github.com/cockroachdb/cockroach/pull/156977 + destination after failover from a PCR stream of a system virtual cluster. diff --git a/src/current/_includes/releases/v25.2/v25.2.11.md b/src/current/_includes/releases/v25.2/v25.2.11.md index cb6ad30c39f..660475b8e2c 100644 --- a/src/current/_includes/releases/v25.2/v25.2.11.md +++ b/src/current/_includes/releases/v25.2/v25.2.11.md @@ -6,35 +6,24 @@ Release Date: January 9, 2026

Operational changes

-- Successfully completed automatic SQL stats collecton jobs are now automatically purged rather than being retained for the full default job retention period. [#159411][#159411] +- Successfully completed automatic SQL stats collecton jobs are now automatically purged rather than being retained for the full default job retention period.

Bug fixes

-- Fixed a bug where a SQL statement with side effects (e.g., `INSERT`) inside a PL/pgSQL routine could be dropped if it used an `INTO` clause and none of the target variables were referenced. This bug had been present since v23.2. [#158344][#158344] -- Attempting to create a vector index with the legacy schema changer will now fail gracefully instead of crashing the node. [#158718][#158718] +- Fixed a bug where a SQL statement with side effects (e.g., `INSERT`) inside a PL/pgSQL routine could be dropped if it used an `INTO` clause and none of the target variables were referenced. This bug had been present since v23.2. +- Attempting to create a vector index with the legacy schema changer will now fail gracefully instead of crashing the node. - Fixed a bug that could cause incorrect query results when using prepared statements with _NULL_ placeholders. The bug has existed since v21.2 and violated SQL _NULL_-equality semantics by returning rows with _NULL_ values when the result set should have been empty. From v21.2 to v25.3, the bug occurred when all of the following were true: - The query was run with an explicit or implicit prepared statement - The query had an equality filter on a placeholder and a `UNIQUE` column - The column contained _NULL_ values - The placeholder was assigned to _NULL_ during execution - - Starting in v25.4, the requirements to trigger the bug were loosened: the column no longer needed to be `UNIQUE`, and the bug could be reproduced if the column was included in any index. [#159070][#159070] -- Fixed a race condition that could occur during context cancellation of an incoming snapshot. [#159537][#159537] -- Fixed a bug that could cause a panic during changefeed startup if an error occurred while initializing the metrics controller. [#159546][#159546] -- Fixed a bug causing a query predicate to be ignored when the predicate was on a column following one or more `ENUM` columns in an index, the predicate constrained the column to multiple values, and a lookup join to the index was chosen for the query plan. This bug was introduced in v24.3.0 and was present in all versions since. [#159775][#159775] -- Fixed a deadlock that could occur when a statistics creation task panicked. [#160582][#160582] + - Starting in v25.4, the requirements to trigger the bug were loosened: the column no longer needed to be `UNIQUE`, and the bug could be reproduced if the column was included in any index. +- Fixed a race condition that could occur during context cancellation of an incoming snapshot. +- Fixed a bug that could cause a panic during changefeed startup if an error occurred while initializing the metrics controller. +- Fixed a bug causing a query predicate to be ignored when the predicate was on a column following one or more `ENUM` columns in an index, the predicate constrained the column to multiple values, and a lookup join to the index was chosen for the query plan. This bug was introduced in v24.3.0 and was present in all versions since. +- Fixed a deadlock that could occur when a statistics creation task panicked.

Performance improvements

-- `AFTER` triggers now use a cache for descriptor lookups of `TG_TABLE_SCHEMA`, which can significantly reduce trigger planning latency. [#159387][#159387] -- Added a new session variable, `distsql_prevent_partitioning_soft_limited_scans`, which, when true, prevents scans with soft limits from being planned as multiple `TableReaders` by the physical planner. This should decrease the initial setup costs of some fully-distributed query plans. [#160605][#160605] - -[#159411]: https://github.com/cockroachdb/cockroach/pull/159411 -[#158344]: https://github.com/cockroachdb/cockroach/pull/158344 -[#158718]: https://github.com/cockroachdb/cockroach/pull/158718 -[#159775]: https://github.com/cockroachdb/cockroach/pull/159775 -[#160582]: https://github.com/cockroachdb/cockroach/pull/160582 -[#159070]: https://github.com/cockroachdb/cockroach/pull/159070 -[#159537]: https://github.com/cockroachdb/cockroach/pull/159537 -[#159546]: https://github.com/cockroachdb/cockroach/pull/159546 -[#159387]: https://github.com/cockroachdb/cockroach/pull/159387 -[#160605]: https://github.com/cockroachdb/cockroach/pull/160605 +- `AFTER` triggers now use a cache for descriptor lookups of `TG_TABLE_SCHEMA`, which can significantly reduce trigger planning latency. +- Added a new session variable, `distsql_prevent_partitioning_soft_limited_scans`, which, when true, prevents scans with soft limits from being planned as multiple `TableReaders` by the physical planner. This should decrease the initial setup costs of some fully-distributed query plans. diff --git a/src/current/_includes/releases/v25.2/v25.2.12.md b/src/current/_includes/releases/v25.2/v25.2.12.md index 89d1e183346..279e5b68c55 100644 --- a/src/current/_includes/releases/v25.2/v25.2.12.md +++ b/src/current/_includes/releases/v25.2/v25.2.12.md @@ -6,30 +6,21 @@ Release Date: February 11, 2026

General changes

-- Changefeeds now support the `partition_alg` option for specifying a kafka partitioning algorithm. Currently `fnv-1a` (default) and `murmur2` are supported. The option is only valid on kafka v2 sinks. This is protected by the cluster setting `changefeed.partition_alg.enabled`. An example usage: `SET CLUSTER SETTING changefeed.partition_alg.enabled=true; CREATE CHANGEFEED ... INTO 'kafka://...' WITH partition_alg='murmur2';` Note that if a changefeed is created using the `murmur2` algorithm, and then the cluster setting is disabled, the changefeed continues using the `murmur2` algorithm unless the changefeed is altered to use a differed `partition_alg`. [#161525][#161525] +- Changefeeds now support the `partition_alg` option for specifying a kafka partitioning algorithm. Currently `fnv-1a` (default) and `murmur2` are supported. The option is only valid on kafka v2 sinks. This is protected by the cluster setting `changefeed.partition_alg.enabled`. An example usage: `SET CLUSTER SETTING changefeed.partition_alg.enabled=true; CREATE CHANGEFEED ... INTO 'kafka://...' WITH partition_alg='murmur2';` Note that if a changefeed is created using the `murmur2` algorithm, and then the cluster setting is disabled, the changefeed continues using the `murmur2` algorithm unless the changefeed is altered to use a differed `partition_alg`.

Bug fixes

-- Fixed a deadlock that could occur when a statistics creation task panicked. [#160419][#160419] -- Fixed a bug where dropping a trigger on a table with a self-referencing foreign key could cause a missing reference between the objects. [#161025][#161025] -- Fixed a bug where `IMPORT` with Avro data using `OCF` format could silently lose data if the underlying storage (e.g., S3) returned an error during read. Such errors are now properly reported. Other formats (specified via `data_as_binary_records` and `data_as_json_records` options) are unaffected. The bug has been present since approximately v20.1. [#161322][#161322] +- Fixed a deadlock that could occur when a statistics creation task panicked. +- Fixed a bug where dropping a trigger on a table with a self-referencing foreign key could cause a missing reference between the objects. +- Fixed a bug where `IMPORT` with Avro data using `OCF` format could silently lose data if the underlying storage (e.g., S3) returned an error during read. Such errors are now properly reported. Other formats (specified via `data_as_binary_records` and `data_as_json_records` options) are unaffected. The bug has been present since approximately v20.1. - Fixed an error that occurred when using generic plan that generates a lookup join on indexes containing identity - computed columns. [#162339][#162339] + computed columns.

Performance improvements

-- Added a new session variable, `distsql_prevent_partitioning_soft_limited_scans`, which, when true, prevents scans with soft limits from being planned as multiple TableReaders by the physical planner. This should decrease the initial setup costs of some fully-distributed query plans. [#160630][#160630] +- Added a new session variable, `distsql_prevent_partitioning_soft_limited_scans`, which, when true, prevents scans with soft limits from being planned as multiple TableReaders by the physical planner. This should decrease the initial setup costs of some fully-distributed query plans.

Miscellaneous

-- `kv.transaction.write_buffering.enabled` is removed from the public cluster settings to better reflect its preview status. [#162027][#162027] - - -[#161525]: https://github.com/cockroachdb/cockroach/pull/161525 -[#160419]: https://github.com/cockroachdb/cockroach/pull/160419 -[#161025]: https://github.com/cockroachdb/cockroach/pull/161025 -[#161322]: https://github.com/cockroachdb/cockroach/pull/161322 -[#162339]: https://github.com/cockroachdb/cockroach/pull/162339 -[#160630]: https://github.com/cockroachdb/cockroach/pull/160630 -[#162027]: https://github.com/cockroachdb/cockroach/pull/162027 +- `kv.transaction.write_buffering.enabled` is removed from the public cluster settings to better reflect its preview status. diff --git a/src/current/_includes/releases/v25.2/v25.2.13.md b/src/current/_includes/releases/v25.2/v25.2.13.md index 430041c5f5b..4148adb7e9c 100644 --- a/src/current/_includes/releases/v25.2/v25.2.13.md +++ b/src/current/_includes/releases/v25.2/v25.2.13.md @@ -6,9 +6,5 @@ Release Date: February 19, 2026

Bug fixes

-- Fixed a rare race condition between range splits and MVCC garbage collection where a GCRequest could target keys outside its declared span. In rare cases, this could result in data on the post-split right-hand side (RHS) being incorrectly garbage collected, potentially leading to lost writes. The system now detects and rejects such malformed GC requests. [#163773][#163773] -- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using json or json-compact formatting. Debug zip generation now safely handles malformed log lines and prevents excessive memory consumption. [#163801][#163801] - - -[#163773]: https://github.com/cockroachdb/cockroach/pull/163773 -[#163801]: https://github.com/cockroachdb/cockroach/pull/163801 +- Fixed a rare race condition between range splits and MVCC garbage collection where a GCRequest could target keys outside its declared span. In rare cases, this could result in data on the post-split right-hand side (RHS) being incorrectly garbage collected, potentially leading to lost writes. The system now detects and rejects such malformed GC requests. +- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using json or json-compact formatting. Debug zip generation now safely handles malformed log lines and prevents excessive memory consumption. diff --git a/src/current/_includes/releases/v25.2/v25.2.14.md b/src/current/_includes/releases/v25.2/v25.2.14.md index 7392352f439..4f2ae971424 100644 --- a/src/current/_includes/releases/v25.2/v25.2.14.md +++ b/src/current/_includes/releases/v25.2/v25.2.14.md @@ -6,7 +6,4 @@ Release Date: March 5, 2026

Bug fixes

-- Fixed a bug where an internal context structure could grow unboundedly over time. In rare cases, on nodes running continuously for several months or more, this could cause the `cockroach` process to appear stalled when a CPU profile was requested.​​​​​​​​​​​​​​​​ [#164779][#164779] - - -[#164779]: https://github.com/cockroachdb/cockroach/pull/164779 +- Fixed a bug where an internal context structure could grow unboundedly over time. In rare cases, on nodes running continuously for several months or more, this could cause the `cockroach` process to appear stalled when a CPU profile was requested.​​​​​​​​​​​​​​​​ diff --git a/src/current/_includes/releases/v25.2/v25.2.15.md b/src/current/_includes/releases/v25.2/v25.2.15.md index 81362e6b0b9..51535380313 100644 --- a/src/current/_includes/releases/v25.2/v25.2.15.md +++ b/src/current/_includes/releases/v25.2/v25.2.15.md @@ -6,9 +6,5 @@ Release Date: March 9, 2026

Bug fixes

-- Fixed a bug that could cause changefeeds using Kafka v1 sinks to hang when the changefeed was cancelled. [#162118][#162118] -- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using `json` or `json-compact` formatting. This bug was introduced in v24.1. [#163357][#163357] - - -[#162118]: https://github.com/cockroachdb/cockroach/pull/162118 -[#163357]: https://github.com/cockroachdb/cockroach/pull/163357 +- Fixed a bug that could cause changefeeds using Kafka v1 sinks to hang when the changefeed was cancelled. +- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using `json` or `json-compact` formatting. This bug was introduced in v24.1. diff --git a/src/current/_includes/releases/v25.2/v25.2.16.md b/src/current/_includes/releases/v25.2/v25.2.16.md index 1a7dba0bc6e..59844580af8 100644 --- a/src/current/_includes/releases/v25.2/v25.2.16.md +++ b/src/current/_includes/releases/v25.2/v25.2.16.md @@ -6,8 +6,5 @@ Release Date: April 3, 2026

Bug fixes

-- Fixed a bug where CockroachDB did not always promptly respond to the statement timeout when performing a hash join with an `ON` filter that is mostly `false`. [#164889][#164889] -- Fixed a bug that could cause row sampling for table statistics to crash a node due to a data race when processing a collated string column with values larger than 400 bytes. This bug has existed since before v23.1. [#165570][#165570] - -[#164889]: https://github.com/cockroachdb/cockroach/pull/164889 -[#165570]: https://github.com/cockroachdb/cockroach/pull/165570 +- Fixed a bug where CockroachDB did not always promptly respond to the statement timeout when performing a hash join with an `ON` filter that is mostly `false`. +- Fixed a bug that could cause row sampling for table statistics to crash a node due to a data race when processing a collated string column with values larger than 400 bytes. This bug has existed since before v23.1. diff --git a/src/current/_includes/releases/v25.2/v25.2.17.md b/src/current/_includes/releases/v25.2/v25.2.17.md index 235edd72e65..f016fd76275 100644 --- a/src/current/_includes/releases/v25.2/v25.2.17.md +++ b/src/current/_includes/releases/v25.2/v25.2.17.md @@ -6,9 +6,5 @@ Release Date: April 20, 2026

Bug fixes

-- Fixed a bug where concurrent updates to a table using multiple column families during a partial index creation could result in data loss, incorrect `NULL` values, or validation failures in the resulting index. [#168473][#168473] -- Fixed a bug that caused Logical Data Replication (LDR) job creation to fail during rolling upgrades from v24.3 directly to v25.2. [#167433][#167433] - - -[#168473]: https://github.com/cockroachdb/cockroach/pull/168473 -[#167433]: https://github.com/cockroachdb/cockroach/pull/167433 +- Fixed a bug where concurrent updates to a table using multiple column families during a partial index creation could result in data loss, incorrect `NULL` values, or validation failures in the resulting index. +- Fixed a bug that caused Logical Data Replication (LDR) job creation to fail during rolling upgrades from v24.3 directly to v25.2. diff --git a/src/current/_includes/releases/v25.2/v25.2.18.md b/src/current/_includes/releases/v25.2/v25.2.18.md index fbdef71e555..09517459f43 100644 --- a/src/current/_includes/releases/v25.2/v25.2.18.md +++ b/src/current/_includes/releases/v25.2/v25.2.18.md @@ -6,17 +6,9 @@ Release Date: May 1, 2026

Bug fixes

-- Fixed a bug where the view owner's privileges on underlying tables were not checked when selecting from a view. A view would continue to work even after the owner lost access to the underlying tables. This also affects row-level security (RLS); the view invoker's RLS policies are enforced instead of the view owner's. To enforce privilege checks on underlying tables, set the `sql.auth.skip_underlying_view_privilege_checks.enabled` cluster setting to `false`. This setting defaults to `true` to prevent backward-incompatible behavior. [#166743][#166743] -- Fixed a bug where `IMPORT` error messages could include unredacted cloud storage credentials from the source URI. Credentials are now stripped from URIs before they appear in error messages. [#167948][#167948] -- Fixed a bug where transient I/O errors (such as cloud storage network timeouts) during split or merge trigger evaluation were misidentified as replica corruption, causing the node to crash. These errors now correctly fail the operation, which is retried automatically. [#168108][#168108] -- Fixed a bug where transient I/O errors reading from the `AbortSpan` were misidentified as replica corruption, causing the node to crash. These errors are now returned to the caller as regular errors. [#168109][#168109] -- Fixed a bug where privilege checks on the DB Console Databases page did not resolve role membership chains for `CONNECT` grants. Users who inherited `CONNECT` through role hierarchies now correctly see their authorized databases and tables. [#168489][#168489] -- Fixed a bug where unqualified function calls could fail with incorrect privilege errors when two databases on the same cluster had identically-named functions in custom schemas. The query cache could serve a memo from one database context to another, causing `USAGE` privilege errors referencing schemas from the wrong database. [#169296][#169296] - - -[#168109]: https://github.com/cockroachdb/cockroach/pull/168109 -[#168489]: https://github.com/cockroachdb/cockroach/pull/168489 -[#169296]: https://github.com/cockroachdb/cockroach/pull/169296 -[#166743]: https://github.com/cockroachdb/cockroach/pull/166743 -[#167948]: https://github.com/cockroachdb/cockroach/pull/167948 -[#168108]: https://github.com/cockroachdb/cockroach/pull/168108 +- Fixed a bug where the view owner's privileges on underlying tables were not checked when selecting from a view. A view would continue to work even after the owner lost access to the underlying tables. This also affects row-level security (RLS); the view invoker's RLS policies are enforced instead of the view owner's. To enforce privilege checks on underlying tables, set the `sql.auth.skip_underlying_view_privilege_checks.enabled` cluster setting to `false`. This setting defaults to `true` to prevent backward-incompatible behavior. +- Fixed a bug where `IMPORT` error messages could include unredacted cloud storage credentials from the source URI. Credentials are now stripped from URIs before they appear in error messages. +- Fixed a bug where transient I/O errors (such as cloud storage network timeouts) during split or merge trigger evaluation were misidentified as replica corruption, causing the node to crash. These errors now correctly fail the operation, which is retried automatically. +- Fixed a bug where transient I/O errors reading from the `AbortSpan` were misidentified as replica corruption, causing the node to crash. These errors are now returned to the caller as regular errors. +- Fixed a bug where privilege checks on the DB Console Databases page did not resolve role membership chains for `CONNECT` grants. Users who inherited `CONNECT` through role hierarchies now correctly see their authorized databases and tables. +- Fixed a bug where unqualified function calls could fail with incorrect privilege errors when two databases on the same cluster had identically-named functions in custom schemas. The query cache could serve a memo from one database context to another, causing `USAGE` privilege errors referencing schemas from the wrong database. diff --git a/src/current/_includes/releases/v25.2/v25.2.2.md b/src/current/_includes/releases/v25.2/v25.2.2.md index 7bc53ea041f..bce110bca44 100644 --- a/src/current/_includes/releases/v25.2/v25.2.2.md +++ b/src/current/_includes/releases/v25.2/v25.2.2.md @@ -7,68 +7,47 @@ Release Date: June 25, 2025

Operational changes

- When `server.telemetry.hot_ranges_stats.enabled` cluster setting is enabled, nodes now log hot ranges every minute if they exceed 250ms of CPU time per second. In multi-tenant deployments, this check occurs every 5 minutes at the cluster level, improving visibility into transient performance issues. - [#146887][#146887] + - 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). - [#147169][#147169] +

DB Console changes

- 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. - [#147778][#147778] +

Bug fixes

- 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). - [#146886][#146886] + - 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. - [#146975][#146975] + - 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. - [#146977][#146977] + - 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. - [#147223][#147223] + - 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. - [#147376][#147376] + - 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`. - [#147417][#147417] + - 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. - [#147438][#147438] + - 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. - [#147460][#147460] + - Fixed a runtime panic in the `substring_index` function that occurred when the count argument was the minimum 64-bit integer value. - [#147549][#147549] + - 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. - [#147563][#147563] + - Fixed a bug where prepared statements on schema changes could fail with runtime errors. - [#147671][#147671] + - Fixed a bug where `ALTER TABLE` was modifying identity attributes on columns not backed by a sequence. - [#147711][#147711] +

Performance improvements

- TTL jobs now respond to cluster topology changes by restarting and rebalancing across available nodes. - [#147083][#147083] +

Miscellaneous

- Fixed an issue in Logical Data Replication (LDR) where unique indexes with lower index IDs than the primary key could cause incorrect DLQ entries during replication. - [#147350][#147350] - - -[#147169]: https://github.com/cockroachdb/cockroach/pull/147169 -[#147778]: https://github.com/cockroachdb/cockroach/pull/147778 -[#146886]: https://github.com/cockroachdb/cockroach/pull/146886 -[#146975]: https://github.com/cockroachdb/cockroach/pull/146975 -[#147223]: https://github.com/cockroachdb/cockroach/pull/147223 -[#147417]: https://github.com/cockroachdb/cockroach/pull/147417 -[#146887]: https://github.com/cockroachdb/cockroach/pull/146887 -[#147671]: https://github.com/cockroachdb/cockroach/pull/147671 -[#147350]: https://github.com/cockroachdb/cockroach/pull/147350 -[#147376]: https://github.com/cockroachdb/cockroach/pull/147376 -[#147438]: https://github.com/cockroachdb/cockroach/pull/147438 -[#147460]: https://github.com/cockroachdb/cockroach/pull/147460 -[#147532]: https://github.com/cockroachdb/cockroach/pull/147532 -[#147563]: https://github.com/cockroachdb/cockroach/pull/147563 -[#146977]: https://github.com/cockroachdb/cockroach/pull/146977 -[#147711]: https://github.com/cockroachdb/cockroach/pull/147711 -[#147083]: https://github.com/cockroachdb/cockroach/pull/147083 -[#147549]: https://github.com/cockroachdb/cockroach/pull/147549 diff --git a/src/current/_includes/releases/v25.2/v25.2.3.md b/src/current/_includes/releases/v25.2/v25.2.3.md index fa12edf8aea..313ad25c5ef 100644 --- a/src/current/_includes/releases/v25.2/v25.2.3.md +++ b/src/current/_includes/releases/v25.2/v25.2.3.md @@ -7,36 +7,36 @@ Release Date: July 28, 2025

General changes

- 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. - [#147929][#147929] +

SQL language changes

- 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. - [#148207][#148207] + - 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`). - [#148207][#148207] +

DB Console changes

- Updated the "Learn more" link on the **Hot Ranges** page to direct users to a newer, more comprehensive reference guide about hotspots. - [#148522][#148522] +

Bug fixes

- Fixed a data race in the `cloudstorage` sink. - [#147163][#147163] + - 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. - [#147875][#147875] + - Fixed a bug where functions lost their row-level security (RLS) policy backreferences, leading to schema change failures. - [#147905][#147905] + - Fixed an error in `crdb_internal.table_spans` that could occur when a table's schema had been dropped. - [#147977][#147977] + - Fixed a bug where adding multiple columns in a single statement with `AddGeometryColumn` would cause runtime errors. - [#148146][#148146] + - Fixed a bug where `libpq` clients using the async API could hang with large result sets (Python: psycopg; Ruby: ActiveRecord, ruby-pg). - [#148468][#148468] + - 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. - [#149301][#149301] + - The `RESET ALL` statement no longer affects the following session variables: - `is_superuser` - `role` @@ -47,38 +47,18 @@ Release Date: July 28, 2025 - `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. - [#149388][#149388] + - 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. - [#149625][#149625] + - 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. - [#149921][#149921] + - 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. - [#150185][#150185] + - Fixed a bug that would allow a race condition in foreign key cascades under `READ COMMITTED` and `REPEATABLE READ` isolation levels. - [#150338][#150338] + - 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`. - [#150441][#150441] +

Miscellaneous

- Restore no longer gets stuck in the reverting state after failed cleanup of dropped temporary system tables. - [#148485][#148485] - - -[#148522]: https://github.com/cockroachdb/cockroach/pull/148522 -[#147977]: https://github.com/cockroachdb/cockroach/pull/147977 -[#148485]: https://github.com/cockroachdb/cockroach/pull/148485 -[#148207]: https://github.com/cockroachdb/cockroach/pull/148207 -[#147875]: https://github.com/cockroachdb/cockroach/pull/147875 -[#147905]: https://github.com/cockroachdb/cockroach/pull/147905 -[#149625]: https://github.com/cockroachdb/cockroach/pull/149625 -[#150441]: https://github.com/cockroachdb/cockroach/pull/150441 -[#147929]: https://github.com/cockroachdb/cockroach/pull/147929 -[#147163]: https://github.com/cockroachdb/cockroach/pull/147163 -[#150185]: https://github.com/cockroachdb/cockroach/pull/150185 -[#148146]: https://github.com/cockroachdb/cockroach/pull/148146 -[#148468]: https://github.com/cockroachdb/cockroach/pull/148468 -[#149301]: https://github.com/cockroachdb/cockroach/pull/149301 -[#149388]: https://github.com/cockroachdb/cockroach/pull/149388 -[#149921]: https://github.com/cockroachdb/cockroach/pull/149921 -[#150338]: https://github.com/cockroachdb/cockroach/pull/150338 diff --git a/src/current/_includes/releases/v25.2/v25.2.4.md b/src/current/_includes/releases/v25.2/v25.2.4.md index c6c6a2e1bfd..2c5a218f72a 100644 --- a/src/current/_includes/releases/v25.2/v25.2.4.md +++ b/src/current/_includes/releases/v25.2/v25.2.4.md @@ -7,7 +7,3 @@ Release Date: August 1, 2025

Bug fixes

- Fixed a bug that could cause some errors returned by attempts to upload backup data to external storage providers to be undetected, potentially causing incomplete backups. - [#151095][#151095] - - -[#151095]: https://github.com/cockroachdb/cockroach/pull/151095 diff --git a/src/current/_includes/releases/v25.2/v25.2.5.md b/src/current/_includes/releases/v25.2/v25.2.5.md index 1224dcff43c..598f49ec461 100644 --- a/src/current/_includes/releases/v25.2/v25.2.5.md +++ b/src/current/_includes/releases/v25.2/v25.2.5.md @@ -8,50 +8,32 @@ Release Date: August 22, 2025 - Kafka v2 changefeed sinks now support a cluster setting that enables detailed error logging for messages - exceeding Kafka v2 size limit. [#149829][#149829] + exceeding Kafka v2 size limit.

Operational changes

-- 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. [#149837][#149837] +- 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.

Bug fixes

-- Fixed an issue where the mvcc_timestamp field was incorrectly returning zero values when used with CDC queries. The timestamp is now emitted correctly. [#147114][#147114] +- Fixed an issue where the mvcc_timestamp field was incorrectly returning zero values when used with CDC queries. The timestamp is now emitted correctly. - 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. [#149747][#149747] -- 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 will be off by default in versions prior to v25.3, and can be toggled on by setting `use_proc_txn_control_extended_protocol_fix = true`. [#149851][#149851] -- 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. [#149919][#149919] -- 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. [#149937][#149937] -- Fixed a bug that would allow a race condition in foreign key cascades under `READ COMMITTED` and `REPEATABLE READ` isolation levels. [#150295][#150295] -- Fixed an issue where discarding zone configs on sequences did not actually remove the configuration. [#150359][#150359] -- 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`. [#150439][#150439] -- 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. [#150619][#150619] -- Fixed a bug that could cause some errors returned by attempts to upload backup data to external storage providers to be undetected, potentially causing incomplete backups. [#151082][#151082] -- 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. [#151146][#151146] -- 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. [#151161][#151161] -- 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. [#152185][#152185] + revoked in this scenario. +- 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 will be off by default in versions prior to v25.3, and can be toggled on by setting `use_proc_txn_control_extended_protocol_fix = true`. +- 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. +- 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. +- Fixed a bug that would allow a race condition in foreign key cascades under `READ COMMITTED` and `REPEATABLE READ` isolation levels. +- Fixed an issue where discarding zone configs on sequences did not actually remove the configuration. +- 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`. +- 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. +- Fixed a bug that could cause some errors returned by attempts to upload backup data to external storage providers to be undetected, potentially causing incomplete backups. +- 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. +- 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. +- 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.

Miscellaneous

-- Upgrade to Go 1.23.11 [#150988][#150988] - - -[#149837]: https://github.com/cockroachdb/cockroach/pull/149837 -[#152185]: https://github.com/cockroachdb/cockroach/pull/152185 -[#150988]: https://github.com/cockroachdb/cockroach/pull/150988 -[#151082]: https://github.com/cockroachdb/cockroach/pull/151082 -[#151146]: https://github.com/cockroachdb/cockroach/pull/151146 -[#149919]: https://github.com/cockroachdb/cockroach/pull/149919 -[#149937]: https://github.com/cockroachdb/cockroach/pull/149937 -[#150619]: https://github.com/cockroachdb/cockroach/pull/150619 -[#150359]: https://github.com/cockroachdb/cockroach/pull/150359 -[#151161]: https://github.com/cockroachdb/cockroach/pull/151161 -[#147114]: https://github.com/cockroachdb/cockroach/pull/147114 -[#149851]: https://github.com/cockroachdb/cockroach/pull/149851 -[#150295]: https://github.com/cockroachdb/cockroach/pull/150295 -[#149829]: https://github.com/cockroachdb/cockroach/pull/149829 -[#149747]: https://github.com/cockroachdb/cockroach/pull/149747 -[#150439]: https://github.com/cockroachdb/cockroach/pull/150439 +- Upgrade to Go 1.23.11 diff --git a/src/current/_includes/releases/v25.2/v25.2.6.md b/src/current/_includes/releases/v25.2/v25.2.6.md index 5890f35e254..003f78c267e 100644 --- a/src/current/_includes/releases/v25.2/v25.2.6.md +++ b/src/current/_includes/releases/v25.2/v25.2.6.md @@ -6,53 +6,35 @@ Release Date: September 22, 2025

SQL language changes

-- 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. [#152349][#152349] -- 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. [#152600][#152600] +- 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. +- 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.

Operational changes

-- 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. [#151485][#151485] +- 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.

Bug fixes

-- Fixed a bug where `debug.zip` files collected from clusters with `disallow_full_table_scans` enabled were missing system table data. [#151224][#151224] -- Addressed a bug on `schema_locked` tables when a column is dropped, and `schema_locked` is toggled for the user. [#151528][#151528] -- Fixed a bug that could cause excessive memory allocations when compacting timeseries keys. [#151814][#151814] -- Fixed a bug where `DROP USER` succeeded even though a role owned default privileges, which could leave invalid privilege entries in the system. [#151879][#151879] -- 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. [#152184][#152184] -- Fixed a bug where `SHOW TABLES` would show inaccurate row counts if the most recent statistics collection was partial. [#152186][#152186] -- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. [#152314][#152314] +- Fixed a bug where `debug.zip` files collected from clusters with `disallow_full_table_scans` enabled were missing system table data. +- Addressed a bug on `schema_locked` tables when a column is dropped, and `schema_locked` is toggled for the user. +- Fixed a bug that could cause excessive memory allocations when compacting timeseries keys. +- Fixed a bug where `DROP USER` succeeded even though a role owned default privileges, which could leave invalid privilege entries in the system. +- 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. +- Fixed a bug where `SHOW TABLES` would show inaccurate row counts if the most recent statistics collection was partial. +- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. - 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;` [#152375][#152375] -- Added an automatic repair for dangling or invalid entries in the `system.comments` table. [#152471][#152471] -- 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". [#152559][#152559] -- Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions. [#152679][#152679] + - `SET enable_durable_locking_for_serializable = on;` +- Added an automatic repair for dangling or invalid entries in the `system.comments` table. +- 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". +- Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions.

Performance improvements

-- Lookup joins can now be used on tables with virtual columns even if the type of the search argument is not identical to the column type referenced in the virtual column. [#152631][#152631] +- 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.

Miscellaneous

- Tunes S3 client retry behavior to be more reliable in the - presence of correlated errors. [#151874][#151874] - - -[#151224]: https://github.com/cockroachdb/cockroach/pull/151224 -[#152314]: https://github.com/cockroachdb/cockroach/pull/152314 -[#152375]: https://github.com/cockroachdb/cockroach/pull/152375 -[#152631]: https://github.com/cockroachdb/cockroach/pull/152631 -[#152349]: https://github.com/cockroachdb/cockroach/pull/152349 -[#151485]: https://github.com/cockroachdb/cockroach/pull/151485 -[#152679]: https://github.com/cockroachdb/cockroach/pull/152679 -[#151814]: https://github.com/cockroachdb/cockroach/pull/151814 -[#151879]: https://github.com/cockroachdb/cockroach/pull/151879 -[#152471]: https://github.com/cockroachdb/cockroach/pull/152471 -[#151874]: https://github.com/cockroachdb/cockroach/pull/151874 -[#152600]: https://github.com/cockroachdb/cockroach/pull/152600 -[#151528]: https://github.com/cockroachdb/cockroach/pull/151528 -[#152559]: https://github.com/cockroachdb/cockroach/pull/152559 -[#152184]: https://github.com/cockroachdb/cockroach/pull/152184 -[#152186]: https://github.com/cockroachdb/cockroach/pull/152186 + presence of correlated errors. diff --git a/src/current/_includes/releases/v25.2/v25.2.7.md b/src/current/_includes/releases/v25.2/v25.2.7.md index b0daaf57abf..d7a84e47cde 100644 --- a/src/current/_includes/releases/v25.2/v25.2.7.md +++ b/src/current/_includes/releases/v25.2/v25.2.7.md @@ -6,21 +6,11 @@ Release Date: October 17, 2025

Bug fixes

-- Fixed a bug where an `INSERT` statement could fail with a type checking error while adding a `BIT(n)` column. [#152964][#152964] -- Fixed a bug where index creation could fail due to validation errors if the schema change was retried or paused/resumed during the backfill. [#153596][#153596] -- 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. [#153601][#153601] -- Fixed a bug where `ALTER POLICY` was incorrectly dropping dependency tracking for functions, sequences, or types in policy expressions. [#153808][#153808] -- Fixed a runtime error that could be hit if a new secondary index had a name collision with a primary index. [#154015][#154015] -- 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. [#154290][#154290] -- Disabled the `kv.lock_table.unreplicated_lock_reliability.split.enabled` feature, which could lead to a node crash. [#155418][#155418] -- Fixed a bug where the presence of duplicate temporary tables in a backup caused the restore to fail with an error containing the text `restoring table desc and namespace entries: table already exists`. [#154398][#154398] - - -[#153808]: https://github.com/cockroachdb/cockroach/pull/153808 -[#154015]: https://github.com/cockroachdb/cockroach/pull/154015 -[#154290]: https://github.com/cockroachdb/cockroach/pull/154290 -[#155418]: https://github.com/cockroachdb/cockroach/pull/155418 -[#154398]: https://github.com/cockroachdb/cockroach/pull/154398 -[#152964]: https://github.com/cockroachdb/cockroach/pull/152964 -[#153596]: https://github.com/cockroachdb/cockroach/pull/153596 -[#153601]: https://github.com/cockroachdb/cockroach/pull/153601 +- Fixed a bug where an `INSERT` statement could fail with a type checking error while adding a `BIT(n)` column. +- Fixed a bug where index creation could fail due to validation errors if the schema change was retried or paused/resumed during the backfill. +- 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. +- Fixed a bug where `ALTER POLICY` was incorrectly dropping dependency tracking for functions, sequences, or types in policy expressions. +- Fixed a runtime error that could be hit if a new secondary index had a name collision with a primary index. +- 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. +- Disabled the `kv.lock_table.unreplicated_lock_reliability.split.enabled` feature, which could lead to a node crash. +- Fixed a bug where the presence of duplicate temporary tables in a backup caused the restore to fail with an error containing the text `restoring table desc and namespace entries: table already exists`. diff --git a/src/current/_includes/releases/v25.2/v25.2.8.md b/src/current/_includes/releases/v25.2/v25.2.8.md index f8bd938f294..851de62f5c2 100644 --- a/src/current/_includes/releases/v25.2/v25.2.8.md +++ b/src/current/_includes/releases/v25.2/v25.2.8.md @@ -6,11 +6,8 @@ Release Date: October 30, 2025

Operational changes

-- In order to selectively capture traces for transactions running in an active workload without having 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. [#156409][#156409] +- In order to selectively capture traces for transactions running in an active workload without having 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.

Bug fixes

-- 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. [#156312][#156312] - -[#156409]: https://github.com/cockroachdb/cockroach/pull/156409 -[#156312]: https://github.com/cockroachdb/cockroach/pull/156312 +- 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. diff --git a/src/current/_includes/releases/v25.2/v25.2.9.md b/src/current/_includes/releases/v25.2/v25.2.9.md index cb9d401edf0..8f9b005f11b 100644 --- a/src/current/_includes/releases/v25.2/v25.2.9.md +++ b/src/current/_includes/releases/v25.2/v25.2.9.md @@ -6,14 +6,11 @@ Release Date: November 14, 2025

SQL language changes

-- Added the `sql.statements.rows_read.count` metric that counts the number of index rows read by SQL statements. [#156595][#156595] -- Added the `sql.statements.index_rows_written.count` metric that counts the number of primary and secondary index rows modified by SQL statements. [#156595][#156595] -- Added the `sql.statements.index_bytes_written.count` metric that counts the number of primary and secondary index bytes modified by SQL statements. [#156595][#156595] -- Added the `sql.statements.bytes_read.count` metric that counts the number of bytes scanned by SQL statements. [#156595][#156595] +- Added the `sql.statements.rows_read.count` metric that counts the number of index rows read by SQL statements. +- Added the `sql.statements.index_rows_written.count` metric that counts the number of primary and secondary index rows modified by SQL statements. +- Added the `sql.statements.index_bytes_written.count` metric that counts the number of primary and secondary index bytes modified by SQL statements. +- Added the `sql.statements.bytes_read.count` metric that counts the number of bytes scanned by SQL statements.

Bug fixes

-- Fixed a bug where changefeeds using CDC queries could sometimes unexpectedly fail after a schema change with a descriptor retrieval error. [#156552][#156552] - -[#156595]: https://github.com/cockroachdb/cockroach/pull/156595 -[#156552]: https://github.com/cockroachdb/cockroach/pull/156552 +- Fixed a bug where changefeeds using CDC queries could sometimes unexpectedly fail after a schema change with a descriptor retrieval error. diff --git a/src/current/_includes/releases/v25.3/cluster-setting-changes.md b/src/current/_includes/releases/v25.3/cluster-setting-changes.md index 31a33f1e515..8d88c894bfb 100644 --- a/src/current/_includes/releases/v25.3/cluster-setting-changes.md +++ b/src/current/_includes/releases/v25.3/cluster-setting-changes.md @@ -2,19 +2,13 @@ Changes to [cluster settings]({% link v25.3/cluster-settings.md %}) should be re
New settings
-- `sql.metrics.application_name.enabled` - Default to `false` and can be set to `true` to display the application name on supported metrics. [#144610][#144610] -- `sql.metrics.database_name.enabled` - Default to `false` and can be set to `true` to display the database name on supported metrics. [#144610][#144610] -- `sql.sqlcommenter.enabled` - 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] +- `sql.metrics.application_name.enabled` - Default to `false` and can be set to `true` to display the application name on supported metrics. +- `sql.metrics.database_name.enabled` - Default to `false` and can be set to `true` to display the database name on supported metrics. +- `sql.sqlcommenter.enabled` - 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/). - `sql.trace.txn.sample_rate` and `sql.trace.txn.enable_threshold` - In order to selectively capture traces for transactions running in an active workload without having 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.
Setting changes
-- 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. [#149857][#149857] -- 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] -- To prevent unnecessary queuing in admission control CPU queues, the `goschedstats.always_use_short_sample_period.enabled` setting default was changed to `true` [#146014][#146014] - -[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 -[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 -[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 -[#146014]: https://github.com/cockroachdb/cockroach/pull/146014 -[#149857]: https://github.com/cockroachdb/cockroach/pull/149857 +- 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. +- The cluster setting `server.client_cert_expiration_cache.capacity` has been deprecated. The client certificate cache now evicts client certificates based on expiration time. +- To prevent unnecessary queuing in admission control CPU queues, the `goschedstats.always_use_short_sample_period.enabled` setting default was changed to `true` diff --git a/src/current/_includes/releases/v25.3/deprecations.md b/src/current/_includes/releases/v25.3/deprecations.md index bd78876be3b..556bc6d08f8 100644 --- a/src/current/_includes/releases/v25.3/deprecations.md +++ b/src/current/_includes/releases/v25.3/deprecations.md @@ -1,10 +1,5 @@ The following deprecations/removals are announced in v25.3. -- 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] -- `IMPORT TABLE` as well `PGDUMP` and `MYSQLDUMP` formats of `IMPORT` are now fully removed. These have been deprecated since v23.2. [#148248][#148248] +- The cluster setting `server.client_cert_expiration_cache.capacity` has been deprecated. The client certificate cache now evicts client certificates based on expiration time. +- `IMPORT TABLE` as well `PGDUMP` and `MYSQLDUMP` formats of `IMPORT` are now fully removed. These have been deprecated since v23.2. - Removed the 'started' column in `SHOW JOBS`, which was a duplicate of the 'created' column. - [#148464][#148464] - -[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 -[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 -[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 \ No newline at end of file diff --git a/src/current/_includes/releases/v25.3/v25.3.0-alpha.1.md b/src/current/_includes/releases/v25.3/v25.3.0-alpha.1.md index bb3ab0397b7..e726c3b9c9b 100644 --- a/src/current/_includes/releases/v25.3/v25.3.0-alpha.1.md +++ b/src/current/_includes/releases/v25.3/v25.3.0-alpha.1.md @@ -5,50 +5,50 @@ Release Date: June 9, 2025 {% include releases/new-release-downloads-docker-image.md release=include.release %}

Security updates

-- The client for the SQL connection will now receive an error along with an error in the `OPS` channel if trying to connect with an unsupported cipher. [#146522][#146522] +- The client for the SQL connection will now receive an error along with an error in the `OPS` channel if trying to connect with an unsupported cipher.

General changes

- 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] -- Changefeeds now round down the progress of each range to 1 second, in order to cover more ranges in fine-grained checkpointing. [#146979][#146979] -- Reduced the maximum backoff for changefeed retries from 10 minutes to 1 minute, which results in faster recovery from transient errors. [#146448][#146448] -- The secret keys in Azure cloud storage URIs are now redacted. [#147022][#147022] + - `stats_only` (`bool`): When set to `true`, returns only the statistics for hot ranges without fetching descriptor information, such as databases, tables, and indexes. +- Changefeeds now round down the progress of each range to 1 second, in order to cover more ranges in fine-grained checkpointing. +- Reduced the maximum backoff for changefeed retries from 10 minutes to 1 minute, which results in faster recovery from transient errors. +- The secret keys in Azure cloud storage URIs are now redacted.

SQL language changes

-- 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 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. - 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 PRIVILEGES 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] -- The variable arguments of polymorphic built-in functions (e.g., `concat`, `num_nulls`, `format`, `concat_ws`) 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] -- 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] + 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. +- The variable arguments of polymorphic built-in functions (e.g., `concat`, `num_nulls`, `format`, `concat_ws`) 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). +- 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. - 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] -- `~~*` and `!~~*` are now supported aliases for `ILIKE` and `NOT ILIKE`. [#146764][#146764] -- 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] -- 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] -- 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 like `NEW."FOO_Bar" = 100`. [#143579][#143579] + 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/). +- `~~*` and `!~~*` are now supported aliases for `ILIKE` and `NOT ILIKE`. +- 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. +- The `pg_catalog.pg_trigger` table now returns metadata about database triggers. +- Deterministic collations are now supported with `LIKE`. A deterministic collation considers strings to be equal only if they consist of the same byte sequence. +- 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 like `NEW."FOO_Bar" = 100`.

Operational changes

-- 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] -- Added the new latency metrics: `sql.service.latency.historical`, `sql.service.latency.consistent`, `sql.exec.latency.historical`, and `sql.exec.latency.consistent` for easier query optimizations. [#142826][#142826] -- Partial index schema changes are supported in replicating tables when `logical_replication.consumer.immediate_mode_writer` is not set to `legacy-kv`. [#144508][#144508] -- 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] -- Logs for hot ranges (`hot_ranges_stats` events) have been moved to the `HEALTH` logging channel. [#144567][#144567] -- 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] -- 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] -- 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] +- 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. +- Added the new latency metrics: `sql.service.latency.historical`, `sql.service.latency.consistent`, `sql.exec.latency.historical`, and `sql.exec.latency.consistent` for easier query optimizations. +- Partial index schema changes are supported in replicating tables when `logical_replication.consumer.immediate_mode_writer` is not set to `legacy-kv`. +- The cluster setting `server.client_cert_expiration_cache.capacity` has been deprecated. The client certificate cache now evicts client certificates based on expiration time. +- Logs for hot ranges (`hot_ranges_stats` events) have been moved to the `HEALTH` logging channel. +- 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). +- 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. +- 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. - 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. @@ -56,156 +56,73 @@ Release Date: June 9, 2025 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 job tracing support to changefeeds. [#144412][#144412] + 1. Re-initialize the reader virtual cluster with `ALTER VIRTUAL CLUSTER SET REPLICATION READ VIRTUAL CLUSTER`. +- Added job tracing support to changefeeds.

Command-line changes

-- Node attributes (`attrs`) will now appear in the `node status` CLI command. [#143421][#143421] -- 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] -- Added the `--validate-zip-file` flag to the `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] -- The SQL shell now supports the compact output mode when `auto_trace` is enabled. [#146432][#146432] +- Node attributes (`attrs`) will now appear in the `node status` CLI command. +- Updated the `\d
` command to show policy and Row Level Security information similar to what is shown in the output of `SHOW CREATE TABLE`. +- Added the `--validate-zip-file` flag to the `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. +- The SQL shell now supports the compact output mode when `auto_trace` is enabled.

DB Console changes

-- 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] -- 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] +- 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. +- 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".

Bug fixes

-- 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. [#144304][#144304] -- 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] -- Improved the performance of `SHOW CREATE TABLE` on multi-region databases with large numbers of objects. [#144900][#144900] -- 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 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 caused index expression elements of primary keys to be shown incorrectly in the output of `SHOW CREATE TABLE`. [#144716][#144716] -- 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] -- 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 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 an internal assertion failure that could occur during operations like `ALTER TYPE` or `ALTER DATABASE ... ADD REGION` when temporary tables were present. [#145551][#145551] -- 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 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] -- Fixed an integer overflow in the `split_part` function when using extremely negative field positions like Go's `math.MinInt64`. [#146271][#146271] -- Fixed incorrect application of `SELECT` policies to `RETURNING` clauses in `INSERT` and `UPDATE` when no table columns were referenced. [#145890][#145890] -- 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 a bug where `ALTER TABLE` operations with multiple commands could generate invalid zone configurations. [#146369][#146369] -- Fixed a bug where an invalid comment in the `system.comment` table for a schema object could make it inaccessible. [#146213][#146213] -- 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] -- 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] -- 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] -- Errors triggered by DB Console activity no longer cause the node to crash. [#145563][#145563] -- Fixed a bug to prevent HTTP connections from stopping 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 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 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 data race in the `cloudstorage` sink. [#146297][#146297] -- 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 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] -- 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 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] -- 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 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] -- CockroachDB could previously incorrectly evaluate `to_regclass`, `to_regnamespace`, `to_regproc`, `to_regprocedure`, `to_regrole`, and `to_regtype` builtin functions when the query using them happened to be evaluated in distributed fashion. The bug has been present since the introduction of these builtins 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 where the `rolbypassrls` column in `pg_roles` and `pg_authid` tables always returned false, even for roles with the `BYPASSRLS` option. [#147357][#147357] -- 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 point releases v23.2.22, v24.1.14, v24.3.9, and v25.1.2, and the v25.2 alpha. [#147187][#147187] -- Fixed an issue where updating child metrics and reinitializing metrics at the same time could cause scrape errors. [#147486][#147486] -- 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 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 bug where prepared statements on schema changes could fail with runtime errors. [#147658][#147658] -- Fixed an issue with logical data replication (LDR) where the presence of a unique index may cause spurious dead letter queue (DLQ) entries if the unique index has a smaller index ID than the primary key index. [#147117][#147117] -- Scheduled backups now prevent multiple compaction jobs from running in parallel on its backups. [#145930][#145930] -- Removal of triggers during a restore now accounts for back references that existed because of triggers. [#147306][#147306] +- 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. +- 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. +- Improved the performance of `SHOW CREATE TABLE` on multi-region databases with large numbers of objects. +- 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. +- 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. +- Fixed a bug that caused index expression elements of primary keys to be shown incorrectly in the output of `SHOW CREATE TABLE`. +- Fixed a bug that could lead to schema changes hanging after a cluster recovered from availability issues. +- 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. +- 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. +- 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). +- Creating a vector index on a table that contains a `NULL` vector value will no longer cause an internal error. +- Fixed an internal assertion failure that could occur during operations like `ALTER TYPE` or `ALTER DATABASE ... ADD REGION` when temporary tables were present. +- 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. +- 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`. +- Fixed an integer overflow in the `split_part` function when using extremely negative field positions like Go's `math.MinInt64`. +- Fixed incorrect application of `SELECT` policies to `RETURNING` clauses in `INSERT` and `UPDATE` when no table columns were referenced. +- 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. +- Fixed a bug where `ALTER TABLE` operations with multiple commands could generate invalid zone configurations. +- Fixed a bug where an invalid comment in the `system.comment` table for a schema object could make it inaccessible. +- 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. +- 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. +- Fixed an internal error that could be hit when `ADD COLUMN UNIQUE` and `ALTER PRIMARY KEY` were executed within the same transaction. +- 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. +- 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. +- Errors triggered by DB Console activity no longer cause the node to crash. +- Fixed a bug to prevent HTTP connections from stopping server shutdown. +- The MVCC timestamp is now emitted correctly when the `mvcc_timestamp` is used with CDC queries. +- 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. +- 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). +- Fixed a data race in the `cloudstorage` sink. +- 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. +- 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. +- Prevent dropping columns or indexes that are still referenced by triggers. Previously, these operations could succeed silently, potentially breaking trigger functionality. +- 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. +- 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. +- 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. +- CockroachDB could previously incorrectly evaluate `to_regclass`, `to_regnamespace`, `to_regproc`, `to_regprocedure`, `to_regrole`, and `to_regtype` builtin functions when the query using them happened to be evaluated in distributed fashion. The bug has been present since the introduction of these builtins in v23.1 and is now fixed. +- 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`. +- 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. +- Fixed a bug where the `rolbypassrls` column in `pg_roles` and `pg_authid` tables always returned false, even for roles with the `BYPASSRLS` option. +- 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 point releases v23.2.22, v24.1.14, v24.3.9, and v25.1.2, and the v25.2 alpha. +- Fixed an issue where updating child metrics and reinitializing metrics at the same time could cause scrape errors. +- Fixed a runtime panic in the `substring_index` function that occurred when the count argument was the minimum 64-bit integer value. +- 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. +- Fixed a bug where prepared statements on schema changes could fail with runtime errors. +- Fixed an issue with logical data replication (LDR) where the presence of a unique index may cause spurious dead letter queue (DLQ) entries if the unique index has a smaller index ID than the primary key index. +- Scheduled backups now prevent multiple compaction jobs from running in parallel on its backups. +- Removal of triggers during a restore now accounts for back references that existed because of triggers.

Performance improvements

-- Prepared statements are now more efficiently cached. [#144021][#144021] -- TTL jobs now respond to cluster topology changes by restarting and rebalancing across available nodes. [#145214][#145214] - -[#142826]: https://github.com/cockroachdb/cockroach/pull/142826 -[#143421]: https://github.com/cockroachdb/cockroach/pull/143421 -[#143536]: https://github.com/cockroachdb/cockroach/pull/143536 -[#143579]: https://github.com/cockroachdb/cockroach/pull/143579 -[#143892]: https://github.com/cockroachdb/cockroach/pull/143892 -[#143927]: https://github.com/cockroachdb/cockroach/pull/143927 -[#144021]: https://github.com/cockroachdb/cockroach/pull/144021 -[#144091]: https://github.com/cockroachdb/cockroach/pull/144091 -[#144101]: https://github.com/cockroachdb/cockroach/pull/144101 -[#144181]: https://github.com/cockroachdb/cockroach/pull/144181 -[#144189]: https://github.com/cockroachdb/cockroach/pull/144189 -[#144304]: https://github.com/cockroachdb/cockroach/pull/144304 -[#144347]: https://github.com/cockroachdb/cockroach/pull/144347 -[#144412]: https://github.com/cockroachdb/cockroach/pull/144412 -[#144414]: https://github.com/cockroachdb/cockroach/pull/144414 -[#144427]: https://github.com/cockroachdb/cockroach/pull/144427 -[#144508]: https://github.com/cockroachdb/cockroach/pull/144508 -[#144522]: https://github.com/cockroachdb/cockroach/pull/144522 -[#144567]: https://github.com/cockroachdb/cockroach/pull/144567 -[#144610]: https://github.com/cockroachdb/cockroach/pull/144610 -[#144716]: https://github.com/cockroachdb/cockroach/pull/144716 -[#144900]: https://github.com/cockroachdb/cockroach/pull/144900 -[#145107]: https://github.com/cockroachdb/cockroach/pull/145107 -[#145117]: https://github.com/cockroachdb/cockroach/pull/145117 -[#145214]: https://github.com/cockroachdb/cockroach/pull/145214 -[#145329]: https://github.com/cockroachdb/cockroach/pull/145329 -[#145344]: https://github.com/cockroachdb/cockroach/pull/145344 -[#145374]: https://github.com/cockroachdb/cockroach/pull/145374 -[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 -[#145462]: https://github.com/cockroachdb/cockroach/pull/145462 -[#145481]: https://github.com/cockroachdb/cockroach/pull/145481 -[#145492]: https://github.com/cockroachdb/cockroach/pull/145492 -[#145551]: https://github.com/cockroachdb/cockroach/pull/145551 -[#145563]: https://github.com/cockroachdb/cockroach/pull/145563 -[#145890]: https://github.com/cockroachdb/cockroach/pull/145890 -[#145930]: https://github.com/cockroachdb/cockroach/pull/145930 -[#145972]: https://github.com/cockroachdb/cockroach/pull/145972 -[#145983]: https://github.com/cockroachdb/cockroach/pull/145983 -[#146127]: https://github.com/cockroachdb/cockroach/pull/146127 -[#146192]: https://github.com/cockroachdb/cockroach/pull/146192 -[#146213]: https://github.com/cockroachdb/cockroach/pull/146213 -[#146215]: https://github.com/cockroachdb/cockroach/pull/146215 -[#146259]: https://github.com/cockroachdb/cockroach/pull/146259 -[#146271]: https://github.com/cockroachdb/cockroach/pull/146271 -[#146287]: https://github.com/cockroachdb/cockroach/pull/146287 -[#146297]: https://github.com/cockroachdb/cockroach/pull/146297 -[#146369]: https://github.com/cockroachdb/cockroach/pull/146369 -[#146406]: https://github.com/cockroachdb/cockroach/pull/146406 -[#146432]: https://github.com/cockroachdb/cockroach/pull/146432 -[#146446]: https://github.com/cockroachdb/cockroach/pull/146446 -[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 -[#146522]: https://github.com/cockroachdb/cockroach/pull/146522 -[#146567]: https://github.com/cockroachdb/cockroach/pull/146567 -[#146586]: https://github.com/cockroachdb/cockroach/pull/146586 -[#146683]: https://github.com/cockroachdb/cockroach/pull/146683 -[#146696]: https://github.com/cockroachdb/cockroach/pull/146696 -[#146744]: https://github.com/cockroachdb/cockroach/pull/146744 -[#146764]: https://github.com/cockroachdb/cockroach/pull/146764 -[#146836]: https://github.com/cockroachdb/cockroach/pull/146836 -[#146848]: https://github.com/cockroachdb/cockroach/pull/146848 -[#146883]: https://github.com/cockroachdb/cockroach/pull/146883 -[#146890]: https://github.com/cockroachdb/cockroach/pull/146890 -[#146949]: https://github.com/cockroachdb/cockroach/pull/146949 -[#146979]: https://github.com/cockroachdb/cockroach/pull/146979 -[#147021]: https://github.com/cockroachdb/cockroach/pull/147021 -[#147022]: https://github.com/cockroachdb/cockroach/pull/147022 -[#147045]: https://github.com/cockroachdb/cockroach/pull/147045 -[#147117]: https://github.com/cockroachdb/cockroach/pull/147117 -[#147187]: https://github.com/cockroachdb/cockroach/pull/147187 -[#147237]: https://github.com/cockroachdb/cockroach/pull/147237 -[#147248]: https://github.com/cockroachdb/cockroach/pull/147248 -[#147306]: https://github.com/cockroachdb/cockroach/pull/147306 -[#147357]: https://github.com/cockroachdb/cockroach/pull/147357 -[#147362]: https://github.com/cockroachdb/cockroach/pull/147362 -[#147368]: https://github.com/cockroachdb/cockroach/pull/147368 -[#147373]: https://github.com/cockroachdb/cockroach/pull/147373 -[#147462]: https://github.com/cockroachdb/cockroach/pull/147462 -[#147486]: https://github.com/cockroachdb/cockroach/pull/147486 -[#147511]: https://github.com/cockroachdb/cockroach/pull/147511 -[#147546]: https://github.com/cockroachdb/cockroach/pull/147546 -[#147548]: https://github.com/cockroachdb/cockroach/pull/147548 -[#147658]: https://github.com/cockroachdb/cockroach/pull/147658 +- Prepared statements are now more efficiently cached. +- TTL jobs now respond to cluster topology changes by restarting and rebalancing across available nodes. diff --git a/src/current/_includes/releases/v25.3/v25.3.0-alpha.2.md b/src/current/_includes/releases/v25.3/v25.3.0-alpha.2.md index 0d2d3df181f..d37131512ca 100644 --- a/src/current/_includes/releases/v25.3/v25.3.0-alpha.2.md +++ b/src/current/_includes/releases/v25.3/v25.3.0-alpha.2.md @@ -7,9 +7,9 @@ Release Date: June 16, 2025

General changes

- 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] +

SQL language changes

@@ -17,60 +17,39 @@ Release Date: June 16, 2025 - 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] -- 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] + 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/). +- 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`). - 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] -- 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] + +- 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. +- 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.

Operational changes

- 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]({% link v25.3/architecture/storage-layer.md %}#value-separation). - [#147728][#147728] +

DB Console changes

- 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] + - Retry counts for statements executing under `READ COMMITTED` isolation are now more accurate. - [#147682][#147682] +

Bug fixes

-- Fixed an issue where self-referencing triggers did not have their dependencies properly recorded, which could lead to broken dependencies. [#147018][#147018] -- 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 on the SQL Activity Statements and Transactions pages where the time picker failed to support sub-hour time ranges when `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. This fix ensures that the selected time range is respected, enabling more precise analysis of recent activity. [#147447][#147447] -- `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` when a table's schema had been dropped. [#147766][#147766] -- Fixed a bug where introspection queries (e.g., querying the `crdb_internal` system catalog) could fail if a dropped constraint referenced a column that was also being dropped. [#147773][#147773] -- Fixed a bug where adding multiple columns in a single statement with `AddGeometryColumn` would cause runtime errors. [#147998][#147998] - -[#147018]: https://github.com/cockroachdb/cockroach/pull/147018 -[#147348]: https://github.com/cockroachdb/cockroach/pull/147348 -[#147447]: https://github.com/cockroachdb/cockroach/pull/147447 -[#147543]: https://github.com/cockroachdb/cockroach/pull/147543 -[#146860]: https://github.com/cockroachdb/cockroach/pull/146860 -[#147682]: https://github.com/cockroachdb/cockroach/pull/147682 -[#147679]: https://github.com/cockroachdb/cockroach/pull/147679 -[#147089]: https://github.com/cockroachdb/cockroach/pull/147089 -[#147666]: https://github.com/cockroachdb/cockroach/pull/147666 -[#147698]: https://github.com/cockroachdb/cockroach/pull/147698 -[#147773]: https://github.com/cockroachdb/cockroach/pull/147773 -[#147998]: https://github.com/cockroachdb/cockroach/pull/147998 -[#145435]: https://github.com/cockroachdb/cockroach/pull/145435 -[#147452]: https://github.com/cockroachdb/cockroach/pull/147452 -[#147869]: https://github.com/cockroachdb/cockroach/pull/147869 -[#147766]: https://github.com/cockroachdb/cockroach/pull/147766 -[#147439]: https://github.com/cockroachdb/cockroach/pull/147439 -[#147341]: https://github.com/cockroachdb/cockroach/pull/147341 -[#147728]: https://github.com/cockroachdb/cockroach/pull/147728 -[#147696]: https://github.com/cockroachdb/cockroach/pull/147696 +- Fixed an issue where self-referencing triggers did not have their dependencies properly recorded, which could lead to broken dependencies. +- Fixed a security issue where optimizer predicate reordering could leak information about hidden rows protected by row-level security (RLS) policies. +- Fixed a bug on the SQL Activity Statements and Transactions pages where the time picker failed to support sub-hour time ranges when `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. This fix ensures that the selected time range is respected, enabling more precise analysis of recent activity. +- `FUNCTION` and `PROCEDURE` are now shown via `\h SHOW CREATE` in the CLI doc. +- Fixed a bug where functions lost their row-level security (RLS) policy backreferences, leading to schema change failures. +- Fixed a bug where `ALTER TABLE` was modifying identity attributes on columns not backed by a sequence. +- Fixed an error in `crdb_internal.table_spans` when a table's schema had been dropped. +- Fixed a bug where introspection queries (e.g., querying the `crdb_internal` system catalog) could fail if a dropped constraint referenced a column that was also being dropped. +- Fixed a bug where adding multiple columns in a single statement with `AddGeometryColumn` would cause runtime errors. diff --git a/src/current/_includes/releases/v25.3/v25.3.0-alpha.3.md b/src/current/_includes/releases/v25.3/v25.3.0-alpha.3.md index 6e3cef22ab5..ffbb4712dc2 100644 --- a/src/current/_includes/releases/v25.3/v25.3.0-alpha.3.md +++ b/src/current/_includes/releases/v25.3/v25.3.0-alpha.3.md @@ -6,30 +6,21 @@ Release Date: June 23, 2025

Security updates

-- CockroachDB can now synchronize SQL role membership from the groups claim contained in a JWT when the cluster setting `server.jwt_authentication.authorization.enabled` is set to `true`. The claim name and the fallback `userinfo` JSON key are configurable by the cluster settings `server.jwt_authentication.group_claim` and `server.jwt_authentication.userinfo_group_key` respectively. This behavior matches the existing LDAP role-sync feature. [#147318][#147318] +- CockroachDB can now synchronize SQL role membership from the groups claim contained in a JWT when the cluster setting `server.jwt_authentication.authorization.enabled` is set to `true`. The claim name and the fallback `userinfo` JSON key are configurable by the cluster settings `server.jwt_authentication.group_claim` and `server.jwt_authentication.userinfo_group_key` respectively. This behavior matches the existing LDAP role-sync feature.

SQL language changes

-- 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] -- 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] -- `IMPORT TABLE` as well `PGDUMP` and `MYSQLDUMP` formats of `IMPORT` are now fully removed. These have been deprecated since v23.2. [#148248][#148248] +- 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`. +- Partial indexes can now reference user-defined functions. +- Computed column expressions and `ON UPDATE` expressions can now reference user-defined functions. +- `IMPORT TABLE` as well `PGDUMP` and `MYSQLDUMP` formats of `IMPORT` are now fully removed. These have been deprecated since v23.2.

Command-line changes

-- 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] +- 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.

Bug fixes

-- 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 where `libpq` clients using the async API could hang with large result sets (Python: psycopg; Ruby: ActiveRecord, ruby-pg). [#148222][#148222] +- 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`. +- Fixed a bug where `libpq` clients using the async API could hang with large result sets (Python: psycopg; Ruby: ActiveRecord, ruby-pg). - Restore no longer gets stuck in the `reverting` state after failed cleanup of dropped temporary system tables. - [#148098][#148098] - -[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 -[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 -[#147817]: https://github.com/cockroachdb/cockroach/pull/147817 -[#148248]: https://github.com/cockroachdb/cockroach/pull/148248 -[#147978]: https://github.com/cockroachdb/cockroach/pull/147978 -[#148222]: https://github.com/cockroachdb/cockroach/pull/148222 -[#148098]: https://github.com/cockroachdb/cockroach/pull/148098 diff --git a/src/current/_includes/releases/v25.3/v25.3.0-beta.1.md b/src/current/_includes/releases/v25.3/v25.3.0-beta.1.md index d42e715d618..0e69e6d8854 100644 --- a/src/current/_includes/releases/v25.3/v25.3.0-beta.1.md +++ b/src/current/_includes/releases/v25.3/v25.3.0-beta.1.md @@ -7,52 +7,36 @@ Release Date: July 2, 2025

SQL language changes

- 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] + - 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] + - Removed the 'started' column in `SHOW JOBS`, which was a duplicate of the 'created' column. - [#148464][#148464] +

Operational changes

- Introduced the following cluster settings for enabling and configuring [value separation in the storage engine]({% link v25.3/architecture/storage-layer.md %}#value-separation): `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 having 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`. - [#148837][#148837] + - Added the `replicas.cpunanospersecond` metric. Notably, when child labels are enabled, this metric exposes evaluation-related Replica CPU usage by tenant. - [#146526][#146526] + - 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] +

Bug fixes

- Fixed a bug where using column families on tables with vector indexes would cause the index to fail to return results. - [#147307][#147307] + - 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] +

Performance improvements

- 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] - - -[#148535]: https://github.com/cockroachdb/cockroach/pull/148535 -[#148542]: https://github.com/cockroachdb/cockroach/pull/148542 -[#148105]: https://github.com/cockroachdb/cockroach/pull/148105 -[#146526]: https://github.com/cockroachdb/cockroach/pull/146526 -[#147307]: https://github.com/cockroachdb/cockroach/pull/147307 -[#148464]: https://github.com/cockroachdb/cockroach/pull/148464 -[#148537]: https://github.com/cockroachdb/cockroach/pull/148537 -[#148837]: https://github.com/cockroachdb/cockroach/pull/148837 -[#148488]: https://github.com/cockroachdb/cockroach/pull/148488 -[#148242]: https://github.com/cockroachdb/cockroach/pull/148242 -[#148484]: https://github.com/cockroachdb/cockroach/pull/148484 -[#148839]: https://github.com/cockroachdb/cockroach/pull/148839 -[#148290]: https://github.com/cockroachdb/cockroach/pull/148290 diff --git a/src/current/_includes/releases/v25.3/v25.3.0-beta.2.md b/src/current/_includes/releases/v25.3/v25.3.0-beta.2.md index 87c671027c0..9ac95dfee66 100644 --- a/src/current/_includes/releases/v25.3/v25.3.0-beta.2.md +++ b/src/current/_includes/releases/v25.3/v25.3.0-beta.2.md @@ -7,16 +7,10 @@ Release Date: July 9, 2025

General changes

- For virtual clusters, hot range logging is now performed by a single job on one node, rather than by tasks on every node. - [#148926][#148926] +

Bug fixes

- CockroachDB now prohibits `ORDER BY` and join equality operations on `REFCURSOR` types, matching PostgreSQL behavior. - [#149292][#149292] -- Fixed an issue where 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. - [#149302][#149302] - -[#148926]: https://github.com/cockroachdb/cockroach/pull/148926 -[#149292]: https://github.com/cockroachdb/cockroach/pull/149292 -[#149302]: https://github.com/cockroachdb/cockroach/pull/149302 +- Fixed an issue where 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. diff --git a/src/current/_includes/releases/v25.3/v25.3.0-beta.3.md b/src/current/_includes/releases/v25.3/v25.3.0-beta.3.md index e3da83743b4..5f360aa9dbb 100644 --- a/src/current/_includes/releases/v25.3/v25.3.0-beta.3.md +++ b/src/current/_includes/releases/v25.3/v25.3.0-beta.3.md @@ -7,19 +7,12 @@ Release Date: July 14, 2025

SQL language changes

- 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. - [#149514][#149514] + - 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. - [#149675][#149675] +

Bug fixes

- 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. - [#149385][#149385] -- 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. - [#149626][#149626] - -[#149514]: https://github.com/cockroachdb/cockroach/pull/149514 -[#149675]: https://github.com/cockroachdb/cockroach/pull/149675 -[#149385]: https://github.com/cockroachdb/cockroach/pull/149385 -[#149626]: https://github.com/cockroachdb/cockroach/pull/149626 +- 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. diff --git a/src/current/_includes/releases/v25.3/v25.3.0-rc.1.md b/src/current/_includes/releases/v25.3/v25.3.0-rc.1.md index 07a26fe51d2..9c6990e3925 100644 --- a/src/current/_includes/releases/v25.3/v25.3.0-rc.1.md +++ b/src/current/_includes/releases/v25.3/v25.3.0-rc.1.md @@ -7,15 +7,15 @@ Release Date: July 23, 2025

SQL language changes

- 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`. - [#149819][#149819] + - 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. - [#150366][#150366] + - 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] + - The `options` column in the output of `SHOW ROLES` and `SHOW USERS` is now returned as an array of strings (e.g., `{NOLOGIN,CREATEDB}`) rather than as a single comma-separated string. This enables more efficient querying of role options using array functions like `unnest()`. For example: `SELECT * FROM [SHOW ROLES] AS r WHERE EXISTS (SELECT 1 FROM unnest(r.options) AS m(option) WHERE option LIKE 'SUBJECT=cn%');` - [#149537][#149537] + - The `SHOW ROLES` and `SHOW USERS` commands now include an `estimated_last_login_time` column that displays the estimated timestamp of when each user last authenticated to the database. This column shows `NULL` for users who have never logged in, and for existing users after upgrading to v25.3 until their next login. The tracking is performed on a best-effort basis and may not capture every login event. - [#149537][#149537] +

Operational changes

@@ -23,35 +23,21 @@ Release Date: July 23, 2025 - `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. - [#149705][#149705] + - 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. - [#149857][#149857] +

Bug fixes

- 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. - [#149920][#149920] + - 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. - [#149929][#149929] + - Fixed a bug that would allow a race condition in foreign key cascades under `READ COMMITTED` and `REPEATABLE READ` isolation levels. - [#150296][#150296] + - Fixed an issue where discarding zone configs on sequences did not actually remove the configuration. - [#150360][#150360] +

Performance improvements

- 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. - [#150016][#150016] - - -[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 -[#149705]: https://github.com/cockroachdb/cockroach/pull/149705 -[#149857]: https://github.com/cockroachdb/cockroach/pull/149857 -[#149929]: https://github.com/cockroachdb/cockroach/pull/149929 -[#150360]: https://github.com/cockroachdb/cockroach/pull/150360 -[#149819]: https://github.com/cockroachdb/cockroach/pull/149819 -[#150366]: https://github.com/cockroachdb/cockroach/pull/150366 -[#149920]: https://github.com/cockroachdb/cockroach/pull/149920 -[#150296]: https://github.com/cockroachdb/cockroach/pull/150296 -[#150016]: https://github.com/cockroachdb/cockroach/pull/150016 -[#149537]: https://github.com/cockroachdb/cockroach/pull/149537 diff --git a/src/current/_includes/releases/v25.3/v25.3.1.md b/src/current/_includes/releases/v25.3/v25.3.1.md index 927277f1528..4ab218c4859 100644 --- a/src/current/_includes/releases/v25.3/v25.3.1.md +++ b/src/current/_includes/releases/v25.3/v25.3.1.md @@ -6,32 +6,19 @@ Release Date: August 29, 2025

Operational changes

-- 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. [#151483][#151483] +- 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.

Bug fixes

-- 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`. [#150440][#150440] -- 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. [#150620][#150620] -- 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. [#151080][#151080] -- 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. [#151136][#151136] -- 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. [#151160][#151160] -- Fixed a bug where `debug.zip` files collected from clusters with `disallow_full_table_scans` enabled were missing system table data. [#151247][#151247] -- Fixed a bug where sequences could lose references to triggers, allowing them to be dropped incorrectly. [#151593][#151593] -- 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. [#152183][#152183] +- 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`. +- 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. +- 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. +- 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. +- 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. +- Fixed a bug where `debug.zip` files collected from clusters with `disallow_full_table_scans` enabled were missing system table data. +- Fixed a bug where sequences could lose references to triggers, allowing them to be dropped incorrectly. +- 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.

Miscellaneous

-- Updated Go version to 1.23.11. [#150868][#150868] - - -[#151160]: https://github.com/cockroachdb/cockroach/pull/151160 -[#151593]: https://github.com/cockroachdb/cockroach/pull/151593 -[#150868]: https://github.com/cockroachdb/cockroach/pull/150868 -[#150440]: https://github.com/cockroachdb/cockroach/pull/150440 -[#150620]: https://github.com/cockroachdb/cockroach/pull/150620 -[#151136]: https://github.com/cockroachdb/cockroach/pull/151136 -[#151247]: https://github.com/cockroachdb/cockroach/pull/151247 -[#152183]: https://github.com/cockroachdb/cockroach/pull/152183 -[#150579]: https://github.com/cockroachdb/cockroach/pull/150579 -[#151483]: https://github.com/cockroachdb/cockroach/pull/151483 -[#151080]: https://github.com/cockroachdb/cockroach/pull/151080 +- Updated Go version to 1.23.11. diff --git a/src/current/_includes/releases/v25.3/v25.3.2.md b/src/current/_includes/releases/v25.3/v25.3.2.md index 63b92896932..ed2ae18ea52 100644 --- a/src/current/_includes/releases/v25.3/v25.3.2.md +++ b/src/current/_includes/releases/v25.3/v25.3.2.md @@ -10,53 +10,35 @@ Release Date: September 22, 2025

SQL language changes

-- 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. [#152350][#152350] -- 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. [#152594][#152594] +- 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. +- 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.

Operational changes

-- `auth.ldap.conn.latency.internal` has been added to denote the internal authentication time for ldap auth method. [#152341][#152341] +- `auth.ldap.conn.latency.internal` has been added to denote the internal authentication time for ldap auth method.

Bug fixes

-- Addressed a bug on `schema_locked` tables when a column is dropped, and `schema_locked` is toggled for the user. [#151527][#151527] -- Fixed a bug that could cause excessive memory allocations when compacting timeseries keys. [#151815][#151815] -- Fixed a bug where `DROP USER` succeeded even though a role owned default privileges, which could leave invalid privilege entries in the system. [#151818][#151818] -- 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. [#152138][#152138] -- Fixed a bug where `SHOW TABLES` would show inaccurate row counts if the most recent statistics collection was partial. [#152200][#152200] -- 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. [#152217][#152217] -- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. [#152315][#152315] +- Addressed a bug on `schema_locked` tables when a column is dropped, and `schema_locked` is toggled for the user. +- Fixed a bug that could cause excessive memory allocations when compacting timeseries keys. +- Fixed a bug where `DROP USER` succeeded even though a role owned default privileges, which could leave invalid privilege entries in the system. +- 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. +- Fixed a bug where `SHOW TABLES` would show inaccurate row counts if the most recent statistics collection was partial. +- 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. +- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. - 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;` [#152374][#152374] -- Added an automatic repair for dangling or invalid entries in the `system.comments` table. [#152473][#152473] -- 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". [#152556][#152556] -- Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions. [#152680][#152680] + - `SET enable_durable_locking_for_serializable = on;` +- Added an automatic repair for dangling or invalid entries in the `system.comments` table. +- 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". +- Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions.

Performance improvements

-- Lookup joins can now be used on tables with virtual columns even if the type of the search argument is not identical to the column type referenced in the virtual column. [#152632][#152632] +- 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.

Miscellaneous

- Tunes S3 client retry behavior to be more reliable in the - presence of correlated errors. [#151873][#151873] - - -[#152594]: https://github.com/cockroachdb/cockroach/pull/152594 -[#151815]: https://github.com/cockroachdb/cockroach/pull/151815 -[#151818]: https://github.com/cockroachdb/cockroach/pull/151818 -[#152374]: https://github.com/cockroachdb/cockroach/pull/152374 -[#152473]: https://github.com/cockroachdb/cockroach/pull/152473 -[#152680]: https://github.com/cockroachdb/cockroach/pull/152680 -[#152138]: https://github.com/cockroachdb/cockroach/pull/152138 -[#151873]: https://github.com/cockroachdb/cockroach/pull/151873 -[#151527]: https://github.com/cockroachdb/cockroach/pull/151527 -[#152200]: https://github.com/cockroachdb/cockroach/pull/152200 -[#152556]: https://github.com/cockroachdb/cockroach/pull/152556 -[#152350]: https://github.com/cockroachdb/cockroach/pull/152350 -[#152341]: https://github.com/cockroachdb/cockroach/pull/152341 -[#152217]: https://github.com/cockroachdb/cockroach/pull/152217 -[#152315]: https://github.com/cockroachdb/cockroach/pull/152315 -[#152632]: https://github.com/cockroachdb/cockroach/pull/152632 + presence of correlated errors. diff --git a/src/current/_includes/releases/v25.3/v25.3.3.md b/src/current/_includes/releases/v25.3/v25.3.3.md index 2678277747e..5d016e55c31 100644 --- a/src/current/_includes/releases/v25.3/v25.3.3.md +++ b/src/current/_includes/releases/v25.3/v25.3.3.md @@ -6,30 +6,17 @@ Release Date: October 17, 2025

Operational changes

-- 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 disabled by default. [#153460][#153460] +- 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 disabled by default.

Bug fixes

-- Fixed a bug where an `INSERT` statement could fail with a type checking error while adding a `BIT(n)` column. [#152965][#152965] -- Fixed a bug where index creation could fail due to validation errors if the schema change was retried or paused/resumed during the backfill. [#153597][#153597] -- 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. [#153602][#153602] -- Fixed a bug where `ALTER POLICY` was incorrectly dropping dependency tracking for functions, sequences, or types in policy expressions. [#153804][#153804] -- 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). [#153913][#153913] -- Fixed a runtime error that could be hit if a new secondary index had a name collision with a primary index. [#154016][#154016] -- Fixed a bug where the `schema_locked` storage parameter was not being enforced on the `TRUNCATE` command, which could cause changefeed jobs to fail. [#154041][#154041] -- 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. [#154286][#154286] -- Disabled the `kv.lock_table.unreplicated_lock_reliability.split.enabled` feature, which could lead to a node crash. [#155414][#155414] -- Fixed a bug where the presence of duplicate temporary tables in a backup caused the restore to fail with an error containing the text `restoring table desc and namespace entries: table already exists`. [#154397][#154397] - - -[#153597]: https://github.com/cockroachdb/cockroach/pull/153597 -[#153602]: https://github.com/cockroachdb/cockroach/pull/153602 -[#153913]: https://github.com/cockroachdb/cockroach/pull/153913 -[#154016]: https://github.com/cockroachdb/cockroach/pull/154016 -[#155414]: https://github.com/cockroachdb/cockroach/pull/155414 -[#154397]: https://github.com/cockroachdb/cockroach/pull/154397 -[#153460]: https://github.com/cockroachdb/cockroach/pull/153460 -[#152965]: https://github.com/cockroachdb/cockroach/pull/152965 -[#153804]: https://github.com/cockroachdb/cockroach/pull/153804 -[#154041]: https://github.com/cockroachdb/cockroach/pull/154041 -[#154286]: https://github.com/cockroachdb/cockroach/pull/154286 +- Fixed a bug where an `INSERT` statement could fail with a type checking error while adding a `BIT(n)` column. +- Fixed a bug where index creation could fail due to validation errors if the schema change was retried or paused/resumed during the backfill. +- 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. +- Fixed a bug where `ALTER POLICY` was incorrectly dropping dependency tracking for functions, sequences, or types in policy expressions. +- 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). +- Fixed a runtime error that could be hit if a new secondary index had a name collision with a primary index. +- Fixed a bug where the `schema_locked` storage parameter was not being enforced on the `TRUNCATE` command, which could cause changefeed jobs to fail. +- 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. +- Disabled the `kv.lock_table.unreplicated_lock_reliability.split.enabled` feature, which could lead to a node crash. +- Fixed a bug where the presence of duplicate temporary tables in a backup caused the restore to fail with an error containing the text `restoring table desc and namespace entries: table already exists`. diff --git a/src/current/_includes/releases/v25.3/v25.3.4.md b/src/current/_includes/releases/v25.3/v25.3.4.md index 517ccd73278..036d1174351 100644 --- a/src/current/_includes/releases/v25.3/v25.3.4.md +++ b/src/current/_includes/releases/v25.3/v25.3.4.md @@ -6,6 +6,4 @@ Release Date: October 30, 2025

Bug fixes

-- 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. [#156313][#156313] - -[#156313]: https://github.com/cockroachdb/cockroach/pull/156313 +- 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. diff --git a/src/current/_includes/releases/v25.3/v25.3.5.md b/src/current/_includes/releases/v25.3/v25.3.5.md index 3d7c169ba60..04386302ed7 100644 --- a/src/current/_includes/releases/v25.3/v25.3.5.md +++ b/src/current/_includes/releases/v25.3/v25.3.5.md @@ -6,18 +6,13 @@ Release Date: November 14, 2025

SQL language changes

-- Added the `sql.statements.bytes_read.count` metric that counts the number of bytes scanned by SQL statements. [#156592][#156592] -- Added the `sql.statements.index_rows_written.count` metric that counts the number of primary and secondary index rows modified by SQL statements. [#156592][#156592] -- Added the `sql.statements.rows_read.count` metric that counts the number of index rows read by SQL statements. [#156592][#156592] -- Added the `sql.statements.index_bytes_written.count` metric that counts the number of primary and secondary index bytes modified by SQL statements. [#156592][#156592] +- Added the `sql.statements.bytes_read.count` metric that counts the number of bytes scanned by SQL statements. +- Added the `sql.statements.index_rows_written.count` metric that counts the number of primary and secondary index rows modified by SQL statements. +- Added the `sql.statements.rows_read.count` metric that counts the number of index rows read by SQL statements. +- Added the `sql.statements.index_bytes_written.count` metric that counts the number of primary and secondary index bytes modified by SQL statements.

Bug fixes

-- Fixed a bug where the job responsible for compacting stats for the SQL activity state could enter an unschedulable state. [#155964][#155964] -- Fixed a bug where CockroachDB didn't include reads and writes performed by routines (user-defined functions and stored procedures) as well as apply joins into the `bytes read`, `rows read`, and `rows written` statement execution statistics. The bug had been present since before v23.2. [#156501][#156501] -- Fixed a bug where changefeeds using CDC queries could sometimes unexpectedly fail after a schema change with a descriptor retrieval error. [#156551][#156551] - -[#156592]: https://github.com/cockroachdb/cockroach/pull/156592 -[#155964]: https://github.com/cockroachdb/cockroach/pull/155964 -[#156501]: https://github.com/cockroachdb/cockroach/pull/156501 -[#156551]: https://github.com/cockroachdb/cockroach/pull/156551 +- Fixed a bug where the job responsible for compacting stats for the SQL activity state could enter an unschedulable state. +- Fixed a bug where CockroachDB didn't include reads and writes performed by routines (user-defined functions and stored procedures) as well as apply joins into the `bytes read`, `rows read`, and `rows written` statement execution statistics. The bug had been present since before v23.2. +- Fixed a bug where changefeeds using CDC queries could sometimes unexpectedly fail after a schema change with a descriptor retrieval error. diff --git a/src/current/_includes/releases/v25.3/v25.3.6.md b/src/current/_includes/releases/v25.3/v25.3.6.md index d561a1b3f7e..798f5b787a7 100644 --- a/src/current/_includes/releases/v25.3/v25.3.6.md +++ b/src/current/_includes/releases/v25.3/v25.3.6.md @@ -6,30 +6,19 @@ Release Date: December 12, 2025

Bug fixes

-- A mechanism that prevents unsafe replication changes from causing loss of quorum now functions correctly. An internal function has been fixed to properly return errors, enhancing the reliability of replication safeguards. [#156522][#156522] -- 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`. [#156694][#156694] -- Attempting to create a vector index with the legacy schema changer will now fail gracefully instead of crashing the node. [#156781][#156781] -- Fixed a bug that could cause internal errors for queries using generic query plans with `NULL` placeholder values. [#156978][#156978] -- 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. [#157038][#157038] -- Fixed a bug where CockroachDB could encounter a `vector encoder doesn't support ForcePut yet` error when executing `COPY` commands concurrently with certain schema changes. The bug had existed since before v23.2. [#157199][#157199] -- Fixed a bug that could cause a schema change to be stuck in the reverting state if the `infer_rbr_region_col_using_constraint` storage parameter was being set at the same time as adding a constraint that had a foreign key violation. [#157843][#157843] +- A mechanism that prevents unsafe replication changes from causing loss of quorum now functions correctly. An internal function has been fixed to properly return errors, enhancing the reliability of replication safeguards. +- 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`. +- Attempting to create a vector index with the legacy schema changer will now fail gracefully instead of crashing the node. +- Fixed a bug that could cause internal errors for queries using generic query plans with `NULL` placeholder values. +- 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. +- Fixed a bug where CockroachDB could encounter a `vector encoder doesn't support ForcePut yet` error when executing `COPY` commands concurrently with certain schema changes. The bug had existed since before v23.2. +- Fixed a bug that could cause a schema change to be stuck in the reverting state if the `infer_rbr_region_col_using_constraint` storage parameter was being set at the same time as adding a constraint that had a foreign key violation.

Performance improvements

-- The cost of generic query plans is now calculated based on worst-case selectivities for placeholder equalities (e.g., `x = $1`). This reduces the chance of suboptimal generic query plans being chosen when `plan_cache_mode=auto`. [#156791][#156791] +- 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`.

Miscellaneous

- Span config reconciliation jobs no longer fail on the - destination after failover from a PCR stream of a system virtual cluster. [#156811][#156811] - - -[#156791]: https://github.com/cockroachdb/cockroach/pull/156791 -[#156781]: https://github.com/cockroachdb/cockroach/pull/156781 -[#156978]: https://github.com/cockroachdb/cockroach/pull/156978 -[#157038]: https://github.com/cockroachdb/cockroach/pull/157038 -[#157843]: https://github.com/cockroachdb/cockroach/pull/157843 -[#156522]: https://github.com/cockroachdb/cockroach/pull/156522 -[#156694]: https://github.com/cockroachdb/cockroach/pull/156694 -[#157199]: https://github.com/cockroachdb/cockroach/pull/157199 -[#156811]: https://github.com/cockroachdb/cockroach/pull/156811 + destination after failover from a PCR stream of a system virtual cluster. diff --git a/src/current/_includes/releases/v25.3/v25.3.7.md b/src/current/_includes/releases/v25.3/v25.3.7.md index 3a0c895129c..83d8a157db8 100644 --- a/src/current/_includes/releases/v25.3/v25.3.7.md +++ b/src/current/_includes/releases/v25.3/v25.3.7.md @@ -6,32 +6,22 @@ Release Date: January 9, 2026

Bug fixes

-- Fixed a bug where a SQL statement with side effects (e.g., `INSERT`) inside a PL/pgSQL routine could be dropped if it used an `INTO` clause and none of the target variables were referenced. This bug had been present since v23.2. [#158345][#158345] +- Fixed a bug where a SQL statement with side effects (e.g., `INSERT`) inside a PL/pgSQL routine could be dropped if it used an `INTO` clause and none of the target variables were referenced. This bug had been present since v23.2. - Fixed a bug that could cause incorrect query results when using prepared statements with _NULL_ placeholders. The bug has existed since v21.2 and violated SQL _NULL_-equality semantics by returning rows with _NULL_ values when the result set should have been empty. From v21.2 to v25.3, the bug occurred when all of the following were true: - The query was run with an explicit or implicit prepared statement - The query had an equality filter on a placeholder and a `UNIQUE` column - The column contained _NULL_ values - The placeholder was assigned to _NULL_ during execution - - Starting in v25.4, the requirements to trigger the bug were loosened: the column no longer needed to be `UNIQUE`, and the bug could be reproduced if the column was included in any index. [#159069][#159069] -- Fixed a bug that allowed columns to be dropped despite being referenced by a routine. This could occur when a column was only referenced as a target column in the `SET` clause of an `UPDATE` statement within the routine. This fix only applies to newly-created routines. In versions prior to v26.1, the fix must be enabled by setting the session variable `prevent_update_set_column_drop`. [#159442][#159442] -- Fixed a bug where creating a routine could create unnecessary column dependencies when the routine references columns through `CHECK` constraints (including those for RLS policies and hash-sharded indexes) or partial index predicates. These unnecessary dependencies prevented dropping the column without first dropping the routine. The fix is gated behind the session setting `use_improved_routine_deps_triggers_and_computed_cols`, which is off by default in versions prior to v26.1. [#159442][#159442] -- Fixed a bug that caused newly-created routines to incorrectly prevent dropping columns that were not directly referenced, most notably columns referenced by computed column expressions. The fix is gated behind the session setting `use_improved_routine_deps_triggers_and_computed_cols`, which is off by default prior to v26.1. [#159442][#159442] -- Fixed a bug that could cause a panic during changefeed startup if an error occurred while initializing the metrics controller. [#159547][#159547] -- Fixed a bug causing a query predicate to be ignored when the predicate was on a column following one or more `ENUM` columns in an index, the predicate constrained the column to multiple values, and a lookup join to the index was chosen for the query plan. This bug was introduced in 24.3.0 and has been present in all versions since. [#159776][#159776] -- Fixed a bug where renaming a column that participated in multiple hash-sharded indexes would fail. [#160089][#160089] + - Starting in v25.4, the requirements to trigger the bug were loosened: the column no longer needed to be `UNIQUE`, and the bug could be reproduced if the column was included in any index. +- Fixed a bug that allowed columns to be dropped despite being referenced by a routine. This could occur when a column was only referenced as a target column in the `SET` clause of an `UPDATE` statement within the routine. This fix only applies to newly-created routines. In versions prior to v26.1, the fix must be enabled by setting the session variable `prevent_update_set_column_drop`. +- Fixed a bug where creating a routine could create unnecessary column dependencies when the routine references columns through `CHECK` constraints (including those for RLS policies and hash-sharded indexes) or partial index predicates. These unnecessary dependencies prevented dropping the column without first dropping the routine. The fix is gated behind the session setting `use_improved_routine_deps_triggers_and_computed_cols`, which is off by default in versions prior to v26.1. +- Fixed a bug that caused newly-created routines to incorrectly prevent dropping columns that were not directly referenced, most notably columns referenced by computed column expressions. The fix is gated behind the session setting `use_improved_routine_deps_triggers_and_computed_cols`, which is off by default prior to v26.1. +- Fixed a bug that could cause a panic during changefeed startup if an error occurred while initializing the metrics controller. +- Fixed a bug causing a query predicate to be ignored when the predicate was on a column following one or more `ENUM` columns in an index, the predicate constrained the column to multiple values, and a lookup join to the index was chosen for the query plan. This bug was introduced in 24.3.0 and has been present in all versions since. +- Fixed a bug where renaming a column that participated in multiple hash-sharded indexes would fail. - Fixed a deadlock that could occur when a statistics creation task panicked.[#160583][#160583]

Performance improvements

-- `AFTER` triggers now use a cache for descriptor lookups of `TG_TABLE_SCHEMA`, which can significantly reduce trigger planning latency. [#159386][#159386] -- Added a new session variable, `distsql_prevent_partitioning_soft_limited_scans`, which, when true, prevents scans with soft limits from being planned as multiple `TableReaders` by the physical planner. This should decrease the initial setup costs of some fully-distributed query plans. [#160604][#160604] - -[#159442]: https://github.com/cockroachdb/cockroach/pull/159442 -[#159547]: https://github.com/cockroachdb/cockroach/pull/159547 -[#160583]: https://github.com/cockroachdb/cockroach/pull/160583 -[#160604]: https://github.com/cockroachdb/cockroach/pull/160604 -[#158345]: https://github.com/cockroachdb/cockroach/pull/158345 -[#159069]: https://github.com/cockroachdb/cockroach/pull/159069 -[#159776]: https://github.com/cockroachdb/cockroach/pull/159776 -[#160089]: https://github.com/cockroachdb/cockroach/pull/160089 -[#159386]: https://github.com/cockroachdb/cockroach/pull/159386 +- `AFTER` triggers now use a cache for descriptor lookups of `TG_TABLE_SCHEMA`, which can significantly reduce trigger planning latency. +- Added a new session variable, `distsql_prevent_partitioning_soft_limited_scans`, which, when true, prevents scans with soft limits from being planned as multiple `TableReaders` by the physical planner. This should decrease the initial setup costs of some fully-distributed query plans. diff --git a/src/current/_includes/releases/v25.4/backward-incompatible.md b/src/current/_includes/releases/v25.4/backward-incompatible.md index 87eacf5d216..556ec4b8407 100644 --- a/src/current/_includes/releases/v25.4/backward-incompatible.md +++ b/src/current/_includes/releases/v25.4/backward-incompatible.md @@ -1,13 +1,9 @@ - `bulkio.backup.deprecated_full_backup_with_subdir.enabled` - Removed the `bulkio.backup.deprecated_full_backup_with_subdir.enabled` cluster setting. This optional ability to specify a target subdirectory with the `BACKUP` command when creating a full backup was deprecated in v22.1. [#153628][#153628] + Removed the `bulkio.backup.deprecated_full_backup_with_subdir.enabled` cluster setting. This optional ability to specify a target subdirectory with the `BACKUP` command when creating a full backup was deprecated in v22.1. - `sql.schema.approx_max_object_count` (default: `20000`) - Added cluster setting `sql.schema.approx_max_object_count` 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] + Added cluster setting `sql.schema.approx_max_object_count` 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. -- This release includes a fix in Kafka topic creation, resolving a bug where changefeeds using a field or table name containing capital letters would result in the unicode value for a quotation mark `_u0022_` being used in the topic name instead of the intended double quote `"` character. As a result of this fix, existing changefeed topics that contain the `_u0022_` unicode are updated in v25.4 to automatically have the topic name updated to use double quote characters instead. Update your Kafka sinks to account for the topic name change. [#149438][#149438] - -[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 -[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 -[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 +- This release includes a fix in Kafka topic creation, resolving a bug where changefeeds using a field or table name containing capital letters would result in the unicode value for a quotation mark `_u0022_` being used in the topic name instead of the intended double quote `"` character. As a result of this fix, existing changefeed topics that contain the `_u0022_` unicode are updated in v25.4 to automatically have the topic name updated to use double quote characters instead. Update your Kafka sinks to account for the topic name change. diff --git a/src/current/_includes/releases/v25.4/cluster-setting-changes.md b/src/current/_includes/releases/v25.4/cluster-setting-changes.md index 4d1daf5cffa..24a01cdde03 100644 --- a/src/current/_includes/releases/v25.4/cluster-setting-changes.md +++ b/src/current/_includes/releases/v25.4/cluster-setting-changes.md @@ -4,77 +4,60 @@ Changes to [cluster settings]({% link v25.4/cluster-settings.md %}) should be re - `changefeed.progress.frontier_persistence.interval` (default: `30s`) - 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] + 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. - `log.channel_compatibility_mode.enabled` (default: `true`) - - In a future major release, 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 a future major release, 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] - - In a future major release, `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] + - In a future major release, 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. + - In a future major release, 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. + - In a future major release, `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. - `sql.catalog.allow_leased_descriptors.enabled` (default: `false`) - 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] + 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. - `sql.log.scan_row_count_misestimate.enabled` (default: `false`) - Added a 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 a 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. - `sql.stats.error_on_concurrent_create_stats.enabled` (default: `true`) - Introduced the cluster setting `sql.stats.error_on_concurrent_create_stats.enabled`, which modifies how CockroachDB reacts to concurrent auto stats jobs. The default, `true`, maintains the previous behavior. Setting `sql.stats.error_on_concurrent_create_stats.enabled` to `false` will cause the concurrent auto stats job to be skipped with just a log entry and no increased error counters. [#149538][#149538] + Introduced the cluster setting `sql.stats.error_on_concurrent_create_stats.enabled`, which modifies how CockroachDB reacts to concurrent auto stats jobs. The default, `true`, maintains the previous behavior. Setting `sql.stats.error_on_concurrent_create_stats.enabled` to `false` will cause the concurrent auto stats job to be skipped with just a log entry and no increased error counters. - `sql.trace.txn.include_internal.enabled` (default: `true`) - 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] + 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. - `sql.trace.txn.jaeger_json_output.enabled` (default: `false`) - 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 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. - `storage.unhealthy_write_duration` (default: `20s`) - 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 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.
Settings with changed defaults
-- `feature.vector_index.enabled` now defaults to `true`. Vector indexing is now enabled by default. [#155561][#155561] +- `feature.vector_index.enabled` now defaults to `true`. Vector indexing is now enabled by default. -- `storage.value_separation.enabled` now defaults to `true`. This enables [value separation]({% link v25.4/architecture/storage-layer.md %}#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] +- `storage.value_separation.enabled` now defaults to `true`. This enables [value separation]({% link v25.4/architecture/storage-layer.md %}#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.
Removed settings
- `bulkio.backup.deprecated_full_backup_with_subdir.enabled` - Removed the `bulkio.backup.deprecated_full_backup_with_subdir.enabled` cluster setting. This optional ability to specify a target subdirectory with the `BACKUP` command when creating a full backup was deprecated in v22.1. [#153628][#153628] + Removed the `bulkio.backup.deprecated_full_backup_with_subdir.enabled` cluster setting. This optional ability to specify a target subdirectory with the `BACKUP` command when creating a full backup was deprecated in v22.1. - `storage.columnar_blocks.enabled` {% comment %}TODO: Verify with jbowens - Is this backward-incompatible since it can't be disabled anymore?{% endcomment %} - Removed the `storage.columnar_blocks.enabled` cluster setting; columnar blocks are always enabled. [#149371][#149371] + Removed the `storage.columnar_blocks.enabled` cluster setting; columnar blocks are always enabled.
Other setting changes
- `sql.ttl.replan_flow_threshold` {% comment %}Verify with spilchen{% endcomment %} - 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] - -- 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 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] - -[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 -[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 -[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 -[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 -[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 -[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 -[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 -[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 -[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 -[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 -[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 -[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 -[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 -[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 + 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. + +- 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. + +- 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. diff --git a/src/current/_includes/releases/v25.4/deprecations.md b/src/current/_includes/releases/v25.4/deprecations.md index be5c5b1192e..d8004fe6ad3 100644 --- a/src/current/_includes/releases/v25.4/deprecations.md +++ b/src/current/_includes/releases/v25.4/deprecations.md @@ -1,13 +1,9 @@ The following deprecations/removals are announced in v25.4. -- The functionality provided by session variable `enforce_home_region_follower_reads_enabled` was deprecated in v24.2.4 and is now removed. {% comment %}TODO: Verify with michae2 - Is this backward-incompatible?{% endcomment %}(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] +- The functionality provided by session variable `enforce_home_region_follower_reads_enabled` was deprecated in v24.2.4 and is now removed. {% comment %}TODO: Verify with michae2 - Is this backward-incompatible?{% endcomment %}(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. - The cluster settings `storage.columnar_blocks.enabled` and `bulkio.backup.deprecated_full_backup_with_subdir.enabled` have been removed. For details, refer to [Removed settings](#v25-4-0-settings-removed). -- The bespoke restore and import event logs have been deprecated. For any deployment that is reliant on those logs, use the status change event log which now plumbs the SQL user that owns the job. [#153889][#153889] +- The bespoke restore and import event logs have been deprecated. For any deployment that is reliant on those logs, use the status change event log which now plumbs the SQL user that owns the job. -- The `incremental_location` backup 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] - -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 -[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 \ No newline at end of file +- The `incremental_location` backup 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`). diff --git a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md index 09af6856d1f..36138e957cc 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-alpha.1.md @@ -12,7 +12,7 @@ Release Date: September 17, 2025 name and the fallback *userinfo* JSON key are configurable by `server.jwt_authentication.group_claim` and `server.jwt_authentication.userinfo_group_key` respectively. - The behavior matches the existing LDAP role-sync feature. [#147318][#147318] + The behavior matches the existing LDAP role-sync feature. - CockroachDB can now synchronize SQL role membership from the `groups` claim provided by an OpenID Connect (OIDC) Identity Provider when @@ -22,10 +22,10 @@ Release Date: September 17, 2025 verified ID token and, when available, the access token (if a JWT). Any groups found in either token are combined and deduplicated. If no claim is present in either, the provider's `/userinfo` endpoint is queried for groups, - as a final fallback. [#147706][#147706] + as a final fallback. - The JWT Authorization settings which - were added in [#147318](https://github.com/cockroachdb/cockroach/pull/147318) are no longer visible to users in v25.3. They - will be re-introduced in v25.4. [#149189][#149189] + were added in are no longer visible to users in v25.3. They + will be re-introduced in v25.4. - The following provisioning usability metric counters were added for LDAP-based user provisioning. @@ -36,55 +36,55 @@ Release Date: September 17, 2025 - 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] + (`auth.provisioning.login_success`).

General changes

-- 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] +- For virtual clusters, hot range logging is now performed by a single job on one node, rather than by tasks on every node. - 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] -- Added new metrics: `changefeed.stage.pts.create.latency`, `changefeed.stage.pts.manage.latency`, `changefeed.stage.pts.manage_error.latency`, to measure the performance of managing protected ts records. [#148471][#148471] -- Added an OTLP log sink that exports logs in OpenTelemetry Protocol format over gRPC to compatible targets such as `otel-collector`, Datadog, and Loki. [#148525][#148525] + messages sent to the sink. +- Added new metrics: `changefeed.stage.pts.create.latency`, `changefeed.stage.pts.manage.latency`, `changefeed.stage.pts.manage_error.latency`, to measure the performance of managing protected ts records. +- Added an OTLP log sink that exports logs in OpenTelemetry Protocol format over gRPC to compatible targets such as `otel-collector`, Datadog, and Loki. - 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] -- Changefeeds with the protobuf format now support the `resolved` option for emitting resolved timestamps. [#149622][#149622] + exceeding Kafka v2 size limit. +- The CockroachDB spatial libraries now rely on GEOS 3.12 instead of GEOS 3.11. +- Changefeeds with the protobuf format now support the `resolved` option for emitting resolved timestamps. - Changefeeds using the protobuf format - now support wrapped envelopes in kafka sinks [#149696][#149696] + now support wrapped envelopes in kafka sinks - Restore jobs now log errors on retry to - the job messages table. [#149821][#149821] + the job messages table. - 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] + users understand the tradeoff between message latency and cluster CPU usage. - 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] -- Reduced the maximum backoff for changefeed retries from 10 minutes to 1 minute, which results in faster recovery from transient errors. [#146448][#146448] -- Added `changefeed.sink_backpressure_nanos` metric to track time spent waiting for quota when emitting to the sink. [#150666][#150666] -- The download phase of restore operations now will retry downloads before giving up, when faced with an error. [#148821][#148821] -- Fixed a memory accounting issue in the client certificate cache that caused multiple allocations to be reported for the same certificate. The cache now accurately tracks memory usage and includes a safeguard to prevent it from negatively affecting SQL operations. [#151041][#151041] -- Fixed a rare bug in restore where an object storage error on restore start could cause restore to report success without creating the restored tables or databases. [#151148][#151148] -- Tuned S3 client retry behavior to be more reliable in the presence of correlated errors. [#151817][#151817] + now support enriched envelopes. +- 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. +- Added `headers` configuration option to OTLP log sink. +- CockroachDB spatial libraries now rely on GEOS 3.13 instead of GEOS 3.12. +- Reduced the maximum backoff for changefeed retries from 10 minutes to 1 minute, which results in faster recovery from transient errors. +- Added `changefeed.sink_backpressure_nanos` metric to track time spent waiting for quota when emitting to the sink. +- The download phase of restore operations now will retry downloads before giving up, when faced with an error. +- 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. +- Fixed a rare bug in restore where an object storage error on restore start could cause restore to report success without creating the restored tables or databases. +- Tuned S3 client retry behavior to be more reliable in the presence of correlated errors.

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] +- 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. +- 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. - Added support for camelCase parameter names (e.g., `SharedAccessKeyName`) in Azure Event Hub Kafka sink - configuration [#144735][#144735] + configuration - 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 should be - view-only when checking set role options for a user. [#147272][#147272] + view-only when checking set role options for a user. - 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 @@ -93,122 +93,122 @@ Release Date: September 17, 2025 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] + start. - 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] -- The `CITEXT` data type is now supported, enabling case-insensitive comparisons for `CITEXT` columns. Internally, `CITEXT` is equivalent to using the undetermined level 2 collation `und-u-ks-level2`. For example, under `CITEXT`, the expression `'test' = 'TEST'` returns `TRUE`. [#147864][#147864] -- The functionality provided by session variable `enforce_home_region_follower_reads_enabled` was deprecated in v24.2.4 and is now removed. (The variable itself remains for backward compatibility but has no effect.) Note that the related session variable `enforce_home_region` is **not** deprecated and still functions normally. [#148314][#148314] -- Added support for automatically determining the region column for a `REGIONAL BY ROW` table using a foreign key constraint. The foreign key is specified by setting a new table storage parameter `infer_rbr_region_col_using_constraint`, and must contain the region column. This can be useful for applications that are unable to guarantee that a child row is inserted or updated from the same region as the matching parent row. [#148540][#148540] -- Added support for invoking a UDF from a view query. Renaming or setting the schema on the routine is currently not allowed if it is referenced by a view. [#148616][#148616] -- Updated the `SHOW CREATE FUNCTION` and `SHOW CREATE PROCEDURE` statements to show fully qualified table names rather than assuming they are qualified with the current database. [#148746][#148746] -- Added the `has_system_privilege` builtin function, which can be used to check if a user has the given system privilege. [#149051][#149051] -- Updated schema change job status messages to be more user-friendly and descriptive, instead of using internal schema change architecture terminology. [#149096][#149096] -- The logical cluster now uses an external connection and automatically updates its configuration when that connection changes. [#149261][#149261] + token's issuer as the source of the provisioned user. +- 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`. +- 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. +- 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. +- 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. +- 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. +- Added the `has_system_privilege` builtin function, which can be used to check if a user has the given system privilege. +- Updated schema change job status messages to be more user-friendly and descriptive, instead of using internal schema change architecture terminology. +- The logical cluster now uses an external connection and automatically updates its configuration when that connection changes. - Fixed a bug where extra quotes or escaped quote characters would be added to topic names in changefeeds. Can be turned off by setting `feature.changefeed.bare_table_names` to - false. [#149438][#149438] + false. - The users with the role option `PROVISIONSRC` assigned to them will be unable to change their own password overriding any config set for sql.auth.change_own_password.enabled cluster setting. Changing other role options still has the same privilege requirements as before (either CREATEROLE or CREATELOGIN, depending on the option). The role option for PROVISIONSRC is also only assignable and cannot be altered using `ALTER role` - command. [#149463][#149463] -- The session setting `optimizer_prefer_bounded_cardinality` is now enabled by default. This setting instructs the optimizer to prefer query plans where every expression has a guaranteed upper-bound on the number of rows it will process. [#149486][#149486] -- The session setting `optimizer_min_row_count`, which sets a lower bound on row count estimates for relational expressions during query planning, is now set to `1` by default. [#149602][#149602] + command. +- 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. +- 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. - 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] + with the column names. - 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 `SHOW ROLES` and `SHOW USERS` commands now include an `estimated_last_login_time` column that displays the estimated timestamp of when each user last authenticated to the database. This column shows `NULL` for users who have never logged in, and for existing users after upgrading to v25.3 until their next login. The tracking is performed on a best-effort basis and may not capture every login event. [#150105][#150105] -- The `options` column in the output of `SHOW ROLES` and `SHOW USERS` is now returned as an array of strings (e.g., `{NOLOGIN,CREATEDB}`) rather than as a single comma-separated string. This enables more efficient querying of role options using array functions like `unnest()`. For example: `SELECT * FROM [SHOW ROLES] AS r WHERE EXISTS (SELECT 1 FROM unnest(r.options) AS m(option) WHERE option LIKE 'SUBJECT=cn%');` [#148532][#148532] -- The session setting `optimizer_min_row_count`, which sets a lower bound on row count estimates for relational expressions during query planning, is now set to `1` by default. [#150376][#150376] -- `LTREE` is now supported with ancestry operators and with the `concat` operator. Specifically, CockroachDB now allows `ltree @> ltree`, `ltree[] @> ltree`, `ltree @> ltree[]`, `ltree <@ ltree`, `ltree[] <@ ltree`, and `ltree <@ ltree[]` binary comparisons, as well as `ltree[] ?@> ltree`, `ltree[] ?<@ ltree`, and `ltree || ltree` binary operations. The `?@>` and `?<@` are new binary operators that return the first ltree (or `NULL`) that is an ancestor or descendant of the right ltree argument in the array. [#150598][#150598] -- Clusters utilizing cluster virtualization, such as those running Physical Cluster Replication (PCR), apply the same admission control (AC) pacing to various bulk operations used by clusters that are not running with cluster virtualization. [#150633][#150633] -- All PostgreSQL built-in functions for `LTREE` are now supported: `subltree()`, `subpath()`, `nlevel()`, `index()`, `text2ltree()`, `ltree2text()`, and `lca()`. While the `lca()` function in PostgreSQL specifically limits up to 8 LTREE args, the CockroachDB `lca()` function accepts any variable number of ltree args. [#150647][#150647] -- `CREATE USER` and `GRANT` role operations now wait for full-cluster visibility of the new user table version rather than blocking on convergence. [#150747][#150747] -- Improved the optimizer to hoist projections above joins in more cases, which can lead to better query plans. This behavior can be enabled with the new session variable `optimizer_use_improved_hoist_join_project`. [#150887][#150887] -- Previously, using a pausable portal with a procedure call could cause a panic, depending on the function body. Now, transaction control statements such as procedure calls (e.g., `CALL myfunc()`) are disallowed within pausable portals. [#151153][#151153] -- Added the `allow_unsafe_internals` session variable to gate access to system database internals. Default access is allowed to support testing. [#151362][#151362] -- When `sql_safe_updates` is enabled, the `ALTER TABLE ... LOCALITY` statement will be blocked when trying to convert an existing table to `REGIONAL BY ROW`, unless a region column has been added to the table. This protects against undesired behavior that caused `UPDATE` or `DELETE` statements to fail against the table while the locality change was in progress. [#151423][#151423] -- Added metrics for statements executed within a stored procedure or function. The following metrics count statements that began execution, including those that failed: `sql_routine_select_started_count`, `sql_routine_update_started_count`, `sql_routine_insert_started_count`, and `sql_routine_delete_started_count`. The following metrics count only successful executions: `sql_routine_select_count`, `sql_routine_update_count`, `sql_routine_insert_count`, and `sql_routine_delete_count`. All counters are global and increment before the transaction is committed or aborted. [#151689][#151689] -- Introduced the `inspect_errors` system table. [#151821][#151821] -- Added a new session variable, `disable_optimizer_rules`, which allows users to provide a comma-separated list of optimizer rules to disable during query optimization. This allows users to avoid rules that are known to create a suboptimal query plan for specific queries. [#151959][#151959] -- The SQL observability statements `SHOW TRANSACTIONS`, `SHOW QUERIES`, and `SHOW SESSIONS` now include an `isolation_level` column that shows the isolation level of the active transaction, or the session's default isolation level when there is no active transaction. [#152352][#152352] -- The default value of `use_soft_limit_for_distribute_scan` session variable is now `true`. This means that, by default, the soft limit (if available) will be used to determine whether a scan is "large" and, thus, should be distributed. For example, with `estimated row count: 100 - 10,000`, CockroachDB will use `100` as the estimate to compare against the value of `distribute_scan_row_count_threshold`. [#152557][#152557] + Fixes #98610 +- 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. +- The `SHOW ROLES` and `SHOW USERS` commands now include an `estimated_last_login_time` column that displays the estimated timestamp of when each user last authenticated to the database. This column shows `NULL` for users who have never logged in, and for existing users after upgrading to v25.3 until their next login. The tracking is performed on a best-effort basis and may not capture every login event. +- The `options` column in the output of `SHOW ROLES` and `SHOW USERS` is now returned as an array of strings (e.g., `{NOLOGIN,CREATEDB}`) rather than as a single comma-separated string. This enables more efficient querying of role options using array functions like `unnest()`. For example: `SELECT * FROM [SHOW ROLES] AS r WHERE EXISTS (SELECT 1 FROM unnest(r.options) AS m(option) WHERE option LIKE 'SUBJECT=cn%');` +- 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. +- `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. +- 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. +- 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. +- `CREATE USER` and `GRANT` role operations now wait for full-cluster visibility of the new user table version rather than blocking on convergence. +- 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`. +- 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. +- Added the `allow_unsafe_internals` session variable to gate access to system database internals. Default access is allowed to support testing. +- 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. +- 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. +- Introduced the `inspect_errors` system table. +- 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. +- 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. +- 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`.

Operational changes

- The `/health/restart_safety` endpoint indicates - when it is unsafe to terminate a node. [#142930][#142930] -- Added the following cluster settings for configuring blob file rewrite compactions: `storage.value_separation.rewrite_minimum_age` and `storage.value_separation.compaction_garbage_threshold`. [#148782][#148782] -- The default value of `server.mem_profile.total_dump_size_limit` (which controls how much space can be used by automatically collected heap profiles) has been increased from 256MiB to 512MiB. [#148848][#148848] -- Added new experimental values for compression cluster settings to the storage engine. [#148849][#148849] -- The `storage.value_separation.enabled` cluster setting is now enabled by default. This enables value separation for SSTables, where values exceeding a certain size threshold are stored in separate blob files rather than inline in the SSTable. This helps improve write performance (write amplification) by avoiding rewriting such values during compactions. [#148857][#148857] -- A structured event is now logged to the `SQL_SCHEMA` channel when the `REFRESH MATERIALIZED VIEW` statement is executed. [#149153][#149153] -- Removed the `storage.columnar_blocks.enabled` cluster setting; columnar blocks are always enabled. [#149371][#149371] + when it is unsafe to terminate a node. +- Added the following cluster settings for configuring blob file rewrite compactions: `storage.value_separation.rewrite_minimum_age` and `storage.value_separation.compaction_garbage_threshold`. +- 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. +- Added new experimental values for compression cluster settings to the storage engine. +- 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. +- A structured event is now logged to the `SQL_SCHEMA` channel when the `REFRESH MATERIALIZED VIEW` statement is executed. +- Removed the `storage.columnar_blocks.enabled` cluster setting; columnar blocks are always enabled. - 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 the cluster setting `sql.stats.error_on_concurrent_create_stats.enabled`, which modifies how CockroachDB reacts to concurrent auto stats jobs. The default, `true`, maintains the previous behavior. Setting `sql.stats.error_on_concurrent_create_stats.enabled` to `false` will cause the concurrent auto stats job to be skipped with just a log entry and no increased error counters. [#149538][#149538] -- The value of `sql.stats.error_on_concurrent_create_stats.enabled` now defaults to `false`, suppressing error counters for auto stats jobs that fail due to concurrent stats jobs in progress. [#149848][#149848] -- Updated TTL job replanning to be less sensitive by focusing specifically on detecting when nodes become unavailable rather than reacting to all plan differences. The cluster setting `sql.ttl.replan_flow_threshold` may have been set to `0` to work around the TTL replanner being too sensitive; this fix will alleviate that and any instance that had set `replan_flow_threshold` to `0` can be reset back to the default. [#150771][#150771] -- Added `auth.ldap.conn.latency.internal` metric to denote the internal authentication time for LDAP auth method. [#151105][#151105] -- Introduced two new logging channels: `KV_EXEC` and `CHANGEFEED`. The `KV_EXEC` channel is intended for KV events that 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 a future major release, 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 a future major release, 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 a future major release, `sampled_query` and `sampled_transaction` events will move from the `TELEMETRY` channel to the `SQL_EXEC` logging channel. To test for potential logging pipeline impacts of these changes, set `log.channel_compatibility_mode.enabled` to `false`. Avoid testing in production, as this setting changes live log behavior. [#151949][#151949] -- Delegate queries (such as `SHOW DATABASES`) are now excluded from unsafe SQL checks that restrict access to the `system` database and `crdb_internal` schema. This change ensures that these commands continue to function even when access to internal components is otherwise restricted. [#152084][#152084] -- The Physical Cluster Replication (PCR) reader tenant is always destroyed on cutover [#152509][#152509] -- `SYSTEM` privileges are inherited in read-only mode in standby Physical Cluster Replication (PCR) clusters. [#149708][#149708] -- You can now output transaction traces to the logs in Jaeger-compatible JSON format. This is controlled by the `sql.trace.txn.jaeger_json_output.enabled` cluster setting, which is disabled by default. When enabled, traces triggered by probabilistic sampling or statement latency thresholds will be formatted for easier ingestion by tools that support the Jaeger tracing format. [#151414][#151414] -- You can now exclude internal transactions from probabilistic transaction tracing and latency-based logging by setting the `sql.trace.txn.include_internal.enabled` cluster setting to false. This setting is enabled by default to preserve the current behavior, but disabling it is recommended when debugging customer workloads to reduce noise in trace output. [#151433][#151433] + - `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. +- Introduced the cluster setting `sql.stats.error_on_concurrent_create_stats.enabled`, which modifies how CockroachDB reacts to concurrent auto stats jobs. The default, `true`, maintains the previous behavior. Setting `sql.stats.error_on_concurrent_create_stats.enabled` to `false` will cause the concurrent auto stats job to be skipped with just a log entry and no increased error counters. +- 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. +- 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. +- Added `auth.ldap.conn.latency.internal` metric to denote the internal authentication time for LDAP auth method. +- 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. +- 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. +- In a future major release, 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. +- In a future major release, 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. +- Restricted access to all `crdb_internal` built-ins unless the session variable `allow_unsafe_internals` is set to `true`, or the caller is internal. +- In a future major release, `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. +- 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. +- The Physical Cluster Replication (PCR) reader tenant is always destroyed on cutover +- `SYSTEM` privileges are inherited in read-only mode in standby Physical Cluster Replication (PCR) clusters. +- 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. +- 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.

Command-line changes

-- 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] -- Updated the help text for the `--database` and `--url` CLI flags to document support for virtual cluster syntax. The `--database` flag now shows examples of both simple database names and the `cluster:virtual-cluster/database` format. The `--url` flag examples now include the virtual cluster syntax in PostgreSQL connection URLs. [#150624][#150624] -- Updated `cockroach workload` internals to read init‑time schema and SQL artifacts and run SQL workloads with placeholder‑driven data generation. [#150836][#150836] -- Added support for simple `CHECK` constraints and bit/bytes column generators to `cockroach workload`'s workload generator. [#150926][#150926] -- Added a new file, `cluster_settings_history.txt`, to debug zips. This file contains a history of cluster setting changes based on the system event log table. The history is only available while the corresponding events remain in the table. Sensitive settings are always redacted, and non-reportable settings are redacted when the debug zip is generated with redaction enabled. [#151066][#151066] +- 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. +- 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. +- 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. +- 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. +- 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. +- Added SQL workload extraction and rewriting support to the internals of `cockroach workload`, enabling placeholder‐driven data-generation workflows from CockroachDB debug logs. +- Updated the help text for the `--database` and `--url` CLI flags to document support for virtual cluster syntax. The `--database` flag now shows examples of both simple database names and the `cluster:virtual-cluster/database` format. The `--url` flag examples now include the virtual cluster syntax in PostgreSQL connection URLs. +- Updated `cockroach workload` internals to read init‑time schema and SQL artifacts and run SQL workloads with placeholder‑driven data generation. +- Added support for simple `CHECK` constraints and bit/bytes column generators to `cockroach workload`'s workload generator. +- 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.

DB Console changes

-- 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] +- 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. +- Fixed a bug where **Drop Unused Index** recommendations were not populated on the Schema Insights tab after a hard refresh of the Insights page. +- Updated the DB Console so that the tenant dropdown now appears in insecure mode when multiple virtual clusters are available.

Bug fixes

-- Fixed an issue where hot range logging for virtual clusters omitted some hot ranges. [#143775][#143775] -- Removed unnecessary Kafka topic creation that could cause changefeed startup to fail when using `changefeed.new_kafka_sink_enabled=false`. [#146476][#146476] -- Fixed a bug that would cause a `CALL` statement executed via a portal in the extended wire protocol to result in an error like `unknown portal ""` if the stored procedure contained `COMMIT` or `ROLLBACK` statements. The bug had existed since PL/pgSQL transaction control statements were introduced in v24.1. The fix is off by default in versions prior to v25.3. [#147923][#147923] +- Fixed an issue where hot range logging for virtual clusters omitted some hot ranges. +- Removed unnecessary Kafka topic creation that could cause changefeed startup to fail when using `changefeed.new_kafka_sink_enabled=false`. +- 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. - 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] + recent local lease transfers not yet reflected in store capacity or gossip. - 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] + has now been fixed. +- CockroachDB now supports decoding `VECTOR` and `BOX2D` types from the binary format of the PostgreSQL extended protocol (pgwire). - The `RESET ALL` statement no longer affects the following session variables: - `is_superuser` - `role` @@ -218,237 +218,76 @@ Release Date: September 17, 2025 - `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] + 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. +- CockroachDB now prohibits `ORDER BY` and join equality operations on `REFCURSOR` types, matching PostgreSQL behavior. +- 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. - 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] + the changefeed to retry. +- 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. +- 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. +- Fixed a minor bug that caused inconsistent behavior with the very rarely used `"char"` type (distinct from `CHAR`). +- 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. +- 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. - 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 (although the gateway node of the plan was not affected), and could only be mitigated by restarting the node. [#149800][#149800] -- Attempting to create a vector index with the legacy schema changer will now fail gracefully instead of crashing the node. [#149812][#149812] -- Improved split and scatter behavior for `CREATE INDEX` when statistics are available for key columns. [#150238][#150238] -- Fixed a bug that was preventing the row-level TTL table storage parameters (e.g., `ttl_select_batch_size`, `ttl_delete_batch_size`, `ttl_delete_rate_limit`, `ttl_select_rate_limit`) from being set to `0`, which is their default value. [#150253][#150253] -- Fixed an issue where discarding zone configs on sequences did not actually remove the configuration. [#150255][#150255] + revoked in this scenario. +- Fixed a slow memory leak that was introduced in v25.1.8, v25.2.1, v25.2.2, and v25.3 betas. The leak would accumulate whenever a node executed a part of the distributed plan (although the gateway node of the plan was not affected), and could only be mitigated by restarting the node. +- Attempting to create a vector index with the legacy schema changer will now fail gracefully instead of crashing the node. +- Improved split and scatter behavior for `CREATE INDEX` when statistics are available for key columns. +- 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. +- Fixed an issue where discarding zone configs on sequences did not actually remove the configuration. - Fixed a bug where modifying a changefeed with `ALTER CHANGEFEED` that either unset or left the `gc_protect_expires_after` option unset would cause the changefeed's max PTS age to become unbounded instead of being set to the default value configured by the `changefeed.protect_timestamp.max_age` - 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] + cluster setting. +- Fixed a bug that would allow a race condition in foreign key cascades under `READ COMMITTED` and `REPEATABLE READ` isolation levels. +- 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`. +- 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. +- Addressed a bug on `schema_locked` tables when a column is dropped, and `schema_locked` is toggled for the user. +- Fixed the `pg_catalog.pg_type` enties for the "any" and "trigger" pseudotypes. +- Fixed an issue where Row Level Security (RLS) policies with missing dependencies during table-level restores could cause inconsistent state or restore failures. +- 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. +- 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. +- Fixed a bug where `debug.zip` files collected from clusters with `disallow_full_table_scans` enabled were missing system table data. - Fix handling of empty arrays in JSONPath lax mode comparisons. Empty arrays now return false for comparisons in lax mode and - null in strict mode, matching PostgreSQL behavior. [#151226][#151226] -- Fixed a bug where `DROP USER` succeeded even though a role owned default privileges, which could leave invalid privilege entries in the system. [#151472][#151472] -- Fixed a bug where sequences could lose references to triggers, allowing them to be dropped incorrectly. [#151546][#151546] -- Previously, CockroachDB could incorrectly elevate the number of rows deleted on tables with multiple column families. The bug was present v19.2 and is now fixed. Note that the data was deleted correctly, but the "rows affected" number was wrong. [#151563][#151563] -- Added an automatic repair for dangling or invalid entries in the `system.comments` table. [#151737][#151737] -- Previously, CockroachDB could hit an error `ERROR: span with results after resume span...` when evaluating some queries with `ORDER BY ... DESC` in an edge case. This bug was present since v22.1 and is now fixed. [#151774][#151774] -- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. [#151947][#151947] -- Fixed a bug where executing certain statements with `BETWEEN SYMMETRIC` expressions could panic if used with values of different types, such as `... b'bytes' BETWEEN SYMMETRIC 'a' AND 'c'`. [#151951][#151951] -- Fixed a bug where `SHOW TABLES` would show inaccurate row counts if the most recent statistics collection was partial. [#152033][#152033] -- Fixed a bug that prevented `RESTORE` from working if there were computed columns or `ON UPDATE` expressions that referenced user-defined functions (UDFs). This bug was introduced in v25.3.0. [#152193][#152193] + null in strict mode, matching PostgreSQL behavior. +- Fixed a bug where `DROP USER` succeeded even though a role owned default privileges, which could leave invalid privilege entries in the system. +- Fixed a bug where sequences could lose references to triggers, allowing them to be dropped incorrectly. +- 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. +- Added an automatic repair for dangling or invalid entries in the `system.comments` table. +- 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. +- Fixed a bug where updating column default expressions would incorrectly remove sequence ownerships for the affected column. +- 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'`. +- Fixed a bug where `SHOW TABLES` would show inaccurate row counts if the most recent statistics collection was partial. +- 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. - 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] + - `SET enable_durable_locking_for_serializable = on;` +- 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". +- `pg_class.pg_depend` now contains entries with `deptype='i'` (internal) for identity columns that own sequences. These previously had `deptype='a'` (auto). +- Fixed a bug that caused an error when dropping a column and a `UNIQUE WITHOUT INDEX` constraint that referenced it in the same transaction. +- Fixed a bug where views could not reference the `crdb_region` column from their underlying tables in expressions.

Performance improvements

-- Some queries with filters of the form `x IS NOT DISTINCT FROM y` now have more optimal query plans. [#146494][#146494] -- Mutation statements (`UPDATE` and `DELETE`) that perform lookup joins into multi-region tables (perhaps as part of a `CASCADE`) are now more likely to parallelize the lookups across ranges, improving their performance. [#148186][#148186] -- `LIKE` filter expressions of the form `x LIKE '%'` are now normalized to `TRUE` if `x` is non-`NULL` within a `SELECT` expression. [#148763][#148763] -- Filters of the form `x LIKE '%'` are now normalized to `x IS NOT NULL`, enabling performance improvements on both nullable and non-nullable columns. Previously, such filters were normalized directly to `TRUE`, which only applied to non-`NULL` columns. [#149614][#149614] -- Updated the storage engine to reduce write amplification by storing Raft log values in separate blob files. This reduces write bandwidth, especially on stores with many replicas. This in turn can increase throughput and reduce latency. This behavior is active as long as the `storage.value_separation.enabled` cluster setting is enabled. [#149712][#149712] -- Improved the efficiency and throughput of catch-up scans used by Change Data Capture (CDC) and Physical Cluster Replication (PCR) in cases where substantial catch-up work is required. [#150738][#150738] -- Certain types of simple queries on tables with row-level security enabled are now more efficiently executed. [#151337][#151337] -- `LTREE` is now index-accelerated with the `@>` operator. [#152353][#152353] -- `LTREE` is now index-accelerated with the `<@` operator. [#152353][#152353] -- Lookup joins can now be used on tables with virtual columns even if the type of the search argument is not identical to the column type referenced in the virtual column. [#152399][#152399] +- Some queries with filters of the form `x IS NOT DISTINCT FROM y` now have more optimal query plans. +- 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. +- `LIKE` filter expressions of the form `x LIKE '%'` are now normalized to `TRUE` if `x` is non-`NULL` within a `SELECT` expression. +- 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. +- 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. +- 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. +- Certain types of simple queries on tables with row-level security enabled are now more efficiently executed. +- `LTREE` is now index-accelerated with the `@>` operator. +- `LTREE` is now index-accelerated with the `<@` operator. +- 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.

Build changes

-- Upgraded to Go 1.23.12 [#152207][#152207] - - -[#152399]: https://github.com/cockroachdb/cockroach/pull/152399 -[#150655]: https://github.com/cockroachdb/cockroach/pull/150655 -[#144735]: https://github.com/cockroachdb/cockroach/pull/144735 -[#149463]: https://github.com/cockroachdb/cockroach/pull/149463 -[#149513]: https://github.com/cockroachdb/cockroach/pull/149513 -[#150350]: https://github.com/cockroachdb/cockroach/pull/150350 -[#152023]: https://github.com/cockroachdb/cockroach/pull/152023 -[#148782]: https://github.com/cockroachdb/cockroach/pull/148782 -[#150321]: https://github.com/cockroachdb/cockroach/pull/150321 -[#149838]: https://github.com/cockroachdb/cockroach/pull/149838 -[#149119]: https://github.com/cockroachdb/cockroach/pull/149119 -[#146494]: https://github.com/cockroachdb/cockroach/pull/146494 -[#146813]: https://github.com/cockroachdb/cockroach/pull/146813 -[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 -[#149800]: https://github.com/cockroachdb/cockroach/pull/149800 -[#148753]: https://github.com/cockroachdb/cockroach/pull/148753 -[#146448]: https://github.com/cockroachdb/cockroach/pull/146448 -[#150647]: https://github.com/cockroachdb/cockroach/pull/150647 -[#150535]: https://github.com/cockroachdb/cockroach/pull/150535 -[#151951]: https://github.com/cockroachdb/cockroach/pull/151951 -[#150738]: https://github.com/cockroachdb/cockroach/pull/150738 -[#145549]: https://github.com/cockroachdb/cockroach/pull/145549 -[#148859]: https://github.com/cockroachdb/cockroach/pull/148859 -[#148849]: https://github.com/cockroachdb/cockroach/pull/148849 -[#151105]: https://github.com/cockroachdb/cockroach/pull/151105 -[#149570]: https://github.com/cockroachdb/cockroach/pull/149570 -[#146476]: https://github.com/cockroachdb/cockroach/pull/146476 -[#151337]: https://github.com/cockroachdb/cockroach/pull/151337 -[#147318]: https://github.com/cockroachdb/cockroach/pull/147318 -[#150501]: https://github.com/cockroachdb/cockroach/pull/150501 -[#151362]: https://github.com/cockroachdb/cockroach/pull/151362 -[#150364]: https://github.com/cockroachdb/cockroach/pull/150364 -[#151066]: https://github.com/cockroachdb/cockroach/pull/151066 -[#149712]: https://github.com/cockroachdb/cockroach/pull/149712 -[#147706]: https://github.com/cockroachdb/cockroach/pull/147706 -[#148525]: https://github.com/cockroachdb/cockroach/pull/148525 -[#149728]: https://github.com/cockroachdb/cockroach/pull/149728 -[#148719]: https://github.com/cockroachdb/cockroach/pull/148719 -[#149279]: https://github.com/cockroachdb/cockroach/pull/149279 -[#152245]: https://github.com/cockroachdb/cockroach/pull/152245 -[#149371]: https://github.com/cockroachdb/cockroach/pull/149371 -[#149638]: https://github.com/cockroachdb/cockroach/pull/149638 -[#151472]: https://github.com/cockroachdb/cockroach/pull/151472 -[#152033]: https://github.com/cockroachdb/cockroach/pull/152033 -[#152193]: https://github.com/cockroachdb/cockroach/pull/152193 -[#152447]: https://github.com/cockroachdb/cockroach/pull/152447 -[#151148]: https://github.com/cockroachdb/cockroach/pull/151148 -[#149438]: https://github.com/cockroachdb/cockroach/pull/149438 -[#150105]: https://github.com/cockroachdb/cockroach/pull/150105 -[#149153]: https://github.com/cockroachdb/cockroach/pull/149153 -[#149713]: https://github.com/cockroachdb/cockroach/pull/149713 -[#148476]: https://github.com/cockroachdb/cockroach/pull/148476 -[#151058]: https://github.com/cockroachdb/cockroach/pull/151058 -[#151737]: https://github.com/cockroachdb/cockroach/pull/151737 -[#149486]: https://github.com/cockroachdb/cockroach/pull/149486 -[#149898]: https://github.com/cockroachdb/cockroach/pull/149898 -[#151110]: https://github.com/cockroachdb/cockroach/pull/151110 -[#104649]: https://github.com/cockroachdb/cockroach/pull/104649 -[#151949]: https://github.com/cockroachdb/cockroach/pull/151949 -[#149373]: https://github.com/cockroachdb/cockroach/pull/149373 -[#143775]: https://github.com/cockroachdb/cockroach/pull/143775 -[#148770]: https://github.com/cockroachdb/cockroach/pull/148770 -[#149189]: https://github.com/cockroachdb/cockroach/pull/149189 -[#147272]: https://github.com/cockroachdb/cockroach/pull/147272 -[#149415]: https://github.com/cockroachdb/cockroach/pull/149415 -[#149096]: https://github.com/cockroachdb/cockroach/pull/149096 -[#150633]: https://github.com/cockroachdb/cockroach/pull/150633 -[#151093]: https://github.com/cockroachdb/cockroach/pull/151093 -[#151226]: https://github.com/cockroachdb/cockroach/pull/151226 -[#148186]: https://github.com/cockroachdb/cockroach/pull/148186 -[#151817]: https://github.com/cockroachdb/cockroach/pull/151817 -[#148746]: https://github.com/cockroachdb/cockroach/pull/148746 -[#150614]: https://github.com/cockroachdb/cockroach/pull/150614 -[#150435]: https://github.com/cockroachdb/cockroach/pull/150435 -[#149251]: https://github.com/cockroachdb/cockroach/pull/149251 -[#152300]: https://github.com/cockroachdb/cockroach/pull/152300 -[#150870]: https://github.com/cockroachdb/cockroach/pull/150870 -[#148314]: https://github.com/cockroachdb/cockroach/pull/148314 -[#149051]: https://github.com/cockroachdb/cockroach/pull/149051 -[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 -[#149869]: https://github.com/cockroachdb/cockroach/pull/149869 -[#149538]: https://github.com/cockroachdb/cockroach/pull/149538 -[#151414]: https://github.com/cockroachdb/cockroach/pull/151414 -[#149821]: https://github.com/cockroachdb/cockroach/pull/149821 -[#151153]: https://github.com/cockroachdb/cockroach/pull/151153 -[#150624]: https://github.com/cockroachdb/cockroach/pull/150624 -[#150926]: https://github.com/cockroachdb/cockroach/pull/150926 -[#152309]: https://github.com/cockroachdb/cockroach/pull/152309 -[#149975]: https://github.com/cockroachdb/cockroach/pull/149975 -[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 -[#151689]: https://github.com/cockroachdb/cockroach/pull/151689 -[#149449]: https://github.com/cockroachdb/cockroach/pull/149449 -[#148848]: https://github.com/cockroachdb/cockroach/pull/148848 -[#147923]: https://github.com/cockroachdb/cockroach/pull/147923 -[#148863]: https://github.com/cockroachdb/cockroach/pull/148863 -[#149540]: https://github.com/cockroachdb/cockroach/pull/149540 -[#150253]: https://github.com/cockroachdb/cockroach/pull/150253 -[#150413]: https://github.com/cockroachdb/cockroach/pull/150413 -[#150598]: https://github.com/cockroachdb/cockroach/pull/150598 -[#150887]: https://github.com/cockroachdb/cockroach/pull/150887 -[#151423]: https://github.com/cockroachdb/cockroach/pull/151423 -[#142930]: https://github.com/cockroachdb/cockroach/pull/142930 -[#152509]: https://github.com/cockroachdb/cockroach/pull/152509 -[#149614]: https://github.com/cockroachdb/cockroach/pull/149614 -[#151433]: https://github.com/cockroachdb/cockroach/pull/151433 -[#151041]: https://github.com/cockroachdb/cockroach/pull/151041 -[#148200]: https://github.com/cockroachdb/cockroach/pull/148200 -[#149708]: https://github.com/cockroachdb/cockroach/pull/149708 -[#152557]: https://github.com/cockroachdb/cockroach/pull/152557 -[#151807]: https://github.com/cockroachdb/cockroach/pull/151807 -[#152353]: https://github.com/cockroachdb/cockroach/pull/152353 -[#148471]: https://github.com/cockroachdb/cockroach/pull/148471 -[#151186]: https://github.com/cockroachdb/cockroach/pull/151186 -[#150666]: https://github.com/cockroachdb/cockroach/pull/150666 -[#147864]: https://github.com/cockroachdb/cockroach/pull/147864 -[#148857]: https://github.com/cockroachdb/cockroach/pull/148857 -[#149602]: https://github.com/cockroachdb/cockroach/pull/149602 -[#150376]: https://github.com/cockroachdb/cockroach/pull/150376 -[#151959]: https://github.com/cockroachdb/cockroach/pull/151959 -[#150238]: https://github.com/cockroachdb/cockroach/pull/150238 -[#152084]: https://github.com/cockroachdb/cockroach/pull/152084 -[#150283]: https://github.com/cockroachdb/cockroach/pull/150283 -[#151546]: https://github.com/cockroachdb/cockroach/pull/151546 -[#151774]: https://github.com/cockroachdb/cockroach/pull/151774 -[#148821]: https://github.com/cockroachdb/cockroach/pull/148821 -[#149622]: https://github.com/cockroachdb/cockroach/pull/149622 -[#151827]: https://github.com/cockroachdb/cockroach/pull/151827 -[#148763]: https://github.com/cockroachdb/cockroach/pull/148763 -[#150771]: https://github.com/cockroachdb/cockroach/pull/150771 -[#151692]: https://github.com/cockroachdb/cockroach/pull/151692 -[#149093]: https://github.com/cockroachdb/cockroach/pull/149093 -[#149433]: https://github.com/cockroachdb/cockroach/pull/149433 -[#149812]: https://github.com/cockroachdb/cockroach/pull/149812 -[#149686]: https://github.com/cockroachdb/cockroach/pull/149686 -[#150375]: https://github.com/cockroachdb/cockroach/pull/150375 -[#148617]: https://github.com/cockroachdb/cockroach/pull/148617 -[#150291]: https://github.com/cockroachdb/cockroach/pull/150291 -[#151185]: https://github.com/cockroachdb/cockroach/pull/151185 -[#151947]: https://github.com/cockroachdb/cockroach/pull/151947 -[#152670]: https://github.com/cockroachdb/cockroach/pull/152670 -[#150476]: https://github.com/cockroachdb/cockroach/pull/150476 -[#151887]: https://github.com/cockroachdb/cockroach/pull/151887 -[#151563]: https://github.com/cockroachdb/cockroach/pull/151563 -[#148576]: https://github.com/cockroachdb/cockroach/pull/148576 -[#148616]: https://github.com/cockroachdb/cockroach/pull/148616 -[#151045]: https://github.com/cockroachdb/cockroach/pull/151045 -[#150696]: https://github.com/cockroachdb/cockroach/pull/150696 -[#148532]: https://github.com/cockroachdb/cockroach/pull/148532 -[#150836]: https://github.com/cockroachdb/cockroach/pull/150836 -[#148540]: https://github.com/cockroachdb/cockroach/pull/148540 -[#150255]: https://github.com/cockroachdb/cockroach/pull/150255 -[#152207]: https://github.com/cockroachdb/cockroach/pull/152207 -[#150777]: https://github.com/cockroachdb/cockroach/pull/150777 -[#149696]: https://github.com/cockroachdb/cockroach/pull/149696 -[#130547]: https://github.com/cockroachdb/cockroach/pull/130547 -[#152352]: https://github.com/cockroachdb/cockroach/pull/152352 -[#149848]: https://github.com/cockroachdb/cockroach/pull/149848 -[#151804]: https://github.com/cockroachdb/cockroach/pull/151804 - +- Upgraded to Go 1.23.12 diff --git a/src/current/_includes/releases/v25.4/v25.4.0-alpha.2.md b/src/current/_includes/releases/v25.4/v25.4.0-alpha.2.md index 32dcb5b8f26..62518abcbdd 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-alpha.2.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-alpha.2.md @@ -6,8 +6,8 @@ Release Date: September 23, 2025

SQL language changes

-- `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] -- Introduced the `inspect_errors` system table. [#151821][#151821] +- `CREATE USER` and `GRANT` role operations now wait for full-cluster visibility of the new user table version rather than blocking on convergence. +- Introduced the `inspect_errors` system table. - You 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: @@ -17,25 +17,25 @@ Release Date: September 23, 2025 INSERT INTO t VALUES (1), (2), (3), (4), (5); CREATE STATISTICS constrained_stat ON a FROM t WHERE a > 2; ~~~ - [#152469][#152469] + -- 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 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.

Operational changes

-- 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 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] +- 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. +- 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. - A new `changefeed` file group that collects - changefeed logs has been added to the default logging configuration. [#153381][#153381] + changefeed logs has been added to the default logging configuration.

Bug fixes

-- 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 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 where the `schema_locked` storage parameter was not being enforced on the `TRUNCATE` command, which could cause changefeed jobs to fail. +- 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. - 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] + a `CHECK EXTERNAL CONNECTION` command. +- Fixed a bug where index creation could fail due to validation errors if the schema change was retried or paused/resumed during the backfill.

Performance improvements

@@ -44,23 +44,8 @@ Release Date: September 23, 2025 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] + cluster setting.

Miscellaneous

-- 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] - - -[#153111]: https://github.com/cockroachdb/cockroach/pull/153111 -[#153583]: https://github.com/cockroachdb/cockroach/pull/153583 -[#150747]: https://github.com/cockroachdb/cockroach/pull/150747 -[#151821]: https://github.com/cockroachdb/cockroach/pull/151821 -[#153294]: https://github.com/cockroachdb/cockroach/pull/153294 -[#152532]: https://github.com/cockroachdb/cockroach/pull/152532 -[#153380]: https://github.com/cockroachdb/cockroach/pull/153380 -[#153491]: https://github.com/cockroachdb/cockroach/pull/153491 -[#153048]: https://github.com/cockroachdb/cockroach/pull/153048 -[#152469]: https://github.com/cockroachdb/cockroach/pull/152469 -[#152181]: https://github.com/cockroachdb/cockroach/pull/152181 -[#153381]: https://github.com/cockroachdb/cockroach/pull/153381 -[#152932]: https://github.com/cockroachdb/cockroach/pull/152932 +- 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. diff --git a/src/current/_includes/releases/v25.4/v25.4.0-beta.1.md b/src/current/_includes/releases/v25.4/v25.4.0-beta.1.md index 8e116a494e6..4f5f1aaccc0 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-beta.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-beta.1.md @@ -6,51 +6,32 @@ Release Date: October 1, 2025

SQL language changes

-- The logical cluster now uses an external connection and automatically updates its configuration when that connection changes. [#149261][#149261] -- Included `num_txn_retries` and `num_txn_auto_retries` into the `crdb_internal.{cluster,node}_queries` virtual tables as well as output of SHOW QUERIES. These columns, when not NULL, have the same information as `num_retries` and `num_auto_retries` columns of `crdb_internal.{cluster,node}_transactions` virtual tables for the same transaction in which the active query is executed. [#149503][#149503] -- Tables with vector indexes will no longer be taken offline while the vector index builds. [#151074][#151074] -- Introduced the unimplemented `SHOW INSPECT ERRORS` statement. [#151674][#151674] -- 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] +- The logical cluster now uses an external connection and automatically updates its configuration when that connection changes. +- Included `num_txn_retries` and `num_txn_auto_retries` into the `crdb_internal.{cluster,node}_queries` virtual tables as well as output of SHOW QUERIES. These columns, when not NULL, have the same information as `num_retries` and `num_auto_retries` columns of `crdb_internal.{cluster,node}_transactions` virtual tables for the same transaction in which the active query is executed. +- Tables with vector indexes will no longer be taken offline while the vector index builds. +- Introduced the unimplemented `SHOW INSPECT ERRORS` statement. +- 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. +- Implemented the `pg_get_function_arg_default` builtin function. This also causes the `information_schema.parameters(parameter_default)` column to be populated correctly.

Operational changes

-- Removed the `bulkio.backup.deprecated_full_backup_with_subdir.enabled` cluster setting, since backups will now fail if this 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] -- Deprecated the bespoke restore and import event logs. For any deployment that is reliant on those logs, use the status change event log which now plumbs the SQL user that owns the job. [#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] +- Removed the `bulkio.backup.deprecated_full_backup_with_subdir.enabled` cluster setting, since backups will now fail if this is set to true. +- Raised the cache size for the storage engine's block cache to 256 MiB. Note that production systems should always configure this setting. +- Deprecated the bespoke restore and import event logs. For any deployment that is reliant on those logs, use the status change event log which now plumbs the SQL user that owns the job. +- 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).

DB Console changes

-- 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] +- 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.

Bug fixes

-- Fixed a bug where a CockroachDB node could crash when executing DO statements that contain user-defined types (possibly non-existing) in non-default configuration. [#151849][#151849] -- 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] +- Fixed a bug where a CockroachDB node could crash when executing DO statements that contain user-defined types (possibly non-existing) in non-default configuration. +- Fixed a deadlock in `DROP COLUMN CASCADE` operations when dropping columns referenced by `STORED` computed columns. +- Fixed a bug where `ALTER POLICY` was incorrectly dropping dependency tracking for functions, sequences, or types in policy expressions. +- Fixed a bug where we would not show the pgwire `RowDescription` for `EXECUTE` statements that were themselves prepared using the pgwire `Parse` command. +- Fixed a runtime error that could be hit if a new secondary index had a name collision with a primary index.

Miscellaneous

-- Fixed a bug where the presence of duplicate temporary tables in a backup caused the restore to fail with a `restoring table desc and namespace entries: table already exists` error. Informs: #153722 [#153724][#153724] - - -[#153739]: https://github.com/cockroachdb/cockroach/pull/153739 -[#153889]: https://github.com/cockroachdb/cockroach/pull/153889 -[#151849]: https://github.com/cockroachdb/cockroach/pull/151849 -[#153683]: https://github.com/cockroachdb/cockroach/pull/153683 -[#151674]: https://github.com/cockroachdb/cockroach/pull/151674 -[#149503]: https://github.com/cockroachdb/cockroach/pull/149503 -[#151074]: https://github.com/cockroachdb/cockroach/pull/151074 -[#153628]: https://github.com/cockroachdb/cockroach/pull/153628 -[#149261]: https://github.com/cockroachdb/cockroach/pull/149261 -[#153890]: https://github.com/cockroachdb/cockroach/pull/153890 -[#153905]: https://github.com/cockroachdb/cockroach/pull/153905 -[#153608]: https://github.com/cockroachdb/cockroach/pull/153608 -[#153617]: https://github.com/cockroachdb/cockroach/pull/153617 -[#153787]: https://github.com/cockroachdb/cockroach/pull/153787 -[#153986]: https://github.com/cockroachdb/cockroach/pull/153986 -[#153724]: https://github.com/cockroachdb/cockroach/pull/153724 -[#153625]: https://github.com/cockroachdb/cockroach/pull/153625 +- Fixed a bug where the presence of duplicate temporary tables in a backup caused the restore to fail with a `restoring table desc and namespace entries: table already exists` error. Informs: #153722 diff --git a/src/current/_includes/releases/v25.4/v25.4.0-beta.2.md b/src/current/_includes/releases/v25.4/v25.4.0-beta.2.md index 58336d8738a..1d901a51327 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-beta.2.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-beta.2.md @@ -7,12 +7,12 @@ Release Date: October 10, 2025

General changes

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

SQL language changes

-- Added the `SHOW INSPECT ERRORS` command. This command can be used to view issues that are identified by running the `INSPECT` command to validate tables and indexes. [#154337][#154337] -- Added the `sql.catalog.allow_leased_descriptors.enabled` cluster setting, which is false by default. When set to true, queries that access the `pg_catalog` or `information_schema` can use cached leased descriptors to populate the data in those tables, with the tradeoff that some of the data could be stale. [#154491][#154491] +- 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. +- 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. - CockroachDB now supports index acceleration for certain `jsonb_path_exists` filters used in `WHERE` clauses. Given `jsonb_path_exists(json_obj, json_path_expression)`, an inverted index is supported only when `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]...` @@ -24,42 +24,25 @@ Release Date: October 10, 2025 - `$[*]` - `$.a.b.c == 12`, `$.a.b.c > 12`, or `$.a.b.c < 12` (operation expressions) - `$.a.b ? (@.a > 10)` (filter with 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] + +- 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.

Operational changes

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

Bug fixes

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

Performance improvements

-- The cost of generic query plans is now calculated based on worst-case selectivities for placeholder equalities (e.g., x = $1). This reduces the chance of suboptimal generic query plans being chosen when `plan_cache_mode=auto`. [#154899][#154899] - -[#154337]: https://github.com/cockroachdb/cockroach/pull/154337 -[#154491]: https://github.com/cockroachdb/cockroach/pull/154491 -[#154388]: https://github.com/cockroachdb/cockroach/pull/154388 -[#154459]: https://github.com/cockroachdb/cockroach/pull/154459 -[#154385]: https://github.com/cockroachdb/cockroach/pull/154385 -[#154755]: https://github.com/cockroachdb/cockroach/pull/154755 -[#154576]: https://github.com/cockroachdb/cockroach/pull/154576 -[#154915]: https://github.com/cockroachdb/cockroach/pull/154915 -[#154631]: https://github.com/cockroachdb/cockroach/pull/154631 -[#154261]: https://github.com/cockroachdb/cockroach/pull/154261 -[#154659]: https://github.com/cockroachdb/cockroach/pull/154659 -[#154953]: https://github.com/cockroachdb/cockroach/pull/154953 -[#154166]: https://github.com/cockroachdb/cockroach/pull/154166 -[#154289]: https://github.com/cockroachdb/cockroach/pull/154289 -[#154709]: https://github.com/cockroachdb/cockroach/pull/154709 -[#154899]: https://github.com/cockroachdb/cockroach/pull/154899 +- 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`. diff --git a/src/current/_includes/releases/v25.4/v25.4.0-beta.3.md b/src/current/_includes/releases/v25.4/v25.4.0-beta.3.md index 63ed3055b80..969e209fb67 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-beta.3.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-beta.3.md @@ -6,7 +6,4 @@ Release Date: October 16, 2025

Bug fixes

-- 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] - - -[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 +- 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. diff --git a/src/current/_includes/releases/v25.4/v25.4.0-rc.1.md b/src/current/_includes/releases/v25.4/v25.4.0-rc.1.md index d091a8f21d3..dd20450c79a 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0-rc.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.0-rc.1.md @@ -10,40 +10,29 @@ Release Date: October 22, 2025 `sql.log.scan_row_count_misestimate.enabled` to use structured logging including the table and index being scanned, the estimated and actual row counts, the time since the last table stats collection, and the - table's estimated staleness. [#155123][#155123] + table's estimated staleness. - 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] + collection, and the table's estimated staleness. +- Added the `INSPECT` command, which runs consistency validation check jobs against tables or databases and specified indexes. - Added the `bulkio.index_backfill.vector_merge_batch_size cluster` setting to control how many vectors to merge into a vector index per transaction during - create operations. By default, this defaults to 3. [#155509][#155509] -- Vector indexing is now enabled by default. [#155561][#155561] + create operations. By default, this defaults to 3. +- Vector indexing is now enabled by default.

Bug fixes

-- 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] +- 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. - Disable a feature (`kv.lock_table.unreplicated_lock_reliability.split.enabled`) that could - lead to a node crash. [#155366][#155366] + lead to a node crash. - Previously, we could corrupt the first bucket of table statistic histograms in certain cases, causing underestimates for - range counts near the lower end of the domain, which is now fixed. [#155415][#155415] + range counts near the lower end of the domain, which is now fixed. - A potential deadlock during vector index - creation has been corrected. [#155508][#155508] -- Added proper dependency handling when adding a constraint with `NOT VALID` that references a user-defined function (UDF). [#155528][#155528] - - -[#155123]: https://github.com/cockroachdb/cockroach/pull/155123 -[#155441]: https://github.com/cockroachdb/cockroach/pull/155441 -[#155508]: https://github.com/cockroachdb/cockroach/pull/155508 -[#155509]: https://github.com/cockroachdb/cockroach/pull/155509 -[#155561]: https://github.com/cockroachdb/cockroach/pull/155561 -[#155077]: https://github.com/cockroachdb/cockroach/pull/155077 -[#155366]: https://github.com/cockroachdb/cockroach/pull/155366 -[#155415]: https://github.com/cockroachdb/cockroach/pull/155415 -[#155528]: https://github.com/cockroachdb/cockroach/pull/155528 + creation has been corrected. +- Added proper dependency handling when adding a constraint with `NOT VALID` that references a user-defined function (UDF). diff --git a/src/current/_includes/releases/v25.4/v25.4.0.md b/src/current/_includes/releases/v25.4/v25.4.0.md index 1c242387535..2de9951b856 100644 --- a/src/current/_includes/releases/v25.4/v25.4.0.md +++ b/src/current/_includes/releases/v25.4/v25.4.0.md @@ -276,28 +276,28 @@ This section describes newly identified limitations in CockroachDB v25.4. ##### Views -- The `security_invoker` attribute for views is not supported. Views always use the view definer's privileges when checking permissions. [#138918](https://github.com/cockroachdb/cockroach/issues/138918) -- Casting subqueries to [user-defined types]({% link v25.4/create-type.md %}) (including `ENUM`s) in views is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) +- The `security_invoker` attribute for views is not supported. Views always use the view definer's privileges when checking permissions. +- Casting subqueries to [user-defined types]({% link v25.4/create-type.md %}) (including `ENUM`s) in views is not supported. ##### User-defined functions -- User-defined functions are not supported in partial index predicates. [#155488](https://github.com/cockroachdb/cockroach/issues/155488) -- Views cannot reference a UDF that contains mutation statements (`INSERT`, `UPDATE`, `UPSERT`, `DELETE`). [#151686](https://github.com/cockroachdb/cockroach/issues/151686) +- User-defined functions are not supported in partial index predicates. +- Views cannot reference a UDF that contains mutation statements (`INSERT`, `UPDATE`, `UPSERT`, `DELETE`). ##### Stored procedures -- Pausable portals are not supported with `CALL` statements for stored procedures. [#151529](https://github.com/cockroachdb/cockroach/issues/151529) +- Pausable portals are not supported with `CALL` statements for stored procedures. ##### Mixed-isolation workloads -- Mixed-isolation-level workloads must enable foreign-key check locking for `SERIALIZABLE` transactions to avoid race conditions. [#151663](https://github.com/cockroachdb/cockroach/issues/151663#issuecomment-3222083180) +- Mixed-isolation-level workloads must enable foreign-key check locking for `SERIALIZABLE` transactions to avoid race conditions. ##### Data domiciling -- When using the `infer_rbr_region_col_using_constraint` option, inserting rows with `DEFAULT` for the region column uses the database's primary region instead of inferring the region from the parent table via foreign-key constraint. [#150783](https://github.com/cockroachdb/cockroach/issues/150783) +- When using the `infer_rbr_region_col_using_constraint` option, inserting rows with `DEFAULT` for the region column uses the database's primary region instead of inferring the region from the parent table via foreign-key constraint. {% comment %} {{site.data.alerts.callout_info}} Limitations will be added as they are discovered. {{site.data.alerts.end}} -{% endcomment %} \ No newline at end of file +{% endcomment %} 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 55e02c71364..16c645498f3 100644 --- a/src/current/_includes/releases/v25.4/v25.4.1.md +++ b/src/current/_includes/releases/v25.4/v25.4.1.md @@ -6,57 +6,35 @@ Release Date: December 3, 2025

SQL language changes

-- 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] +- Added a `sql.statements.rows_read.count` metric that counts the number of index rows read by SQL statements. +- Added a `sql.statements.index_rows_written.count` metric that counts the number of primary and secondary index rows modified by SQL statements. +- Added a `sql.statements.index_bytes_written.count` metric that counts the number of primary and secondary index bytes modified by SQL statements. +- Added a `sql.statements.bytes_read.count` metric that counts the number of bytes scanned by SQL statements. +- CockroachDB now supports index accelerating `jsonb_path_exists` filters with JSONpath expressions that end with an AnyKey (`*`).

Bug fixes

-- 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 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. [#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] -- 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. 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] +- 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. +- 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. +- 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. +- Fixed a bug where the job responsible for compacting stats for the SQL activity state could enter an unschedulable state. +- 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. +- 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. +- Fixed a bug where changefeeds using CDC queries could sometimes unexpectedly fail after a schema change with a descriptor retrieval error. +- Fixed a bug where `DROP SCHEMA CASCADE` with complex references from triggers could run into an error. +- 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. +- 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`. +- 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. +- Fixed a bug that caused incorrect `gossip.callbacks.pending_duration` metric values to be recorded. +- 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. +- Fixed a bug that could cause internal errors for queries using generic query plans with `NULL` placeholder values. +- 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.

Performance improvements

-- 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] +- 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.

Miscellaneous

-- 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] - -[#156812]: https://github.com/cockroachdb/cockroach/pull/156812 -[#155927]: https://github.com/cockroachdb/cockroach/pull/155927 -[#157037]: https://github.com/cockroachdb/cockroach/pull/157037 -[#155460]: https://github.com/cockroachdb/cockroach/pull/155460 -[#156564]: https://github.com/cockroachdb/cockroach/pull/156564 -[#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 -[#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 +- Logical Data Replication (LDR) no longer requires the database name to be specified in the external connection URI when setting up a bidirectional stream. +- Span config reconciliation jobs no longer fail on the destination after failover from a Physical Cluster Replication (PCR) stream of a system virtual cluster. diff --git a/src/current/_includes/releases/v25.4/v25.4.10.md b/src/current/_includes/releases/v25.4/v25.4.10.md index a233488d628..2b4415db589 100644 --- a/src/current/_includes/releases/v25.4/v25.4.10.md +++ b/src/current/_includes/releases/v25.4/v25.4.10.md @@ -6,18 +6,11 @@ Release Date: May 1, 2026

SQL language changes

-- Add a new session variable `optimizer_span_limit` which bounds the number of spans the optimizer will allow in a single constrained index scan. If a single `IN` set has more items than this limit, that `IN` set will not be used to build a constrained index scan. If the cross product of two or more `IN` sets would produce more spans than this limit for a composite index, then only a prefix of the `IN` sets will be used to produce spans. [#168892][#168892] +- Add a new session variable `optimizer_span_limit` which bounds the number of spans the optimizer will allow in a single constrained index scan. If a single `IN` set has more items than this limit, that `IN` set will not be used to build a constrained index scan. If the cross product of two or more `IN` sets would produce more spans than this limit for a composite index, then only a prefix of the `IN` sets will be used to produce spans.

Bug fixes

-- Fixed a bug where the view owner's privileges on underlying tables were not checked when selecting from a view. A view would continue to work even after the owner lost access to the underlying tables. This also affects row-level security (RLS); the view invoker's RLS policies are enforced instead of the view owner's. To enforce privilege checks on underlying tables, set the `sql.auth.skip_underlying_view_privilege_checks.enabled` cluster setting to `false`. This setting defaults to `true` to prevent backward-incompatible behavior. [#166730][#166730] -- Fixed a bug where transient I/O errors (such as cloud storage network timeouts) during split or merge trigger evaluation were misidentified as replica corruption, causing the node to crash. These errors now correctly fail the operation, which is retried automatically. [#168013][#168013] -- Fixed a bug where transient I/O errors reading from the `AbortSpan` were misidentified as replica corruption, causing the node to crash. These errors are now returned to the caller as regular errors. [#168015][#168015] -- Fixed a bug where DB Console Databases page privilege checks did not resolve role membership chains for `CONNECT` grants. Users who inherited `CONNECT` through role hierarchies now correctly see their authorized databases and tables. [#168493][#168493] - - -[#166730]: https://github.com/cockroachdb/cockroach/pull/166730 -[#168013]: https://github.com/cockroachdb/cockroach/pull/168013 -[#168015]: https://github.com/cockroachdb/cockroach/pull/168015 -[#168493]: https://github.com/cockroachdb/cockroach/pull/168493 -[#168892]: https://github.com/cockroachdb/cockroach/pull/168892 +- Fixed a bug where the view owner's privileges on underlying tables were not checked when selecting from a view. A view would continue to work even after the owner lost access to the underlying tables. This also affects row-level security (RLS); the view invoker's RLS policies are enforced instead of the view owner's. To enforce privilege checks on underlying tables, set the `sql.auth.skip_underlying_view_privilege_checks.enabled` cluster setting to `false`. This setting defaults to `true` to prevent backward-incompatible behavior. +- Fixed a bug where transient I/O errors (such as cloud storage network timeouts) during split or merge trigger evaluation were misidentified as replica corruption, causing the node to crash. These errors now correctly fail the operation, which is retried automatically. +- Fixed a bug where transient I/O errors reading from the `AbortSpan` were misidentified as replica corruption, causing the node to crash. These errors are now returned to the caller as regular errors. +- Fixed a bug where DB Console Databases page privilege checks did not resolve role membership chains for `CONNECT` grants. Users who inherited `CONNECT` through role hierarchies now correctly see their authorized databases and tables. diff --git a/src/current/_includes/releases/v25.4/v25.4.2.md b/src/current/_includes/releases/v25.4/v25.4.2.md index 77fc57233cc..76b9164fa98 100644 --- a/src/current/_includes/releases/v25.4/v25.4.2.md +++ b/src/current/_includes/releases/v25.4/v25.4.2.md @@ -6,25 +6,15 @@ Release Date: December 12, 2025

DB Console changes

-- The background (elastic) store graphs for exhausted duration, and the wait duration histogram, have been separated from the foreground (regular) graphs. [#156869][#156869] +- The background (elastic) store graphs for exhausted duration, and the wait duration histogram, have been separated from the foreground (regular) graphs.

SQL language changes

-- Fixed a bug where creating a routine could create unnecessary column dependencies when the routine references columns through CHECK constraints (including those for RLS policies and hash-sharded indexes) or partial index predicates. These unnecessary dependencies prevented dropping the column without first dropping the routine. The fix is gated behind the session setting `use_improved_routine_deps_triggers_and_computed_cols`, which is off by default prior to v26.1. [#159469][#159469] +- Fixed a bug where creating a routine could create unnecessary column dependencies when the routine references columns through CHECK constraints (including those for RLS policies and hash-sharded indexes) or partial index predicates. These unnecessary dependencies prevented dropping the column without first dropping the routine. The fix is gated behind the session setting `use_improved_routine_deps_triggers_and_computed_cols`, which is off by default prior to v26.1.

Bug fixes

-- Fixed a bug that caused newly-created routines to incorrectly prevent dropping columns that were not directly referenced, most notably columns referenced by computed column expressions. The fix is gated behind the session setting `use_improved_routine_deps_triggers_and_computed_cols`, which is off by default prior to v26.1. [#159469][#159469] -- A mechanism that prevents unsafe replication changes from causing loss of quorum now functions correctly. An internal function has been fixed to properly return errors, enhancing the reliability of replication safeguards. [#156523][#156523] -- Fixed a bug where CockroachDB could encounter a `vector encoder doesn't support ForcePut yet` error when executing `COPY` commands concurrently with certain schema changes. The bug had existed since before v23.2. [#157200][#157200] -- Fixed a bug that could cause a schema change to be stuck in the reverting state if the `infer_rbr_region_col_using_constraint` storage parameter was being set at the same time as adding a constraint that had a foreign key violation. [#157844][#157844] - -[#156523]: https://github.com/cockroachdb/cockroach/pull/156523 -[#156869]: https://github.com/cockroachdb/cockroach/pull/156869 -[#157011]: https://github.com/cockroachdb/cockroach/pull/157011 -[#157200]: https://github.com/cockroachdb/cockroach/pull/157200 -[#157228]: https://github.com/cockroachdb/cockroach/pull/157228 -[#157844]: https://github.com/cockroachdb/cockroach/pull/157844 -[#157853]: https://github.com/cockroachdb/cockroach/pull/157853 -[#159122]: https://github.com/cockroachdb/cockroach/pull/159122 -[#159469]: https://github.com/cockroachdb/cockroach/pull/159469 +- Fixed a bug that caused newly-created routines to incorrectly prevent dropping columns that were not directly referenced, most notably columns referenced by computed column expressions. The fix is gated behind the session setting `use_improved_routine_deps_triggers_and_computed_cols`, which is off by default prior to v26.1. +- A mechanism that prevents unsafe replication changes from causing loss of quorum now functions correctly. An internal function has been fixed to properly return errors, enhancing the reliability of replication safeguards. +- Fixed a bug where CockroachDB could encounter a `vector encoder doesn't support ForcePut yet` error when executing `COPY` commands concurrently with certain schema changes. The bug had existed since before v23.2. +- Fixed a bug that could cause a schema change to be stuck in the reverting state if the `infer_rbr_region_col_using_constraint` storage parameter was being set at the same time as adding a constraint that had a foreign key violation. diff --git a/src/current/_includes/releases/v25.4/v25.4.3.md b/src/current/_includes/releases/v25.4/v25.4.3.md index 43e242f1298..b096cea888a 100644 --- a/src/current/_includes/releases/v25.4/v25.4.3.md +++ b/src/current/_includes/releases/v25.4/v25.4.3.md @@ -6,45 +6,29 @@ Release Date: January 9, 2026

Operational changes

-- Successfully completed automatic SQL stats collecton jobs are now automatically purged rather than being retained for the full default job retention period. [#159412][#159412] +- Successfully completed automatic SQL stats collecton jobs are now automatically purged rather than being retained for the full default job retention period.

Bug fixes

-- Fixed a bug where a SQL statement with side effects (e.g., `INSERT`) inside a PL/pgSQL routine could be dropped if it used an `INTO` clause and none of the target variables were referenced. This bug had been present since v23.2. [#158346][#158346] +- Fixed a bug where a SQL statement with side effects (e.g., `INSERT`) inside a PL/pgSQL routine could be dropped if it used an `INTO` clause and none of the target variables were referenced. This bug had been present since v23.2. - Fixed a bug that could cause incorrect query results when using prepared statements with _NULL_ placeholders. The bug has existed since v21.2 and violated SQL _NULL_-equality semantics by returning rows with _NULL_ values when the result set should have been empty. From v21.2 to v25.3, the bug occurred when all of the following were true: - The query was run with an explicit or implicit prepared statement - The query had an equality filter on a placeholder and a `UNIQUE` column - The column contained _NULL_ values - The placeholder was assigned to _NULL_ during execution - - Starting in v25.4, the requirements to trigger the bug were loosened: the column no longer needed to be `UNIQUE`, and the bug could be reproduced if the column was included in any index. [#159062][#159062] -- Fixed a bug where `TRUNCATE` did not behave correctly with respect to the `schema_locked` storage parameter, and was not being blocked when Logical Data Replication (LDR) was in use. This behavior was incorrect and has been fixed. [#159404][#159404] -- Fixed a bug that allowed columns to be dropped despite being referenced by a routine. This could occur when a column was only referenced as a target column in the `SET` clause of an `UPDATE` statement within the routine. This fix only applies to newly-created routines. In versions prior to v26.1, the fix must be enabled by setting the session variable `prevent_update_set_column_drop`. [#159441][#159441] -- Fixed a race condition that could occur during context cancellation of an incoming snapshot. [#159535][#159535] -- Fixed a bug that could cause a panic during changefeed startup if an error occurred while initializing the metrics controller. [#159548][#159548] -- Fixed a memory accounting issue that could occur when a lease expired due to a SQL liveness session-based timeout. [#159622][#159622] -- Fixed an issue where long-running transactions with many statements could cause unbounded memory growth in the SQL statistics subsystem. When a transaction includes a large number of statements, the SQL statistics ingester now automatically flushes buffered statistics before the transaction commits. As a side effect, the flushed statement statistics might not have an associated transaction fingerprint ID because the transaction has not yet completed. In such cases, the transaction fingerprint ID cannot be backfilled after the fact. [#159646][#159646] -- Fixed a bug causing a query predicate to be ignored when the predicate was on a column following one or more `ENUM` columns in an index, the predicate constrained the column to multiple values, and a lookup join to the index was chosen for the query plan. This bug was introduced in 24.3.0 and has been present in all versions since. [#159777][#159777] -- Fixed a race condition where queries run after revoking `BYPASSRLS` could return wrong results because cached plans failed to notice the change immediately. [#160086][#160086] -- Fixed a bug where renaming a column that participated in multiple hash-sharded indexes would fail. [#160087][#160087] -- Fixed a deadlock that could occur when a statistics creation task panicked. [#160584][#160584] + - Starting in v25.4, the requirements to trigger the bug were loosened: the column no longer needed to be `UNIQUE`, and the bug could be reproduced if the column was included in any index. +- Fixed a bug where `TRUNCATE` did not behave correctly with respect to the `schema_locked` storage parameter, and was not being blocked when Logical Data Replication (LDR) was in use. This behavior was incorrect and has been fixed. +- Fixed a bug that allowed columns to be dropped despite being referenced by a routine. This could occur when a column was only referenced as a target column in the `SET` clause of an `UPDATE` statement within the routine. This fix only applies to newly-created routines. In versions prior to v26.1, the fix must be enabled by setting the session variable `prevent_update_set_column_drop`. +- Fixed a race condition that could occur during context cancellation of an incoming snapshot. +- Fixed a bug that could cause a panic during changefeed startup if an error occurred while initializing the metrics controller. +- Fixed a memory accounting issue that could occur when a lease expired due to a SQL liveness session-based timeout. +- Fixed an issue where long-running transactions with many statements could cause unbounded memory growth in the SQL statistics subsystem. When a transaction includes a large number of statements, the SQL statistics ingester now automatically flushes buffered statistics before the transaction commits. As a side effect, the flushed statement statistics might not have an associated transaction fingerprint ID because the transaction has not yet completed. In such cases, the transaction fingerprint ID cannot be backfilled after the fact. +- Fixed a bug causing a query predicate to be ignored when the predicate was on a column following one or more `ENUM` columns in an index, the predicate constrained the column to multiple values, and a lookup join to the index was chosen for the query plan. This bug was introduced in 24.3.0 and has been present in all versions since. +- Fixed a race condition where queries run after revoking `BYPASSRLS` could return wrong results because cached plans failed to notice the change immediately. +- Fixed a bug where renaming a column that participated in multiple hash-sharded indexes would fail. +- Fixed a deadlock that could occur when a statistics creation task panicked.

Performance improvements

-- `AFTER` triggers now use a cache for descriptor lookups of `TG_TABLE_SCHEMA`, which can significantly reduce trigger planning latency. [#158908][#158908] -- Added a new session variable, `distsql_prevent_partitioning_soft_limited_scans`, which, when true, prevents scans with soft limits from being planned as multiple TableReaders by the physical planner. This should decrease the initial setup costs of some fully-distributed query plans. [#160603][#160603] - -[#159646]: https://github.com/cockroachdb/cockroach/pull/159646 -[#160086]: https://github.com/cockroachdb/cockroach/pull/160086 -[#158908]: https://github.com/cockroachdb/cockroach/pull/158908 -[#158346]: https://github.com/cockroachdb/cockroach/pull/158346 -[#159535]: https://github.com/cockroachdb/cockroach/pull/159535 -[#159622]: https://github.com/cockroachdb/cockroach/pull/159622 -[#160087]: https://github.com/cockroachdb/cockroach/pull/160087 -[#159412]: https://github.com/cockroachdb/cockroach/pull/159412 -[#159777]: https://github.com/cockroachdb/cockroach/pull/159777 -[#159441]: https://github.com/cockroachdb/cockroach/pull/159441 -[#159062]: https://github.com/cockroachdb/cockroach/pull/159062 -[#159404]: https://github.com/cockroachdb/cockroach/pull/159404 -[#159548]: https://github.com/cockroachdb/cockroach/pull/159548 -[#160584]: https://github.com/cockroachdb/cockroach/pull/160584 -[#160603]: https://github.com/cockroachdb/cockroach/pull/160603 +- `AFTER` triggers now use a cache for descriptor lookups of `TG_TABLE_SCHEMA`, which can significantly reduce trigger planning latency. +- Added a new session variable, `distsql_prevent_partitioning_soft_limited_scans`, which, when true, prevents scans with soft limits from being planned as multiple TableReaders by the physical planner. This should decrease the initial setup costs of some fully-distributed query plans. diff --git a/src/current/_includes/releases/v25.4/v25.4.4.md b/src/current/_includes/releases/v25.4/v25.4.4.md index 3b62a92ac08..4966eefe025 100644 --- a/src/current/_includes/releases/v25.4/v25.4.4.md +++ b/src/current/_includes/releases/v25.4/v25.4.4.md @@ -6,39 +6,26 @@ Release Date: February 11, 2026

General changes

-- Changefeeds now support the `partition_alg` option for specifying a kafka partitioning algorithm. Currently `fnv-1a` (default) and `murmur2` are supported. The option is only valid on kafka v2 sinks. This is protected by the cluster setting `changefeed.partition_alg.enabled`. An example usage: `SET CLUSTER SETTING changefeed.partition_alg.enabled=true; CREATE CHANGEFEED ... INTO 'kafka://...' WITH partition_alg='murmur2';` Note that if a changefeed is created using the `murmur2` algorithm, and then the cluster setting is disabled, the changefeed continues using the `murmur2` algorithm unless the changefeed is altered to use a differed `partition_alg`. [#161534][#161534] +- Changefeeds now support the `partition_alg` option for specifying a kafka partitioning algorithm. Currently `fnv-1a` (default) and `murmur2` are supported. The option is only valid on kafka v2 sinks. This is protected by the cluster setting `changefeed.partition_alg.enabled`. An example usage: `SET CLUSTER SETTING changefeed.partition_alg.enabled=true; CREATE CHANGEFEED ... INTO 'kafka://...' WITH partition_alg='murmur2';` Note that if a changefeed is created using the `murmur2` algorithm, and then the cluster setting is disabled, the changefeed continues using the `murmur2` algorithm unless the changefeed is altered to use a differed `partition_alg`.

DB Console changes

-- The **SQL Activity** > **Sessions** page now defaults the **Session Status** filter to **Active, Idle** to exclude closed sessions. [#160936][#160936] +- The **SQL Activity** > **Sessions** page now defaults the **Session Status** filter to **Active, Idle** to exclude closed sessions.

Bug fixes

-- Fixed a bug where renaming a column that participated in multiple hash-sharded indexes would fail. [#160087][#160087] -- Fixed a bug that caused `SHOW CREATE FUNCTION` to error when the function body contained casts from columns to user-defined types. [#160125][#160125] -- Fixed a deadlock that could occur when a statistics creation task panicked. [#160421][#160421] -- Fixed a bug where rolling back a transaction that had just rolled back a savepoint would block other transactions accessing the same rows for five seconds. [#160476][#160476] -- Fixed a bug where `IMPORT` with Avro data using `OCF` format could silently lose data if the underlying storage (e.g., S3) returned an error during read. Such errors are now properly reported. Other formats (specified via `data_as_binary_records` and `data_as_json_records` options) are unaffected. The bug has been present since approximately v20.1. [#161324][#161324] -- Previously, if buffered writes were enabled (which is a public preview feature, off by default), multi-stmt explicit txns that use SAVEPOINTs to recover from certain errors (like duplicate key value violations) could lose the writes that were performed _before_ the savepoint was created in rare cases. The bug has been present since the buffered writes feature was added in 25.2 and is now fixed. [#162033][#162033] -- Fixed an error that occurred when using generic plan that generates a lookup join on indexes containing identity computed columns. [#162290][#162290] +- Fixed a bug where renaming a column that participated in multiple hash-sharded indexes would fail. +- Fixed a bug that caused `SHOW CREATE FUNCTION` to error when the function body contained casts from columns to user-defined types. +- Fixed a deadlock that could occur when a statistics creation task panicked. +- Fixed a bug where rolling back a transaction that had just rolled back a savepoint would block other transactions accessing the same rows for five seconds. +- Fixed a bug where `IMPORT` with Avro data using `OCF` format could silently lose data if the underlying storage (e.g., S3) returned an error during read. Such errors are now properly reported. Other formats (specified via `data_as_binary_records` and `data_as_json_records` options) are unaffected. The bug has been present since approximately v20.1. +- Previously, if buffered writes were enabled (which is a public preview feature, off by default), multi-stmt explicit txns that use SAVEPOINTs to recover from certain errors (like duplicate key value violations) could lose the writes that were performed _before_ the savepoint was created in rare cases. The bug has been present since the buffered writes feature was added in 25.2 and is now fixed. +- Fixed an error that occurred when using generic plan that generates a lookup join on indexes containing identity computed columns.

Performance improvements

-- Added a new session variable, `distsql_prevent_partitioning_soft_limited_scans`, which, when true, prevents scans with soft limits from being planned as multiple TableReaders by the physical planner. This should decrease the initial setup costs of some fully-distributed query plans. [#160628][#160628] +- Added a new session variable, `distsql_prevent_partitioning_soft_limited_scans`, which, when true, prevents scans with soft limits from being planned as multiple TableReaders by the physical planner. This should decrease the initial setup costs of some fully-distributed query plans.

Build changes

-- Replaces bors with Trunk merge queue for better performance and reliability. Configuration-only change with no runtime impact - maintains same safety checks while improving CI workflow. [#161243][#161243] - - -[#160936]: https://github.com/cockroachdb/cockroach/pull/160936 -[#160087]: https://github.com/cockroachdb/cockroach/pull/160087 -[#160421]: https://github.com/cockroachdb/cockroach/pull/160421 -[#161324]: https://github.com/cockroachdb/cockroach/pull/161324 -[#162290]: https://github.com/cockroachdb/cockroach/pull/162290 -[#161534]: https://github.com/cockroachdb/cockroach/pull/161534 -[#160125]: https://github.com/cockroachdb/cockroach/pull/160125 -[#160476]: https://github.com/cockroachdb/cockroach/pull/160476 -[#162033]: https://github.com/cockroachdb/cockroach/pull/162033 -[#160628]: https://github.com/cockroachdb/cockroach/pull/160628 -[#161243]: https://github.com/cockroachdb/cockroach/pull/161243 +- Replaces bors with Trunk merge queue for better performance and reliability. Configuration-only change with no runtime impact - maintains same safety checks while improving CI workflow. diff --git a/src/current/_includes/releases/v25.4/v25.4.5.md b/src/current/_includes/releases/v25.4/v25.4.5.md index 3c11cfcf797..315babb3f8d 100644 --- a/src/current/_includes/releases/v25.4/v25.4.5.md +++ b/src/current/_includes/releases/v25.4/v25.4.5.md @@ -8,11 +8,6 @@ Release Date: February 19, 2026 - Fixed an error that occurred when using generic plan that generates a lookup join on indexes containing identity - computed columns. [#162290][#162290] -- Fixed a rare race condition between range splits and MVCC garbage collection where a GCRequest could target keys outside its declared span. In rare cases, this could result in data on the post-split right-hand side (RHS) being incorrectly garbage collected, potentially leading to lost writes. The system now detects and rejects such malformed GC requests. [#163772][#163772] -- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using json or json-compact formatting. Debug zip generation now safely handles malformed log lines and prevents excessive memory consumption. [#163802][#163802] - - -[#162290]: https://github.com/cockroachdb/cockroach/pull/162290 -[#163772]: https://github.com/cockroachdb/cockroach/pull/163772 -[#163802]: https://github.com/cockroachdb/cockroach/pull/163802 + computed columns. +- Fixed a rare race condition between range splits and MVCC garbage collection where a GCRequest could target keys outside its declared span. In rare cases, this could result in data on the post-split right-hand side (RHS) being incorrectly garbage collected, potentially leading to lost writes. The system now detects and rejects such malformed GC requests. +- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using json or json-compact formatting. Debug zip generation now safely handles malformed log lines and prevents excessive memory consumption. diff --git a/src/current/_includes/releases/v25.4/v25.4.6.md b/src/current/_includes/releases/v25.4/v25.4.6.md index 129fbee9fd6..581593e41f1 100644 --- a/src/current/_includes/releases/v25.4/v25.4.6.md +++ b/src/current/_includes/releases/v25.4/v25.4.6.md @@ -6,16 +6,10 @@ Release Date: March 9, 2026

Bug fixes

-- Fixed a bug in which PL/pgSQL UDFs with many IF statements would cause a timeout and/or OOM when executed from a prepared statement. This bug was introduced in versions v23.2.22, v24.1.15, v24.3.9, v25.1.2, and v25.2.0. [#162559][#162559] -- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using `json` or `json-compact` formatting. This bug was introduced in v24.1. [#163352][#163352] -- Fixed a rare data race during parallel constraint checks where a fresh descriptor collection could resolve a stale enum type version. This bug was introduced in v26.1.0. [#163960][#163960] +- Fixed a bug in which PL/pgSQL UDFs with many IF statements would cause a timeout and/or OOM when executed from a prepared statement. This bug was introduced in versions v23.2.22, v24.1.15, v24.3.9, v25.1.2, and v25.2.0. +- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using `json` or `json-compact` formatting. This bug was introduced in v24.1. +- Fixed a rare data race during parallel constraint checks where a fresh descriptor collection could resolve a stale enum type version. This bug was introduced in v26.1.0.

Performance improvements

-- Improved changefeed checkpointing performance when changefeeds are lagging. Previously, checkpoint updates could be redundantly applied multiple times per checkpoint operation. [#163282][#163282] - - -[#162559]: https://github.com/cockroachdb/cockroach/pull/162559 -[#163352]: https://github.com/cockroachdb/cockroach/pull/163352 -[#163960]: https://github.com/cockroachdb/cockroach/pull/163960 -[#163282]: https://github.com/cockroachdb/cockroach/pull/163282 +- Improved changefeed checkpointing performance when changefeeds are lagging. Previously, checkpoint updates could be redundantly applied multiple times per checkpoint operation. diff --git a/src/current/_includes/releases/v25.4/v25.4.7.md b/src/current/_includes/releases/v25.4/v25.4.7.md index c8905ae6a91..db5fd9190b9 100644 --- a/src/current/_includes/releases/v25.4/v25.4.7.md +++ b/src/current/_includes/releases/v25.4/v25.4.7.md @@ -6,24 +6,14 @@ Release Date: April 3, 2026

Command-line changes

-- The `cockroach debug zip` command's `--include-files` and `--exclude-files` flags now support full zip path patterns. Patterns containing `/` are matched against the full path within the zip archive (e.g., `--include-files='debug/nodes/1/*.json'`). Patterns without `/` continue to match the base file name as before. [#164149][#164149] +- The `cockroach debug zip` command's `--include-files` and `--exclude-files` flags now support full zip path patterns. Patterns containing `/` are matched against the full path within the zip archive (e.g., `--include-files='debug/nodes/1/*.json'`). Patterns without `/` continue to match the base file name as before.

Bug fixes

-- Fixed a bug that prevented the `optimizer_min_row_count` setting from applying to anti-join expressions, which could lead to bad query plans. The fix is gated behind `optimizer_use_min_row_count_anti_join_fix`, which is on by default on v26.2 and later, and off by default in earlier versions. [#164799][#164799] -- Fixed a bug where CockroachDB did not always promptly respond to the statement timeout when performing a hash join with an `ON` filter that is mostly `false`. [#164890][#164890] -- Fixed a bug introduced in v25.4 where setting `min_checkpoint_frequency` to `0` prevented changefeeds from advancing their resolved timestamp (high-water mark) and emitting resolved messages. Note that setting `min_checkpoint_frequency` lower than `500ms` is not recommended as it may cause degraded changefeed performance. [#164894][#164894] -- Lowered the default value of the `changefeed.max_retry_backoff` cluster setting from `10m` to `30s` to reduce changefeed lag during rolling restarts. [#164935][#164935] -- Fixed a bug that could cause row sampling for table statistics to crash a node due to a data race when processing a collated string column with values larger than 400 bytes. This bug has existed since before v23.1. [#165566][#165566] -- Fixed a bug in the legacy schema changer where rolling back a `CREATE TABLE` with inline `FOREIGN KEY` constraints could leave orphaned foreign key back-references on the referenced table, causing descriptor validation errors. [#166197][#166197] -- Fixed a bug where rolling back a `CREATE TABLE` that referenced user-defined types or sequences would leave orphaned back-references on the type and sequence descriptors, causing them to appear in `crdb_internal.invalid_objects` after the table was GC'd. [#166225][#166225] - - -[#164935]: https://github.com/cockroachdb/cockroach/pull/164935 -[#165566]: https://github.com/cockroachdb/cockroach/pull/165566 -[#166197]: https://github.com/cockroachdb/cockroach/pull/166197 -[#166225]: https://github.com/cockroachdb/cockroach/pull/166225 -[#164149]: https://github.com/cockroachdb/cockroach/pull/164149 -[#164799]: https://github.com/cockroachdb/cockroach/pull/164799 -[#164890]: https://github.com/cockroachdb/cockroach/pull/164890 -[#164894]: https://github.com/cockroachdb/cockroach/pull/164894 +- Fixed a bug that prevented the `optimizer_min_row_count` setting from applying to anti-join expressions, which could lead to bad query plans. The fix is gated behind `optimizer_use_min_row_count_anti_join_fix`, which is on by default on v26.2 and later, and off by default in earlier versions. +- Fixed a bug where CockroachDB did not always promptly respond to the statement timeout when performing a hash join with an `ON` filter that is mostly `false`. +- Fixed a bug introduced in v25.4 where setting `min_checkpoint_frequency` to `0` prevented changefeeds from advancing their resolved timestamp (high-water mark) and emitting resolved messages. Note that setting `min_checkpoint_frequency` lower than `500ms` is not recommended as it may cause degraded changefeed performance. +- Lowered the default value of the `changefeed.max_retry_backoff` cluster setting from `10m` to `30s` to reduce changefeed lag during rolling restarts. +- Fixed a bug that could cause row sampling for table statistics to crash a node due to a data race when processing a collated string column with values larger than 400 bytes. This bug has existed since before v23.1. +- Fixed a bug in the legacy schema changer where rolling back a `CREATE TABLE` with inline `FOREIGN KEY` constraints could leave orphaned foreign key back-references on the referenced table, causing descriptor validation errors. +- Fixed a bug where rolling back a `CREATE TABLE` that referenced user-defined types or sequences would leave orphaned back-references on the type and sequence descriptors, causing them to appear in `crdb_internal.invalid_objects` after the table was GC'd. diff --git a/src/current/_includes/releases/v25.4/v25.4.8.md b/src/current/_includes/releases/v25.4/v25.4.8.md index 4896abe0b3e..81642de63cd 100644 --- a/src/current/_includes/releases/v25.4/v25.4.8.md +++ b/src/current/_includes/releases/v25.4/v25.4.8.md @@ -6,7 +6,4 @@ Release Date: April 10, 2026

Bug fixes

-- Fixed a bug where `IMPORT` error messages could include unredacted cloud storage credentials from the source URI. Credentials are now stripped from URIs before they appear in error messages. [#168040][#168040] - - -[#168040]: https://github.com/cockroachdb/cockroach/pull/168040 +- Fixed a bug where `IMPORT` error messages could include unredacted cloud storage credentials from the source URI. Credentials are now stripped from URIs before they appear in error messages. diff --git a/src/current/_includes/releases/v25.4/v25.4.9.md b/src/current/_includes/releases/v25.4/v25.4.9.md index f8f268fd88f..386d0d42045 100644 --- a/src/current/_includes/releases/v25.4/v25.4.9.md +++ b/src/current/_includes/releases/v25.4/v25.4.9.md @@ -6,9 +6,5 @@ Release Date: April 20, 2026

Bug fixes

-- Fixed a bug where `IMPORT` error messages could include unredacted cloud storage credentials from the source URI. Credentials are now stripped from URIs before they appear in error messages. [#168040][#168040] -- Fixed a bug where concurrent updates to a table using multiple column families during a partial index creation could result in data loss, incorrect `NULL` values, or validation failures in the resulting index. [#168472][#168472] - - -[#168040]: https://github.com/cockroachdb/cockroach/pull/168040 -[#168472]: https://github.com/cockroachdb/cockroach/pull/168472 +- Fixed a bug where `IMPORT` error messages could include unredacted cloud storage credentials from the source URI. Credentials are now stripped from URIs before they appear in error messages. +- Fixed a bug where concurrent updates to a table using multiple column families during a partial index creation could result in data loss, incorrect `NULL` values, or validation failures in the resulting index. diff --git a/src/current/_includes/releases/v26.1/backward-incompatible.md b/src/current/_includes/releases/v26.1/backward-incompatible.md index 8a2f51d71f5..454c4df321f 100644 --- a/src/current/_includes/releases/v26.1/backward-incompatible.md +++ b/src/current/_includes/releases/v26.1/backward-incompatible.md @@ -1,10 +1,10 @@ - Access to the `system` database and `crdb_internal` schema is now restricted by default. Queries to most of these namespaces will fail unless explicitly overridden via the `allow_unsafe_internals` session variable. This change prevents accidental misuse of internal-only objects that were not designed for stable external use and could lead to difficult recovery scenarios. As part of this effort, several commonly used introspection capabilities have been migrated to stable information_schema tables: - - `information_schema.crdb_datums_to_bytes` - previously only available as `crdb_internal.datums_to_bytes` [#156963](https://github.com/cockroachdb/cockroach/pull/156963) - - `information_schema.crdb_index_usage_stats` - previously only available as `crdb_internal.index_usage_stats` [#156963](https://github.com/cockroachdb/cockroach/pull/156963) - - `information_schema.crdb_rewrite_inline_hints` - replaces the function previously introduced as `crdb_internal.inject_hint` [#160946](https://github.com/cockroachdb/cockroach/pull/160946) + - `information_schema.crdb_datums_to_bytes` - previously only available as `crdb_internal.datums_to_bytes` + - `information_schema.crdb_index_usage_stats` - previously only available as `crdb_internal.index_usage_stats` + - `information_schema.crdb_rewrite_inline_hints` - replaces the function previously introduced as `crdb_internal.inject_hint` - [#158085](https://github.com/cockroachdb/cockroach/pull/158085) + - [FIPS-ready deployments]({% link v26.1/fips.md %}) in v26.1 are in Preview and are recommended for testing and evaluation only. CockroachDB v26.1 introduces a new FIPS architecture using Go's native FIPS 140-3 cryptographic module, replacing the OpenSSL-based approach from v25.4. This architectural change means: diff --git a/src/current/_includes/releases/v26.1/cluster-setting-changes.md b/src/current/_includes/releases/v26.1/cluster-setting-changes.md index 3f5a56f0188..1662bd70e5f 100644 --- a/src/current/_includes/releases/v26.1/cluster-setting-changes.md +++ b/src/current/_includes/releases/v26.1/cluster-setting-changes.md @@ -17,20 +17,6 @@ Changes to [cluster settings]({% link v26.1/cluster-settings.md %}) should be re - Events related to changefeed operations are now routed to the CHANGEFEED channel, while sampled queries and transactions, along with certain SQL performance events, are logged to SQL_EXEC. To continue using the previous logging channels, set `log.channel_compatibility_mode.enabled` to `true`. - `sql.catalog.allow_leased_descriptors.enabled` (default: `true`) - - Changed the default value of the `sql.catalog.allow_leased_descriptors.enabled` cluster setting to `true`. This setting allows introspection tables like `information_schema` and `pg_catalog` to use cached descriptors when building the table results, which improves the performance of introspection queries when there are many tables in the cluster. [#159566][#159566] + - Changed the default value of the `sql.catalog.allow_leased_descriptors.enabled` cluster setting to `true`. This setting allows introspection tables like `information_schema` and `pg_catalog` to use cached descriptors when building the table results, which improves the performance of introspection queries when there are many tables in the cluster. -[#153364]: https://github.com/cockroachdb/cockroach/pull/153364 -[#154051]: https://github.com/cockroachdb/cockroach/pull/154051 -[#154370]: https://github.com/cockroachdb/cockroach/pull/154370 -[#154412]: https://github.com/cockroachdb/cockroach/pull/154412 -[#154495]: https://github.com/cockroachdb/cockroach/pull/154495 -[#155284]: https://github.com/cockroachdb/cockroach/pull/155284 -[#155385]: https://github.com/cockroachdb/cockroach/pull/155385 -[#155454]: https://github.com/cockroachdb/cockroach/pull/155454 -[#155531]: https://github.com/cockroachdb/cockroach/pull/155531 -[#156303]: https://github.com/cockroachdb/cockroach/pull/156303 -[#158602]: https://github.com/cockroachdb/cockroach/pull/158602 -[#159566]: https://github.com/cockroachdb/cockroach/pull/159566 -[#159677]: https://github.com/cockroachdb/cockroach/pull/159677 -[#160016]: https://github.com/cockroachdb/cockroach/pull/160016 diff --git a/src/current/_includes/releases/v26.1/deprecations.md b/src/current/_includes/releases/v26.1/deprecations.md index ea0487b2fca..876e784705b 100644 --- a/src/current/_includes/releases/v26.1/deprecations.md +++ b/src/current/_includes/releases/v26.1/deprecations.md @@ -6,10 +6,8 @@ The following deprecations are announced in v26.1. - `INSPECT` supports a `DETACHED` option to run the operation without waiting for it - For more information, see the [`INSPECT`]({% link v26.1/inspect.md %}) documentation - [#155485][#155485] + -- **`enable_inspect_command` session variable**: The `enable_inspect_command` session variable has been deprecated and is now effectively always set to `true`. Since `INSPECT` is now a GA feature, this session variable is no longer needed. If you have this variable set in your application configurations, you can safely remove it. [#159750][#159750] +- **`enable_inspect_command` session variable**: The `enable_inspect_command` session variable has been deprecated and is now effectively always set to `true`. Since `INSPECT` is now a GA feature, this session variable is no longer needed. If you have this variable set in your application configurations, you can safely remove it. -[#155485]: https://github.com/cockroachdb/cockroach/pull/155485 -[#159750]: https://github.com/cockroachdb/cockroach/pull/159750 diff --git a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md index bcad249ada7..2b031707c09 100644 --- a/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md +++ b/src/current/_includes/releases/v26.1/v26.1.0-alpha.1.md @@ -6,9 +6,9 @@ Release Date: December 4, 2025

General changes

-- Docker images now use UBI 10 as the base image. [#153990][#153990] +- Docker images now use UBI 10 as the base image. - The changefeed bulk - delivery setting was made optional. [#154870][#154870] + delivery setting was made optional. - 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. `schema_locked` must be explicitly unset for explicit transactions or for schema changes that do not support automatic disabling (e.g., `ALTER TABLE ... SET LOCALITY`).

SQL language changes

@@ -28,7 +28,7 @@ Release Date: December 4, 2025 - `$.a.b.c == 12`, `$.a.b.c > 12`, or `$.a.b.c < 12` (operation expressions) - `$.a.b ? (@.a > 10)` (filter with an inequality check) - [#150793][#150793] + - `SHOW CHANGEFEED JOBS` now includes a `database_name` field that displays the database name for database-level changefeeds. For table-level changefeeds, this field is `null`. For database-level changefeeds, the `full_table_names` field now returns an empty list by default and displays only the total count of watched tables. @@ -40,15 +40,15 @@ Release Date: December 4, 2025 This change improves performance when displaying database-level changefeeds that may track many tables. - [#151131][#151131] + -- Added a clamp for the estimated selectivity of inequality predicates that are unbounded on one or both sides (e.g., `x > 5`). This reduces the risk of a catastrophic underestimate that causes the optimizer to choose a poorly-constrained scan. The feature is disabled by default and can be enabled with the session setting `optimizer_clamp_inequality_selectivity`. [#153067][#153067] -- Added a clamp on row-count estimates for very large tables to ensure the optimizer assumes at least one distinct value will be scanned. This reduces the risk of a catastrophic underestimate. The feature is off by default and controlled by the `optimizer_clamp_low_histogram_selectivity` session setting. [#153067][#153067] -- The optimizer can now use table statistics that merge the latest full statistic with all newer partial statistics, including those over arbitrary constraints over a single span. [#153419][#153419] +- Added a clamp for the estimated selectivity of inequality predicates that are unbounded on one or both sides (e.g., `x > 5`). This reduces the risk of a catastrophic underestimate that causes the optimizer to choose a poorly-constrained scan. The feature is disabled by default and can be enabled with the session setting `optimizer_clamp_inequality_selectivity`. +- Added a clamp on row-count estimates for very large tables to ensure the optimizer assumes at least one distinct value will be scanned. This reduces the risk of a catastrophic underestimate. The feature is off by default and controlled by the `optimizer_clamp_low_histogram_selectivity` session setting. +- 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. -- Added the `sql.catalog.allow_leased_descriptors.enabled` cluster setting, which is false by default. When set to true, queries that access the `pg_catalog` or `information_schema` can use cached leased descriptors to populate the data in those tables, with the tradeoff that some of the data could be stale. [#154051][#154051] -- Added a default-off cluster setting (`sql.log.scan_row_count_misestimate.enabled`) that enables logging a warning on the gateway node when optimizer estimates for scans are inaccurate. The log message includes the table and index being scanned, the estimated and actual row counts, the time since the last table stats collection, and the table's estimated staleness. [#154370][#154370] -- Fixed a bug where the results of `ALTER SEQUENCE`'s increment and `SELECT nextval()` operations were not as expected. The value of a sequence after an `ALTER SEQUENCE` statement has executed on it is now consistent with a sequence created with those values. [#154489][#154489] +- Added 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. +- 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. +- Fixed a bug where the results of `ALTER SEQUENCE`'s increment and `SELECT nextval()` operations were not as expected. The value of a sequence after an `ALTER SEQUENCE` statement has executed on it is now consistent with a sequence created with those values. - Added changefeed setting `range_distribution_strategy` with values `'default'` or `'balanced_simple'`. This new per-changefeed setting overrides the cluster setting `changefeed.default_range_distribution_strategy` where both exist. Example: @@ -57,58 +57,58 @@ Release Date: December 4, 2025 CREATE CHANGEFEED FOR x into 'null://' WITH range_distribution_strategy='balanced_simple'; ~~~ - [#154744][#154744] + -- Added the `INSPECT` command, which runs consistency validation check jobs against tables or databases and specified indexes. [#154873][#154873] +- Added the `INSPECT` command, which runs consistency validation check jobs against tables or databases and specified indexes. - Added support for collecting partial statistics when the given `WHERE` clause implies the predicate of a partial index with the requested column as the first key column. For example: ~~~ CREATE TABLE t (a INT, INDEX idx_partial (a) WHERE a > 5); CREATE STATISTICS pstat ON a FROM t WHERE a > 7; ~~~ - [#154892][#154892] - -- The `row_security` session variable now behaves as it does in PostgreSQL, allowing users to detect when RLS is applied. [#155110][#155110] -- Added the `bulkio.index_backfill.vector_merge_batch_size` cluster setting to control how many vectors to merge into a vector index per transaction during create operations. The setting defaults to `3`. [#155284][#155284] -- Updated the scan misestimate logging, which is controlled by the `sql.log.scan_row_count_misestimate.enabled` cluster setting, to use structured logging. The logs now include the scanned table and index, the estimated and actual row counts, the time since the last table statistics collection, and the table's estimated staleness. [#155454][#155454] -- The `EXPERIMENTAL SCRUB` command is deprecated. Use the `INSPECT` command for data consistency validation. [#155485][#155485] -- `INSPECT` supports a `DETACHED` option to run the operation without waiting for it. [#155774][#155774] -- `ALTER TABLE ... DROP STORED` statements are now executed internally by the declarative schema changer. [#155778][#155778] -- Added a `sql.statements.rows_read.count` metric that counts the number of index rows read by SQL statements. [#155820][#155820] -- Added the `EXPLAIN (FINGERPRINT)` statement, which returns normalized statement fingerprints with constants replaced by underscores. For example, `EXPLAIN (FINGERPRINT) SELECT * FROM t WHERE a = 123` returns `SELECT * FROM t WHERE a = _`. [#156152][#156152] + + +- The `row_security` session variable now behaves as it does in PostgreSQL, allowing users to detect when RLS is applied. +- 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`. +- 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. +- The `EXPERIMENTAL SCRUB` command is deprecated. Use the `INSPECT` command for data consistency validation. +- `INSPECT` supports a `DETACHED` option to run the operation without waiting for it. +- `ALTER TABLE ... DROP STORED` statements are now executed internally by the declarative schema changer. +- Added a `sql.statements.rows_read.count` metric that counts the number of index rows read by SQL statements. +- Added the `EXPLAIN (FINGERPRINT)` statement, which returns normalized statement fingerprints with constants replaced by underscores. For example, `EXPLAIN (FINGERPRINT) SELECT * FROM t WHERE a = 123` returns `SELECT * FROM t WHERE a = _`. - Introduced two new settings to control the use of canary statistics in query planning: - Cluster setting `sql.stats.canary_fraction` (float, range [0, 1], default: 0): Controls what fraction of queries use "canary statistics" (newly collected stats within their canary window) versus "stable statistics" (previously proven stats). For example, a value of `0.2` means 20% of queries will use canary stats while 80% use stable stats. The selection is atomic per query: if a query is chosen for canary evaluation, it uses canary statistics for **all** tables it references (where available). A query never uses a mix of canary and stable statistics. - Session variable `canary_stats_mode` (enum: {auto, off, on}, default: auto): - `on`: All queries in the session use canary stats for planning. - `off`: All queries in the session use stable stats for planning. - - `auto`: The system decides based on `sql.stats.canary_fraction` for each query execution. [#156307][#156307] -- Introduced a new table storage parameter, `sql_stats_canary_window`, to enable gradual rollout of newly collected table statistics. It takes a duration string as the value. When set with a positive duration, the new statistics remain in a "canary" state for the specified duration before being promoted to stable. This allows for controlled exposure and intervention opportunities before statistics are fully deployed across all queries. [#156307][#156307] -- Introduced `SHOW FINGERPRINTS FOR TABLE`, which produces an FNV hash for each index in a table. FNV is used for performance reasons and is sensitive to changes in the underlying data, including `NULL`s. [#156600][#156600] -- The `optimizer_clamp_low_histogram_selectivity` and `optimizer_clamp_inequality_selectivity` settings are now on by default. This causes the optimizer to assume that at least one distinct value "passes" each filter in a query, and that open-ended inequality filters select at least 1/10000 rows from the table. This reduces the chances of a catastrophic row count underestimate when stats are inaccurate. [#156610][#156610] -- The `ALTER TABLE ... SET/ADD GENERATED AS IDENTITY` statement is supported by the declarative schema changer in v26.1 and later. [#157144][#157144] -- `EXPLAIN` and `EXPLAIN ANALYZE` will now display the number of hints from `system.statement_hints` applied to the executed statement. [#157160][#157160] -- The **Plan Details** in the **Statement Activity** page of the DB Console now show whether any hints from `system.statement_hints` were applied to the statement execution. [#157160][#157160] + - `auto`: The system decides based on `sql.stats.canary_fraction` for each query execution. +- Introduced a new table storage parameter, `sql_stats_canary_window`, to enable gradual rollout of newly collected table statistics. It takes a duration string as the value. When set with a positive duration, the new statistics remain in a "canary" state for the specified duration before being promoted to stable. This allows for controlled exposure and intervention opportunities before statistics are fully deployed across all queries. +- Introduced `SHOW FINGERPRINTS FOR TABLE`, which produces an FNV hash for each index in a table. FNV is used for performance reasons and is sensitive to changes in the underlying data, including `NULL`s. +- The `optimizer_clamp_low_histogram_selectivity` and `optimizer_clamp_inequality_selectivity` settings are now on by default. This causes the optimizer to assume that at least one distinct value "passes" each filter in a query, and that open-ended inequality filters select at least 1/10000 rows from the table. This reduces the chances of a catastrophic row count underestimate when stats are inaccurate. +- The `ALTER TABLE ... SET/ADD GENERATED AS IDENTITY` statement is supported by the declarative schema changer in v26.1 and later. +- `EXPLAIN` and `EXPLAIN ANALYZE` will now display the number of hints from `system.statement_hints` applied to the executed statement. +- The **Plan Details** in the **Statement Activity** page of the DB Console now show whether any hints from `system.statement_hints` were applied to the statement execution.

Operational changes

-- The metrics `sql.select.started.count`, `sql.insert.started.count`, `sql.update.started.count`, and `sql.delete.started.count` are now emitted with labels under the common metric name `sql.started.count`, using a `query_type` label to distinguish each operation. [#151946][#151946] -- Added the cluster setting `storage.unhealthy_write_duration` (defaults to 20s), which is used to indicate to the allocator that a store's disk is unhealthy. The cluster setting `kv.allocator.disk_unhealthy_io_overload_score` controls the overload score assigned to a store with an unhealthy disk, where a higher score results in preventing lease or replica transfers to the store, or shedding of leases by the store. The default value of that setting is 0, so the allocator behavior is unaffected. [#153364][#153364] -- Added two new changefeed metrics for tracking the max skew between a changefeed's slowest and fastest span/table. The metrics are gauge metrics with the names `changefeed.progress_skew.{span}` and `changefeed.progress_skew.{table}`. [#153975][#153975] -- Added the cluster setting `storage.snapshot.recreate_iter_duration` (default 20s), which controls how frequently a long-lived storage engine iterator, backed by an engine snapshot, will be closed and recreated. Currently, it is only used for iterators used in rangefeed catchup scans. [#154412][#154412] -- Added cluster setting `sql.schema.approx_max_object_count` (default: 20,000) to prevent creation of new schema objects when the limit is exceeded. The check uses cached table statistics for performance and is approximate - it may not be immediately accurate until table statistics are updated by the background statistics refreshing job. Clusters that have been running stably with a larger object count should raise the limit or disable the limit by setting the value to 0. In future releases, the default value for this setting will be raised as more CockroachDB features support larger object counts. [#154495][#154495] -- Cleaned up redundant and misleading metrics. [#154545][#154545] -- Fixed the `changefeed.parallel_io_pending_rows` metric's y-axis label to match the metric's definition. [#154552][#154552] -- Added a metric called `changefeed.parallel_io_workers` to track the number of workers in ParallelIO. [#154552][#154552] -- Events related to changefeed operations are now routed to the `CHANGEFEED` channel, while sampled queries and transactions, along with certain SQL performance events, are logged to `SQL_EXEC`. To continue using the previous logging channels, set `log.channel_compatibility_mode.enabled` to `true`. [#154670][#154670] -- Successfully completed automatic SQL stats collecton jobs are now automatically purged rather than being retained for the full default job retention period. [#155848][#155848] -- The cluster setting `storage.snapshot.recreate_iter_duration` (default `20s`) controls how frequently a long-lived engine iterator, backed by an engine snapshot, will be closed and recreated. Currently, it is only used for iterators used in rangefeed catchup scans. [#156303][#156303] -- Add support for `CREATE LOGICAL REPLICATION STREAM` in situations where the source table has a column with a sequence expression. [#156975][#156975] +- 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. +- 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. +- 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}`. +- Added the cluster setting `storage.snapshot.recreate_iter_duration` (default 20s), which controls how frequently a long-lived storage engine iterator, backed by an engine snapshot, will be closed and recreated. Currently, it is only used for iterators used in rangefeed catchup scans. +- 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. +- Cleaned up redundant and misleading metrics. +- Fixed the `changefeed.parallel_io_pending_rows` metric's y-axis label to match the metric's definition. +- Added a metric called `changefeed.parallel_io_workers` to track the number of workers in ParallelIO. +- Events related to changefeed operations are now routed to the `CHANGEFEED` channel, while sampled queries and transactions, along with certain SQL performance events, are logged to `SQL_EXEC`. To continue using the previous logging channels, set `log.channel_compatibility_mode.enabled` to `true`. +- Successfully completed automatic SQL stats collecton jobs are now automatically purged rather than being retained for the full default job retention period. +- The cluster setting `storage.snapshot.recreate_iter_duration` (default `20s`) controls how frequently a long-lived engine iterator, backed by an engine snapshot, will be closed and recreated. Currently, it is only used for iterators used in rangefeed catchup scans. +- Add support for `CREATE LOGICAL REPLICATION STREAM` in situations where the source table has a column with a sequence expression.

Command-line changes

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

DB Console changes

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

Bug fixes

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

Performance improvements

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

Build changes

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

Miscellaneous

- Added initial and catchup scan metrics to Physical Cluster Replication (PCR) under `physical_replication.scanning_ranges` and - `physical_replication.catchup_ranges`. [#153893][#153893] -- Added a retry policy for Azure Blob Storage with a default of 60 seconds to mitigate occasional stuck operations. The retry policy is configurable with the `cloudstorage.azure.try.timeout` setting. [#154149][#154149] + `physical_replication.catchup_ranges`. +- Added a retry policy for Azure Blob Storage with a default of 60 seconds to mitigate occasional stuck operations. The retry policy is configurable with the `cloudstorage.azure.try.timeout` setting. - Logical Data Replication (LDR) now updates the `logical_replication.scanning_ranges` - and `logical_replication.catchup_ranges` metrics during fast initial scan. [#155274][#155274] -- Added the `jobs.registry.max_adoptions_per_loop` cluster setting to configure the maximum number of jobs a node can adopt per adoption loop. [#155385][#155385] -- Fixed a bug that prevented admin users from having full access to external connections created by other users. [#155657][#155657] + and `logical_replication.catchup_ranges` metrics during fast initial scan. +- Added the `jobs.registry.max_adoptions_per_loop` cluster setting to configure the maximum number of jobs a node can adopt per adoption loop. +- Fixed a bug that prevented admin users from having full access to external connections created by other users. - LDR no longer requires the database name to be specified - in the external connection URI when setting up a bidirectional stream. [#155729][#155729] + in the external connection URI when setting up a bidirectional stream. - Span config reconciliation jobs no longer fail on the - destination after failover from a PCR stream of a system virtual cluster. [#156003][#156003] -- Added support of partial indexes to Logical Data Replication, tolerant of mismatched column IDs in the source and destination tables. [#156935][#156935] -- Display whether build is FIPS-enabled in `cockroach version` [#157223][#157223] - -[#155485]: https://github.com/cockroachdb/cockroach/pull/155485 -[#154892]: https://github.com/cockroachdb/cockroach/pull/154892 -[#151946]: https://github.com/cockroachdb/cockroach/pull/151946 -[#155192]: https://github.com/cockroachdb/cockroach/pull/155192 -[#151131]: https://github.com/cockroachdb/cockroach/pull/151131 -[#156105]: https://github.com/cockroachdb/cockroach/pull/156105 -[#155615]: https://github.com/cockroachdb/cockroach/pull/155615 -[#155837]: https://github.com/cockroachdb/cockroach/pull/155837 -[#156889]: https://github.com/cockroachdb/cockroach/pull/156889 -[#154744]: https://github.com/cockroachdb/cockroach/pull/154744 -[#155143]: https://github.com/cockroachdb/cockroach/pull/155143 -[#155774]: https://github.com/cockroachdb/cockroach/pull/155774 -[#154873]: https://github.com/cockroachdb/cockroach/pull/154873 -[#157160]: https://github.com/cockroachdb/cockroach/pull/157160 -[#154028]: https://github.com/cockroachdb/cockroach/pull/154028 -[#155035]: https://github.com/cockroachdb/cockroach/pull/155035 -[#155242]: https://github.com/cockroachdb/cockroach/pull/155242 -[#155407]: https://github.com/cockroachdb/cockroach/pull/155407 -[#155844]: https://github.com/cockroachdb/cockroach/pull/155844 -[#154963]: https://github.com/cockroachdb/cockroach/pull/154963 -[#155655]: https://github.com/cockroachdb/cockroach/pull/155655 -[#155064]: https://github.com/cockroachdb/cockroach/pull/155064 -[#153067]: https://github.com/cockroachdb/cockroach/pull/153067 -[#155063]: https://github.com/cockroachdb/cockroach/pull/155063 -[#155203]: https://github.com/cockroachdb/cockroach/pull/155203 -[#155163]: https://github.com/cockroachdb/cockroach/pull/155163 -[#153893]: https://github.com/cockroachdb/cockroach/pull/153893 -[#154522]: https://github.com/cockroachdb/cockroach/pull/154522 -[#155777]: https://github.com/cockroachdb/cockroach/pull/155777 -[#154051]: https://github.com/cockroachdb/cockroach/pull/154051 -[#154412]: https://github.com/cockroachdb/cockroach/pull/154412 -[#152882]: https://github.com/cockroachdb/cockroach/pull/152882 -[#155404]: https://github.com/cockroachdb/cockroach/pull/155404 -[#150793]: https://github.com/cockroachdb/cockroach/pull/150793 -[#155516]: https://github.com/cockroachdb/cockroach/pull/155516 -[#156722]: https://github.com/cockroachdb/cockroach/pull/156722 -[#154870]: https://github.com/cockroachdb/cockroach/pull/154870 -[#155385]: https://github.com/cockroachdb/cockroach/pull/155385 -[#155848]: https://github.com/cockroachdb/cockroach/pull/155848 -[#156962]: https://github.com/cockroachdb/cockroach/pull/156962 -[#157083]: https://github.com/cockroachdb/cockroach/pull/157083 -[#154370]: https://github.com/cockroachdb/cockroach/pull/154370 -[#155274]: https://github.com/cockroachdb/cockroach/pull/155274 -[#153990]: https://github.com/cockroachdb/cockroach/pull/153990 -[#156000]: https://github.com/cockroachdb/cockroach/pull/156000 -[#155778]: https://github.com/cockroachdb/cockroach/pull/155778 -[#154598]: https://github.com/cockroachdb/cockroach/pull/154598 -[#156573]: https://github.com/cockroachdb/cockroach/pull/156573 -[#155454]: https://github.com/cockroachdb/cockroach/pull/155454 -[#156307]: https://github.com/cockroachdb/cockroach/pull/156307 -[#145934]: https://github.com/cockroachdb/cockroach/pull/145934 -[#154162]: https://github.com/cockroachdb/cockroach/pull/154162 -[#155772]: https://github.com/cockroachdb/cockroach/pull/155772 -[#156584]: https://github.com/cockroachdb/cockroach/pull/156584 -[#157834]: https://github.com/cockroachdb/cockroach/pull/157834 -[#156949]: https://github.com/cockroachdb/cockroach/pull/156949 -[#157223]: https://github.com/cockroachdb/cockroach/pull/157223 -[#154545]: https://github.com/cockroachdb/cockroach/pull/154545 -[#155284]: https://github.com/cockroachdb/cockroach/pull/155284 -[#153975]: https://github.com/cockroachdb/cockroach/pull/153975 -[#153951]: https://github.com/cockroachdb/cockroach/pull/153951 -[#154489]: https://github.com/cockroachdb/cockroach/pull/154489 -[#155232]: https://github.com/cockroachdb/cockroach/pull/155232 -[#156828]: https://github.com/cockroachdb/cockroach/pull/156828 -[#157144]: https://github.com/cockroachdb/cockroach/pull/157144 -[#156303]: https://github.com/cockroachdb/cockroach/pull/156303 -[#148549]: https://github.com/cockroachdb/cockroach/pull/148549 -[#154960]: https://github.com/cockroachdb/cockroach/pull/154960 -[#155956]: https://github.com/cockroachdb/cockroach/pull/155956 -[#152618]: https://github.com/cockroachdb/cockroach/pull/152618 -[#155729]: https://github.com/cockroachdb/cockroach/pull/155729 -[#156003]: https://github.com/cockroachdb/cockroach/pull/156003 -[#155809]: https://github.com/cockroachdb/cockroach/pull/155809 -[#155867]: https://github.com/cockroachdb/cockroach/pull/155867 -[#156228]: https://github.com/cockroachdb/cockroach/pull/156228 -[#156939]: https://github.com/cockroachdb/cockroach/pull/156939 -[#154495]: https://github.com/cockroachdb/cockroach/pull/154495 -[#154209]: https://github.com/cockroachdb/cockroach/pull/154209 -[#156485]: https://github.com/cockroachdb/cockroach/pull/156485 -[#153419]: https://github.com/cockroachdb/cockroach/pull/153419 -[#155820]: https://github.com/cockroachdb/cockroach/pull/155820 -[#156152]: https://github.com/cockroachdb/cockroach/pull/156152 -[#152010]: https://github.com/cockroachdb/cockroach/pull/152010 -[#155531]: https://github.com/cockroachdb/cockroach/pull/155531 -[#151409]: https://github.com/cockroachdb/cockroach/pull/151409 -[#154552]: https://github.com/cockroachdb/cockroach/pull/154552 -[#156975]: https://github.com/cockroachdb/cockroach/pull/156975 -[#154914]: https://github.com/cockroachdb/cockroach/pull/154914 -[#156867]: https://github.com/cockroachdb/cockroach/pull/156867 -[#154149]: https://github.com/cockroachdb/cockroach/pull/154149 -[#155657]: https://github.com/cockroachdb/cockroach/pull/155657 -[#155110]: https://github.com/cockroachdb/cockroach/pull/155110 -[#153364]: https://github.com/cockroachdb/cockroach/pull/153364 -[#154670]: https://github.com/cockroachdb/cockroach/pull/154670 -[#155824]: https://github.com/cockroachdb/cockroach/pull/155824 -[#156600]: https://github.com/cockroachdb/cockroach/pull/156600 -[#156801]: https://github.com/cockroachdb/cockroach/pull/156801 -[#154789]: https://github.com/cockroachdb/cockroach/pull/154789 -[#154802]: https://github.com/cockroachdb/cockroach/pull/154802 -[#156959]: https://github.com/cockroachdb/cockroach/pull/156959 -[#156935]: https://github.com/cockroachdb/cockroach/pull/156935 -[#156610]: https://github.com/cockroachdb/cockroach/pull/156610 + destination after failover from a PCR stream of a system virtual cluster. +- Added support of partial indexes to Logical Data Replication, tolerant of mismatched column IDs in the source and destination tables. +- Display whether build is FIPS-enabled in `cockroach version` diff --git a/src/current/_includes/releases/v26.1/v26.1.0-alpha.2.md b/src/current/_includes/releases/v26.1/v26.1.0-alpha.2.md index 2f6e40ff280..b9cfc462b5b 100644 --- a/src/current/_includes/releases/v26.1/v26.1.0-alpha.2.md +++ b/src/current/_includes/releases/v26.1/v26.1.0-alpha.2.md @@ -10,18 +10,18 @@ Release Date: December 11, 2025 - A new `debug_user` certificate has also been introduced for privileged RPC access to collect [debug zip]({% link v26.1/cockroach-debug-zip.md %}) information, which would otherwise be unavailable when `root` is restricted. `debug_user` must be created manually with the `CREATE USER` command and can be audited using `SHOW USERS`. It has privileged access to the `serverpb` admin and status endpoints required for debug zip collection. - Ensure that none of the certificates used by the cluster or SQL/RPC clients have "root" in the SAN (Subject Alternative Name) fields, as the flag will block access to those clients. - [#155216][#155216] +

SQL language changes

-- Added a new session variable, `use_swap_mutations`, which controls whether the new update swap and delete swap operators are enabled for use by `UPDATE` and `DELETE` statements. [#145019][#145019] -- Fixed a bug where the results of `ALTER SEQUENCE`'s increment and `SELECT nextval()` operations were not as expected. The value of a sequence after an `ALTER SEQUENCE` statement has executed on it is now consistent with a sequence created with those values. [#154489][#154489] -- SQL statements executed in stored procedures and user-defined functions now record SQL statistics, including latencies and execution metrics. These statistics appear on the **SQL Activity** and **Insights** pages of the DB Console. Limitation: SQL statements within a stored procedure or user-defined function are not collected for active statement diagnostics requests. Statement diagnostics remain available for top-level statement executions. [#156905][#156905] +- Added a new session variable, `use_swap_mutations`, which controls whether the new update swap and delete swap operators are enabled for use by `UPDATE` and `DELETE` statements. +- Fixed a bug where the results of `ALTER SEQUENCE`'s increment and `SELECT nextval()` operations were not as expected. The value of a sequence after an `ALTER SEQUENCE` statement has executed on it is now consistent with a sequence created with those values. +- SQL statements executed in stored procedures and user-defined functions now record SQL statistics, including latencies and execution metrics. These statistics appear on the **SQL Activity** and **Insights** pages of the DB Console. Limitation: SQL statements within a stored procedure or user-defined function are not collected for active statement diagnostics requests. Statement diagnostics remain available for top-level statement executions. - The `ALTER COLUMN ...` sequence identity - commands are run by the declarative schema changer. [#157030][#157030] -- The `cumulative time spent waiting in admission control` is now displayed in `EXPLAIN ANALYZE` output when it is non-zero. This helps identify delays caused by admission control during query execution. [#158055][#158055] -- Restarting a sequence with an updated increment has the expected initial value. [#158065][#158065] -- The `cumulative time spent waiting in admission control` reported in `EXPLAIN ANALYZE` now includes the time spent in quorum replication flow control. This update enhances the precision of wait time analysis, offering a more accurate depiction of query execution time by considering additional wait durations within the quorum replication processes. [#158076][#158076] + commands are run by the declarative schema changer. +- The `cumulative time spent waiting in admission control` is now displayed in `EXPLAIN ANALYZE` output when it is non-zero. This helps identify delays caused by admission control during query execution. +- Restarting a sequence with an updated increment has the expected initial value. +- The `cumulative time spent waiting in admission control` reported in `EXPLAIN ANALYZE` now includes the time spent in quorum replication flow control. This update enhances the precision of wait time analysis, offering a more accurate depiction of query execution time by considering additional wait durations within the quorum replication processes. - Added a new "hint injection" ability that allows operators to dynamically inject inline hints into statements, without modifying the text of those statements. Hints can be injected using the built-in function `crdb_internal.inject_hint` with the target statement fingerprint to rewrite. For example, to add an index hint to the statement `SELECT * FROM my_table WHERE col = 3`, use: ~~~ @@ -31,15 +31,15 @@ Release Date: December 11, 2025 ); ~~~ - Whenever a statement is executed matching statement fingerprint `SELECT * FROM my_table WHERE col = _`, it will first be rewritten to include the injected index hint. [#158096][#158096] -- `ALTER TABLE ... SET SCHEMA` is supported by the declarative schema changer. [#158141][#158141] -- `kv cpu time` is now displayed in `EXPLAIN ANALYZE`, providing insights into the CPU resources used by KV operations during query execution. [#158499][#158499] -- CockroachDB now negotiates the pgwire protocol version with PostgreSQL 18+ clients that request protocol version 3.2. Previously, connections from these clients would fail with an "unknown protocol version" error. The server now sends a `NegotiateProtocolVersion` message to indicate it supports version 3.0, allowing the connection to proceed normally. [#158636][#158636] + Whenever a statement is executed matching statement fingerprint `SELECT * FROM my_table WHERE col = _`, it will first be rewritten to include the injected index hint. +- `ALTER TABLE ... SET SCHEMA` is supported by the declarative schema changer. +- `kv cpu time` is now displayed in `EXPLAIN ANALYZE`, providing insights into the CPU resources used by KV operations during query execution. +- CockroachDB now negotiates the pgwire protocol version with PostgreSQL 18+ clients that request protocol version 3.2. Previously, connections from these clients would fail with an "unknown protocol version" error. The server now sends a `NegotiateProtocolVersion` message to indicate it supports version 3.0, allowing the connection to proceed normally.

Operational changes

-- The `allow_unsafe_internals` setting now defaults to `false`, restricting access to the `system` and `crdb_internal` namespaces. Queries to these namespaces will now fail unless access is manually enabled. Usage is also audited. [#158085][#158085] -- Jobs that are paused due to a specific reason, including jobs which pause themselves when encountering errors such as running out of disk space, now record that reason in their displayed status field of `SHOW JOBS`. [#158350][#158350] +- The `allow_unsafe_internals` setting now defaults to `false`, restricting access to the `system` and `crdb_internal` namespaces. Queries to these namespaces will now fail unless access is manually enabled. Usage is also audited. +- Jobs that are paused due to a specific reason, including jobs which pause themselves when encountering errors such as running out of disk space, now record that reason in their displayed status field of `SHOW JOBS`. - The following metrics are now marked as essential to support end-user troubleshooting of authentication latency issues: - `auth.jwt.conn.latency` - `auth.cert.conn.latency` @@ -47,26 +47,26 @@ Release Date: December 11, 2025 - `auth.ldap.conn.latency` - `auth.gss.conn.latency` - `auth.scram.conn.latency` - - `auth.ldap.conn.latency.internal` [#158424][#158424] + - `auth.ldap.conn.latency.internal`

DB Console changes

-- The log of messages and events recorded by a job is now shown to non-admin users on the DB Console Jobs page. [#152853][#152853] -- The DB Console now accurately displays **vCPU** counts on the **Overview** page instead of operating system CPU counts. This update uses cgroups to provide a correct vCPU measurement, reflecting reserved compute resources in Kubernetes and other virtualized environments. [#158219][#158219] -- Jobs which are paused for a specific reason now show that reason, and are highlighted in the UI. [#158364][#158364] -- The `kvCPUTimeNanos` is now recorded in `crdb_internal.statement_statistics` and `crdb_internal.transaction_statistics`. In the DB Console, a **KV CPU Time** column is now displayed in the **SQL Activity** > **Statements** and **Transactions** pages, allowing you to monitor and analyze the CPU time consumed by KV operations during query execution. [#158398][#158398] -- The `admissionWaitTime` is now recorded in `crdb_internal.statement_statistics` and `crdb_internal.transaction_statistics`. In the DB Console, an **Admission Wait Time** column is now displayed in the **SQL Activity** > **Statements** and **Transactions** pages. [#158500][#158500] +- The log of messages and events recorded by a job is now shown to non-admin users on the DB Console Jobs page. +- The DB Console now accurately displays **vCPU** counts on the **Overview** page instead of operating system CPU counts. This update uses cgroups to provide a correct vCPU measurement, reflecting reserved compute resources in Kubernetes and other virtualized environments. +- Jobs which are paused for a specific reason now show that reason, and are highlighted in the UI. +- The `kvCPUTimeNanos` is now recorded in `crdb_internal.statement_statistics` and `crdb_internal.transaction_statistics`. In the DB Console, a **KV CPU Time** column is now displayed in the **SQL Activity** > **Statements** and **Transactions** pages, allowing you to monitor and analyze the CPU time consumed by KV operations during query execution. +- The `admissionWaitTime` is now recorded in `crdb_internal.statement_statistics` and `crdb_internal.transaction_statistics`. In the DB Console, an **Admission Wait Time** column is now displayed in the **SQL Activity** > **Statements** and **Transactions** pages.

Bug fixes

-- Fixed a bug that could cause an internal error in some cases for PL/pgSQL routines that perform database reads within an exception block. [#156902][#156902] -- Fixed a bug where a SQL statement with side effects (e.g., `INSERT`) inside a PL/pgSQL routine could be dropped if it used an `INTO` clause and none of the target variables were referenced. This bug had been present since v23.2. [#156966][#156966] -- Fixed a bug where renaming a column that participated in multiple hash-sharded indexes would fail. [#158045][#158045] -- Fixed a bug where `ORDER BY` clauses in user-defined set-returning SQL functions with `OUT` parameters were ignored when the function was called directly in a `SELECT` list (e.g., `SELECT f()`). The ordering is now properly preserved and enforced. [#158162][#158162] -- The pgwire server now exits promptly on context cancellation. [#158269][#158269] -- Fixed a bounded memory leak that could occur during table statistics collection on tables that contain both very wide (10 KiB or more) and small (under 400B) `BYTES`-like values within the same row, along with virtual computed columns. This bug had been present since stats collection on virtual computed columns was introduced in v24.1. [#158370][#158370] -- Temporary schema cleanup no longer retries after poisoned transaction errors, reducing log noise. [#158396][#158396] -- When changing the time interval on the **Metrics** page, the DB Console previously sent duplicate requests for metrics data. This has been fixed, and the UI now issues a single, efficient request when updating the time interval. [#158595][#158595] +- Fixed a bug that could cause an internal error in some cases for PL/pgSQL routines that perform database reads within an exception block. +- Fixed a bug where a SQL statement with side effects (e.g., `INSERT`) inside a PL/pgSQL routine could be dropped if it used an `INTO` clause and none of the target variables were referenced. This bug had been present since v23.2. +- Fixed a bug where renaming a column that participated in multiple hash-sharded indexes would fail. +- Fixed a bug where `ORDER BY` clauses in user-defined set-returning SQL functions with `OUT` parameters were ignored when the function was called directly in a `SELECT` list (e.g., `SELECT f()`). The ordering is now properly preserved and enforced. +- The pgwire server now exits promptly on context cancellation. +- Fixed a bounded memory leak that could occur during table statistics collection on tables that contain both very wide (10 KiB or more) and small (under 400B) `BYTES`-like values within the same row, along with virtual computed columns. This bug had been present since stats collection on virtual computed columns was introduced in v24.1. +- Temporary schema cleanup no longer retries after poisoned transaction errors, reducing log noise. +- When changing the time interval on the **Metrics** page, the DB Console previously sent duplicate requests for metrics data. This has been fixed, and the UI now issues a single, efficient request when updating the time interval.

Performance improvements

@@ -85,38 +85,6 @@ Release Date: December 11, 2025 - There are no mutation columns or mutation indexes (i.e., the table is not undergoing an `ALTER`); - There are no columns using composite encoding (e.g., `DECIMAL`, `FLOAT`, - `JSON`, etc.). [#145019][#145019] -- The optimizer now collapses repeated `%` wildcard characters in `LIKE` patterns. This may improve performance of queries using such patterns. [#158025][#158025] -- More of the CPU usage of LDR jobs is subject to background job admission control limits. [#158361][#158361] - - -[#158424]: https://github.com/cockroachdb/cockroach/pull/158424 -[#156966]: https://github.com/cockroachdb/cockroach/pull/156966 -[#158269]: https://github.com/cockroachdb/cockroach/pull/158269 -[#145019]: https://github.com/cockroachdb/cockroach/pull/145019 -[#158350]: https://github.com/cockroachdb/cockroach/pull/158350 -[#157030]: https://github.com/cockroachdb/cockroach/pull/157030 -[#158396]: https://github.com/cockroachdb/cockroach/pull/158396 -[#158085]: https://github.com/cockroachdb/cockroach/pull/158085 -[#152853]: https://github.com/cockroachdb/cockroach/pull/152853 -[#158219]: https://github.com/cockroachdb/cockroach/pull/158219 -[#158500]: https://github.com/cockroachdb/cockroach/pull/158500 -[#156902]: https://github.com/cockroachdb/cockroach/pull/156902 -[#154489]: https://github.com/cockroachdb/cockroach/pull/154489 -[#158636]: https://github.com/cockroachdb/cockroach/pull/158636 -[#158398]: https://github.com/cockroachdb/cockroach/pull/158398 -[#158595]: https://github.com/cockroachdb/cockroach/pull/158595 -[#155216]: https://github.com/cockroachdb/cockroach/pull/155216 -[#158364]: https://github.com/cockroachdb/cockroach/pull/158364 -[#158045]: https://github.com/cockroachdb/cockroach/pull/158045 -[#158162]: https://github.com/cockroachdb/cockroach/pull/158162 -[#158076]: https://github.com/cockroachdb/cockroach/pull/158076 -[#158025]: https://github.com/cockroachdb/cockroach/pull/158025 -[#156905]: https://github.com/cockroachdb/cockroach/pull/156905 -[#158055]: https://github.com/cockroachdb/cockroach/pull/158055 -[#158141]: https://github.com/cockroachdb/cockroach/pull/158141 -[#158499]: https://github.com/cockroachdb/cockroach/pull/158499 -[#158370]: https://github.com/cockroachdb/cockroach/pull/158370 -[#158361]: https://github.com/cockroachdb/cockroach/pull/158361 -[#158065]: https://github.com/cockroachdb/cockroach/pull/158065 -[#158096]: https://github.com/cockroachdb/cockroach/pull/158096 + `JSON`, etc.). +- The optimizer now collapses repeated `%` wildcard characters in `LIKE` patterns. This may improve performance of queries using such patterns. +- More of the CPU usage of LDR jobs is subject to background job admission control limits. diff --git a/src/current/_includes/releases/v26.1/v26.1.0-beta.1.md b/src/current/_includes/releases/v26.1/v26.1.0-beta.1.md index 4a8c03dc810..ba02c7ed669 100644 --- a/src/current/_includes/releases/v26.1/v26.1.0-beta.1.md +++ b/src/current/_includes/releases/v26.1/v26.1.0-beta.1.md @@ -6,31 +6,31 @@ Release Date: December 17, 2025

Security updates

-- A new flag on the `cockroach start` command enables a `debug_user` with preconfigured access to authenticate for SQL and RPC connections. This is part of a Private Preview and disabled by default, preventing such authentication. It is intended only for debugging and troubleshooting when using the Private Preview feature that allows restricting `root` from login via SQL and RPC connections, while using `debug_user` to access debug details that would have required `root`. [#158963][#158963] +- A new flag on the `cockroach start` command enables a `debug_user` with preconfigured access to authenticate for SQL and RPC connections. This is part of a Private Preview and disabled by default, preventing such authentication. It is intended only for debugging and troubleshooting when using the Private Preview feature that allows restricting `root` from login via SQL and RPC connections, while using `debug_user` to access debug details that would have required `root`.

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

-- Improved the description of the `changefeed.default_range_distribution_strategy` cluster setting to better explain the available options and their behavior. [#158602][#158602] +- Improved the description of the `changefeed.default_range_distribution_strategy` cluster setting to better explain the available options and their behavior.

SQL language changes

-- `crdb_internal.datums_to_bytes` is now available in the `information_schema` system catalog as `information_schema.crdb_datums_to_bytes`. [#156963][#156963] +- `crdb_internal.datums_to_bytes` is now available in the `information_schema` system catalog as `information_schema.crdb_datums_to_bytes`. - The `ALTER COLUMN ...` sequence identity - commands are run by the declarative schema changer. [#157030][#157030] -- Added support for `EXECUTE SCHEDULE {schedule_id}` to allow immediate execution of a scheduled job. This does not apply to `ALTER BACKUP SCHEDULE`; attempting to execute a backup schedule will result in an error. [#158694][#158694] -- `CREATE TYPE` with composite type syntax now supports array types in field definitions. For example, `CREATE TYPE t AS (a INT[])` and `CREATE TYPE t AS (a INT ARRAY)` now work correctly, matching PostgreSQL behavior. [#158888][#158888] -- Added the `STRICT` option for locality-aware backups. When enabled, backups fail if data from a KV node with one locality tag would be backed up to a bucket with a different locality tag, ensuring data domiciling compliance. [#158999][#158999] -- The `WITH RESOLVED TIMESTAMP` option can be passed to `SHOW JOBS` or `SHOW JOB` to include the resolved timestamp, if any, for the jobs in the output columns. [#159068][#159068] + commands are run by the declarative schema changer. +- Added support for `EXECUTE SCHEDULE {schedule_id}` to allow immediate execution of a scheduled job. This does not apply to `ALTER BACKUP SCHEDULE`; attempting to execute a backup schedule will result in an error. +- `CREATE TYPE` with composite type syntax now supports array types in field definitions. For example, `CREATE TYPE t AS (a INT[])` and `CREATE TYPE t AS (a INT ARRAY)` now work correctly, matching PostgreSQL behavior. +- Added the `STRICT` option for locality-aware backups. When enabled, backups fail if data from a KV node with one locality tag would be backed up to a bucket with a different locality tag, ensuring data domiciling compliance. +- The `WITH RESOLVED TIMESTAMP` option can be passed to `SHOW JOBS` or `SHOW JOB` to include the resolved timestamp, if any, for the jobs in the output columns.

Command-line changes

-- You can now specify a user-defined database user when generating `debug zip` and `debug tsdump` files. Use the `--user` and `--url` flags to set the username. Previously, these operations required the root user. This change provides backward compatibility by defaulting the username to `root`. This update is part of an ongoing effort to limit root user access. [#158961][#158961] +- You can now specify a user-defined database user when generating `debug zip` and `debug tsdump` files. Use the `--user` and `--url` flags to set the username. Previously, these operations required the root user. This change provides backward compatibility by defaulting the username to `root`. This update is part of an ongoing effort to limit root user access.

Bug fixes

-- Fixed a bug where modifying a scheduled backup without changing the schedule could cause the next incremental backup to be skipped. [#158820][#158820] -- Fixed a bug that allowed columns to be dropped despite being referenced by a routine. This could occur when a column was only referenced as a target column in the SET clause of an UPDATE statement within the routine. This fix only applies to newly-created routines. In versions prior to v26.1, the fix must be enabled by setting the session variable `prevent_update_set_column_drop`. [#158935][#158935] -- Fixed a bug that caused newly-created routines to incorrectly prevent dropping columns that were not directly referenced, most notably columns referenced by computed column expressions. The fix is gated behind the session setting `use_improved_routine_deps_triggers_and_computed_cols`, which is off by default prior to v26.1. [#158935][#158935] +- Fixed a bug where modifying a scheduled backup without changing the schedule could cause the next incremental backup to be skipped. +- Fixed a bug that allowed columns to be dropped despite being referenced by a routine. This could occur when a column was only referenced as a target column in the SET clause of an UPDATE statement within the routine. This fix only applies to newly-created routines. In versions prior to v26.1, the fix must be enabled by setting the session variable `prevent_update_set_column_drop`. +- Fixed a bug that caused newly-created routines to incorrectly prevent dropping columns that were not directly referenced, most notably columns referenced by computed column expressions. The fix is gated behind the session setting `use_improved_routine_deps_triggers_and_computed_cols`, which is off by default prior to v26.1. - Fixed a bug that could cause incorrect query results when using prepared statements with NULL placeholders. The bug has existed since v21.2 and violated SQL NULL-equality semantics by returning rows with NULL values when the result set should have been empty. From v21.2 to v25.3, the bug occurred when all of the following were true: @@ -40,27 +40,10 @@ Release Date: December 17, 2025 - The column contained NULL values - The placeholder was assigned to NULL during execution - Starting in v25.4, the requirements were loosened: the column no longer needed to be UNIQUE, and the bug could reproduce if the column was included in any index. [#159001][#159001] -- Fixed a bug where the `schema_locked` table storage parameter could be bypassed by combining `SET (schema_locked=false)` with other schema changes in the same `ALTER TABLE` statement using comma syntax. Schema-locked tables now correctly reject such combined statements. [#159017][#159017] + Starting in v25.4, the requirements were loosened: the column no longer needed to be UNIQUE, and the bug could reproduce if the column was included in any index. +- Fixed a bug where the `schema_locked` table storage parameter could be bypassed by combining `SET (schema_locked=false)` with other schema changes in the same `ALTER TABLE` statement using comma syntax. Schema-locked tables now correctly reject such combined statements.

Performance improvements

-- 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] -- `AFTER` triggers now use a cache for descriptor lookups of `TG_TABLE_SCHEMA`, which can significantly reduce trigger planning latency. [#158708][#158708] - - -[#158602]: https://github.com/cockroachdb/cockroach/pull/158602 -[#158961]: https://github.com/cockroachdb/cockroach/pull/158961 -[#159017]: https://github.com/cockroachdb/cockroach/pull/159017 -[#158708]: https://github.com/cockroachdb/cockroach/pull/158708 -[#158820]: https://github.com/cockroachdb/cockroach/pull/158820 -[#159001]: https://github.com/cockroachdb/cockroach/pull/159001 -[#144217]: https://github.com/cockroachdb/cockroach/pull/144217 -[#158963]: https://github.com/cockroachdb/cockroach/pull/158963 -[#156963]: https://github.com/cockroachdb/cockroach/pull/156963 -[#158999]: https://github.com/cockroachdb/cockroach/pull/158999 -[#159068]: https://github.com/cockroachdb/cockroach/pull/159068 -[#158694]: https://github.com/cockroachdb/cockroach/pull/158694 -[#158935]: https://github.com/cockroachdb/cockroach/pull/158935 -[#157030]: https://github.com/cockroachdb/cockroach/pull/157030 -[#158888]: https://github.com/cockroachdb/cockroach/pull/158888 +- Triggers now perform the descriptor lookup for `TG_TABLE_SCHEMA` against a cache. This can significantly reduce trigger planning latency in multi-region databases. +- `AFTER` triggers now use a cache for descriptor lookups of `TG_TABLE_SCHEMA`, which can significantly reduce trigger planning latency. diff --git a/src/current/_includes/releases/v26.1/v26.1.0-beta.2.md b/src/current/_includes/releases/v26.1/v26.1.0-beta.2.md index 67f5c069cee..923d2ac9576 100644 --- a/src/current/_includes/releases/v26.1/v26.1.0-beta.2.md +++ b/src/current/_includes/releases/v26.1/v26.1.0-beta.2.md @@ -6,35 +6,22 @@ Release Date: January 7, 2026

SQL language changes

-- Removed a `database_name` column from the output of `SHOW CHANGEFEED JOBS` that was added in v26.1 development, but will not be needed for v26.1 features. [#158995][#158995] -- Fixed a bug where creating a routine could create unnecessary column dependencies when the routine references columns through CHECK constraints (including those for RLS policies and hash-sharded indexes) or partial index predicates. These unnecessary dependencies prevented dropping the column without first dropping the routine. The fix is gated behind the session setting `use_improved_routine_deps_triggers_and_computed_cols`, which is off by default before v26.1. [#159439][#159439] -- `INSPECT` is now implemented as a generally available (GA) feature with the release of v26.1.0. The `enable_inspect_command` session variable has been deprecated, and is now effectively always set to `true`. [#159750][#159750] +- Removed a `database_name` column from the output of `SHOW CHANGEFEED JOBS` that was added in v26.1 development, but will not be needed for v26.1 features. +- Fixed a bug where creating a routine could create unnecessary column dependencies when the routine references columns through CHECK constraints (including those for RLS policies and hash-sharded indexes) or partial index predicates. These unnecessary dependencies prevented dropping the column without first dropping the routine. The fix is gated behind the session setting `use_improved_routine_deps_triggers_and_computed_cols`, which is off by default before v26.1. +- `INSPECT` is now implemented as a generally available (GA) feature with the release of v26.1.0. The `enable_inspect_command` session variable has been deprecated, and is now effectively always set to `true`.

Bug fixes

- Fixed a bug that could cause prepared statements to fail with the error message "non-const expression" when they contained filters with stable - functions. This bug has been present since v25.4.0. [#159203][#159203] -- Fixed a bug where comments associated with constraints were left behind after the column and constraint were dropped. [#159288][#159288] -- Fixed a race condition where queries run after revoking `BYPASSRLS` could return wrong results because cached plans failed to notice the change immediately. [#159380][#159380] -- Fixed a bug where `TRUNCATE` did not behave correctly with respect to the `schema_locked` storage parameter, and was not being blocked when Logical Data Replication (LDR) was in use. This behavior was incorrect and has been fixed. [#159405][#159405] -- Fixed a race condition that could occur during context cancellation of an incoming snapshot. [#159435][#159435] -- Fixed a bug that could cause a panic during changefeed startup if an error occurred while initializing the metrics controller. [#159542][#159542] -- Fixed a memory accounting issue that could occur when a lease expired due to a SQL liveness session-based timeout. [#159625][#159625] + functions. This bug has been present since v25.4.0. +- Fixed a bug where comments associated with constraints were left behind after the column and constraint were dropped. +- Fixed a race condition where queries run after revoking `BYPASSRLS` could return wrong results because cached plans failed to notice the change immediately. +- Fixed a bug where `TRUNCATE` did not behave correctly with respect to the `schema_locked` storage parameter, and was not being blocked when Logical Data Replication (LDR) was in use. This behavior was incorrect and has been fixed. +- Fixed a race condition that could occur during context cancellation of an incoming snapshot. +- Fixed a bug that could cause a panic during changefeed startup if an error occurred while initializing the metrics controller. +- Fixed a memory accounting issue that could occur when a lease expired due to a SQL liveness session-based timeout.

Performance improvements

-- Various background tasks and jobs now more actively yield to foreground work when that work is waiting to run. [#159258][#159258] - - -[#159625]: https://github.com/cockroachdb/cockroach/pull/159625 -[#158995]: https://github.com/cockroachdb/cockroach/pull/158995 -[#159439]: https://github.com/cockroachdb/cockroach/pull/159439 -[#159203]: https://github.com/cockroachdb/cockroach/pull/159203 -[#159288]: https://github.com/cockroachdb/cockroach/pull/159288 -[#159542]: https://github.com/cockroachdb/cockroach/pull/159542 -[#159258]: https://github.com/cockroachdb/cockroach/pull/159258 -[#159750]: https://github.com/cockroachdb/cockroach/pull/159750 -[#159380]: https://github.com/cockroachdb/cockroach/pull/159380 -[#159405]: https://github.com/cockroachdb/cockroach/pull/159405 -[#159435]: https://github.com/cockroachdb/cockroach/pull/159435 +- Various background tasks and jobs now more actively yield to foreground work when that work is waiting to run. diff --git a/src/current/_includes/releases/v26.1/v26.1.0-beta.3.md b/src/current/_includes/releases/v26.1/v26.1.0-beta.3.md index 55373119490..9be29e7dcfa 100644 --- a/src/current/_includes/releases/v26.1/v26.1.0-beta.3.md +++ b/src/current/_includes/releases/v26.1/v26.1.0-beta.3.md @@ -6,53 +6,38 @@ Release Date: January 14, 2025

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

-- Added a new cluster setting, `security.provisioning.oidc.enabled`, to allow automatic provisioning of users when they log in for the first time via OIDC. When enabled, a new user will be created in CockroachDB upon their first successful OIDC authentication. This feature is disabled by default. [#160016][#160016] +- Added a new cluster setting, `security.provisioning.oidc.enabled`, to allow automatic provisioning of users when they log in for the first time via OIDC. When enabled, a new user will be created in CockroachDB upon their first successful OIDC authentication. This feature is disabled by default.

SQL language changes

-- Changed the default value of the `sql.catalog.allow_leased_descriptors.enabled` cluster setting to `true`. This setting allows introspection tables like `information_schema` and `pg_catalog` to use cached descriptors when building the table results, which improves the performance of introspection queries when there are many tables in the cluster. [#159566][#159566] +- Changed the default value of the `sql.catalog.allow_leased_descriptors.enabled` cluster setting to `true`. This setting allows introspection tables like `information_schema` and `pg_catalog` to use cached descriptors when building the table results, which improves the performance of introspection queries when there are many tables in the cluster. - Added cluster settings to control the number of concurrent automatic statistics collection jobs: - `sql.stats.automatic_full_concurrency_limit` controls the maximum number of concurrent full statistics collections. The default is 1. - `sql.stats.automatic_extremes_concurrency_limit` controls the maximum number of concurrent partial statistics collections using extremes. The default is 128. - Note that at most one statistics collection job can run on a single table at a time. [#159870][#159870] + Note that at most one statistics collection job can run on a single table at a time.

Operational changes

-- The `kv.range_split.load_sample_reset_duration` cluster setting now defaults to `30m`. This should improve load-based splitting in rare edge cases. [#159677][#159677] +- The `kv.range_split.load_sample_reset_duration` cluster setting now defaults to `30m`. This should improve load-based splitting in rare edge cases.

Bug fixes

-- Fixed an issue where long-running transactions with many statements could cause unbounded memory growth in the SQL statistics subsystem. When a transaction includes a large number of statements, the SQL statistics ingester now automatically flushes buffered statistics before the transaction commits. As a side effect, the flushed statement statistics might not have an associated transaction fingerprint ID because the transaction has not yet completed. In such cases, the transaction fingerprint ID cannot be backfilled after the fact. [#159644][#159644] -- Fixed a bug where a query predicate could be ignored when all of the following conditions were met: the query used a lookup join to an index, the predicate constrained a column to multiple values (e.g., `column IN (1, 2)`), and the constrained column followed one or more columns with optional multi-value constraints in the index. This bug was introduced in v24.3.0. [#159778][#159778] -- Fixed a deadlock that could occur when a statistics creation task panicked. [#160422][#160422] -- Fixed a bug where rolling back a transaction that had just rolled back a savepoint would block other transactions accessing the same rows for five seconds. [#160477][#160477] -- Fixed a bug where CockroachDB could crash when handling decimals with negative scales via the extended PGWire protocol. An error is now returned instead, matching PostgreSQL behavior. [#160561][#160561] +- Fixed an issue where long-running transactions with many statements could cause unbounded memory growth in the SQL statistics subsystem. When a transaction includes a large number of statements, the SQL statistics ingester now automatically flushes buffered statistics before the transaction commits. As a side effect, the flushed statement statistics might not have an associated transaction fingerprint ID because the transaction has not yet completed. In such cases, the transaction fingerprint ID cannot be backfilled after the fact. +- Fixed a bug where a query predicate could be ignored when all of the following conditions were met: the query used a lookup join to an index, the predicate constrained a column to multiple values (e.g., `column IN (1, 2)`), and the constrained column followed one or more columns with optional multi-value constraints in the index. This bug was introduced in v24.3.0. +- Fixed a deadlock that could occur when a statistics creation task panicked. +- Fixed a bug where rolling back a transaction that had just rolled back a savepoint would block other transactions accessing the same rows for five seconds. +- Fixed a bug where CockroachDB could crash when handling decimals with negative scales via the extended PGWire protocol. An error is now returned instead, matching PostgreSQL behavior. - v26.1.0-beta.1 and v26.1.0-beta.2 versions of CockroachDB could encounter a rare process crash when running TTL jobs, - and this has now been fixed. [#160689][#160689] + and this has now been fixed.

Performance improvements

-- Fixed a performance regression in `pg_catalog.pg_roles` and `pg_catalog.pg_authid` by avoiding privilege lookups for each row in the table. [#160228][#160228] -- Added a new session variable, `distsql_prevent_partitioning_soft_limited_scans`, which defaults to true. When enabled, this prevents scans with soft limits from being planned as multiple TableReaders, which decreases the initial setup costs of some fully-distributed query plans. [#160600][#160600] +- Fixed a performance regression in `pg_catalog.pg_roles` and `pg_catalog.pg_authid` by avoiding privilege lookups for each row in the table. +- Added a new session variable, `distsql_prevent_partitioning_soft_limited_scans`, which defaults to true. When enabled, this prevents scans with soft limits from being planned as multiple TableReaders, which decreases the initial setup costs of some fully-distributed query plans.

Miscellaneous

-- Fixed a bug where import rollback could incorrectly revert data in a table that was already online. This could only occur if an import job was cancelled or failed after the import had already succeeded and the table was made available for use. [#159904][#159904] - - -[#160600]: https://github.com/cockroachdb/cockroach/pull/160600 -[#159904]: https://github.com/cockroachdb/cockroach/pull/159904 -[#160016]: https://github.com/cockroachdb/cockroach/pull/160016 -[#159870]: https://github.com/cockroachdb/cockroach/pull/159870 -[#159778]: https://github.com/cockroachdb/cockroach/pull/159778 -[#160422]: https://github.com/cockroachdb/cockroach/pull/160422 -[#160561]: https://github.com/cockroachdb/cockroach/pull/160561 -[#160228]: https://github.com/cockroachdb/cockroach/pull/160228 -[#159566]: https://github.com/cockroachdb/cockroach/pull/159566 -[#159677]: https://github.com/cockroachdb/cockroach/pull/159677 -[#159644]: https://github.com/cockroachdb/cockroach/pull/159644 -[#160477]: https://github.com/cockroachdb/cockroach/pull/160477 -[#160689]: https://github.com/cockroachdb/cockroach/pull/160689 +- Fixed a bug where import rollback could incorrectly revert data in a table that was already online. This could only occur if an import job was cancelled or failed after the import had already succeeded and the table was made available for use. diff --git a/src/current/_includes/releases/v26.1/v26.1.0-rc.1.md b/src/current/_includes/releases/v26.1/v26.1.0-rc.1.md index c84a6a06495..c5184e26feb 100644 --- a/src/current/_includes/releases/v26.1/v26.1.0-rc.1.md +++ b/src/current/_includes/releases/v26.1/v26.1.0-rc.1.md @@ -6,39 +6,25 @@ Release Date: January 22, 2026

SQL language changes

-- Added support for `SHOW STATEMENT HINTS`, which displays information about the statement hints (if any) associated with the given statement fingerprint string. The fingerprint is normalized in the same way as `EXPLAIN (FINGERPRINT)` before hints are matched. Example usage: `SHOW STATEMENT HINTS FOR ' SELECT * FROM xy WHERE x = 10 '` or `SHOW STATEMENT HINTS FOR $$ SELECT * FROM xy WHERE x = 10 $$ WITH DETAILS`. [#160865][#160865] -- Calling `information_schema.crdb_rewrite_inline_hints` now requires the REPAIRCLUSTER privilege. [#160946][#160946] -- Renamed the builtin function `crdb_internal.inject_hint` (introduced in v26.1.0-alpha.2) to `information_schema.crdb_rewrite_inline_hints`. [#160946][#160946] +- Added support for `SHOW STATEMENT HINTS`, which displays information about the statement hints (if any) associated with the given statement fingerprint string. The fingerprint is normalized in the same way as `EXPLAIN (FINGERPRINT)` before hints are matched. Example usage: `SHOW STATEMENT HINTS FOR ' SELECT * FROM xy WHERE x = 10 '` or `SHOW STATEMENT HINTS FOR $$ SELECT * FROM xy WHERE x = 10 $$ WITH DETAILS`. +- Calling `information_schema.crdb_rewrite_inline_hints` now requires the REPAIRCLUSTER privilege. +- Renamed the builtin function `crdb_internal.inject_hint` (introduced in v26.1.0-alpha.2) to `information_schema.crdb_rewrite_inline_hints`.

Operational changes

-- Changed goroutine profile dumps from human-readable `.txt.gz` files to binary proto `.pb.gz` files. This improves the performance of the goroutine dumper by eliminating brief in-process pauses that occurred when collecting goroutine stacks. [#160994][#160994] -- Added a new structured event of type `rewrite_inline_hints` that is emitted when an inline-hints rewrite rule is added using `information_schema.crdb_rewrite_inline_hints`. This event is written to both the event log and the OPS channel. [#161035][#161035] -- Added a new metric `sql.query.with_statement_hints.count` that is incremented whenever a statement is executed with one or more external statement hints applied. An example of an external statement hint is an inline-hints rewrite rule added by calling `information_schema.crdb_rewrite_inline_hints`. [#161085][#161085] +- Changed goroutine profile dumps from human-readable `.txt.gz` files to binary proto `.pb.gz` files. This improves the performance of the goroutine dumper by eliminating brief in-process pauses that occurred when collecting goroutine stacks. +- Added a new structured event of type `rewrite_inline_hints` that is emitted when an inline-hints rewrite rule is added using `information_schema.crdb_rewrite_inline_hints`. This event is written to both the event log and the OPS channel. +- Added a new metric `sql.query.with_statement_hints.count` that is incremented whenever a statement is executed with one or more external statement hints applied. An example of an external statement hint is an inline-hints rewrite rule added by calling `information_schema.crdb_rewrite_inline_hints`.

DB Console changes

-- The **SQL Activity** > **Sessions** page now defaults the **Session Status** filter to **Active, Idle** to exclude closed sessions. [#160937][#160937] -- Changed the unit of measurement for admission control duration metrics from microseconds to nanoseconds. The following metrics are affected: `admission.granter.slots_exhausted_duration.kv`, `admission.granter.cpu_load_short_period_duration.kv`, `admission.granter.cpu_load_long_period_duration.kv`, `admission.granter.io_tokens_exhausted_duration.kv`, `admission.granter.elastic_io_tokens_exhausted_duration.kv`, and `admission.elastic_cpu.nanos_exhausted_duration`. Note that dashboards displaying these metrics will show a discontinuity at upgrade time, with pre-upgrade values appearing much lower due to the unit change. [#161076][#161076] +- The **SQL Activity** > **Sessions** page now defaults the **Session Status** filter to **Active, Idle** to exclude closed sessions. +- Changed the unit of measurement for admission control duration metrics from microseconds to nanoseconds. The following metrics are affected: `admission.granter.slots_exhausted_duration.kv`, `admission.granter.cpu_load_short_period_duration.kv`, `admission.granter.cpu_load_long_period_duration.kv`, `admission.granter.io_tokens_exhausted_duration.kv`, `admission.granter.elastic_io_tokens_exhausted_duration.kv`, and `admission.elastic_cpu.nanos_exhausted_duration`. Note that dashboards displaying these metrics will show a discontinuity at upgrade time, with pre-upgrade values appearing much lower due to the unit change.

Bug fixes

-- Fixed a bug that caused `SHOW CREATE FUNCTION` to error when the function body contained casts from columns to user-defined types. [#160126][#160126] -- Fixed a bug where the `pprof` UI endpoints for allocs, heap, block, and mutex profiles ignored the seconds parameter and returned immediate snapshots instead of delta profiles. [#160804][#160804] -- Fixed a bug where schema changes adding a `NOT NULL` constraint could enter an infinite retry loop if a row violated the constraint and contained certain content (e.g., `"EOF"`). Such errors are now correctly classified and don't cause retries. [#160917][#160917] -- Fixed a bug in which inline-hints rewrite rules created with `information_schema.crdb_rewrite_inline_hints` were not correctly applied to statements run with `EXPLAIN ANALYZE`. This bug was introduced in v26.1.0-alpha.2. [#161312][#161312] -- Fixed a bug where IMPORT with AVRO data using OCF format could silently lose data if the underlying storage (e.g., S3) returned an error during read. Such errors are now properly reported. Other formats (specified via `data_as_binary_records` and `data_as_json_records` options) are unaffected. The bug has been present since about v20.1. [#161325][#161325] - - -[#161325]: https://github.com/cockroachdb/cockroach/pull/161325 -[#160946]: https://github.com/cockroachdb/cockroach/pull/160946 -[#161085]: https://github.com/cockroachdb/cockroach/pull/161085 -[#161076]: https://github.com/cockroachdb/cockroach/pull/161076 -[#160804]: https://github.com/cockroachdb/cockroach/pull/160804 -[#160917]: https://github.com/cockroachdb/cockroach/pull/160917 -[#161312]: https://github.com/cockroachdb/cockroach/pull/161312 -[#160865]: https://github.com/cockroachdb/cockroach/pull/160865 -[#160994]: https://github.com/cockroachdb/cockroach/pull/160994 -[#161035]: https://github.com/cockroachdb/cockroach/pull/161035 -[#160937]: https://github.com/cockroachdb/cockroach/pull/160937 -[#160126]: https://github.com/cockroachdb/cockroach/pull/160126 +- Fixed a bug that caused `SHOW CREATE FUNCTION` to error when the function body contained casts from columns to user-defined types. +- Fixed a bug where the `pprof` UI endpoints for allocs, heap, block, and mutex profiles ignored the seconds parameter and returned immediate snapshots instead of delta profiles. +- Fixed a bug where schema changes adding a `NOT NULL` constraint could enter an infinite retry loop if a row violated the constraint and contained certain content (e.g., `"EOF"`). Such errors are now correctly classified and don't cause retries. +- Fixed a bug in which inline-hints rewrite rules created with `information_schema.crdb_rewrite_inline_hints` were not correctly applied to statements run with `EXPLAIN ANALYZE`. This bug was introduced in v26.1.0-alpha.2. +- Fixed a bug where IMPORT with AVRO data using OCF format could silently lose data if the underlying storage (e.g., S3) returned an error during read. Such errors are now properly reported. Other formats (specified via `data_as_binary_records` and `data_as_json_records` options) are unaffected. The bug has been present since about v20.1. diff --git a/src/current/_includes/releases/v26.1/v26.1.1.md b/src/current/_includes/releases/v26.1/v26.1.1.md index 55c169f65ba..ccddcf35ace 100644 --- a/src/current/_includes/releases/v26.1/v26.1.1.md +++ b/src/current/_includes/releases/v26.1/v26.1.1.md @@ -6,42 +6,26 @@ Release Date: March 9, 2026

General changes

-- Added support for the `partition_alg` changefeed option to specify a Kafka partitioning algorithm. Supported values are `fnv-1a` (default) and `murmur2`. For example: `CREATE CHANGEFEED ... INTO 'kafka://...' WITH partition_alg='murmur2';`. This option is only valid for Kafka v2 sinks and is controlled by the cluster setting `changefeed.partition_alg.enabled`. Once a changefeed is created with a specific algorithm, it continues to use that algorithm even if the cluster setting is later disabled, unless the changefeed is altered to use a different `partition_alg` value. [#161532][#161532] +- Added support for the `partition_alg` changefeed option to specify a Kafka partitioning algorithm. Supported values are `fnv-1a` (default) and `murmur2`. For example: `CREATE CHANGEFEED ... INTO 'kafka://...' WITH partition_alg='murmur2';`. This option is only valid for Kafka v2 sinks and is controlled by the cluster setting `changefeed.partition_alg.enabled`. Once a changefeed is created with a specific algorithm, it continues to use that algorithm even if the cluster setting is later disabled, unless the changefeed is altered to use a different `partition_alg` value.

SQL language changes

-- The `information_schema.crdb_datums_to_bytes` built-in function is now documented. [#161196][#161196] +- The `information_schema.crdb_datums_to_bytes` built-in function is now documented.

Bug fixes

-- Fixed a bug where AVRO file imports of data with JSON or binary records could hang indefinitely when encountering stream errors from cloud storage (such as `HTTP/2` `CANCEL` errors). Import jobs will now properly fail with an error instead of hanging. [#161446][#161446] -- Fixed a bug which prevented successfully injecting hints using `information_schema.crdb_rewrite_inline_hints` for `INSERT`, `UPSERT`, `UPDATE`, and `DELETE` statements. This bug was present since hint injection was first introduced in v26.1.0. [#161970][#161970] -- Fixed a bug introduced in v26.1.0-beta.1 in which row-level TTL jobs could encounter GC threshold errors if each node had a large number of spans to process. [#161990][#161990] -- Fixed a bug where multi-statement explicit transactions that use `SAVEPOINT` to recover from certain errors (like duplicate key value violations) could lose writes performed before the savepoint was created in rare cases when buffered writes were enabled. Buffered writes are a public preview feature that is off by default. This bug was introduced in v25.2. [#162031][#162031] -- Fixed a bug that could cause changefeeds using Kafka v1 sinks to hang when the changefeed was cancelled. [#162121][#162121] -- Fixed a bug where queries using a generic plan with a lookup join on an index containing identity computed columns would fail with the error "cannot map variable %d to an indexed var". [#162140][#162140] -- Fixed an internal error "could not find format code for column N" that occurred when executing `EXPLAIN ANALYZE EXECUTE` statements via JDBC or other clients using the PostgreSQL binary protocol. [#162284][#162284] -- Fixed a bug where CockroachDB would encounter an internal error when evaluating builtin functions with `'{}'` as an argument without explicit type casts (e.g., `SELECT cardinality('{}');`). A regular error is now returned instead, matching PostgreSQL behavior. [#162358][#162358] -- Fixed a bug in which PL/pgSQL UDFs with many IF statements would cause a timeout and/or OOM when executed from a prepared statement. This bug was introduced in versions v23.2.22, v24.1.15, v24.3.9, v25.1.2, and v25.2.0. [#162560][#162560] -- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using `json` or `json-compact` formatting. This bug was introduced in v24.1. [#163353][#163353] -- Fixed a rare data race during parallel constraint checks where a fresh descriptor collection could resolve a stale enum type version. This bug was introduced in v26.1.0. [#163961][#163961] +- Fixed a bug where AVRO file imports of data with JSON or binary records could hang indefinitely when encountering stream errors from cloud storage (such as `HTTP/2` `CANCEL` errors). Import jobs will now properly fail with an error instead of hanging. +- Fixed a bug which prevented successfully injecting hints using `information_schema.crdb_rewrite_inline_hints` for `INSERT`, `UPSERT`, `UPDATE`, and `DELETE` statements. This bug was present since hint injection was first introduced in v26.1.0. +- Fixed a bug introduced in v26.1.0-beta.1 in which row-level TTL jobs could encounter GC threshold errors if each node had a large number of spans to process. +- Fixed a bug where multi-statement explicit transactions that use `SAVEPOINT` to recover from certain errors (like duplicate key value violations) could lose writes performed before the savepoint was created in rare cases when buffered writes were enabled. Buffered writes are a public preview feature that is off by default. This bug was introduced in v25.2. +- Fixed a bug that could cause changefeeds using Kafka v1 sinks to hang when the changefeed was cancelled. +- Fixed a bug where queries using a generic plan with a lookup join on an index containing identity computed columns would fail with the error "cannot map variable %d to an indexed var". +- Fixed an internal error "could not find format code for column N" that occurred when executing `EXPLAIN ANALYZE EXECUTE` statements via JDBC or other clients using the PostgreSQL binary protocol. +- Fixed a bug where CockroachDB would encounter an internal error when evaluating builtin functions with `'{}'` as an argument without explicit type casts (e.g., `SELECT cardinality('{}');`). A regular error is now returned instead, matching PostgreSQL behavior. +- Fixed a bug in which PL/pgSQL UDFs with many IF statements would cause a timeout and/or OOM when executed from a prepared statement. This bug was introduced in versions v23.2.22, v24.1.15, v24.3.9, v25.1.2, and v25.2.0. +- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using `json` or `json-compact` formatting. This bug was introduced in v24.1. +- Fixed a rare data race during parallel constraint checks where a fresh descriptor collection could resolve a stale enum type version. This bug was introduced in v26.1.0.

Performance improvements

-- Improved changefeed checkpointing performance when changefeeds are lagging. Previously, checkpoint updates could be redundantly applied multiple times per checkpoint operation. [#163283][#163283] - - -[#161970]: https://github.com/cockroachdb/cockroach/pull/161970 -[#162140]: https://github.com/cockroachdb/cockroach/pull/162140 -[#162358]: https://github.com/cockroachdb/cockroach/pull/162358 -[#163353]: https://github.com/cockroachdb/cockroach/pull/163353 -[#161446]: https://github.com/cockroachdb/cockroach/pull/161446 -[#162031]: https://github.com/cockroachdb/cockroach/pull/162031 -[#162121]: https://github.com/cockroachdb/cockroach/pull/162121 -[#162284]: https://github.com/cockroachdb/cockroach/pull/162284 -[#163961]: https://github.com/cockroachdb/cockroach/pull/163961 -[#161532]: https://github.com/cockroachdb/cockroach/pull/161532 -[#161990]: https://github.com/cockroachdb/cockroach/pull/161990 -[#162560]: https://github.com/cockroachdb/cockroach/pull/162560 -[#163283]: https://github.com/cockroachdb/cockroach/pull/163283 -[#161196]: https://github.com/cockroachdb/cockroach/pull/161196 +- Improved changefeed checkpointing performance when changefeeds are lagging. Previously, checkpoint updates could be redundantly applied multiple times per checkpoint operation. diff --git a/src/current/_includes/releases/v26.1/v26.1.2.md b/src/current/_includes/releases/v26.1/v26.1.2.md index 7d71de3e182..7d805bc7f3f 100644 --- a/src/current/_includes/releases/v26.1/v26.1.2.md +++ b/src/current/_includes/releases/v26.1/v26.1.2.md @@ -6,28 +6,17 @@ Release Date: April 3, 2026

Command-line changes

-- The `cockroach debug zip` command's `--include-files` and `--exclude-files` flags now support full zip path patterns. Patterns containing `/` are matched against the full path within the zip archive (e.g., `--include-files='debug/nodes/1/*.json'`). Patterns without `/` continue to match the base file name as before. [#164146][#164146] +- The `cockroach debug zip` command's `--include-files` and `--exclude-files` flags now support full zip path patterns. Patterns containing `/` are matched against the full path within the zip archive (e.g., `--include-files='debug/nodes/1/*.json'`). Patterns without `/` continue to match the base file name as before.

Bug fixes

-- Fixed a bug where contention events reported the wrong key. Previously, the key field in contention events showed the transaction's anchor key (used for record placement) rather than the actual key where the conflict occurred. This made it difficult to diagnose contention issues accurately. [#164157][#164157] -- Fixed a bug where `CREATE INDEX` on a table with `PARTITION ALL BY` would fail if the partition columns were explicitly included in the primary key definition. [#164754][#164754] -- Fixed a bug that prevented the `optimizer_min_row_count` setting from applying to anti-join expressions, which could lead to bad query plans. The fix is gated behind `optimizer_use_min_row_count_anti_join_fix`, which is on by default on v26.2 and later, and off by default in earlier versions. [#164798][#164798] -- Fixed a bug where CockroachDB did not always promptly respond to the statement timeout when performing a hash join with an `ON` filter that is mostly `false`. [#164891][#164891] -- Fixed a bug introduced in v25.4 where setting `min_checkpoint_frequency` to `0` prevented changefeeds from advancing their resolved timestamp (high-water mark) and emitting resolved messages. Note that setting `min_checkpoint_frequency` lower than `500ms` is not recommended as it may cause degraded changefeed performance. [#164892][#164892] -- Lowered the default value of the `changefeed.max_retry_backoff` cluster setting from `10m` to `30s` to reduce changefeed lag during rolling restarts. [#164936][#164936] -- Fixed a rare race condition where `SHOW CREATE TABLE` could fail with a `"relation does not exist"` error if a table referenced by a foreign key was being concurrently dropped. [#165274][#165274] -- Fixed a bug that could cause row sampling for table statistics to crash a node due to a data race when processing a collated string column with values larger than 400 bytes. This bug has existed since before v23.1. [#165562][#165562] -- Fixed a bug in the legacy schema changer where rolling back a `CREATE TABLE` with inline `FOREIGN KEY` constraints could leave orphaned foreign key back-references on the referenced table, causing descriptor validation errors. [#165994][#165994] -- Fixed a bug where restoring a database backup containing default privileges that referenced non-existent users would leave dangling user references in the restored database descriptor. [#166226][#166226] -[#164754]: https://github.com/cockroachdb/cockroach/pull/164754 -[#164892]: https://github.com/cockroachdb/cockroach/pull/164892 -[#165562]: https://github.com/cockroachdb/cockroach/pull/165562 -[#166226]: https://github.com/cockroachdb/cockroach/pull/166226 -[#164936]: https://github.com/cockroachdb/cockroach/pull/164936 -[#165274]: https://github.com/cockroachdb/cockroach/pull/165274 -[#165994]: https://github.com/cockroachdb/cockroach/pull/165994 -[#164146]: https://github.com/cockroachdb/cockroach/pull/164146 -[#164157]: https://github.com/cockroachdb/cockroach/pull/164157 -[#164798]: https://github.com/cockroachdb/cockroach/pull/164798 -[#164891]: https://github.com/cockroachdb/cockroach/pull/164891 +- Fixed a bug where contention events reported the wrong key. Previously, the key field in contention events showed the transaction's anchor key (used for record placement) rather than the actual key where the conflict occurred. This made it difficult to diagnose contention issues accurately. +- Fixed a bug where `CREATE INDEX` on a table with `PARTITION ALL BY` would fail if the partition columns were explicitly included in the primary key definition. +- Fixed a bug that prevented the `optimizer_min_row_count` setting from applying to anti-join expressions, which could lead to bad query plans. The fix is gated behind `optimizer_use_min_row_count_anti_join_fix`, which is on by default on v26.2 and later, and off by default in earlier versions. +- Fixed a bug where CockroachDB did not always promptly respond to the statement timeout when performing a hash join with an `ON` filter that is mostly `false`. +- Fixed a bug introduced in v25.4 where setting `min_checkpoint_frequency` to `0` prevented changefeeds from advancing their resolved timestamp (high-water mark) and emitting resolved messages. Note that setting `min_checkpoint_frequency` lower than `500ms` is not recommended as it may cause degraded changefeed performance. +- Lowered the default value of the `changefeed.max_retry_backoff` cluster setting from `10m` to `30s` to reduce changefeed lag during rolling restarts. +- Fixed a rare race condition where `SHOW CREATE TABLE` could fail with a `"relation does not exist"` error if a table referenced by a foreign key was being concurrently dropped. +- Fixed a bug that could cause row sampling for table statistics to crash a node due to a data race when processing a collated string column with values larger than 400 bytes. This bug has existed since before v23.1. +- Fixed a bug in the legacy schema changer where rolling back a `CREATE TABLE` with inline `FOREIGN KEY` constraints could leave orphaned foreign key back-references on the referenced table, causing descriptor validation errors. +- Fixed a bug where restoring a database backup containing default privileges that referenced non-existent users would leave dangling user references in the restored database descriptor. diff --git a/src/current/_includes/releases/v26.1/v26.1.3.md b/src/current/_includes/releases/v26.1/v26.1.3.md index a1aa820010e..658a1408a15 100644 --- a/src/current/_includes/releases/v26.1/v26.1.3.md +++ b/src/current/_includes/releases/v26.1/v26.1.3.md @@ -6,7 +6,4 @@ Release Date: April 20, 2026

Bug fixes

-- Fixed a bug where concurrent updates to a table using multiple column families during a partial index creation could result in data loss, incorrect `NULL` values, or validation failures in the resulting index. [#168471][#168471] - - -[#168471]: https://github.com/cockroachdb/cockroach/pull/168471 +- Fixed a bug where concurrent updates to a table using multiple column families during a partial index creation could result in data loss, incorrect `NULL` values, or validation failures in the resulting index. diff --git a/src/current/_includes/releases/v26.1/v26.1.4.md b/src/current/_includes/releases/v26.1/v26.1.4.md index 4d1756b6eb1..9199de49e78 100644 --- a/src/current/_includes/releases/v26.1/v26.1.4.md +++ b/src/current/_includes/releases/v26.1/v26.1.4.md @@ -6,19 +6,10 @@ Release Date: May 1, 2026

Bug fixes

-- Fixed a bug where the view owner's privileges on underlying tables were not checked when selecting from a view. A view would continue to work even after the owner lost access to the underlying tables. This also affects row-level security (RLS); the view invoker's RLS policies are enforced instead of the view owner's. To enforce privilege checks on underlying tables, set the `sql.auth.skip_underlying_view_privilege_checks.enabled` cluster setting to `false`. This setting defaults to `true` to prevent backward-incompatible behavior. [#166025][#166025] -- Fixed a bug where executing a mutation in a subquery (such as a CTE) could cause the "rows written" metrics like `sql.statements.index_rows_written.count` and `sql.statements.index_bytes_written.count` to not be incremented correctly. [#167431][#167431] -- Fixed a bug where CockroachDB might not have respected the table-level parameters `sql_stats_automatic_full_collection_enabled` and `sql_stats_automatic_partial_collection_enabled` and defaulted to using the corresponding cluster settings when deciding whether to perform automatic statistics collection on a table. [#167680][#167680] -- Fixed a bug where `IMPORT` error messages could include unredacted cloud storage credentials from the source URI. Credentials are now stripped from URIs before they appear in error messages. [#167950][#167950] -- Fixed a bug where transient I/O errors reading from the `AbortSpan` were misidentified as replica corruption, causing the node to crash. These errors are now returned to the caller as regular errors. [#168016][#168016] -- Fixed a bug where transient I/O errors (such as cloud storage network timeouts) during split or merge trigger evaluation were misidentified as replica corruption, causing the node to crash. These errors now correctly fail the operation, which is retried automatically. [#168017][#168017] -- Fixed a bug where DB Console Databases page privilege checks did not resolve role membership chains for `CONNECT` grants. Users who inherited `CONNECT` through role hierarchies now correctly see their authorized databases and tables. [#168495][#168495] - - -[#167431]: https://github.com/cockroachdb/cockroach/pull/167431 -[#167680]: https://github.com/cockroachdb/cockroach/pull/167680 -[#167950]: https://github.com/cockroachdb/cockroach/pull/167950 -[#168016]: https://github.com/cockroachdb/cockroach/pull/168016 -[#168017]: https://github.com/cockroachdb/cockroach/pull/168017 -[#168495]: https://github.com/cockroachdb/cockroach/pull/168495 -[#166025]: https://github.com/cockroachdb/cockroach/pull/166025 +- Fixed a bug where the view owner's privileges on underlying tables were not checked when selecting from a view. A view would continue to work even after the owner lost access to the underlying tables. This also affects row-level security (RLS); the view invoker's RLS policies are enforced instead of the view owner's. To enforce privilege checks on underlying tables, set the `sql.auth.skip_underlying_view_privilege_checks.enabled` cluster setting to `false`. This setting defaults to `true` to prevent backward-incompatible behavior. +- Fixed a bug where executing a mutation in a subquery (such as a CTE) could cause the "rows written" metrics like `sql.statements.index_rows_written.count` and `sql.statements.index_bytes_written.count` to not be incremented correctly. +- Fixed a bug where CockroachDB might not have respected the table-level parameters `sql_stats_automatic_full_collection_enabled` and `sql_stats_automatic_partial_collection_enabled` and defaulted to using the corresponding cluster settings when deciding whether to perform automatic statistics collection on a table. +- Fixed a bug where `IMPORT` error messages could include unredacted cloud storage credentials from the source URI. Credentials are now stripped from URIs before they appear in error messages. +- Fixed a bug where transient I/O errors reading from the `AbortSpan` were misidentified as replica corruption, causing the node to crash. These errors are now returned to the caller as regular errors. +- Fixed a bug where transient I/O errors (such as cloud storage network timeouts) during split or merge trigger evaluation were misidentified as replica corruption, causing the node to crash. These errors now correctly fail the operation, which is retried automatically. +- Fixed a bug where DB Console Databases page privilege checks did not resolve role membership chains for `CONNECT` grants. Users who inherited `CONNECT` through role hierarchies now correctly see their authorized databases and tables. diff --git a/src/current/_includes/releases/v26.2/backward-incompatible.md b/src/current/_includes/releases/v26.2/backward-incompatible.md index 81885ed8a50..584bb01aa37 100644 --- a/src/current/_includes/releases/v26.2/backward-incompatible.md +++ b/src/current/_includes/releases/v26.2/backward-incompatible.md @@ -1,46 +1,45 @@ This section summarizes changes that can cause applications, scripts, or manual workflows to fail or behave differently than in previous releases. This includes [key cluster setting changes](#v26-2-0-cluster-settings) and [deprecations](#v26-2-0-deprecations). -- The `TG_ARGV` trigger function parameter now uses 0-based indexing to match PostgreSQL behavior. Previously, `TG_ARGV[1]` returned the first argument; now `TG_ARGV[0]` returns the first argument and `TG_ARGV[1]` returns the second argument. Additionally, usage of `TG_ARGV` no longer requires setting the `allow_create_trigger_function_with_argv_references` session variable. [#161925](https://github.com/cockroachdb/cockroach/pull/161925) +- The `TG_ARGV` trigger function parameter now uses 0-based indexing to match PostgreSQL behavior. Previously, `TG_ARGV[1]` returned the first argument; now `TG_ARGV[0]` returns the first argument and `TG_ARGV[1]` returns the second argument. Additionally, usage of `TG_ARGV` no longer requires setting the `allow_create_trigger_function_with_argv_references` session variable. -- When selecting from a view, the view owner's privileges on the underlying tables are now checked. Previously, no privilege checks were performed on the underlying tables, so a view would continue to work even after the owner lost access to the underlying tables. This also affects row-level security (RLS): the view owner's RLS policies are now enforced instead of the invoker's. If this causes issues, you can restore the previous behavior by setting the cluster setting `sql.auth.skip_underlying_view_privilege_checks.enabled` to `true`. [#164664](https://github.com/cockroachdb/cockroach/pull/164664) +- When selecting from a view, the view owner's privileges on the underlying tables are now checked. Previously, no privilege checks were performed on the underlying tables, so a view would continue to work even after the owner lost access to the underlying tables. This also affects row-level security (RLS): the view owner's RLS policies are now enforced instead of the invoker's. If this causes issues, you can restore the previous behavior by setting the cluster setting `sql.auth.skip_underlying_view_privilege_checks.enabled` to `true`. -- `REFRESH MATERIALIZED VIEW` now evaluates row-level security (RLS) policies using the view owner's identity instead of the invoker's, matching PostgreSQL's definer semantics. [#167419](https://github.com/cockroachdb/cockroach/pull/167419) +- `REFRESH MATERIALIZED VIEW` now evaluates row-level security (RLS) policies using the view owner's identity instead of the invoker's, matching PostgreSQL's definer semantics. -- User-defined views that reference `crdb_internal` virtual tables now enforce unsafe access checks. To restore the previous behavior, set the session variable `allow_unsafe_internals` or the cluster setting `sql.override.allow_unsafe_internals.enabled` to `true`. [#167023](https://github.com/cockroachdb/cockroach/pull/167023) +- User-defined views that reference `crdb_internal` virtual tables now enforce unsafe access checks. To restore the previous behavior, set the session variable `allow_unsafe_internals` or the cluster setting `sql.override.allow_unsafe_internals.enabled` to `true`. -- Removed the `incremental_location` option from `BACKUP` and `CREATE SCHEDULE FOR BACKUP`. All backup data is now stored in the base backup location, with incrementals automatically placed in `{collection_root}/incrementals`, preserving the ability to set distinct TTL policies for full and incremental backups. [#159189](https://github.com/cockroachdb/cockroach/pull/159189) +- Removed the `incremental_location` option from `BACKUP` and `CREATE SCHEDULE FOR BACKUP`. All backup data is now stored in the base backup location, with incrementals automatically placed in `{collection_root}/incrementals`, preserving the ability to set distinct TTL policies for full and incremental backups. -- Removed the `incremental_location` option from `SHOW BACKUP` and `RESTORE`. Backups created before v26.2 using `incremental_location` are **not** restorable in v26.2. [#160416](https://github.com/cockroachdb/cockroach/pull/160416) +- Removed the `incremental_location` option from `SHOW BACKUP` and `RESTORE`. Backups created before v26.2 using `incremental_location` are **not** restorable in v26.2. -- `CREATE CHANGEFEED FOR DATABASE` now returns an error stating that the feature is not implemented. [#166920](https://github.com/cockroachdb/cockroach/pull/166920) +- `CREATE CHANGEFEED FOR DATABASE` now returns an error stating that the feature is not implemented. -- Added the `TEMPORARY` database privilege, which controls whether users can create temporary tables and views. On new databases, this privilege is granted to the `public` role by default, matching PostgreSQL behavior. [#165992](https://github.com/cockroachdb/cockroach/pull/165992) +- Added the `TEMPORARY` database privilege, which controls whether users can create temporary tables and views. On new databases, this privilege is granted to the `public` role by default, matching PostgreSQL behavior. -- Explicit `AS OF SYSTEM TIME` queries are no longer allowed on a Physical Cluster Replication (PCR) reader virtual cluster, unless the `bypass_pcr_reader_catalog_aost` session variable is set to `true`. This session variable should only be used during investigation or for changing cluster settings specific to the reader virtual cluster. [#165382](https://github.com/cockroachdb/cockroach/pull/165382) +- Explicit `AS OF SYSTEM TIME` queries are no longer allowed on a Physical Cluster Replication (PCR) reader virtual cluster, unless the `bypass_pcr_reader_catalog_aost` session variable is set to `true`. This session variable should only be used during investigation or for changing cluster settings specific to the reader virtual cluster. -- Changed goroutine profile dumps from human-readable `.txt.gz` files to binary proto `.pb.gz` files. This improves the performance of the goroutine dumper by eliminating brief in-process pauses that occurred when collecting goroutine stacks. [#160798](https://github.com/cockroachdb/cockroach/pull/160798) +- Changed goroutine profile dumps from human-readable `.txt.gz` files to binary proto `.pb.gz` files. This improves the performance of the goroutine dumper by eliminating brief in-process pauses that occurred when collecting goroutine stacks. -- Using `ALTER CHANGEFEED ADD ...` for a table that is already watched will now return an error: `target already watched by changefeed`. [#164433](https://github.com/cockroachdb/cockroach/pull/164433) +- Using `ALTER CHANGEFEED ADD ...` for a table that is already watched will now return an error: `target already watched by changefeed`. -- Creating or altering a changefeed or Kafka/Pub/Sub external connection now returns an error when the `topic_name` query parameter is explicitly set to an empty string in the sink URI, rather than silently falling back to using the table name as the topic name. Existing changefeeds with an empty `topic_name` are not affected. [#164225](https://github.com/cockroachdb/cockroach/pull/164225) +- Creating or altering a changefeed or Kafka/Pub/Sub external connection now returns an error when the `topic_name` query parameter is explicitly set to an empty string in the sink URI, rather than silently falling back to using the table name as the topic name. Existing changefeeds with an empty `topic_name` are not affected. -- The `cockroach debug tsdump` command now defaults to `--format=raw` instead of `--format=text`. The `raw` (gob) format is optimized for Datadog ingestion. A new `--output` flag lets you write output directly to a file, avoiding potential file corruption that can occur with shell redirection. If `--output` is not specified, output is written to `stdout`. [#160538](https://github.com/cockroachdb/cockroach/pull/160538) +- The `cockroach debug tsdump` command now defaults to `--format=raw` instead of `--format=text`. The `raw` (gob) format is optimized for Datadog ingestion. A new `--output` flag lets you write output directly to a file, avoiding potential file corruption that can occur with shell redirection. If `--output` is not specified, output is written to `stdout`. -- TTL jobs are now owned by the schedule owner instead of the `node` user. This allows users with `CONTROLJOB` privilege to cancel TTL jobs, provided the schedule owner is not an admin (`CONTROLJOB` does not grant control over admin-owned jobs). [#161226](https://github.com/cockroachdb/cockroach/pull/161226) +- TTL jobs are now owned by the schedule owner instead of the `node` user. This allows users with `CONTROLJOB` privilege to cancel TTL jobs, provided the schedule owner is not an admin (`CONTROLJOB` does not grant control over admin-owned jobs). -- The session variable `distsql_prevent_partitioning_soft_limited_scans` is now enabled by default. This prevents scans with soft limits from being planned as multiple TableReaders, which decreases the initial setup costs of some fully-distributed query plans. [#160051](https://github.com/cockroachdb/cockroach/pull/160051) +- The session variable `distsql_prevent_partitioning_soft_limited_scans` is now enabled by default. This prevents scans with soft limits from being planned as multiple TableReaders, which decreases the initial setup costs of some fully-distributed query plans. -- The `build.timestamp` Prometheus metric now carries `major` and `minor` labels identifying the release series of the running CockroachDB binary (e.g., `major="26", minor="1"` for any v26.1.x build). [#163834](https://github.com/cockroachdb/cockroach/pull/163834) +- The `build.timestamp` Prometheus metric now carries `major` and `minor` labels identifying the release series of the running CockroachDB binary (e.g., `major="26", minor="1"` for any v26.1.x build). -- RPC connection metrics now include a `protocol` label. The following metrics are affected: `rpc.connection.avg_round_trip_latency`, `rpc.connection.failures`, `rpc.connection.healthy`, `rpc.connection.healthy_nanos`, `rpc.connection.heartbeats`, `rpc.connection.tcp_rtt`, `rpc.connection.tcp_rtt_var`, `rpc.connection.unhealthy`, `rpc.connection.unhealthy_nanos`, and `rpc.connection.inactive`. In v26.2, the label value is always `grpc`. For example: `rpc_connection_healthy{node_id="1",remote_node_id="0",remote_addr="localhost:26258",class="system",protocol="grpc"} 1` [#162528](https://github.com/cockroachdb/cockroach/pull/162528) +- RPC connection metrics now include a `protocol` label. The following metrics are affected: `rpc.connection.avg_round_trip_latency`, `rpc.connection.failures`, `rpc.connection.healthy`, `rpc.connection.healthy_nanos`, `rpc.connection.heartbeats`, `rpc.connection.tcp_rtt`, `rpc.connection.tcp_rtt_var`, `rpc.connection.unhealthy`, `rpc.connection.unhealthy_nanos`, and `rpc.connection.inactive`. In v26.2, the label value is always `grpc`. For example: `rpc_connection_healthy{node_id="1",remote_node_id="0",remote_addr="localhost:26258",class="system",protocol="grpc"} 1` -- Calling `information_schema.crdb_rewrite_inline_hints` now requires the `REPAIRCLUSTER` privilege. [#160716](https://github.com/cockroachdb/cockroach/pull/160716) +- Calling `information_schema.crdb_rewrite_inline_hints` now requires the `REPAIRCLUSTER` privilege. -- Renamed the builtin function `crdb_internal.inject_hint` (introduced in v26.1.0-alpha.2) to `information_schema.crdb_rewrite_inline_hints`. [#160716](https://github.com/cockroachdb/cockroach/pull/160716) +- Renamed the builtin function `crdb_internal.inject_hint` (introduced in v26.1.0-alpha.2) to `information_schema.crdb_rewrite_inline_hints`. -- Changed the unit of measurement for admission control duration metrics from microseconds to nanoseconds. The following metrics are affected: `admission.granter.slots_exhausted_duration.kv`, `admission.granter.cpu_load_short_period_duration.kv`, `admission.granter.cpu_load_long_period_duration.kv`, `admission.granter.io_tokens_exhausted_duration.kv`, `admission.granter.elastic_io_tokens_exhausted_duration.kv`, and `admission.elastic_cpu.nanos_exhausted_duration`. Note that dashboards displaying these metrics will show a discontinuity at upgrade time, with pre-upgrade values appearing much lower due to the unit change. [#160956](https://github.com/cockroachdb/cockroach/pull/160956) +- Changed the unit of measurement for admission control duration metrics from microseconds to nanoseconds. The following metrics are affected: `admission.granter.slots_exhausted_duration.kv`, `admission.granter.cpu_load_short_period_duration.kv`, `admission.granter.cpu_load_long_period_duration.kv`, `admission.granter.io_tokens_exhausted_duration.kv`, `admission.granter.elastic_io_tokens_exhausted_duration.kv`, and `admission.elastic_cpu.nanos_exhausted_duration`. Note that dashboards displaying these metrics will show a discontinuity at upgrade time, with pre-upgrade values appearing much lower due to the unit change. -- The **Statement Details** page URL format has changed from `/statement/{implicitTxn}/{statementId}` to `/statement/{statementId}`. As a result, bookmarks using the old URL structure will no longer work. [#159558](https://github.com/cockroachdb/cockroach/pull/159558) - -- Added the `server.sql_tcp_user.timeout` cluster setting, which specifies the maximum amount of time transmitted data can remain unacknowledged before the underlying TCP connection is forcefully closed. This setting is enabled by default with a value of 30 seconds and is supported on Linux and macOS (Darwin). [#164037](https://github.com/cockroachdb/cockroach/pull/164037) +- The **Statement Details** page URL format has changed from `/statement/{implicitTxn}/{statementId}` to `/statement/{statementId}`. As a result, bookmarks using the old URL structure will no longer work. +- Added the `server.sql_tcp_user.timeout` cluster setting, which specifies the maximum amount of time transmitted data can remain unacknowledged before the underlying TCP connection is forcefully closed. This setting is enabled by default with a value of 30 seconds and is supported on Linux and macOS (Darwin). diff --git a/src/current/_includes/releases/v26.2/cluster-setting-changes.md b/src/current/_includes/releases/v26.2/cluster-setting-changes.md index b4d2fd2ad08..462952c749c 100644 --- a/src/current/_includes/releases/v26.2/cluster-setting-changes.md +++ b/src/current/_includes/releases/v26.2/cluster-setting-changes.md @@ -4,15 +4,15 @@ Review the following changes **before** upgrading. New default values will be us | Setting | Description | Previous default | New default | Backported to versions | |---|---|---|---|---| -| `backup.index.read.enabled` | The `backup.index.read.enabled` cluster setting is now enabled by default. This allows backup and restore operations to refer to the index when reading from a backup collection, reducing memory load and improving performance. [#165263](https://github.com/cockroachdb/cockroach/pull/165263) | `false` | `true` | None | -| `bulkio.import.elastic_control.enabled` | The `bulkio.import.elastic_control.enabled` cluster setting is now enabled by default, allowing import operations to integrate with elastic CPU control and automatically throttle based on available resources. [#163867](https://github.com/cockroachdb/cockroach/pull/163867) | `false` | `true` | None | -| `bulkio.index_backfill.elastic_control.enabled` | The `bulkio.index_backfill.elastic_control.enabled` cluster setting is now enabled by default, allowing index backfill operations to integrate with elastic CPU control and automatically throttle based on available resources. [#163866](https://github.com/cockroachdb/cockroach/pull/163866) | `false` | `true` | None | -| `bulkio.ingest.sst_batcher_elastic_control.enabled` | The `bulkio.ingest.sst_batcher_elastic_control.enabled` cluster setting is now enabled by default, allowing SST batcher operations to integrate with elastic CPU control and automatically throttle based on available resources. [#163868](https://github.com/cockroachdb/cockroach/pull/163868) | `false` | `true` | None | -| `changefeed.max_retry_backoff` | Lowered the default value of the `changefeed.max_retry_backoff` cluster setting from `10m` to `30s` to reduce changefeed lag during rolling restarts. [#164874](https://github.com/cockroachdb/cockroach/pull/164874) | `10m` | `30s` | v25.4, v26.1 | -| `kv.range_split.load_sample_reset_duration` | The `kv.range_split.load_sample_reset_duration` cluster setting now defaults to `30m`. This should improve load-based splitting in rare edge cases. [#159499](https://github.com/cockroachdb/cockroach/pull/159499) | `0` | `30m` | v26.1 | -| `sql.catalog.allow_leased_descriptors.enabled` | Changed the default value of the `sql.catalog.allow_leased_descriptors.enabled` cluster setting to `true`. This setting allows introspection tables like `information_schema` and `pg_catalog` to use cached descriptors when building the table results, which improves the performance of introspection queries when there are many tables in the cluster. [#159162](https://github.com/cockroachdb/cockroach/pull/159162) | `false` | `true` | v26.1 | -| `sql.guardrails.max_row_size_err` | Lowered the default value of the `sql.guardrails.max_row_size_log` cluster setting from `64 MiB` to `16 MiB`, and the default value of `sql.guardrails.max_row_size_err` from `512 MiB` to `80 MiB`. These settings control the maximum size of a row (or column family) that SQL can write before logging a warning or returning an error, respectively. The previous defaults were high enough that large rows would hit other limits first (such as the Raft command size limit or the backup SST size limit), producing confusing errors. The new defaults align with existing system limits to provide clearer diagnostics. If your workload legitimately writes rows larger than these new defaults, you can restore the previous behavior by increasing these settings. [#164468](https://github.com/cockroachdb/cockroach/pull/164468) | `512 MiB` | `80 MiB` | None | -| `sql.guardrails.max_row_size_log` | Lowered the default value of the `sql.guardrails.max_row_size_log` cluster setting from `64 MiB` to `16 MiB`, and the default value of `sql.guardrails.max_row_size_err` from `512 MiB` to `80 MiB`. These settings control the maximum size of a row (or column family) that SQL can write before logging a warning or returning an error, respectively. The previous defaults were high enough that large rows would hit other limits first (such as the Raft command size limit or the backup SST size limit), producing confusing errors. The new defaults align with existing system limits to provide clearer diagnostics. If your workload legitimately writes rows larger than these new defaults, you can restore the previous behavior by increasing these settings. [#164468](https://github.com/cockroachdb/cockroach/pull/164468) | `64 MiB` | `16 MiB` | None | -| `sql.stats.automatic_full_concurrency_limit` | Increased the default value of `sql.stats.automatic_full_concurrency_limit` (which controls the maximum number of concurrent full statistics collections) from `1` to number of vCPUs divided by 2 (e.g., 4 vCPU nodes will have the value of `2`). [#161806](https://github.com/cockroachdb/cockroach/pull/161806) | `1` | number of vCPUs / 2 | None | +| `backup.index.read.enabled` | The `backup.index.read.enabled` cluster setting is now enabled by default. This allows backup and restore operations to refer to the index when reading from a backup collection, reducing memory load and improving performance. | `false` | `true` | None | +| `bulkio.import.elastic_control.enabled` | The `bulkio.import.elastic_control.enabled` cluster setting is now enabled by default, allowing import operations to integrate with elastic CPU control and automatically throttle based on available resources. | `false` | `true` | None | +| `bulkio.index_backfill.elastic_control.enabled` | The `bulkio.index_backfill.elastic_control.enabled` cluster setting is now enabled by default, allowing index backfill operations to integrate with elastic CPU control and automatically throttle based on available resources. | `false` | `true` | None | +| `bulkio.ingest.sst_batcher_elastic_control.enabled` | The `bulkio.ingest.sst_batcher_elastic_control.enabled` cluster setting is now enabled by default, allowing SST batcher operations to integrate with elastic CPU control and automatically throttle based on available resources. | `false` | `true` | None | +| `changefeed.max_retry_backoff` | Lowered the default value of the `changefeed.max_retry_backoff` cluster setting from `10m` to `30s` to reduce changefeed lag during rolling restarts. | `10m` | `30s` | v25.4, v26.1 | +| `kv.range_split.load_sample_reset_duration` | The `kv.range_split.load_sample_reset_duration` cluster setting now defaults to `30m`. This should improve load-based splitting in rare edge cases. | `0` | `30m` | v26.1 | +| `sql.catalog.allow_leased_descriptors.enabled` | Changed the default value of the `sql.catalog.allow_leased_descriptors.enabled` cluster setting to `true`. This setting allows introspection tables like `information_schema` and `pg_catalog` to use cached descriptors when building the table results, which improves the performance of introspection queries when there are many tables in the cluster. | `false` | `true` | v26.1 | +| `sql.guardrails.max_row_size_err` | Lowered the default value of the `sql.guardrails.max_row_size_log` cluster setting from `64 MiB` to `16 MiB`, and the default value of `sql.guardrails.max_row_size_err` from `512 MiB` to `80 MiB`. These settings control the maximum size of a row (or column family) that SQL can write before logging a warning or returning an error, respectively. The previous defaults were high enough that large rows would hit other limits first (such as the Raft command size limit or the backup SST size limit), producing confusing errors. The new defaults align with existing system limits to provide clearer diagnostics. If your workload legitimately writes rows larger than these new defaults, you can restore the previous behavior by increasing these settings. | `512 MiB` | `80 MiB` | None | +| `sql.guardrails.max_row_size_log` | Lowered the default value of the `sql.guardrails.max_row_size_log` cluster setting from `64 MiB` to `16 MiB`, and the default value of `sql.guardrails.max_row_size_err` from `512 MiB` to `80 MiB`. These settings control the maximum size of a row (or column family) that SQL can write before logging a warning or returning an error, respectively. The previous defaults were high enough that large rows would hit other limits first (such as the Raft command size limit or the backup SST size limit), producing confusing errors. The new defaults align with existing system limits to provide clearer diagnostics. If your workload legitimately writes rows larger than these new defaults, you can restore the previous behavior by increasing these settings. | `64 MiB` | `16 MiB` | None | +| `sql.stats.automatic_full_concurrency_limit` | Increased the default value of `sql.stats.automatic_full_concurrency_limit` (which controls the maximum number of concurrent full statistics collections) from `1` to number of vCPUs divided by 2 (e.g., 4 vCPU nodes will have the value of `2`). | `1` | number of vCPUs / 2 | None | - \ No newline at end of file + diff --git a/src/current/_includes/releases/v26.2/deprecations.md b/src/current/_includes/releases/v26.2/deprecations.md index beaa353fba0..0d1a0b39379 100644 --- a/src/current/_includes/releases/v26.2/deprecations.md +++ b/src/current/_includes/releases/v26.2/deprecations.md @@ -2,8 +2,8 @@ | Deprecated | Description | |---|---| -| `cockroach encode-uri` command | The `cockroach encode-uri` command has been merged into the `cockroach convert-url` command and `encode-uri` has been deprecated. As a result, the flags `--inline`, `--database`, `--user`, `--password`, `--cluster`, `--certs-dir`, `--ca-cert`, `--cert`, and `--key` have been added to `convert-url`. [#164561](https://github.com/cockroachdb/cockroach/pull/164561) | -| `enable_inspect_command` session variable | `INSPECT` is now a generally available (GA) feature. The `enable_inspect_command` session variable has been deprecated, and is now effectively always set to `true`. [#159659](https://github.com/cockroachdb/cockroach/pull/159659) | -| `enable_super_regions` session variable and `sql.defaults.super_regions.enabled` cluster setting | The `enable_super_regions` session variable and the `sql.defaults.super_regions.enabled` cluster setting are no longer required to use super regions. Super region DDL operations (`ADD`, `DROP`, and `ALTER SUPER REGION`) now work without any experimental flag. The session variable and cluster setting are deprecated, and existing scripts that set them will continue to work without error. [#165227](https://github.com/cockroachdb/cockroach/pull/165227) | +| `cockroach encode-uri` command | The `cockroach encode-uri` command has been merged into the `cockroach convert-url` command and `encode-uri` has been deprecated. As a result, the flags `--inline`, `--database`, `--user`, `--password`, `--cluster`, `--certs-dir`, `--ca-cert`, `--cert`, and `--key` have been added to `convert-url`. | +| `enable_inspect_command` session variable | `INSPECT` is now a generally available (GA) feature. The `enable_inspect_command` session variable has been deprecated, and is now effectively always set to `true`. | +| `enable_super_regions` session variable and `sql.defaults.super_regions.enabled` cluster setting | The `enable_super_regions` session variable and the `sql.defaults.super_regions.enabled` cluster setting are no longer required to use super regions. Super region DDL operations (`ADD`, `DROP`, and `ALTER SUPER REGION`) now work without any experimental flag. The session variable and cluster setting are deprecated, and existing scripts that set them will continue to work without error. | diff --git a/src/current/_includes/releases/v26.2/upgrade-finalization.md b/src/current/_includes/releases/v26.2/upgrade-finalization.md index 81479a994ee..1fe012ee679 100644 --- a/src/current/_includes/releases/v26.2/upgrade-finalization.md +++ b/src/current/_includes/releases/v26.2/upgrade-finalization.md @@ -1,21 +1,21 @@ This section summarizes the features that are not available until you [finalize the v26.2 upgrade]({% link v26.2/upgrade-cockroach-version.md %}#finalize-a-major-version-upgrade-manually). -- When selecting from a view, the view owner's privileges on the underlying tables are now checked. Previously, no privilege checks were performed on the underlying tables, so a view would continue to work even after the owner lost access to the underlying tables. This also affects row-level security (RLS): the view owner's RLS policies are now enforced instead of the invoker's. If this causes issues, you can restore the previous behavior by setting the cluster setting `sql.auth.skip_underlying_view_privilege_checks.enabled` to `true`. [#164664](https://github.com/cockroachdb/cockroach/pull/164664) +- When selecting from a view, the view owner's privileges on the underlying tables are now checked. Previously, no privilege checks were performed on the underlying tables, so a view would continue to work even after the owner lost access to the underlying tables. This also affects row-level security (RLS): the view owner's RLS policies are now enforced instead of the invoker's. If this causes issues, you can restore the previous behavior by setting the cluster setting `sql.auth.skip_underlying_view_privilege_checks.enabled` to `true`. -- Views now support the PostgreSQL-compatible security_invoker option. When set via `CREATE VIEW ... WITH (security_invoker)` or `ALTER VIEW SET (security_invoker = true)`, privilege checks on the underlying tables are performed as the querying user rather than the view owner. The `security_invoker` option can be reset with `ALTER VIEW ... RESET (security_invoker)`. [#164184](https://github.com/cockroachdb/cockroach/pull/164184) +- Views now support the PostgreSQL-compatible security_invoker option. When set via `CREATE VIEW ... WITH (security_invoker)` or `ALTER VIEW SET (security_invoker = true)`, privilege checks on the underlying tables are performed as the querying user rather than the view owner. The `security_invoker` option can be reset with `ALTER VIEW ... RESET (security_invoker)`. -- Added support for ALTER TABLE ENABLE TRIGGER and ALTER TABLE DISABLE TRIGGER syntax. This allows users to temporarily disable triggers without dropping them, and later re-enable them. The syntax supports disabling/enabling individual triggers by name, or all triggers on a table using the `ALL` or `USER` keywords. [#161924](https://github.com/cockroachdb/cockroach/pull/161924) +- Added support for ALTER TABLE ENABLE TRIGGER and ALTER TABLE DISABLE TRIGGER syntax. This allows users to temporarily disable triggers without dropping them, and later re-enable them. The syntax supports disabling/enabling individual triggers by name, or all triggers on a table using the `ALL` or `USER` keywords. -- `ALTER TABLE ... DROP CONSTRAINT` can now be used to drop `UNIQUE` constraints. The backing `UNIQUE` index will also be dropped, as CockroachDB treats the constraint and index as the same thing. [#162345](https://github.com/cockroachdb/cockroach/pull/162345) +- `ALTER TABLE ... DROP CONSTRAINT` can now be used to drop `UNIQUE` constraints. The backing `UNIQUE` index will also be dropped, as CockroachDB treats the constraint and index as the same thing. -- Added the sql.stats.canary_fraction cluster setting to enable canary table statistics. This setting controls the probability that table statistics will use canary mode (i.e., always use the freshest stats) instead of stable mode (i.e., use the second-freshest stats) for query planning `[0.0-1.0]`. [#167944](https://github.com/cockroachdb/cockroach/pull/167944) +- Added the sql.stats.canary_fraction cluster setting to enable canary table statistics. This setting controls the probability that table statistics will use canary mode (i.e., always use the freshest stats) instead of stable mode (i.e., use the second-freshest stats) for query planning `[0.0-1.0]`. -- Added the `canary_stats_mode` session variable. When `sql.stats.canary_fraction` is greater than `0`, `canary_stats_mode` controls which table statistics are used for query planning on the current session. Valid values are: `force_canary` (always uses the newest canary stats immediately when they are collected), `force_stable` (delays using new stats until they outlive the canary window), and `auto` (selects probabilistically based on the canary fraction). Has no effect when `sql.stats.canary_fraction` is `0`. [#167944](https://github.com/cockroachdb/cockroach/pull/167944) +- Added the `canary_stats_mode` session variable. When `sql.stats.canary_fraction` is greater than `0`, `canary_stats_mode` controls which table statistics are used for query planning on the current session. Valid values are: `force_canary` (always uses the newest canary stats immediately when they are collected), `force_stable` (delays using new stats until they outlive the canary window), and `auto` (selects probabilistically based on the canary fraction). Has no effect when `sql.stats.canary_fraction` is `0`. -- `EXPLAIN` and `EXPLAIN ANALYZE` now display a `table stats mode` field (`canary` or `stable`) when the sql.stats.canary_fraction cluster setting is greater than 0, indicating which table statistics were used for query planning. Scan nodes for tables with active canary stats also show the configured canary window duration. [#166129](https://github.com/cockroachdb/cockroach/pull/166129) +- `EXPLAIN` and `EXPLAIN ANALYZE` now display a `table stats mode` field (`canary` or `stable`) when the sql.stats.canary_fraction cluster setting is greater than 0, indicating which table statistics were used for query planning. Scan nodes for tables with active canary stats also show the configured canary window duration. -- The bulkio.import.row_count_validation.mode cluster setting controls whether row count validation runs after IMPORT operations. When enabled, a background `INSPECT` job validates that the imported row count matches expectations after an `IMPORT` completes. The `IMPORT` result includes an `inspect_job_id` column so the `INSPECT` job can be viewed separately. Valid values are `off` (default), `async`, and `sync`. [#168403](https://github.com/cockroachdb/cockroach/pull/168403) +- The bulkio.import.row_count_validation.mode cluster setting controls whether row count validation runs after IMPORT operations. When enabled, a background `INSPECT` job validates that the imported row count matches expectations after an `IMPORT` completes. The `IMPORT` result includes an `inspect_job_id` column so the `INSPECT` job can be viewed separately. Valid values are `off` (default), `async`, and `sync`. -- Added an index storage parameter `skip_unique_checks` that can be used to disable unique constraint checks for indexes with implicit partition columns, including indexes in `REGIONAL BY ROW` tables. This should **only** be used if the application can guarantee uniqueness, for example, by using external UUID values or relying on a `unique_rowid()` default value. Incorrectly applying this setting when uniqueness is not guaranteed by the application could result in logically duplicate keys in different partitions of a unique index. [#163378](https://github.com/cockroachdb/cockroach/pull/163378) +- Added an index storage parameter `skip_unique_checks` that can be used to disable unique constraint checks for indexes with implicit partition columns, including indexes in `REGIONAL BY ROW` tables. This should **only** be used if the application can guarantee uniqueness, for example, by using external UUID values or relying on a `unique_rowid()` default value. Incorrectly applying this setting when uniqueness is not guaranteed by the application could result in logically duplicate keys in different partitions of a unique index. -- During an `INSPECT` run, a new check validates unique column values in `REGIONAL BY ROW` tables. [#164449](https://github.com/cockroachdb/cockroach/pull/164449) +- During an `INSPECT` run, a new check validates unique column values in `REGIONAL BY ROW` tables. diff --git a/src/current/_includes/releases/v26.2/v26.2.0-alpha.1.md b/src/current/_includes/releases/v26.2/v26.2.0-alpha.1.md index 5b97c116714..0b2919ad1d1 100644 --- a/src/current/_includes/releases/v26.2/v26.2.0-alpha.1.md +++ b/src/current/_includes/releases/v26.2/v26.2.0-alpha.1.md @@ -6,326 +6,183 @@ Release Date: March 11, 2026

Backward-incompatible changes

-- Increased the default value of `sql.stats.automatic_full_concurrency_limit` (which controls the maximum number of concurrent full statistics collections) from `1` to number of vCPUs divided by 2 (e.g., 4 vCPU nodes will have the value of `2`). [#161806][#161806] -- The `TG_ARGV` trigger function parameter now uses 0-based indexing to match PostgreSQL behavior. Previously, `TG_ARGV[1]` returned the first argument; now `TG_ARGV[0]` returns the first argument and `TG_ARGV[1]` returns the second argument. Additionally, usage of `TG_ARGV` no longer requires setting the `allow_create_trigger_function_with_argv_references` session variable. [#161925][#161925] -- Lowered the default value of the `sql.guardrails.max_row_size_log` cluster setting from `64 MiB` to `16 MiB`, and the default value of `sql.guardrails.max_row_size_err` from `512 MiB` to `80 MiB`. These settings control the maximum size of a row (or column family) that SQL can write before logging a warning or returning an error, respectively. The previous defaults were high enough that large rows would hit other limits first (such as the Raft command size limit or the backup SST size limit), producing confusing errors. The new defaults align with existing system limits to provide clearer diagnostics. If your workload legitimately writes rows larger than these new defaults, you can restore the previous behavior by increasing these settings. [#164468][#164468] -- Changed the default value of the `sql.catalog.allow_leased_descriptors.enabled` cluster setting to `true`. This setting allows introspection tables like `information_schema` and `pg_catalog` to use cached descriptors when building the table results, which improves the performance of introspection queries when there are many tables in the cluster. [#159162][#159162] -- The `bulkio.import.elastic_control.enabled` cluster setting is now enabled by default, allowing import operations to integrate with elastic CPU control and automatically throttle based on available resources. [#163867][#163867] -- The `bulkio.ingest.sst_batcher_elastic_control.enabled` cluster setting is now enabled by default, allowing SST batcher operations to integrate with elastic CPU control and automatically throttle based on available resources. [#163868][#163868] -- The session variable `distsql_prevent_partitioning_soft_limited_scans` is now enabled by default. This prevents scans with soft limits from being planned as multiple TableReaders, which decreases the initial setup costs of some fully-distributed query plans. [#160051][#160051] -- Creating or altering a changefeed or Kafka/Pub/Sub external connection now returns an error when the `topic_name` query parameter is explicitly set to an empty string in the sink URI, rather than silently falling back to using the table name as the topic name. Existing changefeeds with an empty `topic_name` are not affected. [#164225][#164225] -- TTL jobs are now owned by the schedule owner instead of the `node` user. This allows users with `CONTROLJOB` privilege to cancel TTL jobs, provided the schedule owner is not an admin (`CONTROLJOB` does not grant control over admin-owned jobs). [#161226][#161226] -- Calling `information_schema.crdb_rewrite_inline_hints` now requires the `REPAIRCLUSTER` privilege. [#160716][#160716] -- The **Statement Details** page URL format has changed from `/statement/{implicitTxn}/{statementId}` to `/statement/{statementId}`. As a result, bookmarks using the old URL structure will no longer work. [#159558][#159558] -- Changed the unit of measurement for admission control duration metrics from microseconds to nanoseconds. The following metrics are affected: `admission.granter.slots_exhausted_duration.kv`, `admission.granter.cpu_load_short_period_duration.kv`, `admission.granter.cpu_load_long_period_duration.kv`, `admission.granter.io_tokens_exhausted_duration.kv`, `admission.granter.elastic_io_tokens_exhausted_duration.kv`, and `admission.elastic_cpu.nanos_exhausted_duration`. Note that dashboards displaying these metrics will show a discontinuity at upgrade time, with pre-upgrade values appearing much lower due to the unit change. [#160956][#160956] -- Renamed the builtin function `crdb_internal.inject_hint` (introduced in v26.1.0-alpha.2) to `information_schema.crdb_rewrite_inline_hints`. [#160716][#160716] -- Removed the `incremental_location` option from `BACKUP` and `CREATE SCHEDULE FOR BACKUP`. [#159189][#159189] -- Removed the `incremental_location` option from `SHOW BACKUP` and `RESTORE`. [#160416][#160416] +- Increased the default value of `sql.stats.automatic_full_concurrency_limit` (which controls the maximum number of concurrent full statistics collections) from `1` to number of vCPUs divided by 2 (e.g., 4 vCPU nodes will have the value of `2`). +- The `TG_ARGV` trigger function parameter now uses 0-based indexing to match PostgreSQL behavior. Previously, `TG_ARGV[1]` returned the first argument; now `TG_ARGV[0]` returns the first argument and `TG_ARGV[1]` returns the second argument. Additionally, usage of `TG_ARGV` no longer requires setting the `allow_create_trigger_function_with_argv_references` session variable. +- Lowered the default value of the `sql.guardrails.max_row_size_log` cluster setting from `64 MiB` to `16 MiB`, and the default value of `sql.guardrails.max_row_size_err` from `512 MiB` to `80 MiB`. These settings control the maximum size of a row (or column family) that SQL can write before logging a warning or returning an error, respectively. The previous defaults were high enough that large rows would hit other limits first (such as the Raft command size limit or the backup SST size limit), producing confusing errors. The new defaults align with existing system limits to provide clearer diagnostics. If your workload legitimately writes rows larger than these new defaults, you can restore the previous behavior by increasing these settings. +- Changed the default value of the `sql.catalog.allow_leased_descriptors.enabled` cluster setting to `true`. This setting allows introspection tables like `information_schema` and `pg_catalog` to use cached descriptors when building the table results, which improves the performance of introspection queries when there are many tables in the cluster. +- The `bulkio.import.elastic_control.enabled` cluster setting is now enabled by default, allowing import operations to integrate with elastic CPU control and automatically throttle based on available resources. +- The `bulkio.ingest.sst_batcher_elastic_control.enabled` cluster setting is now enabled by default, allowing SST batcher operations to integrate with elastic CPU control and automatically throttle based on available resources. +- The session variable `distsql_prevent_partitioning_soft_limited_scans` is now enabled by default. This prevents scans with soft limits from being planned as multiple TableReaders, which decreases the initial setup costs of some fully-distributed query plans. +- Creating or altering a changefeed or Kafka/Pub/Sub external connection now returns an error when the `topic_name` query parameter is explicitly set to an empty string in the sink URI, rather than silently falling back to using the table name as the topic name. Existing changefeeds with an empty `topic_name` are not affected. +- TTL jobs are now owned by the schedule owner instead of the `node` user. This allows users with `CONTROLJOB` privilege to cancel TTL jobs, provided the schedule owner is not an admin (`CONTROLJOB` does not grant control over admin-owned jobs). +- Calling `information_schema.crdb_rewrite_inline_hints` now requires the `REPAIRCLUSTER` privilege. +- The **Statement Details** page URL format has changed from `/statement/{implicitTxn}/{statementId}` to `/statement/{statementId}`. As a result, bookmarks using the old URL structure will no longer work. +- Changed the unit of measurement for admission control duration metrics from microseconds to nanoseconds. The following metrics are affected: `admission.granter.slots_exhausted_duration.kv`, `admission.granter.cpu_load_short_period_duration.kv`, `admission.granter.cpu_load_long_period_duration.kv`, `admission.granter.io_tokens_exhausted_duration.kv`, `admission.granter.elastic_io_tokens_exhausted_duration.kv`, and `admission.elastic_cpu.nanos_exhausted_duration`. Note that dashboards displaying these metrics will show a discontinuity at upgrade time, with pre-upgrade values appearing much lower due to the unit change. +- Renamed the builtin function `crdb_internal.inject_hint` (introduced in v26.1.0-alpha.2) to `information_schema.crdb_rewrite_inline_hints`. +- Removed the `incremental_location` option from `BACKUP` and `CREATE SCHEDULE FOR BACKUP`. +- Removed the `incremental_location` option from `SHOW BACKUP` and `RESTORE`.

Security updates

-- LDAP authentication for the DB Console now supports automatic user provisioning. When the cluster setting `security.provisioning.ldap.enabled` is set to true, users who authenticate successfully via LDAP will be automatically created in CockroachDB if they do not already exist. [#163199][#163199] +- LDAP authentication for the DB Console now supports automatic user provisioning. When the cluster setting `security.provisioning.ldap.enabled` is set to true, users who authenticate successfully via LDAP will be automatically created in CockroachDB if they do not already exist.

General changes

-- Changefeeds now support the `partition_alg` option for specifying a Kafka partitioning algorithm. Currently `fnv-1a` (default) and `murmur2` are supported. The option is only valid on Kafka v2 sinks. This is protected by the cluster setting `changefeed.partition_alg.enabled`. An example usage: `SET CLUSTER SETTING changefeed.partition_alg.enabled=true; CREATE CHANGEFEED ... INTO 'kafka://...' WITH partition_alg='murmur2';`. Note that if a changefeed is created using the `murmur2` algorithm, and then the cluster setting is disabled, the changefeed will continue using the `murmur2` algorithm unless the changefeed is altered to use a different `partition_alg`. [#161265][#161265] +- Changefeeds now support the `partition_alg` option for specifying a Kafka partitioning algorithm. Currently `fnv-1a` (default) and `murmur2` are supported. The option is only valid on Kafka v2 sinks. This is protected by the cluster setting `changefeed.partition_alg.enabled`. An example usage: `SET CLUSTER SETTING changefeed.partition_alg.enabled=true; CREATE CHANGEFEED ... INTO 'kafka://...' WITH partition_alg='murmur2';`. Note that if a changefeed is created using the `murmur2` algorithm, and then the cluster setting is disabled, the changefeed will continue using the `murmur2` algorithm unless the changefeed is altered to use a different `partition_alg`.

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

-- Added a new cluster setting, `security.provisioning.oidc.enabled`, to allow automatic provisioning of users when they log in for the first time via OIDC. When enabled, a new user will be created in CockroachDB upon their first successful OIDC authentication. This feature is disabled by default. [#159787][#159787] -- LDAP authentication for the DB Console now additionally supports role-based access control (RBAC) through LDAP group membership. To use this feature, an administrator must first create roles in CockroachDB with names that match the Common Names (CN) of their LDAP groups. These roles should then be granted the desired privileges for DB Console access. When a user who is a member of a corresponding LDAP group logs into the DB Console, they will be automatically granted the role and its associated privileges, creating consistent behavior with SQL client connections. [#162302][#162302] +- Added a new cluster setting, `security.provisioning.oidc.enabled`, to allow automatic provisioning of users when they log in for the first time via OIDC. When enabled, a new user will be created in CockroachDB upon their first successful OIDC authentication. This feature is disabled by default. +- LDAP authentication for the DB Console now additionally supports role-based access control (RBAC) through LDAP group membership. To use this feature, an administrator must first create roles in CockroachDB with names that match the Common Names (CN) of their LDAP groups. These roles should then be granted the desired privileges for DB Console access. When a user who is a member of a corresponding LDAP group logs into the DB Console, they will be automatically granted the role and its associated privileges, creating consistent behavior with SQL client connections.

SQL language changes

-- Added the `MAINTAIN` privilege, which can be granted on tables and materialized views. Users with the `MAINTAIN` privilege on a materialized view can execute `REFRESH MATERIALIZED VIEW` without being the owner. Users with the `MAINTAIN` privilege on a table can execute `ANALYZE` without needing `SELECT`. This aligns with PostgreSQL 17 behavior. [#164236][#164236] +- Added the `MAINTAIN` privilege, which can be granted on tables and materialized views. Users with the `MAINTAIN` privilege on a materialized view can execute `REFRESH MATERIALIZED VIEW` without being the owner. Users with the `MAINTAIN` privilege on a table can execute `ANALYZE` without needing `SELECT`. This aligns with PostgreSQL 17 behavior. - Added cluster settings to control the number of concurrent automatic statistics collection jobs: - `sql.stats.automatic_full_concurrency_limit` controls the maximum number of concurrent full statistics collections. The default is 1. - `sql.stats.automatic_extremes_concurrency_limit` controls the maximum number of concurrent partial statistics collections using extremes. The default is 128. - Note that at most one statistics collection job can run on a single table at a time. [#158835][#158835] -- Added a new cluster setting `bulkio.import.distributed_merge.mode` to enable distributed merge support for `IMPORT` operations. When enabled (default: false), `IMPORT` jobs will use a two-phase approach where import processors first write SST files to local storage, then a coordinator merges and ingests them. This can improve performance for large imports by reducing L0 file counts and enabling merge-time optimizations. This feature requires all nodes to be running v26.1 or later. [#159330][#159330] -- CockroachDB now supports the PostgreSQL session variables `tcp_keepalives_idle`, `tcp_keepalives_interval`, `tcp_keepalives_count`, and `tcp_user_timeout`. These allow per-session control over TCP keepalive behavior on each connection. A value of 0 (the default) uses the corresponding cluster setting. Non-zero values override the cluster setting for that session only. Units match PostgreSQL: seconds for keepalive settings, milliseconds for `tcp_user_timeout`. [#164369][#164369] -- Added the `optimizer_inline_any_unnest_subquery` session setting to enable/disable the optimizer rule `InlineAnyProjectSet`. The setting is on by default in v26.2 and later. [#161880][#161880] -- Users can now set the `use_backups_with_ids` session setting to enable a new `SHOW BACKUPS IN` experience. When enabled, `SHOW BACKUPS IN {collection}` displays all backups in the collection. Results can be filtered by backup end time using `OLDER THAN {timestamp}` or `NEWER THAN {timestamp}` clauses. Example usage: `SET use_backups_with_ids = true; SHOW BACKUPS IN '{collection}' OLDER THAN '2026-01-09 12:13:14' NEWER THAN '2026-01-04 15:16:17';` [#160137][#160137] -- If the new `SHOW BACKUP` experience is enabled by setting the `use_backups_with_ids` session variable to true, `SHOW BACKUP` will parse the IDs provided by `SHOW BACKUPS` and display contents for single backups. [#160812][#160812] -- If the new `RESTORE` experience is enabled by setting the `use_backups_with_ids` session variable to true, `RESTORE` will parse the IDs provided by `SHOW BACKUPS` and will restore the specified backup without the use of `AS OF SYSTEM TIME`. [#161294][#161294] -- `SHOW BACKUP` and `RESTORE` now allow backup IDs even if the `use_backups_with_ids` session variable is not set. Setting the variable only configures whether `LATEST` is resolved using the new or legacy path. [#162329][#162329] -- Added the `REVISION START TIME` option to the new `SHOW BACKUPS` experience enabled via the `use_backups_with_ids` session variable. Use the `REVISION START TIME` option to view the revision start times of revision history backups. [#161328][#161328] -- Added support for `SHOW STATEMENT HINTS`, which displays information about the statement hints (if any) associated with the given statement fingerprint string. The fingerprint is normalized in the same way as `EXPLAIN (FINGERPRINT)` before hints are matched. Example usage: `SHOW STATEMENT HINTS FOR ' SELECT * FROM xy WHERE x = 10 '` or `SHOW STATEMENT HINTS FOR $$ SELECT * FROM xy WHERE x = 10 $$ WITH DETAILS`. [#159231][#159231] -- `CREATE OR REPLACE TRIGGER` is now supported. If a trigger with the same name already exists on the same table, it is replaced with the new definition. If no trigger with that name exists, a new trigger is created. [#162633][#162633] -- Added support for `ALTER TABLE ENABLE TRIGGER` and `ALTER TABLE DISABLE TRIGGER` syntax. This allows users to temporarily disable triggers without dropping them, and later re-enable them. The syntax supports disabling/enabling individual triggers by name, or all triggers on a table using the `ALL` or `USER` keywords. [#161924][#161924] -- Updated `DROP TRIGGER` to accept the `CASCADE` option for PostgreSQL compatibility. Since triggers in CockroachDB cannot have dependents, `CASCADE` behaves the same as `RESTRICT` or omitting the option entirely. [#161915][#161915] -- `ALTER TABLE ... DROP CONSTRAINT` can now be used to drop `UNIQUE` constraints. The backing `UNIQUE` index will also be dropped, as CockroachDB treats the constraint and index as the same thing. [#162345][#162345] -- `DROP COLUMN` and `DROP INDEX` with `CASCADE` now properly drop dependent triggers. Previously, these operations would fail with an unimplemented error when a trigger depended on the column or index being dropped. [#163296][#163296] -- `CREATE OR REPLACE FUNCTION` now works on trigger functions that have active triggers. Previously, this was blocked with an unimplemented error, requiring users to drop and recreate triggers. The replacement now atomically updates all dependent triggers to execute the new function body. [#163348][#163348] -- Updated CockroachDB to allow a prefix of index key columns to be used for the shard column in a hash-sharded index. The `shard_columns` storage parameter may be used to override the default, which uses all index key columns in the shard column. [#161422][#161422] -- Added support for the `pg_trigger_depth()` builtin function, which returns the current nesting level of PostgreSQL triggers (0 if not called from inside a trigger). [#162286][#162286] -- A database-level changefeed with no tables will periodically poll to check for tables added to the database. The new option `hibernation_polling_frequency` sets the frequency at which the polling occurs, until a table is found, at which point polling ceases. [#156771][#156771] -- `INSPECT` is now a generally available (GA) feature. The `enable_inspect_command` session variable has been deprecated, and is now effectively always set to `true`. [#159659][#159659] -- Added the `STRICT` option for locality-aware backups. When enabled, backups fail if data from a KV node with one locality tag would be backed up to a bucket with a different locality tag, ensuring data domiciling compliance. [#158999][#158999] -- Added support for the `dmetaphone()`, `dmetaphone_alt()`, and `daitch_mokotoff()` built-in functions, completing CockroachDB's implementation of the PostgreSQL `fuzzystrmatch` extension. `dmetaphone` and `dmetaphone_alt` return Double Metaphone phonetic codes for a string, and `daitch_mokotoff` returns an array of Daitch-Mokotoff soundex codes. These functions are useful for fuzzy string matching based on phonetic similarity. [#163430][#163430] -- `crdb_internal.datums_to_bytes` is now available in the `information_schema` system catalog as `information_schema.crdb_datums_to_bytes`. [#156963][#156963] -- The `information_schema.crdb_datums_to_bytes` built-in function is now documented. [#160486][#160486] -- Row count validation after `IMPORT` is now enabled by default in async mode. After an `IMPORT` completes, a background `INSPECT` job validates that the imported row count matches expectations. The `IMPORT` result now includes an `inspect_job_id` column so the `INSPECT` job can be viewed separately. The `bulkio.import.row_count_validation.mode` cluster setting controls this behavior, with valid values of `off`, `async` (default), and `sync`. [#163543][#163543] -- Queries executed via the vectorized engine now display their progress in the `phase` column of `SHOW QUERIES`. Previously, this feature was only available in the row-by-row engine. [#158029][#158029] -- CockroachDB now shows execution statistics (like `execution time`) on `EXPLAIN ANALYZE` output for `render` nodes, which often handle built-in functions. [#161509][#161509] -- The output of `EXPLAIN [ANALYZE]` in non-`VERBOSE` mode is now more succinct. [#153361][#153361] + Note that at most one statistics collection job can run on a single table at a time. +- Added a new cluster setting `bulkio.import.distributed_merge.mode` to enable distributed merge support for `IMPORT` operations. When enabled (default: false), `IMPORT` jobs will use a two-phase approach where import processors first write SST files to local storage, then a coordinator merges and ingests them. This can improve performance for large imports by reducing L0 file counts and enabling merge-time optimizations. This feature requires all nodes to be running v26.1 or later. +- CockroachDB now supports the PostgreSQL session variables `tcp_keepalives_idle`, `tcp_keepalives_interval`, `tcp_keepalives_count`, and `tcp_user_timeout`. These allow per-session control over TCP keepalive behavior on each connection. A value of 0 (the default) uses the corresponding cluster setting. Non-zero values override the cluster setting for that session only. Units match PostgreSQL: seconds for keepalive settings, milliseconds for `tcp_user_timeout`. +- Added the `optimizer_inline_any_unnest_subquery` session setting to enable/disable the optimizer rule `InlineAnyProjectSet`. The setting is on by default in v26.2 and later. +- Users can now set the `use_backups_with_ids` session setting to enable a new `SHOW BACKUPS IN` experience. When enabled, `SHOW BACKUPS IN {collection}` displays all backups in the collection. Results can be filtered by backup end time using `OLDER THAN {timestamp}` or `NEWER THAN {timestamp}` clauses. Example usage: `SET use_backups_with_ids = true; SHOW BACKUPS IN '{collection}' OLDER THAN '2026-01-09 12:13:14' NEWER THAN '2026-01-04 15:16:17';` +- If the new `SHOW BACKUP` experience is enabled by setting the `use_backups_with_ids` session variable to true, `SHOW BACKUP` will parse the IDs provided by `SHOW BACKUPS` and display contents for single backups. +- If the new `RESTORE` experience is enabled by setting the `use_backups_with_ids` session variable to true, `RESTORE` will parse the IDs provided by `SHOW BACKUPS` and will restore the specified backup without the use of `AS OF SYSTEM TIME`. +- `SHOW BACKUP` and `RESTORE` now allow backup IDs even if the `use_backups_with_ids` session variable is not set. Setting the variable only configures whether `LATEST` is resolved using the new or legacy path. +- Added the `REVISION START TIME` option to the new `SHOW BACKUPS` experience enabled via the `use_backups_with_ids` session variable. Use the `REVISION START TIME` option to view the revision start times of revision history backups. +- Added support for `SHOW STATEMENT HINTS`, which displays information about the statement hints (if any) associated with the given statement fingerprint string. The fingerprint is normalized in the same way as `EXPLAIN (FINGERPRINT)` before hints are matched. Example usage: `SHOW STATEMENT HINTS FOR ' SELECT * FROM xy WHERE x = 10 '` or `SHOW STATEMENT HINTS FOR $$ SELECT * FROM xy WHERE x = 10 $$ WITH DETAILS`. +- `CREATE OR REPLACE TRIGGER` is now supported. If a trigger with the same name already exists on the same table, it is replaced with the new definition. If no trigger with that name exists, a new trigger is created. +- Added support for `ALTER TABLE ENABLE TRIGGER` and `ALTER TABLE DISABLE TRIGGER` syntax. This allows users to temporarily disable triggers without dropping them, and later re-enable them. The syntax supports disabling/enabling individual triggers by name, or all triggers on a table using the `ALL` or `USER` keywords. +- Updated `DROP TRIGGER` to accept the `CASCADE` option for PostgreSQL compatibility. Since triggers in CockroachDB cannot have dependents, `CASCADE` behaves the same as `RESTRICT` or omitting the option entirely. +- `ALTER TABLE ... DROP CONSTRAINT` can now be used to drop `UNIQUE` constraints. The backing `UNIQUE` index will also be dropped, as CockroachDB treats the constraint and index as the same thing. +- `DROP COLUMN` and `DROP INDEX` with `CASCADE` now properly drop dependent triggers. Previously, these operations would fail with an unimplemented error when a trigger depended on the column or index being dropped. +- `CREATE OR REPLACE FUNCTION` now works on trigger functions that have active triggers. Previously, this was blocked with an unimplemented error, requiring users to drop and recreate triggers. The replacement now atomically updates all dependent triggers to execute the new function body. +- Updated CockroachDB to allow a prefix of index key columns to be used for the shard column in a hash-sharded index. The `shard_columns` storage parameter may be used to override the default, which uses all index key columns in the shard column. +- Added support for the `pg_trigger_depth()` builtin function, which returns the current nesting level of PostgreSQL triggers (0 if not called from inside a trigger). +- A database-level changefeed with no tables will periodically poll to check for tables added to the database. The new option `hibernation_polling_frequency` sets the frequency at which the polling occurs, until a table is found, at which point polling ceases. +- `INSPECT` is now a generally available (GA) feature. The `enable_inspect_command` session variable has been deprecated, and is now effectively always set to `true`. +- Added the `STRICT` option for locality-aware backups. When enabled, backups fail if data from a KV node with one locality tag would be backed up to a bucket with a different locality tag, ensuring data domiciling compliance. +- Added support for the `dmetaphone()`, `dmetaphone_alt()`, and `daitch_mokotoff()` built-in functions, completing CockroachDB's implementation of the PostgreSQL `fuzzystrmatch` extension. `dmetaphone` and `dmetaphone_alt` return Double Metaphone phonetic codes for a string, and `daitch_mokotoff` returns an array of Daitch-Mokotoff soundex codes. These functions are useful for fuzzy string matching based on phonetic similarity. +- `crdb_internal.datums_to_bytes` is now available in the `information_schema` system catalog as `information_schema.crdb_datums_to_bytes`. +- The `information_schema.crdb_datums_to_bytes` built-in function is now documented. +- Row count validation after `IMPORT` is now enabled by default in async mode. After an `IMPORT` completes, a background `INSPECT` job validates that the imported row count matches expectations. The `IMPORT` result now includes an `inspect_job_id` column so the `INSPECT` job can be viewed separately. The `bulkio.import.row_count_validation.mode` cluster setting controls this behavior, with valid values of `off`, `async` (default), and `sync`. +- Queries executed via the vectorized engine now display their progress in the `phase` column of `SHOW QUERIES`. Previously, this feature was only available in the row-by-row engine. +- CockroachDB now shows execution statistics (like `execution time`) on `EXPLAIN ANALYZE` output for `render` nodes, which often handle built-in functions. +- The output of `EXPLAIN [ANALYZE]` in non-`VERBOSE` mode is now more succinct.

Operational changes

-- The new `cockroach gen dashboard` command generates standardized monitoring dashboards from an embedded configuration file. It outputs a dashboard JSON file for either Datadog (`--tool=datadog`) or Grafana (`--tool=grafana`), with Grafana dashboards using Prometheus queries. The generated dashboards include metrics across Overview, Hardware, Runtime, Networking, SQL, and Storage categories. Use `--output` to set the output file path and `--rollup-interval` to control metric aggregation. [#161050][#161050] -- Added the `server.sql_tcp_user.timeout` cluster setting, which specifies the maximum amount of time transmitted data can remain unacknowledged before the underlying TCP connection is forcefully closed. This setting is enabled by default with a value of 30 seconds and is supported on Linux and macOS (Darwin). [#164037][#164037] -- Introduced a new cluster setting `kvadmission.store.snapshot_ingest_bandwidth_control.min_rate.enabled`. When this setting is enabled and disk bandwidth-based admission control is active, snapshot ingestion will be admitted at a minimum rate. This prevents snapshot ingestion from being starved by other elastic work. [#159436][#159436] -- The `kv.range_split.load_sample_reset_duration` cluster setting now defaults to `30m`. This should improve load-based splitting in rare edge cases. [#159499][#159499] -- Added the `kv.protectedts.protect`, `kv.protectedts.release`, `kv.protectedts.update_timestamp`, `kv.protectedts.get_record`, and `kv.protectedts.mark_verified` metrics to track protected timestamp storage operations. These metrics help diagnose issues with excessive protected timestamp churn and operational errors. Each operation tracks both successful completions (`.success`) and failures (`.failed`, such as `ErrExists` or `ErrNotExists`). Operators can monitor these metrics to understand PTS system behavior and identify performance issues related to backups, changefeeds, and other features that use protected timestamps. [#160129][#160129] -- Added a new metric `sql.rls.policies_applied.count` that tracks the number of SQL statements where row-level security (RLS) policies were applied during query planning. [#164405][#164405] -- RPC connection metrics now include a `protocol` label. The following metrics are affected: `rpc.connection.avg_round_trip_latency`, `rpc.connection.failures`, `rpc.connection.healthy`, `rpc.connection.healthy_nanos`, `rpc.connection.heartbeats`, `rpc.connection.tcp_rtt`, `rpc.connection.tcp_rtt_var`, `rpc.connection.unhealthy`, `rpc.connection.unhealthy_nanos`, and `rpc.connection.inactive`. In v26.2, the label value is always `grpc`. For example: `rpc_connection_healthy{node_id="1",remote_node_id="0",remote_addr="localhost:26258",class="system",protocol="grpc"} 1` [#162528][#162528] -- External connections can now be used with online restore. [#159090][#159090] -- Changed goroutine profile dumps from human-readable `.txt.gz` files to binary proto `.pb.gz` files. This improves the performance of the goroutine dumper by eliminating brief in-process pauses that occurred when collecting goroutine stacks. [#160798][#160798] -- Added a new structured event of type `rewrite_inline_hints` that is emitted when an inline-hints rewrite rule is added using `information_schema.crdb_rewrite_inline_hints`. This event is written to both the event log and the `OPS` channel. [#160901][#160901] -- Added a new metric `sql.query.with_statement_hints.count` that is incremented whenever a statement is executed with one or more external statement hints applied. An example of an external statement hint is an inline-hints rewrite rule added by calling `information_schema.crdb_rewrite_inline_hints`. [#161043][#161043] -- Logical Data Replication (LDR) now supports hash-sharded indexes and secondary indexes with virtual computed columns. Previously, tables with these index types could not be replicated using LDR. [#161062][#161062] -- Backup schedules that utilize the `revision_history` option now apply that option only to incremental backups triggered by that schedule, rather than duplicating the revision history in the full backups as well. [#162105][#162105] -- The `build.timestamp` Prometheus metric now carries `major` and `minor` labels identifying the release series of the running CockroachDB binary (e.g., `major="26", minor="1"` for any v26.1.x build). [#163834][#163834] -- Jobs now clear their running status messages upon successful completion. [#163765][#163765] -- Changefeed ranges are now more accurately reported as lagging. [#163427][#163427] +- The new `cockroach gen dashboard` command generates standardized monitoring dashboards from an embedded configuration file. It outputs a dashboard JSON file for either Datadog (`--tool=datadog`) or Grafana (`--tool=grafana`), with Grafana dashboards using Prometheus queries. The generated dashboards include metrics across Overview, Hardware, Runtime, Networking, SQL, and Storage categories. Use `--output` to set the output file path and `--rollup-interval` to control metric aggregation. +- Added the `server.sql_tcp_user.timeout` cluster setting, which specifies the maximum amount of time transmitted data can remain unacknowledged before the underlying TCP connection is forcefully closed. This setting is enabled by default with a value of 30 seconds and is supported on Linux and macOS (Darwin). +- Introduced a new cluster setting `kvadmission.store.snapshot_ingest_bandwidth_control.min_rate.enabled`. When this setting is enabled and disk bandwidth-based admission control is active, snapshot ingestion will be admitted at a minimum rate. This prevents snapshot ingestion from being starved by other elastic work. +- The `kv.range_split.load_sample_reset_duration` cluster setting now defaults to `30m`. This should improve load-based splitting in rare edge cases. +- Added the `kv.protectedts.protect`, `kv.protectedts.release`, `kv.protectedts.update_timestamp`, `kv.protectedts.get_record`, and `kv.protectedts.mark_verified` metrics to track protected timestamp storage operations. These metrics help diagnose issues with excessive protected timestamp churn and operational errors. Each operation tracks both successful completions (`.success`) and failures (`.failed`, such as `ErrExists` or `ErrNotExists`). Operators can monitor these metrics to understand PTS system behavior and identify performance issues related to backups, changefeeds, and other features that use protected timestamps. +- Added a new metric `sql.rls.policies_applied.count` that tracks the number of SQL statements where row-level security (RLS) policies were applied during query planning. +- RPC connection metrics now include a `protocol` label. The following metrics are affected: `rpc.connection.avg_round_trip_latency`, `rpc.connection.failures`, `rpc.connection.healthy`, `rpc.connection.healthy_nanos`, `rpc.connection.heartbeats`, `rpc.connection.tcp_rtt`, `rpc.connection.tcp_rtt_var`, `rpc.connection.unhealthy`, `rpc.connection.unhealthy_nanos`, and `rpc.connection.inactive`. In v26.2, the label value is always `grpc`. For example: `rpc_connection_healthy{node_id="1",remote_node_id="0",remote_addr="localhost:26258",class="system",protocol="grpc"} 1` +- External connections can now be used with online restore. +- Changed goroutine profile dumps from human-readable `.txt.gz` files to binary proto `.pb.gz` files. This improves the performance of the goroutine dumper by eliminating brief in-process pauses that occurred when collecting goroutine stacks. +- Added a new structured event of type `rewrite_inline_hints` that is emitted when an inline-hints rewrite rule is added using `information_schema.crdb_rewrite_inline_hints`. This event is written to both the event log and the `OPS` channel. +- Added a new metric `sql.query.with_statement_hints.count` that is incremented whenever a statement is executed with one or more external statement hints applied. An example of an external statement hint is an inline-hints rewrite rule added by calling `information_schema.crdb_rewrite_inline_hints`. +- Logical Data Replication (LDR) now supports hash-sharded indexes and secondary indexes with virtual computed columns. Previously, tables with these index types could not be replicated using LDR. +- Backup schedules that utilize the `revision_history` option now apply that option only to incremental backups triggered by that schedule, rather than duplicating the revision history in the full backups as well. +- The `build.timestamp` Prometheus metric now carries `major` and `minor` labels identifying the release series of the running CockroachDB binary (e.g., `major="26", minor="1"` for any v26.1.x build). +- Jobs now clear their running status messages upon successful completion. +- Changefeed ranges are now more accurately reported as lagging.

Command-line changes

-- The `cockroach debug tsdump` command now defaults to `--format=raw` instead of `--format=text`. The `raw` (gob) format is optimized for Datadog ingestion. A new `--output` flag lets you write output directly to a file, avoiding potential file corruption that can occur with shell redirection. If `--output` is not specified, output is written to `stdout`. [#160538][#160538] -- The `cockroach debug tsdump` command now supports ZSTD encoding via `--format=raw --encoding=zstd`. This generates compressed tsdump files that are approximately 85% smaller than raw format. The `tsdump upload` command automatically detects and decompresses ZSTD files, allowing direct upload without manual decompression. [#161998][#161998] -- The `cockroach debug zip` command's `--include-files` and `--exclude-files` flags now support full zip path patterns. Patterns containing `/` are matched against the full path within the zip archive (e.g., `--include-files='debug/nodes/1/*.json'`). Patterns without `/` continue to match the base file name as before. [#163266][#163266] -- Added a `--list-dbs` flag to `workload init workload_generator` that lists all user databases found in debug logs without initializing tables. This helps users discover which databases are available in the debug zip before running the full init command. [#163930][#163930] +- The `cockroach debug tsdump` command now defaults to `--format=raw` instead of `--format=text`. The `raw` (gob) format is optimized for Datadog ingestion. A new `--output` flag lets you write output directly to a file, avoiding potential file corruption that can occur with shell redirection. If `--output` is not specified, output is written to `stdout`. +- The `cockroach debug tsdump` command now supports ZSTD encoding via `--format=raw --encoding=zstd`. This generates compressed tsdump files that are approximately 85% smaller than raw format. The `tsdump upload` command automatically detects and decompresses ZSTD files, allowing direct upload without manual decompression. +- The `cockroach debug zip` command's `--include-files` and `--exclude-files` flags now support full zip path patterns. Patterns containing `/` are matched against the full path within the zip archive (e.g., `--include-files='debug/nodes/1/*.json'`). Patterns without `/` continue to match the base file name as before. +- Added a `--list-dbs` flag to `workload init workload_generator` that lists all user databases found in debug logs without initializing tables. This helps users discover which databases are available in the debug zip before running the full init command.

DB Console changes

-- Added a new time-series bar graph called **Plan Distribution Over Time** to the **Statement Fingerprint** page, on the **Explain Plans** tab. It shows which execution plans were used in each time interval, helping detect shifts in query plan distributions. [#161011][#161011] -- The **SQL Activity** > **Sessions** page now defaults the **Session Status** filter to **Active, Idle** to exclude closed sessions. [#160576][#160576] +- Added a new time-series bar graph called **Plan Distribution Over Time** to the **Statement Fingerprint** page, on the **Explain Plans** tab. It shows which execution plans were used in each time interval, helping detect shifts in query plan distributions. +- The **SQL Activity** > **Sessions** page now defaults the **Session Status** filter to **Active, Idle** to exclude closed sessions.

Bug fixes

-- The fix for `node descriptor not found` errors for changefeeds with `execution_locality` filters in CockroachDB Basic and Standard clusters is now controlled by cluster setting `sql.instance_info.use_instance_resolver.enabled` (default: `true`). [#163947][#163947] -- 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] -- Fixed a bug where creating a routine could create unnecessary column dependencies when the routine references columns through CHECK constraints (including those for RLS policies and hash-sharded indexes) or partial index predicates. These unnecessary dependencies prevented dropping the column without first dropping the routine. The fix is gated behind the session setting `use_improved_routine_deps_triggers_and_computed_cols`, which is off by default prior to v26.1. [#159126][#159126] -- 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] -- CockroachDB could previously encounter internal errors like `column statistics cannot be determined for empty column set` and `invalid union` in some edge cases with `UNION`, `EXCEPT`, and `INTERCEPT`. This has now been fixed. [#150706][#150706] -- Fixed a bug that could cause a scan over a secondary index to read significantly more KVs than necessary in order to satisfy a limit when the scanned index had more than one column family. [#156672][#156672] -- Fixed an issue where long-running transactions with many statements could cause unbounded memory growth in the SQL statistics subsystem. When a transaction includes a large number of statements, the SQL statistics ingester now automatically flushes buffered statistics before the transaction commits. As a side effect, the flushed statement statistics might not have an associated transaction fingerprint ID because the transaction has not yet completed. In such cases, the transaction fingerprint ID cannot be backfilled after the fact. [#158527][#158527] -- Fixed a bug that allowed columns to be dropped despite being referenced by a routine. This could occur when a column was only referenced as a target column in the `SET` clause of an `UPDATE` statement within the routine. This fix only applies to newly-created routines. In versions prior to v26.1, the fix must be enabled by setting the session variable `prevent_update_set_column_drop`. [#158935][#158935] -- Fixed a bug that caused newly-created routines to incorrectly prevent dropping columns that were not directly referenced, most notably columns referenced by computed column expressions. The fix is gated behind the session setting `use_improved_routine_deps_triggers_and_computed_cols`, which is off by default prior to v26.1. [#158935][#158935] -- Fixed a bug where schema changes could fail after a `RESTORE` due to missing session data. [#159176][#159176] -- The `ascii` built-in function now returns `0` when the input is the empty string instead of an error. [#159178][#159178] -- Fixed a bug where comments associated with constraints were left behind after the column and constraint were dropped. [#159180][#159180] -- Fixed a bug which could cause prepared statements to fail with the error message `non-const expression` when they contained filters with stable functions. This bug has been present since 25.4.0. [#159201][#159201] -- Fixed a bug in the TPC-C workload where long-duration runs (>= 4 days or indefinite) would experience periodic performance degradation every 24 hours due to excessive concurrent `UPDATE` statements resetting warehouse and district year-to-date values. [#159286][#159286] -- Fixed a race condition where queries run after revoking `BYPASSRLS` could return wrong results because cached plans failed to notice the change immediately. [#159354][#159354] -- Fixed a bug where `TRUNCATE` did not behave correctly with respect to the `schema_locked` storage parameter, and was not being blocked when Logical Data Replication (LDR) was in use. This behavior was incorrect and has been fixed. [#159378][#159378] -- Fixed a race condition that could occur during context cancellation of an incoming snapshot. [#159403][#159403] -- Fixed a bug that could cause a panic during changefeed startup if an error occurred while initializing the metrics controller. [#159431][#159431] -- Fixed a memory accounting issue that could occur when a lease expired due to a SQL liveness session-based timeout. [#159527][#159527] -- Fixed a bug that caused `SHOW CREATE FUNCTION` to error when the function body contained casts from columns to user-defined types. [#159642][#159642] -- Fixed a bug where a query predicate could be ignored when all of the following conditions were met: the query used a lookup join to an index, the predicate constrained a column to multiple values (e.g., `column IN (1, 2)`), and the constrained column followed one or more columns with optional multi-value constraints in the index. This bug was introduced in v24.3.0. [#159722][#159722] -- Fixed a bug where rolling back a transaction that had just rolled back a savepoint would block other transactions accessing the same rows for five seconds. [#160346][#160346] -- Fixed a deadlock that could occur when a statistics creation task panicked. [#160348][#160348] -- Fixed a bug where CockroachDB could crash when handling decimals with negative scales via the extended PGWire protocol. An error is now returned instead, matching PostgreSQL behavior. [#160499][#160499] -- Fixed a bug where the `pprof` UI endpoints for allocs, heap, block, and mutex profiles ignored the seconds parameter and returned immediate snapshots instead of delta profiles. [#160608][#160608] -- Previously, v26.1.0-beta.1 and v26.1.0-beta.2 could encounter a rare process crash when running TTL jobs. This has been fixed. [#160674][#160674] -- Fixed a bug where schema changes adding a `NOT NULL` constraint could enter an infinite retry loop if a row violated the constraint and contained certain content (e.g., `"EOF"`). Such errors are now correctly classified and don't cause retries. [#160780][#160780] -- An error will now be reported when the database provided as the argument to a `SHOW REGIONS` or `SHOW SUPER REGIONS` statement does not exist. This bug had been present since version v21.1. [#161014][#161014] -- Fixed a bug where `CREATE INDEX` on a table with `PARTITION ALL BY` would fail if the partition columns were explicitly included in the primary key definition. [#161083][#161083] -- Fixed a bug in which inline-hints rewrite rules created with `information_schema.crdb_rewrite_inline_hints` were not correctly applied to statements run with `EXPLAIN ANALYZE`. This bug was introduced in v26.1.0-alpha.2. [#161273][#161273] -- Fixed a bug where AVRO file imports of data with JSON or binary records could hang indefinitely when encountering stream errors from cloud storage (such as `HTTP/2` `CANCEL` errors). Import jobs will now properly fail with an error instead of hanging. [#161290][#161290] -- Fixed a bug where IMPORT with AVRO data using OCF format could silently lose data if the underlying storage (e.g., S3) returned an error during read. Such errors are now properly reported. Other formats (specified via `data_as_binary_records` and `data_as_json_records` options) are unaffected. The bug has been present since about v20.1. [#161318][#161318] -- Fixed a bug that prevented successfully injecting hints using `information_schema.crdb_rewrite_inline_hints` for `INSERT`, `UPSERT`, `UPDATE`, and `DELETE` statements. This bug had existed since hint injection was introduced in v26.1.0-alpha.2. [#161773][#161773] -- Fixed prepared statements failing with `version mismatch` errors when user-defined types are modified between preparation and execution. Prepared statements now automatically detect UDT changes and re-parse to use current type definitions. [#161827][#161827] -- Previously, CockroachDB could hit an internal error when evaluating built-in functions with `'{}'` as an argument (without explicit type casts, such as on a query like `SELECT cardinality('{}');`). This is now fixed and a regular error is returned instead (matching PostgreSQL behavior). [#161835][#161835] -- Fixed a bug where the index definition shown in `pg_indexes` for hash sharded indexes with `STORING` columns was not valid SQL. The `STORING` clause now appears in the correct position. [#161882][#161882] -- Fixed a bug where `DROP TABLE ... CASCADE` would incorrectly drop tables that had triggers or row-level security (RLS) policies referencing the dropped table. Now only the triggers/policies are dropped, and the tables owning them remain intact. [#161914][#161914] -- Reduced contention when dropping descriptors or running concurrent imports. [#161941][#161941] -- Fixed a bug where multi-statement explicit transactions using `SAVEPOINT` to recover from certain errors (like duplicate key-value violations) could lose writes performed before the savepoint was created, in rare cases when buffered writes were enabled (off by default). This bug was introduced in v25.2. [#161972][#161972] -- Fixed a bug introduced in v26.1.0-beta.1 in which row-level TTL jobs could encounter GC threshold errors if each node had a large number of spans to process. [#161979][#161979] -- Fixed an error that occurred when using generic query plans that generates a lookup join on indexes containing identity computed columns. [#162036][#162036] -- Fixed a bug that could cause changefeeds using Kafka v1 sinks to hang when the changefeed was cancelled. [#162058][#162058] -- Fixed an internal error `could not find format code for column N` that occurred when executing `EXPLAIN ANALYZE EXECUTE` statements via JDBC or other clients using the PostgreSQL binary protocol. [#162115][#162115] -- Fixed a bug where statement bundles were missing `CREATE TYPE` statements for user-defined types used as array column types. [#162357][#162357] -- Fixed a bug in which PL/pgSQL UDFs with many `IF` statements would cause a timeout and/or OOM when executed from a prepared statement. This bug was introduced in v23.2.22, v24.1.15, v24.3.9, v25.1.2, and v25.2.0. [#162512][#162512] -- Fixed a bug where an error would occur when defining a foreign key on a hash-sharded primary key without explicitly providing the primary key columns. [#162608][#162608] -- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using `json` or `json-compact` formatting. This bug was introduced in v24.1. [#163224][#163224] -- Fixed a bug that prevented the `optimizer_min_row_count` setting from applying to anti-join expressions, which could lead to bad query plans. The fix is gated behind `optimizer_use_min_row_count_anti_join_fix`, which is on by default on v26.2 and later, and off by default in earlier versions. [#163244][#163244] -- Fixed an optimizer limitation that prevented index usage on computed columns when querying through views or subqueries containing JSON fetch expressions (such as `->`, `->>`, `#>`, or `#>>`). Queries that project JSON expressions matching indexed computed column definitions now correctly use indexes instead of performing full table scans, significantly improving performance for JSON workloads. [#163395][#163395] +- The fix for `node descriptor not found` errors for changefeeds with `execution_locality` filters in CockroachDB Basic and Standard clusters is now controlled by cluster setting `sql.instance_info.use_instance_resolver.enabled` (default: `true`). +- 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`. +- Fixed a bug where creating a routine could create unnecessary column dependencies when the routine references columns through CHECK constraints (including those for RLS policies and hash-sharded indexes) or partial index predicates. These unnecessary dependencies prevented dropping the column without first dropping the routine. The fix is gated behind the session setting `use_improved_routine_deps_triggers_and_computed_cols`, which is off by default prior to v26.1. +- 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`. +- CockroachDB could previously encounter internal errors like `column statistics cannot be determined for empty column set` and `invalid union` in some edge cases with `UNION`, `EXCEPT`, and `INTERCEPT`. This has now been fixed. +- Fixed a bug that could cause a scan over a secondary index to read significantly more KVs than necessary in order to satisfy a limit when the scanned index had more than one column family. +- Fixed an issue where long-running transactions with many statements could cause unbounded memory growth in the SQL statistics subsystem. When a transaction includes a large number of statements, the SQL statistics ingester now automatically flushes buffered statistics before the transaction commits. As a side effect, the flushed statement statistics might not have an associated transaction fingerprint ID because the transaction has not yet completed. In such cases, the transaction fingerprint ID cannot be backfilled after the fact. +- Fixed a bug that allowed columns to be dropped despite being referenced by a routine. This could occur when a column was only referenced as a target column in the `SET` clause of an `UPDATE` statement within the routine. This fix only applies to newly-created routines. In versions prior to v26.1, the fix must be enabled by setting the session variable `prevent_update_set_column_drop`. +- Fixed a bug that caused newly-created routines to incorrectly prevent dropping columns that were not directly referenced, most notably columns referenced by computed column expressions. The fix is gated behind the session setting `use_improved_routine_deps_triggers_and_computed_cols`, which is off by default prior to v26.1. +- Fixed a bug where schema changes could fail after a `RESTORE` due to missing session data. +- The `ascii` built-in function now returns `0` when the input is the empty string instead of an error. +- Fixed a bug where comments associated with constraints were left behind after the column and constraint were dropped. +- Fixed a bug which could cause prepared statements to fail with the error message `non-const expression` when they contained filters with stable functions. This bug has been present since 25.4.0. +- Fixed a bug in the TPC-C workload where long-duration runs (>= 4 days or indefinite) would experience periodic performance degradation every 24 hours due to excessive concurrent `UPDATE` statements resetting warehouse and district year-to-date values. +- Fixed a race condition where queries run after revoking `BYPASSRLS` could return wrong results because cached plans failed to notice the change immediately. +- Fixed a bug where `TRUNCATE` did not behave correctly with respect to the `schema_locked` storage parameter, and was not being blocked when Logical Data Replication (LDR) was in use. This behavior was incorrect and has been fixed. +- Fixed a race condition that could occur during context cancellation of an incoming snapshot. +- Fixed a bug that could cause a panic during changefeed startup if an error occurred while initializing the metrics controller. +- Fixed a memory accounting issue that could occur when a lease expired due to a SQL liveness session-based timeout. +- Fixed a bug that caused `SHOW CREATE FUNCTION` to error when the function body contained casts from columns to user-defined types. +- Fixed a bug where a query predicate could be ignored when all of the following conditions were met: the query used a lookup join to an index, the predicate constrained a column to multiple values (e.g., `column IN (1, 2)`), and the constrained column followed one or more columns with optional multi-value constraints in the index. This bug was introduced in v24.3.0. +- Fixed a bug where rolling back a transaction that had just rolled back a savepoint would block other transactions accessing the same rows for five seconds. +- Fixed a deadlock that could occur when a statistics creation task panicked. +- Fixed a bug where CockroachDB could crash when handling decimals with negative scales via the extended PGWire protocol. An error is now returned instead, matching PostgreSQL behavior. +- Fixed a bug where the `pprof` UI endpoints for allocs, heap, block, and mutex profiles ignored the seconds parameter and returned immediate snapshots instead of delta profiles. +- Previously, v26.1.0-beta.1 and v26.1.0-beta.2 could encounter a rare process crash when running TTL jobs. This has been fixed. +- Fixed a bug where schema changes adding a `NOT NULL` constraint could enter an infinite retry loop if a row violated the constraint and contained certain content (e.g., `"EOF"`). Such errors are now correctly classified and don't cause retries. +- An error will now be reported when the database provided as the argument to a `SHOW REGIONS` or `SHOW SUPER REGIONS` statement does not exist. This bug had been present since version v21.1. +- Fixed a bug where `CREATE INDEX` on a table with `PARTITION ALL BY` would fail if the partition columns were explicitly included in the primary key definition. +- Fixed a bug in which inline-hints rewrite rules created with `information_schema.crdb_rewrite_inline_hints` were not correctly applied to statements run with `EXPLAIN ANALYZE`. This bug was introduced in v26.1.0-alpha.2. +- Fixed a bug where AVRO file imports of data with JSON or binary records could hang indefinitely when encountering stream errors from cloud storage (such as `HTTP/2` `CANCEL` errors). Import jobs will now properly fail with an error instead of hanging. +- Fixed a bug where IMPORT with AVRO data using OCF format could silently lose data if the underlying storage (e.g., S3) returned an error during read. Such errors are now properly reported. Other formats (specified via `data_as_binary_records` and `data_as_json_records` options) are unaffected. The bug has been present since about v20.1. +- Fixed a bug that prevented successfully injecting hints using `information_schema.crdb_rewrite_inline_hints` for `INSERT`, `UPSERT`, `UPDATE`, and `DELETE` statements. This bug had existed since hint injection was introduced in v26.1.0-alpha.2. +- Fixed prepared statements failing with `version mismatch` errors when user-defined types are modified between preparation and execution. Prepared statements now automatically detect UDT changes and re-parse to use current type definitions. +- Previously, CockroachDB could hit an internal error when evaluating built-in functions with `'{}'` as an argument (without explicit type casts, such as on a query like `SELECT cardinality('{}');`). This is now fixed and a regular error is returned instead (matching PostgreSQL behavior). +- Fixed a bug where the index definition shown in `pg_indexes` for hash sharded indexes with `STORING` columns was not valid SQL. The `STORING` clause now appears in the correct position. +- Fixed a bug where `DROP TABLE ... CASCADE` would incorrectly drop tables that had triggers or row-level security (RLS) policies referencing the dropped table. Now only the triggers/policies are dropped, and the tables owning them remain intact. +- Reduced contention when dropping descriptors or running concurrent imports. +- Fixed a bug where multi-statement explicit transactions using `SAVEPOINT` to recover from certain errors (like duplicate key-value violations) could lose writes performed before the savepoint was created, in rare cases when buffered writes were enabled (off by default). This bug was introduced in v25.2. +- Fixed a bug introduced in v26.1.0-beta.1 in which row-level TTL jobs could encounter GC threshold errors if each node had a large number of spans to process. +- Fixed an error that occurred when using generic query plans that generates a lookup join on indexes containing identity computed columns. +- Fixed a bug that could cause changefeeds using Kafka v1 sinks to hang when the changefeed was cancelled. +- Fixed an internal error `could not find format code for column N` that occurred when executing `EXPLAIN ANALYZE EXECUTE` statements via JDBC or other clients using the PostgreSQL binary protocol. +- Fixed a bug where statement bundles were missing `CREATE TYPE` statements for user-defined types used as array column types. +- Fixed a bug in which PL/pgSQL UDFs with many `IF` statements would cause a timeout and/or OOM when executed from a prepared statement. This bug was introduced in v23.2.22, v24.1.15, v24.3.9, v25.1.2, and v25.2.0. +- Fixed a bug where an error would occur when defining a foreign key on a hash-sharded primary key without explicitly providing the primary key columns. +- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using `json` or `json-compact` formatting. This bug was introduced in v24.1. +- Fixed a bug that prevented the `optimizer_min_row_count` setting from applying to anti-join expressions, which could lead to bad query plans. The fix is gated behind `optimizer_use_min_row_count_anti_join_fix`, which is on by default on v26.2 and later, and off by default in earlier versions. +- Fixed an optimizer limitation that prevented index usage on computed columns when querying through views or subqueries containing JSON fetch expressions (such as `->`, `->>`, `#>`, or `#>>`). Queries that project JSON expressions matching indexed computed column definitions now correctly use indexes instead of performing full table scans, significantly improving performance for JSON workloads. - Fixed a bug that could cause incorrect results for any of the following types of statements: - Prepared statements with `LIMIT` expressions where the limit is a placeholder and the given placeholder value is negative. This could result in a successful query when the correct result is an error. - Prepared statements with `OFFSET` expressions where the limit is a placeholder. In some cases this could produce incorrect results. - - Statements within a UDF or stored procedure similar to (1) and (2) where the limit/offset is a reference to an argument of the UDF/SP. [#163500][#163500] -- Dropping a region from the system database no longer leaves `REGIONAL BY TABLE` system tables referencing the removed region, preventing descriptor validation errors. [#163503][#163503] -- Fixed an issue where changefeeds with `execution_locality` filters could fail in multi-tenant clusters with `node descriptor not found` errors. [#163507][#163507] -- Fixed a bug where `EXPLAIN ANALYZE (DEBUG)` statement bundles did not include triggers, their functions, or tables modified by those triggers. The bundle's `schema.sql` file now contains the `CREATE TRIGGER`, `CREATE FUNCTION`, and `CREATE TABLE` statements needed to fully reproduce the query environment when triggers are involved. [#163584][#163584] -- Fixed a rare data race during parallel constraint checks where a fresh descriptor collection could resolve a stale enum type version. This bug was introduced in v26.1.0. [#163883][#163883] -- Fixed a bug where running **changefeeds** with `envelope=enriched` and `enriched_properties` containing `source` would cause failures during a **cluster upgrade**. [#163885][#163885] -- Fixed a bug where dropped columns appeared in `pg_catalog.pg_attribute` with the `atttypid` column equal to 2283 (`anyelement`). Now this column will be 0 for dropped columns. This matches PostgreSQL behavior, where `atttypid=0` is used for dropped columns. [#163950][#163950] -- Fixed a race condition/conflict between concurrent `ALTER FUNCTION ... SET SCHEMA` and `DROP SCHEMA` operations. [#164043][#164043] -- Fixed a bug where super region zone configurations did not constrain all replicas to regions within the super region. [#164285][#164285] -- Fixed a bug where CockroachDB returned "cached plan must not change result type" errors during the `Execute` phase instead of the `Bind` phase of the extended pgwire protocol. This caused compatibility issues with drivers like pgx that expect the error before `BindComplete` is sent, particularly when using batch operations with prepared statements after schema changes. [#164406][#164406] -- Statistics histogram collection is now skipped for JSON columns referenced in partial index predicates, except when `sql.stats.non_indexed_json_histograms.enabled` is true (default: false). [#164477][#164477] -- Fixed a bug where import rollback could incorrectly revert data in a table that was already online. This could only occur if an import job was cancelled or failed after the import had already succeeded and the table was made available for use. [#159627][#159627] -- Invalid `avro_schema_prefix` is now caught during statement time. The prefix must start with `[A-Za-z_]` and subsequently contain only `[A-Za-z0-9_]`, as specified in the [Avro specification](https://avro.apache.org/docs/1.8.1/spec.html). [#159869][#159869] + - Statements within a UDF or stored procedure similar to (1) and (2) where the limit/offset is a reference to an argument of the UDF/SP. +- Dropping a region from the system database no longer leaves `REGIONAL BY TABLE` system tables referencing the removed region, preventing descriptor validation errors. +- Fixed an issue where changefeeds with `execution_locality` filters could fail in multi-tenant clusters with `node descriptor not found` errors. +- Fixed a bug where `EXPLAIN ANALYZE (DEBUG)` statement bundles did not include triggers, their functions, or tables modified by those triggers. The bundle's `schema.sql` file now contains the `CREATE TRIGGER`, `CREATE FUNCTION`, and `CREATE TABLE` statements needed to fully reproduce the query environment when triggers are involved. +- Fixed a rare data race during parallel constraint checks where a fresh descriptor collection could resolve a stale enum type version. This bug was introduced in v26.1.0. +- Fixed a bug where running **changefeeds** with `envelope=enriched` and `enriched_properties` containing `source` would cause failures during a **cluster upgrade**. +- Fixed a bug where dropped columns appeared in `pg_catalog.pg_attribute` with the `atttypid` column equal to 2283 (`anyelement`). Now this column will be 0 for dropped columns. This matches PostgreSQL behavior, where `atttypid=0` is used for dropped columns. +- Fixed a race condition/conflict between concurrent `ALTER FUNCTION ... SET SCHEMA` and `DROP SCHEMA` operations. +- Fixed a bug where super region zone configurations did not constrain all replicas to regions within the super region. +- Fixed a bug where CockroachDB returned "cached plan must not change result type" errors during the `Execute` phase instead of the `Bind` phase of the extended pgwire protocol. This caused compatibility issues with drivers like pgx that expect the error before `BindComplete` is sent, particularly when using batch operations with prepared statements after schema changes. +- Statistics histogram collection is now skipped for JSON columns referenced in partial index predicates, except when `sql.stats.non_indexed_json_histograms.enabled` is true (default: false). +- Fixed a bug where import rollback could incorrectly revert data in a table that was already online. This could only occur if an import job was cancelled or failed after the import had already succeeded and the table was made available for use. +- Invalid `avro_schema_prefix` is now caught during statement time. The prefix must start with `[A-Za-z_]` and subsequently contain only `[A-Za-z0-9_]`, as specified in the [Avro specification](https://avro.apache.org/docs/1.8.1/spec.html).

Performance improvements

-- Added a new session variable, `distsql_prevent_partitioning_soft_limited_scans`, which, when true, prevents scans with soft limits from being planned as multiple TableReaders by the physical planner. This should decrease the initial setup costs of some fully-distributed query plans. [#160051][#160051] -- Database- and table-level backups no longer fetch all object descriptors from disk in order to resolve the backup targets. Now only the objects that are referenced by the targeted objects will be fetched. This improves performance when there are many tables in the cluster. [#157790][#157790] -- Various background tasks and jobs now more actively yield to foreground work when that work is waiting to run. [#159205][#159205] -- Improved changefeed performance when filtering unwatched column families and offline tables by replacing expensive error chain traversal with direct status enum comparisons. [#159745][#159745] -- Fixed a performance regression in `pg_catalog.pg_roles` and `pg_catalog.pg_authid` by avoiding privilege lookups for each row in the table. [#160121][#160121] -- Queries that have comparison expressions with the `levenshtein` built-in are now up to 30% faster. [#160394][#160394] -- The optimizer now better optimizes query plans of statements within UDFs and stored procedures that have `IN` subqueries. [#160503][#160503] -- Significantly reduced WAL write latency when using encryption at rest by properly recycling WAL files instead of deleting and recreating them. [#160784][#160784] -- Optimized the logic that applies zone config constraints so it no longer fetches all descriptors in the cluster during background constraint reconciliation. [#160966][#160966] -- The optimizer can now better handle filters that redundantly `unnest()` an array placeholder argument within an `IN` or `ANY` filter. Previously, this pattern could prevent the filters from being used to constrain a table scan. Example: `SELECT k FROM a WHERE k = ANY(SELECT * FROM unnest($1:::INT[]))` [#161816][#161816] -- Improved changefeed checkpointing performance when changefeeds are lagging. Previously, checkpoint updates could be redundantly applied multiple times per checkpoint operation. [#162546][#162546] -- The query optimizer now eliminates redundant filter and projection operators over inputs with zero cardinality, even when the filter or projection expressions are not leakproof. This produces simpler, more efficient query plans in cases where joins or other operations fold to zero rows. [#164212][#164212] - -[#161806]: https://github.com/cockroachdb/cockroach/pull/161806 -[#164236]: https://github.com/cockroachdb/cockroach/pull/164236 -[#158527]: https://github.com/cockroachdb/cockroach/pull/158527 -[#159176]: https://github.com/cockroachdb/cockroach/pull/159176 -[#159205]: https://github.com/cockroachdb/cockroach/pull/159205 -[#163296]: https://github.com/cockroachdb/cockroach/pull/163296 -[#156672]: https://github.com/cockroachdb/cockroach/pull/156672 -[#162036]: https://github.com/cockroachdb/cockroach/pull/162036 -[#163500]: https://github.com/cockroachdb/cockroach/pull/163500 -[#161816]: https://github.com/cockroachdb/cockroach/pull/161816 -[#161915]: https://github.com/cockroachdb/cockroach/pull/161915 -[#160503]: https://github.com/cockroachdb/cockroach/pull/160503 -[#163765]: https://github.com/cockroachdb/cockroach/pull/163765 -[#160416]: https://github.com/cockroachdb/cockroach/pull/160416 -[#161265]: https://github.com/cockroachdb/cockroach/pull/161265 -[#158029]: https://github.com/cockroachdb/cockroach/pull/158029 -[#160346]: https://github.com/cockroachdb/cockroach/pull/160346 -[#160674]: https://github.com/cockroachdb/cockroach/pull/160674 -[#161941]: https://github.com/cockroachdb/cockroach/pull/161941 -[#164468]: https://github.com/cockroachdb/cockroach/pull/164468 -[#161422]: https://github.com/cockroachdb/cockroach/pull/161422 -[#161509]: https://github.com/cockroachdb/cockroach/pull/161509 -[#161011]: https://github.com/cockroachdb/cockroach/pull/161011 -[#164285]: https://github.com/cockroachdb/cockroach/pull/164285 -[#160901]: https://github.com/cockroachdb/cockroach/pull/160901 -[#161226]: https://github.com/cockroachdb/cockroach/pull/161226 -[#159354]: https://github.com/cockroachdb/cockroach/pull/159354 -[#161273]: https://github.com/cockroachdb/cockroach/pull/161273 -[#163883]: https://github.com/cockroachdb/cockroach/pull/163883 -[#160051]: https://github.com/cockroachdb/cockroach/pull/160051 -[#159659]: https://github.com/cockroachdb/cockroach/pull/159659 -[#161880]: https://github.com/cockroachdb/cockroach/pull/161880 -[#159499]: https://github.com/cockroachdb/cockroach/pull/159499 -[#160499]: https://github.com/cockroachdb/cockroach/pull/160499 -[#160608]: https://github.com/cockroachdb/cockroach/pull/160608 -[#159178]: https://github.com/cockroachdb/cockroach/pull/159178 -[#163947]: https://github.com/cockroachdb/cockroach/pull/163947 -[#164406]: https://github.com/cockroachdb/cockroach/pull/164406 -[#159126]: https://github.com/cockroachdb/cockroach/pull/159126 -[#162115]: https://github.com/cockroachdb/cockroach/pull/162115 -[#162608]: https://github.com/cockroachdb/cockroach/pull/162608 -[#162546]: https://github.com/cockroachdb/cockroach/pull/162546 -[#159189]: https://github.com/cockroachdb/cockroach/pull/159189 -[#163199]: https://github.com/cockroachdb/cockroach/pull/163199 -[#163427]: https://github.com/cockroachdb/cockroach/pull/163427 -[#160538]: https://github.com/cockroachdb/cockroach/pull/160538 -[#164212]: https://github.com/cockroachdb/cockroach/pull/164212 -[#159627]: https://github.com/cockroachdb/cockroach/pull/159627 -[#159231]: https://github.com/cockroachdb/cockroach/pull/159231 -[#160780]: https://github.com/cockroachdb/cockroach/pull/160780 -[#163224]: https://github.com/cockroachdb/cockroach/pull/163224 -[#163507]: https://github.com/cockroachdb/cockroach/pull/163507 -[#159090]: https://github.com/cockroachdb/cockroach/pull/159090 -[#159162]: https://github.com/cockroachdb/cockroach/pull/159162 -[#161014]: https://github.com/cockroachdb/cockroach/pull/161014 -[#161979]: https://github.com/cockroachdb/cockroach/pull/161979 -[#160121]: https://github.com/cockroachdb/cockroach/pull/160121 -[#162329]: https://github.com/cockroachdb/cockroach/pull/162329 -[#159787]: https://github.com/cockroachdb/cockroach/pull/159787 -[#161294]: https://github.com/cockroachdb/cockroach/pull/161294 -[#162633]: https://github.com/cockroachdb/cockroach/pull/162633 -[#164369]: https://github.com/cockroachdb/cockroach/pull/164369 -[#160798]: https://github.com/cockroachdb/cockroach/pull/160798 -[#159378]: https://github.com/cockroachdb/cockroach/pull/159378 -[#159431]: https://github.com/cockroachdb/cockroach/pull/159431 -[#161882]: https://github.com/cockroachdb/cockroach/pull/161882 -[#160784]: https://github.com/cockroachdb/cockroach/pull/160784 -[#153361]: https://github.com/cockroachdb/cockroach/pull/153361 -[#156963]: https://github.com/cockroachdb/cockroach/pull/156963 -[#162286]: https://github.com/cockroachdb/cockroach/pull/162286 -[#161043]: https://github.com/cockroachdb/cockroach/pull/161043 -[#163395]: https://github.com/cockroachdb/cockroach/pull/163395 -[#161211]: https://github.com/cockroachdb/cockroach/pull/161211 -[#164405]: https://github.com/cockroachdb/cockroach/pull/164405 -[#158935]: https://github.com/cockroachdb/cockroach/pull/158935 -[#160348]: https://github.com/cockroachdb/cockroach/pull/160348 -[#161083]: https://github.com/cockroachdb/cockroach/pull/161083 -[#159745]: https://github.com/cockroachdb/cockroach/pull/159745 -[#161318]: https://github.com/cockroachdb/cockroach/pull/161318 -[#164225]: https://github.com/cockroachdb/cockroach/pull/164225 -[#158835]: https://github.com/cockroachdb/cockroach/pull/158835 -[#158999]: https://github.com/cockroachdb/cockroach/pull/158999 -[#160812]: https://github.com/cockroachdb/cockroach/pull/160812 -[#163348]: https://github.com/cockroachdb/cockroach/pull/163348 -[#162105]: https://github.com/cockroachdb/cockroach/pull/162105 -[#163834]: https://github.com/cockroachdb/cockroach/pull/163834 -[#163244]: https://github.com/cockroachdb/cockroach/pull/163244 -[#163584]: https://github.com/cockroachdb/cockroach/pull/163584 -[#163867]: https://github.com/cockroachdb/cockroach/pull/163867 -[#161998]: https://github.com/cockroachdb/cockroach/pull/161998 -[#161835]: https://github.com/cockroachdb/cockroach/pull/161835 -[#160956]: https://github.com/cockroachdb/cockroach/pull/160956 -[#159286]: https://github.com/cockroachdb/cockroach/pull/159286 -[#161914]: https://github.com/cockroachdb/cockroach/pull/161914 -[#162512]: https://github.com/cockroachdb/cockroach/pull/162512 -[#162528]: https://github.com/cockroachdb/cockroach/pull/162528 -[#161230]: https://github.com/cockroachdb/cockroach/pull/161230 -[#163266]: https://github.com/cockroachdb/cockroach/pull/163266 -[#163503]: https://github.com/cockroachdb/cockroach/pull/163503 -[#156771]: https://github.com/cockroachdb/cockroach/pull/156771 -[#161924]: https://github.com/cockroachdb/cockroach/pull/161924 -[#161972]: https://github.com/cockroachdb/cockroach/pull/161972 -[#160129]: https://github.com/cockroachdb/cockroach/pull/160129 -[#163868]: https://github.com/cockroachdb/cockroach/pull/163868 -[#159527]: https://github.com/cockroachdb/cockroach/pull/159527 -[#159436]: https://github.com/cockroachdb/cockroach/pull/159436 -[#161062]: https://github.com/cockroachdb/cockroach/pull/161062 -[#161773]: https://github.com/cockroachdb/cockroach/pull/161773 -[#164043]: https://github.com/cockroachdb/cockroach/pull/164043 -[#161925]: https://github.com/cockroachdb/cockroach/pull/161925 -[#162302]: https://github.com/cockroachdb/cockroach/pull/162302 -[#160137]: https://github.com/cockroachdb/cockroach/pull/160137 -[#160716]: https://github.com/cockroachdb/cockroach/pull/160716 -[#159642]: https://github.com/cockroachdb/cockroach/pull/159642 -[#160394]: https://github.com/cockroachdb/cockroach/pull/160394 -[#159869]: https://github.com/cockroachdb/cockroach/pull/159869 -[#161050]: https://github.com/cockroachdb/cockroach/pull/161050 -[#162058]: https://github.com/cockroachdb/cockroach/pull/162058 -[#164477]: https://github.com/cockroachdb/cockroach/pull/164477 -[#164037]: https://github.com/cockroachdb/cockroach/pull/164037 -[#150706]: https://github.com/cockroachdb/cockroach/pull/150706 -[#161827]: https://github.com/cockroachdb/cockroach/pull/161827 -[#160576]: https://github.com/cockroachdb/cockroach/pull/160576 -[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 -[#159558]: https://github.com/cockroachdb/cockroach/pull/159558 -[#159722]: https://github.com/cockroachdb/cockroach/pull/159722 -[#161328]: https://github.com/cockroachdb/cockroach/pull/161328 -[#160486]: https://github.com/cockroachdb/cockroach/pull/160486 -[#163430]: https://github.com/cockroachdb/cockroach/pull/163430 -[#159201]: https://github.com/cockroachdb/cockroach/pull/159201 -[#162357]: https://github.com/cockroachdb/cockroach/pull/162357 -[#157790]: https://github.com/cockroachdb/cockroach/pull/157790 -[#162345]: https://github.com/cockroachdb/cockroach/pull/162345 -[#159180]: https://github.com/cockroachdb/cockroach/pull/159180 -[#163885]: https://github.com/cockroachdb/cockroach/pull/163885 -[#163950]: https://github.com/cockroachdb/cockroach/pull/163950 -[#159330]: https://github.com/cockroachdb/cockroach/pull/159330 -[#163543]: https://github.com/cockroachdb/cockroach/pull/163543 -[#163930]: https://github.com/cockroachdb/cockroach/pull/163930 -[#159403]: https://github.com/cockroachdb/cockroach/pull/159403 -[#161290]: https://github.com/cockroachdb/cockroach/pull/161290 -[#160966]: https://github.com/cockroachdb/cockroach/pull/160966 +- Added a new session variable, `distsql_prevent_partitioning_soft_limited_scans`, which, when true, prevents scans with soft limits from being planned as multiple TableReaders by the physical planner. This should decrease the initial setup costs of some fully-distributed query plans. +- Database- and table-level backups no longer fetch all object descriptors from disk in order to resolve the backup targets. Now only the objects that are referenced by the targeted objects will be fetched. This improves performance when there are many tables in the cluster. +- Various background tasks and jobs now more actively yield to foreground work when that work is waiting to run. +- Improved changefeed performance when filtering unwatched column families and offline tables by replacing expensive error chain traversal with direct status enum comparisons. +- Fixed a performance regression in `pg_catalog.pg_roles` and `pg_catalog.pg_authid` by avoiding privilege lookups for each row in the table. +- Queries that have comparison expressions with the `levenshtein` built-in are now up to 30% faster. +- The optimizer now better optimizes query plans of statements within UDFs and stored procedures that have `IN` subqueries. +- Significantly reduced WAL write latency when using encryption at rest by properly recycling WAL files instead of deleting and recreating them. +- Optimized the logic that applies zone config constraints so it no longer fetches all descriptors in the cluster during background constraint reconciliation. +- The optimizer can now better handle filters that redundantly `unnest()` an array placeholder argument within an `IN` or `ANY` filter. Previously, this pattern could prevent the filters from being used to constrain a table scan. Example: `SELECT k FROM a WHERE k = ANY(SELECT * FROM unnest($1:::INT[]))` +- Improved changefeed checkpointing performance when changefeeds are lagging. Previously, checkpoint updates could be redundantly applied multiple times per checkpoint operation. +- The query optimizer now eliminates redundant filter and projection operators over inputs with zero cardinality, even when the filter or projection expressions are not leakproof. This produces simpler, more efficient query plans in cases where joins or other operations fold to zero rows. diff --git a/src/current/_includes/releases/v26.2/v26.2.0-alpha.2.md b/src/current/_includes/releases/v26.2/v26.2.0-alpha.2.md index c0063430223..fccf832e860 100644 --- a/src/current/_includes/releases/v26.2/v26.2.0-alpha.2.md +++ b/src/current/_includes/releases/v26.2/v26.2.0-alpha.2.md @@ -6,103 +6,61 @@ Release Date: March 18, 2026

Backward-incompatible changes

-- When selecting from a view, the view owner's privileges on the underlying tables are now checked. Previously, no privilege checks were performed on the underlying tables, so a view would continue to work even after the owner lost access to the underlying tables. This also affects row-level security (RLS): the view owner's RLS policies are now enforced instead of the invoker's. If this causes issues, you can restore the previous behavior by setting the cluster setting `sql.auth.skip_underlying_view_privilege_checks.enabled` to `true`. [#164664][#164664] -- The `bulkio.index_backfill.elastic_control.enabled` cluster setting is now enabled by default, allowing index backfill operations to integrate with elastic CPU control and automatically throttle based on available resources. [#163866][#163866] -- Lowered the default value of the `sql.guardrails.max_row_size_log` cluster setting from `64 MiB` to `16 MiB`, and the default value of `sql.guardrails.max_row_size_err` from `512 MiB` to `80 MiB`. These settings control the maximum size of a row (or column family) that SQL can write before logging a warning or returning an error, respectively. The previous defaults were high enough that large rows would hit other limits first (such as the Raft command size limit or the backup SST size limit), producing confusing errors. The new defaults align with existing system limits to provide clearer diagnostics. If your workload legitimately writes rows larger than these new defaults, you can restore the previous behavior by increasing these settings. [#164468][#164468] -- Lowered the default value of the `changefeed.max_retry_backoff` cluster setting from `10m` to `30s` to reduce changefeed lag during rolling restarts. [#164874][#164874] -- Using `ALTER CHANGEFEED ADD ...` for a table that is already watched will now return an error: `target already watched by changefeed`. [#164433][#164433] -- Explicit `AS OF SYSTEM TIME` queries are no longer allowed on a Physical Cluster Replication (PCR) reader virtual cluster, unless the `bypass_pcr_reader_catalog_aost` session variable is set to `true`. This session variable should only be used during investigation or for changing cluster settings specific to the reader virtual cluster. [#165382][#165382] -- The `enable_super_regions` session variable and the `sql.defaults.super_regions.enabled` cluster setting are no longer required to use super regions. Super region DDL operations (`ADD`, `DROP`, and `ALTER SUPER REGION`) now work without any experimental flag. The session variable and cluster setting are deprecated, and existing scripts that set them will continue to work without error. [#165227][#165227] +- When selecting from a view, the view owner's privileges on the underlying tables are now checked. Previously, no privilege checks were performed on the underlying tables, so a view would continue to work even after the owner lost access to the underlying tables. This also affects row-level security (RLS): the view owner's RLS policies are now enforced instead of the invoker's. If this causes issues, you can restore the previous behavior by setting the cluster setting `sql.auth.skip_underlying_view_privilege_checks.enabled` to `true`. +- The `bulkio.index_backfill.elastic_control.enabled` cluster setting is now enabled by default, allowing index backfill operations to integrate with elastic CPU control and automatically throttle based on available resources. +- Lowered the default value of the `sql.guardrails.max_row_size_log` cluster setting from `64 MiB` to `16 MiB`, and the default value of `sql.guardrails.max_row_size_err` from `512 MiB` to `80 MiB`. These settings control the maximum size of a row (or column family) that SQL can write before logging a warning or returning an error, respectively. The previous defaults were high enough that large rows would hit other limits first (such as the Raft command size limit or the backup SST size limit), producing confusing errors. The new defaults align with existing system limits to provide clearer diagnostics. If your workload legitimately writes rows larger than these new defaults, you can restore the previous behavior by increasing these settings. +- Lowered the default value of the `changefeed.max_retry_backoff` cluster setting from `10m` to `30s` to reduce changefeed lag during rolling restarts. +- Using `ALTER CHANGEFEED ADD ...` for a table that is already watched will now return an error: `target already watched by changefeed`. +- Explicit `AS OF SYSTEM TIME` queries are no longer allowed on a Physical Cluster Replication (PCR) reader virtual cluster, unless the `bypass_pcr_reader_catalog_aost` session variable is set to `true`. This session variable should only be used during investigation or for changing cluster settings specific to the reader virtual cluster. +- The `enable_super_regions` session variable and the `sql.defaults.super_regions.enabled` cluster setting are no longer required to use super regions. Super region DDL operations (`ADD`, `DROP`, and `ALTER SUPER REGION`) now work without any experimental flag. The session variable and cluster setting are deprecated, and existing scripts that set them will continue to work without error.

Security updates

-- When the `security.provisioning.ldap.enabled` cluster setting is enabled, LDAP-authenticated DB Console logins now update the `estimated_last_login_time` column in the `system.users` table. [#163400][#163400] -- When the `security.provisioning.oidc.enabled` cluster setting is enabled, OIDC-authenticated DB Console logins now populate the `estimated_last_login_time` column in `system.users`, allowing administrators to track when OIDC users last accessed the DB Console. [#164129][#164129] +- When the `security.provisioning.ldap.enabled` cluster setting is enabled, LDAP-authenticated DB Console logins now update the `estimated_last_login_time` column in the `system.users` table. +- When the `security.provisioning.oidc.enabled` cluster setting is enabled, OIDC-authenticated DB Console logins now populate the `estimated_last_login_time` column in `system.users`, allowing administrators to track when OIDC users last accessed the DB Console.

SQL language changes

-- CockroachDB now supports `COMMIT AND CHAIN` and `ROLLBACK AND CHAIN` (as well as `END AND CHAIN` and `ABORT AND CHAIN`). These statements finish the current transaction and immediately start a new explicit transaction with the same isolation level, priority, and read/write mode as the previous transaction. `AND NO CHAIN` is also accepted for PostgreSQL compatibility but behaves identically to a plain `COMMIT` or `ROLLBACK`. [#164403][#164403] -- `RESTORE TABLE/DATABASE` now supports the `WITH GRANTS` option, which restores grants on restore targets for users in the restoring cluster. Note that using this option with `new_db_name` will cause the new database to inherit the privileges in the backed-up database. [#164444][#164444] -- Added support for a new statement hint used to change session variable values for the duration of a single statement without application changes. The new hint type can be created using the `information_schema.crdb_set_session_variable_hint` built-in function. The override applies only when executing a statement matching the given fingerprint and does not persist on the session or surrounding transaction. [#164909][#164909] -- Added an index storage parameter `skip_unique_checks` that can be used to disable unique constraint checks for indexes with implicit partition columns, including indexes in `REGIONAL BY ROW` tables. This should **only** be used if the application can guarantee uniqueness, for example, by using external UUID values or relying on a `unique_rowid()` default value. Incorrectly applying this setting when uniqueness is not guaranteed by the application could result in logically duplicate keys in different partitions of a unique index. [#163378][#163378] -- Views now support the PostgreSQL-compatible `security_invoker` option. When set via `CREATE VIEW ... WITH (security_invoker)` or `ALTER VIEW SET (security_invoker = true)`, privilege checks on the underlying tables are performed as the querying user rather than the view owner. The `security_invoker` option can be reset with `ALTER VIEW ... RESET (security_invoker)`. [#164184][#164184] -- Added the `ST_AsMVT` aggregate function to generate Mapbox Vector Tile (MVT) binary format from geospatial data, providing PostgreSQL/PostGIS compatibility for web mapping applications. [#150663][#150663] -- Introduced the `information_schema.crdb_delete_statement_hints` built-in function, which accepts 2 kinds of payload: `row_id` (int): the primary key of `system.statement_hints`; `fingerprint` (string). The function returns the number of rows deleted. [#163891][#163891] -- Added `to_date(text, text)` and `to_timestamp(text, text)` SQL functions that parse dates and timestamps from formatted strings using PostgreSQL-compatible format patterns. For example, `to_date('2023-03-15', 'YYYY-MM-DD')` returns a date, and `to_timestamp('2023-03-15 14:30:45', 'YYYY-MM-DD HH24:MI:SS')` returns a `timestamptz`. [#164672][#164672] -- Added PostgreSQL-compatible numeric formatting functions `to_char(int, text)`, `to_char(float, text)`, `to_char(numeric, text)`, and `to_number(text, text)`. These functions format numbers as strings and parse formatted strings back to numbers using the PostgreSQL formatting syntax. [#164672][#164672] -- Added support for importing Parquet files using the `IMPORT` statement. Parquet files can be imported from cloud storage URLs (`s3://`, `gs://`, `azure://`) or HTTP servers that support range requests (`Accept-Ranges: bytes`). This feature supports column-level compression formats (Snappy, GZIP, ZSTD, Brotli, etc.) as specified in the Parquet file format, but does not support additional file-level compression (e.g., `.parquet.gz` files). Nested Parquet types (lists, maps, structs) are not supported; only flat schemas with primitive types are supported at this time. [#163991][#163991] -- CockroachDB now includes `information_schema.crdb_rewrite_inline_hints` statements in the `schema.sql` file of a statement diagnostics bundle for re-creating all the statement hints bound to the statement. The hint recreation statements are sorted in ascending order of the original hint creation time. [#164164][#164164] -- `ALTER TABLE ... SET LOCALITY` is now fully executed using the declarative schema changer, improving reliability and consistency with other schema change operations. [#161763][#161763] -- During an `INSPECT` run, a new check validates unique column values in `REGIONAL BY ROW` tables. [#164449][#164449] -- Active Session History tables are now accessible via `information_schema.crdb_node_active_session_history` and `information_schema.crdb_cluster_active_session_history`, in addition to the existing `crdb_internal` tables. This improves discoverability when browsing `information_schema` for available metadata. [#164969][#164969] +- CockroachDB now supports `COMMIT AND CHAIN` and `ROLLBACK AND CHAIN` (as well as `END AND CHAIN` and `ABORT AND CHAIN`). These statements finish the current transaction and immediately start a new explicit transaction with the same isolation level, priority, and read/write mode as the previous transaction. `AND NO CHAIN` is also accepted for PostgreSQL compatibility but behaves identically to a plain `COMMIT` or `ROLLBACK`. +- `RESTORE TABLE/DATABASE` now supports the `WITH GRANTS` option, which restores grants on restore targets for users in the restoring cluster. Note that using this option with `new_db_name` will cause the new database to inherit the privileges in the backed-up database. +- Added support for a new statement hint used to change session variable values for the duration of a single statement without application changes. The new hint type can be created using the `information_schema.crdb_set_session_variable_hint` built-in function. The override applies only when executing a statement matching the given fingerprint and does not persist on the session or surrounding transaction. +- Added an index storage parameter `skip_unique_checks` that can be used to disable unique constraint checks for indexes with implicit partition columns, including indexes in `REGIONAL BY ROW` tables. This should **only** be used if the application can guarantee uniqueness, for example, by using external UUID values or relying on a `unique_rowid()` default value. Incorrectly applying this setting when uniqueness is not guaranteed by the application could result in logically duplicate keys in different partitions of a unique index. +- Views now support the PostgreSQL-compatible `security_invoker` option. When set via `CREATE VIEW ... WITH (security_invoker)` or `ALTER VIEW SET (security_invoker = true)`, privilege checks on the underlying tables are performed as the querying user rather than the view owner. The `security_invoker` option can be reset with `ALTER VIEW ... RESET (security_invoker)`. +- Added the `ST_AsMVT` aggregate function to generate Mapbox Vector Tile (MVT) binary format from geospatial data, providing PostgreSQL/PostGIS compatibility for web mapping applications. +- Introduced the `information_schema.crdb_delete_statement_hints` built-in function, which accepts 2 kinds of payload: `row_id` (int): the primary key of `system.statement_hints`; `fingerprint` (string). The function returns the number of rows deleted. +- Added `to_date(text, text)` and `to_timestamp(text, text)` SQL functions that parse dates and timestamps from formatted strings using PostgreSQL-compatible format patterns. For example, `to_date('2023-03-15', 'YYYY-MM-DD')` returns a date, and `to_timestamp('2023-03-15 14:30:45', 'YYYY-MM-DD HH24:MI:SS')` returns a `timestamptz`. +- Added PostgreSQL-compatible numeric formatting functions `to_char(int, text)`, `to_char(float, text)`, `to_char(numeric, text)`, and `to_number(text, text)`. These functions format numbers as strings and parse formatted strings back to numbers using the PostgreSQL formatting syntax. +- Added support for importing Parquet files using the `IMPORT` statement. Parquet files can be imported from cloud storage URLs (`s3://`, `gs://`, `azure://`) or HTTP servers that support range requests (`Accept-Ranges: bytes`). This feature supports column-level compression formats (Snappy, GZIP, ZSTD, Brotli, etc.) as specified in the Parquet file format, but does not support additional file-level compression (e.g., `.parquet.gz` files). Nested Parquet types (lists, maps, structs) are not supported; only flat schemas with primitive types are supported at this time. +- CockroachDB now includes `information_schema.crdb_rewrite_inline_hints` statements in the `schema.sql` file of a statement diagnostics bundle for re-creating all the statement hints bound to the statement. The hint recreation statements are sorted in ascending order of the original hint creation time. +- `ALTER TABLE ... SET LOCALITY` is now fully executed using the declarative schema changer, improving reliability and consistency with other schema change operations. +- During an `INSPECT` run, a new check validates unique column values in `REGIONAL BY ROW` tables. +- Active Session History tables are now accessible via `information_schema.crdb_node_active_session_history` and `information_schema.crdb_cluster_active_session_history`, in addition to the existing `crdb_internal` tables. This improves discoverability when browsing `information_schema` for available metadata.

Operational changes

-- Promoted the following admission control metrics to `ESSENTIAL` status, making them more discoverable in monitoring dashboards and troubleshooting workflows: `admission.wait_durations.*` (`sql-kv-response`, `sql-sql-response`, `elastic-stores`, `elastic-cpu`), `admission.granter.*_exhausted_duration.kv` (`slots`, `io_tokens`, `elastic_io_tokens`), `admission.elastic_cpu.nanos_exhausted_duration`, `kvflowcontrol.eval_wait.*.duration` (`elastic`, `regular`), and `kvflowcontrol.send_queue.bytes`. These metrics track admission control wait times, resource exhaustion, and replication flow control, providing visibility into cluster health and performance throttling. [#164827][#164827] -- Added periodic ASH workload summary logging to the `OPS` channel. Two new cluster settings, `obs.ash.log_interval` (default: `10m`) and `obs.ash.log_top_n` (default: `10`), control how often and how many entries are emitted. Each summary reports the most frequently sampled workloads grouped by event type, event name, and workload ID, providing visibility into workload patterns that previously existed only in memory. [#165093][#165093] -- Previously, altering a changefeed to add a table with an initial scan during a schema change backfill, or while the changefeed had lagging ranges, would sometimes be rejected. This is no longer the case. [#164433][#164433] +- Promoted the following admission control metrics to `ESSENTIAL` status, making them more discoverable in monitoring dashboards and troubleshooting workflows: `admission.wait_durations.*` (`sql-kv-response`, `sql-sql-response`, `elastic-stores`, `elastic-cpu`), `admission.granter.*_exhausted_duration.kv` (`slots`, `io_tokens`, `elastic_io_tokens`), `admission.elastic_cpu.nanos_exhausted_duration`, `kvflowcontrol.eval_wait.*.duration` (`elastic`, `regular`), and `kvflowcontrol.send_queue.bytes`. These metrics track admission control wait times, resource exhaustion, and replication flow control, providing visibility into cluster health and performance throttling. +- Added periodic ASH workload summary logging to the `OPS` channel. Two new cluster settings, `obs.ash.log_interval` (default: `10m`) and `obs.ash.log_top_n` (default: `10`), control how often and how many entries are emitted. Each summary reports the most frequently sampled workloads grouped by event type, event name, and workload ID, providing visibility into workload patterns that previously existed only in memory. +- Previously, altering a changefeed to add a table with an initial scan during a schema change backfill, or while the changefeed had lagging ranges, would sometimes be rejected. This is no longer the case.

Bug fixes

-- JWT authentication now returns a clear error when HTTP requests to fetch JWKS or OpenID configuration return non-`2xx` status codes, instead of silently passing the response body to the JSON parser. [#158294][#158294] -- Fixed an issue where `ORDER BY` expressions containing subqueries with non-default `NULLS` ordering (e.g., `NULLS LAST` for `ASC`, `NULLS FIRST` for `DESC`) could cause an error during query planning. [#163230][#163230] -- Fixed a bug that caused `ALTER INDEX ... PARTITION BY` statements to fail on a nonexistent index even if `IF EXISTS` was used. [#163378][#163378] -- Fixed a bug where incremental backups taken after downgrading a mixed-version cluster to v25.4 could result in inconsistent backup indexes. [#164301][#164301] -- Altering a non-scan-only changefeed to add a target with `initial_scan='only'` now returns an error instead of not doing a scan and adding the target to the watched targets list. [#164433][#164433] -- Fixed a bug where adding a target without an initial scan, dropping that same target, and then adding it again with an initial scan would result in the target being added without an initial scan. [#164433][#164433] -- Fixed a bug where altering a changefeed to add a table with an initial scan during a schema change backfill or while the changefeed had lagging ranges would sometimes be rejected. [#164433][#164433] -- Fixed a bug where creating a table with a user-defined type column failed when the user had `USAGE` privilege on the base type but not on its implicit array type. The array type now inherits privileges from the base type, matching PostgreSQL behavior. [#164471][#164471] -- `ALTER TABLE ... ALTER PRIMARY KEY USING COLUMNS (col) USING HASH` is now correctly treated as a no-op when the table already has a matching hash-sharded primary key, instead of attempting an unnecessary schema change. [#164557][#164557] -- Fixed a bug in `appBatchStats.merge` where the `numEmptyEntries` field was not being properly accumulated when merging statistics. This could result in incorrect statistics tracking for empty Raft log entries. [#164671][#164671] -- Fixed a bug where `ALTER TABLE ... ALTER COLUMN ... SET DATA TYPE` from an unbounded string or bit type to a bounded type with a length `>= 64` (for example, `STRING` to `STRING(100)`) would skip validating existing data against the new length constraint. This could leave rows in the table that violate the column's type, with values longer than the specified limit. [#164739][#164739] -- Fixed a bug where `RESTORE` with `skip_missing_foreign_keys` could fail with an internal error if the restored table had an in-progress schema change that added a foreign key constraint whose referenced table was not included in the restore. [#164757][#164757] -- Fixed a bug introduced in v25.4+ where setting `min_checkpoint_frequency` to `0` prevented changefeeds from advancing their resolved timestamp (high-water mark) and emitting resolved messages. Note that setting `min_checkpoint_frequency` to lower than `500ms` is **not** recommended as it may cause degraded changefeed performance. [#164765][#164765] -- Fixed a bug where CockroachDB did not always promptly respond to the statement timeout when performing a hash join with `ON` filter that is mostly `false`. [#164879][#164879] -- Fixed a bug where `IMPORT` error messages could include unredacted cloud storage credentials from the source URI. Credentials are now stripped from URIs before they appear in error messages. [#164881][#164881] -- Changefeed retry backoff now resets when the changefeed's resolved timestamp (high-water mark) advances between retries, in addition to the existing time-based reset (configured by `changefeed.retry_backoff_reset`). This prevents transient rolling restarts from causing changefeeds to fall behind because of excessive backoff. [#164933][#164933] -- Fixed a rare race condition where `SHOW CREATE TABLE` could fail with a `"relation does not exist"` error if a table referenced by a foreign key was being concurrently dropped. [#164942][#164942] -- Fixed a bug that had previously allowed the primary and secondary to be in separate super regions. [#164943][#164943] -- Fixed a bug that could cause row sampling for table statistics to crash a node due to a data race when processing a collated string column with values larger than 400 bytes. This bug has existed since before v23.1. [#165260][#165260] -- The `information_schema.crdb_node_active_session_history` and `information_schema.crdb_cluster_active_session_history` views now include the `app_name` column, matching the underlying `crdb_internal` tables. [#165367][#165367] - - -[#163378]: https://github.com/cockroachdb/cockroach/pull/163378 -[#164403]: https://github.com/cockroachdb/cockroach/pull/164403 -[#164909]: https://github.com/cockroachdb/cockroach/pull/164909 -[#164827]: https://github.com/cockroachdb/cockroach/pull/164827 -[#163891]: https://github.com/cockroachdb/cockroach/pull/163891 -[#163866]: https://github.com/cockroachdb/cockroach/pull/163866 -[#164301]: https://github.com/cockroachdb/cockroach/pull/164301 -[#164433]: https://github.com/cockroachdb/cockroach/pull/164433 -[#164739]: https://github.com/cockroachdb/cockroach/pull/164739 -[#164671]: https://github.com/cockroachdb/cockroach/pull/164671 -[#163400]: https://github.com/cockroachdb/cockroach/pull/163400 -[#163991]: https://github.com/cockroachdb/cockroach/pull/163991 -[#164164]: https://github.com/cockroachdb/cockroach/pull/164164 -[#164444]: https://github.com/cockroachdb/cockroach/pull/164444 -[#164672]: https://github.com/cockroachdb/cockroach/pull/164672 -[#165382]: https://github.com/cockroachdb/cockroach/pull/165382 -[#164557]: https://github.com/cockroachdb/cockroach/pull/164557 -[#164765]: https://github.com/cockroachdb/cockroach/pull/164765 -[#164874]: https://github.com/cockroachdb/cockroach/pull/164874 -[#164879]: https://github.com/cockroachdb/cockroach/pull/164879 -[#165260]: https://github.com/cockroachdb/cockroach/pull/165260 -[#164664]: https://github.com/cockroachdb/cockroach/pull/164664 -[#164184]: https://github.com/cockroachdb/cockroach/pull/164184 -[#164969]: https://github.com/cockroachdb/cockroach/pull/164969 -[#163230]: https://github.com/cockroachdb/cockroach/pull/163230 -[#164468]: https://github.com/cockroachdb/cockroach/pull/164468 -[#164129]: https://github.com/cockroachdb/cockroach/pull/164129 -[#164881]: https://github.com/cockroachdb/cockroach/pull/164881 -[#164933]: https://github.com/cockroachdb/cockroach/pull/164933 -[#164942]: https://github.com/cockroachdb/cockroach/pull/164942 -[#150663]: https://github.com/cockroachdb/cockroach/pull/150663 -[#161763]: https://github.com/cockroachdb/cockroach/pull/161763 -[#165367]: https://github.com/cockroachdb/cockroach/pull/165367 -[#164449]: https://github.com/cockroachdb/cockroach/pull/164449 -[#165227]: https://github.com/cockroachdb/cockroach/pull/165227 -[#165093]: https://github.com/cockroachdb/cockroach/pull/165093 -[#158294]: https://github.com/cockroachdb/cockroach/pull/158294 -[#164471]: https://github.com/cockroachdb/cockroach/pull/164471 -[#164757]: https://github.com/cockroachdb/cockroach/pull/164757 -[#164943]: https://github.com/cockroachdb/cockroach/pull/164943 +- JWT authentication now returns a clear error when HTTP requests to fetch JWKS or OpenID configuration return non-`2xx` status codes, instead of silently passing the response body to the JSON parser. +- Fixed an issue where `ORDER BY` expressions containing subqueries with non-default `NULLS` ordering (e.g., `NULLS LAST` for `ASC`, `NULLS FIRST` for `DESC`) could cause an error during query planning. +- Fixed a bug that caused `ALTER INDEX ... PARTITION BY` statements to fail on a nonexistent index even if `IF EXISTS` was used. +- Fixed a bug where incremental backups taken after downgrading a mixed-version cluster to v25.4 could result in inconsistent backup indexes. +- Altering a non-scan-only changefeed to add a target with `initial_scan='only'` now returns an error instead of not doing a scan and adding the target to the watched targets list. +- Fixed a bug where adding a target without an initial scan, dropping that same target, and then adding it again with an initial scan would result in the target being added without an initial scan. +- Fixed a bug where altering a changefeed to add a table with an initial scan during a schema change backfill or while the changefeed had lagging ranges would sometimes be rejected. +- Fixed a bug where creating a table with a user-defined type column failed when the user had `USAGE` privilege on the base type but not on its implicit array type. The array type now inherits privileges from the base type, matching PostgreSQL behavior. +- `ALTER TABLE ... ALTER PRIMARY KEY USING COLUMNS (col) USING HASH` is now correctly treated as a no-op when the table already has a matching hash-sharded primary key, instead of attempting an unnecessary schema change. +- Fixed a bug in `appBatchStats.merge` where the `numEmptyEntries` field was not being properly accumulated when merging statistics. This could result in incorrect statistics tracking for empty Raft log entries. +- Fixed a bug where `ALTER TABLE ... ALTER COLUMN ... SET DATA TYPE` from an unbounded string or bit type to a bounded type with a length `>= 64` (for example, `STRING` to `STRING(100)`) would skip validating existing data against the new length constraint. This could leave rows in the table that violate the column's type, with values longer than the specified limit. +- Fixed a bug where `RESTORE` with `skip_missing_foreign_keys` could fail with an internal error if the restored table had an in-progress schema change that added a foreign key constraint whose referenced table was not included in the restore. +- Fixed a bug introduced in v25.4+ where setting `min_checkpoint_frequency` to `0` prevented changefeeds from advancing their resolved timestamp (high-water mark) and emitting resolved messages. Note that setting `min_checkpoint_frequency` to lower than `500ms` is **not** recommended as it may cause degraded changefeed performance. +- Fixed a bug where CockroachDB did not always promptly respond to the statement timeout when performing a hash join with `ON` filter that is mostly `false`. +- Fixed a bug where `IMPORT` error messages could include unredacted cloud storage credentials from the source URI. Credentials are now stripped from URIs before they appear in error messages. +- Changefeed retry backoff now resets when the changefeed's resolved timestamp (high-water mark) advances between retries, in addition to the existing time-based reset (configured by `changefeed.retry_backoff_reset`). This prevents transient rolling restarts from causing changefeeds to fall behind because of excessive backoff. +- Fixed a rare race condition where `SHOW CREATE TABLE` could fail with a `"relation does not exist"` error if a table referenced by a foreign key was being concurrently dropped. +- Fixed a bug that had previously allowed the primary and secondary to be in separate super regions. +- Fixed a bug that could cause row sampling for table statistics to crash a node due to a data race when processing a collated string column with values larger than 400 bytes. This bug has existed since before v23.1. +- The `information_schema.crdb_node_active_session_history` and `information_schema.crdb_cluster_active_session_history` views now include the `app_name` column, matching the underlying `crdb_internal` tables. diff --git a/src/current/_includes/releases/v26.2/v26.2.0-beta.1.md b/src/current/_includes/releases/v26.2/v26.2.0-beta.1.md index e947820000a..228371a093d 100644 --- a/src/current/_includes/releases/v26.2/v26.2.0-beta.1.md +++ b/src/current/_includes/releases/v26.2/v26.2.0-beta.1.md @@ -6,9 +6,9 @@ Release Date: March 25, 2026

Backward-incompatible changes

-- Added the `TEMPORARY` database privilege, which controls whether users can create temporary tables and views. On new databases, this privilege is granted to the `public` role by default, matching PostgreSQL behavior. [#165992][#165992] -- The `cockroach encode-uri` command has been merged into the `cockroach convert-url` command and `encode-uri` has been deprecated. As a result, the flags `--inline`, `--database`, `--user`, `--password`, `--cluster`, `--certs-dir`, `--ca-cert`, `--cert`, and `--key` have been added to `convert-url`. [#164561][#164561] -- Statement diagnostics requests with `sampling_probability` and `expires_at` now collect up to 10 bundles (configurable via `sql.stmt_diagnostics.max_bundles_per_request`) instead of a single bundle. Set the cluster setting to `1` to restore single-bundle behavior. [#166159][#166159] +- Added the `TEMPORARY` database privilege, which controls whether users can create temporary tables and views. On new databases, this privilege is granted to the `public` role by default, matching PostgreSQL behavior. +- The `cockroach encode-uri` command has been merged into the `cockroach convert-url` command and `encode-uri` has been deprecated. As a result, the flags `--inline`, `--database`, `--user`, `--password`, `--cluster`, `--certs-dir`, `--ca-cert`, `--cert`, and `--key` have been added to `convert-url`. +- Statement diagnostics requests with `sampling_probability` and `expires_at` now collect up to 10 bundles (configurable via `sql.stmt_diagnostics.max_bundles_per_request`) instead of a single bundle. Set the cluster setting to `1` to restore single-bundle behavior.

Security updates

@@ -22,50 +22,31 @@ Release Date: March 25, 2026 - Multiple identity attributes: A single certificate can contain multiple SAN entries (e.g., URI for service identity, DNS for hostname, IP for network location), providing flexible authentication options. - This authentication method works across both SQL client connections and internal RPC communication between cluster nodes, ensuring consistent identity verification throughout the system. Organizations using modern certificate management systems and service identity frameworks can now leverage their existing infrastructure for database authentication without requiring certificate reissuance or CN-based naming conventions. [#162583][#162583] + This authentication method works across both SQL client connections and internal RPC communication between cluster nodes, ensuring consistent identity verification throughout the system. Organizations using modern certificate management systems and service identity frameworks can now leverage their existing infrastructure for database authentication without requiring certificate reissuance or CN-based naming conventions.

SQL language changes

-- Rewrite-inline-hints rules can now be scoped to a specific database, and will only apply to matching statements when the current database also matches. This database can be specified with an optional third argument to `information_schema.crdb_rewrite_inline_hints`. [#165457][#165457] -- Added support for the `aclitem` type and the `makeaclitem` and `acldefault` built-in functions for PostgreSQL compatibility. The existing `aclexplode` function, which previously always returned no rows, now correctly parses ACL strings and returns the individual privilege grants they contain. [#165744][#165744] -- Introduced a new built-in function `information_schema.crdb_enable_statement_hints`, which can be used to enable or disable statement hints by hint ID or by statement fingerprint. [#165457][#165457] -- Added the `pg_get_triggerdef` builtin function, which returns the `CREATE TRIGGER` statement for a given trigger OID. This improves PostgreSQL compatibility for databases that contain triggers. [#165849][#165849] -- `SHOW ALL` now returns a third column, `description`, containing a human-readable description of each session variable. This matches the PostgreSQL behavior of `SHOW ALL`. [#165397][#165397] -- `SHOW STATEMENT HINTS` now includes `database` and `enabled` columns in its output. The `database` column indicates which database the hint applies to, and the `enabled` column indicates whether the hint is active. [#165712][#165712] -- The `tableoid` system column is now supported on virtual tables such as those in `pg_catalog` and `information_schema`. This improves compatibility with PostgreSQL tools like `pg_dump` that reference `tableoid` in their introspection queries. [#165727][#165727] -- Added a `workload_type` column to the `crdb_internal.node_active_session_history` and `crdb_internal.cluster_active_session_history` virtual tables, as well as the corresponding `information_schema` views. The column exposes the type of workload being sampled, with possible values `STATEMENT`, `JOB`, `SYSTEM`, or `UNKNOWN`. [#165866][#165866] +- Rewrite-inline-hints rules can now be scoped to a specific database, and will only apply to matching statements when the current database also matches. This database can be specified with an optional third argument to `information_schema.crdb_rewrite_inline_hints`. +- Added support for the `aclitem` type and the `makeaclitem` and `acldefault` built-in functions for PostgreSQL compatibility. The existing `aclexplode` function, which previously always returned no rows, now correctly parses ACL strings and returns the individual privilege grants they contain. +- Introduced a new built-in function `information_schema.crdb_enable_statement_hints`, which can be used to enable or disable statement hints by hint ID or by statement fingerprint. +- Added the `pg_get_triggerdef` builtin function, which returns the `CREATE TRIGGER` statement for a given trigger OID. This improves PostgreSQL compatibility for databases that contain triggers. +- `SHOW ALL` now returns a third column, `description`, containing a human-readable description of each session variable. This matches the PostgreSQL behavior of `SHOW ALL`. +- `SHOW STATEMENT HINTS` now includes `database` and `enabled` columns in its output. The `database` column indicates which database the hint applies to, and the `enabled` column indicates whether the hint is active. +- The `tableoid` system column is now supported on virtual tables such as those in `pg_catalog` and `information_schema`. This improves compatibility with PostgreSQL tools like `pg_dump` that reference `tableoid` in their introspection queries. +- Added a `workload_type` column to the `crdb_internal.node_active_session_history` and `crdb_internal.cluster_active_session_history` virtual tables, as well as the corresponding `information_schema` views. The column exposes the type of workload being sampled, with possible values `STATEMENT`, `JOB`, `SYSTEM`, or `UNKNOWN`.

Operational changes

-- Added the opt-in cluster setting `server.oidc_authentication.tls_insecure_skip_verify.enabled` to skip TLS certificate verification for OIDC provider connections. [#164514][#164514] -- Red Hat certified CockroachDB container images are now published as multi-arch manifests supporting `linux/amd64`, `linux/arm64`, and `linux/s390x`. Previously only `linux/amd64` was published to the Red Hat registry. [#165725][#165725] -- When hash-based redaction is enabled in the logging configuration, usernames in authentication logs now produce deterministic hashes instead of being fully redacted. This lets support engineers correlate the same user across multiple log entries without revealing the actual values. [#165804][#165804] +- Added the opt-in cluster setting `server.oidc_authentication.tls_insecure_skip_verify.enabled` to skip TLS certificate verification for OIDC provider connections. +- Red Hat certified CockroachDB container images are now published as multi-arch manifests supporting `linux/amd64`, `linux/arm64`, and `linux/s390x`. Previously only `linux/amd64` was published to the Red Hat registry. +- When hash-based redaction is enabled in the logging configuration, usernames in authentication logs now produce deterministic hashes instead of being fully redacted. This lets support engineers correlate the same user across multiple log entries without revealing the actual values.

Command-line changes

-- Added the `--exclude-log-severities` flag to `cockroach debug zip` that filters log entries by severity server-side. For example, `--exclude-log-severities=INFO` excludes all `INFO`-level log entries from the collected log files, which can significantly reduce zip file size for large clusters. Valid severity names are `INFO`, `WARNING`, `ERROR`, and `FATAL`. The flag accepts a comma-delimited list or can be specified multiple times. [#165802][#165802] -- Added the `--format` option to `cockroach convert-url`, which allows users to specify the type of connection URL to output. Supported formats are `pq`, `dsn`, `jdbc`, and `crdb`. [#164561][#164561] +- Added the `--exclude-log-severities` flag to `cockroach debug zip` that filters log entries by severity server-side. For example, `--exclude-log-severities=INFO` excludes all `INFO`-level log entries from the collected log files, which can significantly reduce zip file size for large clusters. Valid severity names are `INFO`, `WARNING`, `ERROR`, and `FATAL`. The flag accepts a comma-delimited list or can be specified multiple times. +- Added the `--format` option to `cockroach convert-url`, which allows users to specify the type of connection URL to output. Supported formats are `pq`, `dsn`, `jdbc`, and `crdb`.

Bug fixes

-- Fixed a bug where temporary tables created in one session could fail to appear in `pg_catalog` queries from another session because the parent temporary schema could not be resolved by ID. [#165395][#165395] -- Fixed a bug in the legacy schema changer where rolling back a `CREATE TABLE` with inline `FOREIGN KEY` constraints could leave orphaned foreign key back-references on the referenced table, causing descriptor validation errors. [#165551][#165551] - - -[#165727]: https://github.com/cockroachdb/cockroach/pull/165727 -[#165866]: https://github.com/cockroachdb/cockroach/pull/165866 -[#166159]: https://github.com/cockroachdb/cockroach/pull/166159 -[#164561]: https://github.com/cockroachdb/cockroach/pull/164561 -[#165551]: https://github.com/cockroachdb/cockroach/pull/165551 -[#165457]: https://github.com/cockroachdb/cockroach/pull/165457 -[#165712]: https://github.com/cockroachdb/cockroach/pull/165712 -[#165992]: https://github.com/cockroachdb/cockroach/pull/165992 -[#165725]: https://github.com/cockroachdb/cockroach/pull/165725 -[#165804]: https://github.com/cockroachdb/cockroach/pull/165804 -[#165395]: https://github.com/cockroachdb/cockroach/pull/165395 -[#165397]: https://github.com/cockroachdb/cockroach/pull/165397 -[#165849]: https://github.com/cockroachdb/cockroach/pull/165849 -[#165744]: https://github.com/cockroachdb/cockroach/pull/165744 -[#164514]: https://github.com/cockroachdb/cockroach/pull/164514 -[#162583]: https://github.com/cockroachdb/cockroach/pull/162583 -[#165802]: https://github.com/cockroachdb/cockroach/pull/165802 +- Fixed a bug where temporary tables created in one session could fail to appear in `pg_catalog` queries from another session because the parent temporary schema could not be resolved by ID. +- Fixed a bug in the legacy schema changer where rolling back a `CREATE TABLE` with inline `FOREIGN KEY` constraints could leave orphaned foreign key back-references on the referenced table, causing descriptor validation errors. diff --git a/src/current/_includes/releases/v26.2/v26.2.0-beta.2.md b/src/current/_includes/releases/v26.2/v26.2.0-beta.2.md index 4f97968e0d1..cd265e2f864 100644 --- a/src/current/_includes/releases/v26.2/v26.2.0-beta.2.md +++ b/src/current/_includes/releases/v26.2/v26.2.0-beta.2.md @@ -6,25 +6,16 @@ Release Date: April 1, 2026

SQL language changes

-- `EXPLAIN` and `EXPLAIN ANALYZE` now display a `table stats mode` field (`canary` or `stable`) when the `sql.stats.canary_fraction` cluster setting is greater than 0, indicating which table statistics were used for query planning. Scan nodes for tables with active canary stats also show the configured canary window duration. [#166129][#166129] +- `EXPLAIN` and `EXPLAIN ANALYZE` now display a `table stats mode` field (`canary` or `stable`) when the `sql.stats.canary_fraction` cluster setting is greater than 0, indicating which table statistics were used for query planning. Scan nodes for tables with active canary stats also show the configured canary window duration.

Operational changes

-- A new cluster setting, `server.gc_assist.enabled`, allows operators to dynamically disable GC assist in CockroachDB's forked Go runtime. By default, it follows the `GODEBUG=gcnoassist` flag. A new metric, `sys.gc.assist.enabled`, reports the current state (`1` = enabled, `0` = disabled). [#166555][#166555] +- A new cluster setting, `server.gc_assist.enabled`, allows operators to dynamically disable GC assist in CockroachDB's forked Go runtime. By default, it follows the `GODEBUG=gcnoassist` flag. A new metric, `sys.gc.assist.enabled`, reports the current state (`1` = enabled, `0` = disabled).

Bug fixes

-- Fixed a bug where running `EXPLAIN ANALYZE (DEBUG)` on a query that invokes a UDF with many blocks could cause out-of-memory errors (OOMs). [#166132][#166132] -- Fixed a bug where restoring a database backup containing default privileges that referenced non-existent users would leave dangling user references in the restored database descriptor. [#166183][#166183] -- Fixed a bug where rolling back a `CREATE TABLE` that referenced user-defined types or sequences would leave orphaned back-references on the type and sequence descriptors, causing them to appear in `crdb_internal.invalid_objects` after the table was GC'd. [#166223][#166223] -- Fixed a bug where concurrent updates to a table using multiple column families during a partial index creation could result in data loss, incorrect `NULL` values, or validation failures in the resulting index. [#166325][#166325] -- Fixed a crash (`traceRegion: alloc too large`) that could occur when Go's execution tracer was enabled and a range cache lookup used a key longer than about 64 KB. [#166705][#166705] - - -[#166132]: https://github.com/cockroachdb/cockroach/pull/166132 -[#166183]: https://github.com/cockroachdb/cockroach/pull/166183 -[#166223]: https://github.com/cockroachdb/cockroach/pull/166223 -[#166325]: https://github.com/cockroachdb/cockroach/pull/166325 -[#166705]: https://github.com/cockroachdb/cockroach/pull/166705 -[#166129]: https://github.com/cockroachdb/cockroach/pull/166129 -[#166555]: https://github.com/cockroachdb/cockroach/pull/166555 +- Fixed a bug where running `EXPLAIN ANALYZE (DEBUG)` on a query that invokes a UDF with many blocks could cause out-of-memory errors (OOMs). +- Fixed a bug where restoring a database backup containing default privileges that referenced non-existent users would leave dangling user references in the restored database descriptor. +- Fixed a bug where rolling back a `CREATE TABLE` that referenced user-defined types or sequences would leave orphaned back-references on the type and sequence descriptors, causing them to appear in `crdb_internal.invalid_objects` after the table was GC'd. +- Fixed a bug where concurrent updates to a table using multiple column families during a partial index creation could result in data loss, incorrect `NULL` values, or validation failures in the resulting index. +- Fixed a crash (`traceRegion: alloc too large`) that could occur when Go's execution tracer was enabled and a range cache lookup used a key longer than about 64 KB. diff --git a/src/current/_includes/releases/v26.2/v26.2.0-beta.3.md b/src/current/_includes/releases/v26.2/v26.2.0-beta.3.md index a25df87a777..8bd4a5ec088 100644 --- a/src/current/_includes/releases/v26.2/v26.2.0-beta.3.md +++ b/src/current/_includes/releases/v26.2/v26.2.0-beta.3.md @@ -6,58 +6,36 @@ Release Date: April 8, 2026

Backward-incompatible changes

-- User-defined views that reference `crdb_internal` virtual tables now enforce unsafe access checks. To restore the previous behavior, set the session variable `allow_unsafe_internals` or the cluster setting `sql.override.allow_unsafe_internals.enabled` to `true`. [#167023][#167023] -- `REFRESH MATERIALIZED VIEW` now evaluates row-level security (RLS) policies using the view owner's identity instead of the invoker's, matching PostgreSQL's definer semantics. [#167419][#167419] +- User-defined views that reference `crdb_internal` virtual tables now enforce unsafe access checks. To restore the previous behavior, set the session variable `allow_unsafe_internals` or the cluster setting `sql.override.allow_unsafe_internals.enabled` to `true`. +- `REFRESH MATERIALIZED VIEW` now evaluates row-level security (RLS) policies using the view owner's identity instead of the invoker's, matching PostgreSQL's definer semantics.

Security updates

-- Removed an overly restrictive TLS curve preference that limited FIPS mode to P-256. CockroachDB now uses Go's native FIPS curve selection, improving interoperability with clients that prefer other FIPS curves. [#166793][#166793] +- Removed an overly restrictive TLS curve preference that limited FIPS mode to P-256. CockroachDB now uses Go's native FIPS curve selection, improving interoperability with clients that prefer other FIPS curves.

SQL language changes

-- Added a new cluster setting, `sql.schema.auto_unlock.enabled`, that controls whether DDL operations automatically unlock `schema_locked` tables. When set to `false`, DDL on schema-locked tables is blocked unless the user manually unlocks the table first. This allows customers using LDR to enforce `schema_locked` as a hard lock that prevents user-initiated DDL. The default is `true`, preserving existing behavior. [#166471][#166471] -- Added a new cluster setting `sql.prepared_transactions.unsafe.enabled` (default: `false`) that controls whether `PREPARE TRANSACTION` statements are accepted. This setting is marked unsafe and requires the unsafe setting interlock to change. When disabled, attempting to prepare a transaction returns an error. `COMMIT PREPARED` and `ROLLBACK PREPARED` remain available regardless of this setting to allow cleanup of existing prepared transactions. [#166855][#166855] -- Aggregation function `ST_AsMVT` can now also be used as a window function. [#166860][#166860] -- `CREATE CHANGEFEED FOR DATABASE` now returns an error stating that the feature is not implemented. [#166920][#166920] -- The `information_schema.crdb_delete_statement_hints` built-in function now accepts an optional second `database` argument to delete only hints scoped to a specific database. [#167192][#167192] -- The `information_schema.crdb_enable_statement_hints` built-in function now accepts an optional third `database` argument to enable or disable only hints scoped to a specific database. [#167192][#167192] -- Setting `skip_unique_checks = true` on an index now emits a notice warning that unique constraint enforcement is bypassed, with a pointer to the `INSPECT` documentation. [#167405][#167405] +- Added a new cluster setting, `sql.schema.auto_unlock.enabled`, that controls whether DDL operations automatically unlock `schema_locked` tables. When set to `false`, DDL on schema-locked tables is blocked unless the user manually unlocks the table first. This allows customers using LDR to enforce `schema_locked` as a hard lock that prevents user-initiated DDL. The default is `true`, preserving existing behavior. +- Added a new cluster setting `sql.prepared_transactions.unsafe.enabled` (default: `false`) that controls whether `PREPARE TRANSACTION` statements are accepted. This setting is marked unsafe and requires the unsafe setting interlock to change. When disabled, attempting to prepare a transaction returns an error. `COMMIT PREPARED` and `ROLLBACK PREPARED` remain available regardless of this setting to allow cleanup of existing prepared transactions. +- Aggregation function `ST_AsMVT` can now also be used as a window function. +- `CREATE CHANGEFEED FOR DATABASE` now returns an error stating that the feature is not implemented. +- The `information_schema.crdb_delete_statement_hints` built-in function now accepts an optional second `database` argument to delete only hints scoped to a specific database. +- The `information_schema.crdb_enable_statement_hints` built-in function now accepts an optional third `database` argument to enable or disable only hints scoped to a specific database. +- Setting `skip_unique_checks = true` on an index now emits a notice warning that unique constraint enforcement is bypassed, with a pointer to the `INSPECT` documentation.

Operational changes

-- Added two new metrics, `auth.cert.san.conn.total` and `auth.cert.san.conn.success`, to track SAN-based certificate authentication attempts and successes. [#166829][#166829] -- Added a new cluster setting `changefeed.kafka.max_request_size` and a per-changefeed `Flush.MaxBytes` option in the Kafka sink config to control the maximum size of record batches sent to Kafka by the v2 sink. Lowering this from the default of 256 MiB can prevent spurious message-too-large errors when multiple batches are coalesced into a single broker request. [#166740][#166740] +- Added two new metrics, `auth.cert.san.conn.total` and `auth.cert.san.conn.success`, to track SAN-based certificate authentication attempts and successes. +- Added a new cluster setting `changefeed.kafka.max_request_size` and a per-changefeed `Flush.MaxBytes` option in the Kafka sink config to control the maximum size of record batches sent to Kafka by the v2 sink. Lowering this from the default of 256 MiB can prevent spurious message-too-large errors when multiple batches are coalesced into a single broker request.

Bug fixes

-- Fixed a data race that could cause certificate expiration metrics (`security.certificate.expiration.node-client`, `security.certificate.expiration.client-tenant`, `security.certificate.expiration.ca-client-tenant` and their TTL counterparts) to not update after certificate rotation via `SIGHUP`. [#166664][#166664] -- Fixed a bug where `ALTER FUNCTION ... RENAME TO` and `ALTER PROCEDURE ... RENAME TO` could create duplicate functions in non-public schemas. [#166681][#166681] -- The PCR job now switches into the cutover phase more promptly after a failover is requested, terminating the replication phase more quickly and more reliably when components of the ingestion process are hung due to network errors. [#166778][#166778] -- Fixed a bug where descriptor version fetching could be incorrectly throttled by the elastic CPU limiter, potentially leading to increased query latency or timeouts under high CPU load. [#166810][#166810] -- Context cancellation is now surfaced if a `statement_timeout` occurs while waiting for a schema change. [#167112][#167112] -- Fixed a bug where transient I/O errors (such as cloud storage network timeouts) during split or merge trigger evaluation were misidentified as replica corruption, causing the node to crash. These errors now correctly fail the operation, which is retried automatically. [#167377][#167377] -- Fixed a bug where executing a mutation in a subquery (e.g., as a CTE) could cause the "rows written" metrics like `sql.statements.index_rows_written.count` and `sql.statements.index_bytes_written.count` to not be incremented correctly. [#167432][#167432] -- Fixed a bug where converting a table from `REGIONAL BY ROW` to `GLOBAL` would not clear the `skip_unique_checks` storage parameter on the primary key, even though implicit partitioning was removed. [#167484][#167484] -- Fixed a bug where the `lock_timeout` and `deadlock_timeout` session settings were not honored by FK existence checks performed during insert fast path execution. This could cause inserts to block indefinitely on conflicting locks instead of returning a timeout error. [#167532][#167532] - - -[#166471]: https://github.com/cockroachdb/cockroach/pull/166471 -[#167377]: https://github.com/cockroachdb/cockroach/pull/167377 -[#167484]: https://github.com/cockroachdb/cockroach/pull/167484 -[#166681]: https://github.com/cockroachdb/cockroach/pull/166681 -[#167112]: https://github.com/cockroachdb/cockroach/pull/167112 -[#166855]: https://github.com/cockroachdb/cockroach/pull/166855 -[#167192]: https://github.com/cockroachdb/cockroach/pull/167192 -[#167405]: https://github.com/cockroachdb/cockroach/pull/167405 -[#166664]: https://github.com/cockroachdb/cockroach/pull/166664 -[#166810]: https://github.com/cockroachdb/cockroach/pull/166810 -[#167432]: https://github.com/cockroachdb/cockroach/pull/167432 -[#167023]: https://github.com/cockroachdb/cockroach/pull/167023 -[#166860]: https://github.com/cockroachdb/cockroach/pull/166860 -[#166829]: https://github.com/cockroachdb/cockroach/pull/166829 -[#166740]: https://github.com/cockroachdb/cockroach/pull/166740 -[#167532]: https://github.com/cockroachdb/cockroach/pull/167532 -[#166793]: https://github.com/cockroachdb/cockroach/pull/166793 -[#166920]: https://github.com/cockroachdb/cockroach/pull/166920 -[#166778]: https://github.com/cockroachdb/cockroach/pull/166778 -[#167419]: https://github.com/cockroachdb/cockroach/pull/167419 +- Fixed a data race that could cause certificate expiration metrics (`security.certificate.expiration.node-client`, `security.certificate.expiration.client-tenant`, `security.certificate.expiration.ca-client-tenant` and their TTL counterparts) to not update after certificate rotation via `SIGHUP`. +- Fixed a bug where `ALTER FUNCTION ... RENAME TO` and `ALTER PROCEDURE ... RENAME TO` could create duplicate functions in non-public schemas. +- The PCR job now switches into the cutover phase more promptly after a failover is requested, terminating the replication phase more quickly and more reliably when components of the ingestion process are hung due to network errors. +- Fixed a bug where descriptor version fetching could be incorrectly throttled by the elastic CPU limiter, potentially leading to increased query latency or timeouts under high CPU load. +- Context cancellation is now surfaced if a `statement_timeout` occurs while waiting for a schema change. +- Fixed a bug where transient I/O errors (such as cloud storage network timeouts) during split or merge trigger evaluation were misidentified as replica corruption, causing the node to crash. These errors now correctly fail the operation, which is retried automatically. +- Fixed a bug where executing a mutation in a subquery (e.g., as a CTE) could cause the "rows written" metrics like `sql.statements.index_rows_written.count` and `sql.statements.index_bytes_written.count` to not be incremented correctly. +- Fixed a bug where converting a table from `REGIONAL BY ROW` to `GLOBAL` would not clear the `skip_unique_checks` storage parameter on the primary key, even though implicit partitioning was removed. +- Fixed a bug where the `lock_timeout` and `deadlock_timeout` session settings were not honored by FK existence checks performed during insert fast path execution. This could cause inserts to block indefinitely on conflicting locks instead of returning a timeout error. diff --git a/src/current/_includes/releases/v26.2/v26.2.0-rc.1.md b/src/current/_includes/releases/v26.2/v26.2.0-rc.1.md index 27f65def9e8..8a8847c2ec9 100644 --- a/src/current/_includes/releases/v26.2/v26.2.0-rc.1.md +++ b/src/current/_includes/releases/v26.2/v26.2.0-rc.1.md @@ -8,17 +8,12 @@ Release Date: April 15, 2026 - Exposed the following settings for canary table statistics: - Cluster setting `sql.stats.canary_fraction`: probability that table statistics will use canary mode (i.e., always use the freshest stats) instead of stable mode (i.e., use the second-freshest stats) for query planning [0.0-1.0]. - - Session variable `canary_stats_mode`: When `sql.stats.canary_fraction` is greater than `0`, controls which table statistics are used for query planning on the current session: `on` always uses the newest (canary) stats immediately when they are collected, `off` delays using new stats until they outlive the canary window, and `auto` selects probabilistically based on the canary fraction. Has no effect when `sql.stats.canary_fraction` is `0`. [#167944][#167944] + - Session variable `canary_stats_mode`: When `sql.stats.canary_fraction` is greater than `0`, controls which table statistics are used for query planning on the current session: `on` always uses the newest (canary) stats immediately when they are collected, `off` delays using new stats until they outlive the canary window, and `auto` selects probabilistically based on the canary fraction. Has no effect when `sql.stats.canary_fraction` is `0`.

Bug fixes

-- Fixed a bug where CockroachDB might not have respected the table-level parameters `sql_stats_automatic_full_collection_enabled` and `sql_stats_automatic_partial_collection_enabled` and defaulted to using the corresponding cluster settings when deciding whether to perform automatic statistics collection on a table. [#167681][#167681] +- Fixed a bug where CockroachDB might not have respected the table-level parameters `sql_stats_automatic_full_collection_enabled` and `sql_stats_automatic_partial_collection_enabled` and defaulted to using the corresponding cluster settings when deciding whether to perform automatic statistics collection on a table.

Performance improvements

-- Statement executions using canary stats will no longer use cached plans, which prevents cache thrashing but causes a slight increase in planning time over statement executions using stable stats. [#167503][#167503] - - -[#167944]: https://github.com/cockroachdb/cockroach/pull/167944 -[#167681]: https://github.com/cockroachdb/cockroach/pull/167681 -[#167503]: https://github.com/cockroachdb/cockroach/pull/167503 +- Statement executions using canary stats will no longer use cached plans, which prevents cache thrashing but causes a slight increase in planning time over statement executions using stable stats. diff --git a/src/current/_includes/releases/v26.2/v26.2.0.md b/src/current/_includes/releases/v26.2/v26.2.0.md index 4779fbc2616..f888a5b1d93 100644 --- a/src/current/_includes/releases/v26.2/v26.2.0.md +++ b/src/current/_includes/releases/v26.2/v26.2.0.md @@ -243,7 +243,7 @@ You can also search the docs for sections labeled [New in v26.2](https://www.coc

Security updates

-- LDAP automatic user provisioning now extends to the DB Console in addition to SQL client connections. When `security.provisioning.ldap.enabled` is set to true, users authenticating via LDAP are automatically created in CockroachDB if they do not already exist. [#163199][#163199] +- LDAP automatic user provisioning now extends to the DB Console in addition to SQL client connections. When `security.provisioning.ldap.enabled` is set to true, users authenticating via LDAP are automatically created in CockroachDB if they do not already exist. - The new cluster setting `security.client_cert.san_required.enabled` enables Subject Alternative Name (SAN) based authentication for client certificates. When enabled, CockroachDB validates client identities using SAN attributes (URIs, DNS names, or IP addresses) from X.509 certificates instead of or in addition to the certificate's Common Name field. Key capabilities include: @@ -254,10 +254,10 @@ You can also search the docs for sections labeled [New in v26.2](https://www.coc - Multiple identity attributes: A single certificate can contain multiple SAN entries (e.g., URI for service identity, DNS for hostname, IP for network location), providing flexible authentication options. - This authentication method works across both SQL client connections and internal RPC communication between cluster nodes, ensuring consistent identity verification throughout the system. Organizations using modern certificate management systems and service identity frameworks can now leverage their existing infrastructure for database authentication without requiring certificate reissuance or CN-based naming conventions. [#162583][#162583] -- When the `security.provisioning.ldap.enabled` cluster setting is enabled, LDAP-authenticated DB Console logins now update the `estimated_last_login_time` column in the `system.users` table. [#163400][#163400] -- When the `security.provisioning.oidc.enabled` cluster setting is enabled, OIDC-authenticated DB Console logins now populate the `estimated_last_login_time` column in `system.users`, allowing administrators to track when OIDC users last accessed the DB Console. [#164129][#164129] -- Removed an overly restrictive TLS curve preference that limited FIPS mode to P-256. CockroachDB now uses Go's native FIPS curve selection, improving interoperability with clients that prefer other FIPS curves. [#166793][#166793] + This authentication method works across both SQL client connections and internal RPC communication between cluster nodes, ensuring consistent identity verification throughout the system. Organizations using modern certificate management systems and service identity frameworks can now leverage their existing infrastructure for database authentication without requiring certificate reissuance or CN-based naming conventions. +- When the `security.provisioning.ldap.enabled` cluster setting is enabled, LDAP-authenticated DB Console logins now update the `estimated_last_login_time` column in the `system.users` table. +- When the `security.provisioning.oidc.enabled` cluster setting is enabled, OIDC-authenticated DB Console logins now populate the `estimated_last_login_time` column in `system.users`, allowing administrators to track when OIDC users last accessed the DB Console. +- Removed an overly restrictive TLS curve preference that limited FIPS mode to P-256. CockroachDB now uses Go's native FIPS curve selection, improving interoperability with clients that prefer other FIPS curves.

Enterprise edition changes

@@ -266,223 +266,223 @@ You can also search the docs for sections labeled [New in v26.2](https://www.coc For details on license types, refer to Licensing FAQs. {{site.data.alerts.end}} -- Added a new cluster setting, `security.provisioning.oidc.enabled`, to allow automatic provisioning of users when they log in for the first time via OIDC. When enabled, a new user will be created in CockroachDB upon their first successful OIDC authentication. This feature is disabled by default. [#159787][#159787] -- LDAP authentication for the DB Console now additionally supports role-based access control (RBAC) through LDAP group membership. To use this feature, an administrator must first create roles in CockroachDB with names that match the Common Names (CN) of their LDAP groups. These roles should then be granted the desired privileges for DB Console access. When a user who is a member of a corresponding LDAP group logs into the DB Console, they will be automatically granted the role and its associated privileges, creating consistent behavior with SQL client connections. [#162302][#162302] +- Added a new cluster setting, `security.provisioning.oidc.enabled`, to allow automatic provisioning of users when they log in for the first time via OIDC. When enabled, a new user will be created in CockroachDB upon their first successful OIDC authentication. This feature is disabled by default. +- LDAP authentication for the DB Console now additionally supports role-based access control (RBAC) through LDAP group membership. To use this feature, an administrator must first create roles in CockroachDB with names that match the Common Names (CN) of their LDAP groups. These roles should then be granted the desired privileges for DB Console access. When a user who is a member of a corresponding LDAP group logs into the DB Console, they will be automatically granted the role and its associated privileges, creating consistent behavior with SQL client connections.

SQL language changes

-- `CREATE OR REPLACE TRIGGER` is now supported. If a trigger with the same name already exists on the same table, it is replaced with the new definition. If no trigger with that name exists, a new trigger is created. [#162633][#162633] -- Updated `DROP TRIGGER` to accept the `CASCADE` option for PostgreSQL compatibility. Since triggers in CockroachDB cannot have dependents, `CASCADE` behaves the same as `RESTRICT` or omitting the option entirely. [#161915][#161915] -- `DROP COLUMN` and `DROP INDEX` with `CASCADE` now properly drop dependent triggers. Previously, these operations would fail with an unimplemented error when a trigger depended on the column or index being dropped. [#163296][#163296] -- `CREATE OR REPLACE FUNCTION` now works on trigger functions that have active triggers. Previously, this was blocked with an unimplemented error, requiring users to drop and recreate triggers. The replacement now atomically updates all dependent triggers to execute the new function body. [#163348][#163348] -- Added support for the `pg_trigger_depth()` builtin function, which returns the current nesting level of PostgreSQL triggers (0 if not called from inside a trigger). [#162286][#162286] -- Added the `pg_get_triggerdef` builtin function, which returns the `CREATE TRIGGER` statement for a given trigger OID. This improves PostgreSQL compatibility for databases that contain triggers. [#165849][#165849] -- Users can now set the `use_backups_with_ids` session setting to enable a new `SHOW BACKUPS IN` experience. When enabled, `SHOW BACKUPS IN {collection}` displays all backups in the collection. Results can be filtered by backup end time using `OLDER THAN {timestamp}` or `NEWER THAN {timestamp}` clauses. Example usage: `SET use_backups_with_ids = true; SHOW BACKUPS IN '{collection}' OLDER THAN '2026-01-09 12:13:14' NEWER THAN '2026-01-04 15:16:17';` [#160137][#160137] -- If the new `SHOW BACKUP` experience is enabled by setting the `use_backups_with_ids` session variable to true, `SHOW BACKUP` will parse the IDs provided by `SHOW BACKUPS` and display contents for single backups. [#160812][#160812] -- If the new `RESTORE` experience is enabled by setting the `use_backups_with_ids` session variable to true, `RESTORE` will parse the IDs provided by `SHOW BACKUPS` and will restore the specified backup without the use of `AS OF SYSTEM TIME`. [#161294][#161294] -- `SHOW BACKUP` and `RESTORE` now allow backup IDs even if the `use_backups_with_ids` session variable is not set. Setting the variable only configures whether `LATEST` is resolved using the new or legacy path. [#162329][#162329] -- Added the `REVISION START TIME` option to the new `SHOW BACKUPS` experience enabled via the `use_backups_with_ids` session variable. Use the `REVISION START TIME` option to view the revision start times of revision history backups. [#161328][#161328] -- Added the `STRICT` option for locality-aware backups. When enabled, backups fail if data from a KV node with one locality tag would be backed up to a bucket with a different locality tag, ensuring data domiciling compliance. [#158999][#158999] -- `RESTORE TABLE/DATABASE` now supports the `WITH GRANTS` option, which restores grants on restore targets for users in the restoring cluster. Note that using this option with `new_db_name` will cause the new database to inherit the privileges in the backed-up database. [#164444][#164444] -- Added support for `SHOW STATEMENT HINTS`, which displays information about the statement hints (if any) associated with the given statement fingerprint string. The fingerprint is normalized in the same way as `EXPLAIN (FINGERPRINT)` before hints are matched. Example usage: `SHOW STATEMENT HINTS FOR ' SELECT * FROM xy WHERE x = 10 '` or `SHOW STATEMENT HINTS FOR $$ SELECT * FROM xy WHERE x = 10 $$ WITH DETAILS`. [#159231][#159231] -- Added support for a new statement hint used to change session variable values for the duration of a single statement without application changes. The new hint type can be created using the `information_schema.crdb_set_session_variable_hint` built-in function. The override applies only when executing a statement matching the given fingerprint and does not persist on the session or surrounding transaction. [#164909][#164909] -- Introduced the `information_schema.crdb_delete_statement_hints` built-in function, which accepts 2 kinds of payload: `row_id` (int): the primary key of `system.statement_hints`; `fingerprint` (string). The function returns the number of rows deleted. [#163891][#163891] -- CockroachDB now includes `information_schema.crdb_rewrite_inline_hints` statements in the `schema.sql` file of a statement diagnostics bundle for re-creating all the statement hints bound to the statement. The hint recreation statements are sorted in ascending order of the original hint creation time. [#164164][#164164] -- Rewrite-inline-hints rules can now be scoped to a specific database, and will only apply to matching statements when the current database also matches. This database can be specified with an optional third argument to `information_schema.crdb_rewrite_inline_hints`. [#165457][#165457] -- `SHOW STATEMENT HINTS` now includes `database` and `enabled` columns in its output. The `database` column indicates which database the hint applies to, and the `enabled` column indicates whether the hint is active. [#165712][#165712] -- The `information_schema.crdb_delete_statement_hints` built-in function now accepts an optional second `database` argument to delete only hints scoped to a specific database. [#167192][#167192] -- Added support for importing Parquet files using the `IMPORT` statement. Parquet files can be imported from cloud storage URLs (`s3://`, `gs://`, `azure://`) or HTTP servers that support range requests (`Accept-Ranges: bytes`). This feature supports column-level compression formats (Snappy, GZIP, ZSTD, Brotli, etc.) as specified in the Parquet file format, but does not support additional file-level compression (e.g., `.parquet.gz` files). Nested Parquet types (lists, maps, structs) are not supported; only flat schemas with primitive types are supported at this time. [#163991][#163991] -- Added a new cluster setting `bulkio.import.distributed_merge.mode` to enable distributed merge support for `IMPORT` operations. When enabled (default: false), `IMPORT` jobs will use a two-phase approach where import processors first write SST files to local storage, then a coordinator merges and ingests them. This can improve performance for large imports by reducing L0 file counts and enabling merge-time optimizations. This feature requires all nodes to be running v26.1 or later. [#159330][#159330] -- Updated CockroachDB to allow a prefix of index key columns to be used for the shard column in a hash-sharded index. The `shard_columns` storage parameter may be used to override the default, which uses all index key columns in the shard column. [#161422][#161422] -- Added the `MAINTAIN` privilege, which can be granted on tables and materialized views. Users with the `MAINTAIN` privilege on a materialized view can execute `REFRESH MATERIALIZED VIEW` without being the owner. Users with the `MAINTAIN` privilege on a table can execute `ANALYZE` without needing `SELECT`. This aligns with PostgreSQL 17 behavior. [#164236][#164236] -- Added support for the `aclitem` type and the `makeaclitem` and `acldefault` built-in functions for PostgreSQL compatibility. The existing `aclexplode` function, which previously always returned no rows, now correctly parses ACL strings and returns the individual privilege grants they contain. [#165744][#165744] -- Added support for the `dmetaphone()`, `dmetaphone_alt()`, and `daitch_mokotoff()` built-in functions, completing CockroachDB's implementation of the PostgreSQL `fuzzystrmatch` extension. `dmetaphone` and `dmetaphone_alt` return Double Metaphone phonetic codes for a string, and `daitch_mokotoff` returns an array of Daitch-Mokotoff soundex codes. These functions are useful for fuzzy string matching based on phonetic similarity. [#163430][#163430] -- Added `to_date(text, text)` and `to_timestamp(text, text)` SQL functions that parse dates and timestamps from formatted strings using PostgreSQL-compatible format patterns. For example, `to_date('2023-03-15', 'YYYY-MM-DD')` returns a date, and `to_timestamp('2023-03-15 14:30:45', 'YYYY-MM-DD HH24:MI:SS')` returns a `timestamptz`. [#164672][#164672] -- CockroachDB now supports `COMMIT AND CHAIN` and `ROLLBACK AND CHAIN` (as well as `END AND CHAIN` and `ABORT AND CHAIN`). These statements finish the current transaction and immediately start a new explicit transaction with the same isolation level, priority, and read/write mode as the previous transaction. `AND NO CHAIN` is also accepted for PostgreSQL compatibility but behaves identically to a plain `COMMIT` or `ROLLBACK`. [#164403][#164403] -- Added the `ST_AsMVT` aggregate function to generate Mapbox Vector Tile (MVT) binary format from geospatial data, providing PostgreSQL/PostGIS compatibility for web mapping applications. [#150663][#150663] -- Aggregation function `ST_AsMVT` can now also be used as a window function. [#166860][#166860] -- CockroachDB now supports the PostgreSQL session variables `tcp_keepalives_idle`, `tcp_keepalives_interval`, `tcp_keepalives_count`, and `tcp_user_timeout`. These allow per-session control over TCP keepalive behavior on each connection. A value of 0 (the default) uses the corresponding cluster setting. Non-zero values override the cluster setting for that session only. Units match PostgreSQL: seconds for keepalive settings, milliseconds for `tcp_user_timeout`. [#164369][#164369] -- `SHOW ALL` now returns a third column, `description`, containing a human-readable description of each session variable. This matches the PostgreSQL behavior of `SHOW ALL`. [#165397][#165397] -- The `tableoid` system column is now supported on virtual tables such as those in `pg_catalog` and `information_schema`. This improves compatibility with PostgreSQL tools like `pg_dump` that reference `tableoid` in their introspection queries. [#165727][#165727] +- `CREATE OR REPLACE TRIGGER` is now supported. If a trigger with the same name already exists on the same table, it is replaced with the new definition. If no trigger with that name exists, a new trigger is created. +- Updated `DROP TRIGGER` to accept the `CASCADE` option for PostgreSQL compatibility. Since triggers in CockroachDB cannot have dependents, `CASCADE` behaves the same as `RESTRICT` or omitting the option entirely. +- `DROP COLUMN` and `DROP INDEX` with `CASCADE` now properly drop dependent triggers. Previously, these operations would fail with an unimplemented error when a trigger depended on the column or index being dropped. +- `CREATE OR REPLACE FUNCTION` now works on trigger functions that have active triggers. Previously, this was blocked with an unimplemented error, requiring users to drop and recreate triggers. The replacement now atomically updates all dependent triggers to execute the new function body. +- Added support for the `pg_trigger_depth()` builtin function, which returns the current nesting level of PostgreSQL triggers (0 if not called from inside a trigger). +- Added the `pg_get_triggerdef` builtin function, which returns the `CREATE TRIGGER` statement for a given trigger OID. This improves PostgreSQL compatibility for databases that contain triggers. +- Users can now set the `use_backups_with_ids` session setting to enable a new `SHOW BACKUPS IN` experience. When enabled, `SHOW BACKUPS IN {collection}` displays all backups in the collection. Results can be filtered by backup end time using `OLDER THAN {timestamp}` or `NEWER THAN {timestamp}` clauses. Example usage: `SET use_backups_with_ids = true; SHOW BACKUPS IN '{collection}' OLDER THAN '2026-01-09 12:13:14' NEWER THAN '2026-01-04 15:16:17';` +- If the new `SHOW BACKUP` experience is enabled by setting the `use_backups_with_ids` session variable to true, `SHOW BACKUP` will parse the IDs provided by `SHOW BACKUPS` and display contents for single backups. +- If the new `RESTORE` experience is enabled by setting the `use_backups_with_ids` session variable to true, `RESTORE` will parse the IDs provided by `SHOW BACKUPS` and will restore the specified backup without the use of `AS OF SYSTEM TIME`. +- `SHOW BACKUP` and `RESTORE` now allow backup IDs even if the `use_backups_with_ids` session variable is not set. Setting the variable only configures whether `LATEST` is resolved using the new or legacy path. +- Added the `REVISION START TIME` option to the new `SHOW BACKUPS` experience enabled via the `use_backups_with_ids` session variable. Use the `REVISION START TIME` option to view the revision start times of revision history backups. +- Added the `STRICT` option for locality-aware backups. When enabled, backups fail if data from a KV node with one locality tag would be backed up to a bucket with a different locality tag, ensuring data domiciling compliance. +- `RESTORE TABLE/DATABASE` now supports the `WITH GRANTS` option, which restores grants on restore targets for users in the restoring cluster. Note that using this option with `new_db_name` will cause the new database to inherit the privileges in the backed-up database. +- Added support for `SHOW STATEMENT HINTS`, which displays information about the statement hints (if any) associated with the given statement fingerprint string. The fingerprint is normalized in the same way as `EXPLAIN (FINGERPRINT)` before hints are matched. Example usage: `SHOW STATEMENT HINTS FOR ' SELECT * FROM xy WHERE x = 10 '` or `SHOW STATEMENT HINTS FOR $$ SELECT * FROM xy WHERE x = 10 $$ WITH DETAILS`. +- Added support for a new statement hint used to change session variable values for the duration of a single statement without application changes. The new hint type can be created using the `information_schema.crdb_set_session_variable_hint` built-in function. The override applies only when executing a statement matching the given fingerprint and does not persist on the session or surrounding transaction. +- Introduced the `information_schema.crdb_delete_statement_hints` built-in function, which accepts 2 kinds of payload: `row_id` (int): the primary key of `system.statement_hints`; `fingerprint` (string). The function returns the number of rows deleted. +- CockroachDB now includes `information_schema.crdb_rewrite_inline_hints` statements in the `schema.sql` file of a statement diagnostics bundle for re-creating all the statement hints bound to the statement. The hint recreation statements are sorted in ascending order of the original hint creation time. +- Rewrite-inline-hints rules can now be scoped to a specific database, and will only apply to matching statements when the current database also matches. This database can be specified with an optional third argument to `information_schema.crdb_rewrite_inline_hints`. +- `SHOW STATEMENT HINTS` now includes `database` and `enabled` columns in its output. The `database` column indicates which database the hint applies to, and the `enabled` column indicates whether the hint is active. +- The `information_schema.crdb_delete_statement_hints` built-in function now accepts an optional second `database` argument to delete only hints scoped to a specific database. +- Added support for importing Parquet files using the `IMPORT` statement. Parquet files can be imported from cloud storage URLs (`s3://`, `gs://`, `azure://`) or HTTP servers that support range requests (`Accept-Ranges: bytes`). This feature supports column-level compression formats (Snappy, GZIP, ZSTD, Brotli, etc.) as specified in the Parquet file format, but does not support additional file-level compression (e.g., `.parquet.gz` files). Nested Parquet types (lists, maps, structs) are not supported; only flat schemas with primitive types are supported at this time. +- Added a new cluster setting `bulkio.import.distributed_merge.mode` to enable distributed merge support for `IMPORT` operations. When enabled (default: false), `IMPORT` jobs will use a two-phase approach where import processors first write SST files to local storage, then a coordinator merges and ingests them. This can improve performance for large imports by reducing L0 file counts and enabling merge-time optimizations. This feature requires all nodes to be running v26.1 or later. +- Updated CockroachDB to allow a prefix of index key columns to be used for the shard column in a hash-sharded index. The `shard_columns` storage parameter may be used to override the default, which uses all index key columns in the shard column. +- Added the `MAINTAIN` privilege, which can be granted on tables and materialized views. Users with the `MAINTAIN` privilege on a materialized view can execute `REFRESH MATERIALIZED VIEW` without being the owner. Users with the `MAINTAIN` privilege on a table can execute `ANALYZE` without needing `SELECT`. This aligns with PostgreSQL 17 behavior. +- Added support for the `aclitem` type and the `makeaclitem` and `acldefault` built-in functions for PostgreSQL compatibility. The existing `aclexplode` function, which previously always returned no rows, now correctly parses ACL strings and returns the individual privilege grants they contain. +- Added support for the `dmetaphone()`, `dmetaphone_alt()`, and `daitch_mokotoff()` built-in functions, completing CockroachDB's implementation of the PostgreSQL `fuzzystrmatch` extension. `dmetaphone` and `dmetaphone_alt` return Double Metaphone phonetic codes for a string, and `daitch_mokotoff` returns an array of Daitch-Mokotoff soundex codes. These functions are useful for fuzzy string matching based on phonetic similarity. +- Added `to_date(text, text)` and `to_timestamp(text, text)` SQL functions that parse dates and timestamps from formatted strings using PostgreSQL-compatible format patterns. For example, `to_date('2023-03-15', 'YYYY-MM-DD')` returns a date, and `to_timestamp('2023-03-15 14:30:45', 'YYYY-MM-DD HH24:MI:SS')` returns a `timestamptz`. +- CockroachDB now supports `COMMIT AND CHAIN` and `ROLLBACK AND CHAIN` (as well as `END AND CHAIN` and `ABORT AND CHAIN`). These statements finish the current transaction and immediately start a new explicit transaction with the same isolation level, priority, and read/write mode as the previous transaction. `AND NO CHAIN` is also accepted for PostgreSQL compatibility but behaves identically to a plain `COMMIT` or `ROLLBACK`. +- Added the `ST_AsMVT` aggregate function to generate Mapbox Vector Tile (MVT) binary format from geospatial data, providing PostgreSQL/PostGIS compatibility for web mapping applications. +- Aggregation function `ST_AsMVT` can now also be used as a window function. +- CockroachDB now supports the PostgreSQL session variables `tcp_keepalives_idle`, `tcp_keepalives_interval`, `tcp_keepalives_count`, and `tcp_user_timeout`. These allow per-session control over TCP keepalive behavior on each connection. A value of 0 (the default) uses the corresponding cluster setting. Non-zero values override the cluster setting for that session only. Units match PostgreSQL: seconds for keepalive settings, milliseconds for `tcp_user_timeout`. +- `SHOW ALL` now returns a third column, `description`, containing a human-readable description of each session variable. This matches the PostgreSQL behavior of `SHOW ALL`. +- The `tableoid` system column is now supported on virtual tables such as those in `pg_catalog` and `information_schema`. This improves compatibility with PostgreSQL tools like `pg_dump` that reference `tableoid` in their introspection queries. - Added cluster settings to control the number of concurrent automatic statistics collection jobs: - `sql.stats.automatic_full_concurrency_limit` controls the maximum number of concurrent full statistics collections. The default is 1. - `sql.stats.automatic_extremes_concurrency_limit` controls the maximum number of concurrent partial statistics collections using extremes. The default is 128. - Note that at most one statistics collection job can run on a single table at a time. [#158835][#158835] -- Added a new cluster setting, `sql.schema.auto_unlock.enabled`, that controls whether DDL operations automatically unlock `schema_locked` tables. When set to `false`, DDL on schema-locked tables is blocked unless the user manually unlocks the table first. This allows customers using LDR to enforce `schema_locked` as a hard lock that prevents user-initiated DDL. The default is `true`, preserving existing behavior. [#166471][#166471] -- `ALTER TABLE ... SET LOCALITY` is now fully executed using the declarative schema changer, improving reliability and consistency with other schema change operations. [#161763][#161763] -- Setting `skip_unique_checks = true` on an index now emits a notice warning that unique constraint enforcement is bypassed, with a pointer to the `INSPECT` documentation. [#167405][#167405] -- A database-level changefeed with no tables will periodically poll to check for tables added to the database. The new option `hibernation_polling_frequency` sets the frequency at which the polling occurs, until a table is found, at which point polling ceases. [#156771][#156771] -- Added a new cluster setting `sql.prepared_transactions.unsafe.enabled` (default: `false`) that controls whether `PREPARE TRANSACTION` statements are accepted. This setting is marked unsafe and requires the unsafe setting interlock to change. When disabled, attempting to prepare a transaction returns an error. `COMMIT PREPARED` and `ROLLBACK PREPARED` remain available regardless of this setting to allow cleanup of existing prepared transactions. [#166855][#166855] -- Queries executed via the vectorized engine now display their progress in the `phase` column of `SHOW QUERIES`. Previously, this feature was only available in the row-by-row engine. [#158029][#158029] -- CockroachDB now shows execution statistics (like `execution time`) on `EXPLAIN ANALYZE` output for `render` nodes, which often handle built-in functions. [#161509][#161509] -- The output of `EXPLAIN [ANALYZE]` in non-`VERBOSE` mode is now more succinct. [#153361][#153361] -- Added the `optimizer_inline_any_unnest_subquery` session setting to enable/disable the optimizer rule `InlineAnyProjectSet`. The setting is on by default in v26.2 and later. [#161880][#161880] -- `crdb_internal.datums_to_bytes` is now available in the `information_schema` system catalog as `information_schema.crdb_datums_to_bytes`. [#156963][#156963] -- The `information_schema.crdb_datums_to_bytes` built-in function is now documented. [#160486][#160486] -- Active Session History tables are now accessible via `information_schema.crdb_node_active_session_history` and `information_schema.crdb_cluster_active_session_history`, in addition to the existing `crdb_internal` tables. This improves discoverability when browsing `information_schema` for available metadata. [#164969][#164969] -- Added a `workload_type` column to the `crdb_internal.node_active_session_history` and `crdb_internal.cluster_active_session_history` virtual tables, as well as the corresponding `information_schema` views. The column exposes the type of workload being sampled, with possible values `STATEMENT`, `JOB`, `SYSTEM`, or `UNKNOWN`. [#165866][#165866] + Note that at most one statistics collection job can run on a single table at a time. +- Added a new cluster setting, `sql.schema.auto_unlock.enabled`, that controls whether DDL operations automatically unlock `schema_locked` tables. When set to `false`, DDL on schema-locked tables is blocked unless the user manually unlocks the table first. This allows customers using LDR to enforce `schema_locked` as a hard lock that prevents user-initiated DDL. The default is `true`, preserving existing behavior. +- `ALTER TABLE ... SET LOCALITY` is now fully executed using the declarative schema changer, improving reliability and consistency with other schema change operations. +- Setting `skip_unique_checks = true` on an index now emits a notice warning that unique constraint enforcement is bypassed, with a pointer to the `INSPECT` documentation. +- A database-level changefeed with no tables will periodically poll to check for tables added to the database. The new option `hibernation_polling_frequency` sets the frequency at which the polling occurs, until a table is found, at which point polling ceases. +- Added a new cluster setting `sql.prepared_transactions.unsafe.enabled` (default: `false`) that controls whether `PREPARE TRANSACTION` statements are accepted. This setting is marked unsafe and requires the unsafe setting interlock to change. When disabled, attempting to prepare a transaction returns an error. `COMMIT PREPARED` and `ROLLBACK PREPARED` remain available regardless of this setting to allow cleanup of existing prepared transactions. +- Queries executed via the vectorized engine now display their progress in the `phase` column of `SHOW QUERIES`. Previously, this feature was only available in the row-by-row engine. +- CockroachDB now shows execution statistics (like `execution time`) on `EXPLAIN ANALYZE` output for `render` nodes, which often handle built-in functions. +- The output of `EXPLAIN [ANALYZE]` in non-`VERBOSE` mode is now more succinct. +- Added the `optimizer_inline_any_unnest_subquery` session setting to enable/disable the optimizer rule `InlineAnyProjectSet`. The setting is on by default in v26.2 and later. +- `crdb_internal.datums_to_bytes` is now available in the `information_schema` system catalog as `information_schema.crdb_datums_to_bytes`. +- The `information_schema.crdb_datums_to_bytes` built-in function is now documented. +- Active Session History tables are now accessible via `information_schema.crdb_node_active_session_history` and `information_schema.crdb_cluster_active_session_history`, in addition to the existing `crdb_internal` tables. This improves discoverability when browsing `information_schema` for available metadata. +- Added a `workload_type` column to the `crdb_internal.node_active_session_history` and `crdb_internal.cluster_active_session_history` virtual tables, as well as the corresponding `information_schema` views. The column exposes the type of workload being sampled, with possible values `STATEMENT`, `JOB`, `SYSTEM`, or `UNKNOWN`.

Operational changes

-- The new `cockroach gen dashboard` command generates standardized monitoring dashboards from an embedded configuration file. It outputs a dashboard JSON file for either Datadog (`--tool=datadog`) or Grafana (`--tool=grafana`), with Grafana dashboards using Prometheus queries. The generated dashboards include metrics across Overview, Hardware, Runtime, Networking, SQL, and Storage categories. Use `--output` to set the output file path and `--rollup-interval` to control metric aggregation. [#161050][#161050] -- Statement diagnostics requests with `sampling_probability` and `expires_at` now collect up to 10 bundles (configurable via `sql.stmt_diagnostics.max_bundles_per_request`) instead of a single bundle. Set the cluster setting to `1` to restore single-bundle behavior. [#166159][#166159] -- Logical Data Replication (LDR) now supports hash-sharded indexes and secondary indexes with virtual computed columns. Previously, tables with these index types could not be replicated using LDR. [#161062][#161062] -- Introduced a new cluster setting `kvadmission.store.snapshot_ingest_bandwidth_control.min_rate.enabled`. When this setting is enabled and disk bandwidth-based admission control is active, snapshot ingestion will be admitted at a minimum rate. This prevents snapshot ingestion from being starved by other elastic work. [#159436][#159436] -- Added periodic ASH workload summary logging to the `OPS` channel. Two new cluster settings, `obs.ash.log_interval` (default: `10m`) and `obs.ash.log_top_n` (default: `10`), control how often and how many entries are emitted. Each summary reports the most frequently sampled workloads grouped by event type, event name, and workload ID, providing visibility into workload patterns that previously existed only in memory. [#165093][#165093] -- A new cluster setting, `server.gc_assist.enabled`, allows operators to dynamically disable GC assist in CockroachDB's forked Go runtime. By default, it follows the `GODEBUG=gcnoassist` flag. A new metric, `sys.gc.assist.enabled`, reports the current state (`1` = enabled, `0` = disabled). [#166555][#166555] -- Added the opt-in cluster setting `server.oidc_authentication.tls_insecure_skip_verify.enabled` to skip TLS certificate verification for OIDC provider connections. [#164514][#164514] -- Changefeeds now support the `partition_alg` option for specifying a Kafka partitioning algorithm. Currently `fnv-1a` (default) and `murmur2` are supported. The option is only valid on Kafka v2 sinks. This is protected by the cluster setting `changefeed.partition_alg.enabled`. An example usage: `SET CLUSTER SETTING changefeed.partition_alg.enabled=true; CREATE CHANGEFEED ... INTO 'kafka://...' WITH partition_alg='murmur2';`. Note that if a changefeed is created using the `murmur2` algorithm, and then the cluster setting is disabled, the changefeed will continue using the `murmur2` algorithm unless the changefeed is altered to use a different `partition_alg`. [#161265][#161265] -- Added a new cluster setting `changefeed.kafka.max_request_size` and a per-changefeed `Flush.MaxBytes` option in the Kafka sink config to control the maximum size of record batches sent to Kafka by the v2 sink. Lowering this from the default of 256 MiB can prevent spurious message-too-large errors when multiple batches are coalesced into a single broker request. [#166740][#166740] -- Changefeed ranges are now more accurately reported as lagging. [#163427][#163427] -- Promoted the following admission control metrics to `ESSENTIAL` status, making them more discoverable in monitoring dashboards and troubleshooting workflows: `admission.wait_durations.*` (`sql-kv-response`, `sql-sql-response`, `elastic-stores`, `elastic-cpu`), `admission.granter.*_exhausted_duration.kv` (`slots`, `io_tokens`, `elastic_io_tokens`), `admission.elastic_cpu.nanos_exhausted_duration`, `kvflowcontrol.eval_wait.*.duration` (`elastic`, `regular`), and `kvflowcontrol.send_queue.bytes`. These metrics track admission control wait times, resource exhaustion, and replication flow control, providing visibility into cluster health and performance throttling. [#164827][#164827] -- Added the `kv.protectedts.protect`, `kv.protectedts.release`, `kv.protectedts.update_timestamp`, `kv.protectedts.get_record`, and `kv.protectedts.mark_verified` metrics to track protected timestamp storage operations. These metrics help diagnose issues with excessive protected timestamp churn and operational errors. Each operation tracks both successful completions (`.success`) and failures (`.failed`, such as `ErrExists` or `ErrNotExists`). Operators can monitor these metrics to understand PTS system behavior and identify performance issues related to backups, changefeeds, and other features that use protected timestamps. [#160129][#160129] -- Added a new metric `sql.rls.policies_applied.count` that tracks the number of SQL statements where row-level security (RLS) policies were applied during query planning. [#164405][#164405] -- Added a new metric `sql.query.with_statement_hints.count` that is incremented whenever a statement is executed with one or more external statement hints applied. An example of an external statement hint is an inline-hints rewrite rule added by calling `information_schema.crdb_rewrite_inline_hints`. [#161043][#161043] -- Added two new metrics, `auth.cert.san.conn.total` and `auth.cert.san.conn.success`, to track SAN-based certificate authentication attempts and successes. [#166829][#166829] -- External connections can now be used with online restore. [#159090][#159090] -- Backup schedules that utilize the `revision_history` option now apply that option only to incremental backups triggered by that schedule, rather than duplicating the revision history in the full backups as well. [#162105][#162105] -- Added a new structured event of type `rewrite_inline_hints` that is emitted when an inline-hints rewrite rule is added using `information_schema.crdb_rewrite_inline_hints`. This event is written to both the event log and the `OPS` channel. [#160901][#160901] -- Jobs now clear their running status messages upon successful completion. [#163765][#163765] -- When hash-based redaction is enabled in the logging configuration, usernames in authentication logs now produce deterministic hashes instead of being fully redacted. This lets support engineers correlate the same user across multiple log entries without revealing the actual values. [#165804][#165804] -- Red Hat certified CockroachDB container images are now published as multi-arch manifests supporting `linux/amd64`, `linux/arm64`, and `linux/s390x`. Previously only `linux/amd64` was published to the Red Hat registry. [#165725][#165725] +- The new `cockroach gen dashboard` command generates standardized monitoring dashboards from an embedded configuration file. It outputs a dashboard JSON file for either Datadog (`--tool=datadog`) or Grafana (`--tool=grafana`), with Grafana dashboards using Prometheus queries. The generated dashboards include metrics across Overview, Hardware, Runtime, Networking, SQL, and Storage categories. Use `--output` to set the output file path and `--rollup-interval` to control metric aggregation. +- Statement diagnostics requests with `sampling_probability` and `expires_at` now collect up to 10 bundles (configurable via `sql.stmt_diagnostics.max_bundles_per_request`) instead of a single bundle. Set the cluster setting to `1` to restore single-bundle behavior. +- Logical Data Replication (LDR) now supports hash-sharded indexes and secondary indexes with virtual computed columns. Previously, tables with these index types could not be replicated using LDR. +- Introduced a new cluster setting `kvadmission.store.snapshot_ingest_bandwidth_control.min_rate.enabled`. When this setting is enabled and disk bandwidth-based admission control is active, snapshot ingestion will be admitted at a minimum rate. This prevents snapshot ingestion from being starved by other elastic work. +- Added periodic ASH workload summary logging to the `OPS` channel. Two new cluster settings, `obs.ash.log_interval` (default: `10m`) and `obs.ash.log_top_n` (default: `10`), control how often and how many entries are emitted. Each summary reports the most frequently sampled workloads grouped by event type, event name, and workload ID, providing visibility into workload patterns that previously existed only in memory. +- A new cluster setting, `server.gc_assist.enabled`, allows operators to dynamically disable GC assist in CockroachDB's forked Go runtime. By default, it follows the `GODEBUG=gcnoassist` flag. A new metric, `sys.gc.assist.enabled`, reports the current state (`1` = enabled, `0` = disabled). +- Added the opt-in cluster setting `server.oidc_authentication.tls_insecure_skip_verify.enabled` to skip TLS certificate verification for OIDC provider connections. +- Changefeeds now support the `partition_alg` option for specifying a Kafka partitioning algorithm. Currently `fnv-1a` (default) and `murmur2` are supported. The option is only valid on Kafka v2 sinks. This is protected by the cluster setting `changefeed.partition_alg.enabled`. An example usage: `SET CLUSTER SETTING changefeed.partition_alg.enabled=true; CREATE CHANGEFEED ... INTO 'kafka://...' WITH partition_alg='murmur2';`. Note that if a changefeed is created using the `murmur2` algorithm, and then the cluster setting is disabled, the changefeed will continue using the `murmur2` algorithm unless the changefeed is altered to use a different `partition_alg`. +- Added a new cluster setting `changefeed.kafka.max_request_size` and a per-changefeed `Flush.MaxBytes` option in the Kafka sink config to control the maximum size of record batches sent to Kafka by the v2 sink. Lowering this from the default of 256 MiB can prevent spurious message-too-large errors when multiple batches are coalesced into a single broker request. +- Changefeed ranges are now more accurately reported as lagging. +- Promoted the following admission control metrics to `ESSENTIAL` status, making them more discoverable in monitoring dashboards and troubleshooting workflows: `admission.wait_durations.*` (`sql-kv-response`, `sql-sql-response`, `elastic-stores`, `elastic-cpu`), `admission.granter.*_exhausted_duration.kv` (`slots`, `io_tokens`, `elastic_io_tokens`), `admission.elastic_cpu.nanos_exhausted_duration`, `kvflowcontrol.eval_wait.*.duration` (`elastic`, `regular`), and `kvflowcontrol.send_queue.bytes`. These metrics track admission control wait times, resource exhaustion, and replication flow control, providing visibility into cluster health and performance throttling. +- Added the `kv.protectedts.protect`, `kv.protectedts.release`, `kv.protectedts.update_timestamp`, `kv.protectedts.get_record`, and `kv.protectedts.mark_verified` metrics to track protected timestamp storage operations. These metrics help diagnose issues with excessive protected timestamp churn and operational errors. Each operation tracks both successful completions (`.success`) and failures (`.failed`, such as `ErrExists` or `ErrNotExists`). Operators can monitor these metrics to understand PTS system behavior and identify performance issues related to backups, changefeeds, and other features that use protected timestamps. +- Added a new metric `sql.rls.policies_applied.count` that tracks the number of SQL statements where row-level security (RLS) policies were applied during query planning. +- Added a new metric `sql.query.with_statement_hints.count` that is incremented whenever a statement is executed with one or more external statement hints applied. An example of an external statement hint is an inline-hints rewrite rule added by calling `information_schema.crdb_rewrite_inline_hints`. +- Added two new metrics, `auth.cert.san.conn.total` and `auth.cert.san.conn.success`, to track SAN-based certificate authentication attempts and successes. +- External connections can now be used with online restore. +- Backup schedules that utilize the `revision_history` option now apply that option only to incremental backups triggered by that schedule, rather than duplicating the revision history in the full backups as well. +- Added a new structured event of type `rewrite_inline_hints` that is emitted when an inline-hints rewrite rule is added using `information_schema.crdb_rewrite_inline_hints`. This event is written to both the event log and the `OPS` channel. +- Jobs now clear their running status messages upon successful completion. +- When hash-based redaction is enabled in the logging configuration, usernames in authentication logs now produce deterministic hashes instead of being fully redacted. This lets support engineers correlate the same user across multiple log entries without revealing the actual values. +- Red Hat certified CockroachDB container images are now published as multi-arch manifests supporting `linux/amd64`, `linux/arm64`, and `linux/s390x`. Previously only `linux/amd64` was published to the Red Hat registry.

Command-line changes

-- The `cockroach debug tsdump` command now supports ZSTD encoding via `--format=raw --encoding=zstd`. This generates compressed tsdump files that are approximately 85% smaller than raw format. The `tsdump upload` command automatically detects and decompresses ZSTD files, allowing direct upload without manual decompression. [#161998][#161998] -- The `cockroach debug zip` command's `--include-files` and `--exclude-files` flags now support full zip path patterns. Patterns containing `/` are matched against the full path within the zip archive (e.g., `--include-files='debug/nodes/1/*.json'`). Patterns without `/` continue to match the base file name as before. [#163266][#163266] -- Added the `--exclude-log-severities` flag to `cockroach debug zip` that filters log entries by severity server-side. For example, `--exclude-log-severities=INFO` excludes all `INFO`-level log entries from the collected log files, which can significantly reduce zip file size for large clusters. Valid severity names are `INFO`, `WARNING`, `ERROR`, and `FATAL`. The flag accepts a comma-delimited list or can be specified multiple times. [#165802][#165802] -- Added a `--list-dbs` flag to `workload init workload_generator` that lists all user databases found in debug logs without initializing tables. This helps users discover which databases are available in the debug zip before running the full init command. [#163930][#163930] +- The `cockroach debug tsdump` command now supports ZSTD encoding via `--format=raw --encoding=zstd`. This generates compressed tsdump files that are approximately 85% smaller than raw format. The `tsdump upload` command automatically detects and decompresses ZSTD files, allowing direct upload without manual decompression. +- The `cockroach debug zip` command's `--include-files` and `--exclude-files` flags now support full zip path patterns. Patterns containing `/` are matched against the full path within the zip archive (e.g., `--include-files='debug/nodes/1/*.json'`). Patterns without `/` continue to match the base file name as before. +- Added the `--exclude-log-severities` flag to `cockroach debug zip` that filters log entries by severity server-side. For example, `--exclude-log-severities=INFO` excludes all `INFO`-level log entries from the collected log files, which can significantly reduce zip file size for large clusters. Valid severity names are `INFO`, `WARNING`, `ERROR`, and `FATAL`. The flag accepts a comma-delimited list or can be specified multiple times. +- Added a `--list-dbs` flag to `workload init workload_generator` that lists all user databases found in debug logs without initializing tables. This helps users discover which databases are available in the debug zip before running the full init command.

DB Console changes

-- Added a new time-series bar graph called **Plan Distribution Over Time** to the **Statement Fingerprint** page, on the **Explain Plans** tab. It shows which execution plans were used in each time interval, helping detect shifts in query plan distributions. [#161011][#161011] -- The **SQL Activity** > **Sessions** page now defaults the **Session Status** filter to **Active, Idle** to exclude closed sessions. [#160576][#160576] +- Added a new time-series bar graph called **Plan Distribution Over Time** to the **Statement Fingerprint** page, on the **Explain Plans** tab. It shows which execution plans were used in each time interval, helping detect shifts in query plan distributions. +- The **SQL Activity** > **Sessions** page now defaults the **Session Status** filter to **Active, Idle** to exclude closed sessions.

Bug fixes

-- Fixed a bug where IMPORT with AVRO data using OCF format could silently lose data if the underlying storage (e.g., S3) returned an error during read. Such errors are now properly reported. Other formats (specified via `data_as_binary_records` and `data_as_json_records` options) are unaffected. The bug has been present since about v20.1. [#161318][#161318] -- Fixed a bug where import rollback could incorrectly revert data in a table that was already online. This could only occur if an import job was cancelled or failed after the import had already succeeded and the table was made available for use. [#159627][#159627] -- Fixed a bug where concurrent updates to a table using multiple column families during a partial index creation could result in data loss, incorrect `NULL` values, or validation failures in the resulting index. [#166325][#166325] -- Fixed a bug where transient I/O errors (such as cloud storage network timeouts) during split or merge trigger evaluation were misidentified as replica corruption, causing the node to crash. These errors now correctly fail the operation, which is retried automatically. [#167377][#167377] -- Fixed a bug that could cause row sampling for table statistics to crash a node due to a data race when processing a collated string column with values larger than 400 bytes. This bug has existed since before v23.1. [#165260][#165260] -- Previously, v26.1.0-beta.1 and v26.1.0-beta.2 could encounter a rare process crash when running TTL jobs. This has been fixed. [#160674][#160674] -- Fixed a crash (`traceRegion: alloc too large`) that could occur when Go's execution tracer was enabled and a range cache lookup used a key longer than about 64 KB. [#166705][#166705] -- Fixed a bug where CockroachDB could crash when handling decimals with negative scales via the extended PGWire protocol. An error is now returned instead, matching PostgreSQL behavior. [#160499][#160499] -- Fixed a bug that could cause a panic during changefeed startup if an error occurred while initializing the metrics controller. [#159431][#159431] -- Fixed a deadlock that could occur when a statistics creation task panicked. [#160348][#160348] -- The fix for `node descriptor not found` errors for changefeeds with `execution_locality` filters in CockroachDB Basic and Standard clusters is now controlled by cluster setting `sql.instance_info.use_instance_resolver.enabled` (default: `true`). [#163947][#163947] -- Statistics histogram collection is now skipped for JSON columns referenced in partial index predicates, except when `sql.stats.non_indexed_json_histograms.enabled` is true (default: false). [#164477][#164477] -- CockroachDB could previously encounter internal errors like `column statistics cannot be determined for empty column set` and `invalid union` in some edge cases with `UNION`, `EXCEPT`, and `INTERCEPT`. This has now been fixed. [#150706][#150706] -- Fixed a bug that could cause a scan over a secondary index to read significantly more KVs than necessary in order to satisfy a limit when the scanned index had more than one column family. [#156672][#156672] -- Fixed a bug where a query predicate could be ignored when all of the following conditions were met: the query used a lookup join to an index, the predicate constrained a column to multiple values (e.g., `column IN (1, 2)`), and the constrained column followed one or more columns with optional multi-value constraints in the index. This bug was introduced in v24.3.0. [#159722][#159722] -- Fixed an error that occurred when using generic query plans that generates a lookup join on indexes containing identity computed columns. [#162036][#162036] -- Fixed a bug that prevented the `optimizer_min_row_count` setting from applying to anti-join expressions, which could lead to bad query plans. The fix is gated behind `optimizer_use_min_row_count_anti_join_fix`, which is on by default on v26.2 and later, and off by default in earlier versions. [#163244][#163244] -- Fixed an optimizer limitation that prevented index usage on computed columns when querying through views or subqueries containing JSON fetch expressions (such as `->`, `->>`, `#>`, or `#>>`). Queries that project JSON expressions matching indexed computed column definitions now correctly use indexes instead of performing full table scans, significantly improving performance for JSON workloads. [#163395][#163395] -- Statements within a UDF or stored procedure similar to (1) and (2) where the limit/offset is a reference to an argument of the UDF/SP. [#163500][#163500] -- Fixed an issue where `ORDER BY` expressions containing subqueries with non-default `NULLS` ordering (e.g., `NULLS LAST` for `ASC`, `NULLS FIRST` for `DESC`) could cause an error during query planning. [#163230][#163230] -- Fixed a bug where CockroachDB did not always promptly respond to the statement timeout when performing a hash join with `ON` filter that is mostly `false`. [#164879][#164879] -- 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] -- Fixed a bug where creating a routine could create unnecessary column dependencies when the routine references columns through CHECK constraints (including those for RLS policies and hash-sharded indexes) or partial index predicates. These unnecessary dependencies prevented dropping the column without first dropping the routine. The fix is gated behind the session setting `use_improved_routine_deps_triggers_and_computed_cols`, which is off by default prior to v26.1. [#159126][#159126] -- Fixed a bug that allowed columns to be dropped despite being referenced by a routine. This could occur when a column was only referenced as a target column in the `SET` clause of an `UPDATE` statement within the routine. This fix only applies to newly-created routines. In versions prior to v26.1, the fix must be enabled by setting the session variable `prevent_update_set_column_drop`. [#158935][#158935] -- Fixed a bug that caused `SHOW CREATE FUNCTION` to error when the function body contained casts from columns to user-defined types. [#159642][#159642] -- Fixed a bug in which PL/pgSQL UDFs with many `IF` statements would cause a timeout and/or OOM when executed from a prepared statement. This bug was introduced in v23.2.22, v24.1.15, v24.3.9, v25.1.2, and v25.2.0. [#162512][#162512] -- Fixed a bug where running `EXPLAIN ANALYZE (DEBUG)` on a query that invokes a UDF with many blocks could cause out-of-memory errors (OOMs). [#166132][#166132] -- Fixed a bug where `ALTER FUNCTION ... RENAME TO` and `ALTER PROCEDURE ... RENAME TO` could create duplicate functions in non-public schemas. [#166681][#166681] -- Fixed a race condition/conflict between concurrent `ALTER FUNCTION ... SET SCHEMA` and `DROP SCHEMA` operations. [#164043][#164043] -- Fixed a bug where schema changes could fail after a `RESTORE` due to missing session data. [#159176][#159176] -- Fixed a bug where schema changes adding a `NOT NULL` constraint could enter an infinite retry loop if a row violated the constraint and contained certain content (e.g., `"EOF"`). Such errors are now correctly classified and don't cause retries. [#160780][#160780] -- Fixed a bug where `CREATE INDEX` on a table with `PARTITION ALL BY` would fail if the partition columns were explicitly included in the primary key definition. [#161083][#161083] -- Fixed a bug that caused `ALTER INDEX ... PARTITION BY` statements to fail on a nonexistent index even if `IF EXISTS` was used. [#163378][#163378] -- `ALTER TABLE ... ALTER PRIMARY KEY USING COLUMNS (col) USING HASH` is now correctly treated as a no-op when the table already has a matching hash-sharded primary key, instead of attempting an unnecessary schema change. [#164557][#164557] -- Fixed a bug where `ALTER TABLE ... ALTER COLUMN ... SET DATA TYPE` from an unbounded string or bit type to a bounded type with a length `>= 64` (for example, `STRING` to `STRING(100)`) would skip validating existing data against the new length constraint. This could leave rows in the table that violate the column's type, with values longer than the specified limit. [#164739][#164739] -- Context cancellation is now surfaced if a `statement_timeout` occurs while waiting for a schema change. [#167112][#167112] -- Fixed a bug that could cause changefeeds using Kafka v1 sinks to hang when the changefeed was cancelled. [#162058][#162058] -- Fixed an issue where changefeeds with `execution_locality` filters could fail in multi-tenant clusters with `node descriptor not found` errors. [#163507][#163507] -- Fixed a bug where running changefeeds with `envelope=enriched` and `enriched_properties` containing `source` would cause failures during a cluster upgrade. [#163885][#163885] -- Fixed a bug introduced in v25.4+ where setting `min_checkpoint_frequency` to `0` prevented changefeeds from advancing their resolved timestamp (high-water mark) and emitting resolved messages. Note that setting `min_checkpoint_frequency` to lower than `500ms` is **not** recommended as it may cause degraded changefeed performance. [#164765][#164765] -- Changefeed retry backoff now resets when the changefeed's resolved timestamp (high-water mark) advances between retries, in addition to the existing time-based reset (configured by `changefeed.retry_backoff_reset`). This prevents transient rolling restarts from causing changefeeds to fall behind because of excessive backoff. [#164933][#164933] -- Fixed a bug where `RESTORE` with `skip_missing_foreign_keys` could fail with an internal error if the restored table had an in-progress schema change that added a foreign key constraint whose referenced table was not included in the restore. [#164757][#164757] -- Fixed a bug where incremental backups taken after downgrading a mixed-version cluster to v25.4 could result in inconsistent backup indexes. [#164301][#164301] -- Fixed a bug where restoring a database backup containing default privileges that referenced non-existent users would leave dangling user references in the restored database descriptor. [#166183][#166183] -- Fixed a bug where AVRO file imports of data with JSON or binary records could hang indefinitely when encountering stream errors from cloud storage (such as `HTTP/2` `CANCEL` errors). Import jobs will now properly fail with an error instead of hanging. [#161290][#161290] -- Invalid `avro_schema_prefix` is now caught during statement time. The prefix must start with `[A-Za-z_]` and subsequently contain only `[A-Za-z0-9_]`, as specified in the [Avro specification](https://avro.apache.org/docs/1.8.1/spec.html). [#159869][#159869] -- Fixed a bug where `IMPORT` error messages could include unredacted cloud storage credentials from the source URI. Credentials are now stripped from URIs before they appear in error messages. [#164881][#164881] -- Reduced contention when dropping descriptors or running concurrent imports. [#161941][#161941] -- Fixed a bug where rolling back a transaction that had just rolled back a savepoint would block other transactions accessing the same rows for five seconds. [#160346][#160346] -- Fixed a bug where multi-statement explicit transactions using `SAVEPOINT` to recover from certain errors (like duplicate key-value violations) could lose writes performed before the savepoint was created, in rare cases when buffered writes were enabled (off by default). This bug was introduced in v25.2. [#161972][#161972] -- Fixed a race condition that could occur during context cancellation of an incoming snapshot. [#159403][#159403] -- Fixed a bug which could cause prepared statements to fail with the error message `non-const expression` when they contained filters with stable functions. This bug has been present since 25.4.0. [#159201][#159201] -- Fixed prepared statements failing with `version mismatch` errors when user-defined types are modified between preparation and execution. Prepared statements now automatically detect UDT changes and re-parse to use current type definitions. [#161827][#161827] -- Fixed an internal error `could not find format code for column N` that occurred when executing `EXPLAIN ANALYZE EXECUTE` statements via JDBC or other clients using the PostgreSQL binary protocol. [#162115][#162115] -- Fixed a bug where CockroachDB returned "cached plan must not change result type" errors during the `Execute` phase instead of the `Bind` phase of the extended pgwire protocol. This caused compatibility issues with drivers like pgx that expect the error before `BindComplete` is sent, particularly when using batch operations with prepared statements after schema changes. [#164406][#164406] -- Fixed a bug where CockroachDB could crash when handling decimals with negative scales via the extended PGWire protocol. An error is now returned instead, matching PostgreSQL behavior. [#160499][#160499] -- Fixed a bug where the index definition shown in `pg_indexes` for hash sharded indexes with `STORING` columns was not valid SQL. The `STORING` clause now appears in the correct position. [#161882][#161882] -- Fixed a bug where concurrent updates to a table using multiple column families during a partial index creation could result in data loss, incorrect `NULL` values, or validation failures in the resulting index. [#166325][#166325] -- Fixed a bug where statement bundles were missing `CREATE TYPE` statements for user-defined types used as array column types. [#162357][#162357] -- Fixed a rare data race during parallel constraint checks where a fresh descriptor collection could resolve a stale enum type version. This bug was introduced in v26.1.0. [#163883][#163883] -- Fixed a bug where creating a table with a user-defined type column failed when the user had `USAGE` privilege on the base type but not on its implicit array type. The array type now inherits privileges from the base type, matching PostgreSQL behavior. [#164471][#164471] -- Fixed a bug where rolling back a `CREATE TABLE` that referenced user-defined types or sequences would leave orphaned back-references on the type and sequence descriptors, causing them to appear in `crdb_internal.invalid_objects` after the table was GC'd. [#166223][#166223] -- Fixed a race condition where queries run after revoking `BYPASSRLS` could return wrong results because cached plans failed to notice the change immediately. [#159354][#159354] -- Fixed a bug where `DROP TABLE ... CASCADE` would incorrectly drop tables that had triggers or row-level security (RLS) policies referencing the dropped table. Now only the triggers/policies are dropped, and the tables owning them remain intact. [#161914][#161914] -- Fixed a bug where `EXPLAIN ANALYZE (DEBUG)` statement bundles did not include triggers, their functions, or tables modified by those triggers. The bundle's `schema.sql` file now contains the `CREATE TRIGGER`, `CREATE FUNCTION`, and `CREATE TABLE` statements needed to fully reproduce the query environment when triggers are involved. [#163584][#163584] -- Fixed a bug where dropped columns appeared in `pg_catalog.pg_attribute` with the `atttypid` column equal to 2283 (`anyelement`). Now this column will be 0 for dropped columns. This matches PostgreSQL behavior, where `atttypid=0` is used for dropped columns. [#163950][#163950] -- Fixed a bug where temporary tables created in one session could fail to appear in `pg_catalog` queries from another session because the parent temporary schema could not be resolved by ID. [#165395][#165395] -- The `information_schema.crdb_node_active_session_history` and `information_schema.crdb_cluster_active_session_history` views now include the `app_name` column, matching the underlying `crdb_internal` tables. [#165367][#165367] -- An error will now be reported when the database provided as the argument to a `SHOW REGIONS` or `SHOW SUPER REGIONS` statement does not exist. This bug had been present since version v21.1. [#161014][#161014] -- Dropping a region from the system database no longer leaves `REGIONAL BY TABLE` system tables referencing the removed region, preventing descriptor validation errors. [#163503][#163503] -- Fixed a bug where super region zone configurations did not constrain all replicas to regions within the super region. [#164285][#164285] -- Fixed a bug that had previously allowed the primary and secondary to be in separate super regions. [#164943][#164943] -- Fixed a bug where converting a table from `REGIONAL BY ROW` to `GLOBAL` would not clear the `skip_unique_checks` storage parameter on the primary key, even though implicit partitioning was removed. [#167484][#167484] -- Fixed a bug where `TRUNCATE` did not behave correctly with respect to the `schema_locked` storage parameter, and was not being blocked when Logical Data Replication (LDR) was in use. This behavior was incorrect and has been fixed. [#159378][#159378] -- The PCR job now switches into the cutover phase more promptly after a failover is requested, terminating the replication phase more quickly and more reliably when components of the ingestion process are hung due to network errors. [#166778][#166778] -- Fixed an issue where long-running transactions with many statements could cause unbounded memory growth in the SQL statistics subsystem. When a transaction includes a large number of statements, the SQL statistics ingester now automatically flushes buffered statistics before the transaction commits. As a side effect, the flushed statement statistics might not have an associated transaction fingerprint ID because the transaction has not yet completed. In such cases, the transaction fingerprint ID cannot be backfilled after the fact. [#158527][#158527] -- Fixed a deadlock that could occur when a statistics creation task panicked. [#160348][#160348] -- Fixed a bug that could cause row sampling for table statistics to crash a node due to a data race when processing a collated string column with values larger than 400 bytes. This bug has existed since before v23.1. [#165260][#165260] -- Fixed a bug where CockroachDB might not have respected the table-level parameters `sql_stats_automatic_full_collection_enabled` and `sql_stats_automatic_partial_collection_enabled` and defaulted to using the corresponding cluster settings when deciding whether to perform automatic statistics collection on a table. [#167681][#167681] -- Previously, v26.1.0-beta.1 and v26.1.0-beta.2 could encounter a rare process crash when running TTL jobs. This has been fixed. [#160674][#160674] -- Fixed a bug introduced in v26.1.0-beta.1 in which row-level TTL jobs could encounter GC threshold errors if each node had a large number of spans to process. [#161979][#161979] -- Fixed a bug where an error would occur when defining a foreign key on a hash-sharded primary key without explicitly providing the primary key columns. [#162608][#162608] -- Fixed a rare race condition where `SHOW CREATE TABLE` could fail with a `"relation does not exist"` error if a table referenced by a foreign key was being concurrently dropped. [#164942][#164942] -- Fixed a bug in the legacy schema changer where rolling back a `CREATE TABLE` with inline `FOREIGN KEY` constraints could leave orphaned foreign key back-references on the referenced table, causing descriptor validation errors. [#165551][#165551] -- Fixed a bug where the `lock_timeout` and `deadlock_timeout` session settings were not honored by FK existence checks performed during insert fast path execution. This could cause inserts to block indefinitely on conflicting locks instead of returning a timeout error. [#167532][#167532] -- JWT authentication now returns a clear error when HTTP requests to fetch JWKS or OpenID configuration return non-`2xx` status codes, instead of silently passing the response body to the JSON parser. [#158294][#158294] -- Fixed a data race that could cause certificate expiration metrics (`security.certificate.expiration.node-client`, `security.certificate.expiration.client-tenant`, `security.certificate.expiration.ca-client-tenant` and their TTL counterparts) to not update after certificate rotation via `SIGHUP`. [#166664][#166664] -- Fixed a bug in which inline-hints rewrite rules created with `information_schema.crdb_rewrite_inline_hints` were not correctly applied to statements run with `EXPLAIN ANALYZE`. This bug was introduced in v26.1.0-alpha.2. [#161273][#161273] -- Fixed a bug that prevented successfully injecting hints using `information_schema.crdb_rewrite_inline_hints` for `INSERT`, `UPSERT`, `UPDATE`, and `DELETE` statements. This bug had existed since hint injection was introduced in v26.1.0-alpha.2. [#161773][#161773] -- The `ascii` built-in function now returns `0` when the input is the empty string instead of an error. [#159178][#159178] -- Previously, CockroachDB could hit an internal error when evaluating built-in functions with `'{}'` as an argument (without explicit type casts, such as on a query like `SELECT cardinality('{}');`). This is now fixed and a regular error is returned instead (matching PostgreSQL behavior). [#161835][#161835] -- Fixed a bug where comments associated with constraints were left behind after the column and constraint were dropped. [#159180][#159180] -- Fixed a memory accounting issue that could occur when a lease expired due to a SQL liveness session-based timeout. [#159527][#159527] -- Fixed a bug where the `pprof` UI endpoints for allocs, heap, block, and mutex profiles ignored the seconds parameter and returned immediate snapshots instead of delta profiles. [#160608][#160608] -- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using `json` or `json-compact` formatting. This bug was introduced in v24.1. [#163224][#163224] -- Fixed a bug in the TPC-C workload where long-duration runs (>= 4 days or indefinite) would experience periodic performance degradation every 24 hours due to excessive concurrent `UPDATE` statements resetting warehouse and district year-to-date values. [#159286][#159286] -- Fixed a bug in `appBatchStats.merge` where the `numEmptyEntries` field was not being properly accumulated when merging statistics. This could result in incorrect statistics tracking for empty Raft log entries. [#164671][#164671] -- Fixed a bug where descriptor version fetching could be incorrectly throttled by the elastic CPU limiter, potentially leading to increased query latency or timeouts under high CPU load. [#166810][#166810] -- Fixed a bug where transient I/O errors (such as cloud storage network timeouts) during split or merge trigger evaluation were misidentified as replica corruption, causing the node to crash. These errors now correctly fail the operation, which is retried automatically. [#167377][#167377] -- Fixed a bug where executing a mutation in a subquery (e.g., as a CTE) could cause the "rows written" metrics like `sql.statements.index_rows_written.count` and `sql.statements.index_bytes_written.count` to not be incremented correctly. [#167432][#167432] +- Fixed a bug where IMPORT with AVRO data using OCF format could silently lose data if the underlying storage (e.g., S3) returned an error during read. Such errors are now properly reported. Other formats (specified via `data_as_binary_records` and `data_as_json_records` options) are unaffected. The bug has been present since about v20.1. +- Fixed a bug where import rollback could incorrectly revert data in a table that was already online. This could only occur if an import job was cancelled or failed after the import had already succeeded and the table was made available for use. +- Fixed a bug where concurrent updates to a table using multiple column families during a partial index creation could result in data loss, incorrect `NULL` values, or validation failures in the resulting index. +- Fixed a bug where transient I/O errors (such as cloud storage network timeouts) during split or merge trigger evaluation were misidentified as replica corruption, causing the node to crash. These errors now correctly fail the operation, which is retried automatically. +- Fixed a bug that could cause row sampling for table statistics to crash a node due to a data race when processing a collated string column with values larger than 400 bytes. This bug has existed since before v23.1. +- Previously, v26.1.0-beta.1 and v26.1.0-beta.2 could encounter a rare process crash when running TTL jobs. This has been fixed. +- Fixed a crash (`traceRegion: alloc too large`) that could occur when Go's execution tracer was enabled and a range cache lookup used a key longer than about 64 KB. +- Fixed a bug where CockroachDB could crash when handling decimals with negative scales via the extended PGWire protocol. An error is now returned instead, matching PostgreSQL behavior. +- Fixed a bug that could cause a panic during changefeed startup if an error occurred while initializing the metrics controller. +- Fixed a deadlock that could occur when a statistics creation task panicked. +- The fix for `node descriptor not found` errors for changefeeds with `execution_locality` filters in CockroachDB Basic and Standard clusters is now controlled by cluster setting `sql.instance_info.use_instance_resolver.enabled` (default: `true`). +- Statistics histogram collection is now skipped for JSON columns referenced in partial index predicates, except when `sql.stats.non_indexed_json_histograms.enabled` is true (default: false). +- CockroachDB could previously encounter internal errors like `column statistics cannot be determined for empty column set` and `invalid union` in some edge cases with `UNION`, `EXCEPT`, and `INTERCEPT`. This has now been fixed. +- Fixed a bug that could cause a scan over a secondary index to read significantly more KVs than necessary in order to satisfy a limit when the scanned index had more than one column family. +- Fixed a bug where a query predicate could be ignored when all of the following conditions were met: the query used a lookup join to an index, the predicate constrained a column to multiple values (e.g., `column IN (1, 2)`), and the constrained column followed one or more columns with optional multi-value constraints in the index. This bug was introduced in v24.3.0. +- Fixed an error that occurred when using generic query plans that generates a lookup join on indexes containing identity computed columns. +- Fixed a bug that prevented the `optimizer_min_row_count` setting from applying to anti-join expressions, which could lead to bad query plans. The fix is gated behind `optimizer_use_min_row_count_anti_join_fix`, which is on by default on v26.2 and later, and off by default in earlier versions. +- Fixed an optimizer limitation that prevented index usage on computed columns when querying through views or subqueries containing JSON fetch expressions (such as `->`, `->>`, `#>`, or `#>>`). Queries that project JSON expressions matching indexed computed column definitions now correctly use indexes instead of performing full table scans, significantly improving performance for JSON workloads. +- Statements within a UDF or stored procedure similar to (1) and (2) where the limit/offset is a reference to an argument of the UDF/SP. +- Fixed an issue where `ORDER BY` expressions containing subqueries with non-default `NULLS` ordering (e.g., `NULLS LAST` for `ASC`, `NULLS FIRST` for `DESC`) could cause an error during query planning. +- Fixed a bug where CockroachDB did not always promptly respond to the statement timeout when performing a hash join with `ON` filter that is mostly `false`. +- 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`. +- Fixed a bug where creating a routine could create unnecessary column dependencies when the routine references columns through CHECK constraints (including those for RLS policies and hash-sharded indexes) or partial index predicates. These unnecessary dependencies prevented dropping the column without first dropping the routine. The fix is gated behind the session setting `use_improved_routine_deps_triggers_and_computed_cols`, which is off by default prior to v26.1. +- Fixed a bug that allowed columns to be dropped despite being referenced by a routine. This could occur when a column was only referenced as a target column in the `SET` clause of an `UPDATE` statement within the routine. This fix only applies to newly-created routines. In versions prior to v26.1, the fix must be enabled by setting the session variable `prevent_update_set_column_drop`. +- Fixed a bug that caused `SHOW CREATE FUNCTION` to error when the function body contained casts from columns to user-defined types. +- Fixed a bug in which PL/pgSQL UDFs with many `IF` statements would cause a timeout and/or OOM when executed from a prepared statement. This bug was introduced in v23.2.22, v24.1.15, v24.3.9, v25.1.2, and v25.2.0. +- Fixed a bug where running `EXPLAIN ANALYZE (DEBUG)` on a query that invokes a UDF with many blocks could cause out-of-memory errors (OOMs). +- Fixed a bug where `ALTER FUNCTION ... RENAME TO` and `ALTER PROCEDURE ... RENAME TO` could create duplicate functions in non-public schemas. +- Fixed a race condition/conflict between concurrent `ALTER FUNCTION ... SET SCHEMA` and `DROP SCHEMA` operations. +- Fixed a bug where schema changes could fail after a `RESTORE` due to missing session data. +- Fixed a bug where schema changes adding a `NOT NULL` constraint could enter an infinite retry loop if a row violated the constraint and contained certain content (e.g., `"EOF"`). Such errors are now correctly classified and don't cause retries. +- Fixed a bug where `CREATE INDEX` on a table with `PARTITION ALL BY` would fail if the partition columns were explicitly included in the primary key definition. +- Fixed a bug that caused `ALTER INDEX ... PARTITION BY` statements to fail on a nonexistent index even if `IF EXISTS` was used. +- `ALTER TABLE ... ALTER PRIMARY KEY USING COLUMNS (col) USING HASH` is now correctly treated as a no-op when the table already has a matching hash-sharded primary key, instead of attempting an unnecessary schema change. +- Fixed a bug where `ALTER TABLE ... ALTER COLUMN ... SET DATA TYPE` from an unbounded string or bit type to a bounded type with a length `>= 64` (for example, `STRING` to `STRING(100)`) would skip validating existing data against the new length constraint. This could leave rows in the table that violate the column's type, with values longer than the specified limit. +- Context cancellation is now surfaced if a `statement_timeout` occurs while waiting for a schema change. +- Fixed a bug that could cause changefeeds using Kafka v1 sinks to hang when the changefeed was cancelled. +- Fixed an issue where changefeeds with `execution_locality` filters could fail in multi-tenant clusters with `node descriptor not found` errors. +- Fixed a bug where running changefeeds with `envelope=enriched` and `enriched_properties` containing `source` would cause failures during a cluster upgrade. +- Fixed a bug introduced in v25.4+ where setting `min_checkpoint_frequency` to `0` prevented changefeeds from advancing their resolved timestamp (high-water mark) and emitting resolved messages. Note that setting `min_checkpoint_frequency` to lower than `500ms` is **not** recommended as it may cause degraded changefeed performance. +- Changefeed retry backoff now resets when the changefeed's resolved timestamp (high-water mark) advances between retries, in addition to the existing time-based reset (configured by `changefeed.retry_backoff_reset`). This prevents transient rolling restarts from causing changefeeds to fall behind because of excessive backoff. +- Fixed a bug where `RESTORE` with `skip_missing_foreign_keys` could fail with an internal error if the restored table had an in-progress schema change that added a foreign key constraint whose referenced table was not included in the restore. +- Fixed a bug where incremental backups taken after downgrading a mixed-version cluster to v25.4 could result in inconsistent backup indexes. +- Fixed a bug where restoring a database backup containing default privileges that referenced non-existent users would leave dangling user references in the restored database descriptor. +- Fixed a bug where AVRO file imports of data with JSON or binary records could hang indefinitely when encountering stream errors from cloud storage (such as `HTTP/2` `CANCEL` errors). Import jobs will now properly fail with an error instead of hanging. +- Invalid `avro_schema_prefix` is now caught during statement time. The prefix must start with `[A-Za-z_]` and subsequently contain only `[A-Za-z0-9_]`, as specified in the [Avro specification](https://avro.apache.org/docs/1.8.1/spec.html). +- Fixed a bug where `IMPORT` error messages could include unredacted cloud storage credentials from the source URI. Credentials are now stripped from URIs before they appear in error messages. +- Reduced contention when dropping descriptors or running concurrent imports. +- Fixed a bug where rolling back a transaction that had just rolled back a savepoint would block other transactions accessing the same rows for five seconds. +- Fixed a bug where multi-statement explicit transactions using `SAVEPOINT` to recover from certain errors (like duplicate key-value violations) could lose writes performed before the savepoint was created, in rare cases when buffered writes were enabled (off by default). This bug was introduced in v25.2. +- Fixed a race condition that could occur during context cancellation of an incoming snapshot. +- Fixed a bug which could cause prepared statements to fail with the error message `non-const expression` when they contained filters with stable functions. This bug has been present since 25.4.0. +- Fixed prepared statements failing with `version mismatch` errors when user-defined types are modified between preparation and execution. Prepared statements now automatically detect UDT changes and re-parse to use current type definitions. +- Fixed an internal error `could not find format code for column N` that occurred when executing `EXPLAIN ANALYZE EXECUTE` statements via JDBC or other clients using the PostgreSQL binary protocol. +- Fixed a bug where CockroachDB returned "cached plan must not change result type" errors during the `Execute` phase instead of the `Bind` phase of the extended pgwire protocol. This caused compatibility issues with drivers like pgx that expect the error before `BindComplete` is sent, particularly when using batch operations with prepared statements after schema changes. +- Fixed a bug where CockroachDB could crash when handling decimals with negative scales via the extended PGWire protocol. An error is now returned instead, matching PostgreSQL behavior. +- Fixed a bug where the index definition shown in `pg_indexes` for hash sharded indexes with `STORING` columns was not valid SQL. The `STORING` clause now appears in the correct position. +- Fixed a bug where concurrent updates to a table using multiple column families during a partial index creation could result in data loss, incorrect `NULL` values, or validation failures in the resulting index. +- Fixed a bug where statement bundles were missing `CREATE TYPE` statements for user-defined types used as array column types. +- Fixed a rare data race during parallel constraint checks where a fresh descriptor collection could resolve a stale enum type version. This bug was introduced in v26.1.0. +- Fixed a bug where creating a table with a user-defined type column failed when the user had `USAGE` privilege on the base type but not on its implicit array type. The array type now inherits privileges from the base type, matching PostgreSQL behavior. +- Fixed a bug where rolling back a `CREATE TABLE` that referenced user-defined types or sequences would leave orphaned back-references on the type and sequence descriptors, causing them to appear in `crdb_internal.invalid_objects` after the table was GC'd. +- Fixed a race condition where queries run after revoking `BYPASSRLS` could return wrong results because cached plans failed to notice the change immediately. +- Fixed a bug where `DROP TABLE ... CASCADE` would incorrectly drop tables that had triggers or row-level security (RLS) policies referencing the dropped table. Now only the triggers/policies are dropped, and the tables owning them remain intact. +- Fixed a bug where `EXPLAIN ANALYZE (DEBUG)` statement bundles did not include triggers, their functions, or tables modified by those triggers. The bundle's `schema.sql` file now contains the `CREATE TRIGGER`, `CREATE FUNCTION`, and `CREATE TABLE` statements needed to fully reproduce the query environment when triggers are involved. +- Fixed a bug where dropped columns appeared in `pg_catalog.pg_attribute` with the `atttypid` column equal to 2283 (`anyelement`). Now this column will be 0 for dropped columns. This matches PostgreSQL behavior, where `atttypid=0` is used for dropped columns. +- Fixed a bug where temporary tables created in one session could fail to appear in `pg_catalog` queries from another session because the parent temporary schema could not be resolved by ID. +- The `information_schema.crdb_node_active_session_history` and `information_schema.crdb_cluster_active_session_history` views now include the `app_name` column, matching the underlying `crdb_internal` tables. +- An error will now be reported when the database provided as the argument to a `SHOW REGIONS` or `SHOW SUPER REGIONS` statement does not exist. This bug had been present since version v21.1. +- Dropping a region from the system database no longer leaves `REGIONAL BY TABLE` system tables referencing the removed region, preventing descriptor validation errors. +- Fixed a bug where super region zone configurations did not constrain all replicas to regions within the super region. +- Fixed a bug that had previously allowed the primary and secondary to be in separate super regions. +- Fixed a bug where converting a table from `REGIONAL BY ROW` to `GLOBAL` would not clear the `skip_unique_checks` storage parameter on the primary key, even though implicit partitioning was removed. +- Fixed a bug where `TRUNCATE` did not behave correctly with respect to the `schema_locked` storage parameter, and was not being blocked when Logical Data Replication (LDR) was in use. This behavior was incorrect and has been fixed. +- The PCR job now switches into the cutover phase more promptly after a failover is requested, terminating the replication phase more quickly and more reliably when components of the ingestion process are hung due to network errors. +- Fixed an issue where long-running transactions with many statements could cause unbounded memory growth in the SQL statistics subsystem. When a transaction includes a large number of statements, the SQL statistics ingester now automatically flushes buffered statistics before the transaction commits. As a side effect, the flushed statement statistics might not have an associated transaction fingerprint ID because the transaction has not yet completed. In such cases, the transaction fingerprint ID cannot be backfilled after the fact. +- Fixed a deadlock that could occur when a statistics creation task panicked. +- Fixed a bug that could cause row sampling for table statistics to crash a node due to a data race when processing a collated string column with values larger than 400 bytes. This bug has existed since before v23.1. +- Fixed a bug where CockroachDB might not have respected the table-level parameters `sql_stats_automatic_full_collection_enabled` and `sql_stats_automatic_partial_collection_enabled` and defaulted to using the corresponding cluster settings when deciding whether to perform automatic statistics collection on a table. +- Previously, v26.1.0-beta.1 and v26.1.0-beta.2 could encounter a rare process crash when running TTL jobs. This has been fixed. +- Fixed a bug introduced in v26.1.0-beta.1 in which row-level TTL jobs could encounter GC threshold errors if each node had a large number of spans to process. +- Fixed a bug where an error would occur when defining a foreign key on a hash-sharded primary key without explicitly providing the primary key columns. +- Fixed a rare race condition where `SHOW CREATE TABLE` could fail with a `"relation does not exist"` error if a table referenced by a foreign key was being concurrently dropped. +- Fixed a bug in the legacy schema changer where rolling back a `CREATE TABLE` with inline `FOREIGN KEY` constraints could leave orphaned foreign key back-references on the referenced table, causing descriptor validation errors. +- Fixed a bug where the `lock_timeout` and `deadlock_timeout` session settings were not honored by FK existence checks performed during insert fast path execution. This could cause inserts to block indefinitely on conflicting locks instead of returning a timeout error. +- JWT authentication now returns a clear error when HTTP requests to fetch JWKS or OpenID configuration return non-`2xx` status codes, instead of silently passing the response body to the JSON parser. +- Fixed a data race that could cause certificate expiration metrics (`security.certificate.expiration.node-client`, `security.certificate.expiration.client-tenant`, `security.certificate.expiration.ca-client-tenant` and their TTL counterparts) to not update after certificate rotation via `SIGHUP`. +- Fixed a bug in which inline-hints rewrite rules created with `information_schema.crdb_rewrite_inline_hints` were not correctly applied to statements run with `EXPLAIN ANALYZE`. This bug was introduced in v26.1.0-alpha.2. +- Fixed a bug that prevented successfully injecting hints using `information_schema.crdb_rewrite_inline_hints` for `INSERT`, `UPSERT`, `UPDATE`, and `DELETE` statements. This bug had existed since hint injection was introduced in v26.1.0-alpha.2. +- The `ascii` built-in function now returns `0` when the input is the empty string instead of an error. +- Previously, CockroachDB could hit an internal error when evaluating built-in functions with `'{}'` as an argument (without explicit type casts, such as on a query like `SELECT cardinality('{}');`). This is now fixed and a regular error is returned instead (matching PostgreSQL behavior). +- Fixed a bug where comments associated with constraints were left behind after the column and constraint were dropped. +- Fixed a memory accounting issue that could occur when a lease expired due to a SQL liveness session-based timeout. +- Fixed a bug where the `pprof` UI endpoints for allocs, heap, block, and mutex profiles ignored the seconds parameter and returned immediate snapshots instead of delta profiles. +- Fixed a bug where generating a debug zip could trigger an out-of-memory (OOM) condition on a node if malformed log entries were present in logs using `json` or `json-compact` formatting. This bug was introduced in v24.1. +- Fixed a bug in the TPC-C workload where long-duration runs (>= 4 days or indefinite) would experience periodic performance degradation every 24 hours due to excessive concurrent `UPDATE` statements resetting warehouse and district year-to-date values. +- Fixed a bug in `appBatchStats.merge` where the `numEmptyEntries` field was not being properly accumulated when merging statistics. This could result in incorrect statistics tracking for empty Raft log entries. +- Fixed a bug where descriptor version fetching could be incorrectly throttled by the elastic CPU limiter, potentially leading to increased query latency or timeouts under high CPU load. +- Fixed a bug where transient I/O errors (such as cloud storage network timeouts) during split or merge trigger evaluation were misidentified as replica corruption, causing the node to crash. These errors now correctly fail the operation, which is retried automatically. +- Fixed a bug where executing a mutation in a subquery (e.g., as a CTE) could cause the "rows written" metrics like `sql.statements.index_rows_written.count` and `sql.statements.index_bytes_written.count` to not be incremented correctly.

Performance improvements

-- Database- and table-level backups no longer fetch all object descriptors from disk in order to resolve the backup targets. Now only the objects that are referenced by the targeted objects will be fetched. This improves performance when there are many tables in the cluster. [#157790][#157790] -- The optimizer now better optimizes query plans of statements within UDFs and stored procedures that have `IN` subqueries. [#160503][#160503] -- The optimizer can now better handle filters that redundantly `unnest()` an array placeholder argument within an `IN` or `ANY` filter. Previously, this pattern could prevent the filters from being used to constrain a table scan. Example: `SELECT k FROM a WHERE k = ANY(SELECT * FROM unnest($1:::INT[]))` [#161816][#161816] -- The query optimizer now eliminates redundant filter and projection operators over inputs with zero cardinality, even when the filter or projection expressions are not leakproof. This produces simpler, more efficient query plans in cases where joins or other operations fold to zero rows. [#164212][#164212] -- Improved changefeed performance when filtering unwatched column families and offline tables by replacing expensive error chain traversal with direct status enum comparisons. [#159745][#159745] -- Improved changefeed checkpointing performance when changefeeds are lagging. Previously, checkpoint updates could be redundantly applied multiple times per checkpoint operation. [#162546][#162546] -- Queries that have comparison expressions with the `levenshtein` built-in are now up to 30% faster. [#160394][#160394] -- Fixed a performance regression in `pg_catalog.pg_roles` and `pg_catalog.pg_authid` by avoiding privilege lookups for each row in the table. [#160121][#160121] -- Significantly reduced WAL write latency when using encryption at rest by properly recycling WAL files instead of deleting and recreating them. [#160784][#160784] -- Optimized the logic that applies zone config constraints so it no longer fetches all descriptors in the cluster during background constraint reconciliation. [#160966][#160966] -- Various background tasks and jobs now more actively yield to foreground work when that work is waiting to run. [#159205][#159205] -- Statement executions using canary stats will no longer use cached plans, which prevents cache thrashing but causes a slight increase in planning time over statement executions using stable stats. [#167503][#167503] +- Database- and table-level backups no longer fetch all object descriptors from disk in order to resolve the backup targets. Now only the objects that are referenced by the targeted objects will be fetched. This improves performance when there are many tables in the cluster. +- The optimizer now better optimizes query plans of statements within UDFs and stored procedures that have `IN` subqueries. +- The optimizer can now better handle filters that redundantly `unnest()` an array placeholder argument within an `IN` or `ANY` filter. Previously, this pattern could prevent the filters from being used to constrain a table scan. Example: `SELECT k FROM a WHERE k = ANY(SELECT * FROM unnest($1:::INT[]))` +- The query optimizer now eliminates redundant filter and projection operators over inputs with zero cardinality, even when the filter or projection expressions are not leakproof. This produces simpler, more efficient query plans in cases where joins or other operations fold to zero rows. +- Improved changefeed performance when filtering unwatched column families and offline tables by replacing expensive error chain traversal with direct status enum comparisons. +- Improved changefeed checkpointing performance when changefeeds are lagging. Previously, checkpoint updates could be redundantly applied multiple times per checkpoint operation. +- Queries that have comparison expressions with the `levenshtein` built-in are now up to 30% faster. +- Fixed a performance regression in `pg_catalog.pg_roles` and `pg_catalog.pg_authid` by avoiding privilege lookups for each row in the table. +- Significantly reduced WAL write latency when using encryption at rest by properly recycling WAL files instead of deleting and recreating them. +- Optimized the logic that applies zone config constraints so it no longer fetches all descriptors in the cluster during background constraint reconciliation. +- Various background tasks and jobs now more actively yield to foreground work when that work is waiting to run. +- Statement executions using canary stats will no longer use cached plans, which prevents cache thrashing but causes a slight increase in planning time over statement executions using stable stats.

Known limitations

@@ -503,214 +503,19 @@ This section describes newly identified limitations in CockroachDB v26.2. ALTER VIRTUAL CLUSTER {reader_vc} START SERVICE SHARED; ~~~ - [#169078](https://github.com/cockroachdb/cockroach/issues/169078) + #### Hint injections -- [Statement hints]({% link v26.2/cost-based-optimizer.md %}#statement-hints) do not apply to statements within views. The workaround for `REWRITE INLINE HINTS` is to modify the inline hints directly in the body by replacing the view. There is no workaround for `SET VARIABLE` hints. [#166782](https://github.com/cockroachdb/cockroach/issues/166782) -- [Statement hints]({% link v26.2/cost-based-optimizer.md %}#statement-hints) do not apply to statements within routines. The workaround for `REWRITE INLINE HINTS` is to modify the inline hints directly in the body by replacing the routine. There is no workaround for `SET VARIABLE` hints. [#162627](https://github.com/cockroachdb/cockroach/issues/162627) +- [Statement hints]({% link v26.2/cost-based-optimizer.md %}#statement-hints) do not apply to statements within views. The workaround for `REWRITE INLINE HINTS` is to modify the inline hints directly in the body by replacing the view. There is no workaround for `SET VARIABLE` hints. +- [Statement hints]({% link v26.2/cost-based-optimizer.md %}#statement-hints) do not apply to statements within routines. The workaround for `REWRITE INLINE HINTS` is to modify the inline hints directly in the body by replacing the routine. There is no workaround for `SET VARIABLE` hints. #### Active Session History -- ASH is not recommended for nodes with 64 or more vCPUs, due to degraded performance on those nodes. [#168289](https://github.com/cockroachdb/cockroach/issues/168289) +- ASH is not recommended for nodes with 64 or more vCPUs, due to degraded performance on those nodes. - On Basic and Standard CockroachDB {{ site.data.products.cloud }} clusters, ASH samples only cover work running on the [SQL]({% link v26.2/architecture/sql-layer.md %}) pod. KV-level work ([storage]({% link v26.2/architecture/storage-layer.md %}) I/O, [lock waits]({% link v26.2/troubleshoot-lock-contention.md %}), [replication]({% link v26.2/architecture/replication-layer.md %}), etc.) is not visible in ASH samples. -- KV work triggered during [COMMIT]({% link v26.2/commit-transaction.md %}) (for example, [intent resolution]({% link v26.2/architecture/transaction-layer.md %}), [Raft]({% link v26.2/architecture/replication-layer.md %}#raft) proposals deferred from earlier statements in an [explicit transaction]({% link v26.2/begin-transaction.md %})) is attributed to the last [statement's fingerprint]({% link v26.2/ui-statements-page.md %}), not the statement that originally caused the work. [#165864](https://github.com/cockroachdb/cockroach/issues/165864) +- KV work triggered during [COMMIT]({% link v26.2/commit-transaction.md %}) (for example, [intent resolution]({% link v26.2/architecture/transaction-layer.md %}), [Raft]({% link v26.2/architecture/replication-layer.md %}#raft) proposals deferred from earlier statements in an [explicit transaction]({% link v26.2/begin-transaction.md %})) is attributed to the last [statement's fingerprint]({% link v26.2/ui-statements-page.md %}), not the statement that originally caused the work. #### `IMPORT INTO` -- When `IMPORT INTO` uses distributed merge, it stores intermediate SST files on participating SQL instances' local storage. If one of those SQL instances becomes unavailable during the merge phase, the job waits for that SQL instance to become available again. If the SQL instance does not become available again, the job fails with a permanent error. [#167491](https://github.com/cockroachdb/cockroach/issues/167491) - -[#146250]: https://github.com/cockroachdb/cockroach/pull/146250 -[#150663]: https://github.com/cockroachdb/cockroach/pull/150663 -[#150706]: https://github.com/cockroachdb/cockroach/pull/150706 -[#153361]: https://github.com/cockroachdb/cockroach/pull/153361 -[#156672]: https://github.com/cockroachdb/cockroach/pull/156672 -[#156771]: https://github.com/cockroachdb/cockroach/pull/156771 -[#156963]: https://github.com/cockroachdb/cockroach/pull/156963 -[#157790]: https://github.com/cockroachdb/cockroach/pull/157790 -[#158029]: https://github.com/cockroachdb/cockroach/pull/158029 -[#158294]: https://github.com/cockroachdb/cockroach/pull/158294 -[#158527]: https://github.com/cockroachdb/cockroach/pull/158527 -[#158835]: https://github.com/cockroachdb/cockroach/pull/158835 -[#158935]: https://github.com/cockroachdb/cockroach/pull/158935 -[#158999]: https://github.com/cockroachdb/cockroach/pull/158999 -[#159090]: https://github.com/cockroachdb/cockroach/pull/159090 -[#159126]: https://github.com/cockroachdb/cockroach/pull/159126 -[#159176]: https://github.com/cockroachdb/cockroach/pull/159176 -[#159178]: https://github.com/cockroachdb/cockroach/pull/159178 -[#159180]: https://github.com/cockroachdb/cockroach/pull/159180 -[#159201]: https://github.com/cockroachdb/cockroach/pull/159201 -[#159205]: https://github.com/cockroachdb/cockroach/pull/159205 -[#159231]: https://github.com/cockroachdb/cockroach/pull/159231 -[#159286]: https://github.com/cockroachdb/cockroach/pull/159286 -[#159330]: https://github.com/cockroachdb/cockroach/pull/159330 -[#159354]: https://github.com/cockroachdb/cockroach/pull/159354 -[#159378]: https://github.com/cockroachdb/cockroach/pull/159378 -[#159403]: https://github.com/cockroachdb/cockroach/pull/159403 -[#159431]: https://github.com/cockroachdb/cockroach/pull/159431 -[#159436]: https://github.com/cockroachdb/cockroach/pull/159436 -[#159527]: https://github.com/cockroachdb/cockroach/pull/159527 -[#159627]: https://github.com/cockroachdb/cockroach/pull/159627 -[#159642]: https://github.com/cockroachdb/cockroach/pull/159642 -[#159722]: https://github.com/cockroachdb/cockroach/pull/159722 -[#159745]: https://github.com/cockroachdb/cockroach/pull/159745 -[#159787]: https://github.com/cockroachdb/cockroach/pull/159787 -[#159869]: https://github.com/cockroachdb/cockroach/pull/159869 -[#160121]: https://github.com/cockroachdb/cockroach/pull/160121 -[#160129]: https://github.com/cockroachdb/cockroach/pull/160129 -[#160137]: https://github.com/cockroachdb/cockroach/pull/160137 -[#160346]: https://github.com/cockroachdb/cockroach/pull/160346 -[#160348]: https://github.com/cockroachdb/cockroach/pull/160348 -[#160394]: https://github.com/cockroachdb/cockroach/pull/160394 -[#160486]: https://github.com/cockroachdb/cockroach/pull/160486 -[#160499]: https://github.com/cockroachdb/cockroach/pull/160499 -[#160503]: https://github.com/cockroachdb/cockroach/pull/160503 -[#160538]: https://github.com/cockroachdb/cockroach/pull/160538 -[#160576]: https://github.com/cockroachdb/cockroach/pull/160576 -[#160608]: https://github.com/cockroachdb/cockroach/pull/160608 -[#160674]: https://github.com/cockroachdb/cockroach/pull/160674 -[#160780]: https://github.com/cockroachdb/cockroach/pull/160780 -[#160784]: https://github.com/cockroachdb/cockroach/pull/160784 -[#160798]: https://github.com/cockroachdb/cockroach/pull/160798 -[#160812]: https://github.com/cockroachdb/cockroach/pull/160812 -[#160901]: https://github.com/cockroachdb/cockroach/pull/160901 -[#160966]: https://github.com/cockroachdb/cockroach/pull/160966 -[#161011]: https://github.com/cockroachdb/cockroach/pull/161011 -[#161014]: https://github.com/cockroachdb/cockroach/pull/161014 -[#161043]: https://github.com/cockroachdb/cockroach/pull/161043 -[#161050]: https://github.com/cockroachdb/cockroach/pull/161050 -[#161062]: https://github.com/cockroachdb/cockroach/pull/161062 -[#161083]: https://github.com/cockroachdb/cockroach/pull/161083 -[#161265]: https://github.com/cockroachdb/cockroach/pull/161265 -[#161273]: https://github.com/cockroachdb/cockroach/pull/161273 -[#161290]: https://github.com/cockroachdb/cockroach/pull/161290 -[#161294]: https://github.com/cockroachdb/cockroach/pull/161294 -[#161318]: https://github.com/cockroachdb/cockroach/pull/161318 -[#161328]: https://github.com/cockroachdb/cockroach/pull/161328 -[#161422]: https://github.com/cockroachdb/cockroach/pull/161422 -[#161509]: https://github.com/cockroachdb/cockroach/pull/161509 -[#161763]: https://github.com/cockroachdb/cockroach/pull/161763 -[#161773]: https://github.com/cockroachdb/cockroach/pull/161773 -[#161816]: https://github.com/cockroachdb/cockroach/pull/161816 -[#161827]: https://github.com/cockroachdb/cockroach/pull/161827 -[#161835]: https://github.com/cockroachdb/cockroach/pull/161835 -[#161880]: https://github.com/cockroachdb/cockroach/pull/161880 -[#161882]: https://github.com/cockroachdb/cockroach/pull/161882 -[#161914]: https://github.com/cockroachdb/cockroach/pull/161914 -[#161915]: https://github.com/cockroachdb/cockroach/pull/161915 -[#161941]: https://github.com/cockroachdb/cockroach/pull/161941 -[#161972]: https://github.com/cockroachdb/cockroach/pull/161972 -[#161979]: https://github.com/cockroachdb/cockroach/pull/161979 -[#161998]: https://github.com/cockroachdb/cockroach/pull/161998 -[#162036]: https://github.com/cockroachdb/cockroach/pull/162036 -[#162058]: https://github.com/cockroachdb/cockroach/pull/162058 -[#162105]: https://github.com/cockroachdb/cockroach/pull/162105 -[#162115]: https://github.com/cockroachdb/cockroach/pull/162115 -[#162286]: https://github.com/cockroachdb/cockroach/pull/162286 -[#162302]: https://github.com/cockroachdb/cockroach/pull/162302 -[#162329]: https://github.com/cockroachdb/cockroach/pull/162329 -[#162357]: https://github.com/cockroachdb/cockroach/pull/162357 -[#162512]: https://github.com/cockroachdb/cockroach/pull/162512 -[#162528]: https://github.com/cockroachdb/cockroach/pull/162528 -[#162546]: https://github.com/cockroachdb/cockroach/pull/162546 -[#162583]: https://github.com/cockroachdb/cockroach/pull/162583 -[#162608]: https://github.com/cockroachdb/cockroach/pull/162608 -[#162633]: https://github.com/cockroachdb/cockroach/pull/162633 -[#163199]: https://github.com/cockroachdb/cockroach/pull/163199 -[#163224]: https://github.com/cockroachdb/cockroach/pull/163224 -[#163230]: https://github.com/cockroachdb/cockroach/pull/163230 -[#163244]: https://github.com/cockroachdb/cockroach/pull/163244 -[#163266]: https://github.com/cockroachdb/cockroach/pull/163266 -[#163296]: https://github.com/cockroachdb/cockroach/pull/163296 -[#163348]: https://github.com/cockroachdb/cockroach/pull/163348 -[#163378]: https://github.com/cockroachdb/cockroach/pull/163378 -[#163395]: https://github.com/cockroachdb/cockroach/pull/163395 -[#163400]: https://github.com/cockroachdb/cockroach/pull/163400 -[#163427]: https://github.com/cockroachdb/cockroach/pull/163427 -[#163430]: https://github.com/cockroachdb/cockroach/pull/163430 -[#163500]: https://github.com/cockroachdb/cockroach/pull/163500 -[#163503]: https://github.com/cockroachdb/cockroach/pull/163503 -[#163507]: https://github.com/cockroachdb/cockroach/pull/163507 -[#163584]: https://github.com/cockroachdb/cockroach/pull/163584 -[#163765]: https://github.com/cockroachdb/cockroach/pull/163765 -[#163834]: https://github.com/cockroachdb/cockroach/pull/163834 -[#163883]: https://github.com/cockroachdb/cockroach/pull/163883 -[#163885]: https://github.com/cockroachdb/cockroach/pull/163885 -[#163891]: https://github.com/cockroachdb/cockroach/pull/163891 -[#163930]: https://github.com/cockroachdb/cockroach/pull/163930 -[#163947]: https://github.com/cockroachdb/cockroach/pull/163947 -[#163950]: https://github.com/cockroachdb/cockroach/pull/163950 -[#163991]: https://github.com/cockroachdb/cockroach/pull/163991 -[#164037]: https://github.com/cockroachdb/cockroach/pull/164037 -[#164043]: https://github.com/cockroachdb/cockroach/pull/164043 -[#164129]: https://github.com/cockroachdb/cockroach/pull/164129 -[#164164]: https://github.com/cockroachdb/cockroach/pull/164164 -[#164212]: https://github.com/cockroachdb/cockroach/pull/164212 -[#164236]: https://github.com/cockroachdb/cockroach/pull/164236 -[#164285]: https://github.com/cockroachdb/cockroach/pull/164285 -[#164301]: https://github.com/cockroachdb/cockroach/pull/164301 -[#164369]: https://github.com/cockroachdb/cockroach/pull/164369 -[#164403]: https://github.com/cockroachdb/cockroach/pull/164403 -[#164405]: https://github.com/cockroachdb/cockroach/pull/164405 -[#164406]: https://github.com/cockroachdb/cockroach/pull/164406 -[#164444]: https://github.com/cockroachdb/cockroach/pull/164444 -[#164471]: https://github.com/cockroachdb/cockroach/pull/164471 -[#164477]: https://github.com/cockroachdb/cockroach/pull/164477 -[#164514]: https://github.com/cockroachdb/cockroach/pull/164514 -[#164557]: https://github.com/cockroachdb/cockroach/pull/164557 -[#164671]: https://github.com/cockroachdb/cockroach/pull/164671 -[#164672]: https://github.com/cockroachdb/cockroach/pull/164672 -[#164739]: https://github.com/cockroachdb/cockroach/pull/164739 -[#164757]: https://github.com/cockroachdb/cockroach/pull/164757 -[#164765]: https://github.com/cockroachdb/cockroach/pull/164765 -[#164827]: https://github.com/cockroachdb/cockroach/pull/164827 -[#164879]: https://github.com/cockroachdb/cockroach/pull/164879 -[#164881]: https://github.com/cockroachdb/cockroach/pull/164881 -[#164909]: https://github.com/cockroachdb/cockroach/pull/164909 -[#164933]: https://github.com/cockroachdb/cockroach/pull/164933 -[#164942]: https://github.com/cockroachdb/cockroach/pull/164942 -[#164943]: https://github.com/cockroachdb/cockroach/pull/164943 -[#164969]: https://github.com/cockroachdb/cockroach/pull/164969 -[#165093]: https://github.com/cockroachdb/cockroach/pull/165093 -[#165260]: https://github.com/cockroachdb/cockroach/pull/165260 -[#165367]: https://github.com/cockroachdb/cockroach/pull/165367 -[#165395]: https://github.com/cockroachdb/cockroach/pull/165395 -[#165397]: https://github.com/cockroachdb/cockroach/pull/165397 -[#165457]: https://github.com/cockroachdb/cockroach/pull/165457 -[#165551]: https://github.com/cockroachdb/cockroach/pull/165551 -[#165712]: https://github.com/cockroachdb/cockroach/pull/165712 -[#165725]: https://github.com/cockroachdb/cockroach/pull/165725 -[#165727]: https://github.com/cockroachdb/cockroach/pull/165727 -[#165744]: https://github.com/cockroachdb/cockroach/pull/165744 -[#165802]: https://github.com/cockroachdb/cockroach/pull/165802 -[#165804]: https://github.com/cockroachdb/cockroach/pull/165804 -[#165849]: https://github.com/cockroachdb/cockroach/pull/165849 -[#165866]: https://github.com/cockroachdb/cockroach/pull/165866 -[#166132]: https://github.com/cockroachdb/cockroach/pull/166132 -[#166183]: https://github.com/cockroachdb/cockroach/pull/166183 -[#166223]: https://github.com/cockroachdb/cockroach/pull/166223 -[#166325]: https://github.com/cockroachdb/cockroach/pull/166325 -[#166471]: https://github.com/cockroachdb/cockroach/pull/166471 -[#166555]: https://github.com/cockroachdb/cockroach/pull/166555 -[#166664]: https://github.com/cockroachdb/cockroach/pull/166664 -[#166681]: https://github.com/cockroachdb/cockroach/pull/166681 -[#166705]: https://github.com/cockroachdb/cockroach/pull/166705 -[#166740]: https://github.com/cockroachdb/cockroach/pull/166740 -[#166778]: https://github.com/cockroachdb/cockroach/pull/166778 -[#166793]: https://github.com/cockroachdb/cockroach/pull/166793 -[#166810]: https://github.com/cockroachdb/cockroach/pull/166810 -[#166829]: https://github.com/cockroachdb/cockroach/pull/166829 -[#166855]: https://github.com/cockroachdb/cockroach/pull/166855 -[#166860]: https://github.com/cockroachdb/cockroach/pull/166860 -[#166920]: https://github.com/cockroachdb/cockroach/pull/166920 -[#167112]: https://github.com/cockroachdb/cockroach/pull/167112 -[#167192]: https://github.com/cockroachdb/cockroach/pull/167192 -[#167377]: https://github.com/cockroachdb/cockroach/pull/167377 -[#167405]: https://github.com/cockroachdb/cockroach/pull/167405 -[#167432]: https://github.com/cockroachdb/cockroach/pull/167432 -[#167484]: https://github.com/cockroachdb/cockroach/pull/167484 -[#167503]: https://github.com/cockroachdb/cockroach/pull/167503 -[#167532]: https://github.com/cockroachdb/cockroach/pull/167532 -[#167681]: https://github.com/cockroachdb/cockroach/pull/167681 -[#167944]: https://github.com/cockroachdb/cockroach/pull/167944 - +- When `IMPORT INTO` uses distributed merge, it stores intermediate SST files on participating SQL instances' local storage. If one of those SQL instances becomes unavailable during the merge phase, the job waits for that SQL instance to become available again. If the SQL instance does not become available again, the job fails with a permanent error. diff --git a/src/current/_includes/v20.2/known-limitations/copy-from-clients.md b/src/current/_includes/v20.2/known-limitations/copy-from-clients.md index 4428aaf74f7..b80116e531c 100644 --- a/src/current/_includes/v20.2/known-limitations/copy-from-clients.md +++ b/src/current/_includes/v20.2/known-limitations/copy-from-clients.md @@ -1,5 +1,3 @@ The built-in SQL shell provided with CockroachDB ([`cockroach sql`](cockroach-sql.html) / [`cockroach demo`](cockroach-demo.html)) does not currently support importing data with the `COPY` statement. To load data into CockroachDB, we recommend that you use an [`IMPORT`](import.html). If you must use a `COPY` statement, you can issue the statement from the [`psql` client](https://www.postgresql.org/docs/current/app-psql.html) command provided with PostgreSQL, or from another third-party client. - -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/16392) \ No newline at end of file diff --git a/src/current/_includes/v20.2/known-limitations/copy-syntax.md b/src/current/_includes/v20.2/known-limitations/copy-syntax.md index 2150a7ba642..1648fe88f5c 100644 --- a/src/current/_includes/v20.2/known-limitations/copy-syntax.md +++ b/src/current/_includes/v20.2/known-limitations/copy-syntax.md @@ -2,16 +2,14 @@ CockroachDB does not yet support the following `COPY` syntax: - `COPY ... TO`. To copy data from a CockroachDB cluster to a file, use an [`EXPORT`](export.html) statement. - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/41608) + - `COPY ... FROM CSV` - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/51891) + - `COPY ... FROM STDIN` with a delimiter other than the default tab delimiter. - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/16407) + - `COPY ... FROM ... WHERE ` - - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/54580) \ No newline at end of file diff --git a/src/current/_includes/v20.2/known-limitations/old-multi-col-stats.md b/src/current/_includes/v20.2/known-limitations/old-multi-col-stats.md index 595be9c7209..3fbec99016c 100644 --- a/src/current/_includes/v20.2/known-limitations/old-multi-col-stats.md +++ b/src/current/_includes/v20.2/known-limitations/old-multi-col-stats.md @@ -1,3 +1 @@ When a column is dropped from a multi-column index, the {% if page.name == "cost-based-optimizer.md" %} optimizer {% else %} [optimizer](cost-based-optimizer.html) {% endif %} will not collect new statistics for the deleted column. However, the optimizer never deletes the old [multi-column statistics](create-statistics.html#create-statistics-on-multiple-columns). This can cause a buildup of statistics in `system.table_statistics` leading the optimizer to use stale statistics, which could result in sub-optimal plans. To workaround this issue and avoid these scenarios, explicitly [delete those statistics](create-statistics.html#delete-statistics) from the `system.table_statistics` table. - - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/67407) diff --git a/src/current/_includes/v20.2/known-limitations/set-transaction-no-rollback.md b/src/current/_includes/v20.2/known-limitations/set-transaction-no-rollback.md index 4ab3661f4f7..e522fbd6de3 100644 --- a/src/current/_includes/v20.2/known-limitations/set-transaction-no-rollback.md +++ b/src/current/_includes/v20.2/known-limitations/set-transaction-no-rollback.md @@ -13,5 +13,3 @@ timezone ------------ 3 ~~~ - -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/69396) diff --git a/src/current/_includes/v20.2/known-limitations/single-col-stats-deletion.md b/src/current/_includes/v20.2/known-limitations/single-col-stats-deletion.md index b8baa46c5d2..aee06007c4a 100644 --- a/src/current/_includes/v20.2/known-limitations/single-col-stats-deletion.md +++ b/src/current/_includes/v20.2/known-limitations/single-col-stats-deletion.md @@ -1,3 +1 @@ [Single-column statistics](create-statistics.html#create-statistics-on-a-single-column) are not deleted when columns are dropped, which could cause minor performance issues. - - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/67407) diff --git a/src/current/_includes/v20.2/known-limitations/stats-refresh-upgrade.md b/src/current/_includes/v20.2/known-limitations/stats-refresh-upgrade.md index f54a08b3754..3d7af820f2f 100644 --- a/src/current/_includes/v20.2/known-limitations/stats-refresh-upgrade.md +++ b/src/current/_includes/v20.2/known-limitations/stats-refresh-upgrade.md @@ -1,3 +1 @@ The [automatic statistics refresher](cost-based-optimizer.html#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade](upgrade-cockroach-version.html). This could cause a problem, for example, if the upgrade moves from a version without [histograms](cost-based-optimizer.html#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). - - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/54816) diff --git a/src/current/_includes/v20.2/known-limitations/unordered-operations.md b/src/current/_includes/v20.2/known-limitations/unordered-operations.md index 8e54fc6848a..134d3b58796 100644 --- a/src/current/_includes/v20.2/known-limitations/unordered-operations.md +++ b/src/current/_includes/v20.2/known-limitations/unordered-operations.md @@ -4,4 +4,4 @@ Unordered aggregation operations do not support disk spilling, and are limited b Setting `--max-sql-memory` too high could result in performance problems due to increased memory consumption. {{site.data.alerts.end}} -See the [GitHub tracking issue](https://github.com/cockroachdb/cockroach/issues/42485) for details. +See the for details. diff --git a/src/current/_includes/v20.2/known-limitations/userfile-upload-non-recursive.md b/src/current/_includes/v20.2/known-limitations/userfile-upload-non-recursive.md index 19db5fde6a4..3ed31f482fa 100644 --- a/src/current/_includes/v20.2/known-limitations/userfile-upload-non-recursive.md +++ b/src/current/_includes/v20.2/known-limitations/userfile-upload-non-recursive.md @@ -1 +1 @@ -- `cockroach userfile upload` does not not currently allow for recursive uploads from a directory. This feature will be present with the `--recursive` flag in future versions. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/pull/65307) +- `cockroach userfile upload` does not not currently allow for recursive uploads from a directory. This feature will be present with the `--recursive` flag in future versions. diff --git a/src/current/_includes/v20.2/misc/tooling.md b/src/current/_includes/v20.2/misc/tooling.md index a6d0a64b30b..2031aaa65db 100644 --- a/src/current/_includes/v20.2/misc/tooling.md +++ b/src/current/_includes/v20.2/misc/tooling.md @@ -9,7 +9,7 @@ Cockroach Labs has partnered with open-source projects, vendors, and individuals Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling](transactions.html#client-side-intervention). For client-side transaction retry handling samples, see [Example Apps](example-apps.html). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community](community-tooling.html). diff --git a/src/current/_includes/v20.2/orchestration/start-cockroachdb-helm-secure.md b/src/current/_includes/v20.2/orchestration/start-cockroachdb-helm-secure.md index 826e5ae33f2..0ee2ff963a1 100644 --- a/src/current/_includes/v20.2/orchestration/start-cockroachdb-helm-secure.md +++ b/src/current/_includes/v20.2/orchestration/start-cockroachdb-helm-secure.md @@ -3,7 +3,7 @@ The CockroachDB Helm chart is undergoing maintenance for compatibility with Kube {{site.data.alerts.end}} {{site.data.alerts.callout_info}} -Secure CockroachDB deployments on Amazon EKS via Helm are [not yet supported](https://github.com/cockroachdb/cockroach/issues/38847). +Secure CockroachDB deployments on Amazon EKS via Helm are . {{site.data.alerts.end}} 1. [Install the Helm client](https://helm.sh/docs/intro/install) (version 3.0 or higher) and add the `cockroachdb` chart repository: diff --git a/src/current/_includes/v20.2/sql/savepoints-and-high-priority-transactions.md b/src/current/_includes/v20.2/sql/savepoints-and-high-priority-transactions.md index 4b77f2dd561..a66a7460b9b 100644 --- a/src/current/_includes/v20.2/sql/savepoints-and-high-priority-transactions.md +++ b/src/current/_includes/v20.2/sql/savepoints-and-high-priority-transactions.md @@ -1 +1 @@ -[`ROLLBACK TO SAVEPOINT`](rollback-transaction.html#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction](transactions.html#transaction-priorities), in order to avoid a transaction deadlock. For more information, see GitHub issue [#46414](https://www.github.com/cockroachdb/cockroach/issues/46414). +[`ROLLBACK TO SAVEPOINT`](rollback-transaction.html#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction](transactions.html#transaction-priorities), in order to avoid a transaction deadlock. diff --git a/src/current/_includes/v23.1/backward-incompatible/alpha.1.md b/src/current/_includes/v23.1/backward-incompatible/alpha.1.md index d42f8070fb9..c87d7c068b3 100644 --- a/src/current/_includes/v23.1/backward-incompatible/alpha.1.md +++ b/src/current/_includes/v23.1/backward-incompatible/alpha.1.md @@ -1,15 +1,15 @@ -- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). [#81298][#81298] -- In the Cockroach CLI, [`BOOL` values](../v23.1/bool.html) are now formatted as `t` or `f` instead of `True` or `False`. [#81943][#81943] -- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node](../v23.1/node-shutdown.html) gracefully, send a `SIGTERM` signal to it. [#82988][#82988] -- Added a cluster version to allow the [Pebble storage engine](../v23.1/architecture/storage-layer.html#pebble) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree](../v23.1/architecture/storage-layer.html#log-structured-merge-trees)). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. [#84887][#84887] +- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). +- In the Cockroach CLI, [`BOOL` values](../v23.1/bool.html) are now formatted as `t` or `f` instead of `True` or `False`. +- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node](../v23.1/node-shutdown.html) gracefully, send a `SIGTERM` signal to it. +- Added a cluster version to allow the [Pebble storage engine](../v23.1/architecture/storage-layer.html#pebble) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree](../v23.1/architecture/storage-layer.html#log-structured-merge-trees)). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. - Using a single TCP port listener for both RPC (node-node) and SQL client connections is now deprecated. This capability **will be removed** in the next version of CockroachDB. Instead, make one of the following configuration changes to your CockroachDB deployment: - Preferred: keep port `26257` for SQL, and allocate a new port, e.g., `26357`, for node-node RPC connections. For example, you might configure a node with the flags `--listen-addr=:26357 --sql-addr=:26257`, where subsequent nodes seeking to join would then use the flag `--join=othernode:26357,othernode:26257`. This will become the default configuration in the next version of CockroachDB. When using this mode of operation, care should be taken to use a `--join` flag that includes both the previous and new port numbers for other nodes, so that no network partition occurs during the upgrade. - - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. [#85671][#85671] -- If no `nullif` option is specified while using [`IMPORT CSV`](../v23.1/import.html), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. [#84487][#84487] -- [`COPY FROM`](../v23.1/copy.html) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. [#85986][#85986] -- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link v23.1/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. [#81310][#81310] -- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. [#81266][#81266] -- Removed the deprecated `GRANT` privilege. [#81310][#81310] -- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. [#83134][#83134] -- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. [#82560][#82560] -- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link v23.1/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. [#76834][#76834] + - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. +- If no `nullif` option is specified while using [`IMPORT CSV`](../v23.1/import.html), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. +- [`COPY FROM`](../v23.1/copy.html) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. +- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link v23.1/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. +- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. +- Removed the deprecated `GRANT` privilege. +- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. +- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. +- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link v23.1/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. diff --git a/src/current/_includes/v23.1/cdc/avro-udt-composite.md b/src/current/_includes/v23.1/cdc/avro-udt-composite.md index 33e621169a2..da8b7b30a3e 100644 --- a/src/current/_includes/v23.1/cdc/avro-udt-composite.md +++ b/src/current/_includes/v23.1/cdc/avro-udt-composite.md @@ -1 +1 @@ -A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/102903) \ No newline at end of file +A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). diff --git a/src/current/_includes/v23.1/cdc/csv-udt-composite.md b/src/current/_includes/v23.1/cdc/csv-udt-composite.md index 1cf920220d0..fc4597e8e98 100644 --- a/src/current/_includes/v23.1/cdc/csv-udt-composite.md +++ b/src/current/_includes/v23.1/cdc/csv-udt-composite.md @@ -1 +1 @@ -A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/102905) \ No newline at end of file +A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). diff --git a/src/current/_includes/v23.1/faq/what-is-crdb.md b/src/current/_includes/v23.1/faq/what-is-crdb.md index 28857ed61fa..14e9080a4f0 100644 --- a/src/current/_includes/v23.1/faq/what-is-crdb.md +++ b/src/current/_includes/v23.1/faq/what-is-crdb.md @@ -1,7 +1,7 @@ CockroachDB is a [distributed SQL](https://www.cockroachlabs.com/blog/what-is-distributed-sql/) database built on a transactional and strongly-consistent key-value store. It **scales** horizontally; **survives** disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention; supports **strongly-consistent** ACID transactions; and provides a familiar **SQL** API for structuring, manipulating, and querying data. -CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies, and the [source code](https://github.com/cockroachdb/cockroach) is freely available. +CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies. {{site.data.alerts.callout_success}} For a deeper dive into CockroachDB's capabilities and how it fits into the database landscape, take the free [**Intro to Distributed SQL and CockroachDB**](https://university.cockroachlabs.com/courses/course-v1:crl+intro-to-distributed-sql-and-cockroachdb+self-paced/about) course on Cockroach University. -{{site.data.alerts.end}} \ No newline at end of file +{{site.data.alerts.end}} diff --git a/src/current/_includes/v23.1/known-limitations/alter-changefeed-cdc-queries.md b/src/current/_includes/v23.1/known-limitations/alter-changefeed-cdc-queries.md index cbfa5a818f3..fbd2a285c6e 100644 --- a/src/current/_includes/v23.1/known-limitations/alter-changefeed-cdc-queries.md +++ b/src/current/_includes/v23.1/known-limitations/alter-changefeed-cdc-queries.md @@ -1 +1 @@ -{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/83033) \ No newline at end of file +{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. diff --git a/src/current/_includes/v23.1/known-limitations/cdc-execution-locality.md b/src/current/_includes/v23.1/known-limitations/cdc-execution-locality.md index 67f80c8e31d..295c8ad53dd 100644 --- a/src/current/_includes/v23.1/known-limitations/cdc-execution-locality.md +++ b/src/current/_includes/v23.1/known-limitations/cdc-execution-locality.md @@ -1 +1 @@ -Changefeeds that use the [`execution_locality` option]({% link {{ page.version.version }}/changefeeds-in-multi-region-deployments.md %}#run-a-changefeed-job-by-locality) set to a [secondary region]({% link {{ page.version.version }}/multiregion-overview.md %}#secondary-regions) could create a plan that assigns most of the ranges to an [aggregator]({% link {{ page.version.version }}/how-does-an-enterprise-changefeed-work.md %}) on the coordinator node. This leads to an unbalanced plan and slow changefeed progress, particularly when the table is large and has many ranges. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/124822) \ No newline at end of file +Changefeeds that use the [`execution_locality` option]({% link {{ page.version.version }}/changefeeds-in-multi-region-deployments.md %}#run-a-changefeed-job-by-locality) set to a [secondary region]({% link {{ page.version.version }}/multiregion-overview.md %}#secondary-regions) could create a plan that assigns most of the ranges to an [aggregator]({% link {{ page.version.version }}/how-does-an-enterprise-changefeed-work.md %}) on the coordinator node. This leads to an unbalanced plan and slow changefeed progress, particularly when the table is large and has many ranges. diff --git a/src/current/_includes/v23.1/known-limitations/cdc-queries-column-families.md b/src/current/_includes/v23.1/known-limitations/cdc-queries-column-families.md index a68a7949824..ea64b9821ea 100644 --- a/src/current/_includes/v23.1/known-limitations/cdc-queries-column-families.md +++ b/src/current/_includes/v23.1/known-limitations/cdc-queries-column-families.md @@ -1 +1 @@ -Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/127761) \ No newline at end of file +Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. diff --git a/src/current/_includes/v23.1/known-limitations/cdc-queries.md b/src/current/_includes/v23.1/known-limitations/cdc-queries.md index 1fcc6988f1a..0780df859ff 100644 --- a/src/current/_includes/v23.1/known-limitations/cdc-queries.md +++ b/src/current/_includes/v23.1/known-limitations/cdc-queries.md @@ -3,5 +3,5 @@ - The following are not permitted in CDC queries: - [Volatile functions]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility). - Sub-select queries. - - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/98237) -- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/83835) + - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). +- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. diff --git a/src/current/_includes/v23.1/known-limitations/cdc.md b/src/current/_includes/v23.1/known-limitations/cdc.md index 008fdb46867..ff84ca0c769 100644 --- a/src/current/_includes/v23.1/known-limitations/cdc.md +++ b/src/current/_includes/v23.1/known-limitations/cdc.md @@ -1,8 +1,8 @@ -- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/73435) +- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). - {% include {{page.version.version}}/cdc/kafka-vpc-limitation.md %} -- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/73431) -- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/73432) -- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved-option) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/79452) +- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. +- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. +- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved-option) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. - {% include {{page.version.version}}/cdc/types-udt-composite-general.md %} The following limitations apply: - {% include {{page.version.version}}/cdc/avro-udt-composite.md %} - - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} \ No newline at end of file + - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} diff --git a/src/current/_includes/v23.1/known-limitations/changefeed-column-family-message.md b/src/current/_includes/v23.1/known-limitations/changefeed-column-family-message.md index b8aafbe11dc..785cabfebe1 100644 --- a/src/current/_includes/v23.1/known-limitations/changefeed-column-family-message.md +++ b/src/current/_includes/v23.1/known-limitations/changefeed-column-family-message.md @@ -1 +1 @@ -When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/127736) \ No newline at end of file +When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. diff --git a/src/current/_includes/v23.1/known-limitations/copy-syntax.md b/src/current/_includes/v23.1/known-limitations/copy-syntax.md index 0c6c89299df..7ae6204921a 100644 --- a/src/current/_includes/v23.1/known-limitations/copy-syntax.md +++ b/src/current/_includes/v23.1/known-limitations/copy-syntax.md @@ -2,10 +2,10 @@ CockroachDB does not yet support the following `COPY` syntax: - Various `COPY` options (`FORMAT`, `FREEZE`, `QUOTE`, etc.). - - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/85572) - - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/85573) - - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/85574) + - + - + - - `COPY ... FROM ... WHERE `. - - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/54580) + - diff --git a/src/current/_includes/v23.1/known-limitations/drop-owned-by-role-limitations.md b/src/current/_includes/v23.1/known-limitations/drop-owned-by-role-limitations.md index cfa718d4e2d..768c3b54d2c 100644 --- a/src/current/_includes/v23.1/known-limitations/drop-owned-by-role-limitations.md +++ b/src/current/_includes/v23.1/known-limitations/drop-owned-by-role-limitations.md @@ -1,4 +1,4 @@ -- If the [role]({% link {{ page.version.version }}/security-reference/authorization.md %}#roles) for which you are trying to `DROP OWNED BY` was granted a [system-level privilege]({% link {{ page.version.version }}/security-reference/authorization.md %}#supported-privileges) (i.e., using the [`GRANT SYSTEM ...`]({% link {{ page.version.version }}/grant.md %}#grant-system-level-privileges-on-the-entire-cluster) statement), the error shown below will be signalled. The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. For more information about this known limitation, see [cockroachdb/cockroach#88149](https://github.com/cockroachdb/cockroach/issues/88149). +- If the [role]({% link {{ page.version.version }}/security-reference/authorization.md %}#roles) for which you are trying to `DROP OWNED BY` was granted a [system-level privilege]({% link {{ page.version.version }}/security-reference/authorization.md %}#supported-privileges) (i.e., using the [`GRANT SYSTEM ...`]({% link {{ page.version.version }}/grant.md %}#grant-system-level-privileges-on-the-entire-cluster) statement), the error shown below will be signalled. The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. ~~~ ERROR: cannot perform drop owned by if role has synthetic privileges; foo has entries in system.privileges @@ -6,4 +6,4 @@ HINT: perform REVOKE SYSTEM ... for the relevant privileges foo has in system.privileges ~~~ -Note that the phrase "synthetic privileges" in the above error message refers to [system-level privileges]({% link {{ page.version.version }}/security-reference/authorization.md %}#supported-privileges). \ No newline at end of file +Note that the phrase "synthetic privileges" in the above error message refers to [system-level privileges]({% link {{ page.version.version }}/security-reference/authorization.md %}#supported-privileges). diff --git a/src/current/_includes/v23.1/known-limitations/forecasted-stats-limitations.md b/src/current/_includes/v23.1/known-limitations/forecasted-stats-limitations.md index c8753124a96..a7f8eb17ee2 100644 --- a/src/current/_includes/v23.1/known-limitations/forecasted-stats-limitations.md +++ b/src/current/_includes/v23.1/known-limitations/forecasted-stats-limitations.md @@ -6,4 +6,4 @@ Although [`SHOW STATISTICS WITH FORECAST`]({% link {{ page.version.version }}/show-statistics.md %}#display-forecasted-statistics) shows the settings taking effect immediately, they do not actually take effect until new statistics are collected (as can be verified with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %})). - As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. [#123852](https://github.com/cockroachdb/cockroach/issues/123852) \ No newline at end of file + As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. diff --git a/src/current/_includes/v23.1/known-limitations/restore-tables-non-multi-reg.md b/src/current/_includes/v23.1/known-limitations/restore-tables-non-multi-reg.md index 360f93f796f..a6558d30c7d 100644 --- a/src/current/_includes/v23.1/known-limitations/restore-tables-non-multi-reg.md +++ b/src/current/_includes/v23.1/known-limitations/restore-tables-non-multi-reg.md @@ -1 +1 @@ -Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/71502) +Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. diff --git a/src/current/_includes/v23.1/known-limitations/restore-udf.md b/src/current/_includes/v23.1/known-limitations/restore-udf.md index 053a3b90df7..7d5670fbc9e 100644 --- a/src/current/_includes/v23.1/known-limitations/restore-udf.md +++ b/src/current/_includes/v23.1/known-limitations/restore-udf.md @@ -1 +1 @@ -`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/118195) \ No newline at end of file +`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. diff --git a/src/current/_includes/v23.1/known-limitations/set-transaction-no-rollback.md b/src/current/_includes/v23.1/known-limitations/set-transaction-no-rollback.md index c2e78c7d78a..4ab3d72a6ae 100644 --- a/src/current/_includes/v23.1/known-limitations/set-transaction-no-rollback.md +++ b/src/current/_includes/v23.1/known-limitations/set-transaction-no-rollback.md @@ -13,5 +13,3 @@ timezone ------------ 3 ~~~ - -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/69396) diff --git a/src/current/_includes/v23.1/known-limitations/show-backup-locality-incremental-location.md b/src/current/_includes/v23.1/known-limitations/show-backup-locality-incremental-location.md index 428a78c0da0..611bef24708 100644 --- a/src/current/_includes/v23.1/known-limitations/show-backup-locality-incremental-location.md +++ b/src/current/_includes/v23.1/known-limitations/show-backup-locality-incremental-location.md @@ -1 +1 @@ -{% if page.name == "show-backup.md" %}`SHOW BACKUP`{% else %}[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}){% endif %} can display backups taken with the `incremental_location` option **or** for [locality-aware backups]({% link {{ page.version.version }}/take-and-restore-locality-aware-backups.md %}). It will not display backups for locality-aware backups taken with the `incremental_location` option. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/82912). \ No newline at end of file +{% if page.name == "show-backup.md" %}`SHOW BACKUP`{% else %}[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}){% endif %} can display backups taken with the `incremental_location` option **or** for [locality-aware backups]({% link {{ page.version.version }}/take-and-restore-locality-aware-backups.md %}). It will not display backups for locality-aware backups taken with the `incremental_location` option. . diff --git a/src/current/_includes/v23.1/known-limitations/show-backup-symlink.md b/src/current/_includes/v23.1/known-limitations/show-backup-symlink.md index 1316e7d7667..f47d7f3887b 100644 --- a/src/current/_includes/v23.1/known-limitations/show-backup-symlink.md +++ b/src/current/_includes/v23.1/known-limitations/show-backup-symlink.md @@ -1 +1 @@ -[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/70260) \ No newline at end of file +[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. diff --git a/src/current/_includes/v23.1/known-limitations/sql-cursors.md b/src/current/_includes/v23.1/known-limitations/sql-cursors.md index d1c42749661..111e869f798 100644 --- a/src/current/_includes/v23.1/known-limitations/sql-cursors.md +++ b/src/current/_includes/v23.1/known-limitations/sql-cursors.md @@ -1,9 +1,9 @@ CockroachDB implements SQL {% if page.name == "known-limitations.md" %} [cursor]({% link {{ page.version.version }}/cursors.md %}) {% else %} cursor {% endif %} support with the following limitations: -- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. [cockroachdb/cockroach#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. [cockroachdb/cockroach#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. [cockroachdb/cockroach#77099](https://github.com/cockroachdb/cockroach/issues/77099) -- `WITH HOLD`, which allows keeping a cursor open for longer than a transaction by writing its results into a buffer, is accepted as valid syntax within a single transaction but is not supported. It acts as a no-op and does not actually perform the function of `WITH HOLD`, which is to make the cursor live outside its parent transaction. Instead, if you are using `WITH HOLD`, you will be forced to close that cursor within the transaction it was created in. [cockroachdb/cockroach#77101](https://github.com/cockroachdb/cockroach/issues/77101) +- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. +- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. +- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. +- `WITH HOLD`, which allows keeping a cursor open for longer than a transaction by writing its results into a buffer, is accepted as valid syntax within a single transaction but is not supported. It acts as a no-op and does not actually perform the function of `WITH HOLD`, which is to make the cursor live outside its parent transaction. Instead, if you are using `WITH HOLD`, you will be forced to close that cursor within the transaction it was created in. - This syntax is accepted (but does not have any effect): {% include_cached copy-clipboard.html %} ~~~ sql @@ -19,6 +19,6 @@ CockroachDB implements SQL {% if page.name == "known-limitations.md" %} [cursor] DECLARE test_cur CURSOR WITH HOLD FOR SELECT * FROM foo ORDER BY bar; COMMIT; -- This will fail with an error because CLOSE test_cur was not called inside the transaction. ~~~ -- Scrollable cursor (also known as reverse `FETCH`) is not supported. [cockroachdb/cockroach#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. [cockroachdb/cockroach#77103](https://github.com/cockroachdb/cockroach/issues/77103) -- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. [cockroachdb/cockroach#77104](https://github.com/cockroachdb/cockroach/issues/77104) +- Scrollable cursor (also known as reverse `FETCH`) is not supported. +- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. +- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. diff --git a/src/current/_includes/v23.1/known-limitations/stats-refresh-upgrade.md b/src/current/_includes/v23.1/known-limitations/stats-refresh-upgrade.md index 3d5a8d26325..c8239a02bcd 100644 --- a/src/current/_includes/v23.1/known-limitations/stats-refresh-upgrade.md +++ b/src/current/_includes/v23.1/known-limitations/stats-refresh-upgrade.md @@ -1 +1 @@ -- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). [#54816](https://github.com/cockroachdb/cockroach/issues/54816) +- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). diff --git a/src/current/_includes/v23.1/known-limitations/userfile-upload-non-recursive.md b/src/current/_includes/v23.1/known-limitations/userfile-upload-non-recursive.md index 19db5fde6a4..3ed31f482fa 100644 --- a/src/current/_includes/v23.1/known-limitations/userfile-upload-non-recursive.md +++ b/src/current/_includes/v23.1/known-limitations/userfile-upload-non-recursive.md @@ -1 +1 @@ -- `cockroach userfile upload` does not not currently allow for recursive uploads from a directory. This feature will be present with the `--recursive` flag in future versions. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/pull/65307) +- `cockroach userfile upload` does not not currently allow for recursive uploads from a directory. This feature will be present with the `--recursive` flag in future versions. diff --git a/src/current/_includes/v23.1/misc/tooling.md b/src/current/_includes/v23.1/misc/tooling.md index 4ade5aaeb60..2566b93f55a 100644 --- a/src/current/_includes/v23.1/misc/tooling.md +++ b/src/current/_includes/v23.1/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Example Apps]({% link {{ page.version.version }}/example-apps.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). diff --git a/src/current/_includes/v23.1/prod-deployment/decommission-pre-flight-checks.md b/src/current/_includes/v23.1/prod-deployment/decommission-pre-flight-checks.md index b267379384b..f7a613dff78 100644 --- a/src/current/_includes/v23.1/prod-deployment/decommission-pre-flight-checks.md +++ b/src/current/_includes/v23.1/prod-deployment/decommission-pre-flight-checks.md @@ -14,5 +14,5 @@ Failed running "node decommission" These checks can be skipped by [passing the flag `--checks=skip` to `cockroach node decommission`]({% link {{ page.version.version }}/cockroach-node.md %}#decommission-checks). {{site.data.alerts.callout_info}} -The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see [cockroachdb/cockroach#71757](https://github.com/cockroachdb/cockroach/issues/71757) +The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see {{site.data.alerts.end}} diff --git a/src/current/_includes/v23.1/sql/cannot-refresh-materialized-views-inside-transactions.md b/src/current/_includes/v23.1/sql/cannot-refresh-materialized-views-inside-transactions.md index c78308152f6..cd93d6ad8c8 100644 --- a/src/current/_includes/v23.1/sql/cannot-refresh-materialized-views-inside-transactions.md +++ b/src/current/_includes/v23.1/sql/cannot-refresh-materialized-views-inside-transactions.md @@ -23,5 +23,3 @@ ERROR: cannot refresh view in an explicit transaction SQLSTATE: 25000 ~~~ - - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/66008) diff --git a/src/current/_includes/v23.1/sql/expression-indexes-cannot-reference-computed-columns.md b/src/current/_includes/v23.1/sql/expression-indexes-cannot-reference-computed-columns.md index 64d80e31fa3..1081f4b775c 100644 --- a/src/current/_includes/v23.1/sql/expression-indexes-cannot-reference-computed-columns.md +++ b/src/current/_includes/v23.1/sql/expression-indexes-cannot-reference-computed-columns.md @@ -1,3 +1 @@ CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). - - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/67900) diff --git a/src/current/_includes/v23.1/sql/expressions-as-on-conflict-targets.md b/src/current/_includes/v23.1/sql/expressions-as-on-conflict-targets.md index 882dd905b1d..d4c335d0f01 100644 --- a/src/current/_includes/v23.1/sql/expressions-as-on-conflict-targets.md +++ b/src/current/_includes/v23.1/sql/expressions-as-on-conflict-targets.md @@ -36,5 +36,3 @@ INSERT INTO t VALUES (1, 2) ON CONFLICT ((a + b)) DO UPDATE SET a = 10 ^ HINT: try \h INSERT ~~~ - -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/67893) diff --git a/src/current/_includes/v23.1/sql/jsonb-comparison.md b/src/current/_includes/v23.1/sql/jsonb-comparison.md index 7b4435d6fcc..cabe220b8cb 100644 --- a/src/current/_includes/v23.1/sql/jsonb-comparison.md +++ b/src/current/_includes/v23.1/sql/jsonb-comparison.md @@ -9,5 +9,3 @@ You cannot use comparison operators (such as `<` or `>`) on [`JSONB`]({% link {{ ERROR: unsupported comparison operator: < SQLSTATE: 22023 ~~~ - - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/49144) diff --git a/src/current/_includes/v23.1/sql/locality-optimized-search-virtual-computed-columns.md b/src/current/_includes/v23.1/sql/locality-optimized-search-virtual-computed-columns.md index c016103b1e1..7a7392aab0d 100644 --- a/src/current/_includes/v23.1/sql/locality-optimized-search-virtual-computed-columns.md +++ b/src/current/_includes/v23.1/sql/locality-optimized-search-virtual-computed-columns.md @@ -1 +1 @@ -- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/68129) +- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). diff --git a/src/current/_includes/v23.1/sql/materialized-views-no-stats.md b/src/current/_includes/v23.1/sql/materialized-views-no-stats.md index e4d262b56ea..e874917c97a 100644 --- a/src/current/_includes/v23.1/sql/materialized-views-no-stats.md +++ b/src/current/_includes/v23.1/sql/materialized-views-no-stats.md @@ -1,3 +1,3 @@ - The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views. - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/78181). + . diff --git a/src/current/_includes/v23.1/sql/savepoints-and-high-priority-transactions.md b/src/current/_includes/v23.1/sql/savepoints-and-high-priority-transactions.md index c6de489e641..ce124bc3209 100644 --- a/src/current/_includes/v23.1/sql/savepoints-and-high-priority-transactions.md +++ b/src/current/_includes/v23.1/sql/savepoints-and-high-priority-transactions.md @@ -1 +1 @@ -[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. For more information, see GitHub issue [#46414](https://www.github.com/cockroachdb/cockroach/issues/46414). +[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. diff --git a/src/current/_includes/v23.1/sql/select-for-update-limitations.md b/src/current/_includes/v23.1/sql/select-for-update-limitations.md index 3b467ba8f18..83c653c55a8 100644 --- a/src/current/_includes/v23.1/sql/select-for-update-limitations.md +++ b/src/current/_includes/v23.1/sql/select-for-update-limitations.md @@ -5,6 +5,6 @@ If a lease transfer or range split/merge occurs on a range held by an unreplicat - The desired ordering of concurrent accesses to one or more rows of a table expressed by your use of `SELECT ... FOR UPDATE` may not be preserved (that is, a transaction _B_ against some table _T_ that was supposed to wait behind another transaction _A_ operating on _T_ may not wait for transaction _A_). - The transaction that acquired the (now dropped) unreplicated lock may fail to commit, leading to [transaction retry errors with code `40001` and the `restart transaction` error message]({% link {{ page.version.version }}/common-errors.md %}#restart-transaction). -We intend to improve the reliability of these locks. For details, see [cockroachdb/cockroach#75456](https://github.com/cockroachdb/cockroach/issues/75456). +We intend to improve the reliability of these locks. Note that [serializable isolation]({% link {{ page.version.version }}/transactions.md %}#serializable-isolation) is preserved despite this limitation. diff --git a/src/current/_includes/v23.2/backward-incompatible/alpha.1.md b/src/current/_includes/v23.2/backward-incompatible/alpha.1.md index a93bed49fbe..cfdef13c6f5 100644 --- a/src/current/_includes/v23.2/backward-incompatible/alpha.1.md +++ b/src/current/_includes/v23.2/backward-incompatible/alpha.1.md @@ -1,15 +1,15 @@ -- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). [#81298][#81298] -- In the Cockroach CLI, [`BOOL` values](../v23.1/bool.html) are now formatted as `t` or `f` instead of `True` or `False`. [#81943][#81943] -- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node](../v23.1/node-shutdown.html) gracefully, send a `SIGTERM` signal to it. [#82988][#82988] -- Added a cluster version to allow the [Pebble storage engine](../v23.1/architecture/storage-layer.html#pebble) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree](../v23.1/architecture/storage-layer.html#log-structured-merge-trees)). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. [#84887][#84887] +- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). +- In the Cockroach CLI, [`BOOL` values](../v23.1/bool.html) are now formatted as `t` or `f` instead of `True` or `False`. +- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node](../v23.1/node-shutdown.html) gracefully, send a `SIGTERM` signal to it. +- Added a cluster version to allow the [Pebble storage engine](../v23.1/architecture/storage-layer.html#pebble) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree](../v23.1/architecture/storage-layer.html#log-structured-merge-trees)). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. - Using a single TCP port listener for both RPC (node-node) and SQL client connections is now deprecated. This capability **will be removed** in the next version of CockroachDB. Instead, make one of the following configuration changes to your CockroachDB deployment: - Preferred: keep port `26257` for SQL, and allocate a new port, e.g., `26357`, for node-node RPC connections. For example, you might configure a node with the flags `--listen-addr=:26357 --sql-addr=:26257`, where subsequent nodes seeking to join would then use the flag `--join=othernode:26357,othernode:26257`. This will become the default configuration in the next version of CockroachDB. When using this mode of operation, care should be taken to use a `--join` flag that includes both the previous and new port numbers for other nodes, so that no network partition occurs during the upgrade. - - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. [#85671][#85671] -- If no `nullif` option is specified while using [`IMPORT CSV`](../v23.1/import.html), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. [#84487][#84487] -- [`COPY FROM`](../v23.1/copy.html) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. [#85986][#85986] -- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link v23.2/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. [#81310][#81310] -- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. [#81266][#81266] -- Removed the deprecated `GRANT` privilege. [#81310][#81310] -- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. [#83134][#83134] -- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. [#82560][#82560] -- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link v23.2/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. [#76834][#76834] + - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. +- If no `nullif` option is specified while using [`IMPORT CSV`](../v23.1/import.html), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. +- [`COPY FROM`](../v23.1/copy.html) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. +- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link v23.2/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. +- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. +- Removed the deprecated `GRANT` privilege. +- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. +- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. +- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link v23.2/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. diff --git a/src/current/_includes/v23.2/cdc/avro-udt-composite.md b/src/current/_includes/v23.2/cdc/avro-udt-composite.md index 33e621169a2..da8b7b30a3e 100644 --- a/src/current/_includes/v23.2/cdc/avro-udt-composite.md +++ b/src/current/_includes/v23.2/cdc/avro-udt-composite.md @@ -1 +1 @@ -A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/102903) \ No newline at end of file +A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). diff --git a/src/current/_includes/v23.2/cdc/csv-udt-composite.md b/src/current/_includes/v23.2/cdc/csv-udt-composite.md index 1cf920220d0..fc4597e8e98 100644 --- a/src/current/_includes/v23.2/cdc/csv-udt-composite.md +++ b/src/current/_includes/v23.2/cdc/csv-udt-composite.md @@ -1 +1 @@ -A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/102905) \ No newline at end of file +A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). diff --git a/src/current/_includes/v23.2/essential-metrics.md b/src/current/_includes/v23.2/essential-metrics.md index 83bbc469c57..35692c3e4dd 100644 --- a/src/current/_includes/v23.2/essential-metrics.md +++ b/src/current/_includes/v23.2/essential-metrics.md @@ -181,4 +181,3 @@ If [Row-Level TTL]({% link {{ page.version.version }}/row-level-ttl.md %}) is co - [Custom Chart Debug Page]({% link {{ page.version.version }}/ui-custom-chart-debug-page.md %}) - [Cluster API]({% link {{ page.version.version }}/cluster-api.md %}) - [Events to alert on]({% link {{ page.version.version }}/monitoring-and-alerting.md %}#events-to-alert-on) -- [CockroachDB Source Code - DB Console metrics to graphs mappings (in *.tsx files)](https://github.com/cockroachdb/cockroach/tree/master/pkg/ui/workspaces/db-console/src/views/cluster/containers/nodeGraphs/dashboards) \ No newline at end of file diff --git a/src/current/_includes/v23.2/faq/what-is-crdb.md b/src/current/_includes/v23.2/faq/what-is-crdb.md index 28857ed61fa..14e9080a4f0 100644 --- a/src/current/_includes/v23.2/faq/what-is-crdb.md +++ b/src/current/_includes/v23.2/faq/what-is-crdb.md @@ -1,7 +1,7 @@ CockroachDB is a [distributed SQL](https://www.cockroachlabs.com/blog/what-is-distributed-sql/) database built on a transactional and strongly-consistent key-value store. It **scales** horizontally; **survives** disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention; supports **strongly-consistent** ACID transactions; and provides a familiar **SQL** API for structuring, manipulating, and querying data. -CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies, and the [source code](https://github.com/cockroachdb/cockroach) is freely available. +CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies. {{site.data.alerts.callout_success}} For a deeper dive into CockroachDB's capabilities and how it fits into the database landscape, take the free [**Intro to Distributed SQL and CockroachDB**](https://university.cockroachlabs.com/courses/course-v1:crl+intro-to-distributed-sql-and-cockroachdb+self-paced/about) course on Cockroach University. -{{site.data.alerts.end}} \ No newline at end of file +{{site.data.alerts.end}} diff --git a/src/current/_includes/v23.2/known-limitations/alter-changefeed-cdc-queries.md b/src/current/_includes/v23.2/known-limitations/alter-changefeed-cdc-queries.md index cbfa5a818f3..fbd2a285c6e 100644 --- a/src/current/_includes/v23.2/known-limitations/alter-changefeed-cdc-queries.md +++ b/src/current/_includes/v23.2/known-limitations/alter-changefeed-cdc-queries.md @@ -1 +1 @@ -{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/83033) \ No newline at end of file +{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. diff --git a/src/current/_includes/v23.2/known-limitations/cdc-execution-locality.md b/src/current/_includes/v23.2/known-limitations/cdc-execution-locality.md index 722ccabedbd..437e2b6bf6c 100644 --- a/src/current/_includes/v23.2/known-limitations/cdc-execution-locality.md +++ b/src/current/_includes/v23.2/known-limitations/cdc-execution-locality.md @@ -1 +1 @@ -In v23.2.0, changefeeds that use the [`execution_locality` option]({% link {{ page.version.version }}/changefeeds-in-multi-region-deployments.md %}#run-a-changefeed-job-by-locality) set to a [secondary region]({% link {{ page.version.version }}/multiregion-overview.md %}#secondary-regions) could create a plan that assigns most of the ranges to an [aggregator]({% link {{ page.version.version }}/how-does-an-enterprise-changefeed-work.md %}) on the coordinator node. This leads to an unbalanced plan and slow changefeed progress, particularly when the table is large and has many ranges. This issue is [partially mitigated](https://github.com/cockroachdb/cockroach/commit/5d7714a03a891c9fd5746fb876c39dced4f47205) in v23.2.1 and later. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/124822) \ No newline at end of file +In v23.2.0, changefeeds that use the [`execution_locality` option]({% link {{ page.version.version }}/changefeeds-in-multi-region-deployments.md %}#run-a-changefeed-job-by-locality) set to a [secondary region]({% link {{ page.version.version }}/multiregion-overview.md %}#secondary-regions) could create a plan that assigns most of the ranges to an [aggregator]({% link {{ page.version.version }}/how-does-an-enterprise-changefeed-work.md %}) on the coordinator node. This leads to an unbalanced plan and slow changefeed progress, particularly when the table is large and has many ranges. This issue is in v23.2.1 and later. diff --git a/src/current/_includes/v23.2/known-limitations/cdc-queries-column-families.md b/src/current/_includes/v23.2/known-limitations/cdc-queries-column-families.md index a68a7949824..ea64b9821ea 100644 --- a/src/current/_includes/v23.2/known-limitations/cdc-queries-column-families.md +++ b/src/current/_includes/v23.2/known-limitations/cdc-queries-column-families.md @@ -1 +1 @@ -Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/127761) \ No newline at end of file +Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. diff --git a/src/current/_includes/v23.2/known-limitations/cdc-queries.md b/src/current/_includes/v23.2/known-limitations/cdc-queries.md index 1fcc6988f1a..0780df859ff 100644 --- a/src/current/_includes/v23.2/known-limitations/cdc-queries.md +++ b/src/current/_includes/v23.2/known-limitations/cdc-queries.md @@ -3,5 +3,5 @@ - The following are not permitted in CDC queries: - [Volatile functions]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility). - Sub-select queries. - - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/98237) -- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/83835) + - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). +- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. diff --git a/src/current/_includes/v23.2/known-limitations/cdc.md b/src/current/_includes/v23.2/known-limitations/cdc.md index 008fdb46867..ff84ca0c769 100644 --- a/src/current/_includes/v23.2/known-limitations/cdc.md +++ b/src/current/_includes/v23.2/known-limitations/cdc.md @@ -1,8 +1,8 @@ -- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/73435) +- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). - {% include {{page.version.version}}/cdc/kafka-vpc-limitation.md %} -- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/73431) -- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/73432) -- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved-option) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/79452) +- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. +- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. +- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved-option) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. - {% include {{page.version.version}}/cdc/types-udt-composite-general.md %} The following limitations apply: - {% include {{page.version.version}}/cdc/avro-udt-composite.md %} - - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} \ No newline at end of file + - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} diff --git a/src/current/_includes/v23.2/known-limitations/changefeed-column-family-message.md b/src/current/_includes/v23.2/known-limitations/changefeed-column-family-message.md index b8aafbe11dc..785cabfebe1 100644 --- a/src/current/_includes/v23.2/known-limitations/changefeed-column-family-message.md +++ b/src/current/_includes/v23.2/known-limitations/changefeed-column-family-message.md @@ -1 +1 @@ -When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/127736) \ No newline at end of file +When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. diff --git a/src/current/_includes/v23.2/known-limitations/copy-syntax.md b/src/current/_includes/v23.2/known-limitations/copy-syntax.md index 0c6c89299df..7ae6204921a 100644 --- a/src/current/_includes/v23.2/known-limitations/copy-syntax.md +++ b/src/current/_includes/v23.2/known-limitations/copy-syntax.md @@ -2,10 +2,10 @@ CockroachDB does not yet support the following `COPY` syntax: - Various `COPY` options (`FORMAT`, `FREEZE`, `QUOTE`, etc.). - - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/85572) - - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/85573) - - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/85574) + - + - + - - `COPY ... FROM ... WHERE `. - - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/54580) + - diff --git a/src/current/_includes/v23.2/known-limitations/drop-owned-by-role-limitations.md b/src/current/_includes/v23.2/known-limitations/drop-owned-by-role-limitations.md index cfa718d4e2d..768c3b54d2c 100644 --- a/src/current/_includes/v23.2/known-limitations/drop-owned-by-role-limitations.md +++ b/src/current/_includes/v23.2/known-limitations/drop-owned-by-role-limitations.md @@ -1,4 +1,4 @@ -- If the [role]({% link {{ page.version.version }}/security-reference/authorization.md %}#roles) for which you are trying to `DROP OWNED BY` was granted a [system-level privilege]({% link {{ page.version.version }}/security-reference/authorization.md %}#supported-privileges) (i.e., using the [`GRANT SYSTEM ...`]({% link {{ page.version.version }}/grant.md %}#grant-system-level-privileges-on-the-entire-cluster) statement), the error shown below will be signalled. The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. For more information about this known limitation, see [cockroachdb/cockroach#88149](https://github.com/cockroachdb/cockroach/issues/88149). +- If the [role]({% link {{ page.version.version }}/security-reference/authorization.md %}#roles) for which you are trying to `DROP OWNED BY` was granted a [system-level privilege]({% link {{ page.version.version }}/security-reference/authorization.md %}#supported-privileges) (i.e., using the [`GRANT SYSTEM ...`]({% link {{ page.version.version }}/grant.md %}#grant-system-level-privileges-on-the-entire-cluster) statement), the error shown below will be signalled. The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. ~~~ ERROR: cannot perform drop owned by if role has synthetic privileges; foo has entries in system.privileges @@ -6,4 +6,4 @@ HINT: perform REVOKE SYSTEM ... for the relevant privileges foo has in system.privileges ~~~ -Note that the phrase "synthetic privileges" in the above error message refers to [system-level privileges]({% link {{ page.version.version }}/security-reference/authorization.md %}#supported-privileges). \ No newline at end of file +Note that the phrase "synthetic privileges" in the above error message refers to [system-level privileges]({% link {{ page.version.version }}/security-reference/authorization.md %}#supported-privileges). diff --git a/src/current/_includes/v23.2/known-limitations/forecasted-stats-limitations.md b/src/current/_includes/v23.2/known-limitations/forecasted-stats-limitations.md index c8753124a96..a7f8eb17ee2 100644 --- a/src/current/_includes/v23.2/known-limitations/forecasted-stats-limitations.md +++ b/src/current/_includes/v23.2/known-limitations/forecasted-stats-limitations.md @@ -6,4 +6,4 @@ Although [`SHOW STATISTICS WITH FORECAST`]({% link {{ page.version.version }}/show-statistics.md %}#display-forecasted-statistics) shows the settings taking effect immediately, they do not actually take effect until new statistics are collected (as can be verified with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %})). - As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. [#123852](https://github.com/cockroachdb/cockroach/issues/123852) \ No newline at end of file + As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. diff --git a/src/current/_includes/v23.2/known-limitations/generic-query-plan-limitations.md b/src/current/_includes/v23.2/known-limitations/generic-query-plan-limitations.md index e28e66d5f32..e588b799305 100644 --- a/src/current/_includes/v23.2/known-limitations/generic-query-plan-limitations.md +++ b/src/current/_includes/v23.2/known-limitations/generic-query-plan-limitations.md @@ -1,2 +1,2 @@ -- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. [#128916](https://github.com/cockroachdb/cockroach/issues/128916) -- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. [#128911](https://github.com/cockroachdb/cockroach/issues/128911) \ No newline at end of file +- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. +- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. diff --git a/src/current/_includes/v23.2/known-limitations/pcr-scheduled-changefeeds.md b/src/current/_includes/v23.2/known-limitations/pcr-scheduled-changefeeds.md index 58d01be65aa..73696594240 100644 --- a/src/current/_includes/v23.2/known-limitations/pcr-scheduled-changefeeds.md +++ b/src/current/_includes/v23.2/known-limitations/pcr-scheduled-changefeeds.md @@ -1 +1 @@ -After the [cutover process]({% link {{ page.version.version }}/cutover-replication.md %}) for [physical cluster replication]({% link {{ page.version.version }}/physical-cluster-replication-overview.md %}), [scheduled changefeeds]({% link {{ page.version.version }}/create-schedule-for-changefeed.md %}) will continue on the promoted cluster. You will need to manage [pausing]({% link {{ page.version.version }}/pause-schedules.md %}) or [canceling]({% link {{ page.version.version }}/drop-schedules.md %}) the schedule on the promoted standby cluster to avoid two clusters running the same changefeed to one sink. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/123776) \ No newline at end of file +After the [cutover process]({% link {{ page.version.version }}/cutover-replication.md %}) for [physical cluster replication]({% link {{ page.version.version }}/physical-cluster-replication-overview.md %}), [scheduled changefeeds]({% link {{ page.version.version }}/create-schedule-for-changefeed.md %}) will continue on the promoted cluster. You will need to manage [pausing]({% link {{ page.version.version }}/pause-schedules.md %}) or [canceling]({% link {{ page.version.version }}/drop-schedules.md %}) the schedule on the promoted standby cluster to avoid two clusters running the same changefeed to one sink. diff --git a/src/current/_includes/v23.2/known-limitations/restore-tables-non-multi-reg.md b/src/current/_includes/v23.2/known-limitations/restore-tables-non-multi-reg.md index 360f93f796f..a6558d30c7d 100644 --- a/src/current/_includes/v23.2/known-limitations/restore-tables-non-multi-reg.md +++ b/src/current/_includes/v23.2/known-limitations/restore-tables-non-multi-reg.md @@ -1 +1 @@ -Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/71502) +Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. diff --git a/src/current/_includes/v23.2/known-limitations/restore-udf.md b/src/current/_includes/v23.2/known-limitations/restore-udf.md index 053a3b90df7..7d5670fbc9e 100644 --- a/src/current/_includes/v23.2/known-limitations/restore-udf.md +++ b/src/current/_includes/v23.2/known-limitations/restore-udf.md @@ -1 +1 @@ -`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/118195) \ No newline at end of file +`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. diff --git a/src/current/_includes/v23.2/known-limitations/row-level-ttl-limitations.md b/src/current/_includes/v23.2/known-limitations/row-level-ttl-limitations.md index ea61345f901..7d3ab6288fa 100644 --- a/src/current/_includes/v23.2/known-limitations/row-level-ttl-limitations.md +++ b/src/current/_includes/v23.2/known-limitations/row-level-ttl-limitations.md @@ -1,5 +1,5 @@ - Any queries you run against tables with Row-Level TTL enabled do not filter out expired rows from the result set (this includes [`UPDATE`s]({% link {{ page.version.version }}/update.md %}) and [`DELETE`s]({% link {{ page.version.version }}/delete.md %})). This feature may be added in a future release. For now, follow the instructions in [Filter out expired rows from a selection query]({% link {{ page.version.version }}/row-level-ttl.md %}#filter-out-expired-rows-from-a-selection-query). -- Tables with Row-Level TTL can be referenced by [foreign keys]({% link {{page.version.version}}/foreign-key.md %}). TTL deletes are issued as regular [`DELETE`]({% link {{ page.version.version }}/delete.md %}) statements, so inbound foreign keys apply. If an inbound foreign key uses `ON DELETE RESTRICT` and referencing rows exist, the TTL job fails with a foreign key violation. [#101372](https://github.com/cockroachdb/cockroach/issues/101372) +- Tables with Row-Level TTL can be referenced by [foreign keys]({% link {{page.version.version}}/foreign-key.md %}). TTL deletes are issued as regular [`DELETE`]({% link {{ page.version.version }}/delete.md %}) statements, so inbound foreign keys apply. If an inbound foreign key uses `ON DELETE RESTRICT` and referencing rows exist, the TTL job fails with a foreign key violation. - Enabling Row-Level TTL on a table with multiple [secondary indexes]({% link {{ page.version.version }}/indexes.md %}) can have negative performance impacts on a cluster, including increased [latency]({% link {{ page.version.version }}/common-issues-to-monitor.md %}#service-latency) and [contention]({% link {{ page.version.version }}/performance-best-practices-overview.md %}#transaction-contention). This is particularly true for large tables with terabytes of data and billions of rows that are split up into multiple ranges across separate nodes. - Increased latency may occur because secondary indexes aren't necessarily stored on the same underlying [ranges]({% link {{ page.version.version }}/architecture/overview.md %}#architecture-range) as a table's [primary indexes]({% link {{ page.version.version }}/indexes.md %}). Further, the secondary indexes' ranges may have [leaseholders]({% link {{ page.version.version }}/architecture/overview.md %}#architecture-leaseholder) located on different nodes than the primary index. - Increased contention may occur because [intents]({% link {{ page.version.version }}/architecture/transaction-layer.md %}#write-intents) must be written as part of performing the deletions. diff --git a/src/current/_includes/v23.2/known-limitations/set-transaction-no-rollback.md b/src/current/_includes/v23.2/known-limitations/set-transaction-no-rollback.md index c2e78c7d78a..4ab3d72a6ae 100644 --- a/src/current/_includes/v23.2/known-limitations/set-transaction-no-rollback.md +++ b/src/current/_includes/v23.2/known-limitations/set-transaction-no-rollback.md @@ -13,5 +13,3 @@ timezone ------------ 3 ~~~ - -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/69396) diff --git a/src/current/_includes/v23.2/known-limitations/show-backup-locality-incremental-location.md b/src/current/_includes/v23.2/known-limitations/show-backup-locality-incremental-location.md index 428a78c0da0..611bef24708 100644 --- a/src/current/_includes/v23.2/known-limitations/show-backup-locality-incremental-location.md +++ b/src/current/_includes/v23.2/known-limitations/show-backup-locality-incremental-location.md @@ -1 +1 @@ -{% if page.name == "show-backup.md" %}`SHOW BACKUP`{% else %}[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}){% endif %} can display backups taken with the `incremental_location` option **or** for [locality-aware backups]({% link {{ page.version.version }}/take-and-restore-locality-aware-backups.md %}). It will not display backups for locality-aware backups taken with the `incremental_location` option. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/82912). \ No newline at end of file +{% if page.name == "show-backup.md" %}`SHOW BACKUP`{% else %}[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}){% endif %} can display backups taken with the `incremental_location` option **or** for [locality-aware backups]({% link {{ page.version.version }}/take-and-restore-locality-aware-backups.md %}). It will not display backups for locality-aware backups taken with the `incremental_location` option. . diff --git a/src/current/_includes/v23.2/known-limitations/show-backup-symlink.md b/src/current/_includes/v23.2/known-limitations/show-backup-symlink.md index 1316e7d7667..f47d7f3887b 100644 --- a/src/current/_includes/v23.2/known-limitations/show-backup-symlink.md +++ b/src/current/_includes/v23.2/known-limitations/show-backup-symlink.md @@ -1 +1 @@ -[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/70260) \ No newline at end of file +[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. diff --git a/src/current/_includes/v23.2/known-limitations/sql-cursors.md b/src/current/_includes/v23.2/known-limitations/sql-cursors.md index d1c42749661..111e869f798 100644 --- a/src/current/_includes/v23.2/known-limitations/sql-cursors.md +++ b/src/current/_includes/v23.2/known-limitations/sql-cursors.md @@ -1,9 +1,9 @@ CockroachDB implements SQL {% if page.name == "known-limitations.md" %} [cursor]({% link {{ page.version.version }}/cursors.md %}) {% else %} cursor {% endif %} support with the following limitations: -- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. [cockroachdb/cockroach#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. [cockroachdb/cockroach#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. [cockroachdb/cockroach#77099](https://github.com/cockroachdb/cockroach/issues/77099) -- `WITH HOLD`, which allows keeping a cursor open for longer than a transaction by writing its results into a buffer, is accepted as valid syntax within a single transaction but is not supported. It acts as a no-op and does not actually perform the function of `WITH HOLD`, which is to make the cursor live outside its parent transaction. Instead, if you are using `WITH HOLD`, you will be forced to close that cursor within the transaction it was created in. [cockroachdb/cockroach#77101](https://github.com/cockroachdb/cockroach/issues/77101) +- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. +- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. +- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. +- `WITH HOLD`, which allows keeping a cursor open for longer than a transaction by writing its results into a buffer, is accepted as valid syntax within a single transaction but is not supported. It acts as a no-op and does not actually perform the function of `WITH HOLD`, which is to make the cursor live outside its parent transaction. Instead, if you are using `WITH HOLD`, you will be forced to close that cursor within the transaction it was created in. - This syntax is accepted (but does not have any effect): {% include_cached copy-clipboard.html %} ~~~ sql @@ -19,6 +19,6 @@ CockroachDB implements SQL {% if page.name == "known-limitations.md" %} [cursor] DECLARE test_cur CURSOR WITH HOLD FOR SELECT * FROM foo ORDER BY bar; COMMIT; -- This will fail with an error because CLOSE test_cur was not called inside the transaction. ~~~ -- Scrollable cursor (also known as reverse `FETCH`) is not supported. [cockroachdb/cockroach#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. [cockroachdb/cockroach#77103](https://github.com/cockroachdb/cockroach/issues/77103) -- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. [cockroachdb/cockroach#77104](https://github.com/cockroachdb/cockroach/issues/77104) +- Scrollable cursor (also known as reverse `FETCH`) is not supported. +- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. +- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. diff --git a/src/current/_includes/v23.2/known-limitations/stats-refresh-upgrade.md b/src/current/_includes/v23.2/known-limitations/stats-refresh-upgrade.md index 3d5a8d26325..c8239a02bcd 100644 --- a/src/current/_includes/v23.2/known-limitations/stats-refresh-upgrade.md +++ b/src/current/_includes/v23.2/known-limitations/stats-refresh-upgrade.md @@ -1 +1 @@ -- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). [#54816](https://github.com/cockroachdb/cockroach/issues/54816) +- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). diff --git a/src/current/_includes/v23.2/known-limitations/userfile-upload-non-recursive.md b/src/current/_includes/v23.2/known-limitations/userfile-upload-non-recursive.md index 19db5fde6a4..3ed31f482fa 100644 --- a/src/current/_includes/v23.2/known-limitations/userfile-upload-non-recursive.md +++ b/src/current/_includes/v23.2/known-limitations/userfile-upload-non-recursive.md @@ -1 +1 @@ -- `cockroach userfile upload` does not not currently allow for recursive uploads from a directory. This feature will be present with the `--recursive` flag in future versions. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/pull/65307) +- `cockroach userfile upload` does not not currently allow for recursive uploads from a directory. This feature will be present with the `--recursive` flag in future versions. diff --git a/src/current/_includes/v23.2/misc/tooling.md b/src/current/_includes/v23.2/misc/tooling.md index dcd24363435..ec553f1b383 100644 --- a/src/current/_includes/v23.2/misc/tooling.md +++ b/src/current/_includes/v23.2/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Example Apps]({% link {{ page.version.version }}/example-apps.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). diff --git a/src/current/_includes/v23.2/prod-deployment/decommission-pre-flight-checks.md b/src/current/_includes/v23.2/prod-deployment/decommission-pre-flight-checks.md index b267379384b..f7a613dff78 100644 --- a/src/current/_includes/v23.2/prod-deployment/decommission-pre-flight-checks.md +++ b/src/current/_includes/v23.2/prod-deployment/decommission-pre-flight-checks.md @@ -14,5 +14,5 @@ Failed running "node decommission" These checks can be skipped by [passing the flag `--checks=skip` to `cockroach node decommission`]({% link {{ page.version.version }}/cockroach-node.md %}#decommission-checks). {{site.data.alerts.callout_info}} -The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see [cockroachdb/cockroach#71757](https://github.com/cockroachdb/cockroach/issues/71757) +The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see {{site.data.alerts.end}} diff --git a/src/current/_includes/v23.2/sql/cannot-refresh-materialized-views-inside-transactions.md b/src/current/_includes/v23.2/sql/cannot-refresh-materialized-views-inside-transactions.md index c78308152f6..cd93d6ad8c8 100644 --- a/src/current/_includes/v23.2/sql/cannot-refresh-materialized-views-inside-transactions.md +++ b/src/current/_includes/v23.2/sql/cannot-refresh-materialized-views-inside-transactions.md @@ -23,5 +23,3 @@ ERROR: cannot refresh view in an explicit transaction SQLSTATE: 25000 ~~~ - - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/66008) diff --git a/src/current/_includes/v23.2/sql/expression-indexes-cannot-reference-computed-columns.md b/src/current/_includes/v23.2/sql/expression-indexes-cannot-reference-computed-columns.md index 64d80e31fa3..1081f4b775c 100644 --- a/src/current/_includes/v23.2/sql/expression-indexes-cannot-reference-computed-columns.md +++ b/src/current/_includes/v23.2/sql/expression-indexes-cannot-reference-computed-columns.md @@ -1,3 +1 @@ CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). - - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/67900) diff --git a/src/current/_includes/v23.2/sql/expressions-as-on-conflict-targets.md b/src/current/_includes/v23.2/sql/expressions-as-on-conflict-targets.md index 882dd905b1d..d4c335d0f01 100644 --- a/src/current/_includes/v23.2/sql/expressions-as-on-conflict-targets.md +++ b/src/current/_includes/v23.2/sql/expressions-as-on-conflict-targets.md @@ -36,5 +36,3 @@ INSERT INTO t VALUES (1, 2) ON CONFLICT ((a + b)) DO UPDATE SET a = 10 ^ HINT: try \h INSERT ~~~ - -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/67893) diff --git a/src/current/_includes/v23.2/sql/jsonb-comparison.md b/src/current/_includes/v23.2/sql/jsonb-comparison.md index 7b4435d6fcc..cabe220b8cb 100644 --- a/src/current/_includes/v23.2/sql/jsonb-comparison.md +++ b/src/current/_includes/v23.2/sql/jsonb-comparison.md @@ -9,5 +9,3 @@ You cannot use comparison operators (such as `<` or `>`) on [`JSONB`]({% link {{ ERROR: unsupported comparison operator: < SQLSTATE: 22023 ~~~ - - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/49144) diff --git a/src/current/_includes/v23.2/sql/locality-optimized-search-virtual-computed-columns.md b/src/current/_includes/v23.2/sql/locality-optimized-search-virtual-computed-columns.md index c016103b1e1..7a7392aab0d 100644 --- a/src/current/_includes/v23.2/sql/locality-optimized-search-virtual-computed-columns.md +++ b/src/current/_includes/v23.2/sql/locality-optimized-search-virtual-computed-columns.md @@ -1 +1 @@ -- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/68129) +- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). diff --git a/src/current/_includes/v23.2/sql/materialized-views-no-stats.md b/src/current/_includes/v23.2/sql/materialized-views-no-stats.md index e4d262b56ea..e874917c97a 100644 --- a/src/current/_includes/v23.2/sql/materialized-views-no-stats.md +++ b/src/current/_includes/v23.2/sql/materialized-views-no-stats.md @@ -1,3 +1,3 @@ - The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views. - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/78181). + . diff --git a/src/current/_includes/v23.2/sql/savepoints-and-high-priority-transactions.md b/src/current/_includes/v23.2/sql/savepoints-and-high-priority-transactions.md index c6de489e641..ce124bc3209 100644 --- a/src/current/_includes/v23.2/sql/savepoints-and-high-priority-transactions.md +++ b/src/current/_includes/v23.2/sql/savepoints-and-high-priority-transactions.md @@ -1 +1 @@ -[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. For more information, see GitHub issue [#46414](https://www.github.com/cockroachdb/cockroach/issues/46414). +[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. diff --git a/src/current/_includes/v23.2/sql/unsupported-postgres-features.md b/src/current/_includes/v23.2/sql/unsupported-postgres-features.md index 999c4e2e001..d36575924e0 100644 --- a/src/current/_includes/v23.2/sql/unsupported-postgres-features.md +++ b/src/current/_includes/v23.2/sql/unsupported-postgres-features.md @@ -1,10 +1,10 @@ ### `CREATE DOMAIN` -CockroachDB does not support `CREATE DOMAIN`. Tracking issue: [cockroachdb/cockroach#108659](https://github.com/cockroachdb/cockroach/issues/108659). +CockroachDB does not support `CREATE DOMAIN`. Tracking issue: . ### PostgreSQL range types -CockroachDB does not support PostgreSQL range types. Tracking issue: [cockroachdb/cockroach#128638](https://github.com/cockroachdb/cockroach/issues/128638). +CockroachDB does not support PostgreSQL range types. Tracking issue: . ### Other unsupported features diff --git a/src/current/_includes/v24.1/backward-incompatible/alpha.1.md b/src/current/_includes/v24.1/backward-incompatible/alpha.1.md index 524b22b0faa..c8ec8c3bf1c 100644 --- a/src/current/_includes/v24.1/backward-incompatible/alpha.1.md +++ b/src/current/_includes/v24.1/backward-incompatible/alpha.1.md @@ -1,15 +1,15 @@ -- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). [#81298][#81298] -- In the Cockroach CLI, [`BOOL` values](../v23.1/bool.html) are now formatted as `t` or `f` instead of `True` or `False`. [#81943][#81943] -- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node](../v23.1/node-shutdown.html) gracefully, send a `SIGTERM` signal to it. [#82988][#82988] -- Added a cluster version to allow the [Pebble storage engine](../v23.1/architecture/storage-layer.html#pebble) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree](../v23.1/architecture/storage-layer.html#log-structured-merge-trees)). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. [#84887][#84887] +- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). +- In the Cockroach CLI, [`BOOL` values](../v23.1/bool.html) are now formatted as `t` or `f` instead of `True` or `False`. +- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node](../v23.1/node-shutdown.html) gracefully, send a `SIGTERM` signal to it. +- Added a cluster version to allow the [Pebble storage engine](../v23.1/architecture/storage-layer.html#pebble) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree](../v23.1/architecture/storage-layer.html#log-structured-merge-trees)). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. - Using a single TCP port listener for both RPC (node-node) and SQL client connections is now deprecated. This capability **will be removed** in the next version of CockroachDB. Instead, make one of the following configuration changes to your CockroachDB deployment: - Preferred: keep port `26257` for SQL, and allocate a new port, e.g., `26357`, for node-node RPC connections. For example, you might configure a node with the flags `--listen-addr=:26357 --sql-addr=:26257`, where subsequent nodes seeking to join would then use the flag `--join=othernode:26357,othernode:26257`. This will become the default configuration in the next version of CockroachDB. When using this mode of operation, care should be taken to use a `--join` flag that includes both the previous and new port numbers for other nodes, so that no network partition occurs during the upgrade. - - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. [#85671][#85671] -- If no `nullif` option is specified while using [`IMPORT CSV`](../v23.1/import.html), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. [#84487][#84487] -- [`COPY FROM`](../v23.1/copy.html) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. [#85986][#85986] -- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link v24.1/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. [#81310][#81310] -- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. [#81266][#81266] -- Removed the deprecated `GRANT` privilege. [#81310][#81310] -- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. [#83134][#83134] -- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. [#82560][#82560] -- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link v24.1/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. [#76834][#76834] + - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. +- If no `nullif` option is specified while using [`IMPORT CSV`](../v23.1/import.html), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. +- [`COPY FROM`](../v23.1/copy.html) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. +- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link v24.1/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. +- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. +- Removed the deprecated `GRANT` privilege. +- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. +- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. +- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link v24.1/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. diff --git a/src/current/_includes/v24.1/cdc/avro-udt-composite.md b/src/current/_includes/v24.1/cdc/avro-udt-composite.md index 7a34fbd3253..da8b7b30a3e 100644 --- a/src/current/_includes/v24.1/cdc/avro-udt-composite.md +++ b/src/current/_includes/v24.1/cdc/avro-udt-composite.md @@ -1 +1 @@ -A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). [#102903](https://github.com/cockroachdb/cockroach/issues/102903) \ No newline at end of file +A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). diff --git a/src/current/_includes/v24.1/cdc/csv-udt-composite.md b/src/current/_includes/v24.1/cdc/csv-udt-composite.md index 834bddd8366..fc4597e8e98 100644 --- a/src/current/_includes/v24.1/cdc/csv-udt-composite.md +++ b/src/current/_includes/v24.1/cdc/csv-udt-composite.md @@ -1 +1 @@ -A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). [#102905](https://github.com/cockroachdb/cockroach/issues/102905) \ No newline at end of file +A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). diff --git a/src/current/_includes/v24.1/essential-metrics.md b/src/current/_includes/v24.1/essential-metrics.md index 5f5754d17a9..1a84cda48a5 100644 --- a/src/current/_includes/v24.1/essential-metrics.md +++ b/src/current/_includes/v24.1/essential-metrics.md @@ -201,4 +201,3 @@ If [Row-Level TTL]({% link {{ page.version.version }}/row-level-ttl.md %}) is co - [Custom Chart Debug Page]({% link {{ page.version.version }}/ui-custom-chart-debug-page.md %}) - [Cluster API]({% link {{ page.version.version }}/cluster-api.md %}) - [Essential Alerts]({% link {{ page.version.version }}/essential-alerts-{{ include.deployment}}.md %}) -- [CockroachDB Source Code - DB Console metrics to graphs mappings (in *.tsx files)](https://github.com/cockroachdb/cockroach/tree/master/pkg/ui/workspaces/db-console/src/views/cluster/containers/nodeGraphs/dashboards) diff --git a/src/current/_includes/v24.1/faq/what-is-crdb.md b/src/current/_includes/v24.1/faq/what-is-crdb.md index 28857ed61fa..14e9080a4f0 100644 --- a/src/current/_includes/v24.1/faq/what-is-crdb.md +++ b/src/current/_includes/v24.1/faq/what-is-crdb.md @@ -1,7 +1,7 @@ CockroachDB is a [distributed SQL](https://www.cockroachlabs.com/blog/what-is-distributed-sql/) database built on a transactional and strongly-consistent key-value store. It **scales** horizontally; **survives** disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention; supports **strongly-consistent** ACID transactions; and provides a familiar **SQL** API for structuring, manipulating, and querying data. -CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies, and the [source code](https://github.com/cockroachdb/cockroach) is freely available. +CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies. {{site.data.alerts.callout_success}} For a deeper dive into CockroachDB's capabilities and how it fits into the database landscape, take the free [**Intro to Distributed SQL and CockroachDB**](https://university.cockroachlabs.com/courses/course-v1:crl+intro-to-distributed-sql-and-cockroachdb+self-paced/about) course on Cockroach University. -{{site.data.alerts.end}} \ No newline at end of file +{{site.data.alerts.end}} diff --git a/src/current/_includes/v24.1/finalization-required/119894.md b/src/current/_includes/v24.1/finalization-required/119894.md index f2b393c3c0e..c65c82b83d5 100644 --- a/src/current/_includes/v24.1/finalization-required/119894.md +++ b/src/current/_includes/v24.1/finalization-required/119894.md @@ -1 +1 @@ -[Splits](https://cockroachlabs.com/docs/{{ include.version }}/architecture/distribution-layer#range-splits) no longer hold [latches](https://cockroachlabs.com/docs/architecture/distribution-layer.#latch-manager) for time proportional to the range size while computing [MVCC](https://cockroachlabs.com/docs/{{ include.version }}/architecture/storage-layer#mvcc) statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. [#119894](https://github.com/cockroachdb/cockroach/pull/119894) +[Splits](https://cockroachlabs.com/docs/{{ include.version }}/architecture/distribution-layer#range-splits) no longer hold [latches](https://cockroachlabs.com/docs/architecture/distribution-layer.#latch-manager) for time proportional to the range size while computing [MVCC](https://cockroachlabs.com/docs/{{ include.version }}/architecture/storage-layer#mvcc) statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. diff --git a/src/current/_includes/v24.1/known-limitations/alter-changefeed-cdc-queries.md b/src/current/_includes/v24.1/known-limitations/alter-changefeed-cdc-queries.md index 56dd7eeaacd..fbd2a285c6e 100644 --- a/src/current/_includes/v24.1/known-limitations/alter-changefeed-cdc-queries.md +++ b/src/current/_includes/v24.1/known-limitations/alter-changefeed-cdc-queries.md @@ -1 +1 @@ -{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. [#83033](https://github.com/cockroachdb/cockroach/issues/83033) \ No newline at end of file +{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. diff --git a/src/current/_includes/v24.1/known-limitations/alter-changefeed-limitations.md b/src/current/_includes/v24.1/known-limitations/alter-changefeed-limitations.md index a183f2964f4..d1cb7303a99 100644 --- a/src/current/_includes/v24.1/known-limitations/alter-changefeed-limitations.md +++ b/src/current/_includes/v24.1/known-limitations/alter-changefeed-limitations.md @@ -1,8 +1,8 @@ -- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) statement. [#77171](https://github.com/cockroachdb/cockroach/issues/77171) +- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) statement. - CockroachDB does not keep track of the [`initial_scan`]({% link {{ page.version.version }}/create-changefeed.md %}#initial-scan) option applied to tables when it is set to `yes` or `only`. For example: ~~~ sql ALTER CHANGEFEED {job_ID} ADD table WITH initial_scan = 'yes'; ~~~ - This will trigger an initial scan of the table and the changefeed will track `table`. The changefeed will **not** track `initial_scan` specified as an option, so it will not display in the output or after a `SHOW CHANGEFEED JOB` statement. \ No newline at end of file + This will trigger an initial scan of the table and the changefeed will track `table`. The changefeed will **not** track `initial_scan` specified as an option, so it will not display in the output or after a `SHOW CHANGEFEED JOB` statement. diff --git a/src/current/_includes/v24.1/known-limitations/alter-view-limitations.md b/src/current/_includes/v24.1/known-limitations/alter-view-limitations.md index 642bed6ce08..4cfdf9b8a1a 100644 --- a/src/current/_includes/v24.1/known-limitations/alter-view-limitations.md +++ b/src/current/_includes/v24.1/known-limitations/alter-view-limitations.md @@ -1,4 +1,4 @@ `ALTER VIEW` does not currently support: - Changing the [`SELECT`]({% link {{ page.version.version }}/select-clause.md %}) statement executed by a view. Instead, you must drop the existing view and create a new view. -- Renaming a view that other views depend on. This feature may be added in the future. [#10083](https://github.com/cockroachdb/cockroach/issues/10083) \ No newline at end of file +- Renaming a view that other views depend on. This feature may be added in the future. diff --git a/src/current/_includes/v24.1/known-limitations/aost-limitations.md b/src/current/_includes/v24.1/known-limitations/aost-limitations.md index 811c884d08d..c0d92fff59b 100644 --- a/src/current/_includes/v24.1/known-limitations/aost-limitations.md +++ b/src/current/_includes/v24.1/known-limitations/aost-limitations.md @@ -1 +1 @@ -CockroachDB does not support placeholders in {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %}. The time value must be a constant value embedded in the SQL string. [#30955](https://github.com/cockroachdb/cockroach/issues/30955) \ No newline at end of file +CockroachDB does not support placeholders in {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %}. The time value must be a constant value embedded in the SQL string. diff --git a/src/current/_includes/v24.1/known-limitations/cannot-refresh-materialized-views-inside-transactions.md b/src/current/_includes/v24.1/known-limitations/cannot-refresh-materialized-views-inside-transactions.md index b0aaf728177..cd93d6ad8c8 100644 --- a/src/current/_includes/v24.1/known-limitations/cannot-refresh-materialized-views-inside-transactions.md +++ b/src/current/_includes/v24.1/known-limitations/cannot-refresh-materialized-views-inside-transactions.md @@ -23,5 +23,3 @@ ERROR: cannot refresh view in an explicit transaction SQLSTATE: 25000 ~~~ - - [#66008](https://github.com/cockroachdb/cockroach/issues/66008) diff --git a/src/current/_includes/v24.1/known-limitations/cdc-queries-column-families.md b/src/current/_includes/v24.1/known-limitations/cdc-queries-column-families.md index 505a8c9700e..ea64b9821ea 100644 --- a/src/current/_includes/v24.1/known-limitations/cdc-queries-column-families.md +++ b/src/current/_includes/v24.1/known-limitations/cdc-queries-column-families.md @@ -1 +1 @@ -Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. [#127761](https://github.com/cockroachdb/cockroach/issues/127761) \ No newline at end of file +Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. diff --git a/src/current/_includes/v24.1/known-limitations/cdc-queries.md b/src/current/_includes/v24.1/known-limitations/cdc-queries.md index 2839eba5eda..a19a4a9a9c4 100644 --- a/src/current/_includes/v24.1/known-limitations/cdc-queries.md +++ b/src/current/_includes/v24.1/known-limitations/cdc-queries.md @@ -3,5 +3,5 @@ - The following are not permitted in CDC queries: - [Volatile functions]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility). - Sub-select queries. - - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). [#98237](https://github.com/cockroachdb/cockroach/issues/98237) -- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. [#83835](https://github.com/cockroachdb/cockroach/issues/83835) + - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). +- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. diff --git a/src/current/_includes/v24.1/known-limitations/cdc.md b/src/current/_includes/v24.1/known-limitations/cdc.md index a473e94367c..9f691268aeb 100644 --- a/src/current/_includes/v24.1/known-limitations/cdc.md +++ b/src/current/_includes/v24.1/known-limitations/cdc.md @@ -1,8 +1,8 @@ -- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). [#73435](https://github.com/cockroachdb/cockroach/issues/73435) +- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). - {% include {{page.version.version}}/cdc/kafka-vpc-limitation.md %} -- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#insecure-tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. [#73431](https://github.com/cockroachdb/cockroach/issues/73431) -- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. [#73432](https://github.com/cockroachdb/cockroach/issues/73432) -- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. [#79452](https://github.com/cockroachdb/cockroach/issues/79452) +- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#insecure-tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. +- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. +- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. - {% include {{page.version.version}}/cdc/types-udt-composite-general.md %} The following limitations apply: - {% include {{page.version.version}}/cdc/avro-udt-composite.md %} - - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} \ No newline at end of file + - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} diff --git a/src/current/_includes/v24.1/known-limitations/changefeed-column-family-message.md b/src/current/_includes/v24.1/known-limitations/changefeed-column-family-message.md index 41744b9b4b4..785cabfebe1 100644 --- a/src/current/_includes/v24.1/known-limitations/changefeed-column-family-message.md +++ b/src/current/_includes/v24.1/known-limitations/changefeed-column-family-message.md @@ -1 +1 @@ -When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. [#127736](https://github.com/cockroachdb/cockroach/issues/127736) \ No newline at end of file +When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. diff --git a/src/current/_includes/v24.1/known-limitations/copy-syntax.md b/src/current/_includes/v24.1/known-limitations/copy-syntax.md index e64a075dcac..90d35df5754 100644 --- a/src/current/_includes/v24.1/known-limitations/copy-syntax.md +++ b/src/current/_includes/v24.1/known-limitations/copy-syntax.md @@ -1,5 +1,5 @@ CockroachDB does not yet support the following `COPY` syntax: - - `COPY ... WITH FREEZE`. [#85573](https://github.com/cockroachdb/cockroach/issues/85573) - - `COPY ... WITH QUOTE`. [#85574](https://github.com/cockroachdb/cockroach/issues/85574) - - `COPY ... FROM ... WHERE `. [#54580](https://github.com/cockroachdb/cockroach/issues/54580) + - `COPY ... WITH FREEZE`. + - `COPY ... WITH QUOTE`. + - `COPY ... FROM ... WHERE `. diff --git a/src/current/_includes/v24.1/known-limitations/create-statistics-aost-limitation.md b/src/current/_includes/v24.1/known-limitations/create-statistics-aost-limitation.md index 09f86f51c48..7a2a39034de 100644 --- a/src/current/_includes/v24.1/known-limitations/create-statistics-aost-limitation.md +++ b/src/current/_includes/v24.1/known-limitations/create-statistics-aost-limitation.md @@ -1 +1 @@ -The `ANALYZE` alias {% if page.name != "create-statistics.md" %}of [`CREATE STATISTICS`]({% link {{ page.version.version }}/create-statistics.md %}){% endif %} does not support specifying an {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %} timestamp. `ANALYZE` statements use `AS OF SYSTEM TIME '-0.001ms'` automatically. For more control over the statistics interval, use the `CREATE STATISTICS` syntax instead. [#96430](https://github.com/cockroachdb/cockroach/issues/96430) \ No newline at end of file +The `ANALYZE` alias {% if page.name != "create-statistics.md" %}of [`CREATE STATISTICS`]({% link {{ page.version.version }}/create-statistics.md %}){% endif %} does not support specifying an {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %} timestamp. `ANALYZE` statements use `AS OF SYSTEM TIME '-0.001ms'` automatically. For more control over the statistics interval, use the `CREATE STATISTICS` syntax instead. diff --git a/src/current/_includes/v24.1/known-limitations/drop-column-partial-index.md b/src/current/_includes/v24.1/known-limitations/drop-column-partial-index.md index 9fd1811cc43..59d1e0e09b1 100644 --- a/src/current/_includes/v24.1/known-limitations/drop-column-partial-index.md +++ b/src/current/_includes/v24.1/known-limitations/drop-column-partial-index.md @@ -1 +1 @@ -CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}). [#97813](https://github.com/cockroachdb/cockroach/issues/97813). \ No newline at end of file +CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}).. diff --git a/src/current/_includes/v24.1/known-limitations/drop-owned-by-limitations.md b/src/current/_includes/v24.1/known-limitations/drop-owned-by-limitations.md index 95685f6adf1..563c3fc3746 100644 --- a/src/current/_includes/v24.1/known-limitations/drop-owned-by-limitations.md +++ b/src/current/_includes/v24.1/known-limitations/drop-owned-by-limitations.md @@ -10,4 +10,4 @@ The phrase "synthetic privileges" in the error message refers to [system-level privileges]({% link {{ page.version.version }}/security-reference/authorization.md %}#supported-privileges). - The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. [#88149](https://github.com/cockroachdb/cockroach/issues/88149) \ No newline at end of file + The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. diff --git a/src/current/_includes/v24.1/known-limitations/expression-index-limitations.md b/src/current/_includes/v24.1/known-limitations/expression-index-limitations.md index c0e94185948..76724af9432 100644 --- a/src/current/_includes/v24.1/known-limitations/expression-index-limitations.md +++ b/src/current/_includes/v24.1/known-limitations/expression-index-limitations.md @@ -1,6 +1,6 @@ - The expression cannot reference columns outside the index's table. - Functional expression output must be determined by the input arguments. For example, you can't use the [volatile function]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility) `now()` to create an index because its output depends on more than just the function arguments. -- CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). [#67900](https://github.com/cockroachdb/cockroach/issues/67900) +- CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). - CockroachDB does not support expressions as `ON CONFLICT` targets. This means that unique {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} cannot be selected as arbiters for [`INSERT .. ON CONFLICT`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause) statements. For example: {% include_cached copy-clipboard.html %} @@ -39,5 +39,3 @@ ^ HINT: try \h INSERT ~~~ - - [#67893](https://github.com/cockroachdb/cockroach/issues/67893) diff --git a/src/current/_includes/v24.1/known-limitations/fast-cutback-latest-timestamp.md b/src/current/_includes/v24.1/known-limitations/fast-cutback-latest-timestamp.md index 1a5b3b91a2c..e77c06ca8a8 100644 --- a/src/current/_includes/v24.1/known-limitations/fast-cutback-latest-timestamp.md +++ b/src/current/_includes/v24.1/known-limitations/fast-cutback-latest-timestamp.md @@ -1 +1 @@ -{% include {{ page.version.version }}/physical-replication/fast-cutback-latest-timestamp.md %} [#117984](https://github.com/cockroachdb/cockroach/issues/117984) \ No newline at end of file +{% include {{ page.version.version }}/physical-replication/fast-cutback-latest-timestamp.md %} diff --git a/src/current/_includes/v24.1/known-limitations/forecasted-stats-limitations.md b/src/current/_includes/v24.1/known-limitations/forecasted-stats-limitations.md index c8753124a96..a7f8eb17ee2 100644 --- a/src/current/_includes/v24.1/known-limitations/forecasted-stats-limitations.md +++ b/src/current/_includes/v24.1/known-limitations/forecasted-stats-limitations.md @@ -6,4 +6,4 @@ Although [`SHOW STATISTICS WITH FORECAST`]({% link {{ page.version.version }}/show-statistics.md %}#display-forecasted-statistics) shows the settings taking effect immediately, they do not actually take effect until new statistics are collected (as can be verified with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %})). - As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. [#123852](https://github.com/cockroachdb/cockroach/issues/123852) \ No newline at end of file + As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. diff --git a/src/current/_includes/v24.1/known-limitations/full-text-search-unsupported.md b/src/current/_includes/v24.1/known-limitations/full-text-search-unsupported.md index 7b5a83f2cae..ef6ff023f86 100644 --- a/src/current/_includes/v24.1/known-limitations/full-text-search-unsupported.md +++ b/src/current/_includes/v24.1/known-limitations/full-text-search-unsupported.md @@ -10,5 +10,3 @@ - `tsquery <-> tsquery` comparisons. - `!! tsquery` comparisons. - `tsquery @> tsquery` and `tsquery <@ tsquery` comparisons. - -[#41288](https://github.com/cockroachdb/cockroach/issues/41288) \ No newline at end of file diff --git a/src/current/_includes/v24.1/known-limitations/generic-query-plan-limitations.md b/src/current/_includes/v24.1/known-limitations/generic-query-plan-limitations.md index e28e66d5f32..e588b799305 100644 --- a/src/current/_includes/v24.1/known-limitations/generic-query-plan-limitations.md +++ b/src/current/_includes/v24.1/known-limitations/generic-query-plan-limitations.md @@ -1,2 +1,2 @@ -- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. [#128916](https://github.com/cockroachdb/cockroach/issues/128916) -- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. [#128911](https://github.com/cockroachdb/cockroach/issues/128911) \ No newline at end of file +- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. +- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. diff --git a/src/current/_includes/v24.1/known-limitations/locality-optimized-search-virtual-computed-columns.md b/src/current/_includes/v24.1/known-limitations/locality-optimized-search-virtual-computed-columns.md index d6acf418aa8..7a7392aab0d 100644 --- a/src/current/_includes/v24.1/known-limitations/locality-optimized-search-virtual-computed-columns.md +++ b/src/current/_includes/v24.1/known-limitations/locality-optimized-search-virtual-computed-columns.md @@ -1 +1 @@ -- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). [#68129](https://github.com/cockroachdb/cockroach/issues/68129) +- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). diff --git a/src/current/_includes/v24.1/known-limitations/materialized-views-no-stats.md b/src/current/_includes/v24.1/known-limitations/materialized-views-no-stats.md index 02f2bd787c4..a468db2895d 100644 --- a/src/current/_includes/v24.1/known-limitations/materialized-views-no-stats.md +++ b/src/current/_includes/v24.1/known-limitations/materialized-views-no-stats.md @@ -1 +1 @@ -- The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views. [#78181](https://github.com/cockroachdb/cockroach/issues/78181). +- The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views.. diff --git a/src/current/_includes/v24.1/known-limitations/multiple-arbiter-indexes.md b/src/current/_includes/v24.1/known-limitations/multiple-arbiter-indexes.md index c9861623314..b13890a2ee9 100644 --- a/src/current/_includes/v24.1/known-limitations/multiple-arbiter-indexes.md +++ b/src/current/_includes/v24.1/known-limitations/multiple-arbiter-indexes.md @@ -1 +1 @@ -CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. [#53170](https://github.com/cockroachdb/cockroach/issues/53170) \ No newline at end of file +CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. diff --git a/src/current/_includes/v24.1/known-limitations/pcr-scheduled-changefeeds.md b/src/current/_includes/v24.1/known-limitations/pcr-scheduled-changefeeds.md index 3d6b8aa8628..fa039d265f7 100644 --- a/src/current/_includes/v24.1/known-limitations/pcr-scheduled-changefeeds.md +++ b/src/current/_includes/v24.1/known-limitations/pcr-scheduled-changefeeds.md @@ -1 +1 @@ -After the [failover process]({% link {{ page.version.version }}/failover-replication.md %}) for [physical cluster replication]({% link {{ page.version.version }}/physical-cluster-replication-overview.md %}), [scheduled changefeeds]({% link {{ page.version.version }}/create-schedule-for-changefeed.md %}) will continue on the promoted cluster. You will need to manage [pausing]({% link {{ page.version.version }}/pause-schedules.md %}) or [canceling]({% link {{ page.version.version }}/drop-schedules.md %}) the schedule on the promoted standby cluster to avoid two clusters running the same changefeed to one sink. [#123776](https://github.com/cockroachdb/cockroach/issues/123776) \ No newline at end of file +After the [failover process]({% link {{ page.version.version }}/failover-replication.md %}) for [physical cluster replication]({% link {{ page.version.version }}/physical-cluster-replication-overview.md %}), [scheduled changefeeds]({% link {{ page.version.version }}/create-schedule-for-changefeed.md %}) will continue on the promoted cluster. You will need to manage [pausing]({% link {{ page.version.version }}/pause-schedules.md %}) or [canceling]({% link {{ page.version.version }}/drop-schedules.md %}) the schedule on the promoted standby cluster to avoid two clusters running the same changefeed to one sink. diff --git a/src/current/_includes/v24.1/known-limitations/plpgsql-limitations.md b/src/current/_includes/v24.1/known-limitations/plpgsql-limitations.md index ddd8ab55026..2e120994f7b 100644 --- a/src/current/_includes/v24.1/known-limitations/plpgsql-limitations.md +++ b/src/current/_includes/v24.1/known-limitations/plpgsql-limitations.md @@ -1,26 +1,26 @@ {% if page.name != "known-limitations.md" # New limitations in v24.1 %} -- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. [#121605](https://github.com/cockroachdb/cockroach/issues/121605) -- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. [#114676](https://github.com/cockroachdb/cockroach/issues/114676) +- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. +- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. {% endif %} -- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). [#114701](https://github.com/cockroachdb/cockroach/issues/114701) +- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). - The following statements are not supported: - - `FOR` loops, including `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops. [#105246](https://github.com/cockroachdb/cockroach/issues/105246) - - `RETURN NEXT` and `RETURN QUERY`. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) - - `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `CASE`. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). [#111446](https://github.com/cockroachdb/cockroach/issues/111446) -- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). [#106237](https://github.com/cockroachdb/cockroach/issues/106237) -- `RAISE` statements message the client directly, and do not produce log output. [#117750](https://github.com/cockroachdb/cockroach/issues/117750) -- `ASSERT` debugging checks are not supported. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- `RECORD` parameters and variables are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). [#105713](https://github.com/cockroachdb/cockroach/issues/105713) -- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. [#117508](https://github.com/cockroachdb/cockroach/issues/117508) -- Syntax for accessing members of composite types without parentheses is not supported. [#114687](https://github.com/cockroachdb/cockroach/issues/114687) -- `NOT NULL` variable declarations are not supported. [#105243](https://github.com/cockroachdb/cockroach/issues/105243) -- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. [#111479](https://github.com/cockroachdb/cockroach/issues/111479) -- Cursors in PL/pgSQL cannot be declared with arguments. [#117746](https://github.com/cockroachdb/cockroach/issues/117746) -- `OPEN FOR EXECUTE` is not supported for opening cursors. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- The `print_strict_params` option is not supported in PL/pgSQL. [#123671](https://github.com/cockroachdb/cockroach/issues/123671) -- The `FOUND` local variable, which checks whether a statement affected any rows, is not supported in PL/pgSQL. [#122306](https://github.com/cockroachdb/cockroach/issues/122306) -- By default, when a PL/pgSQL variable conflicts with a column name, CockroachDB resolves the ambiguity by treating it as a column reference rather than a variable reference. This behavior differs from PostgreSQL, where an ambiguous column error is reported, and it is possible to change the `plpgsql.variable_conflict` setting in order to prefer either columns or variables. [#115680](https://github.com/cockroachdb/cockroach/issues/115680) -- It is not possible to define a `RECORD`-returning PL/pgSQL function that returns different-typed expressions from different `RETURN` statements. CockroachDB requires a consistent return type for `RECORD`-returning functions. [#115384](https://github.com/cockroachdb/cockroach/issues/115384) -- Variables cannot be declared with an associated collation using the `COLLATE` keyword. [#105245](https://github.com/cockroachdb/cockroach/issues/105245) -- Variables cannot be accessed using the `label.var_name` pattern. [#122322](https://github.com/cockroachdb/cockroach/issues/122322) \ No newline at end of file + - `FOR` loops, including `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops. + - `RETURN NEXT` and `RETURN QUERY`. + - `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `CASE`. +- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). +- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). +- `RAISE` statements message the client directly, and do not produce log output. +- `ASSERT` debugging checks are not supported. +- `RECORD` parameters and variables are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). +- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. +- Syntax for accessing members of composite types without parentheses is not supported. +- `NOT NULL` variable declarations are not supported. +- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. +- Cursors in PL/pgSQL cannot be declared with arguments. +- `OPEN FOR EXECUTE` is not supported for opening cursors. +- The `print_strict_params` option is not supported in PL/pgSQL. +- The `FOUND` local variable, which checks whether a statement affected any rows, is not supported in PL/pgSQL. +- By default, when a PL/pgSQL variable conflicts with a column name, CockroachDB resolves the ambiguity by treating it as a column reference rather than a variable reference. This behavior differs from PostgreSQL, where an ambiguous column error is reported, and it is possible to change the `plpgsql.variable_conflict` setting in order to prefer either columns or variables. +- It is not possible to define a `RECORD`-returning PL/pgSQL function that returns different-typed expressions from different `RETURN` statements. CockroachDB requires a consistent return type for `RECORD`-returning functions. +- Variables cannot be declared with an associated collation using the `COLLATE` keyword. +- Variables cannot be accessed using the `label.var_name` pattern. diff --git a/src/current/_includes/v24.1/known-limitations/read-committed-limitations.md b/src/current/_includes/v24.1/known-limitations/read-committed-limitations.md index c322ec2585c..58fa8734184 100644 --- a/src/current/_includes/v24.1/known-limitations/read-committed-limitations.md +++ b/src/current/_includes/v24.1/known-limitations/read-committed-limitations.md @@ -1,7 +1,7 @@ -- Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. [#114778](https://github.com/cockroachdb/cockroach/issues/114778) -- `READ COMMITTED` transactions performing `INSERT`, `UPDATE`, or `UPSERT` cannot access [`REGIONAL BY ROW`]({% link {{ page.version.version }}/table-localities.md %}#regional-by-row-tables) tables in which [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) and [`PRIMARY KEY`]({% link {{ page.version.version }}/primary-key.md %}) constraints exist, the region is not included in the constraint, and the region cannot be computed from the constraint columns. [#110873](https://github.com/cockroachdb/cockroach/issues/110873) -- Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. [#112488](https://github.com/cockroachdb/cockroach/issues/112488) +- Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. +- `READ COMMITTED` transactions performing `INSERT`, `UPDATE`, or `UPSERT` cannot access [`REGIONAL BY ROW`]({% link {{ page.version.version }}/table-localities.md %}#regional-by-row-tables) tables in which [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) and [`PRIMARY KEY`]({% link {{ page.version.version }}/primary-key.md %}) constraints exist, the region is not included in the constraint, and the region cannot be computed from the constraint columns. +- Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. - Because locks acquired by [foreign key]({% link {{ page.version.version }}/foreign-key.md %}) checks, [`SELECT FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}), and [`SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) are fully replicated under `READ COMMITTED` isolation, some queries experience a delay for Raft replication. - [Foreign key]({% link {{ page.version.version }}/foreign-key.md %}) checks are not performed in parallel under `READ COMMITTED` isolation. - [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements are less optimized under `READ COMMITTED` isolation than under `SERIALIZABLE` isolation. Under `READ COMMITTED` isolation, `SELECT FOR UPDATE` and `SELECT FOR SHARE` usually perform an extra lookup join for every locked table when compared to the same queries under `SERIALIZABLE`. In addition, some optimization steps (such as de-correlation of correlated [subqueries]({% link {{ page.version.version }}/subqueries.md %})) are not currently performed on these queries. -- Regardless of isolation level, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements in CockroachDB do not prevent insertion of new rows matching the search condition (i.e., [phantom reads]({% link {{ page.version.version }}/read-committed.md %}#non-repeatable-reads-and-phantom-reads)). This matches PostgreSQL behavior at all isolation levels. [#120673](https://github.com/cockroachdb/cockroach/issues/120673) \ No newline at end of file +- Regardless of isolation level, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements in CockroachDB do not prevent insertion of new rows matching the search condition (i.e., [phantom reads]({% link {{ page.version.version }}/read-committed.md %}#non-repeatable-reads-and-phantom-reads)). This matches PostgreSQL behavior at all isolation levels. diff --git a/src/current/_includes/v24.1/known-limitations/restore-multiregion-match.md b/src/current/_includes/v24.1/known-limitations/restore-multiregion-match.md index ab2f1029ecd..6cf3a2ccefe 100644 --- a/src/current/_includes/v24.1/known-limitations/restore-multiregion-match.md +++ b/src/current/_includes/v24.1/known-limitations/restore-multiregion-match.md @@ -46,5 +46,3 @@ ~~~ sql ALTER DATABASE destination_database SET PRIMARY REGION "us-east1"; ~~~ - - [#71071](https://github.com/cockroachdb/cockroach/issues/71071) \ No newline at end of file diff --git a/src/current/_includes/v24.1/known-limitations/restore-tables-non-multi-reg.md b/src/current/_includes/v24.1/known-limitations/restore-tables-non-multi-reg.md index 5390f2d09ee..a6558d30c7d 100644 --- a/src/current/_includes/v24.1/known-limitations/restore-tables-non-multi-reg.md +++ b/src/current/_includes/v24.1/known-limitations/restore-tables-non-multi-reg.md @@ -1 +1 @@ -Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. [#71502](https://github.com/cockroachdb/cockroach/issues/71502) +Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. diff --git a/src/current/_includes/v24.1/known-limitations/restore-udf.md b/src/current/_includes/v24.1/known-limitations/restore-udf.md index a4a4bc080fe..7d5670fbc9e 100644 --- a/src/current/_includes/v24.1/known-limitations/restore-udf.md +++ b/src/current/_includes/v24.1/known-limitations/restore-udf.md @@ -1 +1 @@ -`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. [#118195](https://github.com/cockroachdb/cockroach/issues/118195) \ No newline at end of file +`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. diff --git a/src/current/_includes/v24.1/known-limitations/routine-limitations.md b/src/current/_includes/v24.1/known-limitations/routine-limitations.md index 701ea79c75b..97ae5fc0f85 100644 --- a/src/current/_includes/v24.1/known-limitations/routine-limitations.md +++ b/src/current/_includes/v24.1/known-limitations/routine-limitations.md @@ -1,9 +1,9 @@ {% if page.name != "known-limitations.md" # New limitations in v24.1 %} -- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. [#122264](https://github.com/cockroachdb/cockroach/issues/122264) -- Routines cannot be created if they reference temporary tables. [#121375](https://github.com/cockroachdb/cockroach/issues/121375) -- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. [#121251](https://github.com/cockroachdb/cockroach/issues/121251) -- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. [#121247](https://github.com/cockroachdb/cockroach/issues/121247) +- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. +- Routines cannot be created if they reference temporary tables. +- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. +- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. {% endif %} -- Routines cannot be created with an `OUT` parameter of type `RECORD`. [#123448](https://github.com/cockroachdb/cockroach/issues/123448) -- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or stored procedures. [#110080](https://github.com/cockroachdb/cockroach/issues/110080) -- Polymorphic types cannot be cast to other types (e.g., `TEXT`) within routine parameters. [#123536](https://github.com/cockroachdb/cockroach/issues/123536) \ No newline at end of file +- Routines cannot be created with an `OUT` parameter of type `RECORD`. +- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or stored procedures. +- Polymorphic types cannot be cast to other types (e.g., `TEXT`) within routine parameters. diff --git a/src/current/_includes/v24.1/known-limitations/row-level-ttl-limitations.md b/src/current/_includes/v24.1/known-limitations/row-level-ttl-limitations.md index c386ba576d7..352e5034bbd 100644 --- a/src/current/_includes/v24.1/known-limitations/row-level-ttl-limitations.md +++ b/src/current/_includes/v24.1/known-limitations/row-level-ttl-limitations.md @@ -1,5 +1,5 @@ - Any queries you run against tables with Row-Level TTL enabled (or against tables that have [foreign keys]({% link {{page.version.version}}/foreign-key.md %}) that reference TTL-enabled tables) do not filter out expired rows from the result set (this includes [`UPDATE`s]({% link {{ page.version.version }}/update.md %}) and [`DELETE`s]({% link {{ page.version.version }}/delete.md %})). This feature may be added in a future release. For now, follow the instructions in [Filter out expired rows from a selection query]({% link {{ page.version.version }}/row-level-ttl.md %}#filter-out-expired-rows-from-a-selection-query). -- Tables with Row-Level TTL can be referenced by [foreign keys]({% link {{page.version.version}}/foreign-key.md %}). TTL deletes are issued as regular [`DELETE`]({% link {{ page.version.version }}/delete.md %}) statements, so inbound foreign keys apply. If an inbound foreign key uses `ON DELETE RESTRICT` and referencing rows exist, the TTL job fails with a foreign key violation. [#101372](https://github.com/cockroachdb/cockroach/issues/101372) +- Tables with Row-Level TTL can be referenced by [foreign keys]({% link {{page.version.version}}/foreign-key.md %}). TTL deletes are issued as regular [`DELETE`]({% link {{ page.version.version }}/delete.md %}) statements, so inbound foreign keys apply. If an inbound foreign key uses `ON DELETE RESTRICT` and referencing rows exist, the TTL job fails with a foreign key violation. - Enabling Row-Level TTL on a table with multiple [secondary indexes]({% link {{ page.version.version }}/indexes.md %}) can have negative performance impacts on a cluster, including increased [latency]({% link {{ page.version.version }}/common-issues-to-monitor.md %}#service-latency) and [contention]({% link {{ page.version.version }}/performance-best-practices-overview.md %}#transaction-contention). This is particularly true for large tables with terabytes of data and billions of rows that are split up into multiple ranges across separate nodes. - Increased latency may occur because secondary indexes aren't necessarily stored on the same underlying [ranges]({% link {{ page.version.version }}/architecture/overview.md %}#architecture-range) as a table's [primary indexes]({% link {{ page.version.version }}/indexes.md %}). Further, the secondary indexes' ranges may have [leaseholders]({% link {{ page.version.version }}/architecture/overview.md %}#architecture-leaseholder) located on different nodes than the primary index. - Increased contention may occur because [intents]({% link {{ page.version.version }}/architecture/transaction-layer.md %}#write-intents) must be written as part of performing the deletions. diff --git a/src/current/_includes/v24.1/known-limitations/select-for-update-limitations.md b/src/current/_includes/v24.1/known-limitations/select-for-update-limitations.md index 73aaf9fdeb6..3b6f7c9459d 100644 --- a/src/current/_includes/v24.1/known-limitations/select-for-update-limitations.md +++ b/src/current/_includes/v24.1/known-limitations/select-for-update-limitations.md @@ -1,6 +1,6 @@ -- `SKIP LOCKED` cannot be used for tables with multiple [column families]({% link {{ page.version.version }}/column-families.md %}). [#160961](https://github.com/cockroachdb/cockroach/issues/160961) +- `SKIP LOCKED` cannot be used for tables with multiple [column families]({% link {{ page.version.version }}/column-families.md %}). - By default under `SERIALIZABLE` isolation, locks acquired using `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` are implemented as fast, in-memory [unreplicated locks](architecture/transaction-layer.html#unreplicated-locks). If a [lease transfer]({% link {{ page.version.version }}/architecture/replication-layer.md %}#epoch-based-leases-table-data) or [range split/merge]({% link {{ page.version.version }}/architecture/distribution-layer.md %}#range-merges) occurs on a range held by an unreplicated lock, the lock is dropped. The following behaviors can occur: - The desired ordering of concurrent accesses to one or more rows of a table expressed by your use of `SELECT ... FOR UPDATE` may not be preserved (that is, a transaction _B_ against some table _T_ that was supposed to wait behind another transaction _A_ operating on _T_ may not wait for transaction _A_). - The transaction that acquired the (now dropped) unreplicated lock may fail to commit, leading to [transaction retry errors with code `40001`]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}) and the [`restart transaction` error message]({% link {{ page.version.version }}/common-errors.md %}#restart-transaction). - When running under `SERIALIZABLE` isolation, `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` locks should be thought of as best-effort, and should not be relied upon for correctness. Note that [serialization]({% link {{ page.version.version }}/demo-serializable.md %}) is preserved despite this limitation. This limitation is fixed when the `enable_durable_locking_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}#enable-durable-locking-for-serializable) is set to `true`. This limitation does **not** apply to [`READ COMMITTED`]({% link {{ page.version.version }}/read-committed.md %}) transactions. \ No newline at end of file + When running under `SERIALIZABLE` isolation, `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` locks should be thought of as best-effort, and should not be relied upon for correctness. Note that [serialization]({% link {{ page.version.version }}/demo-serializable.md %}) is preserved despite this limitation. This limitation is fixed when the `enable_durable_locking_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}#enable-durable-locking-for-serializable) is set to `true`. This limitation does **not** apply to [`READ COMMITTED`]({% link {{ page.version.version }}/read-committed.md %}) transactions. diff --git a/src/current/_includes/v24.1/known-limitations/set-transaction-no-rollback.md b/src/current/_includes/v24.1/known-limitations/set-transaction-no-rollback.md index 414cbac6282..4ab3d72a6ae 100644 --- a/src/current/_includes/v24.1/known-limitations/set-transaction-no-rollback.md +++ b/src/current/_includes/v24.1/known-limitations/set-transaction-no-rollback.md @@ -13,5 +13,3 @@ timezone ------------ 3 ~~~ - -[#69396](https://github.com/cockroachdb/cockroach/issues/69396) diff --git a/src/current/_includes/v24.1/known-limitations/show-backup-symlink.md b/src/current/_includes/v24.1/known-limitations/show-backup-symlink.md index 38ba86fb28f..f47d7f3887b 100644 --- a/src/current/_includes/v24.1/known-limitations/show-backup-symlink.md +++ b/src/current/_includes/v24.1/known-limitations/show-backup-symlink.md @@ -1 +1 @@ -[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. [#70260](https://github.com/cockroachdb/cockroach/issues/70260) \ No newline at end of file +[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. diff --git a/src/current/_includes/v24.1/known-limitations/sql-cursors.md b/src/current/_includes/v24.1/known-limitations/sql-cursors.md index 4c047aa9603..1f826254d12 100644 --- a/src/current/_includes/v24.1/known-limitations/sql-cursors.md +++ b/src/current/_includes/v24.1/known-limitations/sql-cursors.md @@ -1,9 +1,9 @@ CockroachDB implements SQL {% if page.name == "known-limitations.md" %} [cursor]({% link {{ page.version.version }}/cursors.md %}) {% else %} cursor {% endif %} support with the following limitations: -- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. [#77099](https://github.com/cockroachdb/cockroach/issues/77099) -- `WITH HOLD`, which allows keeping a cursor open for longer than a transaction by writing its results into a buffer, is accepted as valid syntax within a single transaction but is not supported. It acts as a no-op and does not actually perform the function of `WITH HOLD`, which is to make the cursor live outside its parent transaction. Instead, if you are using `WITH HOLD`, you will be forced to close that cursor within the transaction it was created in. [#77101](https://github.com/cockroachdb/cockroach/issues/77101) +- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. +- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. +- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. +- `WITH HOLD`, which allows keeping a cursor open for longer than a transaction by writing its results into a buffer, is accepted as valid syntax within a single transaction but is not supported. It acts as a no-op and does not actually perform the function of `WITH HOLD`, which is to make the cursor live outside its parent transaction. Instead, if you are using `WITH HOLD`, you will be forced to close that cursor within the transaction it was created in. - This syntax is accepted (but does not have any effect): {% include_cached copy-clipboard.html %} ~~~ sql @@ -19,6 +19,6 @@ CockroachDB implements SQL {% if page.name == "known-limitations.md" %} [cursor] DECLARE test_cur CURSOR WITH HOLD FOR SELECT * FROM foo ORDER BY bar; COMMIT; -- This will fail with an error because CLOSE test_cur was not called inside the transaction. ~~~ -- Scrollable cursor (also known as reverse `FETCH`) is not supported. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. [#77103](https://github.com/cockroachdb/cockroach/issues/77103) -- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. [#77104](https://github.com/cockroachdb/cockroach/issues/77104) +- Scrollable cursor (also known as reverse `FETCH`) is not supported. +- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. +- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. diff --git a/src/current/_includes/v24.1/known-limitations/srid-4326-limitations.md b/src/current/_includes/v24.1/known-limitations/srid-4326-limitations.md index b556a9fbecd..7cfda23749b 100644 --- a/src/current/_includes/v24.1/known-limitations/srid-4326-limitations.md +++ b/src/current/_includes/v24.1/known-limitations/srid-4326-limitations.md @@ -1 +1 @@ -Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. [#55903](https://github.com/cockroachdb/cockroach/issues/55903) \ No newline at end of file +Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. diff --git a/src/current/_includes/v24.1/known-limitations/stats-refresh-upgrade.md b/src/current/_includes/v24.1/known-limitations/stats-refresh-upgrade.md index 3d5a8d26325..c8239a02bcd 100644 --- a/src/current/_includes/v24.1/known-limitations/stats-refresh-upgrade.md +++ b/src/current/_includes/v24.1/known-limitations/stats-refresh-upgrade.md @@ -1 +1 @@ -- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). [#54816](https://github.com/cockroachdb/cockroach/issues/54816) +- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). diff --git a/src/current/_includes/v24.1/known-limitations/stored-proc-limitations.md b/src/current/_includes/v24.1/known-limitations/stored-proc-limitations.md index 70d8cd71791..fa3adeccaa1 100644 --- a/src/current/_includes/v24.1/known-limitations/stored-proc-limitations.md +++ b/src/current/_includes/v24.1/known-limitations/stored-proc-limitations.md @@ -1,3 +1,3 @@ {% if page.name != "known-limitations.md" # New limitations in v24.1 %} {% endif %} -- `COMMIT` and `ROLLBACK` statements are not supported within nested procedures. [#122266](https://github.com/cockroachdb/cockroach/issues/122266) \ No newline at end of file +- `COMMIT` and `ROLLBACK` statements are not supported within nested procedures. diff --git a/src/current/_includes/v24.1/known-limitations/trigram-unsupported-syntax.md b/src/current/_includes/v24.1/known-limitations/trigram-unsupported-syntax.md index 494730c7ae8..bb726ac4af9 100644 --- a/src/current/_includes/v24.1/known-limitations/trigram-unsupported-syntax.md +++ b/src/current/_includes/v24.1/known-limitations/trigram-unsupported-syntax.md @@ -5,5 +5,3 @@ - `<->`, `<<->`, `<->>`, `<<<->`, and `<->>>` comparisons. - Acceleration on [regex string matching]({% link {{ page.version.version }}/scalar-expressions.md %}#string-matching-using-posix-regular-expressions). - `%` comparisons, `show_trgm`, and trigram index creation on [collated strings]({% link {{ page.version.version }}/collate.md %}). - -[#41285](https://github.com/cockroachdb/cockroach/issues/41285) \ No newline at end of file diff --git a/src/current/_includes/v24.1/known-limitations/udf-limitations.md b/src/current/_includes/v24.1/known-limitations/udf-limitations.md index 7555fde890a..b9003145010 100644 --- a/src/current/_includes/v24.1/known-limitations/udf-limitations.md +++ b/src/current/_includes/v24.1/known-limitations/udf-limitations.md @@ -1,10 +1,10 @@ {% if page.name != "known-limitations.md" # New limitations in v24.1 %} -- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. [#122945](https://github.com/cockroachdb/cockroach/issues/122945) +- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. {% endif %} - User-defined functions are not currently supported in: - - Expressions (column, index, constraint) in tables. [#87699](https://github.com/cockroachdb/cockroach/issues/87699) - - Views. [#87699](https://github.com/cockroachdb/cockroach/issues/87699) -- User-defined functions cannot call themselves recursively. [#93049](https://github.com/cockroachdb/cockroach/issues/93049) -- [Common table expressions]({% link {{ page.version.version }}/common-table-expressions.md %}) (CTE), recursive or non-recursive, are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}) (UDF). That is, you cannot use a `WITH` clause in the body of a UDF. [#92961](https://github.com/cockroachdb/cockroach/issues/92961) -- The `setval` function cannot be resolved when used inside UDF bodies. [#110860](https://github.com/cockroachdb/cockroach/issues/110860) -- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) in UDFs is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) \ No newline at end of file + - Expressions (column, index, constraint) in tables. + - Views. +- User-defined functions cannot call themselves recursively. +- [Common table expressions]({% link {{ page.version.version }}/common-table-expressions.md %}) (CTE), recursive or non-recursive, are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}) (UDF). That is, you cannot use a `WITH` clause in the body of a UDF. +- The `setval` function cannot be resolved when used inside UDF bodies. +- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) in UDFs is not supported. diff --git a/src/current/_includes/v24.1/known-limitations/vectorized-engine-limitations.md b/src/current/_includes/v24.1/known-limitations/vectorized-engine-limitations.md index daea59ebf88..84f991a0e63 100644 --- a/src/current/_includes/v24.1/known-limitations/vectorized-engine-limitations.md +++ b/src/current/_includes/v24.1/known-limitations/vectorized-engine-limitations.md @@ -1,2 +1,2 @@ -- The vectorized engine does not support queries containing a join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). [#38018](https://github.com/cockroachdb/cockroach/issues/38018) +- The vectorized engine does not support queries containing a join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). - The vectorized engine does not support [working with spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}). Queries with [geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) or [spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}) will revert to the row-oriented execution engine. diff --git a/src/current/_includes/v24.1/misc/tooling.md b/src/current/_includes/v24.1/misc/tooling.md index dcd24363435..ec553f1b383 100644 --- a/src/current/_includes/v24.1/misc/tooling.md +++ b/src/current/_includes/v24.1/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Example Apps]({% link {{ page.version.version }}/example-apps.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). diff --git a/src/current/_includes/v24.1/prod-deployment/decommission-pre-flight-checks.md b/src/current/_includes/v24.1/prod-deployment/decommission-pre-flight-checks.md index b267379384b..f7a613dff78 100644 --- a/src/current/_includes/v24.1/prod-deployment/decommission-pre-flight-checks.md +++ b/src/current/_includes/v24.1/prod-deployment/decommission-pre-flight-checks.md @@ -14,5 +14,5 @@ Failed running "node decommission" These checks can be skipped by [passing the flag `--checks=skip` to `cockroach node decommission`]({% link {{ page.version.version }}/cockroach-node.md %}#decommission-checks). {{site.data.alerts.callout_info}} -The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see [cockroachdb/cockroach#71757](https://github.com/cockroachdb/cockroach/issues/71757) +The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see {{site.data.alerts.end}} diff --git a/src/current/_includes/v24.1/sql/savepoints-and-high-priority-transactions.md b/src/current/_includes/v24.1/sql/savepoints-and-high-priority-transactions.md index c6de489e641..ce124bc3209 100644 --- a/src/current/_includes/v24.1/sql/savepoints-and-high-priority-transactions.md +++ b/src/current/_includes/v24.1/sql/savepoints-and-high-priority-transactions.md @@ -1 +1 @@ -[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. For more information, see GitHub issue [#46414](https://www.github.com/cockroachdb/cockroach/issues/46414). +[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. diff --git a/src/current/_includes/v24.1/sql/unsupported-postgres-features.md b/src/current/_includes/v24.1/sql/unsupported-postgres-features.md index 999c4e2e001..d36575924e0 100644 --- a/src/current/_includes/v24.1/sql/unsupported-postgres-features.md +++ b/src/current/_includes/v24.1/sql/unsupported-postgres-features.md @@ -1,10 +1,10 @@ ### `CREATE DOMAIN` -CockroachDB does not support `CREATE DOMAIN`. Tracking issue: [cockroachdb/cockroach#108659](https://github.com/cockroachdb/cockroach/issues/108659). +CockroachDB does not support `CREATE DOMAIN`. Tracking issue: . ### PostgreSQL range types -CockroachDB does not support PostgreSQL range types. Tracking issue: [cockroachdb/cockroach#128638](https://github.com/cockroachdb/cockroach/issues/128638). +CockroachDB does not support PostgreSQL range types. Tracking issue: . ### Other unsupported features diff --git a/src/current/_includes/v24.2/backward-incompatible/alpha.1.md b/src/current/_includes/v24.2/backward-incompatible/alpha.1.md index 9a4f6dc554f..8efb7733fc5 100644 --- a/src/current/_includes/v24.2/backward-incompatible/alpha.1.md +++ b/src/current/_includes/v24.2/backward-incompatible/alpha.1.md @@ -1,15 +1,15 @@ -- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). [#81298][#81298] -- In the Cockroach CLI, [`BOOL` values](../v23.1/bool.html) are now formatted as `t` or `f` instead of `True` or `False`. [#81943][#81943] -- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node](../v23.1/node-shutdown.html) gracefully, send a `SIGTERM` signal to it. [#82988][#82988] -- Added a cluster version to allow the [Pebble storage engine](../v23.1/architecture/storage-layer.html#pebble) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree](../v23.1/architecture/storage-layer.html#log-structured-merge-trees)). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. [#84887][#84887] +- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). +- In the Cockroach CLI, [`BOOL` values](../v23.1/bool.html) are now formatted as `t` or `f` instead of `True` or `False`. +- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node](../v23.1/node-shutdown.html) gracefully, send a `SIGTERM` signal to it. +- Added a cluster version to allow the [Pebble storage engine](../v23.1/architecture/storage-layer.html#pebble) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree](../v23.1/architecture/storage-layer.html#log-structured-merge-trees)). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. - Using a single TCP port listener for both RPC (node-node) and SQL client connections is now deprecated. This capability **will be removed** in the next version of CockroachDB. Instead, make one of the following configuration changes to your CockroachDB deployment: - Preferred: keep port `26257` for SQL, and allocate a new port, e.g., `26357`, for node-node RPC connections. For example, you might configure a node with the flags `--listen-addr=:26357 --sql-addr=:26257`, where subsequent nodes seeking to join would then use the flag `--join=othernode:26357,othernode:26257`. This will become the default configuration in the next version of CockroachDB. When using this mode of operation, care should be taken to use a `--join` flag that includes both the previous and new port numbers for other nodes, so that no network partition occurs during the upgrade. - - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. [#85671][#85671] -- If no `nullif` option is specified while using [`IMPORT CSV`](../v23.1/import.html), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. [#84487][#84487] -- [`COPY FROM`](../v23.1/copy.html) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. [#85986][#85986] -- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link v24.2/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. [#81310][#81310] -- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. [#81266][#81266] -- Removed the deprecated `GRANT` privilege. [#81310][#81310] -- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. [#83134][#83134] -- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. [#82560][#82560] -- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link v24.2/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. [#76834][#76834] + - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. +- If no `nullif` option is specified while using [`IMPORT CSV`](../v23.1/import.html), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. +- [`COPY FROM`](../v23.1/copy.html) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. +- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link v24.2/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. +- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. +- Removed the deprecated `GRANT` privilege. +- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. +- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. +- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link v24.2/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. diff --git a/src/current/_includes/v24.2/cdc/avro-udt-composite.md b/src/current/_includes/v24.2/cdc/avro-udt-composite.md index 7a34fbd3253..da8b7b30a3e 100644 --- a/src/current/_includes/v24.2/cdc/avro-udt-composite.md +++ b/src/current/_includes/v24.2/cdc/avro-udt-composite.md @@ -1 +1 @@ -A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). [#102903](https://github.com/cockroachdb/cockroach/issues/102903) \ No newline at end of file +A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). diff --git a/src/current/_includes/v24.2/cdc/csv-udt-composite.md b/src/current/_includes/v24.2/cdc/csv-udt-composite.md index 834bddd8366..fc4597e8e98 100644 --- a/src/current/_includes/v24.2/cdc/csv-udt-composite.md +++ b/src/current/_includes/v24.2/cdc/csv-udt-composite.md @@ -1 +1 @@ -A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). [#102905](https://github.com/cockroachdb/cockroach/issues/102905) \ No newline at end of file +A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). diff --git a/src/current/_includes/v24.2/essential-metrics.md b/src/current/_includes/v24.2/essential-metrics.md index 0c1cc00a2d9..93eaf25f7ff 100644 --- a/src/current/_includes/v24.2/essential-metrics.md +++ b/src/current/_includes/v24.2/essential-metrics.md @@ -194,4 +194,3 @@ If [Row-Level TTL]({% link {{ page.version.version }}/row-level-ttl.md %}) is co - [Custom Chart Debug Page]({% link {{ page.version.version }}/ui-custom-chart-debug-page.md %}) - [Cluster API]({% link {{ page.version.version }}/cluster-api.md %}) - [Essential Alerts]({% link {{ page.version.version }}/essential-alerts-{{ include.deployment}}.md %}) -- [CockroachDB Source Code - DB Console metrics to graphs mappings (in *.tsx files)](https://github.com/cockroachdb/cockroach/tree/master/pkg/ui/workspaces/db-console/src/views/cluster/containers/nodeGraphs/dashboards) diff --git a/src/current/_includes/v24.2/faq/what-is-crdb.md b/src/current/_includes/v24.2/faq/what-is-crdb.md index 28857ed61fa..14e9080a4f0 100644 --- a/src/current/_includes/v24.2/faq/what-is-crdb.md +++ b/src/current/_includes/v24.2/faq/what-is-crdb.md @@ -1,7 +1,7 @@ CockroachDB is a [distributed SQL](https://www.cockroachlabs.com/blog/what-is-distributed-sql/) database built on a transactional and strongly-consistent key-value store. It **scales** horizontally; **survives** disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention; supports **strongly-consistent** ACID transactions; and provides a familiar **SQL** API for structuring, manipulating, and querying data. -CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies, and the [source code](https://github.com/cockroachdb/cockroach) is freely available. +CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies. {{site.data.alerts.callout_success}} For a deeper dive into CockroachDB's capabilities and how it fits into the database landscape, take the free [**Intro to Distributed SQL and CockroachDB**](https://university.cockroachlabs.com/courses/course-v1:crl+intro-to-distributed-sql-and-cockroachdb+self-paced/about) course on Cockroach University. -{{site.data.alerts.end}} \ No newline at end of file +{{site.data.alerts.end}} diff --git a/src/current/_includes/v24.2/finalization-required/119894.md b/src/current/_includes/v24.2/finalization-required/119894.md index f2b393c3c0e..c65c82b83d5 100644 --- a/src/current/_includes/v24.2/finalization-required/119894.md +++ b/src/current/_includes/v24.2/finalization-required/119894.md @@ -1 +1 @@ -[Splits](https://cockroachlabs.com/docs/{{ include.version }}/architecture/distribution-layer#range-splits) no longer hold [latches](https://cockroachlabs.com/docs/architecture/distribution-layer.#latch-manager) for time proportional to the range size while computing [MVCC](https://cockroachlabs.com/docs/{{ include.version }}/architecture/storage-layer#mvcc) statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. [#119894](https://github.com/cockroachdb/cockroach/pull/119894) +[Splits](https://cockroachlabs.com/docs/{{ include.version }}/architecture/distribution-layer#range-splits) no longer hold [latches](https://cockroachlabs.com/docs/architecture/distribution-layer.#latch-manager) for time proportional to the range size while computing [MVCC](https://cockroachlabs.com/docs/{{ include.version }}/architecture/storage-layer#mvcc) statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. diff --git a/src/current/_includes/v24.2/known-limitations/alter-changefeed-cdc-queries.md b/src/current/_includes/v24.2/known-limitations/alter-changefeed-cdc-queries.md index 56dd7eeaacd..fbd2a285c6e 100644 --- a/src/current/_includes/v24.2/known-limitations/alter-changefeed-cdc-queries.md +++ b/src/current/_includes/v24.2/known-limitations/alter-changefeed-cdc-queries.md @@ -1 +1 @@ -{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. [#83033](https://github.com/cockroachdb/cockroach/issues/83033) \ No newline at end of file +{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. diff --git a/src/current/_includes/v24.2/known-limitations/alter-changefeed-limitations.md b/src/current/_includes/v24.2/known-limitations/alter-changefeed-limitations.md index a183f2964f4..d1cb7303a99 100644 --- a/src/current/_includes/v24.2/known-limitations/alter-changefeed-limitations.md +++ b/src/current/_includes/v24.2/known-limitations/alter-changefeed-limitations.md @@ -1,8 +1,8 @@ -- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) statement. [#77171](https://github.com/cockroachdb/cockroach/issues/77171) +- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) statement. - CockroachDB does not keep track of the [`initial_scan`]({% link {{ page.version.version }}/create-changefeed.md %}#initial-scan) option applied to tables when it is set to `yes` or `only`. For example: ~~~ sql ALTER CHANGEFEED {job_ID} ADD table WITH initial_scan = 'yes'; ~~~ - This will trigger an initial scan of the table and the changefeed will track `table`. The changefeed will **not** track `initial_scan` specified as an option, so it will not display in the output or after a `SHOW CHANGEFEED JOB` statement. \ No newline at end of file + This will trigger an initial scan of the table and the changefeed will track `table`. The changefeed will **not** track `initial_scan` specified as an option, so it will not display in the output or after a `SHOW CHANGEFEED JOB` statement. diff --git a/src/current/_includes/v24.2/known-limitations/alter-view-limitations.md b/src/current/_includes/v24.2/known-limitations/alter-view-limitations.md index 642bed6ce08..4cfdf9b8a1a 100644 --- a/src/current/_includes/v24.2/known-limitations/alter-view-limitations.md +++ b/src/current/_includes/v24.2/known-limitations/alter-view-limitations.md @@ -1,4 +1,4 @@ `ALTER VIEW` does not currently support: - Changing the [`SELECT`]({% link {{ page.version.version }}/select-clause.md %}) statement executed by a view. Instead, you must drop the existing view and create a new view. -- Renaming a view that other views depend on. This feature may be added in the future. [#10083](https://github.com/cockroachdb/cockroach/issues/10083) \ No newline at end of file +- Renaming a view that other views depend on. This feature may be added in the future. diff --git a/src/current/_includes/v24.2/known-limitations/aost-limitations.md b/src/current/_includes/v24.2/known-limitations/aost-limitations.md index 811c884d08d..c0d92fff59b 100644 --- a/src/current/_includes/v24.2/known-limitations/aost-limitations.md +++ b/src/current/_includes/v24.2/known-limitations/aost-limitations.md @@ -1 +1 @@ -CockroachDB does not support placeholders in {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %}. The time value must be a constant value embedded in the SQL string. [#30955](https://github.com/cockroachdb/cockroach/issues/30955) \ No newline at end of file +CockroachDB does not support placeholders in {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %}. The time value must be a constant value embedded in the SQL string. diff --git a/src/current/_includes/v24.2/known-limitations/cannot-refresh-materialized-views-inside-transactions.md b/src/current/_includes/v24.2/known-limitations/cannot-refresh-materialized-views-inside-transactions.md index b0aaf728177..cd93d6ad8c8 100644 --- a/src/current/_includes/v24.2/known-limitations/cannot-refresh-materialized-views-inside-transactions.md +++ b/src/current/_includes/v24.2/known-limitations/cannot-refresh-materialized-views-inside-transactions.md @@ -23,5 +23,3 @@ ERROR: cannot refresh view in an explicit transaction SQLSTATE: 25000 ~~~ - - [#66008](https://github.com/cockroachdb/cockroach/issues/66008) diff --git a/src/current/_includes/v24.2/known-limitations/cdc-queries-column-families.md b/src/current/_includes/v24.2/known-limitations/cdc-queries-column-families.md index 505a8c9700e..ea64b9821ea 100644 --- a/src/current/_includes/v24.2/known-limitations/cdc-queries-column-families.md +++ b/src/current/_includes/v24.2/known-limitations/cdc-queries-column-families.md @@ -1 +1 @@ -Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. [#127761](https://github.com/cockroachdb/cockroach/issues/127761) \ No newline at end of file +Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. diff --git a/src/current/_includes/v24.2/known-limitations/cdc-queries.md b/src/current/_includes/v24.2/known-limitations/cdc-queries.md index 2839eba5eda..a19a4a9a9c4 100644 --- a/src/current/_includes/v24.2/known-limitations/cdc-queries.md +++ b/src/current/_includes/v24.2/known-limitations/cdc-queries.md @@ -3,5 +3,5 @@ - The following are not permitted in CDC queries: - [Volatile functions]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility). - Sub-select queries. - - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). [#98237](https://github.com/cockroachdb/cockroach/issues/98237) -- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. [#83835](https://github.com/cockroachdb/cockroach/issues/83835) + - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). +- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. diff --git a/src/current/_includes/v24.2/known-limitations/cdc.md b/src/current/_includes/v24.2/known-limitations/cdc.md index a473e94367c..9f691268aeb 100644 --- a/src/current/_includes/v24.2/known-limitations/cdc.md +++ b/src/current/_includes/v24.2/known-limitations/cdc.md @@ -1,8 +1,8 @@ -- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). [#73435](https://github.com/cockroachdb/cockroach/issues/73435) +- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). - {% include {{page.version.version}}/cdc/kafka-vpc-limitation.md %} -- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#insecure-tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. [#73431](https://github.com/cockroachdb/cockroach/issues/73431) -- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. [#73432](https://github.com/cockroachdb/cockroach/issues/73432) -- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. [#79452](https://github.com/cockroachdb/cockroach/issues/79452) +- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#insecure-tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. +- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. +- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. - {% include {{page.version.version}}/cdc/types-udt-composite-general.md %} The following limitations apply: - {% include {{page.version.version}}/cdc/avro-udt-composite.md %} - - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} \ No newline at end of file + - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} diff --git a/src/current/_includes/v24.2/known-limitations/changefeed-column-family-message.md b/src/current/_includes/v24.2/known-limitations/changefeed-column-family-message.md index 41744b9b4b4..785cabfebe1 100644 --- a/src/current/_includes/v24.2/known-limitations/changefeed-column-family-message.md +++ b/src/current/_includes/v24.2/known-limitations/changefeed-column-family-message.md @@ -1 +1 @@ -When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. [#127736](https://github.com/cockroachdb/cockroach/issues/127736) \ No newline at end of file +When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. diff --git a/src/current/_includes/v24.2/known-limitations/copy-syntax.md b/src/current/_includes/v24.2/known-limitations/copy-syntax.md index e64a075dcac..90d35df5754 100644 --- a/src/current/_includes/v24.2/known-limitations/copy-syntax.md +++ b/src/current/_includes/v24.2/known-limitations/copy-syntax.md @@ -1,5 +1,5 @@ CockroachDB does not yet support the following `COPY` syntax: - - `COPY ... WITH FREEZE`. [#85573](https://github.com/cockroachdb/cockroach/issues/85573) - - `COPY ... WITH QUOTE`. [#85574](https://github.com/cockroachdb/cockroach/issues/85574) - - `COPY ... FROM ... WHERE `. [#54580](https://github.com/cockroachdb/cockroach/issues/54580) + - `COPY ... WITH FREEZE`. + - `COPY ... WITH QUOTE`. + - `COPY ... FROM ... WHERE `. diff --git a/src/current/_includes/v24.2/known-limitations/create-statistics-aost-limitation.md b/src/current/_includes/v24.2/known-limitations/create-statistics-aost-limitation.md index 09f86f51c48..7a2a39034de 100644 --- a/src/current/_includes/v24.2/known-limitations/create-statistics-aost-limitation.md +++ b/src/current/_includes/v24.2/known-limitations/create-statistics-aost-limitation.md @@ -1 +1 @@ -The `ANALYZE` alias {% if page.name != "create-statistics.md" %}of [`CREATE STATISTICS`]({% link {{ page.version.version }}/create-statistics.md %}){% endif %} does not support specifying an {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %} timestamp. `ANALYZE` statements use `AS OF SYSTEM TIME '-0.001ms'` automatically. For more control over the statistics interval, use the `CREATE STATISTICS` syntax instead. [#96430](https://github.com/cockroachdb/cockroach/issues/96430) \ No newline at end of file +The `ANALYZE` alias {% if page.name != "create-statistics.md" %}of [`CREATE STATISTICS`]({% link {{ page.version.version }}/create-statistics.md %}){% endif %} does not support specifying an {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %} timestamp. `ANALYZE` statements use `AS OF SYSTEM TIME '-0.001ms'` automatically. For more control over the statistics interval, use the `CREATE STATISTICS` syntax instead. diff --git a/src/current/_includes/v24.2/known-limitations/drop-column-partial-index.md b/src/current/_includes/v24.2/known-limitations/drop-column-partial-index.md index 9fd1811cc43..59d1e0e09b1 100644 --- a/src/current/_includes/v24.2/known-limitations/drop-column-partial-index.md +++ b/src/current/_includes/v24.2/known-limitations/drop-column-partial-index.md @@ -1 +1 @@ -CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}). [#97813](https://github.com/cockroachdb/cockroach/issues/97813). \ No newline at end of file +CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}).. diff --git a/src/current/_includes/v24.2/known-limitations/drop-owned-by-limitations.md b/src/current/_includes/v24.2/known-limitations/drop-owned-by-limitations.md index 95685f6adf1..563c3fc3746 100644 --- a/src/current/_includes/v24.2/known-limitations/drop-owned-by-limitations.md +++ b/src/current/_includes/v24.2/known-limitations/drop-owned-by-limitations.md @@ -10,4 +10,4 @@ The phrase "synthetic privileges" in the error message refers to [system-level privileges]({% link {{ page.version.version }}/security-reference/authorization.md %}#supported-privileges). - The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. [#88149](https://github.com/cockroachdb/cockroach/issues/88149) \ No newline at end of file + The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. diff --git a/src/current/_includes/v24.2/known-limitations/expression-index-limitations.md b/src/current/_includes/v24.2/known-limitations/expression-index-limitations.md index c0e94185948..76724af9432 100644 --- a/src/current/_includes/v24.2/known-limitations/expression-index-limitations.md +++ b/src/current/_includes/v24.2/known-limitations/expression-index-limitations.md @@ -1,6 +1,6 @@ - The expression cannot reference columns outside the index's table. - Functional expression output must be determined by the input arguments. For example, you can't use the [volatile function]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility) `now()` to create an index because its output depends on more than just the function arguments. -- CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). [#67900](https://github.com/cockroachdb/cockroach/issues/67900) +- CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). - CockroachDB does not support expressions as `ON CONFLICT` targets. This means that unique {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} cannot be selected as arbiters for [`INSERT .. ON CONFLICT`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause) statements. For example: {% include_cached copy-clipboard.html %} @@ -39,5 +39,3 @@ ^ HINT: try \h INSERT ~~~ - - [#67893](https://github.com/cockroachdb/cockroach/issues/67893) diff --git a/src/current/_includes/v24.2/known-limitations/forecasted-stats-limitations.md b/src/current/_includes/v24.2/known-limitations/forecasted-stats-limitations.md index c8753124a96..a7f8eb17ee2 100644 --- a/src/current/_includes/v24.2/known-limitations/forecasted-stats-limitations.md +++ b/src/current/_includes/v24.2/known-limitations/forecasted-stats-limitations.md @@ -6,4 +6,4 @@ Although [`SHOW STATISTICS WITH FORECAST`]({% link {{ page.version.version }}/show-statistics.md %}#display-forecasted-statistics) shows the settings taking effect immediately, they do not actually take effect until new statistics are collected (as can be verified with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %})). - As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. [#123852](https://github.com/cockroachdb/cockroach/issues/123852) \ No newline at end of file + As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. diff --git a/src/current/_includes/v24.2/known-limitations/full-text-search-unsupported.md b/src/current/_includes/v24.2/known-limitations/full-text-search-unsupported.md index 7b5a83f2cae..ef6ff023f86 100644 --- a/src/current/_includes/v24.2/known-limitations/full-text-search-unsupported.md +++ b/src/current/_includes/v24.2/known-limitations/full-text-search-unsupported.md @@ -10,5 +10,3 @@ - `tsquery <-> tsquery` comparisons. - `!! tsquery` comparisons. - `tsquery @> tsquery` and `tsquery <@ tsquery` comparisons. - -[#41288](https://github.com/cockroachdb/cockroach/issues/41288) \ No newline at end of file diff --git a/src/current/_includes/v24.2/known-limitations/generic-query-plan-limitations.md b/src/current/_includes/v24.2/known-limitations/generic-query-plan-limitations.md index e28e66d5f32..e588b799305 100644 --- a/src/current/_includes/v24.2/known-limitations/generic-query-plan-limitations.md +++ b/src/current/_includes/v24.2/known-limitations/generic-query-plan-limitations.md @@ -1,2 +1,2 @@ -- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. [#128916](https://github.com/cockroachdb/cockroach/issues/128916) -- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. [#128911](https://github.com/cockroachdb/cockroach/issues/128911) \ No newline at end of file +- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. +- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. diff --git a/src/current/_includes/v24.2/known-limitations/locality-optimized-search-virtual-computed-columns.md b/src/current/_includes/v24.2/known-limitations/locality-optimized-search-virtual-computed-columns.md index d6acf418aa8..7a7392aab0d 100644 --- a/src/current/_includes/v24.2/known-limitations/locality-optimized-search-virtual-computed-columns.md +++ b/src/current/_includes/v24.2/known-limitations/locality-optimized-search-virtual-computed-columns.md @@ -1 +1 @@ -- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). [#68129](https://github.com/cockroachdb/cockroach/issues/68129) +- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). diff --git a/src/current/_includes/v24.2/known-limitations/materialized-views-no-stats.md b/src/current/_includes/v24.2/known-limitations/materialized-views-no-stats.md index 02f2bd787c4..a468db2895d 100644 --- a/src/current/_includes/v24.2/known-limitations/materialized-views-no-stats.md +++ b/src/current/_includes/v24.2/known-limitations/materialized-views-no-stats.md @@ -1 +1 @@ -- The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views. [#78181](https://github.com/cockroachdb/cockroach/issues/78181). +- The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views.. diff --git a/src/current/_includes/v24.2/known-limitations/multiple-arbiter-indexes.md b/src/current/_includes/v24.2/known-limitations/multiple-arbiter-indexes.md index c9861623314..b13890a2ee9 100644 --- a/src/current/_includes/v24.2/known-limitations/multiple-arbiter-indexes.md +++ b/src/current/_includes/v24.2/known-limitations/multiple-arbiter-indexes.md @@ -1 +1 @@ -CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. [#53170](https://github.com/cockroachdb/cockroach/issues/53170) \ No newline at end of file +CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. diff --git a/src/current/_includes/v24.2/known-limitations/plpgsql-limitations.md b/src/current/_includes/v24.2/known-limitations/plpgsql-limitations.md index cfb6c0e102a..b213801f819 100644 --- a/src/current/_includes/v24.2/known-limitations/plpgsql-limitations.md +++ b/src/current/_includes/v24.2/known-limitations/plpgsql-limitations.md @@ -1,26 +1,26 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. [#121605](https://github.com/cockroachdb/cockroach/issues/121605) -- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. [#114676](https://github.com/cockroachdb/cockroach/issues/114676) -- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). [#114701](https://github.com/cockroachdb/cockroach/issues/114701) +- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. +- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. +- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). - The following statements are not supported: - - `FOR` loops, including `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops. [#105246](https://github.com/cockroachdb/cockroach/issues/105246) - - `RETURN NEXT` and `RETURN QUERY`. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) - - `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `CASE`. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). [#111446](https://github.com/cockroachdb/cockroach/issues/111446) -- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). [#106237](https://github.com/cockroachdb/cockroach/issues/106237) -- `RAISE` statements message the client directly, and do not produce log output. [#117750](https://github.com/cockroachdb/cockroach/issues/117750) -- `ASSERT` debugging checks are not supported. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- `RECORD` parameters and variables are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). [#105713](https://github.com/cockroachdb/cockroach/issues/105713) -- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. [#117508](https://github.com/cockroachdb/cockroach/issues/117508) -- Syntax for accessing members of composite types without parentheses is not supported. [#114687](https://github.com/cockroachdb/cockroach/issues/114687) -- `NOT NULL` variable declarations are not supported. [#105243](https://github.com/cockroachdb/cockroach/issues/105243) -- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. [#111479](https://github.com/cockroachdb/cockroach/issues/111479) -- Cursors in PL/pgSQL cannot be declared with arguments. [#117746](https://github.com/cockroachdb/cockroach/issues/117746) -- `OPEN FOR EXECUTE` is not supported for opening cursors. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- The `print_strict_params` option is not supported in PL/pgSQL. [#123671](https://github.com/cockroachdb/cockroach/issues/123671) -- The `FOUND` local variable, which checks whether a statement affected any rows, is not supported in PL/pgSQL. [#122306](https://github.com/cockroachdb/cockroach/issues/122306) -- By default, when a PL/pgSQL variable conflicts with a column name, CockroachDB resolves the ambiguity by treating it as a column reference rather than a variable reference. This behavior differs from PostgreSQL, where an ambiguous column error is reported, and it is possible to change the `plpgsql.variable_conflict` setting in order to prefer either columns or variables. [#115680](https://github.com/cockroachdb/cockroach/issues/115680) -- It is not possible to define a `RECORD`-returning PL/pgSQL function that returns different-typed expressions from different `RETURN` statements. CockroachDB requires a consistent return type for `RECORD`-returning functions. [#115384](https://github.com/cockroachdb/cockroach/issues/115384) -- Variables cannot be declared with an associated collation using the `COLLATE` keyword. [#105245](https://github.com/cockroachdb/cockroach/issues/105245) -- Variables cannot be accessed using the `label.var_name` pattern. [#122322](https://github.com/cockroachdb/cockroach/issues/122322) \ No newline at end of file + - `FOR` loops, including `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops. + - `RETURN NEXT` and `RETURN QUERY`. + - `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `CASE`. +- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). +- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). +- `RAISE` statements message the client directly, and do not produce log output. +- `ASSERT` debugging checks are not supported. +- `RECORD` parameters and variables are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). +- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. +- Syntax for accessing members of composite types without parentheses is not supported. +- `NOT NULL` variable declarations are not supported. +- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. +- Cursors in PL/pgSQL cannot be declared with arguments. +- `OPEN FOR EXECUTE` is not supported for opening cursors. +- The `print_strict_params` option is not supported in PL/pgSQL. +- The `FOUND` local variable, which checks whether a statement affected any rows, is not supported in PL/pgSQL. +- By default, when a PL/pgSQL variable conflicts with a column name, CockroachDB resolves the ambiguity by treating it as a column reference rather than a variable reference. This behavior differs from PostgreSQL, where an ambiguous column error is reported, and it is possible to change the `plpgsql.variable_conflict` setting in order to prefer either columns or variables. +- It is not possible to define a `RECORD`-returning PL/pgSQL function that returns different-typed expressions from different `RETURN` statements. CockroachDB requires a consistent return type for `RECORD`-returning functions. +- Variables cannot be declared with an associated collation using the `COLLATE` keyword. +- Variables cannot be accessed using the `label.var_name` pattern. diff --git a/src/current/_includes/v24.2/known-limitations/read-committed-limitations.md b/src/current/_includes/v24.2/known-limitations/read-committed-limitations.md index 947cf56814d..d72696c9594 100644 --- a/src/current/_includes/v24.2/known-limitations/read-committed-limitations.md +++ b/src/current/_includes/v24.2/known-limitations/read-committed-limitations.md @@ -1,7 +1,7 @@ -- Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions when the [`autocommit_before_ddl` session setting]({% link {{page.version.version}}/set-vars.md %}#autocommit-before-ddl) is set to `off`, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. [#114778](https://github.com/cockroachdb/cockroach/issues/114778) -- `READ COMMITTED` transactions performing `INSERT`, `UPDATE`, or `UPSERT` cannot access [`REGIONAL BY ROW`]({% link {{ page.version.version }}/table-localities.md %}#regional-by-row-tables) tables in which [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) and [`PRIMARY KEY`]({% link {{ page.version.version }}/primary-key.md %}) constraints exist, the region is not included in the constraint, and the region cannot be computed from the constraint columns. [#110873](https://github.com/cockroachdb/cockroach/issues/110873) -- Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. [#112488](https://github.com/cockroachdb/cockroach/issues/112488) +- Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions when the [`autocommit_before_ddl` session setting]({% link {{page.version.version}}/set-vars.md %}#autocommit-before-ddl) is set to `off`, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. +- `READ COMMITTED` transactions performing `INSERT`, `UPDATE`, or `UPSERT` cannot access [`REGIONAL BY ROW`]({% link {{ page.version.version }}/table-localities.md %}#regional-by-row-tables) tables in which [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) and [`PRIMARY KEY`]({% link {{ page.version.version }}/primary-key.md %}) constraints exist, the region is not included in the constraint, and the region cannot be computed from the constraint columns. +- Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. - Because locks acquired by [foreign key]({% link {{ page.version.version }}/foreign-key.md %}) checks, [`SELECT FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}), and [`SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) are fully replicated under `READ COMMITTED` isolation, some queries experience a delay for Raft replication. - [Foreign key]({% link {{ page.version.version }}/foreign-key.md %}) checks are not performed in parallel under `READ COMMITTED` isolation. - [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements are less optimized under `READ COMMITTED` isolation than under `SERIALIZABLE` isolation. Under `READ COMMITTED` isolation, `SELECT FOR UPDATE` and `SELECT FOR SHARE` usually perform an extra lookup join for every locked table when compared to the same queries under `SERIALIZABLE`. In addition, some optimization steps (such as de-correlation of correlated [subqueries]({% link {{ page.version.version }}/subqueries.md %})) are not currently performed on these queries. -- Regardless of isolation level, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements in CockroachDB do not prevent insertion of new rows matching the search condition (i.e., [phantom reads]({% link {{ page.version.version }}/read-committed.md %}#non-repeatable-reads-and-phantom-reads)). This matches PostgreSQL behavior at all isolation levels. [#120673](https://github.com/cockroachdb/cockroach/issues/120673) \ No newline at end of file +- Regardless of isolation level, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements in CockroachDB do not prevent insertion of new rows matching the search condition (i.e., [phantom reads]({% link {{ page.version.version }}/read-committed.md %}#non-repeatable-reads-and-phantom-reads)). This matches PostgreSQL behavior at all isolation levels. diff --git a/src/current/_includes/v24.2/known-limitations/restore-multiregion-match.md b/src/current/_includes/v24.2/known-limitations/restore-multiregion-match.md index 20ddbb0c930..38ee6d5446e 100644 --- a/src/current/_includes/v24.2/known-limitations/restore-multiregion-match.md +++ b/src/current/_includes/v24.2/known-limitations/restore-multiregion-match.md @@ -46,5 +46,3 @@ ~~~ sql ALTER DATABASE destination_database SET PRIMARY REGION "us-east1"; ~~~ - - [#71071](https://github.com/cockroachdb/cockroach/issues/71071) \ No newline at end of file diff --git a/src/current/_includes/v24.2/known-limitations/restore-tables-non-multi-reg.md b/src/current/_includes/v24.2/known-limitations/restore-tables-non-multi-reg.md index 5390f2d09ee..a6558d30c7d 100644 --- a/src/current/_includes/v24.2/known-limitations/restore-tables-non-multi-reg.md +++ b/src/current/_includes/v24.2/known-limitations/restore-tables-non-multi-reg.md @@ -1 +1 @@ -Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. [#71502](https://github.com/cockroachdb/cockroach/issues/71502) +Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. diff --git a/src/current/_includes/v24.2/known-limitations/restore-udf.md b/src/current/_includes/v24.2/known-limitations/restore-udf.md index a4a4bc080fe..7d5670fbc9e 100644 --- a/src/current/_includes/v24.2/known-limitations/restore-udf.md +++ b/src/current/_includes/v24.2/known-limitations/restore-udf.md @@ -1 +1 @@ -`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. [#118195](https://github.com/cockroachdb/cockroach/issues/118195) \ No newline at end of file +`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. diff --git a/src/current/_includes/v24.2/known-limitations/routine-limitations.md b/src/current/_includes/v24.2/known-limitations/routine-limitations.md index 4718c6c7abf..64c767950b6 100644 --- a/src/current/_includes/v24.2/known-limitations/routine-limitations.md +++ b/src/current/_includes/v24.2/known-limitations/routine-limitations.md @@ -1,10 +1,10 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. [#122264](https://github.com/cockroachdb/cockroach/issues/122264) -- Routines cannot be created if they reference temporary tables. [#121375](https://github.com/cockroachdb/cockroach/issues/121375) -- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. [#121251](https://github.com/cockroachdb/cockroach/issues/121251) -- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. [#121247](https://github.com/cockroachdb/cockroach/issues/121247) -- Routines cannot be created with an `OUT` parameter of type `RECORD`. [#123448](https://github.com/cockroachdb/cockroach/issues/123448) -- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or stored procedures. [#110080](https://github.com/cockroachdb/cockroach/issues/110080) -- Polymorphic types cannot be cast to other types (e.g., `TEXT`) within routine parameters. [#123536](https://github.com/cockroachdb/cockroach/issues/123536) -- Routine parameters and return types cannot be declared using the `ANYENUM` polymorphic type, which is able to match any [`ENUM`]({% link {{ page.version.version }}/enum.md %}) type. [123048](https://github.com/cockroachdb/cockroach/issues/123048) \ No newline at end of file +- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. +- Routines cannot be created if they reference temporary tables. +- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. +- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. +- Routines cannot be created with an `OUT` parameter of type `RECORD`. +- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or stored procedures. +- Polymorphic types cannot be cast to other types (e.g., `TEXT`) within routine parameters. +- Routine parameters and return types cannot be declared using the `ANYENUM` polymorphic type, which is able to match any [`ENUM`]({% link {{ page.version.version }}/enum.md %}) type. diff --git a/src/current/_includes/v24.2/known-limitations/select-for-update-limitations.md b/src/current/_includes/v24.2/known-limitations/select-for-update-limitations.md index 73aaf9fdeb6..3b6f7c9459d 100644 --- a/src/current/_includes/v24.2/known-limitations/select-for-update-limitations.md +++ b/src/current/_includes/v24.2/known-limitations/select-for-update-limitations.md @@ -1,6 +1,6 @@ -- `SKIP LOCKED` cannot be used for tables with multiple [column families]({% link {{ page.version.version }}/column-families.md %}). [#160961](https://github.com/cockroachdb/cockroach/issues/160961) +- `SKIP LOCKED` cannot be used for tables with multiple [column families]({% link {{ page.version.version }}/column-families.md %}). - By default under `SERIALIZABLE` isolation, locks acquired using `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` are implemented as fast, in-memory [unreplicated locks](architecture/transaction-layer.html#unreplicated-locks). If a [lease transfer]({% link {{ page.version.version }}/architecture/replication-layer.md %}#epoch-based-leases-table-data) or [range split/merge]({% link {{ page.version.version }}/architecture/distribution-layer.md %}#range-merges) occurs on a range held by an unreplicated lock, the lock is dropped. The following behaviors can occur: - The desired ordering of concurrent accesses to one or more rows of a table expressed by your use of `SELECT ... FOR UPDATE` may not be preserved (that is, a transaction _B_ against some table _T_ that was supposed to wait behind another transaction _A_ operating on _T_ may not wait for transaction _A_). - The transaction that acquired the (now dropped) unreplicated lock may fail to commit, leading to [transaction retry errors with code `40001`]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}) and the [`restart transaction` error message]({% link {{ page.version.version }}/common-errors.md %}#restart-transaction). - When running under `SERIALIZABLE` isolation, `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` locks should be thought of as best-effort, and should not be relied upon for correctness. Note that [serialization]({% link {{ page.version.version }}/demo-serializable.md %}) is preserved despite this limitation. This limitation is fixed when the `enable_durable_locking_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}#enable-durable-locking-for-serializable) is set to `true`. This limitation does **not** apply to [`READ COMMITTED`]({% link {{ page.version.version }}/read-committed.md %}) transactions. \ No newline at end of file + When running under `SERIALIZABLE` isolation, `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` locks should be thought of as best-effort, and should not be relied upon for correctness. Note that [serialization]({% link {{ page.version.version }}/demo-serializable.md %}) is preserved despite this limitation. This limitation is fixed when the `enable_durable_locking_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}#enable-durable-locking-for-serializable) is set to `true`. This limitation does **not** apply to [`READ COMMITTED`]({% link {{ page.version.version }}/read-committed.md %}) transactions. diff --git a/src/current/_includes/v24.2/known-limitations/set-transaction-no-rollback.md b/src/current/_includes/v24.2/known-limitations/set-transaction-no-rollback.md index 414cbac6282..4ab3d72a6ae 100644 --- a/src/current/_includes/v24.2/known-limitations/set-transaction-no-rollback.md +++ b/src/current/_includes/v24.2/known-limitations/set-transaction-no-rollback.md @@ -13,5 +13,3 @@ timezone ------------ 3 ~~~ - -[#69396](https://github.com/cockroachdb/cockroach/issues/69396) diff --git a/src/current/_includes/v24.2/known-limitations/show-backup-symlink.md b/src/current/_includes/v24.2/known-limitations/show-backup-symlink.md index 38ba86fb28f..f47d7f3887b 100644 --- a/src/current/_includes/v24.2/known-limitations/show-backup-symlink.md +++ b/src/current/_includes/v24.2/known-limitations/show-backup-symlink.md @@ -1 +1 @@ -[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. [#70260](https://github.com/cockroachdb/cockroach/issues/70260) \ No newline at end of file +[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. diff --git a/src/current/_includes/v24.2/known-limitations/sql-cursors.md b/src/current/_includes/v24.2/known-limitations/sql-cursors.md index 4c047aa9603..1f826254d12 100644 --- a/src/current/_includes/v24.2/known-limitations/sql-cursors.md +++ b/src/current/_includes/v24.2/known-limitations/sql-cursors.md @@ -1,9 +1,9 @@ CockroachDB implements SQL {% if page.name == "known-limitations.md" %} [cursor]({% link {{ page.version.version }}/cursors.md %}) {% else %} cursor {% endif %} support with the following limitations: -- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. [#77099](https://github.com/cockroachdb/cockroach/issues/77099) -- `WITH HOLD`, which allows keeping a cursor open for longer than a transaction by writing its results into a buffer, is accepted as valid syntax within a single transaction but is not supported. It acts as a no-op and does not actually perform the function of `WITH HOLD`, which is to make the cursor live outside its parent transaction. Instead, if you are using `WITH HOLD`, you will be forced to close that cursor within the transaction it was created in. [#77101](https://github.com/cockroachdb/cockroach/issues/77101) +- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. +- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. +- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. +- `WITH HOLD`, which allows keeping a cursor open for longer than a transaction by writing its results into a buffer, is accepted as valid syntax within a single transaction but is not supported. It acts as a no-op and does not actually perform the function of `WITH HOLD`, which is to make the cursor live outside its parent transaction. Instead, if you are using `WITH HOLD`, you will be forced to close that cursor within the transaction it was created in. - This syntax is accepted (but does not have any effect): {% include_cached copy-clipboard.html %} ~~~ sql @@ -19,6 +19,6 @@ CockroachDB implements SQL {% if page.name == "known-limitations.md" %} [cursor] DECLARE test_cur CURSOR WITH HOLD FOR SELECT * FROM foo ORDER BY bar; COMMIT; -- This will fail with an error because CLOSE test_cur was not called inside the transaction. ~~~ -- Scrollable cursor (also known as reverse `FETCH`) is not supported. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. [#77103](https://github.com/cockroachdb/cockroach/issues/77103) -- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. [#77104](https://github.com/cockroachdb/cockroach/issues/77104) +- Scrollable cursor (also known as reverse `FETCH`) is not supported. +- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. +- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. diff --git a/src/current/_includes/v24.2/known-limitations/srid-4326-limitations.md b/src/current/_includes/v24.2/known-limitations/srid-4326-limitations.md index b556a9fbecd..7cfda23749b 100644 --- a/src/current/_includes/v24.2/known-limitations/srid-4326-limitations.md +++ b/src/current/_includes/v24.2/known-limitations/srid-4326-limitations.md @@ -1 +1 @@ -Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. [#55903](https://github.com/cockroachdb/cockroach/issues/55903) \ No newline at end of file +Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. diff --git a/src/current/_includes/v24.2/known-limitations/stats-refresh-upgrade.md b/src/current/_includes/v24.2/known-limitations/stats-refresh-upgrade.md index 3d5a8d26325..c8239a02bcd 100644 --- a/src/current/_includes/v24.2/known-limitations/stats-refresh-upgrade.md +++ b/src/current/_includes/v24.2/known-limitations/stats-refresh-upgrade.md @@ -1 +1 @@ -- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). [#54816](https://github.com/cockroachdb/cockroach/issues/54816) +- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). diff --git a/src/current/_includes/v24.2/known-limitations/stored-proc-limitations.md b/src/current/_includes/v24.2/known-limitations/stored-proc-limitations.md index b2ba1b61562..5ca8442d306 100644 --- a/src/current/_includes/v24.2/known-limitations/stored-proc-limitations.md +++ b/src/current/_includes/v24.2/known-limitations/stored-proc-limitations.md @@ -1,3 +1,3 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- `COMMIT` and `ROLLBACK` statements are not supported within nested procedures. [#122266](https://github.com/cockroachdb/cockroach/issues/122266) \ No newline at end of file +- `COMMIT` and `ROLLBACK` statements are not supported within nested procedures. diff --git a/src/current/_includes/v24.2/known-limitations/trigram-unsupported-syntax.md b/src/current/_includes/v24.2/known-limitations/trigram-unsupported-syntax.md index 494730c7ae8..bb726ac4af9 100644 --- a/src/current/_includes/v24.2/known-limitations/trigram-unsupported-syntax.md +++ b/src/current/_includes/v24.2/known-limitations/trigram-unsupported-syntax.md @@ -5,5 +5,3 @@ - `<->`, `<<->`, `<->>`, `<<<->`, and `<->>>` comparisons. - Acceleration on [regex string matching]({% link {{ page.version.version }}/scalar-expressions.md %}#string-matching-using-posix-regular-expressions). - `%` comparisons, `show_trgm`, and trigram index creation on [collated strings]({% link {{ page.version.version }}/collate.md %}). - -[#41285](https://github.com/cockroachdb/cockroach/issues/41285) \ No newline at end of file diff --git a/src/current/_includes/v24.2/known-limitations/udf-limitations.md b/src/current/_includes/v24.2/known-limitations/udf-limitations.md index 57011914407..8ea5430f39a 100644 --- a/src/current/_includes/v24.2/known-limitations/udf-limitations.md +++ b/src/current/_includes/v24.2/known-limitations/udf-limitations.md @@ -1,10 +1,10 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. [#122945](https://github.com/cockroachdb/cockroach/issues/122945) +- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. - User-defined functions are not currently supported in: - - Expressions (column, index, constraint) in tables. [#87699](https://github.com/cockroachdb/cockroach/issues/87699) - - Views. [#87699](https://github.com/cockroachdb/cockroach/issues/87699) -- User-defined functions cannot call themselves recursively. [#93049](https://github.com/cockroachdb/cockroach/issues/93049) -- [Common table expressions]({% link {{ page.version.version }}/common-table-expressions.md %}) (CTE), recursive or non-recursive, are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}) (UDF). That is, you cannot use a `WITH` clause in the body of a UDF. [#92961](https://github.com/cockroachdb/cockroach/issues/92961) -- The `setval` function cannot be resolved when used inside UDF bodies. [#110860](https://github.com/cockroachdb/cockroach/issues/110860) -- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) in UDFs is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) \ No newline at end of file + - Expressions (column, index, constraint) in tables. + - Views. +- User-defined functions cannot call themselves recursively. +- [Common table expressions]({% link {{ page.version.version }}/common-table-expressions.md %}) (CTE), recursive or non-recursive, are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}) (UDF). That is, you cannot use a `WITH` clause in the body of a UDF. +- The `setval` function cannot be resolved when used inside UDF bodies. +- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) in UDFs is not supported. diff --git a/src/current/_includes/v24.2/known-limitations/vectorized-engine-limitations.md b/src/current/_includes/v24.2/known-limitations/vectorized-engine-limitations.md index daea59ebf88..84f991a0e63 100644 --- a/src/current/_includes/v24.2/known-limitations/vectorized-engine-limitations.md +++ b/src/current/_includes/v24.2/known-limitations/vectorized-engine-limitations.md @@ -1,2 +1,2 @@ -- The vectorized engine does not support queries containing a join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). [#38018](https://github.com/cockroachdb/cockroach/issues/38018) +- The vectorized engine does not support queries containing a join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). - The vectorized engine does not support [working with spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}). Queries with [geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) or [spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}) will revert to the row-oriented execution engine. diff --git a/src/current/_includes/v24.2/misc/tooling.md b/src/current/_includes/v24.2/misc/tooling.md index dcd24363435..ec553f1b383 100644 --- a/src/current/_includes/v24.2/misc/tooling.md +++ b/src/current/_includes/v24.2/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Example Apps]({% link {{ page.version.version }}/example-apps.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). diff --git a/src/current/_includes/v24.2/prod-deployment/decommission-pre-flight-checks.md b/src/current/_includes/v24.2/prod-deployment/decommission-pre-flight-checks.md index b267379384b..f7a613dff78 100644 --- a/src/current/_includes/v24.2/prod-deployment/decommission-pre-flight-checks.md +++ b/src/current/_includes/v24.2/prod-deployment/decommission-pre-flight-checks.md @@ -14,5 +14,5 @@ Failed running "node decommission" These checks can be skipped by [passing the flag `--checks=skip` to `cockroach node decommission`]({% link {{ page.version.version }}/cockroach-node.md %}#decommission-checks). {{site.data.alerts.callout_info}} -The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see [cockroachdb/cockroach#71757](https://github.com/cockroachdb/cockroach/issues/71757) +The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see {{site.data.alerts.end}} diff --git a/src/current/_includes/v24.2/sql/savepoints-and-high-priority-transactions.md b/src/current/_includes/v24.2/sql/savepoints-and-high-priority-transactions.md index c6de489e641..ce124bc3209 100644 --- a/src/current/_includes/v24.2/sql/savepoints-and-high-priority-transactions.md +++ b/src/current/_includes/v24.2/sql/savepoints-and-high-priority-transactions.md @@ -1 +1 @@ -[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. For more information, see GitHub issue [#46414](https://www.github.com/cockroachdb/cockroach/issues/46414). +[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. diff --git a/src/current/_includes/v24.3/backward-incompatible/alpha.1.md b/src/current/_includes/v24.3/backward-incompatible/alpha.1.md index 8d4004422ad..7af28ac9019 100644 --- a/src/current/_includes/v24.3/backward-incompatible/alpha.1.md +++ b/src/current/_includes/v24.3/backward-incompatible/alpha.1.md @@ -1,15 +1,15 @@ -- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). [#81298][#81298] -- In the Cockroach CLI, [`BOOL` values]({% link {{ page.version.version }}/bool.md %}) are now formatted as `t` or `f` instead of `True` or `False`. [#81943][#81943] -- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node]({% link {{ page.version.version }}/node-shutdown.md %}) gracefully, send a `SIGTERM` signal to it. [#82988][#82988] -- Added a cluster version to allow the [Pebble storage engine]({% link {{ page.version.version }}/architecture/storage-layer.md#pebble %}) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree]({% link {{ page.version.version }}/architecture/storage-layer.md#log-structured-merge-trees %})). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. [#84887][#84887] +- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). +- In the Cockroach CLI, [`BOOL` values]({% link {{ page.version.version }}/bool.md %}) are now formatted as `t` or `f` instead of `True` or `False`. +- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node]({% link {{ page.version.version }}/node-shutdown.md %}) gracefully, send a `SIGTERM` signal to it. +- Added a cluster version to allow the [Pebble storage engine]({% link {{ page.version.version }}/architecture/storage-layer.md#pebble %}) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree]({% link {{ page.version.version }}/architecture/storage-layer.md#log-structured-merge-trees %})). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. - Using a single TCP port listener for both RPC (node-node) and SQL client connections is now deprecated. This capability **will be removed** in the next version of CockroachDB. Instead, make one of the following configuration changes to your CockroachDB deployment: - Preferred: keep port `26257` for SQL, and allocate a new port, e.g., `26357`, for node-node RPC connections. For example, you might configure a node with the flags `--listen-addr=:26357 --sql-addr=:26257`, where subsequent nodes seeking to join would then use the flag `--join=othernode:26357,othernode:26257`. This will become the default configuration in the next version of CockroachDB. When using this mode of operation, care should be taken to use a `--join` flag that includes both the previous and new port numbers for other nodes, so that no network partition occurs during the upgrade. - - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. [#85671][#85671] -- If no `nullif` option is specified while using [`IMPORT CSV`]({% link {{ page.version.version }}/import.md %}), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. [#84487][#84487] -- [`COPY FROM`]({% link {{ page.version.version }}/copy.md %}) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. [#85986][#85986] -- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link {{ page.version.version }}/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. [#81310][#81310] -- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. [#81266][#81266] -- Removed the deprecated `GRANT` privilege. [#81310][#81310] -- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. [#83134][#83134] -- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. [#82560][#82560] -- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link {{ page.version.version }}/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. [#76834][#76834] + - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. +- If no `nullif` option is specified while using [`IMPORT CSV`]({% link {{ page.version.version }}/import.md %}), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. +- [`COPY FROM`]({% link {{ page.version.version }}/copy.md %}) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. +- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link {{ page.version.version }}/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. +- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. +- Removed the deprecated `GRANT` privilege. +- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. +- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. +- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link {{ page.version.version }}/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. diff --git a/src/current/_includes/v24.3/cdc/avro-udt-composite.md b/src/current/_includes/v24.3/cdc/avro-udt-composite.md index 7a34fbd3253..da8b7b30a3e 100644 --- a/src/current/_includes/v24.3/cdc/avro-udt-composite.md +++ b/src/current/_includes/v24.3/cdc/avro-udt-composite.md @@ -1 +1 @@ -A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). [#102903](https://github.com/cockroachdb/cockroach/issues/102903) \ No newline at end of file +A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). diff --git a/src/current/_includes/v24.3/cdc/csv-udt-composite.md b/src/current/_includes/v24.3/cdc/csv-udt-composite.md index 834bddd8366..fc4597e8e98 100644 --- a/src/current/_includes/v24.3/cdc/csv-udt-composite.md +++ b/src/current/_includes/v24.3/cdc/csv-udt-composite.md @@ -1 +1 @@ -A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). [#102905](https://github.com/cockroachdb/cockroach/issues/102905) \ No newline at end of file +A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). diff --git a/src/current/_includes/v24.3/faq/what-is-crdb.md b/src/current/_includes/v24.3/faq/what-is-crdb.md index 28857ed61fa..14e9080a4f0 100644 --- a/src/current/_includes/v24.3/faq/what-is-crdb.md +++ b/src/current/_includes/v24.3/faq/what-is-crdb.md @@ -1,7 +1,7 @@ CockroachDB is a [distributed SQL](https://www.cockroachlabs.com/blog/what-is-distributed-sql/) database built on a transactional and strongly-consistent key-value store. It **scales** horizontally; **survives** disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention; supports **strongly-consistent** ACID transactions; and provides a familiar **SQL** API for structuring, manipulating, and querying data. -CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies, and the [source code](https://github.com/cockroachdb/cockroach) is freely available. +CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies. {{site.data.alerts.callout_success}} For a deeper dive into CockroachDB's capabilities and how it fits into the database landscape, take the free [**Intro to Distributed SQL and CockroachDB**](https://university.cockroachlabs.com/courses/course-v1:crl+intro-to-distributed-sql-and-cockroachdb+self-paced/about) course on Cockroach University. -{{site.data.alerts.end}} \ No newline at end of file +{{site.data.alerts.end}} diff --git a/src/current/_includes/v24.3/finalization-required/119894.md b/src/current/_includes/v24.3/finalization-required/119894.md index f2b393c3c0e..c65c82b83d5 100644 --- a/src/current/_includes/v24.3/finalization-required/119894.md +++ b/src/current/_includes/v24.3/finalization-required/119894.md @@ -1 +1 @@ -[Splits](https://cockroachlabs.com/docs/{{ include.version }}/architecture/distribution-layer#range-splits) no longer hold [latches](https://cockroachlabs.com/docs/architecture/distribution-layer.#latch-manager) for time proportional to the range size while computing [MVCC](https://cockroachlabs.com/docs/{{ include.version }}/architecture/storage-layer#mvcc) statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. [#119894](https://github.com/cockroachdb/cockroach/pull/119894) +[Splits](https://cockroachlabs.com/docs/{{ include.version }}/architecture/distribution-layer#range-splits) no longer hold [latches](https://cockroachlabs.com/docs/architecture/distribution-layer.#latch-manager) for time proportional to the range size while computing [MVCC](https://cockroachlabs.com/docs/{{ include.version }}/architecture/storage-layer#mvcc) statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. diff --git a/src/current/_includes/v24.3/known-limitations/alter-changefeed-cdc-queries.md b/src/current/_includes/v24.3/known-limitations/alter-changefeed-cdc-queries.md index 56dd7eeaacd..fbd2a285c6e 100644 --- a/src/current/_includes/v24.3/known-limitations/alter-changefeed-cdc-queries.md +++ b/src/current/_includes/v24.3/known-limitations/alter-changefeed-cdc-queries.md @@ -1 +1 @@ -{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. [#83033](https://github.com/cockroachdb/cockroach/issues/83033) \ No newline at end of file +{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. diff --git a/src/current/_includes/v24.3/known-limitations/alter-changefeed-limitations.md b/src/current/_includes/v24.3/known-limitations/alter-changefeed-limitations.md index a183f2964f4..d1cb7303a99 100644 --- a/src/current/_includes/v24.3/known-limitations/alter-changefeed-limitations.md +++ b/src/current/_includes/v24.3/known-limitations/alter-changefeed-limitations.md @@ -1,8 +1,8 @@ -- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) statement. [#77171](https://github.com/cockroachdb/cockroach/issues/77171) +- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) statement. - CockroachDB does not keep track of the [`initial_scan`]({% link {{ page.version.version }}/create-changefeed.md %}#initial-scan) option applied to tables when it is set to `yes` or `only`. For example: ~~~ sql ALTER CHANGEFEED {job_ID} ADD table WITH initial_scan = 'yes'; ~~~ - This will trigger an initial scan of the table and the changefeed will track `table`. The changefeed will **not** track `initial_scan` specified as an option, so it will not display in the output or after a `SHOW CHANGEFEED JOB` statement. \ No newline at end of file + This will trigger an initial scan of the table and the changefeed will track `table`. The changefeed will **not** track `initial_scan` specified as an option, so it will not display in the output or after a `SHOW CHANGEFEED JOB` statement. diff --git a/src/current/_includes/v24.3/known-limitations/alter-view-limitations.md b/src/current/_includes/v24.3/known-limitations/alter-view-limitations.md index 642bed6ce08..4cfdf9b8a1a 100644 --- a/src/current/_includes/v24.3/known-limitations/alter-view-limitations.md +++ b/src/current/_includes/v24.3/known-limitations/alter-view-limitations.md @@ -1,4 +1,4 @@ `ALTER VIEW` does not currently support: - Changing the [`SELECT`]({% link {{ page.version.version }}/select-clause.md %}) statement executed by a view. Instead, you must drop the existing view and create a new view. -- Renaming a view that other views depend on. This feature may be added in the future. [#10083](https://github.com/cockroachdb/cockroach/issues/10083) \ No newline at end of file +- Renaming a view that other views depend on. This feature may be added in the future. diff --git a/src/current/_includes/v24.3/known-limitations/aost-limitations.md b/src/current/_includes/v24.3/known-limitations/aost-limitations.md index 811c884d08d..c0d92fff59b 100644 --- a/src/current/_includes/v24.3/known-limitations/aost-limitations.md +++ b/src/current/_includes/v24.3/known-limitations/aost-limitations.md @@ -1 +1 @@ -CockroachDB does not support placeholders in {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %}. The time value must be a constant value embedded in the SQL string. [#30955](https://github.com/cockroachdb/cockroach/issues/30955) \ No newline at end of file +CockroachDB does not support placeholders in {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %}. The time value must be a constant value embedded in the SQL string. diff --git a/src/current/_includes/v24.3/known-limitations/cannot-refresh-materialized-views-inside-transactions.md b/src/current/_includes/v24.3/known-limitations/cannot-refresh-materialized-views-inside-transactions.md index b0aaf728177..cd93d6ad8c8 100644 --- a/src/current/_includes/v24.3/known-limitations/cannot-refresh-materialized-views-inside-transactions.md +++ b/src/current/_includes/v24.3/known-limitations/cannot-refresh-materialized-views-inside-transactions.md @@ -23,5 +23,3 @@ ERROR: cannot refresh view in an explicit transaction SQLSTATE: 25000 ~~~ - - [#66008](https://github.com/cockroachdb/cockroach/issues/66008) diff --git a/src/current/_includes/v24.3/known-limitations/cdc-queries-column-families.md b/src/current/_includes/v24.3/known-limitations/cdc-queries-column-families.md index 505a8c9700e..ea64b9821ea 100644 --- a/src/current/_includes/v24.3/known-limitations/cdc-queries-column-families.md +++ b/src/current/_includes/v24.3/known-limitations/cdc-queries-column-families.md @@ -1 +1 @@ -Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. [#127761](https://github.com/cockroachdb/cockroach/issues/127761) \ No newline at end of file +Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. diff --git a/src/current/_includes/v24.3/known-limitations/cdc-queries.md b/src/current/_includes/v24.3/known-limitations/cdc-queries.md index 2839eba5eda..a19a4a9a9c4 100644 --- a/src/current/_includes/v24.3/known-limitations/cdc-queries.md +++ b/src/current/_includes/v24.3/known-limitations/cdc-queries.md @@ -3,5 +3,5 @@ - The following are not permitted in CDC queries: - [Volatile functions]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility). - Sub-select queries. - - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). [#98237](https://github.com/cockroachdb/cockroach/issues/98237) -- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. [#83835](https://github.com/cockroachdb/cockroach/issues/83835) + - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). +- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. diff --git a/src/current/_includes/v24.3/known-limitations/cdc.md b/src/current/_includes/v24.3/known-limitations/cdc.md index a473e94367c..9f691268aeb 100644 --- a/src/current/_includes/v24.3/known-limitations/cdc.md +++ b/src/current/_includes/v24.3/known-limitations/cdc.md @@ -1,8 +1,8 @@ -- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). [#73435](https://github.com/cockroachdb/cockroach/issues/73435) +- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). - {% include {{page.version.version}}/cdc/kafka-vpc-limitation.md %} -- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#insecure-tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. [#73431](https://github.com/cockroachdb/cockroach/issues/73431) -- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. [#73432](https://github.com/cockroachdb/cockroach/issues/73432) -- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. [#79452](https://github.com/cockroachdb/cockroach/issues/79452) +- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#insecure-tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. +- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. +- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. - {% include {{page.version.version}}/cdc/types-udt-composite-general.md %} The following limitations apply: - {% include {{page.version.version}}/cdc/avro-udt-composite.md %} - - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} \ No newline at end of file + - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} diff --git a/src/current/_includes/v24.3/known-limitations/changefeed-column-family-message.md b/src/current/_includes/v24.3/known-limitations/changefeed-column-family-message.md index 41744b9b4b4..785cabfebe1 100644 --- a/src/current/_includes/v24.3/known-limitations/changefeed-column-family-message.md +++ b/src/current/_includes/v24.3/known-limitations/changefeed-column-family-message.md @@ -1 +1 @@ -When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. [#127736](https://github.com/cockroachdb/cockroach/issues/127736) \ No newline at end of file +When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. diff --git a/src/current/_includes/v24.3/known-limitations/compression-level-kafka-config.md b/src/current/_includes/v24.3/known-limitations/compression-level-kafka-config.md index 0635319c5af..38f10dbe05d 100644 --- a/src/current/_includes/v24.3/known-limitations/compression-level-kafka-config.md +++ b/src/current/_includes/v24.3/known-limitations/compression-level-kafka-config.md @@ -1 +1 @@ -Changefeeds created in v24.3 of CockroachDB that emit to [Kafka]({% link {{ page.version.version }}/changefeed-sinks.md %}#kafka), or changefeeds created in earlier versions with the `changefeed.new_kafka_sink.enabled` cluster setting enabled, do not support negative compression level values for `GZIP` compression in the [`kafka_sink_config = {... "CompressionLevel" = ...}`]({% link {{ page.version.version }}/changefeed-sinks.md %}#compressionlevel) option field. [#136492](https://github.com/cockroachdb/cockroach/issues/136492) \ No newline at end of file +Changefeeds created in v24.3 of CockroachDB that emit to [Kafka]({% link {{ page.version.version }}/changefeed-sinks.md %}#kafka), or changefeeds created in earlier versions with the `changefeed.new_kafka_sink.enabled` cluster setting enabled, do not support negative compression level values for `GZIP` compression in the [`kafka_sink_config = {... "CompressionLevel" = ...}`]({% link {{ page.version.version }}/changefeed-sinks.md %}#compressionlevel) option field. diff --git a/src/current/_includes/v24.3/known-limitations/copy-syntax.md b/src/current/_includes/v24.3/known-limitations/copy-syntax.md index e64a075dcac..90d35df5754 100644 --- a/src/current/_includes/v24.3/known-limitations/copy-syntax.md +++ b/src/current/_includes/v24.3/known-limitations/copy-syntax.md @@ -1,5 +1,5 @@ CockroachDB does not yet support the following `COPY` syntax: - - `COPY ... WITH FREEZE`. [#85573](https://github.com/cockroachdb/cockroach/issues/85573) - - `COPY ... WITH QUOTE`. [#85574](https://github.com/cockroachdb/cockroach/issues/85574) - - `COPY ... FROM ... WHERE `. [#54580](https://github.com/cockroachdb/cockroach/issues/54580) + - `COPY ... WITH FREEZE`. + - `COPY ... WITH QUOTE`. + - `COPY ... FROM ... WHERE `. diff --git a/src/current/_includes/v24.3/known-limitations/create-statistics-aost-limitation.md b/src/current/_includes/v24.3/known-limitations/create-statistics-aost-limitation.md index 09f86f51c48..7a2a39034de 100644 --- a/src/current/_includes/v24.3/known-limitations/create-statistics-aost-limitation.md +++ b/src/current/_includes/v24.3/known-limitations/create-statistics-aost-limitation.md @@ -1 +1 @@ -The `ANALYZE` alias {% if page.name != "create-statistics.md" %}of [`CREATE STATISTICS`]({% link {{ page.version.version }}/create-statistics.md %}){% endif %} does not support specifying an {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %} timestamp. `ANALYZE` statements use `AS OF SYSTEM TIME '-0.001ms'` automatically. For more control over the statistics interval, use the `CREATE STATISTICS` syntax instead. [#96430](https://github.com/cockroachdb/cockroach/issues/96430) \ No newline at end of file +The `ANALYZE` alias {% if page.name != "create-statistics.md" %}of [`CREATE STATISTICS`]({% link {{ page.version.version }}/create-statistics.md %}){% endif %} does not support specifying an {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %} timestamp. `ANALYZE` statements use `AS OF SYSTEM TIME '-0.001ms'` automatically. For more control over the statistics interval, use the `CREATE STATISTICS` syntax instead. diff --git a/src/current/_includes/v24.3/known-limitations/drop-column-partial-index.md b/src/current/_includes/v24.3/known-limitations/drop-column-partial-index.md index 9fd1811cc43..59d1e0e09b1 100644 --- a/src/current/_includes/v24.3/known-limitations/drop-column-partial-index.md +++ b/src/current/_includes/v24.3/known-limitations/drop-column-partial-index.md @@ -1 +1 @@ -CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}). [#97813](https://github.com/cockroachdb/cockroach/issues/97813). \ No newline at end of file +CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}).. diff --git a/src/current/_includes/v24.3/known-limitations/drop-owned-by-limitations.md b/src/current/_includes/v24.3/known-limitations/drop-owned-by-limitations.md index 95685f6adf1..563c3fc3746 100644 --- a/src/current/_includes/v24.3/known-limitations/drop-owned-by-limitations.md +++ b/src/current/_includes/v24.3/known-limitations/drop-owned-by-limitations.md @@ -10,4 +10,4 @@ The phrase "synthetic privileges" in the error message refers to [system-level privileges]({% link {{ page.version.version }}/security-reference/authorization.md %}#supported-privileges). - The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. [#88149](https://github.com/cockroachdb/cockroach/issues/88149) \ No newline at end of file + The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. diff --git a/src/current/_includes/v24.3/known-limitations/drop-trigger-limitations.md b/src/current/_includes/v24.3/known-limitations/drop-trigger-limitations.md index 90745f7e17a..e8cf291750c 100644 --- a/src/current/_includes/v24.3/known-limitations/drop-trigger-limitations.md +++ b/src/current/_includes/v24.3/known-limitations/drop-trigger-limitations.md @@ -1 +1 @@ -[`DROP TRIGGER`]({% link {{ page.version.version }}/drop-trigger.md %}) with `CASCADE` is not supported. [#128151](https://github.com/cockroachdb/cockroach/issues/128151) \ No newline at end of file +[`DROP TRIGGER`]({% link {{ page.version.version }}/drop-trigger.md %}) with `CASCADE` is not supported. diff --git a/src/current/_includes/v24.3/known-limitations/expression-index-limitations.md b/src/current/_includes/v24.3/known-limitations/expression-index-limitations.md index c0e94185948..76724af9432 100644 --- a/src/current/_includes/v24.3/known-limitations/expression-index-limitations.md +++ b/src/current/_includes/v24.3/known-limitations/expression-index-limitations.md @@ -1,6 +1,6 @@ - The expression cannot reference columns outside the index's table. - Functional expression output must be determined by the input arguments. For example, you can't use the [volatile function]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility) `now()` to create an index because its output depends on more than just the function arguments. -- CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). [#67900](https://github.com/cockroachdb/cockroach/issues/67900) +- CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). - CockroachDB does not support expressions as `ON CONFLICT` targets. This means that unique {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} cannot be selected as arbiters for [`INSERT .. ON CONFLICT`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause) statements. For example: {% include_cached copy-clipboard.html %} @@ -39,5 +39,3 @@ ^ HINT: try \h INSERT ~~~ - - [#67893](https://github.com/cockroachdb/cockroach/issues/67893) diff --git a/src/current/_includes/v24.3/known-limitations/forecasted-stats-limitations.md b/src/current/_includes/v24.3/known-limitations/forecasted-stats-limitations.md index c8753124a96..a7f8eb17ee2 100644 --- a/src/current/_includes/v24.3/known-limitations/forecasted-stats-limitations.md +++ b/src/current/_includes/v24.3/known-limitations/forecasted-stats-limitations.md @@ -6,4 +6,4 @@ Although [`SHOW STATISTICS WITH FORECAST`]({% link {{ page.version.version }}/show-statistics.md %}#display-forecasted-statistics) shows the settings taking effect immediately, they do not actually take effect until new statistics are collected (as can be verified with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %})). - As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. [#123852](https://github.com/cockroachdb/cockroach/issues/123852) \ No newline at end of file + As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. diff --git a/src/current/_includes/v24.3/known-limitations/full-text-search-unsupported.md b/src/current/_includes/v24.3/known-limitations/full-text-search-unsupported.md index 7b5a83f2cae..ef6ff023f86 100644 --- a/src/current/_includes/v24.3/known-limitations/full-text-search-unsupported.md +++ b/src/current/_includes/v24.3/known-limitations/full-text-search-unsupported.md @@ -10,5 +10,3 @@ - `tsquery <-> tsquery` comparisons. - `!! tsquery` comparisons. - `tsquery @> tsquery` and `tsquery <@ tsquery` comparisons. - -[#41288](https://github.com/cockroachdb/cockroach/issues/41288) \ No newline at end of file diff --git a/src/current/_includes/v24.3/known-limitations/generic-query-plan-limitations.md b/src/current/_includes/v24.3/known-limitations/generic-query-plan-limitations.md index e28e66d5f32..e588b799305 100644 --- a/src/current/_includes/v24.3/known-limitations/generic-query-plan-limitations.md +++ b/src/current/_includes/v24.3/known-limitations/generic-query-plan-limitations.md @@ -1,2 +1,2 @@ -- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. [#128916](https://github.com/cockroachdb/cockroach/issues/128916) -- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. [#128911](https://github.com/cockroachdb/cockroach/issues/128911) \ No newline at end of file +- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. +- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. diff --git a/src/current/_includes/v24.3/known-limitations/ldr-column-families.md b/src/current/_includes/v24.3/known-limitations/ldr-column-families.md index 2a7c3bbba52..67183137d9e 100644 --- a/src/current/_includes/v24.3/known-limitations/ldr-column-families.md +++ b/src/current/_includes/v24.3/known-limitations/ldr-column-families.md @@ -1 +1 @@ -Replicating tables cannot contain [column families]({% link {{ page.version.version }}/column-families.md %}). [#133562](https://github.com/cockroachdb/cockroach/issues/133562) \ No newline at end of file +Replicating tables cannot contain [column families]({% link {{ page.version.version }}/column-families.md %}). diff --git a/src/current/_includes/v24.3/known-limitations/ldr-composite-primary.md b/src/current/_includes/v24.3/known-limitations/ldr-composite-primary.md index ac897af35a7..6fdf7136e53 100644 --- a/src/current/_includes/v24.3/known-limitations/ldr-composite-primary.md +++ b/src/current/_includes/v24.3/known-limitations/ldr-composite-primary.md @@ -1 +1 @@ -The [primary key]({% link {{ page.version.version }}/primary-key.md %}) in replicating tables cannot contain composite types. [#133572](https://github.com/cockroachdb/cockroach/issues/133572) \ No newline at end of file +The [primary key]({% link {{ page.version.version }}/primary-key.md %}) in replicating tables cannot contain composite types. diff --git a/src/current/_includes/v24.3/known-limitations/ldr-indexes.md b/src/current/_includes/v24.3/known-limitations/ldr-indexes.md index 0bf7f60c2d4..3d0f52e9ad7 100644 --- a/src/current/_includes/v24.3/known-limitations/ldr-indexes.md +++ b/src/current/_includes/v24.3/known-limitations/ldr-indexes.md @@ -1 +1 @@ -Replicating tables cannot contain an [index]({% link {{ page.version.version }}/indexes.md %}) that requires expression evaluation before insertion. [#133560](https://github.com/cockroachdb/cockroach/issues/133560) \ No newline at end of file +Replicating tables cannot contain an [index]({% link {{ page.version.version }}/indexes.md %}) that requires expression evaluation before insertion. diff --git a/src/current/_includes/v24.3/known-limitations/ldr-sequences.md b/src/current/_includes/v24.3/known-limitations/ldr-sequences.md index 4e39f3630e3..069a693b7a0 100644 --- a/src/current/_includes/v24.3/known-limitations/ldr-sequences.md +++ b/src/current/_includes/v24.3/known-limitations/ldr-sequences.md @@ -1 +1 @@ -Replicating table cannot reference [sequences]({% link {{ page.version.version }}/create-sequence.md %}). [#132303](https://github.com/cockroachdb/cockroach/issues/132303) \ No newline at end of file +Replicating table cannot reference [sequences]({% link {{ page.version.version }}/create-sequence.md %}). diff --git a/src/current/_includes/v24.3/known-limitations/ldr-triggers.md b/src/current/_includes/v24.3/known-limitations/ldr-triggers.md index 55f8e885b97..9fc2b36777e 100644 --- a/src/current/_includes/v24.3/known-limitations/ldr-triggers.md +++ b/src/current/_includes/v24.3/known-limitations/ldr-triggers.md @@ -1 +1 @@ -Replicating tables cannot reference triggers. [#132301](https://github.com/cockroachdb/cockroach/issues/132301) \ No newline at end of file +Replicating tables cannot reference triggers. diff --git a/src/current/_includes/v24.3/known-limitations/ldr-udfs.md b/src/current/_includes/v24.3/known-limitations/ldr-udfs.md index fb642f14751..354a9e8243e 100644 --- a/src/current/_includes/v24.3/known-limitations/ldr-udfs.md +++ b/src/current/_includes/v24.3/known-limitations/ldr-udfs.md @@ -1 +1 @@ -Replicating tables cannot reference [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). [#132302](https://github.com/cockroachdb/cockroach/issues/132302) \ No newline at end of file +Replicating tables cannot reference [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). diff --git a/src/current/_includes/v24.3/known-limitations/locality-optimized-search-virtual-computed-columns.md b/src/current/_includes/v24.3/known-limitations/locality-optimized-search-virtual-computed-columns.md index d6acf418aa8..7a7392aab0d 100644 --- a/src/current/_includes/v24.3/known-limitations/locality-optimized-search-virtual-computed-columns.md +++ b/src/current/_includes/v24.3/known-limitations/locality-optimized-search-virtual-computed-columns.md @@ -1 +1 @@ -- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). [#68129](https://github.com/cockroachdb/cockroach/issues/68129) +- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). diff --git a/src/current/_includes/v24.3/known-limitations/materialized-views-no-stats.md b/src/current/_includes/v24.3/known-limitations/materialized-views-no-stats.md index 02f2bd787c4..a468db2895d 100644 --- a/src/current/_includes/v24.3/known-limitations/materialized-views-no-stats.md +++ b/src/current/_includes/v24.3/known-limitations/materialized-views-no-stats.md @@ -1 +1 @@ -- The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views. [#78181](https://github.com/cockroachdb/cockroach/issues/78181). +- The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views.. diff --git a/src/current/_includes/v24.3/known-limitations/multiple-arbiter-indexes.md b/src/current/_includes/v24.3/known-limitations/multiple-arbiter-indexes.md index c9861623314..b13890a2ee9 100644 --- a/src/current/_includes/v24.3/known-limitations/multiple-arbiter-indexes.md +++ b/src/current/_includes/v24.3/known-limitations/multiple-arbiter-indexes.md @@ -1 +1 @@ -CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. [#53170](https://github.com/cockroachdb/cockroach/issues/53170) \ No newline at end of file +CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. diff --git a/src/current/_includes/v24.3/known-limitations/plpgsql-limitations.md b/src/current/_includes/v24.3/known-limitations/plpgsql-limitations.md index 83e47a0bdaa..f25852bdbee 100644 --- a/src/current/_includes/v24.3/known-limitations/plpgsql-limitations.md +++ b/src/current/_includes/v24.3/known-limitations/plpgsql-limitations.md @@ -1,26 +1,26 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. [#121605](https://github.com/cockroachdb/cockroach/issues/121605) -- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. [#114676](https://github.com/cockroachdb/cockroach/issues/114676) -- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). [#114701](https://github.com/cockroachdb/cockroach/issues/114701) +- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. +- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. +- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). - The following statements are not supported: - - `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops. [#105246](https://github.com/cockroachdb/cockroach/issues/105246) - - `RETURN NEXT` and `RETURN QUERY`. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) - - `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `CASE`. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). [#111446](https://github.com/cockroachdb/cockroach/issues/111446) -- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). [#106237](https://github.com/cockroachdb/cockroach/issues/106237) -- `RAISE` statements message the client directly, and do not produce log output. [#117750](https://github.com/cockroachdb/cockroach/issues/117750) -- `ASSERT` debugging checks are not supported. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- `RECORD` parameters and variables are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). [#105713](https://github.com/cockroachdb/cockroach/issues/105713) -- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. [#117508](https://github.com/cockroachdb/cockroach/issues/117508) -- Syntax for accessing members of composite types without parentheses is not supported. [#114687](https://github.com/cockroachdb/cockroach/issues/114687) -- `NOT NULL` variable declarations are not supported. [#105243](https://github.com/cockroachdb/cockroach/issues/105243) -- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. [#111479](https://github.com/cockroachdb/cockroach/issues/111479) -- Cursors in PL/pgSQL cannot be declared with arguments. [#117746](https://github.com/cockroachdb/cockroach/issues/117746) -- `OPEN FOR EXECUTE` is not supported for opening cursors. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- The `print_strict_params` option is not supported in PL/pgSQL. [#123671](https://github.com/cockroachdb/cockroach/issues/123671) -- The `FOUND` local variable, which checks whether a statement affected any rows, is not supported in PL/pgSQL. [#122306](https://github.com/cockroachdb/cockroach/issues/122306) -- By default, when a PL/pgSQL variable conflicts with a column name, CockroachDB resolves the ambiguity by treating it as a column reference rather than a variable reference. This behavior differs from PostgreSQL, where an ambiguous column error is reported, and it is possible to change the `plpgsql.variable_conflict` setting in order to prefer either columns or variables. [#115680](https://github.com/cockroachdb/cockroach/issues/115680) -- It is not possible to define a `RECORD`-returning PL/pgSQL function that returns different-typed expressions from different `RETURN` statements. CockroachDB requires a consistent return type for `RECORD`-returning functions. [#115384](https://github.com/cockroachdb/cockroach/issues/115384) -- Variables cannot be declared with an associated collation using the `COLLATE` keyword. [#105245](https://github.com/cockroachdb/cockroach/issues/105245) -- Variables cannot be accessed using the `label.var_name` pattern. [#122322](https://github.com/cockroachdb/cockroach/issues/122322) \ No newline at end of file + - `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops. + - `RETURN NEXT` and `RETURN QUERY`. + - `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `CASE`. +- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). +- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). +- `RAISE` statements message the client directly, and do not produce log output. +- `ASSERT` debugging checks are not supported. +- `RECORD` parameters and variables are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). +- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. +- Syntax for accessing members of composite types without parentheses is not supported. +- `NOT NULL` variable declarations are not supported. +- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. +- Cursors in PL/pgSQL cannot be declared with arguments. +- `OPEN FOR EXECUTE` is not supported for opening cursors. +- The `print_strict_params` option is not supported in PL/pgSQL. +- The `FOUND` local variable, which checks whether a statement affected any rows, is not supported in PL/pgSQL. +- By default, when a PL/pgSQL variable conflicts with a column name, CockroachDB resolves the ambiguity by treating it as a column reference rather than a variable reference. This behavior differs from PostgreSQL, where an ambiguous column error is reported, and it is possible to change the `plpgsql.variable_conflict` setting in order to prefer either columns or variables. +- It is not possible to define a `RECORD`-returning PL/pgSQL function that returns different-typed expressions from different `RETURN` statements. CockroachDB requires a consistent return type for `RECORD`-returning functions. +- Variables cannot be declared with an associated collation using the `COLLATE` keyword. +- Variables cannot be accessed using the `label.var_name` pattern. diff --git a/src/current/_includes/v24.3/known-limitations/read-committed-limitations.md b/src/current/_includes/v24.3/known-limitations/read-committed-limitations.md index 63f83b15dd8..16ec7b4d9a2 100644 --- a/src/current/_includes/v24.3/known-limitations/read-committed-limitations.md +++ b/src/current/_includes/v24.3/known-limitations/read-committed-limitations.md @@ -1,6 +1,6 @@ -- Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions when the [`autocommit_before_ddl` session setting]({% link {{page.version.version}}/set-vars.md %}#autocommit-before-ddl) is set to `off`, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. [#114778](https://github.com/cockroachdb/cockroach/issues/114778) -- Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. [#112488](https://github.com/cockroachdb/cockroach/issues/112488) +- Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions when the [`autocommit_before_ddl` session setting]({% link {{page.version.version}}/set-vars.md %}#autocommit-before-ddl) is set to `off`, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. +- Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. - Because locks acquired by [foreign key]({% link {{ page.version.version }}/foreign-key.md %}) checks, [`SELECT FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}), and [`SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) are fully replicated under `READ COMMITTED` isolation, some queries experience a delay for Raft replication. - [Foreign key]({% link {{ page.version.version }}/foreign-key.md %}) checks are not performed in parallel under `READ COMMITTED` isolation. - [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements are less optimized under `READ COMMITTED` isolation than under `SERIALIZABLE` isolation. Under `READ COMMITTED` isolation, `SELECT FOR UPDATE` and `SELECT FOR SHARE` usually perform an extra lookup join for every locked table when compared to the same queries under `SERIALIZABLE`. In addition, some optimization steps (such as de-correlation of correlated [subqueries]({% link {{ page.version.version }}/subqueries.md %})) are not currently performed on these queries. -- Regardless of isolation level, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements in CockroachDB do not prevent insertion of new rows matching the search condition (i.e., [phantom reads]({% link {{ page.version.version }}/read-committed.md %}#non-repeatable-reads-and-phantom-reads)). This matches PostgreSQL behavior at all isolation levels. [#120673](https://github.com/cockroachdb/cockroach/issues/120673) \ No newline at end of file +- Regardless of isolation level, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements in CockroachDB do not prevent insertion of new rows matching the search condition (i.e., [phantom reads]({% link {{ page.version.version }}/read-committed.md %}#non-repeatable-reads-and-phantom-reads)). This matches PostgreSQL behavior at all isolation levels. diff --git a/src/current/_includes/v24.3/known-limitations/restore-multiregion-match.md b/src/current/_includes/v24.3/known-limitations/restore-multiregion-match.md index ab2f1029ecd..6cf3a2ccefe 100644 --- a/src/current/_includes/v24.3/known-limitations/restore-multiregion-match.md +++ b/src/current/_includes/v24.3/known-limitations/restore-multiregion-match.md @@ -46,5 +46,3 @@ ~~~ sql ALTER DATABASE destination_database SET PRIMARY REGION "us-east1"; ~~~ - - [#71071](https://github.com/cockroachdb/cockroach/issues/71071) \ No newline at end of file diff --git a/src/current/_includes/v24.3/known-limitations/restore-tables-non-multi-reg.md b/src/current/_includes/v24.3/known-limitations/restore-tables-non-multi-reg.md index 5390f2d09ee..a6558d30c7d 100644 --- a/src/current/_includes/v24.3/known-limitations/restore-tables-non-multi-reg.md +++ b/src/current/_includes/v24.3/known-limitations/restore-tables-non-multi-reg.md @@ -1 +1 @@ -Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. [#71502](https://github.com/cockroachdb/cockroach/issues/71502) +Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. diff --git a/src/current/_includes/v24.3/known-limitations/restore-udf.md b/src/current/_includes/v24.3/known-limitations/restore-udf.md index a4a4bc080fe..7d5670fbc9e 100644 --- a/src/current/_includes/v24.3/known-limitations/restore-udf.md +++ b/src/current/_includes/v24.3/known-limitations/restore-udf.md @@ -1 +1 @@ -`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. [#118195](https://github.com/cockroachdb/cockroach/issues/118195) \ No newline at end of file +`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. diff --git a/src/current/_includes/v24.3/known-limitations/routine-limitations.md b/src/current/_includes/v24.3/known-limitations/routine-limitations.md index 4718c6c7abf..64c767950b6 100644 --- a/src/current/_includes/v24.3/known-limitations/routine-limitations.md +++ b/src/current/_includes/v24.3/known-limitations/routine-limitations.md @@ -1,10 +1,10 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. [#122264](https://github.com/cockroachdb/cockroach/issues/122264) -- Routines cannot be created if they reference temporary tables. [#121375](https://github.com/cockroachdb/cockroach/issues/121375) -- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. [#121251](https://github.com/cockroachdb/cockroach/issues/121251) -- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. [#121247](https://github.com/cockroachdb/cockroach/issues/121247) -- Routines cannot be created with an `OUT` parameter of type `RECORD`. [#123448](https://github.com/cockroachdb/cockroach/issues/123448) -- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or stored procedures. [#110080](https://github.com/cockroachdb/cockroach/issues/110080) -- Polymorphic types cannot be cast to other types (e.g., `TEXT`) within routine parameters. [#123536](https://github.com/cockroachdb/cockroach/issues/123536) -- Routine parameters and return types cannot be declared using the `ANYENUM` polymorphic type, which is able to match any [`ENUM`]({% link {{ page.version.version }}/enum.md %}) type. [123048](https://github.com/cockroachdb/cockroach/issues/123048) \ No newline at end of file +- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. +- Routines cannot be created if they reference temporary tables. +- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. +- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. +- Routines cannot be created with an `OUT` parameter of type `RECORD`. +- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or stored procedures. +- Polymorphic types cannot be cast to other types (e.g., `TEXT`) within routine parameters. +- Routine parameters and return types cannot be declared using the `ANYENUM` polymorphic type, which is able to match any [`ENUM`]({% link {{ page.version.version }}/enum.md %}) type. diff --git a/src/current/_includes/v24.3/known-limitations/row-level-ttl-limitations.md b/src/current/_includes/v24.3/known-limitations/row-level-ttl-limitations.md index c386ba576d7..352e5034bbd 100644 --- a/src/current/_includes/v24.3/known-limitations/row-level-ttl-limitations.md +++ b/src/current/_includes/v24.3/known-limitations/row-level-ttl-limitations.md @@ -1,5 +1,5 @@ - Any queries you run against tables with Row-Level TTL enabled (or against tables that have [foreign keys]({% link {{page.version.version}}/foreign-key.md %}) that reference TTL-enabled tables) do not filter out expired rows from the result set (this includes [`UPDATE`s]({% link {{ page.version.version }}/update.md %}) and [`DELETE`s]({% link {{ page.version.version }}/delete.md %})). This feature may be added in a future release. For now, follow the instructions in [Filter out expired rows from a selection query]({% link {{ page.version.version }}/row-level-ttl.md %}#filter-out-expired-rows-from-a-selection-query). -- Tables with Row-Level TTL can be referenced by [foreign keys]({% link {{page.version.version}}/foreign-key.md %}). TTL deletes are issued as regular [`DELETE`]({% link {{ page.version.version }}/delete.md %}) statements, so inbound foreign keys apply. If an inbound foreign key uses `ON DELETE RESTRICT` and referencing rows exist, the TTL job fails with a foreign key violation. [#101372](https://github.com/cockroachdb/cockroach/issues/101372) +- Tables with Row-Level TTL can be referenced by [foreign keys]({% link {{page.version.version}}/foreign-key.md %}). TTL deletes are issued as regular [`DELETE`]({% link {{ page.version.version }}/delete.md %}) statements, so inbound foreign keys apply. If an inbound foreign key uses `ON DELETE RESTRICT` and referencing rows exist, the TTL job fails with a foreign key violation. - Enabling Row-Level TTL on a table with multiple [secondary indexes]({% link {{ page.version.version }}/indexes.md %}) can have negative performance impacts on a cluster, including increased [latency]({% link {{ page.version.version }}/common-issues-to-monitor.md %}#service-latency) and [contention]({% link {{ page.version.version }}/performance-best-practices-overview.md %}#transaction-contention). This is particularly true for large tables with terabytes of data and billions of rows that are split up into multiple ranges across separate nodes. - Increased latency may occur because secondary indexes aren't necessarily stored on the same underlying [ranges]({% link {{ page.version.version }}/architecture/overview.md %}#architecture-range) as a table's [primary indexes]({% link {{ page.version.version }}/indexes.md %}). Further, the secondary indexes' ranges may have [leaseholders]({% link {{ page.version.version }}/architecture/overview.md %}#architecture-leaseholder) located on different nodes than the primary index. - Increased contention may occur because [intents]({% link {{ page.version.version }}/architecture/transaction-layer.md %}#write-intents) must be written as part of performing the deletions. diff --git a/src/current/_includes/v24.3/known-limitations/select-for-update-limitations.md b/src/current/_includes/v24.3/known-limitations/select-for-update-limitations.md index 73aaf9fdeb6..3b6f7c9459d 100644 --- a/src/current/_includes/v24.3/known-limitations/select-for-update-limitations.md +++ b/src/current/_includes/v24.3/known-limitations/select-for-update-limitations.md @@ -1,6 +1,6 @@ -- `SKIP LOCKED` cannot be used for tables with multiple [column families]({% link {{ page.version.version }}/column-families.md %}). [#160961](https://github.com/cockroachdb/cockroach/issues/160961) +- `SKIP LOCKED` cannot be used for tables with multiple [column families]({% link {{ page.version.version }}/column-families.md %}). - By default under `SERIALIZABLE` isolation, locks acquired using `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` are implemented as fast, in-memory [unreplicated locks](architecture/transaction-layer.html#unreplicated-locks). If a [lease transfer]({% link {{ page.version.version }}/architecture/replication-layer.md %}#epoch-based-leases-table-data) or [range split/merge]({% link {{ page.version.version }}/architecture/distribution-layer.md %}#range-merges) occurs on a range held by an unreplicated lock, the lock is dropped. The following behaviors can occur: - The desired ordering of concurrent accesses to one or more rows of a table expressed by your use of `SELECT ... FOR UPDATE` may not be preserved (that is, a transaction _B_ against some table _T_ that was supposed to wait behind another transaction _A_ operating on _T_ may not wait for transaction _A_). - The transaction that acquired the (now dropped) unreplicated lock may fail to commit, leading to [transaction retry errors with code `40001`]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}) and the [`restart transaction` error message]({% link {{ page.version.version }}/common-errors.md %}#restart-transaction). - When running under `SERIALIZABLE` isolation, `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` locks should be thought of as best-effort, and should not be relied upon for correctness. Note that [serialization]({% link {{ page.version.version }}/demo-serializable.md %}) is preserved despite this limitation. This limitation is fixed when the `enable_durable_locking_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}#enable-durable-locking-for-serializable) is set to `true`. This limitation does **not** apply to [`READ COMMITTED`]({% link {{ page.version.version }}/read-committed.md %}) transactions. \ No newline at end of file + When running under `SERIALIZABLE` isolation, `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` locks should be thought of as best-effort, and should not be relied upon for correctness. Note that [serialization]({% link {{ page.version.version }}/demo-serializable.md %}) is preserved despite this limitation. This limitation is fixed when the `enable_durable_locking_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}#enable-durable-locking-for-serializable) is set to `true`. This limitation does **not** apply to [`READ COMMITTED`]({% link {{ page.version.version }}/read-committed.md %}) transactions. diff --git a/src/current/_includes/v24.3/known-limitations/set-transaction-no-rollback.md b/src/current/_includes/v24.3/known-limitations/set-transaction-no-rollback.md index 414cbac6282..4ab3d72a6ae 100644 --- a/src/current/_includes/v24.3/known-limitations/set-transaction-no-rollback.md +++ b/src/current/_includes/v24.3/known-limitations/set-transaction-no-rollback.md @@ -13,5 +13,3 @@ timezone ------------ 3 ~~~ - -[#69396](https://github.com/cockroachdb/cockroach/issues/69396) diff --git a/src/current/_includes/v24.3/known-limitations/show-backup-symlink.md b/src/current/_includes/v24.3/known-limitations/show-backup-symlink.md index 38ba86fb28f..f47d7f3887b 100644 --- a/src/current/_includes/v24.3/known-limitations/show-backup-symlink.md +++ b/src/current/_includes/v24.3/known-limitations/show-backup-symlink.md @@ -1 +1 @@ -[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. [#70260](https://github.com/cockroachdb/cockroach/issues/70260) \ No newline at end of file +[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. diff --git a/src/current/_includes/v24.3/known-limitations/sql-cursors.md b/src/current/_includes/v24.3/known-limitations/sql-cursors.md index 4c047aa9603..1f826254d12 100644 --- a/src/current/_includes/v24.3/known-limitations/sql-cursors.md +++ b/src/current/_includes/v24.3/known-limitations/sql-cursors.md @@ -1,9 +1,9 @@ CockroachDB implements SQL {% if page.name == "known-limitations.md" %} [cursor]({% link {{ page.version.version }}/cursors.md %}) {% else %} cursor {% endif %} support with the following limitations: -- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. [#77099](https://github.com/cockroachdb/cockroach/issues/77099) -- `WITH HOLD`, which allows keeping a cursor open for longer than a transaction by writing its results into a buffer, is accepted as valid syntax within a single transaction but is not supported. It acts as a no-op and does not actually perform the function of `WITH HOLD`, which is to make the cursor live outside its parent transaction. Instead, if you are using `WITH HOLD`, you will be forced to close that cursor within the transaction it was created in. [#77101](https://github.com/cockroachdb/cockroach/issues/77101) +- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. +- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. +- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. +- `WITH HOLD`, which allows keeping a cursor open for longer than a transaction by writing its results into a buffer, is accepted as valid syntax within a single transaction but is not supported. It acts as a no-op and does not actually perform the function of `WITH HOLD`, which is to make the cursor live outside its parent transaction. Instead, if you are using `WITH HOLD`, you will be forced to close that cursor within the transaction it was created in. - This syntax is accepted (but does not have any effect): {% include_cached copy-clipboard.html %} ~~~ sql @@ -19,6 +19,6 @@ CockroachDB implements SQL {% if page.name == "known-limitations.md" %} [cursor] DECLARE test_cur CURSOR WITH HOLD FOR SELECT * FROM foo ORDER BY bar; COMMIT; -- This will fail with an error because CLOSE test_cur was not called inside the transaction. ~~~ -- Scrollable cursor (also known as reverse `FETCH`) is not supported. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. [#77103](https://github.com/cockroachdb/cockroach/issues/77103) -- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. [#77104](https://github.com/cockroachdb/cockroach/issues/77104) +- Scrollable cursor (also known as reverse `FETCH`) is not supported. +- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. +- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. diff --git a/src/current/_includes/v24.3/known-limitations/srid-4326-limitations.md b/src/current/_includes/v24.3/known-limitations/srid-4326-limitations.md index b556a9fbecd..7cfda23749b 100644 --- a/src/current/_includes/v24.3/known-limitations/srid-4326-limitations.md +++ b/src/current/_includes/v24.3/known-limitations/srid-4326-limitations.md @@ -1 +1 @@ -Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. [#55903](https://github.com/cockroachdb/cockroach/issues/55903) \ No newline at end of file +Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. diff --git a/src/current/_includes/v24.3/known-limitations/stats-refresh-upgrade.md b/src/current/_includes/v24.3/known-limitations/stats-refresh-upgrade.md index 3d5a8d26325..c8239a02bcd 100644 --- a/src/current/_includes/v24.3/known-limitations/stats-refresh-upgrade.md +++ b/src/current/_includes/v24.3/known-limitations/stats-refresh-upgrade.md @@ -1 +1 @@ -- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). [#54816](https://github.com/cockroachdb/cockroach/issues/54816) +- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). diff --git a/src/current/_includes/v24.3/known-limitations/stored-proc-limitations.md b/src/current/_includes/v24.3/known-limitations/stored-proc-limitations.md index b2ba1b61562..5ca8442d306 100644 --- a/src/current/_includes/v24.3/known-limitations/stored-proc-limitations.md +++ b/src/current/_includes/v24.3/known-limitations/stored-proc-limitations.md @@ -1,3 +1,3 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- `COMMIT` and `ROLLBACK` statements are not supported within nested procedures. [#122266](https://github.com/cockroachdb/cockroach/issues/122266) \ No newline at end of file +- `COMMIT` and `ROLLBACK` statements are not supported within nested procedures. diff --git a/src/current/_includes/v24.3/known-limitations/trigger-limitations.md b/src/current/_includes/v24.3/known-limitations/trigger-limitations.md index 7373cd486e7..eaf6e6a493a 100644 --- a/src/current/_includes/v24.3/known-limitations/trigger-limitations.md +++ b/src/current/_includes/v24.3/known-limitations/trigger-limitations.md @@ -1,6 +1,6 @@ -- `CREATE OR REPLACE TRIGGER` is not supported. [#128422](https://github.com/cockroachdb/cockroach/issues/128422) -- Statement-level triggers are not supported. [#126362](https://github.com/cockroachdb/cockroach/issues/126362) -- `INSTEAD OF` triggers are not supported. [#126363](https://github.com/cockroachdb/cockroach/issues/126363) -- A [trigger function]({% link {{ page.version.version }}/triggers.md %}#trigger-function) that is used in an existing trigger cannot be replaced with `CREATE OR REPLACE` syntax. To use `CREATE OR REPLACE`, first [drop any triggers]({% link {{ page.version.version }}/drop-trigger.md %}) that are using the function. [#134555](https://github.com/cockroachdb/cockroach/issues/134555) -- Hidden columns are not visible to triggers. [#133331](https://github.com/cockroachdb/cockroach/issues/133331) -- {% include {{ page.version.version }}/known-limitations/drop-trigger-limitations.md %} \ No newline at end of file +- `CREATE OR REPLACE TRIGGER` is not supported. +- Statement-level triggers are not supported. +- `INSTEAD OF` triggers are not supported. +- A [trigger function]({% link {{ page.version.version }}/triggers.md %}#trigger-function) that is used in an existing trigger cannot be replaced with `CREATE OR REPLACE` syntax. To use `CREATE OR REPLACE`, first [drop any triggers]({% link {{ page.version.version }}/drop-trigger.md %}) that are using the function. +- Hidden columns are not visible to triggers. +- {% include {{ page.version.version }}/known-limitations/drop-trigger-limitations.md %} diff --git a/src/current/_includes/v24.3/known-limitations/trigram-unsupported-syntax.md b/src/current/_includes/v24.3/known-limitations/trigram-unsupported-syntax.md index 494730c7ae8..bb726ac4af9 100644 --- a/src/current/_includes/v24.3/known-limitations/trigram-unsupported-syntax.md +++ b/src/current/_includes/v24.3/known-limitations/trigram-unsupported-syntax.md @@ -5,5 +5,3 @@ - `<->`, `<<->`, `<->>`, `<<<->`, and `<->>>` comparisons. - Acceleration on [regex string matching]({% link {{ page.version.version }}/scalar-expressions.md %}#string-matching-using-posix-regular-expressions). - `%` comparisons, `show_trgm`, and trigram index creation on [collated strings]({% link {{ page.version.version }}/collate.md %}). - -[#41285](https://github.com/cockroachdb/cockroach/issues/41285) \ No newline at end of file diff --git a/src/current/_includes/v24.3/known-limitations/udf-limitations.md b/src/current/_includes/v24.3/known-limitations/udf-limitations.md index 57011914407..8ea5430f39a 100644 --- a/src/current/_includes/v24.3/known-limitations/udf-limitations.md +++ b/src/current/_includes/v24.3/known-limitations/udf-limitations.md @@ -1,10 +1,10 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. [#122945](https://github.com/cockroachdb/cockroach/issues/122945) +- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. - User-defined functions are not currently supported in: - - Expressions (column, index, constraint) in tables. [#87699](https://github.com/cockroachdb/cockroach/issues/87699) - - Views. [#87699](https://github.com/cockroachdb/cockroach/issues/87699) -- User-defined functions cannot call themselves recursively. [#93049](https://github.com/cockroachdb/cockroach/issues/93049) -- [Common table expressions]({% link {{ page.version.version }}/common-table-expressions.md %}) (CTE), recursive or non-recursive, are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}) (UDF). That is, you cannot use a `WITH` clause in the body of a UDF. [#92961](https://github.com/cockroachdb/cockroach/issues/92961) -- The `setval` function cannot be resolved when used inside UDF bodies. [#110860](https://github.com/cockroachdb/cockroach/issues/110860) -- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) in UDFs is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) \ No newline at end of file + - Expressions (column, index, constraint) in tables. + - Views. +- User-defined functions cannot call themselves recursively. +- [Common table expressions]({% link {{ page.version.version }}/common-table-expressions.md %}) (CTE), recursive or non-recursive, are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}) (UDF). That is, you cannot use a `WITH` clause in the body of a UDF. +- The `setval` function cannot be resolved when used inside UDF bodies. +- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) in UDFs is not supported. diff --git a/src/current/_includes/v24.3/known-limitations/vectorized-engine-limitations.md b/src/current/_includes/v24.3/known-limitations/vectorized-engine-limitations.md index daea59ebf88..84f991a0e63 100644 --- a/src/current/_includes/v24.3/known-limitations/vectorized-engine-limitations.md +++ b/src/current/_includes/v24.3/known-limitations/vectorized-engine-limitations.md @@ -1,2 +1,2 @@ -- The vectorized engine does not support queries containing a join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). [#38018](https://github.com/cockroachdb/cockroach/issues/38018) +- The vectorized engine does not support queries containing a join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). - The vectorized engine does not support [working with spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}). Queries with [geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) or [spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}) will revert to the row-oriented execution engine. diff --git a/src/current/_includes/v24.3/misc/tooling.md b/src/current/_includes/v24.3/misc/tooling.md index dcd24363435..ec553f1b383 100644 --- a/src/current/_includes/v24.3/misc/tooling.md +++ b/src/current/_includes/v24.3/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Example Apps]({% link {{ page.version.version }}/example-apps.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). diff --git a/src/current/_includes/v24.3/prod-deployment/decommission-pre-flight-checks.md b/src/current/_includes/v24.3/prod-deployment/decommission-pre-flight-checks.md index b267379384b..f7a613dff78 100644 --- a/src/current/_includes/v24.3/prod-deployment/decommission-pre-flight-checks.md +++ b/src/current/_includes/v24.3/prod-deployment/decommission-pre-flight-checks.md @@ -14,5 +14,5 @@ Failed running "node decommission" These checks can be skipped by [passing the flag `--checks=skip` to `cockroach node decommission`]({% link {{ page.version.version }}/cockroach-node.md %}#decommission-checks). {{site.data.alerts.callout_info}} -The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see [cockroachdb/cockroach#71757](https://github.com/cockroachdb/cockroach/issues/71757) +The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see {{site.data.alerts.end}} diff --git a/src/current/_includes/v24.3/sql/savepoints-and-high-priority-transactions.md b/src/current/_includes/v24.3/sql/savepoints-and-high-priority-transactions.md index c6de489e641..ce124bc3209 100644 --- a/src/current/_includes/v24.3/sql/savepoints-and-high-priority-transactions.md +++ b/src/current/_includes/v24.3/sql/savepoints-and-high-priority-transactions.md @@ -1 +1 @@ -[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. For more information, see GitHub issue [#46414](https://www.github.com/cockroachdb/cockroach/issues/46414). +[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. diff --git a/src/current/_includes/v24.3/sql/unsupported-postgres-features.md b/src/current/_includes/v24.3/sql/unsupported-postgres-features.md index a89650e38e9..a9a344b8096 100644 --- a/src/current/_includes/v24.3/sql/unsupported-postgres-features.md +++ b/src/current/_includes/v24.3/sql/unsupported-postgres-features.md @@ -1,10 +1,10 @@ ### `CREATE DOMAIN` -CockroachDB does not support `CREATE DOMAIN`. Tracking issue: [cockroachdb/cockroach#108659](https://github.com/cockroachdb/cockroach/issues/108659). +CockroachDB does not support `CREATE DOMAIN`. Tracking issue: . ### PostgreSQL range types -CockroachDB does not support PostgreSQL range types. Tracking issue: [cockroachdb/cockroach#128638](https://github.com/cockroachdb/cockroach/issues/128638). +CockroachDB does not support PostgreSQL range types. Tracking issue: . ### Other unsupported features diff --git a/src/current/_includes/v25.1/backward-incompatible/alpha.1.md b/src/current/_includes/v25.1/backward-incompatible/alpha.1.md index ef251b7cf5b..e0bd8f8eac7 100644 --- a/src/current/_includes/v25.1/backward-incompatible/alpha.1.md +++ b/src/current/_includes/v25.1/backward-incompatible/alpha.1.md @@ -1,15 +1,15 @@ -- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). [#81298][#81298] -- In the Cockroach CLI, [`BOOL` values](../v23.1/bool.html) are now formatted as `t` or `f` instead of `True` or `False`. [#81943][#81943] -- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node](../v23.1/node-shutdown.html) gracefully, send a `SIGTERM` signal to it. [#82988][#82988] -- Added a cluster version to allow the [Pebble storage engine](../v23.1/architecture/storage-layer.html#pebble) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree](../v23.1/architecture/storage-layer.html#log-structured-merge-trees)). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. [#84887][#84887] +- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). +- In the Cockroach CLI, [`BOOL` values](../v23.1/bool.html) are now formatted as `t` or `f` instead of `True` or `False`. +- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node](../v23.1/node-shutdown.html) gracefully, send a `SIGTERM` signal to it. +- Added a cluster version to allow the [Pebble storage engine](../v23.1/architecture/storage-layer.html#pebble) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree](../v23.1/architecture/storage-layer.html#log-structured-merge-trees)). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. - Using a single TCP port listener for both RPC (node-node) and SQL client connections is now deprecated. This capability **will be removed** in the next version of CockroachDB. Instead, make one of the following configuration changes to your CockroachDB deployment: - Preferred: keep port `26257` for SQL, and allocate a new port, e.g., `26357`, for node-node RPC connections. For example, you might configure a node with the flags `--listen-addr=:26357 --sql-addr=:26257`, where subsequent nodes seeking to join would then use the flag `--join=othernode:26357,othernode:26257`. This will become the default configuration in the next version of CockroachDB. When using this mode of operation, care should be taken to use a `--join` flag that includes both the previous and new port numbers for other nodes, so that no network partition occurs during the upgrade. - - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. [#85671][#85671] -- If no `nullif` option is specified while using [`IMPORT CSV`](../v23.1/import.html), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. [#84487][#84487] -- [`COPY FROM`](../v23.1/copy.html) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. [#85986][#85986] -- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link v25.1/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. [#81310][#81310] -- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. [#81266][#81266] -- Removed the deprecated `GRANT` privilege. [#81310][#81310] -- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. [#83134][#83134] -- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. [#82560][#82560] -- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link v25.1/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. [#76834][#76834] + - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. +- If no `nullif` option is specified while using [`IMPORT CSV`](../v23.1/import.html), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. +- [`COPY FROM`](../v23.1/copy.html) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. +- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link v25.1/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. +- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. +- Removed the deprecated `GRANT` privilege. +- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. +- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. +- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link v25.1/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. diff --git a/src/current/_includes/v25.1/cdc/avro-udt-composite.md b/src/current/_includes/v25.1/cdc/avro-udt-composite.md index 7a34fbd3253..da8b7b30a3e 100644 --- a/src/current/_includes/v25.1/cdc/avro-udt-composite.md +++ b/src/current/_includes/v25.1/cdc/avro-udt-composite.md @@ -1 +1 @@ -A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). [#102903](https://github.com/cockroachdb/cockroach/issues/102903) \ No newline at end of file +A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). diff --git a/src/current/_includes/v25.1/cdc/csv-udt-composite.md b/src/current/_includes/v25.1/cdc/csv-udt-composite.md index 834bddd8366..fc4597e8e98 100644 --- a/src/current/_includes/v25.1/cdc/csv-udt-composite.md +++ b/src/current/_includes/v25.1/cdc/csv-udt-composite.md @@ -1 +1 @@ -A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). [#102905](https://github.com/cockroachdb/cockroach/issues/102905) \ No newline at end of file +A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). diff --git a/src/current/_includes/v25.1/faq/what-is-crdb.md b/src/current/_includes/v25.1/faq/what-is-crdb.md index 28857ed61fa..14e9080a4f0 100644 --- a/src/current/_includes/v25.1/faq/what-is-crdb.md +++ b/src/current/_includes/v25.1/faq/what-is-crdb.md @@ -1,7 +1,7 @@ CockroachDB is a [distributed SQL](https://www.cockroachlabs.com/blog/what-is-distributed-sql/) database built on a transactional and strongly-consistent key-value store. It **scales** horizontally; **survives** disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention; supports **strongly-consistent** ACID transactions; and provides a familiar **SQL** API for structuring, manipulating, and querying data. -CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies, and the [source code](https://github.com/cockroachdb/cockroach) is freely available. +CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies. {{site.data.alerts.callout_success}} For a deeper dive into CockroachDB's capabilities and how it fits into the database landscape, take the free [**Intro to Distributed SQL and CockroachDB**](https://university.cockroachlabs.com/courses/course-v1:crl+intro-to-distributed-sql-and-cockroachdb+self-paced/about) course on Cockroach University. -{{site.data.alerts.end}} \ No newline at end of file +{{site.data.alerts.end}} diff --git a/src/current/_includes/v25.1/finalization-required/119894.md b/src/current/_includes/v25.1/finalization-required/119894.md index f2b393c3c0e..c65c82b83d5 100644 --- a/src/current/_includes/v25.1/finalization-required/119894.md +++ b/src/current/_includes/v25.1/finalization-required/119894.md @@ -1 +1 @@ -[Splits](https://cockroachlabs.com/docs/{{ include.version }}/architecture/distribution-layer#range-splits) no longer hold [latches](https://cockroachlabs.com/docs/architecture/distribution-layer.#latch-manager) for time proportional to the range size while computing [MVCC](https://cockroachlabs.com/docs/{{ include.version }}/architecture/storage-layer#mvcc) statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. [#119894](https://github.com/cockroachdb/cockroach/pull/119894) +[Splits](https://cockroachlabs.com/docs/{{ include.version }}/architecture/distribution-layer#range-splits) no longer hold [latches](https://cockroachlabs.com/docs/architecture/distribution-layer.#latch-manager) for time proportional to the range size while computing [MVCC](https://cockroachlabs.com/docs/{{ include.version }}/architecture/storage-layer#mvcc) statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. diff --git a/src/current/_includes/v25.1/known-limitations/alter-changefeed-cdc-queries.md b/src/current/_includes/v25.1/known-limitations/alter-changefeed-cdc-queries.md index 56dd7eeaacd..fbd2a285c6e 100644 --- a/src/current/_includes/v25.1/known-limitations/alter-changefeed-cdc-queries.md +++ b/src/current/_includes/v25.1/known-limitations/alter-changefeed-cdc-queries.md @@ -1 +1 @@ -{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. [#83033](https://github.com/cockroachdb/cockroach/issues/83033) \ No newline at end of file +{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. diff --git a/src/current/_includes/v25.1/known-limitations/alter-changefeed-limitations.md b/src/current/_includes/v25.1/known-limitations/alter-changefeed-limitations.md index a183f2964f4..d1cb7303a99 100644 --- a/src/current/_includes/v25.1/known-limitations/alter-changefeed-limitations.md +++ b/src/current/_includes/v25.1/known-limitations/alter-changefeed-limitations.md @@ -1,8 +1,8 @@ -- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) statement. [#77171](https://github.com/cockroachdb/cockroach/issues/77171) +- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) statement. - CockroachDB does not keep track of the [`initial_scan`]({% link {{ page.version.version }}/create-changefeed.md %}#initial-scan) option applied to tables when it is set to `yes` or `only`. For example: ~~~ sql ALTER CHANGEFEED {job_ID} ADD table WITH initial_scan = 'yes'; ~~~ - This will trigger an initial scan of the table and the changefeed will track `table`. The changefeed will **not** track `initial_scan` specified as an option, so it will not display in the output or after a `SHOW CHANGEFEED JOB` statement. \ No newline at end of file + This will trigger an initial scan of the table and the changefeed will track `table`. The changefeed will **not** track `initial_scan` specified as an option, so it will not display in the output or after a `SHOW CHANGEFEED JOB` statement. diff --git a/src/current/_includes/v25.1/known-limitations/alter-view-limitations.md b/src/current/_includes/v25.1/known-limitations/alter-view-limitations.md index 642bed6ce08..4cfdf9b8a1a 100644 --- a/src/current/_includes/v25.1/known-limitations/alter-view-limitations.md +++ b/src/current/_includes/v25.1/known-limitations/alter-view-limitations.md @@ -1,4 +1,4 @@ `ALTER VIEW` does not currently support: - Changing the [`SELECT`]({% link {{ page.version.version }}/select-clause.md %}) statement executed by a view. Instead, you must drop the existing view and create a new view. -- Renaming a view that other views depend on. This feature may be added in the future. [#10083](https://github.com/cockroachdb/cockroach/issues/10083) \ No newline at end of file +- Renaming a view that other views depend on. This feature may be added in the future. diff --git a/src/current/_includes/v25.1/known-limitations/aost-limitations.md b/src/current/_includes/v25.1/known-limitations/aost-limitations.md index 811c884d08d..c0d92fff59b 100644 --- a/src/current/_includes/v25.1/known-limitations/aost-limitations.md +++ b/src/current/_includes/v25.1/known-limitations/aost-limitations.md @@ -1 +1 @@ -CockroachDB does not support placeholders in {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %}. The time value must be a constant value embedded in the SQL string. [#30955](https://github.com/cockroachdb/cockroach/issues/30955) \ No newline at end of file +CockroachDB does not support placeholders in {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %}. The time value must be a constant value embedded in the SQL string. diff --git a/src/current/_includes/v25.1/known-limitations/cannot-refresh-materialized-views-inside-transactions.md b/src/current/_includes/v25.1/known-limitations/cannot-refresh-materialized-views-inside-transactions.md index b0aaf728177..cd93d6ad8c8 100644 --- a/src/current/_includes/v25.1/known-limitations/cannot-refresh-materialized-views-inside-transactions.md +++ b/src/current/_includes/v25.1/known-limitations/cannot-refresh-materialized-views-inside-transactions.md @@ -23,5 +23,3 @@ ERROR: cannot refresh view in an explicit transaction SQLSTATE: 25000 ~~~ - - [#66008](https://github.com/cockroachdb/cockroach/issues/66008) diff --git a/src/current/_includes/v25.1/known-limitations/cdc-queries-column-families.md b/src/current/_includes/v25.1/known-limitations/cdc-queries-column-families.md index 505a8c9700e..ea64b9821ea 100644 --- a/src/current/_includes/v25.1/known-limitations/cdc-queries-column-families.md +++ b/src/current/_includes/v25.1/known-limitations/cdc-queries-column-families.md @@ -1 +1 @@ -Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. [#127761](https://github.com/cockroachdb/cockroach/issues/127761) \ No newline at end of file +Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. diff --git a/src/current/_includes/v25.1/known-limitations/cdc-queries.md b/src/current/_includes/v25.1/known-limitations/cdc-queries.md index 2839eba5eda..a19a4a9a9c4 100644 --- a/src/current/_includes/v25.1/known-limitations/cdc-queries.md +++ b/src/current/_includes/v25.1/known-limitations/cdc-queries.md @@ -3,5 +3,5 @@ - The following are not permitted in CDC queries: - [Volatile functions]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility). - Sub-select queries. - - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). [#98237](https://github.com/cockroachdb/cockroach/issues/98237) -- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. [#83835](https://github.com/cockroachdb/cockroach/issues/83835) + - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). +- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. diff --git a/src/current/_includes/v25.1/known-limitations/cdc.md b/src/current/_includes/v25.1/known-limitations/cdc.md index a473e94367c..9f691268aeb 100644 --- a/src/current/_includes/v25.1/known-limitations/cdc.md +++ b/src/current/_includes/v25.1/known-limitations/cdc.md @@ -1,8 +1,8 @@ -- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). [#73435](https://github.com/cockroachdb/cockroach/issues/73435) +- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). - {% include {{page.version.version}}/cdc/kafka-vpc-limitation.md %} -- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#insecure-tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. [#73431](https://github.com/cockroachdb/cockroach/issues/73431) -- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. [#73432](https://github.com/cockroachdb/cockroach/issues/73432) -- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. [#79452](https://github.com/cockroachdb/cockroach/issues/79452) +- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#insecure-tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. +- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. +- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. - {% include {{page.version.version}}/cdc/types-udt-composite-general.md %} The following limitations apply: - {% include {{page.version.version}}/cdc/avro-udt-composite.md %} - - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} \ No newline at end of file + - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} diff --git a/src/current/_includes/v25.1/known-limitations/changefeed-column-family-message.md b/src/current/_includes/v25.1/known-limitations/changefeed-column-family-message.md index 41744b9b4b4..785cabfebe1 100644 --- a/src/current/_includes/v25.1/known-limitations/changefeed-column-family-message.md +++ b/src/current/_includes/v25.1/known-limitations/changefeed-column-family-message.md @@ -1 +1 @@ -When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. [#127736](https://github.com/cockroachdb/cockroach/issues/127736) \ No newline at end of file +When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. diff --git a/src/current/_includes/v25.1/known-limitations/copy-syntax.md b/src/current/_includes/v25.1/known-limitations/copy-syntax.md index e64a075dcac..90d35df5754 100644 --- a/src/current/_includes/v25.1/known-limitations/copy-syntax.md +++ b/src/current/_includes/v25.1/known-limitations/copy-syntax.md @@ -1,5 +1,5 @@ CockroachDB does not yet support the following `COPY` syntax: - - `COPY ... WITH FREEZE`. [#85573](https://github.com/cockroachdb/cockroach/issues/85573) - - `COPY ... WITH QUOTE`. [#85574](https://github.com/cockroachdb/cockroach/issues/85574) - - `COPY ... FROM ... WHERE `. [#54580](https://github.com/cockroachdb/cockroach/issues/54580) + - `COPY ... WITH FREEZE`. + - `COPY ... WITH QUOTE`. + - `COPY ... FROM ... WHERE `. diff --git a/src/current/_includes/v25.1/known-limitations/create-statistics-aost-limitation.md b/src/current/_includes/v25.1/known-limitations/create-statistics-aost-limitation.md index 09f86f51c48..7a2a39034de 100644 --- a/src/current/_includes/v25.1/known-limitations/create-statistics-aost-limitation.md +++ b/src/current/_includes/v25.1/known-limitations/create-statistics-aost-limitation.md @@ -1 +1 @@ -The `ANALYZE` alias {% if page.name != "create-statistics.md" %}of [`CREATE STATISTICS`]({% link {{ page.version.version }}/create-statistics.md %}){% endif %} does not support specifying an {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %} timestamp. `ANALYZE` statements use `AS OF SYSTEM TIME '-0.001ms'` automatically. For more control over the statistics interval, use the `CREATE STATISTICS` syntax instead. [#96430](https://github.com/cockroachdb/cockroach/issues/96430) \ No newline at end of file +The `ANALYZE` alias {% if page.name != "create-statistics.md" %}of [`CREATE STATISTICS`]({% link {{ page.version.version }}/create-statistics.md %}){% endif %} does not support specifying an {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %} timestamp. `ANALYZE` statements use `AS OF SYSTEM TIME '-0.001ms'` automatically. For more control over the statistics interval, use the `CREATE STATISTICS` syntax instead. diff --git a/src/current/_includes/v25.1/known-limitations/drop-column-partial-index.md b/src/current/_includes/v25.1/known-limitations/drop-column-partial-index.md index 9fd1811cc43..59d1e0e09b1 100644 --- a/src/current/_includes/v25.1/known-limitations/drop-column-partial-index.md +++ b/src/current/_includes/v25.1/known-limitations/drop-column-partial-index.md @@ -1 +1 @@ -CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}). [#97813](https://github.com/cockroachdb/cockroach/issues/97813). \ No newline at end of file +CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}).. diff --git a/src/current/_includes/v25.1/known-limitations/drop-owned-by-limitations.md b/src/current/_includes/v25.1/known-limitations/drop-owned-by-limitations.md index 95685f6adf1..563c3fc3746 100644 --- a/src/current/_includes/v25.1/known-limitations/drop-owned-by-limitations.md +++ b/src/current/_includes/v25.1/known-limitations/drop-owned-by-limitations.md @@ -10,4 +10,4 @@ The phrase "synthetic privileges" in the error message refers to [system-level privileges]({% link {{ page.version.version }}/security-reference/authorization.md %}#supported-privileges). - The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. [#88149](https://github.com/cockroachdb/cockroach/issues/88149) \ No newline at end of file + The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. diff --git a/src/current/_includes/v25.1/known-limitations/drop-trigger-limitations.md b/src/current/_includes/v25.1/known-limitations/drop-trigger-limitations.md index 90745f7e17a..e8cf291750c 100644 --- a/src/current/_includes/v25.1/known-limitations/drop-trigger-limitations.md +++ b/src/current/_includes/v25.1/known-limitations/drop-trigger-limitations.md @@ -1 +1 @@ -[`DROP TRIGGER`]({% link {{ page.version.version }}/drop-trigger.md %}) with `CASCADE` is not supported. [#128151](https://github.com/cockroachdb/cockroach/issues/128151) \ No newline at end of file +[`DROP TRIGGER`]({% link {{ page.version.version }}/drop-trigger.md %}) with `CASCADE` is not supported. diff --git a/src/current/_includes/v25.1/known-limitations/expression-index-limitations.md b/src/current/_includes/v25.1/known-limitations/expression-index-limitations.md index c0e94185948..76724af9432 100644 --- a/src/current/_includes/v25.1/known-limitations/expression-index-limitations.md +++ b/src/current/_includes/v25.1/known-limitations/expression-index-limitations.md @@ -1,6 +1,6 @@ - The expression cannot reference columns outside the index's table. - Functional expression output must be determined by the input arguments. For example, you can't use the [volatile function]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility) `now()` to create an index because its output depends on more than just the function arguments. -- CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). [#67900](https://github.com/cockroachdb/cockroach/issues/67900) +- CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). - CockroachDB does not support expressions as `ON CONFLICT` targets. This means that unique {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} cannot be selected as arbiters for [`INSERT .. ON CONFLICT`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause) statements. For example: {% include_cached copy-clipboard.html %} @@ -39,5 +39,3 @@ ^ HINT: try \h INSERT ~~~ - - [#67893](https://github.com/cockroachdb/cockroach/issues/67893) diff --git a/src/current/_includes/v25.1/known-limitations/forecasted-stats-limitations.md b/src/current/_includes/v25.1/known-limitations/forecasted-stats-limitations.md index c8753124a96..a7f8eb17ee2 100644 --- a/src/current/_includes/v25.1/known-limitations/forecasted-stats-limitations.md +++ b/src/current/_includes/v25.1/known-limitations/forecasted-stats-limitations.md @@ -6,4 +6,4 @@ Although [`SHOW STATISTICS WITH FORECAST`]({% link {{ page.version.version }}/show-statistics.md %}#display-forecasted-statistics) shows the settings taking effect immediately, they do not actually take effect until new statistics are collected (as can be verified with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %})). - As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. [#123852](https://github.com/cockroachdb/cockroach/issues/123852) \ No newline at end of file + As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. diff --git a/src/current/_includes/v25.1/known-limitations/full-text-search-unsupported.md b/src/current/_includes/v25.1/known-limitations/full-text-search-unsupported.md index 7b5a83f2cae..ef6ff023f86 100644 --- a/src/current/_includes/v25.1/known-limitations/full-text-search-unsupported.md +++ b/src/current/_includes/v25.1/known-limitations/full-text-search-unsupported.md @@ -10,5 +10,3 @@ - `tsquery <-> tsquery` comparisons. - `!! tsquery` comparisons. - `tsquery @> tsquery` and `tsquery <@ tsquery` comparisons. - -[#41288](https://github.com/cockroachdb/cockroach/issues/41288) \ No newline at end of file diff --git a/src/current/_includes/v25.1/known-limitations/generic-query-plan-limitations.md b/src/current/_includes/v25.1/known-limitations/generic-query-plan-limitations.md index e28e66d5f32..e588b799305 100644 --- a/src/current/_includes/v25.1/known-limitations/generic-query-plan-limitations.md +++ b/src/current/_includes/v25.1/known-limitations/generic-query-plan-limitations.md @@ -1,2 +1,2 @@ -- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. [#128916](https://github.com/cockroachdb/cockroach/issues/128916) -- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. [#128911](https://github.com/cockroachdb/cockroach/issues/128911) \ No newline at end of file +- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. +- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. diff --git a/src/current/_includes/v25.1/known-limitations/ldr-column-families.md b/src/current/_includes/v25.1/known-limitations/ldr-column-families.md index 2a7c3bbba52..67183137d9e 100644 --- a/src/current/_includes/v25.1/known-limitations/ldr-column-families.md +++ b/src/current/_includes/v25.1/known-limitations/ldr-column-families.md @@ -1 +1 @@ -Replicating tables cannot contain [column families]({% link {{ page.version.version }}/column-families.md %}). [#133562](https://github.com/cockroachdb/cockroach/issues/133562) \ No newline at end of file +Replicating tables cannot contain [column families]({% link {{ page.version.version }}/column-families.md %}). diff --git a/src/current/_includes/v25.1/known-limitations/ldr-composite-primary.md b/src/current/_includes/v25.1/known-limitations/ldr-composite-primary.md index ac897af35a7..6fdf7136e53 100644 --- a/src/current/_includes/v25.1/known-limitations/ldr-composite-primary.md +++ b/src/current/_includes/v25.1/known-limitations/ldr-composite-primary.md @@ -1 +1 @@ -The [primary key]({% link {{ page.version.version }}/primary-key.md %}) in replicating tables cannot contain composite types. [#133572](https://github.com/cockroachdb/cockroach/issues/133572) \ No newline at end of file +The [primary key]({% link {{ page.version.version }}/primary-key.md %}) in replicating tables cannot contain composite types. diff --git a/src/current/_includes/v25.1/known-limitations/ldr-indexes.md b/src/current/_includes/v25.1/known-limitations/ldr-indexes.md index 0bf7f60c2d4..3d0f52e9ad7 100644 --- a/src/current/_includes/v25.1/known-limitations/ldr-indexes.md +++ b/src/current/_includes/v25.1/known-limitations/ldr-indexes.md @@ -1 +1 @@ -Replicating tables cannot contain an [index]({% link {{ page.version.version }}/indexes.md %}) that requires expression evaluation before insertion. [#133560](https://github.com/cockroachdb/cockroach/issues/133560) \ No newline at end of file +Replicating tables cannot contain an [index]({% link {{ page.version.version }}/indexes.md %}) that requires expression evaluation before insertion. diff --git a/src/current/_includes/v25.1/known-limitations/ldr-sequences.md b/src/current/_includes/v25.1/known-limitations/ldr-sequences.md index 4e39f3630e3..069a693b7a0 100644 --- a/src/current/_includes/v25.1/known-limitations/ldr-sequences.md +++ b/src/current/_includes/v25.1/known-limitations/ldr-sequences.md @@ -1 +1 @@ -Replicating table cannot reference [sequences]({% link {{ page.version.version }}/create-sequence.md %}). [#132303](https://github.com/cockroachdb/cockroach/issues/132303) \ No newline at end of file +Replicating table cannot reference [sequences]({% link {{ page.version.version }}/create-sequence.md %}). diff --git a/src/current/_includes/v25.1/known-limitations/ldr-triggers.md b/src/current/_includes/v25.1/known-limitations/ldr-triggers.md index 55f8e885b97..9fc2b36777e 100644 --- a/src/current/_includes/v25.1/known-limitations/ldr-triggers.md +++ b/src/current/_includes/v25.1/known-limitations/ldr-triggers.md @@ -1 +1 @@ -Replicating tables cannot reference triggers. [#132301](https://github.com/cockroachdb/cockroach/issues/132301) \ No newline at end of file +Replicating tables cannot reference triggers. diff --git a/src/current/_includes/v25.1/known-limitations/ldr-udfs.md b/src/current/_includes/v25.1/known-limitations/ldr-udfs.md index fb642f14751..354a9e8243e 100644 --- a/src/current/_includes/v25.1/known-limitations/ldr-udfs.md +++ b/src/current/_includes/v25.1/known-limitations/ldr-udfs.md @@ -1 +1 @@ -Replicating tables cannot reference [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). [#132302](https://github.com/cockroachdb/cockroach/issues/132302) \ No newline at end of file +Replicating tables cannot reference [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). diff --git a/src/current/_includes/v25.1/known-limitations/locality-optimized-search-virtual-computed-columns.md b/src/current/_includes/v25.1/known-limitations/locality-optimized-search-virtual-computed-columns.md index d6acf418aa8..7a7392aab0d 100644 --- a/src/current/_includes/v25.1/known-limitations/locality-optimized-search-virtual-computed-columns.md +++ b/src/current/_includes/v25.1/known-limitations/locality-optimized-search-virtual-computed-columns.md @@ -1 +1 @@ -- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). [#68129](https://github.com/cockroachdb/cockroach/issues/68129) +- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). diff --git a/src/current/_includes/v25.1/known-limitations/materialized-views-no-stats.md b/src/current/_includes/v25.1/known-limitations/materialized-views-no-stats.md index 02f2bd787c4..a468db2895d 100644 --- a/src/current/_includes/v25.1/known-limitations/materialized-views-no-stats.md +++ b/src/current/_includes/v25.1/known-limitations/materialized-views-no-stats.md @@ -1 +1 @@ -- The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views. [#78181](https://github.com/cockroachdb/cockroach/issues/78181). +- The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views.. diff --git a/src/current/_includes/v25.1/known-limitations/multiple-arbiter-indexes.md b/src/current/_includes/v25.1/known-limitations/multiple-arbiter-indexes.md index c9861623314..b13890a2ee9 100644 --- a/src/current/_includes/v25.1/known-limitations/multiple-arbiter-indexes.md +++ b/src/current/_includes/v25.1/known-limitations/multiple-arbiter-indexes.md @@ -1 +1 @@ -CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. [#53170](https://github.com/cockroachdb/cockroach/issues/53170) \ No newline at end of file +CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. diff --git a/src/current/_includes/v25.1/known-limitations/plpgsql-limitations.md b/src/current/_includes/v25.1/known-limitations/plpgsql-limitations.md index 83e47a0bdaa..f25852bdbee 100644 --- a/src/current/_includes/v25.1/known-limitations/plpgsql-limitations.md +++ b/src/current/_includes/v25.1/known-limitations/plpgsql-limitations.md @@ -1,26 +1,26 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. [#121605](https://github.com/cockroachdb/cockroach/issues/121605) -- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. [#114676](https://github.com/cockroachdb/cockroach/issues/114676) -- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). [#114701](https://github.com/cockroachdb/cockroach/issues/114701) +- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. +- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. +- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). - The following statements are not supported: - - `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops. [#105246](https://github.com/cockroachdb/cockroach/issues/105246) - - `RETURN NEXT` and `RETURN QUERY`. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) - - `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `CASE`. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). [#111446](https://github.com/cockroachdb/cockroach/issues/111446) -- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). [#106237](https://github.com/cockroachdb/cockroach/issues/106237) -- `RAISE` statements message the client directly, and do not produce log output. [#117750](https://github.com/cockroachdb/cockroach/issues/117750) -- `ASSERT` debugging checks are not supported. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- `RECORD` parameters and variables are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). [#105713](https://github.com/cockroachdb/cockroach/issues/105713) -- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. [#117508](https://github.com/cockroachdb/cockroach/issues/117508) -- Syntax for accessing members of composite types without parentheses is not supported. [#114687](https://github.com/cockroachdb/cockroach/issues/114687) -- `NOT NULL` variable declarations are not supported. [#105243](https://github.com/cockroachdb/cockroach/issues/105243) -- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. [#111479](https://github.com/cockroachdb/cockroach/issues/111479) -- Cursors in PL/pgSQL cannot be declared with arguments. [#117746](https://github.com/cockroachdb/cockroach/issues/117746) -- `OPEN FOR EXECUTE` is not supported for opening cursors. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- The `print_strict_params` option is not supported in PL/pgSQL. [#123671](https://github.com/cockroachdb/cockroach/issues/123671) -- The `FOUND` local variable, which checks whether a statement affected any rows, is not supported in PL/pgSQL. [#122306](https://github.com/cockroachdb/cockroach/issues/122306) -- By default, when a PL/pgSQL variable conflicts with a column name, CockroachDB resolves the ambiguity by treating it as a column reference rather than a variable reference. This behavior differs from PostgreSQL, where an ambiguous column error is reported, and it is possible to change the `plpgsql.variable_conflict` setting in order to prefer either columns or variables. [#115680](https://github.com/cockroachdb/cockroach/issues/115680) -- It is not possible to define a `RECORD`-returning PL/pgSQL function that returns different-typed expressions from different `RETURN` statements. CockroachDB requires a consistent return type for `RECORD`-returning functions. [#115384](https://github.com/cockroachdb/cockroach/issues/115384) -- Variables cannot be declared with an associated collation using the `COLLATE` keyword. [#105245](https://github.com/cockroachdb/cockroach/issues/105245) -- Variables cannot be accessed using the `label.var_name` pattern. [#122322](https://github.com/cockroachdb/cockroach/issues/122322) \ No newline at end of file + - `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops. + - `RETURN NEXT` and `RETURN QUERY`. + - `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `CASE`. +- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). +- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). +- `RAISE` statements message the client directly, and do not produce log output. +- `ASSERT` debugging checks are not supported. +- `RECORD` parameters and variables are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). +- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. +- Syntax for accessing members of composite types without parentheses is not supported. +- `NOT NULL` variable declarations are not supported. +- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. +- Cursors in PL/pgSQL cannot be declared with arguments. +- `OPEN FOR EXECUTE` is not supported for opening cursors. +- The `print_strict_params` option is not supported in PL/pgSQL. +- The `FOUND` local variable, which checks whether a statement affected any rows, is not supported in PL/pgSQL. +- By default, when a PL/pgSQL variable conflicts with a column name, CockroachDB resolves the ambiguity by treating it as a column reference rather than a variable reference. This behavior differs from PostgreSQL, where an ambiguous column error is reported, and it is possible to change the `plpgsql.variable_conflict` setting in order to prefer either columns or variables. +- It is not possible to define a `RECORD`-returning PL/pgSQL function that returns different-typed expressions from different `RETURN` statements. CockroachDB requires a consistent return type for `RECORD`-returning functions. +- Variables cannot be declared with an associated collation using the `COLLATE` keyword. +- Variables cannot be accessed using the `label.var_name` pattern. diff --git a/src/current/_includes/v25.1/known-limitations/read-committed-limitations.md b/src/current/_includes/v25.1/known-limitations/read-committed-limitations.md index 63f83b15dd8..16ec7b4d9a2 100644 --- a/src/current/_includes/v25.1/known-limitations/read-committed-limitations.md +++ b/src/current/_includes/v25.1/known-limitations/read-committed-limitations.md @@ -1,6 +1,6 @@ -- Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions when the [`autocommit_before_ddl` session setting]({% link {{page.version.version}}/set-vars.md %}#autocommit-before-ddl) is set to `off`, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. [#114778](https://github.com/cockroachdb/cockroach/issues/114778) -- Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. [#112488](https://github.com/cockroachdb/cockroach/issues/112488) +- Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions when the [`autocommit_before_ddl` session setting]({% link {{page.version.version}}/set-vars.md %}#autocommit-before-ddl) is set to `off`, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. +- Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. - Because locks acquired by [foreign key]({% link {{ page.version.version }}/foreign-key.md %}) checks, [`SELECT FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}), and [`SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) are fully replicated under `READ COMMITTED` isolation, some queries experience a delay for Raft replication. - [Foreign key]({% link {{ page.version.version }}/foreign-key.md %}) checks are not performed in parallel under `READ COMMITTED` isolation. - [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements are less optimized under `READ COMMITTED` isolation than under `SERIALIZABLE` isolation. Under `READ COMMITTED` isolation, `SELECT FOR UPDATE` and `SELECT FOR SHARE` usually perform an extra lookup join for every locked table when compared to the same queries under `SERIALIZABLE`. In addition, some optimization steps (such as de-correlation of correlated [subqueries]({% link {{ page.version.version }}/subqueries.md %})) are not currently performed on these queries. -- Regardless of isolation level, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements in CockroachDB do not prevent insertion of new rows matching the search condition (i.e., [phantom reads]({% link {{ page.version.version }}/read-committed.md %}#non-repeatable-reads-and-phantom-reads)). This matches PostgreSQL behavior at all isolation levels. [#120673](https://github.com/cockroachdb/cockroach/issues/120673) \ No newline at end of file +- Regardless of isolation level, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements in CockroachDB do not prevent insertion of new rows matching the search condition (i.e., [phantom reads]({% link {{ page.version.version }}/read-committed.md %}#non-repeatable-reads-and-phantom-reads)). This matches PostgreSQL behavior at all isolation levels. diff --git a/src/current/_includes/v25.1/known-limitations/restore-multiregion-match.md b/src/current/_includes/v25.1/known-limitations/restore-multiregion-match.md index 20ddbb0c930..38ee6d5446e 100644 --- a/src/current/_includes/v25.1/known-limitations/restore-multiregion-match.md +++ b/src/current/_includes/v25.1/known-limitations/restore-multiregion-match.md @@ -46,5 +46,3 @@ ~~~ sql ALTER DATABASE destination_database SET PRIMARY REGION "us-east1"; ~~~ - - [#71071](https://github.com/cockroachdb/cockroach/issues/71071) \ No newline at end of file diff --git a/src/current/_includes/v25.1/known-limitations/restore-tables-non-multi-reg.md b/src/current/_includes/v25.1/known-limitations/restore-tables-non-multi-reg.md index 5390f2d09ee..a6558d30c7d 100644 --- a/src/current/_includes/v25.1/known-limitations/restore-tables-non-multi-reg.md +++ b/src/current/_includes/v25.1/known-limitations/restore-tables-non-multi-reg.md @@ -1 +1 @@ -Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. [#71502](https://github.com/cockroachdb/cockroach/issues/71502) +Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. diff --git a/src/current/_includes/v25.1/known-limitations/restore-udf.md b/src/current/_includes/v25.1/known-limitations/restore-udf.md index a4a4bc080fe..7d5670fbc9e 100644 --- a/src/current/_includes/v25.1/known-limitations/restore-udf.md +++ b/src/current/_includes/v25.1/known-limitations/restore-udf.md @@ -1 +1 @@ -`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. [#118195](https://github.com/cockroachdb/cockroach/issues/118195) \ No newline at end of file +`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. diff --git a/src/current/_includes/v25.1/known-limitations/routine-limitations.md b/src/current/_includes/v25.1/known-limitations/routine-limitations.md index 4718c6c7abf..64c767950b6 100644 --- a/src/current/_includes/v25.1/known-limitations/routine-limitations.md +++ b/src/current/_includes/v25.1/known-limitations/routine-limitations.md @@ -1,10 +1,10 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. [#122264](https://github.com/cockroachdb/cockroach/issues/122264) -- Routines cannot be created if they reference temporary tables. [#121375](https://github.com/cockroachdb/cockroach/issues/121375) -- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. [#121251](https://github.com/cockroachdb/cockroach/issues/121251) -- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. [#121247](https://github.com/cockroachdb/cockroach/issues/121247) -- Routines cannot be created with an `OUT` parameter of type `RECORD`. [#123448](https://github.com/cockroachdb/cockroach/issues/123448) -- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or stored procedures. [#110080](https://github.com/cockroachdb/cockroach/issues/110080) -- Polymorphic types cannot be cast to other types (e.g., `TEXT`) within routine parameters. [#123536](https://github.com/cockroachdb/cockroach/issues/123536) -- Routine parameters and return types cannot be declared using the `ANYENUM` polymorphic type, which is able to match any [`ENUM`]({% link {{ page.version.version }}/enum.md %}) type. [123048](https://github.com/cockroachdb/cockroach/issues/123048) \ No newline at end of file +- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. +- Routines cannot be created if they reference temporary tables. +- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. +- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. +- Routines cannot be created with an `OUT` parameter of type `RECORD`. +- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or stored procedures. +- Polymorphic types cannot be cast to other types (e.g., `TEXT`) within routine parameters. +- Routine parameters and return types cannot be declared using the `ANYENUM` polymorphic type, which is able to match any [`ENUM`]({% link {{ page.version.version }}/enum.md %}) type. diff --git a/src/current/_includes/v25.1/known-limitations/select-for-update-limitations.md b/src/current/_includes/v25.1/known-limitations/select-for-update-limitations.md index 73aaf9fdeb6..3b6f7c9459d 100644 --- a/src/current/_includes/v25.1/known-limitations/select-for-update-limitations.md +++ b/src/current/_includes/v25.1/known-limitations/select-for-update-limitations.md @@ -1,6 +1,6 @@ -- `SKIP LOCKED` cannot be used for tables with multiple [column families]({% link {{ page.version.version }}/column-families.md %}). [#160961](https://github.com/cockroachdb/cockroach/issues/160961) +- `SKIP LOCKED` cannot be used for tables with multiple [column families]({% link {{ page.version.version }}/column-families.md %}). - By default under `SERIALIZABLE` isolation, locks acquired using `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` are implemented as fast, in-memory [unreplicated locks](architecture/transaction-layer.html#unreplicated-locks). If a [lease transfer]({% link {{ page.version.version }}/architecture/replication-layer.md %}#epoch-based-leases-table-data) or [range split/merge]({% link {{ page.version.version }}/architecture/distribution-layer.md %}#range-merges) occurs on a range held by an unreplicated lock, the lock is dropped. The following behaviors can occur: - The desired ordering of concurrent accesses to one or more rows of a table expressed by your use of `SELECT ... FOR UPDATE` may not be preserved (that is, a transaction _B_ against some table _T_ that was supposed to wait behind another transaction _A_ operating on _T_ may not wait for transaction _A_). - The transaction that acquired the (now dropped) unreplicated lock may fail to commit, leading to [transaction retry errors with code `40001`]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}) and the [`restart transaction` error message]({% link {{ page.version.version }}/common-errors.md %}#restart-transaction). - When running under `SERIALIZABLE` isolation, `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` locks should be thought of as best-effort, and should not be relied upon for correctness. Note that [serialization]({% link {{ page.version.version }}/demo-serializable.md %}) is preserved despite this limitation. This limitation is fixed when the `enable_durable_locking_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}#enable-durable-locking-for-serializable) is set to `true`. This limitation does **not** apply to [`READ COMMITTED`]({% link {{ page.version.version }}/read-committed.md %}) transactions. \ No newline at end of file + When running under `SERIALIZABLE` isolation, `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` locks should be thought of as best-effort, and should not be relied upon for correctness. Note that [serialization]({% link {{ page.version.version }}/demo-serializable.md %}) is preserved despite this limitation. This limitation is fixed when the `enable_durable_locking_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}#enable-durable-locking-for-serializable) is set to `true`. This limitation does **not** apply to [`READ COMMITTED`]({% link {{ page.version.version }}/read-committed.md %}) transactions. diff --git a/src/current/_includes/v25.1/known-limitations/set-transaction-no-rollback.md b/src/current/_includes/v25.1/known-limitations/set-transaction-no-rollback.md index 414cbac6282..4ab3d72a6ae 100644 --- a/src/current/_includes/v25.1/known-limitations/set-transaction-no-rollback.md +++ b/src/current/_includes/v25.1/known-limitations/set-transaction-no-rollback.md @@ -13,5 +13,3 @@ timezone ------------ 3 ~~~ - -[#69396](https://github.com/cockroachdb/cockroach/issues/69396) diff --git a/src/current/_includes/v25.1/known-limitations/show-backup-symlink.md b/src/current/_includes/v25.1/known-limitations/show-backup-symlink.md index 38ba86fb28f..f47d7f3887b 100644 --- a/src/current/_includes/v25.1/known-limitations/show-backup-symlink.md +++ b/src/current/_includes/v25.1/known-limitations/show-backup-symlink.md @@ -1 +1 @@ -[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. [#70260](https://github.com/cockroachdb/cockroach/issues/70260) \ No newline at end of file +[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. diff --git a/src/current/_includes/v25.1/known-limitations/sql-cursors.md b/src/current/_includes/v25.1/known-limitations/sql-cursors.md index 4c047aa9603..1f826254d12 100644 --- a/src/current/_includes/v25.1/known-limitations/sql-cursors.md +++ b/src/current/_includes/v25.1/known-limitations/sql-cursors.md @@ -1,9 +1,9 @@ CockroachDB implements SQL {% if page.name == "known-limitations.md" %} [cursor]({% link {{ page.version.version }}/cursors.md %}) {% else %} cursor {% endif %} support with the following limitations: -- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. [#77099](https://github.com/cockroachdb/cockroach/issues/77099) -- `WITH HOLD`, which allows keeping a cursor open for longer than a transaction by writing its results into a buffer, is accepted as valid syntax within a single transaction but is not supported. It acts as a no-op and does not actually perform the function of `WITH HOLD`, which is to make the cursor live outside its parent transaction. Instead, if you are using `WITH HOLD`, you will be forced to close that cursor within the transaction it was created in. [#77101](https://github.com/cockroachdb/cockroach/issues/77101) +- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. +- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. +- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. +- `WITH HOLD`, which allows keeping a cursor open for longer than a transaction by writing its results into a buffer, is accepted as valid syntax within a single transaction but is not supported. It acts as a no-op and does not actually perform the function of `WITH HOLD`, which is to make the cursor live outside its parent transaction. Instead, if you are using `WITH HOLD`, you will be forced to close that cursor within the transaction it was created in. - This syntax is accepted (but does not have any effect): {% include_cached copy-clipboard.html %} ~~~ sql @@ -19,6 +19,6 @@ CockroachDB implements SQL {% if page.name == "known-limitations.md" %} [cursor] DECLARE test_cur CURSOR WITH HOLD FOR SELECT * FROM foo ORDER BY bar; COMMIT; -- This will fail with an error because CLOSE test_cur was not called inside the transaction. ~~~ -- Scrollable cursor (also known as reverse `FETCH`) is not supported. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. [#77103](https://github.com/cockroachdb/cockroach/issues/77103) -- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. [#77104](https://github.com/cockroachdb/cockroach/issues/77104) +- Scrollable cursor (also known as reverse `FETCH`) is not supported. +- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. +- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. diff --git a/src/current/_includes/v25.1/known-limitations/srid-4326-limitations.md b/src/current/_includes/v25.1/known-limitations/srid-4326-limitations.md index b556a9fbecd..7cfda23749b 100644 --- a/src/current/_includes/v25.1/known-limitations/srid-4326-limitations.md +++ b/src/current/_includes/v25.1/known-limitations/srid-4326-limitations.md @@ -1 +1 @@ -Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. [#55903](https://github.com/cockroachdb/cockroach/issues/55903) \ No newline at end of file +Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. diff --git a/src/current/_includes/v25.1/known-limitations/stats-refresh-upgrade.md b/src/current/_includes/v25.1/known-limitations/stats-refresh-upgrade.md index 3d5a8d26325..c8239a02bcd 100644 --- a/src/current/_includes/v25.1/known-limitations/stats-refresh-upgrade.md +++ b/src/current/_includes/v25.1/known-limitations/stats-refresh-upgrade.md @@ -1 +1 @@ -- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). [#54816](https://github.com/cockroachdb/cockroach/issues/54816) +- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). diff --git a/src/current/_includes/v25.1/known-limitations/stored-proc-limitations.md b/src/current/_includes/v25.1/known-limitations/stored-proc-limitations.md index b2ba1b61562..5ca8442d306 100644 --- a/src/current/_includes/v25.1/known-limitations/stored-proc-limitations.md +++ b/src/current/_includes/v25.1/known-limitations/stored-proc-limitations.md @@ -1,3 +1,3 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- `COMMIT` and `ROLLBACK` statements are not supported within nested procedures. [#122266](https://github.com/cockroachdb/cockroach/issues/122266) \ No newline at end of file +- `COMMIT` and `ROLLBACK` statements are not supported within nested procedures. diff --git a/src/current/_includes/v25.1/known-limitations/trigger-limitations.md b/src/current/_includes/v25.1/known-limitations/trigger-limitations.md index 7373cd486e7..eaf6e6a493a 100644 --- a/src/current/_includes/v25.1/known-limitations/trigger-limitations.md +++ b/src/current/_includes/v25.1/known-limitations/trigger-limitations.md @@ -1,6 +1,6 @@ -- `CREATE OR REPLACE TRIGGER` is not supported. [#128422](https://github.com/cockroachdb/cockroach/issues/128422) -- Statement-level triggers are not supported. [#126362](https://github.com/cockroachdb/cockroach/issues/126362) -- `INSTEAD OF` triggers are not supported. [#126363](https://github.com/cockroachdb/cockroach/issues/126363) -- A [trigger function]({% link {{ page.version.version }}/triggers.md %}#trigger-function) that is used in an existing trigger cannot be replaced with `CREATE OR REPLACE` syntax. To use `CREATE OR REPLACE`, first [drop any triggers]({% link {{ page.version.version }}/drop-trigger.md %}) that are using the function. [#134555](https://github.com/cockroachdb/cockroach/issues/134555) -- Hidden columns are not visible to triggers. [#133331](https://github.com/cockroachdb/cockroach/issues/133331) -- {% include {{ page.version.version }}/known-limitations/drop-trigger-limitations.md %} \ No newline at end of file +- `CREATE OR REPLACE TRIGGER` is not supported. +- Statement-level triggers are not supported. +- `INSTEAD OF` triggers are not supported. +- A [trigger function]({% link {{ page.version.version }}/triggers.md %}#trigger-function) that is used in an existing trigger cannot be replaced with `CREATE OR REPLACE` syntax. To use `CREATE OR REPLACE`, first [drop any triggers]({% link {{ page.version.version }}/drop-trigger.md %}) that are using the function. +- Hidden columns are not visible to triggers. +- {% include {{ page.version.version }}/known-limitations/drop-trigger-limitations.md %} diff --git a/src/current/_includes/v25.1/known-limitations/trigram-unsupported-syntax.md b/src/current/_includes/v25.1/known-limitations/trigram-unsupported-syntax.md index 494730c7ae8..bb726ac4af9 100644 --- a/src/current/_includes/v25.1/known-limitations/trigram-unsupported-syntax.md +++ b/src/current/_includes/v25.1/known-limitations/trigram-unsupported-syntax.md @@ -5,5 +5,3 @@ - `<->`, `<<->`, `<->>`, `<<<->`, and `<->>>` comparisons. - Acceleration on [regex string matching]({% link {{ page.version.version }}/scalar-expressions.md %}#string-matching-using-posix-regular-expressions). - `%` comparisons, `show_trgm`, and trigram index creation on [collated strings]({% link {{ page.version.version }}/collate.md %}). - -[#41285](https://github.com/cockroachdb/cockroach/issues/41285) \ No newline at end of file diff --git a/src/current/_includes/v25.1/known-limitations/udf-limitations.md b/src/current/_includes/v25.1/known-limitations/udf-limitations.md index 8b2ef66b403..83acd88111a 100644 --- a/src/current/_includes/v25.1/known-limitations/udf-limitations.md +++ b/src/current/_includes/v25.1/known-limitations/udf-limitations.md @@ -1,9 +1,9 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. [#122945](https://github.com/cockroachdb/cockroach/issues/122945) +- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. - User-defined functions are not currently supported in: - - Expressions (column, index, constraint) in tables. [#87699](https://github.com/cockroachdb/cockroach/issues/87699) - - Views. [#87699](https://github.com/cockroachdb/cockroach/issues/87699) -- User-defined functions cannot call themselves recursively. [#93049](https://github.com/cockroachdb/cockroach/issues/93049) -- The `setval` function cannot be resolved when used inside UDF bodies. [#110860](https://github.com/cockroachdb/cockroach/issues/110860) -- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) in UDFs is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) \ No newline at end of file + - Expressions (column, index, constraint) in tables. + - Views. +- User-defined functions cannot call themselves recursively. +- The `setval` function cannot be resolved when used inside UDF bodies. +- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) in UDFs is not supported. diff --git a/src/current/_includes/v25.1/known-limitations/vectorized-engine-limitations.md b/src/current/_includes/v25.1/known-limitations/vectorized-engine-limitations.md index daea59ebf88..84f991a0e63 100644 --- a/src/current/_includes/v25.1/known-limitations/vectorized-engine-limitations.md +++ b/src/current/_includes/v25.1/known-limitations/vectorized-engine-limitations.md @@ -1,2 +1,2 @@ -- The vectorized engine does not support queries containing a join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). [#38018](https://github.com/cockroachdb/cockroach/issues/38018) +- The vectorized engine does not support queries containing a join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). - The vectorized engine does not support [working with spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}). Queries with [geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) or [spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}) will revert to the row-oriented execution engine. diff --git a/src/current/_includes/v25.1/misc/tooling.md b/src/current/_includes/v25.1/misc/tooling.md index dcd24363435..ec553f1b383 100644 --- a/src/current/_includes/v25.1/misc/tooling.md +++ b/src/current/_includes/v25.1/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Example Apps]({% link {{ page.version.version }}/example-apps.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). diff --git a/src/current/_includes/v25.1/prod-deployment/decommission-pre-flight-checks.md b/src/current/_includes/v25.1/prod-deployment/decommission-pre-flight-checks.md index b267379384b..f7a613dff78 100644 --- a/src/current/_includes/v25.1/prod-deployment/decommission-pre-flight-checks.md +++ b/src/current/_includes/v25.1/prod-deployment/decommission-pre-flight-checks.md @@ -14,5 +14,5 @@ Failed running "node decommission" These checks can be skipped by [passing the flag `--checks=skip` to `cockroach node decommission`]({% link {{ page.version.version }}/cockroach-node.md %}#decommission-checks). {{site.data.alerts.callout_info}} -The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see [cockroachdb/cockroach#71757](https://github.com/cockroachdb/cockroach/issues/71757) +The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see {{site.data.alerts.end}} diff --git a/src/current/_includes/v25.1/sql/savepoints-and-high-priority-transactions.md b/src/current/_includes/v25.1/sql/savepoints-and-high-priority-transactions.md index c6de489e641..ce124bc3209 100644 --- a/src/current/_includes/v25.1/sql/savepoints-and-high-priority-transactions.md +++ b/src/current/_includes/v25.1/sql/savepoints-and-high-priority-transactions.md @@ -1 +1 @@ -[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. For more information, see GitHub issue [#46414](https://www.github.com/cockroachdb/cockroach/issues/46414). +[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. diff --git a/src/current/_includes/v25.2/backward-incompatible/alpha.1.md b/src/current/_includes/v25.2/backward-incompatible/alpha.1.md index dff3b4ea3c5..15af1374341 100644 --- a/src/current/_includes/v25.2/backward-incompatible/alpha.1.md +++ b/src/current/_includes/v25.2/backward-incompatible/alpha.1.md @@ -1,15 +1,15 @@ -- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). [#81298][#81298] -- In the Cockroach CLI, [`BOOL` values](../v23.1/bool.html) are now formatted as `t` or `f` instead of `True` or `False`. [#81943][#81943] -- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node](../v23.1/node-shutdown.html) gracefully, send a `SIGTERM` signal to it. [#82988][#82988] -- Added a cluster version to allow the [Pebble storage engine](../v23.1/architecture/storage-layer.html#pebble) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree](../v23.1/architecture/storage-layer.html#log-structured-merge-trees)). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. [#84887][#84887] +- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). +- In the Cockroach CLI, [`BOOL` values](../v23.1/bool.html) are now formatted as `t` or `f` instead of `True` or `False`. +- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node](../v23.1/node-shutdown.html) gracefully, send a `SIGTERM` signal to it. +- Added a cluster version to allow the [Pebble storage engine](../v23.1/architecture/storage-layer.html#pebble) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree](../v23.1/architecture/storage-layer.html#log-structured-merge-trees)). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. - Using a single TCP port listener for both RPC (node-node) and SQL client connections is now deprecated. This capability **will be removed** in the next version of CockroachDB. Instead, make one of the following configuration changes to your CockroachDB deployment: - Preferred: keep port `26257` for SQL, and allocate a new port, e.g., `26357`, for node-node RPC connections. For example, you might configure a node with the flags `--listen-addr=:26357 --sql-addr=:26257`, where subsequent nodes seeking to join would then use the flag `--join=othernode:26357,othernode:26257`. This will become the default configuration in the next version of CockroachDB. When using this mode of operation, care should be taken to use a `--join` flag that includes both the previous and new port numbers for other nodes, so that no network partition occurs during the upgrade. - - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. [#85671][#85671] -- If no `nullif` option is specified while using [`IMPORT CSV`](../v23.1/import.html), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. [#84487][#84487] -- [`COPY FROM`](../v23.1/copy.html) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. [#85986][#85986] -- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link v25.2/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. [#81310][#81310] -- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. [#81266][#81266] -- Removed the deprecated `GRANT` privilege. [#81310][#81310] -- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. [#83134][#83134] -- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. [#82560][#82560] -- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link v25.2/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. [#76834][#76834] + - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. +- If no `nullif` option is specified while using [`IMPORT CSV`](../v23.1/import.html), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. +- [`COPY FROM`](../v23.1/copy.html) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. +- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link v25.2/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. +- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. +- Removed the deprecated `GRANT` privilege. +- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. +- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. +- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link v25.2/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. diff --git a/src/current/_includes/v25.2/cdc/avro-udt-composite.md b/src/current/_includes/v25.2/cdc/avro-udt-composite.md index 7a34fbd3253..da8b7b30a3e 100644 --- a/src/current/_includes/v25.2/cdc/avro-udt-composite.md +++ b/src/current/_includes/v25.2/cdc/avro-udt-composite.md @@ -1 +1 @@ -A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). [#102903](https://github.com/cockroachdb/cockroach/issues/102903) \ No newline at end of file +A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). diff --git a/src/current/_includes/v25.2/cdc/csv-udt-composite.md b/src/current/_includes/v25.2/cdc/csv-udt-composite.md index 834bddd8366..fc4597e8e98 100644 --- a/src/current/_includes/v25.2/cdc/csv-udt-composite.md +++ b/src/current/_includes/v25.2/cdc/csv-udt-composite.md @@ -1 +1 @@ -A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). [#102905](https://github.com/cockroachdb/cockroach/issues/102905) \ No newline at end of file +A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). diff --git a/src/current/_includes/v25.2/faq/what-is-crdb.md b/src/current/_includes/v25.2/faq/what-is-crdb.md index 28857ed61fa..14e9080a4f0 100644 --- a/src/current/_includes/v25.2/faq/what-is-crdb.md +++ b/src/current/_includes/v25.2/faq/what-is-crdb.md @@ -1,7 +1,7 @@ CockroachDB is a [distributed SQL](https://www.cockroachlabs.com/blog/what-is-distributed-sql/) database built on a transactional and strongly-consistent key-value store. It **scales** horizontally; **survives** disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention; supports **strongly-consistent** ACID transactions; and provides a familiar **SQL** API for structuring, manipulating, and querying data. -CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies, and the [source code](https://github.com/cockroachdb/cockroach) is freely available. +CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies. {{site.data.alerts.callout_success}} For a deeper dive into CockroachDB's capabilities and how it fits into the database landscape, take the free [**Intro to Distributed SQL and CockroachDB**](https://university.cockroachlabs.com/courses/course-v1:crl+intro-to-distributed-sql-and-cockroachdb+self-paced/about) course on Cockroach University. -{{site.data.alerts.end}} \ No newline at end of file +{{site.data.alerts.end}} diff --git a/src/current/_includes/v25.2/finalization-required/119894.md b/src/current/_includes/v25.2/finalization-required/119894.md index f2b393c3c0e..c65c82b83d5 100644 --- a/src/current/_includes/v25.2/finalization-required/119894.md +++ b/src/current/_includes/v25.2/finalization-required/119894.md @@ -1 +1 @@ -[Splits](https://cockroachlabs.com/docs/{{ include.version }}/architecture/distribution-layer#range-splits) no longer hold [latches](https://cockroachlabs.com/docs/architecture/distribution-layer.#latch-manager) for time proportional to the range size while computing [MVCC](https://cockroachlabs.com/docs/{{ include.version }}/architecture/storage-layer#mvcc) statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. [#119894](https://github.com/cockroachdb/cockroach/pull/119894) +[Splits](https://cockroachlabs.com/docs/{{ include.version }}/architecture/distribution-layer#range-splits) no longer hold [latches](https://cockroachlabs.com/docs/architecture/distribution-layer.#latch-manager) for time proportional to the range size while computing [MVCC](https://cockroachlabs.com/docs/{{ include.version }}/architecture/storage-layer#mvcc) statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. diff --git a/src/current/_includes/v25.2/known-limitations/alter-changefeed-cdc-queries.md b/src/current/_includes/v25.2/known-limitations/alter-changefeed-cdc-queries.md index 56dd7eeaacd..fbd2a285c6e 100644 --- a/src/current/_includes/v25.2/known-limitations/alter-changefeed-cdc-queries.md +++ b/src/current/_includes/v25.2/known-limitations/alter-changefeed-cdc-queries.md @@ -1 +1 @@ -{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. [#83033](https://github.com/cockroachdb/cockroach/issues/83033) \ No newline at end of file +{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. diff --git a/src/current/_includes/v25.2/known-limitations/alter-changefeed-limitations.md b/src/current/_includes/v25.2/known-limitations/alter-changefeed-limitations.md index a183f2964f4..d1cb7303a99 100644 --- a/src/current/_includes/v25.2/known-limitations/alter-changefeed-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/alter-changefeed-limitations.md @@ -1,8 +1,8 @@ -- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) statement. [#77171](https://github.com/cockroachdb/cockroach/issues/77171) +- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) statement. - CockroachDB does not keep track of the [`initial_scan`]({% link {{ page.version.version }}/create-changefeed.md %}#initial-scan) option applied to tables when it is set to `yes` or `only`. For example: ~~~ sql ALTER CHANGEFEED {job_ID} ADD table WITH initial_scan = 'yes'; ~~~ - This will trigger an initial scan of the table and the changefeed will track `table`. The changefeed will **not** track `initial_scan` specified as an option, so it will not display in the output or after a `SHOW CHANGEFEED JOB` statement. \ No newline at end of file + This will trigger an initial scan of the table and the changefeed will track `table`. The changefeed will **not** track `initial_scan` specified as an option, so it will not display in the output or after a `SHOW CHANGEFEED JOB` statement. diff --git a/src/current/_includes/v25.2/known-limitations/alter-view-limitations.md b/src/current/_includes/v25.2/known-limitations/alter-view-limitations.md index 642bed6ce08..4cfdf9b8a1a 100644 --- a/src/current/_includes/v25.2/known-limitations/alter-view-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/alter-view-limitations.md @@ -1,4 +1,4 @@ `ALTER VIEW` does not currently support: - Changing the [`SELECT`]({% link {{ page.version.version }}/select-clause.md %}) statement executed by a view. Instead, you must drop the existing view and create a new view. -- Renaming a view that other views depend on. This feature may be added in the future. [#10083](https://github.com/cockroachdb/cockroach/issues/10083) \ No newline at end of file +- Renaming a view that other views depend on. This feature may be added in the future. diff --git a/src/current/_includes/v25.2/known-limitations/aost-limitations.md b/src/current/_includes/v25.2/known-limitations/aost-limitations.md index 811c884d08d..c0d92fff59b 100644 --- a/src/current/_includes/v25.2/known-limitations/aost-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/aost-limitations.md @@ -1 +1 @@ -CockroachDB does not support placeholders in {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %}. The time value must be a constant value embedded in the SQL string. [#30955](https://github.com/cockroachdb/cockroach/issues/30955) \ No newline at end of file +CockroachDB does not support placeholders in {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %}. The time value must be a constant value embedded in the SQL string. diff --git a/src/current/_includes/v25.2/known-limitations/cannot-refresh-materialized-views-inside-transactions.md b/src/current/_includes/v25.2/known-limitations/cannot-refresh-materialized-views-inside-transactions.md index b0aaf728177..cd93d6ad8c8 100644 --- a/src/current/_includes/v25.2/known-limitations/cannot-refresh-materialized-views-inside-transactions.md +++ b/src/current/_includes/v25.2/known-limitations/cannot-refresh-materialized-views-inside-transactions.md @@ -23,5 +23,3 @@ ERROR: cannot refresh view in an explicit transaction SQLSTATE: 25000 ~~~ - - [#66008](https://github.com/cockroachdb/cockroach/issues/66008) diff --git a/src/current/_includes/v25.2/known-limitations/cdc-queries-column-families.md b/src/current/_includes/v25.2/known-limitations/cdc-queries-column-families.md index 505a8c9700e..ea64b9821ea 100644 --- a/src/current/_includes/v25.2/known-limitations/cdc-queries-column-families.md +++ b/src/current/_includes/v25.2/known-limitations/cdc-queries-column-families.md @@ -1 +1 @@ -Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. [#127761](https://github.com/cockroachdb/cockroach/issues/127761) \ No newline at end of file +Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. diff --git a/src/current/_includes/v25.2/known-limitations/cdc-queries.md b/src/current/_includes/v25.2/known-limitations/cdc-queries.md index 2839eba5eda..a19a4a9a9c4 100644 --- a/src/current/_includes/v25.2/known-limitations/cdc-queries.md +++ b/src/current/_includes/v25.2/known-limitations/cdc-queries.md @@ -3,5 +3,5 @@ - The following are not permitted in CDC queries: - [Volatile functions]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility). - Sub-select queries. - - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). [#98237](https://github.com/cockroachdb/cockroach/issues/98237) -- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. [#83835](https://github.com/cockroachdb/cockroach/issues/83835) + - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). +- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. diff --git a/src/current/_includes/v25.2/known-limitations/cdc.md b/src/current/_includes/v25.2/known-limitations/cdc.md index a473e94367c..9f691268aeb 100644 --- a/src/current/_includes/v25.2/known-limitations/cdc.md +++ b/src/current/_includes/v25.2/known-limitations/cdc.md @@ -1,8 +1,8 @@ -- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). [#73435](https://github.com/cockroachdb/cockroach/issues/73435) +- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). - {% include {{page.version.version}}/cdc/kafka-vpc-limitation.md %} -- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#insecure-tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. [#73431](https://github.com/cockroachdb/cockroach/issues/73431) -- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. [#73432](https://github.com/cockroachdb/cockroach/issues/73432) -- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. [#79452](https://github.com/cockroachdb/cockroach/issues/79452) +- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#insecure-tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. +- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. +- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. - {% include {{page.version.version}}/cdc/types-udt-composite-general.md %} The following limitations apply: - {% include {{page.version.version}}/cdc/avro-udt-composite.md %} - - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} \ No newline at end of file + - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} diff --git a/src/current/_includes/v25.2/known-limitations/changefeed-column-family-message.md b/src/current/_includes/v25.2/known-limitations/changefeed-column-family-message.md index 41744b9b4b4..785cabfebe1 100644 --- a/src/current/_includes/v25.2/known-limitations/changefeed-column-family-message.md +++ b/src/current/_includes/v25.2/known-limitations/changefeed-column-family-message.md @@ -1 +1 @@ -When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. [#127736](https://github.com/cockroachdb/cockroach/issues/127736) \ No newline at end of file +When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. diff --git a/src/current/_includes/v25.2/known-limitations/copy-syntax.md b/src/current/_includes/v25.2/known-limitations/copy-syntax.md index e64a075dcac..90d35df5754 100644 --- a/src/current/_includes/v25.2/known-limitations/copy-syntax.md +++ b/src/current/_includes/v25.2/known-limitations/copy-syntax.md @@ -1,5 +1,5 @@ CockroachDB does not yet support the following `COPY` syntax: - - `COPY ... WITH FREEZE`. [#85573](https://github.com/cockroachdb/cockroach/issues/85573) - - `COPY ... WITH QUOTE`. [#85574](https://github.com/cockroachdb/cockroach/issues/85574) - - `COPY ... FROM ... WHERE `. [#54580](https://github.com/cockroachdb/cockroach/issues/54580) + - `COPY ... WITH FREEZE`. + - `COPY ... WITH QUOTE`. + - `COPY ... FROM ... WHERE `. diff --git a/src/current/_includes/v25.2/known-limitations/create-statistics-aost-limitation.md b/src/current/_includes/v25.2/known-limitations/create-statistics-aost-limitation.md index 09f86f51c48..7a2a39034de 100644 --- a/src/current/_includes/v25.2/known-limitations/create-statistics-aost-limitation.md +++ b/src/current/_includes/v25.2/known-limitations/create-statistics-aost-limitation.md @@ -1 +1 @@ -The `ANALYZE` alias {% if page.name != "create-statistics.md" %}of [`CREATE STATISTICS`]({% link {{ page.version.version }}/create-statistics.md %}){% endif %} does not support specifying an {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %} timestamp. `ANALYZE` statements use `AS OF SYSTEM TIME '-0.001ms'` automatically. For more control over the statistics interval, use the `CREATE STATISTICS` syntax instead. [#96430](https://github.com/cockroachdb/cockroach/issues/96430) \ No newline at end of file +The `ANALYZE` alias {% if page.name != "create-statistics.md" %}of [`CREATE STATISTICS`]({% link {{ page.version.version }}/create-statistics.md %}){% endif %} does not support specifying an {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %} timestamp. `ANALYZE` statements use `AS OF SYSTEM TIME '-0.001ms'` automatically. For more control over the statistics interval, use the `CREATE STATISTICS` syntax instead. diff --git a/src/current/_includes/v25.2/known-limitations/drop-column-partial-index.md b/src/current/_includes/v25.2/known-limitations/drop-column-partial-index.md index 9fd1811cc43..59d1e0e09b1 100644 --- a/src/current/_includes/v25.2/known-limitations/drop-column-partial-index.md +++ b/src/current/_includes/v25.2/known-limitations/drop-column-partial-index.md @@ -1 +1 @@ -CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}). [#97813](https://github.com/cockroachdb/cockroach/issues/97813). \ No newline at end of file +CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}).. diff --git a/src/current/_includes/v25.2/known-limitations/drop-owned-by-limitations.md b/src/current/_includes/v25.2/known-limitations/drop-owned-by-limitations.md index 95685f6adf1..563c3fc3746 100644 --- a/src/current/_includes/v25.2/known-limitations/drop-owned-by-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/drop-owned-by-limitations.md @@ -10,4 +10,4 @@ The phrase "synthetic privileges" in the error message refers to [system-level privileges]({% link {{ page.version.version }}/security-reference/authorization.md %}#supported-privileges). - The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. [#88149](https://github.com/cockroachdb/cockroach/issues/88149) \ No newline at end of file + The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. diff --git a/src/current/_includes/v25.2/known-limitations/drop-trigger-limitations.md b/src/current/_includes/v25.2/known-limitations/drop-trigger-limitations.md index 90745f7e17a..e8cf291750c 100644 --- a/src/current/_includes/v25.2/known-limitations/drop-trigger-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/drop-trigger-limitations.md @@ -1 +1 @@ -[`DROP TRIGGER`]({% link {{ page.version.version }}/drop-trigger.md %}) with `CASCADE` is not supported. [#128151](https://github.com/cockroachdb/cockroach/issues/128151) \ No newline at end of file +[`DROP TRIGGER`]({% link {{ page.version.version }}/drop-trigger.md %}) with `CASCADE` is not supported. diff --git a/src/current/_includes/v25.2/known-limitations/expression-index-limitations.md b/src/current/_includes/v25.2/known-limitations/expression-index-limitations.md index c0e94185948..76724af9432 100644 --- a/src/current/_includes/v25.2/known-limitations/expression-index-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/expression-index-limitations.md @@ -1,6 +1,6 @@ - The expression cannot reference columns outside the index's table. - Functional expression output must be determined by the input arguments. For example, you can't use the [volatile function]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility) `now()` to create an index because its output depends on more than just the function arguments. -- CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). [#67900](https://github.com/cockroachdb/cockroach/issues/67900) +- CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). - CockroachDB does not support expressions as `ON CONFLICT` targets. This means that unique {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} cannot be selected as arbiters for [`INSERT .. ON CONFLICT`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause) statements. For example: {% include_cached copy-clipboard.html %} @@ -39,5 +39,3 @@ ^ HINT: try \h INSERT ~~~ - - [#67893](https://github.com/cockroachdb/cockroach/issues/67893) diff --git a/src/current/_includes/v25.2/known-limitations/forecasted-stats-limitations.md b/src/current/_includes/v25.2/known-limitations/forecasted-stats-limitations.md index c8753124a96..a7f8eb17ee2 100644 --- a/src/current/_includes/v25.2/known-limitations/forecasted-stats-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/forecasted-stats-limitations.md @@ -6,4 +6,4 @@ Although [`SHOW STATISTICS WITH FORECAST`]({% link {{ page.version.version }}/show-statistics.md %}#display-forecasted-statistics) shows the settings taking effect immediately, they do not actually take effect until new statistics are collected (as can be verified with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %})). - As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. [#123852](https://github.com/cockroachdb/cockroach/issues/123852) \ No newline at end of file + As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. diff --git a/src/current/_includes/v25.2/known-limitations/full-text-search-unsupported.md b/src/current/_includes/v25.2/known-limitations/full-text-search-unsupported.md index 7b5a83f2cae..ef6ff023f86 100644 --- a/src/current/_includes/v25.2/known-limitations/full-text-search-unsupported.md +++ b/src/current/_includes/v25.2/known-limitations/full-text-search-unsupported.md @@ -10,5 +10,3 @@ - `tsquery <-> tsquery` comparisons. - `!! tsquery` comparisons. - `tsquery @> tsquery` and `tsquery <@ tsquery` comparisons. - -[#41288](https://github.com/cockroachdb/cockroach/issues/41288) \ No newline at end of file diff --git a/src/current/_includes/v25.2/known-limitations/generic-query-plan-limitations.md b/src/current/_includes/v25.2/known-limitations/generic-query-plan-limitations.md index e28e66d5f32..e588b799305 100644 --- a/src/current/_includes/v25.2/known-limitations/generic-query-plan-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/generic-query-plan-limitations.md @@ -1,2 +1,2 @@ -- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. [#128916](https://github.com/cockroachdb/cockroach/issues/128916) -- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. [#128911](https://github.com/cockroachdb/cockroach/issues/128911) \ No newline at end of file +- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. +- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. diff --git a/src/current/_includes/v25.2/known-limitations/jsonpath-limitations.md b/src/current/_includes/v25.2/known-limitations/jsonpath-limitations.md index 9b51bfb6e87..c4cbd7fb32b 100644 --- a/src/current/_includes/v25.2/known-limitations/jsonpath-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/jsonpath-limitations.md @@ -1,2 +1,2 @@ -- The following keywords are only accepted in lowercase: `strict`, `lax`, `exists`, `like_regex`, `flag`, `is unknown`, `to`, `last`. [#144255](https://github.com/cockroachdb/cockroach/issues/144255) -- Comparisons involving empty arrays (e.g., `SELECT jsonb_path_query('{"a": [1], "b": []}', '$.a == $.b');`) return `null`, rather than `false` as in PostgreSQL. [#145099](https://github.com/cockroachdb/cockroach/issues/145099) \ No newline at end of file +- The following keywords are only accepted in lowercase: `strict`, `lax`, `exists`, `like_regex`, `flag`, `is unknown`, `to`, `last`. +- Comparisons involving empty arrays (e.g., `SELECT jsonb_path_query('{"a": [1], "b": []}', '$.a == $.b');`) return `null`, rather than `false` as in PostgreSQL. diff --git a/src/current/_includes/v25.2/known-limitations/ldr-column-families.md b/src/current/_includes/v25.2/known-limitations/ldr-column-families.md index 2a7c3bbba52..67183137d9e 100644 --- a/src/current/_includes/v25.2/known-limitations/ldr-column-families.md +++ b/src/current/_includes/v25.2/known-limitations/ldr-column-families.md @@ -1 +1 @@ -Replicating tables cannot contain [column families]({% link {{ page.version.version }}/column-families.md %}). [#133562](https://github.com/cockroachdb/cockroach/issues/133562) \ No newline at end of file +Replicating tables cannot contain [column families]({% link {{ page.version.version }}/column-families.md %}). diff --git a/src/current/_includes/v25.2/known-limitations/ldr-composite-primary.md b/src/current/_includes/v25.2/known-limitations/ldr-composite-primary.md index ac897af35a7..6fdf7136e53 100644 --- a/src/current/_includes/v25.2/known-limitations/ldr-composite-primary.md +++ b/src/current/_includes/v25.2/known-limitations/ldr-composite-primary.md @@ -1 +1 @@ -The [primary key]({% link {{ page.version.version }}/primary-key.md %}) in replicating tables cannot contain composite types. [#133572](https://github.com/cockroachdb/cockroach/issues/133572) \ No newline at end of file +The [primary key]({% link {{ page.version.version }}/primary-key.md %}) in replicating tables cannot contain composite types. diff --git a/src/current/_includes/v25.2/known-limitations/ldr-indexes.md b/src/current/_includes/v25.2/known-limitations/ldr-indexes.md index 0bf7f60c2d4..3d0f52e9ad7 100644 --- a/src/current/_includes/v25.2/known-limitations/ldr-indexes.md +++ b/src/current/_includes/v25.2/known-limitations/ldr-indexes.md @@ -1 +1 @@ -Replicating tables cannot contain an [index]({% link {{ page.version.version }}/indexes.md %}) that requires expression evaluation before insertion. [#133560](https://github.com/cockroachdb/cockroach/issues/133560) \ No newline at end of file +Replicating tables cannot contain an [index]({% link {{ page.version.version }}/indexes.md %}) that requires expression evaluation before insertion. diff --git a/src/current/_includes/v25.2/known-limitations/ldr-sequences.md b/src/current/_includes/v25.2/known-limitations/ldr-sequences.md index 4e39f3630e3..069a693b7a0 100644 --- a/src/current/_includes/v25.2/known-limitations/ldr-sequences.md +++ b/src/current/_includes/v25.2/known-limitations/ldr-sequences.md @@ -1 +1 @@ -Replicating table cannot reference [sequences]({% link {{ page.version.version }}/create-sequence.md %}). [#132303](https://github.com/cockroachdb/cockroach/issues/132303) \ No newline at end of file +Replicating table cannot reference [sequences]({% link {{ page.version.version }}/create-sequence.md %}). diff --git a/src/current/_includes/v25.2/known-limitations/ldr-triggers.md b/src/current/_includes/v25.2/known-limitations/ldr-triggers.md index 55f8e885b97..9fc2b36777e 100644 --- a/src/current/_includes/v25.2/known-limitations/ldr-triggers.md +++ b/src/current/_includes/v25.2/known-limitations/ldr-triggers.md @@ -1 +1 @@ -Replicating tables cannot reference triggers. [#132301](https://github.com/cockroachdb/cockroach/issues/132301) \ No newline at end of file +Replicating tables cannot reference triggers. diff --git a/src/current/_includes/v25.2/known-limitations/ldr-udfs.md b/src/current/_includes/v25.2/known-limitations/ldr-udfs.md index fb642f14751..354a9e8243e 100644 --- a/src/current/_includes/v25.2/known-limitations/ldr-udfs.md +++ b/src/current/_includes/v25.2/known-limitations/ldr-udfs.md @@ -1 +1 @@ -Replicating tables cannot reference [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). [#132302](https://github.com/cockroachdb/cockroach/issues/132302) \ No newline at end of file +Replicating tables cannot reference [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). diff --git a/src/current/_includes/v25.2/known-limitations/locality-optimized-search-virtual-computed-columns.md b/src/current/_includes/v25.2/known-limitations/locality-optimized-search-virtual-computed-columns.md index d6acf418aa8..7a7392aab0d 100644 --- a/src/current/_includes/v25.2/known-limitations/locality-optimized-search-virtual-computed-columns.md +++ b/src/current/_includes/v25.2/known-limitations/locality-optimized-search-virtual-computed-columns.md @@ -1 +1 @@ -- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). [#68129](https://github.com/cockroachdb/cockroach/issues/68129) +- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). diff --git a/src/current/_includes/v25.2/known-limitations/materialized-views-no-stats.md b/src/current/_includes/v25.2/known-limitations/materialized-views-no-stats.md index 02f2bd787c4..a468db2895d 100644 --- a/src/current/_includes/v25.2/known-limitations/materialized-views-no-stats.md +++ b/src/current/_includes/v25.2/known-limitations/materialized-views-no-stats.md @@ -1 +1 @@ -- The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views. [#78181](https://github.com/cockroachdb/cockroach/issues/78181). +- The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views.. diff --git a/src/current/_includes/v25.2/known-limitations/multiple-arbiter-indexes.md b/src/current/_includes/v25.2/known-limitations/multiple-arbiter-indexes.md index c9861623314..b13890a2ee9 100644 --- a/src/current/_includes/v25.2/known-limitations/multiple-arbiter-indexes.md +++ b/src/current/_includes/v25.2/known-limitations/multiple-arbiter-indexes.md @@ -1 +1 @@ -CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. [#53170](https://github.com/cockroachdb/cockroach/issues/53170) \ No newline at end of file +CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. diff --git a/src/current/_includes/v25.2/known-limitations/plpgsql-limitations.md b/src/current/_includes/v25.2/known-limitations/plpgsql-limitations.md index c17954748a0..e368d43ab39 100644 --- a/src/current/_includes/v25.2/known-limitations/plpgsql-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/plpgsql-limitations.md @@ -1,25 +1,25 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. [#121605](https://github.com/cockroachdb/cockroach/issues/121605) -- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. [#114676](https://github.com/cockroachdb/cockroach/issues/114676) -- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). [#114701](https://github.com/cockroachdb/cockroach/issues/114701) +- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. +- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. +- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). - The following statements are not supported: - - `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops. [#105246](https://github.com/cockroachdb/cockroach/issues/105246) - - `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `CASE`. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). [#111446](https://github.com/cockroachdb/cockroach/issues/111446) -- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). [#106237](https://github.com/cockroachdb/cockroach/issues/106237) -- `RAISE` statements message the client directly, and do not produce log output. [#117750](https://github.com/cockroachdb/cockroach/issues/117750) -- `ASSERT` debugging checks are not supported. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- `RECORD` parameters and variables are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). [#105713](https://github.com/cockroachdb/cockroach/issues/105713) -- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. [#117508](https://github.com/cockroachdb/cockroach/issues/117508) -- Syntax for accessing members of composite types without parentheses is not supported. [#114687](https://github.com/cockroachdb/cockroach/issues/114687) -- `NOT NULL` variable declarations are not supported. [#105243](https://github.com/cockroachdb/cockroach/issues/105243) -- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. [#111479](https://github.com/cockroachdb/cockroach/issues/111479) -- Cursors in PL/pgSQL cannot be declared with arguments. [#117746](https://github.com/cockroachdb/cockroach/issues/117746) -- `OPEN FOR EXECUTE` is not supported for opening cursors. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- The `print_strict_params` option is not supported in PL/pgSQL. [#123671](https://github.com/cockroachdb/cockroach/issues/123671) -- The `FOUND` local variable, which checks whether a statement affected any rows, is not supported in PL/pgSQL. [#122306](https://github.com/cockroachdb/cockroach/issues/122306) -- By default, when a PL/pgSQL variable conflicts with a column name, CockroachDB resolves the ambiguity by treating it as a column reference rather than a variable reference. This behavior differs from PostgreSQL, where an ambiguous column error is reported, and it is possible to change the `plpgsql.variable_conflict` setting in order to prefer either columns or variables. [#115680](https://github.com/cockroachdb/cockroach/issues/115680) -- It is not possible to define a `RECORD`-returning PL/pgSQL function that returns different-typed expressions from different `RETURN` statements. CockroachDB requires a consistent return type for `RECORD`-returning functions. [#115384](https://github.com/cockroachdb/cockroach/issues/115384) -- Variables cannot be declared with an associated collation using the `COLLATE` keyword. [#105245](https://github.com/cockroachdb/cockroach/issues/105245) -- Variables cannot be accessed using the `label.var_name` pattern. [#122322](https://github.com/cockroachdb/cockroach/issues/122322) \ No newline at end of file + - `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops. + - `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `CASE`. +- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). +- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). +- `RAISE` statements message the client directly, and do not produce log output. +- `ASSERT` debugging checks are not supported. +- `RECORD` parameters and variables are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). +- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. +- Syntax for accessing members of composite types without parentheses is not supported. +- `NOT NULL` variable declarations are not supported. +- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. +- Cursors in PL/pgSQL cannot be declared with arguments. +- `OPEN FOR EXECUTE` is not supported for opening cursors. +- The `print_strict_params` option is not supported in PL/pgSQL. +- The `FOUND` local variable, which checks whether a statement affected any rows, is not supported in PL/pgSQL. +- By default, when a PL/pgSQL variable conflicts with a column name, CockroachDB resolves the ambiguity by treating it as a column reference rather than a variable reference. This behavior differs from PostgreSQL, where an ambiguous column error is reported, and it is possible to change the `plpgsql.variable_conflict` setting in order to prefer either columns or variables. +- It is not possible to define a `RECORD`-returning PL/pgSQL function that returns different-typed expressions from different `RETURN` statements. CockroachDB requires a consistent return type for `RECORD`-returning functions. +- Variables cannot be declared with an associated collation using the `COLLATE` keyword. +- Variables cannot be accessed using the `label.var_name` pattern. diff --git a/src/current/_includes/v25.2/known-limitations/read-committed-limitations.md b/src/current/_includes/v25.2/known-limitations/read-committed-limitations.md index 63f83b15dd8..16ec7b4d9a2 100644 --- a/src/current/_includes/v25.2/known-limitations/read-committed-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/read-committed-limitations.md @@ -1,6 +1,6 @@ -- Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions when the [`autocommit_before_ddl` session setting]({% link {{page.version.version}}/set-vars.md %}#autocommit-before-ddl) is set to `off`, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. [#114778](https://github.com/cockroachdb/cockroach/issues/114778) -- Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. [#112488](https://github.com/cockroachdb/cockroach/issues/112488) +- Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions when the [`autocommit_before_ddl` session setting]({% link {{page.version.version}}/set-vars.md %}#autocommit-before-ddl) is set to `off`, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. +- Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. - Because locks acquired by [foreign key]({% link {{ page.version.version }}/foreign-key.md %}) checks, [`SELECT FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}), and [`SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) are fully replicated under `READ COMMITTED` isolation, some queries experience a delay for Raft replication. - [Foreign key]({% link {{ page.version.version }}/foreign-key.md %}) checks are not performed in parallel under `READ COMMITTED` isolation. - [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements are less optimized under `READ COMMITTED` isolation than under `SERIALIZABLE` isolation. Under `READ COMMITTED` isolation, `SELECT FOR UPDATE` and `SELECT FOR SHARE` usually perform an extra lookup join for every locked table when compared to the same queries under `SERIALIZABLE`. In addition, some optimization steps (such as de-correlation of correlated [subqueries]({% link {{ page.version.version }}/subqueries.md %})) are not currently performed on these queries. -- Regardless of isolation level, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements in CockroachDB do not prevent insertion of new rows matching the search condition (i.e., [phantom reads]({% link {{ page.version.version }}/read-committed.md %}#non-repeatable-reads-and-phantom-reads)). This matches PostgreSQL behavior at all isolation levels. [#120673](https://github.com/cockroachdb/cockroach/issues/120673) \ No newline at end of file +- Regardless of isolation level, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements in CockroachDB do not prevent insertion of new rows matching the search condition (i.e., [phantom reads]({% link {{ page.version.version }}/read-committed.md %}#non-repeatable-reads-and-phantom-reads)). This matches PostgreSQL behavior at all isolation levels. diff --git a/src/current/_includes/v25.2/known-limitations/restore-multiregion-match.md b/src/current/_includes/v25.2/known-limitations/restore-multiregion-match.md index ab2f1029ecd..6cf3a2ccefe 100644 --- a/src/current/_includes/v25.2/known-limitations/restore-multiregion-match.md +++ b/src/current/_includes/v25.2/known-limitations/restore-multiregion-match.md @@ -46,5 +46,3 @@ ~~~ sql ALTER DATABASE destination_database SET PRIMARY REGION "us-east1"; ~~~ - - [#71071](https://github.com/cockroachdb/cockroach/issues/71071) \ No newline at end of file diff --git a/src/current/_includes/v25.2/known-limitations/restore-tables-non-multi-reg.md b/src/current/_includes/v25.2/known-limitations/restore-tables-non-multi-reg.md index 5390f2d09ee..a6558d30c7d 100644 --- a/src/current/_includes/v25.2/known-limitations/restore-tables-non-multi-reg.md +++ b/src/current/_includes/v25.2/known-limitations/restore-tables-non-multi-reg.md @@ -1 +1 @@ -Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. [#71502](https://github.com/cockroachdb/cockroach/issues/71502) +Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. diff --git a/src/current/_includes/v25.2/known-limitations/restore-udf.md b/src/current/_includes/v25.2/known-limitations/restore-udf.md index a4a4bc080fe..7d5670fbc9e 100644 --- a/src/current/_includes/v25.2/known-limitations/restore-udf.md +++ b/src/current/_includes/v25.2/known-limitations/restore-udf.md @@ -1 +1 @@ -`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. [#118195](https://github.com/cockroachdb/cockroach/issues/118195) \ No newline at end of file +`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. diff --git a/src/current/_includes/v25.2/known-limitations/rls-values-on-conflict-do-nothing.md b/src/current/_includes/v25.2/known-limitations/rls-values-on-conflict-do-nothing.md index c85dea7987a..0f236672cff 100644 --- a/src/current/_includes/v25.2/known-limitations/rls-values-on-conflict-do-nothing.md +++ b/src/current/_includes/v25.2/known-limitations/rls-values-on-conflict-do-nothing.md @@ -1 +1 @@ -`ON CONFLICT ... DO NOTHING`: CockroachDB does not run the constraint and row-level policy checks on the `VALUES` clause if the candidate row has a conflict. [#35370](https://github.com/cockroachdb/cockroach/issues/35370). +`ON CONFLICT ... DO NOTHING`: CockroachDB does not run the constraint and row-level policy checks on the `VALUES` clause if the candidate row has a conflict.. diff --git a/src/current/_includes/v25.2/known-limitations/rls-visibility-issue.md b/src/current/_includes/v25.2/known-limitations/rls-visibility-issue.md index 453059825a3..1937617066c 100644 --- a/src/current/_includes/v25.2/known-limitations/rls-visibility-issue.md +++ b/src/current/_includes/v25.2/known-limitations/rls-visibility-issue.md @@ -1 +1 @@ -Under certain conditions, such as when executing certain SQL functions, CockroachDB's row-level security (RLS) implementation exposes metadata about the number of restricted rows in a table. For example, when a user applies arbitrary SQL filters on a table with RLS enabled, it's possible for the user to see how many total rows are in the table; this count includes rows that the user does not have direct access to. This metadata leakage can also occur when statements like [`EXPLAIN ANALYZE`]({% link {{ page.version.version }}/explain.md %}) are used, as the output includes a count of the number of rows scanned by the query that can include the number of restricted rows, even though the rows themselves are not directly accessible. [#146952](https://github.com/cockroachdb/cockroach/issues/146952) +Under certain conditions, such as when executing certain SQL functions, CockroachDB's row-level security (RLS) implementation exposes metadata about the number of restricted rows in a table. For example, when a user applies arbitrary SQL filters on a table with RLS enabled, it's possible for the user to see how many total rows are in the table; this count includes rows that the user does not have direct access to. This metadata leakage can also occur when statements like [`EXPLAIN ANALYZE`]({% link {{ page.version.version }}/explain.md %}) are used, as the output includes a count of the number of rows scanned by the query that can include the number of restricted rows, even though the rows themselves are not directly accessible. diff --git a/src/current/_includes/v25.2/known-limitations/routine-limitations.md b/src/current/_includes/v25.2/known-limitations/routine-limitations.md index 4718c6c7abf..64c767950b6 100644 --- a/src/current/_includes/v25.2/known-limitations/routine-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/routine-limitations.md @@ -1,10 +1,10 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. [#122264](https://github.com/cockroachdb/cockroach/issues/122264) -- Routines cannot be created if they reference temporary tables. [#121375](https://github.com/cockroachdb/cockroach/issues/121375) -- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. [#121251](https://github.com/cockroachdb/cockroach/issues/121251) -- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. [#121247](https://github.com/cockroachdb/cockroach/issues/121247) -- Routines cannot be created with an `OUT` parameter of type `RECORD`. [#123448](https://github.com/cockroachdb/cockroach/issues/123448) -- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or stored procedures. [#110080](https://github.com/cockroachdb/cockroach/issues/110080) -- Polymorphic types cannot be cast to other types (e.g., `TEXT`) within routine parameters. [#123536](https://github.com/cockroachdb/cockroach/issues/123536) -- Routine parameters and return types cannot be declared using the `ANYENUM` polymorphic type, which is able to match any [`ENUM`]({% link {{ page.version.version }}/enum.md %}) type. [123048](https://github.com/cockroachdb/cockroach/issues/123048) \ No newline at end of file +- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. +- Routines cannot be created if they reference temporary tables. +- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. +- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. +- Routines cannot be created with an `OUT` parameter of type `RECORD`. +- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or stored procedures. +- Polymorphic types cannot be cast to other types (e.g., `TEXT`) within routine parameters. +- Routine parameters and return types cannot be declared using the `ANYENUM` polymorphic type, which is able to match any [`ENUM`]({% link {{ page.version.version }}/enum.md %}) type. diff --git a/src/current/_includes/v25.2/known-limitations/row-level-ttl-limitations.md b/src/current/_includes/v25.2/known-limitations/row-level-ttl-limitations.md index c386ba576d7..352e5034bbd 100644 --- a/src/current/_includes/v25.2/known-limitations/row-level-ttl-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/row-level-ttl-limitations.md @@ -1,5 +1,5 @@ - Any queries you run against tables with Row-Level TTL enabled (or against tables that have [foreign keys]({% link {{page.version.version}}/foreign-key.md %}) that reference TTL-enabled tables) do not filter out expired rows from the result set (this includes [`UPDATE`s]({% link {{ page.version.version }}/update.md %}) and [`DELETE`s]({% link {{ page.version.version }}/delete.md %})). This feature may be added in a future release. For now, follow the instructions in [Filter out expired rows from a selection query]({% link {{ page.version.version }}/row-level-ttl.md %}#filter-out-expired-rows-from-a-selection-query). -- Tables with Row-Level TTL can be referenced by [foreign keys]({% link {{page.version.version}}/foreign-key.md %}). TTL deletes are issued as regular [`DELETE`]({% link {{ page.version.version }}/delete.md %}) statements, so inbound foreign keys apply. If an inbound foreign key uses `ON DELETE RESTRICT` and referencing rows exist, the TTL job fails with a foreign key violation. [#101372](https://github.com/cockroachdb/cockroach/issues/101372) +- Tables with Row-Level TTL can be referenced by [foreign keys]({% link {{page.version.version}}/foreign-key.md %}). TTL deletes are issued as regular [`DELETE`]({% link {{ page.version.version }}/delete.md %}) statements, so inbound foreign keys apply. If an inbound foreign key uses `ON DELETE RESTRICT` and referencing rows exist, the TTL job fails with a foreign key violation. - Enabling Row-Level TTL on a table with multiple [secondary indexes]({% link {{ page.version.version }}/indexes.md %}) can have negative performance impacts on a cluster, including increased [latency]({% link {{ page.version.version }}/common-issues-to-monitor.md %}#service-latency) and [contention]({% link {{ page.version.version }}/performance-best-practices-overview.md %}#transaction-contention). This is particularly true for large tables with terabytes of data and billions of rows that are split up into multiple ranges across separate nodes. - Increased latency may occur because secondary indexes aren't necessarily stored on the same underlying [ranges]({% link {{ page.version.version }}/architecture/overview.md %}#architecture-range) as a table's [primary indexes]({% link {{ page.version.version }}/indexes.md %}). Further, the secondary indexes' ranges may have [leaseholders]({% link {{ page.version.version }}/architecture/overview.md %}#architecture-leaseholder) located on different nodes than the primary index. - Increased contention may occur because [intents]({% link {{ page.version.version }}/architecture/transaction-layer.md %}#write-intents) must be written as part of performing the deletions. diff --git a/src/current/_includes/v25.2/known-limitations/select-for-update-limitations.md b/src/current/_includes/v25.2/known-limitations/select-for-update-limitations.md index 1ed68e692e4..0452567352a 100644 --- a/src/current/_includes/v25.2/known-limitations/select-for-update-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/select-for-update-limitations.md @@ -1,6 +1,6 @@ -- `SKIP LOCKED` cannot be used for tables with multiple [column families]({% link {{ page.version.version }}/column-families.md %}). [#160961](https://github.com/cockroachdb/cockroach/issues/160961) +- `SKIP LOCKED` cannot be used for tables with multiple [column families]({% link {{ page.version.version }}/column-families.md %}). - By default under `SERIALIZABLE` isolation, locks acquired using `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` are implemented as fast, in-memory [unreplicated locks](architecture/transaction-layer.html#unreplicated-locks). If a [lease transfer]({% link {{ page.version.version }}/architecture/replication-layer.md %}#leases) or [range split/merge]({% link {{ page.version.version }}/architecture/distribution-layer.md %}#range-merges) occurs on a range held by an unreplicated lock, the lock is dropped. The following behaviors can occur: - The desired ordering of concurrent accesses to one or more rows of a table expressed by your use of `SELECT ... FOR UPDATE` may not be preserved (that is, a transaction _B_ against some table _T_ that was supposed to wait behind another transaction _A_ operating on _T_ may not wait for transaction _A_). - The transaction that acquired the (now dropped) unreplicated lock may fail to commit, leading to [transaction retry errors with code `40001`]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}) and the [`restart transaction` error message]({% link {{ page.version.version }}/common-errors.md %}#restart-transaction). - When running under `SERIALIZABLE` isolation, `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` locks should be thought of as best-effort, and should not be relied upon for correctness. Note that [serialization]({% link {{ page.version.version }}/demo-serializable.md %}) is preserved despite this limitation. This limitation is fixed when the `enable_durable_locking_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}#enable-durable-locking-for-serializable) is set to `true`. This limitation does **not** apply to [`READ COMMITTED`]({% link {{ page.version.version }}/read-committed.md %}) transactions. \ No newline at end of file + When running under `SERIALIZABLE` isolation, `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` locks should be thought of as best-effort, and should not be relied upon for correctness. Note that [serialization]({% link {{ page.version.version }}/demo-serializable.md %}) is preserved despite this limitation. This limitation is fixed when the `enable_durable_locking_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}#enable-durable-locking-for-serializable) is set to `true`. This limitation does **not** apply to [`READ COMMITTED`]({% link {{ page.version.version }}/read-committed.md %}) transactions. diff --git a/src/current/_includes/v25.2/known-limitations/set-transaction-no-rollback.md b/src/current/_includes/v25.2/known-limitations/set-transaction-no-rollback.md index 21864daa9de..84bc12ed8db 100644 --- a/src/current/_includes/v25.2/known-limitations/set-transaction-no-rollback.md +++ b/src/current/_includes/v25.2/known-limitations/set-transaction-no-rollback.md @@ -14,4 +14,4 @@ timezone 3 ~~~ -[#69396](https://github.com/cockroachdb/cockroach/issues/69396), [#148766](https://github.com/cockroachdb/cockroach/issues/148766) \ No newline at end of file +, diff --git a/src/current/_includes/v25.2/known-limitations/show-backup-symlink.md b/src/current/_includes/v25.2/known-limitations/show-backup-symlink.md index 38ba86fb28f..f47d7f3887b 100644 --- a/src/current/_includes/v25.2/known-limitations/show-backup-symlink.md +++ b/src/current/_includes/v25.2/known-limitations/show-backup-symlink.md @@ -1 +1 @@ -[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. [#70260](https://github.com/cockroachdb/cockroach/issues/70260) \ No newline at end of file +[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. diff --git a/src/current/_includes/v25.2/known-limitations/sql-cursors.md b/src/current/_includes/v25.2/known-limitations/sql-cursors.md index bceff96d5a6..0413bfd5251 100644 --- a/src/current/_includes/v25.2/known-limitations/sql-cursors.md +++ b/src/current/_includes/v25.2/known-limitations/sql-cursors.md @@ -1,8 +1,8 @@ CockroachDB implements SQL {% if page.name == "known-limitations.md" %} [cursor]({% link {{ page.version.version }}/cursors.md %}) {% else %} cursor {% endif %} support with the following limitations: -- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. [#77099](https://github.com/cockroachdb/cockroach/issues/77099) -- Scrollable cursor (also known as reverse `FETCH`) is not supported. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. [#77103](https://github.com/cockroachdb/cockroach/issues/77103) -- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. [#77104](https://github.com/cockroachdb/cockroach/issues/77104) +- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. +- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. +- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. +- Scrollable cursor (also known as reverse `FETCH`) is not supported. +- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. +- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. diff --git a/src/current/_includes/v25.2/known-limitations/srid-4326-limitations.md b/src/current/_includes/v25.2/known-limitations/srid-4326-limitations.md index b556a9fbecd..7cfda23749b 100644 --- a/src/current/_includes/v25.2/known-limitations/srid-4326-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/srid-4326-limitations.md @@ -1 +1 @@ -Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. [#55903](https://github.com/cockroachdb/cockroach/issues/55903) \ No newline at end of file +Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. diff --git a/src/current/_includes/v25.2/known-limitations/stats-refresh-upgrade.md b/src/current/_includes/v25.2/known-limitations/stats-refresh-upgrade.md index 3d5a8d26325..c8239a02bcd 100644 --- a/src/current/_includes/v25.2/known-limitations/stats-refresh-upgrade.md +++ b/src/current/_includes/v25.2/known-limitations/stats-refresh-upgrade.md @@ -1 +1 @@ -- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). [#54816](https://github.com/cockroachdb/cockroach/issues/54816) +- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). diff --git a/src/current/_includes/v25.2/known-limitations/stored-proc-limitations.md b/src/current/_includes/v25.2/known-limitations/stored-proc-limitations.md index b2ba1b61562..5ca8442d306 100644 --- a/src/current/_includes/v25.2/known-limitations/stored-proc-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/stored-proc-limitations.md @@ -1,3 +1,3 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- `COMMIT` and `ROLLBACK` statements are not supported within nested procedures. [#122266](https://github.com/cockroachdb/cockroach/issues/122266) \ No newline at end of file +- `COMMIT` and `ROLLBACK` statements are not supported within nested procedures. diff --git a/src/current/_includes/v25.2/known-limitations/trigger-limitations.md b/src/current/_includes/v25.2/known-limitations/trigger-limitations.md index 7373cd486e7..eaf6e6a493a 100644 --- a/src/current/_includes/v25.2/known-limitations/trigger-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/trigger-limitations.md @@ -1,6 +1,6 @@ -- `CREATE OR REPLACE TRIGGER` is not supported. [#128422](https://github.com/cockroachdb/cockroach/issues/128422) -- Statement-level triggers are not supported. [#126362](https://github.com/cockroachdb/cockroach/issues/126362) -- `INSTEAD OF` triggers are not supported. [#126363](https://github.com/cockroachdb/cockroach/issues/126363) -- A [trigger function]({% link {{ page.version.version }}/triggers.md %}#trigger-function) that is used in an existing trigger cannot be replaced with `CREATE OR REPLACE` syntax. To use `CREATE OR REPLACE`, first [drop any triggers]({% link {{ page.version.version }}/drop-trigger.md %}) that are using the function. [#134555](https://github.com/cockroachdb/cockroach/issues/134555) -- Hidden columns are not visible to triggers. [#133331](https://github.com/cockroachdb/cockroach/issues/133331) -- {% include {{ page.version.version }}/known-limitations/drop-trigger-limitations.md %} \ No newline at end of file +- `CREATE OR REPLACE TRIGGER` is not supported. +- Statement-level triggers are not supported. +- `INSTEAD OF` triggers are not supported. +- A [trigger function]({% link {{ page.version.version }}/triggers.md %}#trigger-function) that is used in an existing trigger cannot be replaced with `CREATE OR REPLACE` syntax. To use `CREATE OR REPLACE`, first [drop any triggers]({% link {{ page.version.version }}/drop-trigger.md %}) that are using the function. +- Hidden columns are not visible to triggers. +- {% include {{ page.version.version }}/known-limitations/drop-trigger-limitations.md %} diff --git a/src/current/_includes/v25.2/known-limitations/trigram-unsupported-syntax.md b/src/current/_includes/v25.2/known-limitations/trigram-unsupported-syntax.md index 494730c7ae8..bb726ac4af9 100644 --- a/src/current/_includes/v25.2/known-limitations/trigram-unsupported-syntax.md +++ b/src/current/_includes/v25.2/known-limitations/trigram-unsupported-syntax.md @@ -5,5 +5,3 @@ - `<->`, `<<->`, `<->>`, `<<<->`, and `<->>>` comparisons. - Acceleration on [regex string matching]({% link {{ page.version.version }}/scalar-expressions.md %}#string-matching-using-posix-regular-expressions). - `%` comparisons, `show_trgm`, and trigram index creation on [collated strings]({% link {{ page.version.version }}/collate.md %}). - -[#41285](https://github.com/cockroachdb/cockroach/issues/41285) \ No newline at end of file diff --git a/src/current/_includes/v25.2/known-limitations/udf-limitations.md b/src/current/_includes/v25.2/known-limitations/udf-limitations.md index 8b2ef66b403..83acd88111a 100644 --- a/src/current/_includes/v25.2/known-limitations/udf-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/udf-limitations.md @@ -1,9 +1,9 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. [#122945](https://github.com/cockroachdb/cockroach/issues/122945) +- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. - User-defined functions are not currently supported in: - - Expressions (column, index, constraint) in tables. [#87699](https://github.com/cockroachdb/cockroach/issues/87699) - - Views. [#87699](https://github.com/cockroachdb/cockroach/issues/87699) -- User-defined functions cannot call themselves recursively. [#93049](https://github.com/cockroachdb/cockroach/issues/93049) -- The `setval` function cannot be resolved when used inside UDF bodies. [#110860](https://github.com/cockroachdb/cockroach/issues/110860) -- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) in UDFs is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) \ No newline at end of file + - Expressions (column, index, constraint) in tables. + - Views. +- User-defined functions cannot call themselves recursively. +- The `setval` function cannot be resolved when used inside UDF bodies. +- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) in UDFs is not supported. diff --git a/src/current/_includes/v25.2/known-limitations/vector-limitations.md b/src/current/_includes/v25.2/known-limitations/vector-limitations.md index 603d96f9396..e16f30a8066 100644 --- a/src/current/_includes/v25.2/known-limitations/vector-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/vector-limitations.md @@ -1,7 +1,7 @@ - {% include {{ page.version.version }}/sql/vector-batch-inserts.md %} -- Creating a vector index through a backfill disables mutations ([`INSERT`]({% link {{ page.version.version }}/insert.md %}), [`UPSERT`]({% link {{ page.version.version }}/upsert.md %}), [`UPDATE`]({% link {{ page.version.version }}/update.md %}), [`DELETE`]({% link {{ page.version.version }}/delete.md %})) on the table. [#144443](https://github.com/cockroachdb/cockroach/issues/144443) -- `IMPORT INTO` is not supported on tables with vector indexes. You can import the vectors first and create the index after import is complete. [#145227](https://github.com/cockroachdb/cockroach/issues/145227) -- Only L2 distance (`<->`) searches are accelerated. [#144016](https://github.com/cockroachdb/cockroach/issues/144016) -- Index acceleration with filters is only supported if the filters match prefix columns. [#146145](https://github.com/cockroachdb/cockroach/issues/146145) -- Index recommendations are not provided for vector indexes. [#146146](https://github.com/cockroachdb/cockroach/issues/146146) -- Vector index queries may return incorrect results when the underlying table uses multiple column families. [#146046](https://github.com/cockroachdb/cockroach/issues/146046) \ No newline at end of file +- Creating a vector index through a backfill disables mutations ([`INSERT`]({% link {{ page.version.version }}/insert.md %}), [`UPSERT`]({% link {{ page.version.version }}/upsert.md %}), [`UPDATE`]({% link {{ page.version.version }}/update.md %}), [`DELETE`]({% link {{ page.version.version }}/delete.md %})) on the table. +- `IMPORT INTO` is not supported on tables with vector indexes. You can import the vectors first and create the index after import is complete. +- Only L2 distance (`<->`) searches are accelerated. +- Index acceleration with filters is only supported if the filters match prefix columns. +- Index recommendations are not provided for vector indexes. +- Vector index queries may return incorrect results when the underlying table uses multiple column families. diff --git a/src/current/_includes/v25.2/known-limitations/vectorized-engine-limitations.md b/src/current/_includes/v25.2/known-limitations/vectorized-engine-limitations.md index daea59ebf88..84f991a0e63 100644 --- a/src/current/_includes/v25.2/known-limitations/vectorized-engine-limitations.md +++ b/src/current/_includes/v25.2/known-limitations/vectorized-engine-limitations.md @@ -1,2 +1,2 @@ -- The vectorized engine does not support queries containing a join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). [#38018](https://github.com/cockroachdb/cockroach/issues/38018) +- The vectorized engine does not support queries containing a join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). - The vectorized engine does not support [working with spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}). Queries with [geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) or [spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}) will revert to the row-oriented execution engine. diff --git a/src/current/_includes/v25.2/misc/tooling.md b/src/current/_includes/v25.2/misc/tooling.md index dcd24363435..ec553f1b383 100644 --- a/src/current/_includes/v25.2/misc/tooling.md +++ b/src/current/_includes/v25.2/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Example Apps]({% link {{ page.version.version }}/example-apps.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). diff --git a/src/current/_includes/v25.2/prod-deployment/decommission-pre-flight-checks.md b/src/current/_includes/v25.2/prod-deployment/decommission-pre-flight-checks.md index b267379384b..f7a613dff78 100644 --- a/src/current/_includes/v25.2/prod-deployment/decommission-pre-flight-checks.md +++ b/src/current/_includes/v25.2/prod-deployment/decommission-pre-flight-checks.md @@ -14,5 +14,5 @@ Failed running "node decommission" These checks can be skipped by [passing the flag `--checks=skip` to `cockroach node decommission`]({% link {{ page.version.version }}/cockroach-node.md %}#decommission-checks). {{site.data.alerts.callout_info}} -The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see [cockroachdb/cockroach#71757](https://github.com/cockroachdb/cockroach/issues/71757) +The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see {{site.data.alerts.end}} diff --git a/src/current/_includes/v25.2/sql/savepoints-and-high-priority-transactions.md b/src/current/_includes/v25.2/sql/savepoints-and-high-priority-transactions.md index c6de489e641..ce124bc3209 100644 --- a/src/current/_includes/v25.2/sql/savepoints-and-high-priority-transactions.md +++ b/src/current/_includes/v25.2/sql/savepoints-and-high-priority-transactions.md @@ -1 +1 @@ -[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. For more information, see GitHub issue [#46414](https://www.github.com/cockroachdb/cockroach/issues/46414). +[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. diff --git a/src/current/_includes/v25.2/sql/unsupported-postgres-features.md b/src/current/_includes/v25.2/sql/unsupported-postgres-features.md index a89650e38e9..a9a344b8096 100644 --- a/src/current/_includes/v25.2/sql/unsupported-postgres-features.md +++ b/src/current/_includes/v25.2/sql/unsupported-postgres-features.md @@ -1,10 +1,10 @@ ### `CREATE DOMAIN` -CockroachDB does not support `CREATE DOMAIN`. Tracking issue: [cockroachdb/cockroach#108659](https://github.com/cockroachdb/cockroach/issues/108659). +CockroachDB does not support `CREATE DOMAIN`. Tracking issue: . ### PostgreSQL range types -CockroachDB does not support PostgreSQL range types. Tracking issue: [cockroachdb/cockroach#128638](https://github.com/cockroachdb/cockroach/issues/128638). +CockroachDB does not support PostgreSQL range types. Tracking issue: . ### Other unsupported features diff --git a/src/current/_includes/v25.3/backward-incompatible/alpha.1.md b/src/current/_includes/v25.3/backward-incompatible/alpha.1.md index b8b1f37d137..e6240dd3d66 100644 --- a/src/current/_includes/v25.3/backward-incompatible/alpha.1.md +++ b/src/current/_includes/v25.3/backward-incompatible/alpha.1.md @@ -1,15 +1,15 @@ -- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). [#81298][#81298] -- In the Cockroach CLI, [`BOOL` values](../v23.1/bool.html) are now formatted as `t` or `f` instead of `True` or `False`. [#81943][#81943] -- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node](../v23.1/node-shutdown.html) gracefully, send a `SIGTERM` signal to it. [#82988][#82988] -- Added a cluster version to allow the [Pebble storage engine](../v23.1/architecture/storage-layer.html#pebble) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree](../v23.1/architecture/storage-layer.html#log-structured-merge-trees)). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. [#84887][#84887] +- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). +- In the Cockroach CLI, [`BOOL` values](../v23.1/bool.html) are now formatted as `t` or `f` instead of `True` or `False`. +- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node](../v23.1/node-shutdown.html) gracefully, send a `SIGTERM` signal to it. +- Added a cluster version to allow the [Pebble storage engine](../v23.1/architecture/storage-layer.html#pebble) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree](../v23.1/architecture/storage-layer.html#log-structured-merge-trees)). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. - Using a single TCP port listener for both RPC (node-node) and SQL client connections is now deprecated. This capability **will be removed** in the next version of CockroachDB. Instead, make one of the following configuration changes to your CockroachDB deployment: - Preferred: keep port `26257` for SQL, and allocate a new port, e.g., `26357`, for node-node RPC connections. For example, you might configure a node with the flags `--listen-addr=:26357 --sql-addr=:26257`, where subsequent nodes seeking to join would then use the flag `--join=othernode:26357,othernode:26257`. This will become the default configuration in the next version of CockroachDB. When using this mode of operation, care should be taken to use a `--join` flag that includes both the previous and new port numbers for other nodes, so that no network partition occurs during the upgrade. - - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. [#85671][#85671] -- If no `nullif` option is specified while using [`IMPORT CSV`](../v23.1/import.html), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. [#84487][#84487] -- [`COPY FROM`](../v23.1/copy.html) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. [#85986][#85986] -- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link v25.3/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. [#81310][#81310] -- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. [#81266][#81266] -- Removed the deprecated `GRANT` privilege. [#81310][#81310] -- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. [#83134][#83134] -- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. [#82560][#82560] -- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link v25.3/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. [#76834][#76834] + - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. +- If no `nullif` option is specified while using [`IMPORT CSV`](../v23.1/import.html), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. +- [`COPY FROM`](../v23.1/copy.html) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. +- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link v25.3/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. +- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. +- Removed the deprecated `GRANT` privilege. +- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. +- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. +- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link v25.3/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. diff --git a/src/current/_includes/v25.3/cdc/avro-udt-composite.md b/src/current/_includes/v25.3/cdc/avro-udt-composite.md index 7a34fbd3253..da8b7b30a3e 100644 --- a/src/current/_includes/v25.3/cdc/avro-udt-composite.md +++ b/src/current/_includes/v25.3/cdc/avro-udt-composite.md @@ -1 +1 @@ -A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). [#102903](https://github.com/cockroachdb/cockroach/issues/102903) \ No newline at end of file +A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). diff --git a/src/current/_includes/v25.3/cdc/csv-udt-composite.md b/src/current/_includes/v25.3/cdc/csv-udt-composite.md index 834bddd8366..fc4597e8e98 100644 --- a/src/current/_includes/v25.3/cdc/csv-udt-composite.md +++ b/src/current/_includes/v25.3/cdc/csv-udt-composite.md @@ -1 +1 @@ -A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). [#102905](https://github.com/cockroachdb/cockroach/issues/102905) \ No newline at end of file +A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). diff --git a/src/current/_includes/v25.3/faq/what-is-crdb.md b/src/current/_includes/v25.3/faq/what-is-crdb.md index 28857ed61fa..14e9080a4f0 100644 --- a/src/current/_includes/v25.3/faq/what-is-crdb.md +++ b/src/current/_includes/v25.3/faq/what-is-crdb.md @@ -1,7 +1,7 @@ CockroachDB is a [distributed SQL](https://www.cockroachlabs.com/blog/what-is-distributed-sql/) database built on a transactional and strongly-consistent key-value store. It **scales** horizontally; **survives** disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention; supports **strongly-consistent** ACID transactions; and provides a familiar **SQL** API for structuring, manipulating, and querying data. -CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies, and the [source code](https://github.com/cockroachdb/cockroach) is freely available. +CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies. {{site.data.alerts.callout_success}} For a deeper dive into CockroachDB's capabilities and how it fits into the database landscape, take the free [**Intro to Distributed SQL and CockroachDB**](https://university.cockroachlabs.com/courses/course-v1:crl+intro-to-distributed-sql-and-cockroachdb+self-paced/about) course on Cockroach University. -{{site.data.alerts.end}} \ No newline at end of file +{{site.data.alerts.end}} diff --git a/src/current/_includes/v25.3/finalization-required/119894.md b/src/current/_includes/v25.3/finalization-required/119894.md index f2b393c3c0e..c65c82b83d5 100644 --- a/src/current/_includes/v25.3/finalization-required/119894.md +++ b/src/current/_includes/v25.3/finalization-required/119894.md @@ -1 +1 @@ -[Splits](https://cockroachlabs.com/docs/{{ include.version }}/architecture/distribution-layer#range-splits) no longer hold [latches](https://cockroachlabs.com/docs/architecture/distribution-layer.#latch-manager) for time proportional to the range size while computing [MVCC](https://cockroachlabs.com/docs/{{ include.version }}/architecture/storage-layer#mvcc) statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. [#119894](https://github.com/cockroachdb/cockroach/pull/119894) +[Splits](https://cockroachlabs.com/docs/{{ include.version }}/architecture/distribution-layer#range-splits) no longer hold [latches](https://cockroachlabs.com/docs/architecture/distribution-layer.#latch-manager) for time proportional to the range size while computing [MVCC](https://cockroachlabs.com/docs/{{ include.version }}/architecture/storage-layer#mvcc) statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. diff --git a/src/current/_includes/v25.3/known-limitations/alter-changefeed-cdc-queries.md b/src/current/_includes/v25.3/known-limitations/alter-changefeed-cdc-queries.md index 56dd7eeaacd..fbd2a285c6e 100644 --- a/src/current/_includes/v25.3/known-limitations/alter-changefeed-cdc-queries.md +++ b/src/current/_includes/v25.3/known-limitations/alter-changefeed-cdc-queries.md @@ -1 +1 @@ -{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. [#83033](https://github.com/cockroachdb/cockroach/issues/83033) \ No newline at end of file +{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. diff --git a/src/current/_includes/v25.3/known-limitations/alter-changefeed-limitations.md b/src/current/_includes/v25.3/known-limitations/alter-changefeed-limitations.md index a183f2964f4..d1cb7303a99 100644 --- a/src/current/_includes/v25.3/known-limitations/alter-changefeed-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/alter-changefeed-limitations.md @@ -1,8 +1,8 @@ -- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) statement. [#77171](https://github.com/cockroachdb/cockroach/issues/77171) +- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) statement. - CockroachDB does not keep track of the [`initial_scan`]({% link {{ page.version.version }}/create-changefeed.md %}#initial-scan) option applied to tables when it is set to `yes` or `only`. For example: ~~~ sql ALTER CHANGEFEED {job_ID} ADD table WITH initial_scan = 'yes'; ~~~ - This will trigger an initial scan of the table and the changefeed will track `table`. The changefeed will **not** track `initial_scan` specified as an option, so it will not display in the output or after a `SHOW CHANGEFEED JOB` statement. \ No newline at end of file + This will trigger an initial scan of the table and the changefeed will track `table`. The changefeed will **not** track `initial_scan` specified as an option, so it will not display in the output or after a `SHOW CHANGEFEED JOB` statement. diff --git a/src/current/_includes/v25.3/known-limitations/alter-view-limitations.md b/src/current/_includes/v25.3/known-limitations/alter-view-limitations.md index 642bed6ce08..4cfdf9b8a1a 100644 --- a/src/current/_includes/v25.3/known-limitations/alter-view-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/alter-view-limitations.md @@ -1,4 +1,4 @@ `ALTER VIEW` does not currently support: - Changing the [`SELECT`]({% link {{ page.version.version }}/select-clause.md %}) statement executed by a view. Instead, you must drop the existing view and create a new view. -- Renaming a view that other views depend on. This feature may be added in the future. [#10083](https://github.com/cockroachdb/cockroach/issues/10083) \ No newline at end of file +- Renaming a view that other views depend on. This feature may be added in the future. diff --git a/src/current/_includes/v25.3/known-limitations/aost-limitations.md b/src/current/_includes/v25.3/known-limitations/aost-limitations.md index 811c884d08d..c0d92fff59b 100644 --- a/src/current/_includes/v25.3/known-limitations/aost-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/aost-limitations.md @@ -1 +1 @@ -CockroachDB does not support placeholders in {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %}. The time value must be a constant value embedded in the SQL string. [#30955](https://github.com/cockroachdb/cockroach/issues/30955) \ No newline at end of file +CockroachDB does not support placeholders in {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %}. The time value must be a constant value embedded in the SQL string. diff --git a/src/current/_includes/v25.3/known-limitations/cannot-refresh-materialized-views-inside-transactions.md b/src/current/_includes/v25.3/known-limitations/cannot-refresh-materialized-views-inside-transactions.md index b0aaf728177..cd93d6ad8c8 100644 --- a/src/current/_includes/v25.3/known-limitations/cannot-refresh-materialized-views-inside-transactions.md +++ b/src/current/_includes/v25.3/known-limitations/cannot-refresh-materialized-views-inside-transactions.md @@ -23,5 +23,3 @@ ERROR: cannot refresh view in an explicit transaction SQLSTATE: 25000 ~~~ - - [#66008](https://github.com/cockroachdb/cockroach/issues/66008) diff --git a/src/current/_includes/v25.3/known-limitations/cdc-queries-column-families.md b/src/current/_includes/v25.3/known-limitations/cdc-queries-column-families.md index 505a8c9700e..ea64b9821ea 100644 --- a/src/current/_includes/v25.3/known-limitations/cdc-queries-column-families.md +++ b/src/current/_includes/v25.3/known-limitations/cdc-queries-column-families.md @@ -1 +1 @@ -Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. [#127761](https://github.com/cockroachdb/cockroach/issues/127761) \ No newline at end of file +Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. diff --git a/src/current/_includes/v25.3/known-limitations/cdc-queries.md b/src/current/_includes/v25.3/known-limitations/cdc-queries.md index 2839eba5eda..a19a4a9a9c4 100644 --- a/src/current/_includes/v25.3/known-limitations/cdc-queries.md +++ b/src/current/_includes/v25.3/known-limitations/cdc-queries.md @@ -3,5 +3,5 @@ - The following are not permitted in CDC queries: - [Volatile functions]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility). - Sub-select queries. - - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). [#98237](https://github.com/cockroachdb/cockroach/issues/98237) -- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. [#83835](https://github.com/cockroachdb/cockroach/issues/83835) + - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). +- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. diff --git a/src/current/_includes/v25.3/known-limitations/cdc.md b/src/current/_includes/v25.3/known-limitations/cdc.md index a473e94367c..9f691268aeb 100644 --- a/src/current/_includes/v25.3/known-limitations/cdc.md +++ b/src/current/_includes/v25.3/known-limitations/cdc.md @@ -1,8 +1,8 @@ -- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). [#73435](https://github.com/cockroachdb/cockroach/issues/73435) +- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). - {% include {{page.version.version}}/cdc/kafka-vpc-limitation.md %} -- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#insecure-tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. [#73431](https://github.com/cockroachdb/cockroach/issues/73431) -- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. [#73432](https://github.com/cockroachdb/cockroach/issues/73432) -- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. [#79452](https://github.com/cockroachdb/cockroach/issues/79452) +- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#insecure-tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. +- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. +- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. - {% include {{page.version.version}}/cdc/types-udt-composite-general.md %} The following limitations apply: - {% include {{page.version.version}}/cdc/avro-udt-composite.md %} - - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} \ No newline at end of file + - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} diff --git a/src/current/_includes/v25.3/known-limitations/changefeed-column-family-message.md b/src/current/_includes/v25.3/known-limitations/changefeed-column-family-message.md index 41744b9b4b4..785cabfebe1 100644 --- a/src/current/_includes/v25.3/known-limitations/changefeed-column-family-message.md +++ b/src/current/_includes/v25.3/known-limitations/changefeed-column-family-message.md @@ -1 +1 @@ -When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. [#127736](https://github.com/cockroachdb/cockroach/issues/127736) \ No newline at end of file +When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. diff --git a/src/current/_includes/v25.3/known-limitations/citext-limitations.md b/src/current/_includes/v25.3/known-limitations/citext-limitations.md index df0fbc0ff91..0874b80ecce 100644 --- a/src/current/_includes/v25.3/known-limitations/citext-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/citext-limitations.md @@ -1 +1 @@ -- `CITEXT` types are not currently compatible with the `LIKE` and `ILIKE` operators. [#149791](https://github.com/cockroachdb/cockroach/issues/149791) \ No newline at end of file +- `CITEXT` types are not currently compatible with the `LIKE` and `ILIKE` operators. diff --git a/src/current/_includes/v25.3/known-limitations/copy-syntax.md b/src/current/_includes/v25.3/known-limitations/copy-syntax.md index e64a075dcac..90d35df5754 100644 --- a/src/current/_includes/v25.3/known-limitations/copy-syntax.md +++ b/src/current/_includes/v25.3/known-limitations/copy-syntax.md @@ -1,5 +1,5 @@ CockroachDB does not yet support the following `COPY` syntax: - - `COPY ... WITH FREEZE`. [#85573](https://github.com/cockroachdb/cockroach/issues/85573) - - `COPY ... WITH QUOTE`. [#85574](https://github.com/cockroachdb/cockroach/issues/85574) - - `COPY ... FROM ... WHERE `. [#54580](https://github.com/cockroachdb/cockroach/issues/54580) + - `COPY ... WITH FREEZE`. + - `COPY ... WITH QUOTE`. + - `COPY ... FROM ... WHERE `. diff --git a/src/current/_includes/v25.3/known-limitations/create-statistics-aost-limitation.md b/src/current/_includes/v25.3/known-limitations/create-statistics-aost-limitation.md index 09f86f51c48..7a2a39034de 100644 --- a/src/current/_includes/v25.3/known-limitations/create-statistics-aost-limitation.md +++ b/src/current/_includes/v25.3/known-limitations/create-statistics-aost-limitation.md @@ -1 +1 @@ -The `ANALYZE` alias {% if page.name != "create-statistics.md" %}of [`CREATE STATISTICS`]({% link {{ page.version.version }}/create-statistics.md %}){% endif %} does not support specifying an {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %} timestamp. `ANALYZE` statements use `AS OF SYSTEM TIME '-0.001ms'` automatically. For more control over the statistics interval, use the `CREATE STATISTICS` syntax instead. [#96430](https://github.com/cockroachdb/cockroach/issues/96430) \ No newline at end of file +The `ANALYZE` alias {% if page.name != "create-statistics.md" %}of [`CREATE STATISTICS`]({% link {{ page.version.version }}/create-statistics.md %}){% endif %} does not support specifying an {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %} timestamp. `ANALYZE` statements use `AS OF SYSTEM TIME '-0.001ms'` automatically. For more control over the statistics interval, use the `CREATE STATISTICS` syntax instead. diff --git a/src/current/_includes/v25.3/known-limitations/distsql-heterogeneous-endianness.md b/src/current/_includes/v25.3/known-limitations/distsql-heterogeneous-endianness.md index 9194395dc04..6249f78e719 100644 --- a/src/current/_includes/v25.3/known-limitations/distsql-heterogeneous-endianness.md +++ b/src/current/_includes/v25.3/known-limitations/distsql-heterogeneous-endianness.md @@ -1 +1 @@ -In clusters that mix big-endian and little-endian architectures, DistSQL may produce incorrect results because hash computations differ between the platforms. As a workaround on heterogeneous clusters, disable DistSQL with `SET CLUSTER SETTING sql.defaults.distsql = off`. [#148773](https://github.com/cockroachdb/cockroach/issues/148773) \ No newline at end of file +In clusters that mix big-endian and little-endian architectures, DistSQL may produce incorrect results because hash computations differ between the platforms. As a workaround on heterogeneous clusters, disable DistSQL with `SET CLUSTER SETTING sql.defaults.distsql = off`. diff --git a/src/current/_includes/v25.3/known-limitations/drop-column-partial-index.md b/src/current/_includes/v25.3/known-limitations/drop-column-partial-index.md index 9fd1811cc43..59d1e0e09b1 100644 --- a/src/current/_includes/v25.3/known-limitations/drop-column-partial-index.md +++ b/src/current/_includes/v25.3/known-limitations/drop-column-partial-index.md @@ -1 +1 @@ -CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}). [#97813](https://github.com/cockroachdb/cockroach/issues/97813). \ No newline at end of file +CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}).. diff --git a/src/current/_includes/v25.3/known-limitations/drop-owned-by-limitations.md b/src/current/_includes/v25.3/known-limitations/drop-owned-by-limitations.md index 95685f6adf1..563c3fc3746 100644 --- a/src/current/_includes/v25.3/known-limitations/drop-owned-by-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/drop-owned-by-limitations.md @@ -10,4 +10,4 @@ The phrase "synthetic privileges" in the error message refers to [system-level privileges]({% link {{ page.version.version }}/security-reference/authorization.md %}#supported-privileges). - The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. [#88149](https://github.com/cockroachdb/cockroach/issues/88149) \ No newline at end of file + The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. diff --git a/src/current/_includes/v25.3/known-limitations/drop-trigger-limitations.md b/src/current/_includes/v25.3/known-limitations/drop-trigger-limitations.md index 90745f7e17a..e8cf291750c 100644 --- a/src/current/_includes/v25.3/known-limitations/drop-trigger-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/drop-trigger-limitations.md @@ -1 +1 @@ -[`DROP TRIGGER`]({% link {{ page.version.version }}/drop-trigger.md %}) with `CASCADE` is not supported. [#128151](https://github.com/cockroachdb/cockroach/issues/128151) \ No newline at end of file +[`DROP TRIGGER`]({% link {{ page.version.version }}/drop-trigger.md %}) with `CASCADE` is not supported. diff --git a/src/current/_includes/v25.3/known-limitations/enforce-home-region-limitations.md b/src/current/_includes/v25.3/known-limitations/enforce-home-region-limitations.md index 693829358f7..6ab5abaccaf 100644 --- a/src/current/_includes/v25.3/known-limitations/enforce-home-region-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/enforce-home-region-limitations.md @@ -1 +1 @@ -With `enforce_home_region` enabled, CockroachDB currently validates home-region access during plan build. This can falsely reject queries (e.g., lookup joins) that would only read local data at execution time, returning a `Query has no home region` error. [#148375](https://github.com/cockroachdb/cockroach/issues/148375) \ No newline at end of file +With `enforce_home_region` enabled, CockroachDB currently validates home-region access during plan build. This can falsely reject queries (e.g., lookup joins) that would only read local data at execution time, returning a `Query has no home region` error. diff --git a/src/current/_includes/v25.3/known-limitations/expression-index-limitations.md b/src/current/_includes/v25.3/known-limitations/expression-index-limitations.md index c0e94185948..76724af9432 100644 --- a/src/current/_includes/v25.3/known-limitations/expression-index-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/expression-index-limitations.md @@ -1,6 +1,6 @@ - The expression cannot reference columns outside the index's table. - Functional expression output must be determined by the input arguments. For example, you can't use the [volatile function]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility) `now()` to create an index because its output depends on more than just the function arguments. -- CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). [#67900](https://github.com/cockroachdb/cockroach/issues/67900) +- CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). - CockroachDB does not support expressions as `ON CONFLICT` targets. This means that unique {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} cannot be selected as arbiters for [`INSERT .. ON CONFLICT`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause) statements. For example: {% include_cached copy-clipboard.html %} @@ -39,5 +39,3 @@ ^ HINT: try \h INSERT ~~~ - - [#67893](https://github.com/cockroachdb/cockroach/issues/67893) diff --git a/src/current/_includes/v25.3/known-limitations/forecasted-stats-limitations.md b/src/current/_includes/v25.3/known-limitations/forecasted-stats-limitations.md index c8753124a96..a7f8eb17ee2 100644 --- a/src/current/_includes/v25.3/known-limitations/forecasted-stats-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/forecasted-stats-limitations.md @@ -6,4 +6,4 @@ Although [`SHOW STATISTICS WITH FORECAST`]({% link {{ page.version.version }}/show-statistics.md %}#display-forecasted-statistics) shows the settings taking effect immediately, they do not actually take effect until new statistics are collected (as can be verified with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %})). - As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. [#123852](https://github.com/cockroachdb/cockroach/issues/123852) \ No newline at end of file + As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. diff --git a/src/current/_includes/v25.3/known-limitations/full-text-search-unsupported.md b/src/current/_includes/v25.3/known-limitations/full-text-search-unsupported.md index 7b5a83f2cae..ef6ff023f86 100644 --- a/src/current/_includes/v25.3/known-limitations/full-text-search-unsupported.md +++ b/src/current/_includes/v25.3/known-limitations/full-text-search-unsupported.md @@ -10,5 +10,3 @@ - `tsquery <-> tsquery` comparisons. - `!! tsquery` comparisons. - `tsquery @> tsquery` and `tsquery <@ tsquery` comparisons. - -[#41288](https://github.com/cockroachdb/cockroach/issues/41288) \ No newline at end of file diff --git a/src/current/_includes/v25.3/known-limitations/generic-query-plan-limitations.md b/src/current/_includes/v25.3/known-limitations/generic-query-plan-limitations.md index e28e66d5f32..e588b799305 100644 --- a/src/current/_includes/v25.3/known-limitations/generic-query-plan-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/generic-query-plan-limitations.md @@ -1,2 +1,2 @@ -- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. [#128916](https://github.com/cockroachdb/cockroach/issues/128916) -- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. [#128911](https://github.com/cockroachdb/cockroach/issues/128911) \ No newline at end of file +- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. +- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. diff --git a/src/current/_includes/v25.3/known-limitations/geospatial-heterogeneous-architectures.md b/src/current/_includes/v25.3/known-limitations/geospatial-heterogeneous-architectures.md index 4bb9633f138..e3fecb28c86 100644 --- a/src/current/_includes/v25.3/known-limitations/geospatial-heterogeneous-architectures.md +++ b/src/current/_includes/v25.3/known-limitations/geospatial-heterogeneous-architectures.md @@ -1 +1 @@ -Clusters that mix `s390x` with other CPU architectures are unsupported for geospatial workloads. Due to differences in how trigonometric functions are computed on `s390x` systems, geospatial queries in heterogeneous clusters with `s390x` are likely to get incorrect results. This can include taking a backup on one architecture and restoring it on another. [#148783](https://github.com/cockroachdb/cockroach/issues/148783) \ No newline at end of file +Clusters that mix `s390x` with other CPU architectures are unsupported for geospatial workloads. Due to differences in how trigonometric functions are computed on `s390x` systems, geospatial queries in heterogeneous clusters with `s390x` are likely to get incorrect results. This can include taking a backup on one architecture and restoring it on another. diff --git a/src/current/_includes/v25.3/known-limitations/jsonpath-limitations.md b/src/current/_includes/v25.3/known-limitations/jsonpath-limitations.md index 9b51bfb6e87..c4cbd7fb32b 100644 --- a/src/current/_includes/v25.3/known-limitations/jsonpath-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/jsonpath-limitations.md @@ -1,2 +1,2 @@ -- The following keywords are only accepted in lowercase: `strict`, `lax`, `exists`, `like_regex`, `flag`, `is unknown`, `to`, `last`. [#144255](https://github.com/cockroachdb/cockroach/issues/144255) -- Comparisons involving empty arrays (e.g., `SELECT jsonb_path_query('{"a": [1], "b": []}', '$.a == $.b');`) return `null`, rather than `false` as in PostgreSQL. [#145099](https://github.com/cockroachdb/cockroach/issues/145099) \ No newline at end of file +- The following keywords are only accepted in lowercase: `strict`, `lax`, `exists`, `like_regex`, `flag`, `is unknown`, `to`, `last`. +- Comparisons involving empty arrays (e.g., `SELECT jsonb_path_query('{"a": [1], "b": []}', '$.a == $.b');`) return `null`, rather than `false` as in PostgreSQL. diff --git a/src/current/_includes/v25.3/known-limitations/ldr-column-families.md b/src/current/_includes/v25.3/known-limitations/ldr-column-families.md index 2a7c3bbba52..67183137d9e 100644 --- a/src/current/_includes/v25.3/known-limitations/ldr-column-families.md +++ b/src/current/_includes/v25.3/known-limitations/ldr-column-families.md @@ -1 +1 @@ -Replicating tables cannot contain [column families]({% link {{ page.version.version }}/column-families.md %}). [#133562](https://github.com/cockroachdb/cockroach/issues/133562) \ No newline at end of file +Replicating tables cannot contain [column families]({% link {{ page.version.version }}/column-families.md %}). diff --git a/src/current/_includes/v25.3/known-limitations/ldr-composite-primary.md b/src/current/_includes/v25.3/known-limitations/ldr-composite-primary.md index ac897af35a7..6fdf7136e53 100644 --- a/src/current/_includes/v25.3/known-limitations/ldr-composite-primary.md +++ b/src/current/_includes/v25.3/known-limitations/ldr-composite-primary.md @@ -1 +1 @@ -The [primary key]({% link {{ page.version.version }}/primary-key.md %}) in replicating tables cannot contain composite types. [#133572](https://github.com/cockroachdb/cockroach/issues/133572) \ No newline at end of file +The [primary key]({% link {{ page.version.version }}/primary-key.md %}) in replicating tables cannot contain composite types. diff --git a/src/current/_includes/v25.3/known-limitations/ldr-indexes.md b/src/current/_includes/v25.3/known-limitations/ldr-indexes.md index 0bf7f60c2d4..3d0f52e9ad7 100644 --- a/src/current/_includes/v25.3/known-limitations/ldr-indexes.md +++ b/src/current/_includes/v25.3/known-limitations/ldr-indexes.md @@ -1 +1 @@ -Replicating tables cannot contain an [index]({% link {{ page.version.version }}/indexes.md %}) that requires expression evaluation before insertion. [#133560](https://github.com/cockroachdb/cockroach/issues/133560) \ No newline at end of file +Replicating tables cannot contain an [index]({% link {{ page.version.version }}/indexes.md %}) that requires expression evaluation before insertion. diff --git a/src/current/_includes/v25.3/known-limitations/ldr-sequences.md b/src/current/_includes/v25.3/known-limitations/ldr-sequences.md index 4e39f3630e3..069a693b7a0 100644 --- a/src/current/_includes/v25.3/known-limitations/ldr-sequences.md +++ b/src/current/_includes/v25.3/known-limitations/ldr-sequences.md @@ -1 +1 @@ -Replicating table cannot reference [sequences]({% link {{ page.version.version }}/create-sequence.md %}). [#132303](https://github.com/cockroachdb/cockroach/issues/132303) \ No newline at end of file +Replicating table cannot reference [sequences]({% link {{ page.version.version }}/create-sequence.md %}). diff --git a/src/current/_includes/v25.3/known-limitations/ldr-triggers.md b/src/current/_includes/v25.3/known-limitations/ldr-triggers.md index 55f8e885b97..9fc2b36777e 100644 --- a/src/current/_includes/v25.3/known-limitations/ldr-triggers.md +++ b/src/current/_includes/v25.3/known-limitations/ldr-triggers.md @@ -1 +1 @@ -Replicating tables cannot reference triggers. [#132301](https://github.com/cockroachdb/cockroach/issues/132301) \ No newline at end of file +Replicating tables cannot reference triggers. diff --git a/src/current/_includes/v25.3/known-limitations/ldr-udfs.md b/src/current/_includes/v25.3/known-limitations/ldr-udfs.md index fb642f14751..354a9e8243e 100644 --- a/src/current/_includes/v25.3/known-limitations/ldr-udfs.md +++ b/src/current/_includes/v25.3/known-limitations/ldr-udfs.md @@ -1 +1 @@ -Replicating tables cannot reference [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). [#132302](https://github.com/cockroachdb/cockroach/issues/132302) \ No newline at end of file +Replicating tables cannot reference [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). diff --git a/src/current/_includes/v25.3/known-limitations/locality-optimized-search-virtual-computed-columns.md b/src/current/_includes/v25.3/known-limitations/locality-optimized-search-virtual-computed-columns.md index d6acf418aa8..7a7392aab0d 100644 --- a/src/current/_includes/v25.3/known-limitations/locality-optimized-search-virtual-computed-columns.md +++ b/src/current/_includes/v25.3/known-limitations/locality-optimized-search-virtual-computed-columns.md @@ -1 +1 @@ -- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). [#68129](https://github.com/cockroachdb/cockroach/issues/68129) +- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). diff --git a/src/current/_includes/v25.3/known-limitations/materialized-views-no-stats.md b/src/current/_includes/v25.3/known-limitations/materialized-views-no-stats.md index 02f2bd787c4..a468db2895d 100644 --- a/src/current/_includes/v25.3/known-limitations/materialized-views-no-stats.md +++ b/src/current/_includes/v25.3/known-limitations/materialized-views-no-stats.md @@ -1 +1 @@ -- The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views. [#78181](https://github.com/cockroachdb/cockroach/issues/78181). +- The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views.. diff --git a/src/current/_includes/v25.3/known-limitations/multiple-arbiter-indexes.md b/src/current/_includes/v25.3/known-limitations/multiple-arbiter-indexes.md index c9861623314..b13890a2ee9 100644 --- a/src/current/_includes/v25.3/known-limitations/multiple-arbiter-indexes.md +++ b/src/current/_includes/v25.3/known-limitations/multiple-arbiter-indexes.md @@ -1 +1 @@ -CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. [#53170](https://github.com/cockroachdb/cockroach/issues/53170) \ No newline at end of file +CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. diff --git a/src/current/_includes/v25.3/known-limitations/plpgsql-limitations.md b/src/current/_includes/v25.3/known-limitations/plpgsql-limitations.md index c17954748a0..e368d43ab39 100644 --- a/src/current/_includes/v25.3/known-limitations/plpgsql-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/plpgsql-limitations.md @@ -1,25 +1,25 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. [#121605](https://github.com/cockroachdb/cockroach/issues/121605) -- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. [#114676](https://github.com/cockroachdb/cockroach/issues/114676) -- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). [#114701](https://github.com/cockroachdb/cockroach/issues/114701) +- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. +- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. +- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). - The following statements are not supported: - - `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops. [#105246](https://github.com/cockroachdb/cockroach/issues/105246) - - `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `CASE`. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). [#111446](https://github.com/cockroachdb/cockroach/issues/111446) -- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). [#106237](https://github.com/cockroachdb/cockroach/issues/106237) -- `RAISE` statements message the client directly, and do not produce log output. [#117750](https://github.com/cockroachdb/cockroach/issues/117750) -- `ASSERT` debugging checks are not supported. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- `RECORD` parameters and variables are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). [#105713](https://github.com/cockroachdb/cockroach/issues/105713) -- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. [#117508](https://github.com/cockroachdb/cockroach/issues/117508) -- Syntax for accessing members of composite types without parentheses is not supported. [#114687](https://github.com/cockroachdb/cockroach/issues/114687) -- `NOT NULL` variable declarations are not supported. [#105243](https://github.com/cockroachdb/cockroach/issues/105243) -- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. [#111479](https://github.com/cockroachdb/cockroach/issues/111479) -- Cursors in PL/pgSQL cannot be declared with arguments. [#117746](https://github.com/cockroachdb/cockroach/issues/117746) -- `OPEN FOR EXECUTE` is not supported for opening cursors. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- The `print_strict_params` option is not supported in PL/pgSQL. [#123671](https://github.com/cockroachdb/cockroach/issues/123671) -- The `FOUND` local variable, which checks whether a statement affected any rows, is not supported in PL/pgSQL. [#122306](https://github.com/cockroachdb/cockroach/issues/122306) -- By default, when a PL/pgSQL variable conflicts with a column name, CockroachDB resolves the ambiguity by treating it as a column reference rather than a variable reference. This behavior differs from PostgreSQL, where an ambiguous column error is reported, and it is possible to change the `plpgsql.variable_conflict` setting in order to prefer either columns or variables. [#115680](https://github.com/cockroachdb/cockroach/issues/115680) -- It is not possible to define a `RECORD`-returning PL/pgSQL function that returns different-typed expressions from different `RETURN` statements. CockroachDB requires a consistent return type for `RECORD`-returning functions. [#115384](https://github.com/cockroachdb/cockroach/issues/115384) -- Variables cannot be declared with an associated collation using the `COLLATE` keyword. [#105245](https://github.com/cockroachdb/cockroach/issues/105245) -- Variables cannot be accessed using the `label.var_name` pattern. [#122322](https://github.com/cockroachdb/cockroach/issues/122322) \ No newline at end of file + - `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops. + - `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `CASE`. +- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). +- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). +- `RAISE` statements message the client directly, and do not produce log output. +- `ASSERT` debugging checks are not supported. +- `RECORD` parameters and variables are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). +- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. +- Syntax for accessing members of composite types without parentheses is not supported. +- `NOT NULL` variable declarations are not supported. +- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. +- Cursors in PL/pgSQL cannot be declared with arguments. +- `OPEN FOR EXECUTE` is not supported for opening cursors. +- The `print_strict_params` option is not supported in PL/pgSQL. +- The `FOUND` local variable, which checks whether a statement affected any rows, is not supported in PL/pgSQL. +- By default, when a PL/pgSQL variable conflicts with a column name, CockroachDB resolves the ambiguity by treating it as a column reference rather than a variable reference. This behavior differs from PostgreSQL, where an ambiguous column error is reported, and it is possible to change the `plpgsql.variable_conflict` setting in order to prefer either columns or variables. +- It is not possible to define a `RECORD`-returning PL/pgSQL function that returns different-typed expressions from different `RETURN` statements. CockroachDB requires a consistent return type for `RECORD`-returning functions. +- Variables cannot be declared with an associated collation using the `COLLATE` keyword. +- Variables cannot be accessed using the `label.var_name` pattern. diff --git a/src/current/_includes/v25.3/known-limitations/read-committed-limitations.md b/src/current/_includes/v25.3/known-limitations/read-committed-limitations.md index 63f83b15dd8..16ec7b4d9a2 100644 --- a/src/current/_includes/v25.3/known-limitations/read-committed-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/read-committed-limitations.md @@ -1,6 +1,6 @@ -- Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions when the [`autocommit_before_ddl` session setting]({% link {{page.version.version}}/set-vars.md %}#autocommit-before-ddl) is set to `off`, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. [#114778](https://github.com/cockroachdb/cockroach/issues/114778) -- Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. [#112488](https://github.com/cockroachdb/cockroach/issues/112488) +- Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions when the [`autocommit_before_ddl` session setting]({% link {{page.version.version}}/set-vars.md %}#autocommit-before-ddl) is set to `off`, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. +- Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. - Because locks acquired by [foreign key]({% link {{ page.version.version }}/foreign-key.md %}) checks, [`SELECT FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}), and [`SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) are fully replicated under `READ COMMITTED` isolation, some queries experience a delay for Raft replication. - [Foreign key]({% link {{ page.version.version }}/foreign-key.md %}) checks are not performed in parallel under `READ COMMITTED` isolation. - [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements are less optimized under `READ COMMITTED` isolation than under `SERIALIZABLE` isolation. Under `READ COMMITTED` isolation, `SELECT FOR UPDATE` and `SELECT FOR SHARE` usually perform an extra lookup join for every locked table when compared to the same queries under `SERIALIZABLE`. In addition, some optimization steps (such as de-correlation of correlated [subqueries]({% link {{ page.version.version }}/subqueries.md %})) are not currently performed on these queries. -- Regardless of isolation level, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements in CockroachDB do not prevent insertion of new rows matching the search condition (i.e., [phantom reads]({% link {{ page.version.version }}/read-committed.md %}#non-repeatable-reads-and-phantom-reads)). This matches PostgreSQL behavior at all isolation levels. [#120673](https://github.com/cockroachdb/cockroach/issues/120673) \ No newline at end of file +- Regardless of isolation level, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements in CockroachDB do not prevent insertion of new rows matching the search condition (i.e., [phantom reads]({% link {{ page.version.version }}/read-committed.md %}#non-repeatable-reads-and-phantom-reads)). This matches PostgreSQL behavior at all isolation levels. diff --git a/src/current/_includes/v25.3/known-limitations/restore-multiregion-match.md b/src/current/_includes/v25.3/known-limitations/restore-multiregion-match.md index ab2f1029ecd..6cf3a2ccefe 100644 --- a/src/current/_includes/v25.3/known-limitations/restore-multiregion-match.md +++ b/src/current/_includes/v25.3/known-limitations/restore-multiregion-match.md @@ -46,5 +46,3 @@ ~~~ sql ALTER DATABASE destination_database SET PRIMARY REGION "us-east1"; ~~~ - - [#71071](https://github.com/cockroachdb/cockroach/issues/71071) \ No newline at end of file diff --git a/src/current/_includes/v25.3/known-limitations/restore-tables-non-multi-reg.md b/src/current/_includes/v25.3/known-limitations/restore-tables-non-multi-reg.md index 5390f2d09ee..a6558d30c7d 100644 --- a/src/current/_includes/v25.3/known-limitations/restore-tables-non-multi-reg.md +++ b/src/current/_includes/v25.3/known-limitations/restore-tables-non-multi-reg.md @@ -1 +1 @@ -Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. [#71502](https://github.com/cockroachdb/cockroach/issues/71502) +Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. diff --git a/src/current/_includes/v25.3/known-limitations/restore-udf.md b/src/current/_includes/v25.3/known-limitations/restore-udf.md index a4a4bc080fe..7d5670fbc9e 100644 --- a/src/current/_includes/v25.3/known-limitations/restore-udf.md +++ b/src/current/_includes/v25.3/known-limitations/restore-udf.md @@ -1 +1 @@ -`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. [#118195](https://github.com/cockroachdb/cockroach/issues/118195) \ No newline at end of file +`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. diff --git a/src/current/_includes/v25.3/known-limitations/rls-update-set-where-returning.md b/src/current/_includes/v25.3/known-limitations/rls-update-set-where-returning.md index 450de11683e..5154352ed33 100644 --- a/src/current/_includes/v25.3/known-limitations/rls-update-set-where-returning.md +++ b/src/current/_includes/v25.3/known-limitations/rls-update-set-where-returning.md @@ -1 +1 @@ -`UPDATE` statements whose `SET`, `WHERE`, or `RETURNING` clauses do not read existing column values can be mistakenly filtered by row-level security `SELECT` policies, causing the statement to affect no rows. [#145894](https://github.com/cockroachdb/cockroach/issues/145894) \ No newline at end of file +`UPDATE` statements whose `SET`, `WHERE`, or `RETURNING` clauses do not read existing column values can be mistakenly filtered by row-level security `SELECT` policies, causing the statement to affect no rows. diff --git a/src/current/_includes/v25.3/known-limitations/rls-values-on-conflict-do-nothing.md b/src/current/_includes/v25.3/known-limitations/rls-values-on-conflict-do-nothing.md index c85dea7987a..0f236672cff 100644 --- a/src/current/_includes/v25.3/known-limitations/rls-values-on-conflict-do-nothing.md +++ b/src/current/_includes/v25.3/known-limitations/rls-values-on-conflict-do-nothing.md @@ -1 +1 @@ -`ON CONFLICT ... DO NOTHING`: CockroachDB does not run the constraint and row-level policy checks on the `VALUES` clause if the candidate row has a conflict. [#35370](https://github.com/cockroachdb/cockroach/issues/35370). +`ON CONFLICT ... DO NOTHING`: CockroachDB does not run the constraint and row-level policy checks on the `VALUES` clause if the candidate row has a conflict.. diff --git a/src/current/_includes/v25.3/known-limitations/rls-visibility-issue.md b/src/current/_includes/v25.3/known-limitations/rls-visibility-issue.md index 453059825a3..1937617066c 100644 --- a/src/current/_includes/v25.3/known-limitations/rls-visibility-issue.md +++ b/src/current/_includes/v25.3/known-limitations/rls-visibility-issue.md @@ -1 +1 @@ -Under certain conditions, such as when executing certain SQL functions, CockroachDB's row-level security (RLS) implementation exposes metadata about the number of restricted rows in a table. For example, when a user applies arbitrary SQL filters on a table with RLS enabled, it's possible for the user to see how many total rows are in the table; this count includes rows that the user does not have direct access to. This metadata leakage can also occur when statements like [`EXPLAIN ANALYZE`]({% link {{ page.version.version }}/explain.md %}) are used, as the output includes a count of the number of rows scanned by the query that can include the number of restricted rows, even though the rows themselves are not directly accessible. [#146952](https://github.com/cockroachdb/cockroach/issues/146952) +Under certain conditions, such as when executing certain SQL functions, CockroachDB's row-level security (RLS) implementation exposes metadata about the number of restricted rows in a table. For example, when a user applies arbitrary SQL filters on a table with RLS enabled, it's possible for the user to see how many total rows are in the table; this count includes rows that the user does not have direct access to. This metadata leakage can also occur when statements like [`EXPLAIN ANALYZE`]({% link {{ page.version.version }}/explain.md %}) are used, as the output includes a count of the number of rows scanned by the query that can include the number of restricted rows, even though the rows themselves are not directly accessible. diff --git a/src/current/_includes/v25.3/known-limitations/routine-limitations.md b/src/current/_includes/v25.3/known-limitations/routine-limitations.md index 4718c6c7abf..64c767950b6 100644 --- a/src/current/_includes/v25.3/known-limitations/routine-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/routine-limitations.md @@ -1,10 +1,10 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. [#122264](https://github.com/cockroachdb/cockroach/issues/122264) -- Routines cannot be created if they reference temporary tables. [#121375](https://github.com/cockroachdb/cockroach/issues/121375) -- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. [#121251](https://github.com/cockroachdb/cockroach/issues/121251) -- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. [#121247](https://github.com/cockroachdb/cockroach/issues/121247) -- Routines cannot be created with an `OUT` parameter of type `RECORD`. [#123448](https://github.com/cockroachdb/cockroach/issues/123448) -- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or stored procedures. [#110080](https://github.com/cockroachdb/cockroach/issues/110080) -- Polymorphic types cannot be cast to other types (e.g., `TEXT`) within routine parameters. [#123536](https://github.com/cockroachdb/cockroach/issues/123536) -- Routine parameters and return types cannot be declared using the `ANYENUM` polymorphic type, which is able to match any [`ENUM`]({% link {{ page.version.version }}/enum.md %}) type. [123048](https://github.com/cockroachdb/cockroach/issues/123048) \ No newline at end of file +- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. +- Routines cannot be created if they reference temporary tables. +- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. +- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. +- Routines cannot be created with an `OUT` parameter of type `RECORD`. +- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or stored procedures. +- Polymorphic types cannot be cast to other types (e.g., `TEXT`) within routine parameters. +- Routine parameters and return types cannot be declared using the `ANYENUM` polymorphic type, which is able to match any [`ENUM`]({% link {{ page.version.version }}/enum.md %}) type. diff --git a/src/current/_includes/v25.3/known-limitations/select-for-update-limitations.md b/src/current/_includes/v25.3/known-limitations/select-for-update-limitations.md index 1ed68e692e4..0452567352a 100644 --- a/src/current/_includes/v25.3/known-limitations/select-for-update-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/select-for-update-limitations.md @@ -1,6 +1,6 @@ -- `SKIP LOCKED` cannot be used for tables with multiple [column families]({% link {{ page.version.version }}/column-families.md %}). [#160961](https://github.com/cockroachdb/cockroach/issues/160961) +- `SKIP LOCKED` cannot be used for tables with multiple [column families]({% link {{ page.version.version }}/column-families.md %}). - By default under `SERIALIZABLE` isolation, locks acquired using `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` are implemented as fast, in-memory [unreplicated locks](architecture/transaction-layer.html#unreplicated-locks). If a [lease transfer]({% link {{ page.version.version }}/architecture/replication-layer.md %}#leases) or [range split/merge]({% link {{ page.version.version }}/architecture/distribution-layer.md %}#range-merges) occurs on a range held by an unreplicated lock, the lock is dropped. The following behaviors can occur: - The desired ordering of concurrent accesses to one or more rows of a table expressed by your use of `SELECT ... FOR UPDATE` may not be preserved (that is, a transaction _B_ against some table _T_ that was supposed to wait behind another transaction _A_ operating on _T_ may not wait for transaction _A_). - The transaction that acquired the (now dropped) unreplicated lock may fail to commit, leading to [transaction retry errors with code `40001`]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}) and the [`restart transaction` error message]({% link {{ page.version.version }}/common-errors.md %}#restart-transaction). - When running under `SERIALIZABLE` isolation, `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` locks should be thought of as best-effort, and should not be relied upon for correctness. Note that [serialization]({% link {{ page.version.version }}/demo-serializable.md %}) is preserved despite this limitation. This limitation is fixed when the `enable_durable_locking_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}#enable-durable-locking-for-serializable) is set to `true`. This limitation does **not** apply to [`READ COMMITTED`]({% link {{ page.version.version }}/read-committed.md %}) transactions. \ No newline at end of file + When running under `SERIALIZABLE` isolation, `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` locks should be thought of as best-effort, and should not be relied upon for correctness. Note that [serialization]({% link {{ page.version.version }}/demo-serializable.md %}) is preserved despite this limitation. This limitation is fixed when the `enable_durable_locking_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}#enable-durable-locking-for-serializable) is set to `true`. This limitation does **not** apply to [`READ COMMITTED`]({% link {{ page.version.version }}/read-committed.md %}) transactions. diff --git a/src/current/_includes/v25.3/known-limitations/set-transaction-no-rollback.md b/src/current/_includes/v25.3/known-limitations/set-transaction-no-rollback.md index e70e3c32533..0e8f5147bf7 100644 --- a/src/current/_includes/v25.3/known-limitations/set-transaction-no-rollback.md +++ b/src/current/_includes/v25.3/known-limitations/set-transaction-no-rollback.md @@ -33,4 +33,4 @@ SHOW TIME ZONE; ~~~ -[#69396](https://github.com/cockroachdb/cockroach/issues/69396), [#148766](https://github.com/cockroachdb/cockroach/issues/148766) \ No newline at end of file +, diff --git a/src/current/_includes/v25.3/known-limitations/show-backup-symlink.md b/src/current/_includes/v25.3/known-limitations/show-backup-symlink.md index 38ba86fb28f..f47d7f3887b 100644 --- a/src/current/_includes/v25.3/known-limitations/show-backup-symlink.md +++ b/src/current/_includes/v25.3/known-limitations/show-backup-symlink.md @@ -1 +1 @@ -[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. [#70260](https://github.com/cockroachdb/cockroach/issues/70260) \ No newline at end of file +[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. diff --git a/src/current/_includes/v25.3/known-limitations/sql-cursors.md b/src/current/_includes/v25.3/known-limitations/sql-cursors.md index bceff96d5a6..0413bfd5251 100644 --- a/src/current/_includes/v25.3/known-limitations/sql-cursors.md +++ b/src/current/_includes/v25.3/known-limitations/sql-cursors.md @@ -1,8 +1,8 @@ CockroachDB implements SQL {% if page.name == "known-limitations.md" %} [cursor]({% link {{ page.version.version }}/cursors.md %}) {% else %} cursor {% endif %} support with the following limitations: -- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. [#77099](https://github.com/cockroachdb/cockroach/issues/77099) -- Scrollable cursor (also known as reverse `FETCH`) is not supported. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. [#77103](https://github.com/cockroachdb/cockroach/issues/77103) -- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. [#77104](https://github.com/cockroachdb/cockroach/issues/77104) +- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. +- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. +- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. +- Scrollable cursor (also known as reverse `FETCH`) is not supported. +- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. +- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. diff --git a/src/current/_includes/v25.3/known-limitations/srid-4326-limitations.md b/src/current/_includes/v25.3/known-limitations/srid-4326-limitations.md index b556a9fbecd..7cfda23749b 100644 --- a/src/current/_includes/v25.3/known-limitations/srid-4326-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/srid-4326-limitations.md @@ -1 +1 @@ -Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. [#55903](https://github.com/cockroachdb/cockroach/issues/55903) \ No newline at end of file +Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. diff --git a/src/current/_includes/v25.3/known-limitations/stats-refresh-upgrade.md b/src/current/_includes/v25.3/known-limitations/stats-refresh-upgrade.md index 3d5a8d26325..c8239a02bcd 100644 --- a/src/current/_includes/v25.3/known-limitations/stats-refresh-upgrade.md +++ b/src/current/_includes/v25.3/known-limitations/stats-refresh-upgrade.md @@ -1 +1 @@ -- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). [#54816](https://github.com/cockroachdb/cockroach/issues/54816) +- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). diff --git a/src/current/_includes/v25.3/known-limitations/stored-proc-limitations.md b/src/current/_includes/v25.3/known-limitations/stored-proc-limitations.md index b2ba1b61562..5ca8442d306 100644 --- a/src/current/_includes/v25.3/known-limitations/stored-proc-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/stored-proc-limitations.md @@ -1,3 +1,3 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- `COMMIT` and `ROLLBACK` statements are not supported within nested procedures. [#122266](https://github.com/cockroachdb/cockroach/issues/122266) \ No newline at end of file +- `COMMIT` and `ROLLBACK` statements are not supported within nested procedures. diff --git a/src/current/_includes/v25.3/known-limitations/trigger-limitations.md b/src/current/_includes/v25.3/known-limitations/trigger-limitations.md index 7373cd486e7..eaf6e6a493a 100644 --- a/src/current/_includes/v25.3/known-limitations/trigger-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/trigger-limitations.md @@ -1,6 +1,6 @@ -- `CREATE OR REPLACE TRIGGER` is not supported. [#128422](https://github.com/cockroachdb/cockroach/issues/128422) -- Statement-level triggers are not supported. [#126362](https://github.com/cockroachdb/cockroach/issues/126362) -- `INSTEAD OF` triggers are not supported. [#126363](https://github.com/cockroachdb/cockroach/issues/126363) -- A [trigger function]({% link {{ page.version.version }}/triggers.md %}#trigger-function) that is used in an existing trigger cannot be replaced with `CREATE OR REPLACE` syntax. To use `CREATE OR REPLACE`, first [drop any triggers]({% link {{ page.version.version }}/drop-trigger.md %}) that are using the function. [#134555](https://github.com/cockroachdb/cockroach/issues/134555) -- Hidden columns are not visible to triggers. [#133331](https://github.com/cockroachdb/cockroach/issues/133331) -- {% include {{ page.version.version }}/known-limitations/drop-trigger-limitations.md %} \ No newline at end of file +- `CREATE OR REPLACE TRIGGER` is not supported. +- Statement-level triggers are not supported. +- `INSTEAD OF` triggers are not supported. +- A [trigger function]({% link {{ page.version.version }}/triggers.md %}#trigger-function) that is used in an existing trigger cannot be replaced with `CREATE OR REPLACE` syntax. To use `CREATE OR REPLACE`, first [drop any triggers]({% link {{ page.version.version }}/drop-trigger.md %}) that are using the function. +- Hidden columns are not visible to triggers. +- {% include {{ page.version.version }}/known-limitations/drop-trigger-limitations.md %} diff --git a/src/current/_includes/v25.3/known-limitations/trigram-unsupported-syntax.md b/src/current/_includes/v25.3/known-limitations/trigram-unsupported-syntax.md index 494730c7ae8..bb726ac4af9 100644 --- a/src/current/_includes/v25.3/known-limitations/trigram-unsupported-syntax.md +++ b/src/current/_includes/v25.3/known-limitations/trigram-unsupported-syntax.md @@ -5,5 +5,3 @@ - `<->`, `<<->`, `<->>`, `<<<->`, and `<->>>` comparisons. - Acceleration on [regex string matching]({% link {{ page.version.version }}/scalar-expressions.md %}#string-matching-using-posix-regular-expressions). - `%` comparisons, `show_trgm`, and trigram index creation on [collated strings]({% link {{ page.version.version }}/collate.md %}). - -[#41285](https://github.com/cockroachdb/cockroach/issues/41285) \ No newline at end of file diff --git a/src/current/_includes/v25.3/known-limitations/udf-limitations.md b/src/current/_includes/v25.3/known-limitations/udf-limitations.md index cd749ced7e4..770b4b5a5bc 100644 --- a/src/current/_includes/v25.3/known-limitations/udf-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/udf-limitations.md @@ -1,8 +1,8 @@ {% if page.name != "known-limitations.md" # New limitations in v24.2 %} {% endif %} -- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. [#122945](https://github.com/cockroachdb/cockroach/issues/122945) +- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. - User-defined functions are not currently supported in: - - Expressions (column, index, constraint) in tables. [#87699](https://github.com/cockroachdb/cockroach/issues/87699) -- User-defined functions cannot call themselves recursively. [#93049](https://github.com/cockroachdb/cockroach/issues/93049) -- The `setval` function cannot be resolved when used inside UDF bodies. [#110860](https://github.com/cockroachdb/cockroach/issues/110860) -- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) in UDFs is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) \ No newline at end of file + - Expressions (column, index, constraint) in tables. +- User-defined functions cannot call themselves recursively. +- The `setval` function cannot be resolved when used inside UDF bodies. +- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) in UDFs is not supported. diff --git a/src/current/_includes/v25.3/known-limitations/vector-limitations.md b/src/current/_includes/v25.3/known-limitations/vector-limitations.md index 97ed7c47599..21646fc5b2c 100644 --- a/src/current/_includes/v25.3/known-limitations/vector-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/vector-limitations.md @@ -1,5 +1,5 @@ - {% include {{ page.version.version }}/sql/vector-batch-inserts.md %} -- `IMPORT INTO` is not supported on tables with vector indexes. You can import the vectors first and create the index after import is complete. [#145227](https://github.com/cockroachdb/cockroach/issues/145227) -- The distance functions `vector_l1_ops`, `bit_hamming_ops`, and `bit_jaccard_ops` are not implemented. [#147839](https://github.com/cockroachdb/cockroach/issues/147839) -- Index acceleration with filters is only supported if the filters match prefix columns. [#146145](https://github.com/cockroachdb/cockroach/issues/146145) -- Index recommendations are not provided for vector indexes. [#146146](https://github.com/cockroachdb/cockroach/issues/146146) \ No newline at end of file +- `IMPORT INTO` is not supported on tables with vector indexes. You can import the vectors first and create the index after import is complete. +- The distance functions `vector_l1_ops`, `bit_hamming_ops`, and `bit_jaccard_ops` are not implemented. +- Index acceleration with filters is only supported if the filters match prefix columns. +- Index recommendations are not provided for vector indexes. diff --git a/src/current/_includes/v25.3/known-limitations/vectorized-engine-limitations.md b/src/current/_includes/v25.3/known-limitations/vectorized-engine-limitations.md index daea59ebf88..84f991a0e63 100644 --- a/src/current/_includes/v25.3/known-limitations/vectorized-engine-limitations.md +++ b/src/current/_includes/v25.3/known-limitations/vectorized-engine-limitations.md @@ -1,2 +1,2 @@ -- The vectorized engine does not support queries containing a join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). [#38018](https://github.com/cockroachdb/cockroach/issues/38018) +- The vectorized engine does not support queries containing a join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). - The vectorized engine does not support [working with spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}). Queries with [geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) or [spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}) will revert to the row-oriented execution engine. diff --git a/src/current/_includes/v25.3/misc/tooling.md b/src/current/_includes/v25.3/misc/tooling.md index dcd24363435..ec553f1b383 100644 --- a/src/current/_includes/v25.3/misc/tooling.md +++ b/src/current/_includes/v25.3/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Example Apps]({% link {{ page.version.version }}/example-apps.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). diff --git a/src/current/_includes/v25.3/prod-deployment/decommission-pre-flight-checks.md b/src/current/_includes/v25.3/prod-deployment/decommission-pre-flight-checks.md index b267379384b..f7a613dff78 100644 --- a/src/current/_includes/v25.3/prod-deployment/decommission-pre-flight-checks.md +++ b/src/current/_includes/v25.3/prod-deployment/decommission-pre-flight-checks.md @@ -14,5 +14,5 @@ Failed running "node decommission" These checks can be skipped by [passing the flag `--checks=skip` to `cockroach node decommission`]({% link {{ page.version.version }}/cockroach-node.md %}#decommission-checks). {{site.data.alerts.callout_info}} -The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see [cockroachdb/cockroach#71757](https://github.com/cockroachdb/cockroach/issues/71757) +The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see {{site.data.alerts.end}} diff --git a/src/current/_includes/v25.3/sql/savepoints-and-high-priority-transactions.md b/src/current/_includes/v25.3/sql/savepoints-and-high-priority-transactions.md index c6de489e641..ce124bc3209 100644 --- a/src/current/_includes/v25.3/sql/savepoints-and-high-priority-transactions.md +++ b/src/current/_includes/v25.3/sql/savepoints-and-high-priority-transactions.md @@ -1 +1 @@ -[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. For more information, see GitHub issue [#46414](https://www.github.com/cockroachdb/cockroach/issues/46414). +[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. diff --git a/src/current/_includes/v25.4/backward-incompatible/alpha.1.md b/src/current/_includes/v25.4/backward-incompatible/alpha.1.md index 8d4004422ad..7af28ac9019 100644 --- a/src/current/_includes/v25.4/backward-incompatible/alpha.1.md +++ b/src/current/_includes/v25.4/backward-incompatible/alpha.1.md @@ -1,15 +1,15 @@ -- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). [#81298][#81298] -- In the Cockroach CLI, [`BOOL` values]({% link {{ page.version.version }}/bool.md %}) are now formatted as `t` or `f` instead of `True` or `False`. [#81943][#81943] -- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node]({% link {{ page.version.version }}/node-shutdown.md %}) gracefully, send a `SIGTERM` signal to it. [#82988][#82988] -- Added a cluster version to allow the [Pebble storage engine]({% link {{ page.version.version }}/architecture/storage-layer.md#pebble %}) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree]({% link {{ page.version.version }}/architecture/storage-layer.md#log-structured-merge-trees %})). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. [#84887][#84887] +- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). +- In the Cockroach CLI, [`BOOL` values]({% link {{ page.version.version }}/bool.md %}) are now formatted as `t` or `f` instead of `True` or `False`. +- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node]({% link {{ page.version.version }}/node-shutdown.md %}) gracefully, send a `SIGTERM` signal to it. +- Added a cluster version to allow the [Pebble storage engine]({% link {{ page.version.version }}/architecture/storage-layer.md#pebble %}) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree]({% link {{ page.version.version }}/architecture/storage-layer.md#log-structured-merge-trees %})). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. - Using a single TCP port listener for both RPC (node-node) and SQL client connections is now deprecated. This capability **will be removed** in the next version of CockroachDB. Instead, make one of the following configuration changes to your CockroachDB deployment: - Preferred: keep port `26257` for SQL, and allocate a new port, e.g., `26357`, for node-node RPC connections. For example, you might configure a node with the flags `--listen-addr=:26357 --sql-addr=:26257`, where subsequent nodes seeking to join would then use the flag `--join=othernode:26357,othernode:26257`. This will become the default configuration in the next version of CockroachDB. When using this mode of operation, care should be taken to use a `--join` flag that includes both the previous and new port numbers for other nodes, so that no network partition occurs during the upgrade. - - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. [#85671][#85671] -- If no `nullif` option is specified while using [`IMPORT CSV`]({% link {{ page.version.version }}/import.md %}), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. [#84487][#84487] -- [`COPY FROM`]({% link {{ page.version.version }}/copy.md %}) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. [#85986][#85986] -- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link {{ page.version.version }}/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. [#81310][#81310] -- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. [#81266][#81266] -- Removed the deprecated `GRANT` privilege. [#81310][#81310] -- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. [#83134][#83134] -- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. [#82560][#82560] -- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link {{ page.version.version }}/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. [#76834][#76834] + - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. +- If no `nullif` option is specified while using [`IMPORT CSV`]({% link {{ page.version.version }}/import.md %}), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. +- [`COPY FROM`]({% link {{ page.version.version }}/copy.md %}) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. +- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link {{ page.version.version }}/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. +- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. +- Removed the deprecated `GRANT` privilege. +- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. +- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. +- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link {{ page.version.version }}/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. diff --git a/src/current/_includes/v25.4/cdc/avro-udt-composite.md b/src/current/_includes/v25.4/cdc/avro-udt-composite.md index 7a34fbd3253..da8b7b30a3e 100644 --- a/src/current/_includes/v25.4/cdc/avro-udt-composite.md +++ b/src/current/_includes/v25.4/cdc/avro-udt-composite.md @@ -1 +1 @@ -A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). [#102903](https://github.com/cockroachdb/cockroach/issues/102903) \ No newline at end of file +A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). diff --git a/src/current/_includes/v25.4/cdc/csv-udt-composite.md b/src/current/_includes/v25.4/cdc/csv-udt-composite.md index 834bddd8366..fc4597e8e98 100644 --- a/src/current/_includes/v25.4/cdc/csv-udt-composite.md +++ b/src/current/_includes/v25.4/cdc/csv-udt-composite.md @@ -1 +1 @@ -A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). [#102905](https://github.com/cockroachdb/cockroach/issues/102905) \ No newline at end of file +A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). diff --git a/src/current/_includes/v25.4/faq/what-is-crdb.md b/src/current/_includes/v25.4/faq/what-is-crdb.md index 28857ed61fa..14e9080a4f0 100644 --- a/src/current/_includes/v25.4/faq/what-is-crdb.md +++ b/src/current/_includes/v25.4/faq/what-is-crdb.md @@ -1,7 +1,7 @@ CockroachDB is a [distributed SQL](https://www.cockroachlabs.com/blog/what-is-distributed-sql/) database built on a transactional and strongly-consistent key-value store. It **scales** horizontally; **survives** disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention; supports **strongly-consistent** ACID transactions; and provides a familiar **SQL** API for structuring, manipulating, and querying data. -CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies, and the [source code](https://github.com/cockroachdb/cockroach) is freely available. +CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies. {{site.data.alerts.callout_success}} For a deeper dive into CockroachDB's capabilities and how it fits into the database landscape, take the free [**Intro to Distributed SQL and CockroachDB**](https://university.cockroachlabs.com/courses/course-v1:crl+intro-to-distributed-sql-and-cockroachdb+self-paced/about) course on Cockroach University. -{{site.data.alerts.end}} \ No newline at end of file +{{site.data.alerts.end}} diff --git a/src/current/_includes/v25.4/finalization-required/119894.md b/src/current/_includes/v25.4/finalization-required/119894.md index f2b393c3c0e..c65c82b83d5 100644 --- a/src/current/_includes/v25.4/finalization-required/119894.md +++ b/src/current/_includes/v25.4/finalization-required/119894.md @@ -1 +1 @@ -[Splits](https://cockroachlabs.com/docs/{{ include.version }}/architecture/distribution-layer#range-splits) no longer hold [latches](https://cockroachlabs.com/docs/architecture/distribution-layer.#latch-manager) for time proportional to the range size while computing [MVCC](https://cockroachlabs.com/docs/{{ include.version }}/architecture/storage-layer#mvcc) statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. [#119894](https://github.com/cockroachdb/cockroach/pull/119894) +[Splits](https://cockroachlabs.com/docs/{{ include.version }}/architecture/distribution-layer#range-splits) no longer hold [latches](https://cockroachlabs.com/docs/architecture/distribution-layer.#latch-manager) for time proportional to the range size while computing [MVCC](https://cockroachlabs.com/docs/{{ include.version }}/architecture/storage-layer#mvcc) statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. diff --git a/src/current/_includes/v25.4/known-limitations/alter-changefeed-cdc-queries.md b/src/current/_includes/v25.4/known-limitations/alter-changefeed-cdc-queries.md index 56dd7eeaacd..fbd2a285c6e 100644 --- a/src/current/_includes/v25.4/known-limitations/alter-changefeed-cdc-queries.md +++ b/src/current/_includes/v25.4/known-limitations/alter-changefeed-cdc-queries.md @@ -1 +1 @@ -{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. [#83033](https://github.com/cockroachdb/cockroach/issues/83033) \ No newline at end of file +{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. diff --git a/src/current/_includes/v25.4/known-limitations/alter-changefeed-limitations.md b/src/current/_includes/v25.4/known-limitations/alter-changefeed-limitations.md index a183f2964f4..d1cb7303a99 100644 --- a/src/current/_includes/v25.4/known-limitations/alter-changefeed-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/alter-changefeed-limitations.md @@ -1,8 +1,8 @@ -- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) statement. [#77171](https://github.com/cockroachdb/cockroach/issues/77171) +- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) statement. - CockroachDB does not keep track of the [`initial_scan`]({% link {{ page.version.version }}/create-changefeed.md %}#initial-scan) option applied to tables when it is set to `yes` or `only`. For example: ~~~ sql ALTER CHANGEFEED {job_ID} ADD table WITH initial_scan = 'yes'; ~~~ - This will trigger an initial scan of the table and the changefeed will track `table`. The changefeed will **not** track `initial_scan` specified as an option, so it will not display in the output or after a `SHOW CHANGEFEED JOB` statement. \ No newline at end of file + This will trigger an initial scan of the table and the changefeed will track `table`. The changefeed will **not** track `initial_scan` specified as an option, so it will not display in the output or after a `SHOW CHANGEFEED JOB` statement. diff --git a/src/current/_includes/v25.4/known-limitations/alter-sequence-limitations.md b/src/current/_includes/v25.4/known-limitations/alter-sequence-limitations.md index 7343a1d1f1e..fdb6a3d8b1d 100644 --- a/src/current/_includes/v25.4/known-limitations/alter-sequence-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/alter-sequence-limitations.md @@ -1 +1 @@ -- Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. [#23719](https://github.com/cockroachdb/cockroach/issues/23719) +- Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. diff --git a/src/current/_includes/v25.4/known-limitations/alter-table-add-column-limitations.md b/src/current/_includes/v25.4/known-limitations/alter-table-add-column-limitations.md index a8e71e5e59c..02369e61a2f 100644 --- a/src/current/_includes/v25.4/known-limitations/alter-table-add-column-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/alter-table-add-column-limitations.md @@ -2,7 +2,7 @@ - The column uses a [sequence]({% link {{ page.version.version }}/create-sequence.md %}) as the [`DEFAULT`]({% link {{ page.version.version }}/default-value.md %}) value, for example using `nextval()`. - The column uses `GENERATED ALWAYS AS IDENTITY` or `GENERATED BY DEFAULT AS IDENTITY`, unless the table being altered is empty. - This is because CockroachDB does not support back-filling sequential column data. [#42508](https://github.com/cockroachdb/cockroach/issues/42508) + This is because CockroachDB does not support back-filling sequential column data. - When executing an [`ALTER TABLE ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statement with a [`DEFAULT`]({% link {{ page.version.version }}/default-value.md %}) expression, new values generated: - Use the default [search path]({% link {{ page.version.version }}/sql-name-resolution.md %}#search-path) regardless of the search path configured in the current session via `SET SEARCH_PATH`. - Use the UTC time zone regardless of the time zone configured in the current session via [`SET TIME ZONE`]({% link {{ page.version.version }}/set-vars.md %}). diff --git a/src/current/_includes/v25.4/known-limitations/alter-view-limitations.md b/src/current/_includes/v25.4/known-limitations/alter-view-limitations.md index 642bed6ce08..4cfdf9b8a1a 100644 --- a/src/current/_includes/v25.4/known-limitations/alter-view-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/alter-view-limitations.md @@ -1,4 +1,4 @@ `ALTER VIEW` does not currently support: - Changing the [`SELECT`]({% link {{ page.version.version }}/select-clause.md %}) statement executed by a view. Instead, you must drop the existing view and create a new view. -- Renaming a view that other views depend on. This feature may be added in the future. [#10083](https://github.com/cockroachdb/cockroach/issues/10083) \ No newline at end of file +- Renaming a view that other views depend on. This feature may be added in the future. diff --git a/src/current/_includes/v25.4/known-limitations/aost-limitations.md b/src/current/_includes/v25.4/known-limitations/aost-limitations.md index 811c884d08d..c0d92fff59b 100644 --- a/src/current/_includes/v25.4/known-limitations/aost-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/aost-limitations.md @@ -1 +1 @@ -CockroachDB does not support placeholders in {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %}. The time value must be a constant value embedded in the SQL string. [#30955](https://github.com/cockroachdb/cockroach/issues/30955) \ No newline at end of file +CockroachDB does not support placeholders in {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %}. The time value must be a constant value embedded in the SQL string. diff --git a/src/current/_includes/v25.4/known-limitations/cannot-refresh-materialized-views-inside-transactions.md b/src/current/_includes/v25.4/known-limitations/cannot-refresh-materialized-views-inside-transactions.md index b0aaf728177..cd93d6ad8c8 100644 --- a/src/current/_includes/v25.4/known-limitations/cannot-refresh-materialized-views-inside-transactions.md +++ b/src/current/_includes/v25.4/known-limitations/cannot-refresh-materialized-views-inside-transactions.md @@ -23,5 +23,3 @@ ERROR: cannot refresh view in an explicit transaction SQLSTATE: 25000 ~~~ - - [#66008](https://github.com/cockroachdb/cockroach/issues/66008) diff --git a/src/current/_includes/v25.4/known-limitations/cdc-queries-column-families.md b/src/current/_includes/v25.4/known-limitations/cdc-queries-column-families.md index 505a8c9700e..ea64b9821ea 100644 --- a/src/current/_includes/v25.4/known-limitations/cdc-queries-column-families.md +++ b/src/current/_includes/v25.4/known-limitations/cdc-queries-column-families.md @@ -1 +1 @@ -Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. [#127761](https://github.com/cockroachdb/cockroach/issues/127761) \ No newline at end of file +Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. diff --git a/src/current/_includes/v25.4/known-limitations/cdc-queries.md b/src/current/_includes/v25.4/known-limitations/cdc-queries.md index 2839eba5eda..a19a4a9a9c4 100644 --- a/src/current/_includes/v25.4/known-limitations/cdc-queries.md +++ b/src/current/_includes/v25.4/known-limitations/cdc-queries.md @@ -3,5 +3,5 @@ - The following are not permitted in CDC queries: - [Volatile functions]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility). - Sub-select queries. - - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). [#98237](https://github.com/cockroachdb/cockroach/issues/98237) -- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. [#83835](https://github.com/cockroachdb/cockroach/issues/83835) + - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). +- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. diff --git a/src/current/_includes/v25.4/known-limitations/cdc.md b/src/current/_includes/v25.4/known-limitations/cdc.md index a473e94367c..9f691268aeb 100644 --- a/src/current/_includes/v25.4/known-limitations/cdc.md +++ b/src/current/_includes/v25.4/known-limitations/cdc.md @@ -1,8 +1,8 @@ -- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). [#73435](https://github.com/cockroachdb/cockroach/issues/73435) +- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). - {% include {{page.version.version}}/cdc/kafka-vpc-limitation.md %} -- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#insecure-tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. [#73431](https://github.com/cockroachdb/cockroach/issues/73431) -- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. [#73432](https://github.com/cockroachdb/cockroach/issues/73432) -- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. [#79452](https://github.com/cockroachdb/cockroach/issues/79452) +- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#insecure-tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. +- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. +- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. - {% include {{page.version.version}}/cdc/types-udt-composite-general.md %} The following limitations apply: - {% include {{page.version.version}}/cdc/avro-udt-composite.md %} - - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} \ No newline at end of file + - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} diff --git a/src/current/_includes/v25.4/known-limitations/changefeed-column-family-message.md b/src/current/_includes/v25.4/known-limitations/changefeed-column-family-message.md index 41744b9b4b4..785cabfebe1 100644 --- a/src/current/_includes/v25.4/known-limitations/changefeed-column-family-message.md +++ b/src/current/_includes/v25.4/known-limitations/changefeed-column-family-message.md @@ -1 +1 @@ -When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. [#127736](https://github.com/cockroachdb/cockroach/issues/127736) \ No newline at end of file +When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. diff --git a/src/current/_includes/v25.4/known-limitations/citext-limitations.md b/src/current/_includes/v25.4/known-limitations/citext-limitations.md index df0fbc0ff91..0874b80ecce 100644 --- a/src/current/_includes/v25.4/known-limitations/citext-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/citext-limitations.md @@ -1 +1 @@ -- `CITEXT` types are not currently compatible with the `LIKE` and `ILIKE` operators. [#149791](https://github.com/cockroachdb/cockroach/issues/149791) \ No newline at end of file +- `CITEXT` types are not currently compatible with the `LIKE` and `ILIKE` operators. diff --git a/src/current/_includes/v25.4/known-limitations/collate-limitations.md b/src/current/_includes/v25.4/known-limitations/collate-limitations.md index d3e3e712bb5..c5f152172fe 100644 --- a/src/current/_includes/v25.4/known-limitations/collate-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/collate-limitations.md @@ -1 +1 @@ -- Many string operations are not properly overloaded for [collated strings]({% link {{ page.version.version }}/collate.md %}). For example, the `||` concatenation operator works with regular strings but returns an error with collated strings. [#10679](https://github.com/cockroachdb/cockroach/issues/10679) +- Many string operations are not properly overloaded for [collated strings]({% link {{ page.version.version }}/collate.md %}). For example, the `||` concatenation operator works with regular strings but returns an error with collated strings. diff --git a/src/current/_includes/v25.4/known-limitations/comment-on-limitations.md b/src/current/_includes/v25.4/known-limitations/comment-on-limitations.md index 568b31ec737..d74f88daaea 100644 --- a/src/current/_includes/v25.4/known-limitations/comment-on-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/comment-on-limitations.md @@ -1 +1 @@ -- The [`COMMENT ON`]({% link {{ page.version.version }}/comment-on.md %}) statement associates comments to databases, tables, or columns. However, the internal table (`system.comments`) in which these comments are stored is not captured by a [`BACKUP`]({% link {{ page.version.version }}/backup.md %}) of an individual table or database. As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. [#44396](https://github.com/cockroachdb/cockroach/issues/44396) +- The [`COMMENT ON`]({% link {{ page.version.version }}/comment-on.md %}) statement associates comments to databases, tables, or columns. However, the internal table (`system.comments`) in which these comments are stored is not captured by a [`BACKUP`]({% link {{ page.version.version }}/backup.md %}) of an individual table or database. As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. diff --git a/src/current/_includes/v25.4/known-limitations/composite-type-limitations.md b/src/current/_includes/v25.4/known-limitations/composite-type-limitations.md index 1ceecb5d889..6c7b2cc6281 100644 --- a/src/current/_includes/v25.4/known-limitations/composite-type-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/composite-type-limitations.md @@ -1,2 +1,2 @@ -- Updating subfields of composite types using dot syntax results in a syntax error. [#102984](https://github.com/cockroachdb/cockroach/issues/102984) -- Tuple elements cannot be accessed without enclosing the [composite variable]({% link {{ page.version.version }}/create-type.md %}) name in parentheses. For example, `(OLD).column` and `(NEW).column` when used in [triggers]({% link {{ page.version.version }}/triggers.md %}). [#114687](https://github.com/cockroachdb/cockroach/issues/114687) +- Updating subfields of composite types using dot syntax results in a syntax error. +- Tuple elements cannot be accessed without enclosing the [composite variable]({% link {{ page.version.version }}/create-type.md %}) name in parentheses. For example, `(OLD).column` and `(NEW).column` when used in [triggers]({% link {{ page.version.version }}/triggers.md %}). diff --git a/src/current/_includes/v25.4/known-limitations/copy-syntax.md b/src/current/_includes/v25.4/known-limitations/copy-syntax.md index e64a075dcac..90d35df5754 100644 --- a/src/current/_includes/v25.4/known-limitations/copy-syntax.md +++ b/src/current/_includes/v25.4/known-limitations/copy-syntax.md @@ -1,5 +1,5 @@ CockroachDB does not yet support the following `COPY` syntax: - - `COPY ... WITH FREEZE`. [#85573](https://github.com/cockroachdb/cockroach/issues/85573) - - `COPY ... WITH QUOTE`. [#85574](https://github.com/cockroachdb/cockroach/issues/85574) - - `COPY ... FROM ... WHERE `. [#54580](https://github.com/cockroachdb/cockroach/issues/54580) + - `COPY ... WITH FREEZE`. + - `COPY ... WITH QUOTE`. + - `COPY ... FROM ... WHERE `. diff --git a/src/current/_includes/v25.4/known-limitations/create-statistics-aost-limitation.md b/src/current/_includes/v25.4/known-limitations/create-statistics-aost-limitation.md index 09f86f51c48..7a2a39034de 100644 --- a/src/current/_includes/v25.4/known-limitations/create-statistics-aost-limitation.md +++ b/src/current/_includes/v25.4/known-limitations/create-statistics-aost-limitation.md @@ -1 +1 @@ -The `ANALYZE` alias {% if page.name != "create-statistics.md" %}of [`CREATE STATISTICS`]({% link {{ page.version.version }}/create-statistics.md %}){% endif %} does not support specifying an {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %} timestamp. `ANALYZE` statements use `AS OF SYSTEM TIME '-0.001ms'` automatically. For more control over the statistics interval, use the `CREATE STATISTICS` syntax instead. [#96430](https://github.com/cockroachdb/cockroach/issues/96430) \ No newline at end of file +The `ANALYZE` alias {% if page.name != "create-statistics.md" %}of [`CREATE STATISTICS`]({% link {{ page.version.version }}/create-statistics.md %}){% endif %} does not support specifying an {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %} timestamp. `ANALYZE` statements use `AS OF SYSTEM TIME '-0.001ms'` automatically. For more control over the statistics interval, use the `CREATE STATISTICS` syntax instead. diff --git a/src/current/_includes/v25.4/known-limitations/data-domiciling-limitations.md b/src/current/_includes/v25.4/known-limitations/data-domiciling-limitations.md index b4e1092fdac..93cb17bd33a 100644 --- a/src/current/_includes/v25.4/known-limitations/data-domiciling-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/data-domiciling-limitations.md @@ -1,7 +1,7 @@ -- When using the `infer_rbr_region_col_using_constraint` option, inserting rows with `DEFAULT` for the region column uses the database's primary region instead of inferring the region from the parent table via foreign-key constraint. [#150783](https://github.com/cockroachdb/cockroach/issues/150783) +- When using the `infer_rbr_region_col_using_constraint` option, inserting rows with `DEFAULT` for the region column uses the database's primary region instead of inferring the region from the parent table via foreign-key constraint. - When columns are [indexed]({% link {{ page.version.version }}/indexes.md %}), a subset of data from the indexed columns may appear in [meta ranges]({% link {{ page.version.version }}/architecture/distribution-layer.md %}#meta-ranges) or other system tables. CockroachDB synchronizes these system ranges and system tables across nodes. This synchronization does not respect any multi-region settings applied via either the [multi-region SQL statements]({% link {{ page.version.version }}/multiregion-overview.md %}), or the low-level [zone configs]({% link {{ page.version.version }}/configure-replication-zones.md %}) mechanism. - [Zone configs]({% link {{ page.version.version }}/configure-replication-zones.md %}) can be used for data placement but these features were historically built for performance, not for domiciling. The replication system's top priority is to prevent the loss of data and it may override the zone configurations if necessary to ensure data durability. For more information, see [Replication Controls]({% link {{ page.version.version }}/configure-replication-zones.md %}#types-of-constraints). - If your [log files]({% link {{ page.version.version }}/logging-overview.md %}) are kept in the region where they were generated, there is some cross-region leakage (like the system tables described previously), but the majority of user data that makes it into the logs is going to be homed in that region. If that's not strong enough, you can use the [log redaction functionality]({% link {{ page.version.version }}/configure-logs.md %}#redact-logs) to strip all raw data from the logs. You can also limit your log retention entirely. - If you start a node with a [`--locality`]({% link {{ page.version.version }}/cockroach-start.md %}#locality) flag that says the node is in region _A_, but the node is actually running in some region _B_, data domiciling based on the inferred node placement will not work. A CockroachDB node only knows its locality based on the text supplied to the `--locality` flag; it can not ensure that it is actually running in that physical location. - {% include {{page.version.version}}/known-limitations/secondary-regions-with-regional-by-row-tables.md %} -- {% include {{ page.version.version }}/known-limitations/enforce-home-region-limitations.md %} \ No newline at end of file +- {% include {{ page.version.version }}/known-limitations/enforce-home-region-limitations.md %} diff --git a/src/current/_includes/v25.4/known-limitations/distsql-heterogeneous-endianness.md b/src/current/_includes/v25.4/known-limitations/distsql-heterogeneous-endianness.md index 9194395dc04..6249f78e719 100644 --- a/src/current/_includes/v25.4/known-limitations/distsql-heterogeneous-endianness.md +++ b/src/current/_includes/v25.4/known-limitations/distsql-heterogeneous-endianness.md @@ -1 +1 @@ -In clusters that mix big-endian and little-endian architectures, DistSQL may produce incorrect results because hash computations differ between the platforms. As a workaround on heterogeneous clusters, disable DistSQL with `SET CLUSTER SETTING sql.defaults.distsql = off`. [#148773](https://github.com/cockroachdb/cockroach/issues/148773) \ No newline at end of file +In clusters that mix big-endian and little-endian architectures, DistSQL may produce incorrect results because hash computations differ between the platforms. As a workaround on heterogeneous clusters, disable DistSQL with `SET CLUSTER SETTING sql.defaults.distsql = off`. diff --git a/src/current/_includes/v25.4/known-limitations/drop-column-partial-index.md b/src/current/_includes/v25.4/known-limitations/drop-column-partial-index.md index 9fd1811cc43..59d1e0e09b1 100644 --- a/src/current/_includes/v25.4/known-limitations/drop-column-partial-index.md +++ b/src/current/_includes/v25.4/known-limitations/drop-column-partial-index.md @@ -1 +1 @@ -CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}). [#97813](https://github.com/cockroachdb/cockroach/issues/97813). \ No newline at end of file +CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}).. diff --git a/src/current/_includes/v25.4/known-limitations/drop-owned-by-limitations.md b/src/current/_includes/v25.4/known-limitations/drop-owned-by-limitations.md index 95685f6adf1..563c3fc3746 100644 --- a/src/current/_includes/v25.4/known-limitations/drop-owned-by-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/drop-owned-by-limitations.md @@ -10,4 +10,4 @@ The phrase "synthetic privileges" in the error message refers to [system-level privileges]({% link {{ page.version.version }}/security-reference/authorization.md %}#supported-privileges). - The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. [#88149](https://github.com/cockroachdb/cockroach/issues/88149) \ No newline at end of file + The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. diff --git a/src/current/_includes/v25.4/known-limitations/drop-trigger-limitations.md b/src/current/_includes/v25.4/known-limitations/drop-trigger-limitations.md index 90745f7e17a..e8cf291750c 100644 --- a/src/current/_includes/v25.4/known-limitations/drop-trigger-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/drop-trigger-limitations.md @@ -1 +1 @@ -[`DROP TRIGGER`]({% link {{ page.version.version }}/drop-trigger.md %}) with `CASCADE` is not supported. [#128151](https://github.com/cockroachdb/cockroach/issues/128151) \ No newline at end of file +[`DROP TRIGGER`]({% link {{ page.version.version }}/drop-trigger.md %}) with `CASCADE` is not supported. diff --git a/src/current/_includes/v25.4/known-limitations/enforce-home-region-limitations.md b/src/current/_includes/v25.4/known-limitations/enforce-home-region-limitations.md index 693829358f7..6ab5abaccaf 100644 --- a/src/current/_includes/v25.4/known-limitations/enforce-home-region-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/enforce-home-region-limitations.md @@ -1 +1 @@ -With `enforce_home_region` enabled, CockroachDB currently validates home-region access during plan build. This can falsely reject queries (e.g., lookup joins) that would only read local data at execution time, returning a `Query has no home region` error. [#148375](https://github.com/cockroachdb/cockroach/issues/148375) \ No newline at end of file +With `enforce_home_region` enabled, CockroachDB currently validates home-region access during plan build. This can falsely reject queries (e.g., lookup joins) that would only read local data at execution time, returning a `Query has no home region` error. diff --git a/src/current/_includes/v25.4/known-limitations/expression-index-limitations.md b/src/current/_includes/v25.4/known-limitations/expression-index-limitations.md index c0e94185948..76724af9432 100644 --- a/src/current/_includes/v25.4/known-limitations/expression-index-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/expression-index-limitations.md @@ -1,6 +1,6 @@ - The expression cannot reference columns outside the index's table. - Functional expression output must be determined by the input arguments. For example, you can't use the [volatile function]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility) `now()` to create an index because its output depends on more than just the function arguments. -- CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). [#67900](https://github.com/cockroachdb/cockroach/issues/67900) +- CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). - CockroachDB does not support expressions as `ON CONFLICT` targets. This means that unique {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} cannot be selected as arbiters for [`INSERT .. ON CONFLICT`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause) statements. For example: {% include_cached copy-clipboard.html %} @@ -39,5 +39,3 @@ ^ HINT: try \h INSERT ~~~ - - [#67893](https://github.com/cockroachdb/cockroach/issues/67893) diff --git a/src/current/_includes/v25.4/known-limitations/forecasted-stats-limitations.md b/src/current/_includes/v25.4/known-limitations/forecasted-stats-limitations.md index c8753124a96..a7f8eb17ee2 100644 --- a/src/current/_includes/v25.4/known-limitations/forecasted-stats-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/forecasted-stats-limitations.md @@ -6,4 +6,4 @@ Although [`SHOW STATISTICS WITH FORECAST`]({% link {{ page.version.version }}/show-statistics.md %}#display-forecasted-statistics) shows the settings taking effect immediately, they do not actually take effect until new statistics are collected (as can be verified with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %})). - As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. [#123852](https://github.com/cockroachdb/cockroach/issues/123852) \ No newline at end of file + As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. diff --git a/src/current/_includes/v25.4/known-limitations/full-text-search-unsupported.md b/src/current/_includes/v25.4/known-limitations/full-text-search-unsupported.md index 7b5a83f2cae..ef6ff023f86 100644 --- a/src/current/_includes/v25.4/known-limitations/full-text-search-unsupported.md +++ b/src/current/_includes/v25.4/known-limitations/full-text-search-unsupported.md @@ -10,5 +10,3 @@ - `tsquery <-> tsquery` comparisons. - `!! tsquery` comparisons. - `tsquery @> tsquery` and `tsquery <@ tsquery` comparisons. - -[#41288](https://github.com/cockroachdb/cockroach/issues/41288) \ No newline at end of file diff --git a/src/current/_includes/v25.4/known-limitations/generic-query-plan-limitations.md b/src/current/_includes/v25.4/known-limitations/generic-query-plan-limitations.md index e28e66d5f32..e588b799305 100644 --- a/src/current/_includes/v25.4/known-limitations/generic-query-plan-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/generic-query-plan-limitations.md @@ -1,2 +1,2 @@ -- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. [#128916](https://github.com/cockroachdb/cockroach/issues/128916) -- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. [#128911](https://github.com/cockroachdb/cockroach/issues/128911) \ No newline at end of file +- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. +- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. diff --git a/src/current/_includes/v25.4/known-limitations/geospatial-heterogeneous-architectures.md b/src/current/_includes/v25.4/known-limitations/geospatial-heterogeneous-architectures.md index 4bb9633f138..e3fecb28c86 100644 --- a/src/current/_includes/v25.4/known-limitations/geospatial-heterogeneous-architectures.md +++ b/src/current/_includes/v25.4/known-limitations/geospatial-heterogeneous-architectures.md @@ -1 +1 @@ -Clusters that mix `s390x` with other CPU architectures are unsupported for geospatial workloads. Due to differences in how trigonometric functions are computed on `s390x` systems, geospatial queries in heterogeneous clusters with `s390x` are likely to get incorrect results. This can include taking a backup on one architecture and restoring it on another. [#148783](https://github.com/cockroachdb/cockroach/issues/148783) \ No newline at end of file +Clusters that mix `s390x` with other CPU architectures are unsupported for geospatial workloads. Due to differences in how trigonometric functions are computed on `s390x` systems, geospatial queries in heterogeneous clusters with `s390x` are likely to get incorrect results. This can include taking a backup on one architecture and restoring it on another. diff --git a/src/current/_includes/v25.4/known-limitations/int-limitations.md b/src/current/_includes/v25.4/known-limitations/int-limitations.md index 6333dbf6ed5..9b7894a854d 100644 --- a/src/current/_includes/v25.4/known-limitations/int-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/int-limitations.md @@ -1 +1 @@ -- When setting the `default_int_size` [session variable]({% link {{ page.version.version }}/set-vars.md %}) in a batch of statements such as `SET default_int_size='int4'; SELECT 1::INT`, the `default_int_size` variable will not take effect until the next statement. Statement parsing is asynchronous with statement execution. As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. [#32846](https://github.com/cockroachdb/cockroach/issues/32846) +- When setting the `default_int_size` [session variable]({% link {{ page.version.version }}/set-vars.md %}) in a batch of statements such as `SET default_int_size='int4'; SELECT 1::INT`, the `default_int_size` variable will not take effect until the next statement. Statement parsing is asynchronous with statement execution. As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. diff --git a/src/current/_includes/v25.4/known-limitations/inverted-index-limitations.md b/src/current/_includes/v25.4/known-limitations/inverted-index-limitations.md index 1b0eb8d4335..11c6cc00d95 100644 --- a/src/current/_includes/v25.4/known-limitations/inverted-index-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/inverted-index-limitations.md @@ -1,3 +1,3 @@ -- CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). [#88278](https://github.com/cockroachdb/cockroach/issues/88278) -- CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables for `tsvector` and `tsquery` types. [#102731](https://github.com/cockroachdb/cockroach/issues/102731) -- [Left joins]({% link {{ page.version.version }}/joins.md %}#left-outer-joins) and anti joins involving [`JSONB`]({% link {{ page.version.version }}/jsonb.md %}), [`ARRAY`]({% link {{ page.version.version }}/array.md %}), or [spatial-typed]({% link {{ page.version.version }}/export-spatial-data.md %}) columns with a multi-column or [partitioned]({% link {{ page.version.version }}/alter-index.md %}#partition-by) [GIN index](inverted-indexes.html) will not take advantage of the index if the prefix columns of the index are unconstrained, or if they are constrained to multiple, constant values. To work around this limitation, make sure that the prefix columns of the index are either constrained to single constant values, or are part of an equality condition with an input column. [#59649](https://github.com/cockroachdb/cockroach/issues/59649) +- CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). +- CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables for `tsvector` and `tsquery` types. +- [Left joins]({% link {{ page.version.version }}/joins.md %}#left-outer-joins) and anti joins involving [`JSONB`]({% link {{ page.version.version }}/jsonb.md %}), [`ARRAY`]({% link {{ page.version.version }}/array.md %}), or [spatial-typed]({% link {{ page.version.version }}/export-spatial-data.md %}) columns with a multi-column or [partitioned]({% link {{ page.version.version }}/alter-index.md %}#partition-by) [GIN index](inverted-indexes.html) will not take advantage of the index if the prefix columns of the index are unconstrained, or if they are constrained to multiple, constant values. To work around this limitation, make sure that the prefix columns of the index are either constrained to single constant values, or are part of an equality condition with an input column. diff --git a/src/current/_includes/v25.4/known-limitations/jsonpath-limitations.md b/src/current/_includes/v25.4/known-limitations/jsonpath-limitations.md index 9b51bfb6e87..c4cbd7fb32b 100644 --- a/src/current/_includes/v25.4/known-limitations/jsonpath-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/jsonpath-limitations.md @@ -1,2 +1,2 @@ -- The following keywords are only accepted in lowercase: `strict`, `lax`, `exists`, `like_regex`, `flag`, `is unknown`, `to`, `last`. [#144255](https://github.com/cockroachdb/cockroach/issues/144255) -- Comparisons involving empty arrays (e.g., `SELECT jsonb_path_query('{"a": [1], "b": []}', '$.a == $.b');`) return `null`, rather than `false` as in PostgreSQL. [#145099](https://github.com/cockroachdb/cockroach/issues/145099) \ No newline at end of file +- The following keywords are only accepted in lowercase: `strict`, `lax`, `exists`, `like_regex`, `flag`, `is unknown`, `to`, `last`. +- Comparisons involving empty arrays (e.g., `SELECT jsonb_path_query('{"a": [1], "b": []}', '$.a == $.b');`) return `null`, rather than `false` as in PostgreSQL. diff --git a/src/current/_includes/v25.4/known-limitations/ldr-column-families.md b/src/current/_includes/v25.4/known-limitations/ldr-column-families.md index 2a7c3bbba52..67183137d9e 100644 --- a/src/current/_includes/v25.4/known-limitations/ldr-column-families.md +++ b/src/current/_includes/v25.4/known-limitations/ldr-column-families.md @@ -1 +1 @@ -Replicating tables cannot contain [column families]({% link {{ page.version.version }}/column-families.md %}). [#133562](https://github.com/cockroachdb/cockroach/issues/133562) \ No newline at end of file +Replicating tables cannot contain [column families]({% link {{ page.version.version }}/column-families.md %}). diff --git a/src/current/_includes/v25.4/known-limitations/ldr-composite-primary.md b/src/current/_includes/v25.4/known-limitations/ldr-composite-primary.md index ac897af35a7..6fdf7136e53 100644 --- a/src/current/_includes/v25.4/known-limitations/ldr-composite-primary.md +++ b/src/current/_includes/v25.4/known-limitations/ldr-composite-primary.md @@ -1 +1 @@ -The [primary key]({% link {{ page.version.version }}/primary-key.md %}) in replicating tables cannot contain composite types. [#133572](https://github.com/cockroachdb/cockroach/issues/133572) \ No newline at end of file +The [primary key]({% link {{ page.version.version }}/primary-key.md %}) in replicating tables cannot contain composite types. diff --git a/src/current/_includes/v25.4/known-limitations/ldr-indexes.md b/src/current/_includes/v25.4/known-limitations/ldr-indexes.md index 0bf7f60c2d4..3d0f52e9ad7 100644 --- a/src/current/_includes/v25.4/known-limitations/ldr-indexes.md +++ b/src/current/_includes/v25.4/known-limitations/ldr-indexes.md @@ -1 +1 @@ -Replicating tables cannot contain an [index]({% link {{ page.version.version }}/indexes.md %}) that requires expression evaluation before insertion. [#133560](https://github.com/cockroachdb/cockroach/issues/133560) \ No newline at end of file +Replicating tables cannot contain an [index]({% link {{ page.version.version }}/indexes.md %}) that requires expression evaluation before insertion. diff --git a/src/current/_includes/v25.4/known-limitations/ldr-sequences.md b/src/current/_includes/v25.4/known-limitations/ldr-sequences.md index 4e39f3630e3..069a693b7a0 100644 --- a/src/current/_includes/v25.4/known-limitations/ldr-sequences.md +++ b/src/current/_includes/v25.4/known-limitations/ldr-sequences.md @@ -1 +1 @@ -Replicating table cannot reference [sequences]({% link {{ page.version.version }}/create-sequence.md %}). [#132303](https://github.com/cockroachdb/cockroach/issues/132303) \ No newline at end of file +Replicating table cannot reference [sequences]({% link {{ page.version.version }}/create-sequence.md %}). diff --git a/src/current/_includes/v25.4/known-limitations/ldr-triggers.md b/src/current/_includes/v25.4/known-limitations/ldr-triggers.md index 55f8e885b97..9fc2b36777e 100644 --- a/src/current/_includes/v25.4/known-limitations/ldr-triggers.md +++ b/src/current/_includes/v25.4/known-limitations/ldr-triggers.md @@ -1 +1 @@ -Replicating tables cannot reference triggers. [#132301](https://github.com/cockroachdb/cockroach/issues/132301) \ No newline at end of file +Replicating tables cannot reference triggers. diff --git a/src/current/_includes/v25.4/known-limitations/ldr-udfs.md b/src/current/_includes/v25.4/known-limitations/ldr-udfs.md index fb642f14751..354a9e8243e 100644 --- a/src/current/_includes/v25.4/known-limitations/ldr-udfs.md +++ b/src/current/_includes/v25.4/known-limitations/ldr-udfs.md @@ -1 +1 @@ -Replicating tables cannot reference [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). [#132302](https://github.com/cockroachdb/cockroach/issues/132302) \ No newline at end of file +Replicating tables cannot reference [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). diff --git a/src/current/_includes/v25.4/known-limitations/like-escape-performance.md b/src/current/_includes/v25.4/known-limitations/like-escape-performance.md index 845fdddeeb9..8aa3c2065d0 100644 --- a/src/current/_includes/v25.4/known-limitations/like-escape-performance.md +++ b/src/current/_includes/v25.4/known-limitations/like-escape-performance.md @@ -1 +1 @@ -`LIKE` queries with an `ESCAPE` clause cannot use index acceleration, which can result in significantly slower performance compared to standard `LIKE` queries. [#30192](https://github.com/cockroachdb/cockroach/issues/30192) +`LIKE` queries with an `ESCAPE` clause cannot use index acceleration, which can result in significantly slower performance compared to standard `LIKE` queries. diff --git a/src/current/_includes/v25.4/known-limitations/locality-optimized-search-virtual-computed-columns.md b/src/current/_includes/v25.4/known-limitations/locality-optimized-search-virtual-computed-columns.md index d6acf418aa8..7a7392aab0d 100644 --- a/src/current/_includes/v25.4/known-limitations/locality-optimized-search-virtual-computed-columns.md +++ b/src/current/_includes/v25.4/known-limitations/locality-optimized-search-virtual-computed-columns.md @@ -1 +1 @@ -- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). [#68129](https://github.com/cockroachdb/cockroach/issues/68129) +- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). diff --git a/src/current/_includes/v25.4/known-limitations/materialized-views-no-stats.md b/src/current/_includes/v25.4/known-limitations/materialized-views-no-stats.md index 02f2bd787c4..a468db2895d 100644 --- a/src/current/_includes/v25.4/known-limitations/materialized-views-no-stats.md +++ b/src/current/_includes/v25.4/known-limitations/materialized-views-no-stats.md @@ -1 +1 @@ -- The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views. [#78181](https://github.com/cockroachdb/cockroach/issues/78181). +- The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views.. diff --git a/src/current/_includes/v25.4/known-limitations/max-row-size-limitations.md b/src/current/_includes/v25.4/known-limitations/max-row-size-limitations.md index 9d4d3e12918..63e16c86d4f 100644 --- a/src/current/_includes/v25.4/known-limitations/max-row-size-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/max-row-size-limitations.md @@ -1 +1 @@ -- The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. [#69540](https://github.com/cockroachdb/cockroach/issues/69540) +- The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. diff --git a/src/current/_includes/v25.4/known-limitations/multiple-arbiter-indexes.md b/src/current/_includes/v25.4/known-limitations/multiple-arbiter-indexes.md index c9861623314..b13890a2ee9 100644 --- a/src/current/_includes/v25.4/known-limitations/multiple-arbiter-indexes.md +++ b/src/current/_includes/v25.4/known-limitations/multiple-arbiter-indexes.md @@ -1 +1 @@ -CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. [#53170](https://github.com/cockroachdb/cockroach/issues/53170) \ No newline at end of file +CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. diff --git a/src/current/_includes/v25.4/known-limitations/node-shutdown-limitations.md b/src/current/_includes/v25.4/known-limitations/node-shutdown-limitations.md index f35f858bdc1..0b09a134e49 100644 --- a/src/current/_includes/v25.4/known-limitations/node-shutdown-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/node-shutdown-limitations.md @@ -2,4 +2,4 @@ - The `cockroach node decommission --wait-all` command was run and then interrupted - The `cockroach node decommission --wait=none` command was run - This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. [#94430](https://github.com/cockroachdb/cockroach/issues/94430) + This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. diff --git a/src/current/_includes/v25.4/known-limitations/null-limitations.md b/src/current/_includes/v25.4/known-limitations/null-limitations.md index ad2efce233a..af3ed9de10a 100644 --- a/src/current/_includes/v25.4/known-limitations/null-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/null-limitations.md @@ -1 +1 @@ -- By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL` values after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it does not work when the ordering column is a tuple. [#93558](https://github.com/cockroachdb/cockroach/issues/93558) +- By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL` values after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it does not work when the ordering column is a tuple. diff --git a/src/current/_includes/v25.4/known-limitations/online-schema-changes-limitations.md b/src/current/_includes/v25.4/known-limitations/online-schema-changes-limitations.md index be6d00c26ce..e8b98cfd66f 100644 --- a/src/current/_includes/v25.4/known-limitations/online-schema-changes-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/online-schema-changes-limitations.md @@ -28,9 +28,9 @@ You cannot start an online schema change on a table if a [primary key change]({% Some [schema changes]({% link {{ page.version.version }}/online-schema-changes.md %}) that [drop columns]({% link {{ page.version.version }}/alter-table.md %}#drop-column) cannot be [rolled back]({% link {{ page.version.version }}/rollback-transaction.md %}) properly. -In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. [#46541](https://github.com/cockroachdb/cockroach/issues/46541) +In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. -In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. [#47712](https://github.com/cockroachdb/cockroach/issues/47712) +In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. To reduce the chance that a column drop will roll back incorrectly: @@ -38,4 +38,4 @@ To reduce the chance that a column drop will roll back incorrectly: - Drop all [constraints]({% link {{ page.version.version }}/constraints.md %}) (including [unique indexes]({% link {{ page.version.version }}/unique.md %})) on the column in a separate transaction, before dropping the column. - Drop any [default values]({% link {{ page.version.version }}/default-value.md %}) or [computed expressions]({% link {{ page.version.version }}/computed-columns.md %}) on a column before attempting to drop the column. This prevents conflicts between constraints and default/computed values during a column drop rollback. -If you think a rollback of a column-dropping schema change has occurred, check the [jobs table]({% link {{ page.version.version }}/show-jobs.md %}). Schema changes with an error prefaced by `cannot be reverted, manual cleanup may be required` might require manual intervention. \ No newline at end of file +If you think a rollback of a column-dropping schema change has occurred, check the [jobs table]({% link {{ page.version.version }}/show-jobs.md %}). Schema changes with an error prefaced by `cannot be reverted, manual cleanup may be required` might require manual intervention. diff --git a/src/current/_includes/v25.4/known-limitations/partition-limitations.md b/src/current/_includes/v25.4/known-limitations/partition-limitations.md index f8ba5e979fa..fde8db82bca 100644 --- a/src/current/_includes/v25.4/known-limitations/partition-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/partition-limitations.md @@ -1,3 +1,3 @@ - When defining a [table partition]({% link {{ page.version.version }}/partitioning.md %}), either during table creation or table alteration, it is not possible to use placeholders in the `PARTITION BY` clause. - CockroachDB does not currently support dropping a single partition from a table. In order to remove partitions, you can [repartition]({% unless page.name == "partitioning.md" %}{% link {{ page.version.version }}/partitioning.md %}{% endunless %}#repartition-a-table) the table. -- In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. [#82774](https://github.com/cockroachdb/cockroach/issues/82774) +- In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. diff --git a/src/current/_includes/v25.4/known-limitations/plpgsql-limitations.md b/src/current/_includes/v25.4/known-limitations/plpgsql-limitations.md index 60b3104942e..3b41a78fd58 100644 --- a/src/current/_includes/v25.4/known-limitations/plpgsql-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/plpgsql-limitations.md @@ -1,23 +1,23 @@ -- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. [#121605](https://github.com/cockroachdb/cockroach/issues/121605) -- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. [#114676](https://github.com/cockroachdb/cockroach/issues/114676) -- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). [#114701](https://github.com/cockroachdb/cockroach/issues/114701) +- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. +- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. +- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). - The following statements are not supported: - - `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops. [#105246](https://github.com/cockroachdb/cockroach/issues/105246) - - `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `CASE`. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). [#111446](https://github.com/cockroachdb/cockroach/issues/111446) -- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). [#106237](https://github.com/cockroachdb/cockroach/issues/106237) -- `RAISE` statements message the client directly, and do not produce log output. [#117750](https://github.com/cockroachdb/cockroach/issues/117750) -- `ASSERT` debugging checks are not supported. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- `RECORD` parameters and variables are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). [#105713](https://github.com/cockroachdb/cockroach/issues/105713) -- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. [#117508](https://github.com/cockroachdb/cockroach/issues/117508) -- Syntax for accessing members of composite types without parentheses is not supported. [#114687](https://github.com/cockroachdb/cockroach/issues/114687) -- `NOT NULL` variable declarations are not supported. [#105243](https://github.com/cockroachdb/cockroach/issues/105243) -- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. [#111479](https://github.com/cockroachdb/cockroach/issues/111479) -- Cursors in PL/pgSQL cannot be declared with arguments. [#117746](https://github.com/cockroachdb/cockroach/issues/117746) -- `OPEN FOR EXECUTE` is not supported for opening cursors. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- The `print_strict_params` option is not supported in PL/pgSQL. [#123671](https://github.com/cockroachdb/cockroach/issues/123671) -- The `FOUND` local variable, which checks whether a statement affected any rows, is not supported in PL/pgSQL. [#122306](https://github.com/cockroachdb/cockroach/issues/122306) -- By default, when a PL/pgSQL variable conflicts with a column name, CockroachDB resolves the ambiguity by treating it as a column reference rather than a variable reference. This behavior differs from PostgreSQL, where an ambiguous column error is reported, and it is possible to change the `plpgsql.variable_conflict` setting in order to prefer either columns or variables. [#115680](https://github.com/cockroachdb/cockroach/issues/115680) -- It is not possible to define a `RECORD`-returning PL/pgSQL function that returns different-typed expressions from different `RETURN` statements. CockroachDB requires a consistent return type for `RECORD`-returning functions. [#115384](https://github.com/cockroachdb/cockroach/issues/115384) -- Variables cannot be declared with an associated collation using the `COLLATE` keyword. [#105245](https://github.com/cockroachdb/cockroach/issues/105245) -- Variables cannot be accessed using the `label.var_name` pattern. [#122322](https://github.com/cockroachdb/cockroach/issues/122322) \ No newline at end of file + - `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops. + - `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `CASE`. +- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). +- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). +- `RAISE` statements message the client directly, and do not produce log output. +- `ASSERT` debugging checks are not supported. +- `RECORD` parameters and variables are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). +- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. +- Syntax for accessing members of composite types without parentheses is not supported. +- `NOT NULL` variable declarations are not supported. +- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. +- Cursors in PL/pgSQL cannot be declared with arguments. +- `OPEN FOR EXECUTE` is not supported for opening cursors. +- The `print_strict_params` option is not supported in PL/pgSQL. +- The `FOUND` local variable, which checks whether a statement affected any rows, is not supported in PL/pgSQL. +- By default, when a PL/pgSQL variable conflicts with a column name, CockroachDB resolves the ambiguity by treating it as a column reference rather than a variable reference. This behavior differs from PostgreSQL, where an ambiguous column error is reported, and it is possible to change the `plpgsql.variable_conflict` setting in order to prefer either columns or variables. +- It is not possible to define a `RECORD`-returning PL/pgSQL function that returns different-typed expressions from different `RETURN` statements. CockroachDB requires a consistent return type for `RECORD`-returning functions. +- Variables cannot be declared with an associated collation using the `COLLATE` keyword. +- Variables cannot be accessed using the `label.var_name` pattern. diff --git a/src/current/_includes/v25.4/known-limitations/read-committed-limitations.md b/src/current/_includes/v25.4/known-limitations/read-committed-limitations.md index b4722a0c369..469b0434fcd 100644 --- a/src/current/_includes/v25.4/known-limitations/read-committed-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/read-committed-limitations.md @@ -1,7 +1,7 @@ -- Mixed-isolation-level workloads must enable foreign-key check locking for `SERIALIZABLE` transactions to avoid race conditions. [#151663](https://github.com/cockroachdb/cockroach/issues/151663#issuecomment-3222083180) -- Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions when the [`autocommit_before_ddl` session setting]({% link {{page.version.version}}/set-vars.md %}#autocommit-before-ddl) is set to `off`, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. [#114778](https://github.com/cockroachdb/cockroach/issues/114778) -- Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. [#112488](https://github.com/cockroachdb/cockroach/issues/112488) +- Mixed-isolation-level workloads must enable foreign-key check locking for `SERIALIZABLE` transactions to avoid race conditions. +- Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions when the [`autocommit_before_ddl` session setting]({% link {{page.version.version}}/set-vars.md %}#autocommit-before-ddl) is set to `off`, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. +- Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. - Because locks acquired by [foreign key]({% link {{ page.version.version }}/foreign-key.md %}) checks, [`SELECT FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}), and [`SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) are fully replicated under `READ COMMITTED` isolation, some queries experience a delay for Raft replication. - [Foreign key]({% link {{ page.version.version }}/foreign-key.md %}) checks are not performed in parallel under `READ COMMITTED` isolation. - [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements are less optimized under `READ COMMITTED` isolation than under `SERIALIZABLE` isolation. Under `READ COMMITTED` isolation, `SELECT FOR UPDATE` and `SELECT FOR SHARE` usually perform an extra lookup join for every locked table when compared to the same queries under `SERIALIZABLE`. In addition, some optimization steps (such as de-correlation of correlated [subqueries]({% link {{ page.version.version }}/subqueries.md %})) are not currently performed on these queries. -- Regardless of isolation level, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements in CockroachDB do not prevent insertion of new rows matching the search condition (i.e., [phantom reads]({% link {{ page.version.version }}/read-committed.md %}#non-repeatable-reads-and-phantom-reads)). This matches PostgreSQL behavior at all isolation levels. [#120673](https://github.com/cockroachdb/cockroach/issues/120673) \ No newline at end of file +- Regardless of isolation level, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements in CockroachDB do not prevent insertion of new rows matching the search condition (i.e., [phantom reads]({% link {{ page.version.version }}/read-committed.md %}#non-repeatable-reads-and-phantom-reads)). This matches PostgreSQL behavior at all isolation levels. diff --git a/src/current/_includes/v25.4/known-limitations/restore-multiregion-match.md b/src/current/_includes/v25.4/known-limitations/restore-multiregion-match.md index ab2f1029ecd..6cf3a2ccefe 100644 --- a/src/current/_includes/v25.4/known-limitations/restore-multiregion-match.md +++ b/src/current/_includes/v25.4/known-limitations/restore-multiregion-match.md @@ -46,5 +46,3 @@ ~~~ sql ALTER DATABASE destination_database SET PRIMARY REGION "us-east1"; ~~~ - - [#71071](https://github.com/cockroachdb/cockroach/issues/71071) \ No newline at end of file diff --git a/src/current/_includes/v25.4/known-limitations/restore-tables-non-multi-reg.md b/src/current/_includes/v25.4/known-limitations/restore-tables-non-multi-reg.md index 5390f2d09ee..a6558d30c7d 100644 --- a/src/current/_includes/v25.4/known-limitations/restore-tables-non-multi-reg.md +++ b/src/current/_includes/v25.4/known-limitations/restore-tables-non-multi-reg.md @@ -1 +1 @@ -Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. [#71502](https://github.com/cockroachdb/cockroach/issues/71502) +Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. diff --git a/src/current/_includes/v25.4/known-limitations/restore-udf.md b/src/current/_includes/v25.4/known-limitations/restore-udf.md index a4a4bc080fe..7d5670fbc9e 100644 --- a/src/current/_includes/v25.4/known-limitations/restore-udf.md +++ b/src/current/_includes/v25.4/known-limitations/restore-udf.md @@ -1 +1 @@ -`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. [#118195](https://github.com/cockroachdb/cockroach/issues/118195) \ No newline at end of file +`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. diff --git a/src/current/_includes/v25.4/known-limitations/rls-update-set-where-returning.md b/src/current/_includes/v25.4/known-limitations/rls-update-set-where-returning.md index 450de11683e..5154352ed33 100644 --- a/src/current/_includes/v25.4/known-limitations/rls-update-set-where-returning.md +++ b/src/current/_includes/v25.4/known-limitations/rls-update-set-where-returning.md @@ -1 +1 @@ -`UPDATE` statements whose `SET`, `WHERE`, or `RETURNING` clauses do not read existing column values can be mistakenly filtered by row-level security `SELECT` policies, causing the statement to affect no rows. [#145894](https://github.com/cockroachdb/cockroach/issues/145894) \ No newline at end of file +`UPDATE` statements whose `SET`, `WHERE`, or `RETURNING` clauses do not read existing column values can be mistakenly filtered by row-level security `SELECT` policies, causing the statement to affect no rows. diff --git a/src/current/_includes/v25.4/known-limitations/rls-values-on-conflict-do-nothing.md b/src/current/_includes/v25.4/known-limitations/rls-values-on-conflict-do-nothing.md index c85dea7987a..0f236672cff 100644 --- a/src/current/_includes/v25.4/known-limitations/rls-values-on-conflict-do-nothing.md +++ b/src/current/_includes/v25.4/known-limitations/rls-values-on-conflict-do-nothing.md @@ -1 +1 @@ -`ON CONFLICT ... DO NOTHING`: CockroachDB does not run the constraint and row-level policy checks on the `VALUES` clause if the candidate row has a conflict. [#35370](https://github.com/cockroachdb/cockroach/issues/35370). +`ON CONFLICT ... DO NOTHING`: CockroachDB does not run the constraint and row-level policy checks on the `VALUES` clause if the candidate row has a conflict.. diff --git a/src/current/_includes/v25.4/known-limitations/routine-limitations.md b/src/current/_includes/v25.4/known-limitations/routine-limitations.md index 7c958004f70..a6d17b992d8 100644 --- a/src/current/_includes/v25.4/known-limitations/routine-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/routine-limitations.md @@ -1,8 +1,8 @@ -- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. [#122264](https://github.com/cockroachdb/cockroach/issues/122264) -- Routines cannot be created if they reference temporary tables. [#121375](https://github.com/cockroachdb/cockroach/issues/121375) -- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. [#121251](https://github.com/cockroachdb/cockroach/issues/121251) -- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. [#121247](https://github.com/cockroachdb/cockroach/issues/121247) -- Routines cannot be created with an `OUT` parameter of type `RECORD`. [#123448](https://github.com/cockroachdb/cockroach/issues/123448) -- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or stored procedures. [#110080](https://github.com/cockroachdb/cockroach/issues/110080) -- Polymorphic types cannot be cast to other types (e.g., `TEXT`) within routine parameters. [#123536](https://github.com/cockroachdb/cockroach/issues/123536) -- Routine parameters and return types cannot be declared using the `ANYENUM` polymorphic type, which is able to match any [`ENUM`]({% link {{ page.version.version }}/enum.md %}) type. [123048](https://github.com/cockroachdb/cockroach/issues/123048) \ No newline at end of file +- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. +- Routines cannot be created if they reference temporary tables. +- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. +- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. +- Routines cannot be created with an `OUT` parameter of type `RECORD`. +- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or stored procedures. +- Polymorphic types cannot be cast to other types (e.g., `TEXT`) within routine parameters. +- Routine parameters and return types cannot be declared using the `ANYENUM` polymorphic type, which is able to match any [`ENUM`]({% link {{ page.version.version }}/enum.md %}) type. diff --git a/src/current/_includes/v25.4/known-limitations/row-level-ttl-limitations.md b/src/current/_includes/v25.4/known-limitations/row-level-ttl-limitations.md index c386ba576d7..352e5034bbd 100644 --- a/src/current/_includes/v25.4/known-limitations/row-level-ttl-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/row-level-ttl-limitations.md @@ -1,5 +1,5 @@ - Any queries you run against tables with Row-Level TTL enabled (or against tables that have [foreign keys]({% link {{page.version.version}}/foreign-key.md %}) that reference TTL-enabled tables) do not filter out expired rows from the result set (this includes [`UPDATE`s]({% link {{ page.version.version }}/update.md %}) and [`DELETE`s]({% link {{ page.version.version }}/delete.md %})). This feature may be added in a future release. For now, follow the instructions in [Filter out expired rows from a selection query]({% link {{ page.version.version }}/row-level-ttl.md %}#filter-out-expired-rows-from-a-selection-query). -- Tables with Row-Level TTL can be referenced by [foreign keys]({% link {{page.version.version}}/foreign-key.md %}). TTL deletes are issued as regular [`DELETE`]({% link {{ page.version.version }}/delete.md %}) statements, so inbound foreign keys apply. If an inbound foreign key uses `ON DELETE RESTRICT` and referencing rows exist, the TTL job fails with a foreign key violation. [#101372](https://github.com/cockroachdb/cockroach/issues/101372) +- Tables with Row-Level TTL can be referenced by [foreign keys]({% link {{page.version.version}}/foreign-key.md %}). TTL deletes are issued as regular [`DELETE`]({% link {{ page.version.version }}/delete.md %}) statements, so inbound foreign keys apply. If an inbound foreign key uses `ON DELETE RESTRICT` and referencing rows exist, the TTL job fails with a foreign key violation. - Enabling Row-Level TTL on a table with multiple [secondary indexes]({% link {{ page.version.version }}/indexes.md %}) can have negative performance impacts on a cluster, including increased [latency]({% link {{ page.version.version }}/common-issues-to-monitor.md %}#service-latency) and [contention]({% link {{ page.version.version }}/performance-best-practices-overview.md %}#transaction-contention). This is particularly true for large tables with terabytes of data and billions of rows that are split up into multiple ranges across separate nodes. - Increased latency may occur because secondary indexes aren't necessarily stored on the same underlying [ranges]({% link {{ page.version.version }}/architecture/overview.md %}#architecture-range) as a table's [primary indexes]({% link {{ page.version.version }}/indexes.md %}). Further, the secondary indexes' ranges may have [leaseholders]({% link {{ page.version.version }}/architecture/overview.md %}#architecture-leaseholder) located on different nodes than the primary index. - Increased contention may occur because [intents]({% link {{ page.version.version }}/architecture/transaction-layer.md %}#write-intents) must be written as part of performing the deletions. diff --git a/src/current/_includes/v25.4/known-limitations/savepoint-limitations.md b/src/current/_includes/v25.4/known-limitations/savepoint-limitations.md index 58451f4ae28..819fbc118c4 100644 --- a/src/current/_includes/v25.4/known-limitations/savepoint-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/savepoint-limitations.md @@ -1 +1 @@ -- Transactions with [priority `HIGH`]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities) that contain DDL and `ROLLBACK TO SAVEPOINT` are not supported, as they could result in a deadlock. [#46414](https://github.com/cockroachdb/cockroach/issues/46414) +- Transactions with [priority `HIGH`]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities) that contain DDL and `ROLLBACK TO SAVEPOINT` are not supported, as they could result in a deadlock. diff --git a/src/current/_includes/v25.4/known-limitations/select-for-update-limitations.md b/src/current/_includes/v25.4/known-limitations/select-for-update-limitations.md index 9c4ab3fd4a1..0066574884f 100644 --- a/src/current/_includes/v25.4/known-limitations/select-for-update-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/select-for-update-limitations.md @@ -1,8 +1,8 @@ -- `SKIP LOCKED` cannot be used for tables with multiple [column families]({% link {{ page.version.version }}/column-families.md %}). [#160961](https://github.com/cockroachdb/cockroach/issues/160961) +- `SKIP LOCKED` cannot be used for tables with multiple [column families]({% link {{ page.version.version }}/column-families.md %}). - By default under `SERIALIZABLE` isolation, locks acquired using `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` are implemented as fast, in-memory [unreplicated locks](architecture/transaction-layer.html#unreplicated-locks). If a [lease transfer]({% link {{ page.version.version }}/architecture/replication-layer.md %}#leases) or [range split/merge]({% link {{ page.version.version }}/architecture/distribution-layer.md %}#range-merges) occurs on a range held by an unreplicated lock, the lock is dropped. The following behaviors can occur: - The desired ordering of concurrent accesses to one or more rows of a table expressed by your use of `SELECT ... FOR UPDATE` may not be preserved (that is, a transaction _B_ against some table _T_ that was supposed to wait behind another transaction _A_ operating on _T_ may not wait for transaction _A_). - The transaction that acquired the (now dropped) unreplicated lock may fail to commit, leading to [transaction retry errors with code `40001`]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}) and the [`restart transaction` error message]({% link {{ page.version.version }}/common-errors.md %}#restart-transaction). When running under `SERIALIZABLE` isolation, `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` locks should be thought of as best-effort, and should not be relied upon for correctness. Note that [serialization]({% link {{ page.version.version }}/demo-serializable.md %}) is preserved despite this limitation. This limitation is fixed when the `enable_durable_locking_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}#enable-durable-locking-for-serializable) is set to `true`. This limitation does **not** apply to [`READ COMMITTED`]({% link {{ page.version.version }}/read-committed.md %}) transactions. - The new implementation of `SELECT FOR UPDATE` is not yet the default setting under `SERIALIZABLE` isolation. It can be used under `SERIALIZABLE` isolation by setting the `optimizer_use_lock_op_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}) to `true`. [#114737](https://github.com/cockroachdb/cockroachdb/issues/114737) -- `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. [#116836](https://github.com/cockroachdb/cockroach/issues/116836) \ No newline at end of file +- `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. diff --git a/src/current/_includes/v25.4/known-limitations/set-transaction-no-rollback.md b/src/current/_includes/v25.4/known-limitations/set-transaction-no-rollback.md index 4f4e5af2aab..6d9e97a7da4 100644 --- a/src/current/_includes/v25.4/known-limitations/set-transaction-no-rollback.md +++ b/src/current/_includes/v25.4/known-limitations/set-transaction-no-rollback.md @@ -30,4 +30,4 @@ UTC ~~~ - [#69396](https://github.com/cockroachdb/cockroach/issues/69396), [#148766](https://github.com/cockroachdb/cockroach/issues/148766) \ No newline at end of file + , diff --git a/src/current/_includes/v25.4/known-limitations/show-backup-symlink.md b/src/current/_includes/v25.4/known-limitations/show-backup-symlink.md index 38ba86fb28f..f47d7f3887b 100644 --- a/src/current/_includes/v25.4/known-limitations/show-backup-symlink.md +++ b/src/current/_includes/v25.4/known-limitations/show-backup-symlink.md @@ -1 +1 @@ -[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. [#70260](https://github.com/cockroachdb/cockroach/issues/70260) \ No newline at end of file +[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. diff --git a/src/current/_includes/v25.4/known-limitations/spatial-limitations.md b/src/current/_includes/v25.4/known-limitations/spatial-limitations.md index 6167ecb02fa..9e1577a16f7 100644 --- a/src/current/_includes/v25.4/known-limitations/spatial-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/spatial-limitations.md @@ -1,10 +1,10 @@ -- Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. [#49203](https://github.com/cockroachdb/cockroach/issues/49203) -- The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. [#49402](https://github.com/cockroachdb/cockroach/issues/49402) -- The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. [#49448](https://github.com/cockroachdb/cockroach/issues/49448) -- CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. [#56124](https://github.com/cockroachdb/cockroach/issues/56124) -- CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). [#55903](https://github.com/cockroachdb/cockroach/issues/55903) -- CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). [#55227](https://github.com/cockroachdb/cockroach/issues/55227) -- CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). [#56492](https://github.com/cockroachdb/cockroach/issues/56492) +- Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. +- The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. +- The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. +- CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. +- CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). +- CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). +- CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). - {% include {{ page.version.version }}/known-limitations/srid-4326-limitations.md %} - {% include {{ page.version.version }}/known-limitations/geospatial-heterogeneous-architectures.md %} -- [Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled on ARM Macs due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. [#93161](https://github.com/cockroachdb/cockroach/issues/93161) +- [Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled on ARM Macs due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. diff --git a/src/current/_includes/v25.4/known-limitations/sql-cursors.md b/src/current/_includes/v25.4/known-limitations/sql-cursors.md index a3e42b9a3ec..59c773fcadc 100644 --- a/src/current/_includes/v25.4/known-limitations/sql-cursors.md +++ b/src/current/_includes/v25.4/known-limitations/sql-cursors.md @@ -1,8 +1,8 @@ CockroachDB implements SQL [cursor]({% link {{ page.version.version }}/cursors.md %}) support with the following limitations: -- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. [#77099](https://github.com/cockroachdb/cockroach/issues/77099) -- Scrollable cursor (also known as reverse `FETCH`) is not supported. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. [#77103](https://github.com/cockroachdb/cockroach/issues/77103) -- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. [#77104](https://github.com/cockroachdb/cockroach/issues/77104) +- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. +- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. +- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. +- Scrollable cursor (also known as reverse `FETCH`) is not supported. +- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. +- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. diff --git a/src/current/_includes/v25.4/known-limitations/sql-guardrails-limitations.md b/src/current/_includes/v25.4/known-limitations/sql-guardrails-limitations.md index 6d8d60ac614..0f3ee64a6f5 100644 --- a/src/current/_includes/v25.4/known-limitations/sql-guardrails-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/sql-guardrails-limitations.md @@ -1,2 +1,2 @@ -- The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. [#70473](https://github.com/cockroachdb/cockroach/issues/70473) -- The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. [#69540](https://github.com/cockroachdb/cockroach/issues/69540) +- The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. +- The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. diff --git a/src/current/_includes/v25.4/known-limitations/srid-4326-limitations.md b/src/current/_includes/v25.4/known-limitations/srid-4326-limitations.md index b556a9fbecd..7cfda23749b 100644 --- a/src/current/_includes/v25.4/known-limitations/srid-4326-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/srid-4326-limitations.md @@ -1 +1 @@ -Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. [#55903](https://github.com/cockroachdb/cockroach/issues/55903) \ No newline at end of file +Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. diff --git a/src/current/_includes/v25.4/known-limitations/stats-refresh-upgrade.md b/src/current/_includes/v25.4/known-limitations/stats-refresh-upgrade.md index 3d5a8d26325..c8239a02bcd 100644 --- a/src/current/_includes/v25.4/known-limitations/stats-refresh-upgrade.md +++ b/src/current/_includes/v25.4/known-limitations/stats-refresh-upgrade.md @@ -1 +1 @@ -- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). [#54816](https://github.com/cockroachdb/cockroach/issues/54816) +- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). diff --git a/src/current/_includes/v25.4/known-limitations/stored-proc-limitations.md b/src/current/_includes/v25.4/known-limitations/stored-proc-limitations.md index b2aae6069c2..b51a2ad974a 100644 --- a/src/current/_includes/v25.4/known-limitations/stored-proc-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/stored-proc-limitations.md @@ -1,2 +1,2 @@ -- Pausable portals are not supported with `CALL` statements for stored procedures. [#151529](https://github.com/cockroachdb/cockroach/issues/151529) -- `COMMIT` and `ROLLBACK` statements are not supported within nested procedures. [#122266](https://github.com/cockroachdb/cockroach/issues/122266) \ No newline at end of file +- Pausable portals are not supported with `CALL` statements for stored procedures. +- `COMMIT` and `ROLLBACK` statements are not supported within nested procedures. diff --git a/src/current/_includes/v25.4/known-limitations/subquery-mutations-limitations.md b/src/current/_includes/v25.4/known-limitations/subquery-mutations-limitations.md index 771eba80bc6..695ddf31d4e 100644 --- a/src/current/_includes/v25.4/known-limitations/subquery-mutations-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/subquery-mutations-limitations.md @@ -2,4 +2,4 @@ - Set the `sql.multiple_modifications_of_table.enabled` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) to `true`. - Use the `enable_multiple_modifications_of_table` [session variable]({% link {{ page.version.version }}/set-vars.md %}). - If multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. [#70731](https://github.com/cockroachdb/cockroach/issues/70731) + If multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. diff --git a/src/current/_includes/v25.4/known-limitations/transaction-row-count-limitations.md b/src/current/_includes/v25.4/known-limitations/transaction-row-count-limitations.md index ded62d6d9be..7806f3ee682 100644 --- a/src/current/_includes/v25.4/known-limitations/transaction-row-count-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/transaction-row-count-limitations.md @@ -1 +1 @@ -- The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. [#70473](https://github.com/cockroachdb/cockroach/issues/70473) +- The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. diff --git a/src/current/_includes/v25.4/known-limitations/trigger-limitations.md b/src/current/_includes/v25.4/known-limitations/trigger-limitations.md index 66fcd0018ed..c390917d49f 100644 --- a/src/current/_includes/v25.4/known-limitations/trigger-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/trigger-limitations.md @@ -1,10 +1,10 @@ -- `CREATE OR REPLACE TRIGGER` is not supported. [#128422](https://github.com/cockroachdb/cockroach/issues/128422) -- Statement-level triggers are not supported. [#126362](https://github.com/cockroachdb/cockroach/issues/126362) -- `INSTEAD OF` triggers are not supported. [#126363](https://github.com/cockroachdb/cockroach/issues/126363) -- A [trigger function]({% link {{ page.version.version }}/triggers.md %}#trigger-function) that is used in an existing trigger cannot be replaced with `CREATE OR REPLACE` syntax. To use `CREATE OR REPLACE`, first [drop any triggers]({% link {{ page.version.version }}/drop-trigger.md %}) that are using the function. [#134555](https://github.com/cockroachdb/cockroach/issues/134555) -- Hidden columns are not visible to triggers. [#133331](https://github.com/cockroachdb/cockroach/issues/133331) -- The `REFERENCING` clause for `CREATE TRIGGER` is not supported. [#135655](https://github.com/cockroachdb/cockroach/issues/135655) -- CockroachDB uses one-based indexing for the `TG_ARGV` array to maintain consistency with its array indexing system. This differs from PostgreSQL, where `TG_ARGV` uses zero-based indexing, unlike other PostgreSQL arrays. Trigger functions that reference `TG_ARGV` need to be adjusted when migrating from PostgreSQL. [#135311](https://github.com/cockroachdb/cockroach/issues/135311) -- `UPDATE` triggers with a column list (using `UPDATE OF column_name` syntax) are not supported. [#135656](https://github.com/cockroachdb/cockroach/issues/135656) -- Statement-level triggers for `TRUNCATE` events are not supported. [#135657](https://github.com/cockroachdb/cockroach/issues/135657) -- {% include {{ page.version.version }}/known-limitations/drop-trigger-limitations.md %} \ No newline at end of file +- `CREATE OR REPLACE TRIGGER` is not supported. +- Statement-level triggers are not supported. +- `INSTEAD OF` triggers are not supported. +- A [trigger function]({% link {{ page.version.version }}/triggers.md %}#trigger-function) that is used in an existing trigger cannot be replaced with `CREATE OR REPLACE` syntax. To use `CREATE OR REPLACE`, first [drop any triggers]({% link {{ page.version.version }}/drop-trigger.md %}) that are using the function. +- Hidden columns are not visible to triggers. +- The `REFERENCING` clause for `CREATE TRIGGER` is not supported. +- CockroachDB uses one-based indexing for the `TG_ARGV` array to maintain consistency with its array indexing system. This differs from PostgreSQL, where `TG_ARGV` uses zero-based indexing, unlike other PostgreSQL arrays. Trigger functions that reference `TG_ARGV` need to be adjusted when migrating from PostgreSQL. +- `UPDATE` triggers with a column list (using `UPDATE OF column_name` syntax) are not supported. +- Statement-level triggers for `TRUNCATE` events are not supported. +- {% include {{ page.version.version }}/known-limitations/drop-trigger-limitations.md %} diff --git a/src/current/_includes/v25.4/known-limitations/trigram-unsupported-syntax.md b/src/current/_includes/v25.4/known-limitations/trigram-unsupported-syntax.md index 494730c7ae8..bb726ac4af9 100644 --- a/src/current/_includes/v25.4/known-limitations/trigram-unsupported-syntax.md +++ b/src/current/_includes/v25.4/known-limitations/trigram-unsupported-syntax.md @@ -5,5 +5,3 @@ - `<->`, `<<->`, `<->>`, `<<<->`, and `<->>>` comparisons. - Acceleration on [regex string matching]({% link {{ page.version.version }}/scalar-expressions.md %}#string-matching-using-posix-regular-expressions). - `%` comparisons, `show_trgm`, and trigram index creation on [collated strings]({% link {{ page.version.version }}/collate.md %}). - -[#41285](https://github.com/cockroachdb/cockroach/issues/41285) \ No newline at end of file diff --git a/src/current/_includes/v25.4/known-limitations/udf-limitations.md b/src/current/_includes/v25.4/known-limitations/udf-limitations.md index 0f44ac320f5..89c49b7e86f 100644 --- a/src/current/_includes/v25.4/known-limitations/udf-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/udf-limitations.md @@ -1,9 +1,9 @@ -- User-defined functions are not supported in partial index predicates. [#155488](https://github.com/cockroachdb/cockroach/issues/155488) -- Views cannot reference a UDF that contains mutation statements (`INSERT`, `UPDATE`, `UPSERT`, `DELETE`). [#151686](https://github.com/cockroachdb/cockroach/issues/151686) -- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. [#122945](https://github.com/cockroachdb/cockroach/issues/122945) +- User-defined functions are not supported in partial index predicates. +- Views cannot reference a UDF that contains mutation statements (`INSERT`, `UPDATE`, `UPSERT`, `DELETE`). +- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. - User-defined functions are not currently supported in: - - Expressions (column, index, constraint) in tables. [#87699](https://github.com/cockroachdb/cockroach/issues/87699) - - Partial index predicates. [#155488](https://github.com/cockroachdb/cockroach/issues/155488) -- User-defined functions cannot call themselves recursively. [#93049](https://github.com/cockroachdb/cockroach/issues/93049) -- The `setval` function cannot be resolved when used inside UDF bodies. [#110860](https://github.com/cockroachdb/cockroach/issues/110860) -- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) in UDFs is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) \ No newline at end of file + - Expressions (column, index, constraint) in tables. + - Partial index predicates. +- User-defined functions cannot call themselves recursively. +- The `setval` function cannot be resolved when used inside UDF bodies. +- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) in UDFs is not supported. diff --git a/src/current/_includes/v25.4/known-limitations/vector-limitations.md b/src/current/_includes/v25.4/known-limitations/vector-limitations.md index 97ed7c47599..21646fc5b2c 100644 --- a/src/current/_includes/v25.4/known-limitations/vector-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/vector-limitations.md @@ -1,5 +1,5 @@ - {% include {{ page.version.version }}/sql/vector-batch-inserts.md %} -- `IMPORT INTO` is not supported on tables with vector indexes. You can import the vectors first and create the index after import is complete. [#145227](https://github.com/cockroachdb/cockroach/issues/145227) -- The distance functions `vector_l1_ops`, `bit_hamming_ops`, and `bit_jaccard_ops` are not implemented. [#147839](https://github.com/cockroachdb/cockroach/issues/147839) -- Index acceleration with filters is only supported if the filters match prefix columns. [#146145](https://github.com/cockroachdb/cockroach/issues/146145) -- Index recommendations are not provided for vector indexes. [#146146](https://github.com/cockroachdb/cockroach/issues/146146) \ No newline at end of file +- `IMPORT INTO` is not supported on tables with vector indexes. You can import the vectors first and create the index after import is complete. +- The distance functions `vector_l1_ops`, `bit_hamming_ops`, and `bit_jaccard_ops` are not implemented. +- Index acceleration with filters is only supported if the filters match prefix columns. +- Index recommendations are not provided for vector indexes. diff --git a/src/current/_includes/v25.4/known-limitations/vectorized-engine-limitations.md b/src/current/_includes/v25.4/known-limitations/vectorized-engine-limitations.md index daea59ebf88..84f991a0e63 100644 --- a/src/current/_includes/v25.4/known-limitations/vectorized-engine-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/vectorized-engine-limitations.md @@ -1,2 +1,2 @@ -- The vectorized engine does not support queries containing a join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). [#38018](https://github.com/cockroachdb/cockroach/issues/38018) +- The vectorized engine does not support queries containing a join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). - The vectorized engine does not support [working with spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}). Queries with [geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) or [spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}) will revert to the row-oriented execution engine. diff --git a/src/current/_includes/v25.4/known-limitations/view-limitations.md b/src/current/_includes/v25.4/known-limitations/view-limitations.md index 22b8a6c29fa..67c085876f4 100644 --- a/src/current/_includes/v25.4/known-limitations/view-limitations.md +++ b/src/current/_includes/v25.4/known-limitations/view-limitations.md @@ -1,2 +1,2 @@ -- The `security_invoker` attribute for views is not supported. Views always use the view definer's privileges when checking permissions. [#138918](https://github.com/cockroachdb/cockroach/issues/138918) -- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) (including ENUMs) in views is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) +- The `security_invoker` attribute for views is not supported. Views always use the view definer's privileges when checking permissions. +- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) (including ENUMs) in views is not supported. diff --git a/src/current/_includes/v25.4/misc/tooling.md b/src/current/_includes/v25.4/misc/tooling.md index dcd24363435..ec553f1b383 100644 --- a/src/current/_includes/v25.4/misc/tooling.md +++ b/src/current/_includes/v25.4/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Example Apps]({% link {{ page.version.version }}/example-apps.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). diff --git a/src/current/_includes/v25.4/prod-deployment/decommission-pre-flight-checks.md b/src/current/_includes/v25.4/prod-deployment/decommission-pre-flight-checks.md index b267379384b..f7a613dff78 100644 --- a/src/current/_includes/v25.4/prod-deployment/decommission-pre-flight-checks.md +++ b/src/current/_includes/v25.4/prod-deployment/decommission-pre-flight-checks.md @@ -14,5 +14,5 @@ Failed running "node decommission" These checks can be skipped by [passing the flag `--checks=skip` to `cockroach node decommission`]({% link {{ page.version.version }}/cockroach-node.md %}#decommission-checks). {{site.data.alerts.callout_info}} -The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see [cockroachdb/cockroach#71757](https://github.com/cockroachdb/cockroach/issues/71757) +The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see {{site.data.alerts.end}} diff --git a/src/current/_includes/v25.4/sql/savepoints-and-high-priority-transactions.md b/src/current/_includes/v25.4/sql/savepoints-and-high-priority-transactions.md index c6de489e641..ce124bc3209 100644 --- a/src/current/_includes/v25.4/sql/savepoints-and-high-priority-transactions.md +++ b/src/current/_includes/v25.4/sql/savepoints-and-high-priority-transactions.md @@ -1 +1 @@ -[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. For more information, see GitHub issue [#46414](https://www.github.com/cockroachdb/cockroach/issues/46414). +[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. diff --git a/src/current/_includes/v25.4/sql/unsupported-postgres-features.md b/src/current/_includes/v25.4/sql/unsupported-postgres-features.md index a89650e38e9..a9a344b8096 100644 --- a/src/current/_includes/v25.4/sql/unsupported-postgres-features.md +++ b/src/current/_includes/v25.4/sql/unsupported-postgres-features.md @@ -1,10 +1,10 @@ ### `CREATE DOMAIN` -CockroachDB does not support `CREATE DOMAIN`. Tracking issue: [cockroachdb/cockroach#108659](https://github.com/cockroachdb/cockroach/issues/108659). +CockroachDB does not support `CREATE DOMAIN`. Tracking issue: . ### PostgreSQL range types -CockroachDB does not support PostgreSQL range types. Tracking issue: [cockroachdb/cockroach#128638](https://github.com/cockroachdb/cockroach/issues/128638). +CockroachDB does not support PostgreSQL range types. Tracking issue: . ### Other unsupported features diff --git a/src/current/_includes/v26.1/backward-incompatible/alpha.1.md b/src/current/_includes/v26.1/backward-incompatible/alpha.1.md index 8d4004422ad..7af28ac9019 100644 --- a/src/current/_includes/v26.1/backward-incompatible/alpha.1.md +++ b/src/current/_includes/v26.1/backward-incompatible/alpha.1.md @@ -1,15 +1,15 @@ -- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). [#81298][#81298] -- In the Cockroach CLI, [`BOOL` values]({% link {{ page.version.version }}/bool.md %}) are now formatted as `t` or `f` instead of `True` or `False`. [#81943][#81943] -- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node]({% link {{ page.version.version }}/node-shutdown.md %}) gracefully, send a `SIGTERM` signal to it. [#82988][#82988] -- Added a cluster version to allow the [Pebble storage engine]({% link {{ page.version.version }}/architecture/storage-layer.md#pebble %}) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree]({% link {{ page.version.version }}/architecture/storage-layer.md#log-structured-merge-trees %})). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. [#84887][#84887] +- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). +- In the Cockroach CLI, [`BOOL` values]({% link {{ page.version.version }}/bool.md %}) are now formatted as `t` or `f` instead of `True` or `False`. +- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node]({% link {{ page.version.version }}/node-shutdown.md %}) gracefully, send a `SIGTERM` signal to it. +- Added a cluster version to allow the [Pebble storage engine]({% link {{ page.version.version }}/architecture/storage-layer.md#pebble %}) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree]({% link {{ page.version.version }}/architecture/storage-layer.md#log-structured-merge-trees %})). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. - Using a single TCP port listener for both RPC (node-node) and SQL client connections is now deprecated. This capability **will be removed** in the next version of CockroachDB. Instead, make one of the following configuration changes to your CockroachDB deployment: - Preferred: keep port `26257` for SQL, and allocate a new port, e.g., `26357`, for node-node RPC connections. For example, you might configure a node with the flags `--listen-addr=:26357 --sql-addr=:26257`, where subsequent nodes seeking to join would then use the flag `--join=othernode:26357,othernode:26257`. This will become the default configuration in the next version of CockroachDB. When using this mode of operation, care should be taken to use a `--join` flag that includes both the previous and new port numbers for other nodes, so that no network partition occurs during the upgrade. - - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. [#85671][#85671] -- If no `nullif` option is specified while using [`IMPORT CSV`]({% link {{ page.version.version }}/import.md %}), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. [#84487][#84487] -- [`COPY FROM`]({% link {{ page.version.version }}/copy.md %}) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. [#85986][#85986] -- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link {{ page.version.version }}/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. [#81310][#81310] -- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. [#81266][#81266] -- Removed the deprecated `GRANT` privilege. [#81310][#81310] -- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. [#83134][#83134] -- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. [#82560][#82560] -- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link {{ page.version.version }}/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. [#76834][#76834] + - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. +- If no `nullif` option is specified while using [`IMPORT CSV`]({% link {{ page.version.version }}/import.md %}), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. +- [`COPY FROM`]({% link {{ page.version.version }}/copy.md %}) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. +- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link {{ page.version.version }}/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. +- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. +- Removed the deprecated `GRANT` privilege. +- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. +- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. +- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link {{ page.version.version }}/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. diff --git a/src/current/_includes/v26.1/cdc/avro-udt-composite.md b/src/current/_includes/v26.1/cdc/avro-udt-composite.md index 7a34fbd3253..da8b7b30a3e 100644 --- a/src/current/_includes/v26.1/cdc/avro-udt-composite.md +++ b/src/current/_includes/v26.1/cdc/avro-udt-composite.md @@ -1 +1 @@ -A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). [#102903](https://github.com/cockroachdb/cockroach/issues/102903) \ No newline at end of file +A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). diff --git a/src/current/_includes/v26.1/cdc/csv-udt-composite.md b/src/current/_includes/v26.1/cdc/csv-udt-composite.md index 834bddd8366..fc4597e8e98 100644 --- a/src/current/_includes/v26.1/cdc/csv-udt-composite.md +++ b/src/current/_includes/v26.1/cdc/csv-udt-composite.md @@ -1 +1 @@ -A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). [#102905](https://github.com/cockroachdb/cockroach/issues/102905) \ No newline at end of file +A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). diff --git a/src/current/_includes/v26.1/faq/what-is-crdb.md b/src/current/_includes/v26.1/faq/what-is-crdb.md index 28857ed61fa..14e9080a4f0 100644 --- a/src/current/_includes/v26.1/faq/what-is-crdb.md +++ b/src/current/_includes/v26.1/faq/what-is-crdb.md @@ -1,7 +1,7 @@ CockroachDB is a [distributed SQL](https://www.cockroachlabs.com/blog/what-is-distributed-sql/) database built on a transactional and strongly-consistent key-value store. It **scales** horizontally; **survives** disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention; supports **strongly-consistent** ACID transactions; and provides a familiar **SQL** API for structuring, manipulating, and querying data. -CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies, and the [source code](https://github.com/cockroachdb/cockroach) is freely available. +CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies. {{site.data.alerts.callout_success}} For a deeper dive into CockroachDB's capabilities and how it fits into the database landscape, take the free [**Intro to Distributed SQL and CockroachDB**](https://university.cockroachlabs.com/courses/course-v1:crl+intro-to-distributed-sql-and-cockroachdb+self-paced/about) course on Cockroach University. -{{site.data.alerts.end}} \ No newline at end of file +{{site.data.alerts.end}} diff --git a/src/current/_includes/v26.1/finalization-required/119894.md b/src/current/_includes/v26.1/finalization-required/119894.md index f2b393c3c0e..c65c82b83d5 100644 --- a/src/current/_includes/v26.1/finalization-required/119894.md +++ b/src/current/_includes/v26.1/finalization-required/119894.md @@ -1 +1 @@ -[Splits](https://cockroachlabs.com/docs/{{ include.version }}/architecture/distribution-layer#range-splits) no longer hold [latches](https://cockroachlabs.com/docs/architecture/distribution-layer.#latch-manager) for time proportional to the range size while computing [MVCC](https://cockroachlabs.com/docs/{{ include.version }}/architecture/storage-layer#mvcc) statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. [#119894](https://github.com/cockroachdb/cockroach/pull/119894) +[Splits](https://cockroachlabs.com/docs/{{ include.version }}/architecture/distribution-layer#range-splits) no longer hold [latches](https://cockroachlabs.com/docs/architecture/distribution-layer.#latch-manager) for time proportional to the range size while computing [MVCC](https://cockroachlabs.com/docs/{{ include.version }}/architecture/storage-layer#mvcc) statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. diff --git a/src/current/_includes/v26.1/known-limitations/alter-changefeed-cdc-queries.md b/src/current/_includes/v26.1/known-limitations/alter-changefeed-cdc-queries.md index 56dd7eeaacd..fbd2a285c6e 100644 --- a/src/current/_includes/v26.1/known-limitations/alter-changefeed-cdc-queries.md +++ b/src/current/_includes/v26.1/known-limitations/alter-changefeed-cdc-queries.md @@ -1 +1 @@ -{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. [#83033](https://github.com/cockroachdb/cockroach/issues/83033) \ No newline at end of file +{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. diff --git a/src/current/_includes/v26.1/known-limitations/alter-changefeed-limitations.md b/src/current/_includes/v26.1/known-limitations/alter-changefeed-limitations.md index a183f2964f4..d1cb7303a99 100644 --- a/src/current/_includes/v26.1/known-limitations/alter-changefeed-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/alter-changefeed-limitations.md @@ -1,8 +1,8 @@ -- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) statement. [#77171](https://github.com/cockroachdb/cockroach/issues/77171) +- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) statement. - CockroachDB does not keep track of the [`initial_scan`]({% link {{ page.version.version }}/create-changefeed.md %}#initial-scan) option applied to tables when it is set to `yes` or `only`. For example: ~~~ sql ALTER CHANGEFEED {job_ID} ADD table WITH initial_scan = 'yes'; ~~~ - This will trigger an initial scan of the table and the changefeed will track `table`. The changefeed will **not** track `initial_scan` specified as an option, so it will not display in the output or after a `SHOW CHANGEFEED JOB` statement. \ No newline at end of file + This will trigger an initial scan of the table and the changefeed will track `table`. The changefeed will **not** track `initial_scan` specified as an option, so it will not display in the output or after a `SHOW CHANGEFEED JOB` statement. diff --git a/src/current/_includes/v26.1/known-limitations/alter-sequence-limitations.md b/src/current/_includes/v26.1/known-limitations/alter-sequence-limitations.md index 7343a1d1f1e..fdb6a3d8b1d 100644 --- a/src/current/_includes/v26.1/known-limitations/alter-sequence-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/alter-sequence-limitations.md @@ -1 +1 @@ -- Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. [#23719](https://github.com/cockroachdb/cockroach/issues/23719) +- Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. diff --git a/src/current/_includes/v26.1/known-limitations/alter-table-add-column-limitations.md b/src/current/_includes/v26.1/known-limitations/alter-table-add-column-limitations.md index a8e71e5e59c..02369e61a2f 100644 --- a/src/current/_includes/v26.1/known-limitations/alter-table-add-column-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/alter-table-add-column-limitations.md @@ -2,7 +2,7 @@ - The column uses a [sequence]({% link {{ page.version.version }}/create-sequence.md %}) as the [`DEFAULT`]({% link {{ page.version.version }}/default-value.md %}) value, for example using `nextval()`. - The column uses `GENERATED ALWAYS AS IDENTITY` or `GENERATED BY DEFAULT AS IDENTITY`, unless the table being altered is empty. - This is because CockroachDB does not support back-filling sequential column data. [#42508](https://github.com/cockroachdb/cockroach/issues/42508) + This is because CockroachDB does not support back-filling sequential column data. - When executing an [`ALTER TABLE ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statement with a [`DEFAULT`]({% link {{ page.version.version }}/default-value.md %}) expression, new values generated: - Use the default [search path]({% link {{ page.version.version }}/sql-name-resolution.md %}#search-path) regardless of the search path configured in the current session via `SET SEARCH_PATH`. - Use the UTC time zone regardless of the time zone configured in the current session via [`SET TIME ZONE`]({% link {{ page.version.version }}/set-vars.md %}). diff --git a/src/current/_includes/v26.1/known-limitations/alter-view-limitations.md b/src/current/_includes/v26.1/known-limitations/alter-view-limitations.md index 642bed6ce08..4cfdf9b8a1a 100644 --- a/src/current/_includes/v26.1/known-limitations/alter-view-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/alter-view-limitations.md @@ -1,4 +1,4 @@ `ALTER VIEW` does not currently support: - Changing the [`SELECT`]({% link {{ page.version.version }}/select-clause.md %}) statement executed by a view. Instead, you must drop the existing view and create a new view. -- Renaming a view that other views depend on. This feature may be added in the future. [#10083](https://github.com/cockroachdb/cockroach/issues/10083) \ No newline at end of file +- Renaming a view that other views depend on. This feature may be added in the future. diff --git a/src/current/_includes/v26.1/known-limitations/aost-limitations.md b/src/current/_includes/v26.1/known-limitations/aost-limitations.md index 811c884d08d..c0d92fff59b 100644 --- a/src/current/_includes/v26.1/known-limitations/aost-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/aost-limitations.md @@ -1 +1 @@ -CockroachDB does not support placeholders in {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %}. The time value must be a constant value embedded in the SQL string. [#30955](https://github.com/cockroachdb/cockroach/issues/30955) \ No newline at end of file +CockroachDB does not support placeholders in {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %}. The time value must be a constant value embedded in the SQL string. diff --git a/src/current/_includes/v26.1/known-limitations/cannot-refresh-materialized-views-inside-transactions.md b/src/current/_includes/v26.1/known-limitations/cannot-refresh-materialized-views-inside-transactions.md index b0aaf728177..cd93d6ad8c8 100644 --- a/src/current/_includes/v26.1/known-limitations/cannot-refresh-materialized-views-inside-transactions.md +++ b/src/current/_includes/v26.1/known-limitations/cannot-refresh-materialized-views-inside-transactions.md @@ -23,5 +23,3 @@ ERROR: cannot refresh view in an explicit transaction SQLSTATE: 25000 ~~~ - - [#66008](https://github.com/cockroachdb/cockroach/issues/66008) diff --git a/src/current/_includes/v26.1/known-limitations/cdc-queries-column-families.md b/src/current/_includes/v26.1/known-limitations/cdc-queries-column-families.md index 505a8c9700e..ea64b9821ea 100644 --- a/src/current/_includes/v26.1/known-limitations/cdc-queries-column-families.md +++ b/src/current/_includes/v26.1/known-limitations/cdc-queries-column-families.md @@ -1 +1 @@ -Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. [#127761](https://github.com/cockroachdb/cockroach/issues/127761) \ No newline at end of file +Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. diff --git a/src/current/_includes/v26.1/known-limitations/cdc-queries.md b/src/current/_includes/v26.1/known-limitations/cdc-queries.md index 2839eba5eda..a19a4a9a9c4 100644 --- a/src/current/_includes/v26.1/known-limitations/cdc-queries.md +++ b/src/current/_includes/v26.1/known-limitations/cdc-queries.md @@ -3,5 +3,5 @@ - The following are not permitted in CDC queries: - [Volatile functions]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility). - Sub-select queries. - - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). [#98237](https://github.com/cockroachdb/cockroach/issues/98237) -- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. [#83835](https://github.com/cockroachdb/cockroach/issues/83835) + - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). +- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. diff --git a/src/current/_includes/v26.1/known-limitations/cdc.md b/src/current/_includes/v26.1/known-limitations/cdc.md index a473e94367c..9f691268aeb 100644 --- a/src/current/_includes/v26.1/known-limitations/cdc.md +++ b/src/current/_includes/v26.1/known-limitations/cdc.md @@ -1,8 +1,8 @@ -- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). [#73435](https://github.com/cockroachdb/cockroach/issues/73435) +- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). - {% include {{page.version.version}}/cdc/kafka-vpc-limitation.md %} -- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#insecure-tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. [#73431](https://github.com/cockroachdb/cockroach/issues/73431) -- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. [#73432](https://github.com/cockroachdb/cockroach/issues/73432) -- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. [#79452](https://github.com/cockroachdb/cockroach/issues/79452) +- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#insecure-tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. +- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. +- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. - {% include {{page.version.version}}/cdc/types-udt-composite-general.md %} The following limitations apply: - {% include {{page.version.version}}/cdc/avro-udt-composite.md %} - - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} \ No newline at end of file + - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} diff --git a/src/current/_includes/v26.1/known-limitations/changefeed-column-family-message.md b/src/current/_includes/v26.1/known-limitations/changefeed-column-family-message.md index 41744b9b4b4..785cabfebe1 100644 --- a/src/current/_includes/v26.1/known-limitations/changefeed-column-family-message.md +++ b/src/current/_includes/v26.1/known-limitations/changefeed-column-family-message.md @@ -1 +1 @@ -When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. [#127736](https://github.com/cockroachdb/cockroach/issues/127736) \ No newline at end of file +When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. diff --git a/src/current/_includes/v26.1/known-limitations/citext-limitations.md b/src/current/_includes/v26.1/known-limitations/citext-limitations.md index df0fbc0ff91..0874b80ecce 100644 --- a/src/current/_includes/v26.1/known-limitations/citext-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/citext-limitations.md @@ -1 +1 @@ -- `CITEXT` types are not currently compatible with the `LIKE` and `ILIKE` operators. [#149791](https://github.com/cockroachdb/cockroach/issues/149791) \ No newline at end of file +- `CITEXT` types are not currently compatible with the `LIKE` and `ILIKE` operators. diff --git a/src/current/_includes/v26.1/known-limitations/collate-limitations.md b/src/current/_includes/v26.1/known-limitations/collate-limitations.md index d3e3e712bb5..c5f152172fe 100644 --- a/src/current/_includes/v26.1/known-limitations/collate-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/collate-limitations.md @@ -1 +1 @@ -- Many string operations are not properly overloaded for [collated strings]({% link {{ page.version.version }}/collate.md %}). For example, the `||` concatenation operator works with regular strings but returns an error with collated strings. [#10679](https://github.com/cockroachdb/cockroach/issues/10679) +- Many string operations are not properly overloaded for [collated strings]({% link {{ page.version.version }}/collate.md %}). For example, the `||` concatenation operator works with regular strings but returns an error with collated strings. diff --git a/src/current/_includes/v26.1/known-limitations/comment-on-limitations.md b/src/current/_includes/v26.1/known-limitations/comment-on-limitations.md index 568b31ec737..d74f88daaea 100644 --- a/src/current/_includes/v26.1/known-limitations/comment-on-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/comment-on-limitations.md @@ -1 +1 @@ -- The [`COMMENT ON`]({% link {{ page.version.version }}/comment-on.md %}) statement associates comments to databases, tables, or columns. However, the internal table (`system.comments`) in which these comments are stored is not captured by a [`BACKUP`]({% link {{ page.version.version }}/backup.md %}) of an individual table or database. As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. [#44396](https://github.com/cockroachdb/cockroach/issues/44396) +- The [`COMMENT ON`]({% link {{ page.version.version }}/comment-on.md %}) statement associates comments to databases, tables, or columns. However, the internal table (`system.comments`) in which these comments are stored is not captured by a [`BACKUP`]({% link {{ page.version.version }}/backup.md %}) of an individual table or database. As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. diff --git a/src/current/_includes/v26.1/known-limitations/composite-type-limitations.md b/src/current/_includes/v26.1/known-limitations/composite-type-limitations.md index 1ceecb5d889..6c7b2cc6281 100644 --- a/src/current/_includes/v26.1/known-limitations/composite-type-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/composite-type-limitations.md @@ -1,2 +1,2 @@ -- Updating subfields of composite types using dot syntax results in a syntax error. [#102984](https://github.com/cockroachdb/cockroach/issues/102984) -- Tuple elements cannot be accessed without enclosing the [composite variable]({% link {{ page.version.version }}/create-type.md %}) name in parentheses. For example, `(OLD).column` and `(NEW).column` when used in [triggers]({% link {{ page.version.version }}/triggers.md %}). [#114687](https://github.com/cockroachdb/cockroach/issues/114687) +- Updating subfields of composite types using dot syntax results in a syntax error. +- Tuple elements cannot be accessed without enclosing the [composite variable]({% link {{ page.version.version }}/create-type.md %}) name in parentheses. For example, `(OLD).column` and `(NEW).column` when used in [triggers]({% link {{ page.version.version }}/triggers.md %}). diff --git a/src/current/_includes/v26.1/known-limitations/copy-syntax.md b/src/current/_includes/v26.1/known-limitations/copy-syntax.md index e64a075dcac..90d35df5754 100644 --- a/src/current/_includes/v26.1/known-limitations/copy-syntax.md +++ b/src/current/_includes/v26.1/known-limitations/copy-syntax.md @@ -1,5 +1,5 @@ CockroachDB does not yet support the following `COPY` syntax: - - `COPY ... WITH FREEZE`. [#85573](https://github.com/cockroachdb/cockroach/issues/85573) - - `COPY ... WITH QUOTE`. [#85574](https://github.com/cockroachdb/cockroach/issues/85574) - - `COPY ... FROM ... WHERE `. [#54580](https://github.com/cockroachdb/cockroach/issues/54580) + - `COPY ... WITH FREEZE`. + - `COPY ... WITH QUOTE`. + - `COPY ... FROM ... WHERE `. diff --git a/src/current/_includes/v26.1/known-limitations/create-statistics-aost-limitation.md b/src/current/_includes/v26.1/known-limitations/create-statistics-aost-limitation.md index 09f86f51c48..7a2a39034de 100644 --- a/src/current/_includes/v26.1/known-limitations/create-statistics-aost-limitation.md +++ b/src/current/_includes/v26.1/known-limitations/create-statistics-aost-limitation.md @@ -1 +1 @@ -The `ANALYZE` alias {% if page.name != "create-statistics.md" %}of [`CREATE STATISTICS`]({% link {{ page.version.version }}/create-statistics.md %}){% endif %} does not support specifying an {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %} timestamp. `ANALYZE` statements use `AS OF SYSTEM TIME '-0.001ms'` automatically. For more control over the statistics interval, use the `CREATE STATISTICS` syntax instead. [#96430](https://github.com/cockroachdb/cockroach/issues/96430) \ No newline at end of file +The `ANALYZE` alias {% if page.name != "create-statistics.md" %}of [`CREATE STATISTICS`]({% link {{ page.version.version }}/create-statistics.md %}){% endif %} does not support specifying an {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %} timestamp. `ANALYZE` statements use `AS OF SYSTEM TIME '-0.001ms'` automatically. For more control over the statistics interval, use the `CREATE STATISTICS` syntax instead. diff --git a/src/current/_includes/v26.1/known-limitations/data-domiciling-limitations.md b/src/current/_includes/v26.1/known-limitations/data-domiciling-limitations.md index b4e1092fdac..93cb17bd33a 100644 --- a/src/current/_includes/v26.1/known-limitations/data-domiciling-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/data-domiciling-limitations.md @@ -1,7 +1,7 @@ -- When using the `infer_rbr_region_col_using_constraint` option, inserting rows with `DEFAULT` for the region column uses the database's primary region instead of inferring the region from the parent table via foreign-key constraint. [#150783](https://github.com/cockroachdb/cockroach/issues/150783) +- When using the `infer_rbr_region_col_using_constraint` option, inserting rows with `DEFAULT` for the region column uses the database's primary region instead of inferring the region from the parent table via foreign-key constraint. - When columns are [indexed]({% link {{ page.version.version }}/indexes.md %}), a subset of data from the indexed columns may appear in [meta ranges]({% link {{ page.version.version }}/architecture/distribution-layer.md %}#meta-ranges) or other system tables. CockroachDB synchronizes these system ranges and system tables across nodes. This synchronization does not respect any multi-region settings applied via either the [multi-region SQL statements]({% link {{ page.version.version }}/multiregion-overview.md %}), or the low-level [zone configs]({% link {{ page.version.version }}/configure-replication-zones.md %}) mechanism. - [Zone configs]({% link {{ page.version.version }}/configure-replication-zones.md %}) can be used for data placement but these features were historically built for performance, not for domiciling. The replication system's top priority is to prevent the loss of data and it may override the zone configurations if necessary to ensure data durability. For more information, see [Replication Controls]({% link {{ page.version.version }}/configure-replication-zones.md %}#types-of-constraints). - If your [log files]({% link {{ page.version.version }}/logging-overview.md %}) are kept in the region where they were generated, there is some cross-region leakage (like the system tables described previously), but the majority of user data that makes it into the logs is going to be homed in that region. If that's not strong enough, you can use the [log redaction functionality]({% link {{ page.version.version }}/configure-logs.md %}#redact-logs) to strip all raw data from the logs. You can also limit your log retention entirely. - If you start a node with a [`--locality`]({% link {{ page.version.version }}/cockroach-start.md %}#locality) flag that says the node is in region _A_, but the node is actually running in some region _B_, data domiciling based on the inferred node placement will not work. A CockroachDB node only knows its locality based on the text supplied to the `--locality` flag; it can not ensure that it is actually running in that physical location. - {% include {{page.version.version}}/known-limitations/secondary-regions-with-regional-by-row-tables.md %} -- {% include {{ page.version.version }}/known-limitations/enforce-home-region-limitations.md %} \ No newline at end of file +- {% include {{ page.version.version }}/known-limitations/enforce-home-region-limitations.md %} diff --git a/src/current/_includes/v26.1/known-limitations/distsql-heterogeneous-endianness.md b/src/current/_includes/v26.1/known-limitations/distsql-heterogeneous-endianness.md index 9194395dc04..6249f78e719 100644 --- a/src/current/_includes/v26.1/known-limitations/distsql-heterogeneous-endianness.md +++ b/src/current/_includes/v26.1/known-limitations/distsql-heterogeneous-endianness.md @@ -1 +1 @@ -In clusters that mix big-endian and little-endian architectures, DistSQL may produce incorrect results because hash computations differ between the platforms. As a workaround on heterogeneous clusters, disable DistSQL with `SET CLUSTER SETTING sql.defaults.distsql = off`. [#148773](https://github.com/cockroachdb/cockroach/issues/148773) \ No newline at end of file +In clusters that mix big-endian and little-endian architectures, DistSQL may produce incorrect results because hash computations differ between the platforms. As a workaround on heterogeneous clusters, disable DistSQL with `SET CLUSTER SETTING sql.defaults.distsql = off`. diff --git a/src/current/_includes/v26.1/known-limitations/drop-column-partial-index.md b/src/current/_includes/v26.1/known-limitations/drop-column-partial-index.md index 9fd1811cc43..59d1e0e09b1 100644 --- a/src/current/_includes/v26.1/known-limitations/drop-column-partial-index.md +++ b/src/current/_includes/v26.1/known-limitations/drop-column-partial-index.md @@ -1 +1 @@ -CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}). [#97813](https://github.com/cockroachdb/cockroach/issues/97813). \ No newline at end of file +CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}).. diff --git a/src/current/_includes/v26.1/known-limitations/drop-owned-by-limitations.md b/src/current/_includes/v26.1/known-limitations/drop-owned-by-limitations.md index 95685f6adf1..563c3fc3746 100644 --- a/src/current/_includes/v26.1/known-limitations/drop-owned-by-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/drop-owned-by-limitations.md @@ -10,4 +10,4 @@ The phrase "synthetic privileges" in the error message refers to [system-level privileges]({% link {{ page.version.version }}/security-reference/authorization.md %}#supported-privileges). - The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. [#88149](https://github.com/cockroachdb/cockroach/issues/88149) \ No newline at end of file + The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. diff --git a/src/current/_includes/v26.1/known-limitations/drop-trigger-limitations.md b/src/current/_includes/v26.1/known-limitations/drop-trigger-limitations.md index 90745f7e17a..e8cf291750c 100644 --- a/src/current/_includes/v26.1/known-limitations/drop-trigger-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/drop-trigger-limitations.md @@ -1 +1 @@ -[`DROP TRIGGER`]({% link {{ page.version.version }}/drop-trigger.md %}) with `CASCADE` is not supported. [#128151](https://github.com/cockroachdb/cockroach/issues/128151) \ No newline at end of file +[`DROP TRIGGER`]({% link {{ page.version.version }}/drop-trigger.md %}) with `CASCADE` is not supported. diff --git a/src/current/_includes/v26.1/known-limitations/enforce-home-region-limitations.md b/src/current/_includes/v26.1/known-limitations/enforce-home-region-limitations.md index 693829358f7..6ab5abaccaf 100644 --- a/src/current/_includes/v26.1/known-limitations/enforce-home-region-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/enforce-home-region-limitations.md @@ -1 +1 @@ -With `enforce_home_region` enabled, CockroachDB currently validates home-region access during plan build. This can falsely reject queries (e.g., lookup joins) that would only read local data at execution time, returning a `Query has no home region` error. [#148375](https://github.com/cockroachdb/cockroach/issues/148375) \ No newline at end of file +With `enforce_home_region` enabled, CockroachDB currently validates home-region access during plan build. This can falsely reject queries (e.g., lookup joins) that would only read local data at execution time, returning a `Query has no home region` error. diff --git a/src/current/_includes/v26.1/known-limitations/expression-index-limitations.md b/src/current/_includes/v26.1/known-limitations/expression-index-limitations.md index c0e94185948..76724af9432 100644 --- a/src/current/_includes/v26.1/known-limitations/expression-index-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/expression-index-limitations.md @@ -1,6 +1,6 @@ - The expression cannot reference columns outside the index's table. - Functional expression output must be determined by the input arguments. For example, you can't use the [volatile function]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility) `now()` to create an index because its output depends on more than just the function arguments. -- CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). [#67900](https://github.com/cockroachdb/cockroach/issues/67900) +- CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). - CockroachDB does not support expressions as `ON CONFLICT` targets. This means that unique {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} cannot be selected as arbiters for [`INSERT .. ON CONFLICT`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause) statements. For example: {% include_cached copy-clipboard.html %} @@ -39,5 +39,3 @@ ^ HINT: try \h INSERT ~~~ - - [#67893](https://github.com/cockroachdb/cockroach/issues/67893) diff --git a/src/current/_includes/v26.1/known-limitations/forecasted-stats-limitations.md b/src/current/_includes/v26.1/known-limitations/forecasted-stats-limitations.md index c8753124a96..a7f8eb17ee2 100644 --- a/src/current/_includes/v26.1/known-limitations/forecasted-stats-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/forecasted-stats-limitations.md @@ -6,4 +6,4 @@ Although [`SHOW STATISTICS WITH FORECAST`]({% link {{ page.version.version }}/show-statistics.md %}#display-forecasted-statistics) shows the settings taking effect immediately, they do not actually take effect until new statistics are collected (as can be verified with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %})). - As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. [#123852](https://github.com/cockroachdb/cockroach/issues/123852) \ No newline at end of file + As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. diff --git a/src/current/_includes/v26.1/known-limitations/full-text-search-unsupported.md b/src/current/_includes/v26.1/known-limitations/full-text-search-unsupported.md index 7b5a83f2cae..ef6ff023f86 100644 --- a/src/current/_includes/v26.1/known-limitations/full-text-search-unsupported.md +++ b/src/current/_includes/v26.1/known-limitations/full-text-search-unsupported.md @@ -10,5 +10,3 @@ - `tsquery <-> tsquery` comparisons. - `!! tsquery` comparisons. - `tsquery @> tsquery` and `tsquery <@ tsquery` comparisons. - -[#41288](https://github.com/cockroachdb/cockroach/issues/41288) \ No newline at end of file diff --git a/src/current/_includes/v26.1/known-limitations/generic-query-plan-limitations.md b/src/current/_includes/v26.1/known-limitations/generic-query-plan-limitations.md index e28e66d5f32..e588b799305 100644 --- a/src/current/_includes/v26.1/known-limitations/generic-query-plan-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/generic-query-plan-limitations.md @@ -1,2 +1,2 @@ -- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. [#128916](https://github.com/cockroachdb/cockroach/issues/128916) -- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. [#128911](https://github.com/cockroachdb/cockroach/issues/128911) \ No newline at end of file +- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. +- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. diff --git a/src/current/_includes/v26.1/known-limitations/geospatial-heterogeneous-architectures.md b/src/current/_includes/v26.1/known-limitations/geospatial-heterogeneous-architectures.md index 4bb9633f138..e3fecb28c86 100644 --- a/src/current/_includes/v26.1/known-limitations/geospatial-heterogeneous-architectures.md +++ b/src/current/_includes/v26.1/known-limitations/geospatial-heterogeneous-architectures.md @@ -1 +1 @@ -Clusters that mix `s390x` with other CPU architectures are unsupported for geospatial workloads. Due to differences in how trigonometric functions are computed on `s390x` systems, geospatial queries in heterogeneous clusters with `s390x` are likely to get incorrect results. This can include taking a backup on one architecture and restoring it on another. [#148783](https://github.com/cockroachdb/cockroach/issues/148783) \ No newline at end of file +Clusters that mix `s390x` with other CPU architectures are unsupported for geospatial workloads. Due to differences in how trigonometric functions are computed on `s390x` systems, geospatial queries in heterogeneous clusters with `s390x` are likely to get incorrect results. This can include taking a backup on one architecture and restoring it on another. diff --git a/src/current/_includes/v26.1/known-limitations/int-limitations.md b/src/current/_includes/v26.1/known-limitations/int-limitations.md index 6333dbf6ed5..9b7894a854d 100644 --- a/src/current/_includes/v26.1/known-limitations/int-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/int-limitations.md @@ -1 +1 @@ -- When setting the `default_int_size` [session variable]({% link {{ page.version.version }}/set-vars.md %}) in a batch of statements such as `SET default_int_size='int4'; SELECT 1::INT`, the `default_int_size` variable will not take effect until the next statement. Statement parsing is asynchronous with statement execution. As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. [#32846](https://github.com/cockroachdb/cockroach/issues/32846) +- When setting the `default_int_size` [session variable]({% link {{ page.version.version }}/set-vars.md %}) in a batch of statements such as `SET default_int_size='int4'; SELECT 1::INT`, the `default_int_size` variable will not take effect until the next statement. Statement parsing is asynchronous with statement execution. As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. diff --git a/src/current/_includes/v26.1/known-limitations/inverted-index-limitations.md b/src/current/_includes/v26.1/known-limitations/inverted-index-limitations.md index a19a10295eb..778e8efcd31 100644 --- a/src/current/_includes/v26.1/known-limitations/inverted-index-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/inverted-index-limitations.md @@ -1,3 +1,3 @@ -- CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). [#88278](https://github.com/cockroachdb/cockroach/issues/88278) -- CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables for `tsvector` and `tsquery` types. [#102731](https://github.com/cockroachdb/cockroach/issues/102731) -- [Left joins]({% link {{ page.version.version }}/joins.md %}#left-outer-joins) and anti joins involving [`JSONB`]({% link {{ page.version.version }}/jsonb.md %}), [`ARRAY`]({% link {{ page.version.version }}/array.md %}), or [spatial-typed]({% link {{ page.version.version }}/query-spatial-data.md %}) columns with a multi-column or [partitioned]({% link {{ page.version.version }}/alter-index.md %}#partition-by) [GIN index](inverted-indexes.html) will not take advantage of the index if the prefix columns of the index are unconstrained, or if they are constrained to multiple, constant values. To work around this limitation, make sure that the prefix columns of the index are either constrained to single constant values, or are part of an equality condition with an input column. [#59649](https://github.com/cockroachdb/cockroach/issues/59649) +- CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). +- CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables for `tsvector` and `tsquery` types. +- [Left joins]({% link {{ page.version.version }}/joins.md %}#left-outer-joins) and anti joins involving [`JSONB`]({% link {{ page.version.version }}/jsonb.md %}), [`ARRAY`]({% link {{ page.version.version }}/array.md %}), or [spatial-typed]({% link {{ page.version.version }}/query-spatial-data.md %}) columns with a multi-column or [partitioned]({% link {{ page.version.version }}/alter-index.md %}#partition-by) [GIN index](inverted-indexes.html) will not take advantage of the index if the prefix columns of the index are unconstrained, or if they are constrained to multiple, constant values. To work around this limitation, make sure that the prefix columns of the index are either constrained to single constant values, or are part of an equality condition with an input column. diff --git a/src/current/_includes/v26.1/known-limitations/jsonpath-limitations.md b/src/current/_includes/v26.1/known-limitations/jsonpath-limitations.md index 9b51bfb6e87..c4cbd7fb32b 100644 --- a/src/current/_includes/v26.1/known-limitations/jsonpath-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/jsonpath-limitations.md @@ -1,2 +1,2 @@ -- The following keywords are only accepted in lowercase: `strict`, `lax`, `exists`, `like_regex`, `flag`, `is unknown`, `to`, `last`. [#144255](https://github.com/cockroachdb/cockroach/issues/144255) -- Comparisons involving empty arrays (e.g., `SELECT jsonb_path_query('{"a": [1], "b": []}', '$.a == $.b');`) return `null`, rather than `false` as in PostgreSQL. [#145099](https://github.com/cockroachdb/cockroach/issues/145099) \ No newline at end of file +- The following keywords are only accepted in lowercase: `strict`, `lax`, `exists`, `like_regex`, `flag`, `is unknown`, `to`, `last`. +- Comparisons involving empty arrays (e.g., `SELECT jsonb_path_query('{"a": [1], "b": []}', '$.a == $.b');`) return `null`, rather than `false` as in PostgreSQL. diff --git a/src/current/_includes/v26.1/known-limitations/ldr-column-families.md b/src/current/_includes/v26.1/known-limitations/ldr-column-families.md index 2a7c3bbba52..67183137d9e 100644 --- a/src/current/_includes/v26.1/known-limitations/ldr-column-families.md +++ b/src/current/_includes/v26.1/known-limitations/ldr-column-families.md @@ -1 +1 @@ -Replicating tables cannot contain [column families]({% link {{ page.version.version }}/column-families.md %}). [#133562](https://github.com/cockroachdb/cockroach/issues/133562) \ No newline at end of file +Replicating tables cannot contain [column families]({% link {{ page.version.version }}/column-families.md %}). diff --git a/src/current/_includes/v26.1/known-limitations/ldr-composite-primary.md b/src/current/_includes/v26.1/known-limitations/ldr-composite-primary.md index ac897af35a7..6fdf7136e53 100644 --- a/src/current/_includes/v26.1/known-limitations/ldr-composite-primary.md +++ b/src/current/_includes/v26.1/known-limitations/ldr-composite-primary.md @@ -1 +1 @@ -The [primary key]({% link {{ page.version.version }}/primary-key.md %}) in replicating tables cannot contain composite types. [#133572](https://github.com/cockroachdb/cockroach/issues/133572) \ No newline at end of file +The [primary key]({% link {{ page.version.version }}/primary-key.md %}) in replicating tables cannot contain composite types. diff --git a/src/current/_includes/v26.1/known-limitations/ldr-indexes.md b/src/current/_includes/v26.1/known-limitations/ldr-indexes.md index 0bf7f60c2d4..3d0f52e9ad7 100644 --- a/src/current/_includes/v26.1/known-limitations/ldr-indexes.md +++ b/src/current/_includes/v26.1/known-limitations/ldr-indexes.md @@ -1 +1 @@ -Replicating tables cannot contain an [index]({% link {{ page.version.version }}/indexes.md %}) that requires expression evaluation before insertion. [#133560](https://github.com/cockroachdb/cockroach/issues/133560) \ No newline at end of file +Replicating tables cannot contain an [index]({% link {{ page.version.version }}/indexes.md %}) that requires expression evaluation before insertion. diff --git a/src/current/_includes/v26.1/known-limitations/ldr-sequences.md b/src/current/_includes/v26.1/known-limitations/ldr-sequences.md index 4e39f3630e3..069a693b7a0 100644 --- a/src/current/_includes/v26.1/known-limitations/ldr-sequences.md +++ b/src/current/_includes/v26.1/known-limitations/ldr-sequences.md @@ -1 +1 @@ -Replicating table cannot reference [sequences]({% link {{ page.version.version }}/create-sequence.md %}). [#132303](https://github.com/cockroachdb/cockroach/issues/132303) \ No newline at end of file +Replicating table cannot reference [sequences]({% link {{ page.version.version }}/create-sequence.md %}). diff --git a/src/current/_includes/v26.1/known-limitations/ldr-triggers.md b/src/current/_includes/v26.1/known-limitations/ldr-triggers.md index 55f8e885b97..9fc2b36777e 100644 --- a/src/current/_includes/v26.1/known-limitations/ldr-triggers.md +++ b/src/current/_includes/v26.1/known-limitations/ldr-triggers.md @@ -1 +1 @@ -Replicating tables cannot reference triggers. [#132301](https://github.com/cockroachdb/cockroach/issues/132301) \ No newline at end of file +Replicating tables cannot reference triggers. diff --git a/src/current/_includes/v26.1/known-limitations/ldr-udfs.md b/src/current/_includes/v26.1/known-limitations/ldr-udfs.md index fb642f14751..354a9e8243e 100644 --- a/src/current/_includes/v26.1/known-limitations/ldr-udfs.md +++ b/src/current/_includes/v26.1/known-limitations/ldr-udfs.md @@ -1 +1 @@ -Replicating tables cannot reference [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). [#132302](https://github.com/cockroachdb/cockroach/issues/132302) \ No newline at end of file +Replicating tables cannot reference [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). diff --git a/src/current/_includes/v26.1/known-limitations/like-escape-performance.md b/src/current/_includes/v26.1/known-limitations/like-escape-performance.md index 845fdddeeb9..8aa3c2065d0 100644 --- a/src/current/_includes/v26.1/known-limitations/like-escape-performance.md +++ b/src/current/_includes/v26.1/known-limitations/like-escape-performance.md @@ -1 +1 @@ -`LIKE` queries with an `ESCAPE` clause cannot use index acceleration, which can result in significantly slower performance compared to standard `LIKE` queries. [#30192](https://github.com/cockroachdb/cockroach/issues/30192) +`LIKE` queries with an `ESCAPE` clause cannot use index acceleration, which can result in significantly slower performance compared to standard `LIKE` queries. diff --git a/src/current/_includes/v26.1/known-limitations/locality-optimized-search-virtual-computed-columns.md b/src/current/_includes/v26.1/known-limitations/locality-optimized-search-virtual-computed-columns.md index d6acf418aa8..7a7392aab0d 100644 --- a/src/current/_includes/v26.1/known-limitations/locality-optimized-search-virtual-computed-columns.md +++ b/src/current/_includes/v26.1/known-limitations/locality-optimized-search-virtual-computed-columns.md @@ -1 +1 @@ -- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). [#68129](https://github.com/cockroachdb/cockroach/issues/68129) +- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). diff --git a/src/current/_includes/v26.1/known-limitations/materialized-views-no-stats.md b/src/current/_includes/v26.1/known-limitations/materialized-views-no-stats.md index 02f2bd787c4..a468db2895d 100644 --- a/src/current/_includes/v26.1/known-limitations/materialized-views-no-stats.md +++ b/src/current/_includes/v26.1/known-limitations/materialized-views-no-stats.md @@ -1 +1 @@ -- The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views. [#78181](https://github.com/cockroachdb/cockroach/issues/78181). +- The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views.. diff --git a/src/current/_includes/v26.1/known-limitations/max-row-size-limitations.md b/src/current/_includes/v26.1/known-limitations/max-row-size-limitations.md index 9d4d3e12918..63e16c86d4f 100644 --- a/src/current/_includes/v26.1/known-limitations/max-row-size-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/max-row-size-limitations.md @@ -1 +1 @@ -- The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. [#69540](https://github.com/cockroachdb/cockroach/issues/69540) +- The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. diff --git a/src/current/_includes/v26.1/known-limitations/multiple-arbiter-indexes.md b/src/current/_includes/v26.1/known-limitations/multiple-arbiter-indexes.md index c9861623314..b13890a2ee9 100644 --- a/src/current/_includes/v26.1/known-limitations/multiple-arbiter-indexes.md +++ b/src/current/_includes/v26.1/known-limitations/multiple-arbiter-indexes.md @@ -1 +1 @@ -CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. [#53170](https://github.com/cockroachdb/cockroach/issues/53170) \ No newline at end of file +CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. diff --git a/src/current/_includes/v26.1/known-limitations/node-shutdown-limitations.md b/src/current/_includes/v26.1/known-limitations/node-shutdown-limitations.md index f35f858bdc1..0b09a134e49 100644 --- a/src/current/_includes/v26.1/known-limitations/node-shutdown-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/node-shutdown-limitations.md @@ -2,4 +2,4 @@ - The `cockroach node decommission --wait-all` command was run and then interrupted - The `cockroach node decommission --wait=none` command was run - This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. [#94430](https://github.com/cockroachdb/cockroach/issues/94430) + This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. diff --git a/src/current/_includes/v26.1/known-limitations/null-limitations.md b/src/current/_includes/v26.1/known-limitations/null-limitations.md index ad2efce233a..af3ed9de10a 100644 --- a/src/current/_includes/v26.1/known-limitations/null-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/null-limitations.md @@ -1 +1 @@ -- By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL` values after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it does not work when the ordering column is a tuple. [#93558](https://github.com/cockroachdb/cockroach/issues/93558) +- By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL` values after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it does not work when the ordering column is a tuple. diff --git a/src/current/_includes/v26.1/known-limitations/online-schema-changes-limitations.md b/src/current/_includes/v26.1/known-limitations/online-schema-changes-limitations.md index be6d00c26ce..e8b98cfd66f 100644 --- a/src/current/_includes/v26.1/known-limitations/online-schema-changes-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/online-schema-changes-limitations.md @@ -28,9 +28,9 @@ You cannot start an online schema change on a table if a [primary key change]({% Some [schema changes]({% link {{ page.version.version }}/online-schema-changes.md %}) that [drop columns]({% link {{ page.version.version }}/alter-table.md %}#drop-column) cannot be [rolled back]({% link {{ page.version.version }}/rollback-transaction.md %}) properly. -In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. [#46541](https://github.com/cockroachdb/cockroach/issues/46541) +In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. -In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. [#47712](https://github.com/cockroachdb/cockroach/issues/47712) +In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. To reduce the chance that a column drop will roll back incorrectly: @@ -38,4 +38,4 @@ To reduce the chance that a column drop will roll back incorrectly: - Drop all [constraints]({% link {{ page.version.version }}/constraints.md %}) (including [unique indexes]({% link {{ page.version.version }}/unique.md %})) on the column in a separate transaction, before dropping the column. - Drop any [default values]({% link {{ page.version.version }}/default-value.md %}) or [computed expressions]({% link {{ page.version.version }}/computed-columns.md %}) on a column before attempting to drop the column. This prevents conflicts between constraints and default/computed values during a column drop rollback. -If you think a rollback of a column-dropping schema change has occurred, check the [jobs table]({% link {{ page.version.version }}/show-jobs.md %}). Schema changes with an error prefaced by `cannot be reverted, manual cleanup may be required` might require manual intervention. \ No newline at end of file +If you think a rollback of a column-dropping schema change has occurred, check the [jobs table]({% link {{ page.version.version }}/show-jobs.md %}). Schema changes with an error prefaced by `cannot be reverted, manual cleanup may be required` might require manual intervention. diff --git a/src/current/_includes/v26.1/known-limitations/partition-limitations.md b/src/current/_includes/v26.1/known-limitations/partition-limitations.md index f8ba5e979fa..fde8db82bca 100644 --- a/src/current/_includes/v26.1/known-limitations/partition-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/partition-limitations.md @@ -1,3 +1,3 @@ - When defining a [table partition]({% link {{ page.version.version }}/partitioning.md %}), either during table creation or table alteration, it is not possible to use placeholders in the `PARTITION BY` clause. - CockroachDB does not currently support dropping a single partition from a table. In order to remove partitions, you can [repartition]({% unless page.name == "partitioning.md" %}{% link {{ page.version.version }}/partitioning.md %}{% endunless %}#repartition-a-table) the table. -- In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. [#82774](https://github.com/cockroachdb/cockroach/issues/82774) +- In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. diff --git a/src/current/_includes/v26.1/known-limitations/plpgsql-limitations.md b/src/current/_includes/v26.1/known-limitations/plpgsql-limitations.md index 60b3104942e..3b41a78fd58 100644 --- a/src/current/_includes/v26.1/known-limitations/plpgsql-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/plpgsql-limitations.md @@ -1,23 +1,23 @@ -- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. [#121605](https://github.com/cockroachdb/cockroach/issues/121605) -- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. [#114676](https://github.com/cockroachdb/cockroach/issues/114676) -- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). [#114701](https://github.com/cockroachdb/cockroach/issues/114701) +- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. +- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. +- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). - The following statements are not supported: - - `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops. [#105246](https://github.com/cockroachdb/cockroach/issues/105246) - - `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `CASE`. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). [#111446](https://github.com/cockroachdb/cockroach/issues/111446) -- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). [#106237](https://github.com/cockroachdb/cockroach/issues/106237) -- `RAISE` statements message the client directly, and do not produce log output. [#117750](https://github.com/cockroachdb/cockroach/issues/117750) -- `ASSERT` debugging checks are not supported. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- `RECORD` parameters and variables are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). [#105713](https://github.com/cockroachdb/cockroach/issues/105713) -- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. [#117508](https://github.com/cockroachdb/cockroach/issues/117508) -- Syntax for accessing members of composite types without parentheses is not supported. [#114687](https://github.com/cockroachdb/cockroach/issues/114687) -- `NOT NULL` variable declarations are not supported. [#105243](https://github.com/cockroachdb/cockroach/issues/105243) -- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. [#111479](https://github.com/cockroachdb/cockroach/issues/111479) -- Cursors in PL/pgSQL cannot be declared with arguments. [#117746](https://github.com/cockroachdb/cockroach/issues/117746) -- `OPEN FOR EXECUTE` is not supported for opening cursors. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- The `print_strict_params` option is not supported in PL/pgSQL. [#123671](https://github.com/cockroachdb/cockroach/issues/123671) -- The `FOUND` local variable, which checks whether a statement affected any rows, is not supported in PL/pgSQL. [#122306](https://github.com/cockroachdb/cockroach/issues/122306) -- By default, when a PL/pgSQL variable conflicts with a column name, CockroachDB resolves the ambiguity by treating it as a column reference rather than a variable reference. This behavior differs from PostgreSQL, where an ambiguous column error is reported, and it is possible to change the `plpgsql.variable_conflict` setting in order to prefer either columns or variables. [#115680](https://github.com/cockroachdb/cockroach/issues/115680) -- It is not possible to define a `RECORD`-returning PL/pgSQL function that returns different-typed expressions from different `RETURN` statements. CockroachDB requires a consistent return type for `RECORD`-returning functions. [#115384](https://github.com/cockroachdb/cockroach/issues/115384) -- Variables cannot be declared with an associated collation using the `COLLATE` keyword. [#105245](https://github.com/cockroachdb/cockroach/issues/105245) -- Variables cannot be accessed using the `label.var_name` pattern. [#122322](https://github.com/cockroachdb/cockroach/issues/122322) \ No newline at end of file + - `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops. + - `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `CASE`. +- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). +- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). +- `RAISE` statements message the client directly, and do not produce log output. +- `ASSERT` debugging checks are not supported. +- `RECORD` parameters and variables are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). +- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. +- Syntax for accessing members of composite types without parentheses is not supported. +- `NOT NULL` variable declarations are not supported. +- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. +- Cursors in PL/pgSQL cannot be declared with arguments. +- `OPEN FOR EXECUTE` is not supported for opening cursors. +- The `print_strict_params` option is not supported in PL/pgSQL. +- The `FOUND` local variable, which checks whether a statement affected any rows, is not supported in PL/pgSQL. +- By default, when a PL/pgSQL variable conflicts with a column name, CockroachDB resolves the ambiguity by treating it as a column reference rather than a variable reference. This behavior differs from PostgreSQL, where an ambiguous column error is reported, and it is possible to change the `plpgsql.variable_conflict` setting in order to prefer either columns or variables. +- It is not possible to define a `RECORD`-returning PL/pgSQL function that returns different-typed expressions from different `RETURN` statements. CockroachDB requires a consistent return type for `RECORD`-returning functions. +- Variables cannot be declared with an associated collation using the `COLLATE` keyword. +- Variables cannot be accessed using the `label.var_name` pattern. diff --git a/src/current/_includes/v26.1/known-limitations/read-committed-limitations.md b/src/current/_includes/v26.1/known-limitations/read-committed-limitations.md index b4722a0c369..469b0434fcd 100644 --- a/src/current/_includes/v26.1/known-limitations/read-committed-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/read-committed-limitations.md @@ -1,7 +1,7 @@ -- Mixed-isolation-level workloads must enable foreign-key check locking for `SERIALIZABLE` transactions to avoid race conditions. [#151663](https://github.com/cockroachdb/cockroach/issues/151663#issuecomment-3222083180) -- Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions when the [`autocommit_before_ddl` session setting]({% link {{page.version.version}}/set-vars.md %}#autocommit-before-ddl) is set to `off`, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. [#114778](https://github.com/cockroachdb/cockroach/issues/114778) -- Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. [#112488](https://github.com/cockroachdb/cockroach/issues/112488) +- Mixed-isolation-level workloads must enable foreign-key check locking for `SERIALIZABLE` transactions to avoid race conditions. +- Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions when the [`autocommit_before_ddl` session setting]({% link {{page.version.version}}/set-vars.md %}#autocommit-before-ddl) is set to `off`, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. +- Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. - Because locks acquired by [foreign key]({% link {{ page.version.version }}/foreign-key.md %}) checks, [`SELECT FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}), and [`SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) are fully replicated under `READ COMMITTED` isolation, some queries experience a delay for Raft replication. - [Foreign key]({% link {{ page.version.version }}/foreign-key.md %}) checks are not performed in parallel under `READ COMMITTED` isolation. - [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements are less optimized under `READ COMMITTED` isolation than under `SERIALIZABLE` isolation. Under `READ COMMITTED` isolation, `SELECT FOR UPDATE` and `SELECT FOR SHARE` usually perform an extra lookup join for every locked table when compared to the same queries under `SERIALIZABLE`. In addition, some optimization steps (such as de-correlation of correlated [subqueries]({% link {{ page.version.version }}/subqueries.md %})) are not currently performed on these queries. -- Regardless of isolation level, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements in CockroachDB do not prevent insertion of new rows matching the search condition (i.e., [phantom reads]({% link {{ page.version.version }}/read-committed.md %}#non-repeatable-reads-and-phantom-reads)). This matches PostgreSQL behavior at all isolation levels. [#120673](https://github.com/cockroachdb/cockroach/issues/120673) \ No newline at end of file +- Regardless of isolation level, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements in CockroachDB do not prevent insertion of new rows matching the search condition (i.e., [phantom reads]({% link {{ page.version.version }}/read-committed.md %}#non-repeatable-reads-and-phantom-reads)). This matches PostgreSQL behavior at all isolation levels. diff --git a/src/current/_includes/v26.1/known-limitations/restore-multiregion-match.md b/src/current/_includes/v26.1/known-limitations/restore-multiregion-match.md index ab2f1029ecd..6cf3a2ccefe 100644 --- a/src/current/_includes/v26.1/known-limitations/restore-multiregion-match.md +++ b/src/current/_includes/v26.1/known-limitations/restore-multiregion-match.md @@ -46,5 +46,3 @@ ~~~ sql ALTER DATABASE destination_database SET PRIMARY REGION "us-east1"; ~~~ - - [#71071](https://github.com/cockroachdb/cockroach/issues/71071) \ No newline at end of file diff --git a/src/current/_includes/v26.1/known-limitations/restore-tables-non-multi-reg.md b/src/current/_includes/v26.1/known-limitations/restore-tables-non-multi-reg.md index 5390f2d09ee..a6558d30c7d 100644 --- a/src/current/_includes/v26.1/known-limitations/restore-tables-non-multi-reg.md +++ b/src/current/_includes/v26.1/known-limitations/restore-tables-non-multi-reg.md @@ -1 +1 @@ -Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. [#71502](https://github.com/cockroachdb/cockroach/issues/71502) +Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. diff --git a/src/current/_includes/v26.1/known-limitations/restore-udf.md b/src/current/_includes/v26.1/known-limitations/restore-udf.md index a4a4bc080fe..7d5670fbc9e 100644 --- a/src/current/_includes/v26.1/known-limitations/restore-udf.md +++ b/src/current/_includes/v26.1/known-limitations/restore-udf.md @@ -1 +1 @@ -`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. [#118195](https://github.com/cockroachdb/cockroach/issues/118195) \ No newline at end of file +`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. diff --git a/src/current/_includes/v26.1/known-limitations/rls-update-set-where-returning.md b/src/current/_includes/v26.1/known-limitations/rls-update-set-where-returning.md index 450de11683e..5154352ed33 100644 --- a/src/current/_includes/v26.1/known-limitations/rls-update-set-where-returning.md +++ b/src/current/_includes/v26.1/known-limitations/rls-update-set-where-returning.md @@ -1 +1 @@ -`UPDATE` statements whose `SET`, `WHERE`, or `RETURNING` clauses do not read existing column values can be mistakenly filtered by row-level security `SELECT` policies, causing the statement to affect no rows. [#145894](https://github.com/cockroachdb/cockroach/issues/145894) \ No newline at end of file +`UPDATE` statements whose `SET`, `WHERE`, or `RETURNING` clauses do not read existing column values can be mistakenly filtered by row-level security `SELECT` policies, causing the statement to affect no rows. diff --git a/src/current/_includes/v26.1/known-limitations/rls-values-on-conflict-do-nothing.md b/src/current/_includes/v26.1/known-limitations/rls-values-on-conflict-do-nothing.md index c85dea7987a..0f236672cff 100644 --- a/src/current/_includes/v26.1/known-limitations/rls-values-on-conflict-do-nothing.md +++ b/src/current/_includes/v26.1/known-limitations/rls-values-on-conflict-do-nothing.md @@ -1 +1 @@ -`ON CONFLICT ... DO NOTHING`: CockroachDB does not run the constraint and row-level policy checks on the `VALUES` clause if the candidate row has a conflict. [#35370](https://github.com/cockroachdb/cockroach/issues/35370). +`ON CONFLICT ... DO NOTHING`: CockroachDB does not run the constraint and row-level policy checks on the `VALUES` clause if the candidate row has a conflict.. diff --git a/src/current/_includes/v26.1/known-limitations/routine-limitations.md b/src/current/_includes/v26.1/known-limitations/routine-limitations.md index 773322e2848..9ca26eabdc5 100644 --- a/src/current/_includes/v26.1/known-limitations/routine-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/routine-limitations.md @@ -1,10 +1,10 @@ -- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. [#122264](https://github.com/cockroachdb/cockroach/issues/122264) -- Routines cannot be created if they reference temporary tables. [#121375](https://github.com/cockroachdb/cockroach/issues/121375) -- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. [#121251](https://github.com/cockroachdb/cockroach/issues/121251) -- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. [#121247](https://github.com/cockroachdb/cockroach/issues/121247) -- Routines cannot be created with an `OUT` parameter of type `RECORD`. [#123448](https://github.com/cockroachdb/cockroach/issues/123448) -- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or stored procedures. [#110080](https://github.com/cockroachdb/cockroach/issues/110080) -- Polymorphic types cannot be cast to other types (e.g., `TEXT`) within routine parameters. [#123536](https://github.com/cockroachdb/cockroach/issues/123536) -- Routine parameters and return types cannot be declared using the `ANYENUM` polymorphic type, which is able to match any [`ENUM`]({% link {{ page.version.version }}/enum.md %}) type. [#123048](https://github.com/cockroachdb/cockroach/issues/123048) -- [Statement diagnostics]({% link {{ page.version.version }}/explain-analyze.md %}#debug-option) cannot be collected for statements executed inside UDFs or stored procedures. You can request statement diagnostics for the top-level invocation of the function or procedure, and the resulting trace includes spans for each statement executed. However, there is no way to target statements executed inside the function or procedure with a statement diagnostics request. [#159526](https://github.com/cockroachdb/cockroach/issues/159526) -- Statements within routines do not currently respect hint injections. The workaround is to modify the inline hints directly in the body by replacing the routine. [#162627](https://github.com/cockroachdb/cockroach/issues/162627) \ No newline at end of file +- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. +- Routines cannot be created if they reference temporary tables. +- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. +- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. +- Routines cannot be created with an `OUT` parameter of type `RECORD`. +- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or stored procedures. +- Polymorphic types cannot be cast to other types (e.g., `TEXT`) within routine parameters. +- Routine parameters and return types cannot be declared using the `ANYENUM` polymorphic type, which is able to match any [`ENUM`]({% link {{ page.version.version }}/enum.md %}) type. +- [Statement diagnostics]({% link {{ page.version.version }}/explain-analyze.md %}#debug-option) cannot be collected for statements executed inside UDFs or stored procedures. You can request statement diagnostics for the top-level invocation of the function or procedure, and the resulting trace includes spans for each statement executed. However, there is no way to target statements executed inside the function or procedure with a statement diagnostics request. +- Statements within routines do not currently respect hint injections. The workaround is to modify the inline hints directly in the body by replacing the routine. diff --git a/src/current/_includes/v26.1/known-limitations/row-level-ttl-limitations.md b/src/current/_includes/v26.1/known-limitations/row-level-ttl-limitations.md index c386ba576d7..352e5034bbd 100644 --- a/src/current/_includes/v26.1/known-limitations/row-level-ttl-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/row-level-ttl-limitations.md @@ -1,5 +1,5 @@ - Any queries you run against tables with Row-Level TTL enabled (or against tables that have [foreign keys]({% link {{page.version.version}}/foreign-key.md %}) that reference TTL-enabled tables) do not filter out expired rows from the result set (this includes [`UPDATE`s]({% link {{ page.version.version }}/update.md %}) and [`DELETE`s]({% link {{ page.version.version }}/delete.md %})). This feature may be added in a future release. For now, follow the instructions in [Filter out expired rows from a selection query]({% link {{ page.version.version }}/row-level-ttl.md %}#filter-out-expired-rows-from-a-selection-query). -- Tables with Row-Level TTL can be referenced by [foreign keys]({% link {{page.version.version}}/foreign-key.md %}). TTL deletes are issued as regular [`DELETE`]({% link {{ page.version.version }}/delete.md %}) statements, so inbound foreign keys apply. If an inbound foreign key uses `ON DELETE RESTRICT` and referencing rows exist, the TTL job fails with a foreign key violation. [#101372](https://github.com/cockroachdb/cockroach/issues/101372) +- Tables with Row-Level TTL can be referenced by [foreign keys]({% link {{page.version.version}}/foreign-key.md %}). TTL deletes are issued as regular [`DELETE`]({% link {{ page.version.version }}/delete.md %}) statements, so inbound foreign keys apply. If an inbound foreign key uses `ON DELETE RESTRICT` and referencing rows exist, the TTL job fails with a foreign key violation. - Enabling Row-Level TTL on a table with multiple [secondary indexes]({% link {{ page.version.version }}/indexes.md %}) can have negative performance impacts on a cluster, including increased [latency]({% link {{ page.version.version }}/common-issues-to-monitor.md %}#service-latency) and [contention]({% link {{ page.version.version }}/performance-best-practices-overview.md %}#transaction-contention). This is particularly true for large tables with terabytes of data and billions of rows that are split up into multiple ranges across separate nodes. - Increased latency may occur because secondary indexes aren't necessarily stored on the same underlying [ranges]({% link {{ page.version.version }}/architecture/overview.md %}#architecture-range) as a table's [primary indexes]({% link {{ page.version.version }}/indexes.md %}). Further, the secondary indexes' ranges may have [leaseholders]({% link {{ page.version.version }}/architecture/overview.md %}#architecture-leaseholder) located on different nodes than the primary index. - Increased contention may occur because [intents]({% link {{ page.version.version }}/architecture/transaction-layer.md %}#write-intents) must be written as part of performing the deletions. diff --git a/src/current/_includes/v26.1/known-limitations/savepoint-limitations.md b/src/current/_includes/v26.1/known-limitations/savepoint-limitations.md index 58451f4ae28..819fbc118c4 100644 --- a/src/current/_includes/v26.1/known-limitations/savepoint-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/savepoint-limitations.md @@ -1 +1 @@ -- Transactions with [priority `HIGH`]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities) that contain DDL and `ROLLBACK TO SAVEPOINT` are not supported, as they could result in a deadlock. [#46414](https://github.com/cockroachdb/cockroach/issues/46414) +- Transactions with [priority `HIGH`]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities) that contain DDL and `ROLLBACK TO SAVEPOINT` are not supported, as they could result in a deadlock. diff --git a/src/current/_includes/v26.1/known-limitations/select-for-update-limitations.md b/src/current/_includes/v26.1/known-limitations/select-for-update-limitations.md index 9c4ab3fd4a1..0066574884f 100644 --- a/src/current/_includes/v26.1/known-limitations/select-for-update-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/select-for-update-limitations.md @@ -1,8 +1,8 @@ -- `SKIP LOCKED` cannot be used for tables with multiple [column families]({% link {{ page.version.version }}/column-families.md %}). [#160961](https://github.com/cockroachdb/cockroach/issues/160961) +- `SKIP LOCKED` cannot be used for tables with multiple [column families]({% link {{ page.version.version }}/column-families.md %}). - By default under `SERIALIZABLE` isolation, locks acquired using `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` are implemented as fast, in-memory [unreplicated locks](architecture/transaction-layer.html#unreplicated-locks). If a [lease transfer]({% link {{ page.version.version }}/architecture/replication-layer.md %}#leases) or [range split/merge]({% link {{ page.version.version }}/architecture/distribution-layer.md %}#range-merges) occurs on a range held by an unreplicated lock, the lock is dropped. The following behaviors can occur: - The desired ordering of concurrent accesses to one or more rows of a table expressed by your use of `SELECT ... FOR UPDATE` may not be preserved (that is, a transaction _B_ against some table _T_ that was supposed to wait behind another transaction _A_ operating on _T_ may not wait for transaction _A_). - The transaction that acquired the (now dropped) unreplicated lock may fail to commit, leading to [transaction retry errors with code `40001`]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}) and the [`restart transaction` error message]({% link {{ page.version.version }}/common-errors.md %}#restart-transaction). When running under `SERIALIZABLE` isolation, `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` locks should be thought of as best-effort, and should not be relied upon for correctness. Note that [serialization]({% link {{ page.version.version }}/demo-serializable.md %}) is preserved despite this limitation. This limitation is fixed when the `enable_durable_locking_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}#enable-durable-locking-for-serializable) is set to `true`. This limitation does **not** apply to [`READ COMMITTED`]({% link {{ page.version.version }}/read-committed.md %}) transactions. - The new implementation of `SELECT FOR UPDATE` is not yet the default setting under `SERIALIZABLE` isolation. It can be used under `SERIALIZABLE` isolation by setting the `optimizer_use_lock_op_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}) to `true`. [#114737](https://github.com/cockroachdb/cockroachdb/issues/114737) -- `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. [#116836](https://github.com/cockroachdb/cockroach/issues/116836) \ No newline at end of file +- `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. diff --git a/src/current/_includes/v26.1/known-limitations/set-transaction-no-rollback.md b/src/current/_includes/v26.1/known-limitations/set-transaction-no-rollback.md index 4f4e5af2aab..6d9e97a7da4 100644 --- a/src/current/_includes/v26.1/known-limitations/set-transaction-no-rollback.md +++ b/src/current/_includes/v26.1/known-limitations/set-transaction-no-rollback.md @@ -30,4 +30,4 @@ UTC ~~~ - [#69396](https://github.com/cockroachdb/cockroach/issues/69396), [#148766](https://github.com/cockroachdb/cockroach/issues/148766) \ No newline at end of file + , diff --git a/src/current/_includes/v26.1/known-limitations/show-backup-symlink.md b/src/current/_includes/v26.1/known-limitations/show-backup-symlink.md index 38ba86fb28f..f47d7f3887b 100644 --- a/src/current/_includes/v26.1/known-limitations/show-backup-symlink.md +++ b/src/current/_includes/v26.1/known-limitations/show-backup-symlink.md @@ -1 +1 @@ -[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. [#70260](https://github.com/cockroachdb/cockroach/issues/70260) \ No newline at end of file +[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. diff --git a/src/current/_includes/v26.1/known-limitations/spatial-limitations.md b/src/current/_includes/v26.1/known-limitations/spatial-limitations.md index 5bc25717912..9e1577a16f7 100644 --- a/src/current/_includes/v26.1/known-limitations/spatial-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/spatial-limitations.md @@ -1,10 +1,10 @@ -- Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. [#49203](https://github.com/cockroachdb/cockroach/issues/49203) -- The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. [#49402](https://github.com/cockroachdb/cockroach/issues/49402) -- The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. [#49448](https://github.com/cockroachdb/cockroach/issues/49448) -- CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. [#56124](https://github.com/cockroachdb/cockroach/issues/56124) -- CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). [#55903](https://github.com/cockroachdb/cockroach/issues/55903) -- CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). [#55227](https://github.com/cockroachdb/cockroach/issues/55227) -- CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). [#56492](https://github.com/cockroachdb/cockroach/issues/56492) +- Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. +- The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. +- The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. +- CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. +- CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). +- CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). +- CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). - {% include {{ page.version.version }}/known-limitations/srid-4326-limitations.md %} - {% include {{ page.version.version }}/known-limitations/geospatial-heterogeneous-architectures.md %} -- [Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled on ARM Macs due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. [#93161](https://github.com/cockroachdb/cockroach/issues/93161) \ No newline at end of file +- [Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled on ARM Macs due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. diff --git a/src/current/_includes/v26.1/known-limitations/sql-cursors.md b/src/current/_includes/v26.1/known-limitations/sql-cursors.md index a3e42b9a3ec..59c773fcadc 100644 --- a/src/current/_includes/v26.1/known-limitations/sql-cursors.md +++ b/src/current/_includes/v26.1/known-limitations/sql-cursors.md @@ -1,8 +1,8 @@ CockroachDB implements SQL [cursor]({% link {{ page.version.version }}/cursors.md %}) support with the following limitations: -- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. [#77099](https://github.com/cockroachdb/cockroach/issues/77099) -- Scrollable cursor (also known as reverse `FETCH`) is not supported. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. [#77103](https://github.com/cockroachdb/cockroach/issues/77103) -- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. [#77104](https://github.com/cockroachdb/cockroach/issues/77104) +- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. +- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. +- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. +- Scrollable cursor (also known as reverse `FETCH`) is not supported. +- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. +- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. diff --git a/src/current/_includes/v26.1/known-limitations/sql-guardrails-limitations.md b/src/current/_includes/v26.1/known-limitations/sql-guardrails-limitations.md index 6d8d60ac614..0f3ee64a6f5 100644 --- a/src/current/_includes/v26.1/known-limitations/sql-guardrails-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/sql-guardrails-limitations.md @@ -1,2 +1,2 @@ -- The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. [#70473](https://github.com/cockroachdb/cockroach/issues/70473) -- The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. [#69540](https://github.com/cockroachdb/cockroach/issues/69540) +- The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. +- The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. diff --git a/src/current/_includes/v26.1/known-limitations/srid-4326-limitations.md b/src/current/_includes/v26.1/known-limitations/srid-4326-limitations.md index b556a9fbecd..7cfda23749b 100644 --- a/src/current/_includes/v26.1/known-limitations/srid-4326-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/srid-4326-limitations.md @@ -1 +1 @@ -Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. [#55903](https://github.com/cockroachdb/cockroach/issues/55903) \ No newline at end of file +Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. diff --git a/src/current/_includes/v26.1/known-limitations/stats-refresh-upgrade.md b/src/current/_includes/v26.1/known-limitations/stats-refresh-upgrade.md index 3d5a8d26325..c8239a02bcd 100644 --- a/src/current/_includes/v26.1/known-limitations/stats-refresh-upgrade.md +++ b/src/current/_includes/v26.1/known-limitations/stats-refresh-upgrade.md @@ -1 +1 @@ -- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). [#54816](https://github.com/cockroachdb/cockroach/issues/54816) +- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). diff --git a/src/current/_includes/v26.1/known-limitations/stored-proc-limitations.md b/src/current/_includes/v26.1/known-limitations/stored-proc-limitations.md index b2aae6069c2..b51a2ad974a 100644 --- a/src/current/_includes/v26.1/known-limitations/stored-proc-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/stored-proc-limitations.md @@ -1,2 +1,2 @@ -- Pausable portals are not supported with `CALL` statements for stored procedures. [#151529](https://github.com/cockroachdb/cockroach/issues/151529) -- `COMMIT` and `ROLLBACK` statements are not supported within nested procedures. [#122266](https://github.com/cockroachdb/cockroach/issues/122266) \ No newline at end of file +- Pausable portals are not supported with `CALL` statements for stored procedures. +- `COMMIT` and `ROLLBACK` statements are not supported within nested procedures. diff --git a/src/current/_includes/v26.1/known-limitations/subquery-mutations-limitations.md b/src/current/_includes/v26.1/known-limitations/subquery-mutations-limitations.md index 771eba80bc6..695ddf31d4e 100644 --- a/src/current/_includes/v26.1/known-limitations/subquery-mutations-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/subquery-mutations-limitations.md @@ -2,4 +2,4 @@ - Set the `sql.multiple_modifications_of_table.enabled` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) to `true`. - Use the `enable_multiple_modifications_of_table` [session variable]({% link {{ page.version.version }}/set-vars.md %}). - If multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. [#70731](https://github.com/cockroachdb/cockroach/issues/70731) + If multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. diff --git a/src/current/_includes/v26.1/known-limitations/transaction-row-count-limitations.md b/src/current/_includes/v26.1/known-limitations/transaction-row-count-limitations.md index ded62d6d9be..7806f3ee682 100644 --- a/src/current/_includes/v26.1/known-limitations/transaction-row-count-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/transaction-row-count-limitations.md @@ -1 +1 @@ -- The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. [#70473](https://github.com/cockroachdb/cockroach/issues/70473) +- The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. diff --git a/src/current/_includes/v26.1/known-limitations/trigger-limitations.md b/src/current/_includes/v26.1/known-limitations/trigger-limitations.md index 66fcd0018ed..c390917d49f 100644 --- a/src/current/_includes/v26.1/known-limitations/trigger-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/trigger-limitations.md @@ -1,10 +1,10 @@ -- `CREATE OR REPLACE TRIGGER` is not supported. [#128422](https://github.com/cockroachdb/cockroach/issues/128422) -- Statement-level triggers are not supported. [#126362](https://github.com/cockroachdb/cockroach/issues/126362) -- `INSTEAD OF` triggers are not supported. [#126363](https://github.com/cockroachdb/cockroach/issues/126363) -- A [trigger function]({% link {{ page.version.version }}/triggers.md %}#trigger-function) that is used in an existing trigger cannot be replaced with `CREATE OR REPLACE` syntax. To use `CREATE OR REPLACE`, first [drop any triggers]({% link {{ page.version.version }}/drop-trigger.md %}) that are using the function. [#134555](https://github.com/cockroachdb/cockroach/issues/134555) -- Hidden columns are not visible to triggers. [#133331](https://github.com/cockroachdb/cockroach/issues/133331) -- The `REFERENCING` clause for `CREATE TRIGGER` is not supported. [#135655](https://github.com/cockroachdb/cockroach/issues/135655) -- CockroachDB uses one-based indexing for the `TG_ARGV` array to maintain consistency with its array indexing system. This differs from PostgreSQL, where `TG_ARGV` uses zero-based indexing, unlike other PostgreSQL arrays. Trigger functions that reference `TG_ARGV` need to be adjusted when migrating from PostgreSQL. [#135311](https://github.com/cockroachdb/cockroach/issues/135311) -- `UPDATE` triggers with a column list (using `UPDATE OF column_name` syntax) are not supported. [#135656](https://github.com/cockroachdb/cockroach/issues/135656) -- Statement-level triggers for `TRUNCATE` events are not supported. [#135657](https://github.com/cockroachdb/cockroach/issues/135657) -- {% include {{ page.version.version }}/known-limitations/drop-trigger-limitations.md %} \ No newline at end of file +- `CREATE OR REPLACE TRIGGER` is not supported. +- Statement-level triggers are not supported. +- `INSTEAD OF` triggers are not supported. +- A [trigger function]({% link {{ page.version.version }}/triggers.md %}#trigger-function) that is used in an existing trigger cannot be replaced with `CREATE OR REPLACE` syntax. To use `CREATE OR REPLACE`, first [drop any triggers]({% link {{ page.version.version }}/drop-trigger.md %}) that are using the function. +- Hidden columns are not visible to triggers. +- The `REFERENCING` clause for `CREATE TRIGGER` is not supported. +- CockroachDB uses one-based indexing for the `TG_ARGV` array to maintain consistency with its array indexing system. This differs from PostgreSQL, where `TG_ARGV` uses zero-based indexing, unlike other PostgreSQL arrays. Trigger functions that reference `TG_ARGV` need to be adjusted when migrating from PostgreSQL. +- `UPDATE` triggers with a column list (using `UPDATE OF column_name` syntax) are not supported. +- Statement-level triggers for `TRUNCATE` events are not supported. +- {% include {{ page.version.version }}/known-limitations/drop-trigger-limitations.md %} diff --git a/src/current/_includes/v26.1/known-limitations/trigram-unsupported-syntax.md b/src/current/_includes/v26.1/known-limitations/trigram-unsupported-syntax.md index 494730c7ae8..bb726ac4af9 100644 --- a/src/current/_includes/v26.1/known-limitations/trigram-unsupported-syntax.md +++ b/src/current/_includes/v26.1/known-limitations/trigram-unsupported-syntax.md @@ -5,5 +5,3 @@ - `<->`, `<<->`, `<->>`, `<<<->`, and `<->>>` comparisons. - Acceleration on [regex string matching]({% link {{ page.version.version }}/scalar-expressions.md %}#string-matching-using-posix-regular-expressions). - `%` comparisons, `show_trgm`, and trigram index creation on [collated strings]({% link {{ page.version.version }}/collate.md %}). - -[#41285](https://github.com/cockroachdb/cockroach/issues/41285) \ No newline at end of file diff --git a/src/current/_includes/v26.1/known-limitations/udf-limitations.md b/src/current/_includes/v26.1/known-limitations/udf-limitations.md index 0f44ac320f5..89c49b7e86f 100644 --- a/src/current/_includes/v26.1/known-limitations/udf-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/udf-limitations.md @@ -1,9 +1,9 @@ -- User-defined functions are not supported in partial index predicates. [#155488](https://github.com/cockroachdb/cockroach/issues/155488) -- Views cannot reference a UDF that contains mutation statements (`INSERT`, `UPDATE`, `UPSERT`, `DELETE`). [#151686](https://github.com/cockroachdb/cockroach/issues/151686) -- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. [#122945](https://github.com/cockroachdb/cockroach/issues/122945) +- User-defined functions are not supported in partial index predicates. +- Views cannot reference a UDF that contains mutation statements (`INSERT`, `UPDATE`, `UPSERT`, `DELETE`). +- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. - User-defined functions are not currently supported in: - - Expressions (column, index, constraint) in tables. [#87699](https://github.com/cockroachdb/cockroach/issues/87699) - - Partial index predicates. [#155488](https://github.com/cockroachdb/cockroach/issues/155488) -- User-defined functions cannot call themselves recursively. [#93049](https://github.com/cockroachdb/cockroach/issues/93049) -- The `setval` function cannot be resolved when used inside UDF bodies. [#110860](https://github.com/cockroachdb/cockroach/issues/110860) -- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) in UDFs is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) \ No newline at end of file + - Expressions (column, index, constraint) in tables. + - Partial index predicates. +- User-defined functions cannot call themselves recursively. +- The `setval` function cannot be resolved when used inside UDF bodies. +- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) in UDFs is not supported. diff --git a/src/current/_includes/v26.1/known-limitations/vector-limitations.md b/src/current/_includes/v26.1/known-limitations/vector-limitations.md index 97ed7c47599..21646fc5b2c 100644 --- a/src/current/_includes/v26.1/known-limitations/vector-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/vector-limitations.md @@ -1,5 +1,5 @@ - {% include {{ page.version.version }}/sql/vector-batch-inserts.md %} -- `IMPORT INTO` is not supported on tables with vector indexes. You can import the vectors first and create the index after import is complete. [#145227](https://github.com/cockroachdb/cockroach/issues/145227) -- The distance functions `vector_l1_ops`, `bit_hamming_ops`, and `bit_jaccard_ops` are not implemented. [#147839](https://github.com/cockroachdb/cockroach/issues/147839) -- Index acceleration with filters is only supported if the filters match prefix columns. [#146145](https://github.com/cockroachdb/cockroach/issues/146145) -- Index recommendations are not provided for vector indexes. [#146146](https://github.com/cockroachdb/cockroach/issues/146146) \ No newline at end of file +- `IMPORT INTO` is not supported on tables with vector indexes. You can import the vectors first and create the index after import is complete. +- The distance functions `vector_l1_ops`, `bit_hamming_ops`, and `bit_jaccard_ops` are not implemented. +- Index acceleration with filters is only supported if the filters match prefix columns. +- Index recommendations are not provided for vector indexes. diff --git a/src/current/_includes/v26.1/known-limitations/vectorized-engine-limitations.md b/src/current/_includes/v26.1/known-limitations/vectorized-engine-limitations.md index 111226546cf..84ae314f741 100644 --- a/src/current/_includes/v26.1/known-limitations/vectorized-engine-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/vectorized-engine-limitations.md @@ -1,2 +1,2 @@ -- The vectorized engine does not support queries containing a join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). [#38018](https://github.com/cockroachdb/cockroach/issues/38018) +- The vectorized engine does not support queries containing a join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). - The vectorized engine does not support [working with spatial data]({% link {{ page.version.version }}/query-spatial-data.md %}). Queries with [geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) or [spatial data]({% link {{ page.version.version }}/query-spatial-data.md %}) will revert to the row-oriented execution engine. diff --git a/src/current/_includes/v26.1/known-limitations/view-limitations.md b/src/current/_includes/v26.1/known-limitations/view-limitations.md index 02d10afc40b..be54a575e59 100644 --- a/src/current/_includes/v26.1/known-limitations/view-limitations.md +++ b/src/current/_includes/v26.1/known-limitations/view-limitations.md @@ -1,3 +1,3 @@ -- The `security_invoker` attribute for views is not supported. Views always use the view definer's privileges when checking permissions. [#138918](https://github.com/cockroachdb/cockroach/issues/138918) -- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) (including ENUMs) in views is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) -- Statements within views do not currently respect hint injections. The workaround is to modify the inline hints directly in the body by replacing the view. [#166782](https://github.com/cockroachdb/cockroach/issues/166782) \ No newline at end of file +- The `security_invoker` attribute for views is not supported. Views always use the view definer's privileges when checking permissions. +- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) (including ENUMs) in views is not supported. +- Statements within views do not currently respect hint injections. The workaround is to modify the inline hints directly in the body by replacing the view. diff --git a/src/current/_includes/v26.1/misc/tooling.md b/src/current/_includes/v26.1/misc/tooling.md index d5f69bf12a9..d09a80f581d 100644 --- a/src/current/_includes/v26.1/misc/tooling.md +++ b/src/current/_includes/v26.1/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Develop with CockroachDB]({% link {{ page.version.version }}/developer-guide-overview.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). diff --git a/src/current/_includes/v26.1/prod-deployment/decommission-pre-flight-checks.md b/src/current/_includes/v26.1/prod-deployment/decommission-pre-flight-checks.md index b267379384b..f7a613dff78 100644 --- a/src/current/_includes/v26.1/prod-deployment/decommission-pre-flight-checks.md +++ b/src/current/_includes/v26.1/prod-deployment/decommission-pre-flight-checks.md @@ -14,5 +14,5 @@ Failed running "node decommission" These checks can be skipped by [passing the flag `--checks=skip` to `cockroach node decommission`]({% link {{ page.version.version }}/cockroach-node.md %}#decommission-checks). {{site.data.alerts.callout_info}} -The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see [cockroachdb/cockroach#71757](https://github.com/cockroachdb/cockroach/issues/71757) +The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see {{site.data.alerts.end}} diff --git a/src/current/_includes/v26.1/sql/savepoints-and-high-priority-transactions.md b/src/current/_includes/v26.1/sql/savepoints-and-high-priority-transactions.md index c6de489e641..ce124bc3209 100644 --- a/src/current/_includes/v26.1/sql/savepoints-and-high-priority-transactions.md +++ b/src/current/_includes/v26.1/sql/savepoints-and-high-priority-transactions.md @@ -1 +1 @@ -[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. For more information, see GitHub issue [#46414](https://www.github.com/cockroachdb/cockroach/issues/46414). +[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. diff --git a/src/current/_includes/v26.1/sql/unsupported-postgres-features.md b/src/current/_includes/v26.1/sql/unsupported-postgres-features.md index a89650e38e9..a9a344b8096 100644 --- a/src/current/_includes/v26.1/sql/unsupported-postgres-features.md +++ b/src/current/_includes/v26.1/sql/unsupported-postgres-features.md @@ -1,10 +1,10 @@ ### `CREATE DOMAIN` -CockroachDB does not support `CREATE DOMAIN`. Tracking issue: [cockroachdb/cockroach#108659](https://github.com/cockroachdb/cockroach/issues/108659). +CockroachDB does not support `CREATE DOMAIN`. Tracking issue: . ### PostgreSQL range types -CockroachDB does not support PostgreSQL range types. Tracking issue: [cockroachdb/cockroach#128638](https://github.com/cockroachdb/cockroach/issues/128638). +CockroachDB does not support PostgreSQL range types. Tracking issue: . ### Other unsupported features diff --git a/src/current/_includes/v26.2/backward-incompatible/alpha.1.md b/src/current/_includes/v26.2/backward-incompatible/alpha.1.md index 8d4004422ad..7af28ac9019 100644 --- a/src/current/_includes/v26.2/backward-incompatible/alpha.1.md +++ b/src/current/_includes/v26.2/backward-incompatible/alpha.1.md @@ -1,15 +1,15 @@ -- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). [#81298][#81298] -- In the Cockroach CLI, [`BOOL` values]({% link {{ page.version.version }}/bool.md %}) are now formatted as `t` or `f` instead of `True` or `False`. [#81943][#81943] -- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node]({% link {{ page.version.version }}/node-shutdown.md %}) gracefully, send a `SIGTERM` signal to it. [#82988][#82988] -- Added a cluster version to allow the [Pebble storage engine]({% link {{ page.version.version }}/architecture/storage-layer.md#pebble %}) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree]({% link {{ page.version.version }}/architecture/storage-layer.md#log-structured-merge-trees %})). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. [#84887][#84887] +- CockroachDB no longer performs environment variable expansion in the parameter `--certs-dir`. Uses like `--certs-dir='$HOME/path'` (expansion by CockroachDB) can be replaced by `--certs-dir="$HOME/path"` (expansion by the Unix shell). +- In the Cockroach CLI, [`BOOL` values]({% link {{ page.version.version }}/bool.md %}) are now formatted as `t` or `f` instead of `True` or `False`. +- Removed the `cockroach quit` command. It has been deprecated since v20.1. To [shut down a node]({% link {{ page.version.version }}/node-shutdown.md %}) gracefully, send a `SIGTERM` signal to it. +- Added a cluster version to allow the [Pebble storage engine]({% link {{ page.version.version }}/architecture/storage-layer.md#pebble %}) to recombine certain SSTables (specifically, user keys that are split across multiple files in a level of the [log-structured merge-tree]({% link {{ page.version.version }}/architecture/storage-layer.md#log-structured-merge-trees %})). Recombining the split user keys is required for supporting the range keys feature. The migration to recombine the SSTables is expected to be short (split user keys are rare in practice), but will block subsequent migrations until all tables have been recombined. The `storage.marked-for-compaction-files` time series metric can show the progress of the migration. - Using a single TCP port listener for both RPC (node-node) and SQL client connections is now deprecated. This capability **will be removed** in the next version of CockroachDB. Instead, make one of the following configuration changes to your CockroachDB deployment: - Preferred: keep port `26257` for SQL, and allocate a new port, e.g., `26357`, for node-node RPC connections. For example, you might configure a node with the flags `--listen-addr=:26357 --sql-addr=:26257`, where subsequent nodes seeking to join would then use the flag `--join=othernode:26357,othernode:26257`. This will become the default configuration in the next version of CockroachDB. When using this mode of operation, care should be taken to use a `--join` flag that includes both the previous and new port numbers for other nodes, so that no network partition occurs during the upgrade. - - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. [#85671][#85671] -- If no `nullif` option is specified while using [`IMPORT CSV`]({% link {{ page.version.version }}/import.md %}), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. [#84487][#84487] -- [`COPY FROM`]({% link {{ page.version.version }}/copy.md %}) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. [#85986][#85986] -- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link {{ page.version.version }}/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. [#81310][#81310] -- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. [#81266][#81266] -- Removed the deprecated `GRANT` privilege. [#81310][#81310] -- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. [#83134][#83134] -- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. [#82560][#82560] -- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link {{ page.version.version }}/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. [#76834][#76834] + - Optional: keep port `26257` for RPC, and allocate a new port, e.g., `26357`, for SQL connections. For example, you might configure a node with the flags `--listen-addr=:26257 --sql-addr=:26357`. When using this mode of operation, the `--join` flags do not need to be modified. However, SQL client apps or the SQL load balancer configuration (when in use) must be updated to use the new SQL port number. +- If no `nullif` option is specified while using [`IMPORT CSV`]({% link {{ page.version.version }}/import.md %}), then a zero-length string in the input is now treated as `NULL`. The quoted empty string in the input is treated as an empty string. Similarly, if `nullif` is specified, then an unquoted value is treated as `NULL`, and a quoted value is treated as that string. These changes were made to make `IMPORT CSV` behave more similarly to `COPY CSV`. If the previous behavior (i.e., treating either quoted or unquoted values that match the `nullif` setting as `NULL`) is desired, you can use the new `allow_quoted_null` option in the `IMPORT` statement. +- [`COPY FROM`]({% link {{ page.version.version }}/copy.md %}) operations are now atomic by default instead of being segmented into 100 row transactions. Set the `copy_from_atomic_enabled` session setting to `false` for the previous behavior. +- The `GRANT` privilege has been removed and replaced by the more granular [`WITH GRANT OPTION`]({% link {{ page.version.version }}/grant.md %}#grant-privileges-with-the-option-to-grant-to-others), which provides control over which privileges are allowed to be granted. +- Removed the ability to cast `int`, `int2`, and `int8` to a `0` length `BIT` or `VARBIT`. +- Removed the deprecated `GRANT` privilege. +- Removed the `ttl_automatic_column` storage parameter. The `crdb_internal_expiration` column is created when `ttl_expire_after` is set and removed when `ttl_expire_after` is reset. +- Removed the byte string parameter in the `crdb_internal.schedule_sql_stats_compaction` function. +- Changed the default value of the `enable_implicit_transaction_for_batch_statements` to `true`. This means that a [batch of statements]({% link {{ page.version.version }}/transactions.md %}#batched-statements) sent in one string separated by semicolons is treated as an implicit transaction. diff --git a/src/current/_includes/v26.2/cdc/avro-udt-composite.md b/src/current/_includes/v26.2/cdc/avro-udt-composite.md index 7a34fbd3253..da8b7b30a3e 100644 --- a/src/current/_includes/v26.2/cdc/avro-udt-composite.md +++ b/src/current/_includes/v26.2/cdc/avro-udt-composite.md @@ -1 +1 @@ -A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). [#102903](https://github.com/cockroachdb/cockroach/issues/102903) \ No newline at end of file +A changefeed in [Avro format]({% link {{ page.version.version }}/changefeed-messages.md %}#avro) will not be able to serialize [user-defined composite (tuple) types](create-type.html). diff --git a/src/current/_includes/v26.2/cdc/csv-udt-composite.md b/src/current/_includes/v26.2/cdc/csv-udt-composite.md index 834bddd8366..fc4597e8e98 100644 --- a/src/current/_includes/v26.2/cdc/csv-udt-composite.md +++ b/src/current/_includes/v26.2/cdc/csv-udt-composite.md @@ -1 +1 @@ -A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). [#102905](https://github.com/cockroachdb/cockroach/issues/102905) \ No newline at end of file +A changefeed emitting [CSV]({% link {{ page.version.version }}/changefeed-messages.md %}#csv) will include `AS` labels in the message format when the changefeed serializes a [user-defined composite type]({% link {{ page.version.version }}/create-type.md %}). diff --git a/src/current/_includes/v26.2/faq/what-is-crdb.md b/src/current/_includes/v26.2/faq/what-is-crdb.md index 28857ed61fa..14e9080a4f0 100644 --- a/src/current/_includes/v26.2/faq/what-is-crdb.md +++ b/src/current/_includes/v26.2/faq/what-is-crdb.md @@ -1,7 +1,7 @@ CockroachDB is a [distributed SQL](https://www.cockroachlabs.com/blog/what-is-distributed-sql/) database built on a transactional and strongly-consistent key-value store. It **scales** horizontally; **survives** disk, machine, rack, and even datacenter failures with minimal latency disruption and no manual intervention; supports **strongly-consistent** ACID transactions; and provides a familiar **SQL** API for structuring, manipulating, and querying data. -CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies, and the [source code](https://github.com/cockroachdb/cockroach) is freely available. +CockroachDB is inspired by Google's [Spanner](http://research.google.com/archive/spanner.html) and [F1](http://research.google.com/pubs/pub38125.html) technologies. {{site.data.alerts.callout_success}} For a deeper dive into CockroachDB's capabilities and how it fits into the database landscape, take the free [**Intro to Distributed SQL and CockroachDB**](https://university.cockroachlabs.com/courses/course-v1:crl+intro-to-distributed-sql-and-cockroachdb+self-paced/about) course on Cockroach University. -{{site.data.alerts.end}} \ No newline at end of file +{{site.data.alerts.end}} diff --git a/src/current/_includes/v26.2/finalization-required/119894.md b/src/current/_includes/v26.2/finalization-required/119894.md index f2b393c3c0e..c65c82b83d5 100644 --- a/src/current/_includes/v26.2/finalization-required/119894.md +++ b/src/current/_includes/v26.2/finalization-required/119894.md @@ -1 +1 @@ -[Splits](https://cockroachlabs.com/docs/{{ include.version }}/architecture/distribution-layer#range-splits) no longer hold [latches](https://cockroachlabs.com/docs/architecture/distribution-layer.#latch-manager) for time proportional to the range size while computing [MVCC](https://cockroachlabs.com/docs/{{ include.version }}/architecture/storage-layer#mvcc) statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. [#119894](https://github.com/cockroachdb/cockroach/pull/119894) +[Splits](https://cockroachlabs.com/docs/{{ include.version }}/architecture/distribution-layer#range-splits) no longer hold [latches](https://cockroachlabs.com/docs/architecture/distribution-layer.#latch-manager) for time proportional to the range size while computing [MVCC](https://cockroachlabs.com/docs/{{ include.version }}/architecture/storage-layer#mvcc) statistics. Instead, MVCC statistics are pre-computed before the critical section of the split. As a side effect, the resulting statistics are no longer 100% accurate because they may correctly distribute writes concurrent with the split. To mitigate against this potential inaccuracy, and to prevent the statistics from drifting after successive splits, the existing stored statistics are re-computed and corrected if needed during the non-critical section of the split. diff --git a/src/current/_includes/v26.2/known-limitations/active-session-history.md b/src/current/_includes/v26.2/known-limitations/active-session-history.md index 1d195fb07cf..785ebb93bd5 100644 --- a/src/current/_includes/v26.2/known-limitations/active-session-history.md +++ b/src/current/_includes/v26.2/known-limitations/active-session-history.md @@ -1,3 +1,3 @@ -- ASH is not recommended for nodes with 64 or more vCPUs, due to degraded performance on those nodes. [#168289](https://github.com/cockroachdb/cockroach/issues/168289) +- ASH is not recommended for nodes with 64 or more vCPUs, due to degraded performance on those nodes. - On Basic and Standard CockroachDB {{ site.data.products.cloud }} clusters, ASH samples only cover work running on the [SQL]({% link {{ page.version.version }}/architecture/sql-layer.md %}) pod. KV-level work ([storage]({% link {{ page.version.version }}/architecture/storage-layer.md %}) I/O, [lock waits]({% link {{ page.version.version }}/troubleshoot-lock-contention.md %}), [replication]({% link {{ page.version.version }}/architecture/replication-layer.md %}), etc.) is not visible in ASH samples. -- KV work triggered during [COMMIT]({% link {{ page.version.version }}/commit-transaction.md %}) (for example, [intent resolution]({% link {{ page.version.version }}/architecture/transaction-layer.md %}), [Raft]({% link {{ page.version.version }}/architecture/replication-layer.md %}#raft) proposals deferred from earlier statements in an [explicit transaction]({% link {{ page.version.version }}/begin-transaction.md %})) is attributed to the last [statement's fingerprint]({% link {{ page.version.version }}/ui-statements-page.md %}), not the statement that originally caused the work. [#165864](https://github.com/cockroachdb/cockroach/issues/165864) \ No newline at end of file +- KV work triggered during [COMMIT]({% link {{ page.version.version }}/commit-transaction.md %}) (for example, [intent resolution]({% link {{ page.version.version }}/architecture/transaction-layer.md %}), [Raft]({% link {{ page.version.version }}/architecture/replication-layer.md %}#raft) proposals deferred from earlier statements in an [explicit transaction]({% link {{ page.version.version }}/begin-transaction.md %})) is attributed to the last [statement's fingerprint]({% link {{ page.version.version }}/ui-statements-page.md %}), not the statement that originally caused the work. diff --git a/src/current/_includes/v26.2/known-limitations/alter-changefeed-cdc-queries.md b/src/current/_includes/v26.2/known-limitations/alter-changefeed-cdc-queries.md index 56dd7eeaacd..fbd2a285c6e 100644 --- a/src/current/_includes/v26.2/known-limitations/alter-changefeed-cdc-queries.md +++ b/src/current/_includes/v26.2/known-limitations/alter-changefeed-cdc-queries.md @@ -1 +1 @@ -{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. [#83033](https://github.com/cockroachdb/cockroach/issues/83033) \ No newline at end of file +{% if page.name == "alter-changefeed.md" %} `ALTER CHANGEFEED` {% else %} [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) {% endif %} is not fully supported with changefeeds that use {% if page.name == "cdc-queries.md" %} CDC queries. {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}). {% endif %} You can alter the options that a changefeed uses, but you cannot alter the changefeed target tables. diff --git a/src/current/_includes/v26.2/known-limitations/alter-changefeed-limitations.md b/src/current/_includes/v26.2/known-limitations/alter-changefeed-limitations.md index a183f2964f4..d1cb7303a99 100644 --- a/src/current/_includes/v26.2/known-limitations/alter-changefeed-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/alter-changefeed-limitations.md @@ -1,8 +1,8 @@ -- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) statement. [#77171](https://github.com/cockroachdb/cockroach/issues/77171) +- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any [`ALTER CHANGEFEED`]({% link {{ page.version.version }}/alter-changefeed.md %}) statement. - CockroachDB does not keep track of the [`initial_scan`]({% link {{ page.version.version }}/create-changefeed.md %}#initial-scan) option applied to tables when it is set to `yes` or `only`. For example: ~~~ sql ALTER CHANGEFEED {job_ID} ADD table WITH initial_scan = 'yes'; ~~~ - This will trigger an initial scan of the table and the changefeed will track `table`. The changefeed will **not** track `initial_scan` specified as an option, so it will not display in the output or after a `SHOW CHANGEFEED JOB` statement. \ No newline at end of file + This will trigger an initial scan of the table and the changefeed will track `table`. The changefeed will **not** track `initial_scan` specified as an option, so it will not display in the output or after a `SHOW CHANGEFEED JOB` statement. diff --git a/src/current/_includes/v26.2/known-limitations/alter-sequence-limitations.md b/src/current/_includes/v26.2/known-limitations/alter-sequence-limitations.md index 7343a1d1f1e..fdb6a3d8b1d 100644 --- a/src/current/_includes/v26.2/known-limitations/alter-sequence-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/alter-sequence-limitations.md @@ -1 +1 @@ -- Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. [#23719](https://github.com/cockroachdb/cockroach/issues/23719) +- Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. diff --git a/src/current/_includes/v26.2/known-limitations/alter-table-add-column-limitations.md b/src/current/_includes/v26.2/known-limitations/alter-table-add-column-limitations.md index a8e71e5e59c..02369e61a2f 100644 --- a/src/current/_includes/v26.2/known-limitations/alter-table-add-column-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/alter-table-add-column-limitations.md @@ -2,7 +2,7 @@ - The column uses a [sequence]({% link {{ page.version.version }}/create-sequence.md %}) as the [`DEFAULT`]({% link {{ page.version.version }}/default-value.md %}) value, for example using `nextval()`. - The column uses `GENERATED ALWAYS AS IDENTITY` or `GENERATED BY DEFAULT AS IDENTITY`, unless the table being altered is empty. - This is because CockroachDB does not support back-filling sequential column data. [#42508](https://github.com/cockroachdb/cockroach/issues/42508) + This is because CockroachDB does not support back-filling sequential column data. - When executing an [`ALTER TABLE ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statement with a [`DEFAULT`]({% link {{ page.version.version }}/default-value.md %}) expression, new values generated: - Use the default [search path]({% link {{ page.version.version }}/sql-name-resolution.md %}#search-path) regardless of the search path configured in the current session via `SET SEARCH_PATH`. - Use the UTC time zone regardless of the time zone configured in the current session via [`SET TIME ZONE`]({% link {{ page.version.version }}/set-vars.md %}). diff --git a/src/current/_includes/v26.2/known-limitations/alter-view-limitations.md b/src/current/_includes/v26.2/known-limitations/alter-view-limitations.md index 642bed6ce08..4cfdf9b8a1a 100644 --- a/src/current/_includes/v26.2/known-limitations/alter-view-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/alter-view-limitations.md @@ -1,4 +1,4 @@ `ALTER VIEW` does not currently support: - Changing the [`SELECT`]({% link {{ page.version.version }}/select-clause.md %}) statement executed by a view. Instead, you must drop the existing view and create a new view. -- Renaming a view that other views depend on. This feature may be added in the future. [#10083](https://github.com/cockroachdb/cockroach/issues/10083) \ No newline at end of file +- Renaming a view that other views depend on. This feature may be added in the future. diff --git a/src/current/_includes/v26.2/known-limitations/aost-limitations.md b/src/current/_includes/v26.2/known-limitations/aost-limitations.md index 811c884d08d..c0d92fff59b 100644 --- a/src/current/_includes/v26.2/known-limitations/aost-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/aost-limitations.md @@ -1 +1 @@ -CockroachDB does not support placeholders in {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %}. The time value must be a constant value embedded in the SQL string. [#30955](https://github.com/cockroachdb/cockroach/issues/30955) \ No newline at end of file +CockroachDB does not support placeholders in {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %}. The time value must be a constant value embedded in the SQL string. diff --git a/src/current/_includes/v26.2/known-limitations/cannot-refresh-materialized-views-inside-transactions.md b/src/current/_includes/v26.2/known-limitations/cannot-refresh-materialized-views-inside-transactions.md index b0aaf728177..cd93d6ad8c8 100644 --- a/src/current/_includes/v26.2/known-limitations/cannot-refresh-materialized-views-inside-transactions.md +++ b/src/current/_includes/v26.2/known-limitations/cannot-refresh-materialized-views-inside-transactions.md @@ -23,5 +23,3 @@ ERROR: cannot refresh view in an explicit transaction SQLSTATE: 25000 ~~~ - - [#66008](https://github.com/cockroachdb/cockroach/issues/66008) diff --git a/src/current/_includes/v26.2/known-limitations/cdc-queries-column-families.md b/src/current/_includes/v26.2/known-limitations/cdc-queries-column-families.md index 505a8c9700e..ea64b9821ea 100644 --- a/src/current/_includes/v26.2/known-limitations/cdc-queries-column-families.md +++ b/src/current/_includes/v26.2/known-limitations/cdc-queries-column-families.md @@ -1 +1 @@ -Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. [#127761](https://github.com/cockroachdb/cockroach/issues/127761) \ No newline at end of file +Creating a changefeed with {% if page.name == "cdc-queries.md" %} CDC queries {% else %} [CDC queries]({% link {{ page.version.version }}/cdc-queries.md %}) {% endif %} on tables with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %} is not supported. diff --git a/src/current/_includes/v26.2/known-limitations/cdc-queries.md b/src/current/_includes/v26.2/known-limitations/cdc-queries.md index 2839eba5eda..a19a4a9a9c4 100644 --- a/src/current/_includes/v26.2/known-limitations/cdc-queries.md +++ b/src/current/_includes/v26.2/known-limitations/cdc-queries.md @@ -3,5 +3,5 @@ - The following are not permitted in CDC queries: - [Volatile functions]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility). - Sub-select queries. - - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). [#98237](https://github.com/cockroachdb/cockroach/issues/98237) -- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. [#83835](https://github.com/cockroachdb/cockroach/issues/83835) + - [Aggregate]({% link {{ page.version.version }}/functions-and-operators.md %}#aggregate-functions) and [window functions]({% link {{ page.version.version }}/window-functions.md %}) (i.e., functions operating over many rows). +- `delete` changefeed events will only contain the [primary key]({% link {{ page.version.version }}/primary-key.md %}). All other columns will emit as `NULL`. See [Capture delete messages]({% link {{ page.version.version }}/cdc-queries.md %}#capture-delete-messages) for detail on running a CDC query that emits the deleted values. diff --git a/src/current/_includes/v26.2/known-limitations/cdc.md b/src/current/_includes/v26.2/known-limitations/cdc.md index a473e94367c..9f691268aeb 100644 --- a/src/current/_includes/v26.2/known-limitations/cdc.md +++ b/src/current/_includes/v26.2/known-limitations/cdc.md @@ -1,8 +1,8 @@ -- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). [#73435](https://github.com/cockroachdb/cockroach/issues/73435) +- Changefeed target options are limited to tables and [column families]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}). - {% include {{page.version.version}}/cdc/kafka-vpc-limitation.md %} -- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#insecure-tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. [#73431](https://github.com/cockroachdb/cockroach/issues/73431) -- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. [#73432](https://github.com/cockroachdb/cockroach/issues/73432) -- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. [#79452](https://github.com/cockroachdb/cockroach/issues/79452) +- Webhook sinks only support HTTPS. Use the [`insecure_tls_skip_verify`]({% link {{ page.version.version }}/create-changefeed.md %}#insecure-tls-skip-verify) parameter when testing to disable certificate verification; however, this still requires HTTPS and certificates. +- Formats for changefeed messages are not supported by all changefeed sinks. Refer to the [Changefeed Sinks]({% link {{ page.version.version }}/changefeed-sinks.md %}) page for details on compatible formats with each sink and the [`format`]({% link {{ page.version.version }}/create-changefeed.md %}) option to specify a changefeed message format. +- Using the [`split_column_families`]({% link {{ page.version.version }}/create-changefeed.md %}#split-column-families) and [`resolved`]({% link {{ page.version.version }}/create-changefeed.md %}#resolved) options on the same changefeed will cause an error when using the following [sinks](changefeed-sinks.html): Kafka and Google Cloud Pub/Sub. Instead, use the individual `FAMILY` keyword to specify column families when creating a changefeed. - {% include {{page.version.version}}/cdc/types-udt-composite-general.md %} The following limitations apply: - {% include {{page.version.version}}/cdc/avro-udt-composite.md %} - - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} \ No newline at end of file + - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} diff --git a/src/current/_includes/v26.2/known-limitations/changefeed-column-family-message.md b/src/current/_includes/v26.2/known-limitations/changefeed-column-family-message.md index 41744b9b4b4..785cabfebe1 100644 --- a/src/current/_includes/v26.2/known-limitations/changefeed-column-family-message.md +++ b/src/current/_includes/v26.2/known-limitations/changefeed-column-family-message.md @@ -1 +1 @@ -When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. [#127736](https://github.com/cockroachdb/cockroach/issues/127736) \ No newline at end of file +When you create a changefeed on a table with more than one {% if page.name == "changefeeds-on-tables-with-column-families.md" %} column family {% else %} [column family]({% link {{ page.version.version }}/changefeeds-on-tables-with-column-families.md %}) {% endif %}, the changefeed will emit messages per column family in separate streams. As a result, [changefeed messages]({% link {{ page.version.version }}/changefeed-messages.md %}) for different column families will arrive at the [sink]({% link {{ page.version.version }}/changefeed-sinks.md %}) under separate topics. diff --git a/src/current/_includes/v26.2/known-limitations/citext-limitations.md b/src/current/_includes/v26.2/known-limitations/citext-limitations.md index df0fbc0ff91..0874b80ecce 100644 --- a/src/current/_includes/v26.2/known-limitations/citext-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/citext-limitations.md @@ -1 +1 @@ -- `CITEXT` types are not currently compatible with the `LIKE` and `ILIKE` operators. [#149791](https://github.com/cockroachdb/cockroach/issues/149791) \ No newline at end of file +- `CITEXT` types are not currently compatible with the `LIKE` and `ILIKE` operators. diff --git a/src/current/_includes/v26.2/known-limitations/collate-limitations.md b/src/current/_includes/v26.2/known-limitations/collate-limitations.md index d3e3e712bb5..c5f152172fe 100644 --- a/src/current/_includes/v26.2/known-limitations/collate-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/collate-limitations.md @@ -1 +1 @@ -- Many string operations are not properly overloaded for [collated strings]({% link {{ page.version.version }}/collate.md %}). For example, the `||` concatenation operator works with regular strings but returns an error with collated strings. [#10679](https://github.com/cockroachdb/cockroach/issues/10679) +- Many string operations are not properly overloaded for [collated strings]({% link {{ page.version.version }}/collate.md %}). For example, the `||` concatenation operator works with regular strings but returns an error with collated strings. diff --git a/src/current/_includes/v26.2/known-limitations/comment-on-limitations.md b/src/current/_includes/v26.2/known-limitations/comment-on-limitations.md index 568b31ec737..d74f88daaea 100644 --- a/src/current/_includes/v26.2/known-limitations/comment-on-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/comment-on-limitations.md @@ -1 +1 @@ -- The [`COMMENT ON`]({% link {{ page.version.version }}/comment-on.md %}) statement associates comments to databases, tables, or columns. However, the internal table (`system.comments`) in which these comments are stored is not captured by a [`BACKUP`]({% link {{ page.version.version }}/backup.md %}) of an individual table or database. As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. [#44396](https://github.com/cockroachdb/cockroach/issues/44396) +- The [`COMMENT ON`]({% link {{ page.version.version }}/comment-on.md %}) statement associates comments to databases, tables, or columns. However, the internal table (`system.comments`) in which these comments are stored is not captured by a [`BACKUP`]({% link {{ page.version.version }}/backup.md %}) of an individual table or database. As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. diff --git a/src/current/_includes/v26.2/known-limitations/composite-type-limitations.md b/src/current/_includes/v26.2/known-limitations/composite-type-limitations.md index 1ceecb5d889..6c7b2cc6281 100644 --- a/src/current/_includes/v26.2/known-limitations/composite-type-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/composite-type-limitations.md @@ -1,2 +1,2 @@ -- Updating subfields of composite types using dot syntax results in a syntax error. [#102984](https://github.com/cockroachdb/cockroach/issues/102984) -- Tuple elements cannot be accessed without enclosing the [composite variable]({% link {{ page.version.version }}/create-type.md %}) name in parentheses. For example, `(OLD).column` and `(NEW).column` when used in [triggers]({% link {{ page.version.version }}/triggers.md %}). [#114687](https://github.com/cockroachdb/cockroach/issues/114687) +- Updating subfields of composite types using dot syntax results in a syntax error. +- Tuple elements cannot be accessed without enclosing the [composite variable]({% link {{ page.version.version }}/create-type.md %}) name in parentheses. For example, `(OLD).column` and `(NEW).column` when used in [triggers]({% link {{ page.version.version }}/triggers.md %}). diff --git a/src/current/_includes/v26.2/known-limitations/copy-syntax.md b/src/current/_includes/v26.2/known-limitations/copy-syntax.md index e64a075dcac..90d35df5754 100644 --- a/src/current/_includes/v26.2/known-limitations/copy-syntax.md +++ b/src/current/_includes/v26.2/known-limitations/copy-syntax.md @@ -1,5 +1,5 @@ CockroachDB does not yet support the following `COPY` syntax: - - `COPY ... WITH FREEZE`. [#85573](https://github.com/cockroachdb/cockroach/issues/85573) - - `COPY ... WITH QUOTE`. [#85574](https://github.com/cockroachdb/cockroach/issues/85574) - - `COPY ... FROM ... WHERE `. [#54580](https://github.com/cockroachdb/cockroach/issues/54580) + - `COPY ... WITH FREEZE`. + - `COPY ... WITH QUOTE`. + - `COPY ... FROM ... WHERE `. diff --git a/src/current/_includes/v26.2/known-limitations/create-statistics-aost-limitation.md b/src/current/_includes/v26.2/known-limitations/create-statistics-aost-limitation.md index 09f86f51c48..7a2a39034de 100644 --- a/src/current/_includes/v26.2/known-limitations/create-statistics-aost-limitation.md +++ b/src/current/_includes/v26.2/known-limitations/create-statistics-aost-limitation.md @@ -1 +1 @@ -The `ANALYZE` alias {% if page.name != "create-statistics.md" %}of [`CREATE STATISTICS`]({% link {{ page.version.version }}/create-statistics.md %}){% endif %} does not support specifying an {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %} timestamp. `ANALYZE` statements use `AS OF SYSTEM TIME '-0.001ms'` automatically. For more control over the statistics interval, use the `CREATE STATISTICS` syntax instead. [#96430](https://github.com/cockroachdb/cockroach/issues/96430) \ No newline at end of file +The `ANALYZE` alias {% if page.name != "create-statistics.md" %}of [`CREATE STATISTICS`]({% link {{ page.version.version }}/create-statistics.md %}){% endif %} does not support specifying an {% if page.name == "as-of-system-time.md" %}`AS OF SYSTEM TIME`{% else %}[`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}){% endif %} timestamp. `ANALYZE` statements use `AS OF SYSTEM TIME '-0.001ms'` automatically. For more control over the statistics interval, use the `CREATE STATISTICS` syntax instead. diff --git a/src/current/_includes/v26.2/known-limitations/data-domiciling-limitations.md b/src/current/_includes/v26.2/known-limitations/data-domiciling-limitations.md index b4e1092fdac..93cb17bd33a 100644 --- a/src/current/_includes/v26.2/known-limitations/data-domiciling-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/data-domiciling-limitations.md @@ -1,7 +1,7 @@ -- When using the `infer_rbr_region_col_using_constraint` option, inserting rows with `DEFAULT` for the region column uses the database's primary region instead of inferring the region from the parent table via foreign-key constraint. [#150783](https://github.com/cockroachdb/cockroach/issues/150783) +- When using the `infer_rbr_region_col_using_constraint` option, inserting rows with `DEFAULT` for the region column uses the database's primary region instead of inferring the region from the parent table via foreign-key constraint. - When columns are [indexed]({% link {{ page.version.version }}/indexes.md %}), a subset of data from the indexed columns may appear in [meta ranges]({% link {{ page.version.version }}/architecture/distribution-layer.md %}#meta-ranges) or other system tables. CockroachDB synchronizes these system ranges and system tables across nodes. This synchronization does not respect any multi-region settings applied via either the [multi-region SQL statements]({% link {{ page.version.version }}/multiregion-overview.md %}), or the low-level [zone configs]({% link {{ page.version.version }}/configure-replication-zones.md %}) mechanism. - [Zone configs]({% link {{ page.version.version }}/configure-replication-zones.md %}) can be used for data placement but these features were historically built for performance, not for domiciling. The replication system's top priority is to prevent the loss of data and it may override the zone configurations if necessary to ensure data durability. For more information, see [Replication Controls]({% link {{ page.version.version }}/configure-replication-zones.md %}#types-of-constraints). - If your [log files]({% link {{ page.version.version }}/logging-overview.md %}) are kept in the region where they were generated, there is some cross-region leakage (like the system tables described previously), but the majority of user data that makes it into the logs is going to be homed in that region. If that's not strong enough, you can use the [log redaction functionality]({% link {{ page.version.version }}/configure-logs.md %}#redact-logs) to strip all raw data from the logs. You can also limit your log retention entirely. - If you start a node with a [`--locality`]({% link {{ page.version.version }}/cockroach-start.md %}#locality) flag that says the node is in region _A_, but the node is actually running in some region _B_, data domiciling based on the inferred node placement will not work. A CockroachDB node only knows its locality based on the text supplied to the `--locality` flag; it can not ensure that it is actually running in that physical location. - {% include {{page.version.version}}/known-limitations/secondary-regions-with-regional-by-row-tables.md %} -- {% include {{ page.version.version }}/known-limitations/enforce-home-region-limitations.md %} \ No newline at end of file +- {% include {{ page.version.version }}/known-limitations/enforce-home-region-limitations.md %} diff --git a/src/current/_includes/v26.2/known-limitations/distsql-heterogeneous-endianness.md b/src/current/_includes/v26.2/known-limitations/distsql-heterogeneous-endianness.md index 9194395dc04..6249f78e719 100644 --- a/src/current/_includes/v26.2/known-limitations/distsql-heterogeneous-endianness.md +++ b/src/current/_includes/v26.2/known-limitations/distsql-heterogeneous-endianness.md @@ -1 +1 @@ -In clusters that mix big-endian and little-endian architectures, DistSQL may produce incorrect results because hash computations differ between the platforms. As a workaround on heterogeneous clusters, disable DistSQL with `SET CLUSTER SETTING sql.defaults.distsql = off`. [#148773](https://github.com/cockroachdb/cockroach/issues/148773) \ No newline at end of file +In clusters that mix big-endian and little-endian architectures, DistSQL may produce incorrect results because hash computations differ between the platforms. As a workaround on heterogeneous clusters, disable DistSQL with `SET CLUSTER SETTING sql.defaults.distsql = off`. diff --git a/src/current/_includes/v26.2/known-limitations/drop-column-partial-index.md b/src/current/_includes/v26.2/known-limitations/drop-column-partial-index.md index 9fd1811cc43..59d1e0e09b1 100644 --- a/src/current/_includes/v26.2/known-limitations/drop-column-partial-index.md +++ b/src/current/_includes/v26.2/known-limitations/drop-column-partial-index.md @@ -1 +1 @@ -CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}). [#97813](https://github.com/cockroachdb/cockroach/issues/97813). \ No newline at end of file +CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}).. diff --git a/src/current/_includes/v26.2/known-limitations/drop-owned-by-limitations.md b/src/current/_includes/v26.2/known-limitations/drop-owned-by-limitations.md index 95685f6adf1..563c3fc3746 100644 --- a/src/current/_includes/v26.2/known-limitations/drop-owned-by-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/drop-owned-by-limitations.md @@ -10,4 +10,4 @@ The phrase "synthetic privileges" in the error message refers to [system-level privileges]({% link {{ page.version.version }}/security-reference/authorization.md %}#supported-privileges). - The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. [#88149](https://github.com/cockroachdb/cockroach/issues/88149) \ No newline at end of file + The workaround is to use [`SHOW SYSTEM GRANTS FOR {role}`](show-system-grants.html) and then use [`REVOKE SYSTEM ...`](revoke.html#revoke-system-level-privileges-on-the-entire-cluster) for each privilege in the result. diff --git a/src/current/_includes/v26.2/known-limitations/enforce-home-region-limitations.md b/src/current/_includes/v26.2/known-limitations/enforce-home-region-limitations.md index 693829358f7..6ab5abaccaf 100644 --- a/src/current/_includes/v26.2/known-limitations/enforce-home-region-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/enforce-home-region-limitations.md @@ -1 +1 @@ -With `enforce_home_region` enabled, CockroachDB currently validates home-region access during plan build. This can falsely reject queries (e.g., lookup joins) that would only read local data at execution time, returning a `Query has no home region` error. [#148375](https://github.com/cockroachdb/cockroach/issues/148375) \ No newline at end of file +With `enforce_home_region` enabled, CockroachDB currently validates home-region access during plan build. This can falsely reject queries (e.g., lookup joins) that would only read local data at execution time, returning a `Query has no home region` error. diff --git a/src/current/_includes/v26.2/known-limitations/expression-index-limitations.md b/src/current/_includes/v26.2/known-limitations/expression-index-limitations.md index c0e94185948..76724af9432 100644 --- a/src/current/_includes/v26.2/known-limitations/expression-index-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/expression-index-limitations.md @@ -1,6 +1,6 @@ - The expression cannot reference columns outside the index's table. - Functional expression output must be determined by the input arguments. For example, you can't use the [volatile function]({% link {{ page.version.version }}/functions-and-operators.md %}#function-volatility) `now()` to create an index because its output depends on more than just the function arguments. -- CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). [#67900](https://github.com/cockroachdb/cockroach/issues/67900) +- CockroachDB does not allow {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} to reference [computed columns]({% link {{ page.version.version }}/computed-columns.md %}). - CockroachDB does not support expressions as `ON CONFLICT` targets. This means that unique {% if page.name == "expression-indexes.md" %} expression indexes {% else %} [expression indexes]({% link {{ page.version.version }}/expression-indexes.md %}) {% endif %} cannot be selected as arbiters for [`INSERT .. ON CONFLICT`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause) statements. For example: {% include_cached copy-clipboard.html %} @@ -39,5 +39,3 @@ ^ HINT: try \h INSERT ~~~ - - [#67893](https://github.com/cockroachdb/cockroach/issues/67893) diff --git a/src/current/_includes/v26.2/known-limitations/forecasted-stats-limitations.md b/src/current/_includes/v26.2/known-limitations/forecasted-stats-limitations.md index c8753124a96..a7f8eb17ee2 100644 --- a/src/current/_includes/v26.2/known-limitations/forecasted-stats-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/forecasted-stats-limitations.md @@ -6,4 +6,4 @@ Although [`SHOW STATISTICS WITH FORECAST`]({% link {{ page.version.version }}/show-statistics.md %}#display-forecasted-statistics) shows the settings taking effect immediately, they do not actually take effect until new statistics are collected (as can be verified with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %})). - As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. [#123852](https://github.com/cockroachdb/cockroach/issues/123852) \ No newline at end of file + As a workaround, disable and enable forecasting at the [cluster]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-clusters) or [table]({% link {{ page.version.version }}/cost-based-optimizer.md %}#enable-and-disable-automatic-statistics-collection-for-tables) level. This will invalidate the statistics cache and cause these settings to take effect immediately. diff --git a/src/current/_includes/v26.2/known-limitations/full-text-search-unsupported.md b/src/current/_includes/v26.2/known-limitations/full-text-search-unsupported.md index 7b5a83f2cae..ef6ff023f86 100644 --- a/src/current/_includes/v26.2/known-limitations/full-text-search-unsupported.md +++ b/src/current/_includes/v26.2/known-limitations/full-text-search-unsupported.md @@ -10,5 +10,3 @@ - `tsquery <-> tsquery` comparisons. - `!! tsquery` comparisons. - `tsquery @> tsquery` and `tsquery <@ tsquery` comparisons. - -[#41288](https://github.com/cockroachdb/cockroach/issues/41288) \ No newline at end of file diff --git a/src/current/_includes/v26.2/known-limitations/generic-query-plan-limitations.md b/src/current/_includes/v26.2/known-limitations/generic-query-plan-limitations.md index e28e66d5f32..e588b799305 100644 --- a/src/current/_includes/v26.2/known-limitations/generic-query-plan-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/generic-query-plan-limitations.md @@ -1,2 +1,2 @@ -- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. [#128916](https://github.com/cockroachdb/cockroach/issues/128916) -- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. [#128911](https://github.com/cockroachdb/cockroach/issues/128911) \ No newline at end of file +- Because [generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache) use lookup joins instead of the scans and revscans used by custom query plans, generic query plans do not perform as well as custom query plans in some cases. +- [Generic query plans]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-type) are not included in the [plan cache]({% link {{ page.version.version }}/cost-based-optimizer.md %}#query-plan-cache). This means a generic query plan built and optimized for a prepared statement in one session cannot be used by another session. To reuse generic query plans for maximum performance, a prepared statement should be executed multiple times instead of prepared and executed once. diff --git a/src/current/_includes/v26.2/known-limitations/geospatial-heterogeneous-architectures.md b/src/current/_includes/v26.2/known-limitations/geospatial-heterogeneous-architectures.md index 4bb9633f138..e3fecb28c86 100644 --- a/src/current/_includes/v26.2/known-limitations/geospatial-heterogeneous-architectures.md +++ b/src/current/_includes/v26.2/known-limitations/geospatial-heterogeneous-architectures.md @@ -1 +1 @@ -Clusters that mix `s390x` with other CPU architectures are unsupported for geospatial workloads. Due to differences in how trigonometric functions are computed on `s390x` systems, geospatial queries in heterogeneous clusters with `s390x` are likely to get incorrect results. This can include taking a backup on one architecture and restoring it on another. [#148783](https://github.com/cockroachdb/cockroach/issues/148783) \ No newline at end of file +Clusters that mix `s390x` with other CPU architectures are unsupported for geospatial workloads. Due to differences in how trigonometric functions are computed on `s390x` systems, geospatial queries in heterogeneous clusters with `s390x` are likely to get incorrect results. This can include taking a backup on one architecture and restoring it on another. diff --git a/src/current/_includes/v26.2/known-limitations/import-into-limitations.md b/src/current/_includes/v26.2/known-limitations/import-into-limitations.md index 6f2c04b65f1..0d91ed95090 100644 --- a/src/current/_includes/v26.2/known-limitations/import-into-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/import-into-limitations.md @@ -4,7 +4,7 @@ - After importing into an existing table, [constraints]({% link {{ page.version.version }}/constraints.md %}) will be un-validated and need to be [re-validated]({% link {{ page.version.version }}/alter-table.md %}#validate-constraint). - Imported rows must not conflict with existing rows in the table or any unique secondary indexes. - `IMPORT INTO` works for only a single existing table. -- When `IMPORT INTO` uses distributed merge, it stores intermediate SST files on participating SQL instances' local storage. If one of those SQL instances becomes unavailable during the merge phase, the job waits for that SQL instance to become available again. If the SQL instance does not become available again, the job fails with a permanent error. [#167491](https://github.com/cockroachdb/cockroach/issues/167491) +- When `IMPORT INTO` uses distributed merge, it stores intermediate SST files on participating SQL instances' local storage. If one of those SQL instances becomes unavailable during the merge phase, the job waits for that SQL instance to become available again. If the SQL instance does not become available again, the job fails with a permanent error. - `IMPORT INTO` can sometimes fail with a "context canceled" error, or can restart itself many times without ever finishing. If this is happening, it is likely due to a high amount of disk contention. This can be mitigated by setting the `kv.bulk_io_write.max_rate` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) to a value below your max disk write speed. For example, to set it to 10MB/s, execute: {% include_cached copy-clipboard.html %} ~~~ sql diff --git a/src/current/_includes/v26.2/known-limitations/int-limitations.md b/src/current/_includes/v26.2/known-limitations/int-limitations.md index 6333dbf6ed5..9b7894a854d 100644 --- a/src/current/_includes/v26.2/known-limitations/int-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/int-limitations.md @@ -1 +1 @@ -- When setting the `default_int_size` [session variable]({% link {{ page.version.version }}/set-vars.md %}) in a batch of statements such as `SET default_int_size='int4'; SELECT 1::INT`, the `default_int_size` variable will not take effect until the next statement. Statement parsing is asynchronous with statement execution. As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. [#32846](https://github.com/cockroachdb/cockroach/issues/32846) +- When setting the `default_int_size` [session variable]({% link {{ page.version.version }}/set-vars.md %}) in a batch of statements such as `SET default_int_size='int4'; SELECT 1::INT`, the `default_int_size` variable will not take effect until the next statement. Statement parsing is asynchronous with statement execution. As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. diff --git a/src/current/_includes/v26.2/known-limitations/inverted-index-limitations.md b/src/current/_includes/v26.2/known-limitations/inverted-index-limitations.md index a19a10295eb..778e8efcd31 100644 --- a/src/current/_includes/v26.2/known-limitations/inverted-index-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/inverted-index-limitations.md @@ -1,3 +1,3 @@ -- CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). [#88278](https://github.com/cockroachdb/cockroach/issues/88278) -- CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables for `tsvector` and `tsquery` types. [#102731](https://github.com/cockroachdb/cockroach/issues/102731) -- [Left joins]({% link {{ page.version.version }}/joins.md %}#left-outer-joins) and anti joins involving [`JSONB`]({% link {{ page.version.version }}/jsonb.md %}), [`ARRAY`]({% link {{ page.version.version }}/array.md %}), or [spatial-typed]({% link {{ page.version.version }}/query-spatial-data.md %}) columns with a multi-column or [partitioned]({% link {{ page.version.version }}/alter-index.md %}#partition-by) [GIN index](inverted-indexes.html) will not take advantage of the index if the prefix columns of the index are unconstrained, or if they are constrained to multiple, constant values. To work around this limitation, make sure that the prefix columns of the index are either constrained to single constant values, or are part of an equality condition with an input column. [#59649](https://github.com/cockroachdb/cockroach/issues/59649) +- CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). +- CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables for `tsvector` and `tsquery` types. +- [Left joins]({% link {{ page.version.version }}/joins.md %}#left-outer-joins) and anti joins involving [`JSONB`]({% link {{ page.version.version }}/jsonb.md %}), [`ARRAY`]({% link {{ page.version.version }}/array.md %}), or [spatial-typed]({% link {{ page.version.version }}/query-spatial-data.md %}) columns with a multi-column or [partitioned]({% link {{ page.version.version }}/alter-index.md %}#partition-by) [GIN index](inverted-indexes.html) will not take advantage of the index if the prefix columns of the index are unconstrained, or if they are constrained to multiple, constant values. To work around this limitation, make sure that the prefix columns of the index are either constrained to single constant values, or are part of an equality condition with an input column. diff --git a/src/current/_includes/v26.2/known-limitations/jsonpath-limitations.md b/src/current/_includes/v26.2/known-limitations/jsonpath-limitations.md index 9b51bfb6e87..c4cbd7fb32b 100644 --- a/src/current/_includes/v26.2/known-limitations/jsonpath-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/jsonpath-limitations.md @@ -1,2 +1,2 @@ -- The following keywords are only accepted in lowercase: `strict`, `lax`, `exists`, `like_regex`, `flag`, `is unknown`, `to`, `last`. [#144255](https://github.com/cockroachdb/cockroach/issues/144255) -- Comparisons involving empty arrays (e.g., `SELECT jsonb_path_query('{"a": [1], "b": []}', '$.a == $.b');`) return `null`, rather than `false` as in PostgreSQL. [#145099](https://github.com/cockroachdb/cockroach/issues/145099) \ No newline at end of file +- The following keywords are only accepted in lowercase: `strict`, `lax`, `exists`, `like_regex`, `flag`, `is unknown`, `to`, `last`. +- Comparisons involving empty arrays (e.g., `SELECT jsonb_path_query('{"a": [1], "b": []}', '$.a == $.b');`) return `null`, rather than `false` as in PostgreSQL. diff --git a/src/current/_includes/v26.2/known-limitations/ldr-column-families.md b/src/current/_includes/v26.2/known-limitations/ldr-column-families.md index 2a7c3bbba52..67183137d9e 100644 --- a/src/current/_includes/v26.2/known-limitations/ldr-column-families.md +++ b/src/current/_includes/v26.2/known-limitations/ldr-column-families.md @@ -1 +1 @@ -Replicating tables cannot contain [column families]({% link {{ page.version.version }}/column-families.md %}). [#133562](https://github.com/cockroachdb/cockroach/issues/133562) \ No newline at end of file +Replicating tables cannot contain [column families]({% link {{ page.version.version }}/column-families.md %}). diff --git a/src/current/_includes/v26.2/known-limitations/ldr-composite-primary.md b/src/current/_includes/v26.2/known-limitations/ldr-composite-primary.md index ac897af35a7..6fdf7136e53 100644 --- a/src/current/_includes/v26.2/known-limitations/ldr-composite-primary.md +++ b/src/current/_includes/v26.2/known-limitations/ldr-composite-primary.md @@ -1 +1 @@ -The [primary key]({% link {{ page.version.version }}/primary-key.md %}) in replicating tables cannot contain composite types. [#133572](https://github.com/cockroachdb/cockroach/issues/133572) \ No newline at end of file +The [primary key]({% link {{ page.version.version }}/primary-key.md %}) in replicating tables cannot contain composite types. diff --git a/src/current/_includes/v26.2/known-limitations/ldr-indexes.md b/src/current/_includes/v26.2/known-limitations/ldr-indexes.md index 0bf7f60c2d4..3d0f52e9ad7 100644 --- a/src/current/_includes/v26.2/known-limitations/ldr-indexes.md +++ b/src/current/_includes/v26.2/known-limitations/ldr-indexes.md @@ -1 +1 @@ -Replicating tables cannot contain an [index]({% link {{ page.version.version }}/indexes.md %}) that requires expression evaluation before insertion. [#133560](https://github.com/cockroachdb/cockroach/issues/133560) \ No newline at end of file +Replicating tables cannot contain an [index]({% link {{ page.version.version }}/indexes.md %}) that requires expression evaluation before insertion. diff --git a/src/current/_includes/v26.2/known-limitations/ldr-sequences.md b/src/current/_includes/v26.2/known-limitations/ldr-sequences.md index 4e39f3630e3..069a693b7a0 100644 --- a/src/current/_includes/v26.2/known-limitations/ldr-sequences.md +++ b/src/current/_includes/v26.2/known-limitations/ldr-sequences.md @@ -1 +1 @@ -Replicating table cannot reference [sequences]({% link {{ page.version.version }}/create-sequence.md %}). [#132303](https://github.com/cockroachdb/cockroach/issues/132303) \ No newline at end of file +Replicating table cannot reference [sequences]({% link {{ page.version.version }}/create-sequence.md %}). diff --git a/src/current/_includes/v26.2/known-limitations/ldr-triggers.md b/src/current/_includes/v26.2/known-limitations/ldr-triggers.md index 55f8e885b97..9fc2b36777e 100644 --- a/src/current/_includes/v26.2/known-limitations/ldr-triggers.md +++ b/src/current/_includes/v26.2/known-limitations/ldr-triggers.md @@ -1 +1 @@ -Replicating tables cannot reference triggers. [#132301](https://github.com/cockroachdb/cockroach/issues/132301) \ No newline at end of file +Replicating tables cannot reference triggers. diff --git a/src/current/_includes/v26.2/known-limitations/ldr-udfs.md b/src/current/_includes/v26.2/known-limitations/ldr-udfs.md index fb642f14751..354a9e8243e 100644 --- a/src/current/_includes/v26.2/known-limitations/ldr-udfs.md +++ b/src/current/_includes/v26.2/known-limitations/ldr-udfs.md @@ -1 +1 @@ -Replicating tables cannot reference [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). [#132302](https://github.com/cockroachdb/cockroach/issues/132302) \ No newline at end of file +Replicating tables cannot reference [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). diff --git a/src/current/_includes/v26.2/known-limitations/like-escape-performance.md b/src/current/_includes/v26.2/known-limitations/like-escape-performance.md index 845fdddeeb9..8aa3c2065d0 100644 --- a/src/current/_includes/v26.2/known-limitations/like-escape-performance.md +++ b/src/current/_includes/v26.2/known-limitations/like-escape-performance.md @@ -1 +1 @@ -`LIKE` queries with an `ESCAPE` clause cannot use index acceleration, which can result in significantly slower performance compared to standard `LIKE` queries. [#30192](https://github.com/cockroachdb/cockroach/issues/30192) +`LIKE` queries with an `ESCAPE` clause cannot use index acceleration, which can result in significantly slower performance compared to standard `LIKE` queries. diff --git a/src/current/_includes/v26.2/known-limitations/locality-optimized-search-virtual-computed-columns.md b/src/current/_includes/v26.2/known-limitations/locality-optimized-search-virtual-computed-columns.md index d6acf418aa8..7a7392aab0d 100644 --- a/src/current/_includes/v26.2/known-limitations/locality-optimized-search-virtual-computed-columns.md +++ b/src/current/_includes/v26.2/known-limitations/locality-optimized-search-virtual-computed-columns.md @@ -1 +1 @@ -- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). [#68129](https://github.com/cockroachdb/cockroach/issues/68129) +- {% if page.name == "cost-based-optimizer.md" %} Locality optimized search {% else %} [Locality optimized search]({% link {{ page.version.version }}/cost-based-optimizer.md %}#locality-optimized-search-in-multi-region-clusters) {% endif %} does not work for queries that use [partitioned unique indexes]({% link {{ page.version.version }}/partitioning.md %}#partition-using-a-secondary-index) on [virtual computed columns](computed-columns.html#virtual-computed-columns). A workaround for computed columns is to make the virtual computed column a [stored computed column](computed-columns.html#stored-computed-columns). Locality optimized search does not work for queries that use partitioned unique [expression indexes](expression-indexes.html). diff --git a/src/current/_includes/v26.2/known-limitations/materialized-views-no-stats.md b/src/current/_includes/v26.2/known-limitations/materialized-views-no-stats.md index 02f2bd787c4..a468db2895d 100644 --- a/src/current/_includes/v26.2/known-limitations/materialized-views-no-stats.md +++ b/src/current/_includes/v26.2/known-limitations/materialized-views-no-stats.md @@ -1 +1 @@ -- The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views. [#78181](https://github.com/cockroachdb/cockroach/issues/78181). +- The optimizer may not select the most optimal query plan when querying materialized views because CockroachDB does not [collect statistics]({% link {{ page.version.version }}/cost-based-optimizer.md %}#table-statistics) on materialized views.. diff --git a/src/current/_includes/v26.2/known-limitations/max-row-size-limitations.md b/src/current/_includes/v26.2/known-limitations/max-row-size-limitations.md index 9d4d3e12918..63e16c86d4f 100644 --- a/src/current/_includes/v26.2/known-limitations/max-row-size-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/max-row-size-limitations.md @@ -1 +1 @@ -- The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. [#69540](https://github.com/cockroachdb/cockroach/issues/69540) +- The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. diff --git a/src/current/_includes/v26.2/known-limitations/multiple-arbiter-indexes.md b/src/current/_includes/v26.2/known-limitations/multiple-arbiter-indexes.md index c9861623314..b13890a2ee9 100644 --- a/src/current/_includes/v26.2/known-limitations/multiple-arbiter-indexes.md +++ b/src/current/_includes/v26.2/known-limitations/multiple-arbiter-indexes.md @@ -1 +1 @@ -CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. [#53170](https://github.com/cockroachdb/cockroach/issues/53170) \ No newline at end of file +CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. diff --git a/src/current/_includes/v26.2/known-limitations/node-shutdown-limitations.md b/src/current/_includes/v26.2/known-limitations/node-shutdown-limitations.md index f35f858bdc1..0b09a134e49 100644 --- a/src/current/_includes/v26.2/known-limitations/node-shutdown-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/node-shutdown-limitations.md @@ -2,4 +2,4 @@ - The `cockroach node decommission --wait-all` command was run and then interrupted - The `cockroach node decommission --wait=none` command was run - This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. [#94430](https://github.com/cockroachdb/cockroach/issues/94430) + This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. diff --git a/src/current/_includes/v26.2/known-limitations/null-limitations.md b/src/current/_includes/v26.2/known-limitations/null-limitations.md index ad2efce233a..af3ed9de10a 100644 --- a/src/current/_includes/v26.2/known-limitations/null-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/null-limitations.md @@ -1 +1 @@ -- By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL` values after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it does not work when the ordering column is a tuple. [#93558](https://github.com/cockroachdb/cockroach/issues/93558) +- By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL` values after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it does not work when the ordering column is a tuple. diff --git a/src/current/_includes/v26.2/known-limitations/online-schema-changes-limitations.md b/src/current/_includes/v26.2/known-limitations/online-schema-changes-limitations.md index be6d00c26ce..e8b98cfd66f 100644 --- a/src/current/_includes/v26.2/known-limitations/online-schema-changes-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/online-schema-changes-limitations.md @@ -28,9 +28,9 @@ You cannot start an online schema change on a table if a [primary key change]({% Some [schema changes]({% link {{ page.version.version }}/online-schema-changes.md %}) that [drop columns]({% link {{ page.version.version }}/alter-table.md %}#drop-column) cannot be [rolled back]({% link {{ page.version.version }}/rollback-transaction.md %}) properly. -In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. [#46541](https://github.com/cockroachdb/cockroach/issues/46541) +In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. -In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. [#47712](https://github.com/cockroachdb/cockroach/issues/47712) +In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. To reduce the chance that a column drop will roll back incorrectly: @@ -38,4 +38,4 @@ To reduce the chance that a column drop will roll back incorrectly: - Drop all [constraints]({% link {{ page.version.version }}/constraints.md %}) (including [unique indexes]({% link {{ page.version.version }}/unique.md %})) on the column in a separate transaction, before dropping the column. - Drop any [default values]({% link {{ page.version.version }}/default-value.md %}) or [computed expressions]({% link {{ page.version.version }}/computed-columns.md %}) on a column before attempting to drop the column. This prevents conflicts between constraints and default/computed values during a column drop rollback. -If you think a rollback of a column-dropping schema change has occurred, check the [jobs table]({% link {{ page.version.version }}/show-jobs.md %}). Schema changes with an error prefaced by `cannot be reverted, manual cleanup may be required` might require manual intervention. \ No newline at end of file +If you think a rollback of a column-dropping schema change has occurred, check the [jobs table]({% link {{ page.version.version }}/show-jobs.md %}). Schema changes with an error prefaced by `cannot be reverted, manual cleanup may be required` might require manual intervention. diff --git a/src/current/_includes/v26.2/known-limitations/partition-limitations.md b/src/current/_includes/v26.2/known-limitations/partition-limitations.md index f8ba5e979fa..fde8db82bca 100644 --- a/src/current/_includes/v26.2/known-limitations/partition-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/partition-limitations.md @@ -1,3 +1,3 @@ - When defining a [table partition]({% link {{ page.version.version }}/partitioning.md %}), either during table creation or table alteration, it is not possible to use placeholders in the `PARTITION BY` clause. - CockroachDB does not currently support dropping a single partition from a table. In order to remove partitions, you can [repartition]({% unless page.name == "partitioning.md" %}{% link {{ page.version.version }}/partitioning.md %}{% endunless %}#repartition-a-table) the table. -- In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. [#82774](https://github.com/cockroachdb/cockroach/issues/82774) +- In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. diff --git a/src/current/_includes/v26.2/known-limitations/plpgsql-limitations.md b/src/current/_includes/v26.2/known-limitations/plpgsql-limitations.md index 60b3104942e..3b41a78fd58 100644 --- a/src/current/_includes/v26.2/known-limitations/plpgsql-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/plpgsql-limitations.md @@ -1,23 +1,23 @@ -- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. [#121605](https://github.com/cockroachdb/cockroach/issues/121605) -- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. [#114676](https://github.com/cockroachdb/cockroach/issues/114676) -- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). [#114701](https://github.com/cockroachdb/cockroach/issues/114701) +- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. +- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. +- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). - The following statements are not supported: - - `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops. [#105246](https://github.com/cockroachdb/cockroach/issues/105246) - - `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `CASE`. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). [#111446](https://github.com/cockroachdb/cockroach/issues/111446) -- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). [#106237](https://github.com/cockroachdb/cockroach/issues/106237) -- `RAISE` statements message the client directly, and do not produce log output. [#117750](https://github.com/cockroachdb/cockroach/issues/117750) -- `ASSERT` debugging checks are not supported. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- `RECORD` parameters and variables are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). [#105713](https://github.com/cockroachdb/cockroach/issues/105713) -- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. [#117508](https://github.com/cockroachdb/cockroach/issues/117508) -- Syntax for accessing members of composite types without parentheses is not supported. [#114687](https://github.com/cockroachdb/cockroach/issues/114687) -- `NOT NULL` variable declarations are not supported. [#105243](https://github.com/cockroachdb/cockroach/issues/105243) -- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. [#111479](https://github.com/cockroachdb/cockroach/issues/111479) -- Cursors in PL/pgSQL cannot be declared with arguments. [#117746](https://github.com/cockroachdb/cockroach/issues/117746) -- `OPEN FOR EXECUTE` is not supported for opening cursors. [#117744](https://github.com/cockroachdb/cockroach/issues/117744) -- The `print_strict_params` option is not supported in PL/pgSQL. [#123671](https://github.com/cockroachdb/cockroach/issues/123671) -- The `FOUND` local variable, which checks whether a statement affected any rows, is not supported in PL/pgSQL. [#122306](https://github.com/cockroachdb/cockroach/issues/122306) -- By default, when a PL/pgSQL variable conflicts with a column name, CockroachDB resolves the ambiguity by treating it as a column reference rather than a variable reference. This behavior differs from PostgreSQL, where an ambiguous column error is reported, and it is possible to change the `plpgsql.variable_conflict` setting in order to prefer either columns or variables. [#115680](https://github.com/cockroachdb/cockroach/issues/115680) -- It is not possible to define a `RECORD`-returning PL/pgSQL function that returns different-typed expressions from different `RETURN` statements. CockroachDB requires a consistent return type for `RECORD`-returning functions. [#115384](https://github.com/cockroachdb/cockroach/issues/115384) -- Variables cannot be declared with an associated collation using the `COLLATE` keyword. [#105245](https://github.com/cockroachdb/cockroach/issues/105245) -- Variables cannot be accessed using the `label.var_name` pattern. [#122322](https://github.com/cockroachdb/cockroach/issues/122322) \ No newline at end of file + - `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops. + - `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `CASE`. +- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). +- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). +- `RAISE` statements message the client directly, and do not produce log output. +- `ASSERT` debugging checks are not supported. +- `RECORD` parameters and variables are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}). +- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. +- Syntax for accessing members of composite types without parentheses is not supported. +- `NOT NULL` variable declarations are not supported. +- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. +- Cursors in PL/pgSQL cannot be declared with arguments. +- `OPEN FOR EXECUTE` is not supported for opening cursors. +- The `print_strict_params` option is not supported in PL/pgSQL. +- The `FOUND` local variable, which checks whether a statement affected any rows, is not supported in PL/pgSQL. +- By default, when a PL/pgSQL variable conflicts with a column name, CockroachDB resolves the ambiguity by treating it as a column reference rather than a variable reference. This behavior differs from PostgreSQL, where an ambiguous column error is reported, and it is possible to change the `plpgsql.variable_conflict` setting in order to prefer either columns or variables. +- It is not possible to define a `RECORD`-returning PL/pgSQL function that returns different-typed expressions from different `RETURN` statements. CockroachDB requires a consistent return type for `RECORD`-returning functions. +- Variables cannot be declared with an associated collation using the `COLLATE` keyword. +- Variables cannot be accessed using the `label.var_name` pattern. diff --git a/src/current/_includes/v26.2/known-limitations/read-committed-limitations.md b/src/current/_includes/v26.2/known-limitations/read-committed-limitations.md index b4722a0c369..469b0434fcd 100644 --- a/src/current/_includes/v26.2/known-limitations/read-committed-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/read-committed-limitations.md @@ -1,7 +1,7 @@ -- Mixed-isolation-level workloads must enable foreign-key check locking for `SERIALIZABLE` transactions to avoid race conditions. [#151663](https://github.com/cockroachdb/cockroach/issues/151663#issuecomment-3222083180) -- Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions when the [`autocommit_before_ddl` session setting]({% link {{page.version.version}}/set-vars.md %}#autocommit-before-ddl) is set to `off`, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. [#114778](https://github.com/cockroachdb/cockroach/issues/114778) -- Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. [#112488](https://github.com/cockroachdb/cockroach/issues/112488) +- Mixed-isolation-level workloads must enable foreign-key check locking for `SERIALIZABLE` transactions to avoid race conditions. +- Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions when the [`autocommit_before_ddl` session setting]({% link {{page.version.version}}/set-vars.md %}#autocommit-before-ddl) is set to `off`, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. +- Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. - Because locks acquired by [foreign key]({% link {{ page.version.version }}/foreign-key.md %}) checks, [`SELECT FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}), and [`SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) are fully replicated under `READ COMMITTED` isolation, some queries experience a delay for Raft replication. - [Foreign key]({% link {{ page.version.version }}/foreign-key.md %}) checks are not performed in parallel under `READ COMMITTED` isolation. - [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements are less optimized under `READ COMMITTED` isolation than under `SERIALIZABLE` isolation. Under `READ COMMITTED` isolation, `SELECT FOR UPDATE` and `SELECT FOR SHARE` usually perform an extra lookup join for every locked table when compared to the same queries under `SERIALIZABLE`. In addition, some optimization steps (such as de-correlation of correlated [subqueries]({% link {{ page.version.version }}/subqueries.md %})) are not currently performed on these queries. -- Regardless of isolation level, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements in CockroachDB do not prevent insertion of new rows matching the search condition (i.e., [phantom reads]({% link {{ page.version.version }}/read-committed.md %}#non-repeatable-reads-and-phantom-reads)). This matches PostgreSQL behavior at all isolation levels. [#120673](https://github.com/cockroachdb/cockroach/issues/120673) \ No newline at end of file +- Regardless of isolation level, [`SELECT FOR UPDATE` and `SELECT FOR SHARE`]({% link {{ page.version.version }}/select-for-update.md %}) statements in CockroachDB do not prevent insertion of new rows matching the search condition (i.e., [phantom reads]({% link {{ page.version.version }}/read-committed.md %}#non-repeatable-reads-and-phantom-reads)). This matches PostgreSQL behavior at all isolation levels. diff --git a/src/current/_includes/v26.2/known-limitations/restore-multiregion-match.md b/src/current/_includes/v26.2/known-limitations/restore-multiregion-match.md index ab2f1029ecd..6cf3a2ccefe 100644 --- a/src/current/_includes/v26.2/known-limitations/restore-multiregion-match.md +++ b/src/current/_includes/v26.2/known-limitations/restore-multiregion-match.md @@ -46,5 +46,3 @@ ~~~ sql ALTER DATABASE destination_database SET PRIMARY REGION "us-east1"; ~~~ - - [#71071](https://github.com/cockroachdb/cockroach/issues/71071) \ No newline at end of file diff --git a/src/current/_includes/v26.2/known-limitations/restore-tables-non-multi-reg.md b/src/current/_includes/v26.2/known-limitations/restore-tables-non-multi-reg.md index 5390f2d09ee..a6558d30c7d 100644 --- a/src/current/_includes/v26.2/known-limitations/restore-tables-non-multi-reg.md +++ b/src/current/_includes/v26.2/known-limitations/restore-tables-non-multi-reg.md @@ -1 +1 @@ -Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. [#71502](https://github.com/cockroachdb/cockroach/issues/71502) +Restoring [`GLOBAL`]({% link {{ page.version.version }}/table-localities.md %}#global-tables) and [`REGIONAL BY TABLE`]({% link {{ page.version.version }}/table-localities.md %}#regional-tables) tables into a **non**-multi-region database is not supported. diff --git a/src/current/_includes/v26.2/known-limitations/restore-udf.md b/src/current/_includes/v26.2/known-limitations/restore-udf.md index a4a4bc080fe..7d5670fbc9e 100644 --- a/src/current/_includes/v26.2/known-limitations/restore-udf.md +++ b/src/current/_includes/v26.2/known-limitations/restore-udf.md @@ -1 +1 @@ -`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. [#118195](https://github.com/cockroachdb/cockroach/issues/118195) \ No newline at end of file +`RESTORE` will not restore a table that references a [UDF]({% link {{ page.version.version }}/user-defined-functions.md %}), unless you skip restoring the function with the {% if page.name == "restore.md" %} [`skip_missing_udfs`](#skip-missing-udfs) {% else %} [`skip_missing_udfs`]({% link {{ page.version.version }}/restore.md %}#skip-missing-udfs) {% endif %} option. Alternatively, take a [database-level backup]({% link {{ page.version.version }}/backup.md %}#back-up-a-database) to include everything needed to restore the table. diff --git a/src/current/_includes/v26.2/known-limitations/restore-zones.md b/src/current/_includes/v26.2/known-limitations/restore-zones.md index 4dfad262e73..0b2a7830f0a 100644 --- a/src/current/_includes/v26.2/known-limitations/restore-zones.md +++ b/src/current/_includes/v26.2/known-limitations/restore-zones.md @@ -1 +1 @@ -When restoring from [non-cluster backups]({% link {{ page.version.version }}/backup.md %}#back-up-a-database), `RESTORE` does not restore [zone configurations]({% link {{ page.version.version }}/configure-replication-zones.md %}) for restored objects. [#167824](https://github.com/cockroachdb/cockroach/issues/167824) \ No newline at end of file +When restoring from [non-cluster backups]({% link {{ page.version.version }}/backup.md %}#back-up-a-database), `RESTORE` does not restore [zone configurations]({% link {{ page.version.version }}/configure-replication-zones.md %}) for restored objects. diff --git a/src/current/_includes/v26.2/known-limitations/rls-update-set-where-returning.md b/src/current/_includes/v26.2/known-limitations/rls-update-set-where-returning.md index 450de11683e..5154352ed33 100644 --- a/src/current/_includes/v26.2/known-limitations/rls-update-set-where-returning.md +++ b/src/current/_includes/v26.2/known-limitations/rls-update-set-where-returning.md @@ -1 +1 @@ -`UPDATE` statements whose `SET`, `WHERE`, or `RETURNING` clauses do not read existing column values can be mistakenly filtered by row-level security `SELECT` policies, causing the statement to affect no rows. [#145894](https://github.com/cockroachdb/cockroach/issues/145894) \ No newline at end of file +`UPDATE` statements whose `SET`, `WHERE`, or `RETURNING` clauses do not read existing column values can be mistakenly filtered by row-level security `SELECT` policies, causing the statement to affect no rows. diff --git a/src/current/_includes/v26.2/known-limitations/rls-values-on-conflict-do-nothing.md b/src/current/_includes/v26.2/known-limitations/rls-values-on-conflict-do-nothing.md index c85dea7987a..0f236672cff 100644 --- a/src/current/_includes/v26.2/known-limitations/rls-values-on-conflict-do-nothing.md +++ b/src/current/_includes/v26.2/known-limitations/rls-values-on-conflict-do-nothing.md @@ -1 +1 @@ -`ON CONFLICT ... DO NOTHING`: CockroachDB does not run the constraint and row-level policy checks on the `VALUES` clause if the candidate row has a conflict. [#35370](https://github.com/cockroachdb/cockroach/issues/35370). +`ON CONFLICT ... DO NOTHING`: CockroachDB does not run the constraint and row-level policy checks on the `VALUES` clause if the candidate row has a conflict.. diff --git a/src/current/_includes/v26.2/known-limitations/routine-limitations.md b/src/current/_includes/v26.2/known-limitations/routine-limitations.md index 773322e2848..9ca26eabdc5 100644 --- a/src/current/_includes/v26.2/known-limitations/routine-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/routine-limitations.md @@ -1,10 +1,10 @@ -- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. [#122264](https://github.com/cockroachdb/cockroach/issues/122264) -- Routines cannot be created if they reference temporary tables. [#121375](https://github.com/cockroachdb/cockroach/issues/121375) -- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. [#121251](https://github.com/cockroachdb/cockroach/issues/121251) -- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. [#121247](https://github.com/cockroachdb/cockroach/issues/121247) -- Routines cannot be created with an `OUT` parameter of type `RECORD`. [#123448](https://github.com/cockroachdb/cockroach/issues/123448) -- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or stored procedures. [#110080](https://github.com/cockroachdb/cockroach/issues/110080) -- Polymorphic types cannot be cast to other types (e.g., `TEXT`) within routine parameters. [#123536](https://github.com/cockroachdb/cockroach/issues/123536) -- Routine parameters and return types cannot be declared using the `ANYENUM` polymorphic type, which is able to match any [`ENUM`]({% link {{ page.version.version }}/enum.md %}) type. [#123048](https://github.com/cockroachdb/cockroach/issues/123048) -- [Statement diagnostics]({% link {{ page.version.version }}/explain-analyze.md %}#debug-option) cannot be collected for statements executed inside UDFs or stored procedures. You can request statement diagnostics for the top-level invocation of the function or procedure, and the resulting trace includes spans for each statement executed. However, there is no way to target statements executed inside the function or procedure with a statement diagnostics request. [#159526](https://github.com/cockroachdb/cockroach/issues/159526) -- Statements within routines do not currently respect hint injections. The workaround is to modify the inline hints directly in the body by replacing the routine. [#162627](https://github.com/cockroachdb/cockroach/issues/162627) \ No newline at end of file +- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. +- Routines cannot be created if they reference temporary tables. +- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. +- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. +- Routines cannot be created with an `OUT` parameter of type `RECORD`. +- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or stored procedures. +- Polymorphic types cannot be cast to other types (e.g., `TEXT`) within routine parameters. +- Routine parameters and return types cannot be declared using the `ANYENUM` polymorphic type, which is able to match any [`ENUM`]({% link {{ page.version.version }}/enum.md %}) type. +- [Statement diagnostics]({% link {{ page.version.version }}/explain-analyze.md %}#debug-option) cannot be collected for statements executed inside UDFs or stored procedures. You can request statement diagnostics for the top-level invocation of the function or procedure, and the resulting trace includes spans for each statement executed. However, there is no way to target statements executed inside the function or procedure with a statement diagnostics request. +- Statements within routines do not currently respect hint injections. The workaround is to modify the inline hints directly in the body by replacing the routine. diff --git a/src/current/_includes/v26.2/known-limitations/row-level-ttl-limitations.md b/src/current/_includes/v26.2/known-limitations/row-level-ttl-limitations.md index c386ba576d7..352e5034bbd 100644 --- a/src/current/_includes/v26.2/known-limitations/row-level-ttl-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/row-level-ttl-limitations.md @@ -1,5 +1,5 @@ - Any queries you run against tables with Row-Level TTL enabled (or against tables that have [foreign keys]({% link {{page.version.version}}/foreign-key.md %}) that reference TTL-enabled tables) do not filter out expired rows from the result set (this includes [`UPDATE`s]({% link {{ page.version.version }}/update.md %}) and [`DELETE`s]({% link {{ page.version.version }}/delete.md %})). This feature may be added in a future release. For now, follow the instructions in [Filter out expired rows from a selection query]({% link {{ page.version.version }}/row-level-ttl.md %}#filter-out-expired-rows-from-a-selection-query). -- Tables with Row-Level TTL can be referenced by [foreign keys]({% link {{page.version.version}}/foreign-key.md %}). TTL deletes are issued as regular [`DELETE`]({% link {{ page.version.version }}/delete.md %}) statements, so inbound foreign keys apply. If an inbound foreign key uses `ON DELETE RESTRICT` and referencing rows exist, the TTL job fails with a foreign key violation. [#101372](https://github.com/cockroachdb/cockroach/issues/101372) +- Tables with Row-Level TTL can be referenced by [foreign keys]({% link {{page.version.version}}/foreign-key.md %}). TTL deletes are issued as regular [`DELETE`]({% link {{ page.version.version }}/delete.md %}) statements, so inbound foreign keys apply. If an inbound foreign key uses `ON DELETE RESTRICT` and referencing rows exist, the TTL job fails with a foreign key violation. - Enabling Row-Level TTL on a table with multiple [secondary indexes]({% link {{ page.version.version }}/indexes.md %}) can have negative performance impacts on a cluster, including increased [latency]({% link {{ page.version.version }}/common-issues-to-monitor.md %}#service-latency) and [contention]({% link {{ page.version.version }}/performance-best-practices-overview.md %}#transaction-contention). This is particularly true for large tables with terabytes of data and billions of rows that are split up into multiple ranges across separate nodes. - Increased latency may occur because secondary indexes aren't necessarily stored on the same underlying [ranges]({% link {{ page.version.version }}/architecture/overview.md %}#architecture-range) as a table's [primary indexes]({% link {{ page.version.version }}/indexes.md %}). Further, the secondary indexes' ranges may have [leaseholders]({% link {{ page.version.version }}/architecture/overview.md %}#architecture-leaseholder) located on different nodes than the primary index. - Increased contention may occur because [intents]({% link {{ page.version.version }}/architecture/transaction-layer.md %}#write-intents) must be written as part of performing the deletions. diff --git a/src/current/_includes/v26.2/known-limitations/savepoint-limitations.md b/src/current/_includes/v26.2/known-limitations/savepoint-limitations.md index 58451f4ae28..819fbc118c4 100644 --- a/src/current/_includes/v26.2/known-limitations/savepoint-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/savepoint-limitations.md @@ -1 +1 @@ -- Transactions with [priority `HIGH`]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities) that contain DDL and `ROLLBACK TO SAVEPOINT` are not supported, as they could result in a deadlock. [#46414](https://github.com/cockroachdb/cockroach/issues/46414) +- Transactions with [priority `HIGH`]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities) that contain DDL and `ROLLBACK TO SAVEPOINT` are not supported, as they could result in a deadlock. diff --git a/src/current/_includes/v26.2/known-limitations/select-for-update-limitations.md b/src/current/_includes/v26.2/known-limitations/select-for-update-limitations.md index 9c4ab3fd4a1..0066574884f 100644 --- a/src/current/_includes/v26.2/known-limitations/select-for-update-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/select-for-update-limitations.md @@ -1,8 +1,8 @@ -- `SKIP LOCKED` cannot be used for tables with multiple [column families]({% link {{ page.version.version }}/column-families.md %}). [#160961](https://github.com/cockroachdb/cockroach/issues/160961) +- `SKIP LOCKED` cannot be used for tables with multiple [column families]({% link {{ page.version.version }}/column-families.md %}). - By default under `SERIALIZABLE` isolation, locks acquired using `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` are implemented as fast, in-memory [unreplicated locks](architecture/transaction-layer.html#unreplicated-locks). If a [lease transfer]({% link {{ page.version.version }}/architecture/replication-layer.md %}#leases) or [range split/merge]({% link {{ page.version.version }}/architecture/distribution-layer.md %}#range-merges) occurs on a range held by an unreplicated lock, the lock is dropped. The following behaviors can occur: - The desired ordering of concurrent accesses to one or more rows of a table expressed by your use of `SELECT ... FOR UPDATE` may not be preserved (that is, a transaction _B_ against some table _T_ that was supposed to wait behind another transaction _A_ operating on _T_ may not wait for transaction _A_). - The transaction that acquired the (now dropped) unreplicated lock may fail to commit, leading to [transaction retry errors with code `40001`]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}) and the [`restart transaction` error message]({% link {{ page.version.version }}/common-errors.md %}#restart-transaction). When running under `SERIALIZABLE` isolation, `SELECT ... FOR UPDATE` and `SELECT ... FOR SHARE` locks should be thought of as best-effort, and should not be relied upon for correctness. Note that [serialization]({% link {{ page.version.version }}/demo-serializable.md %}) is preserved despite this limitation. This limitation is fixed when the `enable_durable_locking_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}#enable-durable-locking-for-serializable) is set to `true`. This limitation does **not** apply to [`READ COMMITTED`]({% link {{ page.version.version }}/read-committed.md %}) transactions. - The new implementation of `SELECT FOR UPDATE` is not yet the default setting under `SERIALIZABLE` isolation. It can be used under `SERIALIZABLE` isolation by setting the `optimizer_use_lock_op_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}) to `true`. [#114737](https://github.com/cockroachdb/cockroachdb/issues/114737) -- `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. [#116836](https://github.com/cockroachdb/cockroach/issues/116836) \ No newline at end of file +- `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. diff --git a/src/current/_includes/v26.2/known-limitations/set-transaction-no-rollback.md b/src/current/_includes/v26.2/known-limitations/set-transaction-no-rollback.md index 4f4e5af2aab..6d9e97a7da4 100644 --- a/src/current/_includes/v26.2/known-limitations/set-transaction-no-rollback.md +++ b/src/current/_includes/v26.2/known-limitations/set-transaction-no-rollback.md @@ -30,4 +30,4 @@ UTC ~~~ - [#69396](https://github.com/cockroachdb/cockroach/issues/69396), [#148766](https://github.com/cockroachdb/cockroach/issues/148766) \ No newline at end of file + , diff --git a/src/current/_includes/v26.2/known-limitations/show-backup-symlink.md b/src/current/_includes/v26.2/known-limitations/show-backup-symlink.md index 38ba86fb28f..f47d7f3887b 100644 --- a/src/current/_includes/v26.2/known-limitations/show-backup-symlink.md +++ b/src/current/_includes/v26.2/known-limitations/show-backup-symlink.md @@ -1 +1 @@ -[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. [#70260](https://github.com/cockroachdb/cockroach/issues/70260) \ No newline at end of file +[`SHOW BACKUP`]({% link {{ page.version.version }}/show-backup.md %}) does not support listing backups if the [`nodelocal`]({% link {{ page.version.version }}/cockroach-nodelocal-upload.md %}) storage location is a symlink. diff --git a/src/current/_includes/v26.2/known-limitations/spatial-limitations.md b/src/current/_includes/v26.2/known-limitations/spatial-limitations.md index 5bc25717912..9e1577a16f7 100644 --- a/src/current/_includes/v26.2/known-limitations/spatial-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/spatial-limitations.md @@ -1,10 +1,10 @@ -- Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. [#49203](https://github.com/cockroachdb/cockroach/issues/49203) -- The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. [#49402](https://github.com/cockroachdb/cockroach/issues/49402) -- The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. [#49448](https://github.com/cockroachdb/cockroach/issues/49448) -- CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. [#56124](https://github.com/cockroachdb/cockroach/issues/56124) -- CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). [#55903](https://github.com/cockroachdb/cockroach/issues/55903) -- CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). [#55227](https://github.com/cockroachdb/cockroach/issues/55227) -- CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). [#56492](https://github.com/cockroachdb/cockroach/issues/56492) +- Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. +- The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. +- The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. +- CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. +- CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). +- CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). +- CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). - {% include {{ page.version.version }}/known-limitations/srid-4326-limitations.md %} - {% include {{ page.version.version }}/known-limitations/geospatial-heterogeneous-architectures.md %} -- [Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled on ARM Macs due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. [#93161](https://github.com/cockroachdb/cockroach/issues/93161) \ No newline at end of file +- [Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled on ARM Macs due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. diff --git a/src/current/_includes/v26.2/known-limitations/sql-cursors.md b/src/current/_includes/v26.2/known-limitations/sql-cursors.md index a3e42b9a3ec..59c773fcadc 100644 --- a/src/current/_includes/v26.2/known-limitations/sql-cursors.md +++ b/src/current/_includes/v26.2/known-limitations/sql-cursors.md @@ -1,8 +1,8 @@ CockroachDB implements SQL [cursor]({% link {{ page.version.version }}/cursors.md %}) support with the following limitations: -- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. [#77099](https://github.com/cockroachdb/cockroach/issues/77099) -- Scrollable cursor (also known as reverse `FETCH`) is not supported. [#77102](https://github.com/cockroachdb/cockroach/issues/77102) -- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. [#77103](https://github.com/cockroachdb/cockroach/issues/77103) -- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. [#77104](https://github.com/cockroachdb/cockroach/issues/77104) +- `DECLARE` only supports forward cursors. Reverse cursors created with `DECLARE SCROLL` are not supported. +- `FETCH` supports forward, relative, and absolute variants, but only for forward cursors. +- `BINARY CURSOR`, which returns data in the Postgres binary format, is not supported. +- Scrollable cursor (also known as reverse `FETCH`) is not supported. +- [`SELECT ... FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) with a cursor is not supported. +- Respect for [`SAVEPOINT`s]({% link {{ page.version.version }}/savepoint.md %}) is not supported. Cursor definitions do not disappear properly if rolled back to a `SAVEPOINT` from before they were created. diff --git a/src/current/_includes/v26.2/known-limitations/sql-guardrails-limitations.md b/src/current/_includes/v26.2/known-limitations/sql-guardrails-limitations.md index 6d8d60ac614..0f3ee64a6f5 100644 --- a/src/current/_includes/v26.2/known-limitations/sql-guardrails-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/sql-guardrails-limitations.md @@ -1,2 +1,2 @@ -- The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. [#70473](https://github.com/cockroachdb/cockroach/issues/70473) -- The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. [#69540](https://github.com/cockroachdb/cockroach/issues/69540) +- The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. +- The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. diff --git a/src/current/_includes/v26.2/known-limitations/srid-4326-limitations.md b/src/current/_includes/v26.2/known-limitations/srid-4326-limitations.md index b556a9fbecd..7cfda23749b 100644 --- a/src/current/_includes/v26.2/known-limitations/srid-4326-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/srid-4326-limitations.md @@ -1 +1 @@ -Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. [#55903](https://github.com/cockroachdb/cockroach/issues/55903) \ No newline at end of file +Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. diff --git a/src/current/_includes/v26.2/known-limitations/statement-hints-limitations.md b/src/current/_includes/v26.2/known-limitations/statement-hints-limitations.md index 45788512c41..fd6de72d7d5 100644 --- a/src/current/_includes/v26.2/known-limitations/statement-hints-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/statement-hints-limitations.md @@ -1,2 +1,2 @@ -- [Statement hints]({% link {{ page.version.version }}/cost-based-optimizer.md %}#statement-hints) do not apply to statements within views. The workaround for `REWRITE INLINE HINTS` is to modify the inline hints directly in the body by replacing the view. There is no workaround for `SET VARIABLE` hints. [#166782](https://github.com/cockroachdb/cockroach/issues/166782) -- [Statement hints]({% link {{ page.version.version }}/cost-based-optimizer.md %}#statement-hints) do not apply to statements within routines. The workaround for `REWRITE INLINE HINTS` is to modify the inline hints directly in the body by replacing the routine. There is no workaround for `SET VARIABLE` hints. [#162627](https://github.com/cockroachdb/cockroach/issues/162627) \ No newline at end of file +- [Statement hints]({% link {{ page.version.version }}/cost-based-optimizer.md %}#statement-hints) do not apply to statements within views. The workaround for `REWRITE INLINE HINTS` is to modify the inline hints directly in the body by replacing the view. There is no workaround for `SET VARIABLE` hints. +- [Statement hints]({% link {{ page.version.version }}/cost-based-optimizer.md %}#statement-hints) do not apply to statements within routines. The workaround for `REWRITE INLINE HINTS` is to modify the inline hints directly in the body by replacing the routine. There is no workaround for `SET VARIABLE` hints. diff --git a/src/current/_includes/v26.2/known-limitations/stats-refresh-upgrade.md b/src/current/_includes/v26.2/known-limitations/stats-refresh-upgrade.md index 3d5a8d26325..c8239a02bcd 100644 --- a/src/current/_includes/v26.2/known-limitations/stats-refresh-upgrade.md +++ b/src/current/_includes/v26.2/known-limitations/stats-refresh-upgrade.md @@ -1 +1 @@ -- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). [#54816](https://github.com/cockroachdb/cockroach/issues/54816) +- The [automatic statistics refresher]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-statistics-refresh-rate) automatically checks whether it needs to refresh statistics for every table in the database upon startup of each node in the cluster. If statistics for a table have not been refreshed in a while, this will trigger collection of statistics for that table. If statistics have been refreshed recently, it will not force a refresh. As a result, the automatic statistics refresher does not necessarily perform a refresh of statistics after an [upgrade]({% link {{ page.version.version }}/upgrade-cockroach-version.md %}). This could cause a problem, for example, if the upgrade moves from a version without [histograms]({% link {{ page.version.version }}/cost-based-optimizer.md %}#control-histogram-collection) to a version with histograms. To refresh statistics manually, use [`CREATE STATISTICS`](create-statistics.html). diff --git a/src/current/_includes/v26.2/known-limitations/stored-proc-limitations.md b/src/current/_includes/v26.2/known-limitations/stored-proc-limitations.md index b2aae6069c2..b51a2ad974a 100644 --- a/src/current/_includes/v26.2/known-limitations/stored-proc-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/stored-proc-limitations.md @@ -1,2 +1,2 @@ -- Pausable portals are not supported with `CALL` statements for stored procedures. [#151529](https://github.com/cockroachdb/cockroach/issues/151529) -- `COMMIT` and `ROLLBACK` statements are not supported within nested procedures. [#122266](https://github.com/cockroachdb/cockroach/issues/122266) \ No newline at end of file +- Pausable portals are not supported with `CALL` statements for stored procedures. +- `COMMIT` and `ROLLBACK` statements are not supported within nested procedures. diff --git a/src/current/_includes/v26.2/known-limitations/subquery-mutations-limitations.md b/src/current/_includes/v26.2/known-limitations/subquery-mutations-limitations.md index 771eba80bc6..695ddf31d4e 100644 --- a/src/current/_includes/v26.2/known-limitations/subquery-mutations-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/subquery-mutations-limitations.md @@ -2,4 +2,4 @@ - Set the `sql.multiple_modifications_of_table.enabled` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) to `true`. - Use the `enable_multiple_modifications_of_table` [session variable]({% link {{ page.version.version }}/set-vars.md %}). - If multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. [#70731](https://github.com/cockroachdb/cockroach/issues/70731) + If multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. diff --git a/src/current/_includes/v26.2/known-limitations/transaction-row-count-limitations.md b/src/current/_includes/v26.2/known-limitations/transaction-row-count-limitations.md index ded62d6d9be..7806f3ee682 100644 --- a/src/current/_includes/v26.2/known-limitations/transaction-row-count-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/transaction-row-count-limitations.md @@ -1 +1 @@ -- The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. [#70473](https://github.com/cockroachdb/cockroach/issues/70473) +- The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. diff --git a/src/current/_includes/v26.2/known-limitations/trigger-limitations.md b/src/current/_includes/v26.2/known-limitations/trigger-limitations.md index 9e323abfe9c..d4d4423f526 100644 --- a/src/current/_includes/v26.2/known-limitations/trigger-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/trigger-limitations.md @@ -1,6 +1,6 @@ -- Statement-level triggers are not supported. [#126362](https://github.com/cockroachdb/cockroach/issues/126362) -- `INSTEAD OF` triggers are not supported. [#126363](https://github.com/cockroachdb/cockroach/issues/126363) -- Hidden columns are not visible to triggers. [#133331](https://github.com/cockroachdb/cockroach/issues/133331) -- The `REFERENCING` clause for `CREATE TRIGGER` is not supported. [#135655](https://github.com/cockroachdb/cockroach/issues/135655) -- `UPDATE` triggers with a column list (using `UPDATE OF column_name` syntax) are not supported. [#135656](https://github.com/cockroachdb/cockroach/issues/135656) -- Statement-level triggers for `TRUNCATE` events are not supported. [#135657](https://github.com/cockroachdb/cockroach/issues/135657) +- Statement-level triggers are not supported. +- `INSTEAD OF` triggers are not supported. +- Hidden columns are not visible to triggers. +- The `REFERENCING` clause for `CREATE TRIGGER` is not supported. +- `UPDATE` triggers with a column list (using `UPDATE OF column_name` syntax) are not supported. +- Statement-level triggers for `TRUNCATE` events are not supported. diff --git a/src/current/_includes/v26.2/known-limitations/trigram-unsupported-syntax.md b/src/current/_includes/v26.2/known-limitations/trigram-unsupported-syntax.md index 494730c7ae8..bb726ac4af9 100644 --- a/src/current/_includes/v26.2/known-limitations/trigram-unsupported-syntax.md +++ b/src/current/_includes/v26.2/known-limitations/trigram-unsupported-syntax.md @@ -5,5 +5,3 @@ - `<->`, `<<->`, `<->>`, `<<<->`, and `<->>>` comparisons. - Acceleration on [regex string matching]({% link {{ page.version.version }}/scalar-expressions.md %}#string-matching-using-posix-regular-expressions). - `%` comparisons, `show_trgm`, and trigram index creation on [collated strings]({% link {{ page.version.version }}/collate.md %}). - -[#41285](https://github.com/cockroachdb/cockroach/issues/41285) \ No newline at end of file diff --git a/src/current/_includes/v26.2/known-limitations/udf-limitations.md b/src/current/_includes/v26.2/known-limitations/udf-limitations.md index 0f44ac320f5..89c49b7e86f 100644 --- a/src/current/_includes/v26.2/known-limitations/udf-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/udf-limitations.md @@ -1,9 +1,9 @@ -- User-defined functions are not supported in partial index predicates. [#155488](https://github.com/cockroachdb/cockroach/issues/155488) -- Views cannot reference a UDF that contains mutation statements (`INSERT`, `UPDATE`, `UPSERT`, `DELETE`). [#151686](https://github.com/cockroachdb/cockroach/issues/151686) -- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. [#122945](https://github.com/cockroachdb/cockroach/issues/122945) +- User-defined functions are not supported in partial index predicates. +- Views cannot reference a UDF that contains mutation statements (`INSERT`, `UPDATE`, `UPSERT`, `DELETE`). +- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. - User-defined functions are not currently supported in: - - Expressions (column, index, constraint) in tables. [#87699](https://github.com/cockroachdb/cockroach/issues/87699) - - Partial index predicates. [#155488](https://github.com/cockroachdb/cockroach/issues/155488) -- User-defined functions cannot call themselves recursively. [#93049](https://github.com/cockroachdb/cockroach/issues/93049) -- The `setval` function cannot be resolved when used inside UDF bodies. [#110860](https://github.com/cockroachdb/cockroach/issues/110860) -- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) in UDFs is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) \ No newline at end of file + - Expressions (column, index, constraint) in tables. + - Partial index predicates. +- User-defined functions cannot call themselves recursively. +- The `setval` function cannot be resolved when used inside UDF bodies. +- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) in UDFs is not supported. diff --git a/src/current/_includes/v26.2/known-limitations/vector-limitations.md b/src/current/_includes/v26.2/known-limitations/vector-limitations.md index 97ed7c47599..21646fc5b2c 100644 --- a/src/current/_includes/v26.2/known-limitations/vector-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/vector-limitations.md @@ -1,5 +1,5 @@ - {% include {{ page.version.version }}/sql/vector-batch-inserts.md %} -- `IMPORT INTO` is not supported on tables with vector indexes. You can import the vectors first and create the index after import is complete. [#145227](https://github.com/cockroachdb/cockroach/issues/145227) -- The distance functions `vector_l1_ops`, `bit_hamming_ops`, and `bit_jaccard_ops` are not implemented. [#147839](https://github.com/cockroachdb/cockroach/issues/147839) -- Index acceleration with filters is only supported if the filters match prefix columns. [#146145](https://github.com/cockroachdb/cockroach/issues/146145) -- Index recommendations are not provided for vector indexes. [#146146](https://github.com/cockroachdb/cockroach/issues/146146) \ No newline at end of file +- `IMPORT INTO` is not supported on tables with vector indexes. You can import the vectors first and create the index after import is complete. +- The distance functions `vector_l1_ops`, `bit_hamming_ops`, and `bit_jaccard_ops` are not implemented. +- Index acceleration with filters is only supported if the filters match prefix columns. +- Index recommendations are not provided for vector indexes. diff --git a/src/current/_includes/v26.2/known-limitations/vectorized-engine-limitations.md b/src/current/_includes/v26.2/known-limitations/vectorized-engine-limitations.md index 111226546cf..84ae314f741 100644 --- a/src/current/_includes/v26.2/known-limitations/vectorized-engine-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/vectorized-engine-limitations.md @@ -1,2 +1,2 @@ -- The vectorized engine does not support queries containing a join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). [#38018](https://github.com/cockroachdb/cockroach/issues/38018) +- The vectorized engine does not support queries containing a join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). - The vectorized engine does not support [working with spatial data]({% link {{ page.version.version }}/query-spatial-data.md %}). Queries with [geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) or [spatial data]({% link {{ page.version.version }}/query-spatial-data.md %}) will revert to the row-oriented execution engine. diff --git a/src/current/_includes/v26.2/known-limitations/view-limitations.md b/src/current/_includes/v26.2/known-limitations/view-limitations.md index 946f885d25a..14e01dbd2eb 100644 --- a/src/current/_includes/v26.2/known-limitations/view-limitations.md +++ b/src/current/_includes/v26.2/known-limitations/view-limitations.md @@ -1,2 +1,2 @@ -- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) (including ENUMs) in views is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) -- Statements within views do not currently respect hint injections. The workaround is to modify the inline hints directly in the body by replacing the view. [#166782](https://github.com/cockroachdb/cockroach/issues/166782) \ No newline at end of file +- Casting subqueries to [user-defined types]({% link {{ page.version.version }}/create-type.md %}) (including ENUMs) in views is not supported. +- Statements within views do not currently respect hint injections. The workaround is to modify the inline hints directly in the body by replacing the view. diff --git a/src/current/_includes/v26.2/misc/tooling.md b/src/current/_includes/v26.2/misc/tooling.md index 254a6425840..b7ad241a7b9 100644 --- a/src/current/_includes/v26.2/misc/tooling.md +++ b/src/current/_includes/v26.2/misc/tooling.md @@ -23,7 +23,7 @@ Customers should contact their account team before moving production workloads t Unless explicitly stated, support for a [driver](#drivers) or [data access framework](#data-access-frameworks-e-g-orms) does not include [automatic, client-side transaction retry handling]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}#client-side-retry-handling). For client-side transaction retry handling samples, see [Develop with CockroachDB]({% link {{ page.version.version }}/developer-guide-overview.md %}). {{site.data.alerts.end}} -If you encounter problems using CockroachDB with any of the tools listed on this page, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward better support. +If you encounter problems using CockroachDB with any of the tools listed on this page, please with details to help us make progress toward better support. For a list of tools supported by the CockroachDB community, see [Third-Party Tools Supported by the Community]({% link {{ page.version.version }}/community-tooling.md %}). diff --git a/src/current/_includes/v26.2/prod-deployment/decommission-pre-flight-checks.md b/src/current/_includes/v26.2/prod-deployment/decommission-pre-flight-checks.md index b267379384b..f7a613dff78 100644 --- a/src/current/_includes/v26.2/prod-deployment/decommission-pre-flight-checks.md +++ b/src/current/_includes/v26.2/prod-deployment/decommission-pre-flight-checks.md @@ -14,5 +14,5 @@ Failed running "node decommission" These checks can be skipped by [passing the flag `--checks=skip` to `cockroach node decommission`]({% link {{ page.version.version }}/cockroach-node.md %}#decommission-checks). {{site.data.alerts.callout_info}} -The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see [cockroachdb/cockroach#71757](https://github.com/cockroachdb/cockroach/issues/71757) +The amount of remaining disk space on other nodes in the cluster is not yet considered as part of the decommissioning pre-flight checks. For more information, see {{site.data.alerts.end}} diff --git a/src/current/_includes/v26.2/sql/savepoints-and-high-priority-transactions.md b/src/current/_includes/v26.2/sql/savepoints-and-high-priority-transactions.md index c6de489e641..ce124bc3209 100644 --- a/src/current/_includes/v26.2/sql/savepoints-and-high-priority-transactions.md +++ b/src/current/_includes/v26.2/sql/savepoints-and-high-priority-transactions.md @@ -1 +1 @@ -[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. For more information, see GitHub issue [#46414](https://www.github.com/cockroachdb/cockroach/issues/46414). +[`ROLLBACK TO SAVEPOINT`]({% link {{ page.version.version }}/rollback-transaction.md %}#rollback-a-nested-transaction) (for either regular savepoints or "restart savepoints" defined with `cockroach_restart`) causes a "feature not supported" error after a DDL statement in a [`HIGH PRIORITY` transaction]({% link {{ page.version.version }}/transactions.md %}#transaction-priorities), in order to avoid a transaction deadlock. diff --git a/src/current/_includes/v26.2/sql/unsupported-postgres-features.md b/src/current/_includes/v26.2/sql/unsupported-postgres-features.md index a89650e38e9..a9a344b8096 100644 --- a/src/current/_includes/v26.2/sql/unsupported-postgres-features.md +++ b/src/current/_includes/v26.2/sql/unsupported-postgres-features.md @@ -1,10 +1,10 @@ ### `CREATE DOMAIN` -CockroachDB does not support `CREATE DOMAIN`. Tracking issue: [cockroachdb/cockroach#108659](https://github.com/cockroachdb/cockroach/issues/108659). +CockroachDB does not support `CREATE DOMAIN`. Tracking issue: . ### PostgreSQL range types -CockroachDB does not support PostgreSQL range types. Tracking issue: [cockroachdb/cockroach#128638](https://github.com/cockroachdb/cockroach/issues/128638). +CockroachDB does not support PostgreSQL range types. Tracking issue: . ### Other unsupported features diff --git a/src/current/advisories/a101963.md b/src/current/advisories/a101963.md index f404a8a28d1..64b99b16280 100644 --- a/src/current/advisories/a101963.md +++ b/src/current/advisories/a101963.md @@ -19,13 +19,13 @@ In the following circumstances, backups that include [revision history](https:// ## Statement -This is resolved in CockroachDB by [#102179](https://github.com/cockroachdb/cockroach/pull/102179), which ensures that `RESTORE` operations can correctly restore from backups that include this incorrect metadata. +This is resolved in CockroachDB by, which ensures that `RESTORE` operations can correctly restore from backups that include this incorrect metadata. The fix has been applied to maintenance releases of CockroachDB: [v22.2.9](https://www.cockroachlabs.com/docs/releases/v22.2#v22-2-9). This fix will be applied to maintenance releases of CockroachDB: v22.1.20. Until that version is available, refer to [Mitigation](#mitigation) for a suggested workaround. -This public issue is tracked by [#101963](https://github.com/cockroachdb/cockroach/issues/101963). +This public issue is tracked by. ## Mitigation diff --git a/src/current/advisories/a102375.md b/src/current/advisories/a102375.md index ec031327deb..7548652eac3 100644 --- a/src/current/advisories/a102375.md +++ b/src/current/advisories/a102375.md @@ -16,13 +16,13 @@ In CockroachDB versions v22.1.19 and v22.2.8, some customers may experience spur ## Statement -This is resolved in CockroachDB by PR [#102405](https://github.com/cockroachdb/cockroach/issues/102405) which ensures that privilege checks happen after staleness checks when attempting to use the query cache. +This is resolved in CockroachDB by PR which ensures that privilege checks happen after staleness checks when attempting to use the query cache. The fix has been applied to the maintenance release of CockroachDB [v22.2.9](https://www.cockroachlabs.com/docs/releases/v22.2#v22-2-9). This fix will be applied to the maintenance release of CockroachDB v22.1.20. -This public issue is tracked by [#102375](https://github.com/cockroachdb/cockroach/issues/102375). +This public issue is tracked by. ## Mitigation diff --git a/src/current/advisories/a103220.md b/src/current/advisories/a103220.md index 877b5b6695f..0f69e2760ab 100644 --- a/src/current/advisories/a103220.md +++ b/src/current/advisories/a103220.md @@ -15,11 +15,11 @@ In CockroachDB v23.1.0 and its testing versions, inserting rows into a multi-[co ## Statement -This is resolved in CockroachDB by PR [103323](https://github.com/cockroachdb/cockroach/pull/103323). +This is resolved in CockroachDB by PR . This fix has been applied to maintenance releases of CockroachDB [v23.1.1](https://www.cockroachlabs.com/docs/releases/v23.1#v23-1-1) and later. -This public issue is tracked by [#103220](https://github.com/cockroachdb/cockroach/issues/103220). +This public issue is tracked by. ## Mitigation @@ -33,4 +33,4 @@ In CockroachDB v23.1.0 and its testing versions, executing `COPY` into a target The v23.1.0 binary was withdrawn hours after its release, and prior to the formal announcement of this major release, so impacts to production workloads are not likely. -Please reach out to the [support team](https://support.cockroachlabs.com) if more information or assistance is needed. \ No newline at end of file +Please reach out to the [support team](https://support.cockroachlabs.com) if more information or assistance is needed. diff --git a/src/current/advisories/a104309.md b/src/current/advisories/a104309.md index 7fd8b7b5feb..d68ce3aebd9 100644 --- a/src/current/advisories/a104309.md +++ b/src/current/advisories/a104309.md @@ -47,7 +47,7 @@ Versions prior to 22.2 are no longer eligible for [maintenance support](https:// ## Statement -This is resolved in CockroachDB by [PR #117612](https://github.com/cockroachdb/cockroach/pull/117612), which uses a barrier command to ensure that all historical and ongoing range writes have been applied to the local replica and emitted before the resolved timestamp is advanced and a checkpoint is emitted. +This is resolved in CockroachDB by , which uses a barrier command to ensure that all historical and ongoing range writes have been applied to the local replica and emitted before the resolved timestamp is advanced and a checkpoint is emitted. The fix has been applied to maintenance releases of CockroachDB: @@ -63,7 +63,7 @@ However, the initial fix introduced a bug that could cause a rangefeed’s resol Users are encouraged to upgrade to a version that contains both fixes. -This public issue is tracked by [Issue #104309](https://github.com/cockroachdb/cockroach/issues/104309). +This public issue is tracked by . ## Mitigation @@ -90,7 +90,7 @@ If data is found, it can be re-emitted in two ways: {{site.data.alerts.callout_info}} -This fix introduces a [bug](https://github.com/cockroachdb/cockroach/issues/119536) that could cause a rangefeed’s resolved timestamp to stop advancing. The corresponding changefeed will appear to be stalled in `RUNNING` state in certain conditions: If a rangefeed is running on a follower on a recently-merged range, and the rangefeed encounters an aborted transaction, then the resolved timestamp may stall. Events such as row updates will still be emitted as normal, but new checkpoints will not be emitted. +This fix introduces a that could cause a rangefeed’s resolved timestamp to stop advancing. The corresponding changefeed will appear to be stalled in `RUNNING` state in certain conditions: If a rangefeed is running on a follower on a recently-merged range, and the rangefeed encounters an aborted transaction, then the resolved timestamp may stall. Events such as row updates will still be emitted as normal, but new checkpoints will not be emitted. That bug is fixed in the following versions: @@ -120,7 +120,7 @@ If your cluster experiences a stalled rangefeed or changefeed after upgrading, y As an alternative to avoid disruption to the changefeed, you can temporarily disable `kv.rangefeed.push_txns.barrier.enabled` to disable the fix to this advisory, **a104309**, until a fix to the stalled rangefeed bug is available. -This issue is tracked by [Issue #119536](https://github.com/cockroachdb/cockroach/issues/119536). +This issue is tracked by . {{site.data.alerts.end}} ## Impact diff --git a/src/current/advisories/a106617.md b/src/current/advisories/a106617.md index 43ce154346e..205d82199ce 100644 --- a/src/current/advisories/a106617.md +++ b/src/current/advisories/a106617.md @@ -20,11 +20,11 @@ The corruption is limited to a single store, allowing recovery through [decommis ## Statement -This is resolved in CockroachDB by [#107249](https://github.com/cockroachdb/cockroach/pull/107249), which fixes the ordering of steps during encryption-at-rest log rotation. +This is resolved in CockroachDB by, which fixes the ordering of steps during encryption-at-rest log rotation. The fix has been applied to maintenance releases of CockroachDB [v23.1.8](../releases/v23.1.html#v23-1-8), [v22.2.13](../releases/v22.2.html#v22-2-13), v22.1.22. -This public issue is tracked by [#106617](https://github.com/cockroachdb/cockroach/issues/106617). +This public issue is tracked by. ## Mitigation diff --git a/src/current/advisories/a110363.md b/src/current/advisories/a110363.md index 0d3e04692c2..063ebb35801 100644 --- a/src/current/advisories/a110363.md +++ b/src/current/advisories/a110363.md @@ -22,11 +22,11 @@ This issue affects clusters that meet all of the following conditions: ## Statement -This is resolved in CockroachDB by [#110364](https://github.com/cockroachdb/cockroach/pull/110364), which prevents deletion of the TTL field upon upgrade. +This is resolved in CockroachDB by, which prevents deletion of the TTL field upon upgrade. The fix will be available in CockroachDB v23.1.10. -This public issue is tracked by [#110363](https://github.com/cockroachdb/cockroach/issues/110363). +This public issue is tracked by. ## Mitigation diff --git a/src/current/advisories/a114393.md b/src/current/advisories/a114393.md index 139cb8a57d6..90437a03899 100644 --- a/src/current/advisories/a114393.md +++ b/src/current/advisories/a114393.md @@ -20,11 +20,11 @@ A critical bug has been identified in the [optimizer](../v23.1/cost-based-optimi ## Statement -This is resolved in CockroachDB by [#114394](https://github.com/cockroachdb/cockroach/pull/114394). +This is resolved in CockroachDB by. This fix has been applied to maintenance release of CockroachDB [v23.1.13](../releases/v23.1.html#v23-1-13), which fixes a bug that could cause a query plan to skip scanning rows from the local region when performing a lookup join with a `REGIONAL BY ROW` table as the input. -This public issue is tracked by [#114393](https://github.com/cockroachdb/cockroach/issues/114393). +This public issue is tracked by. ## Mitigation diff --git a/src/current/advisories/a122372.md b/src/current/advisories/a122372.md index 4bc217b89c4..56e56532573 100644 --- a/src/current/advisories/a122372.md +++ b/src/current/advisories/a122372.md @@ -14,15 +14,15 @@ Publication date: {{ page.advisory_date | date: "%B %e, %Y" }} In all versions of CockroachDB v23.1, v23.2.0 to v23.2.9, v24.1.0 to v24.1.3, and testing versions of v24.2 through v24.2.0-beta.3, [changefeeds]({% link v24.2/change-data-capture-overview.md %}) could emit events on the same row out of order in some cases, which violates [changefeed ordering guarantees]({% link v24.2/changefeed-messages.md %}#per-key-ordering). This issue was caused by a [bug in the sarama Kafka client library](https://github.com/IBM/sarama/issues/2619), a third-party library that CockroachDB uses to talk to Kafka clusters. The bug manifested when a workload had mutations to the same key in rapid succession, because it was possible for [sarama](https://github.com/IBM/sarama) to re-order the messages if it encountered a retryable Kafka error. -To resolve this issue, CockroachDB now uses a new version of the Kafka sink that uses [franz-go](https://github.com/twmb/franz-go), a different third-party Kafka client library that does not have this bug. The new Kafka sink can be enabled using the cluster setting [`changefeed.new_kafka_sink.enabled`]({% link v24.2/show-cluster-setting.md %}). The new Kafka sink was added in PR [#126213](https://github.com/cockroachdb/cockroach/pull/126213). +To resolve this issue, CockroachDB now uses a new version of the Kafka sink that uses [franz-go](https://github.com/twmb/franz-go), a different third-party Kafka client library that does not have this bug. The new Kafka sink can be enabled using the cluster setting [`changefeed.new_kafka_sink.enabled`]({% link v24.2/show-cluster-setting.md %}). The new Kafka sink was added in PR. ## Statement -This is resolved in CockroachDB by PR [#126213](https://github.com/cockroachdb/cockroach/pull/126213), which replaces the Kafka client library [sarama](https://github.com/IBM/sarama) with [franz-go](https://github.com/twmb/franz-go). +This is resolved in CockroachDB by PR, which replaces the Kafka client library [sarama](https://github.com/IBM/sarama) with [franz-go](https://github.com/twmb/franz-go). The fix has been applied to maintenance releases of CockroachDB v23.2.10, v24.1.4, and v24.2.0-rc.1. -This public issue is tracked by issue [#122372](https://github.com/cockroachdb/cockroach/issues/122372). +This public issue is tracked by issue. ## Mitigation diff --git a/src/current/advisories/a123371.md b/src/current/advisories/a123371.md index ee5c9ad2a14..c7a62145e32 100644 --- a/src/current/advisories/a123371.md +++ b/src/current/advisories/a123371.md @@ -12,7 +12,7 @@ Publication date: {{ page.advisory_date | date: "%B %e, %Y" }} ## Description -In all versions of CockroachDB v22.2, v23.1.0 to v23.1.21, v23.2.0 to v23.2.5, and testing versions of v24.1 through v24.1.0-rc.1, changefeeds could drop events during the initial scan in some cases, causing changefeed consumers to receive incomplete data. This bug was caused by a [code change](https://github.com/cockroachdb/cockroach/commit/0eda54018b9676f855efcd90bfdd0c486c97bfdd) to reduce the number of duplicates sent during an initial scan if the changefeed needed to restart by using the checkpoint to determine which spans could be skipped when the job resumed. This change led to some non-determinism in another part of the codebase that would sometimes incorrectly forward the progress of every span a node was tracking to the lowest checkpoint timestamp when some spans may not have been scanned yet. This bug is now fixed by [PR #123625](https://github.com/cockroachdb/cockroach/pull/123625). +In all versions of CockroachDB v22.2, v23.1.0 to v23.1.21, v23.2.0 to v23.2.5, and testing versions of v24.1 through v24.1.0-rc.1, changefeeds could drop events during the initial scan in some cases, causing changefeed consumers to receive incomplete data. This bug was caused by a to reduce the number of duplicates sent during an initial scan if the changefeed needed to restart by using the checkpoint to determine which spans could be skipped when the job resumed. This change led to some non-determinism in another part of the codebase that would sometimes incorrectly forward the progress of every span a node was tracking to the lowest checkpoint timestamp when some spans may not have been scanned yet. This bug is now fixed by . Symptoms of the bug: @@ -35,9 +35,9 @@ Factors that increase the likelihood the bug occurring: ## Statement -This is resolved in CockroachDB by [PR #123625](https://github.com/cockroachdb/cockroach/pull/123625) which prevents incorrect forwarding of progress for spans that have not been scanned yet by the initial scan. +This is resolved in CockroachDB by which prevents incorrect forwarding of progress for spans that have not been scanned yet by the initial scan. The fix has been applied to maintenance releases of CockroachDB v23.1.22, v23.2.6, and v24.1.0-rc.2. -This public issue is tracked by [#123371](https://github.com/cockroachdb/cockroach/issues/123371). +This public issue is tracked by. ## Mitigation diff --git a/src/current/advisories/a131639.md b/src/current/advisories/a131639.md index 6564386f581..dfe8a287035 100644 --- a/src/current/advisories/a131639.md +++ b/src/current/advisories/a131639.md @@ -35,7 +35,7 @@ Versions prior to 23.1 are no longer eligible for [maintenance support]({% link ## Statement -[In #123442](https://github.com/cockroachdb/cockroach/commit/6dd54b46cc56b7d2b302e0d5ec1509658a1c86f7), we resolved an issue with CockroachDB in the expiration-to-epoch lease promotion transition process, where a lease's effective expiration could be allowed to regress, resulting in two nodes believing they are the leaseholder for a range. +, we resolved an issue with CockroachDB in the expiration-to-epoch lease promotion transition process, where a lease's effective expiration could be allowed to regress, resulting in two nodes believing they are the leaseholder for a range. The patch has been applied to maintenance releases of CockroachDB: @@ -43,7 +43,7 @@ The patch has been applied to maintenance releases of CockroachDB: - [v23.2.11]({% link releases/v23.2.md%}#v23-2-11) - [v24.1.1]({% link releases/v24.1.md%}#v24-1-1) -This public issue is tracked by [131639](https://github.com/cockroachdb/cockroach/issues/131639). +This public issue is tracked by . ## Mitigation diff --git a/src/current/advisories/a144650.md b/src/current/advisories/a144650.md index 969f5c24488..bdb2464fb45 100644 --- a/src/current/advisories/a144650.md +++ b/src/current/advisories/a144650.md @@ -28,9 +28,9 @@ For steps to identify and mitigate affected operations, refer to [Mitigation](#m ## Statement -This issue is resolved in CockroachDB by [#144646](https://github.com/cockroachdb/cockroach/pull/144646), which disables the rare (async flush) code path for bulk write operations. The fix has been applied to the v23.2.24, v24.1.17, v24.3.11, and v25.1.5 production releases, and to the v25.2.0-beta.2 testing release. +This issue is resolved in CockroachDB by, which disables the rare (async flush) code path for bulk write operations. The fix has been applied to the v23.2.24, v24.1.17, v24.3.11, and v25.1.5 production releases, and to the v25.2.0-beta.2 testing release. -The issue is tracked publicly by [#144650](https://github.com/cockroachdb/cockroach/issues/144650). +The issue is tracked publicly by. ## Mitigation @@ -136,4 +136,4 @@ If you find a discrepancy, then [upgrade to a version with the fix](#mitigation) In rare cases, some bulk write operations can succeed without ingesting all expected data. Versions affected include v23.2.0 to v23.2.23, v24.1.0 to v24.1.16, all versions of v24.2, v24.3.0 to v24.3.10, v25.1.0 to v25.1.4, and testing versions of v25.2 through v25.2.0-beta.1. -[Contact the support team](https://support.cockroachlabs.com/) if more information or assistance is needed. \ No newline at end of file +[Contact the support team](https://support.cockroachlabs.com/) if more information or assistance is needed. diff --git a/src/current/advisories/a151050.md b/src/current/advisories/a151050.md index e259bbad3c3..12488c88938 100644 --- a/src/current/advisories/a151050.md +++ b/src/current/advisories/a151050.md @@ -20,11 +20,11 @@ While this issue is expected to occur rarely, we recommend upgrading to the next ## Statement -This issue is resolved in CockroachDB by PR [#151058](https://github.com/cockroachdb/cockroach/pull/151058) which ensures errors encountered during all buffer flushes - even those caused by intermittent object storage provider errors - are correctly reported to the backup job. +This issue is resolved in CockroachDB by PR which ensures errors encountered during all buffer flushes - even those caused by intermittent object storage provider errors - are correctly reported to the backup job. The fix has been applied to the following versions of CockroachDB: v24.1.22, v24.3.17, v25.1.10, v25.2.4, and the testing version of v25.3, v25.3.0-rc.2. -This issue is tracked publicly by [#151050](https://github.com/cockroachdb/cockroach/issues/151050). +This issue is tracked publicly by. ## Mitigation diff --git a/src/current/advisories/a161317.md b/src/current/advisories/a161317.md index f39aeb1e4c9..7328e5d12a4 100644 --- a/src/current/advisories/a161317.md +++ b/src/current/advisories/a161317.md @@ -26,7 +26,7 @@ This advisory applies to the following versions of CockroachDB: ## Statement -This is resolved in CockroachDB by PR [#161318](https://github.com/cockroachdb/cockroach/pull/161318) which fixes the improper error handling in the Avro OCF reader implementation. +This is resolved in CockroachDB by PR which fixes the improper error handling in the Avro OCF reader implementation. This fix has been applied to the following maintenance releases of CockroachDB: @@ -35,7 +35,7 @@ This fix has been applied to the following maintenance releases of CockroachDB: - v25.4.4 - Testing release v26.1.0-rc.1 -This public issue is tracked in [#161317](https://github.com/cockroachdb/cockroach/issues/161317). +This public issue is tracked in. ## Mitigation diff --git a/src/current/advisories/a162085.md b/src/current/advisories/a162085.md index 35f6e48093d..30178939000 100644 --- a/src/current/advisories/a162085.md +++ b/src/current/advisories/a162085.md @@ -16,7 +16,7 @@ A race condition between MVCC garbage collection and range splits in CockroachDB Most workloads are unlikely to be affected by this issue. The conditions that precipitate data loss are narrow and require a specific combination of data lifecycle patterns and timing. Details on how to assess your risk are provided in the *Am I Affected?* section below. -This public issue is tracked by [#162085](https://github.com/cockroachdb/cockroach/issues/162085). +This public issue is tracked by. ## Action Required @@ -140,7 +140,7 @@ This section provides a detailed technical explanation of the underlying issue f ### Background -CockroachDB v23.1 (PR [#90830](https://github.com/cockroachdb/cockroach/pull/90830)) added an optimization to the garbage collection process. When there is a contiguous span of at least 2,000 non-live (obsolete) keys in a range, the GC process writes a Pebble range tombstone using a ClearRange request to efficiently delete this span of data, rather than deleting each key individually. +CockroachDB v23.1 (PR) added an optimization to the garbage collection process. When there is a contiguous span of at least 2,000 non-live (obsolete) keys in a range, the GC process writes a Pebble range tombstone using a ClearRange request to efficiently delete this span of data, rather than deleting each key individually. ### The race condition @@ -171,4 +171,4 @@ Every INSERT, UPDATE, or DELETE produces a new MVCC version of a key. Examples o The run of obsolete versions must exceed 2,000 and must span at least two distinct user keys. If even a single live key appears in the middle of the run, the sequence breaks and the ClearRange optimization does not trigger for that span. -MVCC versions diagram \ No newline at end of file +MVCC versions diagram diff --git a/src/current/advisories/a166122.md b/src/current/advisories/a166122.md index 077ab3856b4..49503ee5936 100644 --- a/src/current/advisories/a166122.md +++ b/src/current/advisories/a166122.md @@ -37,7 +37,7 @@ The root cause is in the SQL optimizer, which incorrectly applies two optimizati ## Statement -This is resolved in CockroachDB by [PR #166123](https://github.com/cockroachdb/cockroach/pull/166123), which fixes the optimizer to always fetch the required columns and avoid simplifying predicate evaluation for mutation indexes. +This is resolved in CockroachDB by , which fixes the optimizer to always fetch the required columns and avoid simplifying predicate evaluation for mutation indexes. A fix has been applied to the following maintenance releases of CockroachDB: @@ -48,7 +48,7 @@ A fix has been applied to the following maintenance releases of CockroachDB: - v26.1.3 - Testing release v26.2.0-beta.2 -This public issue is tracked by [#166122](https://github.com/cockroachdb/cockroach/issues/166122). +This public issue is tracked by. ## Mitigation diff --git a/src/current/advisories/a190483.md b/src/current/advisories/a190483.md index 9aaf0412c90..470ccdc332c 100644 --- a/src/current/advisories/a190483.md +++ b/src/current/advisories/a190483.md @@ -34,11 +34,11 @@ If the result set is empty, no further action is required. If the result set is ## Statement -This is resolved in CockroachDB by PR [#109713](https://github.com/cockroachdb/cockroach/pull/109713) for v23.1 and PR [#109750](https://github.com/cockroachdb/cockroach/pull/109750) for v22.2. The PRs update the method used to select the boundaries at which ranges of data are split during `RESTORE` to avoid splitting between two column families of the same row. +This is resolved in CockroachDB by PR for v23.1 and PR for v22.2. The PRs update the method used to select the boundaries at which ranges of data are split during `RESTORE` to avoid splitting between two column families of the same row. These fixes are available in CockroachDB maintenance releases v23.1.9 and v22.2.14. -This public issue is tracked in [109483](https://github.com/cockroachdb/cockroach/issues/109483). +This public issue is tracked in . ## Mitigation diff --git a/src/current/advisories/a30821.md b/src/current/advisories/a30821.md index cce37051a4b..1ca9101d5fb 100644 --- a/src/current/advisories/a30821.md +++ b/src/current/advisories/a30821.md @@ -20,7 +20,7 @@ On October 23rd, 2018, an internal review uncovered a security vulnerability wit Registered users were informed privately of the issue and provided with early access to the fix, ahead of the public advisory. -This issue is tracked internally as [#30821](https://github.com/cockroachdb/cockroach/issues/30821). +This issue is tracked internally as. ## Mitigation diff --git a/src/current/advisories/a42567.md b/src/current/advisories/a42567.md index fd2fe281ea0..632197ef124 100644 --- a/src/current/advisories/a42567.md +++ b/src/current/advisories/a42567.md @@ -26,7 +26,7 @@ This issue was fixed in patch revisions v2.1.10, v19.1.6, and v19.2.2 by requiri The issue also exists in versions v2.0.x and prior. However, up to and including version v2.0.x, the HTTP endpoint was not advertised safe for use on non-privileged networks. Additionally, versions v2.0 and prior have reached end-of-life. All users are invited to upgrade to v2.1.10 or, preferably, a later version. This issue is tracked internally as -[#42567](https://github.com/cockroachdb/cockroach/issues/42567). +. ## Mitigation diff --git a/src/current/advisories/a43870.md b/src/current/advisories/a43870.md index c02b470c322..f51cf4cc0b5 100644 --- a/src/current/advisories/a43870.md +++ b/src/current/advisories/a43870.md @@ -26,7 +26,7 @@ Additionally, CockroachDB v19.2.3 and v20.1 include a way to create an HTTP auth Starting in v20.1, the `root` user will also be able to use a password and log in via HTTP interactively. -This issue is tracked internally as [#43870](https://github.com/cockroachdb/cockroach/issues/43870). +This issue is tracked internally as. ## Mitigation diff --git a/src/current/advisories/a44166.md b/src/current/advisories/a44166.md index dfb7a7450a0..abf6820461e 100644 --- a/src/current/advisories/a44166.md +++ b/src/current/advisories/a44166.md @@ -22,7 +22,7 @@ Under reasonable production settings, a single backup job payload may exceed 5MB Starting in CockroachDB v19.2.3, new jobs payloads are reduced in size. A later version will also avoid loading old job entries in memory when viewing recent jobs. -This public issue is tracked as [#44166](https://github.com/cockroachdb/cockroach/issues/44166). +This public issue is tracked as. ## Mitigation diff --git a/src/current/advisories/a44299.md b/src/current/advisories/a44299.md index 13e359a70a1..28824053e1e 100644 --- a/src/current/advisories/a44299.md +++ b/src/current/advisories/a44299.md @@ -24,7 +24,7 @@ An identifying symptom is frequent log messages of the format: `job with ID WITH NOSQLLOGIN`](https://www.cockroachlabs.com/docs/v22.2/alter-role). Note that unlike the global privilege, the role option does not get inherited by users who are members of the role. diff --git a/src/current/advisories/a96924.md b/src/current/advisories/a96924.md index 6007d5448ed..5e629d1dbd1 100644 --- a/src/current/advisories/a96924.md +++ b/src/current/advisories/a96924.md @@ -18,11 +18,11 @@ This problem exists in all versions of CockroachDB since the introduction of [pa ## Statement -This is resolved in CockroachDB by [#97372](https://github.com/cockroachdb/cockroach/pull/97372), which disallows dropping columns that are referenced by a partial index. +This is resolved in CockroachDB by, which disallows dropping columns that are referenced by a partial index. This fix has been applied to maintenance releases of CockroachDB [v22.1.16](https://www.cockroachlabs.com/docs/releases/v22.1#v22-1-16) and [v22.2.6](https://www.cockroachlabs.com/docs/releases/v22.2#v22-2-6)). -This public issue is tracked by [#96924](https://github.com/cockroachdb/cockroach/issues/96924). +This public issue is tracked by. ## Mitigation diff --git a/src/current/advisories/a97090.md b/src/current/advisories/a97090.md index ec1d0a42361..277eedc3457 100644 --- a/src/current/advisories/a97090.md +++ b/src/current/advisories/a97090.md @@ -19,11 +19,11 @@ For example, if a table `t` contained indexes `INDEX (a ASC, c DESC)` and `INDEX ## Statement -This is resolved in CockroachDB by [#97151](https://github.com/cockroachdb/cockroach/pull/97151), which prevents the [optimizer](https://www.cockroachlabs.com/docs/v22.2/cost-based-optimizer) from planning zigzag joins when any columns in the matching suffix between two candidate indexes have different directions. +This is resolved in CockroachDB by, which prevents the [optimizer](https://www.cockroachlabs.com/docs/v22.2/cost-based-optimizer) from planning zigzag joins when any columns in the matching suffix between two candidate indexes have different directions. The fix has been applied to maintenance releases of CockroachDB [v22.1.16](https://www.cockroachlabs.com/docs/releases/v22.1#v22-1-16) and [v22.2.6](https://www.cockroachlabs.com/docs/releases/v22.2#v22-2-6). -This public issue is tracked by [#97090](https://github.com/cockroachdb/cockroach/issues/97090). +This public issue is tracked by. ## Mitigation diff --git a/src/current/advisories/a97178.md b/src/current/advisories/a97178.md index 22238ffde6b..0047cbb23ed 100644 --- a/src/current/advisories/a97178.md +++ b/src/current/advisories/a97178.md @@ -21,9 +21,9 @@ This issue affects only v22.2.4 clusters. Cockroach Labs has withdrawn v22.2.4, and it can no longer be downloaded. -The issue is resolved in CockroachDB v22.2.5 by PR [#97183](https://github.com/cockroachdb/cockroach/pull/97183). +The issue is resolved in CockroachDB v22.2.5 by PR. -This public issue is tracked by [#97178](https://github.com/cockroachdb/cockroach/issues/97178). +This public issue is tracked by. ## Mitigation diff --git a/src/current/advisories/a97932.md b/src/current/advisories/a97932.md index 4f2cdfd2e57..3f76f6b9a48 100644 --- a/src/current/advisories/a97932.md +++ b/src/current/advisories/a97932.md @@ -16,9 +16,9 @@ Starting in CockroachDB v22.2.0 and above, CockroachDB switched to using the [SC ## Statement -This is resolved in CockroachDB by PR [98254](https://github.com/cockroachdb/cockroach/pull/98254), which sets the default hash cost value to `10610` using the cluster setting `server.user_login.password_hashes.default_cost.scram_sha_256`. This fix has been released in [22.2.7](https://www.cockroachlabs.com/docs/releases/v22.2#v22-2-7). +This is resolved in CockroachDB by PR , which sets the default hash cost value to `10610` using the cluster setting `server.user_login.password_hashes.default_cost.scram_sha_256`. This fix has been released in [22.2.7](https://www.cockroachlabs.com/docs/releases/v22.2#v22-2-7). -The public issue is tracked by [97932](https://github.com/cockroachdb/cockroach/issues/97932). +The public issue is tracked by . ## Mitigation diff --git a/src/current/advisories/a98779.md b/src/current/advisories/a98779.md index 9a71753fe59..8590cf8cb77 100644 --- a/src/current/advisories/a98779.md +++ b/src/current/advisories/a98779.md @@ -18,11 +18,11 @@ A resumption could occur due to manual user action, such as [pausing](https://ww ## Statement -This is resolved in CockroachDB by [#99066](https://github.com/cockroachdb/cockroach/pull/99066), which removes the incorrect optimization, and reverts back to the behavior of v22.2.5. +This is resolved in CockroachDB by, which removes the incorrect optimization, and reverts back to the behavior of v22.2.5. The fix has been applied to maintenance releases of CockroachDB [v22.2.7](https://www.cockroachlabs.com/docs/releases/v22.2#v22-2-7) and later. This problem can also be mitigated immediately by updating the `bulkio.restore.use_simple_import_spans` cluster setting. See the following [Mitigation](#mitigation) section for details. -This public issue is tracked by [#98779](https://github.com/cockroachdb/cockroach/issues/98779). +This public issue is tracked by. ## Mitigation diff --git a/src/current/advisories/a99049.md b/src/current/advisories/a99049.md index d68f6030604..8085f5d4b37 100644 --- a/src/current/advisories/a99049.md +++ b/src/current/advisories/a99049.md @@ -20,11 +20,11 @@ This vulnerability affects all of the following CockroachDB versions with this f ## Statement -This is resolved in CockroachDB by PR [#99051](https://github.com/cockroachdb/cockroach/pull/99051), which fixes privilege escalation by correctly checking the SQL user’s privileges before granting access to the statement diagnostic bundle. +This is resolved in CockroachDB by PR, which fixes privilege escalation by correctly checking the SQL user’s privileges before granting access to the statement diagnostic bundle. The fix has been applied to maintenance releases of CockroachDB: [v22.1.18](https://www.cockroachlabs.com/docs/releases/v22.1#v22-1-18) and [v22.2.7](https://www.cockroachlabs.com/docs/releases/v22.2#v22-2-7). -This public issue is tracked by [#99049](https://github.com/cockroachdb/cockroach/issues/99049). +This public issue is tracked by. ## Mitigation diff --git a/src/current/advisories/a99561.md b/src/current/advisories/a99561.md index e83273d55fd..b501abd9a08 100644 --- a/src/current/advisories/a99561.md +++ b/src/current/advisories/a99561.md @@ -24,11 +24,11 @@ If you have gone through the following sequence of steps, you are potentially at ## Statement -This is resolved in CockroachDB by [#105828](https://github.com/cockroachdb/cockroach/pull/105828), which makes CockroachDB automatically repair the encoding type for secondary indexes when accessing the table. In summary, this encoding type fix will prevent this issue from occurring, and additional validation will be added to prevent data loss. +This is resolved in CockroachDB by, which makes CockroachDB automatically repair the encoding type for secondary indexes when accessing the table. In summary, this encoding type fix will prevent this issue from occurring, and additional validation will be added to prevent data loss. The fix has been applied to [v22.2.12](https://www.cockroachlabs.com/docs/releases/v22.2#v22-2-12) and [v23.1.6](https://www.cockroachlabs.com/docs/releases/v23.1#v23-1-6). -This public issue is tracked by [#99561](https://github.com/cockroachdb/cockroach/issues/99561). +This public issue is tracked by. ## Mitigation @@ -219,4 +219,4 @@ WHERE Upon upgrade to CockroachDB v22.2.0 and above, a bug from v20.2 and v21.1 could cause the secondary index to be modified upon `ALTER TABLE..ADD COLUMN` instead of the existing primary index. If the user drops the secondary index, all data related to the new column will be deleted resulting in irrecoverable data loss. Furthermore, until this cluster is repaired, there is a risk of inconsistent query results as the primary index does not contain data for the newly added columns. -Questions about any technical alert can be directed to our [support team](https://support.cockroachlabs.com/). \ No newline at end of file +Questions about any technical alert can be directed to our [support team](https://support.cockroachlabs.com/). diff --git a/src/current/advisories/a99796.md b/src/current/advisories/a99796.md index 146c1b0bde2..331ead91b5e 100644 --- a/src/current/advisories/a99796.md +++ b/src/current/advisories/a99796.md @@ -20,11 +20,11 @@ This vulnerability affects all of the following CockroachDB versions: v22.2.0 to ## Statement -This is resolved in CockroachDB by PR [#99953](https://github.com/cockroachdb/cockroach/pull/99953), which adds validation to rollback operations to account for this situation. +This is resolved in CockroachDB by PR, which adds validation to rollback operations to account for this situation. The fix has been applied to maintenance releases of CockroachDB: [v22.2.8](https://www.cockroachlabs.com/docs/releases/v22.2#v22-2-8). -This public issue is tracked by [#99796](https://github.com/cockroachdb/cockroach/issues/99796). +This public issue is tracked by. ## Mitigation diff --git a/src/current/releases/downloads-archive.md b/src/current/releases/downloads-archive.md index 80027d31d68..5c6f173d2aa 100644 --- a/src/current/releases/downloads-archive.md +++ b/src/current/releases/downloads-archive.md @@ -516,7 +516,6 @@ CockroachDB {{ v.major_version }} is partially supported. Pre-LTS patches (befor
-

The source code for CockroachDB is hosted in the cockroachdb/cockroach repository on Github.

@@ -575,4 +574,4 @@ CockroachDB {{ v.major_version }} is partially supported. Pre-LTS patches (befor {% endfor %} {% comment %}for s in sections {% endcomment %} {% endif %} {% comment %}if is_unsupported or has_unsupported_releases{% endcomment %} {% endif %} {% comment %}if released{% endcomment %} -{% endfor %} {% comment %}for v in versions{% endcomment %} \ No newline at end of file +{% endfor %} {% comment %}for v in versions{% endcomment %} diff --git a/src/current/v23.1/alter-changefeed.md b/src/current/v23.1/alter-changefeed.md index 15a860c7010..aabdef881a1 100644 --- a/src/current/v23.1/alter-changefeed.md +++ b/src/current/v23.1/alter-changefeed.md @@ -238,8 +238,8 @@ For further discussion on using the `FAMILY` keyword and `split_column_families` ## Known limitations -- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any `ALTER CHANGEFEED` statement. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/77171) -- `ALTER CHANGEFEED` will accept duplicate targets without sending an error. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/78285) +- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any `ALTER CHANGEFEED` statement. +- `ALTER CHANGEFEED` will accept duplicate targets without sending an error. - {% include {{ page.version.version }}/known-limitations/alter-changefeed-cdc-queries.md %} - CockroachDB does not keep track of the [`initial_scan`]({% link {{ page.version.version }}/create-changefeed.md %}#initial-scan) option applied to tables when it is set to `yes` or `only`. For example: diff --git a/src/current/v23.1/alter-table.md b/src/current/v23.1/alter-table.md index c7628b37115..c769f3c9baf 100644 --- a/src/current/v23.1/alter-table.md +++ b/src/current/v23.1/alter-table.md @@ -264,7 +264,7 @@ For examples, see [Drop columns](#drop-columns). #### Known limitations -- CockroachDB prevents a column from being dropped if it is referenced by a [partial index]({% link {{ page.version.version }}/partial-indexes.md %}) predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}). See [tracking issue](https://github.com/cockroachdb/cockroach/issues/97813). +- CockroachDB prevents a column from being dropped if it is referenced by a [partial index]({% link {{ page.version.version }}/partial-indexes.md %}) predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}). #### Required privileges diff --git a/src/current/v23.1/alter-view.md b/src/current/v23.1/alter-view.md index 47de30984d8..ba56530d05e 100644 --- a/src/current/v23.1/alter-view.md +++ b/src/current/v23.1/alter-view.md @@ -36,7 +36,7 @@ Parameter | Description CockroachDB does not currently support: - Changing the [`SELECT`]({% link {{ page.version.version }}/select-clause.md %}) statement executed by a view. Instead, you must drop the existing view and create a new view. -- Renaming a view that other views depend on. This feature may be added in the future (see [tracking issue](https://github.com/cockroachdb/cockroach/issues/10083)). +- Renaming a view that other views depend on. This feature may be added in the future (see ). ## Examples diff --git a/src/current/v23.1/cockroachdb-feature-availability.md b/src/current/v23.1/cockroachdb-feature-availability.md index 53a57a145f3..2d53559ca67 100644 --- a/src/current/v23.1/cockroachdb-feature-availability.md +++ b/src/current/v23.1/cockroachdb-feature-availability.md @@ -130,7 +130,7 @@ Example: ### Check for constraint violations with `SCRUB` -Checks the consistency of [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) indexes, [`CHECK`]({% link {{ page.version.version }}/check.md %}) constraints, and more. Partially implemented; see [cockroachdb/cockroach#10425](https://github.com/cockroachdb/cockroach/issues/10425) for details. +Checks the consistency of [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) indexes, [`CHECK`]({% link {{ page.version.version }}/check.md %}) constraints, and more. Partially implemented; see for details. {{site.data.alerts.callout_info}} This example uses the `users` table from our open-source, fictional peer-to-peer vehicle-sharing application, [MovR]({% link {{ page.version.version }}/movr.md %}). @@ -165,7 +165,7 @@ CockroachDB supports [altering the column types]({% link {{ page.version.version ### Temporary objects -[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Performance limitations could persist long after creating the temporary objects. For more details, see [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Performance limitations could persist long after creating the temporary objects. To enable temporary objects, set the `experimental_enable_temp_tables` [session variable]({% link {{ page.version.version }}/show-vars.md %}) to `on`. diff --git a/src/current/v23.1/common-table-expressions.md b/src/current/v23.1/common-table-expressions.md index e9667131380..bb1009176ed 100644 --- a/src/current/v23.1/common-table-expressions.md +++ b/src/current/v23.1/common-table-expressions.md @@ -444,7 +444,7 @@ SELECT COUNT(*) FROM temp; Because this pattern incurs the overhead of a new scan for each iteration, it is slower per row than a full scan. It is therefore faster than a full scan in cases (such as this one) where many rows are skipped, but is slower if they are not. {{site.data.alerts.callout_info}} -Some recursive CTEs are not not yet optimized. For details, see the [tracking issue](https://github.com/cockroachdb/cockroach/issues/89954). +Some recursive CTEs are not not yet optimized. For details, see the . {{site.data.alerts.end}} ## Correlated common table expressions diff --git a/src/current/v23.1/configure-replication-zones.md b/src/current/v23.1/configure-replication-zones.md index cbf8256b2b4..53a7f28cd91 100644 --- a/src/current/v23.1/configure-replication-zones.md +++ b/src/current/v23.1/configure-replication-zones.md @@ -98,7 +98,7 @@ For more information, see the following subsections: The hierarchy of inheritance for zone configs can be visualized using the following outline-style diagram, in which each level of indentation denotes an inheritance relationship. -The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. ``` - default @@ -127,7 +127,7 @@ From the whole-system perspective, the hierarchy of schema object zone configs c The following diagram presents the same set of schema objects as the previous outline-style diagram, but using boxes and lines joined with arrows that represent the "top-down" view. -Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information about this limitation, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. zone config inheritance diagram diff --git a/src/current/v23.1/create-sequence.md b/src/current/v23.1/create-sequence.md index eba6f3a07f7..9411e5bf45d 100644 --- a/src/current/v23.1/create-sequence.md +++ b/src/current/v23.1/create-sequence.md @@ -58,7 +58,7 @@ CockroachDB supports the following [SQL sequence functions]({% link {{ page.vers CockroachDB supports session-scoped temporary sequences. Unlike persistent sequences, temporary sequences can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary sequences on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v23.1/create-table.md b/src/current/v23.1/create-table.md index 0976255a0d8..69fd4ac95ee 100644 --- a/src/current/v23.1/create-table.md +++ b/src/current/v23.1/create-table.md @@ -155,7 +155,7 @@ If you use `GENERATED BY DEFAULT AS IDENTITY` to define the identity column, any Note the following limitations of identity columns: -- `GENERATED ALWAYS AS IDENTITY`/`GENERATED BY DEFAULT AS IDENTITY` is supported in [`ALTER TABLE ... ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statements only when the table being altered is empty, as [CockroachDB does not support back-filling sequential column data]({% link {{ page.version.version }}/known-limitations.md %}#adding-a-column-with-sequence-based-default-values). For more information, see the [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/42508). +- `GENERATED ALWAYS AS IDENTITY`/`GENERATED BY DEFAULT AS IDENTITY` is supported in [`ALTER TABLE ... ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statements only when the table being altered is empty, as [CockroachDB does not support back-filling sequential column data]({% link {{ page.version.version }}/known-limitations.md %}#adding-a-column-with-sequence-based-default-values). For more information, see the . - Unlike PostgreSQL, CockroachDB does not support using the `OVERRIDING SYSTEM VALUE` clause in `INSERT`/`UPDATE`/`UPSERT` statements to overwrite `GENERATED ALWAYS AS IDENTITY` identity column values. For an example of an identity column, see [Create a table with an identity column](#create-a-table-with-an-identity-column). diff --git a/src/current/v23.1/disaster-recovery.md b/src/current/v23.1/disaster-recovery.md index 0b35574d349..4dfdc311e71 100644 --- a/src/current/v23.1/disaster-recovery.md +++ b/src/current/v23.1/disaster-recovery.md @@ -321,7 +321,7 @@ If your cluster is running, you do not have a backup that encapsulates the time If you have corrupted data in a database or table, [restore]({% link {{ page.version.version }}/restore.md %}) the object from a prior [backup]({% link {{ page.version.version }}/backup.md %}). If revision history is in the backup, you can restore from a [point in time]({% link {{ page.version.version }}/take-backups-with-revision-history-and-restore-from-a-point-in-time.md %}). -Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see [#51380](https://github.com/cockroachdb/cockroach/issues/51380) for more information), and you will need to take a backup that is backdated to the system time when the database still existed. +Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see for more information), and you will need to take a backup that is backdated to the system time when the database still existed. {{site.data.alerts.callout_info}} If the table you are restoring has foreign keys, [careful consideration]({% link {{ page.version.version }}/restore.md %}#remove-the-foreign-key-before-restore) should be applied to make sure data integrity is maintained during the restore process. diff --git a/src/current/v23.1/example-apps.md b/src/current/v23.1/example-apps.md index bea3cfd1876..7cebd29785e 100644 --- a/src/current/v23.1/example-apps.md +++ b/src/current/v23.1/example-apps.md @@ -14,7 +14,7 @@ Click the links in the tables below to see simple but complete example applicati If you are looking to do a specific task such as connect to the database, insert data, or run multi-statement transactions, see [this list of tasks](#tasks). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM with **partial** support. If you encounter problems, please with details to help us make progress toward full support. Note that tools with [**community-level** support]({% link {{ page.version.version }}/community-tooling.md %}) have been tested or developed by the CockroachDB community, but are not officially supported by Cockroach Labs. If you encounter problems with using these tools, please contact the maintainer of the tool with details. {{site.data.alerts.end}} diff --git a/src/current/v23.1/file-an-issue.md b/src/current/v23.1/file-an-issue.md index 9255e2c08b2..81da0da5fef 100644 --- a/src/current/v23.1/file-an-issue.md +++ b/src/current/v23.1/file-an-issue.md @@ -28,7 +28,7 @@ To file an issue in GitHub, we need the following information: ### Template -You can use this as a template for [filing an issue in GitHub](https://github.com/cockroachdb/cockroach/issues/new): +You can use this as a template for : ~~~ diff --git a/src/current/v23.1/foreign-key.md b/src/current/v23.1/foreign-key.md index d18599494af..c04ff3bfeed 100644 --- a/src/current/v23.1/foreign-key.md +++ b/src/current/v23.1/foreign-key.md @@ -93,7 +93,7 @@ For matching purposes, composite foreign keys can be in one of three states: For examples showing how these key matching algorithms work, see [Match composite foreign keys with `MATCH SIMPLE` and `MATCH FULL`](#match-composite-foreign-keys-with-match-simple-and-match-full). {{site.data.alerts.callout_info}} -CockroachDB does not support `MATCH PARTIAL`. For more information, see issue [#20305](https://github.com/cockroachdb/cockroach/issues/20305). +CockroachDB does not support `MATCH PARTIAL`. For more information, see issue. {{site.data.alerts.end}} ### Foreign key actions diff --git a/src/current/v23.1/full-text-search.md b/src/current/v23.1/full-text-search.md index 2959def0e33..7ec0812f5ab 100644 --- a/src/current/v23.1/full-text-search.md +++ b/src/current/v23.1/full-text-search.md @@ -460,7 +460,7 @@ Some PostgreSQL syntax and features are unsupported. These include, but are not - `!! tsquery` comparisons. - `tsquery @> tsquery` and `tsquery <@ tsquery` comparisons. -For full details, see the [tracking issue](https://github.com/cockroachdb/cockroach/issues/41288). +For full details, see the . ## See also @@ -469,4 +469,4 @@ For full details, see the [tracking issue](https://github.com/cockroachdb/cockro - [`TSQUERY`]({% link {{ page.version.version }}/tsquery.md %}) - [Inverted indexes]({% link {{ page.version.version }}/inverted-indexes.md %}) - [Indexes]({% link {{ page.version.version }}/indexes.md %}) -- [SQL Statements]({% link {{ page.version.version }}/sql-statements.md %}) \ No newline at end of file +- [SQL Statements]({% link {{ page.version.version }}/sql-statements.md %}) diff --git a/src/current/v23.1/install-client-drivers.md b/src/current/v23.1/install-client-drivers.md index 984671a0dfc..b25a85de6f1 100644 --- a/src/current/v23.1/install-client-drivers.md +++ b/src/current/v23.1/install-client-drivers.md @@ -8,7 +8,7 @@ docs_area: develop CockroachDB supports both native drivers and the PostgreSQL wire protocol, so most available PostgreSQL client drivers and ORM frameworks should work with CockroachDB. Choose a language for supported clients, and follow the installation steps. After you install a client library, you can [connect to the database]({% link {{ page.version.version }}/connect-to-the-database.md %}). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please with details to help us make progress toward full support. {{site.data.alerts.end}}
diff --git a/src/current/v23.1/install-cockroachdb-mac.md b/src/current/v23.1/install-cockroachdb-mac.md index 177c2863226..33d36be6d11 100644 --- a/src/current/v23.1/install-cockroachdb-mac.md +++ b/src/current/v23.1/install-cockroachdb-mac.md @@ -19,7 +19,7 @@ See [Release Notes]({% link releases/{{page.version.version}}.md %}) for what's {% comment %}v22.2.0+{% endcomment %} {{site.data.alerts.callout_danger}} -

On macOS ARM systems, spatial features are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead use Rosetta to run the Intel binary or use the Docker image distribution. Refer to GitHub tracking issue for more information.

+

On macOS ARM systems, spatial features are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead use Rosetta to run the Intel binary or use the Docker image distribution.

{{site.data.alerts.end}} {% capture arch_note_homebrew %}

For CockroachDB v22.2.x and above, Homebrew installs binaries for your system architecture, either Intel or ARM (Apple Silicon).

For previous releases, Homebrew installs Intel binaries. Intel binaries can run on ARM systems, but with a significant reduction in performance. CockroachDB on ARM for macOS is experimental and is not yet qualified for production use and not eligible for support or uptime SLA commitments.

{% endcapture %} diff --git a/src/current/v23.1/intellij-idea.md b/src/current/v23.1/intellij-idea.md index de46249320f..2a7a45b71cf 100644 --- a/src/current/v23.1/intellij-idea.md +++ b/src/current/v23.1/intellij-idea.md @@ -79,15 +79,6 @@ Requires setting **Introspect using JDBC metadata** ([details below](#set-cockro You can now use IntelliJ's [database tool window](https://www.jetbrains.com/help/idea/working-with-the-database-tool-window.html) to interact with your CockroachDB cluster. -## Report issues with IntelliJ IDEA & CockroachDB - -If you encounter issues other than those outlined above, please [file an issue on the `cockroachdb/cockroach` GitHub repo](https://github.com/cockroachdb/cockroach/issues/new?template=bug_report.md), including the following details about the environment where you encountered the issue: - -- CockroachDB version ([`cockroach version`]({% link {{ page.version.version }}/cockroach-version.md %})) -- IntelliJ IDEA version -- Operating system -- Steps to reproduce the behavior -- If possible, a trace of the SQL statements sent to CockroachDB while the error is being reproduced using [SQL query logging]({% link {{ page.version.version }}/logging-use-cases.md %}#sql_exec). ## See also diff --git a/src/current/v23.1/jsonb.md b/src/current/v23.1/jsonb.md index 221e075ee1d..ef857b01bc0 100644 --- a/src/current/v23.1/jsonb.md +++ b/src/current/v23.1/jsonb.md @@ -89,11 +89,11 @@ To [index]({% link {{ page.version.version }}/indexes.md %}) a `JSONB` column yo - You cannot [order]({% link {{ page.version.version }}/order-by.md %}) queries using `JSONB` and `JSON`-typed columns. - [Tracking issue](https://github.com/cockroachdb/cockroach/issues/35706) + - If the execution of a [join]({% link {{ page.version.version }}/joins.md %}) query exceeds the limit set for [memory-buffering operations]({% link {{ page.version.version }}/vectorized-execution.md %}#disk-spilling-operations) (i.e., the value set for the `sql.distsql.temp_storage.workmem` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %})), CockroachDB will spill the intermediate results of computation to disk. If the join operation spills to disk, and at least one of the columns is of type `JSON`, CockroachDB returns the error `unable to encode table key: *tree.DJSON`. If the memory limit is not reached, then the query will be processed without error. - [Tracking issue](https://github.com/cockroachdb/cockroach/issues/35706) + ## Examples diff --git a/src/current/v23.1/known-limitations.md b/src/current/v23.1/known-limitations.md index 61251abbb9a..95d3499593f 100644 --- a/src/current/v23.1/known-limitations.md +++ b/src/current/v23.1/known-limitations.md @@ -14,31 +14,31 @@ This page describes newly identified limitations in the CockroachDB {{page.relea - [`EXPLAIN ANALYZE`]({% link {{ page.version.version }}/explain-analyze.md %}) does not collect inverted statistics on columns that are indexed with both forward and inverted indexes; only forward statistics are collected for those columns. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/92036) + - [`EXPLAIN ANALYZE`]({% link {{ page.version.version }}/explain-analyze.md %}) does not support the `AS OF SYSTEM TIME` syntax. Use [`CREATE STATISTICS ... AS OF SYSTEM TIME`]({% link {{ page.version.version }}/create-statistics.md %}#create-statistics-as-of-a-given-time) instead. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/96430) + ### Limitations for index recommendations - [Index]({% link {{ page.version.version }}/indexes.md %}) recommendations are not aware of [hash sharding]({% link {{ page.version.version }}/hash-sharded-indexes.md %}). - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/84681) + - CockroachDB does not support [index]({% link {{ page.version.version }}/indexes.md %}) recommendations on [`REGIONAL BY ROW` tables]({% link {{ page.version.version }}/table-localities.md %}#regional-by-row-tables). - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/84680) + ### Limitations for `SELECT FOR UPDATE` - [`SELECT FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) places locks on each key scanned by the base index scan. This means that even if some of those keys are later filtered out by a predicate which could not be pushed into the scan, they will still be locked. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/75457) + - [`SELECT FOR UPDATE`]({% link {{ page.version.version }}/select-for-update.md %}) only places an unreplicated lock on the index being scanned by the query. This diverges from PostgreSQL, which aquires a lock on all indexes. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/57031) + ### Limitations for composite types @@ -50,31 +50,31 @@ This page describes newly identified limitations in the CockroachDB {{page.relea [Common table expressions]({% link {{ page.version.version }}/common-table-expressions.md %}) (CTE), recursive or non-recursive, are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}) (UDF). That is, you cannot use a `WITH` clause in the body of a UDF. -[Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/92961) + ### Low estimated Request Units are rounded to zero The [Request Units]({% link cockroachcloud/plan-your-cluster-basic.md %}#request-units) (RUs) estimate surfaced in [`EXPLAIN ANALYZE`]({% link {{ page.version.version }}/explain-analyze.md %}) is displayed as an integer value. Because of this, fractional RU estimates, which represent very inexpensive queries, are rounded down to zero. -[Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/100617) + ### `AS OF SYSTEM TIME` does not support placeholders CockroachDB does not support placeholders in [`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}). The time value must be embedded in the SQL string. -[Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/30955) + ### `null_ordered_last` does not produce correct results with tuples By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL`s after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it is broken when the ordering column is a tuple. -[Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/93558) + ### Inverted join for `tsvector` and `tsquery` types is not supported CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables. -[Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/102731) + ### No guaranteed state switch from `DECOMMISSIONING` to `DECOMMISSIONED` if `node decommission` is interrupted @@ -85,7 +85,7 @@ There is no guaranteed state switch from `DECOMMISSIONING` to `DECOMMISSIONED` i This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. -[Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/94430) + ### Execution locality in changefeeds @@ -101,15 +101,15 @@ This is because the state flip is effected by the CLI program at the end. Only t - Expressions (column, index, constraint) in tables. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/87699) + - Views. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/87699) + - Other user-defined functions. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/93049) + #### Limitations on expressions allowed within UDFs @@ -117,15 +117,15 @@ The following are not currently allowed within the body of a [UDF]({% link {{ pa - Mutation statements such as `INSERT`, `UPDATE`, `DELETE`, and `UPSERT`. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/87289) + - Common table expressions (CTEs). - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/92961) + - References to other user-defined functions. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/93049) + ### Table-level restore will not restore user-defined functions @@ -135,7 +135,7 @@ The following are not currently allowed within the body of a [UDF]({% link {{ pa In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. -[Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/82774) + ### Limitations for `DROP OWNED BY` @@ -149,7 +149,7 @@ In cases where the partition definition includes a comparison with `NULL` and a [Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. This is expected to be resolved in an upcoming 22.2 patch release. -[GitHub tracking issue](https://github.com/cockroachdb/cockroach/issues/93161) + ### Limited SQL cursor support @@ -165,13 +165,13 @@ The following PostgreSQL syntax and features are currently unsupported for [trig {% include {{ page.version.version }}/sql/trigram-unsupported-syntax.md %} -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/41285) + ### A multi-region table cannot be restored into a non-multi-region table You cannot [restore]({% link {{ page.version.version }}/restore.md %}) a multi-region table into a non-multi-region table. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/71502) + ### Statements containing multiple modification subqueries of the same table are disallowed @@ -182,25 +182,25 @@ Statements containing multiple modification subqueries mutating the same row cou Note that if multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/70731) + ### `transaction_rows_read_err` and `transaction_rows_written_err` do not halt query execution The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/70473) + ### `sql.guardrails.max_row_size_err` misses indexed virtual computed columns The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/69540) + ### CockroachDB does not allow inverted indexes with `STORING` CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/88278) + ### CockroachDB does not properly optimize some left and anti joins with GIN indexes @@ -351,7 +351,7 @@ UNION ALL SELECT * FROM t1 LEFT JOIN t2 ON st_contains(t1.geom, t2.geom) AND t2. (54 rows) ``` -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/59649) + ### Using `RESTORE` with multi-region table localities @@ -359,7 +359,7 @@ UNION ALL SELECT * FROM t1 LEFT JOIN t2 ON st_contains(t1.geom, t2.geom) AND t2. - {% include {{ page.version.version }}/known-limitations/restore-multiregion-match.md %} -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/71071) + ### `SET` does not `ROLLBACK` in a transaction @@ -395,8 +395,8 @@ UNION ALL SELECT * FROM t1 LEFT JOIN t2 ON st_contains(t1.geom, t2.geom) AND t2. {% include {{page.version.version}}/known-limitations/stats-refresh-upgrade.md %} {% include {{ page.version.version }}/known-limitations/forecasted-stats-limitations.md %} -- When a table is dropped, the related rows in `system.table_statistics` are not deleted. CockroachDB does not delete historical statistics. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/94195) -- CockroachDB does not collect statistics for [virtual computed columns]({% link {{ page.version.version }}/computed-columns.md %}). This can prevent the [optimizer]({% link {{ page.version.version }}/cost-based-optimizer.md %}) from accurately calculating the cost of scanning an index on a virtual column, and, transitively, the cost of scanning an [expression index]({% link {{ page.version.version }}/expression-indexes.md %}). [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/68254) +- When a table is dropped, the related rows in `system.table_statistics` are not deleted. CockroachDB does not delete historical statistics. +- CockroachDB does not collect statistics for [virtual computed columns]({% link {{ page.version.version }}/computed-columns.md %}). This can prevent the [optimizer]({% link {{ page.version.version }}/cost-based-optimizer.md %}) from accurately calculating the cost of scanning an index on a virtual column, and, transitively, the cost of scanning an [expression index]({% link {{ page.version.version }}/expression-indexes.md %}). ### Differences in syntax and behavior between CockroachDB and PostgreSQL @@ -408,7 +408,7 @@ For a list of known differences in syntax and behavior between CockroachDB and P CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/53170) + ### Spatial support limitations @@ -416,41 +416,41 @@ CockroachDB supports efficiently storing and querying [spatial data]({% link {{ - Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/49203) + - The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/49402) + - The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/49448) + - CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/56124) + - CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/55903) + - CockroachDB does not yet support Triangle or [`TIN`](https://wikipedia.org/wiki/Triangulated_irregular_network) spatial shapes. - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/56196) + - CockroachDB does not yet support Curve, MultiCurve, or CircularString spatial shapes. - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/56199) + - CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/55227) + - CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). Note that, in [`IMPORT PGDUMP`]({% link molt/migrate-to-cockroachdb.md %}) output, [`GEOMETRY` and `GEOGRAPHY`]({% link {{ page.version.version }}/export-spatial-data.md %}) data type names are prefixed by `public.`. If the type has a type modifier, you must remove the `public.` from the type name in order for the statements to work in CockroachDB. - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/56492) + ### Enterprise `BACKUP` does not capture database/table/column comments @@ -458,7 +458,7 @@ The [`COMMENT ON`]({% link {{ page.version.version }}/comment-on.md %}) statemen As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/44396) + ### `SHOW BACKUP` does not support symlinks for nodelocal @@ -474,21 +474,21 @@ The use of tables with very large primary or secondary index keys (>32KB) can re To work around this issue, we recommend limiting the size of primary and secondary keys to 4KB, which you must account for manually. Note that most columns are 8B (exceptions being `STRING` and `JSON`), which still allows for very complex key structures. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/30515) + ### Using `LIKE...ESCAPE` in `WHERE` and `HAVING` constraints CockroachDB tries to optimize most comparisons operators in `WHERE` and `HAVING` clauses into constraints on SQL indexes by only accessing selected rows. This is done for `LIKE` clauses when a common prefix for all selected rows can be determined in the search pattern (e.g., `... LIKE 'Joe%'`). However, this optimization is not yet available if the `ESCAPE` keyword is also used. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/30192) -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/35706) + + ### Current sequence value not checked when updating min/max value Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/23719) + ### Using `default_int_size` session variable in batch of statements @@ -496,7 +496,7 @@ When setting the `default_int_size` [session variable]({% link {{ page.version.v As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/32846) + ### `COPY` syntax not supported by CockroachDB @@ -510,7 +510,7 @@ As a workaround, set `default_int_size` via your database driver, or ensure that {% include {{ page.version.version }}/known-limitations/partitioning-with-placeholders.md %} -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/19464) + ### Dropping a single partition @@ -545,7 +545,7 @@ ERROR: nextval(): unimplemented: cannot evaluate scalar expressions containing s SQLSTATE: 0A000 ~~~ -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/42508) + ### Available capacity metric in the DB Console @@ -621,7 +621,7 @@ Many string operations are not properly overloaded for [collated strings]({% lin pq: unsupported binary operator: || ~~~ -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/10679) + ### Max size of a single column family @@ -653,10 +653,9 @@ Transactions with [priority `HIGH`]({% link {{ page.version.version }}/transacti ERROR: unimplemented: cannot use ROLLBACK TO SAVEPOINT in a HIGH PRIORITY transaction containing DDL SQLSTATE: 0A000 HINT: You have attempted to use a feature that is not yet implemented. -See: https://github.com/cockroachdb/cockroach/issues/46414 ~~~ -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/46414) + ### CockroachDB does not test for all connection failure scenarios @@ -668,7 +667,7 @@ However, if there is no host at the target IP address, or if a firewall rule blo - Configure any active network firewalls to allow node-to-node traffic. - Verify that orchestration tools (e.g., Kubernetes) are configured to use the correct network connection information. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/53410) + ### Some column-dropping schema changes do not roll back properly @@ -676,11 +675,11 @@ Some [schema changes]({% link {{ page.version.version }}/online-schema-changes.m In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/46541) + In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/47712) + To reduce the chance that a column drop will roll back incorrectly: diff --git a/src/current/v23.1/partial-indexes.md b/src/current/v23.1/partial-indexes.md index ba2b096d089..2ef5d2df87f 100644 --- a/src/current/v23.1/partial-indexes.md +++ b/src/current/v23.1/partial-indexes.md @@ -88,9 +88,9 @@ You can force queries [to use a specific partial index]({% link {{ page.version. ## Known limitations -- CockroachDB does not currently support [`IMPORT`]({% link {{ page.version.version }}/import.md %}) statements on tables with partial indexes. See [tracking issue](https://github.com/cockroachdb/cockroach/issues/50225). -- CockroachDB does not currently support multiple arbiter indexes for `INSERT ON CONFLICT DO UPDATE`, and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. See [tracking issue](https://github.com/cockroachdb/cockroach/issues/53170). -- CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}). See [tracking issue](https://github.com/cockroachdb/cockroach/issues/97813). +- CockroachDB does not currently support [`IMPORT`]({% link {{ page.version.version }}/import.md %}) statements on tables with partial indexes. +- CockroachDB does not currently support multiple arbiter indexes for `INSERT ON CONFLICT DO UPDATE`, and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. +- CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}). ## Examples diff --git a/src/current/v23.1/postgresql-compatibility.md b/src/current/v23.1/postgresql-compatibility.md index 319e81338f0..16f079f9574 100644 --- a/src/current/v23.1/postgresql-compatibility.md +++ b/src/current/v23.1/postgresql-compatibility.md @@ -34,11 +34,11 @@ When set to `true`, multiple portals can be open at the same time, with their ex This feature has the following limitations: - Only read-only [`SELECT` queries]({% link {{ page.version.version }}/selection-queries.md %}) without [subqueries]({% link {{ page.version.version }}/subqueries.md %}) are supported. -- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - [cockroachdb/cockroach#96398](https://github.com/cockroachdb/cockroach/issues/96398) -- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - [cockroachdb/cockroach#100822](https://github.com/cockroachdb/cockroach/issues/100822) -- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - [cockroachdb/cockroach#99404](https://github.com/cockroachdb/cockroach/issues/99404) +- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - +- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - +- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - -In addition to the known issues, additional performance testing is needed. The current list of known issues can be viewed [on GitHub using the `A-pausable-portals` label](https://github.com/cockroachdb/cockroach/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc++label%3AA-pausable-portals+), and we welcome bug reports. +In addition to the known issues, additional performance testing is needed. ## Features that differ from PostgreSQL @@ -181,7 +181,7 @@ An `x` value less than `1` would result in the following error: pq: check constraint violated ~~~ -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/35370) + ### Column name from an outer column inside a subquery @@ -207,7 +207,7 @@ PostgreSQL: 1 ~~~ -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/46563) + ### SQL Compatibility diff --git a/src/current/v23.1/query-spatial-data.md b/src/current/v23.1/query-spatial-data.md index b4e926c9384..48b0e477372 100644 --- a/src/current/v23.1/query-spatial-data.md +++ b/src/current/v23.1/query-spatial-data.md @@ -24,7 +24,7 @@ Just as CockroachDB strives for [PostgreSQL compatibility]({% link {{ page.versi CockroachDB does not implement the full list of PostGIS built-in functions and operators. Also, [spatial indexing works differently]({% link {{ page.version.version }}/spatial-indexes.md %}) (see the [Performance](#performance) section below). For a list of the spatial functions CockroachDB supports, see [Geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions). -If your application needs support for functions that are not yet implemented, check the [meta-issue for built-in function support on GitHub](https://github.com/cockroachdb/cockroach/issues/49203), which describes how to find an issue for the built-in function(s) you need. +If your application needs support for functions that are not yet implemented, check the , which describes how to find an issue for the built-in function(s) you need. For a list of other known limitations, see [Known Limitations]({% link {{ page.version.version }}/known-limitations.md %}#spatial-support-limitations). diff --git a/src/current/v23.1/restore.md b/src/current/v23.1/restore.md index f78885b94eb..f6ae61e293c 100644 --- a/src/current/v23.1/restore.md +++ b/src/current/v23.1/restore.md @@ -588,7 +588,7 @@ For more detail on using this option with `BACKUP`, see [Incremental backups wit ## Known limitations -- To successfully [restore a table into a multi-region database](#restoring-to-multi-region-databases), it is necessary for the order and regions to match between the source and destination database. See the [Known Limitations]({% link {{ page.version.version }}/known-limitations.md %}#using-restore-with-multi-region-table-localities) page for detail on ordering and matching regions. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/71071) +- To successfully [restore a table into a multi-region database](#restoring-to-multi-region-databases), it is necessary for the order and regions to match between the source and destination database. See the [Known Limitations]({% link {{ page.version.version }}/known-limitations.md %}#using-restore-with-multi-region-table-localities) page for detail on ordering and matching regions. - {% include {{ page.version.version }}/known-limitations/restore-tables-non-multi-reg.md %} - {% include {{ page.version.version }}/known-limitations/restore-udf.md %} diff --git a/src/current/v23.1/spatial-tutorial.md b/src/current/v23.1/spatial-tutorial.md index a04cb3b0c44..63fe2cb55b0 100644 --- a/src/current/v23.1/spatial-tutorial.md +++ b/src/current/v23.1/spatial-tutorial.md @@ -964,7 +964,7 @@ Time: 1.447s total (execution 1.446s / network 0.000s) Unfortunately, this query is a bit slower than you would like: about 1.5 seconds on a single-node [`cockroach demo`]({% link {{ page.version.version }}/cockroach-demo.md %}) cluster on a laptop. There are several reasons for this: 1. You haven't created any indexes at all yet. The query is likely to be doing full table scans, which you will need to hunt down with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %}). -1. CockroachDB does not yet have built-in support for index-based nearest neighbor queries. If this feature is important to you, please comment with some information about your use case on [cockroachdb/cockroach#55227](https://github.com/cockroachdb/cockroach/issues/55227). +1. CockroachDB does not yet have built-in support for index-based nearest neighbor queries. If this feature is important to you, please comment with some information about your use case on . Let's look at the `EXPLAIN` output to see if there is something that can be done to improve this query's performance: diff --git a/src/current/v23.1/sql-feature-support.md b/src/current/v23.1/sql-feature-support.md index fd12689d09d..dd2230c0035 100644 --- a/src/current/v23.1/sql-feature-support.md +++ b/src/current/v23.1/sql-feature-support.md @@ -191,9 +191,9 @@ XML | ✗ | Standard | XML data can be stored as `BYTES`, but we do not offer XM Materialized views | ✓ | Common Extension | [Materialized views documentation]({% link {{ page.version.version }}/views.md %}#materialized-views) Window functions | ✓ | Standard | [Window Functions documentation]({% link {{ page.version.version }}/window-functions.md %}) Common table expressions | Partial | Common Extension | [Common Table Expressions documentation]({% link {{ page.version.version }}/common-table-expressions.md %}) - Stored procedures | ✗ | Common Extension | Execute a procedure explicitly. [GitHub issue tracking stored procedures support](https://github.com/cockroachdb/cockroach/issues/17511). + Stored procedures | ✗ | Common Extension | Execute a procedure explicitly. . Cursors | Partial | Standard | [Cursors documentation]({% link {{ page.version.version }}/cursors.md %}) - Triggers | ✗ | Standard | Execute a set of commands whenever a specified event occurs. [GitHub issue tracking trigger support](https://github.com/cockroachdb/cockroach/issues/28296). + Triggers | ✗ | Standard | Execute a set of commands whenever a specified event occurs. . Row-level TTL | ✓ | Common Extension | Automatically delete expired rows. For more information, see [Batch-delete expired data with Row-Level TTL]({% link {{ page.version.version }}/row-level-ttl.md %}). User-defined functions | Partial | Standard | [User-Defined Functions documentation]({% link {{ page.version.version }}/user-defined-functions.md %}) - `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. [GitHub issue tracking `CREATE EXTENSION` support](https://github.com/cockroachdb/cockroach/issues/74777). + `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. . diff --git a/src/current/v23.1/sql-name-resolution.md b/src/current/v23.1/sql-name-resolution.md index 554a9a65583..9138b02ddce 100644 --- a/src/current/v23.1/sql-name-resolution.md +++ b/src/current/v23.1/sql-name-resolution.md @@ -37,7 +37,7 @@ If you are upgrading to {{ page.version.version }}, take any combination of the - [Create new schemas]({% link {{ page.version.version }}/create-schema.md %}) in databases on your cluster. After the schemas are created, use [`ALTER TABLE ... RENAME`]({% link {{ page.version.version }}/alter-table.md %}#rename-to), [`ALTER SEQUENCE ... RENAME`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE ... RENAME`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW ... RENAME`]({% link {{ page.version.version }}/alter-view.md %}) statements to move objects between databases as needed. To move objects between schemas, use [`ALTER TABLE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-table.md %}#set-schema), [`ALTER SEQUENCE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-sequence.md %}), or [`ALTER VIEW ... SET SCHEMA`]({% link {{ page.version.version }}/alter-view.md %}). -- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). For details, see [tracking issue](https://github.com/cockroachdb/cockroach/issues/55791). +- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). ## How name resolution works diff --git a/src/current/v23.1/srid-4326.md b/src/current/v23.1/srid-4326.md index cfd15368e47..3fd4d2a27e3 100644 --- a/src/current/v23.1/srid-4326.md +++ b/src/current/v23.1/srid-4326.md @@ -114,7 +114,7 @@ ERROR: st_contains(): operation on mixed SRIDs forbidden: (Point, 0) != (Point, ## Known limitations {{site.data.alerts.callout_info}} -Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. For more information, see the tracking issue [cockroachdb/cockroach#55903](https://github.com/cockroachdb/cockroach/issues/55903). +Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. For more information, see the tracking issue . {{site.data.alerts.end}} ## See also diff --git a/src/current/v23.1/st_union.md b/src/current/v23.1/st_union.md index 581f9db7f9b..fabdabd74e4 100644 --- a/src/current/v23.1/st_union.md +++ b/src/current/v23.1/st_union.md @@ -12,7 +12,7 @@ Given a set of shapes (e.g., from a [selection query]({% link {{ page.version.ve - [`GEOMETRY`]({% link {{ page.version.version }}/architecture/glossary.md %}#geometry) {{site.data.alerts.callout_info}} -The non-aggregate version of `ST_Union` is not yet implemented. For more information, see [cockroach#49064](https://github.com/cockroachdb/cockroach/issues/49064). +The non-aggregate version of `ST_Union` is not yet implemented. {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v23.1/temporary-tables.md b/src/current/v23.1/temporary-tables.md index bd3a9adefdd..406328272ca 100644 --- a/src/current/v23.1/temporary-tables.md +++ b/src/current/v23.1/temporary-tables.md @@ -10,7 +10,7 @@ docs_area: develop To create a temp table, add `TEMP`/`TEMPORARY` to a [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}) or [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}) statement. For full syntax details, see the [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}#synopsis) and [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}#synopsis) pages. For example usage, see [Examples](#examples). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v23.1/trigram-indexes.md b/src/current/v23.1/trigram-indexes.md index 474b258163a..140c99fe2a9 100644 --- a/src/current/v23.1/trigram-indexes.md +++ b/src/current/v23.1/trigram-indexes.md @@ -350,7 +350,7 @@ CREATE INDEX ON t USING GIN ((json_col->>'json_text_field')) ## Unsupported features -The following PostgreSQL syntax and features are currently unsupported. For details, see the [tracking issue](https://github.com/cockroachdb/cockroach/issues/41285). +The following PostgreSQL syntax and features are currently unsupported. For details, see the . {% include {{ page.version.version }}/sql/trigram-unsupported-syntax.md %} diff --git a/src/current/v23.1/user-defined-functions.md b/src/current/v23.1/user-defined-functions.md index a8396fed7c5..4f5cd3a802d 100644 --- a/src/current/v23.1/user-defined-functions.md +++ b/src/current/v23.1/user-defined-functions.md @@ -285,15 +285,15 @@ User-defined functions are not currently supported in: - Expressions (column, index, constraint) in tables. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/87699) + - Views. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/87699) + - Other user-defined functions. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/93049) + ### Limitations on expressions allowed within UDFs @@ -301,15 +301,15 @@ The following are not currently allowed within the body of a UDF: - Mutation statements such as `INSERT`, `UPDATE`, `DELETE`, and `UPSERT`. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/87289) + - CTEs (common table expressions). - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/92961) + - References to other user-defined functions. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/93049) + ## See also diff --git a/src/current/v23.1/vectorized-execution.md b/src/current/v23.1/vectorized-execution.md index f8ab08de50b..2d8fd337644 100644 --- a/src/current/v23.1/vectorized-execution.md +++ b/src/current/v23.1/vectorized-execution.md @@ -69,7 +69,7 @@ You can also configure a node's total budget for in-memory query processing with The vectorized engine does not support queries containing: -- A join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). See [tracking issue](https://github.com/cockroachdb/cockroach/issues/38018). +- A join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). ### Spatial features diff --git a/src/current/v23.1/views.md b/src/current/v23.1/views.md index 89357fb6d52..f36eefd5b19 100644 --- a/src/current/v23.1/views.md +++ b/src/current/v23.1/views.md @@ -634,7 +634,7 @@ To speed up queries on materialized views, you can add an [index]({% link {{ pag CockroachDB supports session-scoped temporary views. Unlike persistent views, temporary views can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary views on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v23.2/alter-changefeed.md b/src/current/v23.2/alter-changefeed.md index 15a860c7010..aabdef881a1 100644 --- a/src/current/v23.2/alter-changefeed.md +++ b/src/current/v23.2/alter-changefeed.md @@ -238,8 +238,8 @@ For further discussion on using the `FAMILY` keyword and `split_column_families` ## Known limitations -- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any `ALTER CHANGEFEED` statement. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/77171) -- `ALTER CHANGEFEED` will accept duplicate targets without sending an error. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/78285) +- It is necessary to [`PAUSE`]({% link {{ page.version.version }}/pause-job.md %}) the changefeed before performing any `ALTER CHANGEFEED` statement. +- `ALTER CHANGEFEED` will accept duplicate targets without sending an error. - {% include {{ page.version.version }}/known-limitations/alter-changefeed-cdc-queries.md %} - CockroachDB does not keep track of the [`initial_scan`]({% link {{ page.version.version }}/create-changefeed.md %}#initial-scan) option applied to tables when it is set to `yes` or `only`. For example: diff --git a/src/current/v23.2/alter-table.md b/src/current/v23.2/alter-table.md index f7b7deb5e1c..ef6ef4a73fb 100644 --- a/src/current/v23.2/alter-table.md +++ b/src/current/v23.2/alter-table.md @@ -265,7 +265,7 @@ For examples, see [Drop columns](#drop-columns). #### Known limitations -- CockroachDB prevents a column from being dropped if it is referenced by a [partial index]({% link {{ page.version.version }}/partial-indexes.md %}) predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}). See [tracking issue](https://github.com/cockroachdb/cockroach/issues/97813). +- CockroachDB prevents a column from being dropped if it is referenced by a [partial index]({% link {{ page.version.version }}/partial-indexes.md %}) predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}). #### Required privileges diff --git a/src/current/v23.2/alter-view.md b/src/current/v23.2/alter-view.md index 47de30984d8..ba56530d05e 100644 --- a/src/current/v23.2/alter-view.md +++ b/src/current/v23.2/alter-view.md @@ -36,7 +36,7 @@ Parameter | Description CockroachDB does not currently support: - Changing the [`SELECT`]({% link {{ page.version.version }}/select-clause.md %}) statement executed by a view. Instead, you must drop the existing view and create a new view. -- Renaming a view that other views depend on. This feature may be added in the future (see [tracking issue](https://github.com/cockroachdb/cockroach/issues/10083)). +- Renaming a view that other views depend on. This feature may be added in the future (see ). ## Examples diff --git a/src/current/v23.2/changefeeds-in-multi-region-deployments.md b/src/current/v23.2/changefeeds-in-multi-region-deployments.md index 191ba84bf9c..1886123355e 100644 --- a/src/current/v23.2/changefeeds-in-multi-region-deployments.md +++ b/src/current/v23.2/changefeeds-in-multi-region-deployments.md @@ -22,7 +22,7 @@ Defining an execution locality for a changefeed job, could be useful in the foll - Your cluster is running through VPC peering connections and you need all the data sent through a particular locality. {{site.data.alerts.callout_info}} -In v23.2.0, changefeeds that use the [`execution_locality` option]({% link {{ page.version.version }}/changefeeds-in-multi-region-deployments.md %}#run-a-changefeed-job-by-locality) set to a [secondary region]({% link {{ page.version.version }}/multiregion-overview.md %}#secondary-regions) could create a plan that assigns most of the ranges to an [aggregator]({% link {{ page.version.version }}/how-does-an-enterprise-changefeed-work.md %}) on the coordinator node. This leads to an unbalanced plan and slow changefeed progress, particularly when the table is large and has many ranges. This issue is [partially mitigated](https://github.com/cockroachdb/cockroach/commit/5d7714a03a891c9fd5746fb876c39dced4f47205) in v23.2.1 and later. +In v23.2.0, changefeeds that use the [`execution_locality` option]({% link {{ page.version.version }}/changefeeds-in-multi-region-deployments.md %}#run-a-changefeed-job-by-locality) set to a [secondary region]({% link {{ page.version.version }}/multiregion-overview.md %}#secondary-regions) could create a plan that assigns most of the ranges to an [aggregator]({% link {{ page.version.version }}/how-does-an-enterprise-changefeed-work.md %}) on the coordinator node. This leads to an unbalanced plan and slow changefeed progress, particularly when the table is large and has many ranges. This issue is in v23.2.1 and later. {{site.data.alerts.end}} ### Syntax diff --git a/src/current/v23.2/cockroachdb-feature-availability.md b/src/current/v23.2/cockroachdb-feature-availability.md index b768c00d501..e2b0cc79320 100644 --- a/src/current/v23.2/cockroachdb-feature-availability.md +++ b/src/current/v23.2/cockroachdb-feature-availability.md @@ -148,7 +148,7 @@ Example: ### Check for constraint violations with `SCRUB` -Checks the consistency of [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) indexes, [`CHECK`]({% link {{ page.version.version }}/check.md %}) constraints, and more. Partially implemented; see [cockroachdb/cockroach#10425](https://github.com/cockroachdb/cockroach/issues/10425) for details. +Checks the consistency of [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) indexes, [`CHECK`]({% link {{ page.version.version }}/check.md %}) constraints, and more. Partially implemented; see for details. {{site.data.alerts.callout_info}} This example uses the `users` table from our open-source, fictional peer-to-peer vehicle-sharing application, [MovR]({% link {{ page.version.version }}/movr.md %}). @@ -191,7 +191,7 @@ CockroachDB supports [altering the column types]({% link {{ page.version.version ### Temporary objects -[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Performance limitations could persist long after creating the temporary objects. For more details, see [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Performance limitations could persist long after creating the temporary objects. To enable temporary objects, set the `experimental_enable_temp_tables` [session variable]({% link {{ page.version.version }}/show-vars.md %}) to `on`. diff --git a/src/current/v23.2/common-table-expressions.md b/src/current/v23.2/common-table-expressions.md index 09ac09d1419..f554748f621 100644 --- a/src/current/v23.2/common-table-expressions.md +++ b/src/current/v23.2/common-table-expressions.md @@ -444,7 +444,7 @@ SELECT COUNT(*) FROM temp; Because this pattern incurs the overhead of a new scan for each iteration, it is slower per row than a full scan. It is therefore faster than a full scan in cases (such as this one) where many rows are skipped, but is slower if they are not. {{site.data.alerts.callout_info}} -Some recursive CTEs are not not yet optimized. For details, see the [tracking issue](https://github.com/cockroachdb/cockroach/issues/89954). +Some recursive CTEs are not not yet optimized. For details, see the . {{site.data.alerts.end}} ## Correlated common table expressions diff --git a/src/current/v23.2/configure-replication-zones.md b/src/current/v23.2/configure-replication-zones.md index eb46be28789..a17c12356b4 100644 --- a/src/current/v23.2/configure-replication-zones.md +++ b/src/current/v23.2/configure-replication-zones.md @@ -98,7 +98,7 @@ For more information, see the following subsections: The hierarchy of inheritance for zone configs can be visualized using the following outline-style diagram, in which each level of indentation denotes an inheritance relationship. -The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. ``` - default @@ -127,7 +127,7 @@ From the whole-system perspective, the hierarchy of schema object zone configs c The following diagram presents the same set of schema objects as the previous outline-style diagram, but using boxes and lines joined with arrows that represent the "top-down" view. -Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information about this limitation, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. zone config inheritance diagram diff --git a/src/current/v23.2/create-sequence.md b/src/current/v23.2/create-sequence.md index b8be147522b..c8e7f0610a0 100644 --- a/src/current/v23.2/create-sequence.md +++ b/src/current/v23.2/create-sequence.md @@ -58,7 +58,7 @@ CockroachDB supports the following [SQL sequence functions]({% link {{ page.vers CockroachDB supports session-scoped temporary sequences. Unlike persistent sequences, temporary sequences can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary sequences on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v23.2/create-table.md b/src/current/v23.2/create-table.md index 0976255a0d8..69fd4ac95ee 100644 --- a/src/current/v23.2/create-table.md +++ b/src/current/v23.2/create-table.md @@ -155,7 +155,7 @@ If you use `GENERATED BY DEFAULT AS IDENTITY` to define the identity column, any Note the following limitations of identity columns: -- `GENERATED ALWAYS AS IDENTITY`/`GENERATED BY DEFAULT AS IDENTITY` is supported in [`ALTER TABLE ... ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statements only when the table being altered is empty, as [CockroachDB does not support back-filling sequential column data]({% link {{ page.version.version }}/known-limitations.md %}#adding-a-column-with-sequence-based-default-values). For more information, see the [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/42508). +- `GENERATED ALWAYS AS IDENTITY`/`GENERATED BY DEFAULT AS IDENTITY` is supported in [`ALTER TABLE ... ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statements only when the table being altered is empty, as [CockroachDB does not support back-filling sequential column data]({% link {{ page.version.version }}/known-limitations.md %}#adding-a-column-with-sequence-based-default-values). For more information, see the . - Unlike PostgreSQL, CockroachDB does not support using the `OVERRIDING SYSTEM VALUE` clause in `INSERT`/`UPDATE`/`UPSERT` statements to overwrite `GENERATED ALWAYS AS IDENTITY` identity column values. For an example of an identity column, see [Create a table with an identity column](#create-a-table-with-an-identity-column). diff --git a/src/current/v23.2/disaster-recovery-planning.md b/src/current/v23.2/disaster-recovery-planning.md index 69eaf1fac32..33a25491e96 100644 --- a/src/current/v23.2/disaster-recovery-planning.md +++ b/src/current/v23.2/disaster-recovery-planning.md @@ -320,7 +320,7 @@ If your cluster is running, you do not have a backup that encapsulates the time If you have corrupted data in a database or table, [restore]({% link {{ page.version.version }}/restore.md %}) the object from a prior [backup]({% link {{ page.version.version }}/backup.md %}). If revision history is in the backup, you can restore from a [point in time]({% link {{ page.version.version }}/take-backups-with-revision-history-and-restore-from-a-point-in-time.md %}). -Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see [#51380](https://github.com/cockroachdb/cockroach/issues/51380) for more information), and you will need to take a backup that is backdated to the system time when the database still existed. +Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see for more information), and you will need to take a backup that is backdated to the system time when the database still existed. {{site.data.alerts.callout_info}} If the table you are restoring has foreign keys, [careful consideration]({% link {{ page.version.version }}/restore.md %}#remove-the-foreign-key-before-restore) should be applied to make sure data integrity is maintained during the restore process. diff --git a/src/current/v23.2/example-apps.md b/src/current/v23.2/example-apps.md index bea3cfd1876..7cebd29785e 100644 --- a/src/current/v23.2/example-apps.md +++ b/src/current/v23.2/example-apps.md @@ -14,7 +14,7 @@ Click the links in the tables below to see simple but complete example applicati If you are looking to do a specific task such as connect to the database, insert data, or run multi-statement transactions, see [this list of tasks](#tasks). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM with **partial** support. If you encounter problems, please with details to help us make progress toward full support. Note that tools with [**community-level** support]({% link {{ page.version.version }}/community-tooling.md %}) have been tested or developed by the CockroachDB community, but are not officially supported by Cockroach Labs. If you encounter problems with using these tools, please contact the maintainer of the tool with details. {{site.data.alerts.end}} diff --git a/src/current/v23.2/file-an-issue.md b/src/current/v23.2/file-an-issue.md index 9255e2c08b2..81da0da5fef 100644 --- a/src/current/v23.2/file-an-issue.md +++ b/src/current/v23.2/file-an-issue.md @@ -28,7 +28,7 @@ To file an issue in GitHub, we need the following information: ### Template -You can use this as a template for [filing an issue in GitHub](https://github.com/cockroachdb/cockroach/issues/new): +You can use this as a template for : ~~~ diff --git a/src/current/v23.2/foreign-key.md b/src/current/v23.2/foreign-key.md index f82bfc4aad5..80fe37252b0 100644 --- a/src/current/v23.2/foreign-key.md +++ b/src/current/v23.2/foreign-key.md @@ -93,7 +93,7 @@ For matching purposes, composite foreign keys can be in one of three states: For examples showing how these key matching algorithms work, see [Match composite foreign keys with `MATCH SIMPLE` and `MATCH FULL`](#match-composite-foreign-keys-with-match-simple-and-match-full). {{site.data.alerts.callout_info}} -CockroachDB does not support `MATCH PARTIAL`. For more information, see issue [#20305](https://github.com/cockroachdb/cockroach/issues/20305). +CockroachDB does not support `MATCH PARTIAL`. For more information, see issue. {{site.data.alerts.end}} ### Foreign key actions diff --git a/src/current/v23.2/full-text-search.md b/src/current/v23.2/full-text-search.md index 5b93835d9c3..c87d24f8e4e 100644 --- a/src/current/v23.2/full-text-search.md +++ b/src/current/v23.2/full-text-search.md @@ -460,7 +460,7 @@ Some PostgreSQL syntax and features are unsupported. These include, but are not - `!! tsquery` comparisons. - `tsquery @> tsquery` and `tsquery <@ tsquery` comparisons. -For full details, see the [tracking issue](https://github.com/cockroachdb/cockroach/issues/41288). +For full details, see the . ## See also @@ -469,4 +469,4 @@ For full details, see the [tracking issue](https://github.com/cockroachdb/cockro - [`TSQUERY`]({% link {{ page.version.version }}/tsquery.md %}) - [Inverted indexes]({% link {{ page.version.version }}/inverted-indexes.md %}) - [Indexes]({% link {{ page.version.version }}/indexes.md %}) -- [SQL Statements]({% link {{ page.version.version }}/sql-statements.md %}) \ No newline at end of file +- [SQL Statements]({% link {{ page.version.version }}/sql-statements.md %}) diff --git a/src/current/v23.2/install-client-drivers.md b/src/current/v23.2/install-client-drivers.md index 984671a0dfc..b25a85de6f1 100644 --- a/src/current/v23.2/install-client-drivers.md +++ b/src/current/v23.2/install-client-drivers.md @@ -8,7 +8,7 @@ docs_area: develop CockroachDB supports both native drivers and the PostgreSQL wire protocol, so most available PostgreSQL client drivers and ORM frameworks should work with CockroachDB. Choose a language for supported clients, and follow the installation steps. After you install a client library, you can [connect to the database]({% link {{ page.version.version }}/connect-to-the-database.md %}). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please with details to help us make progress toward full support. {{site.data.alerts.end}}
diff --git a/src/current/v23.2/install-cockroachdb-mac.md b/src/current/v23.2/install-cockroachdb-mac.md index 177c2863226..33d36be6d11 100644 --- a/src/current/v23.2/install-cockroachdb-mac.md +++ b/src/current/v23.2/install-cockroachdb-mac.md @@ -19,7 +19,7 @@ See [Release Notes]({% link releases/{{page.version.version}}.md %}) for what's {% comment %}v22.2.0+{% endcomment %} {{site.data.alerts.callout_danger}} -

On macOS ARM systems, spatial features are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead use Rosetta to run the Intel binary or use the Docker image distribution. Refer to GitHub tracking issue for more information.

+

On macOS ARM systems, spatial features are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead use Rosetta to run the Intel binary or use the Docker image distribution.

{{site.data.alerts.end}} {% capture arch_note_homebrew %}

For CockroachDB v22.2.x and above, Homebrew installs binaries for your system architecture, either Intel or ARM (Apple Silicon).

For previous releases, Homebrew installs Intel binaries. Intel binaries can run on ARM systems, but with a significant reduction in performance. CockroachDB on ARM for macOS is experimental and is not yet qualified for production use and not eligible for support or uptime SLA commitments.

{% endcapture %} diff --git a/src/current/v23.2/intellij-idea.md b/src/current/v23.2/intellij-idea.md index de46249320f..ecd8e1aee2e 100644 --- a/src/current/v23.2/intellij-idea.md +++ b/src/current/v23.2/intellij-idea.md @@ -79,16 +79,6 @@ Requires setting **Introspect using JDBC metadata** ([details below](#set-cockro You can now use IntelliJ's [database tool window](https://www.jetbrains.com/help/idea/working-with-the-database-tool-window.html) to interact with your CockroachDB cluster. -## Report issues with IntelliJ IDEA & CockroachDB - -If you encounter issues other than those outlined above, please [file an issue on the `cockroachdb/cockroach` GitHub repo](https://github.com/cockroachdb/cockroach/issues/new?template=bug_report.md), including the following details about the environment where you encountered the issue: - -- CockroachDB version ([`cockroach version`]({% link {{ page.version.version }}/cockroach-version.md %})) -- IntelliJ IDEA version -- Operating system -- Steps to reproduce the behavior -- If possible, a trace of the SQL statements sent to CockroachDB while the error is being reproduced using [SQL query logging]({% link {{ page.version.version }}/logging-use-cases.md %}#sql_exec). - ## See also + [Client connection parameters]({% link {{ page.version.version }}/connection-parameters.md %}) diff --git a/src/current/v23.2/jsonb.md b/src/current/v23.2/jsonb.md index c6153ce4e92..03fe137b9e2 100644 --- a/src/current/v23.2/jsonb.md +++ b/src/current/v23.2/jsonb.md @@ -89,11 +89,11 @@ To [index]({% link {{ page.version.version }}/indexes.md %}) a `JSONB` column yo - You cannot [order]({% link {{ page.version.version }}/order-by.md %}) queries using `JSONB` and `JSON`-typed columns. - [Tracking issue](https://github.com/cockroachdb/cockroach/issues/35706) + - If the execution of a [join]({% link {{ page.version.version }}/joins.md %}) query exceeds the limit set for [memory-buffering operations]({% link {{ page.version.version }}/vectorized-execution.md %}#disk-spilling-operations) (i.e., the value set for the `sql.distsql.temp_storage.workmem` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %})), CockroachDB will spill the intermediate results of computation to disk. If the join operation spills to disk, and at least one of the columns is of type `JSON`, CockroachDB returns the error `unable to encode table key: *tree.DJSON`. If the memory limit is not reached, then the query will be processed without error. - [Tracking issue](https://github.com/cockroachdb/cockroach/issues/35706) + ## Examples diff --git a/src/current/v23.2/known-limitations.md b/src/current/v23.2/known-limitations.md index 24c971f0da0..08d95ee8c01 100644 --- a/src/current/v23.2/known-limitations.md +++ b/src/current/v23.2/known-limitations.md @@ -14,62 +14,62 @@ This page describes newly identified limitations in the CockroachDB {{page.relea #### Support for PL/pgSQL features -- PL/pgSQL blocks cannot be nested. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/114775) -- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/114701) -- `FOR` loops, including `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops, are not supported. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/105246) -- `RETURN NEXT` and `RETURN QUERY` statements are not supported. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/117744) -- `EXIT` and `CONTINUE` labels and conditions are not supported. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/115271) -- `CASE` statements are not supported. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/117744) -- `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `NULL` statements are not supported for PL/pgSQL. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/117744) +- PL/pgSQL blocks cannot be nested. +- PL/pgSQL arguments cannot be referenced with ordinals (e.g., `$1`, `$2`). +- `FOR` loops, including `FOR` cursor loops, `FOR` query loops, and `FOREACH` loops, are not supported. +- `RETURN NEXT` and `RETURN QUERY` statements are not supported. +- `EXIT` and `CONTINUE` labels and conditions are not supported. +- `CASE` statements are not supported. +- `PERFORM`, `EXECUTE`, `GET DIAGNOSTICS`, and `NULL` statements are not supported for PL/pgSQL. #### Type Handling and Variable Declarations -- `RECORD` parameters and variables are not supported. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/105713) -- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/117508) -- Syntax for accessing members of composite types without parentheses is not supported. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/114687) -- The `STRICT` option for the PL/pgSQL `INTO` statement is not supported. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/107854) -- `NOT NULL` variable declarations are not supported. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/105243) +- `RECORD` parameters and variables are not supported. +- Variable shadowing (e.g., declaring a variable with the same name in an inner block) is not supported in PL/pgSQL. +- Syntax for accessing members of composite types without parentheses is not supported. +- The `STRICT` option for the PL/pgSQL `INTO` statement is not supported. +- `NOT NULL` variable declarations are not supported. #### Cursor Functionality -- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/111479) -- `OPEN FOR EXECUTE` is not supported for opening cursors. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/117744) +- Cursors opened in PL/pgSQL execute their queries on opening, affecting performance and resource usage. +- `OPEN FOR EXECUTE` is not supported for opening cursors. #### Exception Handling -- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/111446) -- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/106237) -- `RAISE` statements message the client directly, and do not produce log output. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/117750) -- `ASSERT` debugging checks are not supported. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/117744) +- PL/pgSQL exception blocks cannot catch [transaction retry errors]({% link {{ page.version.version }}/transaction-retry-error-reference.md %}). +- `RAISE` statements cannot be annotated with names of schema objects related to the error (i.e., using `COLUMN`, `CONSTRAINT`, `DATATYPE`, `TABLE`, or `SCHEMA`). +- `RAISE` statements message the client directly, and do not produce log output. +- `ASSERT` debugging checks are not supported. ### Limitations in User-Defined Functions (UDFs) and Stored Procedures -- Transactions cannot be run within stored procedures. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/115294) -- UDFs and stored procedures cannot call other UDFs or stored procedures from within their bodies. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/88198) -- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or procedures. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/110080) -- UDF and stored procedure definitions do not support `OUT` and `INOUT` argument modes. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/100405) -- The `setval` function cannot be resolved when used inside UDF bodies. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/110860) +- Transactions cannot be run within stored procedures. +- UDFs and stored procedures cannot call other UDFs or stored procedures from within their bodies. +- DDL statements (e.g., `CREATE TABLE`, `CREATE INDEX`) are not allowed within UDFs or procedures. +- UDF and stored procedure definitions do not support `OUT` and `INOUT` argument modes. +- The `setval` function cannot be resolved when used inside UDF bodies. ### SQL Optimizer and Read Committed Isolation #### Optimizer and Locking Behavior - The SQL optimizer has limitations under certain isolation levels: - - The new implementation of `SELECT FOR UPDATE` is not yet the default setting under `SERIALIZABLE` isolation. It can be used under `SERIALIZABLE` isolation by setting the `optimizer_use_lock_op_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}) to `true`. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/114737) - - `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/116836) + - The new implementation of `SELECT FOR UPDATE` is not yet the default setting under `SERIALIZABLE` isolation. It can be used under `SERIALIZABLE` isolation by setting the `optimizer_use_lock_op_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}) to `true`. + - `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. #### Read Committed Isolation Limitations - Several capabilities are not yet supported with [Read Committed isolation]({% link {{ page.version.version }}/read-committed.md %}): - - Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/114778) + - Schema changes (e.g., [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}), [`CREATE SCHEMA`]({% link {{ page.version.version }}/create-schema.md %}), [`CREATE INDEX`]({% link {{ page.version.version }}/create-index.md %})) cannot be performed within explicit `READ COMMITTED` transactions, and will cause transactions to abort. As a workaround, [set the transaction's isolation level]({% link {{ page.version.version }}/read-committed.md %}#set-the-current-transaction-to-read-committed) to `SERIALIZABLE`. - `READ COMMITTED` transactions performing `INSERT`, `UPDATE`, or `UPSERT` cannot access [`REGIONAL BY ROW`]({% link {{ page.version.version }}/table-localities.md %}#regional-by-row-tables) tables in which [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) and [`PRIMARY KEY`]({% link {{ page.version.version }}/primary-key.md %}) constraints exist, the region is not included in the constraint, and the region cannot be computed from the constraint columns. - - [Shared locks]({% link {{ page.version.version }}/read-committed.md %}#locking-reads) cannot yet be promoted to exclusive locks. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/110435) - - [`SKIP LOCKED`]({% link {{ page.version.version }}/select-for-update.md %}#wait-policies) requests do not check for [replicated locks]({% link {{ page.version.version }}/architecture/transaction-layer.md %}#unreplicated-locks), which can be acquired by `READ COMMITTED` transactions. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/110743) - - Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/112488) + - [Shared locks]({% link {{ page.version.version }}/read-committed.md %}#locking-reads) cannot yet be promoted to exclusive locks. + - [`SKIP LOCKED`]({% link {{ page.version.version }}/select-for-update.md %}#wait-policies) requests do not check for [replicated locks]({% link {{ page.version.version }}/architecture/transaction-layer.md %}#unreplicated-locks), which can be acquired by `READ COMMITTED` transactions. + - Multi-column-family checks during updates are not supported under `READ COMMITTED` isolation. ### `CAST` expressions containing a subquery with an `ENUM` target are not supported -- Casting subqueries to ENUMs in views and UDFs is not supported. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/108184) +- Casting subqueries to ENUMs in views and UDFs is not supported. ### Physical cluster replication @@ -90,15 +90,15 @@ This page describes newly identified limitations in the CockroachDB {{page.relea - Expressions (column, index, constraint) in tables. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/87699) + - Views. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/87699) + - Other user-defined functions. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/93049) + #### Limitations on expressions allowed within UDFs @@ -106,11 +106,11 @@ The following are not currently allowed within the body of a [UDF]({% link {{ pa - [Common table expressions]({% link {{ page.version.version }}/common-table-expressions.md %}) (CTE), recursive or non-recursive, are not supported in [user-defined functions]({% link {{ page.version.version }}/user-defined-functions.md %}) (UDF). That is, you cannot use a `WITH` clause in the body of a UDF. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/92961) + - References to other user-defined functions. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/93049) + ### Table-level restore will not restore user-defined functions @@ -120,13 +120,13 @@ The following are not currently allowed within the body of a [UDF]({% link {{ pa In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. -[Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/82774) + ### `null_ordered_last` does not produce correct results with tuples By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL`s after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it is broken when the ordering column is a tuple. -[Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/93558) + ### Limitations for `DROP OWNED BY` @@ -140,7 +140,7 @@ By default, CockroachDB orders `NULL`s before all other values. For compatibilit [Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. This is expected to be resolved in an upcoming 22.2 patch release. -[GitHub tracking issue](https://github.com/cockroachdb/cockroach/issues/93161) + ### Limited SQL cursor support @@ -156,7 +156,7 @@ The following PostgreSQL syntax and features are currently unsupported for [trig {% include {{ page.version.version }}/sql/trigram-unsupported-syntax.md %} -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/41285) + ### Statements containing multiple modification subqueries of the same table are disallowed @@ -167,31 +167,31 @@ Statements containing multiple modification subqueries mutating the same row cou Note that if multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/70731) + ### `transaction_rows_read_err` and `transaction_rows_written_err` do not halt query execution The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/70473) + ### `sql.guardrails.max_row_size_err` misses indexed virtual computed columns The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/69540) + ### CockroachDB does not allow inverted indexes with `STORING` CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/88278) + ### `AS OF SYSTEM TIME` does not support placeholders CockroachDB does not support placeholders in [`AS OF SYSTEM TIME`]({% link {{ page.version.version }}/as-of-system-time.md %}). The time value must be embedded in the SQL string. -[Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/30955) + ### CockroachDB does not properly optimize some left and anti joins with GIN indexes @@ -342,13 +342,13 @@ UNION ALL SELECT * FROM t1 LEFT JOIN t2 ON st_contains(t1.geom, t2.geom) AND t2. (54 rows) ``` -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/59649) + ### Inverted join for `tsvector` and `tsquery` types is not supported CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables. -[Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/102731) + ### Using `RESTORE` with multi-region table localities @@ -356,7 +356,7 @@ CockroachDB cannot index-accelerate queries with `@@` predicates when both sides - {% include {{ page.version.version }}/known-limitations/restore-multiregion-match.md %} -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/71071) + ### `SET` does not `ROLLBACK` in a transaction @@ -392,7 +392,7 @@ CockroachDB cannot index-accelerate queries with `@@` predicates when both sides {% include {{page.version.version}}/known-limitations/stats-refresh-upgrade.md %} {% include {{ page.version.version }}/known-limitations/forecasted-stats-limitations.md %} -- CockroachDB does not collect statistics for [virtual computed columns]({% link {{ page.version.version }}/computed-columns.md %}). This can prevent the [optimizer]({% link {{ page.version.version }}/cost-based-optimizer.md %}) from accurately calculating the cost of scanning an index on a virtual column, and, transitively, the cost of scanning an [expression index]({% link {{ page.version.version }}/expression-indexes.md %}). [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/68254) +- CockroachDB does not collect statistics for [virtual computed columns]({% link {{ page.version.version }}/computed-columns.md %}). This can prevent the [optimizer]({% link {{ page.version.version }}/cost-based-optimizer.md %}) from accurately calculating the cost of scanning an index on a virtual column, and, transitively, the cost of scanning an [expression index]({% link {{ page.version.version }}/expression-indexes.md %}). ### Differences in syntax and behavior between CockroachDB and PostgreSQL @@ -404,7 +404,7 @@ For a list of known differences in syntax and behavior between CockroachDB and P CockroachDB does not currently support multiple arbiter indexes for [`INSERT ON CONFLICT DO UPDATE`]({% link {{ page.version.version }}/insert.md %}#on-conflict-clause), and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/53170) + ### Spatial support limitations @@ -412,33 +412,33 @@ CockroachDB supports efficiently storing and querying [spatial data]({% link {{ - Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/49203) + - The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/49402) + - The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/49448) + - CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/56124) + - CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/55903) + - CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/55227) + - CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). Note that, in [`IMPORT PGDUMP`]({% link molt/migrate-to-cockroachdb.md %}) output, [`GEOMETRY` and `GEOGRAPHY`]({% link {{ page.version.version }}/export-spatial-data.md %}) data type names are prefixed by `public.`. If the type has a type modifier, you must remove the `public.` from the type name in order for the statements to work in CockroachDB. - [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/56492) + ### Limitations for composite types @@ -446,7 +446,7 @@ CockroachDB supports efficiently storing and querying [spatial data]({% link {{ - {% include {{page.version.version}}/cdc/avro-udt-composite.md %} - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} -- Updating subfields of composite types using dot syntax results in a syntax error. [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/102984) +- Updating subfields of composite types using dot syntax results in a syntax error. ### Enterprise `BACKUP` does not capture database/table/column comments @@ -454,7 +454,7 @@ The [`COMMENT ON`]({% link {{ page.version.version }}/comment-on.md %}) statemen As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/44396) + ### `SHOW BACKUP` does not support symlinks for nodelocal @@ -468,15 +468,15 @@ Accessing the DB Console for a secure cluster now requires login information (i. CockroachDB tries to optimize most comparisons operators in `WHERE` and `HAVING` clauses into constraints on SQL indexes by only accessing selected rows. This is done for `LIKE` clauses when a common prefix for all selected rows can be determined in the search pattern (e.g., `... LIKE 'Joe%'`). However, this optimization is not yet available if the `ESCAPE` keyword is also used. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/30192) -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/35706) + + ### Current sequence value not checked when updating min/max value Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/23719) + ### Using `default_int_size` session variable in batch of statements @@ -484,7 +484,7 @@ When setting the `default_int_size` [session variable]({% link {{ page.version.v As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/32846) + ### `COPY` syntax not supported by CockroachDB @@ -498,7 +498,7 @@ As a workaround, set `default_int_size` via your database driver, or ensure that {% include {{ page.version.version }}/known-limitations/partitioning-with-placeholders.md %} -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/19464) + ### Dropping a single partition @@ -533,7 +533,7 @@ ERROR: nextval(): unimplemented: cannot evaluate scalar expressions containing s SQLSTATE: 0A000 ~~~ -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/42508) + ### Available capacity metric in the DB Console @@ -609,7 +609,7 @@ Many string operations are not properly overloaded for [collated strings]({% lin pq: unsupported binary operator: || ~~~ -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/10679) + ### Max size of a single column family @@ -641,10 +641,9 @@ Transactions with [priority `HIGH`]({% link {{ page.version.version }}/transacti ERROR: unimplemented: cannot use ROLLBACK TO SAVEPOINT in a HIGH PRIORITY transaction containing DDL SQLSTATE: 0A000 HINT: You have attempted to use a feature that is not yet implemented. -See: https://github.com/cockroachdb/cockroach/issues/46414 ~~~ -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/46414) + ### CockroachDB does not test for all connection failure scenarios @@ -656,7 +655,7 @@ However, if there is no host at the target IP address, or if a firewall rule blo - Configure any active network firewalls to allow node-to-node traffic. - Verify that orchestration tools (e.g., Kubernetes) are configured to use the correct network connection information. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/53410) + ### Some column-dropping schema changes do not roll back properly @@ -664,11 +663,11 @@ Some [schema changes]({% link {{ page.version.version }}/online-schema-changes.m In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/46541) + In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/47712) + To reduce the chance that a column drop will roll back incorrectly: @@ -689,7 +688,7 @@ There is no guaranteed state switch from `DECOMMISSIONING` to `DECOMMISSIONED` i This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. -[Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/94430) + ### Remove a `UNIQUE` index created as part of `CREATE TABLE` diff --git a/src/current/v23.2/partial-indexes.md b/src/current/v23.2/partial-indexes.md index ba2b096d089..2ef5d2df87f 100644 --- a/src/current/v23.2/partial-indexes.md +++ b/src/current/v23.2/partial-indexes.md @@ -88,9 +88,9 @@ You can force queries [to use a specific partial index]({% link {{ page.version. ## Known limitations -- CockroachDB does not currently support [`IMPORT`]({% link {{ page.version.version }}/import.md %}) statements on tables with partial indexes. See [tracking issue](https://github.com/cockroachdb/cockroach/issues/50225). -- CockroachDB does not currently support multiple arbiter indexes for `INSERT ON CONFLICT DO UPDATE`, and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. See [tracking issue](https://github.com/cockroachdb/cockroach/issues/53170). -- CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}). See [tracking issue](https://github.com/cockroachdb/cockroach/issues/97813). +- CockroachDB does not currently support [`IMPORT`]({% link {{ page.version.version }}/import.md %}) statements on tables with partial indexes. +- CockroachDB does not currently support multiple arbiter indexes for `INSERT ON CONFLICT DO UPDATE`, and will return an error if there are multiple unique or exclusion constraints matching the `ON CONFLICT DO UPDATE` specification. +- CockroachDB prevents a column from being dropped using [`ALTER TABLE ... DROP COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#drop-column) if it is referenced by a partial index predicate. To drop such a column, the partial indexes need to be dropped first using [`DROP INDEX`]({% link {{ page.version.version }}/drop-index.md %}). ## Examples diff --git a/src/current/v23.2/postgresql-compatibility.md b/src/current/v23.2/postgresql-compatibility.md index 319e81338f0..16f079f9574 100644 --- a/src/current/v23.2/postgresql-compatibility.md +++ b/src/current/v23.2/postgresql-compatibility.md @@ -34,11 +34,11 @@ When set to `true`, multiple portals can be open at the same time, with their ex This feature has the following limitations: - Only read-only [`SELECT` queries]({% link {{ page.version.version }}/selection-queries.md %}) without [subqueries]({% link {{ page.version.version }}/subqueries.md %}) are supported. -- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - [cockroachdb/cockroach#96398](https://github.com/cockroachdb/cockroach/issues/96398) -- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - [cockroachdb/cockroach#100822](https://github.com/cockroachdb/cockroach/issues/100822) -- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - [cockroachdb/cockroach#99404](https://github.com/cockroachdb/cockroach/issues/99404) +- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - +- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - +- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - -In addition to the known issues, additional performance testing is needed. The current list of known issues can be viewed [on GitHub using the `A-pausable-portals` label](https://github.com/cockroachdb/cockroach/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc++label%3AA-pausable-portals+), and we welcome bug reports. +In addition to the known issues, additional performance testing is needed. ## Features that differ from PostgreSQL @@ -181,7 +181,7 @@ An `x` value less than `1` would result in the following error: pq: check constraint violated ~~~ -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/35370) + ### Column name from an outer column inside a subquery @@ -207,7 +207,7 @@ PostgreSQL: 1 ~~~ -[Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/46563) + ### SQL Compatibility diff --git a/src/current/v23.2/query-spatial-data.md b/src/current/v23.2/query-spatial-data.md index 7b5f5aadef4..73828f77ade 100644 --- a/src/current/v23.2/query-spatial-data.md +++ b/src/current/v23.2/query-spatial-data.md @@ -24,7 +24,7 @@ Just as CockroachDB strives for [PostgreSQL compatibility]({% link {{ page.versi CockroachDB does not implement the full list of PostGIS built-in functions and operators. Also, [spatial indexing works differently]({% link {{ page.version.version }}/spatial-indexes.md %}) (see the [Performance](#performance) section below). For a list of the spatial functions CockroachDB supports, see [Geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions). -If your application needs support for functions that are not yet implemented, check the [meta-issue for built-in function support on GitHub](https://github.com/cockroachdb/cockroach/issues/49203), which describes how to find an issue for the built-in function(s) you need. +If your application needs support for functions that are not yet implemented, check the , which describes how to find an issue for the built-in function(s) you need. For a list of other known limitations, see [Known Limitations]({% link {{ page.version.version }}/known-limitations.md %}#spatial-support-limitations). diff --git a/src/current/v23.2/restore.md b/src/current/v23.2/restore.md index 035a2fad37b..67712c7251d 100644 --- a/src/current/v23.2/restore.md +++ b/src/current/v23.2/restore.md @@ -586,7 +586,7 @@ For more detail on using this option with `BACKUP`, see [Incremental backups wit ## Known limitations -- To successfully [restore a table into a multi-region database](#restoring-to-multi-region-databases), it is necessary for the order and regions to match between the source and destination database. See the [Known Limitations]({% link {{ page.version.version }}/known-limitations.md %}#using-restore-with-multi-region-table-localities) page for detail on ordering and matching regions. [Tracking GitHub Issue](https://github.com/cockroachdb/cockroach/issues/71071) +- To successfully [restore a table into a multi-region database](#restoring-to-multi-region-databases), it is necessary for the order and regions to match between the source and destination database. See the [Known Limitations]({% link {{ page.version.version }}/known-limitations.md %}#using-restore-with-multi-region-table-localities) page for detail on ordering and matching regions. - {% include {{ page.version.version }}/known-limitations/restore-tables-non-multi-reg.md %} - {% include {{ page.version.version }}/known-limitations/restore-udf.md %} diff --git a/src/current/v23.2/spatial-tutorial.md b/src/current/v23.2/spatial-tutorial.md index 1cfbecc588f..b75267d0054 100644 --- a/src/current/v23.2/spatial-tutorial.md +++ b/src/current/v23.2/spatial-tutorial.md @@ -964,7 +964,7 @@ Time: 1.447s total (execution 1.446s / network 0.000s) Unfortunately, this query is a bit slower than you would like: about 1.5 seconds on a single-node [`cockroach demo`]({% link {{ page.version.version }}/cockroach-demo.md %}) cluster on a laptop. There are several reasons for this: 1. You haven't created any indexes at all yet. The query is likely to be doing full table scans, which you will need to hunt down with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %}). -1. CockroachDB does not yet have built-in support for index-based nearest neighbor queries. If this feature is important to you, please comment with some information about your use case on [cockroachdb/cockroach#55227](https://github.com/cockroachdb/cockroach/issues/55227). +1. CockroachDB does not yet have built-in support for index-based nearest neighbor queries. If this feature is important to you, please comment with some information about your use case on . Let's look at the `EXPLAIN` output to see if there is something that can be done to improve this query's performance: diff --git a/src/current/v23.2/sql-feature-support.md b/src/current/v23.2/sql-feature-support.md index afcba09096c..286acbc267d 100644 --- a/src/current/v23.2/sql-feature-support.md +++ b/src/current/v23.2/sql-feature-support.md @@ -193,7 +193,7 @@ XML | ✗ | Standard | XML data can be stored as `BYTES`, but we do not offer XM Common table expressions | Partial | Common Extension | [Common Table Expressions documentation]({% link {{ page.version.version }}/common-table-expressions.md %}) Stored procedures | Partial | Common Extension | [Stored procedures documentation]({% link {{ page.version.version }}/stored-procedures.md %}) Cursors | Partial | Standard | [Cursors documentation]({% link {{ page.version.version }}/cursors.md %}) - Triggers | ✗ | Standard | Execute a set of commands whenever a specified event occurs. [GitHub issue tracking trigger support](https://github.com/cockroachdb/cockroach/issues/28296). + Triggers | ✗ | Standard | Execute a set of commands whenever a specified event occurs. . Row-level TTL | ✓ | Common Extension | Automatically delete expired rows. For more information, see [Batch-delete expired data with Row-Level TTL]({% link {{ page.version.version }}/row-level-ttl.md %}). User-defined functions | Partial | Standard | [User-Defined Functions documentation]({% link {{ page.version.version }}/user-defined-functions.md %}) - `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. [GitHub issue tracking `CREATE EXTENSION` support](https://github.com/cockroachdb/cockroach/issues/74777). + `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. . diff --git a/src/current/v23.2/sql-name-resolution.md b/src/current/v23.2/sql-name-resolution.md index 554a9a65583..9138b02ddce 100644 --- a/src/current/v23.2/sql-name-resolution.md +++ b/src/current/v23.2/sql-name-resolution.md @@ -37,7 +37,7 @@ If you are upgrading to {{ page.version.version }}, take any combination of the - [Create new schemas]({% link {{ page.version.version }}/create-schema.md %}) in databases on your cluster. After the schemas are created, use [`ALTER TABLE ... RENAME`]({% link {{ page.version.version }}/alter-table.md %}#rename-to), [`ALTER SEQUENCE ... RENAME`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE ... RENAME`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW ... RENAME`]({% link {{ page.version.version }}/alter-view.md %}) statements to move objects between databases as needed. To move objects between schemas, use [`ALTER TABLE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-table.md %}#set-schema), [`ALTER SEQUENCE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-sequence.md %}), or [`ALTER VIEW ... SET SCHEMA`]({% link {{ page.version.version }}/alter-view.md %}). -- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). For details, see [tracking issue](https://github.com/cockroachdb/cockroach/issues/55791). +- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). ## How name resolution works diff --git a/src/current/v23.2/srid-4326.md b/src/current/v23.2/srid-4326.md index cfd15368e47..3fd4d2a27e3 100644 --- a/src/current/v23.2/srid-4326.md +++ b/src/current/v23.2/srid-4326.md @@ -114,7 +114,7 @@ ERROR: st_contains(): operation on mixed SRIDs forbidden: (Point, 0) != (Point, ## Known limitations {{site.data.alerts.callout_info}} -Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. For more information, see the tracking issue [cockroachdb/cockroach#55903](https://github.com/cockroachdb/cockroach/issues/55903). +Defining a custom SRID by inserting rows into [`spatial_ref_sys`]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial_ref_sys) is not currently supported. For more information, see the tracking issue . {{site.data.alerts.end}} ## See also diff --git a/src/current/v23.2/st_union.md b/src/current/v23.2/st_union.md index 290e6481fe6..a092d76a34a 100644 --- a/src/current/v23.2/st_union.md +++ b/src/current/v23.2/st_union.md @@ -12,7 +12,7 @@ Given a set of shapes (e.g., from a [selection query]({% link {{ page.version.ve - [`GEOMETRY`]({% link {{ page.version.version }}/architecture/glossary.md %}#geometry) {{site.data.alerts.callout_info}} -The non-aggregate version of `ST_Union` is not yet implemented. For more information, see [cockroach#49064](https://github.com/cockroachdb/cockroach/issues/49064). +The non-aggregate version of `ST_Union` is not yet implemented. {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v23.2/temporary-tables.md b/src/current/v23.2/temporary-tables.md index bd3a9adefdd..406328272ca 100644 --- a/src/current/v23.2/temporary-tables.md +++ b/src/current/v23.2/temporary-tables.md @@ -10,7 +10,7 @@ docs_area: develop To create a temp table, add `TEMP`/`TEMPORARY` to a [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}) or [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}) statement. For full syntax details, see the [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}#synopsis) and [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}#synopsis) pages. For example usage, see [Examples](#examples). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v23.2/trigram-indexes.md b/src/current/v23.2/trigram-indexes.md index 474b258163a..140c99fe2a9 100644 --- a/src/current/v23.2/trigram-indexes.md +++ b/src/current/v23.2/trigram-indexes.md @@ -350,7 +350,7 @@ CREATE INDEX ON t USING GIN ((json_col->>'json_text_field')) ## Unsupported features -The following PostgreSQL syntax and features are currently unsupported. For details, see the [tracking issue](https://github.com/cockroachdb/cockroach/issues/41285). +The following PostgreSQL syntax and features are currently unsupported. For details, see the . {% include {{ page.version.version }}/sql/trigram-unsupported-syntax.md %} diff --git a/src/current/v23.2/upgrade-cockroach-version.md b/src/current/v23.2/upgrade-cockroach-version.md index e7bff0217a9..817e439ad79 100644 --- a/src/current/v23.2/upgrade-cockroach-version.md +++ b/src/current/v23.2/upgrade-cockroach-version.md @@ -142,16 +142,16 @@ By default, after all nodes are running the new version, the upgrade process wil When upgrading from {{ previous_version }} to {{ page.version.version }}, certain features and performance improvements will be enabled only after finalizing the upgrade, including but not limited to: -- The coalescing of storage ranges for each table, index, or partition (collectively referred to as "schema objects") into a single range when individual schema objects are smaller than the default configured maximum range size (controlled using zone configs, specifically the `range_max_bytes parameter`). This change improves scalability with respect to the number of schema objects, since the underlying range count is no longer a potential performance bottleneck. After finalizing the upgrade to v23.2, you may observe a round of range merges and snapshot transfers. To disable this optimization, **before finalizing the upgrade**, set the `spanconfig.storage_coalesce_adjacent.enabled` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) to `false`. See the [v23.1 release notes]({% link releases/v23.1.md %}) for `SHOW RANGES` for more details. [#102961][#102961] -- The new output log format, which allows configuration of a time zone in log output. Before configuring a time zone, the cluster must be finalized on v23.2. [#104265][#104265] -- Performance improvements when a node reclaims disk space. [#106177][#106177] +- The coalescing of storage ranges for each table, index, or partition (collectively referred to as "schema objects") into a single range when individual schema objects are smaller than the default configured maximum range size (controlled using zone configs, specifically the `range_max_bytes parameter`). This change improves scalability with respect to the number of schema objects, since the underlying range count is no longer a potential performance bottleneck. After finalizing the upgrade to v23.2, you may observe a round of range merges and snapshot transfers. To disable this optimization, **before finalizing the upgrade**, set the `spanconfig.storage_coalesce_adjacent.enabled` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) to `false`. See the [v23.1 release notes]({% link releases/v23.1.md %}) for `SHOW RANGES` for more details. +- The new output log format, which allows configuration of a time zone in log output. Before configuring a time zone, the cluster must be finalized on v23.2. +- Performance improvements when a node reclaims disk space. - The following [admission control]({% link {{ page.version.version }}/admission-control.md %}#operations-subject-to-admission-control) mechanisms, which help to maintain cluster performance and availability when some nodes experience high load:
  • Delete operations
  • Replication
  • [#98308][#98308] -- Collecting a statement diagnostic bundle for a particular plan. The existing fingerprint-based matching has been extended to also include plan-gist-based matching and "anti-matching" (collecting a bundle for any plan other than the provided plan gist). [#105477][#105477] -- A new system table, `system.region_liveness`, that tracks the availability and the timestamp of the latest unavailability for each cluster region. [#107903][#107903] -- The ability of a `WaitPolicy_Error` request to push the timestamp of a transaction with a lower priority. [#108190][#108190] -- Configuring a changefeed with the `lagging_ranges_threshold` or `lagging_ranges_polling_interval` [changefeed options]({% link {{ page.version.version }}/create-changefeed.md %}#options). [#110649][#110649] -- Removal of the upgrade step `grantExecuteToPublicOnAllFunctions`, which is no longer required because post-serialization changes now grant `EXECUTE` on functions to the public role. [#114203][#114203] -- A fix to a bug that could allow a user to execute a user-defined function without the `EXECUTE` privilege on the function. If a user does not have the privilege, the user-defined function does not run and an error is logged. [#114203][#114203] +- Collecting a statement diagnostic bundle for a particular plan. The existing fingerprint-based matching has been extended to also include plan-gist-based matching and "anti-matching" (collecting a bundle for any plan other than the provided plan gist). +- A new system table, `system.region_liveness`, that tracks the availability and the timestamp of the latest unavailability for each cluster region. +- The ability of a `WaitPolicy_Error` request to push the timestamp of a transaction with a lower priority. +- Configuring a changefeed with the `lagging_ranges_threshold` or `lagging_ranges_polling_interval` [changefeed options]({% link {{ page.version.version }}/create-changefeed.md %}#options). +- Removal of the upgrade step `grantExecuteToPublicOnAllFunctions`, which is no longer required because post-serialization changes now grant `EXECUTE` on functions to the public role. +- A fix to a bug that could allow a user to execute a user-defined function without the `EXECUTE` privilege on the function. If a user does not have the privilege, the user-defined function does not run and an error is logged. For more details about a given feature, refer to the [CockroachDB v23.2.0 release notes]({% link releases/v23.2.md %}#v23-2-0). @@ -338,14 +338,3 @@ In the event of catastrophic failure or corruption, the only option will be to s - [Collect Debug Information]({% link {{ page.version.version }}/cockroach-debug-zip.md %}) - [View Version Details]({% link {{ page.version.version }}/cockroach-version.md %}) - [Release notes for our latest version]({% link releases/{{page.version.version}}.md %}) - -[#102961]: https://github.com/cockroachdb/cockroach/pull/102961 -[#104265]: https://github.com/cockroachdb/cockroach/pull/104265 -[#107474]: https://github.com/cockroachdb/cockroach/pull/107474 -[#106177]: https://github.com/cockroachdb/cockroach/pull/106177 -[#98308]: https://github.com/cockroachdb/cockroach/pull/98308 -[#105477]: https://github.com/cockroachdb/cockroach/pull/105477 -[#107903]: https://github.com/cockroachdb/cockroach/pull/107903 -[#108190]: https://github.com/cockroachdb/cockroach/pull/108190 -[#110649]: https://github.com/cockroachdb/cockroach/pull/110649 -[#114203]: https://github.com/cockroachdb/cockroach/pull/114203 diff --git a/src/current/v23.2/user-defined-functions.md b/src/current/v23.2/user-defined-functions.md index fb0684166e3..5c4357e99fe 100644 --- a/src/current/v23.2/user-defined-functions.md +++ b/src/current/v23.2/user-defined-functions.md @@ -297,15 +297,15 @@ User-defined functions are not currently supported in: - Expressions (column, index, constraint) in tables. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/87699) + - Views. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/87699) + - Other user-defined functions. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/93049) + ### Limitations on UDF creation @@ -313,11 +313,11 @@ The following cannot be used in UDF definitions: - `OUT` and `INOUT` argument modes. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/100405) + - `RECORD` input arguments. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/105713) + ### Limitations on expressions allowed within UDFs @@ -325,15 +325,15 @@ The following are not currently allowed within the body of a UDF: - CTEs (common table expressions). - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/92961) + - References to other user-defined functions. - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/93049) + - [DDL statements]({% link {{ page.version.version }}/sql-statements.md %}#data-definition-statements) (e.g., `CREATE TABLE`, `CREATE INDEX`). - [Tracking GitHub issue](https://github.com/cockroachdb/cockroach/issues/110080) + ## See also diff --git a/src/current/v23.2/vectorized-execution.md b/src/current/v23.2/vectorized-execution.md index f8ab08de50b..2d8fd337644 100644 --- a/src/current/v23.2/vectorized-execution.md +++ b/src/current/v23.2/vectorized-execution.md @@ -69,7 +69,7 @@ You can also configure a node's total budget for in-memory query processing with The vectorized engine does not support queries containing: -- A join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). See [tracking issue](https://github.com/cockroachdb/cockroach/issues/38018). +- A join filtered with an [`ON` expression]({% link {{ page.version.version }}/joins.md %}#supported-join-conditions). ### Spatial features diff --git a/src/current/v23.2/views.md b/src/current/v23.2/views.md index 89357fb6d52..f36eefd5b19 100644 --- a/src/current/v23.2/views.md +++ b/src/current/v23.2/views.md @@ -634,7 +634,7 @@ To speed up queries on materialized views, you can add an [index]({% link {{ pag CockroachDB supports session-scoped temporary views. Unlike persistent views, temporary views can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary views on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v24.1/cockroachdb-feature-availability.md b/src/current/v24.1/cockroachdb-feature-availability.md index b5dcb68812a..a88ba43f662 100644 --- a/src/current/v24.1/cockroachdb-feature-availability.md +++ b/src/current/v24.1/cockroachdb-feature-availability.md @@ -140,7 +140,7 @@ Example: ### Check for constraint violations with `SCRUB` -Checks the consistency of [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) indexes, [`CHECK`]({% link {{ page.version.version }}/check.md %}) constraints, and more. Partially implemented; see [cockroachdb/cockroach#10425](https://github.com/cockroachdb/cockroach/issues/10425) for details. +Checks the consistency of [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) indexes, [`CHECK`]({% link {{ page.version.version }}/check.md %}) constraints, and more. Partially implemented; see for details. {{site.data.alerts.callout_info}} This example uses the `users` table from our open-source, fictional peer-to-peer vehicle-sharing application, [MovR]({% link {{ page.version.version }}/movr.md %}). @@ -175,7 +175,7 @@ CockroachDB supports [altering the column types]({% link {{ page.version.version ### Temporary objects -[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Dropping large numbers of temporary objects in rapid succession can also enqueue many [schema change GC jobs]({% link {{ page.version.version }}/show-jobs.md %}), which may further degrade cluster performance. This performance degradation could persist long after creating the temporary objects. For more details, see [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Dropping large numbers of temporary objects in rapid succession can also enqueue many [schema change GC jobs]({% link {{ page.version.version }}/show-jobs.md %}), which may further degrade cluster performance. This performance degradation could persist long after creating the temporary objects. To enable temporary objects, set the `experimental_enable_temp_tables` [session variable]({% link {{ page.version.version }}/show-vars.md %}) to `on`. diff --git a/src/current/v24.1/common-table-expressions.md b/src/current/v24.1/common-table-expressions.md index a76f13ff39d..293fa7c8299 100644 --- a/src/current/v24.1/common-table-expressions.md +++ b/src/current/v24.1/common-table-expressions.md @@ -446,7 +446,7 @@ SELECT COUNT(*) FROM temp; Because this pattern incurs the overhead of a new scan for each iteration, it is slower per row than a full scan. It is therefore faster than a full scan in cases (such as this one) where many rows are skipped, but is slower if they are not. {{site.data.alerts.callout_info}} -Some recursive CTEs are not not yet optimized. For details, see the [tracking issue](https://github.com/cockroachdb/cockroach/issues/89954). +Some recursive CTEs are not not yet optimized. For details, see the . {{site.data.alerts.end}} ## Correlated common table expressions diff --git a/src/current/v24.1/configure-replication-zones.md b/src/current/v24.1/configure-replication-zones.md index 647bf140411..a6e028a17a7 100644 --- a/src/current/v24.1/configure-replication-zones.md +++ b/src/current/v24.1/configure-replication-zones.md @@ -98,7 +98,7 @@ For more information, see the following subsections: The hierarchy of inheritance for zone configs can be visualized using the following outline-style diagram, in which each level of indentation denotes an inheritance relationship. -The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. ``` - default @@ -127,7 +127,7 @@ From the whole-system perspective, the hierarchy of schema object zone configs c The following diagram presents the same set of schema objects as the previous outline-style diagram, but using boxes and lines joined with arrows that represent the "top-down" view. -Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information about this limitation, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. zone config inheritance diagram diff --git a/src/current/v24.1/create-sequence.md b/src/current/v24.1/create-sequence.md index bae71037988..39ff06afa39 100644 --- a/src/current/v24.1/create-sequence.md +++ b/src/current/v24.1/create-sequence.md @@ -59,7 +59,7 @@ CockroachDB supports the following [SQL sequence functions]({% link {{ page.vers CockroachDB supports session-scoped temporary sequences. Unlike persistent sequences, temporary sequences can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary sequences on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v24.1/create-table.md b/src/current/v24.1/create-table.md index d1a4c389267..c1ec5aee14f 100644 --- a/src/current/v24.1/create-table.md +++ b/src/current/v24.1/create-table.md @@ -155,7 +155,7 @@ If you use `GENERATED BY DEFAULT AS IDENTITY` to define the identity column, any Note the following limitations of identity columns: -- `GENERATED ALWAYS AS IDENTITY`/`GENERATED BY DEFAULT AS IDENTITY` is supported in [`ALTER TABLE ... ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statements only when the table being altered is empty, as [CockroachDB does not support back-filling sequential column data]({% link {{ page.version.version }}/known-limitations.md %}#adding-a-column-with-sequence-based-default-values). For more information, see [#42508](https://github.com/cockroachdb/cockroach/issues/42508). +- `GENERATED ALWAYS AS IDENTITY`/`GENERATED BY DEFAULT AS IDENTITY` is supported in [`ALTER TABLE ... ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statements only when the table being altered is empty, as [CockroachDB does not support back-filling sequential column data]({% link {{ page.version.version }}/known-limitations.md %}#adding-a-column-with-sequence-based-default-values). For more information, see. - Unlike PostgreSQL, CockroachDB does not support using the `OVERRIDING SYSTEM VALUE` clause in `INSERT`/`UPDATE`/`UPSERT` statements to overwrite `GENERATED ALWAYS AS IDENTITY` identity column values. For an example of an identity column, see [Create a table with an identity column](#create-a-table-with-an-identity-column). diff --git a/src/current/v24.1/disaster-recovery-planning.md b/src/current/v24.1/disaster-recovery-planning.md index 69eaf1fac32..33a25491e96 100644 --- a/src/current/v24.1/disaster-recovery-planning.md +++ b/src/current/v24.1/disaster-recovery-planning.md @@ -320,7 +320,7 @@ If your cluster is running, you do not have a backup that encapsulates the time If you have corrupted data in a database or table, [restore]({% link {{ page.version.version }}/restore.md %}) the object from a prior [backup]({% link {{ page.version.version }}/backup.md %}). If revision history is in the backup, you can restore from a [point in time]({% link {{ page.version.version }}/take-backups-with-revision-history-and-restore-from-a-point-in-time.md %}). -Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see [#51380](https://github.com/cockroachdb/cockroach/issues/51380) for more information), and you will need to take a backup that is backdated to the system time when the database still existed. +Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see for more information), and you will need to take a backup that is backdated to the system time when the database still existed. {{site.data.alerts.callout_info}} If the table you are restoring has foreign keys, [careful consideration]({% link {{ page.version.version }}/restore.md %}#remove-the-foreign-key-before-restore) should be applied to make sure data integrity is maintained during the restore process. diff --git a/src/current/v24.1/example-apps.md b/src/current/v24.1/example-apps.md index bea3cfd1876..7cebd29785e 100644 --- a/src/current/v24.1/example-apps.md +++ b/src/current/v24.1/example-apps.md @@ -14,7 +14,7 @@ Click the links in the tables below to see simple but complete example applicati If you are looking to do a specific task such as connect to the database, insert data, or run multi-statement transactions, see [this list of tasks](#tasks). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM with **partial** support. If you encounter problems, please with details to help us make progress toward full support. Note that tools with [**community-level** support]({% link {{ page.version.version }}/community-tooling.md %}) have been tested or developed by the CockroachDB community, but are not officially supported by Cockroach Labs. If you encounter problems with using these tools, please contact the maintainer of the tool with details. {{site.data.alerts.end}} diff --git a/src/current/v24.1/file-an-issue.md b/src/current/v24.1/file-an-issue.md index 9255e2c08b2..81da0da5fef 100644 --- a/src/current/v24.1/file-an-issue.md +++ b/src/current/v24.1/file-an-issue.md @@ -28,7 +28,7 @@ To file an issue in GitHub, we need the following information: ### Template -You can use this as a template for [filing an issue in GitHub](https://github.com/cockroachdb/cockroach/issues/new): +You can use this as a template for : ~~~ diff --git a/src/current/v24.1/foreign-key.md b/src/current/v24.1/foreign-key.md index 55677511e3d..0bd56ddd882 100644 --- a/src/current/v24.1/foreign-key.md +++ b/src/current/v24.1/foreign-key.md @@ -93,7 +93,7 @@ For matching purposes, composite foreign keys can be in one of three states: For examples showing how these key matching algorithms work, see [Match composite foreign keys with `MATCH SIMPLE` and `MATCH FULL`](#match-composite-foreign-keys-with-match-simple-and-match-full). {{site.data.alerts.callout_info}} -CockroachDB does not support `MATCH PARTIAL`. For more information, see issue [#20305](https://github.com/cockroachdb/cockroach/issues/20305). +CockroachDB does not support `MATCH PARTIAL`. For more information, see issue. {{site.data.alerts.end}} ### Foreign key actions diff --git a/src/current/v24.1/install-client-drivers.md b/src/current/v24.1/install-client-drivers.md index 984671a0dfc..b25a85de6f1 100644 --- a/src/current/v24.1/install-client-drivers.md +++ b/src/current/v24.1/install-client-drivers.md @@ -8,7 +8,7 @@ docs_area: develop CockroachDB supports both native drivers and the PostgreSQL wire protocol, so most available PostgreSQL client drivers and ORM frameworks should work with CockroachDB. Choose a language for supported clients, and follow the installation steps. After you install a client library, you can [connect to the database]({% link {{ page.version.version }}/connect-to-the-database.md %}). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please with details to help us make progress toward full support. {{site.data.alerts.end}}
    diff --git a/src/current/v24.1/install-cockroachdb-mac.md b/src/current/v24.1/install-cockroachdb-mac.md index 5155c5bf0cd..8ef0dc193ea 100644 --- a/src/current/v24.1/install-cockroachdb-mac.md +++ b/src/current/v24.1/install-cockroachdb-mac.md @@ -201,4 +201,4 @@ CockroachDB runtimes built for the ARM architecture have the following limitatio {% comment %}v22.2.0+{% endcomment %} -On macOS ARM systems, [spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead [run the Intel binary](#install-the-binary) or use the[Docker container image](#use-docker). Refer to [GitHub issue #93161](https://github.com/cockroachdb/cockroach/issues/93161) for more information. +On macOS ARM systems, [spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead [run the Intel binary](#install-the-binary) or use the[Docker container image](#use-docker). Refer to for more information. diff --git a/src/current/v24.1/intellij-idea.md b/src/current/v24.1/intellij-idea.md index de46249320f..f86ab850bb1 100644 --- a/src/current/v24.1/intellij-idea.md +++ b/src/current/v24.1/intellij-idea.md @@ -79,11 +79,7 @@ Requires setting **Introspect using JDBC metadata** ([details below](#set-cockro You can now use IntelliJ's [database tool window](https://www.jetbrains.com/help/idea/working-with-the-database-tool-window.html) to interact with your CockroachDB cluster. -## Report issues with IntelliJ IDEA & CockroachDB -If you encounter issues other than those outlined above, please [file an issue on the `cockroachdb/cockroach` GitHub repo](https://github.com/cockroachdb/cockroach/issues/new?template=bug_report.md), including the following details about the environment where you encountered the issue: - -- CockroachDB version ([`cockroach version`]({% link {{ page.version.version }}/cockroach-version.md %})) - IntelliJ IDEA version - Operating system - Steps to reproduce the behavior diff --git a/src/current/v24.1/known-limitations.md b/src/current/v24.1/known-limitations.md index c42ebef7e9a..380b002bc43 100644 --- a/src/current/v24.1/known-limitations.md +++ b/src/current/v24.1/known-limitations.md @@ -20,16 +20,16 @@ Limitations will be added as they are discovered. ### PL/pgSQL -- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. [#121605](https://github.com/cockroachdb/cockroach/issues/121605) -- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. [#114676](https://github.com/cockroachdb/cockroach/issues/114676) +- It is not possible to use a variable as a target more than once in the same `INTO` clause. For example, `SELECT 1, 2 INTO x, x;`. +- PLpgSQL variable declarations cannot inherit the type of a table row or column using `%TYPE` or `%ROWTYPE` syntax. ### UDFs and stored procedures -- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. [#122264](https://github.com/cockroachdb/cockroach/issues/122264) -- Routines cannot be created if they reference temporary tables. [#121375](https://github.com/cockroachdb/cockroach/issues/121375) -- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. [#121251](https://github.com/cockroachdb/cockroach/issues/121251) -- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. [#121247](https://github.com/cockroachdb/cockroach/issues/121247) -- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. [#122945](https://github.com/cockroachdb/cockroach/issues/122945) +- Routines cannot be invoked with named arguments, e.g., `SELECT foo(a => 1, b => 2);` or `SELECT foo(b := 1, a := 2);`. +- Routines cannot be created if they reference temporary tables. +- Routines cannot be created with unnamed `INOUT` parameters. For example, `CREATE PROCEDURE p(INOUT INT) AS $$ BEGIN NULL; END; $$ LANGUAGE PLpgSQL;`. +- Routines cannot be created if they return fewer columns than declared. For example, `CREATE FUNCTION f(OUT sum INT, INOUT a INT, INOUT b INT) LANGUAGE SQL AS $$ SELECT (a + b, b); $$;`. +- A `RECORD`-returning UDF cannot be created without a `RETURN` statement in the root block, which would restrict the wildcard type to a concrete one. ### Physical cluster replication fail back to primary cluster @@ -72,7 +72,7 @@ CockroachDB supports the [PostgreSQL wire protocol](https://www.postgresql.org/d #### `CAST` expressions containing a subquery with an `ENUM` target are not supported -Casting subqueries to ENUMs in views and UDFs is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) +Casting subqueries to ENUMs in views and UDFs is not supported. #### Statements containing multiple modification subqueries of the same table are disallowed @@ -81,13 +81,13 @@ Statements containing multiple modification subqueries mutating the same row cou - Set the `sql.multiple_modifications_of_table.enabled` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) to `true`. - Use the `enable_multiple_modifications_of_table` [session variable]({% link {{ page.version.version }}/set-vars.md %}). -If multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. [#70731](https://github.com/cockroachdb/cockroach/issues/70731) +If multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. #### Using `default_int_size` session variable in batch of statements When setting the `default_int_size` [session variable]({% link {{ page.version.version }}/set-vars.md %}) in a batch of statements such as `SET default_int_size='int4'; SELECT 1::IN`, the `default_int_size` variable will not take effect until the next statement. Statement parsing is asynchronous with statement execution. -As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. [#32846](https://github.com/cockroachdb/cockroach/issues/32846) +As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. #### Overload resolution for collated strings @@ -114,15 +114,15 @@ Many string operations are not properly overloaded for [collated strings]({% lin pq: unsupported binary operator: || ~~~ -[#10679](https://github.com/cockroachdb/cockroach/issues/10679) + #### Current sequence value not checked when updating min/max value -Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. [#23719](https://github.com/cockroachdb/cockroach/issues/23719) +Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. #### `null_ordered_last` does not produce correct results with tuples -By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL` values after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it does not work when the ordering column is a tuple. [#93558](https://github.com/cockroachdb/cockroach/issues/93558) +By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL` values after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it does not work when the ordering column is a tuple. ### Functions and procedures @@ -168,10 +168,9 @@ Transactions with [priority `HIGH`]({% link {{ page.version.version }}/transacti ERROR: unimplemented: cannot use ROLLBACK TO SAVEPOINT in a HIGH PRIORITY transaction containing DDL SQLSTATE: 0A000 HINT: You have attempted to use a feature that is not yet implemented. -See: https://github.com/cockroachdb/cockroach/issues/46414 ~~~ -[#46414](https://github.com/cockroachdb/cockroach/issues/46414) + #### `CANCEL JOB` limitations @@ -222,7 +221,7 @@ HINT: You have attempted to use a feature that is not yet implemented. See: https://go.crdb.dev/issue-v/42508/v24.1 ~~~ -[#42508](https://github.com/cockroachdb/cockroach/issues/42508) + #### Dropping a column referenced by a partial index @@ -249,9 +248,9 @@ When executing an [`ALTER TABLE ADD COLUMN`]({% link {{ page.version.version }}/ Some [schema changes]({% link {{ page.version.version }}/online-schema-changes.md %}) that [drop columns]({% link {{ page.version.version }}/alter-table.md %}#drop-column) cannot be [rolled back]({% link {{ page.version.version }}/rollback-transaction.md %}) properly. -In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. [#46541](https://github.com/cockroachdb/cockroach/issues/46541) +In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. -In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. [#47712](https://github.com/cockroachdb/cockroach/issues/47712) +In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. To reduce the chance that a column drop will roll back incorrectly: @@ -287,7 +286,7 @@ As a workaround, you can either [manually split a table's columns into multiple #### Placeholders in `PARTITION BY` -{% include {{ page.version.version }}/known-limitations/partitioning-with-placeholders.md %} [#19464](https://github.com/cockroachdb/cockroach/issues/19464) +{% include {{ page.version.version }}/known-limitations/partitioning-with-placeholders.md %} #### Unsupported trigram syntax @@ -303,7 +302,7 @@ The following PostgreSQL syntax and features are currently unsupported for [full #### CockroachDB does not allow inverted indexes with `STORING` -CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). [#88278](https://github.com/cockroachdb/cockroach/issues/88278) +CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). #### Multiple arbiter indexes for `INSERT ON CONFLICT DO UPDATE` @@ -323,19 +322,19 @@ CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ CockroachDB supports efficiently storing and querying [spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}), with the following limitations: -- Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. [#49203](https://github.com/cockroachdb/cockroach/issues/49203) +- Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. -- The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. [#49402](https://github.com/cockroachdb/cockroach/issues/49402) +- The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. -- The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. [#49448](https://github.com/cockroachdb/cockroach/issues/49448) +- The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. -- CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. [#56124](https://github.com/cockroachdb/cockroach/issues/56124) +- CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. -- CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). [#55903](https://github.com/cockroachdb/cockroach/issues/55903) +- CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). -- CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). [#55227](https://github.com/cockroachdb/cockroach/issues/55227) +- CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). -- CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). [#56492](https://github.com/cockroachdb/cockroach/issues/56492) +- CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). - {% include {{ page.version.version }}/known-limitations/srid-4326-limitations.md %} @@ -349,9 +348,9 @@ Refer to [`OID` best practices]({% link {{ page.version.version }}/oid.md %}#bes - {% include {{page.version.version}}/cdc/avro-udt-composite.md %} - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} -- Updating subfields of composite types using dot syntax results in a syntax error. [#102984](https://github.com/cockroachdb/cockroach/issues/102984) +- Updating subfields of composite types using dot syntax results in a syntax error. -- Tuple elements cannot be accessed without enclosing the [composite variable]({% link {{ page.version.version }}/create-type.md %}#create-a-composite-data-type) name in parentheses. For example, `(v).x`. [#114687](https://github.com/cockroachdb/cockroach/issues/114687) +- Tuple elements cannot be accessed without enclosing the [composite variable]({% link {{ page.version.version }}/create-type.md %}#create-a-composite-data-type) name in parentheses. For example, `(v).x`. #### `ALTER TYPE` limitations @@ -395,7 +394,7 @@ However, if there is no host at the target IP address, or if a firewall rule blo - Configure any active network firewalls to allow node-to-node traffic. - Verify that orchestration tools (e.g., Kubernetes) are configured to use the correct network connection information. -[#53410](https://github.com/cockroachdb/cockroach/issues/53410) + #### No guaranteed state switch from `DECOMMISSIONING` to `DECOMMISSIONED` if `node decommission` is interrupted @@ -404,7 +403,7 @@ There is no guaranteed state switch from `DECOMMISSIONING` to `DECOMMISSIONED` i - The `cockroach node decommission --wait-all` command was run and then interrupted - The `cockroach node decommission --wait=none` command was run -This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. [#94430](https://github.com/cockroachdb/cockroach/issues/94430) +This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. #### Simultaneous client connections and running queries on a single node @@ -440,7 +439,7 @@ As a workaround, [execute the file from the command line]({% link {{ page.versio #### Spatial features disabled for ARM Macs -[Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. [GitHub tracking issue](https://github.com/cockroachdb/cockroach/issues/93161) +[Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. #### Logging system limitations @@ -486,7 +485,7 @@ Accessing the DB Console for a secure cluster now requires login information (i. The [`COMMENT ON`]({% link {{ page.version.version }}/comment-on.md %}) statement associates comments to databases, tables, or columns. However, the internal table (`system.comments`) in which these comments are stored is not captured by a [`BACKUP`]({% link {{ page.version.version }}/backup.md %}) of a table or database. -As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. [#44396](https://github.com/cockroachdb/cockroach/issues/44396) +As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. #### `SHOW BACKUP` does not support symlinks for nodelocal @@ -513,8 +512,8 @@ Change data capture (CDC) provides efficient, distributed, row-level changefeeds The SQL optimizer has limitations under certain isolation levels: -- The new implementation of `SELECT FOR UPDATE` is not yet the default setting under `SERIALIZABLE` isolation. It can be used under `SERIALIZABLE` isolation by setting the `optimizer_use_lock_op_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}) to `true`. [#114737](https://github.com/cockroachdb/cockroach/issues/114737) -- `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. [#116836](https://github.com/cockroachdb/cockroach/issues/116836) +- The new implementation of `SELECT FOR UPDATE` is not yet the default setting under `SERIALIZABLE` isolation. It can be used under `SERIALIZABLE` isolation by setting the `optimizer_use_lock_op_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}) to `true`. +- `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. #### Statistics limitations @@ -523,7 +522,7 @@ The SQL optimizer has limitations under certain isolation levels: #### Incorrect query plans for partitions with `NULL` values -In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. [#82774](https://github.com/cockroachdb/cockroach/issues/82774) +In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. #### Vectorized engine limitations @@ -531,15 +530,15 @@ In cases where the partition definition includes a comparison with `NULL` and a #### `transaction_rows_read_err` and `transaction_rows_written_err` do not halt query execution -The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. [#70473](https://github.com/cockroachdb/cockroach/issues/70473) +The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. #### `sql.guardrails.max_row_size_err` misses indexed virtual computed columns -The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. [#69540](https://github.com/cockroachdb/cockroach/issues/69540) +The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. #### Using `LIKE...ESCAPE` in `WHERE` and `HAVING` constraints -CockroachDB tries to optimize most comparisons operators in `WHERE` and `HAVING` clauses into constraints on SQL indexes by only accessing selected rows. This is done for `LIKE` clauses when a common prefix for all selected rows can be determined in the search pattern (e.g., `... LIKE 'Joe%'`). However, this optimization is not yet available if the `ESCAPE` keyword is also used. [#30192](https://github.com/cockroachdb/cockroach/issues/30192) +CockroachDB tries to optimize most comparisons operators in `WHERE` and `HAVING` clauses into constraints on SQL indexes by only accessing selected rows. This is done for `LIKE` clauses when a common prefix for all selected rows can be determined in the search pattern (e.g., `... LIKE 'Joe%'`). However, this optimization is not yet available if the `ESCAPE` keyword is also used. #### Import with a high amount of disk contention @@ -694,7 +693,7 @@ UNION ALL SELECT * FROM t1 LEFT JOIN t2 ON st_contains(t1.geom, t2.geom) AND t2. (54 rows) ``` -[#59649](https://github.com/cockroachdb/cockroach/issues/59649) + #### Locality optimized search limitations @@ -707,4 +706,4 @@ UNION ALL SELECT * FROM t1 LEFT JOIN t2 ON st_contains(t1.geom, t2.geom) AND t2. #### Inverted join for `tsvector` and `tsquery` types is not supported -CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables. [#102731](https://github.com/cockroachdb/cockroach/issues/102731) \ No newline at end of file +CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables. diff --git a/src/current/v24.1/postgresql-compatibility.md b/src/current/v24.1/postgresql-compatibility.md index 15eff6fdc35..16f079f9574 100644 --- a/src/current/v24.1/postgresql-compatibility.md +++ b/src/current/v24.1/postgresql-compatibility.md @@ -34,11 +34,11 @@ When set to `true`, multiple portals can be open at the same time, with their ex This feature has the following limitations: - Only read-only [`SELECT` queries]({% link {{ page.version.version }}/selection-queries.md %}) without [subqueries]({% link {{ page.version.version }}/subqueries.md %}) are supported. -- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - [cockroachdb/cockroach#96398](https://github.com/cockroachdb/cockroach/issues/96398) -- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - [cockroachdb/cockroach#100822](https://github.com/cockroachdb/cockroach/issues/100822) -- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - [cockroachdb/cockroach#99404](https://github.com/cockroachdb/cockroach/issues/99404) +- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - +- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - +- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - -In addition to the known issues, additional performance testing is needed. The current list of known issues can be viewed [on GitHub using the `A-pausable-portals` label](https://github.com/cockroachdb/cockroach/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc++label%3AA-pausable-portals+), and we welcome bug reports. +In addition to the known issues, additional performance testing is needed. ## Features that differ from PostgreSQL @@ -181,7 +181,7 @@ An `x` value less than `1` would result in the following error: pq: check constraint violated ~~~ -[#35370](https://github.com/cockroachdb/cockroach/issues/35370) + ### Column name from an outer column inside a subquery @@ -207,7 +207,7 @@ PostgreSQL: 1 ~~~ -[#46563](https://github.com/cockroachdb/cockroach/issues/46563) + ### SQL Compatibility diff --git a/src/current/v24.1/query-spatial-data.md b/src/current/v24.1/query-spatial-data.md index 32a98647a7d..7e59649ed79 100644 --- a/src/current/v24.1/query-spatial-data.md +++ b/src/current/v24.1/query-spatial-data.md @@ -24,7 +24,7 @@ Just as CockroachDB strives for [PostgreSQL compatibility]({% link {{ page.versi CockroachDB does not implement the full list of PostGIS built-in functions and operators. Also, [spatial indexing works differently]({% link {{ page.version.version }}/spatial-indexes.md %}) (see the [Performance](#performance) section below). For a list of the spatial functions CockroachDB supports, see [Geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions). -If your application needs support for functions that are not yet implemented, check the [meta-issue for built-in function support on GitHub](https://github.com/cockroachdb/cockroach/issues/49203), which describes how to find an issue for the built-in function(s) you need. +If your application needs support for functions that are not yet implemented, check the , which describes how to find an issue for the built-in function(s) you need. For a list of other known limitations, see [Known Limitations]({% link {{ page.version.version }}/known-limitations.md %}#spatial-support-limitations). diff --git a/src/current/v24.1/spatial-tutorial.md b/src/current/v24.1/spatial-tutorial.md index d0b616d2433..00cc7c9c6f7 100644 --- a/src/current/v24.1/spatial-tutorial.md +++ b/src/current/v24.1/spatial-tutorial.md @@ -966,7 +966,7 @@ Time: 1.447s total (execution 1.446s / network 0.000s) Unfortunately, this query is a bit slower than you would like: about 1.5 seconds on a single-node [`cockroach demo`]({% link {{ page.version.version }}/cockroach-demo.md %}) cluster on a laptop. There are several reasons for this: 1. You haven't created any indexes at all yet. The query is likely to be doing full table scans, which you will need to hunt down with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %}). -1. CockroachDB does not yet have built-in support for index-based nearest neighbor queries. If this feature is important to you, please comment with some information about your use case on [cockroachdb/cockroach#55227](https://github.com/cockroachdb/cockroach/issues/55227). +1. CockroachDB does not yet have built-in support for index-based nearest neighbor queries. If this feature is important to you, please comment with some information about your use case on . Let's look at the `EXPLAIN` output to see if there is something that can be done to improve this query's performance: diff --git a/src/current/v24.1/sql-feature-support.md b/src/current/v24.1/sql-feature-support.md index 9bb433cba3e..68514ac4df4 100644 --- a/src/current/v24.1/sql-feature-support.md +++ b/src/current/v24.1/sql-feature-support.md @@ -193,7 +193,7 @@ XML | ✗ | Standard | XML data can be stored as `BYTES`, but we do not offer XM Common table expressions | Partial | Common Extension | [Common Table Expressions documentation]({% link {{ page.version.version }}/common-table-expressions.md %}) Stored procedures | Partial | Common Extension | [Stored procedures documentation]({% link {{ page.version.version }}/stored-procedures.md %}) Cursors | Partial | Standard | [Cursors documentation]({% link {{ page.version.version }}/cursors.md %}) - Triggers | ✗ | Standard | Execute a set of commands whenever a specified event occurs. [GitHub issue tracking trigger support](https://github.com/cockroachdb/cockroach/issues/28296). + Triggers | ✗ | Standard | Execute a set of commands whenever a specified event occurs. . Row-level TTL | ✓ | Common Extension | Automatically delete expired rows. For more information, see [Batch-delete expired data with Row-Level TTL]({% link {{ page.version.version }}/row-level-ttl.md %}). User-defined functions | Partial | Standard | [User-Defined Functions documentation]({% link {{ page.version.version }}/user-defined-functions.md %}) - `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. [GitHub issue tracking `CREATE EXTENSION` support](https://github.com/cockroachdb/cockroach/issues/74777). + `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. . diff --git a/src/current/v24.1/sql-name-resolution.md b/src/current/v24.1/sql-name-resolution.md index 554a9a65583..9138b02ddce 100644 --- a/src/current/v24.1/sql-name-resolution.md +++ b/src/current/v24.1/sql-name-resolution.md @@ -37,7 +37,7 @@ If you are upgrading to {{ page.version.version }}, take any combination of the - [Create new schemas]({% link {{ page.version.version }}/create-schema.md %}) in databases on your cluster. After the schemas are created, use [`ALTER TABLE ... RENAME`]({% link {{ page.version.version }}/alter-table.md %}#rename-to), [`ALTER SEQUENCE ... RENAME`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE ... RENAME`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW ... RENAME`]({% link {{ page.version.version }}/alter-view.md %}) statements to move objects between databases as needed. To move objects between schemas, use [`ALTER TABLE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-table.md %}#set-schema), [`ALTER SEQUENCE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-sequence.md %}), or [`ALTER VIEW ... SET SCHEMA`]({% link {{ page.version.version }}/alter-view.md %}). -- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). For details, see [tracking issue](https://github.com/cockroachdb/cockroach/issues/55791). +- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). ## How name resolution works diff --git a/src/current/v24.1/st_union.md b/src/current/v24.1/st_union.md index 7beb2f3ae3d..8a1d5b5a414 100644 --- a/src/current/v24.1/st_union.md +++ b/src/current/v24.1/st_union.md @@ -12,7 +12,7 @@ Given a set of shapes (e.g., from a [selection query]({% link {{ page.version.ve - [`GEOMETRY`]({% link {{ page.version.version }}/architecture/glossary.md %}#geometry) {{site.data.alerts.callout_info}} -The non-aggregate version of `ST_Union` is not yet implemented. For more information, see [cockroach#49064](https://github.com/cockroachdb/cockroach/issues/49064). +The non-aggregate version of `ST_Union` is not yet implemented. {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v24.1/temporary-tables.md b/src/current/v24.1/temporary-tables.md index 3a92fc64c97..653e02d5893 100644 --- a/src/current/v24.1/temporary-tables.md +++ b/src/current/v24.1/temporary-tables.md @@ -10,7 +10,7 @@ docs_area: develop To create a temp table, add `TEMP`/`TEMPORARY` to a [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}) or [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}) statement. For full syntax details, see the [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}#synopsis) and [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}#synopsis) pages. For example usage, see [Examples](#examples). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v24.1/upgrade-cockroach-version.md b/src/current/v24.1/upgrade-cockroach-version.md index c03e28790b7..bfb733a173e 100644 --- a/src/current/v24.1/upgrade-cockroach-version.md +++ b/src/current/v24.1/upgrade-cockroach-version.md @@ -325,14 +325,3 @@ In the event of catastrophic failure or corruption, it may be necessary to [rest - [Collect Debug Information]({% link {{ page.version.version }}/cockroach-debug-zip.md %}) - [View Version Details]({% link {{ page.version.version }}/cockroach-version.md %}) - [Release notes for our latest version]({% link releases/{{page.version.version}}.md %}) - -[#102961]: https://github.com/cockroachdb/cockroach/pull/102961 -[#104265]: https://github.com/cockroachdb/cockroach/pull/104265 -[#107474]: https://github.com/cockroachdb/cockroach/pull/107474 -[#106177]: https://github.com/cockroachdb/cockroach/pull/106177 -[#98308]: https://github.com/cockroachdb/cockroach/pull/98308 -[#105477]: https://github.com/cockroachdb/cockroach/pull/105477 -[#107903]: https://github.com/cockroachdb/cockroach/pull/107903 -[#108190]: https://github.com/cockroachdb/cockroach/pull/108190 -[#110649]: https://github.com/cockroachdb/cockroach/pull/110649 -[#114203]: https://github.com/cockroachdb/cockroach/pull/114203 diff --git a/src/current/v24.1/views.md b/src/current/v24.1/views.md index 1b703728bcf..766bdb31bb6 100644 --- a/src/current/v24.1/views.md +++ b/src/current/v24.1/views.md @@ -634,7 +634,7 @@ To speed up queries on materialized views, you can add an [index]({% link {{ pag CockroachDB supports session-scoped temporary views. Unlike persistent views, temporary views can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary views on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v24.2/cockroachdb-feature-availability.md b/src/current/v24.2/cockroachdb-feature-availability.md index 51cb77ca5e1..6fde582651f 100644 --- a/src/current/v24.2/cockroachdb-feature-availability.md +++ b/src/current/v24.2/cockroachdb-feature-availability.md @@ -152,7 +152,7 @@ Example: ### Check for constraint violations with `SCRUB` -Checks the consistency of [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) indexes, [`CHECK`]({% link {{ page.version.version }}/check.md %}) constraints, and more. Partially implemented; see [cockroachdb/cockroach#10425](https://github.com/cockroachdb/cockroach/issues/10425) for details. +Checks the consistency of [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) indexes, [`CHECK`]({% link {{ page.version.version }}/check.md %}) constraints, and more. Partially implemented; see for details. {{site.data.alerts.callout_info}} This example uses the `users` table from our open-source, fictional peer-to-peer vehicle-sharing application, [MovR]({% link {{ page.version.version }}/movr.md %}). @@ -187,7 +187,7 @@ CockroachDB supports [altering the column types]({% link {{ page.version.version ### Temporary objects -[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Performance limitations could persist long after creating the temporary objects. For more details, see [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Performance limitations could persist long after creating the temporary objects. To enable temporary objects, set the `experimental_enable_temp_tables` [session variable]({% link {{ page.version.version }}/show-vars.md %}) to `on`. diff --git a/src/current/v24.2/common-table-expressions.md b/src/current/v24.2/common-table-expressions.md index 09ac09d1419..f554748f621 100644 --- a/src/current/v24.2/common-table-expressions.md +++ b/src/current/v24.2/common-table-expressions.md @@ -444,7 +444,7 @@ SELECT COUNT(*) FROM temp; Because this pattern incurs the overhead of a new scan for each iteration, it is slower per row than a full scan. It is therefore faster than a full scan in cases (such as this one) where many rows are skipped, but is slower if they are not. {{site.data.alerts.callout_info}} -Some recursive CTEs are not not yet optimized. For details, see the [tracking issue](https://github.com/cockroachdb/cockroach/issues/89954). +Some recursive CTEs are not not yet optimized. For details, see the . {{site.data.alerts.end}} ## Correlated common table expressions diff --git a/src/current/v24.2/configure-replication-zones.md b/src/current/v24.2/configure-replication-zones.md index 309da81984a..c7acca070ff 100644 --- a/src/current/v24.2/configure-replication-zones.md +++ b/src/current/v24.2/configure-replication-zones.md @@ -98,7 +98,7 @@ For more information, see the following subsections: The hierarchy of inheritance for zone configs can be visualized using the following outline-style diagram, in which each level of indentation denotes an inheritance relationship. -The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. ``` - default @@ -127,7 +127,7 @@ From the whole-system perspective, the hierarchy of schema object zone configs c The following diagram presents the same set of schema objects as the previous outline-style diagram, but using boxes and lines joined with arrows that represent the "top-down" view. -Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information about this limitation, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. zone config inheritance diagram diff --git a/src/current/v24.2/create-sequence.md b/src/current/v24.2/create-sequence.md index eba6f3a07f7..9411e5bf45d 100644 --- a/src/current/v24.2/create-sequence.md +++ b/src/current/v24.2/create-sequence.md @@ -58,7 +58,7 @@ CockroachDB supports the following [SQL sequence functions]({% link {{ page.vers CockroachDB supports session-scoped temporary sequences. Unlike persistent sequences, temporary sequences can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary sequences on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v24.2/create-table.md b/src/current/v24.2/create-table.md index d1a4c389267..c1ec5aee14f 100644 --- a/src/current/v24.2/create-table.md +++ b/src/current/v24.2/create-table.md @@ -155,7 +155,7 @@ If you use `GENERATED BY DEFAULT AS IDENTITY` to define the identity column, any Note the following limitations of identity columns: -- `GENERATED ALWAYS AS IDENTITY`/`GENERATED BY DEFAULT AS IDENTITY` is supported in [`ALTER TABLE ... ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statements only when the table being altered is empty, as [CockroachDB does not support back-filling sequential column data]({% link {{ page.version.version }}/known-limitations.md %}#adding-a-column-with-sequence-based-default-values). For more information, see [#42508](https://github.com/cockroachdb/cockroach/issues/42508). +- `GENERATED ALWAYS AS IDENTITY`/`GENERATED BY DEFAULT AS IDENTITY` is supported in [`ALTER TABLE ... ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statements only when the table being altered is empty, as [CockroachDB does not support back-filling sequential column data]({% link {{ page.version.version }}/known-limitations.md %}#adding-a-column-with-sequence-based-default-values). For more information, see. - Unlike PostgreSQL, CockroachDB does not support using the `OVERRIDING SYSTEM VALUE` clause in `INSERT`/`UPDATE`/`UPSERT` statements to overwrite `GENERATED ALWAYS AS IDENTITY` identity column values. For an example of an identity column, see [Create a table with an identity column](#create-a-table-with-an-identity-column). diff --git a/src/current/v24.2/disaster-recovery-planning.md b/src/current/v24.2/disaster-recovery-planning.md index ae6bdbc5f1b..ab90e793db6 100644 --- a/src/current/v24.2/disaster-recovery-planning.md +++ b/src/current/v24.2/disaster-recovery-planning.md @@ -320,7 +320,7 @@ If your cluster is running, you do not have a backup that encapsulates the time If you have corrupted data in a database or table, [restore]({% link {{ page.version.version }}/restore.md %}) the object from a prior [backup]({% link {{ page.version.version }}/backup.md %}). If revision history is in the backup, you can restore from a [point in time]({% link {{ page.version.version }}/take-backups-with-revision-history-and-restore-from-a-point-in-time.md %}). -Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see [#51380](https://github.com/cockroachdb/cockroach/issues/51380) for more information), and you will need to take a backup that is backdated to the system time when the database still existed. +Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see for more information), and you will need to take a backup that is backdated to the system time when the database still existed. {{site.data.alerts.callout_info}} If the table you are restoring has foreign keys, [careful consideration]({% link {{ page.version.version }}/restore.md %}#remove-the-foreign-key-before-restore) should be applied to make sure data integrity is maintained during the restore process. diff --git a/src/current/v24.2/example-apps.md b/src/current/v24.2/example-apps.md index bea3cfd1876..7cebd29785e 100644 --- a/src/current/v24.2/example-apps.md +++ b/src/current/v24.2/example-apps.md @@ -14,7 +14,7 @@ Click the links in the tables below to see simple but complete example applicati If you are looking to do a specific task such as connect to the database, insert data, or run multi-statement transactions, see [this list of tasks](#tasks). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM with **partial** support. If you encounter problems, please with details to help us make progress toward full support. Note that tools with [**community-level** support]({% link {{ page.version.version }}/community-tooling.md %}) have been tested or developed by the CockroachDB community, but are not officially supported by Cockroach Labs. If you encounter problems with using these tools, please contact the maintainer of the tool with details. {{site.data.alerts.end}} diff --git a/src/current/v24.2/file-an-issue.md b/src/current/v24.2/file-an-issue.md index 9255e2c08b2..81da0da5fef 100644 --- a/src/current/v24.2/file-an-issue.md +++ b/src/current/v24.2/file-an-issue.md @@ -28,7 +28,7 @@ To file an issue in GitHub, we need the following information: ### Template -You can use this as a template for [filing an issue in GitHub](https://github.com/cockroachdb/cockroach/issues/new): +You can use this as a template for : ~~~ diff --git a/src/current/v24.2/foreign-key.md b/src/current/v24.2/foreign-key.md index 55677511e3d..0bd56ddd882 100644 --- a/src/current/v24.2/foreign-key.md +++ b/src/current/v24.2/foreign-key.md @@ -93,7 +93,7 @@ For matching purposes, composite foreign keys can be in one of three states: For examples showing how these key matching algorithms work, see [Match composite foreign keys with `MATCH SIMPLE` and `MATCH FULL`](#match-composite-foreign-keys-with-match-simple-and-match-full). {{site.data.alerts.callout_info}} -CockroachDB does not support `MATCH PARTIAL`. For more information, see issue [#20305](https://github.com/cockroachdb/cockroach/issues/20305). +CockroachDB does not support `MATCH PARTIAL`. For more information, see issue. {{site.data.alerts.end}} ### Foreign key actions diff --git a/src/current/v24.2/install-client-drivers.md b/src/current/v24.2/install-client-drivers.md index 984671a0dfc..b25a85de6f1 100644 --- a/src/current/v24.2/install-client-drivers.md +++ b/src/current/v24.2/install-client-drivers.md @@ -8,7 +8,7 @@ docs_area: develop CockroachDB supports both native drivers and the PostgreSQL wire protocol, so most available PostgreSQL client drivers and ORM frameworks should work with CockroachDB. Choose a language for supported clients, and follow the installation steps. After you install a client library, you can [connect to the database]({% link {{ page.version.version }}/connect-to-the-database.md %}). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please with details to help us make progress toward full support. {{site.data.alerts.end}}
    diff --git a/src/current/v24.2/install-cockroachdb-mac.md b/src/current/v24.2/install-cockroachdb-mac.md index 5155c5bf0cd..8ef0dc193ea 100644 --- a/src/current/v24.2/install-cockroachdb-mac.md +++ b/src/current/v24.2/install-cockroachdb-mac.md @@ -201,4 +201,4 @@ CockroachDB runtimes built for the ARM architecture have the following limitatio {% comment %}v22.2.0+{% endcomment %} -On macOS ARM systems, [spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead [run the Intel binary](#install-the-binary) or use the[Docker container image](#use-docker). Refer to [GitHub issue #93161](https://github.com/cockroachdb/cockroach/issues/93161) for more information. +On macOS ARM systems, [spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead [run the Intel binary](#install-the-binary) or use the[Docker container image](#use-docker). Refer to for more information. diff --git a/src/current/v24.2/intellij-idea.md b/src/current/v24.2/intellij-idea.md index de46249320f..f86ab850bb1 100644 --- a/src/current/v24.2/intellij-idea.md +++ b/src/current/v24.2/intellij-idea.md @@ -79,11 +79,7 @@ Requires setting **Introspect using JDBC metadata** ([details below](#set-cockro You can now use IntelliJ's [database tool window](https://www.jetbrains.com/help/idea/working-with-the-database-tool-window.html) to interact with your CockroachDB cluster. -## Report issues with IntelliJ IDEA & CockroachDB -If you encounter issues other than those outlined above, please [file an issue on the `cockroachdb/cockroach` GitHub repo](https://github.com/cockroachdb/cockroach/issues/new?template=bug_report.md), including the following details about the environment where you encountered the issue: - -- CockroachDB version ([`cockroach version`]({% link {{ page.version.version }}/cockroach-version.md %})) - IntelliJ IDEA version - Operating system - Steps to reproduce the behavior diff --git a/src/current/v24.2/known-limitations.md b/src/current/v24.2/known-limitations.md index 71b83b7b5c4..533cac22c80 100644 --- a/src/current/v24.2/known-limitations.md +++ b/src/current/v24.2/known-limitations.md @@ -53,7 +53,7 @@ CockroachDB supports the [PostgreSQL wire protocol](https://www.postgresql.org/d #### `CAST` expressions containing a subquery with an `ENUM` target are not supported -Casting subqueries to ENUMs in views and UDFs is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) +Casting subqueries to ENUMs in views and UDFs is not supported. #### Statements containing multiple modification subqueries of the same table are disallowed @@ -62,13 +62,13 @@ Statements containing multiple modification subqueries mutating the same row cou - Set the `sql.multiple_modifications_of_table.enabled` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) to `true`. - Use the `enable_multiple_modifications_of_table` [session variable]({% link {{ page.version.version }}/set-vars.md %}). -If multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. [#70731](https://github.com/cockroachdb/cockroach/issues/70731) +If multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. #### Using `default_int_size` session variable in batch of statements When setting the `default_int_size` [session variable]({% link {{ page.version.version }}/set-vars.md %}) in a batch of statements such as `SET default_int_size='int4'; SELECT 1::IN`, the `default_int_size` variable will not take effect until the next statement. Statement parsing is asynchronous with statement execution. -As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. [#32846](https://github.com/cockroachdb/cockroach/issues/32846) +As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. #### Overload resolution for collated strings @@ -95,15 +95,15 @@ Many string operations are not properly overloaded for [collated strings]({% lin pq: unsupported binary operator: || ~~~ -[#10679](https://github.com/cockroachdb/cockroach/issues/10679) + #### Current sequence value not checked when updating min/max value -Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. [#23719](https://github.com/cockroachdb/cockroach/issues/23719) +Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. #### `null_ordered_last` does not produce correct results with tuples -By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL` values after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it does not work when the ordering column is a tuple. [#93558](https://github.com/cockroachdb/cockroach/issues/93558) +By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL` values after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it does not work when the ordering column is a tuple. ### Functions and procedures @@ -149,10 +149,9 @@ Transactions with [priority `HIGH`]({% link {{ page.version.version }}/transacti ERROR: unimplemented: cannot use ROLLBACK TO SAVEPOINT in a HIGH PRIORITY transaction containing DDL SQLSTATE: 0A000 HINT: You have attempted to use a feature that is not yet implemented. -See: https://github.com/cockroachdb/cockroach/issues/46414 ~~~ -[#46414](https://github.com/cockroachdb/cockroach/issues/46414) + #### `CANCEL JOB` limitations @@ -203,7 +202,7 @@ HINT: You have attempted to use a feature that is not yet implemented. See: https://go.crdb.dev/issue-v/42508/v24.2 ~~~ -[#42508](https://github.com/cockroachdb/cockroach/issues/42508) + #### Dropping a column referenced by a partial index @@ -230,9 +229,9 @@ When executing an [`ALTER TABLE ADD COLUMN`]({% link {{ page.version.version }}/ Some [schema changes]({% link {{ page.version.version }}/online-schema-changes.md %}) that [drop columns]({% link {{ page.version.version }}/alter-table.md %}#drop-column) cannot be [rolled back]({% link {{ page.version.version }}/rollback-transaction.md %}) properly. -In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. [#46541](https://github.com/cockroachdb/cockroach/issues/46541) +In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. -In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. [#47712](https://github.com/cockroachdb/cockroach/issues/47712) +In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. To reduce the chance that a column drop will roll back incorrectly: @@ -268,7 +267,7 @@ As a workaround, you can either [manually split a table's columns into multiple #### Placeholders in `PARTITION BY` -{% include {{ page.version.version }}/known-limitations/partitioning-with-placeholders.md %} [#19464](https://github.com/cockroachdb/cockroach/issues/19464) +{% include {{ page.version.version }}/known-limitations/partitioning-with-placeholders.md %} #### Unsupported trigram syntax @@ -284,7 +283,7 @@ The following PostgreSQL syntax and features are currently unsupported for [full #### CockroachDB does not allow inverted indexes with `STORING` -CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). [#88278](https://github.com/cockroachdb/cockroach/issues/88278) +CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). #### Multiple arbiter indexes for `INSERT ON CONFLICT DO UPDATE` @@ -304,19 +303,19 @@ CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ CockroachDB supports efficiently storing and querying [spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}), with the following limitations: -- Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. [#49203](https://github.com/cockroachdb/cockroach/issues/49203) +- Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. -- The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. [#49402](https://github.com/cockroachdb/cockroach/issues/49402) +- The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. -- The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. [#49448](https://github.com/cockroachdb/cockroach/issues/49448) +- The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. -- CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. [#56124](https://github.com/cockroachdb/cockroach/issues/56124) +- CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. -- CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). [#55903](https://github.com/cockroachdb/cockroach/issues/55903) +- CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). -- CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). [#55227](https://github.com/cockroachdb/cockroach/issues/55227) +- CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). -- CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). [#56492](https://github.com/cockroachdb/cockroach/issues/56492) +- CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). - {% include {{ page.version.version }}/known-limitations/srid-4326-limitations.md %} @@ -330,9 +329,9 @@ Refer to [`OID` best practices]({% link {{ page.version.version }}/oid.md %}#bes - {% include {{page.version.version}}/cdc/avro-udt-composite.md %} - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} -- Updating subfields of composite types using dot syntax results in a syntax error. [#102984](https://github.com/cockroachdb/cockroach/issues/102984) +- Updating subfields of composite types using dot syntax results in a syntax error. -- Tuple elements cannot be accessed without enclosing the [composite variable]({% link {{ page.version.version }}/create-type.md %}#create-a-composite-data-type) name in parentheses. For example, `(v).x`. [#114687](https://github.com/cockroachdb/cockroach/issues/114687) +- Tuple elements cannot be accessed without enclosing the [composite variable]({% link {{ page.version.version }}/create-type.md %}#create-a-composite-data-type) name in parentheses. For example, `(v).x`. #### `ALTER TYPE` limitations @@ -376,7 +375,7 @@ However, if there is no host at the target IP address, or if a firewall rule blo - Configure any active network firewalls to allow node-to-node traffic. - Verify that orchestration tools (e.g., Kubernetes) are configured to use the correct network connection information. -[#53410](https://github.com/cockroachdb/cockroach/issues/53410) + #### No guaranteed state switch from `DECOMMISSIONING` to `DECOMMISSIONED` if `node decommission` is interrupted @@ -385,7 +384,7 @@ There is no guaranteed state switch from `DECOMMISSIONING` to `DECOMMISSIONED` i - The `cockroach node decommission --wait-all` command was run and then interrupted - The `cockroach node decommission --wait=none` command was run -This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. [#94430](https://github.com/cockroachdb/cockroach/issues/94430) +This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. #### Simultaneous client connections and running queries on a single node @@ -421,7 +420,7 @@ As a workaround, [execute the file from the command line]({% link {{ page.versio #### Spatial features disabled for ARM Macs -[Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. [GitHub tracking issue](https://github.com/cockroachdb/cockroach/issues/93161) +[Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. #### Logging system limitations @@ -466,7 +465,7 @@ Accessing the DB Console for a secure cluster now requires login information (i. The [`COMMENT ON`]({% link {{ page.version.version }}/comment-on.md %}) statement associates comments to databases, tables, or columns. However, the internal table (`system.comments`) in which these comments are stored is not captured by a [`BACKUP`]({% link {{ page.version.version }}/backup.md %}) of a table or database. -As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. [#44396](https://github.com/cockroachdb/cockroach/issues/44396) +As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. #### `SHOW BACKUP` does not support symlinks for nodelocal @@ -492,8 +491,8 @@ Change data capture (CDC) provides efficient, distributed, row-level changefeeds The SQL optimizer has limitations under certain isolation levels: -- The new implementation of `SELECT FOR UPDATE` is not yet the default setting under `SERIALIZABLE` isolation. It can be used under `SERIALIZABLE` isolation by setting the `optimizer_use_lock_op_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}) to `true`. [#114737](https://github.com/cockroachdb/cockroach/issues/114737) -- `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. [#116836](https://github.com/cockroachdb/cockroach/issues/116836) +- The new implementation of `SELECT FOR UPDATE` is not yet the default setting under `SERIALIZABLE` isolation. It can be used under `SERIALIZABLE` isolation by setting the `optimizer_use_lock_op_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}) to `true`. +- `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. #### Statistics limitations @@ -502,7 +501,7 @@ The SQL optimizer has limitations under certain isolation levels: #### Incorrect query plans for partitions with `NULL` values -In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. [#82774](https://github.com/cockroachdb/cockroach/issues/82774) +In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. #### Vectorized engine limitations @@ -510,15 +509,15 @@ In cases where the partition definition includes a comparison with `NULL` and a #### `transaction_rows_read_err` and `transaction_rows_written_err` do not halt query execution -The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. [#70473](https://github.com/cockroachdb/cockroach/issues/70473) +The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. #### `sql.guardrails.max_row_size_err` misses indexed virtual computed columns -The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. [#69540](https://github.com/cockroachdb/cockroach/issues/69540) +The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. #### Using `LIKE...ESCAPE` in `WHERE` and `HAVING` constraints -CockroachDB tries to optimize most comparisons operators in `WHERE` and `HAVING` clauses into constraints on SQL indexes by only accessing selected rows. This is done for `LIKE` clauses when a common prefix for all selected rows can be determined in the search pattern (e.g., `... LIKE 'Joe%'`). However, this optimization is not yet available if the `ESCAPE` keyword is also used. [#30192](https://github.com/cockroachdb/cockroach/issues/30192) +CockroachDB tries to optimize most comparisons operators in `WHERE` and `HAVING` clauses into constraints on SQL indexes by only accessing selected rows. This is done for `LIKE` clauses when a common prefix for all selected rows can be determined in the search pattern (e.g., `... LIKE 'Joe%'`). However, this optimization is not yet available if the `ESCAPE` keyword is also used. #### Import with a high amount of disk contention @@ -673,7 +672,7 @@ UNION ALL SELECT * FROM t1 LEFT JOIN t2 ON st_contains(t1.geom, t2.geom) AND t2. (54 rows) ``` -[#59649](https://github.com/cockroachdb/cockroach/issues/59649) + #### Locality optimized search limitations @@ -686,4 +685,4 @@ UNION ALL SELECT * FROM t1 LEFT JOIN t2 ON st_contains(t1.geom, t2.geom) AND t2. #### Inverted join for `tsvector` and `tsquery` types is not supported -CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables. [#102731](https://github.com/cockroachdb/cockroach/issues/102731) +CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables. diff --git a/src/current/v24.2/postgresql-compatibility.md b/src/current/v24.2/postgresql-compatibility.md index 15eff6fdc35..16f079f9574 100644 --- a/src/current/v24.2/postgresql-compatibility.md +++ b/src/current/v24.2/postgresql-compatibility.md @@ -34,11 +34,11 @@ When set to `true`, multiple portals can be open at the same time, with their ex This feature has the following limitations: - Only read-only [`SELECT` queries]({% link {{ page.version.version }}/selection-queries.md %}) without [subqueries]({% link {{ page.version.version }}/subqueries.md %}) are supported. -- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - [cockroachdb/cockroach#96398](https://github.com/cockroachdb/cockroach/issues/96398) -- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - [cockroachdb/cockroach#100822](https://github.com/cockroachdb/cockroach/issues/100822) -- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - [cockroachdb/cockroach#99404](https://github.com/cockroachdb/cockroach/issues/99404) +- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - +- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - +- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - -In addition to the known issues, additional performance testing is needed. The current list of known issues can be viewed [on GitHub using the `A-pausable-portals` label](https://github.com/cockroachdb/cockroach/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc++label%3AA-pausable-portals+), and we welcome bug reports. +In addition to the known issues, additional performance testing is needed. ## Features that differ from PostgreSQL @@ -181,7 +181,7 @@ An `x` value less than `1` would result in the following error: pq: check constraint violated ~~~ -[#35370](https://github.com/cockroachdb/cockroach/issues/35370) + ### Column name from an outer column inside a subquery @@ -207,7 +207,7 @@ PostgreSQL: 1 ~~~ -[#46563](https://github.com/cockroachdb/cockroach/issues/46563) + ### SQL Compatibility diff --git a/src/current/v24.2/query-spatial-data.md b/src/current/v24.2/query-spatial-data.md index ecda70caa00..abb577f8f46 100644 --- a/src/current/v24.2/query-spatial-data.md +++ b/src/current/v24.2/query-spatial-data.md @@ -24,7 +24,7 @@ Just as CockroachDB strives for [PostgreSQL compatibility]({% link {{ page.versi CockroachDB does not implement the full list of PostGIS built-in functions and operators. Also, [spatial indexing works differently]({% link {{ page.version.version }}/spatial-indexes.md %}) (see the [Performance](#performance) section below). For a list of the spatial functions CockroachDB supports, see [Geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions). -If your application needs support for functions that are not yet implemented, check the [meta-issue for built-in function support on GitHub](https://github.com/cockroachdb/cockroach/issues/49203), which describes how to find an issue for the built-in function(s) you need. +If your application needs support for functions that are not yet implemented, check the , which describes how to find an issue for the built-in function(s) you need. For a list of other known limitations, see [Known Limitations]({% link {{ page.version.version }}/known-limitations.md %}#spatial-support-limitations). diff --git a/src/current/v24.2/spatial-tutorial.md b/src/current/v24.2/spatial-tutorial.md index b6fd7ab3583..2a6a96c4795 100644 --- a/src/current/v24.2/spatial-tutorial.md +++ b/src/current/v24.2/spatial-tutorial.md @@ -966,7 +966,7 @@ Time: 1.447s total (execution 1.446s / network 0.000s) Unfortunately, this query is a bit slower than you would like: about 1.5 seconds on a single-node [`cockroach demo`]({% link {{ page.version.version }}/cockroach-demo.md %}) cluster on a laptop. There are several reasons for this: 1. You haven't created any indexes at all yet. The query is likely to be doing full table scans, which you will need to hunt down with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %}). -1. CockroachDB does not yet have built-in support for index-based nearest neighbor queries. If this feature is important to you, please comment with some information about your use case on [cockroachdb/cockroach#55227](https://github.com/cockroachdb/cockroach/issues/55227). +1. CockroachDB does not yet have built-in support for index-based nearest neighbor queries. If this feature is important to you, please comment with some information about your use case on . Let's look at the `EXPLAIN` output to see if there is something that can be done to improve this query's performance: diff --git a/src/current/v24.2/sql-feature-support.md b/src/current/v24.2/sql-feature-support.md index 3ca62dbbc71..a0e46f317df 100644 --- a/src/current/v24.2/sql-feature-support.md +++ b/src/current/v24.2/sql-feature-support.md @@ -193,7 +193,7 @@ XML | ✗ | Standard | XML data can be stored as `BYTES`, but we do not offer XM Common table expressions | Partial | Common Extension | [Common Table Expressions documentation]({% link {{ page.version.version }}/common-table-expressions.md %}) Stored procedures | Partial | Common Extension | [Stored procedures documentation]({% link {{ page.version.version }}/stored-procedures.md %}) Cursors | Partial | Standard | [Cursors documentation]({% link {{ page.version.version }}/cursors.md %}) - Triggers | ✗ | Standard | Execute a set of commands whenever a specified event occurs. [GitHub issue tracking trigger support](https://github.com/cockroachdb/cockroach/issues/28296). + Triggers | ✗ | Standard | Execute a set of commands whenever a specified event occurs. . Row-level TTL | ✓ | Common Extension | Automatically delete expired rows. For more information, see [Batch-delete expired data with Row-Level TTL]({% link {{ page.version.version }}/row-level-ttl.md %}). User-defined functions | Partial | Standard | [User-Defined Functions documentation]({% link {{ page.version.version }}/user-defined-functions.md %}) - `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. [GitHub issue tracking `CREATE EXTENSION` support](https://github.com/cockroachdb/cockroach/issues/74777). + `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. . diff --git a/src/current/v24.2/sql-name-resolution.md b/src/current/v24.2/sql-name-resolution.md index 554a9a65583..9138b02ddce 100644 --- a/src/current/v24.2/sql-name-resolution.md +++ b/src/current/v24.2/sql-name-resolution.md @@ -37,7 +37,7 @@ If you are upgrading to {{ page.version.version }}, take any combination of the - [Create new schemas]({% link {{ page.version.version }}/create-schema.md %}) in databases on your cluster. After the schemas are created, use [`ALTER TABLE ... RENAME`]({% link {{ page.version.version }}/alter-table.md %}#rename-to), [`ALTER SEQUENCE ... RENAME`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE ... RENAME`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW ... RENAME`]({% link {{ page.version.version }}/alter-view.md %}) statements to move objects between databases as needed. To move objects between schemas, use [`ALTER TABLE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-table.md %}#set-schema), [`ALTER SEQUENCE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-sequence.md %}), or [`ALTER VIEW ... SET SCHEMA`]({% link {{ page.version.version }}/alter-view.md %}). -- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). For details, see [tracking issue](https://github.com/cockroachdb/cockroach/issues/55791). +- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). ## How name resolution works diff --git a/src/current/v24.2/st_union.md b/src/current/v24.2/st_union.md index df4a9429bc1..bd39579f281 100644 --- a/src/current/v24.2/st_union.md +++ b/src/current/v24.2/st_union.md @@ -12,7 +12,7 @@ Given a set of shapes (e.g., from a [selection query]({% link {{ page.version.ve - [`GEOMETRY`]({% link {{ page.version.version }}/architecture/glossary.md %}#geometry) {{site.data.alerts.callout_info}} -The non-aggregate version of `ST_Union` is not yet implemented. For more information, see [cockroach#49064](https://github.com/cockroachdb/cockroach/issues/49064). +The non-aggregate version of `ST_Union` is not yet implemented. {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v24.2/temporary-tables.md b/src/current/v24.2/temporary-tables.md index bd3a9adefdd..406328272ca 100644 --- a/src/current/v24.2/temporary-tables.md +++ b/src/current/v24.2/temporary-tables.md @@ -10,7 +10,7 @@ docs_area: develop To create a temp table, add `TEMP`/`TEMPORARY` to a [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}) or [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}) statement. For full syntax details, see the [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}#synopsis) and [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}#synopsis) pages. For example usage, see [Examples](#examples). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v24.2/upgrade-cockroach-version.md b/src/current/v24.2/upgrade-cockroach-version.md index fa6774bdefc..774e88d4cf0 100644 --- a/src/current/v24.2/upgrade-cockroach-version.md +++ b/src/current/v24.2/upgrade-cockroach-version.md @@ -335,14 +335,3 @@ In the event of catastrophic failure or corruption, it may be necessary to [rest - [Collect Debug Information]({% link {{ page.version.version }}/cockroach-debug-zip.md %}) - [View Version Details]({% link {{ page.version.version }}/cockroach-version.md %}) - [Release notes for our latest version]({% link releases/{{page.version.version}}.md %}) - -[#102961]: https://github.com/cockroachdb/cockroach/pull/102961 -[#104265]: https://github.com/cockroachdb/cockroach/pull/104265 -[#107474]: https://github.com/cockroachdb/cockroach/pull/107474 -[#106177]: https://github.com/cockroachdb/cockroach/pull/106177 -[#98308]: https://github.com/cockroachdb/cockroach/pull/98308 -[#105477]: https://github.com/cockroachdb/cockroach/pull/105477 -[#107903]: https://github.com/cockroachdb/cockroach/pull/107903 -[#108190]: https://github.com/cockroachdb/cockroach/pull/108190 -[#110649]: https://github.com/cockroachdb/cockroach/pull/110649 -[#114203]: https://github.com/cockroachdb/cockroach/pull/114203 diff --git a/src/current/v24.2/views.md b/src/current/v24.2/views.md index 1b703728bcf..766bdb31bb6 100644 --- a/src/current/v24.2/views.md +++ b/src/current/v24.2/views.md @@ -634,7 +634,7 @@ To speed up queries on materialized views, you can add an [index]({% link {{ pag CockroachDB supports session-scoped temporary views. Unlike persistent views, temporary views can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary views on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v24.3/cockroachdb-feature-availability.md b/src/current/v24.3/cockroachdb-feature-availability.md index 27cbee80074..0152386dfff 100644 --- a/src/current/v24.3/cockroachdb-feature-availability.md +++ b/src/current/v24.3/cockroachdb-feature-availability.md @@ -169,7 +169,7 @@ Example: ### Check for constraint violations with `SCRUB` -Checks the consistency of [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) indexes, [`CHECK`]({% link {{ page.version.version }}/check.md %}) constraints, and more. Partially implemented; see [cockroachdb/cockroach#10425](https://github.com/cockroachdb/cockroach/issues/10425) for details. +Checks the consistency of [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) indexes, [`CHECK`]({% link {{ page.version.version }}/check.md %}) constraints, and more. Partially implemented; see for details. {{site.data.alerts.callout_info}} This example uses the `users` table from our open-source, fictional peer-to-peer vehicle-sharing application, [MovR]({% link {{ page.version.version }}/movr.md %}). @@ -204,7 +204,7 @@ CockroachDB supports [altering the column types]({% link {{ page.version.version ### Temporary objects -[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Dropping large numbers of temporary objects in rapid succession can also enqueue many [schema change GC jobs]({% link {{ page.version.version }}/show-jobs.md %}), which may further degrade cluster performance. This performance degradation could persist long after creating the temporary objects. For more details, see [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Dropping large numbers of temporary objects in rapid succession can also enqueue many [schema change GC jobs]({% link {{ page.version.version }}/show-jobs.md %}), which may further degrade cluster performance. This performance degradation could persist long after creating the temporary objects. To enable temporary objects, set the `experimental_enable_temp_tables` [session variable]({% link {{ page.version.version }}/show-vars.md %}) to `on`. diff --git a/src/current/v24.3/common-table-expressions.md b/src/current/v24.3/common-table-expressions.md index a76f13ff39d..293fa7c8299 100644 --- a/src/current/v24.3/common-table-expressions.md +++ b/src/current/v24.3/common-table-expressions.md @@ -446,7 +446,7 @@ SELECT COUNT(*) FROM temp; Because this pattern incurs the overhead of a new scan for each iteration, it is slower per row than a full scan. It is therefore faster than a full scan in cases (such as this one) where many rows are skipped, but is slower if they are not. {{site.data.alerts.callout_info}} -Some recursive CTEs are not not yet optimized. For details, see the [tracking issue](https://github.com/cockroachdb/cockroach/issues/89954). +Some recursive CTEs are not not yet optimized. For details, see the . {{site.data.alerts.end}} ## Correlated common table expressions diff --git a/src/current/v24.3/configure-replication-zones.md b/src/current/v24.3/configure-replication-zones.md index 090ea83714b..3a54d9f66c9 100644 --- a/src/current/v24.3/configure-replication-zones.md +++ b/src/current/v24.3/configure-replication-zones.md @@ -98,7 +98,7 @@ For more information, see the following subsections: The hierarchy of inheritance for zone configs can be visualized using the following outline-style diagram, in which each level of indentation denotes an inheritance relationship. -The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. ``` - default @@ -127,7 +127,7 @@ From the whole-system perspective, the hierarchy of schema object zone configs c The following diagram presents the same set of schema objects as the previous outline-style diagram, but using boxes and lines joined with arrows that represent the "top-down" view. -Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information about this limitation, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. zone config inheritance diagram diff --git a/src/current/v24.3/create-sequence.md b/src/current/v24.3/create-sequence.md index bae71037988..39ff06afa39 100644 --- a/src/current/v24.3/create-sequence.md +++ b/src/current/v24.3/create-sequence.md @@ -59,7 +59,7 @@ CockroachDB supports the following [SQL sequence functions]({% link {{ page.vers CockroachDB supports session-scoped temporary sequences. Unlike persistent sequences, temporary sequences can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary sequences on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v24.3/create-table.md b/src/current/v24.3/create-table.md index d1a4c389267..c1ec5aee14f 100644 --- a/src/current/v24.3/create-table.md +++ b/src/current/v24.3/create-table.md @@ -155,7 +155,7 @@ If you use `GENERATED BY DEFAULT AS IDENTITY` to define the identity column, any Note the following limitations of identity columns: -- `GENERATED ALWAYS AS IDENTITY`/`GENERATED BY DEFAULT AS IDENTITY` is supported in [`ALTER TABLE ... ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statements only when the table being altered is empty, as [CockroachDB does not support back-filling sequential column data]({% link {{ page.version.version }}/known-limitations.md %}#adding-a-column-with-sequence-based-default-values). For more information, see [#42508](https://github.com/cockroachdb/cockroach/issues/42508). +- `GENERATED ALWAYS AS IDENTITY`/`GENERATED BY DEFAULT AS IDENTITY` is supported in [`ALTER TABLE ... ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statements only when the table being altered is empty, as [CockroachDB does not support back-filling sequential column data]({% link {{ page.version.version }}/known-limitations.md %}#adding-a-column-with-sequence-based-default-values). For more information, see. - Unlike PostgreSQL, CockroachDB does not support using the `OVERRIDING SYSTEM VALUE` clause in `INSERT`/`UPDATE`/`UPSERT` statements to overwrite `GENERATED ALWAYS AS IDENTITY` identity column values. For an example of an identity column, see [Create a table with an identity column](#create-a-table-with-an-identity-column). diff --git a/src/current/v24.3/disaster-recovery-planning.md b/src/current/v24.3/disaster-recovery-planning.md index ae6bdbc5f1b..ab90e793db6 100644 --- a/src/current/v24.3/disaster-recovery-planning.md +++ b/src/current/v24.3/disaster-recovery-planning.md @@ -320,7 +320,7 @@ If your cluster is running, you do not have a backup that encapsulates the time If you have corrupted data in a database or table, [restore]({% link {{ page.version.version }}/restore.md %}) the object from a prior [backup]({% link {{ page.version.version }}/backup.md %}). If revision history is in the backup, you can restore from a [point in time]({% link {{ page.version.version }}/take-backups-with-revision-history-and-restore-from-a-point-in-time.md %}). -Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see [#51380](https://github.com/cockroachdb/cockroach/issues/51380) for more information), and you will need to take a backup that is backdated to the system time when the database still existed. +Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see for more information), and you will need to take a backup that is backdated to the system time when the database still existed. {{site.data.alerts.callout_info}} If the table you are restoring has foreign keys, [careful consideration]({% link {{ page.version.version }}/restore.md %}#remove-the-foreign-key-before-restore) should be applied to make sure data integrity is maintained during the restore process. diff --git a/src/current/v24.3/example-apps.md b/src/current/v24.3/example-apps.md index bea3cfd1876..7cebd29785e 100644 --- a/src/current/v24.3/example-apps.md +++ b/src/current/v24.3/example-apps.md @@ -14,7 +14,7 @@ Click the links in the tables below to see simple but complete example applicati If you are looking to do a specific task such as connect to the database, insert data, or run multi-statement transactions, see [this list of tasks](#tasks). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM with **partial** support. If you encounter problems, please with details to help us make progress toward full support. Note that tools with [**community-level** support]({% link {{ page.version.version }}/community-tooling.md %}) have been tested or developed by the CockroachDB community, but are not officially supported by Cockroach Labs. If you encounter problems with using these tools, please contact the maintainer of the tool with details. {{site.data.alerts.end}} diff --git a/src/current/v24.3/file-an-issue.md b/src/current/v24.3/file-an-issue.md index 9255e2c08b2..81da0da5fef 100644 --- a/src/current/v24.3/file-an-issue.md +++ b/src/current/v24.3/file-an-issue.md @@ -28,7 +28,7 @@ To file an issue in GitHub, we need the following information: ### Template -You can use this as a template for [filing an issue in GitHub](https://github.com/cockroachdb/cockroach/issues/new): +You can use this as a template for : ~~~ diff --git a/src/current/v24.3/foreign-key.md b/src/current/v24.3/foreign-key.md index 55677511e3d..0bd56ddd882 100644 --- a/src/current/v24.3/foreign-key.md +++ b/src/current/v24.3/foreign-key.md @@ -93,7 +93,7 @@ For matching purposes, composite foreign keys can be in one of three states: For examples showing how these key matching algorithms work, see [Match composite foreign keys with `MATCH SIMPLE` and `MATCH FULL`](#match-composite-foreign-keys-with-match-simple-and-match-full). {{site.data.alerts.callout_info}} -CockroachDB does not support `MATCH PARTIAL`. For more information, see issue [#20305](https://github.com/cockroachdb/cockroach/issues/20305). +CockroachDB does not support `MATCH PARTIAL`. For more information, see issue. {{site.data.alerts.end}} ### Foreign key actions diff --git a/src/current/v24.3/install-client-drivers.md b/src/current/v24.3/install-client-drivers.md index 984671a0dfc..b25a85de6f1 100644 --- a/src/current/v24.3/install-client-drivers.md +++ b/src/current/v24.3/install-client-drivers.md @@ -8,7 +8,7 @@ docs_area: develop CockroachDB supports both native drivers and the PostgreSQL wire protocol, so most available PostgreSQL client drivers and ORM frameworks should work with CockroachDB. Choose a language for supported clients, and follow the installation steps. After you install a client library, you can [connect to the database]({% link {{ page.version.version }}/connect-to-the-database.md %}). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please with details to help us make progress toward full support. {{site.data.alerts.end}}
    diff --git a/src/current/v24.3/install-cockroachdb-mac.md b/src/current/v24.3/install-cockroachdb-mac.md index b8e5583b7f0..93317ef7958 100644 --- a/src/current/v24.3/install-cockroachdb-mac.md +++ b/src/current/v24.3/install-cockroachdb-mac.md @@ -201,4 +201,4 @@ CockroachDB runtimes built for the ARM architecture have the following limitatio {% comment %}v22.2.0+{% endcomment %} -On macOS ARM systems, [spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead [run the Intel binary](#install-the-binary) or use the[Docker container image](#use-docker). Refer to [GitHub issue #93161](https://github.com/cockroachdb/cockroach/issues/93161) for more information. +On macOS ARM systems, [spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead [run the Intel binary](#install-the-binary) or use the[Docker container image](#use-docker). Refer to for more information. diff --git a/src/current/v24.3/intellij-idea.md b/src/current/v24.3/intellij-idea.md index de46249320f..f86ab850bb1 100644 --- a/src/current/v24.3/intellij-idea.md +++ b/src/current/v24.3/intellij-idea.md @@ -79,11 +79,7 @@ Requires setting **Introspect using JDBC metadata** ([details below](#set-cockro You can now use IntelliJ's [database tool window](https://www.jetbrains.com/help/idea/working-with-the-database-tool-window.html) to interact with your CockroachDB cluster. -## Report issues with IntelliJ IDEA & CockroachDB -If you encounter issues other than those outlined above, please [file an issue on the `cockroachdb/cockroach` GitHub repo](https://github.com/cockroachdb/cockroach/issues/new?template=bug_report.md), including the following details about the environment where you encountered the issue: - -- CockroachDB version ([`cockroach version`]({% link {{ page.version.version }}/cockroach-version.md %})) - IntelliJ IDEA version - Operating system - Steps to reproduce the behavior diff --git a/src/current/v24.3/known-limitations.md b/src/current/v24.3/known-limitations.md index 608cf909f5a..18fe9bde975 100644 --- a/src/current/v24.3/known-limitations.md +++ b/src/current/v24.3/known-limitations.md @@ -64,7 +64,7 @@ CockroachDB supports the [PostgreSQL wire protocol](https://www.postgresql.org/d #### `CAST` expressions containing a subquery with an `ENUM` target are not supported -Casting subqueries to ENUMs in views and UDFs is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) +Casting subqueries to ENUMs in views and UDFs is not supported. #### Statements containing multiple modification subqueries of the same table are disallowed @@ -73,13 +73,13 @@ Statements containing multiple modification subqueries mutating the same row cou - Set the `sql.multiple_modifications_of_table.enabled` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) to `true`. - Use the `enable_multiple_modifications_of_table` [session variable]({% link {{ page.version.version }}/set-vars.md %}). -If multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. [#70731](https://github.com/cockroachdb/cockroach/issues/70731) +If multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. #### Using `default_int_size` session variable in batch of statements When setting the `default_int_size` [session variable]({% link {{ page.version.version }}/set-vars.md %}) in a batch of statements such as `SET default_int_size='int4'; SELECT 1::IN`, the `default_int_size` variable will not take effect until the next statement. Statement parsing is asynchronous with statement execution. -As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. [#32846](https://github.com/cockroachdb/cockroach/issues/32846) +As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. #### Overload resolution for collated strings @@ -106,15 +106,15 @@ Many string operations are not properly overloaded for [collated strings]({% lin pq: unsupported binary operator: || ~~~ -[#10679](https://github.com/cockroachdb/cockroach/issues/10679) + #### Current sequence value not checked when updating min/max value -Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. [#23719](https://github.com/cockroachdb/cockroach/issues/23719) +Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. #### `null_ordered_last` does not produce correct results with tuples -By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL` values after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it does not work when the ordering column is a tuple. [#93558](https://github.com/cockroachdb/cockroach/issues/93558) +By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL` values after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it does not work when the ordering column is a tuple. ### Functions and procedures @@ -163,7 +163,7 @@ HINT: You have attempted to use a feature that is not yet implemented. See: https://github.com/cockroachdb/cockroach/issues/46414 ~~~ -[#46414](https://github.com/cockroachdb/cockroach/issues/46414) + #### `CANCEL JOB` limitations @@ -214,7 +214,7 @@ HINT: You have attempted to use a feature that is not yet implemented. See: https://go.crdb.dev/issue-v/42508/v24.2 ~~~ -[#42508](https://github.com/cockroachdb/cockroach/issues/42508) + #### Dropping a column referenced by a partial index @@ -241,9 +241,9 @@ When executing an [`ALTER TABLE ADD COLUMN`]({% link {{ page.version.version }}/ Some [schema changes]({% link {{ page.version.version }}/online-schema-changes.md %}) that [drop columns]({% link {{ page.version.version }}/alter-table.md %}#drop-column) cannot be [rolled back]({% link {{ page.version.version }}/rollback-transaction.md %}) properly. -In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. [#46541](https://github.com/cockroachdb/cockroach/issues/46541) +In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. -In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. [#47712](https://github.com/cockroachdb/cockroach/issues/47712) +In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. To reduce the chance that a column drop will roll back incorrectly: @@ -279,7 +279,7 @@ As a workaround, you can either [manually split a table's columns into multiple #### Placeholders in `PARTITION BY` -{% include {{ page.version.version }}/known-limitations/partitioning-with-placeholders.md %} [#19464](https://github.com/cockroachdb/cockroach/issues/19464) +{% include {{ page.version.version }}/known-limitations/partitioning-with-placeholders.md %} #### Unsupported trigram syntax @@ -295,7 +295,7 @@ The following PostgreSQL syntax and features are currently unsupported for [full #### CockroachDB does not allow inverted indexes with `STORING` -CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). [#88278](https://github.com/cockroachdb/cockroach/issues/88278) +CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). #### Multiple arbiter indexes for `INSERT ON CONFLICT DO UPDATE` @@ -315,19 +315,19 @@ CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ CockroachDB supports efficiently storing and querying [spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}), with the following limitations: -- Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. [#49203](https://github.com/cockroachdb/cockroach/issues/49203) +- Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. -- The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. [#49402](https://github.com/cockroachdb/cockroach/issues/49402) +- The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. -- The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. [#49448](https://github.com/cockroachdb/cockroach/issues/49448) +- The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. -- CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. [#56124](https://github.com/cockroachdb/cockroach/issues/56124) +- CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. -- CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). [#55903](https://github.com/cockroachdb/cockroach/issues/55903) +- CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). -- CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). [#55227](https://github.com/cockroachdb/cockroach/issues/55227) +- CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). -- CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). [#56492](https://github.com/cockroachdb/cockroach/issues/56492) +- CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). - {% include {{ page.version.version }}/known-limitations/srid-4326-limitations.md %} @@ -341,9 +341,9 @@ Refer to [`OID` best practices]({% link {{ page.version.version }}/oid.md %}#bes - {% include {{page.version.version}}/cdc/avro-udt-composite.md %} - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} -- Updating subfields of composite types using dot syntax results in a syntax error. [#102984](https://github.com/cockroachdb/cockroach/issues/102984) +- Updating subfields of composite types using dot syntax results in a syntax error. -- Tuple elements cannot be accessed without enclosing the [composite variable]({% link {{ page.version.version }}/create-type.md %}#create-a-composite-data-type) name in parentheses. For example, `(OLD).column` and `(NEW).column` when used in [triggers]({% link {{ page.version.version }}/triggers.md %}). [#114687](https://github.com/cockroachdb/cockroach/issues/114687) +- Tuple elements cannot be accessed without enclosing the [composite variable]({% link {{ page.version.version }}/create-type.md %}#create-a-composite-data-type) name in parentheses. For example, `(OLD).column` and `(NEW).column` when used in [triggers]({% link {{ page.version.version }}/triggers.md %}). #### `ALTER TYPE` limitations @@ -387,7 +387,7 @@ However, if there is no host at the target IP address, or if a firewall rule blo - Configure any active network firewalls to allow node-to-node traffic. - Verify that orchestration tools (e.g., Kubernetes) are configured to use the correct network connection information. -[#53410](https://github.com/cockroachdb/cockroach/issues/53410) + #### No guaranteed state switch from `DECOMMISSIONING` to `DECOMMISSIONED` if `node decommission` is interrupted @@ -396,7 +396,7 @@ There is no guaranteed state switch from `DECOMMISSIONING` to `DECOMMISSIONED` i - The `cockroach node decommission --wait-all` command was run and then interrupted - The `cockroach node decommission --wait=none` command was run -This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. [#94430](https://github.com/cockroachdb/cockroach/issues/94430) +This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. #### Simultaneous client connections and running queries on a single node @@ -432,7 +432,7 @@ As a workaround, [execute the file from the command line]({% link {{ page.versio #### Spatial features disabled for ARM Macs -[Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. [GitHub tracking issue](https://github.com/cockroachdb/cockroach/issues/93161) +[Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. #### Logging system limitations @@ -477,7 +477,7 @@ Accessing the DB Console for a secure cluster now requires login information (i. The [`COMMENT ON`]({% link {{ page.version.version }}/comment-on.md %}) statement associates comments to databases, tables, or columns. However, the internal table (`system.comments`) in which these comments are stored is not captured by a [`BACKUP`]({% link {{ page.version.version }}/backup.md %}) of a table or database. -As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. [#44396](https://github.com/cockroachdb/cockroach/issues/44396) +As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. #### `SHOW BACKUP` does not support symlinks for nodelocal @@ -508,8 +508,8 @@ Change data capture (CDC) provides efficient, distributed, row-level changefeeds The SQL optimizer has limitations under certain isolation levels: -- The new implementation of `SELECT FOR UPDATE` is not yet the default setting under `SERIALIZABLE` isolation. It can be used under `SERIALIZABLE` isolation by setting the `optimizer_use_lock_op_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}) to `true`. [#114737](https://github.com/cockroachdb/cockroach/issues/114737) -- `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. [#116836](https://github.com/cockroachdb/cockroach/issues/116836) +- The new implementation of `SELECT FOR UPDATE` is not yet the default setting under `SERIALIZABLE` isolation. It can be used under `SERIALIZABLE` isolation by setting the `optimizer_use_lock_op_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}) to `true`. +- `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. #### Statistics limitations @@ -518,7 +518,7 @@ The SQL optimizer has limitations under certain isolation levels: #### Incorrect query plans for partitions with `NULL` values -In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. [#82774](https://github.com/cockroachdb/cockroach/issues/82774) +In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. #### Vectorized engine limitations @@ -526,15 +526,15 @@ In cases where the partition definition includes a comparison with `NULL` and a #### `transaction_rows_read_err` and `transaction_rows_written_err` do not halt query execution -The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. [#70473](https://github.com/cockroachdb/cockroach/issues/70473) +The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. #### `sql.guardrails.max_row_size_err` misses indexed virtual computed columns -The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. [#69540](https://github.com/cockroachdb/cockroach/issues/69540) +The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. #### Using `LIKE...ESCAPE` in `WHERE` and `HAVING` constraints -CockroachDB tries to optimize most comparisons operators in `WHERE` and `HAVING` clauses into constraints on SQL indexes by only accessing selected rows. This is done for `LIKE` clauses when a common prefix for all selected rows can be determined in the search pattern (e.g., `... LIKE 'Joe%'`). However, this optimization is not yet available if the `ESCAPE` keyword is also used. [#30192](https://github.com/cockroachdb/cockroach/issues/30192) +CockroachDB tries to optimize most comparisons operators in `WHERE` and `HAVING` clauses into constraints on SQL indexes by only accessing selected rows. This is done for `LIKE` clauses when a common prefix for all selected rows can be determined in the search pattern (e.g., `... LIKE 'Joe%'`). However, this optimization is not yet available if the `ESCAPE` keyword is also used. #### Import with a high amount of disk contention @@ -689,7 +689,7 @@ UNION ALL SELECT * FROM t1 LEFT JOIN t2 ON st_contains(t1.geom, t2.geom) AND t2. (54 rows) ``` -[#59649](https://github.com/cockroachdb/cockroach/issues/59649) + #### Locality optimized search limitations @@ -702,4 +702,4 @@ UNION ALL SELECT * FROM t1 LEFT JOIN t2 ON st_contains(t1.geom, t2.geom) AND t2. #### Inverted join for `tsvector` and `tsquery` types is not supported -CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables. [#102731](https://github.com/cockroachdb/cockroach/issues/102731) +CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables. diff --git a/src/current/v24.3/postgresql-compatibility.md b/src/current/v24.3/postgresql-compatibility.md index 15eff6fdc35..5e0e310dacb 100644 --- a/src/current/v24.3/postgresql-compatibility.md +++ b/src/current/v24.3/postgresql-compatibility.md @@ -34,9 +34,9 @@ When set to `true`, multiple portals can be open at the same time, with their ex This feature has the following limitations: - Only read-only [`SELECT` queries]({% link {{ page.version.version }}/selection-queries.md %}) without [subqueries]({% link {{ page.version.version }}/subqueries.md %}) are supported. -- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - [cockroachdb/cockroach#96398](https://github.com/cockroachdb/cockroach/issues/96398) -- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - [cockroachdb/cockroach#100822](https://github.com/cockroachdb/cockroach/issues/100822) -- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - [cockroachdb/cockroach#99404](https://github.com/cockroachdb/cockroach/issues/99404) +- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - +- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - +- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - In addition to the known issues, additional performance testing is needed. The current list of known issues can be viewed [on GitHub using the `A-pausable-portals` label](https://github.com/cockroachdb/cockroach/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc++label%3AA-pausable-portals+), and we welcome bug reports. @@ -181,7 +181,7 @@ An `x` value less than `1` would result in the following error: pq: check constraint violated ~~~ -[#35370](https://github.com/cockroachdb/cockroach/issues/35370) + ### Column name from an outer column inside a subquery @@ -207,7 +207,7 @@ PostgreSQL: 1 ~~~ -[#46563](https://github.com/cockroachdb/cockroach/issues/46563) + ### SQL Compatibility diff --git a/src/current/v24.3/query-spatial-data.md b/src/current/v24.3/query-spatial-data.md index 678918809cc..05adced08ea 100644 --- a/src/current/v24.3/query-spatial-data.md +++ b/src/current/v24.3/query-spatial-data.md @@ -24,7 +24,7 @@ Just as CockroachDB strives for [PostgreSQL compatibility]({% link {{ page.versi CockroachDB does not implement the full list of PostGIS built-in functions and operators. Also, [spatial indexing works differently]({% link {{ page.version.version }}/spatial-indexes.md %}) (see the [Performance](#performance) section below). For a list of the spatial functions CockroachDB supports, see [Geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions). -If your application needs support for functions that are not yet implemented, check the [meta-issue for built-in function support on GitHub](https://github.com/cockroachdb/cockroach/issues/49203), which describes how to find an issue for the built-in function(s) you need. +If your application needs support for functions that are not yet implemented, check the , which describes how to find an issue for the built-in function(s) you need. For a list of other known limitations, see [Known Limitations]({% link {{ page.version.version }}/known-limitations.md %}#spatial-support-limitations). diff --git a/src/current/v24.3/spatial-tutorial.md b/src/current/v24.3/spatial-tutorial.md index bf735930eab..4fed8b1976f 100644 --- a/src/current/v24.3/spatial-tutorial.md +++ b/src/current/v24.3/spatial-tutorial.md @@ -966,7 +966,7 @@ Time: 1.447s total (execution 1.446s / network 0.000s) Unfortunately, this query is a bit slower than you would like: about 1.5 seconds on a single-node [`cockroach demo`]({% link {{ page.version.version }}/cockroach-demo.md %}) cluster on a laptop. There are several reasons for this: 1. You haven't created any indexes at all yet. The query is likely to be doing full table scans, which you will need to hunt down with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %}). -1. CockroachDB does not yet have built-in support for index-based nearest neighbor queries. If this feature is important to you, please comment with some information about your use case on [cockroachdb/cockroach#55227](https://github.com/cockroachdb/cockroach/issues/55227). +1. CockroachDB does not yet have built-in support for index-based nearest neighbor queries. If this feature is important to you, please comment with some information about your use case on . Let's look at the `EXPLAIN` output to see if there is something that can be done to improve this query's performance: diff --git a/src/current/v24.3/sql-feature-support.md b/src/current/v24.3/sql-feature-support.md index df9fa0711d8..1d25ea212e4 100644 --- a/src/current/v24.3/sql-feature-support.md +++ b/src/current/v24.3/sql-feature-support.md @@ -194,4 +194,4 @@ XML | ✗ | Standard | XML data can be stored as `BYTES`, but we do not offer XM Triggers | Partial | Standard | [Triggers documentation]({% link {{ page.version.version }}/triggers.md %}) Row-level TTL | ✓ | Common Extension | Automatically delete expired rows. For more information, see [Batch-delete expired data with Row-Level TTL]({% link {{ page.version.version }}/row-level-ttl.md %}). User-defined functions | Partial | Standard | [User-Defined Functions documentation]({% link {{ page.version.version }}/user-defined-functions.md %}) - `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. [GitHub issue tracking `CREATE EXTENSION` support](https://github.com/cockroachdb/cockroach/issues/74777). + `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. . diff --git a/src/current/v24.3/sql-name-resolution.md b/src/current/v24.3/sql-name-resolution.md index 554a9a65583..9138b02ddce 100644 --- a/src/current/v24.3/sql-name-resolution.md +++ b/src/current/v24.3/sql-name-resolution.md @@ -37,7 +37,7 @@ If you are upgrading to {{ page.version.version }}, take any combination of the - [Create new schemas]({% link {{ page.version.version }}/create-schema.md %}) in databases on your cluster. After the schemas are created, use [`ALTER TABLE ... RENAME`]({% link {{ page.version.version }}/alter-table.md %}#rename-to), [`ALTER SEQUENCE ... RENAME`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE ... RENAME`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW ... RENAME`]({% link {{ page.version.version }}/alter-view.md %}) statements to move objects between databases as needed. To move objects between schemas, use [`ALTER TABLE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-table.md %}#set-schema), [`ALTER SEQUENCE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-sequence.md %}), or [`ALTER VIEW ... SET SCHEMA`]({% link {{ page.version.version }}/alter-view.md %}). -- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). For details, see [tracking issue](https://github.com/cockroachdb/cockroach/issues/55791). +- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). ## How name resolution works diff --git a/src/current/v24.3/st_union.md b/src/current/v24.3/st_union.md index 9ee0110f404..f85f4fd778d 100644 --- a/src/current/v24.3/st_union.md +++ b/src/current/v24.3/st_union.md @@ -12,7 +12,7 @@ Given a set of shapes (e.g., from a [selection query]({% link {{ page.version.ve - [`GEOMETRY`]({% link {{ page.version.version }}/architecture/glossary.md %}#geometry) {{site.data.alerts.callout_info}} -The non-aggregate version of `ST_Union` is not yet implemented. For more information, see [cockroach#49064](https://github.com/cockroachdb/cockroach/issues/49064). +The non-aggregate version of `ST_Union` is not yet implemented. {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v24.3/temporary-tables.md b/src/current/v24.3/temporary-tables.md index 3a92fc64c97..653e02d5893 100644 --- a/src/current/v24.3/temporary-tables.md +++ b/src/current/v24.3/temporary-tables.md @@ -10,7 +10,7 @@ docs_area: develop To create a temp table, add `TEMP`/`TEMPORARY` to a [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}) or [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}) statement. For full syntax details, see the [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}#synopsis) and [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}#synopsis) pages. For example usage, see [Examples](#examples). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v24.3/views.md b/src/current/v24.3/views.md index 1b703728bcf..766bdb31bb6 100644 --- a/src/current/v24.3/views.md +++ b/src/current/v24.3/views.md @@ -634,7 +634,7 @@ To speed up queries on materialized views, you can add an [index]({% link {{ pag CockroachDB supports session-scoped temporary views. Unlike persistent views, temporary views can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary views on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v25.1/cockroachdb-feature-availability.md b/src/current/v25.1/cockroachdb-feature-availability.md index 8248a4f9a84..a3ca2b02129 100644 --- a/src/current/v25.1/cockroachdb-feature-availability.md +++ b/src/current/v25.1/cockroachdb-feature-availability.md @@ -169,7 +169,7 @@ Example: ### Check for constraint violations with `SCRUB` -Checks the consistency of [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) indexes, [`CHECK`]({% link {{ page.version.version }}/check.md %}) constraints, and more. Partially implemented; see [cockroachdb/cockroach#10425](https://github.com/cockroachdb/cockroach/issues/10425) for details. +Checks the consistency of [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) indexes, [`CHECK`]({% link {{ page.version.version }}/check.md %}) constraints, and more. Partially implemented; see for details. {{site.data.alerts.callout_info}} This example uses the `users` table from our open-source, fictional peer-to-peer vehicle-sharing application, [MovR]({% link {{ page.version.version }}/movr.md %}). @@ -200,7 +200,7 @@ The [`SHOW RANGE ... FOR ROW`]({% link {{ page.version.version }}/show-range-for ### Temporary objects -[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Dropping large numbers of temporary objects in rapid succession can also enqueue many [schema change GC jobs]({% link {{ page.version.version }}/show-jobs.md %}), which may further degrade cluster performance. This performance degradation could persist long after creating the temporary objects. For more details, see [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Dropping large numbers of temporary objects in rapid succession can also enqueue many [schema change GC jobs]({% link {{ page.version.version }}/show-jobs.md %}), which may further degrade cluster performance. This performance degradation could persist long after creating the temporary objects. To enable temporary objects, set the `experimental_enable_temp_tables` [session variable]({% link {{ page.version.version }}/show-vars.md %}) to `on`. diff --git a/src/current/v25.1/common-table-expressions.md b/src/current/v25.1/common-table-expressions.md index a76f13ff39d..293fa7c8299 100644 --- a/src/current/v25.1/common-table-expressions.md +++ b/src/current/v25.1/common-table-expressions.md @@ -446,7 +446,7 @@ SELECT COUNT(*) FROM temp; Because this pattern incurs the overhead of a new scan for each iteration, it is slower per row than a full scan. It is therefore faster than a full scan in cases (such as this one) where many rows are skipped, but is slower if they are not. {{site.data.alerts.callout_info}} -Some recursive CTEs are not not yet optimized. For details, see the [tracking issue](https://github.com/cockroachdb/cockroach/issues/89954). +Some recursive CTEs are not not yet optimized. For details, see the . {{site.data.alerts.end}} ## Correlated common table expressions diff --git a/src/current/v25.1/configure-replication-zones.md b/src/current/v25.1/configure-replication-zones.md index ff025802628..fbe8b32f3b6 100644 --- a/src/current/v25.1/configure-replication-zones.md +++ b/src/current/v25.1/configure-replication-zones.md @@ -98,7 +98,7 @@ For more information, see the following subsections: The hierarchy of inheritance for zone configs can be visualized using the following outline-style diagram, in which each level of indentation denotes an inheritance relationship. -The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. ``` - default @@ -127,7 +127,7 @@ From the whole-system perspective, the hierarchy of schema object zone configs c The following diagram presents the same set of schema objects as the previous outline-style diagram, but using boxes and lines joined with arrows that represent the "top-down" view. -Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information about this limitation, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. zone config inheritance diagram diff --git a/src/current/v25.1/create-sequence.md b/src/current/v25.1/create-sequence.md index f623b19c6db..eba84d74c1d 100644 --- a/src/current/v25.1/create-sequence.md +++ b/src/current/v25.1/create-sequence.md @@ -58,7 +58,7 @@ CockroachDB supports the following [SQL sequence functions]({% link {{ page.vers CockroachDB supports session-scoped temporary sequences. Unlike persistent sequences, temporary sequences can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary sequences on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v25.1/create-table.md b/src/current/v25.1/create-table.md index d1a4c389267..c1ec5aee14f 100644 --- a/src/current/v25.1/create-table.md +++ b/src/current/v25.1/create-table.md @@ -155,7 +155,7 @@ If you use `GENERATED BY DEFAULT AS IDENTITY` to define the identity column, any Note the following limitations of identity columns: -- `GENERATED ALWAYS AS IDENTITY`/`GENERATED BY DEFAULT AS IDENTITY` is supported in [`ALTER TABLE ... ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statements only when the table being altered is empty, as [CockroachDB does not support back-filling sequential column data]({% link {{ page.version.version }}/known-limitations.md %}#adding-a-column-with-sequence-based-default-values). For more information, see [#42508](https://github.com/cockroachdb/cockroach/issues/42508). +- `GENERATED ALWAYS AS IDENTITY`/`GENERATED BY DEFAULT AS IDENTITY` is supported in [`ALTER TABLE ... ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statements only when the table being altered is empty, as [CockroachDB does not support back-filling sequential column data]({% link {{ page.version.version }}/known-limitations.md %}#adding-a-column-with-sequence-based-default-values). For more information, see. - Unlike PostgreSQL, CockroachDB does not support using the `OVERRIDING SYSTEM VALUE` clause in `INSERT`/`UPDATE`/`UPSERT` statements to overwrite `GENERATED ALWAYS AS IDENTITY` identity column values. For an example of an identity column, see [Create a table with an identity column](#create-a-table-with-an-identity-column). diff --git a/src/current/v25.1/disaster-recovery-planning.md b/src/current/v25.1/disaster-recovery-planning.md index ae6bdbc5f1b..ab90e793db6 100644 --- a/src/current/v25.1/disaster-recovery-planning.md +++ b/src/current/v25.1/disaster-recovery-planning.md @@ -320,7 +320,7 @@ If your cluster is running, you do not have a backup that encapsulates the time If you have corrupted data in a database or table, [restore]({% link {{ page.version.version }}/restore.md %}) the object from a prior [backup]({% link {{ page.version.version }}/backup.md %}). If revision history is in the backup, you can restore from a [point in time]({% link {{ page.version.version }}/take-backups-with-revision-history-and-restore-from-a-point-in-time.md %}). -Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see [#51380](https://github.com/cockroachdb/cockroach/issues/51380) for more information), and you will need to take a backup that is backdated to the system time when the database still existed. +Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see for more information), and you will need to take a backup that is backdated to the system time when the database still existed. {{site.data.alerts.callout_info}} If the table you are restoring has foreign keys, [careful consideration]({% link {{ page.version.version }}/restore.md %}#remove-the-foreign-key-before-restore) should be applied to make sure data integrity is maintained during the restore process. diff --git a/src/current/v25.1/example-apps.md b/src/current/v25.1/example-apps.md index bea3cfd1876..7cebd29785e 100644 --- a/src/current/v25.1/example-apps.md +++ b/src/current/v25.1/example-apps.md @@ -14,7 +14,7 @@ Click the links in the tables below to see simple but complete example applicati If you are looking to do a specific task such as connect to the database, insert data, or run multi-statement transactions, see [this list of tasks](#tasks). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM with **partial** support. If you encounter problems, please with details to help us make progress toward full support. Note that tools with [**community-level** support]({% link {{ page.version.version }}/community-tooling.md %}) have been tested or developed by the CockroachDB community, but are not officially supported by Cockroach Labs. If you encounter problems with using these tools, please contact the maintainer of the tool with details. {{site.data.alerts.end}} diff --git a/src/current/v25.1/file-an-issue.md b/src/current/v25.1/file-an-issue.md index 9255e2c08b2..81da0da5fef 100644 --- a/src/current/v25.1/file-an-issue.md +++ b/src/current/v25.1/file-an-issue.md @@ -28,7 +28,7 @@ To file an issue in GitHub, we need the following information: ### Template -You can use this as a template for [filing an issue in GitHub](https://github.com/cockroachdb/cockroach/issues/new): +You can use this as a template for : ~~~ diff --git a/src/current/v25.1/foreign-key.md b/src/current/v25.1/foreign-key.md index 55677511e3d..0bd56ddd882 100644 --- a/src/current/v25.1/foreign-key.md +++ b/src/current/v25.1/foreign-key.md @@ -93,7 +93,7 @@ For matching purposes, composite foreign keys can be in one of three states: For examples showing how these key matching algorithms work, see [Match composite foreign keys with `MATCH SIMPLE` and `MATCH FULL`](#match-composite-foreign-keys-with-match-simple-and-match-full). {{site.data.alerts.callout_info}} -CockroachDB does not support `MATCH PARTIAL`. For more information, see issue [#20305](https://github.com/cockroachdb/cockroach/issues/20305). +CockroachDB does not support `MATCH PARTIAL`. For more information, see issue. {{site.data.alerts.end}} ### Foreign key actions diff --git a/src/current/v25.1/install-client-drivers.md b/src/current/v25.1/install-client-drivers.md index 984671a0dfc..b25a85de6f1 100644 --- a/src/current/v25.1/install-client-drivers.md +++ b/src/current/v25.1/install-client-drivers.md @@ -8,7 +8,7 @@ docs_area: develop CockroachDB supports both native drivers and the PostgreSQL wire protocol, so most available PostgreSQL client drivers and ORM frameworks should work with CockroachDB. Choose a language for supported clients, and follow the installation steps. After you install a client library, you can [connect to the database]({% link {{ page.version.version }}/connect-to-the-database.md %}). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please with details to help us make progress toward full support. {{site.data.alerts.end}}
    diff --git a/src/current/v25.1/install-cockroachdb-mac.md b/src/current/v25.1/install-cockroachdb-mac.md index b8e5583b7f0..93317ef7958 100644 --- a/src/current/v25.1/install-cockroachdb-mac.md +++ b/src/current/v25.1/install-cockroachdb-mac.md @@ -201,4 +201,4 @@ CockroachDB runtimes built for the ARM architecture have the following limitatio {% comment %}v22.2.0+{% endcomment %} -On macOS ARM systems, [spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead [run the Intel binary](#install-the-binary) or use the[Docker container image](#use-docker). Refer to [GitHub issue #93161](https://github.com/cockroachdb/cockroach/issues/93161) for more information. +On macOS ARM systems, [spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead [run the Intel binary](#install-the-binary) or use the[Docker container image](#use-docker). Refer to for more information. diff --git a/src/current/v25.1/intellij-idea.md b/src/current/v25.1/intellij-idea.md index de46249320f..93ab6b78e6c 100644 --- a/src/current/v25.1/intellij-idea.md +++ b/src/current/v25.1/intellij-idea.md @@ -79,15 +79,7 @@ Requires setting **Introspect using JDBC metadata** ([details below](#set-cockro You can now use IntelliJ's [database tool window](https://www.jetbrains.com/help/idea/working-with-the-database-tool-window.html) to interact with your CockroachDB cluster. -## Report issues with IntelliJ IDEA & CockroachDB -If you encounter issues other than those outlined above, please [file an issue on the `cockroachdb/cockroach` GitHub repo](https://github.com/cockroachdb/cockroach/issues/new?template=bug_report.md), including the following details about the environment where you encountered the issue: - -- CockroachDB version ([`cockroach version`]({% link {{ page.version.version }}/cockroach-version.md %})) -- IntelliJ IDEA version -- Operating system -- Steps to reproduce the behavior -- If possible, a trace of the SQL statements sent to CockroachDB while the error is being reproduced using [SQL query logging]({% link {{ page.version.version }}/logging-use-cases.md %}#sql_exec). ## See also diff --git a/src/current/v25.1/known-limitations.md b/src/current/v25.1/known-limitations.md index 4f76260d1aa..d18457f5a98 100644 --- a/src/current/v25.1/known-limitations.md +++ b/src/current/v25.1/known-limitations.md @@ -49,7 +49,7 @@ CockroachDB supports the [PostgreSQL wire protocol](https://www.postgresql.org/d #### `CAST` expressions containing a subquery with an `ENUM` target are not supported -Casting subqueries to ENUMs in views and UDFs is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) +Casting subqueries to ENUMs in views and UDFs is not supported. #### Statements containing multiple modification subqueries of the same table are disallowed @@ -58,13 +58,13 @@ Statements containing multiple modification subqueries mutating the same row cou - Set the `sql.multiple_modifications_of_table.enabled` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) to `true`. - Use the `enable_multiple_modifications_of_table` [session variable]({% link {{ page.version.version }}/set-vars.md %}). -If multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. [#70731](https://github.com/cockroachdb/cockroach/issues/70731) +If multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. #### Using `default_int_size` session variable in batch of statements When setting the `default_int_size` [session variable]({% link {{ page.version.version }}/set-vars.md %}) in a batch of statements such as `SET default_int_size='int4'; SELECT 1::IN`, the `default_int_size` variable will not take effect until the next statement. Statement parsing is asynchronous with statement execution. -As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. [#32846](https://github.com/cockroachdb/cockroach/issues/32846) +As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. #### Overload resolution for collated strings @@ -91,15 +91,15 @@ Many string operations are not properly overloaded for [collated strings]({% lin pq: unsupported binary operator: || ~~~ -[#10679](https://github.com/cockroachdb/cockroach/issues/10679) + #### Current sequence value not checked when updating min/max value -Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. [#23719](https://github.com/cockroachdb/cockroach/issues/23719) +Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. #### `null_ordered_last` does not produce correct results with tuples -By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL` values after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it does not work when the ordering column is a tuple. [#93558](https://github.com/cockroachdb/cockroach/issues/93558) +By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL` values after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it does not work when the ordering column is a tuple. ### Functions and procedures @@ -149,10 +149,9 @@ Transactions with [priority `HIGH`]({% link {{ page.version.version }}/transacti ERROR: unimplemented: cannot use ROLLBACK TO SAVEPOINT in a HIGH PRIORITY transaction containing DDL SQLSTATE: 0A000 HINT: You have attempted to use a feature that is not yet implemented. -See: https://github.com/cockroachdb/cockroach/issues/46414 ~~~ -[#46414](https://github.com/cockroachdb/cockroach/issues/46414) + #### `CANCEL JOB` limitations @@ -203,7 +202,7 @@ HINT: You have attempted to use a feature that is not yet implemented. See: https://go.crdb.dev/issue-v/42508/v24.2 ~~~ -[#42508](https://github.com/cockroachdb/cockroach/issues/42508) + #### Dropping a column referenced by a partial index @@ -230,9 +229,9 @@ When executing an [`ALTER TABLE ADD COLUMN`]({% link {{ page.version.version }}/ Some [schema changes]({% link {{ page.version.version }}/online-schema-changes.md %}) that [drop columns]({% link {{ page.version.version }}/alter-table.md %}#drop-column) cannot be [rolled back]({% link {{ page.version.version }}/rollback-transaction.md %}) properly. -In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. [#46541](https://github.com/cockroachdb/cockroach/issues/46541) +In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. -In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. [#47712](https://github.com/cockroachdb/cockroach/issues/47712) +In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. To reduce the chance that a column drop will roll back incorrectly: @@ -268,7 +267,7 @@ As a workaround, you can either [manually split a table's columns into multiple #### Placeholders in `PARTITION BY` -{% include {{ page.version.version }}/known-limitations/partitioning-with-placeholders.md %} [#19464](https://github.com/cockroachdb/cockroach/issues/19464) +{% include {{ page.version.version }}/known-limitations/partitioning-with-placeholders.md %} #### Unsupported trigram syntax @@ -284,7 +283,7 @@ The following PostgreSQL syntax and features are currently unsupported for [full #### CockroachDB does not allow inverted indexes with `STORING` -CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). [#88278](https://github.com/cockroachdb/cockroach/issues/88278) +CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). #### Multiple arbiter indexes for `INSERT ON CONFLICT DO UPDATE` @@ -304,19 +303,19 @@ CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ CockroachDB supports efficiently storing and querying [spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}), with the following limitations: -- Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. [#49203](https://github.com/cockroachdb/cockroach/issues/49203) +- Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. -- The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. [#49402](https://github.com/cockroachdb/cockroach/issues/49402) +- The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. -- The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. [#49448](https://github.com/cockroachdb/cockroach/issues/49448) +- The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. -- CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. [#56124](https://github.com/cockroachdb/cockroach/issues/56124) +- CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. -- CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). [#55903](https://github.com/cockroachdb/cockroach/issues/55903) +- CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). -- CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). [#55227](https://github.com/cockroachdb/cockroach/issues/55227) +- CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). -- CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). [#56492](https://github.com/cockroachdb/cockroach/issues/56492) +- CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). - {% include {{ page.version.version }}/known-limitations/srid-4326-limitations.md %} @@ -330,9 +329,9 @@ Refer to [`OID` best practices]({% link {{ page.version.version }}/oid.md %}#bes - {% include {{page.version.version}}/cdc/avro-udt-composite.md %} - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} -- Updating subfields of composite types using dot syntax results in a syntax error. [#102984](https://github.com/cockroachdb/cockroach/issues/102984) +- Updating subfields of composite types using dot syntax results in a syntax error. -- Tuple elements cannot be accessed without enclosing the [composite variable]({% link {{ page.version.version }}/create-type.md %}#create-a-composite-data-type) name in parentheses. For example, `(OLD).column` and `(NEW).column` when used in [triggers]({% link {{ page.version.version }}/triggers.md %}). [#114687](https://github.com/cockroachdb/cockroach/issues/114687) +- Tuple elements cannot be accessed without enclosing the [composite variable]({% link {{ page.version.version }}/create-type.md %}#create-a-composite-data-type) name in parentheses. For example, `(OLD).column` and `(NEW).column` when used in [triggers]({% link {{ page.version.version }}/triggers.md %}). #### `ALTER TYPE` limitations @@ -376,7 +375,7 @@ However, if there is no host at the target IP address, or if a firewall rule blo - Configure any active network firewalls to allow node-to-node traffic. - Verify that orchestration tools (e.g., Kubernetes) are configured to use the correct network connection information. -[#53410](https://github.com/cockroachdb/cockroach/issues/53410) + #### No guaranteed state switch from `DECOMMISSIONING` to `DECOMMISSIONED` if `node decommission` is interrupted @@ -385,7 +384,7 @@ There is no guaranteed state switch from `DECOMMISSIONING` to `DECOMMISSIONED` i - The `cockroach node decommission --wait-all` command was run and then interrupted - The `cockroach node decommission --wait=none` command was run -This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. [#94430](https://github.com/cockroachdb/cockroach/issues/94430) +This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. #### Simultaneous client connections and running queries on a single node @@ -421,7 +420,7 @@ As a workaround, [execute the file from the command line]({% link {{ page.versio #### Spatial features disabled for ARM Macs -[Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. [GitHub tracking issue](https://github.com/cockroachdb/cockroach/issues/93161) +[Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. #### Logging system limitations @@ -466,7 +465,7 @@ Accessing the DB Console for a secure cluster now requires login information (i. The [`COMMENT ON`]({% link {{ page.version.version }}/comment-on.md %}) statement associates comments to databases, tables, or columns. However, the internal table (`system.comments`) in which these comments are stored is not captured by a [`BACKUP`]({% link {{ page.version.version }}/backup.md %}) of a table or database. -As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. [#44396](https://github.com/cockroachdb/cockroach/issues/44396) +As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. #### `SHOW BACKUP` does not support symlinks for nodelocal @@ -507,8 +506,8 @@ Change data capture (CDC) provides efficient, distributed, row-level changefeeds The SQL optimizer has limitations under certain isolation levels: -- The new implementation of `SELECT FOR UPDATE` is not yet the default setting under `SERIALIZABLE` isolation. It can be used under `SERIALIZABLE` isolation by setting the `optimizer_use_lock_op_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}) to `true`. [#114737](https://github.com/cockroachdb/cockroach/issues/114737) -- `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. [#116836](https://github.com/cockroachdb/cockroach/issues/116836) +- The new implementation of `SELECT FOR UPDATE` is not yet the default setting under `SERIALIZABLE` isolation. It can be used under `SERIALIZABLE` isolation by setting the `optimizer_use_lock_op_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}) to `true`. +- `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. #### Statistics limitations @@ -517,7 +516,7 @@ The SQL optimizer has limitations under certain isolation levels: #### Incorrect query plans for partitions with `NULL` values -In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. [#82774](https://github.com/cockroachdb/cockroach/issues/82774) +In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. #### Vectorized engine limitations @@ -525,15 +524,15 @@ In cases where the partition definition includes a comparison with `NULL` and a #### `transaction_rows_read_err` and `transaction_rows_written_err` do not halt query execution -The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. [#70473](https://github.com/cockroachdb/cockroach/issues/70473) +The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. #### `sql.guardrails.max_row_size_err` misses indexed virtual computed columns -The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. [#69540](https://github.com/cockroachdb/cockroach/issues/69540) +The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. #### Using `LIKE...ESCAPE` in `WHERE` and `HAVING` constraints -CockroachDB tries to optimize most comparisons operators in `WHERE` and `HAVING` clauses into constraints on SQL indexes by only accessing selected rows. This is done for `LIKE` clauses when a common prefix for all selected rows can be determined in the search pattern (e.g., `... LIKE 'Joe%'`). However, this optimization is not yet available if the `ESCAPE` keyword is also used. [#30192](https://github.com/cockroachdb/cockroach/issues/30192) +CockroachDB tries to optimize most comparisons operators in `WHERE` and `HAVING` clauses into constraints on SQL indexes by only accessing selected rows. This is done for `LIKE` clauses when a common prefix for all selected rows can be determined in the search pattern (e.g., `... LIKE 'Joe%'`). However, this optimization is not yet available if the `ESCAPE` keyword is also used. #### Import with a high amount of disk contention @@ -688,7 +687,7 @@ UNION ALL SELECT * FROM t1 LEFT JOIN t2 ON st_contains(t1.geom, t2.geom) AND t2. (54 rows) ``` -[#59649](https://github.com/cockroachdb/cockroach/issues/59649) + #### Locality optimized search limitations @@ -701,4 +700,4 @@ UNION ALL SELECT * FROM t1 LEFT JOIN t2 ON st_contains(t1.geom, t2.geom) AND t2. #### Inverted join for `tsvector` and `tsquery` types is not supported -CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables. [#102731](https://github.com/cockroachdb/cockroach/issues/102731) +CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables. diff --git a/src/current/v25.1/postgresql-compatibility.md b/src/current/v25.1/postgresql-compatibility.md index 15eff6fdc35..16f079f9574 100644 --- a/src/current/v25.1/postgresql-compatibility.md +++ b/src/current/v25.1/postgresql-compatibility.md @@ -34,11 +34,11 @@ When set to `true`, multiple portals can be open at the same time, with their ex This feature has the following limitations: - Only read-only [`SELECT` queries]({% link {{ page.version.version }}/selection-queries.md %}) without [subqueries]({% link {{ page.version.version }}/subqueries.md %}) are supported. -- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - [cockroachdb/cockroach#96398](https://github.com/cockroachdb/cockroach/issues/96398) -- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - [cockroachdb/cockroach#100822](https://github.com/cockroachdb/cockroach/issues/100822) -- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - [cockroachdb/cockroach#99404](https://github.com/cockroachdb/cockroach/issues/99404) +- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - +- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - +- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - -In addition to the known issues, additional performance testing is needed. The current list of known issues can be viewed [on GitHub using the `A-pausable-portals` label](https://github.com/cockroachdb/cockroach/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc++label%3AA-pausable-portals+), and we welcome bug reports. +In addition to the known issues, additional performance testing is needed. ## Features that differ from PostgreSQL @@ -181,7 +181,7 @@ An `x` value less than `1` would result in the following error: pq: check constraint violated ~~~ -[#35370](https://github.com/cockroachdb/cockroach/issues/35370) + ### Column name from an outer column inside a subquery @@ -207,7 +207,7 @@ PostgreSQL: 1 ~~~ -[#46563](https://github.com/cockroachdb/cockroach/issues/46563) + ### SQL Compatibility diff --git a/src/current/v25.1/query-spatial-data.md b/src/current/v25.1/query-spatial-data.md index 7238ce52cf5..b259de79a5f 100644 --- a/src/current/v25.1/query-spatial-data.md +++ b/src/current/v25.1/query-spatial-data.md @@ -24,7 +24,7 @@ Just as CockroachDB strives for [PostgreSQL compatibility]({% link {{ page.versi CockroachDB does not implement the full list of PostGIS built-in functions and operators. Also, [spatial indexing works differently]({% link {{ page.version.version }}/spatial-indexes.md %}) (see the [Performance](#performance) section below). For a list of the spatial functions CockroachDB supports, see [Geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions). -If your application needs support for functions that are not yet implemented, check the [meta-issue for built-in function support on GitHub](https://github.com/cockroachdb/cockroach/issues/49203), which describes how to find an issue for the built-in function(s) you need. +If your application needs support for functions that are not yet implemented, check the , which describes how to find an issue for the built-in function(s) you need. For a list of other known limitations, see [Known Limitations]({% link {{ page.version.version }}/known-limitations.md %}#spatial-support-limitations). diff --git a/src/current/v25.1/spatial-tutorial.md b/src/current/v25.1/spatial-tutorial.md index 2a201cf7acf..36c3905b98d 100644 --- a/src/current/v25.1/spatial-tutorial.md +++ b/src/current/v25.1/spatial-tutorial.md @@ -966,7 +966,7 @@ Time: 1.447s total (execution 1.446s / network 0.000s) Unfortunately, this query is a bit slower than you would like: about 1.5 seconds on a single-node [`cockroach demo`]({% link {{ page.version.version }}/cockroach-demo.md %}) cluster on a laptop. There are several reasons for this: 1. You haven't created any indexes at all yet. The query is likely to be doing full table scans, which you will need to hunt down with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %}). -1. CockroachDB does not yet have built-in support for index-based nearest neighbor queries. If this feature is important to you, please comment with some information about your use case on [cockroachdb/cockroach#55227](https://github.com/cockroachdb/cockroach/issues/55227). +1. CockroachDB does not yet have built-in support for index-based nearest neighbor queries. If this feature is important to you, please comment with some information about your use case on . Let's look at the `EXPLAIN` output to see if there is something that can be done to improve this query's performance: diff --git a/src/current/v25.1/sql-feature-support.md b/src/current/v25.1/sql-feature-support.md index df9fa0711d8..1d25ea212e4 100644 --- a/src/current/v25.1/sql-feature-support.md +++ b/src/current/v25.1/sql-feature-support.md @@ -194,4 +194,4 @@ XML | ✗ | Standard | XML data can be stored as `BYTES`, but we do not offer XM Triggers | Partial | Standard | [Triggers documentation]({% link {{ page.version.version }}/triggers.md %}) Row-level TTL | ✓ | Common Extension | Automatically delete expired rows. For more information, see [Batch-delete expired data with Row-Level TTL]({% link {{ page.version.version }}/row-level-ttl.md %}). User-defined functions | Partial | Standard | [User-Defined Functions documentation]({% link {{ page.version.version }}/user-defined-functions.md %}) - `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. [GitHub issue tracking `CREATE EXTENSION` support](https://github.com/cockroachdb/cockroach/issues/74777). + `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. . diff --git a/src/current/v25.1/sql-name-resolution.md b/src/current/v25.1/sql-name-resolution.md index 554a9a65583..9138b02ddce 100644 --- a/src/current/v25.1/sql-name-resolution.md +++ b/src/current/v25.1/sql-name-resolution.md @@ -37,7 +37,7 @@ If you are upgrading to {{ page.version.version }}, take any combination of the - [Create new schemas]({% link {{ page.version.version }}/create-schema.md %}) in databases on your cluster. After the schemas are created, use [`ALTER TABLE ... RENAME`]({% link {{ page.version.version }}/alter-table.md %}#rename-to), [`ALTER SEQUENCE ... RENAME`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE ... RENAME`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW ... RENAME`]({% link {{ page.version.version }}/alter-view.md %}) statements to move objects between databases as needed. To move objects between schemas, use [`ALTER TABLE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-table.md %}#set-schema), [`ALTER SEQUENCE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-sequence.md %}), or [`ALTER VIEW ... SET SCHEMA`]({% link {{ page.version.version }}/alter-view.md %}). -- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). For details, see [tracking issue](https://github.com/cockroachdb/cockroach/issues/55791). +- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). ## How name resolution works diff --git a/src/current/v25.1/st_union.md b/src/current/v25.1/st_union.md index df4a9429bc1..bd39579f281 100644 --- a/src/current/v25.1/st_union.md +++ b/src/current/v25.1/st_union.md @@ -12,7 +12,7 @@ Given a set of shapes (e.g., from a [selection query]({% link {{ page.version.ve - [`GEOMETRY`]({% link {{ page.version.version }}/architecture/glossary.md %}#geometry) {{site.data.alerts.callout_info}} -The non-aggregate version of `ST_Union` is not yet implemented. For more information, see [cockroach#49064](https://github.com/cockroachdb/cockroach/issues/49064). +The non-aggregate version of `ST_Union` is not yet implemented. {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v25.1/temporary-tables.md b/src/current/v25.1/temporary-tables.md index 3a92fc64c97..653e02d5893 100644 --- a/src/current/v25.1/temporary-tables.md +++ b/src/current/v25.1/temporary-tables.md @@ -10,7 +10,7 @@ docs_area: develop To create a temp table, add `TEMP`/`TEMPORARY` to a [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}) or [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}) statement. For full syntax details, see the [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}#synopsis) and [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}#synopsis) pages. For example usage, see [Examples](#examples). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v25.1/views.md b/src/current/v25.1/views.md index 1b703728bcf..766bdb31bb6 100644 --- a/src/current/v25.1/views.md +++ b/src/current/v25.1/views.md @@ -634,7 +634,7 @@ To speed up queries on materialized views, you can add an [index]({% link {{ pag CockroachDB supports session-scoped temporary views. Unlike persistent views, temporary views can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary views on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v25.2/cockroachdb-feature-availability.md b/src/current/v25.2/cockroachdb-feature-availability.md index aabc6b915a0..ef05e246015 100644 --- a/src/current/v25.2/cockroachdb-feature-availability.md +++ b/src/current/v25.2/cockroachdb-feature-availability.md @@ -183,7 +183,7 @@ Example: ### Check for constraint violations with `SCRUB` -Checks the consistency of [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) indexes, [`CHECK`]({% link {{ page.version.version }}/check.md %}) constraints, and more. Partially implemented; see [cockroachdb/cockroach#10425](https://github.com/cockroachdb/cockroach/issues/10425) for details. +Checks the consistency of [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) indexes, [`CHECK`]({% link {{ page.version.version }}/check.md %}) constraints, and more. Partially implemented; see for details. {{site.data.alerts.callout_info}} This example uses the `users` table from our open-source, fictional peer-to-peer vehicle-sharing application, [MovR]({% link {{ page.version.version }}/movr.md %}). @@ -214,7 +214,7 @@ The [`SHOW RANGE ... FOR ROW`]({% link {{ page.version.version }}/show-range-for ### Temporary objects -[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Dropping large numbers of temporary objects in rapid succession can also enqueue many [schema change GC jobs]({% link {{ page.version.version }}/show-jobs.md %}), which may further degrade cluster performance. This performance degradation could persist long after creating the temporary objects. For more details, see [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Dropping large numbers of temporary objects in rapid succession can also enqueue many [schema change GC jobs]({% link {{ page.version.version }}/show-jobs.md %}), which may further degrade cluster performance. This performance degradation could persist long after creating the temporary objects. To enable temporary objects, set the `experimental_enable_temp_tables` [session variable]({% link {{ page.version.version }}/show-vars.md %}) to `on`. diff --git a/src/current/v25.2/common-table-expressions.md b/src/current/v25.2/common-table-expressions.md index a76f13ff39d..293fa7c8299 100644 --- a/src/current/v25.2/common-table-expressions.md +++ b/src/current/v25.2/common-table-expressions.md @@ -446,7 +446,7 @@ SELECT COUNT(*) FROM temp; Because this pattern incurs the overhead of a new scan for each iteration, it is slower per row than a full scan. It is therefore faster than a full scan in cases (such as this one) where many rows are skipped, but is slower if they are not. {{site.data.alerts.callout_info}} -Some recursive CTEs are not not yet optimized. For details, see the [tracking issue](https://github.com/cockroachdb/cockroach/issues/89954). +Some recursive CTEs are not not yet optimized. For details, see the . {{site.data.alerts.end}} ## Correlated common table expressions diff --git a/src/current/v25.2/configure-replication-zones.md b/src/current/v25.2/configure-replication-zones.md index 927b5e363f3..fd072f61c7c 100644 --- a/src/current/v25.2/configure-replication-zones.md +++ b/src/current/v25.2/configure-replication-zones.md @@ -98,7 +98,7 @@ For more information, see the following subsections: The hierarchy of inheritance for zone configs can be visualized using the following outline-style diagram, in which each level of indentation denotes an inheritance relationship. -The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. ``` - default @@ -127,7 +127,7 @@ From the whole-system perspective, the hierarchy of schema object zone configs c The following diagram presents the same set of schema objects as the previous outline-style diagram, but using boxes and lines joined with arrows that represent the "top-down" view. -Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information about this limitation, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. zone config inheritance diagram diff --git a/src/current/v25.2/create-sequence.md b/src/current/v25.2/create-sequence.md index 36d8fd1da0b..5ae01afb718 100644 --- a/src/current/v25.2/create-sequence.md +++ b/src/current/v25.2/create-sequence.md @@ -59,7 +59,7 @@ CockroachDB supports the following [SQL sequence functions]({% link {{ page.vers CockroachDB supports session-scoped temporary sequences. Unlike persistent sequences, temporary sequences can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary sequences on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v25.2/create-table.md b/src/current/v25.2/create-table.md index e14849f0f2c..be3cb17cbc0 100644 --- a/src/current/v25.2/create-table.md +++ b/src/current/v25.2/create-table.md @@ -155,7 +155,7 @@ If you use `GENERATED BY DEFAULT AS IDENTITY` to define the identity column, any Note the following limitations of identity columns: -- `GENERATED ALWAYS AS IDENTITY`/`GENERATED BY DEFAULT AS IDENTITY` is supported in [`ALTER TABLE ... ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statements only when the table being altered is empty, as [CockroachDB does not support back-filling sequential column data]({% link {{ page.version.version }}/known-limitations.md %}#adding-a-column-with-sequence-based-default-values). For more information, see [#42508](https://github.com/cockroachdb/cockroach/issues/42508). +- `GENERATED ALWAYS AS IDENTITY`/`GENERATED BY DEFAULT AS IDENTITY` is supported in [`ALTER TABLE ... ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statements only when the table being altered is empty, as [CockroachDB does not support back-filling sequential column data]({% link {{ page.version.version }}/known-limitations.md %}#adding-a-column-with-sequence-based-default-values). For more information, see. - Unlike PostgreSQL, CockroachDB does not support using the `OVERRIDING SYSTEM VALUE` clause in `INSERT`/`UPDATE`/`UPSERT` statements to overwrite `GENERATED ALWAYS AS IDENTITY` identity column values. For an example of an identity column, see [Create a table with an identity column](#create-a-table-with-an-identity-column). diff --git a/src/current/v25.2/disaster-recovery-planning.md b/src/current/v25.2/disaster-recovery-planning.md index 59b05402692..87227180617 100644 --- a/src/current/v25.2/disaster-recovery-planning.md +++ b/src/current/v25.2/disaster-recovery-planning.md @@ -322,7 +322,7 @@ If your cluster is running, you do not have a backup that encapsulates the time If you have corrupted data in a database or table, [restore]({% link {{ page.version.version }}/restore.md %}) the object from a prior [backup]({% link {{ page.version.version }}/backup.md %}). If revision history is in the backup, you can restore from a [point in time]({% link {{ page.version.version }}/take-backups-with-revision-history-and-restore-from-a-point-in-time.md %}). -Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see [#51380](https://github.com/cockroachdb/cockroach/issues/51380) for more information), and you will need to take a backup that is backdated to the system time when the database still existed. +Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see for more information), and you will need to take a backup that is backdated to the system time when the database still existed. {{site.data.alerts.callout_info}} If the table you are restoring has foreign keys, [careful consideration]({% link {{ page.version.version }}/restore.md %}#remove-the-foreign-key-before-restore) should be applied to make sure data integrity is maintained during the restore process. diff --git a/src/current/v25.2/example-apps.md b/src/current/v25.2/example-apps.md index bea3cfd1876..7cebd29785e 100644 --- a/src/current/v25.2/example-apps.md +++ b/src/current/v25.2/example-apps.md @@ -14,7 +14,7 @@ Click the links in the tables below to see simple but complete example applicati If you are looking to do a specific task such as connect to the database, insert data, or run multi-statement transactions, see [this list of tasks](#tasks). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM with **partial** support. If you encounter problems, please with details to help us make progress toward full support. Note that tools with [**community-level** support]({% link {{ page.version.version }}/community-tooling.md %}) have been tested or developed by the CockroachDB community, but are not officially supported by Cockroach Labs. If you encounter problems with using these tools, please contact the maintainer of the tool with details. {{site.data.alerts.end}} diff --git a/src/current/v25.2/file-an-issue.md b/src/current/v25.2/file-an-issue.md index 9255e2c08b2..81da0da5fef 100644 --- a/src/current/v25.2/file-an-issue.md +++ b/src/current/v25.2/file-an-issue.md @@ -28,7 +28,7 @@ To file an issue in GitHub, we need the following information: ### Template -You can use this as a template for [filing an issue in GitHub](https://github.com/cockroachdb/cockroach/issues/new): +You can use this as a template for : ~~~ diff --git a/src/current/v25.2/foreign-key.md b/src/current/v25.2/foreign-key.md index 55677511e3d..0bd56ddd882 100644 --- a/src/current/v25.2/foreign-key.md +++ b/src/current/v25.2/foreign-key.md @@ -93,7 +93,7 @@ For matching purposes, composite foreign keys can be in one of three states: For examples showing how these key matching algorithms work, see [Match composite foreign keys with `MATCH SIMPLE` and `MATCH FULL`](#match-composite-foreign-keys-with-match-simple-and-match-full). {{site.data.alerts.callout_info}} -CockroachDB does not support `MATCH PARTIAL`. For more information, see issue [#20305](https://github.com/cockroachdb/cockroach/issues/20305). +CockroachDB does not support `MATCH PARTIAL`. For more information, see issue. {{site.data.alerts.end}} ### Foreign key actions diff --git a/src/current/v25.2/install-client-drivers.md b/src/current/v25.2/install-client-drivers.md index 984671a0dfc..b25a85de6f1 100644 --- a/src/current/v25.2/install-client-drivers.md +++ b/src/current/v25.2/install-client-drivers.md @@ -8,7 +8,7 @@ docs_area: develop CockroachDB supports both native drivers and the PostgreSQL wire protocol, so most available PostgreSQL client drivers and ORM frameworks should work with CockroachDB. Choose a language for supported clients, and follow the installation steps. After you install a client library, you can [connect to the database]({% link {{ page.version.version }}/connect-to-the-database.md %}). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please with details to help us make progress toward full support. {{site.data.alerts.end}}
    diff --git a/src/current/v25.2/install-cockroachdb-mac.md b/src/current/v25.2/install-cockroachdb-mac.md index b8e5583b7f0..93317ef7958 100644 --- a/src/current/v25.2/install-cockroachdb-mac.md +++ b/src/current/v25.2/install-cockroachdb-mac.md @@ -201,4 +201,4 @@ CockroachDB runtimes built for the ARM architecture have the following limitatio {% comment %}v22.2.0+{% endcomment %} -On macOS ARM systems, [spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead [run the Intel binary](#install-the-binary) or use the[Docker container image](#use-docker). Refer to [GitHub issue #93161](https://github.com/cockroachdb/cockroach/issues/93161) for more information. +On macOS ARM systems, [spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead [run the Intel binary](#install-the-binary) or use the[Docker container image](#use-docker). Refer to for more information. diff --git a/src/current/v25.2/intellij-idea.md b/src/current/v25.2/intellij-idea.md index de46249320f..2a7a45b71cf 100644 --- a/src/current/v25.2/intellij-idea.md +++ b/src/current/v25.2/intellij-idea.md @@ -79,15 +79,6 @@ Requires setting **Introspect using JDBC metadata** ([details below](#set-cockro You can now use IntelliJ's [database tool window](https://www.jetbrains.com/help/idea/working-with-the-database-tool-window.html) to interact with your CockroachDB cluster. -## Report issues with IntelliJ IDEA & CockroachDB - -If you encounter issues other than those outlined above, please [file an issue on the `cockroachdb/cockroach` GitHub repo](https://github.com/cockroachdb/cockroach/issues/new?template=bug_report.md), including the following details about the environment where you encountered the issue: - -- CockroachDB version ([`cockroach version`]({% link {{ page.version.version }}/cockroach-version.md %})) -- IntelliJ IDEA version -- Operating system -- Steps to reproduce the behavior -- If possible, a trace of the SQL statements sent to CockroachDB while the error is being reproduced using [SQL query logging]({% link {{ page.version.version }}/logging-use-cases.md %}#sql_exec). ## See also diff --git a/src/current/v25.2/known-limitations.md b/src/current/v25.2/known-limitations.md index e18fdc0a835..ae315ed785e 100644 --- a/src/current/v25.2/known-limitations.md +++ b/src/current/v25.2/known-limitations.md @@ -59,7 +59,7 @@ CockroachDB supports the [PostgreSQL wire protocol](https://www.postgresql.org/d #### `CAST` expressions containing a subquery with an `ENUM` target are not supported -Casting subqueries to ENUMs in views and UDFs is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) +Casting subqueries to ENUMs in views and UDFs is not supported. #### Statements containing multiple modification subqueries of the same table are disallowed @@ -68,13 +68,13 @@ Statements containing multiple modification subqueries mutating the same row cou - Set the `sql.multiple_modifications_of_table.enabled` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) to `true`. - Use the `enable_multiple_modifications_of_table` [session variable]({% link {{ page.version.version }}/set-vars.md %}). -If multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. [#70731](https://github.com/cockroachdb/cockroach/issues/70731) +If multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. #### Using `default_int_size` session variable in batch of statements When setting the `default_int_size` [session variable]({% link {{ page.version.version }}/set-vars.md %}) in a batch of statements such as `SET default_int_size='int4'; SELECT 1::IN`, the `default_int_size` variable will not take effect until the next statement. Statement parsing is asynchronous with statement execution. -As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. [#32846](https://github.com/cockroachdb/cockroach/issues/32846) +As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. #### Overload resolution for collated strings @@ -101,15 +101,15 @@ Many string operations are not properly overloaded for [collated strings]({% lin pq: unsupported binary operator: || ~~~ -[#10679](https://github.com/cockroachdb/cockroach/issues/10679) + #### Current sequence value not checked when updating min/max value -Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. [#23719](https://github.com/cockroachdb/cockroach/issues/23719) +Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. #### `null_ordered_last` does not produce correct results with tuples -By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL` values after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it does not work when the ordering column is a tuple. [#93558](https://github.com/cockroachdb/cockroach/issues/93558) +By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL` values after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it does not work when the ordering column is a tuple. ### Functions and procedures @@ -159,10 +159,9 @@ Transactions with [priority `HIGH`]({% link {{ page.version.version }}/transacti ERROR: unimplemented: cannot use ROLLBACK TO SAVEPOINT in a HIGH PRIORITY transaction containing DDL SQLSTATE: 0A000 HINT: You have attempted to use a feature that is not yet implemented. -See: https://github.com/cockroachdb/cockroach/issues/46414 ~~~ -[#46414](https://github.com/cockroachdb/cockroach/issues/46414) + #### `CANCEL JOB` limitations @@ -213,7 +212,7 @@ HINT: You have attempted to use a feature that is not yet implemented. See: https://go.crdb.dev/issue-v/42508/v24.2 ~~~ -[#42508](https://github.com/cockroachdb/cockroach/issues/42508) + #### Dropping a column referenced by a partial index @@ -240,9 +239,9 @@ When executing an [`ALTER TABLE ADD COLUMN`]({% link {{ page.version.version }}/ Some [schema changes]({% link {{ page.version.version }}/online-schema-changes.md %}) that [drop columns]({% link {{ page.version.version }}/alter-table.md %}#drop-column) cannot be [rolled back]({% link {{ page.version.version }}/rollback-transaction.md %}) properly. -In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. [#46541](https://github.com/cockroachdb/cockroach/issues/46541) +In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. -In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. [#47712](https://github.com/cockroachdb/cockroach/issues/47712) +In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. To reduce the chance that a column drop will roll back incorrectly: @@ -278,7 +277,7 @@ As a workaround, you can either [manually split a table's columns into multiple #### Placeholders in `PARTITION BY` -{% include {{ page.version.version }}/known-limitations/partitioning-with-placeholders.md %} [#19464](https://github.com/cockroachdb/cockroach/issues/19464) +{% include {{ page.version.version }}/known-limitations/partitioning-with-placeholders.md %} #### Unsupported trigram syntax @@ -294,7 +293,7 @@ The following PostgreSQL syntax and features are currently unsupported for [full #### CockroachDB does not allow inverted indexes with `STORING` -CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). [#88278](https://github.com/cockroachdb/cockroach/issues/88278) +CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). #### Multiple arbiter indexes for `INSERT ON CONFLICT DO UPDATE` @@ -314,19 +313,19 @@ CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ CockroachDB supports efficiently storing and querying [spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}), with the following limitations: -- Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. [#49203](https://github.com/cockroachdb/cockroach/issues/49203) +- Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. -- The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. [#49402](https://github.com/cockroachdb/cockroach/issues/49402) +- The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. -- The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. [#49448](https://github.com/cockroachdb/cockroach/issues/49448) +- The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. -- CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. [#56124](https://github.com/cockroachdb/cockroach/issues/56124) +- CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. -- CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). [#55903](https://github.com/cockroachdb/cockroach/issues/55903) +- CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). -- CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). [#55227](https://github.com/cockroachdb/cockroach/issues/55227) +- CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). -- CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). [#56492](https://github.com/cockroachdb/cockroach/issues/56492) +- CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). - {% include {{ page.version.version }}/known-limitations/srid-4326-limitations.md %} @@ -340,9 +339,9 @@ Refer to [`OID` best practices]({% link {{ page.version.version }}/oid.md %}#bes - {% include {{page.version.version}}/cdc/avro-udt-composite.md %} - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} -- Updating subfields of composite types using dot syntax results in a syntax error. [#102984](https://github.com/cockroachdb/cockroach/issues/102984) +- Updating subfields of composite types using dot syntax results in a syntax error. -- Tuple elements cannot be accessed without enclosing the [composite variable]({% link {{ page.version.version }}/create-type.md %}#create-a-composite-data-type) name in parentheses. For example, `(OLD).column` and `(NEW).column` when used in [triggers]({% link {{ page.version.version }}/triggers.md %}). [#114687](https://github.com/cockroachdb/cockroach/issues/114687) +- Tuple elements cannot be accessed without enclosing the [composite variable]({% link {{ page.version.version }}/create-type.md %}#create-a-composite-data-type) name in parentheses. For example, `(OLD).column` and `(NEW).column` when used in [triggers]({% link {{ page.version.version }}/triggers.md %}). #### `ALTER TYPE` limitations @@ -386,7 +385,7 @@ However, if there is no host at the target IP address, or if a firewall rule blo - Configure any active network firewalls to allow node-to-node traffic. - Verify that orchestration tools (e.g., Kubernetes) are configured to use the correct network connection information. -[#53410](https://github.com/cockroachdb/cockroach/issues/53410) + #### No guaranteed state switch from `DECOMMISSIONING` to `DECOMMISSIONED` if `node decommission` is interrupted @@ -395,7 +394,7 @@ There is no guaranteed state switch from `DECOMMISSIONING` to `DECOMMISSIONED` i - The `cockroach node decommission --wait-all` command was run and then interrupted - The `cockroach node decommission --wait=none` command was run -This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. [#94430](https://github.com/cockroachdb/cockroach/issues/94430) +This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. #### Simultaneous client connections and running queries on a single node @@ -431,7 +430,7 @@ As a workaround, [execute the file from the command line]({% link {{ page.versio #### Spatial features disabled for ARM Macs -[Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. [GitHub tracking issue](https://github.com/cockroachdb/cockroach/issues/93161) +[Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. #### Logging system limitations @@ -476,7 +475,7 @@ Accessing the DB Console for a secure cluster now requires login information (i. The [`COMMENT ON`]({% link {{ page.version.version }}/comment-on.md %}) statement associates comments to databases, tables, or columns. However, the internal table (`system.comments`) in which these comments are stored is not captured by a [`BACKUP`]({% link {{ page.version.version }}/backup.md %}) of a table or database. -As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. [#44396](https://github.com/cockroachdb/cockroach/issues/44396) +As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. #### `SHOW BACKUP` does not support symlinks for nodelocal @@ -517,8 +516,8 @@ Change data capture (CDC) provides efficient, distributed, row-level changefeeds The SQL optimizer has limitations under certain isolation levels: -- The new implementation of `SELECT FOR UPDATE` is not yet the default setting under `SERIALIZABLE` isolation. It can be used under `SERIALIZABLE` isolation by setting the `optimizer_use_lock_op_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}) to `true`. [#114737](https://github.com/cockroachdb/cockroach/issues/114737) -- `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. [#116836](https://github.com/cockroachdb/cockroach/issues/116836) +- The new implementation of `SELECT FOR UPDATE` is not yet the default setting under `SERIALIZABLE` isolation. It can be used under `SERIALIZABLE` isolation by setting the `optimizer_use_lock_op_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}) to `true`. +- `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. #### Statistics limitations @@ -527,7 +526,7 @@ The SQL optimizer has limitations under certain isolation levels: #### Incorrect query plans for partitions with `NULL` values -In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. [#82774](https://github.com/cockroachdb/cockroach/issues/82774) +In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. #### Vectorized engine limitations @@ -535,15 +534,15 @@ In cases where the partition definition includes a comparison with `NULL` and a #### `transaction_rows_read_err` and `transaction_rows_written_err` do not halt query execution -The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. [#70473](https://github.com/cockroachdb/cockroach/issues/70473) +The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. #### `sql.guardrails.max_row_size_err` misses indexed virtual computed columns -The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. [#69540](https://github.com/cockroachdb/cockroach/issues/69540) +The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. #### Using `LIKE...ESCAPE` in `WHERE` and `HAVING` constraints -CockroachDB tries to optimize most comparisons operators in `WHERE` and `HAVING` clauses into constraints on SQL indexes by only accessing selected rows. This is done for `LIKE` clauses when a common prefix for all selected rows can be determined in the search pattern (e.g., `... LIKE 'Joe%'`). However, this optimization is not yet available if the `ESCAPE` keyword is also used. [#30192](https://github.com/cockroachdb/cockroach/issues/30192) +CockroachDB tries to optimize most comparisons operators in `WHERE` and `HAVING` clauses into constraints on SQL indexes by only accessing selected rows. This is done for `LIKE` clauses when a common prefix for all selected rows can be determined in the search pattern (e.g., `... LIKE 'Joe%'`). However, this optimization is not yet available if the `ESCAPE` keyword is also used. #### Import with a high amount of disk contention @@ -698,7 +697,7 @@ UNION ALL SELECT * FROM t1 LEFT JOIN t2 ON st_contains(t1.geom, t2.geom) AND t2. (54 rows) ``` -[#59649](https://github.com/cockroachdb/cockroach/issues/59649) + #### Locality optimized search limitations @@ -711,4 +710,4 @@ UNION ALL SELECT * FROM t1 LEFT JOIN t2 ON st_contains(t1.geom, t2.geom) AND t2. #### Inverted join for `tsvector` and `tsquery` types is not supported -CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables. [#102731](https://github.com/cockroachdb/cockroach/issues/102731) +CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables. diff --git a/src/current/v25.2/postgresql-compatibility.md b/src/current/v25.2/postgresql-compatibility.md index 15eff6fdc35..16f079f9574 100644 --- a/src/current/v25.2/postgresql-compatibility.md +++ b/src/current/v25.2/postgresql-compatibility.md @@ -34,11 +34,11 @@ When set to `true`, multiple portals can be open at the same time, with their ex This feature has the following limitations: - Only read-only [`SELECT` queries]({% link {{ page.version.version }}/selection-queries.md %}) without [subqueries]({% link {{ page.version.version }}/subqueries.md %}) are supported. -- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - [cockroachdb/cockroach#96398](https://github.com/cockroachdb/cockroach/issues/96398) -- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - [cockroachdb/cockroach#100822](https://github.com/cockroachdb/cockroach/issues/100822) -- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - [cockroachdb/cockroach#99404](https://github.com/cockroachdb/cockroach/issues/99404) +- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - +- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - +- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - -In addition to the known issues, additional performance testing is needed. The current list of known issues can be viewed [on GitHub using the `A-pausable-portals` label](https://github.com/cockroachdb/cockroach/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc++label%3AA-pausable-portals+), and we welcome bug reports. +In addition to the known issues, additional performance testing is needed. ## Features that differ from PostgreSQL @@ -181,7 +181,7 @@ An `x` value less than `1` would result in the following error: pq: check constraint violated ~~~ -[#35370](https://github.com/cockroachdb/cockroach/issues/35370) + ### Column name from an outer column inside a subquery @@ -207,7 +207,7 @@ PostgreSQL: 1 ~~~ -[#46563](https://github.com/cockroachdb/cockroach/issues/46563) + ### SQL Compatibility diff --git a/src/current/v25.2/query-spatial-data.md b/src/current/v25.2/query-spatial-data.md index 572c3d1a1a1..4ca5bb93887 100644 --- a/src/current/v25.2/query-spatial-data.md +++ b/src/current/v25.2/query-spatial-data.md @@ -24,7 +24,7 @@ Just as CockroachDB strives for [PostgreSQL compatibility]({% link {{ page.versi CockroachDB does not implement the full list of PostGIS built-in functions and operators. Also, [spatial indexing works differently]({% link {{ page.version.version }}/spatial-indexes.md %}) (see the [Performance](#performance) section below). For a list of the spatial functions CockroachDB supports, see [Geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions). -If your application needs support for functions that are not yet implemented, check the [meta-issue for built-in function support on GitHub](https://github.com/cockroachdb/cockroach/issues/49203), which describes how to find an issue for the built-in function(s) you need. +If your application needs support for functions that are not yet implemented, check the , which describes how to find an issue for the built-in function(s) you need. For a list of other known limitations, see [Known Limitations]({% link {{ page.version.version }}/known-limitations.md %}#spatial-support-limitations). diff --git a/src/current/v25.2/spatial-tutorial.md b/src/current/v25.2/spatial-tutorial.md index a2f0e59af87..c9c7380c127 100644 --- a/src/current/v25.2/spatial-tutorial.md +++ b/src/current/v25.2/spatial-tutorial.md @@ -966,7 +966,7 @@ Time: 1.447s total (execution 1.446s / network 0.000s) Unfortunately, this query is a bit slower than you would like: about 1.5 seconds on a single-node [`cockroach demo`]({% link {{ page.version.version }}/cockroach-demo.md %}) cluster on a laptop. There are several reasons for this: 1. You haven't created any indexes at all yet. The query is likely to be doing full table scans, which you will need to hunt down with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %}). -1. CockroachDB does not yet have built-in support for index-based nearest neighbor queries. If this feature is important to you, please comment with some information about your use case on [cockroachdb/cockroach#55227](https://github.com/cockroachdb/cockroach/issues/55227). +1. CockroachDB does not yet have built-in support for index-based nearest neighbor queries. If this feature is important to you, please comment with some information about your use case on . Let's look at the `EXPLAIN` output to see if there is something that can be done to improve this query's performance: diff --git a/src/current/v25.2/sql-feature-support.md b/src/current/v25.2/sql-feature-support.md index df9fa0711d8..1d25ea212e4 100644 --- a/src/current/v25.2/sql-feature-support.md +++ b/src/current/v25.2/sql-feature-support.md @@ -194,4 +194,4 @@ XML | ✗ | Standard | XML data can be stored as `BYTES`, but we do not offer XM Triggers | Partial | Standard | [Triggers documentation]({% link {{ page.version.version }}/triggers.md %}) Row-level TTL | ✓ | Common Extension | Automatically delete expired rows. For more information, see [Batch-delete expired data with Row-Level TTL]({% link {{ page.version.version }}/row-level-ttl.md %}). User-defined functions | Partial | Standard | [User-Defined Functions documentation]({% link {{ page.version.version }}/user-defined-functions.md %}) - `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. [GitHub issue tracking `CREATE EXTENSION` support](https://github.com/cockroachdb/cockroach/issues/74777). + `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. . diff --git a/src/current/v25.2/sql-name-resolution.md b/src/current/v25.2/sql-name-resolution.md index 554a9a65583..9138b02ddce 100644 --- a/src/current/v25.2/sql-name-resolution.md +++ b/src/current/v25.2/sql-name-resolution.md @@ -37,7 +37,7 @@ If you are upgrading to {{ page.version.version }}, take any combination of the - [Create new schemas]({% link {{ page.version.version }}/create-schema.md %}) in databases on your cluster. After the schemas are created, use [`ALTER TABLE ... RENAME`]({% link {{ page.version.version }}/alter-table.md %}#rename-to), [`ALTER SEQUENCE ... RENAME`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE ... RENAME`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW ... RENAME`]({% link {{ page.version.version }}/alter-view.md %}) statements to move objects between databases as needed. To move objects between schemas, use [`ALTER TABLE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-table.md %}#set-schema), [`ALTER SEQUENCE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-sequence.md %}), or [`ALTER VIEW ... SET SCHEMA`]({% link {{ page.version.version }}/alter-view.md %}). -- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). For details, see [tracking issue](https://github.com/cockroachdb/cockroach/issues/55791). +- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). ## How name resolution works diff --git a/src/current/v25.2/st_union.md b/src/current/v25.2/st_union.md index 01796b337cf..a409c9b5e98 100644 --- a/src/current/v25.2/st_union.md +++ b/src/current/v25.2/st_union.md @@ -12,7 +12,7 @@ Given a set of shapes (e.g., from a [selection query]({% link {{ page.version.ve - [`GEOMETRY`]({% link {{ page.version.version }}/architecture/glossary.md %}#geometry) {{site.data.alerts.callout_info}} -The non-aggregate version of `ST_Union` is not yet implemented. For more information, see [cockroach#49064](https://github.com/cockroachdb/cockroach/issues/49064). +The non-aggregate version of `ST_Union` is not yet implemented. {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v25.2/temporary-tables.md b/src/current/v25.2/temporary-tables.md index 3a92fc64c97..653e02d5893 100644 --- a/src/current/v25.2/temporary-tables.md +++ b/src/current/v25.2/temporary-tables.md @@ -10,7 +10,7 @@ docs_area: develop To create a temp table, add `TEMP`/`TEMPORARY` to a [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}) or [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}) statement. For full syntax details, see the [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}#synopsis) and [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}#synopsis) pages. For example usage, see [Examples](#examples). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v25.2/views.md b/src/current/v25.2/views.md index f7fe7c58d2a..4a1b25fd257 100644 --- a/src/current/v25.2/views.md +++ b/src/current/v25.2/views.md @@ -653,7 +653,7 @@ To speed up queries on materialized views, you can add an [index]({% link {{ pag CockroachDB supports session-scoped temporary views. Unlike persistent views, temporary views can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary views on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v25.3/cockroachdb-feature-availability.md b/src/current/v25.3/cockroachdb-feature-availability.md index ff39f751213..5b361af9a0d 100644 --- a/src/current/v25.3/cockroachdb-feature-availability.md +++ b/src/current/v25.3/cockroachdb-feature-availability.md @@ -198,7 +198,7 @@ Example: ### Check for constraint violations with `SCRUB` -Checks the consistency of [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) indexes, [`CHECK`]({% link {{ page.version.version }}/check.md %}) constraints, and more. Partially implemented; see [cockroachdb/cockroach#10425](https://github.com/cockroachdb/cockroach/issues/10425) for details. +Checks the consistency of [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) indexes, [`CHECK`]({% link {{ page.version.version }}/check.md %}) constraints, and more. Partially implemented; see for details. {{site.data.alerts.callout_info}} This example uses the `users` table from our open-source, fictional peer-to-peer vehicle-sharing application, [MovR]({% link {{ page.version.version }}/movr.md %}). @@ -229,7 +229,7 @@ The [`SHOW RANGE ... FOR ROW`]({% link {{ page.version.version }}/show-range-for ### Temporary objects -[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Dropping large numbers of temporary objects in rapid succession can also enqueue many [schema change GC jobs]({% link {{ page.version.version }}/show-jobs.md %}), which may further degrade cluster performance. This performance degradation could persist long after creating the temporary objects. For more details, see [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Dropping large numbers of temporary objects in rapid succession can also enqueue many [schema change GC jobs]({% link {{ page.version.version }}/show-jobs.md %}), which may further degrade cluster performance. This performance degradation could persist long after creating the temporary objects. To enable temporary objects, set the `experimental_enable_temp_tables` [session variable]({% link {{ page.version.version }}/show-vars.md %}) to `on`. diff --git a/src/current/v25.3/common-table-expressions.md b/src/current/v25.3/common-table-expressions.md index a76f13ff39d..293fa7c8299 100644 --- a/src/current/v25.3/common-table-expressions.md +++ b/src/current/v25.3/common-table-expressions.md @@ -446,7 +446,7 @@ SELECT COUNT(*) FROM temp; Because this pattern incurs the overhead of a new scan for each iteration, it is slower per row than a full scan. It is therefore faster than a full scan in cases (such as this one) where many rows are skipped, but is slower if they are not. {{site.data.alerts.callout_info}} -Some recursive CTEs are not not yet optimized. For details, see the [tracking issue](https://github.com/cockroachdb/cockroach/issues/89954). +Some recursive CTEs are not not yet optimized. For details, see the . {{site.data.alerts.end}} ## Correlated common table expressions diff --git a/src/current/v25.3/configure-replication-zones.md b/src/current/v25.3/configure-replication-zones.md index 02752f39314..6b8fd16f047 100644 --- a/src/current/v25.3/configure-replication-zones.md +++ b/src/current/v25.3/configure-replication-zones.md @@ -98,7 +98,7 @@ For more information, see the following subsections: The hierarchy of inheritance for zone configs can be visualized using the following outline-style diagram, in which each level of indentation denotes an inheritance relationship. -The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. ``` - default @@ -127,7 +127,7 @@ From the whole-system perspective, the hierarchy of schema object zone configs c The following diagram presents the same set of schema objects as the previous outline-style diagram, but using boxes and lines joined with arrows that represent the "top-down" view. -Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information about this limitation, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. zone config inheritance diagram diff --git a/src/current/v25.3/create-sequence.md b/src/current/v25.3/create-sequence.md index 72bc62b717b..c5d1c7841ce 100644 --- a/src/current/v25.3/create-sequence.md +++ b/src/current/v25.3/create-sequence.md @@ -60,7 +60,7 @@ CockroachDB supports the following [SQL sequence functions]({% link {{ page.vers CockroachDB supports session-scoped temporary sequences. Unlike persistent sequences, temporary sequences can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary sequences on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v25.3/create-table.md b/src/current/v25.3/create-table.md index e14849f0f2c..be3cb17cbc0 100644 --- a/src/current/v25.3/create-table.md +++ b/src/current/v25.3/create-table.md @@ -155,7 +155,7 @@ If you use `GENERATED BY DEFAULT AS IDENTITY` to define the identity column, any Note the following limitations of identity columns: -- `GENERATED ALWAYS AS IDENTITY`/`GENERATED BY DEFAULT AS IDENTITY` is supported in [`ALTER TABLE ... ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statements only when the table being altered is empty, as [CockroachDB does not support back-filling sequential column data]({% link {{ page.version.version }}/known-limitations.md %}#adding-a-column-with-sequence-based-default-values). For more information, see [#42508](https://github.com/cockroachdb/cockroach/issues/42508). +- `GENERATED ALWAYS AS IDENTITY`/`GENERATED BY DEFAULT AS IDENTITY` is supported in [`ALTER TABLE ... ADD COLUMN`]({% link {{ page.version.version }}/alter-table.md %}#add-column) statements only when the table being altered is empty, as [CockroachDB does not support back-filling sequential column data]({% link {{ page.version.version }}/known-limitations.md %}#adding-a-column-with-sequence-based-default-values). For more information, see. - Unlike PostgreSQL, CockroachDB does not support using the `OVERRIDING SYSTEM VALUE` clause in `INSERT`/`UPDATE`/`UPSERT` statements to overwrite `GENERATED ALWAYS AS IDENTITY` identity column values. For an example of an identity column, see [Create a table with an identity column](#create-a-table-with-an-identity-column). diff --git a/src/current/v25.3/disaster-recovery-planning.md b/src/current/v25.3/disaster-recovery-planning.md index de593915cf0..0aa5e6b3fb9 100644 --- a/src/current/v25.3/disaster-recovery-planning.md +++ b/src/current/v25.3/disaster-recovery-planning.md @@ -322,7 +322,7 @@ If your cluster is running, you do not have a backup that encapsulates the time If you have corrupted data in a database or table, [restore]({% link {{ page.version.version }}/restore.md %}) the object from a prior [backup]({% link {{ page.version.version }}/backup.md %}). If revision history is in the backup, you can restore from a [point in time]({% link {{ page.version.version }}/take-backups-with-revision-history-and-restore-from-a-point-in-time.md %}). -Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see [#51380](https://github.com/cockroachdb/cockroach/issues/51380) for more information), and you will need to take a backup that is backdated to the system time when the database still existed. +Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see for more information), and you will need to take a backup that is backdated to the system time when the database still existed. {{site.data.alerts.callout_info}} If the table you are restoring has foreign keys, [careful consideration]({% link {{ page.version.version }}/restore.md %}#remove-the-foreign-key-before-restore) should be applied to make sure data integrity is maintained during the restore process. diff --git a/src/current/v25.3/example-apps.md b/src/current/v25.3/example-apps.md index bea3cfd1876..7cebd29785e 100644 --- a/src/current/v25.3/example-apps.md +++ b/src/current/v25.3/example-apps.md @@ -14,7 +14,7 @@ Click the links in the tables below to see simple but complete example applicati If you are looking to do a specific task such as connect to the database, insert data, or run multi-statement transactions, see [this list of tasks](#tasks). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM with **partial** support. If you encounter problems, please with details to help us make progress toward full support. Note that tools with [**community-level** support]({% link {{ page.version.version }}/community-tooling.md %}) have been tested or developed by the CockroachDB community, but are not officially supported by Cockroach Labs. If you encounter problems with using these tools, please contact the maintainer of the tool with details. {{site.data.alerts.end}} diff --git a/src/current/v25.3/file-an-issue.md b/src/current/v25.3/file-an-issue.md index 9255e2c08b2..81da0da5fef 100644 --- a/src/current/v25.3/file-an-issue.md +++ b/src/current/v25.3/file-an-issue.md @@ -28,7 +28,7 @@ To file an issue in GitHub, we need the following information: ### Template -You can use this as a template for [filing an issue in GitHub](https://github.com/cockroachdb/cockroach/issues/new): +You can use this as a template for : ~~~ diff --git a/src/current/v25.3/foreign-key.md b/src/current/v25.3/foreign-key.md index 88a094b2a74..9c7f8a514ef 100644 --- a/src/current/v25.3/foreign-key.md +++ b/src/current/v25.3/foreign-key.md @@ -92,7 +92,7 @@ For matching purposes, composite foreign keys can be in one of three states: For examples showing how these key matching algorithms work, see [Match composite foreign keys with `MATCH SIMPLE` and `MATCH FULL`](#match-composite-foreign-keys-with-match-simple-and-match-full). {{site.data.alerts.callout_info}} -CockroachDB does not support `MATCH PARTIAL`. For more information, see issue [#20305](https://github.com/cockroachdb/cockroach/issues/20305). +CockroachDB does not support `MATCH PARTIAL`. For more information, see issue. {{site.data.alerts.end}} ### Foreign key actions diff --git a/src/current/v25.3/install-client-drivers.md b/src/current/v25.3/install-client-drivers.md index 984671a0dfc..b25a85de6f1 100644 --- a/src/current/v25.3/install-client-drivers.md +++ b/src/current/v25.3/install-client-drivers.md @@ -8,7 +8,7 @@ docs_area: develop CockroachDB supports both native drivers and the PostgreSQL wire protocol, so most available PostgreSQL client drivers and ORM frameworks should work with CockroachDB. Choose a language for supported clients, and follow the installation steps. After you install a client library, you can [connect to the database]({% link {{ page.version.version }}/connect-to-the-database.md %}). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please with details to help us make progress toward full support. {{site.data.alerts.end}}
    diff --git a/src/current/v25.3/install-cockroachdb-mac.md b/src/current/v25.3/install-cockroachdb-mac.md index b8e5583b7f0..93317ef7958 100644 --- a/src/current/v25.3/install-cockroachdb-mac.md +++ b/src/current/v25.3/install-cockroachdb-mac.md @@ -201,4 +201,4 @@ CockroachDB runtimes built for the ARM architecture have the following limitatio {% comment %}v22.2.0+{% endcomment %} -On macOS ARM systems, [spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead [run the Intel binary](#install-the-binary) or use the[Docker container image](#use-docker). Refer to [GitHub issue #93161](https://github.com/cockroachdb/cockroach/issues/93161) for more information. +On macOS ARM systems, [spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead [run the Intel binary](#install-the-binary) or use the[Docker container image](#use-docker). Refer to for more information. diff --git a/src/current/v25.3/intellij-idea.md b/src/current/v25.3/intellij-idea.md index de46249320f..2a7a45b71cf 100644 --- a/src/current/v25.3/intellij-idea.md +++ b/src/current/v25.3/intellij-idea.md @@ -79,15 +79,6 @@ Requires setting **Introspect using JDBC metadata** ([details below](#set-cockro You can now use IntelliJ's [database tool window](https://www.jetbrains.com/help/idea/working-with-the-database-tool-window.html) to interact with your CockroachDB cluster. -## Report issues with IntelliJ IDEA & CockroachDB - -If you encounter issues other than those outlined above, please [file an issue on the `cockroachdb/cockroach` GitHub repo](https://github.com/cockroachdb/cockroach/issues/new?template=bug_report.md), including the following details about the environment where you encountered the issue: - -- CockroachDB version ([`cockroach version`]({% link {{ page.version.version }}/cockroach-version.md %})) -- IntelliJ IDEA version -- Operating system -- Steps to reproduce the behavior -- If possible, a trace of the SQL statements sent to CockroachDB while the error is being reproduced using [SQL query logging]({% link {{ page.version.version }}/logging-use-cases.md %}#sql_exec). ## See also diff --git a/src/current/v25.3/known-limitations.md b/src/current/v25.3/known-limitations.md index ddc193ed9e9..d29a1bcdc1d 100644 --- a/src/current/v25.3/known-limitations.md +++ b/src/current/v25.3/known-limitations.md @@ -69,7 +69,7 @@ CockroachDB supports the [PostgreSQL wire protocol](https://www.postgresql.org/d #### `CAST` expressions containing a subquery with an `ENUM` target are not supported -Casting subqueries to ENUMs in views and UDFs is not supported. [#108184](https://github.com/cockroachdb/cockroach/issues/108184) +Casting subqueries to ENUMs in views and UDFs is not supported. #### Statements containing multiple modification subqueries of the same table are disallowed @@ -78,13 +78,13 @@ Statements containing multiple modification subqueries mutating the same row cou - Set the `sql.multiple_modifications_of_table.enabled` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) to `true`. - Use the `enable_multiple_modifications_of_table` [session variable]({% link {{ page.version.version }}/set-vars.md %}). -If multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. [#70731](https://github.com/cockroachdb/cockroach/issues/70731) +If multiple mutations inside the same statement affect different tables with [`FOREIGN KEY`]({% link {{ page.version.version }}/foreign-key.md %}) relations and `ON CASCADE` clauses between them, the results will be different from what is expected in PostgreSQL. #### Using `default_int_size` session variable in batch of statements When setting the `default_int_size` [session variable]({% link {{ page.version.version }}/set-vars.md %}) in a batch of statements such as `SET default_int_size='int4'; SELECT 1::IN`, the `default_int_size` variable will not take effect until the next statement. Statement parsing is asynchronous with statement execution. -As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. [#32846](https://github.com/cockroachdb/cockroach/issues/32846) +As a workaround, set `default_int_size` via your database driver, or ensure that `SET default_int_size` is in its own statement. #### Overload resolution for collated strings @@ -111,15 +111,15 @@ Many string operations are not properly overloaded for [collated strings]({% lin pq: unsupported binary operator: || ~~~ -[#10679](https://github.com/cockroachdb/cockroach/issues/10679) + #### Current sequence value not checked when updating min/max value -Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. [#23719](https://github.com/cockroachdb/cockroach/issues/23719) +Altering the minimum or maximum value of a series does not check the current value of a series. This means that it is possible to silently set the maximum to a value less than, or a minimum value greater than, the current value. #### `null_ordered_last` does not produce correct results with tuples -By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL` values after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it does not work when the ordering column is a tuple. [#93558](https://github.com/cockroachdb/cockroach/issues/93558) +By default, CockroachDB orders `NULL`s before all other values. For compatibility with PostgreSQL, the `null_ordered_last` [session variable]({% link {{ page.version.version }}/set-vars.md %}) was added, which changes the default to order `NULL` values after all other values. This works in most cases, due to some transformations CockroachDB makes in the optimizer to add extra ordering columns. However, it does not work when the ordering column is a tuple. ### Functions and procedures @@ -169,10 +169,9 @@ Transactions with [priority `HIGH`]({% link {{ page.version.version }}/transacti ERROR: unimplemented: cannot use ROLLBACK TO SAVEPOINT in a HIGH PRIORITY transaction containing DDL SQLSTATE: 0A000 HINT: You have attempted to use a feature that is not yet implemented. -See: https://github.com/cockroachdb/cockroach/issues/46414 ~~~ -[#46414](https://github.com/cockroachdb/cockroach/issues/46414) + #### `CANCEL JOB` limitations @@ -227,7 +226,7 @@ HINT: You have attempted to use a feature that is not yet implemented. See: https://go.crdb.dev/issue-v/42508/v24.2 ~~~ -[#42508](https://github.com/cockroachdb/cockroach/issues/42508) + #### Dropping a column referenced by a partial index @@ -254,9 +253,9 @@ When executing an [`ALTER TABLE ADD COLUMN`]({% link {{ page.version.version }}/ Some [schema changes]({% link {{ page.version.version }}/online-schema-changes.md %}) that [drop columns]({% link {{ page.version.version }}/alter-table.md %}#drop-column) cannot be [rolled back]({% link {{ page.version.version }}/rollback-transaction.md %}) properly. -In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. [#46541](https://github.com/cockroachdb/cockroach/issues/46541) +In some cases, the rollback will succeed, but the column data might be partially or totally missing, or stale due to the asynchronous nature of the schema change. -In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. [#47712](https://github.com/cockroachdb/cockroach/issues/47712) +In other cases, the rollback will fail in such a way that will never be cleaned up properly, leaving the table descriptor in a state where no other schema changes can be run successfully. To reduce the chance that a column drop will roll back incorrectly: @@ -292,7 +291,7 @@ As a workaround, you can either [manually split a table's columns into multiple #### Placeholders in `PARTITION BY` -{% include {{ page.version.version }}/known-limitations/partitioning-with-placeholders.md %} [#19464](https://github.com/cockroachdb/cockroach/issues/19464) +{% include {{ page.version.version }}/known-limitations/partitioning-with-placeholders.md %} #### Unsupported trigram syntax @@ -308,7 +307,7 @@ The following PostgreSQL syntax and features are currently unsupported for [full #### CockroachDB does not allow inverted indexes with `STORING` -CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). [#88278](https://github.com/cockroachdb/cockroach/issues/88278) +CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ page.version.version }}/create-index.md %}#store-columns). #### Multiple arbiter indexes for `INSERT ON CONFLICT DO UPDATE` @@ -328,19 +327,19 @@ CockroachDB does not allow inverted indexes with a [`STORING` column]({% link {{ CockroachDB supports efficiently storing and querying [spatial data]({% link {{ page.version.version }}/export-spatial-data.md %}), with the following limitations: -- Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. [#49203](https://github.com/cockroachdb/cockroach/issues/49203) +- Not all [PostGIS spatial functions](https://postgis.net/docs/reference.html) are supported. -- The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. [#49402](https://github.com/cockroachdb/cockroach/issues/49402) +- The `AddGeometryColumn` [spatial function]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions) only allows constant arguments. -- The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. [#49448](https://github.com/cockroachdb/cockroach/issues/49448) +- The `AddGeometryColumn` spatial function only allows the `true` value for its `use_typmod` parameter. -- CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. [#56124](https://github.com/cockroachdb/cockroach/issues/56124) +- CockroachDB does not support the `@` operator. Instead of using `@` in spatial expressions, we recommend using the inverse, with `~`. For example, instead of `a @ b`, use `b ~ a`. -- CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). [#55903](https://github.com/cockroachdb/cockroach/issues/55903) +- CockroachDB does not yet support [`INSERT`]({% link {{ page.version.version }}/insert.md %})s into the [`spatial_ref_sys` table]({% link {{ page.version.version }}/architecture/glossary.md %}#spatial-system-tables). This limitation also blocks the [`ogr2ogr -f PostgreSQL` file conversion command](https://gdal.org/programs/ogr2ogr.html#cmdoption-ogr2ogr-f). -- CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). [#55227](https://github.com/cockroachdb/cockroach/issues/55227) +- CockroachDB does not yet support [k-nearest neighbors](https://wikipedia.org/wiki/K-nearest_neighbors_algorithm). -- CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). [#56492](https://github.com/cockroachdb/cockroach/issues/56492) +- CockroachDB does not support using [schema name prefixes]({% link {{ page.version.version }}/sql-name-resolution.md %}#how-name-resolution-works) to refer to [data types]({% link {{ page.version.version }}/data-types.md %}) with type modifiers (e.g., `public.geometry(linestring, 4326)`). Instead, use fully-unqualified names to refer to data types with type modifiers (e.g., `geometry(linestring,4326)`). - {% include {{ page.version.version }}/known-limitations/srid-4326-limitations.md %} @@ -354,9 +353,9 @@ Refer to [`OID` best practices]({% link {{ page.version.version }}/oid.md %}#bes - {% include {{page.version.version}}/cdc/avro-udt-composite.md %} - {% include {{page.version.version}}/cdc/csv-udt-composite.md %} -- Updating subfields of composite types using dot syntax results in a syntax error. [#102984](https://github.com/cockroachdb/cockroach/issues/102984) +- Updating subfields of composite types using dot syntax results in a syntax error. -- Tuple elements cannot be accessed without enclosing the [composite variable]({% link {{ page.version.version }}/create-type.md %}#create-a-composite-data-type) name in parentheses. For example, `(OLD).column` and `(NEW).column` when used in [triggers]({% link {{ page.version.version }}/triggers.md %}). [#114687](https://github.com/cockroachdb/cockroach/issues/114687) +- Tuple elements cannot be accessed without enclosing the [composite variable]({% link {{ page.version.version }}/create-type.md %}#create-a-composite-data-type) name in parentheses. For example, `(OLD).column` and `(NEW).column` when used in [triggers]({% link {{ page.version.version }}/triggers.md %}). #### `ALTER TYPE` limitations @@ -406,7 +405,7 @@ However, if there is no host at the target IP address, or if a firewall rule blo - Configure any active network firewalls to allow node-to-node traffic. - Verify that orchestration tools (e.g., Kubernetes) are configured to use the correct network connection information. -[#53410](https://github.com/cockroachdb/cockroach/issues/53410) + #### No guaranteed state switch from `DECOMMISSIONING` to `DECOMMISSIONED` if `node decommission` is interrupted @@ -415,7 +414,7 @@ There is no guaranteed state switch from `DECOMMISSIONING` to `DECOMMISSIONED` i - The `cockroach node decommission --wait-all` command was run and then interrupted - The `cockroach node decommission --wait=none` command was run -This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. [#94430](https://github.com/cockroachdb/cockroach/issues/94430) +This is because the state flip is effected by the CLI program at the end. Only the CLI (or its underlying API call) is able to finalize the "decommissioned" state. If the command is interrupted, or `--wait=none` is used, the state will only flip to "decommissioned" when the CLI program is run again after decommissioning has done all its work. #### Simultaneous client connections and running queries on a single node @@ -451,7 +450,7 @@ As a workaround, [execute the file from the command line]({% link {{ page.versio #### Spatial features disabled for ARM Macs -[Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. [GitHub tracking issue](https://github.com/cockroachdb/cockroach/issues/93161) +[Spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the [GEOS](https://libgeos.org/) libraries. Users needing spatial features on an ARM Mac may instead [use Rosetta](https://developer.apple.com/documentation/virtualization/running_intel_binaries_in_linux_vms_with_rosetta) to [run the Intel binary]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#install-binary) or use the [Docker image]({% link {{ page.version.version }}/install-cockroachdb-mac.md %}#use-docker) distribution. #### Logging system limitations @@ -496,7 +495,7 @@ Accessing the DB Console for a secure cluster now requires login information (i. The [`COMMENT ON`]({% link {{ page.version.version }}/comment-on.md %}) statement associates comments to databases, tables, or columns. However, the internal table (`system.comments`) in which these comments are stored is not captured by a [`BACKUP`]({% link {{ page.version.version }}/backup.md %}) of a table or database. -As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. [#44396](https://github.com/cockroachdb/cockroach/issues/44396) +As a workaround, take a cluster backup instead, as the `system.comments` table is included in cluster backups. #### `SHOW BACKUP` does not support symlinks for nodelocal @@ -537,8 +536,8 @@ Change data capture (CDC) provides efficient, distributed, row-level changefeeds The SQL optimizer has limitations under certain isolation levels: -- The new implementation of `SELECT FOR UPDATE` is not yet the default setting under `SERIALIZABLE` isolation. It can be used under `SERIALIZABLE` isolation by setting the `optimizer_use_lock_op_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}) to `true`. [#114737](https://github.com/cockroachdb/cockroach/issues/114737) -- `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. [#116836](https://github.com/cockroachdb/cockroach/issues/116836) +- The new implementation of `SELECT FOR UPDATE` is not yet the default setting under `SERIALIZABLE` isolation. It can be used under `SERIALIZABLE` isolation by setting the `optimizer_use_lock_op_for_serializable` [session setting]({% link {{ page.version.version }}/session-variables.md %}) to `true`. +- `SELECT FOR UPDATE` does not lock completely-`NULL` column families in multi-column-family tables. #### Statistics limitations @@ -547,7 +546,7 @@ The SQL optimizer has limitations under certain isolation levels: #### Incorrect query plans for partitions with `NULL` values -In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. [#82774](https://github.com/cockroachdb/cockroach/issues/82774) +In cases where the partition definition includes a comparison with `NULL` and a query constraint, incorrect query plans are returned. However, this case uses non-standard partitioning which defines partitions which could never hold values, so it is not likely to occur in production environments. #### Vectorized engine limitations @@ -555,15 +554,15 @@ In cases where the partition definition includes a comparison with `NULL` and a #### `transaction_rows_read_err` and `transaction_rows_written_err` do not halt query execution -The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. [#70473](https://github.com/cockroachdb/cockroach/issues/70473) +The `transaction_rows_read_err` and `transaction_rows_written_err` [session settings]({% link {{ page.version.version }}/set-vars.md %}) limit the number of rows read or written by a single [transaction]({% link {{ page.version.version }}/transactions.md %}#limit-the-number-of-rows-written-or-read-in-a-transaction). These session settings will fail the transaction with an error, but not until the current query finishes executing and the results have been returned to the client. #### `sql.guardrails.max_row_size_err` misses indexed virtual computed columns -The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. [#69540](https://github.com/cockroachdb/cockroach/issues/69540) +The `sql.guardrails.max_row_size_err` [cluster setting]({% link {{ page.version.version }}/cluster-settings.md %}) misses large rows caused by indexed virtual computed columns. This is because the guardrail only checks the size of primary key rows, not secondary index rows. #### Using `LIKE...ESCAPE` in `WHERE` and `HAVING` constraints -CockroachDB tries to optimize most comparisons operators in `WHERE` and `HAVING` clauses into constraints on SQL indexes by only accessing selected rows. This is done for `LIKE` clauses when a common prefix for all selected rows can be determined in the search pattern (e.g., `... LIKE 'Joe%'`). However, this optimization is not yet available if the `ESCAPE` keyword is also used. [#30192](https://github.com/cockroachdb/cockroach/issues/30192) +CockroachDB tries to optimize most comparisons operators in `WHERE` and `HAVING` clauses into constraints on SQL indexes by only accessing selected rows. This is done for `LIKE` clauses when a common prefix for all selected rows can be determined in the search pattern (e.g., `... LIKE 'Joe%'`). However, this optimization is not yet available if the `ESCAPE` keyword is also used. #### Import with a high amount of disk contention @@ -718,7 +717,7 @@ UNION ALL SELECT * FROM t1 LEFT JOIN t2 ON st_contains(t1.geom, t2.geom) AND t2. (54 rows) ``` -[#59649](https://github.com/cockroachdb/cockroach/issues/59649) + #### Locality optimized search limitations @@ -731,4 +730,4 @@ UNION ALL SELECT * FROM t1 LEFT JOIN t2 ON st_contains(t1.geom, t2.geom) AND t2. #### Inverted join for `tsvector` and `tsquery` types is not supported -CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables. [#102731](https://github.com/cockroachdb/cockroach/issues/102731) +CockroachDB cannot index-accelerate queries with `@@` predicates when both sides of the operator are variables. diff --git a/src/current/v25.3/postgresql-compatibility.md b/src/current/v25.3/postgresql-compatibility.md index 15eff6fdc35..16f079f9574 100644 --- a/src/current/v25.3/postgresql-compatibility.md +++ b/src/current/v25.3/postgresql-compatibility.md @@ -34,11 +34,11 @@ When set to `true`, multiple portals can be open at the same time, with their ex This feature has the following limitations: - Only read-only [`SELECT` queries]({% link {{ page.version.version }}/selection-queries.md %}) without [subqueries]({% link {{ page.version.version }}/subqueries.md %}) are supported. -- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - [cockroachdb/cockroach#96398](https://github.com/cockroachdb/cockroach/issues/96398) -- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - [cockroachdb/cockroach#100822](https://github.com/cockroachdb/cockroach/issues/100822) -- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - [cockroachdb/cockroach#99404](https://github.com/cockroachdb/cockroach/issues/99404) +- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - +- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - +- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - -In addition to the known issues, additional performance testing is needed. The current list of known issues can be viewed [on GitHub using the `A-pausable-portals` label](https://github.com/cockroachdb/cockroach/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc++label%3AA-pausable-portals+), and we welcome bug reports. +In addition to the known issues, additional performance testing is needed. ## Features that differ from PostgreSQL @@ -181,7 +181,7 @@ An `x` value less than `1` would result in the following error: pq: check constraint violated ~~~ -[#35370](https://github.com/cockroachdb/cockroach/issues/35370) + ### Column name from an outer column inside a subquery @@ -207,7 +207,7 @@ PostgreSQL: 1 ~~~ -[#46563](https://github.com/cockroachdb/cockroach/issues/46563) + ### SQL Compatibility diff --git a/src/current/v25.3/query-spatial-data.md b/src/current/v25.3/query-spatial-data.md index 6a32054d268..1c0a739bb01 100644 --- a/src/current/v25.3/query-spatial-data.md +++ b/src/current/v25.3/query-spatial-data.md @@ -24,7 +24,7 @@ Just as CockroachDB strives for [PostgreSQL compatibility]({% link {{ page.versi CockroachDB does not implement the full list of PostGIS built-in functions and operators. Also, [spatial indexing works differently]({% link {{ page.version.version }}/spatial-indexes.md %}) (see the [Performance](#performance) section below). For a list of the spatial functions CockroachDB supports, see [Geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions). -If your application needs support for functions that are not yet implemented, check the [meta-issue for built-in function support on GitHub](https://github.com/cockroachdb/cockroach/issues/49203), which describes how to find an issue for the built-in function(s) you need. +If your application needs support for functions that are not yet implemented, check the , which describes how to find an issue for the built-in function(s) you need. For a list of other known limitations, see [Known Limitations]({% link {{ page.version.version }}/known-limitations.md %}#spatial-support-limitations). diff --git a/src/current/v25.3/spatial-tutorial.md b/src/current/v25.3/spatial-tutorial.md index 72d45bf1fdd..42df4fe226d 100644 --- a/src/current/v25.3/spatial-tutorial.md +++ b/src/current/v25.3/spatial-tutorial.md @@ -966,7 +966,7 @@ Time: 1.447s total (execution 1.446s / network 0.000s) Unfortunately, this query is a bit slower than you would like: about 1.5 seconds on a single-node [`cockroach demo`]({% link {{ page.version.version }}/cockroach-demo.md %}) cluster on a laptop. There are several reasons for this: 1. You haven't created any indexes at all yet. The query is likely to be doing full table scans, which you will need to hunt down with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %}). -1. CockroachDB does not yet have built-in support for index-based nearest neighbor queries. If this feature is important to you, please comment with some information about your use case on [cockroachdb/cockroach#55227](https://github.com/cockroachdb/cockroach/issues/55227). +1. CockroachDB does not yet have built-in support for index-based nearest neighbor queries. If this feature is important to you, please comment with some information about your use case on . Let's look at the `EXPLAIN` output to see if there is something that can be done to improve this query's performance: diff --git a/src/current/v25.3/sql-feature-support.md b/src/current/v25.3/sql-feature-support.md index df9fa0711d8..1d25ea212e4 100644 --- a/src/current/v25.3/sql-feature-support.md +++ b/src/current/v25.3/sql-feature-support.md @@ -194,4 +194,4 @@ XML | ✗ | Standard | XML data can be stored as `BYTES`, but we do not offer XM Triggers | Partial | Standard | [Triggers documentation]({% link {{ page.version.version }}/triggers.md %}) Row-level TTL | ✓ | Common Extension | Automatically delete expired rows. For more information, see [Batch-delete expired data with Row-Level TTL]({% link {{ page.version.version }}/row-level-ttl.md %}). User-defined functions | Partial | Standard | [User-Defined Functions documentation]({% link {{ page.version.version }}/user-defined-functions.md %}) - `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. [GitHub issue tracking `CREATE EXTENSION` support](https://github.com/cockroachdb/cockroach/issues/74777). + `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. . diff --git a/src/current/v25.3/sql-name-resolution.md b/src/current/v25.3/sql-name-resolution.md index 554a9a65583..9138b02ddce 100644 --- a/src/current/v25.3/sql-name-resolution.md +++ b/src/current/v25.3/sql-name-resolution.md @@ -37,7 +37,7 @@ If you are upgrading to {{ page.version.version }}, take any combination of the - [Create new schemas]({% link {{ page.version.version }}/create-schema.md %}) in databases on your cluster. After the schemas are created, use [`ALTER TABLE ... RENAME`]({% link {{ page.version.version }}/alter-table.md %}#rename-to), [`ALTER SEQUENCE ... RENAME`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE ... RENAME`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW ... RENAME`]({% link {{ page.version.version }}/alter-view.md %}) statements to move objects between databases as needed. To move objects between schemas, use [`ALTER TABLE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-table.md %}#set-schema), [`ALTER SEQUENCE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-sequence.md %}), or [`ALTER VIEW ... SET SCHEMA`]({% link {{ page.version.version }}/alter-view.md %}). -- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). For details, see [tracking issue](https://github.com/cockroachdb/cockroach/issues/55791). +- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). ## How name resolution works diff --git a/src/current/v25.3/st_union.md b/src/current/v25.3/st_union.md index df4a9429bc1..bd39579f281 100644 --- a/src/current/v25.3/st_union.md +++ b/src/current/v25.3/st_union.md @@ -12,7 +12,7 @@ Given a set of shapes (e.g., from a [selection query]({% link {{ page.version.ve - [`GEOMETRY`]({% link {{ page.version.version }}/architecture/glossary.md %}#geometry) {{site.data.alerts.callout_info}} -The non-aggregate version of `ST_Union` is not yet implemented. For more information, see [cockroach#49064](https://github.com/cockroachdb/cockroach/issues/49064). +The non-aggregate version of `ST_Union` is not yet implemented. {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v25.3/temporary-tables.md b/src/current/v25.3/temporary-tables.md index 3a92fc64c97..653e02d5893 100644 --- a/src/current/v25.3/temporary-tables.md +++ b/src/current/v25.3/temporary-tables.md @@ -10,7 +10,7 @@ docs_area: develop To create a temp table, add `TEMP`/`TEMPORARY` to a [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}) or [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}) statement. For full syntax details, see the [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}#synopsis) and [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}#synopsis) pages. For example usage, see [Examples](#examples). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v25.3/views.md b/src/current/v25.3/views.md index 6b1a667a470..fdf8c6121af 100644 --- a/src/current/v25.3/views.md +++ b/src/current/v25.3/views.md @@ -653,7 +653,7 @@ To speed up queries on materialized views, you can add an [index]({% link {{ pag CockroachDB supports session-scoped temporary views. Unlike persistent views, temporary views can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary views on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v25.4/cluster-setup-troubleshooting.md b/src/current/v25.4/cluster-setup-troubleshooting.md index e7c16577c14..d418cab2a0c 100644 --- a/src/current/v25.4/cluster-setup-troubleshooting.md +++ b/src/current/v25.4/cluster-setup-troubleshooting.md @@ -225,7 +225,7 @@ Again, firewalls or hostname issues can cause any of these steps to fail. #### TCP connection lingering -If there is no host at the target IP address, or if a firewall rule blocks traffic to the target address and port, a [TCP handshake can linger](https://github.com/cockroachdb/cockroach/issues/53410) while the client network stack waits for a TCP packet in response to network requests. +If there is no host at the target IP address, or if a firewall rule blocks traffic to the target address and port, a while the client network stack waits for a TCP packet in response to network requests. **Explanation:** CockroachDB servers rely on the network to report when a TCP connection fails. In most scenarios when a connection fails, the network immediately reports a connection failure, resulting in a `Connection refused` error. However, the scenario described above can cause connections to hang instead of failing immediately. diff --git a/src/current/v25.4/cockroachdb-feature-availability.md b/src/current/v25.4/cockroachdb-feature-availability.md index d054b6799b3..8e1854824b0 100644 --- a/src/current/v25.4/cockroachdb-feature-availability.md +++ b/src/current/v25.4/cockroachdb-feature-availability.md @@ -198,7 +198,7 @@ Example: ### Check for constraint violations with `SCRUB` -Checks the consistency of [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) indexes, [`CHECK`]({% link {{ page.version.version }}/check.md %}) constraints, and more. Partially implemented; see [cockroachdb/cockroach#10425](https://github.com/cockroachdb/cockroach/issues/10425) for details. +Checks the consistency of [`UNIQUE`]({% link {{ page.version.version }}/unique.md %}) indexes, [`CHECK`]({% link {{ page.version.version }}/check.md %}) constraints, and more. Partially implemented; see for details. {{site.data.alerts.callout_info}} This example uses the `users` table from our open-source, fictional peer-to-peer vehicle-sharing application, [MovR]({% link {{ page.version.version }}/movr.md %}). @@ -229,7 +229,7 @@ The [`SHOW RANGE ... FOR ROW`]({% link {{ page.version.version }}/show-range-for ### Temporary objects -[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Dropping large numbers of temporary objects in rapid succession can also enqueue many [schema change GC jobs]({% link {{ page.version.version }}/show-jobs.md %}), which may further degrade cluster performance. This performance degradation could persist long after creating the temporary objects. For more details, see [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Dropping large numbers of temporary objects in rapid succession can also enqueue many [schema change GC jobs]({% link {{ page.version.version }}/show-jobs.md %}), which may further degrade cluster performance. This performance degradation could persist long after creating the temporary objects. To enable temporary objects, set the `experimental_enable_temp_tables` [session variable]({% link {{ page.version.version }}/show-vars.md %}) to `on`. diff --git a/src/current/v25.4/common-table-expressions.md b/src/current/v25.4/common-table-expressions.md index a76f13ff39d..293fa7c8299 100644 --- a/src/current/v25.4/common-table-expressions.md +++ b/src/current/v25.4/common-table-expressions.md @@ -446,7 +446,7 @@ SELECT COUNT(*) FROM temp; Because this pattern incurs the overhead of a new scan for each iteration, it is slower per row than a full scan. It is therefore faster than a full scan in cases (such as this one) where many rows are skipped, but is slower if they are not. {{site.data.alerts.callout_info}} -Some recursive CTEs are not not yet optimized. For details, see the [tracking issue](https://github.com/cockroachdb/cockroach/issues/89954). +Some recursive CTEs are not not yet optimized. For details, see the . {{site.data.alerts.end}} ## Correlated common table expressions diff --git a/src/current/v25.4/configure-replication-zones.md b/src/current/v25.4/configure-replication-zones.md index ced8cef3ded..91cda5daac4 100644 --- a/src/current/v25.4/configure-replication-zones.md +++ b/src/current/v25.4/configure-replication-zones.md @@ -98,7 +98,7 @@ For more information, see the following subsections: The hierarchy of inheritance for zone configs can be visualized using the following outline-style diagram, in which each level of indentation denotes an inheritance relationship. -The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. ``` - default @@ -127,7 +127,7 @@ From the whole-system perspective, the hierarchy of schema object zone configs c The following diagram presents the same set of schema objects as the previous outline-style diagram, but using boxes and lines joined with arrows that represent the "top-down" view. -Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information about this limitation, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. zone config inheritance diagram diff --git a/src/current/v25.4/create-sequence.md b/src/current/v25.4/create-sequence.md index 72bc62b717b..c5d1c7841ce 100644 --- a/src/current/v25.4/create-sequence.md +++ b/src/current/v25.4/create-sequence.md @@ -60,7 +60,7 @@ CockroachDB supports the following [SQL sequence functions]({% link {{ page.vers CockroachDB supports session-scoped temporary sequences. Unlike persistent sequences, temporary sequences can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary sequences on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v25.4/disaster-recovery-planning.md b/src/current/v25.4/disaster-recovery-planning.md index de593915cf0..0aa5e6b3fb9 100644 --- a/src/current/v25.4/disaster-recovery-planning.md +++ b/src/current/v25.4/disaster-recovery-planning.md @@ -322,7 +322,7 @@ If your cluster is running, you do not have a backup that encapsulates the time If you have corrupted data in a database or table, [restore]({% link {{ page.version.version }}/restore.md %}) the object from a prior [backup]({% link {{ page.version.version }}/backup.md %}). If revision history is in the backup, you can restore from a [point in time]({% link {{ page.version.version }}/take-backups-with-revision-history-and-restore-from-a-point-in-time.md %}). -Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see [#51380](https://github.com/cockroachdb/cockroach/issues/51380) for more information), and you will need to take a backup that is backdated to the system time when the database still existed. +Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see for more information), and you will need to take a backup that is backdated to the system time when the database still existed. {{site.data.alerts.callout_info}} If the table you are restoring has foreign keys, [careful consideration]({% link {{ page.version.version }}/restore.md %}#remove-the-foreign-key-before-restore) should be applied to make sure data integrity is maintained during the restore process. diff --git a/src/current/v25.4/example-apps.md b/src/current/v25.4/example-apps.md index bea3cfd1876..7cebd29785e 100644 --- a/src/current/v25.4/example-apps.md +++ b/src/current/v25.4/example-apps.md @@ -14,7 +14,7 @@ Click the links in the tables below to see simple but complete example applicati If you are looking to do a specific task such as connect to the database, insert data, or run multi-statement transactions, see [this list of tasks](#tasks). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM with **partial** support. If you encounter problems, please with details to help us make progress toward full support. Note that tools with [**community-level** support]({% link {{ page.version.version }}/community-tooling.md %}) have been tested or developed by the CockroachDB community, but are not officially supported by Cockroach Labs. If you encounter problems with using these tools, please contact the maintainer of the tool with details. {{site.data.alerts.end}} diff --git a/src/current/v25.4/file-an-issue.md b/src/current/v25.4/file-an-issue.md index 9255e2c08b2..81da0da5fef 100644 --- a/src/current/v25.4/file-an-issue.md +++ b/src/current/v25.4/file-an-issue.md @@ -28,7 +28,7 @@ To file an issue in GitHub, we need the following information: ### Template -You can use this as a template for [filing an issue in GitHub](https://github.com/cockroachdb/cockroach/issues/new): +You can use this as a template for : ~~~ diff --git a/src/current/v25.4/foreign-key.md b/src/current/v25.4/foreign-key.md index b9e6cc50f5c..7c8868867fd 100644 --- a/src/current/v25.4/foreign-key.md +++ b/src/current/v25.4/foreign-key.md @@ -92,7 +92,7 @@ For matching purposes, composite foreign keys can be in one of three states: For examples showing how these key matching algorithms work, see [Match composite foreign keys with `MATCH SIMPLE` and `MATCH FULL`](#match-composite-foreign-keys-with-match-simple-and-match-full). {{site.data.alerts.callout_info}} -CockroachDB does not support `MATCH PARTIAL`. For more information, see issue [#20305](https://github.com/cockroachdb/cockroach/issues/20305). +CockroachDB does not support `MATCH PARTIAL`. For more information, see issue. {{site.data.alerts.end}} ### Foreign key actions diff --git a/src/current/v25.4/install-client-drivers.md b/src/current/v25.4/install-client-drivers.md index 984671a0dfc..b25a85de6f1 100644 --- a/src/current/v25.4/install-client-drivers.md +++ b/src/current/v25.4/install-client-drivers.md @@ -8,7 +8,7 @@ docs_area: develop CockroachDB supports both native drivers and the PostgreSQL wire protocol, so most available PostgreSQL client drivers and ORM frameworks should work with CockroachDB. Choose a language for supported clients, and follow the installation steps. After you install a client library, you can [connect to the database]({% link {{ page.version.version }}/connect-to-the-database.md %}). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please with details to help us make progress toward full support. {{site.data.alerts.end}}
    diff --git a/src/current/v25.4/install-cockroachdb-mac.md b/src/current/v25.4/install-cockroachdb-mac.md index 19ea059cbf1..538f6ffd848 100644 --- a/src/current/v25.4/install-cockroachdb-mac.md +++ b/src/current/v25.4/install-cockroachdb-mac.md @@ -201,4 +201,4 @@ CockroachDB runtimes built for the ARM architecture have the following limitatio {% comment %}v22.2.0+{% endcomment %} -On macOS ARM systems, [spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead [run the Intel binary](#install-the-binary) or use the[Docker container image](#use-docker). Refer to [GitHub issue #93161](https://github.com/cockroachdb/cockroach/issues/93161) for more information. +On macOS ARM systems, [spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead [run the Intel binary](#install-the-binary) or use the[Docker container image](#use-docker). Refer to for more information. diff --git a/src/current/v25.4/intellij-idea.md b/src/current/v25.4/intellij-idea.md index de46249320f..2a7a45b71cf 100644 --- a/src/current/v25.4/intellij-idea.md +++ b/src/current/v25.4/intellij-idea.md @@ -79,15 +79,6 @@ Requires setting **Introspect using JDBC metadata** ([details below](#set-cockro You can now use IntelliJ's [database tool window](https://www.jetbrains.com/help/idea/working-with-the-database-tool-window.html) to interact with your CockroachDB cluster. -## Report issues with IntelliJ IDEA & CockroachDB - -If you encounter issues other than those outlined above, please [file an issue on the `cockroachdb/cockroach` GitHub repo](https://github.com/cockroachdb/cockroach/issues/new?template=bug_report.md), including the following details about the environment where you encountered the issue: - -- CockroachDB version ([`cockroach version`]({% link {{ page.version.version }}/cockroach-version.md %})) -- IntelliJ IDEA version -- Operating system -- Steps to reproduce the behavior -- If possible, a trace of the SQL statements sent to CockroachDB while the error is being reproduced using [SQL query logging]({% link {{ page.version.version }}/logging-use-cases.md %}#sql_exec). ## See also diff --git a/src/current/v25.4/postgresql-compatibility.md b/src/current/v25.4/postgresql-compatibility.md index 15eff6fdc35..16f079f9574 100644 --- a/src/current/v25.4/postgresql-compatibility.md +++ b/src/current/v25.4/postgresql-compatibility.md @@ -34,11 +34,11 @@ When set to `true`, multiple portals can be open at the same time, with their ex This feature has the following limitations: - Only read-only [`SELECT` queries]({% link {{ page.version.version }}/selection-queries.md %}) without [subqueries]({% link {{ page.version.version }}/subqueries.md %}) are supported. -- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - [cockroachdb/cockroach#96398](https://github.com/cockroachdb/cockroach/issues/96398) -- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - [cockroachdb/cockroach#100822](https://github.com/cockroachdb/cockroach/issues/100822) -- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - [cockroachdb/cockroach#99404](https://github.com/cockroachdb/cockroach/issues/99404) +- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - +- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - +- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - -In addition to the known issues, additional performance testing is needed. The current list of known issues can be viewed [on GitHub using the `A-pausable-portals` label](https://github.com/cockroachdb/cockroach/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc++label%3AA-pausable-portals+), and we welcome bug reports. +In addition to the known issues, additional performance testing is needed. ## Features that differ from PostgreSQL @@ -181,7 +181,7 @@ An `x` value less than `1` would result in the following error: pq: check constraint violated ~~~ -[#35370](https://github.com/cockroachdb/cockroach/issues/35370) + ### Column name from an outer column inside a subquery @@ -207,7 +207,7 @@ PostgreSQL: 1 ~~~ -[#46563](https://github.com/cockroachdb/cockroach/issues/46563) + ### SQL Compatibility diff --git a/src/current/v25.4/query-spatial-data.md b/src/current/v25.4/query-spatial-data.md index 26710368ce2..1436b556002 100644 --- a/src/current/v25.4/query-spatial-data.md +++ b/src/current/v25.4/query-spatial-data.md @@ -24,7 +24,7 @@ Just as CockroachDB strives for [PostgreSQL compatibility]({% link {{ page.versi CockroachDB does not implement the full list of PostGIS built-in functions and operators. Also, [spatial indexing works differently]({% link {{ page.version.version }}/spatial-indexes.md %}) (see the [Performance](#performance) section below). For a list of the spatial functions CockroachDB supports, see [Geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions). -If your application needs support for functions that are not yet implemented, check the [meta-issue for built-in function support on GitHub](https://github.com/cockroachdb/cockroach/issues/49203), which describes how to find an issue for the built-in function(s) you need. +If your application needs support for functions that are not yet implemented, check the , which describes how to find an issue for the built-in function(s) you need. For a list of other known limitations, refer to [Known Limitations]({% link {{ page.version.version }}/spatial-data-overview.md %}#known-limitations). diff --git a/src/current/v25.4/spatial-tutorial.md b/src/current/v25.4/spatial-tutorial.md index c0038c1de81..718db604f77 100644 --- a/src/current/v25.4/spatial-tutorial.md +++ b/src/current/v25.4/spatial-tutorial.md @@ -966,7 +966,7 @@ Time: 1.447s total (execution 1.446s / network 0.000s) Unfortunately, this query is a bit slower than you would like: about 1.5 seconds on a single-node [`cockroach demo`]({% link {{ page.version.version }}/cockroach-demo.md %}) cluster on a laptop. There are several reasons for this: 1. You haven't created any indexes at all yet. The query is likely to be doing full table scans, which you will need to hunt down with [`EXPLAIN`]({% link {{ page.version.version }}/explain.md %}). -1. CockroachDB does not yet have built-in support for index-based nearest neighbor queries. If this feature is important to you, please comment with some information about your use case on [cockroachdb/cockroach#55227](https://github.com/cockroachdb/cockroach/issues/55227). +1. CockroachDB does not yet have built-in support for index-based nearest neighbor queries. If this feature is important to you, please comment with some information about your use case on . Let's look at the `EXPLAIN` output to see if there is something that can be done to improve this query's performance: diff --git a/src/current/v25.4/sql-feature-support.md b/src/current/v25.4/sql-feature-support.md index df9fa0711d8..1d25ea212e4 100644 --- a/src/current/v25.4/sql-feature-support.md +++ b/src/current/v25.4/sql-feature-support.md @@ -194,4 +194,4 @@ XML | ✗ | Standard | XML data can be stored as `BYTES`, but we do not offer XM Triggers | Partial | Standard | [Triggers documentation]({% link {{ page.version.version }}/triggers.md %}) Row-level TTL | ✓ | Common Extension | Automatically delete expired rows. For more information, see [Batch-delete expired data with Row-Level TTL]({% link {{ page.version.version }}/row-level-ttl.md %}). User-defined functions | Partial | Standard | [User-Defined Functions documentation]({% link {{ page.version.version }}/user-defined-functions.md %}) - `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. [GitHub issue tracking `CREATE EXTENSION` support](https://github.com/cockroachdb/cockroach/issues/74777). + `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. . diff --git a/src/current/v25.4/sql-name-resolution.md b/src/current/v25.4/sql-name-resolution.md index 554a9a65583..9138b02ddce 100644 --- a/src/current/v25.4/sql-name-resolution.md +++ b/src/current/v25.4/sql-name-resolution.md @@ -37,7 +37,7 @@ If you are upgrading to {{ page.version.version }}, take any combination of the - [Create new schemas]({% link {{ page.version.version }}/create-schema.md %}) in databases on your cluster. After the schemas are created, use [`ALTER TABLE ... RENAME`]({% link {{ page.version.version }}/alter-table.md %}#rename-to), [`ALTER SEQUENCE ... RENAME`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE ... RENAME`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW ... RENAME`]({% link {{ page.version.version }}/alter-view.md %}) statements to move objects between databases as needed. To move objects between schemas, use [`ALTER TABLE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-table.md %}#set-schema), [`ALTER SEQUENCE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-sequence.md %}), or [`ALTER VIEW ... SET SCHEMA`]({% link {{ page.version.version }}/alter-view.md %}). -- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). For details, see [tracking issue](https://github.com/cockroachdb/cockroach/issues/55791). +- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). ## How name resolution works diff --git a/src/current/v25.4/st_union.md b/src/current/v25.4/st_union.md index 5b4027bd0e0..46a8c6d7b60 100644 --- a/src/current/v25.4/st_union.md +++ b/src/current/v25.4/st_union.md @@ -12,7 +12,7 @@ Given a set of shapes (e.g., from a [selection query]({% link {{ page.version.ve - [`GEOMETRY`]({% link {{ page.version.version }}/architecture/glossary.md %}#geometry) {{site.data.alerts.callout_info}} -The non-aggregate version of `ST_Union` is not yet implemented. For more information, see [cockroach#49064](https://github.com/cockroachdb/cockroach/issues/49064). +The non-aggregate version of `ST_Union` is not yet implemented. {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v25.4/temporary-tables.md b/src/current/v25.4/temporary-tables.md index 3a92fc64c97..653e02d5893 100644 --- a/src/current/v25.4/temporary-tables.md +++ b/src/current/v25.4/temporary-tables.md @@ -10,7 +10,7 @@ docs_area: develop To create a temp table, add `TEMP`/`TEMPORARY` to a [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}) or [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}) statement. For full syntax details, see the [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}#synopsis) and [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}#synopsis) pages. For example usage, see [Examples](#examples). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v25.4/views.md b/src/current/v25.4/views.md index 7aaea1c54a9..8629224614f 100644 --- a/src/current/v25.4/views.md +++ b/src/current/v25.4/views.md @@ -647,7 +647,7 @@ To speed up queries on materialized views, you can add an [index]({% link {{ pag CockroachDB supports session-scoped temporary views. Unlike persistent views, temporary views can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary views on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v26.1/cluster-setup-troubleshooting.md b/src/current/v26.1/cluster-setup-troubleshooting.md index e7c16577c14..d418cab2a0c 100644 --- a/src/current/v26.1/cluster-setup-troubleshooting.md +++ b/src/current/v26.1/cluster-setup-troubleshooting.md @@ -225,7 +225,7 @@ Again, firewalls or hostname issues can cause any of these steps to fail. #### TCP connection lingering -If there is no host at the target IP address, or if a firewall rule blocks traffic to the target address and port, a [TCP handshake can linger](https://github.com/cockroachdb/cockroach/issues/53410) while the client network stack waits for a TCP packet in response to network requests. +If there is no host at the target IP address, or if a firewall rule blocks traffic to the target address and port, a while the client network stack waits for a TCP packet in response to network requests. **Explanation:** CockroachDB servers rely on the network to report when a TCP connection fails. In most scenarios when a connection fails, the network immediately reports a connection failure, resulting in a `Connection refused` error. However, the scenario described above can cause connections to hang instead of failing immediately. diff --git a/src/current/v26.1/cockroachdb-feature-availability.md b/src/current/v26.1/cockroachdb-feature-availability.md index 80782e931f8..a5fb436d0a1 100644 --- a/src/current/v26.1/cockroachdb-feature-availability.md +++ b/src/current/v26.1/cockroachdb-feature-availability.md @@ -210,7 +210,7 @@ The [`SHOW RANGE ... FOR ROW`]({% link {{ page.version.version }}/show-range-for ### Temporary objects -[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Dropping large numbers of temporary objects in rapid succession can also enqueue many [schema change GC jobs]({% link {{ page.version.version }}/show-jobs.md %}), which may further degrade cluster performance. This performance degradation could persist long after creating the temporary objects. For more details, see [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Dropping large numbers of temporary objects in rapid succession can also enqueue many [schema change GC jobs]({% link {{ page.version.version }}/show-jobs.md %}), which may further degrade cluster performance. This performance degradation could persist long after creating the temporary objects. To enable temporary objects, set the `experimental_enable_temp_tables` [session variable]({% link {{ page.version.version }}/show-vars.md %}) to `on`. diff --git a/src/current/v26.1/common-table-expressions.md b/src/current/v26.1/common-table-expressions.md index a76f13ff39d..293fa7c8299 100644 --- a/src/current/v26.1/common-table-expressions.md +++ b/src/current/v26.1/common-table-expressions.md @@ -446,7 +446,7 @@ SELECT COUNT(*) FROM temp; Because this pattern incurs the overhead of a new scan for each iteration, it is slower per row than a full scan. It is therefore faster than a full scan in cases (such as this one) where many rows are skipped, but is slower if they are not. {{site.data.alerts.callout_info}} -Some recursive CTEs are not not yet optimized. For details, see the [tracking issue](https://github.com/cockroachdb/cockroach/issues/89954). +Some recursive CTEs are not not yet optimized. For details, see the . {{site.data.alerts.end}} ## Correlated common table expressions diff --git a/src/current/v26.1/configure-replication-zones.md b/src/current/v26.1/configure-replication-zones.md index 05f564ed4c9..1c1f1a61f95 100644 --- a/src/current/v26.1/configure-replication-zones.md +++ b/src/current/v26.1/configure-replication-zones.md @@ -98,7 +98,7 @@ For more information, see the following subsections: The hierarchy of inheritance for zone configs can be visualized using the following outline-style diagram, in which each level of indentation denotes an inheritance relationship. -The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. ``` - default @@ -127,7 +127,7 @@ From the whole-system perspective, the hierarchy of schema object zone configs c The following diagram presents the same set of schema objects as the previous outline-style diagram, but using boxes and lines joined with arrows that represent the "top-down" view. -Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information about this limitation, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. zone config inheritance diagram diff --git a/src/current/v26.1/create-sequence.md b/src/current/v26.1/create-sequence.md index 72bc62b717b..c5d1c7841ce 100644 --- a/src/current/v26.1/create-sequence.md +++ b/src/current/v26.1/create-sequence.md @@ -60,7 +60,7 @@ CockroachDB supports the following [SQL sequence functions]({% link {{ page.vers CockroachDB supports session-scoped temporary sequences. Unlike persistent sequences, temporary sequences can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary sequences on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v26.1/disaster-recovery-planning.md b/src/current/v26.1/disaster-recovery-planning.md index de593915cf0..0aa5e6b3fb9 100644 --- a/src/current/v26.1/disaster-recovery-planning.md +++ b/src/current/v26.1/disaster-recovery-planning.md @@ -322,7 +322,7 @@ If your cluster is running, you do not have a backup that encapsulates the time If you have corrupted data in a database or table, [restore]({% link {{ page.version.version }}/restore.md %}) the object from a prior [backup]({% link {{ page.version.version }}/backup.md %}). If revision history is in the backup, you can restore from a [point in time]({% link {{ page.version.version }}/take-backups-with-revision-history-and-restore-from-a-point-in-time.md %}). -Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see [#51380](https://github.com/cockroachdb/cockroach/issues/51380) for more information), and you will need to take a backup that is backdated to the system time when the database still existed. +Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see for more information), and you will need to take a backup that is backdated to the system time when the database still existed. {{site.data.alerts.callout_info}} If the table you are restoring has foreign keys, [careful consideration]({% link {{ page.version.version }}/restore.md %}#remove-the-foreign-key-before-restore) should be applied to make sure data integrity is maintained during the restore process. diff --git a/src/current/v26.1/file-an-issue.md b/src/current/v26.1/file-an-issue.md index 9255e2c08b2..81da0da5fef 100644 --- a/src/current/v26.1/file-an-issue.md +++ b/src/current/v26.1/file-an-issue.md @@ -28,7 +28,7 @@ To file an issue in GitHub, we need the following information: ### Template -You can use this as a template for [filing an issue in GitHub](https://github.com/cockroachdb/cockroach/issues/new): +You can use this as a template for : ~~~ diff --git a/src/current/v26.1/foreign-key.md b/src/current/v26.1/foreign-key.md index b9e6cc50f5c..7c8868867fd 100644 --- a/src/current/v26.1/foreign-key.md +++ b/src/current/v26.1/foreign-key.md @@ -92,7 +92,7 @@ For matching purposes, composite foreign keys can be in one of three states: For examples showing how these key matching algorithms work, see [Match composite foreign keys with `MATCH SIMPLE` and `MATCH FULL`](#match-composite-foreign-keys-with-match-simple-and-match-full). {{site.data.alerts.callout_info}} -CockroachDB does not support `MATCH PARTIAL`. For more information, see issue [#20305](https://github.com/cockroachdb/cockroach/issues/20305). +CockroachDB does not support `MATCH PARTIAL`. For more information, see issue. {{site.data.alerts.end}} ### Foreign key actions diff --git a/src/current/v26.1/install-client-drivers.md b/src/current/v26.1/install-client-drivers.md index 75b39685574..d19a46df0e0 100644 --- a/src/current/v26.1/install-client-drivers.md +++ b/src/current/v26.1/install-client-drivers.md @@ -8,7 +8,7 @@ docs_area: develop CockroachDB supports both native drivers and the PostgreSQL wire protocol, so most available PostgreSQL client drivers and ORM frameworks should work with CockroachDB. Choose a language for supported clients, and follow the installation steps. After you install a client library, you can [connect to the database]({% link {{ page.version.version }}/connect-to-the-database.md %}). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please with details to help us make progress toward full support. {{site.data.alerts.end}}
    diff --git a/src/current/v26.1/install-cockroachdb-mac.md b/src/current/v26.1/install-cockroachdb-mac.md index 116d9e9901e..e6561cf1f1e 100644 --- a/src/current/v26.1/install-cockroachdb-mac.md +++ b/src/current/v26.1/install-cockroachdb-mac.md @@ -201,4 +201,4 @@ CockroachDB runtimes built for the ARM architecture have the following limitatio {% comment %}v22.2.0+{% endcomment %} -On macOS ARM systems, [spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead [run the Intel binary](#install-the-binary) or use the[Docker container image](#use-docker). Refer to [GitHub issue #93161](https://github.com/cockroachdb/cockroach/issues/93161) for more information. +On macOS ARM systems, [spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead [run the Intel binary](#install-the-binary) or use the[Docker container image](#use-docker). Refer to for more information. diff --git a/src/current/v26.1/intellij-idea.md b/src/current/v26.1/intellij-idea.md index 1ce61a25e53..9abb9eb2460 100644 --- a/src/current/v26.1/intellij-idea.md +++ b/src/current/v26.1/intellij-idea.md @@ -79,15 +79,6 @@ Requires setting **Introspect using JDBC metadata** ([details below](#set-cockro You can now use IntelliJ's [database tool window](https://www.jetbrains.com/help/idea/working-with-the-database-tool-window.html) to interact with your CockroachDB cluster. -## Report issues with IntelliJ IDEA & CockroachDB - -If you encounter issues other than those outlined above, please [file an issue on the `cockroachdb/cockroach` GitHub repo](https://github.com/cockroachdb/cockroach/issues/new?template=bug_report.md), including the following details about the environment where you encountered the issue: - -- CockroachDB version ([`cockroach version`]({% link {{ page.version.version }}/cockroach-version.md %})) -- IntelliJ IDEA version -- Operating system -- Steps to reproduce the behavior -- If possible, a trace of the SQL statements sent to CockroachDB while the error is being reproduced using [SQL query logging]({% link {{ page.version.version }}/logging-use-cases.md %}#sql_exec). ## See also diff --git a/src/current/v26.1/postgresql-compatibility.md b/src/current/v26.1/postgresql-compatibility.md index ad110c9e4ef..624e4c30b7e 100644 --- a/src/current/v26.1/postgresql-compatibility.md +++ b/src/current/v26.1/postgresql-compatibility.md @@ -34,11 +34,11 @@ When set to `true`, multiple portals can be open at the same time, with their ex This feature has the following limitations: - Only read-only [`SELECT` queries]({% link {{ page.version.version }}/selection-queries.md %}) without [subqueries]({% link {{ page.version.version }}/subqueries.md %}) are supported. -- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - [cockroachdb/cockroach#96398](https://github.com/cockroachdb/cockroach/issues/96398) -- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - [cockroachdb/cockroach#100822](https://github.com/cockroachdb/cockroach/issues/100822) -- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - [cockroachdb/cockroach#99404](https://github.com/cockroachdb/cockroach/issues/99404) +- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - +- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - +- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - -In addition to the known issues, additional performance testing is needed. The current list of known issues can be viewed [on GitHub using the `A-pausable-portals` label](https://github.com/cockroachdb/cockroach/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc++label%3AA-pausable-portals+), and we welcome bug reports. +In addition to the known issues, additional performance testing is needed. ## Features that differ from PostgreSQL @@ -181,7 +181,7 @@ An `x` value less than `1` would result in the following error: pq: check constraint violated ~~~ -[#35370](https://github.com/cockroachdb/cockroach/issues/35370) + ### Column name from an outer column inside a subquery @@ -207,7 +207,7 @@ PostgreSQL: 1 ~~~ -[#46563](https://github.com/cockroachdb/cockroach/issues/46563) + ### SQL Compatibility diff --git a/src/current/v26.1/query-spatial-data.md b/src/current/v26.1/query-spatial-data.md index a259dd87082..d3584379423 100644 --- a/src/current/v26.1/query-spatial-data.md +++ b/src/current/v26.1/query-spatial-data.md @@ -24,7 +24,7 @@ Just as CockroachDB strives for [PostgreSQL compatibility]({% link {{ page.versi CockroachDB does not implement the full list of PostGIS built-in functions and operators. Also, [spatial indexing works differently]({% link {{ page.version.version }}/spatial-indexes.md %}) (see the [Performance](#performance) section below). For a list of the spatial functions CockroachDB supports, see [Geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions). -If your application needs support for functions that are not yet implemented, check the [meta-issue for built-in function support on GitHub](https://github.com/cockroachdb/cockroach/issues/49203), which describes how to find an issue for the built-in function(s) you need. +If your application needs support for functions that are not yet implemented, check the , which describes how to find an issue for the built-in function(s) you need. For a list of other known limitations, refer to [Known Limitations]({% link {{ page.version.version }}/spatial-data-overview.md %}#known-limitations). diff --git a/src/current/v26.1/sql-feature-support.md b/src/current/v26.1/sql-feature-support.md index df9fa0711d8..1d25ea212e4 100644 --- a/src/current/v26.1/sql-feature-support.md +++ b/src/current/v26.1/sql-feature-support.md @@ -194,4 +194,4 @@ XML | ✗ | Standard | XML data can be stored as `BYTES`, but we do not offer XM Triggers | Partial | Standard | [Triggers documentation]({% link {{ page.version.version }}/triggers.md %}) Row-level TTL | ✓ | Common Extension | Automatically delete expired rows. For more information, see [Batch-delete expired data with Row-Level TTL]({% link {{ page.version.version }}/row-level-ttl.md %}). User-defined functions | Partial | Standard | [User-Defined Functions documentation]({% link {{ page.version.version }}/user-defined-functions.md %}) - `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. [GitHub issue tracking `CREATE EXTENSION` support](https://github.com/cockroachdb/cockroach/issues/74777). + `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. . diff --git a/src/current/v26.1/sql-name-resolution.md b/src/current/v26.1/sql-name-resolution.md index 554a9a65583..9138b02ddce 100644 --- a/src/current/v26.1/sql-name-resolution.md +++ b/src/current/v26.1/sql-name-resolution.md @@ -37,7 +37,7 @@ If you are upgrading to {{ page.version.version }}, take any combination of the - [Create new schemas]({% link {{ page.version.version }}/create-schema.md %}) in databases on your cluster. After the schemas are created, use [`ALTER TABLE ... RENAME`]({% link {{ page.version.version }}/alter-table.md %}#rename-to), [`ALTER SEQUENCE ... RENAME`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE ... RENAME`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW ... RENAME`]({% link {{ page.version.version }}/alter-view.md %}) statements to move objects between databases as needed. To move objects between schemas, use [`ALTER TABLE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-table.md %}#set-schema), [`ALTER SEQUENCE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-sequence.md %}), or [`ALTER VIEW ... SET SCHEMA`]({% link {{ page.version.version }}/alter-view.md %}). -- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). For details, see [tracking issue](https://github.com/cockroachdb/cockroach/issues/55791). +- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). ## How name resolution works diff --git a/src/current/v26.1/st_union.md b/src/current/v26.1/st_union.md index c49acc60e30..8a59684adb0 100644 --- a/src/current/v26.1/st_union.md +++ b/src/current/v26.1/st_union.md @@ -12,7 +12,7 @@ Given a set of shapes (e.g., from a [selection query]({% link {{ page.version.ve - [`GEOMETRY`]({% link {{ page.version.version }}/architecture/glossary.md %}#geometry) {{site.data.alerts.callout_info}} -The non-aggregate version of `ST_Union` is not yet implemented. For more information, see [cockroach#49064](https://github.com/cockroachdb/cockroach/issues/49064). +The non-aggregate version of `ST_Union` is not yet implemented. {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v26.1/temporary-tables.md b/src/current/v26.1/temporary-tables.md index 3a92fc64c97..653e02d5893 100644 --- a/src/current/v26.1/temporary-tables.md +++ b/src/current/v26.1/temporary-tables.md @@ -10,7 +10,7 @@ docs_area: develop To create a temp table, add `TEMP`/`TEMPORARY` to a [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}) or [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}) statement. For full syntax details, see the [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}#synopsis) and [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}#synopsis) pages. For example usage, see [Examples](#examples). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v26.1/views.md b/src/current/v26.1/views.md index 7aaea1c54a9..8629224614f 100644 --- a/src/current/v26.1/views.md +++ b/src/current/v26.1/views.md @@ -647,7 +647,7 @@ To speed up queries on materialized views, you can add an [index]({% link {{ pag CockroachDB supports session-scoped temporary views. Unlike persistent views, temporary views can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary views on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v26.2/active-session-history.md b/src/current/v26.2/active-session-history.md index f2ca8113919..d14a27178ef 100644 --- a/src/current/v26.2/active-session-history.md +++ b/src/current/v26.2/active-session-history.md @@ -89,7 +89,7 @@ Each sample is attributed to a workload via the `workload_type` and `workload_id | `STATEMENT` | Hex-encoded [statement fingerprint]({% link {{ page.version.version }}/ui-statements-page.md %}#sql-statement-fingerprints) ID | | `JOB` | Decimal [job ID]({% link {{ page.version.version }}/show-jobs.md %}) | | `SYSTEM` | One of the following system task names:
    `LDR`, `RAFT`, `STORELIVENESS`, `RPC_HEARTBEAT`, `NODE_LIVENESS`, `SQL_LIVENESS`, `TIMESERIES`, `RAFT_LOG_TRUNCATION`, `TXN_HEARTBEAT`, `INTENT_RESOLUTION`, `LEASE_ACQUISITION`, `MERGE_QUEUE`, `CIRCUIT_BREAKER_PROBE`, `GC`, `RANGEFEED`, `REPLICATE_QUEUE`, `SPLIT_QUEUE`, `DESCRIPTOR_LEASE` | -| `UNKNOWN` | Unidentified. If you're seeing many unattributed samples for your workload, you may want to [file an issue](https://github.com/cockroachdb/cockroach/issues/new?template=bug_report.md). | +| `UNKNOWN` | Unidentified. If you're seeing many unattributed samples for your workload, you may want to contact support. | ### `work_event` columns diff --git a/src/current/v26.2/cluster-setup-troubleshooting.md b/src/current/v26.2/cluster-setup-troubleshooting.md index e7c16577c14..d418cab2a0c 100644 --- a/src/current/v26.2/cluster-setup-troubleshooting.md +++ b/src/current/v26.2/cluster-setup-troubleshooting.md @@ -225,7 +225,7 @@ Again, firewalls or hostname issues can cause any of these steps to fail. #### TCP connection lingering -If there is no host at the target IP address, or if a firewall rule blocks traffic to the target address and port, a [TCP handshake can linger](https://github.com/cockroachdb/cockroach/issues/53410) while the client network stack waits for a TCP packet in response to network requests. +If there is no host at the target IP address, or if a firewall rule blocks traffic to the target address and port, a while the client network stack waits for a TCP packet in response to network requests. **Explanation:** CockroachDB servers rely on the network to report when a TCP connection fails. In most scenarios when a connection fails, the network immediately reports a connection failure, resulting in a `Connection refused` error. However, the scenario described above can cause connections to hang instead of failing immediately. diff --git a/src/current/v26.2/cockroachdb-feature-availability.md b/src/current/v26.2/cockroachdb-feature-availability.md index 3cc21c29e27..089faf14092 100644 --- a/src/current/v26.2/cockroachdb-feature-availability.md +++ b/src/current/v26.2/cockroachdb-feature-availability.md @@ -206,7 +206,7 @@ The [`SHOW RANGE ... FOR ROW`]({% link {{ page.version.version }}/show-range-for ### Temporary objects -[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Dropping large numbers of temporary objects in rapid succession can also enqueue many [schema change GC jobs]({% link {{ page.version.version }}/show-jobs.md %}), which may further degrade cluster performance. This performance degradation could persist long after creating the temporary objects. For more details, see [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +[Temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}), [temporary views]({% link {{ page.version.version }}/views.md %}#temporary-views), and [temporary sequences]({% link {{ page.version.version }}/create-sequence.md %}#temporary-sequences) are in preview in CockroachDB. If you create too many temporary objects in a session, the performance of DDL operations will degrade. Dropping large numbers of temporary objects in rapid succession can also enqueue many [schema change GC jobs]({% link {{ page.version.version }}/show-jobs.md %}), which may further degrade cluster performance. This performance degradation could persist long after creating the temporary objects. To enable temporary objects, set the `experimental_enable_temp_tables` [session variable]({% link {{ page.version.version }}/show-vars.md %}) to `on`. diff --git a/src/current/v26.2/common-table-expressions.md b/src/current/v26.2/common-table-expressions.md index a76f13ff39d..293fa7c8299 100644 --- a/src/current/v26.2/common-table-expressions.md +++ b/src/current/v26.2/common-table-expressions.md @@ -446,7 +446,7 @@ SELECT COUNT(*) FROM temp; Because this pattern incurs the overhead of a new scan for each iteration, it is slower per row than a full scan. It is therefore faster than a full scan in cases (such as this one) where many rows are skipped, but is slower if they are not. {{site.data.alerts.callout_info}} -Some recursive CTEs are not not yet optimized. For details, see the [tracking issue](https://github.com/cockroachdb/cockroach/issues/89954). +Some recursive CTEs are not not yet optimized. For details, see the . {{site.data.alerts.end}} ## Correlated common table expressions diff --git a/src/current/v26.2/configure-replication-zones.md b/src/current/v26.2/configure-replication-zones.md index 77ca4c675ec..4cc6d50cb5a 100644 --- a/src/current/v26.2/configure-replication-zones.md +++ b/src/current/v26.2/configure-replication-zones.md @@ -98,7 +98,7 @@ For more information, see the following subsections: The hierarchy of inheritance for zone configs can be visualized using the following outline-style diagram, in which each level of indentation denotes an inheritance relationship. -The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +The only exception to this simple inheritance relationship is that due to a known limitation, sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. ``` - default @@ -127,7 +127,7 @@ From the whole-system perspective, the hierarchy of schema object zone configs c The following diagram presents the same set of schema objects as the previous outline-style diagram, but using boxes and lines joined with arrows that represent the "top-down" view. -Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. For more information about this limitation, see [cockroachdb/cockroach#75862](https://github.com/cockroachdb/cockroach/issues/75862). +Each box represents a schema object in the zone configuration inheritance hierarchy. Each solid line ends in an arrow that points from a parent object to its child object, which will inherit the parent's values unless those values are changed at the child level. The dotted lines between partitions and sub-partitions represent the known limitation mentioned previously that sub-partitions do not inherit their values from their parent partitions. Instead, sub-partitions inherit their values from the parent table. zone config inheritance diagram diff --git a/src/current/v26.2/create-sequence.md b/src/current/v26.2/create-sequence.md index 72bc62b717b..c5d1c7841ce 100644 --- a/src/current/v26.2/create-sequence.md +++ b/src/current/v26.2/create-sequence.md @@ -60,7 +60,7 @@ CockroachDB supports the following [SQL sequence functions]({% link {{ page.vers CockroachDB supports session-scoped temporary sequences. Unlike persistent sequences, temporary sequences can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary sequences on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v26.2/disaster-recovery-planning.md b/src/current/v26.2/disaster-recovery-planning.md index de593915cf0..0aa5e6b3fb9 100644 --- a/src/current/v26.2/disaster-recovery-planning.md +++ b/src/current/v26.2/disaster-recovery-planning.md @@ -322,7 +322,7 @@ If your cluster is running, you do not have a backup that encapsulates the time If you have corrupted data in a database or table, [restore]({% link {{ page.version.version }}/restore.md %}) the object from a prior [backup]({% link {{ page.version.version }}/backup.md %}). If revision history is in the backup, you can restore from a [point in time]({% link {{ page.version.version }}/take-backups-with-revision-history-and-restore-from-a-point-in-time.md %}). -Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see [#51380](https://github.com/cockroachdb/cockroach/issues/51380) for more information), and you will need to take a backup that is backdated to the system time when the database still existed. +Instead of dropping the corrupted table or database, we recommend [renaming the table]({% link {{ page.version.version }}/alter-table.md %}#rename-to) or [renaming the database]({% link {{ page.version.version }}/alter-database.md %}#rename-to) so you have historical data to compare to later. If you drop a database, the database cannot be referenced with `AS OF SYSTEM TIME` queries (see for more information), and you will need to take a backup that is backdated to the system time when the database still existed. {{site.data.alerts.callout_info}} If the table you are restoring has foreign keys, [careful consideration]({% link {{ page.version.version }}/restore.md %}#remove-the-foreign-key-before-restore) should be applied to make sure data integrity is maintained during the restore process. diff --git a/src/current/v26.2/file-an-issue.md b/src/current/v26.2/file-an-issue.md index 9255e2c08b2..81da0da5fef 100644 --- a/src/current/v26.2/file-an-issue.md +++ b/src/current/v26.2/file-an-issue.md @@ -28,7 +28,7 @@ To file an issue in GitHub, we need the following information: ### Template -You can use this as a template for [filing an issue in GitHub](https://github.com/cockroachdb/cockroach/issues/new): +You can use this as a template for : ~~~ diff --git a/src/current/v26.2/foreign-key.md b/src/current/v26.2/foreign-key.md index b9e6cc50f5c..7c8868867fd 100644 --- a/src/current/v26.2/foreign-key.md +++ b/src/current/v26.2/foreign-key.md @@ -92,7 +92,7 @@ For matching purposes, composite foreign keys can be in one of three states: For examples showing how these key matching algorithms work, see [Match composite foreign keys with `MATCH SIMPLE` and `MATCH FULL`](#match-composite-foreign-keys-with-match-simple-and-match-full). {{site.data.alerts.callout_info}} -CockroachDB does not support `MATCH PARTIAL`. For more information, see issue [#20305](https://github.com/cockroachdb/cockroach/issues/20305). +CockroachDB does not support `MATCH PARTIAL`. For more information, see issue. {{site.data.alerts.end}} ### Foreign key actions diff --git a/src/current/v26.2/install-client-drivers.md b/src/current/v26.2/install-client-drivers.md index 75b39685574..d19a46df0e0 100644 --- a/src/current/v26.2/install-client-drivers.md +++ b/src/current/v26.2/install-client-drivers.md @@ -8,7 +8,7 @@ docs_area: develop CockroachDB supports both native drivers and the PostgreSQL wire protocol, so most available PostgreSQL client drivers and ORM frameworks should work with CockroachDB. Choose a language for supported clients, and follow the installation steps. After you install a client library, you can [connect to the database]({% link {{ page.version.version }}/connect-to-the-database.md %}). {{site.data.alerts.callout_info}} -Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please [open an issue](https://github.com/cockroachdb/cockroach/issues/new) with details to help us make progress toward full support. +Applications may encounter incompatibilities when using advanced or obscure features of a driver or ORM framework with **partial** support. If you encounter problems, please with details to help us make progress toward full support. {{site.data.alerts.end}}
    diff --git a/src/current/v26.2/install-cockroachdb-mac.md b/src/current/v26.2/install-cockroachdb-mac.md index 116d9e9901e..e6561cf1f1e 100644 --- a/src/current/v26.2/install-cockroachdb-mac.md +++ b/src/current/v26.2/install-cockroachdb-mac.md @@ -201,4 +201,4 @@ CockroachDB runtimes built for the ARM architecture have the following limitatio {% comment %}v22.2.0+{% endcomment %} -On macOS ARM systems, [spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead [run the Intel binary](#install-the-binary) or use the[Docker container image](#use-docker). Refer to [GitHub issue #93161](https://github.com/cockroachdb/cockroach/issues/93161) for more information. +On macOS ARM systems, [spatial features]({% link {{ page.version.version }}/spatial-data-overview.md %}) are disabled due to an issue with macOS code signing for the GEOS libraries. Users needing spatial features on an ARM Mac may instead [run the Intel binary](#install-the-binary) or use the[Docker container image](#use-docker). Refer to for more information. diff --git a/src/current/v26.2/intellij-idea.md b/src/current/v26.2/intellij-idea.md index 7a5b5adcb6e..ef27c3b9570 100644 --- a/src/current/v26.2/intellij-idea.md +++ b/src/current/v26.2/intellij-idea.md @@ -79,15 +79,6 @@ Requires setting **Introspect using JDBC metadata** ([details below](#set-cockro You can now use IntelliJ's [database tool window](https://www.jetbrains.com/help/idea/working-with-the-database-tool-window.html) to interact with your CockroachDB cluster. -## Report issues with IntelliJ IDEA & CockroachDB - -If you encounter issues other than those outlined above, please [file an issue on the `cockroachdb/cockroach` GitHub repo](https://github.com/cockroachdb/cockroach/issues/new?template=bug_report.md), including the following details about the environment where you encountered the issue: - -- CockroachDB version ([`cockroach version`]({% link {{ page.version.version }}/cockroach-version.md %})) -- IntelliJ IDEA version -- Operating system -- Steps to reproduce the behavior -- If possible, a trace of the SQL statements sent to CockroachDB while the error is being reproduced using [SQL query logging]({% link {{ page.version.version }}/logging-use-cases.md %}#sql_exec). ## See also diff --git a/src/current/v26.2/postgresql-compatibility.md b/src/current/v26.2/postgresql-compatibility.md index ad110c9e4ef..624e4c30b7e 100644 --- a/src/current/v26.2/postgresql-compatibility.md +++ b/src/current/v26.2/postgresql-compatibility.md @@ -34,11 +34,11 @@ When set to `true`, multiple portals can be open at the same time, with their ex This feature has the following limitations: - Only read-only [`SELECT` queries]({% link {{ page.version.version }}/selection-queries.md %}) without [subqueries]({% link {{ page.version.version }}/subqueries.md %}) are supported. -- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - [cockroachdb/cockroach#96398](https://github.com/cockroachdb/cockroach/issues/96398) -- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - [cockroachdb/cockroach#100822](https://github.com/cockroachdb/cockroach/issues/100822) -- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - [cockroachdb/cockroach#99404](https://github.com/cockroachdb/cockroach/issues/99404) +- Postqueries (which are how CockroachDB executes [foreign key checks]({% link {{ page.version.version }}/foreign-key.md %}), for example) are not supported - +- [Distributed SQL execution]({% link {{ page.version.version }}/architecture/sql-layer.md %}#distsql) is not supported for multiple active portals; instead queries execute on the [gateway node]({% link {{ page.version.version }}/architecture/life-of-a-distributed-transaction.md %}#gateway) only - +- Only the latest execution of a statement from a pausable portal is recorded by the [trace infrastructure]({% link {{ page.version.version }}/show-trace.md %}) - -In addition to the known issues, additional performance testing is needed. The current list of known issues can be viewed [on GitHub using the `A-pausable-portals` label](https://github.com/cockroachdb/cockroach/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc++label%3AA-pausable-portals+), and we welcome bug reports. +In addition to the known issues, additional performance testing is needed. ## Features that differ from PostgreSQL @@ -181,7 +181,7 @@ An `x` value less than `1` would result in the following error: pq: check constraint violated ~~~ -[#35370](https://github.com/cockroachdb/cockroach/issues/35370) + ### Column name from an outer column inside a subquery @@ -207,7 +207,7 @@ PostgreSQL: 1 ~~~ -[#46563](https://github.com/cockroachdb/cockroach/issues/46563) + ### SQL Compatibility diff --git a/src/current/v26.2/query-spatial-data.md b/src/current/v26.2/query-spatial-data.md index 2684600938e..e8479be1ba6 100644 --- a/src/current/v26.2/query-spatial-data.md +++ b/src/current/v26.2/query-spatial-data.md @@ -24,7 +24,7 @@ Just as CockroachDB strives for [PostgreSQL compatibility]({% link {{ page.versi CockroachDB does not implement the full list of PostGIS built-in functions and operators. Also, [spatial indexing works differently]({% link {{ page.version.version }}/spatial-indexes.md %}) (see the [Performance](#performance) section below). For a list of the spatial functions CockroachDB supports, see [Geospatial functions]({% link {{ page.version.version }}/functions-and-operators.md %}#spatial-functions). -If your application needs support for functions that are not yet implemented, check the [meta-issue for built-in function support on GitHub](https://github.com/cockroachdb/cockroach/issues/49203), which describes how to find an issue for the built-in function(s) you need. +If your application needs support for functions that are not yet implemented, check the , which describes how to find an issue for the built-in function(s) you need. For a list of other known limitations, refer to [Known Limitations]({% link {{ page.version.version }}/spatial-data-overview.md %}#known-limitations). diff --git a/src/current/v26.2/sql-feature-support.md b/src/current/v26.2/sql-feature-support.md index d0d4b8051d6..5e5aa947668 100644 --- a/src/current/v26.2/sql-feature-support.md +++ b/src/current/v26.2/sql-feature-support.md @@ -194,5 +194,5 @@ XML | ✗ | Standard | XML data can be stored as `BYTES`, but we do not offer XM Triggers | Partial | Standard | [Triggers documentation]({% link {{ page.version.version }}/triggers.md %}) Row-level TTL | ✓ | Common Extension | Automatically delete expired rows. For more information, see [Batch-delete expired data with Row-Level TTL]({% link {{ page.version.version }}/row-level-ttl.md %}). User-defined functions | Partial | Standard | [User-Defined Functions documentation]({% link {{ page.version.version }}/user-defined-functions.md %}) - New in v26.2: `CREATE EXTENSION "fuzzystrmatch"` | ✓ | Common Extension | Provides PostgreSQL-compatible fuzzy string matching functions including `soundex()`, `difference()`, `levenshtein()`, `metaphone()`, [`dmetaphone()`]({% link {{ page.version.version }}/functions-and-operators.md %}#dmetaphone), [`dmetaphone_alt()`]({% link {{ page.version.version }}/functions-and-operators.md %}#dmetaphone_alt), and [`daitch_mokotoff()`]({% link {{ page.version.version }}/functions-and-operators.md %}#daitch_mokotoff). These functions are available without running `CREATE EXTENSION "fuzzystrmatch"`. CockroachDB does not have full support for `CREATE EXTENSION`. [GitHub issue tracking `CREATE EXTENSION` support](https://github.com/cockroachdb/cockroach/issues/74777). - `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. [GitHub issue tracking `CREATE EXTENSION` support](https://github.com/cockroachdb/cockroach/issues/74777). + New in v26.2: `CREATE EXTENSION "fuzzystrmatch"` | ✓ | Common Extension | Provides PostgreSQL-compatible fuzzy string matching functions including `soundex()`, `difference()`, `levenshtein()`, `metaphone()`, [`dmetaphone()`]({% link {{ page.version.version }}/functions-and-operators.md %}#dmetaphone), [`dmetaphone_alt()`]({% link {{ page.version.version }}/functions-and-operators.md %}#dmetaphone_alt), and [`daitch_mokotoff()`]({% link {{ page.version.version }}/functions-and-operators.md %}#daitch_mokotoff). These functions are available without running `CREATE EXTENSION "fuzzystrmatch"`. CockroachDB does not have full support for `CREATE EXTENSION`. . + `CREATE EXTENSION "uuid-ossp"` | ✓ | Common Extension | Provides access to several additional [UUID generation functions]({% link {{ page.version.version }}/functions-and-operators.md %}#id-generation-functions). Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`. . diff --git a/src/current/v26.2/sql-name-resolution.md b/src/current/v26.2/sql-name-resolution.md index 554a9a65583..9138b02ddce 100644 --- a/src/current/v26.2/sql-name-resolution.md +++ b/src/current/v26.2/sql-name-resolution.md @@ -37,7 +37,7 @@ If you are upgrading to {{ page.version.version }}, take any combination of the - [Create new schemas]({% link {{ page.version.version }}/create-schema.md %}) in databases on your cluster. After the schemas are created, use [`ALTER TABLE ... RENAME`]({% link {{ page.version.version }}/alter-table.md %}#rename-to), [`ALTER SEQUENCE ... RENAME`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE ... RENAME`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW ... RENAME`]({% link {{ page.version.version }}/alter-view.md %}) statements to move objects between databases as needed. To move objects between schemas, use [`ALTER TABLE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-table.md %}#set-schema), [`ALTER SEQUENCE ... SET SCHEMA`]({% link {{ page.version.version }}/alter-sequence.md %}), or [`ALTER VIEW ... SET SCHEMA`]({% link {{ page.version.version }}/alter-view.md %}). -- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). For details, see [tracking issue](https://github.com/cockroachdb/cockroach/issues/55791). +- If your cluster contains cross-database references (e.g., a cross-database foreign key reference, or a cross-database view reference), use the relevant [`ALTER TABLE`]({% link {{ page.version.version }}/alter-table.md %}), [`ALTER SEQUENCE`]({% link {{ page.version.version }}/alter-sequence.md %}), [`ALTER TYPE`]({% link {{ page.version.version }}/alter-type.md %}), or [`ALTER VIEW `]({% link {{ page.version.version }}/alter-view.md %}) statements to move any cross-referencing objects to the same database, but different schemas. Cross-database object references were allowed in earlier versions of CockroachDB to make database-object naming hierarchies more flexible for users. In v20.2, creating cross-database references are disabled for [foreign keys](foreign-key.html), [views]({% link {{ page.version.version }}/views.md %}), and [sequence ownership]({% link {{ page.version.version }}/create-sequence.md %}). ## How name resolution works diff --git a/src/current/v26.2/st_union.md b/src/current/v26.2/st_union.md index 3f5a33e6330..51580681267 100644 --- a/src/current/v26.2/st_union.md +++ b/src/current/v26.2/st_union.md @@ -12,7 +12,7 @@ Given a set of shapes (e.g., from a [selection query]({% link {{ page.version.ve - [`GEOMETRY`]({% link {{ page.version.version }}/architecture/glossary.md %}#geometry) {{site.data.alerts.callout_info}} -The non-aggregate version of `ST_Union` is not yet implemented. For more information, see [cockroach#49064](https://github.com/cockroachdb/cockroach/issues/49064). +The non-aggregate version of `ST_Union` is not yet implemented. {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v26.2/temporary-tables.md b/src/current/v26.2/temporary-tables.md index 3a92fc64c97..653e02d5893 100644 --- a/src/current/v26.2/temporary-tables.md +++ b/src/current/v26.2/temporary-tables.md @@ -10,7 +10,7 @@ docs_area: develop To create a temp table, add `TEMP`/`TEMPORARY` to a [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}) or [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}) statement. For full syntax details, see the [`CREATE TABLE`]({% link {{ page.version.version }}/create-table.md %}#synopsis) and [`CREATE TABLE AS`]({% link {{ page.version.version }}/create-table-as.md %}#synopsis) pages. For example usage, see [Examples](#examples). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}} diff --git a/src/current/v26.2/views.md b/src/current/v26.2/views.md index d21bbf6bef1..2d14811e90b 100644 --- a/src/current/v26.2/views.md +++ b/src/current/v26.2/views.md @@ -665,7 +665,7 @@ To speed up queries on materialized views, you can add an [index]({% link {{ pag CockroachDB supports session-scoped temporary views. Unlike persistent views, temporary views can only be accessed from the session in which they were created, and they are dropped at the end of the session. You can create temporary views on both persistent tables and [temporary tables]({% link {{ page.version.version }}/temporary-tables.md %}). {{site.data.alerts.callout_info}} -{% include feature-phases/preview.md %} For details, see the tracking issue [cockroachdb/cockroach#46260](https://github.com/cockroachdb/cockroach/issues/46260). +{% include feature-phases/preview.md %} For details, see the tracking issue . {{site.data.alerts.end}} {{site.data.alerts.callout_info}}