Add sql_features table to information schema. Generate the features list
authorPeter Eisentraut <peter_e@gmx.net>
Tue, 14 Jan 2003 23:19:34 +0000 (23:19 +0000)
committerPeter Eisentraut <peter_e@gmx.net>
Tue, 14 Jan 2003 23:19:34 +0000 (23:19 +0000)
in the documentation from that same data.

doc/src/sgml/Makefile
doc/src/sgml/features.sgml
doc/src/sgml/filelist.sgml
doc/src/sgml/mk_feature_tables.pl [new file with mode: 0644]
src/backend/catalog/Makefile
src/backend/catalog/information_schema.sql
src/backend/catalog/sql_feature_packages.txt [new file with mode: 0644]
src/backend/catalog/sql_features.txt [new file with mode: 0644]
src/bin/initdb/initdb.sh

index 93c3c62bb5995ac7ddee1594b7bc97d47b6e8a28..1bbf18b079a564c116d3148938b10cbd0ab88d2e 100644 (file)
@@ -8,7 +8,7 @@
 #
 #
 # IDENTIFICATION
-#    $Header: /cvsroot/pgsql/doc/src/sgml/Makefile,v 1.54 2002/11/26 19:22:16 momjian Exp $
+#    $Header: /cvsroot/pgsql/doc/src/sgml/Makefile,v 1.55 2003/01/14 23:19:34 petere Exp $
 #
 #----------------------------------------------------------------------------
 
@@ -52,7 +52,10 @@ vpath %.sgml ./ref
 
 ALLBOOKS = admin developer programmer reference tutorial user
 
