diff --git a/doc/src/sgml/features.sgml b/doc/src/sgml/features.sgml index eae4ba5a11b42c445331e4c5535ff7c08fde525c..749a56354076e49485df1019b10cebafb48b0daa 100644 --- a/doc/src/sgml/features.sgml +++ b/doc/src/sgml/features.sgml @@ -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> @@ -14,10 +14,9 @@ <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. @@ -79,18 +79,18 @@ </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 @@ -133,7 +133,7 @@ <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. diff --git a/doc/src/sgml/mk_feature_tables.pl b/doc/src/sgml/mk_feature_tables.pl index 7b4f45f3de196b5f0ff8bf5fa49049dbd0cfea1d..5dad68b809dae43a4c3027c90337ac7467a75a21 100644 --- a/doc/src/sgml/mk_feature_tables.pl +++ b/doc/src/sgml/mk_feature_tables.pl @@ -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/</</g; + $feature_name =~ s/>/>/g; $subfeature_name =~ s/</</g; $subfeature_name =~ s/>/>/g; diff --git a/src/backend/catalog/sql_features.txt b/src/backend/catalog/sql_features.txt index ba3f3a9046e3414698b98648ef88c50cbcea34f7..0fedc5729b40e0ff71fcf6a496b43bd9e9c03699 100644 --- a/src/backend/catalog/sql_features.txt +++ b/src/backend/catalog/sql_features.txt @@ -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