]> granicus.if.org Git - postgresql/commitdiff
Add LOCALTIME and LOCALTIMESTAMP functions per SQL99 standard.
authorThomas G. Lockhart <lockhart@fourpalms.org>
Sat, 15 Jun 2002 03:00:09 +0000 (03:00 +0000)
committerThomas G. Lockhart <lockhart@fourpalms.org>
Sat, 15 Jun 2002 03:00:09 +0000 (03:00 +0000)
Remove ODBC-compatible empty parentheses from calls to SQL99 functions
 for which these parentheses do not match the standard.
Update the ODBC driver to ensure compatibility with the ODBC standard
 for these functions (e.g. CURRENT_TIMESTAMP, CURRENT_USER, etc).
Include a new appendix in the User's Guide which lists the labeled features
 for SQL99 (the labeled features replaced the "basic", "intermediate",
 and "advanced" categories from SQL92). features.sgml does not yet split
 this list into "supported" and "unsupported" lists.

doc/src/sgml/features.sgml [new file with mode: 0644]
doc/src/sgml/filelist.sgml
doc/src/sgml/func.sgml
doc/src/sgml/user.sgml
src/backend/parser/gram.y
src/backend/parser/keywords.c
src/interfaces/odbc/convert.c

diff --git a/doc/src/sgml/features.sgml b/doc/src/sgml/features.sgml
new file mode 100644 (file)
index 0000000..f69c4c3
--- /dev/null
@@ -0,0 +1,1811 @@
+<!--
+$Header: /cvsroot/pgsql/doc/src/sgml/features.sgml,v 2.1 2002/06/15 02:59:55 thomas Exp $
+-->
+
+ <appendix id="features">
+  <title>SQL99 Feature List</title>
+
+  <sect1 id="features-sql99">
+   <title>Supported Features</title>
+
+   <para>
+    <acronym>SQL92</acronym> defined three feature sets for
+    compliance: basic, intermediate, and advanced. Most database
+    products claiming <acronym>SQL</acronym> standards compliance were
+    compliant at only the basic level, since the entire set of
+    intermediate and advanced features was either to 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>. We list the entire set of features
+    defined in the standard, with comments on those features not yet
+    implemented in <productname>PostgreSQL</productname>.
+
+    <informaltable>
+     <tgroup cols="3">
+      <thead>
+       <row>
+        <entry>Identifier</entry>
+        <entry>Description</entry>
+        <entry>Comment</entry>
+       </row>
+      </thead>
+      <tbody>
+       <row>
+        <entry>E011</entry>
+        <entry>Numeric data types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E011-01</entry>
+        <entry>INTEGER and SMALLINT data types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E011-02</entry>
+        <entry>REAL, DOUBLE PRECISON, and FLOAT data types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E011-03</entry>
+        <entry>DECIMAL and NUMERIC data types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E011-04</entry>
+        <entry>Arithmetic operators</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E011-05</entry>
+        <entry>Numeric comparison</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E011-06</entry>
+        <entry>Implicit casting among the numeric data types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E021</entry>
+        <entry>Character data types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E021-01</entry>
+        <entry>CHARACTER data type</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E021-02</entry>
+        <entry>CHARACTER VARYING data type</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E021-03</entry>
+        <entry>Character literals</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E021-04</entry>
+        <entry>CHARACTER_LENGTH function</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E021-05</entry>
+        <entry>OCTET_LENGTH function</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E021-06</entry>
+        <entry>SUBSTRING function</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E021-07</entry>
+        <entry>Character concatenation</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E021-08</entry>
+        <entry>UPPER and LOWER functions</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E021-09</entry>
+        <entry>TRIM function</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E021-10</entry>
+        <entry>Implicit casting among the character data types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E021-11</entry>
+        <entry>POSITION function</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E011-12</entry>
+        <entry>Character comparison</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E031</entry>
+        <entry>Identifiers</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E031-01</entry>
+        <entry>Delimited identifiers</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E031-02</entry>
+        <entry>Lower case identifiers</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E031-03</entry>
+        <entry>Trailing underscore</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E051</entry>
+        <entry>Basic query specification</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E051-01</entry>
+        <entry>SELECT DISTINCT</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E051-02</entry>
+        <entry>GROUP BY clause</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E051-04</entry>
+        <entry>GROUP BY can contain columns not in &lt;select list&gt;</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E051-05</entry>
+        <entry>Select list items can be renamed</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E051-06</entry>
+        <entry>HAVING clause</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E051-07</entry>
+        <entry>Qualified * in select list</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E051-08</entry>
+        <entry>Correlation names in the FROM clause</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E051-09</entry>
+        <entry>Rename columns in the FROM clause</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E061</entry>
+        <entry>Basic predicates and search conditions</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E061-01</entry>
+        <entry>Comparison predicate</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E061-02</entry>
+        <entry>BETWEEN predicate</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E061-03</entry>
+        <entry>IN predicate with list of values</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E061-04</entry>
+        <entry>LIKE predicate</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E061-05</entry>
+        <entry>LIKE predicate ESCAPE clause</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E061-06</entry>
+        <entry>NULL predicate</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E061-07</entry>
+        <entry>Quantified comparison predicate</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E061-08</entry>
+        <entry>EXISTS predicate</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E061-09</entry>
+        <entry>Subqueries in comparison predicate</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E061-11</entry>
+        <entry>Subqueries in IN predicate</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E061-12</entry>
+        <entry>Subqueries in quantified comparison predicate</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E061-13</entry>
+        <entry>Correlated subqueries</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E061-14</entry>
+        <entry>Search condition</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E071</entry>
+        <entry>Basic query expressions</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E071-01</entry>
+        <entry>UNION DISTINCT table operator</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E071-02</entry>
+        <entry>UNION ALL table operator</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E071-03</entry>
+        <entry>EXCEPT DISTINCT table operator</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E071-05</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>Table operators in subqueries</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E081</entry>
+        <entry>Basic Privileges</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E081-01</entry>
+        <entry>SELECT privilege</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E081-02</entry>
+        <entry>DELETE privilege</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E081-03</entry>
+        <entry>INSERT privilege at the table level</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E081-04</entry>
+        <entry>UPDATE privilege at the table level</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E081-05</entry>
+        <entry>UPDATE privilege at the column level</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E081-06</entry>
+        <entry>REFERENCES privilege at the table level</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E081-07</entry>
+        <entry>REFERENCES privilege at the column level</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E081-08</entry>
+        <entry>WITH GRANT OPTION</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E091</entry>
+        <entry>Set functions</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E091-01</entry>
+        <entry>AVG</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E091-02</entry>
+        <entry>COUNT</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E091-03</entry>
+        <entry>MAX</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E091-04</entry>
+        <entry>MIN</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E091-05</entry>
+        <entry>SUM</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E091-06</entry>
+        <entry>ALL quantifier</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E091-07</entry>
+        <entry>DISTINCT quantifier</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E101</entry>
+        <entry>Basic data manipulation</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E101-01</entry>
+        <entry>INSERT statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E101-03</entry>
+        <entry>Searched UPDATE statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E101-04</entry>
+        <entry>Searched DELETE statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E111</entry>
+        <entry>Single row SELECT statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E121</entry>
+        <entry>Basic cursor support</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E121-01</entry>
+        <entry>DECLARE CURSOR</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E121-02</entry>
+        <entry>ORDER BY columns need not be in select list</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E121-03</entry>
+        <entry>Value expressions in ORDER BY clause</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E121-04</entry>
+        <entry>OPEN statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E121-06</entry>
+        <entry>Positioned UPDATE statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E121-07</entry>
+        <entry>Positioned DELETE statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E121-08</entry>
+        <entry>CLOSE statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E121-10</entry>
+        <entry>FETCH statement implicit NEXT</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E121-17</entry>
+        <entry>WITH HOLD cursors</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E131</entry>
+        <entry>Null value support (nulls in lieu of values)</entry> 
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E141</entry>
+        <entry>Basic integrity constraints</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E141-01</entry>
+        <entry>NOT NULL constraints</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E141-02</entry>
+        <entry>UNIQUE constraints of NOT NULL columns</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E141-03</entry>
+        <entry>PRIMARY KEY constraints</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E141-04</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>CHECK constraints</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E141-07</entry>
+        <entry>Column defaults</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E141-08</entry>
+        <entry>NOT NULL inferred on PRIMARY KEY</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E141-10</entry>
+        <entry>Names in a foreign key can be specified in any order</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E151</entry>
+        <entry>Transaction support</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E151-01</entry>
+        <entry>COMMIT statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E151-02</entry>
+        <entry>ROLLBACK statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E152</entry>
+        <entry>Basic SET TRANSACTION statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E152-01</entry>
+        <entry>SET TRANSACTION statement: ISOLATION LEVEL SERIALIZABLE
+         clause</entry> 
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E152-02</entry>
+        <entry>SET TRANSACTION statement: READ ONLY and READ WRITE clauses</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E153</entry>
+        <entry>Updatable queries with subqueries</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E161</entry>
+        <entry>SQL comments using leading double minus</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E171</entry>
+        <entry>SQLSTATE support</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>E182</entry>
+        <entry>Module language</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F021</entry>
+        <entry>Basic information schema</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F021-01</entry>
+        <entry>COLUMNS view</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F021-02</entry>
+        <entry>TABLES view</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F021-03</entry>
+        <entry>VIEWS view</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F021-04</entry>
+        <entry>TABLE_CONSTRAINTS view</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F021-05</entry>
+        <entry>REFERENTIAL_ CONSTRAINTS view</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F021-06</entry>
+        <entry>CHECK_CONSTRAINTS view</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F031</entry>
+        <entry>Basic schema manipulation</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F031-01</entry>
+        <entry>CREATE TABLE statement to create persistent base
+         tables</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F031-02</entry>
+        <entry>CREATE VIEW statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F031-03</entry>
+        <entry>GRANT statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F031-04</entry>
+        <entry>ALTER TABLE statement COLUMN clause</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F031-13</entry>
+        <entry>DROP TABLE statement clause</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F031-16</entry>
+        <entry>DROP VIEW statement RESTRICT clause</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F031-19</entry>
+        <entry>REVOKE statement RESTRICT clause</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F041</entry>
+        <entry>Basic joined table</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F041-01</entry>
+        <entry>Inner join (but not necessarily the INNER keyword)</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F041-02</entry>
+        <entry>INNER keyword</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F041-03</entry>
+        <entry>LEFT OUTER JOIN</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F041-04</entry>
+        <entry>RIGHT OUTER JOIN</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F041-05</entry>
+        <entry>Outer joins can be nested</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F041-07</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>All comparison operators are supported
+         (rather than just =)</entry> 
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F051</entry>
+        <entry>Basic date and time</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F051-01</entry>
+        <entry>DATE data type (including support of DATE literal)</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F051-02</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>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>Comparison predicate on DATE TIMESTAMP data types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F051-05</entry>
+        <entry>Explicit CAST between datetime types and character types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F051-06</entry>
+        <entry>CURRENT_DATE</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F051-07</entry>
+        <entry>LOCALTIME</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F051-08</entry>
+        <entry>LOCALTIMESTAMP</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F081</entry>
+        <entry>UNION and EXCEPT in views</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F131</entry>
+        <entry>Grouped operations</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F131-01</entry>
+        <entry>WHERE, GROUP BY and HAVING clauses supported in queries
+         with grouped views</entry> 
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F131-02</entry>
+        <entry>Multiple tables supported in queries with grouped views</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F131-03</entry>
+        <entry>Set functions supported in queries with grouped views</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F131-04</entry>
+        <entry>Subqueries with GROUP BY and HAVING clauses and grouped views</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F131-05</entry>
+        <entry>Single row SELECT with GROUP BY and HAVING clauses and grouped views</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F181</entry>
+        <entry>Multiple module support</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F201</entry>
+        <entry>CAST function</entry> 
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F221</entry>
+        <entry>Explicit defaults</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F261</entry>
+        <entry>CASE expression</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F261-01</entry>
+        <entry>Simple CASE</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F261-02</entry>
+        <entry>Searched CASE</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F261-03</entry>
+        <entry>NULLIF</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F261-04</entry>
+        <entry>COALESCE</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F311</entry>
+        <entry>Schema definition statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F311-01</entry>
+        <entry>CREATE SCHEMA</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F311-02</entry>
+        <entry>CREATE TABLE for persistent base tables</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F311-03</entry>
+        <entry>CREATE VIEW</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F311-04</entry>
+        <entry>CREATE VIEW: WITH CHECK OPTION</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F311-05</entry>
+        <entry>GRANT statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F471</entry>
+        <entry>Scalar subquery values</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F481</entry>
+        <entry>Expanded NULL predicate</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F501</entry>
+        <entry>Features and conformance views</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F501-01</entry>
+        <entry>SQL_FEATURES view</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F501-02</entry>
+        <entry>SQL_SIZING view</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F501-03</entry>
+        <entry>SQL_LANGUAGES view</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F812</entry>
+        <entry>Basic flagging</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S011</entry>
+        <entry>Distinct data types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S011-01</entry>
+        <entry>USER_DEFINED_TYPES view</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T321</entry>
+        <entry>Basic SQL-invoked routines</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T321-01</entry>
+        <entry>User-defined functions with no overloading</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T321-02</entry>
+        <entry>User-defined stored procedures with no overloading</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T321-03</entry>
+        <entry>Function invocation</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T321-04</entry>
+        <entry>CALL statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T321-05</entry>
+        <entry>RETURN statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T321-06</entry>
+        <entry>ROUTINES view</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T321-07</entry>
+        <entry>PARAMETERS view</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F032</entry>
+        <entry>CASCADE drop behavior</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F033</entry>
+        <entry>ALTER TABLE statement: DROP COLUMN clause</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F034</entry>
+        <entry>Extended REVOKE statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F034-01</entry>
+        <entry>REVOKE statement performed by other than the owner of a schema object</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F034-02</entry>
+        <entry>REVOKE statement: GRANT OPTION FOR clause</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F034-03</entry>
+        <entry>REVOKE statement to revoke a privilege that the grantee has WITH GRANT OPTION</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F052</entry>
+        <entry>Intervals and datetime arithmetic</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F111</entry>
+        <entry>Isolation levels other than SERIALIZABLE</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F111-01</entry>
+        <entry>READ UNCOMMITTED isolation level</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F111-02</entry>
+        <entry>READ COMMITTED isolation level</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F111-03</entry>
+        <entry>REPEATABLE READ isolation level</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F121</entry>
+        <entry>Basic diagnostics management</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F121-01</entry>
+        <entry>GET DIAGNOSTICS statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F121-02</entry>
+        <entry>SET TRANSACTION statement: DIAGNOSTICS SIZE clause</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F171</entry>
+        <entry>Multiple schemas per user</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F191</entry>
+        <entry>Referential delete actions</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F222</entry>
+        <entry>INSERT statement: DEFAULT VALUES clause</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F231</entry>
+        <entry>Privilege Tables</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F231-01</entry>
+        <entry>TABLE_PRIVILEGES view</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F231-02</entry>
+        <entry>COLUMN_PRIVILEGES view</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F231-03</entry>
+        <entry>USAGE_PRIVILEGES view</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F251</entry>
+        <entry>Domain support</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F271</entry>
+        <entry>Compound character literals</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F281</entry>
+        <entry>LIKE enhancements</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F291</entry>
+        <entry>UNIQUE predicate</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F301</entry>
+        <entry>CORRESPONDING in query expressions</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F302</entry>
+        <entry>INTERSECT table operator</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F302-01</entry>
+        <entry>INTERSECT DISTINCT table operator</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F302-02</entry>
+        <entry>INTERSECT ALL table operator</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F304</entry>
+        <entry>EXCEPT ALL table operator</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F321</entry>
+        <entry>User authorization</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F341</entry>
+        <entry>Usage tables</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F361</entry>
+        <entry>Subprogram support</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F381</entry>
+        <entry>Extended schema manipulation</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F381-01</entry>
+        <entry>ALTER TABLE statement: ALTER COLUMN clause</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F381-02</entry>
+        <entry>ALTER TABLE statement: ADD CONSTRAINT clause</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F381-03</entry>
+        <entry>ALTER TABLE statement: DROP CONSTRAINT clause</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F391</entry>
+        <entry>Long identifiers</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F401</entry>
+        <entry>Extended joined table</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F401-01</entry>
+        <entry>NATURAL JOIN</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F401-02</entry>
+        <entry>FULL OUTER JOIN</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F401-03</entry>
+        <entry>UNION JOIN</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F401-04</entry>
+        <entry>CROSS JOIN</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F411</entry>
+        <entry>Time zone specification</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F421</entry>
+        <entry>National character</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F431</entry>
+        <entry>Read-only scrollable cursors</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F431-01</entry>
+        <entry>FETCH with explicit NEXT</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F431-02</entry>
+        <entry>FETCH FIRST</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F431-03</entry>
+        <entry>FETCH LAST</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F431-04</entry>
+        <entry>FETCH PRIOR</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F431-05</entry>
+        <entry>FETCH ABSOLUTE</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F431-06</entry>
+        <entry>FETCH RELATIVE</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F441</entry>
+        <entry>Extended set function support</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F451</entry>
+        <entry>Character set definition</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F461</entry>
+        <entry>Named character sets</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F491</entry>
+        <entry>Constraint management</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F502</entry>
+        <entry>Enhanced documentation tables</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F502-01</entry>
+        <entry>SQL_SIZING_PROFILES view</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F502-02</entry>
+        <entry>SQL_IMPLEMENTATION_INFO view</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F502-03</entry>
+        <entry>SQL_PACKAGES view</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F511</entry>
+        <entry>BIT data type</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F521</entry>
+        <entry>Assertions</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F531</entry>
+        <entry>Temporary tables</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F555</entry>
+        <entry>Enhanced seconds precision</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F561</entry>
+        <entry>Full value expressions</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F571</entry>
+        <entry>Truth value tests</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F591</entry>
+        <entry>Derived tables</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F611</entry>
+        <entry>Indicator data types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F641</entry>
+        <entry>Row and table constructors</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F651</entry>
+        <entry>Catalog name qualifiers</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F661</entry>
+        <entry>Simple tables</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F671</entry>
+        <entry>Subqueries in CHECK</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F691</entry>
+        <entry>Collation and translation</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F701</entry>
+        <entry>Referential update actions</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F711</entry>
+        <entry>ALTER domain</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F721</entry>
+        <entry>Deferrable constraints</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F731</entry>
+        <entry>INSERT column privileges</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F741</entry>
+        <entry>Referential MATCH types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F751</entry>
+        <entry>View CHECK enhancements</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F761</entry>
+        <entry>Session management</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F771</entry>
+        <entry>Connection management</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F781</entry>
+        <entry>Self-referencing operations</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F791</entry>
+        <entry>Insensitive cursors</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F801</entry>
+        <entry>Full set function</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F811</entry>
+        <entry>Extended flagging</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F813</entry>
+        <entry>Extended flagging for "Core SQL Flagging" and "Catalog
+         Lookup" only</entry> 
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F821</entry>
+        <entry>Local table references</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F831</entry>
+        <entry>Full cursor update</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F831-01</entry>
+        <entry>Updateable scrollable cursors</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>F831-02</entry>
+        <entry>Updateable ordered cursors</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S023</entry>
+        <entry>Basic structured types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S024</entry>
+        <entry>Enhanced structured types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S041</entry>
+        <entry>Basic reference types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S043</entry>
+        <entry>Enhanced reference types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S051</entry>
+        <entry>Create table of type</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S071</entry>
+        <entry>SQL paths in function and type name resolution</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S081</entry>
+        <entry>Subtables</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S091</entry>
+        <entry>Basic array support</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S091-01</entry>
+        <entry>Arrays of built-in data types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S091-02</entry>
+        <entry>Arrays of distinct types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S091-03</entry>
+        <entry>Array expressions</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S092</entry>
+        <entry>Arrays of user-defined types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S094</entry>
+        <entry>Arrays of reference types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S111</entry>
+        <entry>ONLY in query expressions</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S151</entry>
+        <entry>Type predicate</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S161</entry>
+        <entry>Subtype treatment</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S201</entry>
+        <entry>SQL routines on arrays</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S201-01</entry>
+        <entry>Array parameters</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S201-02</entry>
+        <entry>Array as result type of functions</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S211</entry>
+        <entry>User-defined cast functions</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S231</entry>
+        <entry>Structured type locators</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S232</entry>
+        <entry>Array locators</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S241</entry>
+        <entry>Transform functions</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S251</entry>
+        <entry>User-defined orderings</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>S261</entry>
+        <entry>Specific type method</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T011</entry>
+        <entry>Timestamp in Information Schema</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T031</entry>
+        <entry>BOOLEAN data type</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T041</entry>
+        <entry>Basic LOB data type support</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T041-01</entry>
+        <entry>BLOB data type</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T041-02</entry>
+        <entry>CLOB data type</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T041-03</entry>
+        <entry>POSITION, LENGTH, LOWER, TRIM, UPPER, and SUBSTRING
+         functions for LOB data types</entry> 
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T041-04</entry>
+        <entry>Concatenation of LOB data types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T041-05</entry>
+        <entry>LOB locator: non-holdable</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T042</entry>
+        <entry>Extended LOB data type support</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T051</entry>
+        <entry>Row types</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T111</entry>
+        <entry>Updatable joins, unions, and columns</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T121</entry>
+        <entry>WITH (excluding RECURSIVE) in query expression</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T131</entry>
+        <entry>Recursive query</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T141</entry>
+        <entry>SIMILAR predicate</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T151</entry>
+        <entry>DISTINCT predicate</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T171</entry>
+        <entry>LIKE clause in table definition</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T191</entry>
+        <entry>Referential action RESTRICT</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T201</entry>
+        <entry>Comparable data types for referential constraints</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T211</entry>
+        <entry>Basic trigger capability</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T211-01</entry>
+        <entry>Triggers activated on UPDATE, INSERT, or DELETE of one
+         base table</entry> 
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T211-02</entry>
+        <entry>BEFORE triggers</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T211-03</entry>
+        <entry>AFTER triggers</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T211-04</entry>
+        <entry>FOR EACH ROW triggers</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T211-05</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>Support for run-time rules for the interaction of triggers
+         and constraints</entry> 
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T211-07</entry>
+        <entry>TRIGGER privilege</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T211-08</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>T212</entry>
+        <entry>Enhanced trigger capability</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T231</entry>
+        <entry>SENSITIVE cursors</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T241</entry>
+        <entry>START TRANSACTION statement</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T251</entry>
+        <entry>SET TRANSACTION statement: LOCAL option</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T261</entry>
+        <entry>Chained transactions</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T271</entry>
+        <entry>Savepoints</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T281</entry>
+        <entry>SELECT privilege with column granularity</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T301</entry>
+        <entry>Functional Dependencies</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T312</entry>
+        <entry>OVERLAY function</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T322</entry>
+        <entry>Overloading of SQL-invoked functions and procedures</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T323</entry>
+        <entry>Explicit security for external routines</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T331</entry>
+        <entry>Basic roles</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T332</entry>
+        <entry>Extended roles</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T351</entry>
+        <entry>Bracketed SQL comments (/*...*/ comments)</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T401</entry>
+        <entry>INSERT into a cursor</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T411</entry>
+        <entry>UPDATE statement: SET ROW option</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T431</entry>
+        <entry>CUBE and ROLLUP operations</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T441</entry>
+        <entry>ABS and MOD functions</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T461</entry>
+        <entry>Symmetric BETWEEN predicate</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T471</entry>
+        <entry>Result sets return value</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T491</entry>
+        <entry>LATERAL derived table</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T501</entry>
+        <entry>Enhanced EXISTS predicate</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T511</entry>
+        <entry>Transaction counts</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T541</entry>
+        <entry>Updatable table references</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T551</entry>
+        <entry>Optional key words for default syntax</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T561</entry>
+        <entry>Holdable locators</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T571</entry>
+        <entry>Array-returning external SQL-invoked functions</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T581</entry>
+        <entry>Regular expression substring function</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T591</entry>
+        <entry>UNIQUE constraints of possibly null columns</entry>
+        <entry></entry>
+       </row>
+       <row>
+        <entry>T601</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:
+-->
index 33d0d4ea67155fbeb0f85a7db04fb6eec2124efe..d8c5998fb84a1567734b3ce37cae70a0df86eb93 100644 (file)
@@ -1,4 +1,4 @@
-<!-- $Header: /cvsroot/pgsql/doc/src/sgml/filelist.sgml,v 1.18 2002/06/13 05:54:00 momjian Exp $ -->
+<!-- $Header: /cvsroot/pgsql/doc/src/sgml/filelist.sgml,v 1.19 2002/06/15 02:59:55 thomas Exp $ -->
 
 <!entity history    SYSTEM "history.sgml">
 <!entity info       SYSTEM "info.sgml">
 <!entity array      SYSTEM "array.sgml">
 <!entity datatype   SYSTEM "datatype.sgml">
 <!entity datetime   SYSTEM "datetime.sgml">
