documentation updates for SQL:2023

Started by Peter Eisentrautalmost 3 years ago2 messages
#1Peter Eisentraut
peter.eisentraut@enterprisedb.com
3 attachment(s)

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.

Attachments:

v1-0001-doc-Update-SQL-features-list-for-SQL-2023.patchtext/plain; charset=UTF-8; name=v1-0001-doc-Update-SQL-features-list-for-SQL-2023.patchDownload
From 119129bd2e001c7c3b70af79ab89c414cd207b02 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@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

v1-0002-doc-Update-SQL-keywords-list-for-SQL-2023.patchtext/plain; charset=UTF-8; name=v1-0002-doc-Update-SQL-keywords-list-for-SQL-2023.patchDownload
From 835e2cd9406273895eeaf4748eb27d68db5b3d5a Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@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

v1-0003-doc-Remove-subfeatures-from-SQL-features-listing.patchtext/plain; charset=UTF-8; name=v1-0003-doc-Remove-subfeatures-from-SQL-features-listing.patchDownload
From 4e95c8fc73c49da8f38ee18439280c1269163c60 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@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

#2Peter Eisentraut
peter.eisentraut@enterprisedb.com
In reply to: Peter Eisentraut (#1)
Re: documentation updates for SQL:2023

On 01.03.23 10:12, Peter Eisentraut wrote:

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 have committed these patches.

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 have dropped this for now. This got a little bit more complicated
than I had hoped, since the sql_features.txt file is also loaded into
the information schema in initdb, and I didn't want to reorganize that
right now. Something to revisit some other time, perhaps.