Update feature list for SQL:2008.
authorPeter Eisentraut <peter_e@gmx.net>
Sat, 18 Oct 2008 00:35:32 +0000 (00:35 +0000)
committerPeter Eisentraut <peter_e@gmx.net>
Sat, 18 Oct 2008 00:35:32 +0000 (00:35 +0000)
doc/src/sgml/features.sgml
doc/src/sgml/mk_feature_tables.pl
src/backend/catalog/sql_features.txt

index eae4ba5a11b42c445331e4c5535ff7c08fde525c..749a56354076e49485df1019b10cebafb48b0daa 100644 (file)
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/features.sgml,v 2.27 2007/02/03 17:59:35 petere Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/features.sgml,v 2.28 2008/10/18 00:35:32 petere Exp $ -->
 
 <appendix id="features">
  <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 full update appearing in 2003,
-  with a partial update appearing in 2006.  The 2003 version is
-  referred to as ISO/IEC 9075:2003, or simply as SQL:2003.  The
-  versions prior to that were SQL:1999 and SQL-92.  Each version
+  from time to time; the most recent update appearing in 2008.
+  The 2008 version is referred to as ISO/IEC 9075:2008, or simply as SQL:2008.
+  The versions prior to that were SQL:2003, SQL:1999, and SQL-92.  Each version
   replaces the previous one, so claims of conformance to earlier
   versions have no official merit.
   <productname>PostgreSQL</productname> development aims for
@@ -53,7 +52,8 @@
  </para>
 
  <para>
-  The <acronym>SQL:2003</acronym> standard is also split into a number
+  The <acronym>SQL:2008</acronym> and <acronym>SQL:2003</acronym>
+  standard versions are also split into a number
   of parts.  Each is known by a shorthand name.  Note that these parts
   are not consecutively numbered.
 
  </para>
 
  <para>
-  PostgreSQL supports most of the major features of SQL:2003.  Out of
-  164 mandatory features required for full Core conformance,
-  PostgreSQL conforms to at least 150.  In addition, there is a long
+  PostgreSQL supports most of the major features of SQL:2008.  Out of
+  179 mandatory features required for full Core conformance,
+  PostgreSQL conforms to at least 160.  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:2003.
+  system claims full conformance to Core SQL:2008.
  </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:2003</acronym> which
+  list of the features defined in <acronym>SQL:2008</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
    <title>Unsupported Features</title>
 
    <para>
-    The following features defined in <acronym>SQL:2003</acronym> are not
+    The following features defined in <acronym>SQL:2008</acronym> are not
     implemented in this release of
     <productname>PostgreSQL</productname>. In a few cases, equivalent
     functionality is available.
index 7b4f45f3de196b5f0ff8bf5fa49049dbd0cfea1d..5dad68b809dae43a4c3027c90337ac7467a75a21 100644 (file)
@@ -1,6 +1,6 @@
 # /usr/bin/perl -w
 
-# $PostgreSQL: pgsql/doc/src/sgml/mk_feature_tables.pl,v 2.2 2006/03/11 04:38:30 momjian Exp $
+# $PostgreSQL: pgsql/doc/src/sgml/mk_feature_tables.pl,v 2.3 2008/10/18 00:35:32 petere Exp $
 
 my $yesno = $ARGV[0];
 