+<!entity features   SYSTEM "features.sgml">
 <!entity func       SYSTEM "func.sgml">
 <!entity indices    SYSTEM "indices.sgml">
 <!entity inherit    SYSTEM "inherit.sgml">
+<!entity keywords   SYSTEM "keywords.sgml">
 <!entity manage     SYSTEM "manage.sgml">
 <!entity mvcc       SYSTEM "mvcc.sgml">
 <!entity perform    SYSTEM "perform.sgml">
 <!entity queries    SYSTEM "queries.sgml">
 <!entity syntax     SYSTEM "syntax.sgml">
 <!entity typeconv   SYSTEM "typeconv.sgml">
-<!entity keywords   SYSTEM "keywords.sgml">
 
 <!-- reference pages -->
 <!entity % allfiles   SYSTEM "ref/allfiles.sgml">
index 1e7e5bcde61eb815ea6b3a280919322cfca372eb..976147f5c2abac3ff35c8cb04f8d5f2cb2f89895 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/func.sgml,v 1.101 2002/06/11 16:00:17 thomas Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/func.sgml,v 1.102 2002/06/15 02:59:55 thomas Exp $
 PostgreSQL documentation
 -->
 
@@ -2703,17 +2703,17 @@ PostgreSQL documentation
        </row>
 
        <row>
