Skip to main content
Version: 3.0.0

SQL Conformance

Apache Ignite supports most of the major features of ANSI SQL 2016 standard out-of-the-box. The following table shows Apache Ignite compliance to the aforementioned standard.

Feature IDFeature NameSubfeature IDSubfeature NameSupportedLimitations
E011Numeric data typesE011Yes
E011Numeric data typesE011-01INTEGER and SMALLINT data typesYes
E011Numeric data typesE011-02REAL, DOUBLE PRECISION, and FLOAT data typesYes
E011Numeric data typesE011-03DECIMAL and NUMERIC data typesYesDEC and NUMERIC types are not supported
E011Numeric data typesE011-04Arithmetic operatorsYes
E011Numeric data typesE011-05Numeric comparisonYes
E011Numeric data typesE011-06Implicit casting among the numeric data typesYes
E021Character data typesE021YesCHARACTER type cannot be used in table definition
E021Character string typesE021-01CHARACTER data typeYes
E021Character string typesE021-02CHARACTER VARYING data typeYes
E021Character string typesE021-03Character literalsYes
E021Character string typesE021-04CHARACTER_LENGTH functionYes
E021Character string typesE021-05OCTET_LENGTH functionYes
E021Character string typesE021-06SUBSTRING functionYes
E021Character string typesE021-07Character concatenationYes
E021Character string typesE021-08UPPER and LOWER functionsYes
E021Character string typesE021-09TRIM functionYes
E021Character string typesE021-10Implicit casting among the character string typesYes
E021Character string typesE021-11POSITION functionYes
E021Character string typesE021-12Character comparisonYes
E031IdentifiersE031Yes
E031IdentifiersE031-01Delimited identifiersYes
E031IdentifiersE031-02Lower case identifiersYes
E031IdentifiersE031-03Trailing underscoreYes
E051Basic query specificationE051Yes
E051Basic query specificationE051-01SELECT DISTINCTYes
E051Basic query specificationE051-02GROUP BY clauseYesSupports GROUPING SETS. ROLLUP and CUBE are not supported
E051Basic query specificationE051-04GROUP BY can contain columns not in select listYes
E051Basic query specificationE051-05Select list items can be renamedYes
E051Basic query specificationE051-06HAVING clauseYes
E051Basic query specificationE051-07Qualified * in select listYes
E051Basic query specificationE051-08Correlation names in the FROM clauseYes
E051Basic query specificationE051-09Rename columns in the FROM clauseYes
E061Basic predicates and search conditionsE061Yes
E061Basic predicates and search conditionsE061-01Comparison predicateYes
E061Basic predicates and search conditionsE061-02BETWEEN predicateYes
E061Basic predicates and search conditionsE061-03IN predicate with list of valuesYes
E061Basic predicates and search conditionsE061-04LIKE predicateYes
E061Basic predicates and search conditionsE061-05LIKE predicate ESCAPE clauseYes
E061Basic predicates and search conditionsE061-06NULL predicateYes
E061Basic predicates and search conditionsE061-07Quantified comparison predicateYes
E061Basic predicates and search conditionsE061-08EXISTS predicateYes
E061Basic predicates and search conditionsE061-09Subqueries in comparison predicateYes
E061Basic predicates and search conditionsE061-11Subqueries in IN predicateYes
E061Basic predicates and search conditionsE061-12Subqueries in quantified comparison predicateYes
E061Basic predicates and search conditionsE061-13Correlated subqueriesYes
E061Basic predicates and search conditionsE061-14Search conditionYes
E071Basic query expressionsE071Yes
E071Basic query expressionsE071-01UNION DISTINCT table operatorYes
E071Basic query expressionsE071-02UNION ALL table operatorYes
E071Basic query expressionsE071-03EXCEPT DISTINCT table operatorYes
E071Basic query expressionsE071-05Columns combined via table operators need not have exactly the same data typeYes
E071Basic query expressionsE071-06Table operators in subqueriesYes
E081Basic PrivilegesE081No
E081Basic PrivilegesE081-01SELECT privilegeNo
E081Basic PrivilegesE081-02DELETE privilegeNo
E081Basic PrivilegesE081-03INSERT privilege at the table levelNo
E081Basic PrivilegesE081-04UPDATE privilege at the table levelNo
E091Set functionsE091Yes
E091Set functionsE091-01AVGYes
E091Set functionsE091-02COUNTYes
E091Set functionsE091-03MAXYes
E091Set functionsE091-04MINYes
E091Set functionsE091-05SUMYes
E091Set functionsE091-06ALL quantifierYes
E091Set functionsE091-07DISTINCT quantifierYes
E101Basic data manipulationE101Yes
E101Basic data manipulationE101-01INSERT statementYes
E101Basic data manipulationE101-03Searched UPDATE statementYes
E101Basic data manipulationE101-04Searched DELETE statementYes
E111Single row SELECT statementE111Yes
E131Null value support (nulls in lieu of values)E131Yes
E141Basic integrity constraintsE141PartiallyNOT NULL and PRIMARY KEY constraints.
E141Basic integrity constraintsE141-01NOT NULL constraintsYes
E141Basic integrity constraintsE141-03PRIMARY KEY constraintsYes
E141Basic integrity constraintsE141-07Column defaultsPartiallyOnly literals and RAND_UUID function
E141Basic integrity constraintsE141-08NOT NULL inferred on PRIMARY KEYYes
E151Transaction supportE151Partially
E151Transaction supportE151-01COMMIT statementPartiallyOnly in SQL scripts. No options.
E151Transaction supportE151-02ROLLBACK statementPartiallyOnly in SQL scripts. No options. Savepoints are not supported
E153Updatable queries with subqueriesE153Yes
E161SQL comments using leading double minusE161Yes
E171SQLSTATE supportE171No
F031Basic schema manipulationF031PartiallyCREATE TABLE, ALTER TABLE, DROP TABLE
F031Basic schema manipulationF031-01CREATE TABLE statement to create persistent base tablesPartiallyCREATE TABLE must always specify primary key
F031Basic schema manipulationF031-03GRANT statementNo
F031Basic schema manipulationF031-04ALTER TABLE statement: ADD COLUMN clauseYes
F033ALTER TABLE statement: DROP COLUMN clauseF033PartiallyDROP behaviour is not supported
F041Basic joined tableF041Yes
F041Basic joined tableF041-01Inner join (but not necessarily the INNER keyword)Yes
F041Basic joined tableF041-02INNER keywordYes
F041Basic joined tableF041-03LEFT OUTER JOINYes
F041Basic joined tableF041-04RIGHT OUTER JOINYes
F041Basic joined tableF041-05Outer joins can be nestedYes
F041Basic joined tableF041-07The inner table in a left or right outer join can also be used in an inner joinYes
F041Basic joined tableF041-08All comparison operators are supported (rather than just =)Yes
F051Basic date and timeF051Yes
F051Basic date and timeF051-01DATE data type (including support of DATE literal)Yes
F051Basic date and timeF051-02TIME data type (including support of TIME literal) with fractional seconds precision of at least 0PartiallyTIME WITH TIME ZONE type is not supported. Does not support sub-ms precision
F051Basic date and timeF051-03TIMESTAMP data type (including support of TIMESTAMP literal) with fractional seconds precision of at least 0 and 6PartiallyTIMESTAMP WITH TIME ZONE is not supported. Does not support sub-ms precision
F051Basic date and timeF051-04Comparison predicate on DATE, TIME, and TIMESTAMP data typesYes
F051Basic date and timeF051-05Explicit CAST between datetime types and character string typesYes
F051Basic date and timeF051-06CURRENT_DATEYes
F051Basic date and timeF051-07LOCALTIMEYes
F051Basic date and timeF051-08LOCALTIMESTAMPYes
F052Intervals and datetime arithmeticF052Yes
F171Multiple schemas per userF171Yes
F201CAST functionF201Yes
F221Explicit defaultsF221Yes
F261CASE expressionF261Yes
F261CASE expressionF261-01Simple CASEYes
F261CASE expressionF261-02Searched CASEYes
F261CASE expressionF261-03NULLIFYes
F261CASE expressionF261-04COALESCEYes
F302INTERSECT table operatorF302Yes
F302INTERSECT table operatorF302-01INTERSECT DISTINCT table operatorYes
F302INTERSECT table operatorF302-02INTERSECT ALL table operatorYes
F304EXCEPT ALL table operatorF304Yes
F311Schema definition statementF311Partially
F311Schema definition statementF311-01CREATE SCHEMAYesSchema elements are not supported
F381Extended schema manipulationF381-01ALTER TABLE statement: ALTER COLUMN clausePartiallyDefault can not be set to non-constant in most cases. See DDL docs
F391Long identifiersF391YesUp to 128 characters
F392Unicode escapes in identifiersF392PartiallyPartial support of unicode escapes
F401Extended joined tableF401Yes
F401Extended joined tableF401-01NATURAL JOINYes
F401Extended joined tableF401-02FULL OUTER JOINYes
F401Extended joined tableF401-04CROSS JOINYes
F404Range variable for common column namesF404Yes
F411Time zone specificationF411Yes
F471Scalar subquery valuesF471Yes
F561Full value expressionsF561Yes
F571Truth value testsF571PartiallyUNKNOWN is not supported
F591Derived tablesF591Yes
F661Simple tablesF661Yes
F781Self-referencing operationsF781Yes
F850Top-level order by clause in query expressionF850Yes
F851order by clause in subqueriesF851Yes
F855Nested order by clause in query expressionF855Yes
F861Top-level result offset clause in query expressionF861Yes
F862result offset clause in subqueriesF862Yes
F863Nested result offset clause in query expressionF863Yes
T021BINARY and VARBINARY data typesT021YesBINARY type cannot be used in table definition
T031BOOLEAN data typeT031Yes
T071BIGINT data typeT071Yes
T121WITH (excluding RECURSIVE) in query expressionT121Yes
T122WITH (excluding RECURSIVE) in subqueryT122Yes
T141SIMILAR predicateT141Yes
T151DISTINCT predicateT151Yes
T152DISTINCT predicate with negationT152Yes
T285Enhanced derived column namesT285Yes
T312OVERLAY functionT312Yes
T351Bracketed SQL comments (/.../ comments)T351Yes
T434GROUP BY DISTINCTT434Yes
T441ABS and MOD functionsT441Yes
T501Enhanced EXISTS predicateT501Yes
T551Optional key words for default syntaxT551Yes
T621Enhanced numeric functionsT621Yes
T622Trigonometric functionsT622Yes
T623General logarithm functionsT623Yes
T624Common logarithm functionsT624Yes
T631IN predicate with one list elementT631Yes
T828JSON_QUERYT828Yes
T829JSON_QUERY: array wrapper optionsT829Yes
T839Formatted cast of datetimes to/from character stringsT839Yes

Proposed Alternatives for Unsupported Features

Apache Ignite provides alternative solutions for some unsupported features, listed below:

Feature IDFeature NameSubfeature IDSubfeature NameAlternative
E171SQLSTATE supportE171JDBC error codes, ODBC error codes