SQL standard compliance
This section provides a list of features that CrateDB supports and to what extent it conforms to the current SQL standard ISO/IEC 9075 “Database Language SQL”.
This list is approximate and features that are listed as supported might be nonconforming in their implementation. However, the main reference documentation of CrateDB always contains the most accurate information about what CrateDB supports, what they are and how to use them.
ID | Package | # | Description | Comments |
---|---|---|---|---|
E011 | Numeric data types | 1 | INTEGER and SMALLINT data types | |
E011 | Numeric data types | 2 | REAL, DOUBLE PRECISION, and FLOAT data types | |
E011 | Numeric data types | 3 | DECIMAL and NUMERIC data types | Not supported in DDL |
E011 | Numeric data types | 4 | Arithmetic operators | |
E011 | Numeric data types | 5 | Numeric comparison | |
E011 | Numeric data types | 6 | Implicit casting among the numeric data types | |
E021 | Character string types | 2 | CHARACTER VARYING data type | |
E021 | Character string types | 3 | Character literals | Only simple ‘ quoting |
E021 | Character string types | 4 | CHARACTER_LENGTH function | char_length only |
E021 | Character string types | 5 | OCTET_LENGTH function | |
E021 | Character string types | 7 | Character concatenation | |
E021 | Character string types | 8 | UPPER and LOWER functions | |
E021 | Character string types | 9 | TRIM function | |
E021 | Character string types | 10 | Implicit casting among the character string types | just one type |
E021 | Character string types | 12 | Character comparison | |
E031 | Identifiers | |||
E031 | Identifiers | 1 | Delimited identifiers | |
E031 | Identifiers | 2 | Lower case identifiers | |
E031 | Identifiers | 3 | Trailing underscore | |
E051 | Basic query specification | 1 | SELECT DISTINCT | |
E051 | Basic query specification | 2 | GROUP BY clause | |
E051 | Basic query specification | 4 | GROUP BY can contain columns not in <select list> | |
E051 | Basic query specification | 5 | Select list items can be renamed | |
E051 | Basic query specification | 6 | HAVING clause | |
E051 | Basic query specification | 7 | Qualified * in select list | |
E051 | Basic query specification | 8 | Correlation names in the FROM clause | |
E051 | Basic query specification | 9 | Rename columns in the FROM clause | |
E061 | Basic predicates and search conditions | 1 | Comparison predicate | |
E061 | Basic predicates and search conditions | 2 | BETWEEN predicate | |
E061 | Basic predicates and search conditions | 3 | IN predicate with list of values | |
E061 | Basic predicates and search conditions | 4 | LIKE predicate | |
E061 | Basic predicates and search conditions | 6 | NULL predicate | |
E061 | Basic predicates and search conditions | 9 | Subqueries in comparison predicate | |
E061 | Basic predicates and search conditions | 11 | Subqueries in IN predicate | |
E061 | Basic predicates and search conditions | 12 | Subqueries in quantified comparison predicate | |
E061 | Basic predicates and search conditions | 14 | Search condition | |
E071 | Basic query expressions | 2 | UNION ALL table operator | |
E081 | Basic Privileges | |||
E081 | Basic Privileges | 1 | SELECT privilege | |
E081 | Basic Privileges | 2 | DELETE privilege | |
E091 | Set functions | 1 | AVG | |
E091 | Set functions | 2 | COUNT | |
E091 | Set functions | 3 | MAX | |
E091 | Set functions | 4 | MIN | |
E091 | Set functions | 5 | SUM | |
E091 | Set functions | 7 | DISTINCT quantifier | |
E101 | Basic data manipulation | |||
E101 | Basic data manipulation | 1 | INSERT statement | |
E101 | Basic data manipulation | 3 | Searched UPDATE statement | |
E101 | Basic data manipulation | 4 | Searched DELETE statement | |
E131 | Null value support (nulls in lieu of values) | |||
E141 | Basic integrity constraints | 1 | NOT NULL constraints | |
E141 | Basic integrity constraints | 3 | PRIMARY KEY constraints | |
E141 | Basic integrity constraints | 6 | CHECK constraints | |
E141 | Basic integrity constraints | 7 | Column defaults | |
E141 | Basic integrity constraints | 8 | NOT NULL inferred on PRIMARY KEY | |
E151 | Transaction support | 1 | COMMIT statement | |
E152 | Basic SET TRANSACTION statement | |||
E152 | Basic SET TRANSACTION statement | 1 | SET TRANSACTION statement: ISOLATION LEVEL SERIALIZABLE clause | Is ignored |
E152 | Basic SET TRANSACTION statement | 2 | SET TRANSACTION statement: READ ONLY and READ WRITE clauses | Is ignored |
E161 | SQL comments using leading double minus | |||
F021 | Basic information schema | 1 | COLUMNS view | |
F021 | Basic information schema | 2 | TABLES view | |
F021 | Basic information schema | 3 | VIEWS view | |
F021 | Basic information schema | 4 | TABLE_CONSTRAINTS view | |
F021 | Basic information schema | 5 | REFERENTIAL_CONSTRAINTS view | |
F021 | Basic information schema | 6 | CHECK_CONSTRAINTS view | |
F031 | Basic schema manipulation | 1 | CREATE TABLE statement to create persistent base tables | |
F031 | Basic schema manipulation | 2 | CREATE VIEW statement | |
F031 | Basic schema manipulation | 3 | GRANT statement | |
F031 | Basic schema manipulation | 4 | ALTER TABLE statement: ADD COLUMN clause | |
F034 | Extended REVOKE statement | |||
F034 | Extended REVOKE statement | 1 | REVOKE statement performed by other than the owner of a schema object | |
F041 | Basic joined table | 1 | Inner join (but not necessarily the INNER keyword) | |
F041 | Basic joined table | 2 | INNER keyword | |
F041 | Basic joined table | 3 | LEFT OUTER JOIN | |
F041 | Basic joined table | 4 | RIGHT OUTER JOIN | |
F041 | Basic joined table | 5 | Outer joins can be nested | |
F041 | Basic joined table | 7 | The inner table in a left or right outer join can also be used in an inner join | |
F041 | Basic joined table | 8 | All comparison operators are supported (rather than just =) | |
F051 | Basic date and time | 1 | DATE data type (including support of DATE literal) | |
F051 | Basic date and time | 3 | TIMESTAMP data type (including support of TIMESTAMP literal) with fractional seconds precision of at least 0 and 6 | |
F051 | Basic date and time | 4 | Comparison predicate on DATE, TIME, and TIMESTAMP data types | |
F051 | Basic date and time | 5 | Explicit CAST between datetime types and character string types | |
F051 | Basic date and time | 6 | CURRENT_DATE | |
F052 | Intervals and datetime arithmetic | |||
F111 | Isolation levels other than SERIALIZABLE | |||
F111 | Isolation levels other than SERIALIZABLE | 1 | READ UNCOMMITTED isolation level | Is ignored |
F111 | Isolation levels other than SERIALIZABLE | 2 | READ COMMITTED isolation level | Is ignored |
F111 | Isolation levels other than SERIALIZABLE | 3 | REPEATABLE READ isolation level | Is ignored |
F131 | Grouped operations | 1 | WHERE, GROUP BY, and HAVING clauses supported in queries with grouped views | |
F131 | Grouped operations | 3 | Set functions supported in queries with grouped views | |
F171 | Multiple schemas per user | |||
F201 | CAST function | |||
F221 | Explicit defaults | |||
F222 | INSERT statement: DEFAULT VALUES clause | |||
F261 | CASE expression | |||
F261 | CASE expression | 1 | Simple CASE | |
F261 | CASE expression | 2 | Searched CASE | |
F261 | CASE expression | 3 | NULLIF | |
F261 | CASE expression | 4 | COALESCE | |
F262 | Extended CASE expression | |||
F311 | Schema definition statement | 2 | CREATE TABLE for persistent base tables | |
F391 | Long identifiers | |||
F401 | Extended joined table | 2 | FULL OUTER JOIN | |
F401 | Extended joined table | 4 | CROSS JOIN | |
F471 | Scalar subquery values | |||
F481 | Expanded NULL predicate | |||
F501 | Features and conformance views | 1 | SQL_FEATURES view | |
F571 | Truth value tests | |||
F763 | CURRENT_SCHEMA | |||
F850 | Top-level <order by clause> in <query expression> | |||
F851 | <order by clause> in subqueries | |||
F855 | Nested <order by clause> in <query expression> | |||
S091 | Basic array support | special syntax | ||
S091 | Basic array support | 1 | Arrays of built-in data types | special syntax |
S098 | ARRAY_AGG | |||
T031 | BOOLEAN data type | |||
T051 | Row types | Limited to built-in table functions | ||
T071 | BIGINT data type | |||
T175 | Generated columns | |||
T321 | Basic SQL-invoked routines | 1 | User-defined functions with no overloading | |
T321 | Basic SQL-invoked routines | 3 | Function invocation | |
T321 | Basic SQL-invoked routines | 6 | ROUTINES view | |
T441 | ABS and MOD functions | |||
T461 | Symmetric BETWEEN predicate | |||
T471 | Result sets return value | |||
T615 | LEAD and LAG functions | |||
T617 | FIRST_VALUE and LAST_VALUE function | |||
T618 | NTH_VALUE function | |||
T631 | IN predicate with one list element |