-       <entry><function>current_time</function></entry>
-       <entry><type>time</type></entry>
-       <entry>Time of day; see <link linkend="functions-datetime-current">below</link>
-       </entry>
-       <entry></entry>
-       <entry></entry>
+        <entry><function>current_time</function></entry>
+        <entry><type>time with time zone</type></entry>
+        <entry>Time of day; see <link linkend="functions-datetime-current">below</link>
+        </entry>
+        <entry></entry>
+        <entry></entry>
        </row>
 
        <row>
        <entry><function>current_timestamp</function></entry>
-       <entry><type>timestamp</type></entry>
+       <entry><type>timestamp with time zone</type></entry>
        <entry>Date and time; see <link linkend="functions-datetime-current">below</link>
        </entry>
        <entry></entry>
@@ -2790,6 +2790,24 @@ PostgreSQL documentation
        <entry><literal>true</literal></entry>
        </row>
 
+       <row>
+        <entry><function>localtime</function></entry>
+        <entry><type>time</type></entry>
+        <entry>Time of day; see <link linkend="functions-datetime-current">below</link>
+        </entry>
+        <entry></entry>
+        <entry></entry>
+       </row>
+
+       <row>
+        <entry><function>localtimestamp</function></entry>
+        <entry><type>timestamp</type></entry>
+        <entry>Date and time; see <link linkend="functions-datetime-current">below</link>
+        </entry>
+        <entry></entry>
+        <entry></entry>
+       </row>
+
        <row>
        <entry><function>now</function>()</entry>
        <entry><type>timestamp</type></entry>
