GridGain Developers Hub

SQL Conformance

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

Feature ID Feature Name Subfeature ID Subfeature Name Supported Limitations

E011

Numeric data types

E011

Yes

E011

Numeric data types

E011-01

INTEGER and SMALLINT data types

Yes

E011

Numeric data types

E011-02

REAL, DOUBLE PRECISION, and FLOAT data types

Yes

E011

Numeric data types

E011-03

DECIMAL and NUMERIC data types

Yes

DEC and NUMERIC types are not supported

E011

Numeric data types

E011-04

Arithmetic operators

Yes

E011

Numeric data types

E011-05

Numeric comparison

Yes

E011

Numeric data types

E011-06

Implicit casting among the numeric data types

Yes

E021

Character data types

E021

Yes

CHARACTER type cannot be used in table definition

E021

Character string types

E021-01

CHARACTER data type

Yes

E021

Character string types

E021-02

CHARACTER VARYING data type

Yes

E021

Character string types

E021-03

Character literals

Yes

E021

Character string types

E021-04

CHARACTER_LENGTH function

Yes

E021

Character string types

E021-05

OCTET_LENGTH function

Yes

E021

Character string types

E021-06

SUBSTRING function

Yes

E021

Character string types

E021-07

Character concatenation

Yes

E021

Character string types

E021-08

UPPER and LOWER functions

Yes

E021

Character string types

E021-09

TRIM function

Yes

E021

Character string types

E021-10

Implicit casting among the character string types

Yes

E021

Character string types

E021-11

POSITION function

Yes

E021

Character string types

E021-12

Character comparison

Yes

E031

Identifiers

E031

Yes

E031

Identifiers

E031-01

Delimited identifiers

Yes

E031

Identifiers

E031-02

Lower case identifiers

Yes

E031

Identifiers

E031-03

Trailing underscore

Yes

E051

Basic query specification

E051

Yes

E051

Basic query specification

E051-01

SELECT DISTINCT

Yes

E051

Basic query specification

E051-02

GROUP BY clause

Yes

Supports GROUPING SETS. ROLLUP and CUBE are not supported

E051

Basic query specification

E051-04

GROUP BY can contain columns not in <select list>

Yes

E051

Basic query specification

E051-05

Select list items can be renamed

Yes

E051

Basic query specification

E051-06

HAVING clause

Yes

E051

Basic query specification

E051-07

Qualified * in select list

Yes

E051

Basic query specification

E051-08

Correlation names in the FROM clause

Yes

E051

Basic query specification

E051-09

Rename columns in the FROM clause

Yes

E061

Basic predicates and search conditions

E061

Yes

E061

Basic predicates and search conditions

E061-01

Comparison predicate

Yes

E061

Basic predicates and search conditions

E061-02

BETWEEN predicate

Yes

E061

Basic predicates and search conditions

E061-03

IN predicate with list of values

Yes

E061

Basic predicates and search conditions

E061-04

LIKE predicate

Yes

E061

Basic predicates and search conditions

E061-05

LIKE predicate ESCAPE clause

Yes

E061

Basic predicates and search conditions

E061-06

NULL predicate

Yes

E061

Basic predicates and search conditions

E061-07

Quantified comparison predicate

Yes

E061

Basic predicates and search conditions

E061-08

EXISTS predicate

Yes

E061

Basic predicates and search conditions

E061-09

Subqueries in comparison predicate

Yes

E061

Basic predicates and search conditions

E061-11

Subqueries in IN predicate

Yes

E061

Basic predicates and search conditions

E061-12

Subqueries in quantified comparison predicate

Yes

E061

Basic predicates and search conditions

E061-13

Correlated subqueries

Yes

E061

Basic predicates and search conditions

E061-14

Search condition

Yes

E071

Basic query expressions

E071

Yes

E071

Basic query expressions

E071-01

UNION DISTINCT table operator

Yes

E071

Basic query expressions

E071-02

UNION ALL table operator

Yes

E071

Basic query expressions

E071-03

EXCEPT DISTINCT table operator

Yes

E071

Basic query expressions

E071-05

Columns combined via table operators need not have exactly the same data type

Yes

E071

Basic query expressions

E071-06

Table operators in subqueries

Yes

E081

Basic Privileges

E081

No

E081

Basic Privileges

E081-01

SELECT privilege