@@ -30,6 +30,8 @@ while (<FEAT>) {
 
     $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;
 
index ba3f3a9046e3414698b98648ef88c50cbcea34f7..0fedc5729b40e0ff71fcf6a496b43bd9e9c03699 100644 (file)
@@ -11,6 +11,7 @@ B032  Extended dynamic SQL            NO
 B032   Extended dynamic SQL    01  <describe input statement>  NO  
 B033   Untyped SQL-invoked function arguments          NO  
 B034   Dynamic specification of cursor attributes          NO  
+B035   Non-extended descriptor names           NO  
 B041   Extensions to embedded SQL exception declarations           NO  
 B051   Enhanced execution rights           NO  
 B111   Module language Ada         NO  
@@ -106,13 +107,13 @@ 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            NO  
+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 NO  
-E121   Basic cursor support    07  Positioned DELETE statement NO  
+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 
@@ -184,6 +185,8 @@ F111    Isolation levels other than SERIALIZABLE    03  REPEATABLE READ isolation level
 F121   Basic diagnostics management            NO  
 F121   Basic diagnostics management    01  GET DIAGNOSTICS statement   NO  
 F121   Basic diagnostics management    02  SET TRANSACTION statement: DIAGNOSTICS SIZE clause  NO  
+F122   Enhanced diagnostics management         NO  
+F123   All diagnostics         NO  
 F131   Grouped operations          YES 
 F131   Grouped operations  01  WHERE, GROUP BY, and HAVING clauses supported in queries with grouped views YES 
 F131   Grouped operations  02  Multiple tables supported in queries with grouped views YES 
@@ -193,7 +196,9 @@ F131    Grouped operations  05  Single row SELECT with GROUP BY and HAVING clauses an
 F171   Multiple schemas per user           YES 
 F181   Multiple module support         NO  
 F191   Referential delete actions          YES 
+F200   TRUNCATE TABLE statement            YES 
 F201   CAST function           YES 
+F202   TRUNCATE TABLE: identity column restart option          NO  
 F221   Explicit defaults           YES 
 F222   INSERT statement: DEFAULT VALUES clause         YES 
 F231   Privilege tables            YES 
@@ -223,6 +228,7 @@ F311    Schema definition statement 03  CREATE VIEW YES
 F311   Schema definition statement 04  CREATE VIEW: WITH CHECK OPTION  NO  
 F311   Schema definition statement 05  GRANT statement YES 
 F312   MERGE statement         NO  
+F313   Enhanced MERGE statement            NO  
 F321   User authorization          YES 
 F341   Usage tables            NO  
 F361   Subprogram support          YES 
@@ -230,14 +236,17 @@ 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          NO  PostgreSQL syntax differs
 F391   Long identifiers            YES 
 F392   Unicode escapes in identifiers          NO  
 F393   Unicode escapes in literals         NO  
+F394   Optional normal form specification          NO  
 F401   Extended joined table           YES 
 F401   Extended joined table   01  NATURAL JOIN    YES 
 F401   Extended joined table   02  FULL OUTER JOIN YES 
 F401   Extended joined table   04  CROSS JOIN  YES 
 F402   Named column joins for LOBs, arrays, and multisets          NO  
+F403   Partitioned joined tables           NO  
 F411   Time zone specification         YES differences regarding literal interpretation
 F421   National character          YES 
 F431   Read-only scrollable cursors            YES 
@@ -274,7 +283,7 @@ F651    Catalog name qualifiers         YES
 F661   Simple tables           NO  
 F671   Subqueries in CHECK         NO  intentionally omitted
 F672   Retrospective check constraints         YES 
-F691   Collation and translation           NO  
+F690   Collation support           NO  
 F692   Enhanced collation support          NO  
 F693   SQL-session and client module collations            NO  
 F695   Translation support         NO  
@@ -286,17 +295,39 @@ F731  INSERT column privileges            NO
 F741   Referential MATCH types         NO  no partial match yet
 F751   View CHECK enhancements         NO  
 F761   Session management          YES 
+F762   CURRENT_CATALOG         NO  same as current_database()
+F763   CURRENT_SCHEMA          NO  same as current_schema()
 F771   Connection management           YES 
 F781   Self-referencing operations         YES 
 F791   Insensitive cursors         YES 
 F801   Full set function           YES 
-F811   Extended flagging           NO  
 F812   Basic flagging          NO  
 F813   Extended flagging           NO  
 F821   Local table references          NO  
 F831   Full cursor update          NO  
 F831   Full cursor update  01  Updatable scrollable cursors    NO  
 F831   Full cursor update  02  Updatable ordered cursors   NO  
+F841   LIKE_REGEX predicate            NO  
+F842   OCCURENCES_REGEX function           NO  
+F843   POSITION_REGEX function         NO  
+F844   SUBSTRING_REGEX function            NO  
+F845   TRANSLATE_REGEX function            NO  
+F846   Octet support in regular expression operators           NO  
+F847   Nonconstant regular expressions         NO  
+F850   Top-level <order by clause> in <query expression>           YES 
+F851   <order by clause> in subqueries         YES 
+F852   Top-level <order by clause> in views            YES 
+F855   Nested <order by clause> in <query expression>          YES 
+F856   Nested <fetch first clause> in <query expression>           YES 
+F857   Top-level <fetch first clause> in <query expression>            NO  same as LIMIT
+F858   <fetch first clause> in subqueries          NO  same as LIMIT
+F859   Top-level <fetch first clause> in views         NO  same as LIMIT
+F860   <fetch first row count> in <fetch first clause>         NO  same as LIMIT
+F861   Top-level <result offset clause> in <query expression>          NO  same as OFFSET
+F862   <result offset clause> in subqueries            NO  same as OFFSET
+F863   Nested <result offset clause> in <query expression>         NO  same as OFFSET
+F864   Top-level <result offset clause> in views           NO  same as OFFSET
+F865   <offset row count> in <result offset clause>            NO  same as OFFSET
 S011   Distinct data types         NO  
 S011   Distinct data types 01  USER_DEFINED_TYPES view NO  
 S023   Basic structured types          NO  
@@ -319,6 +350,7 @@ S094    Arrays of reference types           NO
 S095   Array constructors by query         NO  
 S096   Optional array bounds           NO  
 S097   Array element assignment            NO  
+S098   ARRAY_AGG           NO  
 S111   ONLY in query expressions           YES 
 S151   Type predicate          NO  
 S161   Subtype treatment           NO  
@@ -341,7 +373,16 @@ S274   Multisets of reference types            NO
 S275   Advanced multiset support           NO  
 S281   Nested collection types         NO  
 S291   Unique constraint on entire row         NO  
+S301   Enhanced UNNEST         NO  
+S401   Distinct types based on array types         NO  
+S402   Distinct types based on distinct types          NO  
+S403   MAX_CARDINALITY         NO  
+S404   TRIM_ARRAY          NO  
 T011   Timestamp in Information Schema         NO  
+T021   BINARY and VARBINARY data types         NO  
+T022   Advanced support for BINARY and VARBINARY data types            NO  
+T023   Compound binary literal         NO  
+T024   Spaces in binary literals           NO  
 T031   BOOLEAN data type           YES 
 T041   Basic LOB data type support         NO  
 T041   Basic LOB data type support 01  BLOB data type  NO  
@@ -350,11 +391,14 @@ T041  Basic LOB data type support 03  POSITION, LENGTH, LOWER, TRIM, UPPER, and SU
 T041   Basic LOB data type support 04  Concatenation of LOB data types NO  
 T041   Basic LOB data type support 05  LOB locator: non-holdable   NO  
 T042   Extended LOB data type support          NO  
+T043   Multiplier T            NO  
+T044   Multiplier P            NO  
 T051   Row types           NO  
 T052   MAX and MIN for row types           NO  
 T053   Explicit aliases for all-fields reference           NO  
 T061   UCS support         NO  
 T071   BIGINT data type            YES 
+T101   Enhanced nullability determiniation         NO  
 T111   Updatable joins, unions, and columns            NO  
 T121   WITH (excluding RECURSIVE) in query expression          NO  
 T122   WITH (excluding RECURSIVE) in subquery          NO  
@@ -369,6 +413,8 @@ T173    Extended LIKE clause in table definition            NO
 T174   Identity columns            NO  
 T175   Generated columns           NO  
 T176   Sequence generator support          NO  
+T177   Sequence generator support: simple restart option           NO  
+T178   Identity columns:  simple restart option            NO  
 T191   Referential action RESTRICT         YES 
 T201   Comparable data types for referential constraints           YES 
 T211   Basic trigger capability            NO  
@@ -381,6 +427,7 @@ T211    Basic trigger capability    06  Support for run-time rules for the interaction
 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         NO  
 T231   Sensitive cursors           YES 
 T241   START TRANSACTION statement         YES 
 T251   SET TRANSACTION statement: LOCAL option         NO  
@@ -388,6 +435,7 @@ T261    Chained transactions            NO
 T271   Savepoints          YES 
 T272   Enhanced savepoint management           NO  
 T281   SELECT privilege with column granularity            NO  
+T285   Enhanced derived column names           NO  
 T301   Functional dependencies         NO  
 T312   OVERLAY function            YES 
 T321   Basic SQL-invoked routines          NO  
@@ -429,6 +477,11 @@ T601   Local cursor references         NO
 T611   Elementary OLAP operations          NO  
 T612   Advanced OLAP operations            NO  
 T613   Sampling            NO  
+T614   NTILE function          NO  
+T615   LEAD and LAG functions          NO  
+T616   Null treatment option for LEAD and LAG functions            NO  
+T617   FIRST_VALUE and LAST_VALUE function         NO  
+T618   NTH_VALUE function          NO  
 T621   Enhanced numeric functions          NO  
 T631   IN predicate with one list element          NO  
 T641   Multiple column assignment          NO  
@@ -444,14 +497,17 @@ X013  Distinct types of XML type          NO
 X014   Attributes of XML type          NO  
 X015   Fields of XML type          NO  
 X016   Persistent XML values           YES 
-X020   XML concatenation           YES 
+X020   XMLConcat           YES 
+X025   XMLCast         NO  
+X030   XMLDocument         NO  
 X031   XMLElement          YES 
 X032   XMLForest           YES 
-X033   XMLRoot         YES 
 X034   XMLAgg          YES 
 X035   XMLAgg: ORDER BY option         NO  
 X036   XMLComment          YES 
 X037   XMLPI           YES 
+X038   XMLText         NO  
+X040   Basic table mapping         NO  
 X041   Basic table mapping: nulls absent           YES 
 X042   Basic table mapping: null as nil            YES 
 X043   Basic table mapping: table as forest            YES 
@@ -470,21 +526,38 @@ X056  Advanced table mapping: data mapping            YES
 X057   Advanced table mapping: metadata mapping            YES 
 X058   Advanced table mapping: base64 encoding of binary strings           YES 
 X059   Advanced table mapping: hex encoding of binary strings          YES 
-X060   XMLParse: CONTENT option            YES 
-X061   XMLParse: DOCUMENT option           YES 
-X062   XMLParse: explicit WHITESPACE option            YES 
-X070   XMLSerialize: CONTENT option            YES 
-X071   XMLSerialize: DOCUMENT option           YES 
+X060   XMLParse: Character string input and CONTENT option         YES 
+X061   XMLParse: Character string input and DOCUMENT option            YES 
+X065   XMLParse: BLOB input and CONTENT option         NO  
+X066   XMLParse: BLOB input and DOCUMENT option            NO  
+X068   XMLSerialize: BOM           NO  
+X069   XMLSerialize: INDENT            NO  
+X070   XMLSerialize: Character string serialization and CONTENT option         YES 
+X071   XMLSerialize: Character string serialization and DOCUMENT option            YES 
+X072   XMLSerialize: Character string serialization            YES 
+X073   XMLSerialize: BLOB serialization and CONTENT option         NO  
+X074   XMLSerialize: BLOB serialization and DOCUMENT option            NO  
+X075   XMLSerialize: BLOB serialization            NO  
+X076   XMLSerialize: VERSION           NO  
+X077   XMLSerialize: explicit ENCODING option          NO  
+X078   XMLSerialize: explicit XML declaration          NO  
 X080   Namespaces in XML publishing            NO  
 X081   Query-level XML namespace declarations          NO  
 X082   XML namespace declarations in DML           NO  
 X083   XML namespace declarations in DDL           NO  
 X084   XML namespace declarations in compound statements           NO  
+X085   Predefined namespace prefixes           NO  
+X086   XML namespace declarations in XMLTable
 X090   XML document predicate          YES 
+X091   XML content predicate           NO  
+X096   XMLExists           NO  
 X100   Host language support for XML: CONTENT option           NO  
 X101   Host language support for XML: DOCUMENT option          NO  
 X110   Host language support for XML: VARCHAR mapping          NO  
 X111   Host language support for XML: CLOB mapping         NO  
+X112   Host language support for XML: BLOB mapping         NO  
+X113   Host language support for XML: STRIP WHITESPACE option          NO  
+X114   Host language support for XML: PRESERVE WHITESPACE option           NO  
 X120   XML parameters in SQL routines          YES 
 X121   XML parameters in external routines         YES 
 X131   Query-level XMLBINARY clause            NO  
@@ -492,3 +565,63 @@ X132   XMLBINARY clause in DML         NO
 X133   XMLBINARY clause in DDL         NO  
 X134   XMLBINARY clause in compound statements         NO  
 X135   XMLBINARY clause in subqueries          NO  
+X141   IS VALID predicate: data-driven case            NO  
+X142   IS VALID predicate: ACCORDING TO clause         NO  
+X143   IS VALID predicate: ELEMENT clause          NO  
+X144   IS VALID predicate: schema location         NO  
+X145   IS VALID predicate outside check constraints            NO  
+X151   IS VALID predicate with DOCUMENT option         NO  
+X152   IS VALID predicate with CONTENT option          NO  
+X153   IS VALID predicate with SEQUENCE option         NO  
+X155   IS VALID predicate: NAMESPACE without ELEMENT clause            NO  
+X157   IS VALID predicate: NO NAMESPACE with ELEMENT clause            NO  
+X160   Basic Information Schema for registered XML Schemas         NO  
+X161   Advanced Information Schema for registered XML Schemas          NO  
+X170   XML null handling options           NO  
+X171   NIL ON NO CONTENT option            NO  
+X181   XML(DOCUMENT(UNTYPED)) type         NO  
+X182   XML(DOCUMENT(ANY)) type         NO  
+X190   XML(SEQUENCE) type          NO  
+X191   XML(DOCUMENT(XMLSCHEMA)) type           NO  
+X192   XML(CONTENT(XMLSCHEMA)) type            NO  
+X200   XMLQuery            NO  
+X201   XMLQuery: RETURNING CONTENT         NO  
+X202   XMLQuery: RETURNING SEQUENCE            NO  
+X203   XMLQuery: passing a context item            NO  
+X204   XMLQuery: initializing an XQuery variable           NO  
+X205   XMLQuery: EMPTY ON EMPTY option         NO  
+X206   XMLQuery: NULL ON EMPTY option          NO  
+X211   XML 1.1 support         NO  
+X221   XML passing mechanism BY VALUE          NO  
+X222   XML passing mechanism BY REF            NO  
+X231   XML(CONTENT(UNTYPED)) type          NO  
+X232   XML(CONTENT(ANY)) type          NO  
+X241   RETURNING CONTENT in XML publishing         NO  
+X242   RETURNING SEQUENCE in XML publishing            NO  
+X251   Persistent XML values of XML(DOCUMENT(UNTYPED)) type            NO  
+X252   Persistent XML values of XML(DOCUMENT(ANY)) type            NO  
+X253   Persistent XML values of XML(CONTENT(UNTYPED)) type         NO  
+X254   Persistent XML values of XML(CONTENT(ANY)) type         NO  
+X255   Persistent XML values of XML(SEQUENCE) type         NO  
+X256   Persistent XML values of XML(DOCUMENT(XMLSCHEMA)) type          NO  
+X257   Persistent XML values of XML(CONTENT(XMLSCHEMA)) type           NO  
+X260   XML type: ELEMENT clause            NO  
+X261   XML type: NAMESPACE without ELEMENT clause          NO  
+X263   XML type: NO NAMESPACE with ELEMENT clause          NO  
+X264   XML type: schema location           NO  
+X271   XMLValidate: data-driven case           NO  
+X272   XMLValidate: ACCORDING TO clause            NO  
+X273   XMLValidate: ELEMENT clause         NO  
+X274   XMLValidate: schema location            NO  
+X281   XMLValidate: with DOCUMENT option           NO  
+X282   XMLValidate with CONTENT option         NO  
+X283   XMLValidate with SEQUENCE option            NO  
+X284   XMLValidate NAMESPACE without ELEMENT clause            NO  
+X286   XMLValidate: NO NAMESPACE with ELEMENT clause           NO  
+X300   XMLTable            NO  
+X301   XMLTable: derived column list option            NO  
+X302   XMLTable: ordinality column option          NO  
+X303   XMLTable: column default option         NO  
+X304   XMLTable: passing a context item            NO  
+X305   XMLTable: initializing an XQuery variable           NO  
+X400   Name and identifier mapping         NO