@@ -3264,40 +3282,37 @@ SELECT date_trunc('year', TIMESTAMP '2001-02-16 20:38:40');
    <para>
     The following functions are available to obtain the current date and/or
     time:
-<synopsis>
+     <synopsis>
 CURRENT_DATE
 CURRENT_TIME
 CURRENT_TIMESTAMP
 CURRENT_TIME ( <replaceable>precision</replaceable> )
 CURRENT_TIMESTAMP ( <replaceable>precision</replaceable> )
-</synopsis>
-    <function>CURRENT_TIME</function> and
-    <function>CURRENT_TIMESTAMP</function> can optionally be given
-    a precision parameter, which causes the result to be rounded
-    to that many fractional digits.  Without a precision parameter,
-    the result is given to full available precision.
-   </para>
-
-   <note>
-    <para>
-     Prior to <productname>PostgreSQL</productname> 7.2, the precision parameters
-     were unimplemented, and the result was always given in integer
-     seconds.
+LOCALTIME
+LOCALTIMESTAMP
+LOCALTIME ( <replaceable>precision</replaceable> )
+LOCALTIMESTAMP ( <replaceable>precision</replaceable> )
+     </synopsis>
+     <function>CURRENT_TIME</function>,
+     <function>CURRENT_TIMESTAMP</function>,
+     <function>LOCALTIME</function>, and
+     <function>LOCALTIMESTAMP</function>
+     can optionally be given
+     a precision parameter, which causes the result to be rounded
+     to that many fractional digits.  Without a precision parameter,
+     the result is given to the full available precision.
     </para>
