CockroachDB Feature Availability

On this page Carat arrow pointing down

Some CockroachDB features are made available in phases prior to being launched in general availability (GA). This page defines the different levels of CockroachDB v25.1 feature availability and lists the features in each phase.

Note:

This page outlines feature availability, which is separate from Cockroach Labs' Release Support Policy or API Support Policy.

Feature availability phases

Phase Definition Accessibility
Private preview Feature is available to select customers and not publicly documented. Invite-only
Limited access Feature is publicly documented but not yet available widely. This feature may have limitations and/or capabilities that may change or be added based on feedback, before being promoted to GA. Opt-in
Contact your Cockroach Labs account team.
Preview Feature is publicly available and documented. This feature may have limitations and/or capabilities that may change or be added based on feedback, before being promoted to GA. Public
General availability (GA) Feature is publicly available and documented. Public
Note:

Any feature made available in a phase prior to GA is provided without any warranties of any kind. Such features are not subject to any technical support or uptime availability commitments unless Cockroach Labs explicitly states otherwise in writing.

Features in limited access

Note:

The following features are in limited access and are subject to change. To begin validating a limited access feature and share feedback and/or issues, contact Support.

Export logs to Azure Monitor

Exporting logs to Azure Monitor from your CockroachDB Advanced cluster hosted on Azure is in limited access. Once the export is configured, logs will flow from all nodes in all regions of your CockroachDB Advanced cluster to Azure Monitor. To express interest and try it out, contact Support.

Export metrics to Azure Monitor

Exporting Metrics to Azure Monitor from a CockroachDB Advanced cluster hosted on Azure is in limited access. Once the export is configured, metrics will flow from all nodes in all regions of your CockroachDB Advanced cluster to your chosen cloud metrics sink. To express interest and try it out, contact Support.

Cluster SSO backed by LDAP

Cluster SSO using an identity stored in LDAP is in Limited Access. The cluster setting server.auth_log.sql_sessions.enabled, which logs more details about cluster authentication failures, is also in Limited Access.

Features in preview

Note:

The following features are in preview and are subject to change. To share feedback and/or issues, contact Support.

Triggers

Triggers are in Preview. A trigger executes a function when one or more specified SQL operations is performed on a table. Triggers respond to data changes by adding logic within the database, rather than in an application. They can be used to modify data before it is inserted, maintain data consistency across rows or tables, or record an update to a row.

Admission control for ingesting snapshots

The cluster setting kvadmission.store.snapshot_ingest_bandwidth_control.enabled is in Preview. When configured, it limits the disk impact of ingesting snapshots on a node.

Admission control to limit the bandwidth for a store

The cluster setting kvadmission.store.provisioned_bandwidth is in Preview. When configured, the store's bandwidth is limited to the configured bandwidth, expressed in bytes per second,

CockroachDB Standard

CockroachDB Standard is our new, enterprise-ready plan, recommended for most applications. You can start small with provisioned capacity that can scale on demand, along with enterprise-level security and availability. Compute for CockroachDB Standard is pre-provisioned and storage is usage-based. You can easily switch a CockroachDB Basic cluster to CockroachDB Standard in place.

Generic query plans

Generic query plans are generated and optimized once without considering specific placeholder values, and are not regenerated on subsequent executions, unless the plan becomes stale due to schema changes or new table statistics and must be re-optimized. This approach eliminates most of the query latency attributed to planning.

The VECTOR data type stores fixed-length arrays of floating-point numbers, which represent data points in multi-dimensional space. Vector search is often used in AI applications such as Large Language Models (LLMs) that rely on vector representations.

CockroachDB Cloud Folders

Organizing CockroachDB Cloud clusters using folders is in preview. Folders allow you to organize and manage access to your clusters according to your organization's requirements. For example, you can create top-level folders for each business unit in your organization, and within those folders, organize clusters by geographic location and then by level of maturity, such as production, staging, and testing.

GCP Private Service Connect for CockroachDB Advanced

Connecting privately to a CockroachDB Advanced cluster using GCP Private Service Connect is in preview. Private Service Connect allows you to selectively connect your cluster deployed on GCP to a VPC within your Google Cloud project.

Connecting privately to a CockroachDB Advanced cluster using Azure Private Link is in preview. Azure Private Link allows you to selectively connect your cluster deployed on Azure to a virtual network within your Azure tenant.

