<!--
$Header: /cvsroot/pgsql/doc/src/sgml/features.sgml,v 2.10 2002/11/24 03:15:55 momjian Exp $
-->

<appendix id="features">
 <title>SQL Conformance</title>

 <para>
  This section attempts to outline to what extent
  <productname>PostgreSQL</productname> conforms to the SQL standard.
  Full compliance to the standard or a complete statement about the
  compliance to the standard is complicated and not particularly
  useful, so this section can only give an overview.
  </para>

 <para>
  The formal name of the SQL standard is ISO/IEC 9075 <quote>Database
  Language SQL</quote>.  A revised version of the standard is released
  from time to time; the most recent one appearing in 1999.  That
  version is refered to as ISO/IEC 9075:1999, or informally as SQL99.
  The version prior to that was SQL92.
  <productname>PostgreSQL</productname> development tends to aim for
  conformance with the latest official version of the standard where
  such conformance does not contradict traditional features or common
  sense.  At the time of this writing, ballotting is under way for a
  new revision of the standard, which, if approved, will eventually
  become the conformance target for future
  <productname>PostgreSQL</productname> development.
 </para>

 <para>
  <acronym>SQL92</acronym> defined three feature sets for conformance:
  Entry, Intermediate, and Full. Most database products claiming
  <acronym>SQL</acronym> standard conformance were conforming at only
  the Entry level, since the entire set of features in the
  Intermediate and Full levels was either too voluminous or in
  conflict with legacy behaviors.
 </para>

 <para>
  <acronym>SQL99</acronym> defines a large set of individual features
  rather than the ineffectively broad three levels found in
  <acronym>SQL92</acronym>.  A large subset of these features
  represents the <quote>core</quote> features, which every conforming
  SQL implementation must supply.  The rest of the features are purely
  optional.  Some optional features are grouped together to form
  <quote>packages</quote>, which SQL implementations can claim
  conformance to, thus claiming conformance to particular groups of
  features.
 </para>

 <para>
  The <acronym>SQL99</acronym> standard is also split into 5 parts:
  Framework, Foundation, Call Level Interface, Persistent Stored
  Modules, and Host Language Bindings.
  <productname>PostgreSQL</productname> only covers parts 1, 2, and 5.
  Part 3 is similar to the ODBC interface, and part 4 is similar to
  the <application>PL/pgSQL</application> programming language, but
  exact conformance is not specifically intended in either case.
 </para>

 <para>
  In the following two sections, we provide a list of those features
  that <productname>PostgreSQL</productname> supports, followed by a
  list of the features defined in SQL99 which are not yet supported in
  PostgreSQL.  Both of these lists are approximate: There may be minor
  details that are nonconforming for a feature that is listed as
  supported, and large parts of an unsupported feature may in fact be
  implemented.  The main body of the documentation always contains the
  most accurate information about what does and does not work.
 </para>

 <note>
  <para>
   Feature codes containing a hyphen are subfeatures.  Therefore, if a
   particular subfeature is not supported, the main feature is listed
   as unsupported even if some other subfeatures are supported.
  </para>
 </note>

  <sect1 id="features-sql99">
   <title>Supported Features</title>

   <para>
    <informaltable>
     <tgroup cols="4">
      <thead>
       <row>
        <entry>Identifier</entry>
        <entry>Package</entry>
        <entry>Description</entry>
        <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-01</entry>
        <entry>Core</entry>
        <entry>SET TRANSACTION statement: ISOLATION LEVEL SERIALIZABLE
         clause</entry> 
        <entry></entry>
       </row>
       <row>
        <entry>E161</entry>
        <entry>Core</entry>
        <entry>SQL comments using leading double minus</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>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>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>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>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>E152</entry>
        <entry>Core</entry>
        <entry>Basic SET TRANSACTION statement</entry>
        <entry></entry>
       </row>
       <row>
        <entry>E152-02</entry>
        <entry>Core</entry>
        <entry>SET TRANSACTION statement: READ ONLY and READ WRITE
         clauses</entry> 
        <entry>Syntax accepted; READ ONLY not supported</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>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-19</entry>
        <entry>Core</entry>
        <entry>REVOKE statement: RESTRICT clause</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>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>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>F501-03</entry>
        <entry>Core</entry>
        <entry>SQL_LANGUAGES 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>F711</entry>
        <entry></entry>
        <entry>ALTER domain</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>
       <row>
        <entry>T601</entry>
        <entry></entry>
        <entry>Local cursor references</entry>
        <entry></entry>
       </row>
      </tbody>
     </tgroup>
    </informaltable>
   </para>
  </sect1>

 </appendix>

<!-- Keep this comment at the end of the file
Local variables:
mode:sgml
sgml-omittag:nil
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"./reference.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:("/usr/lib/sgml/catalog")
sgml-local-ecat-files:nil
End:
-->