-   </note>
 
-   <note>
-    <para>
-     The <acronym>SQL99</acronym> standard requires these functions to
-     be written without any parentheses, unless a precision parameter
-     is given.  As of <productname>PostgreSQL</productname> 7.2, an empty pair of
-     parentheses can be written, but this is deprecated and may be
-     removed in a future release.
-    </para>
-   </note>
+    <note>
+     <para>
+      Prior to <productname>PostgreSQL</productname> 7.2, the precision
+      parameters were unimplemented, and the result was always given
+      in integer seconds.
+     </para>
+    </note>
 
-   <informalexample>
-<screen>
+    <informalexample>
+     <screen>
 SELECT CURRENT_TIME;
 <computeroutput>14:39:53.662522-05</computeroutput>
 
@@ -3309,6 +3324,9 @@ SELECT CURRENT_TIMESTAMP;
 
 SELECT CURRENT_TIMESTAMP(2);
 <computeroutput>2001-12-23 14:39:53.66-05</computeroutput>
+
+SELECT LOCALTIMESTAMP;
+<computeroutput>2001-12-23 14:39:53.662522</computeroutput>
 </screen>
    </informalexample>
 
index f8da13ded6ff18dc921df6eb464b33926678e8e3..79ed594ff7eff9223c9a1c074afdb00be322e0a5 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-$Header: /cvsroot/pgsql/doc/src/sgml/Attic/user.sgml,v 1.29 2001/05/12 22:51:36 petere Exp $
+$Header: /cvsroot/pgsql/doc/src/sgml/Attic/user.sgml,v 1.30 2002/06/15 02:59:55 thomas Exp $
 -->
 
 <book id="user">
