SQL:2023 should be published within the next 2 months, so I want to update our SQL conformance information for our PostgreSQL release later this year.

Attached are patches that update the keywords list and the features list as usual. (Some of the new features in the JSON area are still being worked on. I have just set them all to NO for now, to be revisited later.)

I'm also proposing to get rid of the tracking of subfeatures. This has been de-facto deprecated: All the subfeatures for optional features have been removed (replaced by top-level feature codes), and the subfeatures for mandatory features aren't very interesting. The TODO is to remove the columns for the subfeatures in src/backend/catalog/sql_features.txt. That is a mechanical change that I did not include in the patch.

I'll leave this patch set in the commit fest, to let those concurrent developments shake out and as a reminder to address this when the time comes.
From 119129bd2e001c7c3b70af79ab89c414cd207b02 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <pe...@eisentraut.org>
Date: Wed, 1 Mar 2023 09:52:26 +0100
Subject: [PATCH v1 1/3] doc: Update SQL features list for SQL:2023

---
 doc/src/sgml/features.sgml                 |  17 +--
 src/backend/catalog/information_schema.sql |   1 +
 src/backend/catalog/sql_features.txt       | 143 +++++++++++++--------
 3 files changed, 100 insertions(+), 61 deletions(-)

diff --git a/doc/src/sgml/features.sgml b/doc/src/sgml/features.sgml
index b98056214f..575afa3476 100644
--- a/doc/src/sgml/features.sgml
+++ b/doc/src/sgml/features.sgml
@@ -14,9 +14,9 @@ <title>SQL Conformance</title>
  <para>
   The formal name of the SQL standard is ISO/IEC 9075 <quote>Database
   Language SQL</quote>.  A revised version of the standard is released
-  from time to time; the most recent update appearing in 2016.
-  The 2016 version is referred to as ISO/IEC 9075:2016, or simply as SQL:2016.
-  The versions prior to that were SQL:2011, SQL:2008, SQL:2006, SQL:2003,
+  from time to time; the most recent update appearing in 2023.
+  The 2023 version is referred to as ISO/IEC 9075:2023, or simply as SQL:2023.
+  The versions prior to that were SQL:2016, SQL:2011, SQL:2008, SQL:2006, 
SQL:2003,
   SQL:1999, and SQL-92.  Each version
   replaces the previous one, so claims of conformance to earlier
   versions have no official merit.
@@ -62,6 +62,7 @@ <title>SQL Conformance</title>
    <listitem><para>ISO/IEC 9075-13 Routines and Types using the Java Language 
(SQL/JRT)</para><indexterm><primary>SQL/JRT</primary></indexterm></listitem>
    <listitem><para>ISO/IEC 9075-14 XML-related specifications 
(SQL/XML)</para><indexterm><primary>SQL/XML</primary></indexterm></listitem>
    <listitem><para>ISO/IEC 9075-15 Multi-dimensional arrays 
(SQL/MDA)</para><indexterm><primary>SQL/MDA</primary></indexterm></listitem>
+   <listitem><para>ISO/IEC 9075-16 Property Graph Queries 
(SQL/PGQ)</para><indexterm><primary>SQL/PGQ</primary></indexterm></listitem>
   </itemizedlist>
 
   Note that some part numbers are not (or no longer) used.
@@ -72,23 +73,23 @@ <title>SQL Conformance</title>
   11, and 14.  Part 3 is covered by the ODBC driver, and part 13 is
   covered by the PL/Java plug-in, but exact conformance is currently
   not being verified for these components.  There are currently no
-  implementations of parts 4, 10, and 15
+  implementations of parts 4, 10, 15, and 16
   for <productname>PostgreSQL</productname>.
  </para>
 
  <para>
-  PostgreSQL supports most of the major features of SQL:2016.  Out of
+  PostgreSQL supports most of the major features of SQL:2023.  Out of
   177 mandatory features required for full Core conformance,
   PostgreSQL conforms to at least 170.  In addition, there is a long
   list of supported optional features.  It might be worth noting that at
   the time of writing, no current version of any database management
-  system claims full conformance to Core SQL:2016.
+  system claims full conformance to Core SQL:2023.
  </para>
 
  <para>
   In the following two sections, we provide a list of those features
   that <productname>PostgreSQL</productname> supports, followed by a
-  list of the features defined in <acronym>SQL:2016</acronym> which
+  list of the features defined in <acronym>SQL:2023</acronym> which
   are not yet supported in <productname>PostgreSQL</productname>.
   Both of these lists are approximate: There might be minor details that
   are nonconforming for a feature that is listed as supported, and
@@ -135,7 +136,7 @@ <title>Supported Features</title>
    <title>Unsupported Features</title>
 
    <para>
-    The following features defined in <acronym>SQL:2016</acronym> are not
+    The following features defined in <acronym>SQL:2023</acronym> are not
     implemented in this release of
     <productname>PostgreSQL</productname>. In a few cases, equivalent
     functionality is available.
