> ## Documentation Index
> Fetch the complete documentation index at: https://cockroachlabs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# SQL Feature Support in CockroachDB v24.1

export const InternalLink = ({version, path = "", children, ...props}) => {
  let detectedVersion = version || "stable";
  if (typeof window !== 'undefined' && !version) {
    const match = window.location.pathname.match(/\/docs\/([^/]+)/);
    if (match) {
      detectedVersion = match[1];
    }
  }
  const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
  return <a href={`/docs/${detectedVersion}/${normalizedPath}`} {...props}>
      {children}
    </a>;
};

Making CockroachDB easy to use is a top priority for us, so we chose to implement SQL. However, even though SQL has a standard, no database implements all of it, nor do any of them have standard implementations of all features.

To understand which standard SQL features we support (as well as common extensions to the standard), use the table below.

* **Component** lists the components that are commonly considered part of SQL.
* **Supported** shows CockroachDB's level of support for the component.
* **Type** indicates whether the component is part of the SQL *Standard* or is an *Extension* created by ourselves or others.
* **Details** provides greater context about the component.

## Features

### Row values

| Component                                   | Supported   | Type                  | Details                                                                                                                                                                                   |
| ------------------------------------------- | ----------- | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ARRAY`                                     | ✓           | Standard              | <InternalLink path="array">`ARRAY` documentation</InternalLink>                                                                                                                           |
| `AUTO INCREMENT` (Automatic key generation) | Alternative | Common Extension      | <InternalLink path="sql-faqs">Automatic key generation FAQ</InternalLink>                                                                                                                 |
| `BIT`                                       | ✓           | Standard              | <InternalLink path="bit">`BIT` documentation</InternalLink>                                                                                                                               |
| `BOOLEAN`                                   | ✓           | Standard              | <InternalLink path="bool">`BOOL` documentation</InternalLink>                                                                                                                             |
| `BYTES`                                     | ✓           | CockroachDB Extension | <InternalLink path="bytes">`BYTES` documentation</InternalLink>                                                                                                                           |
| `COLLATE`                                   | ✓           | Standard              | <InternalLink path="collate">`COLLATE` documentation</InternalLink>                                                                                                                       |
| `DATE`                                      | ✓           | Standard              | <InternalLink path="date">`DATE` documentation</InternalLink>                                                                                                                             |
| `DECIMAL`, `NUMERIC`                        | ✓           | Standard              | <InternalLink path="decimal">`DECIMAL` documentation</InternalLink>                                                                                                                       |
| `ENUM`                                      | ✓           | PostgreSQL Extension  | <InternalLink path="enum">`ENUM` documentation</InternalLink>                                                                                                                             |
| `FLOAT`, `REAL`                             | ✓           | Standard              | <InternalLink path="float">`FLOAT` documentation</InternalLink>                                                                                                                           |
| `INET`                                      | ✓           | PostgreSQL Extension  | <InternalLink path="inet">`INET` documentation</InternalLink>                                                                                                                             |
| `INT`                                       | ✓           | Standard              | <InternalLink path="int">`INT` documentation</InternalLink>                                                                                                                               |
| `INTERVAL`                                  | ✓           | Standard              | <InternalLink path="interval">`INTERVAL` documentation</InternalLink>                                                                                                                     |
| `JSON`/`JSONB`                              | ✓           | Common Extension      | <InternalLink path="jsonb">`JSONB` documentation</InternalLink>                                                                                                                           |
| `NULL`                                      | ✓           | Standard              | <InternalLink path="null-handling">`NULL`-handling documentation</InternalLink>                                                                                                           |
| `OID`                                       | ✓           | PostgreSQL Extension  | <InternalLink path="oid">`OID` documentation</InternalLink>                                                                                                                               |
| `SERIAL`                                    | ✓           | PostgreSQL Extension  | <InternalLink path="serial">`SERIAL` documentation</InternalLink>                                                                                                                         |
| `SET`                                       | ✗           | MySQL                 | Only allow rows to contain values from a defined set of terms.                                                                                                                            |
| `STRING`, `CHARACTER`                       | ✓           | Standard              | <InternalLink path="string">`STRING` documentation</InternalLink>                                                                                                                         |
| `TIME`                                      | ✓           | Standard              | <InternalLink path="time">`TIME` documentation</InternalLink>                                                                                                                             |
| `TIMESTAMP`/`TIMESTAMPTZ`                   | ✓           | Standard              | <InternalLink path="timestamp">`TIMESTAMP` documentation</InternalLink>                                                                                                                   |
| `TSQUERY`                                   | ✓           | Standard              | <InternalLink path="tsquery">`TSQUERY` documentation</InternalLink>                                                                                                                       |
| `TSVECTOR`                                  | ✓           | Standard              | <InternalLink path="tsvector">`TSVECTOR` documentation</InternalLink>                                                                                                                     |
| `UNSIGNED INT`                              | ✗           | Common Extension      | `UNSIGNED INT` causes numerous casting issues, so we do not plan to support it.                                                                                                           |
| `UUID`                                      | ✓           | PostgreSQL Extension  | <InternalLink path="uuid">`UUID` documentation</InternalLink>                                                                                                                             |
| Identifiers                                 | ✓           | Standard              | <InternalLink path="keywords-and-identifiers#identifiers">Identifiers documentation</InternalLink>. See also <InternalLink path="sql-name-resolution">SQL Name Resolution</InternalLink>. |
| Key-value pairs                             | Alternative | Extension             | <InternalLink path="sql-faqs">Key-Value FAQ</InternalLink>                                                                                                                                |
| XML                                         | ✗           | Standard              | XML data can be stored as `BYTES`, but we do not offer XML parsing.                                                                                                                       |

### Constraints

| Component     | Supported | Type     | Details                                                                       |
| ------------- | --------- | -------- | ----------------------------------------------------------------------------- |
| Not Null      | ✓         | Standard | <InternalLink path="not-null">Not Null documentation</InternalLink>           |
| Unique        | ✓         | Standard | <InternalLink path="unique">Unique documentation</InternalLink>               |
| Primary Key   | ✓         | Standard | <InternalLink path="primary-key">Primary Key documentation</InternalLink>     |
| Check         | ✓         | Standard | <InternalLink path="check">Check documentation</InternalLink>                 |
| Foreign Key   | ✓         | Standard | <InternalLink path="foreign-key">Foreign Key documentation</InternalLink>     |
| Default Value | ✓         | Standard | <InternalLink path="default-value">Default Value documentation</InternalLink> |

### Transactions

| Component                     | Supported | Type                                 | Details                                                                                                  |
| ----------------------------- | --------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------- |
| Transactions (ACID semantics) | ✓         | Standard                             | <InternalLink path="transactions">Transactions documentation</InternalLink>                              |
| `BEGIN`                       | ✓         | Standard                             | <InternalLink path="begin-transaction">`BEGIN` documentation</InternalLink>                              |
| `COMMIT`                      | ✓         | Standard                             | <InternalLink path="commit-transaction">`COMMIT` documentation</InternalLink>                            |
| `ROLLBACK`                    | ✓         | Standard                             | <InternalLink path="rollback-transaction">`ROLLBACK` documentation</InternalLink>                        |
| `SAVEPOINT`                   | ✓         | Standard with CockroachDB extensions | CockroachDB supports nested transactions using <InternalLink path="savepoint">`SAVEPOINT`</InternalLink> |

### Indexes

| Component                  | Supported | Type                  | Details                                                                                      |
| -------------------------- | --------- | --------------------- | -------------------------------------------------------------------------------------------- |
| Indexes                    | ✓         | Common Extension      | <InternalLink path="indexes">Indexes documentation</InternalLink>                            |
| Multi-column indexes       | ✓         | Common Extension      | We do not limit on the number of columns indexes can include                                 |
| Covering indexes           | ✓         | Common Extension      | <InternalLink path="create-index#store-columns">Storing Columns documentation</InternalLink> |
| GIN indexes                | ✓         | Common Extension      | <InternalLink path="inverted-indexes">GIN indexes documentation</InternalLink>               |
| Trigram indexes            | ✓         | PostgreSQL Extension  | <InternalLink path="trigram-indexes">Trigram indexes documentation</InternalLink>            |
| Partial indexes            | ✓         | Common Extension      | <InternalLink path="partial-indexes">Partial indexes documentation</InternalLink>            |
| Spatial indexes            | ✓         | Common Extension      | <InternalLink path="spatial-indexes">Spatial indexes documentation</InternalLink>            |
| Multiple indexes per query | Partial   | Common Extension      | <InternalLink path="indexes#selection">Index selection</InternalLink>                        |
| Full-text indexes          | ✓         | Common Extension      | <InternalLink path="full-text-search">Full-text search documentation</InternalLink>          |
| Expression indexes         | ✓         | Common Extension      | <InternalLink path="expression-indexes">Expression indexes</InternalLink>                    |
| Prefix indexes             | ✗         | Common Extension      | Implement using <InternalLink path="expression-indexes">Expression indexes</InternalLink>    |
| Hash indexes               | ✗         | Common Extension      | Improves performance of queries looking for single, exact values                             |
| Hash-sharded indexes       | ✓         | CockroachDB Extension | <InternalLink path="hash-sharded-indexes">Hash-sharded Indexes documentation</InternalLink>  |

### Schema changes

| Component                     | Supported | Type     | Details                                                                                                   |
| ----------------------------- | --------- | -------- | --------------------------------------------------------------------------------------------------------- |
| `ALTER TABLE`                 | ✓         | Standard | <InternalLink path="alter-table">`ALTER TABLE` documentation</InternalLink>                               |
| Database renames              | ✓         | Standard | <InternalLink path="alter-database#rename-to">`ALTER DATABASE ... RENAME TO` documentation</InternalLink> |
| Table renames                 | ✓         | Standard | <InternalLink path="alter-table#rename-to">`ALTER TABLE ... RENAME TO` documentation</InternalLink>       |
| Column renames                | ✓         | Standard | <InternalLink path="alter-table#rename-column">`RENAME COLUMN` documentation</InternalLink>               |
| Altering a column's data type | ✓         | Standard | <InternalLink path="alter-table#alter-column-data-types">`ALTER COLUMN` documentation</InternalLink>      |
| Adding columns                | ✓         | Standard | <InternalLink path="alter-table#add-column">`ADD COLUMN` documentation</InternalLink>                     |
| Removing columns              | ✓         | Standard | <InternalLink path="alter-table#drop-column">`DROP COLUMN` documentation</InternalLink>                   |
| Adding constraints            | ✓         | Standard | <InternalLink path="alter-table#add-constraint">`ADD CONSTRAINT` documentation</InternalLink>             |
| Removing constraints          | ✓         | Standard | <InternalLink path="alter-table#drop-constraint">`DROP CONSTRAINT` documentation</InternalLink>           |
| Index renames                 | ✓         | Standard | <InternalLink path="alter-index#rename-to">`ALTER INDEX ... RENAME TO` documentation</InternalLink>       |
| Adding indexes                | ✓         | Standard | <InternalLink path="create-index">`CREATE INDEX` documentation</InternalLink>                             |
| Removing indexes              | ✓         | Standard | <InternalLink path="drop-index">`DROP INDEX` documentation</InternalLink>                                 |
| Altering a primary key        | ✓         | Standard | <InternalLink path="alter-table#alter-primary-key">`ALTER PRIMARY KEY` documentation</InternalLink>       |
| Adding user-defined schemas   | ✓         | Standard | <InternalLink path="create-schema">`CREATE SCHEMA` documentation</InternalLink>                           |
| Removing user-defined schemas | ✓         | Standard | <InternalLink path="drop-schema">`DROP SCHEMA` documentation</InternalLink>                               |
| Altering user-defined schemas | ✓         | Standard | <InternalLink path="create-schema">`ALTER SCHEMA` documentation</InternalLink>                            |

### Statements

| Component           | Supported | Type                                       | Details                                                                                 |
| ------------------- | --------- | ------------------------------------------ | --------------------------------------------------------------------------------------- |
| Common statements   | ✓         | Standard, PostgreSQL/CockroachDB Extension | <InternalLink path="sql-statements">SQL Statements documentation</InternalLink>         |
| `UPSERT`            | ✓         | PostgreSQL, MSSQL Extension                | <InternalLink path="upsert">`UPSERT` documentation</InternalLink>                       |
| `EXPLAIN`           | ✓         | Common Extension                           | <InternalLink path="explain">`EXPLAIN` documentation</InternalLink>                     |
| `SELECT ... INTO`   | ✓         | Common Extension                           | <InternalLink path="plpgsql#declare-a-variable">PL/pgSQL documentation</InternalLink>.  |
| `SELECT FOR UPDATE` | ✓         | Common Extension                           | <InternalLink path="select-for-update">`SELECT FOR UPDATE` documentation</InternalLink> |

### Clauses

| Component             | Supported | Type             | Details                                                                                                                                                                                      |
| --------------------- | --------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Common clauses        | ✓         | Standard         | <InternalLink path="sql-grammar">SQL Grammar documentation</InternalLink>                                                                                                                    |
| `LIMIT`               | ✓         | Common Extension | Limit the number of rows a statement returns. For more information, see <InternalLink path="limit-offset">Limit Query Results</InternalLink>.                                                |
| `LIMIT` with `OFFSET` | ✓         | Common Extension | Skip a number of rows, and then limit the size of the return set. For more information, see <InternalLink path="limit-offset">Limit Query Results</InternalLink>.                            |
| `RETURNING`           | ✓         | Common Extension | Retrieve a table of rows statements affect. For examples, see the <InternalLink path="insert">`INSERT`</InternalLink> and <InternalLink path="delete">`DELETE`</InternalLink> documentation. |

### Table expressions

| Component                                          | Supported | Type                  | Details                                                                                                                                                                                                               |
| -------------------------------------------------- | --------- | --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Table and View references                          | ✓         | Standard              | <InternalLink path="table-expressions#table-and-view-names">Table expressions documentation</InternalLink>                                                                                                            |
| `AS` in table expressions                          | ✓         | Standard              | <InternalLink path="table-expressions#aliased-table-expressions">Aliased table expressions documentation</InternalLink>                                                                                               |
| `JOIN` (`INNER`, `LEFT`, `RIGHT`, `FULL`, `CROSS`) | ✓         | Standard              | <InternalLink path="table-expressions#join-expressions">`JOIN` expressions documentation</InternalLink>                                                                                                               |
| Sub-queries as table expressions                   | Partial   | Standard              | Non-correlated subqueries are <InternalLink path="table-expressions#use-a-subquery">supported</InternalLink>, as are most <InternalLink path="subqueries#correlated-subqueries">correlated subqueries</InternalLink>. |
| Table generator functions                          | Partial   | PostgreSQL Extension  | <InternalLink path="table-expressions#table-generator-functions">Table generator functions documentation</InternalLink>                                                                                               |
| `WITH ORDINALITY`                                  | ✓         | CockroachDB Extension | <InternalLink path="table-expressions#ordinality-annotation">Ordinality annotation documentation</InternalLink>                                                                                                       |

### Scalar expressions and Boolean formulas

| Component                                | Supported | Type                  | Details                                                                                                                                                                                                                                                                             |
| ---------------------------------------- | --------- | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Common functions                         | ✓         | Standard              | <InternalLink path="scalar-expressions#function-calls-and-sql-special-forms">Functions calls and SQL special forms documentation</InternalLink>                                                                                                                                     |
| Common operators                         | ✓         | Standard              | <InternalLink path="scalar-expressions#unary-and-binary-operations">Operators documentation</InternalLink>                                                                                                                                                                          |
| `IF`/`CASE`/`NULLIF`                     | ✓         | Standard              | <InternalLink path="scalar-expressions#conditional-expressions">Conditional expressions documentation</InternalLink>                                                                                                                                                                |
| `COALESCE`/`IFNULL`                      | ✓         | Standard              | <InternalLink path="scalar-expressions#conditional-expressions">Conditional expressions documentation</InternalLink>                                                                                                                                                                |
| `AND`/`OR`                               | ✓         | Standard              | <InternalLink path="scalar-expressions#conditional-expressions">Conditional expressions documentation</InternalLink>                                                                                                                                                                |
| `LIKE`/`ILIKE`                           | ✓         | Standard              | <InternalLink path="scalar-expressions#string-pattern-matching">String pattern matching documentation</InternalLink>                                                                                                                                                                |
| `SIMILAR TO`                             | ✓         | Standard              | <InternalLink path="scalar-expressions#string-matching-using-sql-regular-expressions">SQL regexp pattern matching documentation</InternalLink>                                                                                                                                      |
| Matching using POSIX regular expressions | ✓         | Common Extension      | <InternalLink path="scalar-expressions#string-matching-using-posix-regular-expressions">POSIX regexp pattern matching documentation</InternalLink>                                                                                                                                  |
| `EXISTS`                                 | Partial   | Standard              | Non-correlated subqueries are <InternalLink path="scalar-expressions#existence-test-on-the-result-of-subqueries">supported</InternalLink>, as are most <InternalLink path="subqueries#correlated-subqueries">correlated subqueries</InternalLink>. Works only with small data sets. |
| Scalar subqueries                        | Partial   | Standard              | Non-correlated subqueries are <InternalLink path="scalar-expressions#scalar-subqueries">supported</InternalLink>, as are most <InternalLink path="subqueries#correlated-subqueries">correlated subqueries</InternalLink>. Works only with small data sets.                          |
| Bitwise arithmetic                       | ✓         | Common Extension      | <InternalLink path="scalar-expressions#unary-and-binary-operations">Operators documentation</InternalLink>                                                                                                                                                                          |
| Array constructors and subscripting      | Partial   | PostgreSQL Extension  | Array expression documentation: <InternalLink path="scalar-expressions#array-constructors">Constructor syntax</InternalLink> and <InternalLink path="scalar-expressions#subscripted-expressions">Subscripting</InternalLink>                                                        |
| `COLLATE`                                | ✓         | Standard              | <InternalLink path="scalar-expressions#collation-expressions">Collation expressions documentation</InternalLink>                                                                                                                                                                    |
| Column ordinal references                | ✓         | CockroachDB Extension | <InternalLink path="scalar-expressions#column-references">Column references documentation</InternalLink>                                                                                                                                                                            |
| Type annotations                         | ✓         | CockroachDB Extension | <InternalLink path="scalar-expressions#explicitly-typed-expressions">Type annotations documentation</InternalLink>                                                                                                                                                                  |

### Permissions

| Component          | Supported | Type                 | Details                                                                                                                  |
| ------------------ | --------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| Users              | ✓         | Standard             | <InternalLink path="security-reference/authorization#sql-users">Users documentation</InternalLink>                       |
| Roles              | ✓         | Standard             | <InternalLink path="security-reference/authorization#roles">Roles documentation</InternalLink>                           |
| Object ownership   | ✓         | Common Extension     | <InternalLink path="security-reference/authorization#object-ownership">Ownership documentation</InternalLink>            |
| Privileges         | ✓         | Standard             | <InternalLink path="security-reference/authorization#managing-privileges">Privileges documentation</InternalLink>        |
| Default privileges | ✓         | PostgreSQL Extension | <InternalLink path="security-reference/authorization#default-privileges">Default privileges documentation</InternalLink> |

### Miscellaneous

| Component                             | Supported | Type                                       | Details                                                                                                                                                                                                                                                                                                                                                        |
| ------------------------------------- | --------- | ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Column families                       | ✓         | CockroachDB Extension                      | <InternalLink path="column-families">Column Families documentation</InternalLink>                                                                                                                                                                                                                                                                              |
| Computed columns (stored and virtual) | ✓         | Common Extension                           | <InternalLink path="computed-columns">Computed Columns documentation</InternalLink>                                                                                                                                                                                                                                                                            |
| `ON UPDATE` expressions               | ✓         | MySQL Extension                            | <InternalLink path="create-table#on-update-expressions">`ON UPDATE` expressions documentation</InternalLink>                                                                                                                                                                                                                                                   |
| Multi-region capabilities             | ✓         | CockroachDB Extension                      | <InternalLink path="multiregion-overview">Multi-region documentation</InternalLink>                                                                                                                                                                                                                                                                            |
| System catalog schemas                | ✓         | Standard, PostgreSQL/CockroachDB Extension | <InternalLink path="crdb-internal">`crdb\_internal`</InternalLink> (CockroachDB Extension) <InternalLink path="information-schema">`information\_schema`</InternalLink> (Standard) <InternalLink path="pg-catalog">`pg\_catalog`</InternalLink> (PostgreSQL Extension) <InternalLink path="pg-extension">`pg\_extension`</InternalLink> (PostgreSQL Extension) |
| Sequences                             | ✓         | Common Extension                           | <InternalLink path="create-sequence">`CREATE SEQUENCE` documentation</InternalLink>                                                                                                                                                                                                                                                                            |
| Identity columns                      | ✓         | Common Extension                           | <InternalLink path="create-table#identity-columns">Identity columns documentation</InternalLink>                                                                                                                                                                                                                                                               |
| Views                                 | ✓         | Standard                                   | <InternalLink path="views">Views documentation</InternalLink>                                                                                                                                                                                                                                                                                                  |
| Materialized views                    | ✓         | Common Extension                           | <InternalLink path="views#materialized-views">Materialized views documentation</InternalLink>                                                                                                                                                                                                                                                                  |
| Window functions                      | ✓         | Standard                                   | <InternalLink path="window-functions">Window Functions documentation</InternalLink>                                                                                                                                                                                                                                                                            |
| Common table expressions              | Partial   | Common Extension                           | <InternalLink path="common-table-expressions">Common Table Expressions documentation</InternalLink>                                                                                                                                                                                                                                                            |
| Stored procedures                     | Partial   | Common Extension                           | <InternalLink path="stored-procedures">Stored procedures documentation</InternalLink>                                                                                                                                                                                                                                                                          |
| Cursors                               | Partial   | Standard                                   | <InternalLink path="cursors">Cursors documentation</InternalLink>                                                                                                                                                                                                                                                                                              |
| 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 <InternalLink path="row-level-ttl">Batch-delete expired data with Row-Level TTL</InternalLink>.                                                                                                                                                                                                   |
| User-defined functions                | Partial   | Standard                                   | <InternalLink path="user-defined-functions">User-Defined Functions documentation</InternalLink>                                                                                                                                                                                                                                                                |
| `CREATE EXTENSION "uuid-ossp"`        | ✓         | Common Extension                           | Provides access to several additional <InternalLink path="functions-and-operators#id-generation-functions">UUID generation functions</InternalLink>. Note that these UUID functions are available without typing `CREATE EXTENSION "uuid-ossp"`. CockroachDB does not have full support for `CREATE EXTENSION`.                                                |
