On this page
CockroachDB v24.3 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 | ARRAY documentation |
AUTO INCREMENT (Automatic key generation) |
Alternative | Common Extension | Automatic key generation FAQ |
BIT |
✓ | Standard | BIT documentation |
BOOLEAN |
✓ | Standard | BOOL documentation |
BYTES |
✓ | CockroachDB Extension | BYTES documentation |
COLLATE |
✓ | Standard | COLLATE documentation |
DATE |
✓ | Standard | DATE documentation |
DECIMAL , NUMERIC |
✓ | Standard | DECIMAL documentation |
ENUM |
✓ | PostgreSQL Extension | ENUM documentation |
FLOAT , REAL |
✓ | Standard | FLOAT documentation |
INET |
✓ | PostgreSQL Extension | INET documentation |
INT |
✓ | Standard | INT documentation |
INTERVAL |
✓ | Standard | INTERVAL documentation |
JSON /JSONB |
✓ | Common Extension | JSONB documentation |
NULL |
✓ | Standard | NULL -handling documentation |
OID |
✓ | PostgreSQL Extension | OID documentation |
SERIAL |
✓ | PostgreSQL Extension | SERIAL documentation |
SET |
✗ | MySQL | Only allow rows to contain values from a defined set of terms. |
STRING , CHARACTER |
✓ | Standard | STRING documentation |
TIME |
✓ | Standard | TIME documentation |
TIMESTAMP /TIMESTAMPTZ |
✓ | Standard | TIMESTAMP documentation |
TSQUERY |
✓ | Standard | TSQUERY documentation |
TSVECTOR |
✓ | Standard | TSVECTOR documentation |
UNSIGNED INT |
✗ | Common Extension | UNSIGNED INT causes numerous casting issues, so we do not plan to support it. |
UUID |
✓ | PostgreSQL Extension | UUID documentation |
Identifiers | ✓ | Standard | Identifiers documentation. See also SQL Name Resolution. |
Key-value pairs | Alternative | Extension | Key-Value FAQ |
XML | ✗ | Standard | XML data can be stored as BYTES , but we do not offer XML parsing. |
Constraints
Component | Supported | Type | Details |
---|---|---|---|
Not Null | ✓ | Standard | Not Null documentation |
Unique | ✓ | Standard | Unique documentation |
Primary Key | ✓ | Standard | Primary Key documentation |
Check | ✓ | Standard | Check documentation |
Foreign Key | ✓ | Standard | Foreign Key documentation |
Default Value | ✓ | Standard | Default Value documentation |
Transactions
Component | Supported | Type | Details |
---|---|---|---|
Transactions (ACID semantics) | ✓ | Standard | Transactions documentation |
BEGIN |
✓ | Standard | BEGIN documentation |
COMMIT |
✓ | Standard | COMMIT documentation |
ROLLBACK |
✓ | Standard | ROLLBACK documentation |
SAVEPOINT |
✓ | Standard with CockroachDB extensions | CockroachDB supports nested transactions using SAVEPOINT |
Indexes
Component | Supported | Type | Details |
---|---|---|---|
Indexes | ✓ | Common Extension | Indexes documentation |
Multi-column indexes | ✓ | Common Extension | We do not limit on the number of columns indexes can include |
Covering indexes | ✓ | Common Extension | Storing Columns documentation |
GIN indexes | ✓ | Common Extension | GIN indexes documentation |
Trigram indexes | ✓ | PostgreSQL Extension | Trigram indexes documentation |
Partial indexes | ✓ | Common Extension | Partial indexes documentation |
Spatial indexes | ✓ | Common Extension | Spatial indexes documentation |
Multiple indexes per query | Partial | Common Extension | Index selection |
Full-text indexes | ✓ | Common Extension | Full-text search documentation |
Expression indexes | ✓ | Common Extension | Expression indexes |
Prefix indexes | ✗ | Common Extension | Implement using Expression indexes |
Hash indexes | ✗ | Common Extension | Improves performance of queries looking for single, exact values |
Hash-sharded indexes | ✓ | CockroachDB Extension | Hash-sharded Indexes documentation |
Schema changes
Component | Supported | Type | Details |
---|---|---|---|
ALTER TABLE |
✓ | Standard | ALTER TABLE documentation |
Database renames | ✓ | Standard | ALTER DATABASE ... RENAME TO documentation |
Table renames | ✓ | Standard | ALTER TABLE ... RENAME TO documentation |
Column renames | ✓ | Standard | RENAME COLUMN documentation |
Altering a column's data type | ✓ | Standard | ALTER COLUMN documentation |
Adding columns | ✓ | Standard | ADD COLUMN documentation |
Removing columns | ✓ | Standard | DROP COLUMN documentation |
Adding constraints | ✓ | Standard | ADD CONSTRAINT documentation |
Removing constraints | ✓ | Standard | DROP CONSTRAINT documentation |
Index renames | ✓ | Standard | ALTER INDEX ... RENAME TO documentation |
Adding indexes | ✓ | Standard | CREATE INDEX documentation |
Removing indexes | ✓ | Standard | DROP INDEX documentation |
Altering a primary key | ✓ | Standard | ALTER PRIMARY KEY documentation |
Adding user-defined schemas | ✓ | Standard | CREATE SCHEMA documentation |
Removing user-defined schemas | ✓ | Standard | DROP SCHEMA documentation |
Altering user-defined schemas | ✓ | Standard | ALTER SCHEMA documentation |
Statements
Component | Supported | Type | Details |
---|---|---|---|
Common statements | ✓ | Standard, PostgreSQL/CockroachDB Extension | SQL Statements documentation |
UPSERT |
✓ | PostgreSQL, MSSQL Extension | UPSERT documentation |
EXPLAIN |
✓ | Common Extension | EXPLAIN documentation |
SELECT ... INTO |
✓ | Common Extension | PL/pgSQL documentation. |
SELECT FOR UPDATE |
✓ | Common Extension | SELECT FOR UPDATE documentation |
Clauses
Component | Supported | Type | Details |
---|---|---|---|
Common clauses | ✓ | Standard | SQL Grammar documentation |
LIMIT |
✓ | Common Extension | Limit the number of rows a statement returns. For more information, see Limit Query Results. |
LIMIT with OFFSET |
✓ | Common Extension | Skip a number of rows, and then limit the size of the return set. For more information, see Limit Query Results. |
RETURNING |
✓ | Common Extension | Retrieve a table of rows statements affect. For examples, see the INSERT and DELETE documentation. |
Table expressions
Component | Supported | Type | Details |
---|---|---|---|
Table and View references | ✓ | Standard | Table expressions documentation |
AS in table expressions |
✓ | Standard | Aliased table expressions documentation |
JOIN (INNER , LEFT , RIGHT , FULL , CROSS ) |
✓ | Standard | JOIN expressions documentation |
Sub-queries as table expressions | Partial | Standard | Non-correlated subqueries are supported, as are most correlated subqueries. |
Table generator functions | Partial | PostgreSQL Extension | Table generator functions documentation |
WITH ORDINALITY |
✓ | CockroachDB Extension | Ordinality annotation documentation |
Scalar expressions and Boolean formulas
Component | Supported | Type | Details |
---|---|---|---|
Common functions | ✓ | Standard | Functions calls and SQL special forms documentation |
Common operators | ✓ | Standard | Operators documentation |
IF /CASE /NULLIF |
✓ | Standard | Conditional expressions documentation |
COALESCE /IFNULL |
✓ | Standard | Conditional expressions documentation |
AND /OR |
✓ | Standard | Conditional expressions documentation |
LIKE /ILIKE |
✓ | Standard | String pattern matching documentation |
SIMILAR TO |
✓ | Standard | SQL regexp pattern matching documentation |
Matching using POSIX regular expressions | ✓ | Common Extension | POSIX regexp pattern matching documentation |
EXISTS |
Partial | Standard | Non-correlated subqueries are supported, as are most correlated subqueries. Works only with small data sets. |
Scalar subqueries | Partial | Standard | Non-correlated subqueries are supported, as are most correlated subqueries. Works only with small data sets. |
Bitwise arithmetic | ✓ | Common Extension | Operators documentation |
Array constructors and subscripting | Partial | PostgreSQL Extension | Array expression documentation: Constructor syntax and Subscripting |
COLLATE |
✓ | Standard | Collation expressions documentation |
Column ordinal references | ✓ | CockroachDB Extension | Column references documentation |
Type annotations | ✓ | CockroachDB Extension | Type annotations documentation |
Permissions
Component | Supported | Type | Details |
---|---|---|---|
Users | ✓ | Standard | Users documentation |
Roles | ✓ | Standard | Roles documentation |
Object ownership | ✓ | Common Extension | Ownership documentation |
Privileges | ✓ | Standard | Privileges documentation |
Default privileges | ✓ | PostgreSQL Extension | Default privileges documentation |
Miscellaneous
Component | Supported | Type | Details |
---|---|---|---|
Column families | ✓ | CockroachDB Extension | Column Families documentation |
Computed columns (stored and virtual) | ✓ | Common Extension | Computed Columns documentation |
ON UPDATE expressions |
✓ | MySQL Extension | ON UPDATE expressions documentation |
Multi-region capabilities | ✓ | CockroachDB Extension | Multi-region documentation |
System catalog schemas | ✓ | Standard, PostgreSQL/CockroachDB Extension | crdb_internal (CockroachDB Extension)information_schema (Standard)pg_catalog (PostgreSQL Extension)pg_extension (PostgreSQL Extension) |
Sequences | ✓ | Common Extension | CREATE SEQUENCE documentation |
Identity columns | ✓ | Common Extension | Identity columns documentation |
Views | ✓ | Standard | Views documentation |
Materialized views | ✓ | Common Extension | Materialized views documentation |
Window functions | ✓ | Standard | Window Functions documentation |
Common table expressions | Partial | Common Extension | Common Table Expressions documentation |
Stored procedures | Partial | Common Extension | Stored procedures documentation |
Cursors | Partial | Standard | Cursors documentation |
Triggers | Partial | Standard | Triggers documentation |
Row-level TTL | ✓ | Common Extension | Automatically delete expired rows. For more information, see Batch-delete expired data with Row-Level TTL. |
User-defined functions | Partial | Standard | User-Defined Functions documentation |
CREATE EXTENSION "uuid-ossp" |
✓ | Common Extension | Provides access to several additional UUID generation functions. Note that these UUID functions are available without typing CREATE EXTENSION "uuid-ossp" . CockroachDB does not have full support for CREATE EXTENSION . GitHub issue tracking CREATE EXTENSION support. |