-ALLSGML := $(wildcard $(srcdir)/*.sgml $(srcdir)/ref/*.sgml) bookindex.sgml setindex.sgml version.sgml
+GENERATED_SGML = bookindex.sgml setindex.sgml version.sgml \
+   features-supported.sgml features-unsupported.sgml
+
+ALLSGML := $(wildcard $(srcdir)/*.sgml $(srcdir)/ref/*.sgml) $(GENERATED_SGML)
 
 ifdef DOCBOOKSTYLE
 CATALOG = -c $(DOCBOOKSTYLE)/catalog
@@ -125,6 +128,12 @@ version.sgml: $(top_builddir)/src/Makefile.global
      echo "<!entity majorversion \"`expr $(VERSION) : '\([0-9][0-9]*\.[0-9][0-9]*\)'`\">"; \
    } >$@
 
+features-supported.sgml: $(top_srcdir)/src/backend/catalog/sql_feature_packages.txt $(top_srcdir)/src/backend/catalog/sql_features.txt
+   $(PERL) $(srcdir)/mk_feature_tables.pl YES $^ > $@
+
+features-unsupported.sgml: $(top_srcdir)/src/backend/catalog/sql_feature_packages.txt $(top_srcdir)/src/backend/catalog/sql_features.txt
+   $(PERL) $(srcdir)/mk_feature_tables.pl NO $^ > $@
+
 
 ##
 ## Print
@@ -218,10 +227,10 @@ regress_README.html: regress.sgml
 check: $(addprefix check-, $(ALLBOOKS)) check-postgres
 
 # Quick syntax check without style processing
-$(addprefix check-, $(ALLBOOKS)): check-%: %.sgml bookindex.sgml
+$(addprefix check-, $(ALLBOOKS)): check-%: %.sgml $(ALLSGML)
    $(NSGMLS) $(SGMLINCLUDE) -s book-decl.sgml $<
 
-check-postgres: postgres.sgml setindex.sgml
+check-postgres: postgres.sgml $(ALLSGML)
    $(NSGMLS) $(SGMLINCLUDE) -s $<
 
 
@@ -237,4 +246,4 @@ clean distclean maintainer-clean:
 # print
    rm -f *.rtf *.tex-ps *.tex-pdf *.dvi *.aux *.log *.ps *.pdf *.out *.eps *.fot
 # index
-   rm -f HTML.index bookindex.sgml setindex.sgml version.sgml
+   rm -f HTML.index $(GENERATED_SGML)
index 9c7cc471935504028dea7898d33c4a20d80c7430..e86b36d39cb6217424e82b667490d91b80315482 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/features.sgml,v 2.14 2003/01/10 22:03:26 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/features.sgml,v 2.15 2003/01/14 23:19:34 petere Exp $
 -->
 
 <appendix id="features">
@@ -92,2217 +92,36 @@ $Header: /cvsroot/pgsql/doc/src/sgml/features.sgml,v 2.14 2003/01/10 22:03:26 pe
         <entry>Comment</entry>
        </row>
       </thead>
-      <tbody>
-       <row>
-        <entry>B012</entry>
-        <entry>Core</entry>
-        <entry>Embedded C</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>B021</entry>
-        <entry></entry>
-        <entry>Direct SQL</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E011</entry>
-        <entry>Core</entry>
-        <entry>Numeric data types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E011-01</entry>
-        <entry>Core</entry>
-        <entry>INTEGER and SMALLINT data types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E011-02</entry>
-        <entry>Core</entry>
-        <entry>REAL, DOUBLE PRECISON, and FLOAT data types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E011-03</entry>
-        <entry>Core</entry>
-        <entry>DECIMAL and NUMERIC data types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E011-04</entry>
-        <entry>Core</entry>
-        <entry>Arithmetic operators</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E011-05</entry>
-        <entry>Core</entry>
-        <entry>Numeric comparison</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E011-06</entry>
-        <entry>Core</entry>
-        <entry>Implicit casting among the numeric data types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E021</entry>
-        <entry>Core</entry>
-        <entry>Character data types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E021-01</entry>
-        <entry>Core</entry>
-        <entry>CHARACTER data type</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E021-02</entry>
-        <entry>Core</entry>
-        <entry>CHARACTER VARYING data type</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E021-03</entry>
-        <entry>Core</entry>
-        <entry>Character literals</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E021-04</entry>
-        <entry>Core</entry>
-        <entry>CHARACTER_LENGTH function</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E021-05</entry>
-        <entry>Core</entry>
-        <entry>OCTET_LENGTH function</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E021-06</entry>
-        <entry>Core</entry>
-        <entry>SUBSTRING function</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E021-07</entry>
-        <entry>Core</entry>
-        <entry>Character concatenation</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E021-08</entry>
-        <entry>Core</entry>
-        <entry>UPPER and LOWER functions</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E021-09</entry>
-        <entry>Core</entry>
-        <entry>TRIM function</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E021-10</entry>
-        <entry>Core</entry>
-        <entry>Implicit casting among the character data types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E021-11</entry>
-        <entry>Core</entry>
-        <entry>POSITION function</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E011-12</entry>
-        <entry>Core</entry>
-        <entry>Character comparison</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E031</entry>
-        <entry>Core</entry>
-        <entry>Identifiers</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E031-01</entry>
-        <entry>Core</entry>
-        <entry>Delimited identifiers</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E031-02</entry>
-        <entry>Core</entry>
-        <entry>Lower case identifiers</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E031-03</entry>
-        <entry>Core</entry>
-        <entry>Trailing underscore</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E051</entry>
-        <entry>Core</entry>
-        <entry>Basic query specification</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E051-01</entry>
-        <entry>Core</entry>
-        <entry>SELECT DISTINCT</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E051-02</entry>
-        <entry>Core</entry>
-        <entry>GROUP BY clause</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E051-04</entry>
-        <entry>Core</entry>
-        <entry>GROUP BY can contain columns not in &lt;select list&gt;</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E051-05</entry>
-        <entry>Core</entry>
-        <entry>Select list items can be renamed</entry>
-        <entry>AS is required</entry>
-       </row>
-       <row>
-        <entry>E051-06</entry>
-        <entry>Core</entry>
-        <entry>HAVING clause</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E051-07</entry>
-        <entry>Core</entry>
-        <entry>Qualified * in select list</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E051-08</entry>
-        <entry>Core</entry>
-        <entry>Correlation names in the FROM clause</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E051-09</entry>
-        <entry>Core</entry>
-        <entry>Rename columns in the FROM clause</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E061</entry>
-        <entry>Core</entry>
-        <entry>Basic predicates and search conditions</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E061-01</entry>
-        <entry>Core</entry>
-        <entry>Comparison predicate</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E061-02</entry>
-        <entry>Core</entry>
-        <entry>BETWEEN predicate</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E061-03</entry>
-        <entry>Core</entry>
-        <entry>IN predicate with list of values</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E061-04</entry>
-        <entry>Core</entry>
-        <entry>LIKE predicate</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E061-05</entry>
-        <entry>Core</entry>
-        <entry>LIKE predicate ESCAPE clause</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E061-06</entry>
-        <entry>Core</entry>
-        <entry>NULL predicate</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E061-07</entry>
-        <entry>Core</entry>
-        <entry>Quantified comparison predicate</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E061-08</entry>
-        <entry>Core</entry>
-        <entry>EXISTS predicate</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E061-09</entry>
-        <entry>Core</entry>
-        <entry>Subqueries in comparison predicate</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E061-11</entry>
-        <entry>Core</entry>
-        <entry>Subqueries in IN predicate</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E061-12</entry>
-        <entry>Core</entry>
-        <entry>Subqueries in quantified comparison predicate</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E061-13</entry>
-        <entry>Core</entry>
-        <entry>Correlated subqueries</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E061-14</entry>
-        <entry>Core</entry>
-        <entry>Search condition</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E071</entry>
-        <entry>Core</entry>
-        <entry>Basic query expressions</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E071-01</entry>
-        <entry>Core</entry>
-        <entry>UNION DISTINCT table operator</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E071-02</entry>
-        <entry>Core</entry>
-        <entry>UNION ALL table operator</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E071-03</entry>
-        <entry>Core</entry>
-        <entry>EXCEPT DISTINCT table operator</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E071-05</entry>
-        <entry>Core</entry>
-        <entry>Columns combined via table operators need not have
-         exactly the same data type</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E071-06</entry>
-        <entry>Core</entry>
-        <entry>Table operators in subqueries</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E081-01</entry>
-        <entry>Core</entry>
-        <entry>SELECT privilege</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E081-02</entry>
-        <entry>Core</entry>
-        <entry>DELETE privilege</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E081-03</entry>
-        <entry>Core</entry>
-        <entry>INSERT privilege at the table level</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E081-04</entry>
-        <entry>Core</entry>
-        <entry>UPDATE privilege at the table level</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E081-06</entry>
-        <entry>Core</entry>
-        <entry>REFERENCES privilege at the table level</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E091</entry>
-        <entry>Core</entry>
-        <entry>Set functions</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E091-01</entry>
-        <entry>Core</entry>
-        <entry>AVG</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E091-02</entry>
-        <entry>Core</entry>
-        <entry>COUNT</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E091-03</entry>
-        <entry>Core</entry>
-        <entry>MAX</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E091-04</entry>
-        <entry>Core</entry>
-        <entry>MIN</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E091-05</entry>
-        <entry>Core</entry>
-        <entry>SUM</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E091-06</entry>
-        <entry>Core</entry>
-        <entry>ALL quantifier</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E091-07</entry>
-        <entry>Core</entry>
-        <entry>DISTINCT quantifier</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E101</entry>
-        <entry>Core</entry>
-        <entry>Basic data manipulation</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E101-01</entry>
-        <entry>Core</entry>
-        <entry>INSERT statement</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E101-03</entry>
-        <entry>Core</entry>
-        <entry>Searched UPDATE statement</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E101-04</entry>
-        <entry>Core</entry>
-        <entry>Searched DELETE statement</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E111</entry>
-        <entry>Core</entry>
-        <entry>Single row SELECT statement</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E121-01</entry>
-        <entry>Core</entry>
-        <entry>DECLARE CURSOR</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E121-02</entry>
-        <entry>Core</entry>
-        <entry>ORDER BY columns need not be in select list</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E121-03</entry>
-        <entry>Core</entry>
-        <entry>Value expressions in ORDER BY clause</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E121-08</entry>
-        <entry>Core</entry>
-        <entry>CLOSE statement</entry>
-        <entry>(cursor)</entry>
-       </row>
-       <row>
-        <entry>E121-10</entry>
-        <entry>Core</entry>
-        <entry>FETCH statement implicit NEXT</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E131</entry>
-        <entry>Core</entry>
-        <entry>Null value support (nulls in lieu of values)</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E141</entry>
-        <entry>Core</entry>
-        <entry>Basic integrity constraints</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E141-01</entry>
-        <entry>Core</entry>
-        <entry>NOT NULL constraints</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E141-02</entry>
-        <entry>Core</entry>
-        <entry>UNIQUE constraints of NOT NULL columns</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E141-03</entry>
-        <entry>Core</entry>
-        <entry>PRIMARY KEY constraints</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E141-04</entry>
-        <entry>Core</entry>
-        <entry>Basic FOREIGN KEY constraint with the NO ACTION default
-         for both referential delete action and referential update
-         action</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E141-06</entry>
-        <entry>Core</entry>
-        <entry>CHECK constraints</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E141-07</entry>
-        <entry>Core</entry>
-        <entry>Column defaults</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E141-08</entry>
-        <entry>Core</entry>
-        <entry>NOT NULL inferred on PRIMARY KEY</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E141-10</entry>
-        <entry>Core</entry>
-        <entry>Names in a foreign key can be specified in any order</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E151</entry>
-        <entry>Core</entry>
-        <entry>Transaction support</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E151-01</entry>
-        <entry>Core</entry>
-        <entry>COMMIT statement</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E151-02</entry>
-        <entry>Core</entry>
-        <entry>ROLLBACK statement</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E152</entry>
-        <entry>Core</entry>
-        <entry>Basic SET TRANSACTION statement</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E152-01</entry>
-        <entry>Core</entry>
-        <entry>SET TRANSACTION statement: ISOLATION LEVEL SERIALIZABLE
-         clause</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E152-02</entry>
-        <entry>Core</entry>
-        <entry>SET TRANSACTION statement: READ ONLY and READ WRITE
-         clauses</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E161</entry>
-        <entry>Core</entry>
-        <entry>SQL comments using leading double minus</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F021</entry>
-        <entry>Core</entry>
-        <entry>Basic information schema</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F021-01</entry>
-        <entry>Core</entry>
-        <entry>COLUMNS view</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F021-02</entry>
-        <entry>Core</entry>
-        <entry>TABLES view</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F021-03</entry>
-        <entry>Core</entry>
-        <entry>VIEWS view</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F021-04</entry>
-        <entry>Core</entry>
-        <entry>TABLE_CONSTRAINTS view</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F021-05</entry>
-        <entry>Core</entry>
-        <entry>REFERENTIAL_CONSTRAINTS view</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F021-06</entry>
-        <entry>Core</entry>
-        <entry>CHECK_CONSTRAINTS view</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F031</entry>
-        <entry>Core</entry>
-        <entry>Basic schema manipulation</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F031-01</entry>
-        <entry>Core</entry>
-        <entry>CREATE TABLE statement to create persistent base
-         tables</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F031-02</entry>
-        <entry>Core</entry>
-        <entry>CREATE VIEW statement</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F031-03</entry>
-        <entry>Core</entry>
-        <entry>GRANT statement</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F031-04</entry>
-        <entry>Core</entry>
-        <entry>ALTER TABLE statement: ADD COLUMN clause</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F031-13</entry>
-        <entry>Core</entry>
-        <entry>DROP TABLE statement: RESTRICT clause</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F031-16</entry>
-        <entry>Core</entry>
-        <entry>DROP VIEW statement: RESTRICT clause</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F031-19</entry>
-        <entry>Core</entry>
-        <entry>REVOKE statement: RESTRICT clause</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F032</entry>
-        <entry></entry>
-        <entry>CASCADE drop behavior</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F033</entry>
-        <entry></entry>
-        <entry>ALTER TABLE statement: DROP COLUMN clause</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F041</entry>
-        <entry>Core</entry>
-        <entry>Basic joined table</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F041-01</entry>
-        <entry>Core</entry>
-        <entry>Inner join (but not necessarily the INNER keyword)</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F041-02</entry>
-        <entry>Core</entry>
-        <entry>INNER keyword</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F041-03</entry>
-        <entry>Core</entry>
-        <entry>LEFT OUTER JOIN</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F041-04</entry>
-        <entry>Core</entry>
-        <entry>RIGHT OUTER JOIN</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F041-05</entry>
-        <entry>Core</entry>
-        <entry>Outer joins can be nested</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F041-07</entry>
-        <entry>Core</entry>
-        <entry>The inner table in a left or right outer join can also be
-         used in an inner join</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F041-08</entry>
-        <entry>Core</entry>
-        <entry>All comparison operators are supported
-         (rather than just =)</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F051</entry>
-        <entry>Core</entry>
-        <entry>Basic date and time</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F051-01</entry>
-        <entry>Core</entry>
-        <entry>DATE data type (including support of DATE literal)</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F051-02</entry>
-        <entry>Core</entry>
-        <entry>TIME data type (including support of TIME literal) with
-         fractional seconds precision of at least 0</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F051-03</entry>
-        <entry>Core</entry>
-        <entry>TIMESTAMP data type (including support of TIMESTAMP
-         literal) with fractional seconds precision of at least
-         0 and 6</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F051-04</entry>
-        <entry>Core</entry>
-        <entry>Comparison predicate on DATE, TIME, and TIMESTAMP data types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F051-05</entry>
-        <entry>Core</entry>
-        <entry>Explicit CAST between datetime types and character types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F051-06</entry>
-        <entry>Core</entry>
-        <entry>CURRENT_DATE</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F051-07</entry>
-        <entry>Core</entry>
-        <entry>LOCALTIME</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F051-08</entry>
-        <entry>Core</entry>
-        <entry>LOCALTIMESTAMP</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F052</entry>
-        <entry>Enhanced datetime facilities</entry>
-        <entry>Intervals and datetime arithmetic</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F081</entry>
-        <entry>Core</entry>
-        <entry>UNION and EXCEPT in views</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F111-02</entry>
-        <entry></entry>
-        <entry>READ COMMITTED isolation level</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F131</entry>
-        <entry>Core</entry>
-        <entry>Grouped operations</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F131-01</entry>
-        <entry>Core</entry>
-        <entry>WHERE, GROUP BY, and HAVING clauses supported in queries
-         with grouped views</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F131-02</entry>
-        <entry>Core</entry>
-        <entry>Multiple tables supported in queries with grouped
-         views</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F131-03</entry>
-        <entry>Core</entry>
-        <entry>Set functions supported in queries with grouped views</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F131-04</entry>
-        <entry>Core</entry>
-        <entry>Subqueries with GROUP BY and HAVING clauses and grouped
-         views</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F131-05</entry>
-        <entry>Core</entry>
-        <entry>Single row SELECT with GROUP BY and HAVING clauses and
-         grouped views</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F171</entry>
-        <entry></entry>
-        <entry>Multiple schemas per user</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F191</entry>
-        <entry>Enhanced integrity management</entry>
-        <entry>Referential delete actions</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F201</entry>
-        <entry>Core</entry>
-        <entry>CAST function</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F221</entry>
-        <entry>Core</entry>
-        <entry>Explicit defaults</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F222</entry>
-        <entry></entry>
-        <entry>INSERT statement: DEFAULT VALUES clause</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F231</entry>
-        <entry></entry>
-        <entry>Privilege Tables</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F231-01</entry>
-        <entry></entry>
-        <entry>TABLE_PRIVILEGES view</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F231-02</entry>
-        <entry></entry>
-        <entry>COLUMN_PRIVILEGES view</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F231-03</entry>
-        <entry></entry>
-        <entry>USAGE_PRIVILEGES view</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F251</entry>
-        <entry></entry>
-        <entry>Domain support</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F261</entry>
-        <entry>Core</entry>
-        <entry>CASE expression</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F261-01</entry>
-        <entry>Core</entry>
-        <entry>Simple CASE</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F261-02</entry>
-        <entry>Core</entry>
-        <entry>Searched CASE</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F261-03</entry>
-        <entry>Core</entry>
-        <entry>NULLIF</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F261-04</entry>
-        <entry>Core</entry>
-        <entry>COALESCE</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F271</entry>
-        <entry></entry>
-        <entry>Compound character literals</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F281</entry>
-        <entry></entry>
-        <entry>LIKE enhancements</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F302</entry>
-        <entry>OLAP facilities</entry>
-        <entry>INTERSECT table operator</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F302-01</entry>
-        <entry>OLAP facilities</entry>
-        <entry>INTERSECT DISTINCT table operator</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F302-02</entry>
-        <entry>OLAP facilities</entry>
-        <entry>INTERSECT ALL table operator</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F304</entry>
-        <entry>OLAP facilities</entry>
-        <entry>EXCEPT ALL table operator</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F311</entry>
-        <entry>Core</entry>
-        <entry>Schema definition statement</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F311-01</entry>
-        <entry>Core</entry>
-        <entry>CREATE SCHEMA</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F311-02</entry>
-        <entry>Core</entry>
-        <entry>CREATE TABLE for persistent base tables</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F311-03</entry>
-        <entry>Core</entry>
-        <entry>CREATE VIEW</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F311-05</entry>
-        <entry>Core</entry>
-        <entry>GRANT statement</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F321</entry>
-        <entry></entry>
-        <entry>User authorization</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F361</entry>
-        <entry></entry>
-        <entry>Subprogram support</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F381</entry>
-        <entry></entry>
-        <entry>Extended schema manipulation</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F381-01</entry>
-        <entry></entry>
-        <entry>ALTER TABLE statement: ALTER COLUMN clause</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F381-02</entry>
-        <entry></entry>
-        <entry>ALTER TABLE statement: ADD CONSTRAINT clause</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F381-03</entry>
-        <entry></entry>
-        <entry>ALTER TABLE statement: DROP CONSTRAINT clause</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F391</entry>
-        <entry></entry>
-        <entry>Long identifiers</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F401</entry>
-        <entry>OLAP facilities</entry>
-        <entry>Extended joined table</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F401-01</entry>
-        <entry>OLAP facilities</entry>
-        <entry>NATURAL JOIN</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F401-02</entry>
-        <entry>OLAP facilities</entry>
-        <entry>FULL OUTER JOIN</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F401-03</entry>
-        <entry>OLAP facilities</entry>
-        <entry>UNION JOIN</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F401-04</entry>
-        <entry>OLAP facilities</entry>
-        <entry>CROSS JOIN</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F411</entry>
-        <entry>Enhanced datetime facilities</entry>
-        <entry>Time zone specification</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F421</entry>
-        <entry></entry>
-        <entry>National character</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F431-01</entry>
-        <entry></entry>
-        <entry>FETCH with explicit NEXT</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F431-04</entry>
-        <entry></entry>
-        <entry>FETCH PRIOR</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F431-06</entry>
-        <entry></entry>
-        <entry>FETCH RELATIVE</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F441</entry>
-        <entry></entry>
-        <entry>Extended set function support</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F471</entry>
-        <entry>Core</entry>
-        <entry>Scalar subquery values</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F481</entry>
-        <entry>Core</entry>
-        <entry>Expanded NULL predicate</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F491</entry>
-        <entry>Enhanced integrity management</entry>
-        <entry>Constraint management</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F501-03</entry>
-        <entry>Core</entry>
-        <entry>SQL_LANGUAGES view</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F511</entry>
-        <entry></entry>
-        <entry>BIT data type</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F531</entry>
-        <entry></entry>
-        <entry>Temporary tables</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F555</entry>
-        <entry>Enhanced datetime facilities</entry>
-        <entry>Enhanced seconds precision</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F561</entry>
-        <entry></entry>
-        <entry>Full value expressions</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F571</entry>
-        <entry></entry>
-        <entry>Truth value tests</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F591</entry>
-        <entry>OLAP facilities</entry>
-        <entry>Derived tables</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F611</entry>
-        <entry></entry>
-        <entry>Indicator data types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F651</entry>
-        <entry></entry>
-        <entry>Catalog name qualifiers</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F701</entry>
-        <entry>Enhanced integrity management</entry>
-        <entry>Referential update actions</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F761</entry>
-        <entry></entry>
-        <entry>Session management</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F711</entry>
-        <entry></entry>
-        <entry>ALTER domain</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F791</entry>
-        <entry></entry>
-        <entry>Insensitive cursors</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F801</entry>
-        <entry></entry>
-        <entry>Full set function</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S071</entry>
-        <entry>Enhanced object support</entry>
-        <entry>SQL paths in function and type name resolution</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S111</entry>
-        <entry>Enhanced object support</entry>
-        <entry>ONLY in query expressions</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S211</entry>
-        <entry>Enhanced object support, SQL/MM support</entry>
-        <entry>User-defined cast functions</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T031</entry>
-        <entry></entry>
-        <entry>BOOLEAN data type</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T141</entry>
-        <entry></entry>
-        <entry>SIMILAR predicate</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T151</entry>
-        <entry></entry>
-        <entry>DISTINCT predicate</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T191</entry>
-        <entry>Enhanced integrity management</entry>
-        <entry>Referential action RESTRICT</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T201</entry>
-        <entry>Enhanced integrity management</entry>
-        <entry>Comparable data types for referential constraints</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T211-01</entry>
-        <entry>Enhanced integrity management</entry>
-        <entry>Triggers activated on UPDATE, INSERT, or DELETE of one
-         base table</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T211-02</entry>
-        <entry>Enhanced integrity management</entry>
-        <entry>BEFORE triggers</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T211-03</entry>
-        <entry>Enhanced integrity management</entry>
-        <entry>AFTER triggers</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T211-04</entry>
-        <entry>Enhanced integrity management</entry>
-        <entry>FOR EACH ROW triggers</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T211-07</entry>
-        <entry>Enhanced integrity management</entry>
-        <entry>TRIGGER privilege</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T212</entry>
-        <entry>Enhanced integrity management</entry>
-        <entry>Enhanced trigger capability</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T231</entry>
-        <entry></entry>
-        <entry>SENSITIVE cursors</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T241</entry>
-        <entry></entry>
-        <entry>START TRANSACTION statement</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T312</entry>
-        <entry></entry>
-        <entry>OVERLAY function</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T321-01</entry>
-        <entry>Core</entry>
-        <entry>User-defined functions with no overloading</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T321-03</entry>
-        <entry>Core</entry>
-        <entry>Function invocation</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T322</entry>
-        <entry>PSM, SQL/MM support</entry>
-        <entry>Overloading of SQL-invoked functions and procedures</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T323</entry>
-        <entry></entry>
-        <entry>Explicit security for external routines</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T351</entry>
-        <entry></entry>
-        <entry>Bracketed SQL comments (/*...*/ comments)</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T441</entry>
-        <entry></entry>
-        <entry>ABS and MOD functions</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T501</entry>
-        <entry></entry>
-        <entry>Enhanced EXISTS predicate</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T551</entry>
-        <entry></entry>
-        <entry>Optional key words for default syntax</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T581</entry>
-        <entry></entry>
-        <entry>Regular expression substring function</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T591</entry>
-        <entry></entry>
-        <entry>UNIQUE constraints of possibly null columns</entry>
-        <entry></entry>
-       </row>
-      </tbody>
-     </tgroup>
-    </informaltable>
-   </para>
-  </sect1>
-
-  <sect1 id="unsupported-features-sql99">
-   <title>Unsupported Features</title>
-
-   <para>
-    The following features defined in <acronym>SQL99</acronym> are not
-    implemented in the current release of
-    <productname>PostgreSQL</productname>. In a few cases, equivalent
-    functionality is available.
-
-    <informaltable>
-     <tgroup cols="4">
-      <thead>
-       <row>
-        <entry>Identifier</entry>
-        <entry>Package</entry>
-        <entry>Description</entry>
-        <entry>Comment</entry>
-       </row>
-      </thead>
-      <tbody>
-       <row>
-        <entry>B011</entry>
-        <entry>Core</entry>
-        <entry>Embedded Ada</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>B013</entry>
-        <entry>Core</entry>
-        <entry>Embedded COBOL</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>B014</entry>
-        <entry>Core</entry>
-        <entry>Embedded Fortran</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>B015</entry>
-        <entry>Core</entry>
-        <entry>Embedded MUMPS</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>B016</entry>
-        <entry>Core</entry>
-        <entry>Embedded Pascal</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>B017</entry>
-        <entry>Core</entry>
-        <entry>Embedded PL/I</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>B031</entry>
-        <entry></entry>
-        <entry>Basic dynamic SQL</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>B032</entry>
-        <entry></entry>
-        <entry>Extended dynamic SQL</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>B032-1</entry>
-        <entry></entry>
-        <entry>&lt;describe input&gt; statement</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>B041</entry>
-        <entry></entry>
-        <entry>Extensions to embedded SQL exception declarations</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>B051</entry>
-        <entry></entry>
-        <entry>Enhanced execution rights</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E081</entry>
-        <entry>Core</entry>
-        <entry>Basic Privileges</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E081-05</entry>
-        <entry>Core</entry>
-        <entry>UPDATE privilege at the column level</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E081-07</entry>
-        <entry>Core</entry>
-        <entry>REFERENCES privilege at the column level</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E081-08</entry>
-        <entry>Core</entry>
-        <entry>WITH GRANT OPTION</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E121</entry>
-        <entry>Core</entry>
-        <entry>Basic cursor support</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E121-04</entry>
-        <entry>Core</entry>
-        <entry>OPEN statement</entry>
-        <entry>(cursor)</entry>
-       </row>
-       <row>
-        <entry>E121-06</entry>
-        <entry>Core</entry>
-        <entry>Positioned UPDATE statement</entry>
-        <entry>(cursor)</entry>
-       </row>
-       <row>
-        <entry>E121-07</entry>
-        <entry>Core</entry>
-        <entry>Positioned DELETE statement</entry>
-        <entry>(cursor)</entry>
-       </row>
-       <row>
-        <entry>E121-17</entry>
-        <entry>Core</entry>
-        <entry>WITH HOLD cursors</entry>
-        <entry>Cursor to stay open across transactions</entry>
-       </row>
-       <row>
-        <entry>E153</entry>
-        <entry>Core</entry>
-        <entry>Updatable queries with subqueries</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E171</entry>
-        <entry>Core</entry>
-        <entry>SQLSTATE support</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F181</entry>
-        <entry></entry>
-        <entry>Multiple module support</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>E182</entry>
-        <entry>Core</entry>
-        <entry>Module language</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F034</entry>
-        <entry></entry>
-        <entry>Extended REVOKE statement</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F034-01</entry>
-        <entry></entry>
-        <entry>REVOKE statement performed by other than the owner of a
-         schema object</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F034-02</entry>
-        <entry></entry>
-        <entry>REVOKE statement: GRANT OPTION FOR clause</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F034-03</entry>
-        <entry></entry>
-        <entry>REVOKE statement to revoke a privilege that the grantee
-         has WITH GRANT OPTION</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F111</entry>
-        <entry></entry>
-        <entry>Isolation levels other than SERIALIZABLE</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F111-01</entry>
-        <entry></entry>
-        <entry>READ UNCOMMITTED isolation level</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F111-03</entry>
-        <entry></entry>
-        <entry>REPEATABLE READ isolation level</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F121</entry>
-        <entry></entry>
-        <entry>Basic diagnostics management</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F121-01</entry>
-        <entry></entry>
-        <entry>GET DIAGNOSTICS statement</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F121-02</entry>
-        <entry></entry>
-        <entry>SET TRANSACTION statement: DIAGNOSTICS SIZE clause</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F291</entry>
-        <entry></entry>
-        <entry>UNIQUE predicate</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F301</entry>
-        <entry></entry>
-        <entry>CORRESPONDING in query expressions</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F311-04</entry>
-        <entry>Core</entry>
-        <entry>CREATE VIEW: WITH CHECK OPTION</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F341</entry>
-        <entry></entry>
-        <entry>Usage tables</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F431</entry>
-        <entry></entry>
-        <entry>Read-only scrollable cursors</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F431-02</entry>
-        <entry></entry>
-        <entry>FETCH FIRST</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F431-03</entry>
-        <entry></entry>
-        <entry>FETCH LAST</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F431-05</entry>
-        <entry></entry>
-        <entry>FETCH ABSOLUTE</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F451</entry>
-        <entry></entry>
-        <entry>Character set definition</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F461</entry>
-        <entry></entry>
-        <entry>Named character sets</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F501</entry>
-        <entry>Core</entry>
-        <entry>Features and conformance views</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F501-01</entry>
-        <entry>Core</entry>
-        <entry>SQL_FEATURES view</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F501-02</entry>
-        <entry>Core</entry>
-        <entry>SQL_SIZING view</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F502</entry>
-        <entry></entry>
-        <entry>Enhanced documentation tables</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F502-01</entry>
-        <entry></entry>
-        <entry>SQL_SIZING_PROFILES view</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F502-02</entry>
-        <entry></entry>
-        <entry>SQL_IMPLEMENTATION_INFO view</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F502-03</entry>
-        <entry></entry>
-        <entry>SQL_PACKAGES view</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F521</entry>
-        <entry>Enhanced integrity management</entry>
-        <entry>Assertions</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F641</entry>
-        <entry>OLAP facilities</entry>
-        <entry>Row and table constructors</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F661</entry>
-        <entry></entry>
-        <entry>Simple tables</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F671</entry>
-        <entry>Enhanced integrity management</entry>
-        <entry>Subqueries in CHECK</entry>
-        <entry>intentionally omitted</entry>
-       </row>
-       <row>
-        <entry>F691</entry>
-        <entry></entry>
-        <entry>Collation and translation</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F721</entry>
-        <entry></entry>
-        <entry>Deferrable constraints</entry>
-        <entry>foreign keys only</entry>
-       </row>
-       <row>
-        <entry>F731</entry>
-        <entry></entry>
-        <entry>INSERT column privileges</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F741</entry>
-        <entry></entry>
-        <entry>Referential MATCH types</entry>
-        <entry>no partial match yet</entry>
-       </row>
-       <row>
-        <entry>F751</entry>
-        <entry></entry>
-        <entry>View CHECK enhancements</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F771</entry>
-        <entry></entry>
-        <entry>Connection management</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F781</entry>
-        <entry></entry>
-        <entry>Self-referencing operations</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F811</entry>
-        <entry></entry>
-        <entry>Extended flagging</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F812</entry>
-        <entry>Core</entry>
-        <entry>Basic flagging</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F813</entry>
-        <entry></entry>
-        <entry>Extended flagging for "Core SQL Flagging" and "Catalog
-         Lookup" only</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F821</entry>
-        <entry></entry>
-        <entry>Local table references</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F831</entry>
-        <entry></entry>
-        <entry>Full cursor update</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F831-01</entry>
-        <entry></entry>
-        <entry>Updatable scrollable cursors</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>F831-02</entry>
-        <entry></entry>
-        <entry>Updatable ordered cursors</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S011</entry>
-        <entry>Core</entry>
-        <entry>Distinct data types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S011-01</entry>
-        <entry>Core</entry>
-        <entry>USER_DEFINED_TYPES view</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S023</entry>
-        <entry>Basic object support, SQL/MM support</entry>
-        <entry>Basic structured types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S024, SQL/MM support</entry>
-        <entry>Enhanced object support</entry>
-        <entry>Enhanced structured types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S041</entry>
-        <entry>Basic object support</entry>
-        <entry>Basic reference types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S043</entry>
-        <entry>Enhanced object support</entry>
-        <entry>Enhanced reference types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S051</entry>
-        <entry>Basic object support</entry>
-        <entry>Create table of type</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S081</entry>
-        <entry>Enhanced object support</entry>
-        <entry>Subtables</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S091</entry>
-        <entry>SQL/MM support</entry>
-        <entry>Basic array support</entry>
-        <entry>PostgreSQL arrays are different</entry>
-       </row>
-       <row>
-        <entry>S091-01</entry>
-        <entry>SQL/MM support</entry>
-        <entry>Arrays of built-in data types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S091-02</entry>
-        <entry>SQL/MM support</entry>
-        <entry>Arrays of distinct types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S091-03</entry>
-        <entry>SQL/MM support</entry>
-        <entry>Array expressions</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S092</entry>
-        <entry>SQL/MM support</entry>
-        <entry>Arrays of user-defined types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S094</entry>
-        <entry></entry>
-        <entry>Arrays of reference types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S151</entry>
-        <entry>Basic object support</entry>
-        <entry>Type predicate</entry>
-        <entry>IS OF</entry>
-       </row>
-       <row>
-        <entry>S161</entry>
-        <entry>Enhanced object support</entry>
-        <entry>Subtype treatment</entry>
-        <entry>TREAT(expr AS type)</entry>
-       </row>
-       <row>
-        <entry>S201</entry>
-        <entry></entry>
-        <entry>SQL routines on arrays</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S201-01</entry>
-        <entry></entry>
-        <entry>Array parameters</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S201-02</entry>
-        <entry></entry>
-        <entry>Array as result type of functions</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S231</entry>
-        <entry>Enhanced object support</entry>
-        <entry>Structured type locators</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S232</entry>
-        <entry></entry>
-        <entry>Array locators</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S241</entry>
-        <entry>Enhanced object support</entry>
-        <entry>Transform functions</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>S251</entry>
-        <entry></entry>
-        <entry>User-defined orderings</entry>
-        <entry>CREATE ORDERING FOR</entry>
-       </row>
-       <row>
-        <entry>S261</entry>
-        <entry></entry>
-        <entry>Specific type method</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T011</entry>
-        <entry></entry>
-        <entry>Timestamp in Information Schema</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T041</entry>
-        <entry>Basic object support</entry>
-        <entry>Basic LOB data type support</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T041-01</entry>
-        <entry>Basic object support</entry>
-        <entry>BLOB data type</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T041-02</entry>
-        <entry>Basic object support</entry>
-        <entry>CLOB data type</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T041-03</entry>
-        <entry>Basic object support</entry>
-        <entry>POSITION, LENGTH, LOWER, TRIM, UPPER, and SUBSTRING
-         functions for LOB data types</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T041-04</entry>
-        <entry>Basic object support</entry>
-        <entry>Concatenation of LOB data types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T041-05</entry>
-        <entry>Basic object support</entry>
-        <entry>LOB locator: non-holdable</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T042</entry>
-        <entry></entry>
-        <entry>Extended LOB data type support</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T051</entry>
-        <entry></entry>
-        <entry>Row types</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T111</entry>
-        <entry></entry>
-        <entry>Updatable joins, unions, and columns</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T121</entry>
-        <entry></entry>
-        <entry>WITH (excluding RECURSIVE) in query expression</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T131</entry>
-        <entry></entry>
-        <entry>Recursive query</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T171</entry>
-        <entry></entry>
-        <entry>LIKE clause in table definition</entry>
-        <entry>CREATE TABLE T1 (LIKE T2)</entry>
-       </row>
-       <row>
-        <entry>T211</entry>
-        <entry>Enhanced integrity management, Active database</entry>
-        <entry>Basic trigger capability</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T211-05</entry>
-        <entry>Enhanced integrity management</entry>
-        <entry>Ability to specify a search condition that must be true
-         before the trigger is invoked</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T211-06</entry>
-        <entry>Enhanced integrity management</entry>
-        <entry>Support for run-time rules for the interaction of triggers
-         and constraints</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T211-08</entry>
-        <entry>Enhanced integrity management</entry>
-        <entry>Multiple triggers for the same the event are executed in
-         the order in which they were created</entry> 
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T251</entry>
-        <entry></entry>
-        <entry>SET TRANSACTION statement: LOCAL option</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T261</entry>
-        <entry></entry>
-        <entry>Chained transactions</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T271</entry>
-        <entry></entry>
-        <entry>Savepoints</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T281</entry>
-        <entry></entry>
-        <entry>SELECT privilege with column granularity</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T301</entry>
-        <entry></entry>
-        <entry>Functional Dependencies</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T321</entry>
-        <entry>Core</entry>
-        <entry>Basic SQL-invoked routines</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T321-02</entry>
-        <entry>Core</entry>
-        <entry>User-defined stored procedures with no overloading</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T321-04</entry>
-        <entry>Core</entry>
-        <entry>CALL statement</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T321-05</entry>
-        <entry>Core</entry>
-        <entry>RETURN statement</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T321-06</entry>
-        <entry>Core</entry>
-        <entry>ROUTINES view</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T321-07</entry>
-        <entry>Core</entry>
-        <entry>PARAMETERS view</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T331</entry>
-        <entry></entry>
-        <entry>Basic roles</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T332</entry>
-        <entry></entry>
-        <entry>Extended roles</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T401</entry>
-        <entry></entry>
-        <entry>INSERT into a cursor</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T411</entry>
-        <entry></entry>
-        <entry>UPDATE statement: SET ROW option</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T431</entry>
-        <entry>OLAP facilities</entry>
-        <entry>CUBE and ROLLUP operations</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T461</entry>
-        <entry></entry>
-        <entry>Symmetric BETWEEN predicate</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T471</entry>
-        <entry></entry>
-        <entry>Result sets return value</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T491</entry>
-        <entry></entry>
-        <entry>LATERAL derived table</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T511</entry>
-        <entry></entry>
-        <entry>Transaction counts</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T541</entry>
-        <entry></entry>
-        <entry>Updatable table references</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T561</entry>
-        <entry></entry>
-        <entry>Holdable locators</entry>
-        <entry></entry>
-       </row>
-       <row>
-        <entry>T571</entry>
-        <entry></entry>
-        <entry>Array-returning external SQL-invoked functions</entry>
-        <entry></entry>
-       </row>
+
+      &features-supported;
+
+     </tgroup>
+    </informaltable>
+   </para>
+  </sect1>
+
+  <sect1 id="unsupported-features-sql99">
+   <title>Unsupported Features</title>
+
+   <para>
+    The following features defined in <acronym>SQL99</acronym> are not
+    implemented in the current release of
+    <productname>PostgreSQL</productname>. In a few cases, equivalent
+    functionality is available.
+
+    <informaltable>
+     <tgroup cols="4">
+      <thead>
        <row>
