From 49cbef79479095caa5c8174b5d198265817c7856 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Sat, 27 Nov 2004 21:27:08 +0000 Subject: [PATCH] Update of conformance information to SQL:2003 by Troels Arvin, Simon Riggs, Elein Mustain Make spelling of SQL standard names uniform. --- doc/src/sgml/array.sgml | 8 +- doc/src/sgml/datatype.sgml | 19 ++- doc/src/sgml/ddl.sgml | 4 +- doc/src/sgml/errcodes.sgml | 4 +- doc/src/sgml/features.sgml | 116 +++++++++------ doc/src/sgml/func.sgml | 41 +++--- doc/src/sgml/information_schema.sgml | 6 +- doc/src/sgml/intro.sgml | 6 +- doc/src/sgml/keywords.sgml | 8 +- doc/src/sgml/ref/alter_domain.sgml | 4 +- doc/src/sgml/ref/alter_sequence.sgml | 21 +-- doc/src/sgml/ref/create_cast.sgml | 6 +- doc/src/sgml/ref/create_function.sgml | 4 +- doc/src/sgml/ref/create_sequence.sgml | 12 +- doc/src/sgml/ref/create_table.sgml | 15 +- doc/src/sgml/ref/create_table_as.sgml | 6 +- doc/src/sgml/ref/create_trigger.sgml | 12 +- doc/src/sgml/ref/create_type.sgml | 4 +- doc/src/sgml/ref/drop_sequence.sgml | 4 +- doc/src/sgml/ref/release_savepoint.sgml | 11 +- doc/src/sgml/ref/rollback_to.sgml | 17 ++- doc/src/sgml/ref/select.sgml | 10 +- doc/src/sgml/release.sgml | 10 +- src/backend/catalog/information_schema.sql | 8 +- src/backend/catalog/sql_feature_packages.txt | 6 - src/backend/catalog/sql_features.txt | 142 ++++++++++++++----- 26 files changed, 302 insertions(+), 202 deletions(-) diff --git a/doc/src/sgml/array.sgml b/doc/src/sgml/array.sgml index 2307ad47fd..ff8d6be531 100644 --- a/doc/src/sgml/array.sgml +++ b/doc/src/sgml/array.sgml @@ -1,4 +1,4 @@ - + Arrays @@ -63,8 +63,10 @@ CREATE TABLE tictactoe ( - An alternative, SQL99-standard syntax may be used for one-dimensional arrays. - pay_by_quarter could have been defined as: + An alternative syntax, which conforms to the SQL:1999 standard, may + be used for one-dimensional arrays. + pay_by_quarter could have been defined + as: pay_by_quarter integer ARRAY[4], diff --git a/doc/src/sgml/datatype.sgml b/doc/src/sgml/datatype.sgml index 6e01bfd94b..dd406e12e0 100644 --- a/doc/src/sgml/datatype.sgml +++ b/doc/src/sgml/datatype.sgml @@ -1,5 +1,5 @@ @@ -1744,9 +1744,20 @@ January 8 04:05:06 1999 PST - For timestamp [without time zone], any explicit time - zone specified in the input is silently ignored. That is, the - resulting date/time value is derived from the explicit date/time + The SQL standard differentiates timestamp without time zone + and timestamp with time zone literals by the existence of a + +; or -. Hence, according to the standard, + TIMESTAMP '2004-10-19 10:23:54' + is a timestamp without time zone, while + TIMESTAMP '2004-10-19 10:23:54+02' + is a timestamp with time zone. + PostgreSQL + differs from the standard by requiring that timestamp with time zone + literals be explicitly typed: + TIMESTAMP WITH TIME ZONE '2004-10-19 10:23:54+02' + If a literal is not explicitly indicated as being of timestamp with time zone, + PostgreSQL will silently ignore any time zone indication in the literal. + That is, the resulting date/time value is derived from the date/time fields in the input value, and is not adjusted for time zone. diff --git a/doc/src/sgml/ddl.sgml b/doc/src/sgml/ddl.sgml index fcae34f4a5..fd18cd2a9e 100644 --- a/doc/src/sgml/ddl.sgml +++ b/doc/src/sgml/ddl.sgml @@ -1,4 +1,4 @@ - + Data Definition @@ -1069,7 +1069,7 @@ SELECT name, altitude In previous versions of PostgreSQL, the default behavior was not to include child tables in queries. This was - found to be error prone and is also in violation of the SQL99 + found to be error prone and is also in violation of the SQL:1999 standard. Under the old syntax, to get the sub-tables you append * to the table name. For example diff --git a/doc/src/sgml/errcodes.sgml b/doc/src/sgml/errcodes.sgml index bc900283f5..1df05a8b6b 100644 --- a/doc/src/sgml/errcodes.sgml +++ b/doc/src/sgml/errcodes.sgml @@ -1,4 +1,4 @@ - + <productname>PostgreSQL</productname> Error Codes @@ -125,7 +125,7 @@ Class 02 -No Data — this is also a warning class per SQL99 +No Data — this is also a warning class per SQL:1999 diff --git a/doc/src/sgml/features.sgml b/doc/src/sgml/features.sgml index bea6aa6f9c..2e3a4983f1 100644 --- a/doc/src/sgml/features.sgml +++ b/doc/src/sgml/features.sgml @@ -1,5 +1,5 @@ @@ -7,68 +7,96 @@ $PostgreSQL: pgsql/doc/src/sgml/features.sgml,v 2.22 2003/11/29 19:51:37 pgsql E This section attempts to outline to what extent - PostgreSQL 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. - + PostgreSQL conforms to the current SQL + standard. The following information is not a full statement of + conformance, but it presents the main topics in as much detail as is + both reasonable and useful for users. + The formal name of the SQL standard is ISO/IEC 9075 Database Language SQL. A revised version of the standard is released - from time to time; the most recent one appearing in 1999. That - version is referred to as ISO/IEC 9075:1999, or informally as SQL99. - The version prior to that was SQL92. - PostgreSQL development tends to aim for + from time to time; the most recent one appearing in late 2003. That + version is referred to as ISO/IEC 9075:2003, or simply as SQL:2003. + The versions prior to that were SQL:1999 and SQL-92. Each version + replaces the previous one, so claims of conformance to earlier + versions have no official merit. + PostgreSQL development aims 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, balloting is under way for a - new revision of the standard, which, if approved, will eventually - become the conformance target for future - PostgreSQL development. + sense. The PostgreSQL project was not represented in the ISO/IEC + 9075 Working Group during the preparation of SQL:2003. Even so, + many of the features required by SQL:2003 are already supported, + though sometimes with slightly differing syntax or function. + Further moves towards conformance may be expected in later releases. + + + + SQL-92 defined three feature sets for + conformance: Entry, Intermediate, and Full. Most database + management systems claiming SQL 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. - SQL92 defined three feature sets for conformance: - Entry, Intermediate, and Full. Most database management systems claiming - SQL 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. + Starting with SQL:1999, the SQL standard defines + a large set of individual features rather than the ineffectively + broad three levels found in SQL-92. A large + subset of these features represents the Core + features, which every conforming SQL implementation must supply. + The rest of the features are purely optional. Some optional + features are grouped together to form packages, which + SQL implementations can claim conformance to, thus claiming + conformance to particular groups of features. - SQL99 defines a large set of individual features - rather than the ineffectively broad three levels found in - SQL92. A large subset of these features - represents the core features, which every conforming - SQL implementation must supply. The rest of the features are purely - optional. Some optional features are grouped together to form - packages, which SQL implementations can claim - conformance to, thus claiming conformance to particular groups of - features. + The SQL:2003 standard is also split into a number + of parts. Each is known by a shorthand name. Note that these parts + are not consecutively numbered. + + + ISO/IEC 9075-1 Framework (SQL/Framework) + ISO/IEC 9075-2 Foundation (SQL/Foundation) + ISO/IEC 9075-3 Call Level Interface (SQL/CLI) + ISO/IEC 9075-4 Persistent Stored Modules (SQL/PSM) + ISO/IEC 9075-9 Management of External Data (SQL/MED) + ISO/IEC 9075-10 Object Language Bindings (SQL/OLB) + ISO/IEC 9075-11 Information and Definition Schemas (SQL/Schemata) + ISO/IEC 9075-13 Routines and Types using the Java Language (SQL/JRT) + ISO/IEC 9075-14 XML-related specifications (SQL/XML) + - The SQL99 standard is also split into 5 parts: - Framework, Foundation, Call Level Interface, Persistent Stored - Modules, and Host Language Bindings. - PostgreSQL only covers parts 1, 2, and 5. + PostgreSQL covers parts 1, 2, and 11. Part 3 is similar to the ODBC interface, and part 4 is similar to the PL/pgSQL programming language, but - exact conformance is not specifically intended in either case. + exact conformance is not specifically intended or verified in either + case. + + + + PostgreSQL supports most of the major features of SQL:2003. Out of + 164 mandatory features required for full Core conformance, + PostgreSQL conforms to at least 150. In addition, there is a long + list of supported optional features. It may be worth noting that at + the time of writing, no current version of any database management + system claims full conformance to Core SQL:2003. In the following two sections, we provide a list of those features that PostgreSQL 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. + list of the features defined in SQL:2003 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. @@ -79,7 +107,7 @@ $PostgreSQL: pgsql/doc/src/sgml/features.sgml,v 2.22 2003/11/29 19:51:37 pgsql E - + Supported Features @@ -101,11 +129,11 @@ $PostgreSQL: pgsql/doc/src/sgml/features.sgml,v 2.22 2003/11/29 19:51:37 pgsql E - + Unsupported Features - The following features defined in SQL99 are not + The following features defined in SQL:2003 are not implemented in this release of PostgreSQL. In a few cases, equivalent functionality is available. diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml index 2549c516db..111000086d 100644 --- a/doc/src/sgml/func.sgml +++ b/doc/src/sgml/func.sgml @@ -1,5 +1,5 @@ @@ -2479,16 +2479,15 @@ cast(-44 as bit(12)) 111111010100 - There are three separate approaches to pattern matching provided by - PostgreSQL: the traditional - SQL - LIKE operator, the more recent - SQL99 - SIMILAR TO operator, and - POSIX-style regular expressions. + There are three separate approaches to pattern matching provided + by PostgreSQL: the traditional + SQL LIKE operator, the + more recent >SIMILAR TO operator (since + SQL:1999), and POSIX-style regular expressions. Additionally, a pattern matching function, substring, is available, using either - SQL99-style or POSIX-style regular expressions. + SIMILAR TO-style or POSIX-style regular + expressions. @@ -2595,11 +2594,10 @@ cast(-44 as bit(12)) 111111010100 - - <function>SIMILAR TO</function> and <acronym>SQL99</acronym> - Regular Expressions + + <function>SIMILAR TO</function> Regular Expressions - + regular expression @@ -2618,14 +2616,13 @@ cast(-44 as bit(12)) 111111010100 - The SIMILAR TO operator returns true or false - depending on whether its pattern matches the given string. It is - much like LIKE, except that it interprets the - pattern using SQL99's definition of a regular - expression. - SQL99's regular expressions are a curious cross - between LIKE notation and common regular expression - notation. + The SIMILAR TO operator returns true or + false depending on whether its pattern matches the given string. + It is much like LIKE, except that it + interprets the pattern using the SQL standard's definition of a + regular expression. SQL regular expressions are a curious cross + between LIKE notation and common regular + expression notation. @@ -2704,7 +2701,7 @@ cast(-44 as bit(12)) 111111010100 substring(string from pattern for escape-character), provides - extraction of a substring that matches a SQL99 + extraction of a substring that matches an SQL regular expression pattern. As with SIMILAR TO, the specified pattern must match to the entire data string, else the function fails and returns null. To indicate the part of the diff --git a/doc/src/sgml/information_schema.sgml b/doc/src/sgml/information_schema.sgml index 4a2e8f581c..b617d014e9 100644 --- a/doc/src/sgml/information_schema.sgml +++ b/doc/src/sgml/information_schema.sgml @@ -1,4 +1,4 @@ - + The Information Schema @@ -3267,7 +3267,7 @@ ORDER BY c.ordinal_position; The year the standard referenced in sql_language_source was approved; currently - 1999 + 2003 @@ -3276,7 +3276,7 @@ ORDER BY c.ordinal_position; character_data The standard conformance level for the language binding. For - ISO 9075:1999 this is always CORE. + ISO 9075:2003 this is always CORE. diff --git a/doc/src/sgml/intro.sgml b/doc/src/sgml/intro.sgml index 2687fdb078..ec0e4398da 100644 --- a/doc/src/sgml/intro.sgml +++ b/doc/src/sgml/intro.sgml @@ -1,5 +1,5 @@ @@ -98,8 +98,8 @@ $PostgreSQL: pgsql/doc/src/sgml/intro.sgml,v 1.25 2004/08/08 01:52:14 momjian Ex PostgreSQL is an open-source descendant - of this original Berkeley code. It supports SQL92, SQL99 and - SQL2003 and offers many modern features: + of this original Berkeley code. It supports a large part of the SQL:2003 + standard and offers many modern features: diff --git a/doc/src/sgml/keywords.sgml b/doc/src/sgml/keywords.sgml index 7fdadaddad..8991140717 100644 --- a/doc/src/sgml/keywords.sgml +++ b/doc/src/sgml/keywords.sgml @@ -1,4 +1,4 @@ - + <acronym>SQL</acronym> Key Words @@ -86,9 +86,9 @@ Key Word PostgreSQL - SQL 2003 - SQL 1999 - SQL 1992 + SQL:2003 + SQL:1999 + SQL-92 diff --git a/doc/src/sgml/ref/alter_domain.sgml b/doc/src/sgml/ref/alter_domain.sgml index 7ecee65021..7d5f050196 100644 --- a/doc/src/sgml/ref/alter_domain.sgml +++ b/doc/src/sgml/ref/alter_domain.sgml @@ -1,5 +1,5 @@ @@ -203,7 +203,7 @@ ALTER DOMAIN zipcode DROP CONSTRAINT zipchk; Compatibility - The ALTER DOMAIN statement is compatible with SQL99, + The ALTER DOMAIN statement is compatible with SQL:1999, except for the OWNER variant, which is a PostgreSQL extension. diff --git a/doc/src/sgml/ref/alter_sequence.sgml b/doc/src/sgml/ref/alter_sequence.sgml index 8337e27907..a96b1d722a 100644 --- a/doc/src/sgml/ref/alter_sequence.sgml +++ b/doc/src/sgml/ref/alter_sequence.sgml @@ -1,5 +1,5 @@ @@ -190,22 +190,11 @@ ALTER SEQUENCE serial RESTART WITH 105; - - Compatibility - + Compatibility - - - SQL99 - - - - ALTER SEQUENCE is a PostgreSQL - language extension. - There is no ALTER SEQUENCE statement - in SQL99. - - + + ALTER SEQUENCE conforms with SQL:2003. + diff --git a/doc/src/sgml/ref/create_cast.sgml b/doc/src/sgml/ref/create_cast.sgml index 1687d6bb7f..c36f12675b 100644 --- a/doc/src/sgml/ref/create_cast.sgml +++ b/doc/src/sgml/ref/create_cast.sgml @@ -1,4 +1,4 @@ - + @@ -298,8 +298,8 @@ CREATE CAST (text AS int4) WITH FUNCTION int4(text); Compatibility - The CREATE CAST command conforms to SQL99, - except that SQL99 does not make provisions for binary-compatible + The CREATE CAST command conforms to SQL:1999, + except that SQL:1999 does not make provisions for binary-compatible types or extra arguments to implementation functions. AS IMPLICIT is a PostgreSQL extension, too. diff --git a/doc/src/sgml/ref/create_function.sgml b/doc/src/sgml/ref/create_function.sgml index a3e266729b..7d8d01f4cd 100644 --- a/doc/src/sgml/ref/create_function.sgml +++ b/doc/src/sgml/ref/create_function.sgml @@ -1,5 +1,5 @@ @@ -419,7 +419,7 @@ CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS ' Compatibility - A CREATE FUNCTION command is defined in SQL99. + A CREATE FUNCTION command is defined in SQL:1999 and later. The PostgreSQL version is similar but not fully compatible. The attributes are not portable, neither are the different available languages. diff --git a/doc/src/sgml/ref/create_sequence.sgml b/doc/src/sgml/ref/create_sequence.sgml index d380d32a72..1afaa0ba29 100644 --- a/doc/src/sgml/ref/create_sequence.sgml +++ b/doc/src/sgml/ref/create_sequence.sgml @@ -1,5 +1,5 @@ @@ -297,10 +297,12 @@ END; Compatibility - CREATE SEQUENCE is a - PostgreSQL language extension. There is - no CREATE SEQUENCE statement in the SQL - standard. + CREATE SEQUENCE is is specified in SQL:2003. + PostgreSQL conforms with the standard, with the following exceptions: + + The standard's AS <data type> expression is not supported. + Obtaining the next value is done using the nextval() function instead of the standard's NEXT VALUE FOR expression. + diff --git a/doc/src/sgml/ref/create_table.sgml b/doc/src/sgml/ref/create_table.sgml index 8b18d837c9..68cce936db 100644 --- a/doc/src/sgml/ref/create_table.sgml +++ b/doc/src/sgml/ref/create_table.sgml @@ -1,5 +1,5 @@ @@ -865,8 +865,8 @@ CREATE TABLE cinemas ( Compatibility - The CREATE TABLE command conforms to SQL92 - and to a subset of SQL99, with exceptions listed below. + The CREATE TABLE command conforms to SQL-92 and + to a subset of SQL:1999, with exceptions listed below. @@ -943,10 +943,11 @@ CREATE TABLE cinemas ( Multiple inheritance via the INHERITS clause is - a PostgreSQL language extension. SQL99 - (but not SQL92) defines single inheritance using a different - syntax and different semantics. SQL99-style inheritance is not - yet supported by PostgreSQL. + a PostgreSQL language extension. + SQL:1999 (but not SQL-92) defines single inheritance using a + different syntax and different semantics. SQL:1999-style + inheritance is not yet supported by + PostgreSQL. diff --git a/doc/src/sgml/ref/create_table_as.sgml b/doc/src/sgml/ref/create_table_as.sgml index 2e0115e87d..8565b13d01 100644 --- a/doc/src/sgml/ref/create_table_as.sgml +++ b/doc/src/sgml/ref/create_table_as.sgml @@ -1,5 +1,5 @@ @@ -166,9 +166,9 @@ CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name Compatibility - CREATE TABLE AS is specified by the SQL2003 + CREATE TABLE AS is specified by the SQL:2003 standard. There are some small differences between the definition - of the command in SQL2003 and its implementation in + of the command in SQL:2003 and its implementation in PostgreSQL: diff --git a/doc/src/sgml/ref/create_trigger.sgml b/doc/src/sgml/ref/create_trigger.sgml index 46b98ca76e..f712636f49 100644 --- a/doc/src/sgml/ref/create_trigger.sgml +++ b/doc/src/sgml/ref/create_trigger.sgml @@ -1,5 +1,5 @@ @@ -208,20 +208,20 @@ CREATE TRIGGER name { BEFORE | AFTE The CREATE TRIGGER statement in PostgreSQL implements a subset of the - SQL99 standard. (There are no provisions for triggers in SQL92.) + SQL:1999 standard. (There are no provisions for triggers in SQL-92.) The following functionality is missing: - SQL99 allows triggers to fire on updates to specific columns + SQL:1999 allows triggers to fire on updates to specific columns (e.g., AFTER UPDATE OF col1, col2). - SQL99 allows you to define aliases for the old + SQL:1999 allows you to define aliases for the old and new rows or tables for use in the definition of the triggered action (e.g., CREATE TRIGGER ... ON tablename REFERENCING OLD ROW AS somename NEW ROW AS othername @@ -235,7 +235,7 @@ CREATE TRIGGER name { BEFORE | AFTE PostgreSQL only allows the execution - of a user-defined function for the triggered action. SQL99 + of a user-defined function for the triggered action. SQL:1999 allows the execution of a number of other SQL commands, such as CREATE TABLE as triggered action. This limitation is not hard to work around by creating a user-defined @@ -246,7 +246,7 @@ CREATE TRIGGER name { BEFORE | AFTE - SQL99 specifies that multiple triggers should be fired in + SQL:1999 specifies that multiple triggers should be fired in time-of-creation order. PostgreSQL uses name order, which was judged more convenient to work with. diff --git a/doc/src/sgml/ref/create_type.sgml b/doc/src/sgml/ref/create_type.sgml index b7d1ac64e0..ef6f93b0f2 100644 --- a/doc/src/sgml/ref/create_type.sgml +++ b/doc/src/sgml/ref/create_type.sgml @@ -1,5 +1,5 @@ @@ -535,7 +535,7 @@ CREATE TABLE big_objs ( This CREATE TYPE command is a PostgreSQL extension. There is a - CREATE TYPE statement in SQL99 that is rather + CREATE TYPE statement in SQL:1999 and later that is rather different in detail. diff --git a/doc/src/sgml/ref/drop_sequence.sgml b/doc/src/sgml/ref/drop_sequence.sgml index 6d8d4084a2..f519ebedee 100644 --- a/doc/src/sgml/ref/drop_sequence.sgml +++ b/doc/src/sgml/ref/drop_sequence.sgml @@ -1,5 +1,5 @@ @@ -82,7 +82,7 @@ DROP SEQUENCE serial; Compatibility - There is no DROP SEQUENCE statement in the SQL standard. + DROP SEQUENCE conforms with SQL:2003. diff --git a/doc/src/sgml/ref/release_savepoint.sgml b/doc/src/sgml/ref/release_savepoint.sgml index ca31c8dfd8..2237aa32df 100644 --- a/doc/src/sgml/ref/release_savepoint.sgml +++ b/doc/src/sgml/ref/release_savepoint.sgml @@ -1,5 +1,5 @@ @@ -108,11 +108,10 @@ COMMIT; Compatibility - The SQL2003 standard specifies that the keyword - SAVEPOINT is mandatory. - PostgreSQL allows the - SAVEPOINT keyword to be omitted. Otherwise, this - command is fully conforming. + This command conforms to the SQL:2003 standard. The standard + specifies that the key word SAVEPOINT is + mandatory, but PostgreSQL allows it to + be omitted. diff --git a/doc/src/sgml/ref/rollback_to.sgml b/doc/src/sgml/ref/rollback_to.sgml index f96baec398..0b87dc1a6b 100644 --- a/doc/src/sgml/ref/rollback_to.sgml +++ b/doc/src/sgml/ref/rollback_to.sgml @@ -1,5 +1,5 @@ @@ -128,15 +128,14 @@ COMMIT; Compatibility - The SQL2003 standard specifies that the keyword - SAVEPOINT is mandatory. PostgreSQL and - Oracle allow the SAVEPOINT - keyword to be omitted. SQL2003 allows only WORK, not - TRANSACTION, as a noise word after - ROLLBACK. Also, SQL2003 has an optional clause + The SQL:2003 standard specifies that the key word + SAVEPOINT is mandatory, but PostgreSQL + and Oracle allow it to be omitted. SQL:2003 allows + only WORK, not TRANSACTION, as a noise word + after ROLLBACK. Also, SQL:2003 has an optional clause AND [ NO ] CHAIN which is not currently supported by - PostgreSQL. Otherwise, this command is fully - conforming. + PostgreSQL. Otherwise, this command conforms to + the SQL standard. diff --git a/doc/src/sgml/ref/select.sgml b/doc/src/sgml/ref/select.sgml index 5c6206a303..06dd5594a0 100644 --- a/doc/src/sgml/ref/select.sgml +++ b/doc/src/sgml/ref/select.sgml @@ -1,5 +1,5 @@ @@ -1045,7 +1045,7 @@ SELECT distributors.* FROM distributors d, distributors distributors; Namespace Available to <literal>GROUP BY</literal> and <literal>ORDER BY</literal> - In the SQL92 standard, an ORDER BY clause may + In the SQL-92 standard, an ORDER BY clause may only use result column names or numbers, while a GROUP BY clause may only use expressions based on input column names. PostgreSQL extends each of @@ -1058,11 +1058,11 @@ SELECT distributors.* FROM distributors d, distributors distributors; - SQL99 uses a slightly different definition which is not entirely upward + SQL:1999 uses a slightly different definition which is not entirely upward compatible - with SQL92. In most cases, however, PostgreSQL + with SQL-92. In most cases, however, PostgreSQL will interpret an ORDER BY or GROUP - BY expression the same way SQL99 does. + BY expression the same way SQL:1999 does. diff --git a/doc/src/sgml/release.sgml b/doc/src/sgml/release.sgml index 70d7dc3c27..d16aa0693b 100644 --- a/doc/src/sgml/release.sgml +++ b/doc/src/sgml/release.sgml @@ -1,5 +1,5 @@ @@ -1514,13 +1514,13 @@ $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.312 2004/11/22 07:30:22 neilc E Change ln(), log(), power(), and sqrt() to emit the correct SQLSTATE error codes for certain error conditions, as - specified by SQL2003 (Neil) + specified by SQL:2003 (Neil) - Add width_bucket() function as defined by SQL2003 (Neil) + Add width_bucket() function as defined by SQL:2003 (Neil) @@ -3706,7 +3706,7 @@ DROP SCHEMA information_schema CASCADE; - Make CREATE SEQUENCE grammar more conforming to SQL 2003 (Neil) + Make CREATE SEQUENCE grammar more conforming to SQL:2003 (Neil) @@ -3781,7 +3781,7 @@ DROP SCHEMA information_schema CASCADE; Allow copying table schema using LIKE - subtable, also SQL 2003 + subtable, also SQL:2003 feature INCLUDING DEFAULTS (Rod) diff --git a/src/backend/catalog/information_schema.sql b/src/backend/catalog/information_schema.sql index 8800b8ac15..cb6e168d3c 100644 --- a/src/backend/catalog/information_schema.sql +++ b/src/backend/catalog/information_schema.sql @@ -4,7 +4,7 @@ * * Copyright 2003, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/backend/catalog/information_schema.sql,v 1.24 2004/06/22 22:30:32 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/catalog/information_schema.sql,v 1.25 2004/11/27 21:27:08 petere Exp $ */ /* @@ -1181,8 +1181,8 @@ CREATE TABLE sql_languages ( sql_language_programming_language character_data ) WITHOUT OIDS; -INSERT INTO sql_languages VALUES ('ISO 9075', '1999', 'CORE', NULL, NULL, 'DIRECT', NULL); -INSERT INTO sql_languages VALUES ('ISO 9075', '1999', 'CORE', NULL, NULL, 'EMBEDDED', 'C'); +INSERT INTO sql_languages VALUES ('ISO 9075', '2003', 'CORE', NULL, NULL, 'DIRECT', NULL); +INSERT INTO sql_languages VALUES ('ISO 9075', '2003', 'CORE', NULL, NULL, 'EMBEDDED', 'C'); GRANT SELECT ON sql_languages TO PUBLIC; @@ -1209,7 +1209,7 @@ INSERT INTO sql_packages VALUES ('PKG005', 'CLI', 'NO', NULL, 'ODBC is similar.' INSERT INTO sql_packages VALUES ('PKG006', 'Basic object support', 'NO', NULL, ''); INSERT INTO sql_packages VALUES ('PKG007', 'Enhanced object support', 'NO', NULL, ''); INSERT INTO sql_packages VALUES ('PKG008', 'Active database', 'NO', NULL, ''); -INSERT INTO sql_packages VALUES ('PKG009', 'SQL/MM support', 'NO', NULL, ''); +INSERT INTO sql_packages VALUES ('PKG010', 'OLAP', 'NO', NULL, 'NO'); GRANT SELECT ON sql_packages TO PUBLIC; diff --git a/src/backend/catalog/sql_feature_packages.txt b/src/backend/catalog/sql_feature_packages.txt index b2e403cc11..a9514045b8 100644 --- a/src/backend/catalog/sql_feature_packages.txt +++ b/src/backend/catalog/sql_feature_packages.txt @@ -53,21 +53,16 @@ F701 Enhanced integrity management F812 Core S011 Core S023 Basic object support -S023 SQL/MM support S024 Enhanced object support -S024 SQL/MM support S041 Basic object support S043 Enhanced object support S051 Basic object support S071 Enhanced object support S081 Enhanced object support -S091 SQL/MM support -S092 SQL/MM support S111 Enhanced object support S151 Basic object support S161 Enhanced object support S211 Enhanced object support -S211 SQL/MM support S231 Enhanced object support S241 Enhanced object support T041 Basic object support @@ -78,5 +73,4 @@ T211 Active database T212 Enhanced integrity management T321 Core T322 PSM -T322 SQL/MM support T431 OLAP facilities diff --git a/src/backend/catalog/sql_features.txt b/src/backend/catalog/sql_features.txt index b33c5fb9c8..2a300966fc 100644 --- a/src/backend/catalog/sql_features.txt +++ b/src/backend/catalog/sql_features.txt @@ -8,9 +8,26 @@ B017 Embedded PL/I NO B021 Direct SQL YES B031 Basic dynamic SQL NO B032 Extended dynamic SQL NO -B032 Extended dynamic SQL 01 statement NO +B032 Extended dynamic SQL 01 NO +B033 Untyped SQL-invoked function arguments NO +B034 Dynamic specification of cursor attributes NO B041 Extensions to embedded SQL exception declarations NO B051 Enhanced execution rights NO +B111 Module language Ada NO +B112 Module language C NO +B113 Module language COBOL NO +B114 Module language Fortran NO +B115 Module language MUMPS NO +B116 Module language Pascal NO +B117 Module language PL/I NO +B121 Routine language Ada NO +B122 Routine language C NO +B123 Routine language COBOL NO +B124 Routine language Fortran NO +B125 Routine language MUMPS NO +B126 Routine language Pascal NO +B127 Routine language PL/I NO +B128 Routine language SQL NO E011 Numeric data types YES E011 Numeric data types 01 INTEGER and SMALLINT data types YES E011 Numeric data types 02 REAL, DOUBLE PRECISION, and FLOAT data types YES @@ -19,18 +36,18 @@ E011 Numeric data types 04 Arithmetic operators YES E011 Numeric data types 05 Numeric comparison YES E011 Numeric data types 06 Implicit casting among the numeric data types YES E021 Character data types YES -E021 Character data types 01 CHARACTER data type YES -E021 Character data types 02 CHARACTER VARYING data type YES -E021 Character data types 03 Character literals YES -E021 Character data types 04 CHARACTER_LENGTH function YES -E021 Character data types 05 OCTET_LENGTH function YES -E021 Character data types 06 SUBSTRING function YES -E021 Character data types 07 Character concatenation YES -E021 Character data types 08 UPPER and LOWER functions YES -E021 Character data types 09 TRIM function YES -E021 Character data types 10 Implicit casting among the character data types YES -E021 Character data types 11 POSITION function YES -E021 Character data types 12 Character comparison YES +E021 Character string types 01 CHARACTER data type YES +E021 Character string types 02 CHARACTER VARYING data type YES +E021 Character string types 03 Character literals YES +E021 Character string types 04 CHARACTER_LENGTH function YES trims trailing spaces from CHARACTER values before counting +E021 Character string types 05 OCTET_LENGTH function YES +E021 Character string types 06 SUBSTRING function YES +E021 Character string types 07 Character concatenation YES +E021 Character string types 08 UPPER and LOWER functions YES +E021 Character string types 09 TRIM function YES +E021 Character string types 10 Implicit casting among the character string types YES +E021 Character string types 11 POSITION function YES +E021 Character string types 12 Character comparison YES E031 Identifiers YES E031 Identifiers 01 Delimited identifiers YES E031 Identifiers 02 Lower case identifiers YES @@ -73,6 +90,8 @@ E081 Basic Privileges 05 UPDATE privilege at the column level NO E081 Basic Privileges 06 REFERENCES privilege at the table level YES E081 Basic Privileges 07 REFERENCES privilege at the column level NO E081 Basic Privileges 08 WITH GRANT OPTION YES +E081 Basic Privileges 09 USAGE privilege NO +E081 Basic Privileges 10 EXECUTE privilege YES E091 Set functions YES E091 Set functions 01 AVG YES E091 Set functions 02 COUNT YES @@ -87,7 +106,7 @@ E101 Basic data manipulation 03 Searched UPDATE statement YES E101 Basic data manipulation 04 Searched DELETE statement YES E111 Single row SELECT statement YES E121 Basic cursor support NO -E121 Basic cursor supoprt 01 DECLARE CURSOR YES +E121 Basic cursor support 01 DECLARE CURSOR YES E121 Basic cursor support 02 ORDER BY columns need not be in select list YES E121 Basic cursor support 03 Value expressions in ORDER BY clause YES E121 Basic cursor support 04 OPEN statement YES @@ -150,16 +169,17 @@ F051 Basic date and time 01 DATE data type (including support of DATE literal) Y F051 Basic date and time 02 TIME data type (including support of TIME literal) with fractional seconds precision of at least 0 YES F051 Basic date and time 03 TIMESTAMP data type (including support of TIMESTAMP literal) with fractional seconds precision of at least 0 and 6 YES F051 Basic date and time 04 Comparison predicate on DATE, TIME, and TIMESTAMP data types YES -F051 Basic date and time 05 Explicit CAST between datetime types and character types YES +F051 Basic date and time 05 Explicit CAST between datetime types and character string types YES F051 Basic date and time 06 CURRENT_DATE YES F051 Basic date and time 07 LOCALTIME YES F051 Basic date and time 08 LOCALTIMESTAMP YES F052 Intervals and datetime arithmetic YES +F053 OVERLAPS predicate YES F081 UNION and EXCEPT in views YES F111 Isolation levels other than SERIALIZABLE YES -F111 Isolation levels other than SERIALIZABLE 01 READ UNCOMMITTED isolation level YES behaves like READ COMMITTED +F111 Isolation levels other than SERIALIZABLE 01 READ UNCOMMITTED isolation level YES F111 Isolation levels other than SERIALIZABLE 02 READ COMMITTED isolation level YES -F111 Isolation levels other than SERIALIZABLE 03 REPEATABLE READ isolation level YES behaves like SERIALIZABLE +F111 Isolation levels other than SERIALIZABLE 03 REPEATABLE READ isolation level YES F121 Basic diagnostics management NO F121 Basic diagnostics management 01 GET DIAGNOSTICS statement NO F121 Basic diagnostics management 02 SET TRANSACTION statement: DIAGNOSTICS SIZE clause NO @@ -175,16 +195,18 @@ F191 Referential delete actions YES F201 CAST function YES F221 Explicit defaults YES F222 INSERT statement: DEFAULT VALUES clause YES -F231 Privilege Tables YES -F231 Privilege Tables 01 TABLE_PRIVILEGES view YES -F231 Privilege Tables 02 COLUMN_PRIVILEGES view YES -F231 Privilege Tables 03 USAGE_PRIVILEGES view YES +F231 Privilege tables YES +F231 Privilege tables 01 TABLE_PRIVILEGES view YES +F231 Privilege tables 02 COLUMN_PRIVILEGES view YES +F231 Privilege tables 03 USAGE_PRIVILEGES view YES F251 Domain support YES F261 CASE expression YES F261 CASE expression 01 Simple CASE YES F261 CASE expression 02 Searched CASE YES F261 CASE expression 03 NULLIF YES F261 CASE expression 04 COALESCE YES +F262 Extended CASE expression NO +F263 Comma-separated predicates in simple CASE expression NO F271 Compound character literals YES F281 LIKE enhancements YES F291 UNIQUE predicate NO @@ -199,6 +221,7 @@ F311 Schema definition statement 02 CREATE TABLE for persistent base tables YES F311 Schema definition statement 03 CREATE VIEW YES F311 Schema definition statement 04 CREATE VIEW: WITH CHECK OPTION NO F311 Schema definition statement 05 GRANT statement YES +F312 MERGE statement NO F321 User authorization YES F341 Usage tables NO F361 Subprogram support YES @@ -207,12 +230,14 @@ F381 Extended schema manipulation 01 ALTER TABLE statement: ALTER COLUMN clause F381 Extended schema manipulation 02 ALTER TABLE statement: ADD CONSTRAINT clause YES F381 Extended schema manipulation 03 ALTER TABLE statement: DROP CONSTRAINT clause YES F391 Long identifiers YES +F392 Unicode escapes in identifiers NO +F393 Unicode escapes in literals NO F401 Extended joined table YES F401 Extended joined table 01 NATURAL JOIN YES F401 Extended joined table 02 FULL OUTER JOIN YES -F401 Extended joined table 03 UNION JOIN YES F401 Extended joined table 04 CROSS JOIN YES -F411 Time zone specification YES +F402 Named column joins for LOBs, arrays, and multisets NO +F411 Time zone specification YES differences regarding literal interpretation F421 National character YES F431 Read-only scrollable cursors YES F431 Read-only scrollable cursors 01 FETCH with explicit NEXT YES @@ -222,6 +247,7 @@ F431 Read-only scrollable cursors 04 FETCH PRIOR YES F431 Read-only scrollable cursors 05 FETCH ABSOLUTE YES F431 Read-only scrollable cursors 06 FETCH RELATIVE YES F441 Extended set function support YES +F442 Mixed column references in set functions NO F451 Character set definition NO F461 Named character sets NO F471 Scalar subquery values YES @@ -235,7 +261,6 @@ F502 Enhanced documentation tables YES F502 Enhanced documentation tables 01 SQL_SIZING_PROFILES view YES F502 Enhanced documentation tables 02 SQL_IMPLEMENTATION_INFO view YES F502 Enhanced documentation tables 03 SQL_PACKAGES view YES -F511 BIT data type YES F521 Assertions NO F531 Temporary tables YES F555 Enhanced seconds precision YES @@ -247,7 +272,12 @@ F641 Row and table constructors NO F651 Catalog name qualifiers YES F661 Simple tables NO F671 Subqueries in CHECK NO intentionally omitted +F672 Retrospective check constraints YES F691 Collation and translation NO +F692 Enhanced collation support NO +F693 SQL-session and client module collations NO +F695 Translation support NO +F696 Additional translation documentation NO F701 Referential update actions YES F711 ALTER domain YES F721 Deferrable constraints NO foreign keys only @@ -261,7 +291,7 @@ F791 Insensitive cursors YES F801 Full set function YES F811 Extended flagging NO F812 Basic flagging NO -F813 Extended flagging for "Core SQL Flagging" and "Catalog Lookup" only NO +F813 Extended flagging NO F821 Local table references NO F831 Full cursor update NO F831 Full cursor update 01 Updatable scrollable cursors NO @@ -270,6 +300,10 @@ S011 Distinct data types NO S011 Distinct data types 01 USER_DEFINED_TYPES view NO S023 Basic structured types NO S024 Enhanced structured types NO +S025 Final structured types NO +S026 Self-referencing structured types NO +S027 Create method by specific method name NO +S028 Permutable UDT options list NO S041 Basic reference types NO S043 Enhanced reference types NO S051 Create table of type NO @@ -281,18 +315,31 @@ S091 Basic array support 02 Arrays of distinct types NO S091 Basic array support 03 Array expressions NO S092 Arrays of user-defined types NO S094 Arrays of reference types NO +S095 Array constructors by query NO +S096 Optional array bounds NO +S097 Array element assignment NO S111 ONLY in query expressions YES S151 Type predicate NO S161 Subtype treatment NO -S201 SQL routines on arrays NO -S201 SQL routines on arrays 01 Array parameters NO -S201 SQL routines on arrays 02 Array as result type of functions NO +S162 Subtype treatment for references NO +S201 SQL-invoked routines on arrays NO +S201 SQL-invoked routines on arrays 01 Array parameters NO +S201 SQL-invoked routines on arrays 02 Array as result type of functions NO +S202 SQL-invoked routines on multisets NO S211 User-defined cast functions YES S231 Structured type locators NO S232 Array locators NO +S233 Multiset locators NO S241 Transform functions NO +S242 Alter transform statement NO S251 User-defined orderings NO S261 Specific type method NO +S271 Basic multiset support NO +S272 Multisets of user-defined types NO +S274 Multisets of reference types NO +S275 Advanced multiset support NO +S281 Nested collection types NO +S291 Unique constraint on entire row NO T011 Timestamp in Information Schema NO T031 BOOLEAN data type YES T041 Basic LOB data type support NO @@ -303,12 +350,24 @@ T041 Basic LOB data type support 04 Concatenation of LOB data types NO T041 Basic LOB data type support 05 LOB locator: non-holdable NO T042 Extended LOB data type support NO T051 Row types NO +T052 MAX and MIN for row types NO +T053 Explicit aliases for all-fields reference NO +T061 UCS support NO +T071 BIGINT data type YES T111 Updatable joins, unions, and columns NO T121 WITH (excluding RECURSIVE) in query expression NO +T122 WITH (excluding RECURSIVE) in subquery NO T131 Recursive query NO +T132 Recursive query in subquery NO T141 SIMILAR predicate YES T151 DISTINCT predicate YES +T152 DISTINCT predicate with negation NO T171 LIKE clause in table definition YES +T172 AS subquery clause in table definition NO +T173 Extended LIKE clause in table definition NO +T174 Identity columns NO +T175 Generated columns NO +T176 Sequence generator support NO T191 Referential action RESTRICT YES T201 Comparable data types for referential constraints YES T211 Basic trigger capability NO @@ -319,15 +378,16 @@ T211 Basic trigger capability 04 FOR EACH ROW triggers YES T211 Basic trigger capability 05 Ability to specify a search condition that must be true before the trigger is invoked NO T211 Basic trigger capability 06 Support for run-time rules for the interaction of triggers and constraints NO T211 Basic trigger capability 07 TRIGGER privilege YES -T211 Basic trigger capability 08 Multiple triggers for the same event are executed in the order in which they were created NO intentionally omitted +T211 Basic trigger capability 08 Multiple triggers for the same event are executed in the order in which they were created in the catalog NO intentionally omitted T212 Enhanced trigger capability YES -T231 SENSITIVE cursors YES +T231 Sensitive cursors YES T241 START TRANSACTION statement YES T251 SET TRANSACTION statement: LOCAL option NO T261 Chained transactions NO T271 Savepoints YES +T272 Enhanced savepoint management NO T281 SELECT privilege with column granularity NO -T301 Functional Dependencies NO +T301 Functional dependencies NO T312 OVERLAY function YES T321 Basic SQL-invoked routines NO T321 Basic SQL-invoked routines 01 User-defined functions with no overloading YES @@ -339,12 +399,18 @@ T321 Basic SQL-invoked routines 06 ROUTINES view YES T321 Basic SQL-invoked routines 07 PARAMETERS view YES T322 Overloading of SQL-invoked functions and procedures YES T323 Explicit security for external routines YES +T324 Explicit security for SQL routines NO +T325 Qualified SQL parameter references NO +T326 Table functions NO T331 Basic roles NO T332 Extended roles NO T351 Bracketed SQL comments (/*...*/ comments) YES T401 INSERT into a cursor NO T411 UPDATE statement: SET ROW option NO -T431 CUBE and ROLLUP operations NO +T431 Extended grouping capabilities NO +T432 Nested and concatenated GROUPING SETS NO +T433 Multiargument GROUPING function NO +T434 GROUP BY DISINCT NO T441 ABS and MOD functions YES T461 Symmetric BETWEEN predicate NO T471 Result sets return value NO @@ -355,6 +421,18 @@ T541 Updatable table references NO T551 Optional key words for default syntax YES T561 Holdable locators NO T571 Array-returning external SQL-invoked functions NO +T572 Multiset-returning external SQL-invoked functions NO T581 Regular expression substring function YES T591 UNIQUE constraints of possibly null columns YES T601 Local cursor references NO +T611 Elementary OLAP operations NO +T612 Advanced OLAP operations NO +T613 Sampling NO +T621 Enhanced numeric functions NO +T631 IN predicate with one list element NO +T641 Multiple column assignment NO +T651 SQL-schema statements in SQL routines NO +T652 SQL-dynamic statements in SQL routines NO +T653 SQL-schema statements in external routines NO +T654 SQL-dynamic statements in external routines NO +T655 Cyclically dependent routines NO -- 2.40.0