@@ -31,6 +31,7 @@ $Header: /cvsroot/pgsql/doc/src/sgml/Attic/user.sgml,v 1.29 2001/05/12 22:51:36
 
  &datetime;
  &keywords;
+ &features;
 
  &biblio;
 
index bfbf23e3df797fa94e19ed5fad2a054b879ed984..b4ff1fcf50fc28971f2b9aee58b137a8faa3268f 100644 (file)
@@ -11,7 +11,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.322 2002/06/13 14:16:43 thomas Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/parser/gram.y,v 2.323 2002/06/15 03:00:03 thomas Exp $
  *
  * HISTORY
  *       AUTHOR                        DATE                    MAJOR EVENT
@@ -259,7 +259,6 @@ static void doNegateFloat(Value *v);
 %type <list>   row_descriptor, row_list, in_expr_nodes
 %type <node>   row_expr
 %type <node>   case_expr, case_arg, when_clause, case_default
-%type <boolean>        opt_empty_parentheses
 %type <list>   when_clause_list
 %type <ival>   sub_type
 %type <list>   OptCreateAs, CreateAsList
@@ -347,7 +346,7 @@ static void doNegateFloat(Value *v);
        KEY,
 
        LANCOMPILER, LANGUAGE, LEADING, LEFT, LEVEL, LIKE, LIMIT, LISTEN,