-        <entry>T601</entry>
-        <entry></entry>
-        <entry>Local cursor references</entry>
-        <entry></entry>
+        <entry>Identifier</entry>
+        <entry>Package</entry>
+        <entry>Description</entry>
+        <entry>Comment</entry>
        </row>
-      </tbody>
+      </thead>
+
+      &features-unsupported;
+
      </tgroup>
     </informaltable>
    </para>
index 7331dcda736825fe3c3d7354368a20dfeec82dba..1e3efd913202811f0de2e2e2a0159ab7517bee88 100644 (file)
@@ -1,4 +1,4 @@
-<!-- $Header: /cvsroot/pgsql/doc/src/sgml/filelist.sgml,v 1.25 2002/10/24 17:48:54 petere Exp $ -->
+<!-- $Header: /cvsroot/pgsql/doc/src/sgml/filelist.sgml,v 1.26 2003/01/14 23:19:34 petere Exp $ -->
 
 <!entity history    SYSTEM "history.sgml">
 <!entity info       SYSTEM "info.sgml">
@@ -34,6 +34,9 @@
 <!entity syntax     SYSTEM "syntax.sgml">
 <!entity typeconv   SYSTEM "typeconv.sgml">
 
+<!entity features-supported   SYSTEM "features-supported.sgml">
+<!entity features-unsupported SYSTEM "features-unsupported.sgml">
+
 <!-- reference pages -->
 <!entity % allfiles   SYSTEM "ref/allfiles.sgml">
 %allfiles;