diff --git a/src/backend/catalog/information_schema.sql 
b/src/backend/catalog/information_schema.sql
index 0555e9bc03..5810b5d475 100644
--- a/src/backend/catalog/information_schema.sql
+++ b/src/backend/catalog/information_schema.sql
@@ -1770,6 +1770,7 @@ CREATE TABLE sql_parts (
 INSERT INTO sql_parts VALUES ('13', 'Routines and Types Using the Java 
Programming Language (SQL/JRT)', 'NO', NULL, '');
 INSERT INTO sql_parts VALUES ('14', 'XML-Related Specifications (SQL/XML)', 
'NO', NULL, '');
 INSERT INTO sql_parts VALUES ('15', 'Multi-Dimensional Arrays (SQL/MDA)', 
'NO', NULL, '');
+INSERT INTO sql_parts VALUES ('16', 'Property Graph Queries (SQL/PGQ)', 'NO', 
NULL, '');
 
 
 /*
diff --git a/src/backend/catalog/sql_features.txt 
b/src/backend/catalog/sql_features.txt
index 75a09f14e0..fc5c2a20bd 100644
--- a/src/backend/catalog/sql_features.txt
+++ b/src/backend/catalog/sql_features.txt
@@ -6,12 +6,13 @@ B015  Embedded MUMPS                  NO
 B016   Embedded Pascal                 NO      
 B017   Embedded PL/I                   NO      
 B021   Direct SQL                      YES     
+B030   Enhanced dynamic SQL                    NO      
 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      
+B036   Describe input statement                        NO      
 B041   Extensions to embedded SQL exception declarations                       
NO      
 B051   Enhanced execution rights                       NO      
 B111   Module language Ada                     NO      
@@ -31,7 +32,7 @@ B127  Routine language PL/I                   NO
 B128   Routine language SQL                    YES     
 B200   Polymorphic table functions                     NO      
 B201   More than one PTF generic table parameter                       NO      
-B202   PTF Copartitioning                      NO      
+B202   PTF copartitioning                      NO      
 B203   More than one copartition specification                 NO      
 B204   PRUNE WHEN EMPTY                        NO      
 B205   Pass-through columns                    NO      
@@ -166,9 +167,10 @@ 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     
+F035   REVOKE with CASCADE                     YES     
+F036   REVOKE statement performed by non-owner                 YES     
+F037   REVOKE statement: GRANT OPTION FOR clause                       YES     
+F038   REVOKE of a WITH GRANT OPTION privilege                 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     
@@ -191,14 +193,14 @@ 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     
+F112   Isolation level READ UNCOMMITTED                        YES     
+F113   Isolation level READ COMMITTED                  YES     
+F114   Isolation level REPEATABLE READ                 YES     
+F120   Get diagnostics statement                       NO      
 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      
+F124   SET TRANSACTION statement: DIAGNOSTICS SIZE clause                      
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     
@@ -214,9 +216,6 @@ F202        TRUNCATE TABLE: identity column restart option  
                YES
 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     
@@ -228,12 +227,13 @@ F263      Comma-separated predicates in simple CASE 
expression                    NO
 F271   Compound character literals                     YES     
 F281   LIKE enhancements                       YES     
 F291   UNIQUE predicate                        NO      
-F292   UNIQUE null treatment                   YES     SQL:202x draft
+F292   UNIQUE null treatment                   YES     
 F301   CORRESPONDING in query expressions                      NO      
 F302   INTERSECT table operator                        YES     
-F302   INTERSECT table operator        01      INTERSECT DISTINCT table 
operator       YES     
+F303   INTERSECT DISTINCT table operator                       YES     
 F302   INTERSECT table operator        02      INTERSECT ALL table operator    
YES     
 F304   EXCEPT ALL table operator                       YES     
+F305   INTERSECT ALL table operator                    YES     
 F311   Schema definition statement                     YES     
 F311   Schema definition statement     01      CREATE SCHEMA   YES     
 F311   Schema definition statement     02      CREATE TABLE for persistent 
base tables YES     
@@ -247,34 +247,34 @@ F321      User authorization                      YES
 F341   Usage tables                    YES     
 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                   YES     
 F385   Drop column generation expression clause                        YES     
 F386   Set identity column generation clause                   YES     
+F387   ALTER TABLE statement: ALTER COLUMN clause                      YES     
+F388   ALTER TABLE statement: ADD/DROP CONSTRAINT clause                       
YES     
 F391   Long identifiers                        YES     
 F392   Unicode escapes in identifiers                  YES     
 F393   Unicode escapes in literals                     YES     
 F394   Optional normal form specification                      YES     
 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 join tables                 NO      
 F404   Range variable for common column names                  YES     
+F405   NATURAL JOIN                    YES     
+F406   FULL OUTER JOIN                 YES     
+F407   CROSS JOIN                      YES     
 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     
+F432   FETCH with explicit NEXT                        YES     
+F433   FETCH FIRST                     YES     
+F434   FETCH LAST                      YES     
+F435   FETCH PRIOR                     YES     
+F436   FETCH ABSOLUTE                  YES     
+F437   FETCH RELATIVE                  YES     
+F438   Scrollable cursors                      YES     
 F441   Extended set function support                   YES     
 F442   Mixed column references in set functions                        YES     
 F451   Character set definition                        NO      
@@ -298,7 +298,7 @@ F641        Row and table constructors                      
YES
 F651   Catalog name qualifiers                 YES     
 F661   Simple tables                   YES     
 F671   Subqueries in CHECK constraints                 NO      intentionally 
omitted
-F672   Retrospective check constraints                 YES     
+F672   Retrospective CHECK constraints                 YES     
 F673   Reads SQL-data routine invocations in CHECK constraints                 
NO      
 F690   Collation support                       YES     but no character set 
support
 F692   Extended collation support                      YES     
@@ -322,8 +322,8 @@ 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      
+F832   Updatable scrollable cursors                    NO      
+F833   Updatable ordered cursors                       NO      
 F841   LIKE_REGEX predicate                    NO      consider regexp_like()
 F842   OCCURRENCES_REGEX function                      NO      consider 
regexp_matches()
 F843   POSITION_REGEX function                 NO      consider regexp_instr()
@@ -339,7 +339,7 @@ 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     
+F860   Dynamic FETCH FIRST row count                   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     
@@ -347,6 +347,7 @@ 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                    YES     
+F868   ORDER BY in grouped table                       YES     
 R010   Row pattern recognition: FROM clause                    NO      
 R020   Row pattern recognition: WINDOW clause                  NO      
 R030   Row pattern recognition: full aggregate support                 NO      
@@ -363,24 +364,24 @@ 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      
+S090   Minimal array support                   YES     
 S091   Basic array support                     NO      partially supported
-S091   Basic array support     01      Arrays of built-in data types   YES     
-S091   Basic array support     02      Arrays of distinct types        NO      
-S091   Basic array support     03      Array expressions       YES     
 S092   Arrays of user-defined types                    YES     
+S093   Arrays of distinct types                        NO      
 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     
+S099   Array expressions                       YES     
 S111   ONLY in query expressions                       YES     
 S151   Type predicate                  NO      see pg_typeof()
 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      
+S203   Array parameters                        YES     
+S204   Array as result type of functions                       YES     
 S211   User-defined cast functions                     YES     
 S231   Structured type locators                        NO      
 S232   Array locators                  NO      
@@ -406,27 +407,34 @@ T022      Advanced support for BINARY and VARBINARY data 
types                    NO
 T023   Compound binary literals                        NO      
 T024   Spaces in binary literals                       NO      
 T031   BOOLEAN data type                       YES     
+T039   CLOB locator: non-holdable                      NO      
+T040   Concatenation of CLOBs                  NO      
 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      
+T045   BLOB data type                  NO      
+T046   CLOB data type                  NO      
+T047   POSITION, OCTET_LENGTH, TRIM, and SUBSTRING for BLOBs                   
NO      
+T048   Concatenation of BLOBs                  NO      
+T049   BLOB locator: non-holdable                      NO      
+T050   POSITION, CHAR_LENGTH, OCTET_LENGTH, LOWER, TRIM, UPPER, and SUBSTRING 
CLOBs                    NO      
 T051   Row types                       NO      
 T053   Explicit aliases for all-fields reference                       NO      
+T054   GREATEST and LEAST                      YES     
+T055   String padding functions                        YES     
+T056   Multi-character TRIM functions                  YES     
 T061   UCS support                     NO      
 T071   BIGINT data type                        YES     
 T076   DECFLOAT data type                      NO      
+T081   Optional string types maximum length                    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     
-T133   Enhanced cycle mark values                      YES     SQL:202x draft
+T133   Enhanced cycle mark values                      YES     
 T141   SIMILAR predicate                       YES     
 T151   DISTINCT predicate                      YES     
 T152   DISTINCT predicate with negation                        YES     
@@ -441,22 +449,21 @@ T178      Identity columns: simple restart option         
        YES
 T180   System-versioned tables                 NO      
 T181   Application-time period tables                  NO      
 T191   Referential action RESTRICT                     YES     
+T200   Trigger DDL                     NO      similar but not fully compatible
 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     
+T214   BEFORE triggers                 YES     
+T215   AFTER triggers                  YES     
+T216   Ability to require true search condition before trigger is invoked      
                YES     
+T217   TRIGGER privilege                       YES     
+T218   Multiple triggers for the same event executed in the order created      
                NO      intentionally omitted
 T231   Sensitive cursors                       NO      
 T241   START TRANSACTION statement                     YES     
 T251   SET TRANSACTION statement: LOCAL option                 NO      
 T261   Chained transactions                    YES     
+T262   Multiple server transactions                    YES     
 T271   Savepoints                      YES     
 T272   Enhanced savepoint management                   NO      
 T281   SELECT privilege with column granularity                        YES     
@@ -520,7 +527,8 @@ T622        Trigonometric functions                 YES
 T623   General logarithm functions                     YES     
 T624   Common logarithm functions                      YES     
 T625   LISTAGG                 NO      
-T626   ANY_VALUE                       YES     SQL:202x draft
+T626   ANY_VALUE                       YES     
+T627   Window framed COUNT DISTINCT                    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     
@@ -528,8 +536,12 @@ T652       SQL-dynamic statements in SQL routines          
        NO
 T653   SQL-schema statements in external routines                      YES     
 T654   SQL-dynamic statements in external routines                     NO      
 T655   Cyclically dependent routines                   YES     
-T661   Non-decimal integer literals                    YES     SQL:202x draft
-T662   Underscores in integer literals                 YES     SQL:202x draft
+T661   Non-decimal integer literals                    YES     
+T662   Underscores in numeric literals                 YES     
+T670   Schema and data statement mixing                        YES     
+T801   JSON data type                  NO      
+T802   Enhanced JSON data type                 NO      
+T803   String-based JSON                       NO      
 T811   Basic SQL/JSON constructor functions                    NO      
 T812   SQL/JSON: JSON_OBJECTAGG                        NO      
 T813   SQL/JSON: JSON_ARRAYAGG with ORDER BY                   NO      
@@ -553,6 +565,31 @@ T836       SQL/JSON path language: starts with predicate   
                YES
 T837   SQL/JSON path language: regex_like predicate                    YES     
 T838   JSON_TABLE: PLAN DEFAULT clause                 NO      
 T839   Formatted cast of datetimes to/from character strings                   
NO      
+T840   Hex integer literals in SQL/JSON path language                  NO      
+T851   SQL/JSON: optional keywords for default syntax                  NO      
+T860   SQL/JSON simplified accessor: column reference only                     
NO      
+T861   SQL/JSON simplified accessor: case-sensitive JSON member accessor       
                NO      
+T862   SQL/JSON simplified accessor: wildcard member accessor                  
NO      
+T863   SQL/JSON simplified accessor: single-quoted string literal as member 
accessor                   NO      
+T864   SQL/JSON simplified accessor                    NO      
+T865   SQL/JSON item method: bigint()                  NO      
+T866   SQL/JSON item method: boolean()                 NO      
+T867   SQL/JSON item method: date()                    NO      
+T868   SQL/JSON item method: decimal()                 NO      
+T869   SQL/JSON item method: decimal() with precision and scale                
        NO      
+T870   SQL/JSON item method: integer()                 NO      
+T871   SQL/JSON item method: number()                  NO      
+T872   SQL/JSON item method: string()                  NO      
+T873   SQL/JSON item method: time()                    NO      
+T874   SQL/JSON item method: time_tz()                 NO      
+T875   SQL/JSON item method: time precision                    NO      
+T876   SQL/JSON item method: timestamp()                       NO      
+T877   SQL/JSON item method: timestamp_tz()                    NO      
+T878   SQL/JSON item method: timestamp precision                       NO      
+T879   JSON in equality operations                     NO      
+T880   JSON in grouping operations                     NO      
+T881   JSON in ordering operations                     NO      
+T882   JSON in multiset element grouping operations                    NO      
 M001   Datalinks                       NO      
 M002   Datalinks via SQL/CLI                   NO      
 M003   Datalinks via Embedded SQL                      NO      

base-commit: d2f44cc36e60b5490e56fd2aa7d3381764a38d36
-- 
2.39.2

From 835e2cd9406273895eeaf4748eb27d68db5b3d5a Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <pe...@eisentraut.org>
Date: Wed, 1 Mar 2023 09:52:26 +0100
Subject: [PATCH v1 2/3] doc: Update SQL keywords list for SQL:2023

---
 doc/src/sgml/generate-keywords-table.pl       |  2 +-
 ...eserved.txt => sql2023-02-nonreserved.txt} | 38 +++++++++++++
 ...2-reserved.txt => sql2023-02-reserved.txt} | 56 ++++++++++++++++++-
 ...eserved.txt => sql2023-09-nonreserved.txt} |  0
 ...9-reserved.txt => sql2023-09-reserved.txt} |  4 +-
 ...eserved.txt => sql2023-14-nonreserved.txt} |  6 +-
 ...4-reserved.txt => sql2023-14-reserved.txt} |  0
 7 files changed, 96 insertions(+), 10 deletions(-)
 rename doc/src/sgml/keywords/{sql2011-02-nonreserved.txt => 
sql2023-02-nonreserved.txt} (88%)
 rename doc/src/sgml/keywords/{sql2011-02-reserved.txt => 
sql2023-02-reserved.txt} (86%)
 rename doc/src/sgml/keywords/{sql2011-09-nonreserved.txt => 
sql2023-09-nonreserved.txt} (100%)
 rename doc/src/sgml/keywords/{sql2011-09-reserved.txt => 
sql2023-09-reserved.txt} (100%)
 rename doc/src/sgml/keywords/{sql2011-14-nonreserved.txt => 
sql2023-14-nonreserved.txt} (86%)
 rename doc/src/sgml/keywords/{sql2011-14-reserved.txt => 
sql2023-14-reserved.txt} (100%)

diff --git a/doc/src/sgml/generate-keywords-table.pl 
b/doc/src/sgml/generate-keywords-table.pl
index b48fac8388..ee44edaa6c 100644
--- a/doc/src/sgml/generate-keywords-table.pl
+++ b/doc/src/sgml/generate-keywords-table.pl
@@ -7,7 +7,7 @@
 use strict;
 use warnings;
 
-my @sql_versions = reverse sort ('1992', '2011', '2016');
+my @sql_versions = reverse sort ('1992', '2016', '2023');
 
 my $srcdir = $ARGV[0];
 
diff --git a/doc/src/sgml/keywords/sql2011-02-nonreserved.txt 
b/doc/src/sgml/keywords/sql2023-02-nonreserved.txt
similarity index 88%
rename from doc/src/sgml/keywords/sql2011-02-nonreserved.txt
rename to doc/src/sgml/keywords/sql2023-02-nonreserved.txt
index b28a180f0b..48e3d4a7d6 100644
--- a/doc/src/sgml/keywords/sql2011-02-nonreserved.txt
+++ b/doc/src/sgml/keywords/sql2023-02-nonreserved.txt
@@ -19,6 +19,7 @@ CASCADE
 CATALOG
 CATALOG_NAME
 CHAIN
+CHAINING
 CHARACTER_SET_CATALOG
 CHARACTER_SET_NAME
 CHARACTER_SET_SCHEMA
@@ -30,10 +31,12 @@ COLLATION
 COLLATION_CATALOG
 COLLATION_NAME
 COLLATION_SCHEMA
+COLUMNS
 COLUMN_NAME
 COMMAND_FUNCTION
 COMMAND_FUNCTION_CODE
 COMMITTED
+CONDITIONAL
 CONDITION_NUMBER
 CONNECTION
 CONNECTION_NAME
@@ -43,6 +46,7 @@ CONSTRAINT_SCHEMA
 CONSTRAINTS
 CONSTRUCTOR
 CONTINUE
+COPARTITION
 CURSOR_NAME
 DATA
 DATETIME_INTERVAL_CODE
@@ -62,16 +66,21 @@ DISPATCH
 DOMAIN
 DYNAMIC_FUNCTION
 DYNAMIC_FUNCTION_CODE
+ENCODING
 ENFORCED
+ERROR
 EXCLUDE
 EXCLUDING
 EXPRESSION
 FINAL
+FINISH
 FIRST
 FLAG
 FOLLOWING
+FORMAT
 FORTRAN
 FOUND
+FULFILL
 G
 GENERAL
 GENERATED
@@ -93,7 +102,9 @@ INSTEAD
 INVOKER
 ISOLATION
 K
+KEEP
 KEY
+KEYS
 KEY_MEMBER
 KEY_TYPE
 LAST
@@ -104,6 +115,7 @@ M
 MAP
 MATCHED
 MAXVALUE
+MEASURES
 MESSAGE_LENGTH
 MESSAGE_OCTET_LENGTH
 MESSAGE_TEXT
@@ -112,6 +124,7 @@ MORE
 MUMPS
 NAME
 NAMES
+NESTED
 NESTING
 NEXT
 NFC
@@ -119,10 +132,12 @@ NFD
 NFKC
 NFKD
 NORMALIZED
+NULL_ORDERING
 NULLABLE
 NULLS
 NUMBER
 OBJECT
+OCCURRENCE
 OCTETS
 OPTION
 OPTIONS
@@ -130,6 +145,7 @@ ORDERING
 ORDINALITY
 OTHERS
 OUTPUT
+OVERFLOW
 OVERRIDING
 P
 PAD
@@ -141,14 +157,24 @@ PARAMETER_SPECIFIC_NAME
 PARAMETER_SPECIFIC_SCHEMA
 PARTIAL
 PASCAL
+PASS
+PASSING
+PAST
 PATH
+PERMUTE
+PIPE
 PLACING
+PLAN
 PLI
 PRECEDING
 PRESERVE
+PREV
 PRIOR
+PRIVATE
 PRIVILEGES
+PRUNE
 PUBLIC
+QUOTES
 READ
 RELATIVE
 REPEATABLE
@@ -159,12 +185,14 @@ RETURNED_CARDINALITY
 RETURNED_LENGTH
 RETURNED_OCTET_LENGTH
 RETURNED_SQLSTATE
+RETURNING
 ROLE
 ROUTINE
 ROUTINE_CATALOG
 ROUTINE_NAME
 ROUTINE_SCHEMA
 ROW_COUNT
+SCALAR
 SCALE
 SCHEMA
 SCHEMA_NAME
@@ -174,6 +202,7 @@ SCOPE_SCHEMA
 SECTION
 SECURITY
 SELF
+SEMANTICS
 SEQUENCE
 SERIALIZABLE
 SERVER_NAME
@@ -181,17 +210,20 @@ SESSION
 SETS
 SIMPLE
 SIZE
+SORT_DIRECTION
 SOURCE
 SPACE
 SPECIFIC_NAME
 STATE
 STATEMENT
+STRING
 STRUCTURE
 STYLE
 SUBCLASS_ORIGIN
 T
 TABLE_NAME
 TEMPORARY
+THROUGH
 TIES
 TOP_LEVEL_COUNT
 TRANSACTION
@@ -206,14 +238,20 @@ TRIGGER_SCHEMA
 TYPE
 UNBOUNDED
 UNCOMMITTED
+UNCONDITIONAL
 UNDER
+UNMATCHED
 UNNAMED
 USAGE
 USER_DEFINED_TYPE_CATALOG
 USER_DEFINED_TYPE_CODE
 USER_DEFINED_TYPE_NAME
 USER_DEFINED_TYPE_SCHEMA
+UTF16
+UTF32
+UTF8
 VIEW
 WORK
+WRAPPER
 WRITE
 ZONE
diff --git a/doc/src/sgml/keywords/sql2011-02-reserved.txt 
b/doc/src/sgml/keywords/sql2023-02-reserved.txt
similarity index 86%
rename from doc/src/sgml/keywords/sql2011-02-reserved.txt
rename to doc/src/sgml/keywords/sql2023-02-reserved.txt
index 95f99e7df2..ee364b2470 100644
--- a/doc/src/sgml/keywords/sql2011-02-reserved.txt
+++ b/doc/src/sgml/keywords/sql2023-02-reserved.txt
@@ -1,17 +1,22 @@
 ABS
+ABSENT
+ACOS
 ALL
 ALLOCATE
 ALTER
 AND
 ANY
+ANY_VALUE
 ARE
 ARRAY
 ARRAY_AGG
 ARRAY_MAX_CARDINALITY
 AS
 ASENSITIVE
+ASIN
 ASYMMETRIC
 AT
+ATAN
 ATOMIC
 AUTHORIZATION
 AVG
@@ -24,6 +29,7 @@ BINARY
 BLOB
 BOOLEAN
 BOTH
+BTRIM
 BY
 CALL
 CALLED
@@ -38,6 +44,7 @@ CHAR_LENGTH
 CHARACTER
 CHARACTER_LENGTH
 CHECK
+CLASSIFIER
 CLOB
 CLOSE
 COALESCE
@@ -50,8 +57,11 @@ CONNECT
 CONSTRAINT
 CONTAINS
 CONVERT
+COPY
 CORR
 CORRESPONDING
+COS
+COSH
 COUNT
 COVAR_POP
 COVAR_SAMP
@@ -77,9 +87,11 @@ DATE
 DAY
 DEALLOCATE
 DEC
+DECFLOAT
 DECIMAL
 DECLARE
 DEFAULT
+DEFINE
 DELETE
 DENSE_RANK
 DEREF
@@ -93,6 +105,7 @@ DYNAMIC
 EACH
 ELEMENT
 ELSE
+EMPTY
 END
 END_FRAME
 END_PARTITION
@@ -124,6 +137,7 @@ FUSION
 GET
 GLOBAL
 GRANT
+GREATEST
 GROUP
 GROUPING
 GROUPS
@@ -133,6 +147,7 @@ HOUR
 IDENTITY
 IN
 INDICATOR
+INITIAL
 INNER
 INOUT
 INSENSITIVE
@@ -145,6 +160,18 @@ INTERVAL
 INTO
 IS
 JOIN
+JSON
+JSON_ARRAY
+JSON_ARRAYAGG
+JSON_EXISTS
+JSON_OBJECT
+JSON_OBJECTAGG
+JSON_QUERY
+JSON_SCALAR
+JSON_SERIALIZE
+JSON_TABLE
+JSON_TABLE_PRIMITIVE
+JSON_VALUE
 LAG
 LANGUAGE
 LARGE
@@ -152,15 +179,24 @@ LAST_VALUE
 LATERAL
 LEAD
 LEADING
+LEAST
 LEFT
 LIKE
 LIKE_REGEX
+LISTAGG
 LN
 LOCAL
 LOCALTIME
 LOCALTIMESTAMP
+LOG
+LOG10
 LOWER
+LPAD
+LTRIM
 MATCH
+MATCH_NUMBER
+MATCH_RECOGNIZE
+MATCHES
 MAX
 MEMBER
 MERGE
@@ -186,12 +222,14 @@ NTILE
 NULL
 NULLIF
 NUMERIC
-OCTET_LENGTH
 OCCURRENCES_REGEX
+OCTET_LENGTH
 OF
 OFFSET
 OLD
+OMIT
 ON
+ONE
 ONLY
 OPEN
 OR
@@ -203,6 +241,8 @@ OVERLAPS
 OVERLAY
 PARAMETER
 PARTITION
+PATTERN
+PER
 PERCENT
 PERCENT_RANK
 PERCENTILE_CONT
@@ -217,6 +257,7 @@ PRECISION
 PREPARE
 PRIMARY
 PROCEDURE
+PTF
 RANGE
 RANK
 READS
@@ -245,16 +286,24 @@ ROLLUP
 ROW
 ROW_NUMBER
 ROWS
+RPAD
+RTRIM
+RUNNING
 SAVEPOINT
 SCOPE
 SCROLL
 SEARCH
 SECOND
+SEEK
 SELECT
 SENSITIVE
 SESSION_USER
 SET
+SHOW
 SIMILAR
+SIN
+SINH
+SKIP
 SMALLINT
 SOME
 SPECIFIC
@@ -269,6 +318,7 @@ STATIC
 STDDEV_POP
 STDDEV_SAMP
 SUBMULTISET
+SUBSET
 SUBSTRING
 SUBSTRING_REGEX
 SUCCEEDS
@@ -279,6 +329,8 @@ SYSTEM_TIME
 SYSTEM_USER
 TABLE
 TABLESAMPLE
+TAN
+TANH
 THEN
 TIME
 TIMESTAMP
@@ -291,10 +343,10 @@ TRANSLATE_REGEX
 TRANSLATION
 TREAT
 TRIGGER
-TRUNCATE
 TRIM
 TRIM_ARRAY
 TRUE
+TRUNCATE
 UESCAPE
 UNION
 UNIQUE
diff --git a/doc/src/sgml/keywords/sql2011-09-nonreserved.txt 
b/doc/src/sgml/keywords/sql2023-09-nonreserved.txt
similarity index 100%
rename from doc/src/sgml/keywords/sql2011-09-nonreserved.txt
rename to doc/src/sgml/keywords/sql2023-09-nonreserved.txt
diff --git a/doc/src/sgml/keywords/sql2011-09-reserved.txt 
b/doc/src/sgml/keywords/sql2023-09-reserved.txt
similarity index 100%
rename from doc/src/sgml/keywords/sql2011-09-reserved.txt
rename to doc/src/sgml/keywords/sql2023-09-reserved.txt
index 0205485766..92b658d6ef 100644
--- a/doc/src/sgml/keywords/sql2011-09-reserved.txt
+++ b/doc/src/sgml/keywords/sql2023-09-reserved.txt
@@ -2,11 +2,11 @@ DATALINK
 DLNEWCOPY
 DLPREVIOUSCOPY
 DLURLCOMPLETE
-DLURLCOMPLETEWRITE
 DLURLCOMPLETEONLY
+DLURLCOMPLETEWRITE
 DLURLPATH
-DLURLPATHWRITE
 DLURLPATHONLY
+DLURLPATHWRITE
 DLURLSCHEME
 DLURLSERVER
 DLVALUE
diff --git a/doc/src/sgml/keywords/sql2011-14-nonreserved.txt 
b/doc/src/sgml/keywords/sql2023-14-nonreserved.txt
similarity index 86%
rename from doc/src/sgml/keywords/sql2011-14-nonreserved.txt
rename to doc/src/sgml/keywords/sql2023-14-nonreserved.txt
index 317f651f0e..5ba8fa57d7 100644
--- a/doc/src/sgml/keywords/sql2011-14-nonreserved.txt
+++ b/doc/src/sgml/keywords/sql2023-14-nonreserved.txt
@@ -1,11 +1,9 @@
-ABSENT
 ACCORDING
 BASE64
 BOM
 COLUMNS
 CONTENT
 DOCUMENT
-EMPTY
 ENCODING
 HEX
 ID
@@ -13,10 +11,8 @@ INDENT
 LOCATION
 NAMESPACE
 NIL
-PASSING
 PATH
 PRESERVE
-RETURNING
 SEQUENCE
 STANDALONE
 STRIP
@@ -25,5 +21,5 @@ URI
 VALID
 VERSION
 WHITESPACE
-XMLSCHEMA
 XMLDECLARATION
+XMLSCHEMA
diff --git a/doc/src/sgml/keywords/sql2011-14-reserved.txt 
b/doc/src/sgml/keywords/sql2023-14-reserved.txt
similarity index 100%
rename from doc/src/sgml/keywords/sql2011-14-reserved.txt
rename to doc/src/sgml/keywords/sql2023-14-reserved.txt
-- 
2.39.2

From 4e95c8fc73c49da8f38ee18439280c1269163c60 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <pe...@eisentraut.org>
Date: Wed, 1 Mar 2023 09:52:26 +0100
Subject: [PATCH v1 3/3] doc: Remove subfeatures from SQL features listing

Non-optional subfeatures have been removed from SQL:2023.  The
remaining mandatory subfeature specifications are poorly defined and
not very interesting.  By removing them we can save some complexity in
the tooling and the final presentation.

TODO: Remove the columns for the subfeatures in 
src/backend/catalog/sql_features.txt.
---
 doc/src/sgml/features.sgml           |   8 --
 doc/src/sgml/mk_feature_tables.pl    |  22 +----
 src/backend/catalog/sql_features.txt | 141 ---------------------------
 3 files changed, 4 insertions(+), 167 deletions(-)

diff --git a/doc/src/sgml/features.sgml b/doc/src/sgml/features.sgml
index 575afa3476..44611e0509 100644
--- a/doc/src/sgml/features.sgml
+++ b/doc/src/sgml/features.sgml
@@ -98,14 +98,6 @@ <title>SQL Conformance</title>
   information about what does and does not work.
  </para>
 
- <note>
-  <para>
-   Feature codes containing a hyphen are subfeatures.  Therefore, if a
-   particular subfeature is not supported, the main feature is listed
-   as unsupported even if some other subfeatures are supported.
-  </para>
- </note>
-
   <sect1 id="features-sql-standard">
    <title>Supported Features</title>
 
diff --git a/doc/src/sgml/mk_feature_tables.pl 
b/doc/src/sgml/mk_feature_tables.pl
index 5a16da0d06..f519935f74 100644
--- a/doc/src/sgml/mk_feature_tables.pl
+++ b/doc/src/sgml/mk_feature_tables.pl
@@ -37,36 +37,22 @@
        my ($feature_id,      $feature_name, $subfeature_id,
                $subfeature_name, $is_supported, $comments) = split /\t/;
 
+       die if $subfeature_id;  # XXX
+
        $is_supported eq $yesno || next;
 
        $feature_name =~ s/</&lt;/g;
        $feature_name =~ s/>/&gt;/g;
-       $subfeature_name =~ s/</&lt;/g;
-       $subfeature_name =~ s/>/&gt;/g;
 
        print " <row>\n";
 
-       if ($subfeature_id)
-       {
-               print "  <entry>$feature_id-$subfeature_id</entry>\n";
-       }
-       else
-       {
-               print "  <entry>$feature_id</entry>\n";
-       }
+       print "  <entry>$feature_id</entry>\n";
        print "  <entry>",
          defined($feature_packages{$feature_id})
          ? $feature_packages{$feature_id}
          : "",
          "</entry>\n";
-       if ($subfeature_id)
-       {
-               print "  <entry>$subfeature_name</entry>\n";
-       }
-       else
-       {
-               print "  <entry>$feature_name</entry>\n";
-       }
+       print "  <entry>$feature_name</entry>\n";
        print "  <entry>$comments</entry>\n";
 
        print " </row>\n";
diff --git a/src/backend/catalog/sql_features.txt 
b/src/backend/catalog/sql_features.txt
index fc5c2a20bd..03ae11fc64 100644
--- a/src/backend/catalog/sql_features.txt
+++ b/src/backend/catalog/sql_features.txt
@@ -43,127 +43,26 @@ B209       PTF extended names                      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   Host language binding                   YES     
 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     
@@ -172,22 +71,7 @@ F036        REVOKE statement performed by non-owner         
        YES
 F037   REVOKE statement: GRANT OPTION FOR clause                       YES     
 F038   REVOKE of a WITH GRANT OPTION privilege                 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      
@@ -202,11 +86,6 @@ F122        Enhanced diagnostics management                 
NO
 F123   All diagnostics                 NO      
 F124   SET TRANSACTION statement: DIAGNOSTICS SIZE clause                      
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                 YES     
 F191   Referential delete actions                      YES     
@@ -218,10 +97,6 @@ F222        INSERT statement: DEFAULT VALUES clause         
        YES
 F231   Privilege tables                        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     
@@ -231,15 +106,9 @@ F292       UNIQUE null treatment                   YES
 F301   CORRESPONDING in query expressions                      NO      
 F302   INTERSECT table operator                        YES     
 F303   INTERSECT DISTINCT table operator                       YES     
-F302   INTERSECT table operator        02      INTERSECT ALL table operator    
YES     
 F304   EXCEPT ALL table operator                       YES     
 F305   INTERSECT ALL table operator                    YES     
 F311   Schema definition statement                     YES     
-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                 YES     
 F313   Enhanced MERGE statement                        YES     
 F314   MERGE statement with DELETE branch                      YES     
@@ -284,8 +153,6 @@ 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     
 F502   Enhanced documentation tables                   YES     
 F521   Assertions                      NO      
 F531   Temporary tables                        YES     
@@ -352,7 +219,6 @@ R010        Row pattern recognition: FROM clause            
        NO
 R020   Row pattern recognition: WINDOW clause                  NO      
 R030   Row pattern recognition: full aggregate support                 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      
@@ -471,13 +337,6 @@ T285       Enhanced derived column names                   
YES
 T301   Functional dependencies                 NO      partially supported
 T312   OVERLAY function                        YES     
 T321   Basic SQL-invoked routines                      NO      partially 
supported
-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      YES     
-T321   Basic SQL-invoked routines      03      Function invocation     YES     
-T321   Basic SQL-invoked routines      04      CALL statement  YES     
-T321   Basic SQL-invoked routines      05      RETURN statement        YES     
-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      
-- 
2.39.2

Reply via email to