Compliance to SQL Standard

This article lists the mandatory and optional features of the SQL standard that are supported by Exasol.

SQL:2023 mandatory features

The following table lists all mandatory features in the SQL standard ISO/IEC 9075:2023 that are fully and partially supported in Exasol.

Feature Support in Exasol
FULL PARTIAL
E011 Numeric data types  
E011-01 INTEGER and SMALLINT data types  
E011-02 REAL, DOUBLE PRECISION, and FLOAT data types  
E011-03 DECIMAL and NUMERIC data types  
E011-04 Arithmetic operators  
E011-05 Numeric comparison  
E011-06 Implicit casting among numeric data types  
E021 Character string types  
E021-01 CHARACTER data type  
E021-02 CHARACTER VARYING data type  
E021-03 Character literals  
E021-04 CHARACTER_LENGTH function  
E021-05 OCTET_LENGTH function  
E021-06 SUBSTRING function  
E021-07 Character concatenation  
E021-08 UPPER and LOWER function  
E021-09 TRIM function  
E021-10 Implicit casting among fixed-length and variable-length character string types  
E021-11 POSITION function  
E021-12 Character comparison  
E031 Identifiers  
E031-01 Delimited identifiers  
E031-02 lower-case identifiers  
E031-03 Trailing underscore  
E051 Basic query specification  
E051-01 SELECT DISTINCT  
E051-02 GROUP BY clause  
E051-04 GROUP BY can contain columns not in <select list>.  
E051-05 Select list items can be renamed  
E051-06 HAVING clause  
E051-07 Qualified * in select list  
E051-08 Correlation names in the FROM clause  
E051-09 Rename columns in the FROM clause  
E061 Basic predicates and search conditions  
E061-01 Comparison predicate  
E061-02 BETWEEN predicate  
E061-03 IN predicate with list of values  
E061-04 LIKE predicate  
E061-05 LIKE predicate: ESCAPE clause  
E061-06 NULL predicate  
E061-07 Quantified comparison predicate    
E061-08 EXISTS predicate  
E061-09 Subqueries in comparison predicate  
E061-11 Subqueries in IN predicate  
E061-12 Subqueries in quantified comparison predicate    
E061-13 Correlated Subqueries  
E061-14 Search condition  
E071 Basic query expressions  
E071-01 UNION DISTINCT table operator  
E071-02 UNION ALL table operator  
E071-03 EXCEPT DISTINCT table operator  
E071-05 Columns combined via table operators need not have exactly the same data type.  
E071-06 Table operators in subqueries  
E081 Basic privileges  
E081-01 SELECT privilege at the table level  
E081-02 DELETE privilege  
E081-03 INSERT privilege at the table level  
E081-04 UPDATE privilege at the table level  
E081-05 UPDATE privilege at the column level    
E081-06 REFERENCES privilege at the table level  
E081-07 REFERENCES privilege at the column level    
E081-08 WITH GRANT OPTION    
E081-09 USAGE privilege    
E081-10 EXECUTE privilege  
E091 Set functions  
E091-01 AVG  
E091-02 COUNT  
E091-03 MAX  
E091-04 MIN  
E091-05 SUM  
E091-06 ALL quantifier  
E091-07 DISTINCT quantifier  
E101 Basic data manipulation  
E101-01 INSERT statement  
E101-03 Searched UPDATE statement  
E101-04 Searched DELETE statement  
E111 Single row SELECT statement    
E121 Basic cursor support    
E121-01 DECLARE CURSOR    
E121-02 ORDER BY columns need not be in select list    
E121-03 Value expressions in ORDER BY clause    
E121-04 OPEN statement    
E121-06 Positioned UPDATE statement    
E121-07 Positioned DELETE statement    
E121-08 CLOSE statement    
E121-10 FETCH statement: implicit NEXT    
E121-17 WITH HOLD cursors    
E131 Null value support (nulls in lieu of values)  
E141 Basic integrity constraints  
E141-01 NOT NULL constraint  
E141-02 UNIQUE constraints of NOT NULL columns    
E141-03 PRIMARY KEY constraint  
E141-04 Basic FOREIGN KEY constraint with the NO ACTION default for both referential delete action and referential update action  
E141-06 CHECK constraint    
E141-07 Column defaults  
E141-08 NOT NULL inferred on PRIMARY KEY  
E141-10 Names in a foreign key can be specified in any order.    
E151 Transaction support  
E151-01 COMMIT statement  
E151-02 ROLLBACK statement  
E152 Basic SET TRANSACTION statement    
E152-01 SET TRANSACTION statement: ISOLATION LEVEL SERIALIZABLE clause    
E152-02 SET TRANSACTION statement: READ ONLY and READ WRITE clauses    
E153 Updatable queries with subqueries    
E161 SQL comments using leading double minus  
E171 SQLSTATE support    
E182 Module language    
F031 Basic schema manipulation  
F031-01 CREATE TABLE statement to create persistent base tables  
F031-02 CREATE VIEW statement  
F031-03 GRANT statement  
F031-04 ALTER TABLE statement: ADD COLUMN clause  
F031-13 DROP TABLE statement: RESTRICT clause  
F031-16 DROP VIEW statement: RESTRICT clause  
F031-19 REVOKE statement: RESTRICT clause  
F041 Basic joined table  
F041-01 Inner join (but not necessarily the INNER keyword)  
F041-02 INNER keyword  
F041-03 LEFT OUTER JOIN  
F041-04 RIGHT OUTER JOIN  
F041-05 Outer joins can be nested  
F041-07 The inner table in a left or right outer join can also be used in an inner join.  
F041-08 All comparison operators are supported (rather than just =).    
F051 Basic date and time  
F051-01 DATE data type (including support of DATE literal)  
F051-02 TIME data type (including the support of TIME literal) with fractional seconds precision of at least 0.    
F051-03 TIMESTAMP data type (including the support of TIMESTAMP literal) with fractional seconds precision of at least 0 and 6.  
F051-04 Comparison predicate on DATE, TIME, and TIMESTAMP data types  
F051-05 Explicit CAST between datetime types and character string types  
F051-06 CURRENT_DATE  
F051-07 LOCALTIME    
F051-08 LOCALTIMESTAMP  
F081 UNION and EXCEPT in views  
F131 Grouped operations  
F131-01 WHERE, GROUP BY, and HAVING clauses supported in queries with grouped views  
F131-02 Multiple tables supported in queries with grouped views  
F131-03 Set functions supported in queries with grouped views  
F131-04 Subqueries with GROUP BY and HAVING clauses and grouped views  
F131-05 Single row SELECT with GROUP BY and HAVING clauses and grouped views    
F181 Multiple module support  
F201 CAST function  
F221 Explicit defaults  
F261 CASE expression  
F261-01 Simple CASE  
F261-02 Searched CASE  
F261-03 NULLIF  
F261-04 COALESCE  
F311 Schema definition statement  
F311-01 CREATE SCHEMA  
F311-02 CREATE TABLE for persistent base tables (within CREATE SCHEMA)    
F311-03 CREATE VIEW (within CREATE SCHEMA)    
F311-04 CREATE VIEW: WITH CHECK OPTION (within CREATE SCHEMA)    
F311-05 GRANT STATEMENT (within CREATE SCHEMA)    
F471 Scalar subquery values  
F481 Expanded NULL predicate  
S011 Distinct data types    
T321 Basic SQL-invoked routines  
T321-01 User-defined functions with no overloading  
T321-02 User-defined stored procedures with no overloading    
T321-03 Function invocation  
T321-04 CALL statement    
T321-05 RETURN statement  
T631 IN predicate with one list element  