Logical data replication (LDR) for CockroachDB self-hosted

Logical data replication (LDR) continuously replicates tables between active CockroachDB clusters. Both source and destination cluster can receive application reads and writes, with LDR enabling bidirectional replication for eventual consistency in the replicating tables. The active-active setup between clusters can provide protection against cluster, datacenter, or region failure while still achieving single-region low latency reads and writes in the individual CockroachDB clusters. Setting up LDR between a source and destination CockroachDB self-hosted cluster is in preview.

Read on standby cluster in physical cluster replication (PCR) for CockroachDB self-hosted

The READ VIRTUAL CLUSTER option allows you to set up a PCR stream that also creates a read-only virtual cluster on the standby cluster. You can create a PCR job as per the Set Up Physical Cluster Replication guide and then add the option to the CREATE VIRTUAL CLUSTER statement.

Custom Metrics Chart page for CockroachDB Cloud clusters

The Custom Metrics Chart page for CockroachDB Cloud clusters allows you to create custom charts showing the time series data for an available metric or combination of metrics.

Export metrics from CockroachDB Advanced clusters

Exporting metrics from CockroachDB Advanced to Amazon CloudWatch or Datadog using the Cloud API is in preview. Once the export is configured, metrics will flow from all nodes in all regions of your CockroachDB Advanced cluster to your chosen cloud metrics sink.

Exporting metrics from CockroachDB Advanced to Prometheus using the Cloud API is in preview for clusters hosted on Azure. It is in general availability for clusters hosted on AWS and GCP.

Note:

Exporting metrics to Azure Monitor is in limited access. Refer to Export metrics to Azure Monitor.

Convert a schema from Oracle or Microsoft SQL Server

Using the Migrations page to convert a schema from Oracle or Microsoft SQL Server is in preview.

Schema conversion summary report

The schema-conversion summary report in the Migrations page is in preview. This report displays the results of the schema analysis and provides bulk actions you can apply to update the schema, is in preview.

Cloud SQL Shell

The SQL Shell in the CockroachDB Cloud Console is in preview. The SQL Shell enables you to run queries on your CockroachDB Cloud cluster directly from your browser.

Log SQL Statistics to Datadog

You can log sampled_query and sampled_transaction events to Datadog for finer granularity and long-term retention of SQL statistics, and to reduce the performance impacts of logging these events locally. The sampled_query events and the sampled_transaction events contain common SQL event and execution details for transactions, and statements.

CockroachDB supports a built-in integration with Datadog which sends these events as logs via the Datadog HTTP API. This integration is the recommended path to achieve high throughput data ingestion, which will in turn provide more query and transaction events for greater workload observability.

Role-based SQL audit logging

Role-based SQL audit logging gives you detailed information about queries being executed against your system by specific users or roles. An event of type role_based_audit_event is recorded when an executed query belongs to a user whose role membership corresponds to a role that is enabled to emit an audit log via the sql.log.user_audit cluster setting. The event is logged in the SENSITIVE_ACCESS logging channel.

Table-based SQL audit logging

With table-based SQL audit logging you can log all queries against a table to a file, for security purposes. For more information, see ALTER TABLE ... EXPERIMENTAL_AUDIT.

icon/buttons/copy
> ALTER TABLE t EXPERIMENTAL_AUDIT SET READ WRITE;

Show table fingerprints

Table fingerprints are used to compute an identification string of an entire table, for the purpose of gauging whether two tables have the same data. This is useful, for example, when restoring a table from backup.

Example:

icon/buttons/copy
> SHOW EXPERIMENTAL_FINGERPRINTS FROM TABLE t;
 index_name |     fingerprint
------------+---------------------
 primary    | 1999042440040364641
(1 row)

KV event tracing

Use session tracing (via SHOW TRACE FOR SESSION) to report the replicas of all KV events that occur during its execution.

Example:

icon/buttons/copy
> SET tracing = on;
> SELECT * from t;
> SET tracing = off;
> SHOW EXPERIMENTAL_REPLICA TRACE FOR SESSION;
            timestamp             | node_id | store_id | replica_id
----------------------------------+---------+----------+------------
 2018-10-18 15:50:13.345879+00:00 |       3 |        3 |          7
 2018-10-18 15:50:20.628383+00:00 |       2 |        2 |         26

