Appendix A SQL Features

The table below illustrates the features supported (S) and not supported (N) in the MonetDB/SQL distribution. Beware, some of the features are technically impossible to support without major code changes or excessive performance consequences.

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