diff --git a/doc/src/sgml/mk_feature_tables.pl b/doc/src/sgml/mk_feature_tables.pl
new file mode 100644 (file)
index 0000000..445acdb
--- /dev/null
@@ -0,0 +1,54 @@
+# /usr/bin/perl -w
+
+my $yesno = $ARGV[0];
+
+open PACK, $ARGV[1] or die;
+
+my %feature_packages;
+
+while (<PACK>) {
+    chomp;
+    my ($fid, $pname) = split /\t/;
+    if ($feature_packages{$fid}) {
+   $feature_packages{$fid} .= ", $pname";
+    } else {
+   $feature_packages{$fid} = $pname;
+    }
+}
+
+close PACK;
+
+open FEAT, $ARGV[2] or die;
+
+print "<tbody>\n";
+
+while (<FEAT>) {
+    chomp;
+    my ($feature_id, $feature_name, $subfeature_id, $subfeature_name, $is_supported, $comments) = split /\t/;
+
+    $is_supported eq $yesno || next;
+
+    $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_packages{$feature_id} . "</entry>\n";
+    if ($subfeature_id) {
+   print "  <entry>$subfeature_name</entry>\n";
+    } else {
+   print "  <entry>$feature_name</entry>\n";
+    }
+    print "  <entry>$comments</entry>\n";
+
+    print " </row>\n";
+}
+
+print "</tbody>\n";
+
+close FEAT;
index 32570ed128af6826028069a4464a6e7fc6a18e3c..383775d84767e1d30b862d6da5f98f0ddfdde985 100644 (file)
@@ -2,7 +2,7 @@
 #
 # Makefile for backend/catalog
 #