Check for constraint violations with SCRUB

Checks the consistency of UNIQUE indexes, CHECK constraints, and more. Partially implemented; see cockroachdb/cockroach#10425 for details.

Note:

This example uses the users table from our open-source, fictional peer-to-peer vehicle-sharing application, MovR.

icon/buttons/copy
>  EXPERIMENTAL SCRUB table movr.users;
 job_uuid |        error_type        | database | table |                       primary_key                        |         timestamp         | repaired |                                                                                                                                                                         details
----------+--------------------------+----------+-------+----------------------------------------------------------+---------------------------+----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
          | index_key_decoding_error | movr     | users | ('boston','0009eeb5-d779-4bf8-b1bd-8566533b105c')        | 2018-10-18 16:00:38.65916 | f        | {"error_message": "key ordering did not match datum ordering. IndexDescriptor=ASC", "index_name": "primary", "row_data": {"address": "e'06484 Christine Villages\\nGrantport, TN 01572'", "city": "'boston'", "credit_card": "'4634253150884'", "id": "'0009eeb5-d779-4bf8-b1bd-8566533b105c'", "name": "'Jessica Webb'"}}
          | index_key_decoding_error | movr     | users | ('los angeles','0001252c-fc16-4006-b6dc-c6b1a0fd1f5b')   | 2018-10-18 16:00:38.65916 | f        | {"error_message": "key ordering did not match datum ordering. IndexDescriptor=ASC", "index_name": "primary", "row_data": {"address": "e'91309 Warner Springs\\nLake Danielmouth, PR 33400'", "city": "'los angeles'", "credit_card": "'3584736360686445'", "id": "'0001252c-fc16-4006-b6dc-c6b1a0fd1f5b'", "name": "'Rebecca Gibson'"}}
          | index_key_decoding_error | movr     | users | ('new york','000169a5-e337-4441-b664-dae63e682980')      | 2018-10-18 16:00:38.65916 | f        | {"error_message": "key ordering did not match datum ordering. IndexDescriptor=ASC", "index_name": "primary", "row_data": {"address": "e'0787 Christopher Highway Apt. 363\\nHamptonmouth, TX 91864-2620'", "city": "'new york'", "credit_card": "'4578562547256688'", "id": "'000169a5-e337-4441-b664-dae63e682980'", "name": "'Christopher Johnson'"}}
          | index_key_decoding_error | movr     | users | ('paris','00089fc4-e5b1-48f6-9f0b-409905f228c4')         | 2018-10-18 16:00:38.65916 | f        | {"error_message": "key ordering did not match datum ordering. IndexDescriptor=ASC", "index_name": "primary", "row_data": {"address": "e'46735 Martin Summit\\nMichaelview, OH 10906-5889'", "city": "'paris'", "credit_card": "'5102207609888778'", "id": "'00089fc4-e5b1-48f6-9f0b-409905f228c4'", "name": "'Nicole Fuller'"}}
          | index_key_decoding_error | movr     | users | ('rome','000209fc-69a1-4dd5-8053-3b5e5769876d')          | 2018-10-18 16:00:38.65916 | f        | {"error_message": "key ordering did not match datum ordering. IndexDescriptor=ASC", "index_name": "primary", "row_data": {"address": "e'473 Barrera Vista Apt. 890\\nYeseniaburgh, CO 78087'", "city": "'rome'", "credit_card": "'3534605564661093'", "id": "'000209fc-69a1-4dd5-8053-3b5e5769876d'", "name": "'Sheryl Shea'"}}
          | index_key_decoding_error | movr     | users | ('san francisco','00058767-1e83-4e18-999f-13b5a74d7225') | 2018-10-18 16:00:38.65916 | f        | {"error_message": "key ordering did not match datum ordering. IndexDescriptor=ASC", "index_name": "primary", "row_data": {"address": "e'5664 Acevedo Drive Suite 829\\nHernandezview, MI 13516'", "city": "'san francisco'", "credit_card": "'376185496850202'", "id": "'00058767-1e83-4e18-999f-13b5a74d7225'", "name": "'Kevin Turner'"}}
          | index_key_decoding_error | movr     | users | ('seattle','0002e904-1256-4528-8b5f-abad16e695ff')       | 2018-10-18 16:00:38.65916 | f        | {"error_message": "key ordering did not match datum ordering. IndexDescriptor=ASC", "index_name": "primary", "row_data": {"address": "e'81499 Samuel Crescent Suite 631\\nLake Christopherborough, PR 50401'", "city": "'seattle'", "credit_card": "'38743493725890'", "id": "'0002e904-1256-4528-8b5f-abad16e695ff'", "name": "'Mark Williams'"}}
          | index_key_decoding_error | movr     | users | ('washington dc','00007caf-2014-4696-85b0-840e7d8b6db9') | 2018-10-18 16:00:38.65916 | f        | {"error_message": "key ordering did not match datum ordering. IndexDescriptor=ASC", "index_name": "primary", "row_data": {"address": "e'4578 Holder Trafficway\\nReynoldsside, IL 23520-7418'", "city": "'washington dc'", "credit_card": "'30454993082943'", "id": "'00007caf-2014-4696-85b0-840e7d8b6db9'", "name": "'Marie Miller'"}}
