FEDERAL INFORMATION
PROCESSING STANDARDS PUBLICATION 127-2
(Final Draft 1/25/93)
Announcing the Standard for
Database Language SQL
Federal Information Processing Standards Publications (FIPS PUBS) are issued
by the National Institute of Standards and Technology after approval by the
Secretary of Commerce pursuant to Section 111(d) of the Federal Property and
Administrative Services Act of 1949 as amended by the Computer Security Act
of 1987, Public Law 100-235.
1. Name of Standard. Database Language SQL (FIPS PUB 127-2).
2. Category of Standard. Software Standard, Database.
3. Explanation. This publication is a revision of FIPS PUB 127-1 and
supersedes that document in its entirety. It provides a substantial, upward-
compatible enhancement of Database Language SQL. It includes four levels of
conformance: Entry SQL, Transitional SQL, Intermediate SQL, and Full SQL.
Entry SQL is a minor enhancement over the minimum requirements of FIPS PUB
127-1, Intermediate SQL is a major enhancement over Entry SQL, and Full SQL
is a major enhancement over Intermediate SQL. Transitional SQL is a
temporary FIPS specification that falls approximately half way between Entry
SQL and Intermediate SQL. Conformance to Entry SQL is required in all
Federal procurements of SQL products. Conformance to Transitional SQL,
Intermediate SQL, or Full SQL are options that may be specified, explicitly, as
requirements in a Federal procurement. Section 13 identifies the minimum
requirements for conformance to Entry SQL in FIPS PUB 127-2 that differ from
the minimum requirements for conformance to FIPS PUB 127-1, and Section 14
defines requirements for the three additional levels of conformance.
This publication announces adoption of American National Standard Database
Language SQL, ANSI X3.135-1992, as the Federal Information Processing
Standard for Database Language SQL (FIPS SQL). The exact specification is in
Section 10 of this standard.
ANSI SQL is a revision and replacement of two previous American National
Standards, ANSI X3.135-1989 and ANSI X3.168-1989. It specifies the syntax and
semantics of SQL language facilities for defining and accessing SQL
databases. These facilities include:
-- Schema definition, to declare the structures, integrity constraints, and
access privileges of a database.
-- Schema manipulation, to alter a schema definition.
-- Data manipulation, to populate a database and access SQL-data.
-- Transaction management, to define and manage SQL-transactions.
-- Connection management, to establish and manage SQL-connections.
-- Session management, to set the attributes of an SQL-session.
-- Dynamic SQL, to provide facilities for dynamic construction and
execution of SQL statements.
-- Diagnostics management, to communicate constraint violations and
warnings to applications.
-- Information schema tables, to provide an SQL description of schema
definitions.
-- Programming language bindings, to declare database procedures that may
be called from various programming languages.
-- Embedded SQL, to define how SQL statements may be syntactically
embedded into one of the following programming languages: Ada, C, COBOL,
FORTRAN, MUMPS, Pascal, or PL/I. Embedded SQL was formerly defined in
ANSI X3.168-1989.
ANSI SQL is specified in three levels: Entry SQL, Intermediate SQL, and Full
SQL. Entry SQL is a minor enhancement of ANSI X3.135-1989 (see Section 13).
Intermediate SQL adds provisions for schema manipulation, dynamic SQL,
diagnostics management, long identifiers, multiple module support, cascade
delete for referential integrity, multiple schemas per authorization
identifier, DATE and TIME data types, domains, variable length character
strings, support for national character sets, and substantial enhancements
for data manipulation. The data manipulation enhancements in Intermediate
SQL include: a CASE expression, CAST functions between data types, string
operations, natural join, outer join, union join, row value expressions, and
subqueries in value expressions, as well as table operations for union,
intersection, and complement. Full SQL adds provisions for connection
management, session management, pre-defined character translations and
form-of-use conversions, a BIT string data type, deferrable integrity
constraints, derived tables in the FROM clause, subqueries in CHECK clauses,
insensitive cursors, self-referencing data operations, assertions, and
temporary tables. A list of optional FIPS SQL features, comprising all of the
additional facilities in ANSI Intermediate SQL and Full SQL, is defined in
Section 14 of this standard.
The purpose of FIPS SQL is to promote portability and interoperability of
database application programs, to facilitate maintenance of database systems
among heterogeneous data processing environments, and to allow for the
efficient exchange of programmers among different data management projects.
The standard is used by implementors as the reference authority in
developing a FIPS conforming relational model database management system,
with standard programming language interfaces to that database management
system. The standard is used by application programmers to help write SQL
conforming applications and by other computer professionals who need to know
the precise syntactic and semantic rules of Database Language SQL.
4. Approving Authority. Secretary of Commerce.
5. Maintenance Agency. Department of Commerce, National Institute of
Standards and Technology
(Computer Systems Laboratory)
6. Cross Index
a. American National Standard Database Language SQL, ANSI X3.135-1992
(revision of ANSI X3.135-1989 and replacement of ANSI X3.168-1989).
b. ISO/IEC 9075:1992, Database Language SQL (revision of ISO/IEC 9075:1989).
Note: Except for a different Foreword, Introduction, and Normative
references, ANSI X3.135-1992 and ISO/IEC 9075:1992 are identical documents.
7. Related Documents
a. Federal Information Resources Management Regulations (FIRMR) subpart
201.20.303, Standards, and subpart 201.39.1002, Federal Standards, April
1992.
b. Federal ADP and Telecommunication Standards Index, U.S. General Services
Administration, Information Resources Management Service, October 1992
(updated periodically).
c. NIST, Validated Products List: Programming Languages, Database Language
SQL, Graphics, GOSIP, POSIX, Security; Judy B. Kailey, Editor, NISTIR 5103,
issue No. 1, January 1993 (republished quarterly). Available by
subscription from the National Technical Information Service (NTIS).
d. FIPS PUB 21-3, Programming Language COBOL, 1990.
e. FIPS PUB 69-1, Programming Language FORTRAN, 1985.
f. FIPS PUB 109, Programming Language Pascal, 1985.
g. FIPS PUB 119, Programming Language Ada, 1985.
h. FIPS PUB 125, Programming Language MUMPS, 1986 (Revision expected in
1993).
i. FIPS PUB 160, Programming Language C, 1991.
j. FIPS PUB 146, Government Open Systems Interconnection Profile (GOSIP).
A revision to FIPS PUB 146-1, including Remote Database Access (RDA)
specifications, is planned for mid-1993. To be issued in conjunction with
IGOSS.
k. IGOSS, Industry/Government Open Systems Specification, publication
planned mid-1993. This specification will reference "stable agreements"
from the NIST OSI Implementor's Workshop as of December 1992.
l. NIST SP 500-206, Stable Implementation Agreements for Open Systems
Interconnection Protocols, Version 6, Edition 1, NIST Workshop for
Implementors of Open Systems Interconnection, December 1992.
m. ISO/IEC DIS 9579-1, Information Technology - Open Systems
Interconnection - Remote Database Access - Part 1: Generic model,
service, and protocol, document ISO/IEC JTC1/SC21 N6375, August 1991.
n. ISO/IEC DIS 9579-2, Information Technology - Open Systems
Interconnection - Remote Database Access - Part 2: SQL specialization,
document ISO/IEC JTC1/SC21 N6376, August 1991.
o. ISO/IEC 10026, Information Technology - Open Systems Interconnection -
Distributed Transaction Processing - Part 1: OSI TP Model, Part 2: OSI TP
Service, Part 3: OSI TP Protocol Specification, International Standard,
December 1992.
p. SQL Information Bulletin, Number 1, SQLIB-1, Interpretations of ANSI
X3.135-1989, available from Global Engineering Documents, April 1991.
q. FIPS PUB 29-2, Interpretation Procedures for FIPS Software, 14
September 1987.
r. ISO 646, Information Processing - ISO 7-bit coded character set for
information interchange, 2nd edition, Third Edition, December 1991.
s. ISO 4873, Information Processing - ISO 8-bit code for information
interchange - Structure and rules for implementation, Third Edition,
1991. Replaces ANSI X3.134.1, 8-bit ASCII.
t. ISO 8859-1, Information processing - 8-bit single-byte coded graphic
character sets - Part 1: Latin alphabet No. 1, February 1987. Replaces
ANSI X3.134.2.
u. ISO/IEC CD 11404, Information Technology - Programming Languages -
Language Independent Data Types (CLID), document JTC1/SC22/WG11 N345,
December 1992.
8. Objectives. The FIPS for Database Language SQL permits Federal
departments and agencies to exercise more effective control over the
production, management, and use of the Government's information resources.
The primary objectives are:
-- to encourage more effective utilization and management of database
application programmers by ensuring that skills acquired on one project
are transportable to other projects, thereby reducing the cost of
database programmer retraining.
-- to reduce overall software costs by making it easier and less expensive
to maintain database definitions and database application programs and
to transfer those definitions and programs among different computers
and database management systems, including replacement database
management systems.
-- to promote communication and interoperability among data installations
conforming to FIPS SQL and related GOSIP communications standards.
-- to reduce the cost of software development by achieving increased
database application programmer productivity through the understanding
and use of database methods employing standard structures and
operations, standard data types, standard constraints, and standard
interfaces to programming languages.
-- to protect the software assets of the Federal government by ensuring
to the maximal feasible extent that Federal database management system
standards are technically sound and that subsequent revisions are
compatible with the installed base.
Government-wide attainment of the above objectives depends upon the
widespread availability and use of comprehensive and precise standard
database management system specifications.
9. Applicability
9.1 Database Language SQL is one of the database language standards
provided for use by all Federal departments and agencies. These database
language standards should be used for all computer database applications and
programs that are either developed or acquired for government use. FIPS SQL
is particularly well suited for use in database applications that employ the
relational data model. The relational data model is appropriate for
applications requiring flexibility in the data structures and access paths of
the database. The relational data model is desirable where there is a
substantial need for ad hoc data manipulation, and data restructuring, in
addition to the need for access by static applications under production
control.
9.2 FIPS SQL shall be used for relational database applications and
programs when one or more of the following situations exist:
-- It is anticipated that the life of the database application will be longer
than the life of the presently utilized equipment or database
management system, if any.
-- The database application is under constant review for updating of the
specifications, and changes may result frequently.
-- The database application is being designed and developed centrally for a
decentralized system that employs computers of different makes and
models or database software acquired from a different vendor.
-- The database application will or might be run under a database
management system other than that for which the database application is
initially written.
-- The database application is to be understood and maintained by
programmers other than the original ones.
-- The database application is one part of a distributed application that
requires exchange of data or interoperation of the various parts.
-- The database application is or is likely to be used by organizations
outside the Federal government (e.g., Federal government contractors,
State and local governments, and others).
9.3 Nonstandard language features shall be used only when the needed
operation or function cannot reasonably be implemented with the standard
features alone. A needed language feature not provided by the FIPS database
languages should, to the extent possible, be acquired as part of an otherwise
FIPS conforming database management system. Although nonstandard language
features can be very useful, it should be recognized that their use may make
the interchange of programs and future conversion to a revised standard or
replacement database management system more difficult and costly.
9.4 Although this standard does not specifically address interactive
database access through graphical user interfaces (GUI), the SQL statements
specified by this standard are appropriate for such use. In a Client/Server
environment, a GUI client may use SQL statements to access SQL conformant
server databases.
9.5 Although this standard does not specifically address distributed
database management systems or distributed database applications, the
connection management statements defined in this standard may be used, along
with facilities for remote database access (ISO/IEC 9579) and distributed
transaction processing (ISO/IEC 10026), to access SQL-data at remote nodes in
a distributed system and to present a global view to application programs.
9.6 Although this standard does not specifically address user-defined data
types, class hierarchies, inheritance, polymorphism, or other features of
object database management systems, such capabilities are upward compatible
extensions of this standard and may be specified in a future revision of FIPS
SQL (see Section 16.8).
9.7 It is recognized that some programmatic requirements may be more
economically and efficiently satisfied through the use of a database
management system employing a different data model than those provided by
the FIPS database languages or the use of a database management system
that functionally conforms to a FIPS database language but does not conform
to all other aspects of the FIPS. The use of any facility should be
considered in the context of system life, system cost, data integrity, and the
potential for data sharing.
9.8 Some programmatic requirements may be more economically and
efficiently satisfied by the use of automatic program generators or by
database access through other high-level language information processing
systems. However, if the final output of a program generator or high-level
language system is language that accesses a relational database, then that
language shall conform to the conditions and specifications of SQL.
10. Specifications. FIPS SQL adopts all provisions of ANSI X3.135-
1992, Database Language SQL, with the exceptions listed below:
a. FIPS SQL requires conformance to Entry SQL. Conformance to
Transitional SQL, Intermediate SQL, or Full SQL are options that may be
specified explicitly in SQL procurements (see Section 14).
b. FIPS SQL does not include PL/I language bindings, since PL/I is not a
FIPS programming language.
c. FIPS SQL does not recognize conformance solely by "direct invocation
and processing of SQL language" as specified in Subclause 23.2 of ANSI
X3.135-1992, because direct invocation does not mandate all of the
facilities desired in a FIPS SQL conforming product. Conformance to FIPS
SQL requires a Module or Embedded SQL binding style to one or more FIPS
programming languages.
d. FIPS SQL requires that the "SQL Flagger" be implemented in Entry SQL in
addition to Intermediate SQL and Full SQL. This is because FIPS SQL has
always included a flagger requirement, even from its first specification
in 1987. For conformance to Entry SQL, FIPS SQL requires "Entry SQL
Flagging" with the "Syntax Only" extent of checking option as defined in
Subclause 4.33 of ANSI X3.135-1992. The SQL Flagger is required for each
language binding style, including "Interactive Direct SQL" (see Section
16.5).
e. For conformance to Intermediate SQL or to Full SQL, FIPS SQL requires
implementation of the following named character sets: SQL_CHARACTER,
ASCII_GRAPHIC, LATIN1, ASCII_FULL, and SQL_TEXT. The form-of-use and
default collation requirements for these character sets are defined in
Section 16.7 of this standard.
f. For conformance to Intermediate SQL or to Full SQL, FIPS SQL requires
implementation of the FIPS_DOCUMENTATION schema, as specified in
Section 15 of this standard.
11. Implementation. Implementation of this standard involves four
areas of consideration: the effective date, acquisition of FIPS SQL
implementations, interpretation of FIPS SQL, and validation of FIPS SQL
implementations.
11.1 Effective Date. This publication is effective six (6) months
after the date of publication of a final document in the Federal Register
announcing its approval by the Secretary of Commerce. Prior to that date
the requirements of FIPS PUB 127-1 apply to Federal SQL procurements. This
delayed effective date is intended to give implementations that conform to
FIPS PUB 127-1 time to make the enhancements necessary to enable
conformance to Entry SQL (see Section 13). No further transitional period is
necessary.
11.2 Acquisition of SQL Implementations. Relational model
database management systems acquired for Federal use shall implement FIPS
SQL. Conformance to FIPS SQL is required whether SQL implementations are
developed internally, acquired as part of an ADP system procurement,
acquired by separate procurement, used under an ADP leasing arrangement, or
specified for use in contracts for programming services. Recommended
terminology for procurement of FIPS SQL is contained in the U.S. General
Services Administration publication Federal ADP & Telecommunications
Standards Index, Chapter 4 Part 1.
11.3 Interpretation of FIPS SQL. NIST provides for the resolution
of questions regarding FIPS SQL specifications and requirements, and issues
official interpretations as needed. Procedures for interpretations are
specified in FIPS PUB 29-2. All questions about the interpretation of FIPS
SQL should be addressed to:
Director
Computer Systems Laboratory
ATTN: Database Language SQL Interpretation
National Institute of Standards and Technology
Gaithersburg, MD 20899
Telephone: (301) 975-2833
11.4 Validation of SQL Implementations. Implementations of FIPS
SQL shall be validated in accordance with NIST Computer Systems Laboratory
(CSL) validation procedures for FIPS SQL. Recommended procurement
terminology for validation of FIPS SQL is contained in the U.S. General
Services Administration publication Federal ADP & Telecommunications
Standards Index, Chapter 4 Part 2. This GSA publication provides terminology
for three validation options: Delayed Validation, Prior Validation Testing,
and Prior Validation. The agency shall select the appropriate validation
option and shall specify whether a Validation Summary Report or Certificate
of Validation is required. The agency shall specify appropriate time frames
for validation and correction of nonconformities. The agency is advised to
refer to the NIST publication Validated Products List for information about
the validation status of SQL products. This information may be used to
specify validation time frames that are not unduly restrictive of competition.
The agency shall specify the criteria used to determine whether a Validation
Summary Report (VSR) or Certificate is applicable to the hardware/software
environment of the SQL implementation offered. The criteria for applicability
of a VSR or Certificate should be appropriate to the size and timing of the
procurement. A large procurement may require that the offered
version/release of the SQL implementation shall be validated in a specified
hardware/software environment and that the validation shall be conducted
with specified hardware/software features or parameter settings; e.g. the
same parameter settings to be used in a performance benchmark. An agency
with a single-license procurement may review the Validated Products List to
determine the applicability of existing VSRs or Certificates to the agency's
hardware/software environment.
Implementations shall be evaluated using the NIST SQL Test Suite, a suite of
automated validation tests for SQL implementations. The NIST SQL Test Suite
was first released in August 1988 to help users and vendors determine
compliance with FIPS SQL. Version 3.0 of the test suite was released in
January 1992, to be used for validating conformance to FIPS PUB 127-1 after
July 1, 1992. It is expected that Version 4.0 of the test suite will be
available in mid-1993, to be used for testing conformance to Entry SQL of
FIPS PUB 127-2 after the effective date. The results of validation testing
by the SQL Testing Service are published on a quarterly basis in the
Validated Products List, available from the National Technical Information
Service (NTIS).
Each release of the test suite has provided additional interfaces and test
cases to increase the test suite's coverage of the SQL language. Version 3.0
of the NIST SQL Test Suite provides 11 test suite types (interfaces):
Embedded (pre-processor) Ada, Embedded C, Embedded COBOL, Embedded FORTRAN,
Embedded Pascal, module language Ada, module language C, module language
COBOL, module language FORTRAN, module language Pascal, and Interactive
Direct SQL. Version 3.0 does not include tests for Embedded MUMPS or module
language MUMPS because the MUMPS programming language interface is not
defined in FIPS 127-1; such tests may be available in Version 4.0 for testing
of FIPS 127-2. There are additional tests in Version 3.0 for the Integrity
Enhancement Feature, default database sizing constructs, and the FIPS
Flagger requirement of FIPS 127-1.
An SQL Test Suite license includes all of the tests described above,
documentation, and automatic notifications of approved changes to the SQL
Test Suite for a six month period. A license for SQL Test Suite Version 3.0
is a necessary requirement for an organization that wishes to be tested by
the NIST SQL Testing Service between July 1, 1992 and the effective date of
FIPS 127-2.
Current information about the NIST SQL Validation Service and validation
procedures for FIPS SQL is available from:
National Institute of Standards and Technology
Computer Systems Laboratory
Software Standards Validation Group
Building 225, Room A266
Gaithersburg, Maryland 20899
(301) 975-2490
12. Waivers.
Under certain exceptional circumstances, the heads of Federal departments
and agencies may approve waivers to Federal Information Processing
Standards (FIPS). The head of such agency may redelegate such authority only
to a senior official designated pursuant to section 3506(b) of Title 44, U.S.
Code. Waivers shall be granted only when:
a. Compliance with a standard would adversely affect the
accomplishment of the mission of an operator of a Federal computer
system, or
b. Cause a major adverse financial impact on the operator which is not
offset by Government-wide savings.
Agency heads may act upon a written waiver request containing the
information detailed above. Agency heads may also act without a written
waiver request when they determine that conditions for meeting the standard
cannot be met. Agency heads may approve waivers only by a written decision
which explains the basis on which the agency head made the required finding(s).
A copy of each such decision, with procurement sensitive or classified
portions clearly identified, shall be sent to: National Institute of Standards
and Technology; ATTN: FIPS Waiver Decisions, Technology Building, Room B-
154; Gaithersburg, MD 20899.
In addition, notice of each waiver granted and each delegation of authority to
approve waivers shall be sent promptly to the Committee on Government
Operations of the House of Representatives and the Committee on
Governmental Affairs of the Senate and shall be published promptly in the
Federal Register.
When the determination on a waiver applies to the procurement of equipment
and/or services, a notice of the waiver determination must be published in
the Commerce Business Daily as a part of the notice of solicitation for
offers of an acquisition or, if the waiver determination is made after that
notice is published, by amendment to such notice.
A copy of the waiver, any supporting documents, the document approving the
waiver and any supporting and accompanying documents, with such deletions as
the agency is authorized and decides to make under 5 U.S.C. Sec. 552(b), shall
be part of the procurement documentation and retained by the agency.
13. New FIPS SQL Requirements. Conformance to Entry SQL requires
additional capabilities from an SQL implementation beyond those required for
minimal conformance to FIPS PUB 127-1. The following list identifies the
additional capabilities required. All terms delimited by angle brackets (i.e.
<...>) refer to syntactic productions specified in ANSI X3.135-1992.
1. Integrity enhancement. The Integrity Enhancement Feature was an option
in FIPS PUB 127-1. Many implementations of the existing FIPS SQL support
this feature and both ISO and ANSI standardization groups have made it
required for all conforming Entry SQL implementations. This feature is now
required in FIPS SQL. It includes any explicit or implicit <unique constraint
definition>, <referential constraint definition>, <check constraint
definition>, or the <default clause>, each with specified restrictions for
Entry SQL.
2. SQLSTATE status codes. This mechanism for returning exceptions to SQL
statements augments the SQLCODE status codes originally specified.
SQLCODE is now a deprecated feature. SQLSTATE specifies more than
seventy-five (75) exception, completion, and warning codes, whereas SQLCODE
specifies only three. SQLSTATE and SQLCODE are defined in Clause 22,
"Status codes", of ANSI X3.135-1992.
3. Delimited identifiers. In the previous ANSI SQL specification, it was not
possible for an application to specify identifiers with spaces or other
special symbols. Also, it was not possible to protect against future
assaults on the name space for <identifier>s by additions to the <reserved
word> list. The new facility for <delimited identifier> allows a user to
enclose all identifiers in double-quotation marks, thereby ensuring that
the name defined or referenced may contain spaces or other special symbols
and will not be impacted by future additions to the <reserved word> list.
4. Renaming columns. In the SQL language it is possible to reference <sort
key> columns in a <cursor specification> by position number instead of by
column name. This is because it was not possible in the previous standard
to name derived columns resulting from <value expression>s. Reference by
position number is now a deprecated feature; as an alternative, it is
required to be able to name, or rename, any <derived column> with an <as
clause>.
5. Commas in parameter lists. In the previous ANSI SQL specification,
items in a <parameter declaration list> were separated by spaces or other
token separators. It is now possible to also separate such items by
commas. This makes parameter lists compatible in style with all other lists
in the SQL language.
6. SQL Errata. Several errors in the previous ANSI SQL specification have
been corrected via announcement in the SQL Information Bulletin, SQLIB-1,
including: addition of a leading colon for <parameter name>, corrections to
the specification of WITH CHECK OPTION in a <view definition>, clarification
of the argument mode for Pascal parameters, and clarification of statement
termination requirements for Embedded SQL in Pascal programs. Other
errors in ANSI X3.135-1989 have also been corrected in ANSI X3.135-1992,
including: additional overflow exceptions on data assignment, exceptions
generated during evaluation of a <numeric value expression>, correction of
the data type for the SQLCODE variable in an <embedded SQL Ada program>,
removal of an ambiguity in the definition of WITH CHECK OPTION in nested
view definitions, addition of a rule to prevent defining two <unique
constraint definition>s with identical unique column lists in the same table,
additional requirements to enforce SELECT privileges, restrictions on
circular view definitions, correction to the syntax of a <host label
identifier> in an <embedded exception declaration>, corrections for data
type declarations in <parameter declaration>s for COBOL and PL/I,
correction to the specification of <COBOL integer type>, and correction to
the specification of PL/I support for SQLCODE. Most of these corrections
are listed in Annex E, "Incompatibilities", and Annex F, "Maintenance and
interpretation of SQL" of ANSI X3.135-1992. All such corrections that
pertain to Entry SQL are now required elements of FIPS SQL.
Note: The term "deprecated", as used in ANSI SQL, means that a feature so
labeled may not be supported in some future version of the standard, but it
is still a fully supported and required feature of the existing standard.
14. Optional FIPS SQL features. FIPS SQL requires implementation
of Entry SQL (see Section 10). Optionally, an SQL procurement may require
conformance to Intermediate SQL, Full SQL, or Transitional SQL. Since
implementations conforming to Intermediate SQL may not be available
immediately, FIPS SQL specifies a temporary FIPS "Transitional SQL"
approximately half way between Entry SQL and Intermediate SQL. FIPS
Transitional SQL is intended to provide a common, near-term goal for SQL
implementations that already have a number of features beyond Entry SQL.
Federal procurements may wish to specify Transitional SQL as a requirement
during the interim period before Intermediate SQL implementations are widely
available. It is expected that a future version of the NIST SQL Test Suite
will provide conformance testing for both Entry SQL and Transitional SQL
before tests are completed for testing Intermediate SQL or Full SQL. There
is no requirement for the SQL Flagger to flag Transitional SQL features
separately from Entry SQL Flagging or Intermediate SQL Flagging.
The following subsections partition FIPS SQL features into four subgroups: 1)
required in Transitional SQL, 2) required in Intermediate SQL, 3) required in
Full SQL, and 4) suitable in combination with Remote Database Access (RDA).
The list of features in each subsection determines the required features for
conformance to that level of FIPS SQL. In most cases, an SQL procurement
will specify a mandatory base level of conformance along with a list of
desirable features. Desirable features may be used to support the
evaluation of a product offered in response to a procurement.
In the following subsections, all Clause and Subclause references, and all
syntactic terms delimited by angle brackets (i.e. <...>) are from ANSI X3.135-
1992.
14.1 Transitional SQL. The following FIPS SQL features should start
becoming widely available in SQL conforming products in the near future. A
conservative SQL procurement in an open systems environment could list
these items as mandatory requirements with some degree of confidence that a
competitive procurement would follow, at least by the end of the initial
effective year of this standard.
1. Dynamic SQL. All provisions of Clause 17, "Dynamic SQL", with
restrictions identified in the Leveling Rules for Intermediate SQL; removal
of all Entry SQL Leveling Rules in Clause 17; removal of the Entry SQL
restriction requiring that a <module contents> not be a <dynamic declare
cursor>, as specified in Leveling Rule 2b of Subclause 12.1, "<module>";
removal of Leveling Rule 2a of Subclause 6.2 that prohibits reference to a
dynamic parameter in a <general value specification>. A <preparable
statement> shall include all <preparable SQL data statement>s that are
otherwise supported for Entry SQL, as well as any other <preparable
statement> for which non-preparable support is claimed by that
implementation.
2. Basic information schema. Requires existence of an accessible
INFORMATION_SCHEMA consisting of the following views defined in Subclause
21.2, "Information Schema": TABLES, VIEWS, and COLUMNS, all with any
restrictions identified in the Leveling Rules for Intermediate SQL.
3. Basic schema manipulation. Support for the following schema definition
and schema manipulation statements as <SQL statement>s in an explicit or
implicit <procedure>: Subclauses 11.3 through 11.9, "<table definition>";
Subclause 11.18, "<drop table statement>"; Subclause 11.19, "<view
definition>"; Subclause 11.20, "<drop view statement>"; Subclause 11.10,
"<alter table statement>", containing Subclause 11.11, "<add column
definition>"; Subclause 11.10, "<alter table statement>", containing Subclause
11.15, "<drop column definition>"; Subclause 11.36, "<grant statement>"; and
Subclause 11.37, "<revoke statement>"; all with any other restrictions
identified in the Leveling Rules for Entry SQL, and all with any
enhancements derived from other features claimed to be supported by the
implementation. Removal of Leveling Rules 2a in Subclauses 11.11, 11.15, 11.18,
11.20, and 11.37.
4. Joined table. All provisions for NATURAL JOIN, INNER JOIN, LEFT OUTER
JOIN, RIGHT OUTER JOIN, <join condition>, and <named columns join> from
Subclause 7.5, "<joined table>", with restrictions identified in the Leveling
Rules for Intermediate SQL. Removal of Entry SQL Leveling Rule 2a of
Subclause 6.3, "<table reference>", that prohibits <joined table> in a table
reference. Removal of Entry SQL Leveling Rule 2c of Subclause 7.10,
"<query expression>", that prohibits <joined table> in a <query expression>.
This feature does not include support for CROSS JOIN, UNION JOIN, or FULL
OUTER JOIN.
5. DATETIME data types. Support for DATE, TIME, TIMESTAMP, and INTERVAL
data types as defined in Subclause 6.1, "<data type>", with the exception of
support for time zones and time zone management; support for <datetime
literal> and <interval literal> as defined in Subclause 5.3, "<literal>";
support for the following datetime operations: <datetime field> in an
<extract expression> as defined in Subclause 6.6, "<numeric value
function>", <datetime value function> defined in Subclause 6.8, <datetime
value expression> defined in Subclause 6.14, <interval value expression>
defined in Subclause 6.15, and <overlaps predicate> defined in Subclause 8.11
(Note: With support for <row value constructor>s here); support for
datetime comparison defined in Subclause 8.2, "<comparison predicate>";
support for <interval qualifier> as specified in Subclause 10.1; support for
<datetime value function> in a <default clause> as specified in Subclause
11.5, "<default clause>"; all with restrictions identified in the Leveling
Rules for Intermediate SQL. The Syntax Rules require, by default from
Syntax Rule 26 of Subclause 6.1, "<data type>", a <timestamp precision>
greater than or equal to 6 decimal digits. This feature does not include
support for time zones, including: <time zone interval>, <time zone field>,
<time zone>, <time zone specifier>, and <set local time zone statement> (see
feature #41). Removal of the Entry SQL restriction on datetime data types
as specified in Leveling Rule 2b of Subclause 6.1, "<data type>", and on
datetime functions as specified in Leveling Rule 2a of Subclause 6.8,
"<datetime value function>". Removal of the Entry SQL restriction on
datetime literals as specified in Leveling Rule 2b of Subclause 5.3, on
datetime value expressions as specified in Leveling Rules 2a and 2b of
Subclause 6.11, Leveling Rule 2a of Subclause 6.14, and Leveling Rule 2a of
Subclause 6.15, on the overlaps predicate as specified in Leveling Rules 2a
of Subclause 8.1 and Subclause 8.11, and for specifying the field precision
of an INTERVAL data type or literal as specified in Leveling Rule 2a of
Subclause 10.1, "<interval qualifier>", all with the exception of retaining the
restrictions on time zone support.
6. VARCHAR data type. Support for CHARACTER VARYING, and its syntactic
shorthands VARCHAR and CHAR VARYING, as defined in Subclause 6.1, "<data
type>"; support for the following character operations: <length expression>
defined in Subclause 6.6, "<numeric value function>", <character substring
function> defined in Subclause 6.7, "<string value function>",
<concatenation> and <character value expression> defined in Subclause 6.13,
"<string value expression>"; support for comparison of fixed and variable
length character strings as defined in Subclause 8.2, "<comparison
predicate>"; support for CHARACTER VARYING in any <embedded SQL host
program> supported by the implementation; all with any restrictions
identified in the Leveling Rules for Intermediate SQL. Removal of the Entry
SQL requirement that at least one <character representation> be present
in a <character string literal>, as specified in Leveling Rule 2c of
Subclause 5.3, "<literal>". Removal of Leveling Rule 2a of Subclause 6.1,
"<data type>". Removal of the Entry SQL requirement that a <numeric value
function> not be a <length expression>, as specified in Leveling Rule 2a of
Subclause 6.6, "<numeric value function>". Removal of the Entry SQL
restriction against using the SUBSTRING function, as specified in Leveling
Rule 2a of Subclause 6.7, "<string value function>". Removal of Leveling
Rule 2a of Subclause 6.13, "<string value expression>", that prohibits
concatenation in Entry SQL. Removal of Leveling Rule 2a of Subclause 12.3,
"<procedure>", that prohibits specification of CHARACTER VARYING in an
Entry SQL <procedure>. Removal of Leveling Rule 2a of Subclause 19.4,
"<embedded SQL C program>", and Leveling Rule 2a of Subclause 19.9,
"<embedded SQL PL/I program>".
7. TRIM function. Removal of the Entry SQL restriction against specifying
a <trim function> as an alternative in a <character value function>, as
specified in Leveling Rule 2b of Subclause 6.7, "<string value function>".
8. UNION in views. Removal of the Entry SQL restriction against
specification of UNION in a <view definition>, as specified by the Entry SQL
Leveling Rule 2a of Subclause 11.19, "<view definition>". Support <query
expression> in a <view definition>, provided that the <query expression>
abides by the other restrictions for Entry SQL, as specified in Leveling
Rule 2 of Subclause 7.10, "<query expression>".
9. Implicit numeric casting. Removal of all Entry SQL restrictions for
operations involving the assignment of approximate numeric values to exact
numeric types, including: Leveling Rule 2c of Subclause 13.3, "<fetch
statement>"; Leveling Rule 2a of Subclause 13.5, "<select statement: single
row>"; Leveling Rule 2b of Subclause 13.8, "<insert statement>"; Leveling
Rule 2a of Subclause 13.9, "<update statement: positioned>"; Leveling Rule
2a of Subclause 13.10, "<update statement: searched>".
10. Implicit character casting. Removal of all Entry SQL restrictions for
operations involving the assignment of character string values to
character string types, including: Leveling Rule 2c of Subclause 13.8,
"<insert statement>"; Leveling Rule 2b of Subclause 13.9, "<update
statement: positioned>"; Leveling Rule 2b of Subclause 13.10, "<update
statement: searched>".
11. Transaction isolation. All provisions, except DIAGNOSTICS SIZE, of
Subclause 14.1, "<set transaction statement>", in particular: READ ONLY,
READ WRITE, and ISOLATION LEVEL, and support for the <set transaction
statement> as an <SQL statement> in an explicit or implicit <procedure>,
with any restrictions identified in the Leveling Rules for Intermediate SQL.
Removal of Leveling Rule 2a of Subclause 14.1. Removal of the Entry SQL
limitation on updatable tables, as specified by Leveling Rule 2a of
Subclause 7.9, "<query specification>". Removal of the Entry SQL
restriction against inclusion of an <updatability clause> in a <declare
cursor>, as specified by Leveling Rule 2b of Subclause 13.1, "<declare
cursor>".
12. Get diagnostics. Support for the <get diagnostics statement>,
specified in Subclause 18.1, as an <SQL statement> in an explicit or implicit
<procedure>, with any restrictions identified in the Leveling Rules for
Intermediate SQL. Removal of Leveling Rule 2a of Subclause 18.1. If
feature #11, "Transaction isolation" is supported, then support for
specification of <diagnostics size> in the <set transaction statement>.
13. Grouped operations. Removal of all Entry SQL restrictions for
operations involving grouped views and other grouping operations,
including: Leveling Rule 2a of Subclause 7.3, "<table expression>"; Leveling
Rule 2a of Subclause 7.4, "<from clause>"; Leveling Rule 2c of Subclause 7.9,
"<query specification>"; Leveling Rule 2a of Subclause 7.11, "<scalar
subquery>, <row subquery>, and <table subquery>", and Leveling Rule 2b of
Subclause 13.5, "<select statement: single row>".
14. Qualified * in select list. Removal of the Entry SQL restriction for
specifying <qualifier>.* in a <select sublist>, as specified in Leveling Rule
2b of Subclause 7.9, "<query specification>".
15. Lowercase identifiers. Removal of the Entry SQL restriction requiring
that identifiers not contain any lowercase letters, as specified in Leveling
Rule 2b of Subclause 5.2, "<token> and <separator>"; with restrictions
identified in the Leveling Rules for Intermediate SQL.
16. PRIMARY KEY enhancement. Removal of the Entry SQL restriction
requiring that NOT NULL always be declared with any UNIQUE or PRIMARY KEY,
as specified in Leveling Rule 2a of Subclause 11.7, "<unique constraint
definition>".
17. Multiple schemas per user. Support for separation of <schema name>
and <authorization identifier> in a <schema definition>. The <schema
definition> itself need be processed only as required for Entry SQL (i.e. it
need not be supported as an SQL statement in an explicit or implicit
<procedure>), and a <schema element> need only be as required by Entry SQL.
See below feature #31, "Schema definition statement", for more restrictive
syntactic requirements. If feature #2, "Basic information schema", is
supported, then implementation of Subclause 21.2.4, "SCHEMATA view", in the
INFORMATION_SCHEMA. If the Module language binding style is supported, as
specified in Subclause 12.1, "<module>", and Subclause 23.2, "Claims of
conformance", then removal of Leveling Rule 2c of Subclause 12.1, "<module>",
that prohibits reference to a <schema name> in a <module> definition.
18. Multiple module support. Removal of the Entry SQL restriction that a
<module> be associated with an SQL-agent during its execution, and that an
SQL-agent be associated with at most one <module>, as specified in Leveling
Rule 2a of Subclause 12.1, "<module>". With removal of this restriction, it
will be possible to compile <module>s or <embedded SQL host program>s
separately and rely on the implementation to link them together properly at
execution time. To ensure universal portability, applications should adhere
to the following self-imposed restrictions: 1) avoid linking modules having
cursors with the same <cursor name>, 2) avoid linking modules that prepare
statements with the same <SQL statement name>, 3) avoid linking modules
that allocate descriptors with the same <descriptor name>, 4) the scope of
an <embedded exception declaration> is a single compilation unit, 5) an
<embedded variable name> can be referenced only in the same compilation
unit in which it is declared.
19. Referential delete actions. Remove Leveling Rule 2a of Subclause 11.8,
"<referential constraint definition>", thereby providing support for a
<referential triggered action> that contains a <delete rule>, with
restrictions identified in the Leveling Rules for Intermediate SQL. Remove
Leveling Rule 2b of Subclause 11.4, "<column definition>", thereby allowing an
ON DELETE trigger.
20. CAST functions. All provisions of Subclause 6.10, "<cast
specification>", with restrictions identified in the Leveling Rules for
Intermediate SQL. The resulting data type of the <cast operand> and of the
<cast target> of a <cast specification> shall include all data types
required for Entry SQL, as well as any other SQL standard data type whose
support is claimed by the implementation. In particular, if feature #5,
"Datetime data type", is supported, then <cast specification>s for casting
DATE, TIME, TIMESTAMP, and INTERVAL to and from character strings.
Removal of the Entry SQL restrictions against use of CAST, as specified in
Leveling Rule 2a of Subclause 6.10, "<cast specification>", and Leveling Rule
2d of Subclause 6.11, "<value expression>".
21. INSERT expressions. Removal of the Entry SQL restriction against
specifying a <value expression> in an <insert statement>, as specified in
the second part of Leveling Rule 2a of Subclause 13.8, "<insert statement>".
22. Explicit defaults. Removal of the Entry SQL restriction against use of
DEFAULT VALUES in an <insert statement>, as specified in Leveling Rule 2d
of Subclause 13.8, "<insert statement>". Removal of the Entry SQL
restriction against use of DEFAULT in a <row value constructor>, as
specified in Leveling Rule 2a of Subclause 7.1, "<row value constructor>".
Removal of the Entry SQL restriction against use of datetime and certain
USER defaults, as specified in Leveling Rule 2a of Subclause 11.5, "<default
clause>". Removal of the Entry SQL restriction against use of DEFAULT in
an <update source> of an <update statement: positioned> or an <update
statement: searched>, as specified in Leveling Rule 2c of Subclause 13.9,
"<update statement: positioned>".
23. Privilege tables. Support for feature #2, "Basic information schema",
defined above, plus inclusion of the following views as defined in Subclause
21.2, "Information Schema": TABLE_PRIVILEGES, COLUMN_PRIVILEGES, and
USAGE_PRIVILEGES, all with any restrictions identified in the Leveling Rules
for Intermediate SQL.
24. Keyword relaxations. Removal of the Entry SQL restriction against
using AS before a <correlation name>, as specified in Leveling Rule 2b of
Subclause 6.3, "<table reference>". Removal of the Entry SQL restriction
against using the optional keyword TABLE in a GRANT statement, as
specified in Leveling Rule 2a of Subclause 11.36, "<grant statement>".
Removal of the Entry SQL restriction for specifying FROM in a FETCH
statement, as specified in Leveling Rule 2b of Subclause 13.3, "<fetch
statement>". Removal of the Entry SQL requirement to include the keyword
WORK in COMMIT and ROLLBACK statements, as specified in Leveling Rules 2a
of Subclause 14.3, "<commit statement>" and Subclause 14.4, "<rollback
statement>".
14.2 Intermediate SQL. The following FIPS SQL features are required
for conformance to Intermediate SQL. They are the focus of current
implementation attention and should start becoming widely available in the
second or third effective year of this standard.
25. Domain definition. Support for Subclause 11.21, "<domain definition>",
and Subclause 11.27, "<drop domain statement>"; support for VALUE in
<general value specification> as specified in Syntax Rule 5 of Subclause
6.2, "<value specification>"; reference to <domain name> in a <column
definition> as specified in Subclause 11.4, "<column definition>"; reference
to <domain name> in GRANT and REVOKE statements as specified in Subclause
11.36, "<grant statement>", and Subclause 11.37, "<revoke statement>"; if
feature #2, "Basic information schema", is supported, then implementation
of Subclause 21.2.5, "DOMAINS view", in the INFORMATION_SCHEMA; if feature
#3, "Basic schema manipulation", is supported, then support for <domain
definition> and <drop domain statement> as <SQL statement>s in an explicit
or implicit <procedure>; if feature #20, "CAST functions", is supported, then
support for <domain name> as a <cast target>; if feature #33, "Constraint
tables", is supported then implementation of Subclause 21.2.6,
"DOMAIN_CONSTRAINTS view"; all with any restrictions identified in the
Leveling Rules for Intermediate SQL. Removal of Leveling Rules 2a of
Subclause 11.1, "<schema definition>", and Subclause 11.21, "<domain
definition>", that prohibit domain definitions in Entry SQL; removal of
Leveling Rule 2b of Subclause 6.2 that prohibits use of VALUE in a domain
check constraint; removal of Leveling Rule 2a of Subclause 11.27, "<drop
domain statement>", that prohibits dropping a domain from a schema; removal
of Leveling Rule 2b of Subclause 11.36, "<grant statement>", that prohibits
privilege definition on domains; removal of Leveling Rule 2a of Subclause
11.4, "<column definition>", that prohibits column data type references to a
domain.
26. CASE expression. All provisions of Subclause 6.9, "<case expression>",
with restrictions identified in the Leveling Rules for Intermediate SQL.
Removal of all Entry SQL restrictions against use of CASE expressions,
including Leveling Rule 2a of Subclause 6.9, "<case expression>", and
Leveling Rule 2c of Subclause 6.11, "<value expression>".
27. Compound character literals. Removal of the Entry SQL restriction
against specifying multiple repetitions of <character representation>
strings in a <character string literal>, as specified in Leveling Rule 2d of
Subclause 5.3, "<literal>". This feature allows very long character strings
to be subdivided into components prior to concatenation into a result
string, thereby avoiding problems with line length or line termination in
some programming languages.
28. LIKE enhancements. Removal of all Entry SQL restrictions in the LIKE
predicate, including: Leveling Rules 2a, 2b, and 2c of Subclause 8.5, "<like
predicate>", thereby allowing the <match value> to be a general <character
value expression> instead of just a <column reference>, and allowing the
<pattern> and <escape character> to be general <character value
expression>s instead of just simple <value specification>s.
29. UNIQUE predicate. Support for the UNIQUE predicate, as specified in
Subclause 8.9, "<unique predicate>"; with any restrictions identified in the
Leveling Rules for Intermediate SQL. Removal of the Entry SQL restrictions
against use of the <unique predicate> as specified by Leveling Rule 2b of
Subclause 8.1 and Leveling Rule 2a of Subclause 8.9.
30. Table operations. Removal of Entry SQL restrictions in Subclause 7.10,
"<query expression>", pertaining to the UNION, EXCEPT and INTERSECT
operations, and the CORRESPONDING option, including Leveling Rules 2a, 2b,
2d, and 2e; removal of the Entry SQL restriction requiring that a <query
expression> in an <insert statement> not include any table operations, as
specified in part 1 of Leveling Rule 2a of Subclause 13.8, "<insert
statement>"; removal of the Entry SQL restriction against using a <derived
column list> in a <table reference>, as specified in Leveling Rule 2c of
Subclause 6.3, "<table reference>"; removal of the Entry SQL restriction
requiring that a <query expression> in a <subquery> not include any table
operations, as specified in Leveling Rule 2b of Subclause 7.11, "<subquery>";
removal of the Entry SQL restriction requiring that a <query expression> in
a <view definition> not include any table operations, as specified in
Leveling Rule 2a of Subclause 11.19, "<view definition>"; all with any other
restrictions identified in the Leveling Rules for Intermediate SQL.
31. Schema definition statement. Support for <schema definition>,
Subclause 11.1, as an <SQL statement> in an explicit or implicit <procedure>,
by removal of Leveling Rule 2a of Subclause 12.5, "<SQL procedure
statement>", with any restrictions identified in the Leveling Rules for
Intermediate SQL. A <schema element> shall be an element required by Entry
SQL, or an element defined in another feature whose support is claimed by
the implementation. Support for feature #17, "Multiple schemas per user",
defined above and removal of the Entry SQL restriction that prohibits
definition of a <schema name> in a <schema definition>, as specified in
Leveling Rule 2b of Subclause 11.1. A <schema definition> may contain any
circular references that are permitted for Intermediate SQL; in particular,
<referential constraint definition>s in two different <table definition>s
that reference columns in the other table.
32. User authorization. All provisions of Subclause 16.4, "<set session
authorization identifier statement>", with any restrictions identified in
the Leveling Rules for Intermediate SQL. Removal of Leveling Rule 2a of
Subclause 16.4. Support for CURRENT_USER, SESSION_USER, and SYSTEM_USER
in <general value specification> by removal of Leveling Rule 2c of
Subclause 6.2, "<value specification>".
33. Constraint tables. Support for feature #2, "Basic information schema",
defined above, plus inclusion of the following views as defined in Subclause
21.2, "Information Schema": TABLE_CONSTRAINTS, REFERENTIAL_CONSTRAINTS,
and CHECK_CONSTRAINTS, all with any restrictions identified in the Leveling
Rules for Intermediate SQL.
34. Usage tables. Support for feature #2, "Basic information schema",
defined above, plus inclusion of the following views as defined in Subclause
21.2, "Information Schema": KEY_COLUMN_USAGE, VIEW_TABLE_USAGE,
VIEW_COLUMN_USAGE, CONSTRAINT_TABLE_USAGE, CONSTRAINT_COLUMN_USAGE,
and COLUMN_DOMAIN_USAGE, all with any restrictions identified in the
Leveling Rules for Intermediate SQL.
35. Intermediate information schema. All provisions of Subclause 21.2,
"Information schema", with restrictions identified in the Leveling Rules for
Intermediate SQL. This feature includes feature #2, "Basic information
schema", feature #23, "Privilege tables", feature #33, "Constraint tables",
and feature #34, "Usage tables", defined above, the SCHEMATA view from
feature #17, the DOMAINS and DOMAIN_CONSTRAINTS views from feature #25,
and the CHARACTER_SETS view from feature #45, as well as all remaining
tables required for Intermediate SQL, including: Subclause 21.2.2,
"INFORMATION_SCHEMA_CATALOG_NAME base table", Subclause 21.2.17,
"ASSERTIONS view", and Subclause 21.2.26, "SQL_LANGUAGES view". Removal of
all Leveling Rules 2a in Subclause 21.2, "Information Schema". In Entry SQL
or Intermediate SQL, some of these tables may have empty or trivial
contents, but an implementation supporting this feature is required to
process statements that properly reference any of these tables. These
tables are all self-describing in the sense that they appear in the
Definition Schema as PUBLIC tables and thus are visible in the
INFORMATION_SCHEMA for every user.
36. Subprogram support. Removal of the Entry SQL restriction that
prohibits full use of local variable name scoping in subprograms, as
specified in Leveling Rule 2b of Subclause 19.1, "<embedded SQL host
program>". With removal of this restriction, compilation units may include
subprograms with SQL statements that reference local variables defined in
the subprogram even if some other identically named variable, having
different scope, happens to be defined in an SQL <host variable definition>
in the main program or in a different subprogram of the same compilation
unit. This feature applies only to the Embedded SQL language interface
specified in Clause 19, "Embedded SQL"; it does not apply to any Module or
Direct Invocation interfaces.
37. Intermediate SQL Flagging. Support for both "Entry SQL Flagging" and
"Intermediate SQL Flagging" with the "Syntax Only" extent of checking option
as specified for conforming Intermediate SQL implementations in Subclause
23.4, "Flagger requirements", of ANSI X3.135-1992. This facility would allow
an application to distinguish between vendor extensions beyond Entry SQL
that are supported in Intermediate SQL and those that are beyond
Intermediate SQL or are non-standard.
38. Schema manipulation. Support for feature #3, "Basic schema
manipulation". In addition, support for the following schema definition and
schema manipulation statements as <SQL statement>s in an explicit or
implicit <procedure>: Subclause 11.2, "<drop schema statement>"; Subclauses
11.10 through 11.17, "<alter table statement>"; all with any restrictions
identified in the Leveling Rules for Intermediate SQL. Removal of Leveling
Rules 2a in Subclause 11.2 and Subclauses 11.10 through 11.17. If Direct
invocation and processing of SQL language is supported, as specified in
Subclause 23.2, "Claims of conformance", then removal of Leveling Rule 2a of
Subclause 20.1, "<direct SQL statement>".
39. Long identifiers. Support for <regular identifier>s or <delimiter
identifier body>s that have lengths of up to 128 characters; that is,
remove the restrictions of Leveling Rule 2a of Subclause 5.2, "<token> and
<separator>".
40. Full outer join. Support for feature #4, "Joined table". In addition,
support for FULL OUTER JOIN by removal of Leveling Rule 2a from Subclause
7.5, "<joined table>".
41. Time zone specification. Support for feature #5, "DATETIME data
types". In addition, full implementation of time zones and time zone
management, including: support for <time zone interval> specified in
Subclause 5.3, "<literal>", <time zone field> specified in Subclause 6.6,
"<numeric value function>", <time zone> and <time zone specifier> specified
in Subclause 6.14, "<datetime value expression>", and <set local time zone
statement> specified in Subclause 16.5, "<set local time zone statement>".
Removal of the Entry SQL restriction on <timezone field> in an <extract
expression> as specified in Leveling Rule 2b of Subclause 6.6, "<numeric
value function>". Removal of Leveling Rule 2a in Subclause 16.5, "<set local
time zone statement>".
42. National character. Support for NATIONAL CHARACTER, and its
syntactic shorthands NATIONAL CHAR and NCHAR, as defined in Subclause 6.1,
"<data type>"; support for <national character string literal> as defined in
Subclause 5.3, "<literal>"; removal of the Entry SQL restriction requiring
that a <delimiter token> shall not be a <national character string literal>,
as specified in Leveling Rule 2a of Subclause 5.3, "<literal>". Removal of
<national character string type> from Leveling Rule 2c of Subclause 6.1,
"<data type>". If feature #6, "VARCHAR data type" is supported, then
support for NATIONAL CHARACTER VARYING, and its syntactic shorthands
NATIONAL CHAR VARYING and NCHAR VARYING, as specified in Subclause 6.1,
"<data type>".
43. Scrolled cursors. Support for SCROLL in a cursor declaration and for
<fetch orientation> in a FETCH statement, by removal of the Entry SQL
restrictions against declaration and use of scrolled cursors as specified
in Leveling Rule 2a of Subclause 13.1, "<declare cursor>", and Leveling Rule
2a of Subclause 13.3, "<fetch statement>".
44. Intermediate set function. Removal of Entry SQL restrictions against
certain set function operations, including: removal of Leveling Rule 2a
concerning COUNT ALL, Leveling Rule 2b concerning <column reference>s,
Leveling Rule 2c concerning <value expression>, and Leveling Rule 2d
concerning column references, all of Subclause 6.5, "<set function
specification>"; removal of Leveling Rule 2a concerning reference to a
column generally containing a set function, as specified in Subclause 7.6,
"<where clause>".
45. Character set definition. Support for Subclause 11.28, "<character set
definition>", and Subclause 11.29, "<drop character set statement>", as <SQL
statement>s in an explicit or implicit <procedure>. Support for granting
and revoking USAGE privileges on any defined character sets, as specified
in Subclause 10.3, "<privileges>", Subclause 11.36, "<grant statement>", and
Subclause 11.37, "<revoke statement>". If feature #2, "Basic information
schema", is supported, then implementation of Subclause 21.2.18,
"CHARACTER_SETS view" in the INFORMATION_SCHEMA. Removal of Leveling
Rules 2a in Subclause 11.28 and Subclause 11.29. Removal of the Entry SQL
restriction against using a <character set specification> in Embedded SQL,
as specified in the Leveling Rules of each <embedded SQL host program>.
Support for all other references to <character set specification>,
including removal of Leveling Rule 2a of Subclause 10.4, "<character set
specification>", Leveling Rules 2c and 2d of Subclause 11.1, "<schema
definition>", and Leveling Rule 2a of Subclause 12.2, "<module name clause>".
46. Named character sets. Support for the named character sets:
SQL_CHARACTER, ASCII_GRAPHIC, LATIN1, ASCII_FULL, and SQL_TEXT. If
feature #2, "Basic information schema" is supported, then implementation of
the CHARACTER_SETS view in the INFORMATION_SCHEMA. Support for SQL_TEXT
is required by ANSI SQL Syntax Rule 3 of Subclause 10.4, "<character set
specification>"; the other character sets are defined in Section 16.7 of
this standard. Removal of Leveling Rule 2e of Subclause 5.3, "<literal>".
Removal of Leveling Rule 2b of Subclause 5.4, "Names and identifiers".
Removal of CHARACTER SET from Leveling Rule 2c of Subclause 6.1, "<data
type>". Removal of the Entry SQL restriction against referencing these
character sets in Embedded SQL, as specified by Leveling Rule 2a of
Subclause 19.1, "<embedded SQL host program>", and by the Leveling Rule of
each <embedded SQL host program> that prohibits use of a <character set
specification>. Support for all other references to these named character
sets in any <character set specification> in any SQL statement supported
in Entry SQL, and in any other SQL statement whose support is claimed by
the implementation.
47. Scalar subquery values. Support for the use of a <scalar subquery> in
any <value expression>, by removal of Leveling Rule 2e of Subclause 6.11,
"<value expression>".
48. Expanded null predicate. Support for referencing values other than a
<column reference> in a <null predicate>, by removal of Leveling Rule 2a of
Subclause 8.6, "<null predicate>". This includes support for testing any
Entry SQL <value expression>, or any supported Intermediate SQL <value
expression>, to see if it is null.
49. Constraint management. Support for user-defined constraint names,
including use of an explicit <constraint name definition> in any table
constraint, by removal of: Leveling Rule 2a of Subclause 10.6, "<constraint
name definition>", Leveling Rule 2c of Subclause 11.4, "<column definition>",
and Leveling Rule 2a of Subclause 11.6, "<table constraint definition>".
Support for feature #33, "Constraint tables". If feature #25, "Domain
definition", is supported, then removal of all restrictions against explicit
<constraint name definition>s in Subclause 11.21, "<domain definition>". If
feature #12, "Get diagnostics", is supported, then support for reference to
user-defined, explicit <constraint name>s in the <get diagnostics
statement>.
50. Documentation schema. Implementation of the documentation schema
tables, SQL_FEATURES and SQL_SIZING, as specified in Section 15 of this
standard.
14.3 Full SQL. The following FIPS SQL features are required for
conformance to Full SQL. They will start becoming available in some products
during the first through third effective years of FIPS 127-2. Some care
should be taken before specifying Full SQL as a mandatory requirement in an
SQL procurement because it is not yet certain if these features will be
completely or competitively available in all operating environments.
51. BIT data type. Support for BIT and BIT VARYING data types, as defined
in Subclause 6.1, "<data type>"; support for <bit string literal> and <hex
string literal> as defined in Subclause 5.3, "<literal>"; support for the
following bit string operations: <length expression> defined in Subclause
6.6, "<numeric value function>", <bit substring function> defined in
Subclause 6.7, "<string value function>", <concatenation> and <bit value
expression> defined in Subclause 6.13, "<string value expression>"; support
for comparison of fixed and variable length bit strings as defined in
Subclause 8.2, "<comparison predicate>"; support for BIT VARYING in any
<embedded SQL host program> supported by the implementation. If feature
#20, "CAST functions", is supported, then <cast specification>s for casting
bit strings to and from character strings. Removal of Leveling Rule 1b of
Subclause 5.3, "<literal>". Removal of Leveling Rule 1b of Subclause 6.1,
"<data type>". Removal of the Intermediate SQL requirement that a <numeric
value function> not be a <length expression>, as specified in Leveling Rule
1b of Subclause 6.6, "<numeric value function>". Removal of the
Intermediate SQL restriction against using a <bit value function>, as
specified in Leveling Rule 1d of Subclause 6.7, "<string value function>".
Removal of Leveling Rule 1b of Subclause 6.13, "<string value expression>",
that prohibits use of a <bit value expression> in Intermediate SQL.
Removal of Leveling Rule 1a of Subclause 12.3, "<procedure>", that prohibits
specification of BIT or BIT VARYING in an Intermediate SQL <procedure>.
Removal of Leveling Rule 1a of Subclause 19.3, "<embedded SQL Ada program>",
Leveling Rule 1a of Subclause 19.4, "<embedded SQL C program>", Leveling
Rule 1a of Subclause 19.5, "<embedded SQL COBOL program>", Leveling Rule 1a
of Subclause 19.6, "<embedded SQL Fortran program>", Leveling Rule 1a of
Subclause 19.8, "<embedded SQL Pascal program>", and Leveling Rule 1a of
Subclause 19.9, "<embedded SQL PL/I program>".
52. Assertion constraints. Support for <assertion definition> and <drop
assertion statement> as <SQL statement>s in an explicit or implicit
<procedure>, as specified in Subclauses 11.34 and 11.35, respectively. If
feature #2, "Basic information schema" is supported, then implementation of
Subclause 21.2.17, "ASSERTIONS view", in the INFORMATION_SCHEMA. Removal
of Leveling Rules 1a in Subclause 11.1, Subclause 11.34, and Subclause 11.35.
53. Temporary tables. Support for GLOBAL TEMPORARY or LOCAL TEMPORARY
table definitions and ON COMMIT DELETE ROWS or ON COMMIT PRESERVE ROWS
options, as specified in Subclause 11.3, "<table definition>"; all provisions
of Subclause 13.11, "<temporary table declaration>"; all with any other
restrictions identified in the Leveling Rules for Intermediate SQL. Removal
of Leveling Rules 1a from Subclause 11.3, Subclause 12.1, and Subclause 13.11.
54. Full dynamic SQL. All provisions of Clause 17, "Dynamic SQL", including:
host variables for descriptor names, statement names, and cursor names;
DEALLOCATE PREPARE; DESCRIBE INPUT; dynamic single row select; and
preparable positioned dynamic update/delete. Removal of the Intermediate
SQL restriction against reference to system-supplied names, as specified
in Leveling Rule 1a of Subclause 5.4, "Names and identifiers". Removal of
Leveling Rules 1a of Subclauses 17.2, 17.3, 17.4, and 17.9 that restrict
<occurrences> and <descriptor name> to be <literal>s. Support for
Subclause 17.7, "<deallocate prepared statement>", Subclause 17.8,
"<describe statement>", Subclause 17.13, "<allocate cursor statement>",
Subclause 17.19, "<preparable dynamic delete statement: positioned>", and
Subclause 17.20, "<preparable dynamic update statement: positioned>", by
removal Intermediate SQL Leveling Rule 1a from each of these clauses.
Support for a <result using clause> in an EXECUTE statement, by removal of
Leveling Rule 1a of Subclause 17.10, "<execute statement>".
55. Full DATETIME. Support for feature #5, "DATETIME data type", and
feature #41, "Time zone specification". In addition, removal of the
Intermediate SQL restrictions against specification of precision in TIME
and TIMESTAMP data types, as specified in Leveling Rule 1a of Subclause 6.1,
"<data type>", Leveling Rule 1a of Subclause 5.3, "<literal>", and Leveling
Rule 1a of Subclause 6.8, "<datetime value function>".
56. Full value expressions. Support for references to <value expression>s
in all places where they are restricted in Entry SQL or Intermediate SQL,
including: removal of the Intermediate SQL restriction against using a
<value expression> in a <general set function> with DISTINCT, as specified
in Leveling Rule 1a of Subclause 6.5, "<set function specification>"; removal
of the Intermediate SQL restriction against using a <value expression> in
an <in predicate>, as specified in Leveling Rule 1a of Subclause 8.4, "<in
predicate>".
57. Truth value tests. Support for <truth value> tests of TRUE, FALSE, or
UNKNOWN, or their negations, applied to a <boolean primary> as specified in
Subclause 8.12, "<search condition>". Removal of Leveling Rule 1a of
Subclause 8.12.
58. Full character functions. Removal of the Intermediate SQL restriction
against use of a POSITION expression, as specified in Leveling Rule 1a of
Subclause 6.6, "<numeric value function>". Removal of the Intermediate SQL
restrictions against use of UPPER and LOWER functions, as specified in
Leveling Rule 1a of Subclause 6.7, "<string value function>".
59. Derived tables in FROM. Removal of the Intermediate SQL Leveling Rule
1a of Subclause 6.3, "<table reference>", that prohibits a <table reference>
from being a <derived table>. The effect is that a <derived table>, possibly
with a <derived column list>, may be specified in a FROM clause.
60. Trailing underscore. Removal of the Intermediate SQL restriction
against using an <underscore> as the last character of an identifier, as
specified in Leveling Rule 1a of Subclause 5.2, "<token> and <separator>".
61. Indicator data types. Removal of the Intermediate SQL restrictions on
the data types of indicator parameters and variables, as specified in
Leveling Rule 1a of Subclause 6.2, "<value specification> and <target
specification>".
62. Referential name order. Removal of the Intermediate SQL restriction
on the order of column names in a referential constraint definition, as
specified in Leveling Rule 1c of Subclause 11.8, "<referential constraint
definition>".
63. Full SQL Flagging. Support for "Entry SQL Flagging", "Intermediate SQL
Flagging", and "Full SQL Flagging", each with the "Syntax Only" extent of
checking option as defined in Subclause 4.33 of ANSI X3.135-1992. This
facility would allow an application to distinguish among vendor extensions
beyond Entry SQL that are supported in Intermediate SQL, those beyond
Intermediate SQL that are supported in Full SQL, and those that are non-
standard. This feature does not include support for the "Catalog Lookup"
option of the SQL Flagger (see feature #81).
64. Row and table constructors. All provisions of <row value constructor>
and <table value constructor> as specified in Subclause 7.1, "<row value
constructor>", and Subclause 7.2, "<table value constructor>", thereby
providing support for multiple column row and table constructors. Removal
of all Intermediate SQL Leveling Rules in these two clauses, allowing full
use of <row value constructor>s and <table value constructor>s in Clause
8, "Predicates", and in Subclause 13.8, "<insert statement>".
65. Catalog name qualifiers. Removal of the Intermediate SQL restriction
against reference to catalog names, as specified in part of Leveling Rule
1b of Subclause 5.4, "Names and identifiers".
66. Simple tables. Support for <simple table> and removal of the
Intermediate SQL restriction against simple or explicit table references in
a <query expression>, as specified in Leveling Rules 1a and 1b of Subclause
7.10, "<query expression>".
67. Subqueries in CHECK. Removal of the Intermediate SQL Leveling Rule 1a
of Subclause 11.9, "<check constraint definition>", that prohibits
specification of a <subquery> in a CHECK constraint, but retaining any
other restrictions on <subquery> as required for Intermediate SQL.
Support for granting and revoking REFERENCES privileges on all tables,
including views, as specified in Subclause 10.3, "<privileges>", so that the
<subquery> can reference base tables and views external to the table
containing the check constraint. Removal of Intermediate SQL Leveling Rule
1b of Subclause 11.9, "<check constraint definition>", that allows implicit
assumption of REFERENCES privileges on tables in Intermediate SQL.
68. Union and Cross join. Support for feature #4, "Joined table". In
addition, support for UNION JOIN and CROSS JOIN by removal of Leveling Rule
1a and Leveling Rule 1b of Subclause 7.5, "<joined table>".
69. Collation and translation. Support for Subclause 11.30, "<collation
definition>", Subclause 11.31, "<drop collation statement>", Subclause 11.32,
"<translation definition>", and Subclause 11.33, "<drop translation
statement>", as <SQL statement>s in an explicit or implicit <procedure>.
Removal of Leveling Rules 1a in Subclauses 11.30 through 11.33. Support for
granting and revoking USAGE privileges on any defined collations or
translations, as specified in Subclause 10.3, "<privileges>", by removal of
Leveling Rule 1a in Subclause 11.36, "<grant statement>". If feature #2,
"Basic information schema" is supported, then implementation of Subclause
21.2.19, "COLLATIONS view", and Subclause 21.2.20, "TRANSLATIONS view", in
the INFORMATION_SCHEMA. Removal of the Intermediate SQL restriction
against reference to collation, translation, or conversion names, as
specified in Leveling Rule 1b of Subclause 5.4, "Names and identifiers", in
Leveling Rule 1a of Subclause 6.13, "<string value expression>", and in
Leveling Rules 1b and 1c of Subclause 11.1, "<schema definition>". Removal of
the Intermediate SQL restriction against use of the <collate clause>, as
specified in Leveling Rule 1a of Subclause 10.5, "<collate clause>", Leveling
Rule 1a of Subclause 11.4, "<column definition>", Leveling Rule 1a of
Subclause 7.7, "<group by clause>", Leveling Rule 1a of Subclause 11.21,
"<domain definition>", and Leveling Rule 1a of Subclause 11.28, "<character
set definition>". Removal of the Intermediate SQL restrictions against use
of character translations or form-of-use conversions, as specified in
Leveling Rules 1b and 1c of Subclause 6.7, "<string value function>".
70. Referential update actions. Support for a <referential triggered
action> that contains an <update rule>, as defined in Subclause 11.8,
"<referential constraint definition>". Removal of Leveling Rule 1b of
Subclause 11.8, "<referential constraint definition>", that prohibits
specification of an <update rule> in a <referential triggered action>,
thereby allowing an ON UPDATE trigger.
71. ALTER domain. Support for <alter domain statement>, <set domain
default clause>, <drop domain default clause>, <add domain constraint
definition>, and <drop domain constraint definition>, all specified in
Subclauses 11.22 through 11.26, as <SQL statement>s in an explicit or
implicit <procedure>. Remove all Intermediate SQL Leveling Rules in
Subclauses 11.22 through 11.26.
72. Deferrable constraints. Support for the <set constraints mode
statement>, specified in Subclause 14.2, as an <SQL statement> in an
explicit or implicit <procedure>. Removal of Leveling Rule 1a of Subclause
14.2. Removal of Intermediate SQL Leveling Rule 1a of Subclause 10.6,
"<constraint name definition> and <constraint attributes>", that prohibits
user specification of DEFERRABLE constraints and <constraint check time>
as DEFERRED or IMMEDIATE.
73. INSERT column privileges. Removal of the Intermediate SQL Leveling
Rule 1a of Subclause 10.3, "<privileges>", that prohibits the granting of
INSERT privileges on individual columns.
74. Referential MATCH types. Support for MATCH FULL and MATCH PARTIAL,
as defined in Subclause 11.8, "<referential constraint definition>", by
removal of Intermediate SQL Leveling Rule 1a. Support for the MATCH
predicate, as specified in Subclause 8.10, "<match predicate>", by removal of
Intermediate SQL Leveling Rules 1a of Subclause 8.1, "<predicate>", and
Subclause 8.10, "<match predicate>".
75. View CHECK enhancements. Support for CASCADED and LOCAL options in
the WITH CHECK OPTION clause of a <view definition>. Removal of the
Intermediate SQL restrictions against explicit declaration of these
options, as specified in Leveling Rule 1a of Subclause 11.19, "<view
definition>".
76. Session management. Support for "Session management", as specified in
Subclause 16.1, "<set catalog statement>, Subclause 16.2, "<set schema
statement>", and Subclause 16.3, "<set names statement>. Removal of all
Intermediate SQL Leveling Rules in Subclauses 16.1, 16.2, and 16.3.
77. Connection management. Support for all provisions of Clause 15,
"Connection management", including: CONNECT, SET CONNECTION, and
DISCONNECT. Those <simple value specification>s that are valid <connection
target>s and <user name>s are implementation-defined, so long as Syntax
Rule 1 of Subclause 15.1, "<connect statement>", is satisfied. The
communication protocols used to implement the connection management
statements are implementation-defined. Removal of all Intermediate SQL
Leveling Rules in Subclauses 15.1, 15.2, and 15.3. Removal of the
Intermediate SQL restriction against reference to <connection name>, as
specified in Leveling Rule 1b of Subclause 5.4, "Names and identifiers".
78. Self-referencing operations. Removal of the Intermediate SQL
restrictions against self-referencing DELETE, INSERT, and UPDATE
statements, as specified in Leveling Rules 1a of Subclause 13.7, "<delete
statement: searched>", Subclause 13.8, "<insert statement>", and Subclause
13.10, "<update statement: searched>".
79. Insensitive cursors. Support for the INSENSITIVE option on a cursor
declaration, by removal of the Intermediate SQL Leveling Rule 1a of
Subclause 13.1, "<declare cursor>". If feature #54, "Full dynamic SQL", is
supported, then removal of Leveling Rule 1a in Subclause 17.12, "<dynamic
declare cursor>".
80. Full set function. Support for feature #44, "Intermediate set
function". In addition, removal of the Intermediate SQL restrictions
against use of DISTINCT in a <general set function>, as specified in
Leveling Rule 1a of Subclause 6.5, "<set function specification>", and
removal of the Intermediate SQL restriction against multiple use of
DISTINCT in a <query specification>, as specified in Leveling Rule 1a of
Subclause 7.9, "<query specification>".
81. Catalog flagging. Support for both the "Syntax Only" and "Catalog
Lookup" extent of checking options of the SQL Flagger feature, as defined
in Subclause 4.34 of ANSI X3.135-1992. This facility would allow the SQL
Flagger to catch a syntactic extension that violates a Syntax Rule
dependent upon information stored in the INFORMATION_SCHEMA.
82. Local table references. Support for qualified local table references
of the form MODULE.T, by removal of the Intermediate SQL restriction
against reference to a <qualified local table name>, as specified in
Leveling Rule 1b of Subclause 5.4, "Names and identifiers".
83. Full cursor update. Support for the updatability of SCROLL or ORDER
BY cursors, by removal of Leveling Rule 1b of Subclause 13.1, "<declare
cursor>" and Leveling Rule 1a of Subclause 13.9, "<update statement:
positioned>". If feature #54, "Full dynamic SQL", is supported, then removal
of Leveling Rule 1b in Subclause 17.12, "<dynamic declare cursor>".
14.4 Integration with RDA. The following FIPS SQL optional features
require conformance to ISO/IEC 9579, the International Standard for Remote
Database Access (RDA), with the implementation agreements specified in FIPS
146 (GOSIP) from the NIST OSI Implementors Workshop. SQL implementations that
also conform to the RDA portion of GOSIP should start becoming available near
the end of the first or at the beginning of the second effective year of FIPS
127-2.
84. RDA/SQL-Client. Conformance to the Remote Database Access (RDA)
component of FIPS PUB 146, "Government Open Systems Interconnection
Profile (GOSIP)", by satisfying all of the requirements for the "Immediate
Execution" profile as an "RDA Client" and abiding by the NIST OSI
Implementor's Workshop implementation agreements. The Immediate Execution
profile requires the following RDA functional units: Dialogue Initialization,
Dialogue Termination, Transaction Management (Basic Application Context),
Resource Handling, and Immediate Execution DBL. Conformance to FIPS PUB
127-2, "FIPS SQL", at the Entry SQL level or above, and support for FIPS
feature #1, "Dynamic SQL", and FIPS feature #2, "Basic information schema".
Support for the FIPS feature #77, "Connection management", defined above,
with the following additional requirements: the CONNECT statement triggers
Dialogue Initialization (R-Initialize Service) and Resource Handling (R-Open
Service); the DISCONNECT statement triggers Resource Handling (R-Close
Service) and Dialogue Termination (R-Terminate Service); the SET CONNECTION
statement re-establishes active Resource Handling and, if necessary may
trigger Dialogue Termination (R-Close Service) to make a current SQL-
connection dormant; Transaction Management supports SQL-COMMIT and SQL-
ROLLBACK, and satisfies the timing and semantics of an SQL-Transaction;
other SQL-Statements, in the host language binding style supported by the
SQL-implementation, are mapped to Immediate Execution DBL (R-ExecuteDBL
Service) protocols.
85. RDA/SQL-Server. Conformance to Remote Database Access (RDA)
component of FIPS PUB 146, "Government Open Systems Interconnection
Profile (GOSIP)", by satisfying all of the requirements for the "Immediate
Execution" profile as an "RDA Server" and abiding by the NIST OSI
Implementor's Workshop implementation agreements. The Immediate Execution
profile includes: Dialogue Initialization, Dialogue Termination, Transaction
Management (Basic Application Context), Resource Handling, and Immediate
Execution DBL. Conformance to FIPS PUB 127-2, "FIPS SQL", at the Entry SQL
level or above, and support for FIPS feature #1, "Dynamic SQL", and FIPS
feature #2, "Basic information schema".
86. RDA Stored Execution. Conformance to feature #84, "RDA/SQL-Client",
or feature #85, "RDA/SQL-Server", defined above and, in addition, support
for the RDA Stored Execution Functional Unit as specified in ISO/IEC 9579-
2 (RDA SQL Specialization), and with implementor agreements specified by the
NIST OSI Implementor's Workshop.
87. RDA Cancel. Conformance to feature #84, "RDA/SQL-Client", or feature
#85, "RDA/SQL-Server", defined above and, in addition, support for the RDA
Cancel Functional Unit as specified in ISO/IEC 9579-2 (RDA SQL
Specialization), and with implementor agreements specified by the NIST OSI
Implementor's Workshop.
88. RDA Status. Conformance to feature #84, "RDA/SQL-Client", or feature
#85, "RDA/SQL-Server", defined above and, in addition, support for the RDA
Status Functional Unit as specified in ISO/IEC 9579-2 (RDA SQL
Specialization), and with implementor agreements specified by the NIST OSI
Implementor's Workshop.
89. RDA TP Application Context. Conformance to feature #84, "RDA/SQL-
Client", or feature #85, "RDA/SQL-Server", defined above and, in addition,
support for the RDA SQL TP Application Context as specified in ISO/IEC
9579-2 (RDA SQL Specialization), and dependent upon ISO/IEC DIS 10026
(Distributed Transaction Processing), and with Distributed Transaction
Processing implementor agreements specified by the NIST OSI Implementor's
Workshop.
15. FIPS documentation schema. For conformance to Intermediate
SQL or to Full SQL, FIPS SQL requires that the implementation provide a
special schema, the FIPS_DOCUMENTATION schema, as a system-owned schema in
every catalog supported by that implementation (see Section 10.f). The
FIPS_DOCUMENTATION schema has, effectively, the following schema definition:
CREATE SCHEMA FIPS_DOCUMENTATION
AUTHORIZATION "_SYSTEM"
DEFAULT CHARACTER SET SQL_CHARACTER
CREATE TABLE SQL_FEATURES
(
FEATURE_ID SMALLINT PRIMARY KEY CHECK (FEATURE_ID > 0),
FEATURE_NAME CHARACTER (50) NOT NULL,
CLASSIFICATION CHARACTER (12) NOT NULL CHECK (CLASSIFICATION IN
('TRANSITIONAL', 'INTERMEDIATE', 'FULL', 'RDA')),
IS_SUPPORTED CHARACTER (3) NOT NULL CHECK (IS_SUPPORTED IN ('YES',
'NO')),
IS_VERIFIED CHARACTER (3) NOT NULL CHECK (IS_VERIFIED IN ('YES',
'NO')),
FEATURE_COMMENTS VARCHAR (500) CHARACTER SET SQL_TEXT,
CHECK (IS_SUPPORTED='YES' OR IS_VERIFIED='NO')
)
CREATE TABLE SQL_SIZING
(
SIZING_ID SMALLINT PRIMARY KEY CHECK (SIZING_ID > 0),
DESCRIPTION CHARACTER (50) NOT NULL,
ENTRY_VALUE INTEGER,
INTERMEDIATE_VALUE INTEGER,
VALUE_SUPPORTED INTEGER,
SIZING_COMMENTS VARCHAR (500) CHARACTER SET SQL_TEXT
)
GRANT SELECT, REFERENCES ON SQL_FEATURES TO PUBLIC WITH GRANT OPTION
GRANT SELECT, REFERENCES ON SQL_SIZING TO PUBLIC WITH GRANT OPTION
15.1 SQL_Features table. The SQL_FEATURES table shall consist of
exactly one row for each FIPS SQL feature defined in Section 14 of this
standard. The FEATURE_ID and FEATURE_NAME columns identify the feature by
the integer and name assigned to it in Section 14. The CLASSIFICATION column
identifies the FIPS conformance level in which the feature first becomes
required; all features in Subsection 14.1 are classified as TRANSITIONAL, all
features in Subsection 14.2 are classified as INTERMEDIATE, all features in
Subsection 14.3 are classified as FULL, and all features in Subsection 14.4
are classified as RDA. The IS_SUPPORTED column is 'YES' if an implementation
fully supports that feature when data in the identified catalog is accessed
through that implementation, and is 'NO' if the implementation does not fully
support the feature when accessing that catalog. If full support for the
feature has been verified by testing with the NIST SQL Test Suite, then the
IS_VERIFIED column is 'YES'; otherwise, the IS_VERIFIED column is 'NO'. If the
IS_VERIFIED column is 'YES', then the vendor of the implementation shall have
passed, either by self testing or by witnessed testing, all tests in the then
current version of the NIST SQL Test Suite that apply to that feature. The
FEATURE_COMMENTS column is intended for any vendor comments pertinent to
the identified FIPS SQL feature.
15.2 SQL_Sizing table. The SQL_SIZING table shall consist of exactly
one row for each FIPS SQL database construct defined in Section 16.6 of this
standard. The SIZING_ID and DESCRIPTION columns identify the database
construct by the integer and description assigned to it in Section 16.6. The
ENTRY_VALUE column is equal to the default Entry SQL value defined for that
construct by FIPS SQL in Section 16.6, with "*" converted to a Null value. The
INTERMEDIATE_VALUE column is equal to the default Intermediate SQL value
defined for that construct by FIPS SQL in Section 16.6, with "*" converted to
a Null value. The VALUE_SUPPORTED column indicates a value for the
construct that is supported by an implementation when data in the identified
catalog is accessed through that implementation; if this value is Null, then
there is no explicit restriction on the size of that construct. A user must
be able to depend upon these values when executing SQL-statements against
data in the catalog. If a given catalog spans multiple SQL-Server
implementations, then the VALUE_SUPPORTED shall be valid in all of them. It
is important to recognize that FIPS sizing defaults are not requirements for
conformance to FIPS SQL; instead, they identify a default value that is
assumed to be specified if a Federal SQL procurement is silent on that topic.
For this reason, the VALUE_SUPPORTED may sometimes be less than the FIPS
default for the ENTRY_VALUE or the INTERMEDIATE_VALUE, even for a FIPS SQL
conforming implementation. The SIZING_COMMENTS column is intended for any
vendor comments pertinent to the identified FIPS SQL database construct.
16. Special Procurement Considerations. FIPS SQL includes
various alternatives for interfacing to programming languages, allows the
additional specification of optional FIPS SQL features, and does not specify
any minimum requirements for the size or number of occurrences of database
constructs. Any invocation of this standard in a procurement should indicate
the programming languages to which it interfaces, whether Modules, Embedded
SQL, or both are required for each language, which base level of FIPS SQL
conformance is a mandatory requirement, which optional features are
desirable, and what the sizing and occurrence requirements are. Any use of
this standard in a broader database management system (DBMS) procurement
should be accompanied with functional requirements for other DBMS components
and facilities.
16.1 Procurement wording. References to this standard in a
procurement should be accompanied with appropriate solicitation wording.
Information on Acquisition wording is in Section 11.2 of this standard, and
information on Validation wording is in Section 11.4.
16.2 Programming language interfaces. References to this
standard in a procurement should indicate which FIPS programming languages
(e.g. Ada, C, COBOL, FORTRAN, MUMPS, or Pascal) are to be supported for
language interface. Failure to make this indication means that support for
any one of these languages satisfies the FIPS SQL requirement.
16.3 Style of language interface. References to this standard in
a procurement should indicate, for each programming language identified
above, whether the language interface is to support Modules, Embedded SQL,
or both. Failure to make this indication means that support for any one
interface style satisfies the FIPS SQL requirement.
16.4 Optional Features. References to this standard in a
procurement should indicate which FIPS SQL conformance level is a mandatory
requirement. Valid base level conformance alternatives are: Entry SQL,
Transitional SQL, Intermediate SQL, or Full SQL. In addition, procurements
may specify desirable features beyond that level (see Section 14).
Implementations that support the identified desirable features may be rated
higher in the procurement evaluation process. Failure to specify a mandatory
base level of conformance means that only Entry SQL is required.
Under certain circumstances, one or more FIPS SQL features above the base
level of conformance may be specified as mandatory requirements in a Federal
procurement. Usually such features will only be specified as desirable.
Procurements that seek effective competition from a number of different
vendors should be very careful in distinguishing between mandatory and
desirable features.
Depending upon agency requirements and vendor cooperation, the NIST SQL
Test Suite may identify and test various SQL "profiles" for specific purposes.
For example, an "interoperability profile" might include some features from
Transitional SQL as well as Connection management (feature #77) from Full SQL
and Client/Server capabilities (features #84 and #85) from RDA, or a "read
only profile" might include only selected data manipulation statements without
any schema definition or schema manipulation. See the most recent version of
the NIST SQL Test Suite for possible specification of such profiles.
As always, all syntactic extensions beyond Entry SQL, Intermediate SQL, or
Full SQL shall be appropriately flagged by the SQL Flagger.
16.5 Interactive Direct SQL. References to this standard in a
procurement should indicate whether or not "Interactive Direct SQL" is
required. If it is required, then in order to satisfy the requirement, an
implementation shall provide interactive access to the database, using any
<direct SQL statement>, as specified in Clause 20 of ANSI X3.135-1992, and
subject to any leveling or FIPS SQL feature requirements specified in Section
16.4 above. Failure to indicate an explicit requirement for "Interactive
Direct SQL" in a procurement means that this interface alternative is not
required.
Additional FIPS requirements for Interactive Direct SQL are as follows: if a
statement raises an exception condition, then the system shall display a
message indicating that the statement failed, giving a textual description of
the failure; if a statement raises a completion condition that is a "warning"
or "no data", then the system shall display a message indicating that the
statement completed, giving a textual description of the "warning" or "no
data"; an implementation shall provide some implementation-defined symbol for
displaying null values and, for character string values, this symbol must be
distinguishable from a value of all <space>s.
16.6 Sizing for database constructs. References to this
standard in a procurement should indicate minimum requirements for the
precision, size, or number of occurrences of database constructs. Failure to
make this indication means that the Entry Values detailed below are by
default the minimum requirements for Entry SQL or Transitional SQL
procurements and the Intermediate Values detailed below are by default the
minimum requirements for Intermediate SQL or Full SQL procurements.
Sizing Entry Intermediate
Id Description Value Value
1. Length of an identifier 18 128
2 CHARACTER max length 240 1000
3. CHARACTER VARYING max length 254 1000
4. BIT max length in bits * 8000
5. BIT VARYING max length in bits * 8000
6. NATIONAL CHARACTER max length * 500
7. NATIONAL CHAR VARYING max length * 500
8. NUMERIC decimal precision 15 15
9. DECIMAL decimal precision 15 15
10. INTEGER decimal precision 9 *
11. INTEGER binary precision * 31
12. SMALLINT decimal precision 4 *
13. SMALLINT binary precision * 15
14. FLOAT binary mantissa precision 20 47
15. FLOAT binary exponent precision * 9
16. REAL binary mantissa precision 20 23
17. REAL binary exponent precision * 7
18. DOUBLE PRECISION binary mantissa precision 30 47
19. DOUBLE PRECISION binary exponent precision * 9
20. TIME decimal fractional second precision * 0
21. TIMESTAMP decimal fractional second precision * 6
22. INTERVAL decimal fractional second precision * 6
23. INTERVAL decimal leading field precision * 7
24. Columns in a table 100 250
25. Values in an INSERT statement 100 250
26. Set clauses in UPDATE statement 20 250
27. Length of a row (see Note 1) 2000 8000
28. Columns in UNIQUE constraint 6 15
29. Length of UNIQUE columns (Note 1) 120 750
30. Columns in GROUP BY column list 6 15
31. Length of GROUP BY column list (Note 1) 120 750
32. Sort items in ORDER BY clause 6 15
33. Length of ORDER BY column list (Note 1) 120 750
34. Referencing columns in FOREIGN KEY 6 15
35. Length of FOREIGN KEY column list (Note 1) 120 750
36. Table references in an SQL statement (Note 3) 15 50
37. Cursors simultaneously open 10 100
38. WHEN clauses in a CASE expression * 50
39. Columns in a named columns JOIN * 15
40. Length of JOIN column list (Note 1) * 750
41. Items in a SELECT list 100 250
42. Length of SQL <schema definition> (Note 2) * 30000
43. Length of <SQL data statement> (Note 2) * 4000
44. Length of <SQL statement variable> (Note 2) * 4000
45. Occurrences in an ALLOCATE DESCRIPTOR * 100
46. Default occurrences in ALLOCATE DESCRIPTOR * 100
Note 1: The length of a collection of columns is conservatively estimated
to be no larger than the sum of: twice the number of columns, OCTET_LENGTH
of each character or bit column (see Subclause 6.6, "<numeric value
function>", of X3.135-1992), decimal precision plus 1 of each exact numeric
column, binary precision divided by 4 plus 1 of each approximate numeric
column, 10 for each DATE column, 8 for each TIME column, 14 for each TIME
WITH TIME ZONE column, 19 for each TIMESTAMP column, 25 for each TIMESTAMP
WITH TIME ZONE column, and 20 for each INTERVAL column. In addition, if any
DATE, TIME, TIMESTAMP, or INTERVAL column has a non-zero fractional
seconds precision, then add that precision plus 1 to the length of the
column.
Note 2: The length of an SQL statement is defined to be the result of
applying the OCTET_LENGTH function (see Subclause 6.6, "<numeric value
function>", of X3.135-1992) to the SQL statement with the SQL statement
considered to be an instance of a CHARACTER VARYING data type.
Note 3: The number of table references in an SQL statement is the sum of:
the number of views and base tables named in the statement, the number of
underlying views and tables (see Subclause 4.9, "Tables", of X3.135-1992) for
each derived table or cursor, and the number of <correlation name>s (either
given in the SQL statement or contained in some view named in the SQL
statement) not directly associated with a named table or view.
Some applications may have requirements for CHARACTER VARYING or BIT
VARYING data types with lengths much longer than the Entry SQL or
Intermediate SQL values specified above. This is particularly true for
applications that need to manage large Audio, Graphics, Text, or Video
objects. Some applications have requirements for Audio, Text, or Graphics
objects in excess of 2-3 million bytes, or Video objects in excess of multiple
gigabytes. Implementations that provide such data types often impose severe
restrictions in how these very large objects can be referenced in SQL
definitions and statements. For example, a very long CHARACTER VARYING data
type may not be allowed to participate in a PRIMARY KEY, a UNIQUE constraint,
a REFERENTIAL constraint, a <comparison predicate>, a GROUP BY or HAVING
clause, or an ORDER BY in a cursor definition. Applications that stay within
the limits specified above should not encounter any unexpected restrictions
in how these constructs can be used or referenced in SQL language.
Some implementations address user requirements for very large objects, with
a minimum number of restrictions, by allowing arbitrarily large maximum length
declarations for CHARACTER VARYING or BIT VARYING, with an internal
representation using some sort of indirect addressing mechanism. In this way
they can keep the physical length of the row in which the object is
represented less than the physical page size of the operating system
environment, often necessary for lock management, while at the same time
meet user requirements for storing, retrieving, and managing large objects.
SQL procurements that anticipate requirements for very long CHARACTER
VARYING or BIT VARYING data types should be very explicit in procurement
specifications about additional requirements for how these large data types
interface to external processors or how they need to be processed by SQL
language.
16.7 Character set support. In ANSI Entry SQL, the set of character
values for the character data types and the collation of characters in those
data types are both implementation-defined. References to the Entry SQL
level of this standard in a procurement should indicate any additional
character data requirements. Failure to indicate specific character set
requirements for the Entry SQL or Transitional SQL options of FIPS SQL means
that support for representation of the 95-character graphic subset of ASCII
(FIPS PUB 1-2), in an implementation-defined collating sequence, is by default
the minimum requirement.
In Intermediate SQL, various SQL statements may use a <character set
specification> to identify, by name, one or more different implementation-
defined character sets. In addition, users may define new character sets
with a <character set definition>. For conformance to the Intermediate SQL
or Full SQL options of FIPS SQL, it is required (see Section 10.e) that any
<character set specification> be able to specify any one of the following
character set names: SQL_CHARACTER, ASCII_GRAPHIC, LATIN1, ASCII_FULL, or
SQL_TEXT.
-- If SQL_CHARACTER is specified, then the resulting character set
consists of the 83 <SQL language character>s as specified in Subclause 5.1
of X3.135-1992. It consists of the 52 uppercase and lowercase simple latin
characters, 10 digits, and 21 <SQL special character>s, including: <space>,
<double quote>, <percent>, <ampersand>, <quote>, <left paren>, <right
paren>, <asterisk>, <plus sign>, <comma>, <minus sign>, <period>, <solidus>,
<colon>, <semicolon>, <less than operator>, <equals operator>, <greater
than operator>, <question mark>, <underscore>, and <vertical bar>. The 83
characters specified as <SQL language character>s are all included in the
ISO International Reference Version (IRV) characters specified in ISO
646:1991. The characters in IRV are included in many other international
character set definitions. In addition, 82 of these characters (all except
<vertical bar>) are in the most stable subset of IRV that, by ISO
convention, is included in every latin-based ISO standard set of
characters. As far as can be determined, <vertical bar> is included in
every character set that enjoys wide use in either the United States or
Western Europe. Thus the SQL_CHARACTER repertoire is the most universal
of the character sets named in this FIPS. The collation and form-of-use of
SQL_CHARACTER is implementation-defined.
-- If ASCII_GRAPHIC is specified, then the resulting character set
consists of the 95-character graphic subset of ASCII as specified in FIPS
PUB 1-2. The form-of-use is that corresponding to the coded
representation of each character by a single byte (possibly 7-bit, 8-bit, or
other), with no designation escape sequences for other character sets.
The default collating sequence is that corresponding to the bit
combinations defined by FIPS PUB 1-2. The ASCII_GRAPHIC character set is a
superset of the <SQL language character>s. The 12 characters included in
ASCII_GRAPHIC that are not <SQL language character>s are, in collation
order: Exclamation mark !, Number sign #, Dollar sign $, Commercial at @,
Left square bracket [, Reverse solidus \, Right square bracket ], Circumflex
accent ^, Grave accent `, Left curly bracket {, Right curly bracket }, and
Tilde ~. Of these 12 characters, only "!" is in the most stable subset of
ISO 646, whereas "#" competes with the British pound sign, "$" competes with
the international currency symbol, and the others occupy positions in ISO
646 that are reserved for national or application-oriented use. However,
all are the default IRV values specified in ISO 646 when no national or
application-specific version is explicitly specified.
-- If LATIN1 is specified, then the resulting character set consists of the
191 graphic characters defined in ISO 8859-1. The form-of-use is that
corresponding to the coded representation of each character by a single 8-
bit byte, with no designation escape sequences for other character sets.
The default collating sequence is that corresponding to the bit
combinations defined by ISO 8859-1. The LATIN1 character set is a superset
of ASCII_GRAPHIC and, when restricted to the ASCII_GRAPHIC characters,
produces the same collation as ASCII_GRAPHIC. LATIN1 consists of all
characters commonly used in the following languages: Danish, Dutch, English,
Faeroese, Finnish, French, German, Icelandic, Irish, Italian, Norwegian,
Portuguese, Spanish, and Swedish. It also includes the following special
symbols, in collation order: No-break space, Inverted exclamation mark, Cent
sign, Pound sign, Currency sign, Yen sign, Broken bar, Paragraph sign,
Diaeresis, Copyright sign, Feminine ordinal indicator, Left angle quotation
mark, Not sign, Soft hyphen, Registered trade mark sign, Macron, Degree
sign, Plus-minus sign, Superscript two, Superscript three, Acute accent,
Micro sign, Pilcrow sign, Middle dot, Cedilla, Superscript one, Masculine
ordinal indicator, Right angle quotation mark, Fraction one quarter,
Fraction one half, Fraction three quarters, and Inverted question mark.
Other characters include the Multiplication sign and the Division sign. In
LATIN1, all ASCII_GRAPHIC characters precede the non-ASCII_GRAPHIC
characters in the default collation, followed by the special symbols,
followed by the accented capital letters, followed by the accented small
letters. The Multiplication sign is in the middle of the accented capital
letters and the Division sign is in the middle of the accented small letters.
LATIN1 is subject to the following conformance requirements, as specified in
Clause 3, "Conformance", of ISO 8859-1:
a. A set of graphic characters is in conformance with Part 1 of ISO
8859 if it comprises all graphic characters specified therein to the
exclusion of any other and if their coded representations are those
specified by Part 1 of ISO 8859.
b. Equipment claimed to implement Part 1 of ISO 8859 shall implement all
191 characters.
-- If ASCII_FULL is specified, then the resulting character set consists
of all 256 characters of 8-bit ASCII, as specified in ANSI/ISO 4873 and
ANSI/ISO 8859-1, including all control characters and all graphic
characters. The form-of-use is that corresponding to the coded
representation of each character by a single 8-bit byte, with no
designation escape sequences for other character sets. The default
collating sequence is that corresponding to the bit combinations defined by
8-bit ASCII. The ASCII_FULL character set is a superset of LATIN1 and,
when restricted to the LATIN1 characters, produces the same collation and
form-of-use.
-- If SQL_TEXT is specified, then the resulting character set consists of
the <SQL language character>s and all characters that are in other
character sets supported by the implementation, as specified in Syntax
Rule 11 of Subclause 6.1, "<data type>", of X3.135-1992. Thus, in FIPS SQL,
the SQL_TEXT character set must be a superset of ASCII_FULL. The
collation and form-of-use of SQL_TEXT is implementation-defined.
The character sets SQL_CHARACTER, ASCII_GRAPHIC, LATIN1, and ASCII_FULL
have both a "floor" and "ceiling" requirement to consist of exactly the
characters specified. Any character data type associated with one of these
character sets has an implied integrity constraint limiting a value of the
data type to be a character string consisting only of characters from the
specified character set. The SQL_TEXT character set has a similar "floor"
requirement in that it must contain all of the ASCII_FULL characters;
however, SQL_TEXT does not have a "ceiling" requirement.
Requirements for FIPS Intermediate SQL or FIPS Full SQL in an SQL
procurement should indicate any additional character data requirements.
Failure to indicate specific character set, collation, conversion, or
translation requirements means that support for SQL_CHARACTER,
ASCII_GRAPHIC, LATIN1, ASCII_FULL, and SQL_TEXT, as indicated above, are the
only requirements.
16.8 DBMS procurement. Database software is normally purchased as a
complete package called a database management system (DBMS). A DBMS is an
implementation of one or more data models (e.g. the relational model, or an
object model), together with other components, features, or data interfaces
for efficient data administration. These additional facilities are not
specified by this standard, so each procurement should itself specify the
functional requirements of each additional feature desired.
Additional facilities most often contained in a DBMS package include: special-
purpose data types (e.g. multimedia types or spatial data types), user-
defined data types, object management, database import and export tools,
backup and recovery tools, performance optimization tools, audit trails,
networking, data dictionary, data storage specification, natural language
query, report writer, graphical user interface, query by forms, CASE tools, or
application development tools. Emerging specifications for an expanded SQL
database language in ANSI and ISO standardization bodies may result in future
standardization for some of these facilities; others may always remain
implementation-defined.
The following features have "preliminary" syntax and semantics available in
Working Draft form as part of an on-going ANSI and ISO/IEC standardization
effort for further development of the SQL language. Generic support for
some of these features may be specified as functional requirements, or as
desirable elements, in a DBMS procurement, but any such procurement
specification should be written knowing that the preliminary ANSI and ISO
specifications are subject to substantial evolution or reconsideration
before adoption in any future SQL standard. As these facilities evolve over
the next several years and work their way through the various levels of the
ANSI and ISO/IEC standardization process (i.e. CD and DIS), then more
confidence can be put into referencing them in DBMS procurements. Features
specified in preliminary form include:
1. SQL Call Level Interface (SQL/CLI). A new application program interface
to SQL, initially specified for COBOL and C, that allows system calls to SQL
services without the need for Embedded SQL preprocessing or Module
language compilation. This interface would allow development of database
client applications that could be linked to different SQL server
implementations at execution time. This interface is a requirement for
third-party software developers who wish only to distribute binary code to
their customers. An ISO/IEC Working Draft specification was available in
early 1993, with final standardization projected for 1994-1995.
2. Persistent SQL Modules. The ability to define packages of SQL
procedures that "live" in the schema just like any other defined SQL object.
Modules may be stored at remote nodes in a conforming communications
network with only a remote procedure call needed to invoke a desired
action. Persistent SQL Modules allow optimization of stored procedures at
multiple sites in a communications network, thereby reducing both
processing time and communications volume. An ISO/IEC Working Draft
specification was available in early 1993, with final standardization
projected for 1994-1995.
3. Abstract data type (ADT). A facility for user-defined data types, both
structures and operations, using previously defined abstract data types
and the standardized base types as primitives.
4. Dynamic assertions. Support for integrity constraints that are
triggered by specific database actions, such as: after update, before
insertion, or constraints based on comparing old and new values of a given
attribute. Assertions are "dynamic" in that they may reference before and
after images of the database or may depend upon temporary data values
that only exist at the time the invoking statement is executed.
5. Dynamic triggers. Support for triggering a sequence of database
actions based on a specific database action, such as after delete, thereby
supporting the object notion of encapsulation. Assertions and Triggers
make it possible for object self-management to be fully specified in a
database schema, with increased opportunity for performance optimization
by the underlying database management system.
6. Object identity. A persistent object-identifier created for each
instance of an object data type that is independent of the object's name,
structure, or location, and that persists over time to forever avoid
confusion with the identity of another object.
7. SQL functions. A function, defined completely in SQL, that helps to
define the behavior of abstract data types. Constructor and destructor
functions create or destroy new ADT instances, and actor functions read or
modify ADT attributes.
8. External function call. A function whose interface specification is
defined in an SQL schema, but with the content of the function written in
some other programming language (e.g Fortran, Ada, or C++). USAGE
privileges on external functions are managed by SQL GRANT and REVOKE
statements.
9. Subtypes and inheritance. An abstraction mechanism that allows classes
of abstract data types to be related hierarchically. Inheritance allows
ADT classes to share properties and operations with other classes to allow
more accurate and succinct modeling of applications.
10. Polymorphic functions. The ability to invoke an operation on any of
several different objects and have each object determine how to respond,
during execution, by applying rules for disambiguating names and data
types.
11. Program control structures. Support for defining computationally
complete SQL procedures by allowing sequences of SQL statements, looping,
branching, and other flow of control statements, and dynamic exception
handling on a per-procedure basis.
12. Parameterized types. The ability to define "type families", with a new
data type for each value of an input parameter. Such type templates may
also be nested, thereby greatly simplifying the definition of some complex
nested structures.
1 Generator types. Support for type generators such as LIST, ARRAY,
and SET, with SQL syntax, but harmonized with emerging specifications for
generator and parameterized types in ISO/IEC programming language
committees, i.e. ISO/IEC CD 11404, "Common language independent data types"
(CLID).
14. Recursive expressions. Support for SQL expressions of indefinite,
recursive depth, such as those arising out of "bill-of-materials" part's
hierarchies.
15. Existential and universal quantifiers. Support for more mathematically
based SQL expressions involving the existential and universal quantifiers
prevalent in 3-valued predicate logic.
16. SIMILAR predicate. A facility for pattern matching in bit strings and
character strings that allows construction of regular expressions
equivalent to regular expressions in the POSIX standard, ISO/IEC 9945.
17. Multiple null states. A facility that allows user definitions for an
arbitrary number of application specific Null values, such as "Unknown",
"Missing", "Not Applicable", "Pending", etc. Each such Null value would have
a different representation in the database so that they could be
distinguished by <query expression>s during retrieval or update.
18. Roles and data security. An enhanced facility for database security
management that builds upon the existing Grant and Revoke definitions. It
extends the security model to include named "roles" in addition to schema
objects, actions, and users. With roles defined as a nested collection of
authorized actions on schema objects, security administration becomes more
efficient and manageable.
19. Savepoints and subtransactions. A subtransaction is a portion of a
transaction that is marked for potential rollback without affecting the
other parts of the transaction. By setting and releasing savepoints, an
application programmer is able to recover more easily from failed
subtransactions, thereby leading to more efficient code.
20. Distributed database management. Distributed database management
implies totally integrated, distributed data, under the coordinated control
of multiple heterogeneous database management systems. Because it
requires cooperating concurrency control managers, "standardized"
distributed database management may be some time away; however, emerging
standards for one-phase and two-phase commit protocols (see ISO/IEC 10026)
allow individual implementations to access remote data and present a
distributed view to their application programs.
21. Database export and import. Database export provides utilities for
unloading a database definition and the data contents of a database into
an external form, representable on various media, for the purpose of later
automated re-generation. Database import provides utilities for loading a
database definition and contents from an external source. Evolving
specifications hope to make a database exported from any conforming SQL
implementation importable into any other conforming SQL implementation.
22. Cursor sensitivity. The ability to specify a SENSITIVE option on a
cursor definition, so that the cursor will always "see" concurrent
modifications, in the same transaction, made to the underlying tables of
the cursor definition. This provides a measure of predictability, but
possibly with performance implications.
23. Asynchronous DML. Support for being able to name SQL statements so
that other work can be done while they are executing. The names provide a
mechanism for querying the status of outstanding statements.
A NIST special publication is under development that will discuss potential
future directions for Database Language SQL. All of the above features are
discussed further in that document.
16.9 DBMS performance. DBMS performance is often a critical factor
in a DBMS procurement. This standard is silent on the topic of performance.
The NIST SQL Test Suite (see Section 11.4) also makes no attempt to test the
performance aspects of a conforming system. Whenever performance
requirements are known in advance, they may be included as an integral part
of the procurement specification.
A DBMS may also provide additional data structures, such as indices, or
software, such as query optimizers, to enhance performance. User
requirements for monitoring database activity or tools for tuning database
performance should be specified explicitly.
Sometimes a procurement will specify a performance benchmark with agency
supplied, or publicly available, data and applications. If a procurement
specifies benchmarking, then the agency should consider that results of a
benchmark for conforming interfaces may not be comparable to results of a
benchmark for nonconforming interfaces. Consequently, procurement
terminology should specify that performance benchmarks shall be performed
with the actual interfaces to be used with agency applications. When
modification of the actual interface is required after a benchmark, for
example in the case of a delayed validation where correction of
nonconformities within a year is specified, procurement terminology should
specify that the performance benchmark be achieved with the corrected
interface.
16.10 Database security. Some database management systems must
operate in a highly secure environment that requires "trusted" database
access control beyond the GRANT and REVOKE privilege facilities and the VIEW
definition capabilities specified in this standard. Procurements for systems
that operate in these environments should include explicit additional
requirements that shall be supported. FIPS SQL contains specifications for
some Discretionary Access Control (DAC) mechanisms, but not Mandatory Access
Control (MAC) nor the associated security labels. For a definition of DAC or
MAC, refer to "Trusted Database Management System Interpretation of the
Trusted Computer System Evaluation Criteria" (NCSC-TG-021 Version 1,
"Lavender Book"), National Computer Security Center, April 1991.
16.11 System integration. In many cases a database or a database
management system must be integrated with other information processing
systems operating in the same environment. Examples of other systems might
include: the operating system, document processing systems, engineering
CAD/CAM systems, graphics systems, an information resource dictionary
system, statistical analysis systems, a transaction processing system, or an
artificial intelligence system. In addition, distributed data under the control
of different vendor's database management systems may require integration
into a coordinated global view through remote database access or open
distributed processing. Except for bindings to programming languages (see
Clause 12 and Clause 19 of ANSI X3.135-1992) and the Connection management
statements (see Clause 15 of ANSI X3.135-1992), such integration is beyond the
scope of this standard and, if desired, must be specified explicitly as part of
procurement requirements.
17. Where to Obtain Copies. Copies of this publication are for sale
by the National Technical Information Service, U.S. Department of Commerce,
Springfield, VA 22161, telephone 703-487-4650. (Sale of the included
specification document, ANSI X3.135-1992, is by arrangement with the American
National Standards Institute.) When ordering, refer to Federal Information
Processing Standards Publication 127-2 (FIPS PUB 127-2), Database Language
SQL. Payment may be made by check, money order, or deposit account.