mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-08-23 05:20:40 +02:00
This SQL standard functionality allows to aggregate data by different GROUP BY clauses at once. Each grouping set returns rows with columns grouped by in other sets set to NULL. This could previously be achieved by doing each grouping as a separate query, conjoined by UNION ALLs. Besides being considerably more concise, grouping sets will in many cases be faster, requiring only one scan over the underlying data. The current implementation of grouping sets only supports using sorting for input. Individual sets that share a sort order are computed in one pass. If there are sets that don't share a sort order, additional sort & aggregation steps are performed. These additional passes are sourced by the previous sort step; thus avoiding repeated scans of the source data. The code is structured in a way that adding support for purely using hash aggregation or a mix of hashing and sorting is possible. Sorting was chosen to be supported first, as it is the most generic method of implementation. Instead of, as in an earlier versions of the patch, representing the chain of sort and aggregation steps as full blown planner and executor nodes, all but the first sort are performed inside the aggregation node itself. This avoids the need to do some unusual gymnastics to handle having to return aggregated and non-aggregated tuples from underlying nodes, as well as having to shut down underlying nodes early to limit memory usage. The optimizer still builds Sort/Agg node to describe each phase, but they're not part of the plan tree, but instead additional data for the aggregation node. They're a convenient and preexisting way to describe aggregation and sorting. The first (and possibly only) sort step is still performed as a separate execution step. That retains similarity with existing group by plans, makes rescans fairly simple, avoids very deep plans (leading to slow explains) and easily allows to avoid the sorting step if the underlying data is sorted by other means. A somewhat ugly side of this patch is having to deal with a grammar ambiguity between the new CUBE keyword and the cube extension/functions named cube (and rollup). To avoid breaking existing deployments of the cube extension it has not been renamed, neither has cube been made a reserved keyword. Instead precedence hacking is used to make GROUP BY cube(..) refer to the CUBE grouping sets feature, and not the function cube(). To actually group by a function cube(), unlikely as that might be, the function name has to be quoted. Needs a catversion bump because stored rules may change. Author: Andrew Gierth and Atri Sharma, with contributions from Andres Freund Reviewed-By: Andres Freund, Noah Misch, Tom Lane, Svenne Krap, Tomas Vondra, Erik Rijkers, Marti Raudsepp, Pavel Stehule Discussion: CAOeZVidmVRe2jU6aMk_5qkxnB7dfmPROzM7Ur8JPW5j8Y5X-Lw@mail.gmail.com
673 lines
32 KiB
Plaintext
673 lines
32 KiB
Plaintext
B011 Embedded Ada NO
|
|
B012 Embedded C YES
|
|
B013 Embedded COBOL NO
|
|
B014 Embedded Fortran NO
|
|
B015 Embedded MUMPS NO
|
|
B016 Embedded Pascal NO
|
|
B017 Embedded PL/I NO
|
|
B021 Direct SQL YES
|
|
B031 Basic dynamic SQL NO
|
|
B032 Extended dynamic SQL NO
|
|
B032 Extended dynamic SQL 01 <describe input statement> NO
|
|
B033 Untyped SQL-invoked function arguments NO
|
|
B034 Dynamic specification of cursor attributes NO
|
|
B035 Non-extended descriptor names NO
|
|
B041 Extensions to embedded SQL exception declarations NO
|
|
B051 Enhanced execution rights NO
|
|
B111 Module language Ada NO
|
|
B112 Module language C NO
|
|
B113 Module language COBOL NO
|
|
B114 Module language Fortran NO
|
|
B115 Module language MUMPS NO
|
|
B116 Module language Pascal NO
|
|
B117 Module language PL/I NO
|
|
B121 Routine language Ada NO
|
|
B122 Routine language C NO
|
|
B123 Routine language COBOL NO
|
|
B124 Routine language Fortran NO
|
|
B125 Routine language MUMPS NO
|
|
B126 Routine language Pascal NO
|
|
B127 Routine language PL/I NO
|
|
B128 Routine language SQL NO
|
|
B211 Module language Ada: VARCHAR and NUMERIC support NO
|
|
B221 Routine language Ada: VARCHAR and NUMERIC support NO
|
|
E011 Numeric data types YES
|
|
E011 Numeric data types 01 INTEGER and SMALLINT data types YES
|
|
E011 Numeric data types 02 REAL, DOUBLE PRECISION, and FLOAT data types YES
|
|
E011 Numeric data types 03 DECIMAL and NUMERIC data types YES
|
|
E011 Numeric data types 04 Arithmetic operators YES
|
|
E011 Numeric data types 05 Numeric comparison YES
|
|
E011 Numeric data types 06 Implicit casting among the numeric data types YES
|
|
E021 Character data types YES
|
|
E021 Character string types 01 CHARACTER data type YES
|
|
E021 Character string types 02 CHARACTER VARYING data type YES
|
|
E021 Character string types 03 Character literals YES
|
|
E021 Character string types 04 CHARACTER_LENGTH function YES trims trailing spaces from CHARACTER values before counting
|
|
E021 Character string types 05 OCTET_LENGTH function YES
|
|
E021 Character string types 06 SUBSTRING function YES
|
|
E021 Character string types 07 Character concatenation YES
|
|
E021 Character string types 08 UPPER and LOWER functions YES
|
|
E021 Character string types 09 TRIM function YES
|
|
E021 Character string types 10 Implicit casting among the character string types YES
|
|
E021 Character string types 11 POSITION function YES
|
|
E021 Character string types 12 Character comparison YES
|
|
E031 Identifiers YES
|
|
E031 Identifiers 01 Delimited identifiers YES
|
|
E031 Identifiers 02 Lower case identifiers YES
|
|
E031 Identifiers 03 Trailing underscore YES
|
|
E051 Basic query specification YES
|
|
E051 Basic query specification 01 SELECT DISTINCT YES
|
|
E051 Basic query specification 02 GROUP BY clause YES
|
|
E051 Basic query specification 04 GROUP BY can contain columns not in <select list> YES
|
|
E051 Basic query specification 05 Select list items can be renamed YES
|
|
E051 Basic query specification 06 HAVING clause YES
|
|
E051 Basic query specification 07 Qualified * in select list YES
|
|
E051 Basic query specification 08 Correlation names in the FROM clause YES
|
|
E051 Basic query specification 09 Rename columns in the FROM clause YES
|
|
E061 Basic predicates and search conditions YES
|
|
E061 Basic predicates and search conditions 01 Comparison predicate YES
|
|
E061 Basic predicates and search conditions 02 BETWEEN predicate YES
|
|
E061 Basic predicates and search conditions 03 IN predicate with list of values YES
|
|
E061 Basic predicates and search conditions 04 LIKE predicate YES
|
|
E061 Basic predicates and search conditions 05 LIKE predicate ESCAPE clause YES
|
|
E061 Basic predicates and search conditions 06 NULL predicate YES
|
|
E061 Basic predicates and search conditions 07 Quantified comparison predicate YES
|
|
E061 Basic predicates and search conditions 08 EXISTS predicate YES
|
|
E061 Basic predicates and search conditions 09 Subqueries in comparison predicate YES
|
|
E061 Basic predicates and search conditions 11 Subqueries in IN predicate YES
|
|
E061 Basic predicates and search conditions 12 Subqueries in quantified comparison predicate YES
|
|
E061 Basic predicates and search conditions 13 Correlated subqueries YES
|
|
E061 Basic predicates and search conditions 14 Search condition YES
|
|
E071 Basic query expressions YES
|
|
E071 Basic query expressions 01 UNION DISTINCT table operator YES
|
|
E071 Basic query expressions 02 UNION ALL table operator YES
|
|
E071 Basic query expressions 03 EXCEPT DISTINCT table operator YES
|
|
E071 Basic query expressions 05 Columns combined via table operators need not have exactly the same data type YES
|
|
E071 Basic query expressions 06 Table operators in subqueries YES
|
|
E081 Basic Privileges YES
|
|
E081 Basic Privileges 01 SELECT privilege YES
|
|
E081 Basic Privileges 02 DELETE privilege YES
|
|
E081 Basic Privileges 03 INSERT privilege at the table level YES
|
|
E081 Basic Privileges 04 UPDATE privilege at the table level YES
|
|
E081 Basic Privileges 05 UPDATE privilege at the column level YES
|
|
E081 Basic Privileges 06 REFERENCES privilege at the table level YES
|
|
E081 Basic Privileges 07 REFERENCES privilege at the column level YES
|
|
E081 Basic Privileges 08 WITH GRANT OPTION YES
|
|
E081 Basic Privileges 09 USAGE privilege YES
|
|
E081 Basic Privileges 10 EXECUTE privilege YES
|
|
E091 Set functions YES
|
|
E091 Set functions 01 AVG YES
|
|
E091 Set functions 02 COUNT YES
|
|
E091 Set functions 03 MAX YES
|
|
E091 Set functions 04 MIN YES
|
|
E091 Set functions 05 SUM YES
|
|
E091 Set functions 06 ALL quantifier YES
|
|
E091 Set functions 07 DISTINCT quantifier YES
|
|
E101 Basic data manipulation YES
|
|
E101 Basic data manipulation 01 INSERT statement YES
|
|
E101 Basic data manipulation 03 Searched UPDATE statement YES
|
|
E101 Basic data manipulation 04 Searched DELETE statement YES
|
|
E111 Single row SELECT statement YES
|
|
E121 Basic cursor support YES
|
|
E121 Basic cursor support 01 DECLARE CURSOR YES
|
|
E121 Basic cursor support 02 ORDER BY columns need not be in select list YES
|
|
E121 Basic cursor support 03 Value expressions in ORDER BY clause YES
|
|
E121 Basic cursor support 04 OPEN statement YES
|
|
E121 Basic cursor support 06 Positioned UPDATE statement YES
|
|
E121 Basic cursor support 07 Positioned DELETE statement YES
|
|
E121 Basic cursor support 08 CLOSE statement YES
|
|
E121 Basic cursor support 10 FETCH statement implicit NEXT YES
|
|
E121 Basic cursor support 17 WITH HOLD cursors YES
|
|
E131 Null value support (nulls in lieu of values) YES
|
|
E141 Basic integrity constraints YES
|
|
E141 Basic integrity constraints 01 NOT NULL constraints YES
|
|
E141 Basic integrity constraints 02 UNIQUE constraints of NOT NULL columns YES
|
|
E141 Basic integrity constraints 03 PRIMARY KEY constraints YES
|
|
E141 Basic integrity constraints 04 Basic FOREIGN KEY constraint with the NO ACTION default for both referential delete action and referential update action YES
|
|
E141 Basic integrity constraints 06 CHECK constraints YES
|
|
E141 Basic integrity constraints 07 Column defaults YES
|
|
E141 Basic integrity constraints 08 NOT NULL inferred on PRIMARY KEY YES
|
|
E141 Basic integrity constraints 10 Names in a foreign key can be specified in any order YES
|
|
E151 Transaction support YES
|
|
E151 Transaction support 01 COMMIT statement YES
|
|
E151 Transaction support 02 ROLLBACK statement YES
|
|
E152 Basic SET TRANSACTION statement YES
|
|
E152 Basic SET TRANSACTION statement 01 SET TRANSACTION statement: ISOLATION LEVEL SERIALIZABLE clause YES
|
|
E152 Basic SET TRANSACTION statement 02 SET TRANSACTION statement: READ ONLY and READ WRITE clauses YES
|
|
E153 Updatable queries with subqueries YES
|
|
E161 SQL comments using leading double minus YES
|
|
E171 SQLSTATE support YES
|
|
E182 Module language NO
|
|
F021 Basic information schema YES
|
|
F021 Basic information schema 01 COLUMNS view YES
|
|
F021 Basic information schema 02 TABLES view YES
|
|
F021 Basic information schema 03 VIEWS view YES
|
|
F021 Basic information schema 04 TABLE_CONSTRAINTS view YES
|
|
F021 Basic information schema 05 REFERENTIAL_CONSTRAINTS view YES
|
|
F021 Basic information schema 06 CHECK_CONSTRAINTS view YES
|
|
F031 Basic schema manipulation YES
|
|
F031 Basic schema manipulation 01 CREATE TABLE statement to create persistent base tables YES
|
|
F031 Basic schema manipulation 02 CREATE VIEW statement YES
|
|
F031 Basic schema manipulation 03 GRANT statement YES
|
|
F031 Basic schema manipulation 04 ALTER TABLE statement: ADD COLUMN clause YES
|
|
F031 Basic schema manipulation 13 DROP TABLE statement: RESTRICT clause YES
|
|
F031 Basic schema manipulation 16 DROP VIEW statement: RESTRICT clause YES
|
|
F031 Basic schema manipulation 19 REVOKE statement: RESTRICT clause YES
|
|
F032 CASCADE drop behavior YES
|
|
F033 ALTER TABLE statement: DROP COLUMN clause YES
|
|
F034 Extended REVOKE statement YES
|
|
F034 Extended REVOKE statement 01 REVOKE statement performed by other than the owner of a schema object YES
|
|
F034 Extended REVOKE statement 02 REVOKE statement: GRANT OPTION FOR clause YES
|
|
F034 Extended REVOKE statement 03 REVOKE statement to revoke a privilege that the grantee has WITH GRANT OPTION YES
|
|
F041 Basic joined table YES
|
|
F041 Basic joined table 01 Inner join (but not necessarily the INNER keyword) YES
|
|
F041 Basic joined table 02 INNER keyword YES
|
|
F041 Basic joined table 03 LEFT OUTER JOIN YES
|
|
F041 Basic joined table 04 RIGHT OUTER JOIN YES
|
|
F041 Basic joined table 05 Outer joins can be nested YES
|
|
F041 Basic joined table 07 The inner table in a left or right outer join can also be used in an inner join YES
|
|
F041 Basic joined table 08 All comparison operators are supported (rather than just =) YES
|
|
F051 Basic date and time YES
|
|
F051 Basic date and time 01 DATE data type (including support of DATE literal) YES
|
|
F051 Basic date and time 02 TIME data type (including support of TIME literal) with fractional seconds precision of at least 0 YES
|
|
F051 Basic date and time 03 TIMESTAMP data type (including support of TIMESTAMP literal) with fractional seconds precision of at least 0 and 6 YES
|
|
F051 Basic date and time 04 Comparison predicate on DATE, TIME, and TIMESTAMP data types YES
|
|
F051 Basic date and time 05 Explicit CAST between datetime types and character string types YES
|
|
F051 Basic date and time 06 CURRENT_DATE YES
|
|
F051 Basic date and time 07 LOCALTIME YES
|
|
F051 Basic date and time 08 LOCALTIMESTAMP YES
|
|
F052 Intervals and datetime arithmetic YES
|
|
F053 OVERLAPS predicate YES
|
|
F054 TIMESTAMP in DATE type precedence list NO
|
|
F081 UNION and EXCEPT in views YES
|
|
F111 Isolation levels other than SERIALIZABLE YES
|
|
F111 Isolation levels other than SERIALIZABLE 01 READ UNCOMMITTED isolation level YES
|
|
F111 Isolation levels other than SERIALIZABLE 02 READ COMMITTED isolation level YES
|
|
F111 Isolation levels other than SERIALIZABLE 03 REPEATABLE READ isolation level YES
|
|
F121 Basic diagnostics management NO
|
|
F121 Basic diagnostics management 01 GET DIAGNOSTICS statement NO
|
|
F121 Basic diagnostics management 02 SET TRANSACTION statement: DIAGNOSTICS SIZE clause NO
|
|
F122 Enhanced diagnostics management NO
|
|
F123 All diagnostics NO
|
|
F131 Grouped operations YES
|
|
F131 Grouped operations 01 WHERE, GROUP BY, and HAVING clauses supported in queries with grouped views YES
|
|
F131 Grouped operations 02 Multiple tables supported in queries with grouped views YES
|
|
F131 Grouped operations 03 Set functions supported in queries with grouped views YES
|
|
F131 Grouped operations 04 Subqueries with GROUP BY and HAVING clauses and grouped views YES
|
|
F131 Grouped operations 05 Single row SELECT with GROUP BY and HAVING clauses and grouped views YES
|
|
F171 Multiple schemas per user YES
|
|
F181 Multiple module support NO
|
|
F191 Referential delete actions YES
|
|
F200 TRUNCATE TABLE statement YES
|
|
F201 CAST function YES
|
|
F202 TRUNCATE TABLE: identity column restart option NO
|
|
F221 Explicit defaults YES
|
|
F222 INSERT statement: DEFAULT VALUES clause YES
|
|
F231 Privilege tables YES
|
|
F231 Privilege tables 01 TABLE_PRIVILEGES view YES
|
|
F231 Privilege tables 02 COLUMN_PRIVILEGES view YES
|
|
F231 Privilege tables 03 USAGE_PRIVILEGES view YES
|
|
F251 Domain support YES
|
|
F261 CASE expression YES
|
|
F261 CASE expression 01 Simple CASE YES
|
|
F261 CASE expression 02 Searched CASE YES
|
|
F261 CASE expression 03 NULLIF YES
|
|
F261 CASE expression 04 COALESCE YES
|
|
F262 Extended CASE expression YES
|
|
F263 Comma-separated predicates in simple CASE expression NO
|
|
F271 Compound character literals YES
|
|
F281 LIKE enhancements YES
|
|
F291 UNIQUE predicate NO
|
|
F301 CORRESPONDING in query expressions NO
|
|
F302 INTERSECT table operator YES
|
|
F302 INTERSECT table operator 01 INTERSECT DISTINCT table operator YES
|
|
F302 INTERSECT table operator 02 INTERSECT ALL table operator YES
|
|
F304 EXCEPT ALL table operator YES
|
|
F311 Schema definition statement NO
|
|
F311 Schema definition statement 01 CREATE SCHEMA YES
|
|
F311 Schema definition statement 02 CREATE TABLE for persistent base tables YES
|
|
F311 Schema definition statement 03 CREATE VIEW YES
|
|
F311 Schema definition statement 04 CREATE VIEW: WITH CHECK OPTION YES
|
|
F311 Schema definition statement 05 GRANT statement YES
|
|
F312 MERGE statement NO Consider INSERT ... ON CONFLICT DO UPDATE
|
|
F313 Enhanced MERGE statement NO
|
|
F314 MERGE statement with DELETE branch NO
|
|
F321 User authorization YES
|
|
F341 Usage tables NO no ROUTINE_*_USAGE tables
|
|
F361 Subprogram support YES
|
|
F381 Extended schema manipulation YES
|
|
F381 Extended schema manipulation 01 ALTER TABLE statement: ALTER COLUMN clause YES
|
|
F381 Extended schema manipulation 02 ALTER TABLE statement: ADD CONSTRAINT clause YES
|
|
F381 Extended schema manipulation 03 ALTER TABLE statement: DROP CONSTRAINT clause YES
|
|
F382 Alter column data type YES
|
|
F383 Set column not null clause YES
|
|
F384 Drop identity property clause NO
|
|
F385 Drop column generation expression clause NO
|
|
F386 Set identity column generation clause NO
|
|
F391 Long identifiers YES
|
|
F392 Unicode escapes in identifiers YES
|
|
F393 Unicode escapes in literals YES
|
|
F394 Optional normal form specification NO
|
|
F401 Extended joined table YES
|
|
F401 Extended joined table 01 NATURAL JOIN YES
|
|
F401 Extended joined table 02 FULL OUTER JOIN YES
|
|
F401 Extended joined table 04 CROSS JOIN YES
|
|
F402 Named column joins for LOBs, arrays, and multisets YES
|
|
F403 Partitioned joined tables NO
|
|
F411 Time zone specification YES differences regarding literal interpretation
|
|
F421 National character YES
|
|
F431 Read-only scrollable cursors YES
|
|
F431 Read-only scrollable cursors 01 FETCH with explicit NEXT YES
|
|
F431 Read-only scrollable cursors 02 FETCH FIRST YES
|
|
F431 Read-only scrollable cursors 03 FETCH LAST YES
|
|
F431 Read-only scrollable cursors 04 FETCH PRIOR YES
|
|
F431 Read-only scrollable cursors 05 FETCH ABSOLUTE YES
|
|
F431 Read-only scrollable cursors 06 FETCH RELATIVE YES
|
|
F441 Extended set function support YES
|
|
F442 Mixed column references in set functions YES
|
|
F451 Character set definition NO
|
|
F461 Named character sets NO
|
|
F471 Scalar subquery values YES
|
|
F481 Expanded NULL predicate YES
|
|
F491 Constraint management YES
|
|
F492 Optional table constraint enforcement NO
|
|
F501 Features and conformance views YES
|
|
F501 Features and conformance views 01 SQL_FEATURES view YES
|
|
F501 Features and conformance views 02 SQL_SIZING view YES
|
|
F501 Features and conformance views 03 SQL_LANGUAGES view YES
|
|
F502 Enhanced documentation tables YES
|
|
F502 Enhanced documentation tables 01 SQL_SIZING_PROFILES view YES
|
|
F502 Enhanced documentation tables 02 SQL_IMPLEMENTATION_INFO view YES
|
|
F502 Enhanced documentation tables 03 SQL_PACKAGES view YES
|
|
F521 Assertions NO
|
|
F531 Temporary tables YES
|
|
F555 Enhanced seconds precision YES
|
|
F561 Full value expressions YES
|
|
F571 Truth value tests YES
|
|
F591 Derived tables YES
|
|
F611 Indicator data types YES
|
|
F641 Row and table constructors YES
|
|
F651 Catalog name qualifiers YES
|
|
F661 Simple tables YES
|
|
F671 Subqueries in CHECK NO intentionally omitted
|
|
F672 Retrospective check constraints YES
|
|
F690 Collation support YES but no character set support
|
|
F692 Extended collation support YES
|
|
F693 SQL-session and client module collations NO
|
|
F695 Translation support NO
|
|
F696 Additional translation documentation NO
|
|
F701 Referential update actions YES
|
|
F711 ALTER domain YES
|
|
F721 Deferrable constraints NO foreign and unique keys only
|
|
F731 INSERT column privileges YES
|
|
F741 Referential MATCH types NO no partial match yet
|
|
F751 View CHECK enhancements YES
|
|
F761 Session management YES
|
|
F762 CURRENT_CATALOG YES
|
|
F763 CURRENT_SCHEMA YES
|
|
F771 Connection management YES
|
|
F781 Self-referencing operations YES
|
|
F791 Insensitive cursors YES
|
|
F801 Full set function YES
|
|
F812 Basic flagging NO
|
|
F813 Extended flagging NO
|
|
F821 Local table references NO
|
|
F831 Full cursor update NO
|
|
F831 Full cursor update 01 Updatable scrollable cursors NO
|
|
F831 Full cursor update 02 Updatable ordered cursors NO
|
|
F841 LIKE_REGEX predicate NO
|
|
F842 OCCURENCES_REGEX function NO
|
|
F843 POSITION_REGEX function NO
|
|
F844 SUBSTRING_REGEX function NO
|
|
F845 TRANSLATE_REGEX function NO
|
|
F846 Octet support in regular expression operators NO
|
|
F847 Nonconstant regular expressions NO
|
|
F850 Top-level <order by clause> in <query expression> YES
|
|
F851 <order by clause> in subqueries YES
|
|
F852 Top-level <order by clause> in views YES
|
|
F855 Nested <order by clause> in <query expression> YES
|
|
F856 Nested <fetch first clause> in <query expression> YES
|
|
F857 Top-level <fetch first clause> in <query expression> YES
|
|
F858 <fetch first clause> in subqueries YES
|
|
F859 Top-level <fetch first clause> in views YES
|
|
F860 <fetch first row count> in <fetch first clause> YES
|
|
F861 Top-level <result offset clause> in <query expression> YES
|
|
F862 <result offset clause> in subqueries YES
|
|
F863 Nested <result offset clause> in <query expression> YES
|
|
F864 Top-level <result offset clause> in views YES
|
|
F865 <offset row count> in <result offset clause> YES
|
|
F866 FETCH FIRST clause: PERCENT option NO
|
|
F867 FETCH FIRST clause: WITH TIES option NO
|
|
S011 Distinct data types NO
|
|
S011 Distinct data types 01 USER_DEFINED_TYPES view NO
|
|
S023 Basic structured types NO
|
|
S024 Enhanced structured types NO
|
|
S025 Final structured types NO
|
|
S026 Self-referencing structured types NO
|
|
S027 Create method by specific method name NO
|
|
S028 Permutable UDT options list NO
|
|
S041 Basic reference types NO
|
|
S043 Enhanced reference types NO
|
|
S051 Create table of type NO partially supported
|
|
S071 SQL paths in function and type name resolution YES
|
|
S081 Subtables NO
|
|
S091 Basic array support NO partially supported
|
|
S091 Basic array support 01 Arrays of built-in data types NO
|
|
S091 Basic array support 02 Arrays of distinct types NO
|
|
S091 Basic array support 03 Array expressions NO
|
|
S092 Arrays of user-defined types YES
|
|
S094 Arrays of reference types NO
|
|
S095 Array constructors by query YES
|
|
S096 Optional array bounds YES
|
|
S097 Array element assignment NO
|
|
S098 ARRAY_AGG YES
|
|
S111 ONLY in query expressions YES
|
|
S151 Type predicate NO
|
|
S161 Subtype treatment NO
|
|
S162 Subtype treatment for references NO
|
|
S201 SQL-invoked routines on arrays YES
|
|
S201 SQL-invoked routines on arrays 01 Array parameters YES
|
|
S201 SQL-invoked routines on arrays 02 Array as result type of functions YES
|
|
S202 SQL-invoked routines on multisets NO
|
|
S211 User-defined cast functions YES
|
|
S231 Structured type locators NO
|
|
S232 Array locators NO
|
|
S233 Multiset locators NO
|
|
S241 Transform functions NO
|
|
S242 Alter transform statement NO
|
|
S251 User-defined orderings NO
|
|
S261 Specific type method NO
|
|
S271 Basic multiset support NO
|
|
S272 Multisets of user-defined types NO
|
|
S274 Multisets of reference types NO
|
|
S275 Advanced multiset support NO
|
|
S281 Nested collection types NO
|
|
S291 Unique constraint on entire row NO
|
|
S301 Enhanced UNNEST NO
|
|
S401 Distinct types based on array types NO
|
|
S402 Distinct types based on distinct types NO
|
|
S403 ARRAY_MAX_CARDINALITY NO
|
|
S404 TRIM_ARRAY NO
|
|
T011 Timestamp in Information Schema NO
|
|
T021 BINARY and VARBINARY data types NO
|
|
T022 Advanced support for BINARY and VARBINARY data types NO
|
|
T023 Compound binary literal NO
|
|
T024 Spaces in binary literals NO
|
|
T031 BOOLEAN data type YES
|
|
T041 Basic LOB data type support NO
|
|
T041 Basic LOB data type support 01 BLOB data type NO
|
|
T041 Basic LOB data type support 02 CLOB data type NO
|
|
T041 Basic LOB data type support 03 POSITION, LENGTH, LOWER, TRIM, UPPER, and SUBSTRING functions for LOB data types NO
|
|
T041 Basic LOB data type support 04 Concatenation of LOB data types NO
|
|
T041 Basic LOB data type support 05 LOB locator: non-holdable NO
|
|
T042 Extended LOB data type support NO
|
|
T043 Multiplier T NO
|
|
T044 Multiplier P NO
|
|
T051 Row types NO
|
|
T052 MAX and MIN for row types NO
|
|
T053 Explicit aliases for all-fields reference NO
|
|
T061 UCS support NO
|
|
T071 BIGINT data type YES
|
|
T101 Enhanced nullability determination NO
|
|
T111 Updatable joins, unions, and columns NO
|
|
T121 WITH (excluding RECURSIVE) in query expression YES
|
|
T122 WITH (excluding RECURSIVE) in subquery YES
|
|
T131 Recursive query YES
|
|
T132 Recursive query in subquery YES
|
|
T141 SIMILAR predicate YES
|
|
T151 DISTINCT predicate YES
|
|
T152 DISTINCT predicate with negation YES
|
|
T171 LIKE clause in table definition YES
|
|
T172 AS subquery clause in table definition YES
|
|
T173 Extended LIKE clause in table definition YES
|
|
T174 Identity columns NO
|
|
T175 Generated columns NO
|
|
T176 Sequence generator support NO
|
|
T177 Sequence generator support: simple restart option NO
|
|
T178 Identity columns: simple restart option NO
|
|
T180 System-versioned tables NO
|
|
T181 Application-time period tables NO
|
|
T191 Referential action RESTRICT YES
|
|
T201 Comparable data types for referential constraints YES
|
|
T211 Basic trigger capability NO
|
|
T211 Basic trigger capability 01 Triggers activated on UPDATE, INSERT, or DELETE of one base table YES
|
|
T211 Basic trigger capability 02 BEFORE triggers YES
|
|
T211 Basic trigger capability 03 AFTER triggers YES
|
|
T211 Basic trigger capability 04 FOR EACH ROW triggers YES
|
|
T211 Basic trigger capability 05 Ability to specify a search condition that must be true before the trigger is invoked YES
|
|
T211 Basic trigger capability 06 Support for run-time rules for the interaction of triggers and constraints NO
|
|
T211 Basic trigger capability 07 TRIGGER privilege YES
|
|
T211 Basic trigger capability 08 Multiple triggers for the same event are executed in the order in which they were created in the catalog NO intentionally omitted
|
|
T212 Enhanced trigger capability YES
|
|
T213 INSTEAD OF triggers YES
|
|
T231 Sensitive cursors YES
|
|
T241 START TRANSACTION statement YES
|
|
T251 SET TRANSACTION statement: LOCAL option NO
|
|
T261 Chained transactions NO
|
|
T271 Savepoints YES
|
|
T272 Enhanced savepoint management NO
|
|
T281 SELECT privilege with column granularity YES
|
|
T285 Enhanced derived column names NO
|
|
T301 Functional dependencies NO partially supported
|
|
T312 OVERLAY function YES
|
|
T321 Basic SQL-invoked routines NO
|
|
T321 Basic SQL-invoked routines 01 User-defined functions with no overloading YES
|
|
T321 Basic SQL-invoked routines 02 User-defined stored procedures with no overloading NO
|
|
T321 Basic SQL-invoked routines 03 Function invocation YES
|
|
T321 Basic SQL-invoked routines 04 CALL statement NO
|
|
T321 Basic SQL-invoked routines 05 RETURN statement NO
|
|
T321 Basic SQL-invoked routines 06 ROUTINES view YES
|
|
T321 Basic SQL-invoked routines 07 PARAMETERS view YES
|
|
T322 Declared data type attributes NO
|
|
T323 Explicit security for external routines YES
|
|
T324 Explicit security for SQL routines NO
|
|
T325 Qualified SQL parameter references YES
|
|
T326 Table functions NO
|
|
T331 Basic roles YES
|
|
T332 Extended roles NO mostly supported
|
|
T341 Overloading of SQL-invoked functions and procedures YES
|
|
T351 Bracketed SQL comments (/*...*/ comments) YES
|
|
T431 Extended grouping capabilities YES
|
|
T432 Nested and concatenated GROUPING SETS YES
|
|
T433 Multiargument GROUPING function YES
|
|
T434 GROUP BY DISTINCT NO
|
|
T441 ABS and MOD functions YES
|
|
T461 Symmetric BETWEEN predicate YES
|
|
T471 Result sets return value NO
|
|
T472 DESCRIBE CURSOR NO
|
|
T491 LATERAL derived table YES
|
|
T495 Combined data change and retrieval NO different syntax
|
|
T501 Enhanced EXISTS predicate YES
|
|
T502 Period predicates NO
|
|
T511 Transaction counts NO
|
|
T521 Named arguments in CALL statement NO
|
|
T522 Default values for IN parameters of SQL-invoked procedures NO
|
|
T541 Updatable table references NO
|
|
T551 Optional key words for default syntax YES
|
|
T561 Holdable locators NO
|
|
T571 Array-returning external SQL-invoked functions NO
|
|
T572 Multiset-returning external SQL-invoked functions NO
|
|
T581 Regular expression substring function YES
|
|
T591 UNIQUE constraints of possibly null columns YES
|
|
T601 Local cursor references NO
|
|
T611 Elementary OLAP operations NO most forms supported
|
|
T612 Advanced OLAP operations NO some forms supported
|
|
T613 Sampling YES
|
|
T614 NTILE function YES
|
|
T615 LEAD and LAG functions YES
|
|
T616 Null treatment option for LEAD and LAG functions NO
|
|
T617 FIRST_VALUE and LAST_VALUE function YES
|
|
T618 NTH_VALUE function NO function exists, but some options missing
|
|
T619 Nested window functions NO
|
|
T620 WINDOW clause: GROUPS option NO
|
|
T621 Enhanced numeric functions YES
|
|
T631 IN predicate with one list element YES
|
|
T641 Multiple column assignment NO only some syntax variants supported
|
|
T651 SQL-schema statements in SQL routines YES
|
|
T652 SQL-dynamic statements in SQL routines NO
|
|
T653 SQL-schema statements in external routines NO
|
|
T654 SQL-dynamic statements in external routines NO
|
|
T655 Cyclically dependent routines YES
|
|
M001 Datalinks NO
|
|
M002 Datalinks via SQL/CLI NO
|
|
M003 Datalinks via Embedded SQL NO
|
|
M004 Foreign data support NO partially supported
|
|
M005 Foreign schema support NO
|
|
M006 GetSQLString routine NO
|
|
M007 TransmitRequest NO
|
|
M009 GetOpts and GetStatistics routines NO
|
|
M010 Foreign data wrapper support NO different API
|
|
M011 Datalinks via Ada NO
|
|
M012 Datalinks via C NO
|
|
M013 Datalinks via COBOL NO
|
|
M014 Datalinks via Fortran NO
|
|
M015 Datalinks via M NO
|
|
M016 Datalinks via Pascal NO
|
|
M017 Datalinks via PL/I NO
|
|
M018 Foreign data wrapper interface routines in Ada NO
|
|
M019 Foreign data wrapper interface routines in C NO different API
|
|
M020 Foreign data wrapper interface routines in COBOL NO
|
|
M021 Foreign data wrapper interface routines in Fortran NO
|
|
M022 Foreign data wrapper interface routines in MUMPS NO
|
|
M023 Foreign data wrapper interface routines in Pascal NO
|
|
M024 Foreign data wrapper interface routines in PL/I NO
|
|
M030 SQL-server foreign data support NO
|
|
M031 Foreign data wrapper general routines NO
|
|
X010 XML type YES
|
|
X011 Arrays of XML type YES
|
|
X012 Multisets of XML type NO
|
|
X013 Distinct types of XML type NO
|
|
X014 Attributes of XML type NO
|
|
X015 Fields of XML type NO
|
|
X016 Persistent XML values YES
|
|
X020 XMLConcat YES
|
|
X025 XMLCast NO
|
|
X030 XMLDocument NO
|
|
X031 XMLElement YES
|
|
X032 XMLForest YES
|
|
X034 XMLAgg YES
|
|
X035 XMLAgg: ORDER BY option YES
|
|
X036 XMLComment YES
|
|
X037 XMLPI YES
|
|
X038 XMLText NO
|
|
X040 Basic table mapping YES
|
|
X041 Basic table mapping: nulls absent YES
|
|
X042 Basic table mapping: null as nil YES
|
|
X043 Basic table mapping: table as forest YES
|
|
X044 Basic table mapping: table as element YES
|
|
X045 Basic table mapping: with target namespace YES
|
|
X046 Basic table mapping: data mapping YES
|
|
X047 Basic table mapping: metadata mapping YES
|
|
X048 Basic table mapping: base64 encoding of binary strings YES
|
|
X049 Basic table mapping: hex encoding of binary strings YES
|
|
X050 Advanced table mapping YES
|
|
X051 Advanced table mapping: nulls absent YES
|
|
X052 Advanced table mapping: null as nil YES
|
|
X053 Advanced table mapping: table as forest YES
|
|
X054 Advanced table mapping: table as element YES
|
|
X055 Advanced table mapping: with target namespace YES
|
|
X056 Advanced table mapping: data mapping YES
|
|
X057 Advanced table mapping: metadata mapping YES
|
|
X058 Advanced table mapping: base64 encoding of binary strings YES
|
|
X059 Advanced table mapping: hex encoding of binary strings YES
|
|
X060 XMLParse: character string input and CONTENT option YES
|
|
X061 XMLParse: character string input and DOCUMENT option YES
|
|
X065 XMLParse: BLOB input and CONTENT option NO
|
|
X066 XMLParse: BLOB input and DOCUMENT option NO
|
|
X068 XMLSerialize: BOM NO
|
|
X069 XMLSerialize: INDENT NO
|
|
X070 XMLSerialize: character string serialization and CONTENT option YES
|
|
X071 XMLSerialize: character string serialization and DOCUMENT option YES
|
|
X072 XMLSerialize: character string serialization YES
|
|
X073 XMLSerialize: BLOB serialization and CONTENT option NO
|
|
X074 XMLSerialize: BLOB serialization and DOCUMENT option NO
|
|
X075 XMLSerialize: BLOB serialization NO
|
|
X076 XMLSerialize: VERSION NO
|
|
X077 XMLSerialize: explicit ENCODING option NO
|
|
X078 XMLSerialize: explicit XML declaration NO
|
|
X080 Namespaces in XML publishing NO
|
|
X081 Query-level XML namespace declarations NO
|
|
X082 XML namespace declarations in DML NO
|
|
X083 XML namespace declarations in DDL NO
|
|
X084 XML namespace declarations in compound statements NO
|
|
X085 Predefined namespace prefixes NO
|
|
X086 XML namespace declarations in XMLTable NO
|
|
X090 XML document predicate YES
|
|
X091 XML content predicate NO
|
|
X096 XMLExists NO
|
|
X100 Host language support for XML: CONTENT option NO
|
|
X101 Host language support for XML: DOCUMENT option NO
|
|
X110 Host language support for XML: VARCHAR mapping NO
|
|
X111 Host language support for XML: CLOB mapping NO
|
|
X112 Host language support for XML: BLOB mapping NO
|
|
X113 Host language support for XML: STRIP WHITESPACE option NO
|
|
X114 Host language support for XML: PRESERVE WHITESPACE option NO
|
|
X120 XML parameters in SQL routines YES
|
|
X121 XML parameters in external routines YES
|
|
X131 Query-level XMLBINARY clause NO
|
|
X132 XMLBINARY clause in DML NO
|
|
X133 XMLBINARY clause in DDL NO
|
|
X134 XMLBINARY clause in compound statements NO
|
|
X135 XMLBINARY clause in subqueries NO
|
|
X141 IS VALID predicate: data-driven case NO
|
|
X142 IS VALID predicate: ACCORDING TO clause NO
|
|
X143 IS VALID predicate: ELEMENT clause NO
|
|
X144 IS VALID predicate: schema location NO
|
|
X145 IS VALID predicate outside check constraints NO
|
|
X151 IS VALID predicate with DOCUMENT option NO
|
|
X152 IS VALID predicate with CONTENT option NO
|
|
X153 IS VALID predicate with SEQUENCE option NO
|
|
X155 IS VALID predicate: NAMESPACE without ELEMENT clause NO
|
|
X157 IS VALID predicate: NO NAMESPACE with ELEMENT clause NO
|
|
X160 Basic Information Schema for registered XML Schemas NO
|
|
X161 Advanced Information Schema for registered XML Schemas NO
|
|
X170 XML null handling options NO
|
|
X171 NIL ON NO CONTENT option NO
|
|
X181 XML(DOCUMENT(UNTYPED)) type NO
|
|
X182 XML(DOCUMENT(ANY)) type NO
|
|
X190 XML(SEQUENCE) type NO
|
|
X191 XML(DOCUMENT(XMLSCHEMA)) type NO
|
|
X192 XML(CONTENT(XMLSCHEMA)) type NO
|
|
X200 XMLQuery NO
|
|
X201 XMLQuery: RETURNING CONTENT NO
|
|
X202 XMLQuery: RETURNING SEQUENCE NO
|
|
X203 XMLQuery: passing a context item NO
|
|
X204 XMLQuery: initializing an XQuery variable NO
|
|
X205 XMLQuery: EMPTY ON EMPTY option NO
|
|
X206 XMLQuery: NULL ON EMPTY option NO
|
|
X211 XML 1.1 support NO
|
|
X221 XML passing mechanism BY VALUE NO
|
|
X222 XML passing mechanism BY REF NO
|
|
X231 XML(CONTENT(UNTYPED)) type NO
|
|
X232 XML(CONTENT(ANY)) type NO
|
|
X241 RETURNING CONTENT in XML publishing NO
|
|
X242 RETURNING SEQUENCE in XML publishing NO
|
|
X251 Persistent XML values of XML(DOCUMENT(UNTYPED)) type NO
|
|
X252 Persistent XML values of XML(DOCUMENT(ANY)) type NO
|
|
X253 Persistent XML values of XML(CONTENT(UNTYPED)) type NO
|
|
X254 Persistent XML values of XML(CONTENT(ANY)) type NO
|
|
X255 Persistent XML values of XML(SEQUENCE) type NO
|
|
X256 Persistent XML values of XML(DOCUMENT(XMLSCHEMA)) type NO
|
|
X257 Persistent XML values of XML(CONTENT(XMLSCHEMA)) type NO
|
|
X260 XML type: ELEMENT clause NO
|
|
X261 XML type: NAMESPACE without ELEMENT clause NO
|
|
X263 XML type: NO NAMESPACE with ELEMENT clause NO
|
|
X264 XML type: schema location NO
|
|
X271 XMLValidate: data-driven case NO
|
|
X272 XMLValidate: ACCORDING TO clause NO
|
|
X273 XMLValidate: ELEMENT clause NO
|
|
X274 XMLValidate: schema location NO
|
|
X281 XMLValidate: with DOCUMENT option NO
|
|
X282 XMLValidate with CONTENT option NO
|
|
X283 XMLValidate with SEQUENCE option NO
|
|
X284 XMLValidate NAMESPACE without ELEMENT clause NO
|
|
X286 XMLValidate: NO NAMESPACE with ELEMENT clause NO
|
|
X300 XMLTable NO
|
|
X301 XMLTable: derived column list option NO
|
|
X302 XMLTable: ordinality column option NO
|
|
X303 XMLTable: column default option NO
|
|
X304 XMLTable: passing a context item NO
|
|
X305 XMLTable: initializing an XQuery variable NO
|
|
X400 Name and identifier mapping YES
|
|
X410 Alter column data type: XML type YES
|