SQL:2023 optional features

The following table lists the optional features in the SQL standard ISO/IEC 9075:2023 that are supported in Exasol.

Feature ID Feature
F033 ALTER TABLE statement: DROP COLUMN clause
F052 Intervals and datetime arithmetic
F171 Multiple schemas per user
F200 TRUNCATE TABLE statement
F222 INSERT statement: DEFAULT VALUES clause
F303 INTERSECT DISTINCT table operator
F312 MERGE statement
F321 User authorization
F381 Extended schema manipulation
F387 ALTER TABLE statement: ALTER COLUMN clause
F388 ALTER TABLE statement: ADD/DROP CONSTRAINT clause
F391 Long identifiers
F406 FULL OUTER JOIN
F407 CROSS JOIN
F555 Enhanced seconds precision
F641 Row and table constructors
F851 ORDER BY in subqueries
F852 Top-level ORDER BY in views
T031 BOOLEAN data type
T121 WITH (excluding RECURSIVE) in query expression
T171 LIKE clause in table definition
T172 AS subquery clause in table definition
T173 Extended LIKE clause in table definition
T174 Identity columns
T331 Basic roles
T351 Bracketed comments (/* ... */ comments)
T431 Extended grouping capabilities
T432 Nested and concatenated GROUPING SETS
T433 Multiargument GROUPING function
T434 GROUP BY DISTINCT
T441 ABS and MOD functions
T461 Symmetric BETWEEN predicate
T551 Optional key words for default syntax
T614 NTILE function
T615 LEAD and LAG functions
T616 Null treatment option for LEAD and LAG functions
T617 FIRST_VALUE and LAST_VALUE functions
T618 NTH_VALUE function
T620 WINDOW clause: GROUPS option
T621 Enhanced numeric functions
T622 Trigonometric functions
T623 General logarithm functions
T624 Common logarithm functions
T625 LISTAGG
T627 Window framed COUNT DISTINCT