-# $Header: /cvsroot/pgsql/src/backend/catalog/Makefile,v 1.44 2003/01/13 20:37:18 tgl Exp $
+# $Header: /cvsroot/pgsql/src/backend/catalog/Makefile,v 1.45 2003/01/14 23:19:34 petere Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -46,13 +46,14 @@ install-data: $(BKIFILES) installdirs
    $(INSTALL_DATA) postgres.bki         $(DESTDIR)$(datadir)/postgres.bki
    $(INSTALL_DATA) postgres.description $(DESTDIR)$(datadir)/postgres.description
    $(INSTALL_DATA) $(srcdir)/information_schema.sql $(DESTDIR)$(datadir)/information_schema.sql
+   $(INSTALL_DATA) $(srcdir)/sql_features.txt $(DESTDIR)$(datadir)/sql_features.txt
 
 installdirs:
    $(mkinstalldirs) $(DESTDIR)$(datadir)
 
 .PHONY: uninstall-data
 uninstall-data:
-   rm -f $(addprefix $(DESTDIR)$(datadir)/, $(BKIFILES) information_schema.sql)
+   rm -f $(addprefix $(DESTDIR)$(datadir)/, $(BKIFILES) information_schema.sql sql_features.txt)
 
 
 clean: 
index 58e26ea48a37b3cc75ab994e1cbdcd2d9bf547d8..ba4702df85856edf40ae4330535a89f47b43abf9 100644 (file)
@@ -4,7 +4,7 @@
  *
  * Copyright 2002, PostgreSQL Global Development Group
  *