-       LOAD, LOCAL, LOCATION, LOCK_P,
+       LOAD, LOCAL, LOCALTIME, LOCALTIMESTAMP, LOCATION, LOCK_P,
 
        MATCH, MAXVALUE, MINUTE_P, MINVALUE, MODE, MONTH_P, MOVE,
 
@@ -5461,7 +5460,7 @@ c_expr:  columnref
                                        n->agg_distinct = FALSE;
                                        $$ = (Node *)n;
                                }
-               | CURRENT_DATE opt_empty_parentheses
+               | CURRENT_DATE
                                {
                                        /*
                                         * Translate as "'now'::text::date".
@@ -5487,7 +5486,7 @@ c_expr:  columnref
 
                                        $$ = (Node *)makeTypeCast((Node *)s, d);
                                }
-               | CURRENT_TIME opt_empty_parentheses
+               | CURRENT_TIME
                                {
                                        /*
                                         * Translate as "'now'::text::timetz".
@@ -5530,7 +5529,7 @@ c_expr:  columnref
 
                                        $$ = (Node *)makeTypeCast((Node *)s, d);
                                }
-               | CURRENT_TIMESTAMP opt_empty_parentheses
+               | CURRENT_TIMESTAMP
                                {
                                        /*
                                         * Translate as "'now'::text::timestamptz".
@@ -5574,7 +5573,94 @@ c_expr:  columnref
 
                                        $$ = (Node *)makeTypeCast((Node *)s, d);
                                }
-               | CURRENT_USER opt_empty_parentheses
+               | LOCALTIME
+                               {
+                                       /*
+                                        * Translate as "'now'::text::time".
+                                        * See comments for CURRENT_DATE.
+                                        */
+                                       A_Const *s = makeNode(A_Const);
+                                       TypeName *d;
+
+                                       s->val.type = T_String;
+                                       s->val.val.str = "now";
+                                       s->typename = SystemTypeName("text");
+
+                                       d = SystemTypeName("time");
+                                       /* SQL99 mandates a default precision of zero for TIME
+                                        * fields in schemas. However, for LOCALTIME
+                                        * let's preserve the microsecond precision we
+                                        * might see from the system clock. - thomas 2001-12-07
+                                        */
+                                       d->typmod = 6;
+
+                                       $$ = (Node *)makeTypeCast((Node *)s, d);
+                               }
+               | LOCALTIME '(' Iconst ')'
+                               {
+                                       /*
+                                        * Translate as "'now'::text::time(n)".
+                                        * See comments for CURRENT_DATE.
+                                        */
+                                       A_Const *s = makeNode(A_Const);
+                                       TypeName *d;
+
+                                       s->val.type = T_String;
+                                       s->val.val.str = "now";
+                                       s->typename = SystemTypeName("text");
+                                       d = SystemTypeName("time");
+                                       if (($3 < 0) || ($3 > MAX_TIME_PRECISION))
+                                               elog(ERROR, "LOCALTIME(%d) precision must be between %d and %d",
+                                                        $3, 0, MAX_TIME_PRECISION);
+                                       d->typmod = $3;
+
+                                       $$ = (Node *)makeTypeCast((Node *)s, d);
+                               }
+               | LOCALTIMESTAMP
+                               {
+                                       /*
+                                        * Translate as "'now'::text::timestamp".
+                                        * See comments for CURRENT_DATE.
+                                        */
+                                       A_Const *s = makeNode(A_Const);
+                                       TypeName *d;
+
+                                       s->val.type = T_String;
+                                       s->val.val.str = "now";
+                                       s->typename = SystemTypeName("text");
+
+                                       d = SystemTypeName("timestamp");
+                                       /* SQL99 mandates a default precision of 6 for timestamp.
+                                        * Also, that is about as precise as we will get since
+                                        * we are using a microsecond time interface.
+                                        * - thomas 2001-12-07
+                                        */
+                                       d->typmod = 6;
+
+                                       $$ = (Node *)makeTypeCast((Node *)s, d);
+                               }
+               | LOCALTIMESTAMP '(' Iconst ')'
+                               {
+                                       /*
+                                        * Translate as "'now'::text::timestamp(n)".
+                                        * See comments for CURRENT_DATE.
+                                        */
+                                       A_Const *s = makeNode(A_Const);
+                                       TypeName *d;
+
+                                       s->val.type = T_String;
+                                       s->val.val.str = "now";
+                                       s->typename = SystemTypeName("text");
+
+                                       d = SystemTypeName("timestamp");
+                                       if (($3 < 0) || ($3 > MAX_TIMESTAMP_PRECISION))
+                                               elog(ERROR, "LOCALTIMESTAMP(%d) precision must be between %d and %d",
+                                                        $3, 0, MAX_TIMESTAMP_PRECISION);
+                                       d->typmod = $3;
+
+                                       $$ = (Node *)makeTypeCast((Node *)s, d);
+                               }
+               | CURRENT_USER
                                {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = SystemFuncName("current_user");
@@ -5583,7 +5669,7 @@ c_expr:  columnref
                                        n->agg_distinct = FALSE;
                                        $$ = (Node *)n;
                                }