No

E081

Basic Privileges

E081-02

DELETE privilege

No

E081

Basic Privileges

E081-03

INSERT privilege at the table level

No

E081

Basic Privileges

E081-04

UPDATE privilege at the table level

No

E091

Set functions

E091

Yes

E091

Set functions

E091-01

AVG

Yes

E091

Set functions

E091-02

COUNT

Yes

E091

Set functions

E091-03

MAX

Yes

E091

Set functions

E091-04

MIN

Yes

E091

Set functions

E091-05

SUM

Yes

E091

Set functions

E091-06

ALL quantifier

Yes

E091

Set functions

E091-07

DISTINCT quantifier

Yes

E101

Basic data manipulation

E101

Yes

E101

Basic data manipulation

E101-01

INSERT statement

Yes

E101

Basic data manipulation

E101-03

Searched UPDATE statement

Yes

E101

Basic data manipulation

E101-04

Searched DELETE statement

Yes

E111

Single row SELECT statement

E111

Yes

E131

Null value support (nulls in lieu of values)

E131

Yes

E141

Basic integrity constraints

E141

Partially

NOT NULL and PRIMARY KEY constraints.

E141

Basic integrity constraints

E141-01

NOT NULL constraints

Yes

E141

Basic integrity constraints

E141-03

PRIMARY KEY constraints

Yes

E141

Basic integrity constraints

E141-07

Column defaults

Partially

Ignite: Only literals, RAND_UUID function. Gridgain: literals, RAND_UUID function, CURRENT_TIMESTAMP + INTERVAL literal

E141

Basic integrity constraints

E141-08

NOT NULL inferred on PRIMARY KEY

Yes

E151

Transaction support

E151

Partially

E151

Transaction support

E151-01

COMMIT statement

Partially

Only in SQL scripts. No options.

E151

Transaction support

E151-02

ROLLBACK statement

Partially

Only in SQL scripts. No options. Savepoints are not supported

E153

Updatable queries with subqueries

E153

Yes

E161

SQL comments using leading double minus

E161

Yes

E171

SQLSTATE support

E171

No

F031

Basic schema manipulation

F031

Partially

CREATE TABLE, ALTER TABLE, DROP TABLE

F031

Basic schema manipulation

F031-01

CREATE TABLE statement to create persistent base tables

Partially

CREATE TABLE must always specify primary key

F031

Basic schema manipulation

F031-03

GRANT statement

No

F031

Basic schema manipulation

F031-04

ALTER TABLE statement: ADD COLUMN clause

Yes

F033

ALTER TABLE statement: DROP COLUMN clause

F033

Partially

DROP behaviour is not supported

F041

Basic joined table

F041

Yes

F041

Basic joined table

F041-01

Inner join (but not necessarily the INNER keyword)

Yes

F041

Basic joined table

F041-02

INNER keyword

Yes

F041

Basic joined table

F041-03

LEFT OUTER JOIN

Yes

F041

Basic joined table

F041-04

RIGHT OUTER JOIN

Yes

F041

Basic joined table

F041-05

Outer joins can be nested

Yes

F041

Basic joined table

F041-07

The inner table in a left or right outer join can also be used in an inner join

Yes

F041

Basic joined table

F041-08

All comparison operators are supported (rather than just =)

Yes

F051

Basic date and time

F051

Yes

F051

Basic date and time

F051-01

DATE data type (including support of DATE literal)

Yes

F051

Basic date and time

F051-02

TIME data type (including support of TIME literal) with fractional seconds precision of at least 0

Partially

TIME WITH TIME ZONE type is not supported. Does not support sub-ms precision

F051

Basic date and time

F051-03

TIMESTAMP data type (including support of TIMESTAMP literal) with fractional seconds precision of at least 0 and 6

Partially

TIMESTAMP WITH TIME ZONE is not supported. Does not support sub-ms precision

F051

Basic date and time

F051-04

Comparison predicate on DATE, TIME, and TIMESTAMP data types

Yes

F051

Basic date and time

F051-05

Explicit CAST between datetime types and character string types

Yes

F051

Basic date and time

F051-06

CURRENT_DATE

Yes

F051

Basic date and time

F051-07

LOCALTIME

Yes

F051

Basic date and time

F051-08

LOCALTIMESTAMP

Yes

F052