- * $Id: information_schema.sql,v 1.1 2002/12/14 00:24:24 petere Exp $
+ * $Id: information_schema.sql,v 1.2 2003/01/14 23:19:34 petere Exp $
  */
 
 
@@ -312,15 +312,12 @@ CREATE TABLE sql_features (
     feature_name        character_data,
     sub_feature_id      character_data,
     sub_feature_name    character_data,
-    feature_subfeature_package_code character_data,
     is_supported        character_data,
     is_verified_by      character_data,
     comments            character_data
-);
+) WITHOUT OIDS;
 
--- FIXME: Fill this in using the information in User's Guide Appendix
--- C, and then figure out a way to generate the documentation from this
--- table.
+-- Will be filled with external data by initdb.
 
 GRANT SELECT ON sql_features TO PUBLIC;
 
@@ -338,7 +335,7 @@ CREATE TABLE sql_languages (
     sql_language_implementation character_data,
     sql_language_binding_style  character_data,
     sql_language_programming_language character_data
-);
+) WITHOUT OIDS;
 
 INSERT INTO sql_languages VALUES ('ISO 9075', '1999', 'CORE', NULL, NULL, 'DIRECT', NULL);
 INSERT INTO sql_languages VALUES ('ISO 9075', '1999', 'CORE', NULL, NULL, 'EMBEDDED', 'C');