-               | SESSION_USER opt_empty_parentheses
+               | SESSION_USER
                                {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = SystemFuncName("session_user");
@@ -5592,7 +5678,7 @@ c_expr:  columnref
                                        n->agg_distinct = FALSE;
                                        $$ = (Node *)n;
                                }
-               | USER opt_empty_parentheses
+               | USER
                                {
                                        FuncCall *n = makeNode(FuncCall);
                                        n->funcname = SystemFuncName("current_user");
@@ -5966,9 +6052,6 @@ attrs:  '.' attr_name
                                { $$ = lcons(makeString($2), $3); }
                ;
 
-opt_empty_parentheses: '(' ')' { $$ = TRUE; }
-                                       | /*EMPTY*/ { $$ = TRUE; }
-               ;
 
 /*****************************************************************************
  *
@@ -6572,6 +6655,8 @@ reserved_keyword:
                | INTO
                | LEADING
                | LIMIT
+               | LOCALTIME
+               | LOCALTIMESTAMP
                | NEW
                | NOT
                | NULL_P
index dca44c448f988c37ae4c38ec6781a93500a02e25..0f441290ea896f62106852b48f232de3e00a6962 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.113 2002/06/11 15:41:37 thomas Exp $
+ *       $Header: /cvsroot/pgsql/src/backend/parser/keywords.c,v 1.114 2002/06/15 03:00:03 thomas Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -172,6 +172,8 @@ static const ScanKeyword ScanKeywords[] = {
        {"listen", LISTEN},
        {"load", LOAD},
        {"local", LOCAL},
+       {"localtime", LOCALTIME},
+       {"localtimestamp", LOCALTIMESTAMP},
        {"location", LOCATION},
        {"lock", LOCK_P},
        {"match", MATCH},
index 39a430aff3f2d20ca2b9a0146dfa76bac19bdfae..60fdc54f9c34febf35ee5be89b9793b93f3215bf 100644 (file)
@@ -103,6 +103,8 @@ char           *mapFuncs[][2] = {
        {"CURRENT_DATE", "current_date" },
        {"CURRENT_TIME", "current_time" },
        {"CURRENT_TIMESTAMP", "current_timestamp" },
+       {"LOCALTIME", "localtime" },
+       {"LOCALTIMESTAMP", "localtimestamp" },
        {"CURRENT_USER", "cast(current_user as text)" },
        {"SESSION_USER", "cast(session_user as text)" },
        {"CURDATE",      "current_date" },