Intervals and datetime arithmetic

F052

Yes

F171

Multiple schemas per user

F171

Yes

F201

CAST function

F201

Yes

F221

Explicit defaults

F221

Yes

F261

CASE expression

F261

Yes

F261

CASE expression

F261-01

Simple CASE

Yes

F261

CASE expression

F261-02

Searched CASE

Yes

F261

CASE expression

F261-03

NULLIF

Yes

F261

CASE expression

F261-04

COALESCE

Yes

F302

INTERSECT table operator

F302

Yes

F302

INTERSECT table operator

F302-01

INTERSECT DISTINCT table operator

Yes

F302

INTERSECT table operator

F302-02

INTERSECT ALL table operator

Yes

F304

EXCEPT ALL table operator

F304

Yes

F311

Schema definition statement

F311

Partially

F311

Schema definition statement

F311-01

CREATE SCHEMA

Yes

Schema elements are not supported

F381

Extended schema manipulation

F381-01

ALTER TABLE statement: ALTER COLUMN clause

Partially

Default can not be set to non-constant in most cases. See DDL docs

F391

Long identifiers

F391

Yes

Up to 128 characters

F392

Unicode escapes in identifiers

F392

Partially

Partial support of unicode escapes

F401

Extended joined table

F401

Yes

F401

Extended joined table

F401-01

NATURAL JOIN

Yes

F401

Extended joined table

F401-02

FULL OUTER JOIN

Yes

F401

Extended joined table

F401-04

CROSS JOIN

Yes

F404

Range variable for common column names

F404

Yes

F411

Time zone specification

F411

Yes

F471

Scalar subquery values

F471

Yes

F561

Full value expressions

F561

Yes

F571

Truth value tests

F571

Partially

UNKNOWN is not supported

F591

Derived tables

F591

Yes

F661

Simple tables

F661

Yes

F781

Self-referencing operations

F781

Yes

F850

Top-level <order by clause> in <query expression>

F850

Yes

F851

<order by clause> in subqueries

F851

Yes

F855

Nested <order by clause> in <query expression>

F855

Yes

F861

Top-level <result offset clause> in <query expression>

F861

Yes

F862

<result offset clause> in subqueries

F862

Yes

F863

Nested <result offset clause> in <query expression>

F863

Yes

T021

BINARY and VARBINARY data types

T021

Yes

BINARY type cannot be used in table definition

T031

BOOLEAN data type

T031

Yes

T071

BIGINT data type

T071

Yes

T121

WITH (excluding RECURSIVE) in query expression

T121

Yes

T122

WITH (excluding RECURSIVE) in subquery

T122

Yes

T141

SIMILAR predicate

T141

Yes

T151

DISTINCT predicate

T151

Yes

T152

DISTINCT predicate with negation

T152

Yes

T285

Enhanced derived column names

T285

Yes

T312

OVERLAY function

T312

Yes

T351

Bracketed SQL comments (/…​/ comments)

T351

Yes

T434

GROUP BY DISTINCT

T434

Yes

T441

ABS and MOD functions

T441

Yes

T501

Enhanced EXISTS predicate

T501

Yes

T551

Optional key words for default syntax

T551

Yes

T621

Enhanced numeric functions

T621

Yes

T622

Trigonometric functions

T622

Yes

T623

General logarithm functions

T623

Yes

T624

Common logarithm functions

T624

Yes

T631

IN predicate with one list element

T631

Yes

T828

JSON_QUERY

T828

Yes

T829

JSON_QUERY: array wrapper options

T829

Yes

T839

Formatted cast of datetimes to/from character strings

T839

Yes

Proposed Alternatives for Unsupported Features

GridGain provides alternative solutions for some unsupported features, listed below:

Feature ID Feature Name Subfeature ID Subfeature Name Alternative

E081

Basic Privileges

E081

RBAC statements

E081

Basic Privileges

E081-01

SELECT privilege

RBAC statements

E081

Basic Privileges

E081-02

DELETE privilege

RBAC statements

E081

Basic Privileges

E081-03

INSERT privilege at the table level

RBAC statements

E081

Basic Privileges

E081-04

UPDATE privilege at the table level

RBAC statements

E171

SQLSTATE support

E171

JDBC error codes, ODBC error codes

F031

Basic schema manipulation

F031-03

GRANT statement

RBAC statements