@@ -346,6 +343,33 @@ INSERT INTO sql_languages VALUES ('ISO 9075', '1999', 'CORE', NULL, NULL, 'EMBED
 GRANT SELECT ON sql_languages TO PUBLIC;
 
 
+/*
+ * 20.50
+ * SQL_PACKAGES table
+ */
+
+CREATE TABLE sql_packages (
+    feature_id      character_data,
+    feature_name    character_data,
+    is_supported    character_data,
+    is_verified_by  character_data,
+    comments        character_data
+) WITHOUT OIDS;
+
+INSERT INTO sql_packages VALUES ('PKG000', 'Core', 'NO', NULL, '');
+INSERT INTO sql_packages VALUES ('PKG001', 'Enhanced datetime facilities', 'YES', NULL, '');
+INSERT INTO sql_packages VALUES ('PKG002', 'Enhanced integrity management', 'NO', NULL, '');
+INSERT INTO sql_packages VALUES ('PKG003', 'OLAP facilities', 'NO', NULL, '');
+INSERT INTO sql_packages VALUES ('PKG004', 'PSM', 'NO', NULL, 'PL/pgSQL is similar.');
+INSERT INTO sql_packages VALUES ('PKG005', 'CLI', 'NO', NULL, 'ODBC is similar.');
+INSERT INTO sql_packages VALUES ('PKG006', 'Basic object support', 'NO', NULL, '');
+INSERT INTO sql_packages VALUES ('PKG007', 'Enhanced object support', 'NO', NULL, '');
+INSERT INTO sql_packages VALUES ('PKG008', 'Active database', 'NO', NULL, '');
+INSERT INTO sql_packages VALUES ('PKG009', 'SQL/MM support', 'NO', NULL, '');
+
+GRANT SELECT ON sql_packages TO PUBLIC;
+
+
 /*
  * 20.53
  * TABLE_CONSTRAINTS view
diff --git a/src/backend/catalog/sql_feature_packages.txt b/src/backend/catalog/sql_feature_packages.txt
new file mode 100644 (file)
index 0000000..b2e403c
--- /dev/null
@@ -0,0 +1,82 @@
+B011   Core
+B012   Core
+B013   Core
+B014   Core
+B015   Core
+B016   Core
+B017   Core
+E011   Core
+E021   Core
+E031   Core
+E051   Core
+E061   Core
+E071   Core
+E081   Core
+E091   Core
+E101   Core
+E111   Core
+E121   Core
+E131   Core
+E141   Core
+E151   Core
+E152   Core
+E153   Core
+E161   Core
+E171   Core
+E182   Core
+F021   Core
+F031   Core
+F041   Core
+F051   Core
+F052   Enhanced datetime facilities
+F081   Core
+F131   Core
+F191   Enhanced integrity management
+F201   Core
+F221   Core
+F261   Core
+F302   OLAP facilities
+F304   OLAP facilities
+F311   Core
+F401   OLAP facilities
+F411   Enhanced datetime facilities
+F471   Core
+F481   Core
+F491   Enhanced integrity management
+F501   Core
+F521   Enhanced integrity management
+F555   Enhanced datetime facilities
+F591   OLAP facilities
+F641   OLAP facilities
+F671   Enhanced integrity management
+F701   Enhanced integrity management
+F812   Core
+S011   Core
+S023   Basic object support
+S023   SQL/MM support
+S024   Enhanced object support
+S024   SQL/MM support
+S041   Basic object support
+S043   Enhanced object support
+S051   Basic object support
+S071   Enhanced object support
+S081   Enhanced object support
+S091   SQL/MM support
+S092   SQL/MM support
+S111   Enhanced object support
+S151   Basic object support
+S161   Enhanced object support
+S211   Enhanced object support
+S211   SQL/MM support
+S231   Enhanced object support
+S241   Enhanced object support
+T041   Basic object support
+T191   Enhanced integrity management
+T201   Enhanced integrity management
+T211   Enhanced integrity management
+T211   Active database
+T212   Enhanced integrity management
+T321   Core
+T322   PSM
+T322   SQL/MM support
+T431   OLAP facilities
diff --git a/src/backend/catalog/sql_features.txt b/src/backend/catalog/sql_features.txt
new file mode 100644 (file)
index 0000000..e3231be
--- /dev/null
@@ -0,0 +1,360 @@
+B011   Embedded Ada            NO  
+B012   Embedded C          YES 
+B013   Embedded COBOL          NO  
+B014   Embedded Fortran            NO  
+B015   Embedded MUMPS          NO  
+B016   Embedded Pascal         NO  
+B017   Embedded PL/I           NO  
+B021   Direct SQL          YES 
+B031   Basic dynamic SQL           NO  
+B032   Extended dynamic SQL            NO  
+B032   Extended dynamic SQL    01  <describe input> statement  NO  
+B041   Extensions to embedded SQL exception declarations           NO  
+B051   Enhanced execution rights           NO  
+E011   Numeric data types          YES 
+E011   Numeric data types  01  INTEGER and SMALLINT data types YES 
+E011   Numeric data types  02  REAL, DOUBLE PRECISON, 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 data types    01  CHARACTER data type YES 
+E021   Character data types    02  CHARACTER VARYING data type YES 
+E021   Character data types    03  Character literals  YES 
+E021   Character data types    04  CHARACTER_LENGTH function   YES 
+E021   Character data types    05  OCTET_LENGTH function   YES 
+E021   Character data types    06  SUBSTRING function  YES 
+E021   Character data types    07  Character concatenation YES 
+E021   Character data types    08  UPPER and LOWER functions   YES 
+E021   Character data types    09  TRIM function   YES 
+E021   Character data types    10  Implicit casting among the character data types YES 
+E021   Character data types    11  POSITION function   YES 
+E021   Character data 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 AS is required
+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            NO  
+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    NO  
+E081   Basic Privileges    06  REFERENCES privilege at the table level YES 
+E081   Basic Privileges    07  REFERENCES privilege at the column level    NO  
+E081   Basic Privileges    08  WITH GRANT OPTION   NO  
+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            NO  
+E121   Basic cursor supoprt    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  NO  
+E121   Basic cursor support    06  Positioned UPDATE statement NO  
+E121   Basic cursor support    07  Positioned DELETE statement NO  
+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   NO  
+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           NO  
+E161   SQL comments using leading double minus         YES 
+E171   SQLSTATE support            NO  
+E182   Module language         NO  
+F021   Basic information schema            YES 
+F021   Basic information schema    01  COLUMNS view    YES 
+F021   Basic information schema    02  TABLES view YES 
+F021   Basic information schema    03  VIEWS view  YES 
+F021   Basic information schema    04  TABLE_CONSTRAINTS view  YES 
+F021   Basic information schema    05  REFERENTIAL_CONSTRAINTS view    YES 
+F021   Basic information schema    06  CHECK_CONSTRAINTS view  YES 
+F031   Basic schema manipulation           YES 
+F031   Basic schema manipulation   01  CREATE TABLE statement to create persistent base tables YES 
+F031   Basic schema manipulation   02  CREATE VIEW statement   YES 
+F031   Basic schema manipulation   03  GRANT statement YES 
+F031   Basic schema manipulation   04  ALTER TABLE statement: ADD COLUMN clause    YES 
+F031   Basic schema manipulation   13  DROP TABLE statement: RESTRICT clause   YES 
+F031   Basic schema manipulation   16  DROP VIEW statement: RESTRICT clause    YES 
+F031   Basic schema manipulation   19  REVOKE statement: RESTRICT clause   YES 
+F032   CASCADE drop behavior           YES 
+F033   ALTER TABLE statement: DROP COLUMN clause           YES 
+F034   Extended REVOKE statement           NO  
+F034   Extended REVOKE statement   01  REVOKE statement performed by other than the owner of a schema object   NO  
+F034   Extended REVOKE statement   02  REVOKE statement: GRANT OPTION FOR clause   NO  
+F034   Extended REVOKE statement   03  REVOKE statement to revoke a privilege that the grantee has WITH GRANT OPTION   NO  
+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 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 
+F081   UNION and EXCEPT in views           YES 
+F111   Isolation levels other than SERIALIZABLE            NO  
+F111   Isolation levels other than SERIALIZABLE    01  READ UNCOMMITTED isolation level    NO  
+F111   Isolation levels other than SERIALIZABLE    02  READ COMMITTED isolation level  YES 
+F111   Isolation levels other than SERIALIZABLE    03  REPEATABLE READ isolation level 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  
+F131   Grouped operations          YES 
+F131   Grouped operations  01  WHERE, GROUP BY, and HAVING clauses supported in queries with grouped views YES 
+F131   Grouped operations  02  Multiple tables supported in queries with grouped views YES 
+F131   Grouped operations  03  Set functions supported in queries with grouped views   YES 
+F131   Grouped operations  04  Subqueries with GROUP BY and HAVING clauses and grouped views   YES 
+F131   Grouped operations  05  Single row SELECT with GROUP BY and HAVING clauses and grouped views    YES 
+F171   Multiple schemas per user           YES 
+F181   Multiple module support         NO  
+F191   Referential delete actions          YES 
+F201   CAST function           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 
+F261   CASE expression 02  Searched CASE   YES 
+F261   CASE expression 03  NULLIF  YES 
+F261   CASE expression 04  COALESCE    YES 
+F271   Compound character literals         YES 
+F281   LIKE enhancements           YES 
+F291   UNIQUE predicate            NO  
+F301   CORRESPONDING in query expressions          NO  
+F302   INTERSECT table operator            YES 
+F302   INTERSECT table operator    01  INTERSECT DISTINCT table operator   YES 
+F302   INTERSECT table operator    02  INTERSECT ALL table operator    YES 
+F304   EXCEPT ALL table operator           YES 
+F311   Schema definition statement         NO  
+F311   Schema definition statement 01  CREATE SCHEMA   YES 
+F311   Schema definition statement 02  CREATE TABLE for persistent base tables YES 
+F311   Schema definition statement 03  CREATE VIEW YES 
+F311   Schema definition statement 04  CREATE VIEW: WITH CHECK OPTION  NO  
+F311   Schema definition statement 05  GRANT statement YES 
+F321   User authorization          YES 
+F341   Usage tables            NO  
+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 
+F391   Long identifiers            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   03  UNION JOIN  YES 
+F401   Extended joined table   04  CROSS JOIN  YES 
+F411   Time zone specification         YES 
+F421   National character          YES 
+F431   Read-only scrollable cursors            NO  
+F431   Read-only scrollable cursors    01  FETCH with explicit NEXT    YES 
+F431   Read-only scrollable cursors    02  FETCH FIRST NO  
+F431   Read-only scrollable cursors    03  FETCH LAST  NO  
+F431   Read-only scrollable cursors    04  FETCH PRIOR YES 
+F431   Read-only scrollable cursors    05  FETCH ABSOLUTE  NO  
+F431   Read-only scrollable cursors    06  FETCH RELATIVE  YES 
+F441   Extended set function support           YES 
+F451   Character set definition            NO  
+F461   Named character sets            NO  
+F471   Scalar subquery values          YES 
+F481   Expanded NULL predicate         YES 
+F491   Constraint management           YES 
+F501   Features and conformance views          NO  
+F501   Features and conformance views  01  SQL_FEATURES view   YES 
+F501   Features and conformance views  02  SQL_SIZING view NO  
+F501   Features and conformance views  03  SQL_LANGUAGES view  YES 
+F502   Enhanced documentation tables           NO  
+F502   Enhanced documentation tables   01  SQL_SIZING_PROFILES view    NO  
+F502   Enhanced documentation tables   02  SQL_IMPLEMENTATION_INFO view    NO  
+F502   Enhanced documentation tables   03  SQL_PACKAGES view   YES 
+F511   BIT data type           YES 
+F521   Assertions          NO  
+F531   Temporary tables            YES 
+F555   Enhanced seconds precision          YES 
+F561   Full value expressions          YES 
+F571   Truth value tests           YES 
+F591   Derived tables          YES 
+F611   Indicator data types            YES 
+F641   Row and table constructors          NO  
+F651   Catalog name qualifiers         YES 
+F661   Simple tables           NO  
+F671   Subqueries in CHECK         NO  intentionally omitted
+F691   Collation and translation           NO  
+F701   Referential update actions          YES 
+F711   ALTER domain            YES 
+F721   Deferrable constraints          NO  foreign keys only
+F731   INSERT column privileges            NO  
+F741   Referential MATCH types         NO  no partial match yet
+F751   View CHECK enhancements         NO  
+F761   Session management          YES 
+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 for "Core SQL Flagging" and "Catalog Lookup" only         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  
+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  
+S041   Basic reference types           NO  
+S043   Enhanced reference types            NO  
+S051   Create table of type            NO  
+S071   SQL paths in function and type name resolution          YES 
+S081   Subtables           NO  
+S091   Basic array support         NO  PostgreSQL arrays are different
+S091   Basic array support 01  Arrays of built-in data types   NO  
+S091   Basic array support 02  Arrays of distinct types    NO  
+S091   Basic array support 03  Array expressions   NO  
+S092   Arrays of user-defined types            NO  
+S094   Arrays of reference types           NO  
+S111   ONLY in query expressions           YES 
+S151   Type predicate          NO  
+S161   Subtype treatment           NO  
+S201   SQL routines on arrays          NO  
+S201   SQL routines on arrays  01  Array parameters    NO  
+S201   SQL routines on arrays  02  Array as result type of functions   NO  
+S211   User-defined cast functions         YES 
+S231   Structured type locators            NO  
+S232   Array locators          NO  
+S241   Transform functions         NO  
+S251   User-defined orderings          NO  
+S261   Specific type method            NO  
+T011   Timestamp in Information Schema         NO  
+T031   BOOLEAN data type           YES 
+T041   Basic LOB data type support         NO  
+T041   Basic LOB data type support 01  BLOB data type  NO  
+T041   Basic LOB data type support 02  CLOB data type  NO  
+T041   Basic LOB data type support 03  POSITION, LENGTH, LOWER, TRIM, UPPER, and SUBSTRING functions for LOB data types    NO  
+T041   Basic LOB data type support 04  Concatenation of LOB data types NO  
+T041   Basic LOB data type support 05  LOB locator: non-holdable   NO  
+T042   Extended LOB data type support          NO  
+T051   Row types           NO  
+T111   Updatable joins, unions, and columns            NO  
+T121   WITH (excluding RECURSIVE) in query expression          NO  
+T131   Recursive query         NO  
+T141   SIMILAR predicate           YES 
+T151   DISTINCT predicate          YES 
+T171   LIKE clause in table definition         NO  
+T191   Referential action RESTRICT         YES 
+T201   Comparable data types for referential constraints           YES 
+T211   Basic trigger capability            NO  
+T211   Basic trigger capability    01  Triggers activated on UPDATE, INSERT, or DELETE of one base table   YES 
+T211   Basic trigger capability    02  BEFORE triggers YES 
+T211   Basic trigger capability    03  AFTER triggers  YES 
+T211   Basic trigger capability    04  FOR EACH ROW triggers   YES 
+T211   Basic trigger capability    05  Ability to specify a search condition that must be true before the trigger is invoked   NO  
+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 the event are executed in the order in which they were created   NO  
+T212   Enhanced trigger capability         YES 
+T231   SENSITIVE cursors           YES 
+T241   START TRANSACTION statement         YES 
+T251   SET TRANSACTION statement: LOCAL option         NO  
+T261   Chained transactions            NO  
+T271   Savepoints          NO  
+T281   SELECT privilege with column granularity            NO  
+T301   Functional Dependencies         NO  
+T312   OVERLAY function            YES 
+T321   Basic SQL-invoked routines          NO  
+T321   Basic SQL-invoked routines  01  User-defined functions with no overloading  YES 
+T321   Basic SQL-invoked routines  02  User-defined stored procedures with no overloading  NO  
+T321   Basic SQL-invoked routines  03  Function invocation YES 
+T321   Basic SQL-invoked routines  04  CALL statement  NO  
+T321   Basic SQL-invoked routines  05  RETURN statement    NO  
+T321   Basic SQL-invoked routines  06  ROUTINES view   NO  
+T321   Basic SQL-invoked routines  07  PARAMETERS view NO  
+T322   Overloading of SQL-invoked functions and procedures         YES 
+T323   Explicit security for external routines         YES 
+T331   Basic roles         NO  
+T332   Extended roles          NO  
+T351   Bracketed SQL comments (/*...*/ comments)           YES 
+T401   INSERT into a cursor            NO  
+T411   UPDATE statement: SET ROW option            NO  
+T431   CUBE and ROLLUP operations          NO  
+T441   ABS and MOD functions           YES 
+T461   Symmetric BETWEEN predicate         NO  
+T471   Result sets return value            NO  
+T491   LATERAL derived table           NO  
+T501   Enhanced EXISTS predicate           YES 
+T511   Transaction counts          NO  
+T541   Updatable table references          NO  
+T551   Optional key words for default syntax           YES 
+T561   Holdable locators           NO  
+T571   Array-returning external SQL-invoked functions          NO  
+T581   Regular expression substring function           YES 
+T591   UNIQUE constraints of possibly null columns         YES 
+T601   Local cursor references         NO  
index a1c806cc7ece56c59061d615c9036c2530a03edd..049de88742c2c61e48397dbdfb147c6b9b8971a0 100644 (file)
@@ -27,7 +27,7 @@
 # Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
 # Portions Copyright (c) 1994, Regents of the University of California
 #
-# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.178 2002/12/14 00:24:24 petere Exp $
+# $Header: /cvsroot/pgsql/src/bin/initdb/Attic/initdb.sh,v 1.179 2003/01/14 23:19:34 petere Exp $
 #
 #-------------------------------------------------------------------------
 
@@ -1044,6 +1044,12 @@ echo "ok"
 
 $ECHO_N "creating information schema... "$ECHO_C
 "$PGPATH"/postgres $PGSQL_OPT -N template1 > /dev/null < "$datadir"/information_schema.sql || exit_nicely
+(
+  echo "COPY information_schema.sql_features (feature_id, feature_name, sub_feature_id, sub_feature_name, is_supported, comments) FROM STDIN;"
+  cat "$datadir"/sql_features.txt
+  echo "\."
+) \
+   | "$PGPATH"/postgres $PGSQL_OPT template1 > /dev/null || exit_nicely
 echo "ok"
 
 $ECHO_N "vacuuming database template1... "$ECHO_C