From 2160c9177d03c3989ca7fb9fa093adec0f3a116f Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Tue, 14 Jan 2003 23:19:34 +0000
Subject: [PATCH] Add sql_features table to information schema.  Generate the
 features list in the documentation from that same data.

---
 doc/src/sgml/Makefile                        |   19 +-
 doc/src/sgml/features.sgml                   | 2239 +-----------------
 doc/src/sgml/filelist.sgml                   |    5 +-
 doc/src/sgml/mk_feature_tables.pl            |   54 +
 src/backend/catalog/Makefile                 |    5 +-
 src/backend/catalog/information_schema.sql   |   38 +-
 src/backend/catalog/sql_feature_packages.txt |   82 +
 src/backend/catalog/sql_features.txt         |  360 +++
 src/bin/initdb/initdb.sh                     |    8 +-
 9 files changed, 584 insertions(+), 2226 deletions(-)
 create mode 100644 doc/src/sgml/mk_feature_tables.pl
 create mode 100644 src/backend/catalog/sql_feature_packages.txt
 create mode 100644 src/backend/catalog/sql_features.txt

diff --git a/doc/src/sgml/Makefile b/doc/src/sgml/Makefile
index 93c3c62bb59..1bbf18b079a 100644
--- a/doc/src/sgml/Makefile
+++ b/doc/src/sgml/Makefile
@@ -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)
diff --git a/doc/src/sgml/features.sgml b/doc/src/sgml/features.sgml
index 9c7cc471935..e86b36d39cb 100644
--- a/doc/src/sgml/features.sgml
+++ b/doc/src/sgml/features.sgml
@@ -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>
diff --git a/doc/src/sgml/filelist.sgml b/doc/src/sgml/filelist.sgml
index 7331dcda736..1e3efd91320 100644
--- a/doc/src/sgml/filelist.sgml
+++ b/doc/src/sgml/filelist.sgml
@@ -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
index 00000000000..445acdb2e99
--- /dev/null
+++ b/doc/src/sgml/mk_feature_tables.pl
@@ -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;
diff --git a/src/backend/catalog/Makefile b/src/backend/catalog/Makefile
index 32570ed128a..383775d8476 100644
--- a/src/backend/catalog/Makefile
+++ b/src/backend/catalog/Makefile
@@ -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: 
diff --git a/src/backend/catalog/information_schema.sql b/src/backend/catalog/information_schema.sql
index 58e26ea48a3..ba4702df858 100644
--- a/src/backend/catalog/information_schema.sql
+++ b/src/backend/catalog/information_schema.sql
@@ -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
index 00000000000..b2e403cc113
--- /dev/null
+++ b/src/backend/catalog/sql_feature_packages.txt
@@ -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
index 00000000000..e3231be377c
--- /dev/null
+++ b/src/backend/catalog/sql_features.txt
@@ -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	
diff --git a/src/bin/initdb/initdb.sh b/src/bin/initdb/initdb.sh
index a1c806cc7ec..049de88742c 100644
--- a/src/bin/initdb/initdb.sh
+++ b/src/bin/initdb/initdb.sh
@@ -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
-- 
GitLab