(8 rows)

Show range information for a specific row

The SHOW RANGE ... FOR ROW statement shows information about a range for a particular row of data. This information is useful for verifying how SQL data maps to underlying ranges, and where the replicas for a range are located.

Alter column types

CockroachDB supports altering the column types of existing tables, with certain limitations. To enable altering column types, set the enable_experimental_alter_column_type_general session variable to true.

Temporary objects

Temporary tables, temporary views, and 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.

To enable temporary objects, set the experimental_enable_temp_tables session variable to on.

Password authentication without TLS

For deployments where transport security is already handled at the infrastructure level (e.g., IPSec with DMZ), and TLS-based transport security is not possible or not desirable, CockroachDB supports delegating transport security to the infrastructure with the flag --accept-sql-without-tls for cockroach start.

With this flag, SQL clients can establish a session over TCP without a TLS handshake. They still need to present valid authentication credentials, for example a password in the default configuration. Different authentication schemes can be further configured as per server.host_based_authentication.configuration.

Example:

icon/buttons/copy
$ cockroach sql --user=jpointsman --insecure
  # Welcome to the CockroachDB SQL shell.
  # All statements must be terminated by a semicolon.
  # To exit, type: \q.
  #
  Enter password:

Apache Pulsar changefeed sink

Changefeeds can deliver messages to Apache Pulsar.

A Pulsar sink URI:

icon/buttons/copy
pulsar://localhost:6650

Changefeeds emitting to an Apache Pulsar sink do not support:

For an Apache Pulsar setup example, refer to the Changefeed Examples page.

Core implementation of changefeeds

The EXPERIMENTAL CHANGEFEED FOR statement creates a new basic changefeed, which streams row-level changes to the client indefinitely until the underlying connection is closed or the changefeed is canceled. A basic changefeed can watch one table or multiple tables in a comma-separated list.

Multiple active portals

The multiple active portals feature of the Postgres wire protocol (pgwire) is available, with limitations. For more information, see Multiple active portals.

Super regions

Super regions allow you to define a set of database regions such that schema objects will have all of their replicas stored only in regions that are members of the super region. The primary use case for super regions is data domiciling.

Physical cluster replication data verification

You can verify data between a primary and standby cluster with the SHOW EXPERIMENTAL FINGERPRINTS statement, which uses the current replicated time in a physical cluster replication job to run a point-in-time fingerprint. The SHOW EXPERIMENTAL_FINGERPRINTS statement verifies that data transmission and ingestion is working as expected while the replication stream is running. This tool is for data verification only; if you encounter a fingerprint mismatch, contact Support. For more information, refer to the Physical Cluster Replication Monitoring page.

cockroach commands

The table below lists the cockroach commands available in preview in CockroachDB.

Command Description
cockroach demo Start a temporary, in-memory CockroachDB cluster, and open an interactive SQL shell to it.
cockroach sqlfmt Reformat SQL queries for enhanced clarity.

Leader leases

CockroachDB offers an improved leasing system rebuilt atop a stronger form of Raft leadership that ensures that the Raft leader is always the range's leaseholder. This new type of lease is called a Leader lease, and supersedes epoch-based leases and expiration-based leases leases while combining the performance of the former with the resilience of the latter. Leader leases are not enabled by default.

For more information, see Architecture > Replication Layer > Leader leases.

See Also


Yes No
On this page

Yes No