> ## 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

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>;
};

CockroachDB  supports the following standard SQL features and common extensions.

* **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 Cockroach Labs 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`<br />(Automatic key generation) | Alternative | Common Extension      | <InternalLink path="sql-faqs#how-do-i-auto-generate-unique-row-ids-in-cockroachdb">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#can-i-use-cockroachdb-as-a-key-value-store">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)<br /><InternalLink path="information-schema">`information_schema`</InternalLink> (Standard)<br /><InternalLink path="pg-catalog">`pg_catalog`</InternalLink> (PostgreSQL Extension)<br /><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                              | Partial   | Standard                                   | <InternalLink path="triggers">Triggers documentation</InternalLink>                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| 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 "fuzzystrmatch"`    | ✓         | Common Extension                           | Provides PostgreSQL-compatible fuzzy string matching functions including `soundex()`, `difference()`, `levenshtein()`, `metaphone()`, <InternalLink path="functions-and-operators">`dmetaphone()`</InternalLink>, <InternalLink path="functions-and-operators">`dmetaphone_alt()`</InternalLink>, and <InternalLink path="functions-and-operators">`daitch_mokotoff()`</InternalLink>. 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 <InternalLink path="functions-and-operators">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`.                                                                                                                                                                                                                                                 |
