FEDERAL INFORMATION PROCESSING STANDARDS PUBLICATION XXX (Draft - April 1994) Announcing the Standard for SQL Environments 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. SQL Environments (FIPS PUB XXX). 2. Category of Standard. Software Standard, Database. 3. Explanation. An SQL environment is an integrated data processing environment in which heterogeneous products, all supporting some aspect of the FIPS SQL standard (FIPS PUB 127), are able to communicate with one another and provide shared access to data and data operations and methods under appropriate security, integrity, and access control mechanisms. Some components in an SQL environment will be full-function SQL implementations that conform to an entire level of FIPS SQL and support all of its required clauses for schema definition, data manipulation, transaction management, integrity constraints, access control, and schema information. Other components in an SQL environment may be specialized data repositories, or graphical user interfaces and report writers, that support selected portions of the SQL standard and thereby provide a degree of integration between themselves and other products in the same SQL environment. This FIPS PUB is the beginning of a continuing effort to define appropriate conformance profiles that can be used by both vendors and users to specify exact requirements for how various products fit into an SQL environment. The emphasis in this first FIPS for SQL Environments is to specify general purpose, SQL external repository interface (SQL/ERI) profiles for non-SQL data repositories. These profiles specify how a subset of the SQL standard can be used to provide limited SQL access to legacy databases, or to support SQL gateways to specialized data managers such as Geographic Information Systems (GIS), full-text document management systems, or object database management systems. All of the profiles specified herein are for server-side products, that is, products that control persistent data and provide an interface for user access to that data. Subsequent versions of this FIPS PUB may specify SQL environment profiles for client-side products, that is, products that access data and then present that data in graphical or report-writer style to an end user, or process the data in some other way on behalf of the end user. 4. Approving Authority. Secretary of Commerce. 5. Maintenance Agency. Department of Commerce National Institute of Standards and Technology (Computer Systems Laboratory) 6. Cross Index. - FIPS PUB 127-2, Federal Information Processing Standards Publication - Database Language SQL, adoption of ANSI SQL (ANSI X3.135-1992) and ISO SQL (ISO/IEC 9075:1992) for Federal use, U.S. Department of Commerce, National Institute of Standards and Technology, June 2, 1993. - ANSI/ISO/IEC 9579, International Standard for Remote Database Access (RDA), Part 1: Generic RDA and Part 2: SQL Specialization, ISO/IEC 9579-1:1993 and ISO/IEC 9579-2:1993, published December, 1993. - ANSI/ISO/IEC CD 9075-3, (Committee Draft) International Standard for Database Language SQL, Part 3: Call Level Interface (SQL/CLI), JTC1 Committee Draft (CD), document SC21 N8436, February 1994. - ANSI/ISO/IEC CD 9075-4, (Committee Draft) International Standard for Database Language SQL, Part 4: Persistent Stored Modules (SQL/PSM), JTC1 Committee Draft (CD), document SC21 N8438, March 1994. 7. Related Documents. SQL Environment specifications will often depend upon existing Database Language SQL standards (see Cross Index above) and upon emerging SQL and SQL Multimedia standards. The following items identify formal ISO/IEC international standards projects for which preliminary specifications and base documents exist, but where the development effort has not yet reached a complete and stable stage (i.e. the Committe Draft (CD) stage). As these specifications mature and move through the standards processs, they can be referenced more reliably in procurement requirements. (Working Draft) Database Language SQL (SQL3) Part 1: Framework Part 2: Foundation -- including Abstract Data Types and Object SQL Part 3: Call Level Interface -- extensions to ISO/IEC CD 9075-3 identified above. Part 4: Persistent Stored Modules -- extensions to ISO/IEC CD 9075-4 identified above. Part 5: Language Bindings -- extensions to the binding clauses of ISO/IEC 9075:1992. Part 6: Encompassing Transactions -- to support X/Open XA-interface. (Working Draft) SQL Multimedia (SQL/MM) Part 1: Framework and General Purpose Facilities Part 2: Full Text Part 3: Spatial Other Parts: Reserved for other SQL/MM sub-projects with no current base document (e.g., images, photographs, motion pictures, sound, music, video, etc.). For information on the current status of the above Working Drafts, contact NIST personnel working on SQL Standardization at 301-975-3251. For document references to the above and for additional related documents, see the References section of the SQL/ERI Server Profiles specification. 8. Objective. The primary objective of this FIPS PUB for SQL Environments is to specify SQL profiles that can be used by Federal departments and agencies to support integration of legacy databases and other non-SQL data repositories into an SQL environment. The intent is to provide a high level of control over a diverse collection of legacy or specialized data resources. An SQL environment allows an organization to obtain many of the advantages of SQL without requiring a large, complex, and error-prone conversion effort; instead, the organization can evolve, in a controlled manner, to a new environment. 9. Applicability This standard is applicable in any situation where it is desirable to integrate a client-side productivity tool or a server-side data repository into an SQL environment. It is a non-mandatory standard that may be invoked on a case-by- case basis subject to the integration objectives of the procuring department or agency. It is particularly suitable for specifying limited SQL interfaces to legacy databases or to specialized data repositories not under the control of a full- function SQL database management system. It can be used along with other procurement information to specify SQL interface requirements for a wide range of data management procurements. One special area of application envisioned for this standard is Electronic Commerce, a National Challenge Application area of the National Information Infrastructure. The primary objective of Electronic Commerce is to integrate communications, data management, and security services in a distributed processing environment, thereby allowing business applications within different organizations to interoperate and exchange information automatically. At the data management level, electronic commerce requires a logically integrated database of diverse data stored in geographically separated data banks under the management and control of heterogeneous database management systems. An over- riding requirement is that these diverse data managers be able to communicate with one another and provide shared access to data and data operations and methods under appropriate security, integrity, and access control mechanisms. FIPS SQL provides a powerful database language for data definition, data manipulation, and integrity management to satisfy many of these requirements. It is unrealistic to expect that every data manager involved in electronic commerce will conform to even the Entry SQL level of the FIPS SQL standard; however, it is not unrealistic to require that they support a limited SQL interface, even a read-only interface, provided by one of the SQL/ERI Server profiles. New procurements to add components to the National Information Infrastructure, or to upgrade existing components, can define the necessary SQL schemas and point to appropriate SQL/ERI Server profiles as procurement requirements. This standard may also be applicable, on a case-by-case basis, in many of the following areas: Legacy databases Full-Text document databases Geographic Information Systems Bibliographic information retrieval Object database interfaces Federal data distribution Operating system file interface Open system directory interface Electronic mail repositories CASE tool repositories XBase repositories C++ sequence class repositories Object Request Broker interface repository Real-time database interface Internet file repositories Further detail on each of these potential application areas can be found in Section 8, "Applicability", of the FIPS specification for SQL Environments. 10. Specifications. See the Specifications for SQL Environments - SQL External Repository Interface (SQL/ERI) - Server Profiles (affixed). 11. Implementation. Implementation of this standard involves four areas of consideration: the effective date, acquisition of conforming implementations, interpretation, and validation. 11.1 Effective date. This publication is effective immediately upon publication. Since it is a non-mandatory specification, based on the established FIPS SQL standard, and used at the discretion of individual Federal procurements, no transitional period or delayed effective date is necessary. 11.2 Acquisition. All conforming implementations of a specific SQL/ERI profile will support some aspects of the FIPS SQL standard. However, such implementations will not normally be full function database management systems and conformance will often be dependent upon SQL schema definitions and other requirements provided as part of each individual procurement. In most cases, a procurement will not be able to simply point to an SQL/ERI profile and demand conformance to it. Instead, successful procurements will normally use an appropriate SQL/ERI profile, together with an application-specific schema definition, as one aspect of overall procurement requirements. In many cases, vendors of products that provide a limited SQL interface will define their interfaces in terms of a fixed SQL schema definition. In those cases, procurements can point to the vendor-provided schema definition and to an appropriate SQL/ERI profile as a procurement requirement. In some cases, especially in those situations where schema definitions and requirements are not known in advance, a request for a proposal (RFP) may require that an SQL schema, and adherence to one of the SQL/ERI Server profiles, be presented as part of the response proposal. 11.3 Interpretation. NIST provides for the resolution of questions regarding specifications and requirements of the FIPS for SQL Environments, and issues official interpretations as needed. Procedures for interpretations are specified in FIPS PUB 29-2. All questions about the interpretation of FIPS SQL Environments should be addressed to: Director Computer Systems Laboratory ATTN: SQL Environments National Institute of Standards and Technology Gaithersburg, MD 20899 Telephone: (301) 975-2833 11.4 Validation. Implementations of the FIPS for SQL Environments may be validated in accordance with NIST Computer Systems Laboratory (CSL) validation procedures for FIPS SQL (FIPS PUB 127). 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 may select the appropriate validation option and may specify appropriate time frames for validation and correction of nonconformities. Implementations may be evaluated using the NIST SQL Test Suite, a suite of automated validation tests for SQL implementations. Although this test suite was designed to test conformance of full-function SQL database management systems, it can be modified to accommodate testing of SQL/ERI Server implementations. 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). Current information about the NIST SQL Validation Service and the status of validation testing for SQL Environments 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. 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. When ordering, refer to Federal Information Processing Standards Publication XXX (FIPS PUB XXX), SQL Environments. Payment may be made by check, money order, or deposit account. FEDERAL INFORMATION PROCESSING STANDARDS PUBLICATION XXX Specifications for SQL Environments SQL External Repository Interface (SQL/ERI) Server Profiles U.S. DEPARTMENT OF COMMERCE National Institute of Standards and Technology Computer Systems Laboratory Information Systems Engineering Division Gaithersburg, MD 20899 Table of Contents Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . v 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 Database Language SQL. . . . . . . . . . . . . . . . . 1 1.2 SQL environment. . . . . . . . . . . . . . . . . . . . 2 2. Data Integration Architecture. . . . . . . . . . . . . . . 4 3. SQL External Repository Interface (SQL/ERI) . . . . . . . . . . . . . . . . . . . . 6 4. SQL/ERI Leveling Rules . . . . . . . . . . . . . . . . . . 7 4.1 Minimal Schema Definition Language . . . . . . . . . . 8 4.2 Minimal Data Manipulation Language . . . . . . . . . . 9 5. Optional Extensions. . . . . . . . . . . . . . . . . . . . 10 5.1 SQL'92 features . . . . . . . . . . . . . . . . . . . 10 5.2 Stored procedures and callable routines (SQL/PSM) . . 10 5.3 SQL multimedia class library (SQL/MM) . . . . . . . . 11 5.4 Abstract data types and methods . . . . . . . . . . . 11 5.5 Object data management . . . . . . . . . . . . . . . 12 6. SQL Binding Alternatives . . . . . . . . . . . . . . . . . 12 6.1 SQL Module processor . . . . . . . . . . . . . . . . 12 6.2 Embedded SQL preprocessor . . . . . . . . . . . . . . 12 6.3 Direct invocation of SQL statements . . . . . . . . . 13 6.4 SQL call level interface (SQL/CLI) . . . . . . . . . 14 6.5 RDA/SQL-Server interface . . . . . . . . . . . . . . 16 7. SQL/ERI Server Profiles. . . . . . . . . . . . . . . . . . 18 7.1 SQL/ERI Read-Only Server . . . . . . . . . . . . . . . 21 7.2 SQL/ERI Read-Write Server . . . . . . . . . . . . . . 25 8. Applicability. . . . . . . . . . . . . . . . . . . . . . . 29 8.1 Legacy databases . . . . . . . . . . . . . . . . . . . 30 8.2 Full-Text document databases . . . . . . . . . . . . . 30 8.3 Geographic Information Systems . . . . . . . . . . . . 30 8.4 Bibliographic information retrieval. . . . . . . . . . 30 8.5 Object database interfaces. . . . . . . . . . . . . . . 31 8.6 Federal data distribution . . . . . . . . . . . . . . . 31 8.7 Operating system file interface . . . . . . . . . . . . 32 8.8 Open system directory interface . . . . . . . . . . . . 32 8.9 Electronic mail repositories. . . . . . . . . . . . . . 32 8.10 CASE tool repositories . . . . . . . . . . . . . . . . 33 8.11 XBase repositories . . . . . . . . . . . . . . . . . . 33 8.12 C++ sequence class repositories. . . . . . . . . . . . 33 8.13 Object Request Broker repositories . . . . . . . . . . 33 8.14 Real-Time database interface . . . . . . . . . . . . . 34 8.15 Internet file repositories . . . . . . . . . . . . . . 34 9. Conformance Testing. . . . . . . . . . . . . . . . . . . . 34 9.1 NIST SQL Test Suite . . . . . . . . . . . . . . . . . . 35 9.2 Testing SQL/ERI implementations . . . . . . . . . . . . 37 10. Procurement Considerations. . . . . . . . . . . . . . . . 38 10.1 Client-side products . . . . . . . . . . . . . . . . . 38 10.2 SQL/ERI Clients. . . . . . . . . . . . . . . . . . . . 39 10.3 SQL/ERI Servers. . . . . . . . . . . . . . . . . . . . 40 References . . . . . . . . . . . . . . . . . . . . . . . . . . 43 FIPS PUBLICATION XXX Specification for SQL Environments - SQL External Repository Interface (SQL/ERI) - Server Profiles Abstract An SQL environment is an integrated data processing environment in which heterogeneous products, all supporting some aspect of the FIPS SQL standard (FIPS PUB 127), are able to communicate with one another and provide shared access to data and data operations and methods under appropriate security, integrity, and access control mechanisms. Some components in an SQL environment will be full-function SQL implementations that conform to an entire level of FIPS SQL and support all of its required clauses for schema definition, data manipulation, transaction management, integrity constraints, access control, and schema information. Other components in an SQL environment may be specialized data repositories, or graphical user interfaces and report writers, that support selected portions of the SQL standard and thereby provide a degree of integration between themselves and other products in the same SQL environment. This FIPS PUB is the beginning of a continuing effort to define appropriate conformance profiles that can be used by both vendors and users to specify exact requirements for how various products fit into an SQL environment. The emphasis in this first publication is to specify general purpose, SQL external repository interface (SQL/ERI) server profiles for non-SQL data repositories. The SQL/ERI interface supports integration of heterogeneous, non-SQL data repositories into an SQL environment while retaining full use of the SQL language for user applications. All of the profiles specified herein are for server-side products, that is, products that control persistent data and provide a standard interface for accessing that data. Subsequent versions of this FIPS PUB may specify profiles for client- side products in an SQL environment, that is, products that access data and then present that data in graphical or report-writer style to an end user, or process the data in some other way on behalf of the end user. To make it easier to specify integration among heterogeneous, non-SQL data models, this specification defines a new minimal level of the SQL language that can be supported by various non-SQL implementations. Non-SQL data repositories, such as Geographic Information Systems (GIS), full-text document management systems, or object database management systems, may use this minimal level, or one of the other levels specified in FIPS SQL, to describe their capabilities as SQL/ERI Servers. Two major SQL/ERI Server profiles are specified: read-only and read-write. This specification may also be used as a starting point for defining International Standardized Profiles (ISPs) for SQL language access to non-SQL data repositories. Keywords: (CLI; conformance; database; ERI; FIPS; interface; Internet; ISP; multimedia; object; profile; PSM; relational; repository; standard; SQL; testing) Electronic Availability: An electronic version of this specification is available using Internet anonymous FTP protocols. Internet Node: speckle.ncsl.nist.gov User name: ftp Password: <YourName>@<YourInternetAddress> Change Directory to: isowg3/FIPSdocs Get File: fipseri.ps -- Postscript version An ASCII text version of this document is also available in the same directory as above, but with file name "fipseri.txt". You will receive some sign-on messages. If these messages confuse your FTP client, you can turn them off when you sign-on again by preceding your password with a hyphen (-). 1. Introduction An SQL environment is an integrated data processing environment in which heterogeneous products, all supporting some aspect of the FIPS SQL standard (FIPS PUB 127), are able to communicate with one another and provide shared access to data and data operations and methods under appropriate security, integrity, and access control mechanisms. Some components in an SQL environment will be full- function SQL implementations that conform to an entire level of FIPS SQL and support all of its required clauses for schema definition, data manipulation, transaction management, integrity constraints, access control, and schema information. Other components in an SQL environment may be specialized data repositories, or graphical user interfaces and report writers, that support selected portions of the SQL standard and thereby provide a degree of integration between themselves and other products in the same SQL environment. The intent is to provide a high level of control over a diverse collection of legacy or specialized data resources. An SQL environment allows an organization to obtain many of the advantages of SQL without requiring a large, complex, and error-prone conversion effort; instead, the organization can evolve, in a controlled manner, to a new environment. This FIPS PUB is the beginning of a continuing effort to define appropriate conformance profiles that can be used by both vendors and users to specify exact requirements for how various products fit into an SQL environment. The emphasis in this first specification is to specify general purpose, SQL external repository interface (SQL/ERI) profiles for non-SQL data repositories. These profiles specify how a subset of the SQL standard can be used to provide limited SQL access to legacy databases, or to support SQL gateways to specialized data managers such as Geographic Information Systems (GIS), full-text document management systems, or object database management systems. All of the profiles specified herein are for server-side products, that is, products that control persistent data and provide an interface for user access to that data. Subsequent versions of this FIPS PUB may specify SQL environment profiles for client-side products, that is, products that access data and then present that data in graphical or report- writer style to an end user, or process the data in some other way on behalf of the end user. 1.1 Database Language SQL Database Language SQL is enjoying success as an effective International Standard for customers and implementors of full-function, SQL-compliant database management systems that support the relational data model. Many vendors have implemented an entire level of the SQL'92 standard [8] and offer products that conform to all of its clauses for schema definition, data manipulation, transaction management, integrity constraints, access control, and schema information. Other vendors have implemented selected portions of the SQL standard, most often read- only data retrieval or very restricted data manipulation, in order to provide SQL access to legacy databases or to support SQL gateways to specialized data managers. The first SQL standard, in 1986, provided basic language constructs for defining and manipulating tables of data; a revision in 1989 added language extensions for referential integrity and generalized integrity constraints; and the most recent revision in 1992 provides new facilities for schema manipulation and data administration, as well as substantial enhancements for data definition and data manipulation. A companion standard for Remote Database Access (RDA) [9], completed in 1993, provides the basic services and protocols for SQL interoperability in a distributed, wide area client/server environment. A companion standard for an SQL Call Level Interface (SQL/CLI) [10], registered as a draft standard in February 1994, provides a language binding appropriate for third-party software developers in a local client/server environment. An extension to SQL for definition and invocation of persistent stored procedures and for SQL flow of control statements, named Persistent SQL Modules (SQL/PSM) [11] and registered as a draft standard in March 1994, permits user definition of procedural program blocks that can then be optimized at multiple SQL servers and invoked as needed, thereby reducing both processing time and communications volume. Features of the SQL'92 standard are discussed in References [1], [2], and [15]. Proposed features of the next SQL revision, often called SQL3, are discussed in [4] and [5]. SQL is particularly appropriate for the definition and management of data that is structured into repeated occurrences having common data structure definitions. SQL provides a high-level query and update language for set-at-a-time retrieval and update operations, as well as required database management functions for schema and view definition, integrity constraints, schema manipulation, and access control. SQL provides a data manipulation language that is mathematically sound and based on a first-order predicate calculus. SQL is self-describing in the sense that all schema information is queryable through a set of catalog tables called the Information Schema. SQL is becoming the language of choice for many user productivity tools -- such tools communicate with a human user through a graphical user interface and then formulate SQL queries to communicate with underlying persistent data repositories. Formal language profiles for partial SQL conformance are necessary because the user productivity tools and the underlying data managers may be purchased at different times from different vendors and are unlikely to even know of one another's existence. A recognized profile specification will allow limited portability and interoperability, even in otherwise non-homogeneous environments. 1.2 SQL environment Many applications require a logically integrated database of diverse data (e.g. documents, graphics, spatial data, alphanumeric records, complex objects, images, voice, video) stored in geographically separated data banks under the management and control of heterogeneous data management systems. An over-riding requirement is that these various data managers be able to communicate with one another and provide shared access to data and data operations and methods under appropriate security, integrity, and access control mechanisms. Much of this source data may be stored in simple file systems, legacy data management systems, or very specialized data repositories that satisfy only a small percentage of these data management requirements. The objective of an SQL environment is to logically integrate these diverse data repositories "as if" they were under the control of a single SQL data manager. User presentation tools, such as graphical user interfaces or report writers, can then use this SQL interface to collect data from various sources, merge it together under ad hoc join conditions, and present it to the user in a pleasing graphical format. A properly functioning SQL environment will use the SQL language to describe this data using standardized facilities, integrate it into a single federated collection, enforce any integrity or access control constraints, and make it available as a logical whole to sophisticated user productivity or presentation tools. These client-side tools can then use the full power and flexibility of SQL for data retrieval and manipulation. The underlying data managers may implement non- relational data models and thus may have difficulty supporting SQL requirements for nested subqueries, multi-table joins, derived columns in a Select list, referential integrity, or other relational model features. On the other hand, they may offer advanced features of other data models that are rarely supported by relational implementations. With emerging features in the SQL language for user- defined abstract data types (ADTs), stored procedures, encapsulation, polymorphism, and other object management facilities, these diverse data repositories can be described as specialized SQL repositories and accessed using already standardized SQL binding alternatives identified in Section 6. With this approach, SQL may prove to be as successful as an integrator of heterogeneous data repositories as it has been as a language interface to the relational data model. The SQL language can meet these integration objectives if non-SQL implementations provide a "simple" SQL interface to their data and services, and if full-function SQL implementations use that simple interface to provide full- function services to end user tools. This specification defines standard profiles for such "simple" SQL interfaces, thereby making it easier to specify and support the desired integration. An SQL environment depends upon the data integration architecture presented in Section 2. A simplification of this architecture is given in the figure below. Components in the architecture consist of Application Processors, Full-Funtion SQL Processors, and Non-SQL Processors. The Application Processors represent client-side products in an SQL environment that desire the ability to use the full power and flexibility of the SQL language when accessing data from a database. The Non-SQL Processors are server-side products representing data managers that control much of the data that is to be integrated and made available to the Application Processors. The Full-Function SQL Processors serve a dual role, both as server-side data managers and as "integrators" that make it possible for Application Processors to access data managed by the Non-SQL Processors in a standard manner. The interface between an Application Processor and an SQL Processor is a full-function SQL interface, whereas the interface between an SQL Processor and a Non-SQL Processor is one of the more limited SQL/ERI interfaces described in Section 3. All interfaces use one of the binding styles identified in Section 6. It is the integrator's role to provide access to all data as if it were managed by a full-function SQL processor. Section 4 describes existing conformance levels of the SQL language and then defines a new, minimal SQL language level that can be used to define conformance alternatives for SQL/ERI Servers. Section 5 identifies various higher level SQL features and data types that an SQL/ERI Server may support. In this way, an SQL/ERI Server can present the features of a different data model to an SQL application by describing them as SQL abstract data types, methods, procedures, or other callable routines. Section 7 specifies two major SQL/ERI Server profiles -- a read-only profile for static data repositories, and a read-write profile that allows SQL Update, Insert, and Delete statements. The read-write profile also provides an option that allows creation of SQL tables and views. Section 8 identifies a number of application areas for which SQL/ERI Server profiles may be applicable. Section 9 describes how the NIST SQL Test Suite might be modified to provide conformance testing for SQL/ERI Servers and Section 10 identifies some procurement considerations for users that intend to use this FIPS PUB for SQL Evironments to aide in the specification of procurement requirements. The SQL/ERI profiles specified herein may be used by customers and vendors of non-SQL processors to validate claims of conformance for partial support of the SQL language. If these SQL/ERI Server profiles prove to be helpful for integrating non-SQL data repositories into SQL environments, then later versions of this FIPS PUB may specify profiles for SQL/ERI Clients as enhancements to full-function SQL implementations and profiles for other client-side products in an SQL environment. This specification may also be used as a starting point for defining International Standardized Profiles (ISPs) [14] for SQL language access to non-SQL data repositories. 2. Data Integration Architecture This FIPS for SQL Environments envisions an integrated data processing environment in which SQL and non-SQL processors are able to comunicate with each other and provide shared access to data and data operations and methods under appropriate security, integrity, and access control mechanisms. Application processors will then have protected access to all data using the full power and flexibility of Database Language SQL. Standard communication among cooperating systems is possible at the present time using either OSI protocols [16] or Internet Society protocols [7]. Efforts are underway within both of these arenas to provide cross-protocol mappings for interoperability. Application services in both protocol environments provide for association control, file transfer, virtual terminal, and electronic mail. Future versions will contain extensions of these facilities as well as enhancements for remote database access (RDA), document management, and electronic data interchange (EDI). Near-term extensions to these protocols should make it possible for user-defined objects at various remote sites to communicate their existence and provide access to their methods to application processors. Objects at remote sites may be able to "show themselves" to users at local workstations by using emerging specifications and standards for graphical user interfaces. The RDA component of both OSI and Internet Society communication protocols provides the basis of distributed access to remote data repositories and "standard" access to the data they manage. With implementation of an External Repository Interface (ERI), discussed in Section 3 below, it is possible for non-SQL data repositories to be "self-describing" in terms of SQL facilities so that they can be accessed and manipulated by all other sites using standard SQL language and RDA protocols. With longer-term emerging data management standards that support object-oriented and knowledge-based features, an ERI interface can evolve into a "seamless" integration of complex, structured data and supporting application services. Begin with an "Application Processor" that wishes to communicate with and access data at a number of different data repositories, some local and some remote. The Application Processor could use existing communication protocols to connect to external processes or transfer files, but it would prefer not to have to manage its own communications links or worry about integrity, access control, remote transactions, or any number of different data manipulation functions; instead, it would rather communicate with a single, "familiar" data manager for both schema data and actual data occurrences. The "familiar" data manager could then connect itself to remote sites and access the desired data and data definitions, returning them to the accessing processor in a standard format. A remote object would still be able to use windowing protocols to "show itself" to the accessing process or use file transfer protocols to transfer objects or object definitions not under the control of the communicating data managers. This architecture assumes the existence of any number of heterogeneous data repositories, some at the local site and some at distributed sites. It also assumes a full-function SQL processor at all sites, but not necessarily as the manager of the most important data. The non-SQL processors may control the maps, documents, graphics images, or complex engineering structures that the Application Processor wishes to access. The local SQL processor conforms to Database Language SQL and has two integrated client components, one conforming to the RDA/SQL Specialization and one conforming to the SQL/ERI interface proposed in Section 3 of this specification. Communications among the three SQL components are likely to be proprietary. The local site may have any number of non-SQL data repositories each controlled by a non-SQL Processor having a component that conforms to the SQL/ERI interface. Communications among the internal components of the non-SQL Processor are also proprietary. The local site has a proprietary local procedure calling mechanism and a proprietary local inter-process communications capability. Using these proprietary mechanisms and one of the standard local binding styles identified in Section 6 (e.g. SQL/CLI), the Application Processor issues standard SQL calls to the local full-function SQL processor, and the SQL/ERI Client component of the SQL processor is able to communicate, using an ERI specified subset of standard SQL, with the SQL/ERI Server of the non-SQL Processor. The local site is connected to one or more remote sites via a standard OSI or IETF communications network ([16], [7]) that allows "messages" or "calls" to be exchanged among processes. Some messages may be sent directly from the Application Processor to processes or file stores at the remote site, but ideally, some local repository manager makes a connection and sends messages on behalf of the Application Processor. The Generic RDA and RDA/SQL Specialization standards [9] specify protocols that allow the RDA Client component of the local SQL processor to send SQL statements to the RDA Server component of a remote SQL processor, or the SQL/ERI Server component of any Non-SQL processor, and receive data in return. All protocols and data are defined in the RDA standards and are transmitted as ASN.1 (ISO 8825) packages. If the Application Processor is operating, interactively, on behalf of a human user, then any of the data repositories may use a local graphical user interface (GUI), or non-local windowing protocols, to present status information or a "menu of choices" to the human user. In this way an interactive "browsing" or "navigational" capability is provided to the human user without losing the standard RDA/SQL protocol communications used by the non-human processors. At the remote site there exists a full-function SQL Processor as well as any number of non-SQL Processors. Components of the SQL Processor conform to the SQL and RDA standards, and satisfy the proposed SQL/ERI Client requirements. Each non-SQL Processor has a component that conforms to the SQL/ERI Server specification. The remote site handles internal communications and procedure calls in the same proprietary manner as does the local site. At the present time the RDA standards specify interchange protocols for transmitting records of data from a server site to a client site, provided that the data items in the records are either numbers or character strings. Near term RDA follow-on specifications will extend the data types handled to all of those specified in the SQL'92 standard [8], i.e. fixed and variable length character strings, fixed and variable length bit strings, fixed and floating point numerics, dates, times, timestamps, and intervals. Later RDA follow-on specifications will provide interchange mechanisms, in terms of ASN.1 elements, for the user defined abstract data types (ADTs) specified in the emerging SQL3 working draft [12]. RDA protocols do not by themselves provide interchange mechanisms for other data objects, so interchange standards for images, motion pictures, maps, topologies, or other complex objects will remain critical for transmitting object instances among various sites. SQL and RDA provide the basis for standardized communication. An SQL external repository interface (SQL/ERI) makes it possible for non-SQL data repositories to share their data with user applications. With emerging SQL3 enhancements for object-oriented and knowledge-based data management and emerging RDA extensions for distributed database, the ERI can evolve to support "seamless" data integration. 3. SQL External Repository Interface (SQL/ERI) Applications require access to multiple data repositories, many of which are managed by non-SQL processors. It is not unusual for applications to require data from the operating system, from graphics repositories, from CD-ROM's, from CAD/CAM databases, or from libraries of cataloged data. From a user's perspective, it is unrealistic to expect every data repository to be able to handle even the lowest "Entry SQL" queries. For example, who would expect an electronic mail system to handle SQL joins and subqueries over its message headers? Yet, every e-mail system is a data repository with information that applications sometimes require. What is needed is an interface specification that enables a non-SQL data repository to make certain external views available to SQL processors and for those SQL processors to, in turn, allow the full power and flexibility of the SQL query language over those views to the end user. It makes sense to specify a "client" and a "server" interface to external repositories so that non-SQL systems can act as servers to SQL requests for data. It makes sense to develop the conformance requirements needed for non-SQL systems to provide SQL views of their data and for SQL systems to provide full function SQL operations over that data to SQL users. This interface is defined to be the SQL External Repository Interface (SQL/ERI). It consists of a "Server" part and a "Client" part. Non-SQL systems may claim conformance as SQL/ERI Servers and full-function SQL systems may claim conformance as SQL/ERI Clients. This first FIPS PUB for SQL Environments only addresses conformance criteria for SQL/ERI Servers; subsequent versions may address conformance criteria for SQL/ERI Clients. A wide range of non-SQL products and services might be able to claim conformance as SQL/ERI Servers. They could provide high level abstract data types with application-specific methods and operations. They would be required to evaluate "simple" SQL queries over individual tables defined in the schema. The exact meaning of "simple" is specified in the SQL/ERI profile specifications at different levels of service. The SQL processor can then think of the external repository as an SQL-environment that can be connected to, but that can only respond to whatever SQL statements are specified for that level of service. If an SQL system claims conformance as an SQL/ERI Client, then it agrees to provide SQL functionality, at whatever level of the SQL standard it conforms to, over any table provided by an SQL/ERI Server. This may require that the SQL system automatically create a temporary table whenever the external view is referenced in a query, and then populate that table using the limited capabilities provided by the "server" interface so that it can guarantee the ability to perform nested queries, or searched updates and deletes, or recursive queries, or whatever is requested by its application. With the SQL/ERI "client" and "server" definitions, non-SQL systems would be able to provide services to SQL-based applications even though they might not be able to provide the expected query flexibility, access control, concurrency control, or updatability required of a full-function SQL data manager. Full-function SQL processors could provide these expected data management facilities and, in addition, provide user access to data repositories not otherwise accessible via the SQL language. Section 2 describes how SQL/ERI profiles might be used to provide uniform and integrated application access to both SQL and non-SQL data at local and remote sites. The SQL/ERI profile specifications provide several different conformance levels for non-SQL systems. A conforming SQL/ERI server is required to be "self- describing" as if it were a separate SQL-environment. It is required to supply an SQL Information Schema describing all available tables and the equivalent SQL data types for its columns. If the ERI Server provides new abstract data types not defined in the SQL standard, then it is also required to provide an SQL ADT interface definition as specified in the emerging SQL3 standard [12]. What is needed to make the above scenario feasible is an SQL/ERI Server profile, so that these non-SQL data repositories can provide a simple, external interface, accessible from full-function SQL systems. Sophisticated applications can then be built without the need to "understand" the non-standard data access methods unique to each repository. Instead, full-function SQL systems could be used as intermediaries. The SQL "client" could connect itself to the non-SQL "server" using the standard SQL/ERI interface; the application could then use the full power and flexibility of the SQL data manipulation language, as well as the system provided special access methods, to select and mange the data as if it were maintained in an SQL database. Section 7 of this FIPS PUB provides the necessary SQL/ERI Server profiles to get this integration scenario started. 4. SQL/ERI Leveling Rules The SQL'92 standard [8] specifies three levels of conformance for SQL language and SQL implementations: Entry SQL, Intermediate SQL, and Full SQL. In addition, FIPS SQL [3] defines a fourth level of conformance, called Transitional SQL, approximately halfway 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. It is intended for use in U.S. federal government procurements in the interim period before Intermediate SQL implementations are readily available. All of these existing SQL conformance levels require the facilities of a full-function SQL processor, i.e. schema definition, data manipulation, transaction management, and access control. New conformance alternatives are needed for non-SQL processors that wish to claim conformance to only a portion of the SQL language. Such processors may be able to provide very sophisticated data retrieval capabilities, but may not be able to allow update of data instances or creation of new schema objects. Since existing SQL levels cut across both the schema definition and data manipulation facilities in the SQL standard, it is necessary to consider each SQL level separately as applied to schema definition or data manipulation. Consider the SQL leveling rules separately for schema definition and data manipulation. Use the term Schema Definition Language (SDL) to identify SQL language features defined in Clause 11, "Schema definition and manipulation", in the SQL'92 standard, and use the term Data Manipulation Language (DML) to identify SQL language features defined in Clause 13, "Data Manipulation". One is then able to discuss the following alternatives for partial support of the SQL language: Entry DML Entry SDL Transitional DML Transitional SDL Intermediate DML Intermediate SDL Full DML Full SDL There is an additional requirement to specify new Minimal DML and Minimal SDL levels to be used exclusively in the definition of SQL/ERI Server profiles. These Minimal definitions are intended for use only by non-SQL processors and cannot be used to claim conformance to the SQL standard as an SQL processor. Minimal DML will support SQL operations on a single table, with no joins and no subqueries, and with severe limitations on derived columns and set functions. Minimal SDL will support specification of only the simplest views and the simplest SQL tables, using only character string, integer, decimal, and real data types, with no table constraints and only very limited column constraints. Levels of conformance in the SQL standard are specified by Leveling Rules in each clause of the specification. Using the style of the SQL standard, the following subsections specify restrictions that apply for Minimal SDL and Minimal DML in addition to any restrictions for Entry SQL. All Clause and Subclause references, and all syntactic terms delimited by angle brackets (i.e. <...>) are from SQL'92 [8]. 4.1 Minimal Schema Definition Language 1.A <schema element> contained in a <schema definition> shall be a <table definition> or a <view definition>. 2.A <table element> contained in a <table definition> shall be a <column definition>. 3.A <column constraint> shall not be a <unique specification>, a <references specification>, or a <check constraint definition>. A <column constraint> may only specify NOT NULL. 4.The <data type> of a <column definition> shall not specify NUMERIC, FLOAT, or DOUBLE PRECISION. A <column definition> may only specify DECIMAL, REAL, INTEGER, SMALLINT, and fixed length CHARACTER string <data type>s. 5.A <view definition> shall not specify WITH CHECK OPTION. 6.The <query expression> contained in a <view definition> shall satisfy the restrictions specified by the Minimal Data Manipulation Language leveling rules below. 4.2 Minimal Data Manipulation Language 1.A <query expression> shall be a <query specification>. 2.A <derived column> in the <select list> of a <query specification> shall be a <value expression> that is either a <column reference> or a <set function specification>, and the <derived column> shall not contain an <as clause>. 3.A <set function specification> that is a <derived column> in the <select list> of a <query specification> shall be either COUNT(*) or a <general set function> whose directly contained <value expression> is a <column reference>. 4.A <table expression> shall not contain a <group by clause> or a <having clause>. 5.The <from clause> contained in a <table expression> shall contain exactly one <table reference>, and that <table reference> shall be a single <table name> without an associated <correlation name>. A <table name> may be qualified to include a <schema name>. 6.A <search condition> contained in an <SQL data statement> shall not contain any <subquery>. Any <predicate> contained in a <search condition> shall be a <comparison predicate> without subqueries, a <between predicate>, a <like predicate>, a <null predicate>, or an <in predicate> whose <in predicate value> is a parenthesized list of <value specification>s. 7.A <row value constructor> contained in any <predicate> shall have exactly one <row value constructor element> that is a <value expression>. 8.A <value expression> shall be a <numeric value expression>, or a <string value expression> that is a <character primary>. 9.A <value expression primary> shall not be a <set function specification> or a <scalar subquery>. 10.A <numeric primary> shall not be a <numeric value function>. 11.A <character primary> shall not be a <character value function>. 12.A <sort key> in a <declare cursor> shall not be an <unsigned integer>. Note: Leveling Rule 2a of Subclause 13.8, "<insert statement>", is incorrect in that it should also allow a <null specification>. This is corrected in SQL Technical Corrigendum 1 [20]. 5. Optional Extensions An SQL/ERI Server will often support additional data types and SQL language facilities beyond those specified for the given level of service. This section identifies features in the SQL'92 standard, and emerging features in the SQL3 and SQL/MM specifications, that an SQL/ERI Server may support. Each of these items is an optional indication that must be explicitly declared by an SQL/ERI Server implementation before an application program can rely on its existence. An SQL/ERI Server that supports a Read-Only interface will support only the read- only aspects of each feature. Thus a non-SQL implementation may be able to define itself to an SQL client using very complex abstract data types (ADTs) and methods specified in SQL3, even though it does not allow creation or modification of such types. The SQL/ERI server will declare the accessing "signature" of such facilities in the Information Schema, so that an application can use the SQL/PSM routine and procedure calling mechanisms to access the data. This is how the very specialized data managers such as document management systems, geographic information systems, or CAD/CAM systems may make their specialized features available to SQL applications. 5.1 SQL'92 features The SQL conformance levels defined in Section 4 of this specification identify a broad level of capability for conforming SQL/ERI servers. In addition, it is sometimes desirable to identify other features specified in the SQL'92 standard [8] as either offered by a product or required by a specific procurement. Section 14 of FIPS SQL [3] identifies 83 features of the SQL'92 standard beyond the Entry SQL requirements. An SQL/ERI Server could identify which features are supported beyond its declared level of service by implementing the SQL_FEATURES table as specified in Section 15 of FIPS SQL. Implementation of the SQL_FEATURES table is a requirement for all SQL/ERI Servers that claim a base level of SQL data manipulation language support at the Intermediate DML level or above. A procurement could also use this list to identify, unambiguously, those SQL features beyond the identified conformance level that are either required or desirable for that procurement. FIPS SQL also identifies default minimum requirements for the precision, size, or number of occurrences of database constructs (see section 16.6 of [3]). Unless otherwise specified in a procurement, the Entry Value sizing limits apply to all Entry SQL or Transitional SQL features and the Intermediate Value sizing limits apply to all Intermediate SQL or Full SQL features. An SQL/ERI Server could identify its own sizing limits by implementing the SQL_SIZING table as specified in Section 15 of FIPS SQL. Implementation of the SQL_SIZING table is a requirement for all SQL/ERI Servers that claim a base level of SQL data manipulation language support at the Intermediate DML level or above. A procurement is responsible for identifying its own sizing limits on all required features, but in the absence of an explicit declaration, the default minimum limits apply for that procurement. 5.2 Stored procedures and callable routines (SQL/PSM) An emerging new part of the SQL standard for Persistent Stored Modules (SQL/PSM) was registered as an ISO/IEC Committee Draft (CD) in March 1994 (see [11]). Although this specification will not reach formal standardization until at least late 1995 or early 1996, it should be sufficiently complete and stable to justify its careful use in procurements before that date. The intent of SQL/PSM is to make SQL a computationally complete programming language with variables, procedures, functions, and flow-of-control statements. In particular, packages of SQL procedures called modules may be stored at server nodes in a communications network with only a procedure call needed to invoke a desired action. The advantage is that modules may be stored persistently in the database, subject to SQL access control and integrity management, thereby allowing a reduction of comunications overhead along with optimization and other performance efficiencies at the server site. A major advantage of the SQL/PSM is that non-SQL data managers will be able to present their special features to applications in an SQL environment as callable SQL functions or procedures. The only requirement is that the calling syntax be standard SQL syntax as far as the calling application is concerned and that the parameters be defined as SQL data types. The content body of the functions and procedures may not be visible to the end user and thus may be implementation- dependent. The SQL/ERI Server can use the SQL Information Schema catalog tables to make known to the users exactly which functions and procedures are available for their use. 5.3 SQL multimedia class library (SQL/MM) A new ISO/IEC international standardization project for development of an SQL class library for multimedia applications was approved in early 1993. This new standardization activity, named SQL Multimedia (SQL/MM), will specify packages of SQL abstract data type (ADT) definitions using the facilities for ADT specification and invocation provided in the emerging SQL3 specification [12]. SQL/MM intends to standardize class libraries for science and engineering, full-text and document processing, and methods for the management of multimedia objects such as image, sound, animation, music, and video. It will likely provide an SQL language binding for multimedia objects defined by other JTC1 standardization bodies (e.g. SC18 for documents, SC24 for images, and SC29 for photographs and motion pictures). The project plan for SQL/MM indicates that it will be a multi-part standard consisting of an evolving number of parts. Part 1 will be a Framework that specifies how the other parts are to be constructed. The Framework also specifies General Purpose Facilities such as numeric functions, complex numbers, or data structures that are common to multiple other parts of the SQL/MM standard. Each of the other parts will be devoted to a specific SQL application package. Even though this project is just getting started, initial base documents exist for Part 1: Framework and General Purpose Facilities, Part 2: Full Text, and Part 3: Spatial (see [13]). As the different components of the SQL/MM specification reach CD and DIS stability, an SQL/ERI Server could claim support for specific features. 5.4 Abstract data types and methods The emerging SQL3 specification contains a number of data abstraction facilities. For example, see Clauses 4.11, "Abstract data types", 11.47, "<abstract data type definition>", and 11.48, "<abstract data type body>", of the March, 1994, version of [12]. If data abstraction is an inherent requirement of an SQL/ERI Server, then it could define its Abstract Data Types and make them available to SQL applications using these definitional mechanisms. As the data abstraction facilities of the SQL3 specification reach CD and DIS stability, an SQL/ERI Server could use them with more confidence to permanently define its abstract data types and methods. A major advantage of these ADT features combined with the SQL/PSM identified above is that non-SQL data managers will be able to present their application- specific ADTs to applications in an SQL environment. The signature of such ADTs would be available in the Information Schema provided by each SQL/ERI Server, and the special methods on each ADT would be callable as SQL functions or procedures. The only requirement is that the calling syntax be standard SQL syntax as far as the calling application is concerned and that the parameters be SQL data types or known ADT types provided by the SQL/ERI Server. The abstract data type body of usable ADTs may not be visible to the end user and thus may be implementation- dependent. The SQL/ERI Server can use the SQL Information Schema catalog tables to make known to the users exactly which ADTs and associated methods are available for their use. 5.5 Object data management The emerging SQL3 specification contains facilities for defining and referencing object identifiers. For example, see Clauses 4.9 "Object identifier type", 11.48 "<abstract data type body>" WITH OID option, and 6.5 "<attribute reference>", of the March, 1994, version of [12]. If object identity is an inherent requirement of an SQL/ERI Server, then it could define its Abstract Data Types with Object Identifiers (OID) and make them available to SQL applications using these definitional mechanisms. In this manner, object database management systems and specialized object repositories could make their features and facilities available to an SQL environment. As the different OID facilities of the SQL3 specification reach CD and DIS stability, an object-oriented SQL/ERI Server could use them with more confidence to permanently define its objects and their methods. 6. SQL Binding Alternatives The SQL'92 standard [8] specifies three different binding styles: Module, Embedded SQL, and Direct Invocation. The RDA'93 standard [9] specifies protocol interfaces for RDA clients and RDA servers. An emerging standard for an SQL call level interface (SQL/CLI) is under a rapid development path in ISO/IEC with Draft International Standard (DIS) status expected sometime during calendar year 1994. The following subsections define how an SQL/ERI Server might claim conformance to an SQL/ERI profile using one of these interface alternatives. 6.1 SQL Module processor An SQL/ERI Server may provide a Module binding style to application programs. If a user creates a <module> according to the Format and Syntax Rules of Clause 12, "Module", of the SQL'92 standard, and if the <module> satisfies the restrictions of a given level of SQL for a given programming language, then the SQL/ERI Server shall process that <module> as an input text file and shall produce a binary output file that can be linked to the compiled output of any application program written in the programming language identified by the <language clause> of the <module>. The <module> output file shall abide by whatever restrictions are required for cross-language procedure calls by the operating system and processing platform for which Module binding support is claimed. 6.2 Embedded SQL preprocessor An SQL/ERI Server may provide an Embedded SQL binding style to application programs. If a user creates an <embedded SQL host program> according to the Format and Syntax Rules of Clause 13, "Embedded SQL", of the SQL'92 standard, and if the <embedded SQL host program> satisfies the restrictions of a given level of SQL for a given programming language, then the SQL/ERI Server shall process that <embedded SQL host program> according to the General Rules and other requirements specified in the SQL'92 standard. An SQL/ERI Server may compile the entire <embedded SQL host program> to produce an executable file, or it may produce a conforming program, P, written in the language identified by the <language clause> of the <embedded SQL host program> and an implicit (maybe not actual) module, M, both as specified by Syntax Rules 13 through 15 of Subclause 19.1, "<embedded SQL host program>", of the SQL'92 standard. If the user compiles program P with a standard conforming programming language compiler designed for the operating system and processing platform environment for which Embedded SQL support is claimed, then the compiled version of P and an implementor-dependent version of M shall be linkable in that processing environment to produce an executable file that executes correctly according to the SQL'92 standard. 6.3 Direct invocation of SQL statements An SQL/ERI Server may provide a Direct Invocation style of binding according to the requirements of Clause 20, "Direct invocation of SQL", of the SQL'92 standard. This binding style is very difficult to write conformance tests for because there is no "standard" way to capture data returned as the result of a query. Instead, conformance to this binding style requires a subjective evaluation of the results by a human user. For this reason, among others, the FIPS SQL standard [3] does not recognize Direct Invocation as the sole conformance alternative of an SQL implementation. Instead, it allows Interactive Direct SQL as a conformance option in addition to a Module or Embedded binding style. For an SQL/ERI Server it makes more sense to recognize the Direct Invocation binding style as a viable conformance alternative. There are many situations, e.g. electronic bulletin boards, where a user may desire to send an SQL statement to an SQL/ERI Server and have the data results displayed on a screen or dumped into a human readable text file. For these reasons, the SQL/ERI Server profiles specified in Section 7 below do recognize Direct Invocation as a valid conforming interface style. If a user creates a <direct SQL statement> according to the Format and Syntax Rules of Clause 20, "Direct invocation of SQL", of the SQL'92 standard, and if the <direct SQL statement> satisfies the restrictions of a given level of SQL, then the SQL/ERI Server shall process that <direct SQL statement> as input text and shall display the results, if any, in a human readable form on some sort of display device. For SQL/ERI Servers providing access to multimedia data, the display device may include a sound system, motion picture display, or even some form of virtual reality. The only real requirement is that a reasonable conformance testing authority be able to decide, subjectively, whether or not the <direct SQL statement> was properly executed. If a <direct SQL statement> is a <direct select statement: multiple rows> that returns only character string or numeric data in the result rows and columns, then the SQL/ERI Server shall provide a user option to redirect the output of the query into a human readable text file. In this context, human readable means formatted so that a reasonable conformance testing authority can readily distinguish rows and columns and easily read the data. All numeric data returned as text shall be in the form of a valid SQL <signed numeric literal>, unless some explicit user action results in its being cast into some other form, e.g. Money with currency symbols attached. The SQL/ERI Server may use General Rules 5a, 5b, 6a, and 6b, of Subclause 6.10, "<cast specification>", of the SQL'92 standard, for additional guidance in casting numeric values into numeric literals. Other requirements for the Direct Invocation binding style are as follows: if a statement raises an exception condition, then the SQL/ERI Server 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 SQL/ERI Server shall display a message indicating that the statement completed, giving a textual description of the "warning" or "no data"; an SQL/ERI Server that supports null values 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. Preferably, the SQL/ERI Server will provide an implementor-defined method for a user to specify how null values shall be displayed, e.g. SET NULL AS '*'; however, this SET feature is not really needed if, instead, the SQL/ERI Server supports the NULL alternative in the <cast operand> of the <cast specification>. 6.4 SQL call level interface (SQL/CLI) An SQL/ERI Server may provide an SQL Call Level Interface binding style according to the requirements of the emerging standard for SQL/CLI [10]. We expect the SQL/CLI specification to reach a stable state in the ISO/IEC standardization process during calendar year 1994, in time for any future NIST testing of SQL/ERI Server profiles. The call level interface is a requirement for third-party software developers who produce "shrink-wrapped" software for use on personal computers and workstations. They do not wish to use a Module processor or an Embedded SQL preprocessor binding style because they do not wish to distribute any source code with the products they sell to individual users. Instead they desire a services call interface to SQL data repositories that can be invoked from the calling environment provided by the host operating system. The calls to the SQL data repository can then be embedded in the object code just like calls to any other system service. The Call Level Interface is an alternative mechanism for executing SQL statements. Reference [10] states that the SQL/CLI consists of a number of routines that: -- Allocate and deallocate resources. --Control connections to SQL-servers. --Execute SQL statements using mechanisms similar to Dynamic SQL. --Obtain diagnostic information. --Control transaction termination. The AllocHandle routine allocates resources to manage an SQL-environment, an SQL-connection, a CLI descriptor area, or SQL-statement processing. An SQL- connection is allocated in the context of an allocated SQL-environment, and a CLI descriptor descriptor area and an SQL-statement are allocated in the context of an allocated SQL-connection. The FreeHandle routine deallocates a specified resource. The ReleaseEnv routine is used to deallocate all the allocated SQL- connections within a specified allocated SQL-environment. Each allocated SQL-environment has an attribute that determines whether output character strings are null terminated by the implementation. The application can set the value of this attribute by using the routine SetEnvAttr and can retrieve the current value of the attribute by using the routine GetEnvAttr. The Connect routine establishes an SQL-connection. The Disconnect routine terminates an established SQL-connection. Switching between established SQL connections occurs automatically whenever the application switches processing to a dormant SQL-connection. The ExecDirect routine is used for a one-time execution of an SQL-statement. The Prepare routine is used to prepare an SQL-statement for subsequent execution using the Execute routine. In each case, the executed SQL-statement may contain dynamic parameters. The interface for a description of dynamic parameters, dynamic parameter values, the resultant columns of a dynamic select statement, and the target specifications for the resultant columns is a CLI descriptor area. A CLI descriptor area for each type of interface is automatically allocated when an SQL-statement is allocated. The application may allocate additional CLI descriptor areas and nominate them for use as the interface for the description of dynamic parameter values or the description of target specifications by using the routine SetStmtAttr. The application can determine the handle value of the CLI descriptor area currently being used for a specific interface by using the routine GetStmtAttr. The GetDescField and GetDescRec routines enable information to be retrieved from a CLI descriptor area. The CopyDesc routine enables the contents of a CLI descriptor area to be copied to another CLI descriptor area. When a dynamic select statement is prepared or executed immediately, a description of the resultant columns is automatically provided in the applicable CLI descriptor area. In this case, the application may additionally retrieve information by using the DescribeCol routine to obtain a description of a single resultant column and by using the NumResultCols routine to obtain a count of the number of resultant columns. The application sets values in the CLI descriptor area for the description of the corresponding target specifications either explicitly using the routines SetDescField and SetDescRec or implicitly using the routine BindCol. When an SQL-statement is prepared or executed immediately, a description of the dynamic parameters is automatically provided in the applicable CLI descriptor area if this facility is supported by the current SQL-connection. An attribute associated with the allocated SQL-connection indicates whether this facility is supported. The value of the attribute may be retrieved using the routine GetConnectAttr. The application sets values in the CLI descriptor area for the description of dynamic parameter values and, regardless of whether automatic population is supported, in the CLI descriptor area for the description of dynamic parameters either explicitly using the routines SetDescField and SetDescRec or implicitly using the routine BindParam. When a dynamic select statement is executed, a cursor is implicitly declared and opened. The cursor name can be supplied by the application by using the routine SetCursorName. If a cursor name is not supplied by the application, an implementation-dependent cursor name is generated. The same cursor name is used for each implicit cursor within a single allocated SQL-statement. The cursor name can be retrieved by using the GetCursorName routine. The Fetch routine is used to position an open cursor on the next row and retrieve the values of bound columns for that row. A bound column is one whose target specification in the specified CLI descriptor area defines a location for the target value. Values for unbound columns can be individually retrieved by using the GetCol routine. The GetCol routine also enables the values of character string columns to be retrieved piece by piece. The current row of a cursor can be deleted or updated by executing a preparable dynamic delete statement or a preparable dynamic update statement, respectively, for that cursor under a different allocated SQL-statement to the one under which the cursor was opened. The CloseCursor routine enables a cursor to be closed. The GetDiagField and GetDiagRec routines obtain diagnostic information about the most recent routine operating on a particular resource. An SQL-transaction is terminated by using the EndTran routine. The Cancel routine is used to cancel the execution of a concurrently executing SQL/CLI routine. The CLI ExecDirect routine and the CLI Prepare routine each support an input character string parameter identified as StatementText. If P is the value of StatementText, then P shall satisfy the following restrictions: 1.P shall conform to the Format, Syntax Rules, and Access Rules for a <preparable statement> as specified in Subclause 17.6, "<prepare statement>", of the SQL'92 standard. 2.P shall not be a <commit statement> or a <rollback statement>. 3.P shall abide by the Leveling Rules of the level of SQL support claimed by the SQL/ERI Server. The SQL/CLI specification is intended to support CLI routines embedded into both pointer-based programming languages and non-pointer-based programming languages. In particular, the Syntax Rules of <CLI routine> specified in Subclause 5.2 of [10] indiate that CLI routines may be embedded into any one of the following standard programming languages: Ada, C, COBOL, Fortran, MUMPS, Pascal, and PL/I. An SQL/ERI Server will indicate which of those languages it supports. 6.5 RDA/SQL-Server interface An SQL/ERI Server may provide an RDA/SQL-Server protocol interface according to the protocols defined in the RDA'93 standard [9]. The RDA protocols allow communication and interoperability among conforming RDA processors in an OSI communications network. Many vendors are also supporting the RDA protocols in a TCP/IP communications network using agreements specified by the NIST Opens Systems Environment Implementors Workshop (OIW) for RDA accessibility using Internet RFC 1006 for upper layer OSI interface to Internet protocols. This SQL/ERI profile specification allows an SQL/ERI Server to claim conformance to the RDA/SQL-Server interface over an arbitrary communications network. If an application program, acting as an RDA client, is able to form an association with an SQL/ERI Server and communicate thereafter using RDA protocols subject to the implementor agreements specified by the Open Systems Environment Implementor's Workshop (e.g. in [16]), then the SQL/ERI Server may claim conformance to the RDA/SQL-Server interface style. Reference [9] describes the services of the RDA standard in terms of an RDA Client, and RDA Server, and an RDA Service as follows: An RDA client is an application-process, within an open system, that requests database services from another application-process called a database server. A database server is an application-process, within the same or another open system, that supplies database storage facilities and provides, through OSI communication, database services to RDA clients. An RDA client and a database server communicate by means of the RDA Service, supported by an RDA service- provider. The part of the database server that uses the RDA service-provider to communicate with an RDA client is called an RDA server. The RDA client has the ability to initiate RDA service requests, while the RDA server can only issues RDA service responses to reply to such requests. A data resource is a named collection of data and/or capabilities on the database server and known to both the RDA client and the RDA server. The meaning of the data content and capabilities of a data resource depend upon the application of RDA, which is determined by each RDA specialization standard (e.g. the SQL specialization). The RDA client opens a data resource in order to gain access to the data content or capabilities of that resource through Database Language services (e.g. SQL). Data resources may be nested, with subordinate data resources grouped within their parent data resource. The RDA client is required to open a parent data resource before it can open subordinate data resources. An RDA transaction is a logically complete unit of processing as determined by the RDA client. Execution during an RDA transaction of a sequence of database access services that change data resources enables the set of changes to be handled as an atomic unit. When the RDA transaction is terminated, either the whole set of changes are applied to the data resources or no changes are applied. The RDA client requests termination of an RDA transaction by requesting the RDA server either to commit or to roll back the complete set of changes of that transaction. Changes made to the data content of data resources during an RDA transaction are not made available to other RDA clients until that RDA transaction is terminated at the RDA server. RDA a choice of two application-contexts for managing RDA transactions: 1) a basic application- context for one-phase commitment, and 2) a TP application-context for two-phase commitment. The RDA protocol for the basic application-context is completely specified in the RDA standard, whereas the protocol for the TP application context is dependent upon the ISO/IEC Distributed Transaction Processing standard (ISO/IEC 10026). An RDA operation models a request by an RDA client that is transferred to an RDA server for processing. RDA operations enable an RDA client to request any of five types of RDA services: a) RDA Dialogue Management services, to start and end RDA dialogues; b) RDA Transaction Management services, to start and end RDA transactions; c) RDA Control services, to report the status or cancel existing operations; d) Resource Handing services, to enable or disable access by RDA clients to data resources; e) Database Language services, to access and modify data resources. An RDA client may request RDA operations without waiting for the results of previously requested RDA operations. Thus an RDA server may have several RDA operations outstanding for a particular RDA dialogue. An RDA dialogue is a cooperative relationship between and RDA client and an RDA server. The RDA client initilizes the RDA dialogue and requests RDA operations that are to be performed by the RDA server. An RDA dialogue is uniquely identified within the scope of the OSI environment, and all RDA operations occur within the bounds of an RDA dialogue. An RDA dialogue can exist only in the context of an established application-association, and ceases to exist if the association is released. A failed RDA dialogue cannot be recovered; the process of recovery after a failure is a local matter beyond the scope of the RDA 1993 standard, and recovery actions outside the RDA service-provider may be necessary. In the event of dialogue failure, it is a requirement that all changes made to data resources by any RDA transaction that is not already terminating when RDA dialogue failure occurs be rolled back by the database server during its recovery process. If an RDA dialogue is terminating when RDA dialogue failure occurs, then it may either be committed or rolled back. The NIST OSE Implementor's Workshop (OIW) has specified implementation agreements for the Basic Application Context of the RDA'93 standard [9], with profiles for: Immediate Execution, Stored Execution, Status, and Cancel. Future work is in progress by the OIW to specify corresponding profiles for the Transaction Processing (TP) Application Context of the RDA'93 standard. For the purpose of the SQL/ERI Server profiles specified in this document, support for the RDA/SQL- Server interface requires support as an RDA Server for the Immediate Execution profile of the Basic Application Context as specified in [16], with the ability to respond to SQL statements at the level of support for SQL language claimed by the SQL/ERI Server. The other profiles of the Basic Application Context defined in [16], and the TP Application Context, are optional enhancements to this basic requirement as follows: RDA Stored Execution. Support for the basic requirements specified above and, in addition, support for the RDA Stored Execution Functional Unit as specified in the RDA'93 standard and with implementor agreements for the Stored Execution profile as specified in [16]. RDA Status. Support for the basic requirements specified above and, in addition, support for the RDA Status Functional Unit as specified in the RDA'93 standard and with implementor agreements for the Status profile as specified in [16]. RDA Cancel. Support for the basic requirements specified above and, in addition, support for the RDA Cancel Functional Unit as specified in the RDA'93 standard and with implementor agreements for the Cancel profile as specified in [16]. RDA TP Application Context. Support for the basic requirements specified above and, in addition, support for the RDA SQL TP Application Context as specified in the RDA'93 standard, and dependent upon ISO/IEC 10026 (Distributed Transaction Processing), and with implementor agreements for Distributed Transaction Processing as specified in [16]. 7. SQL/ERI Server Profiles This section specifies two general-purpose functional profiles for partial SQL language support that an implementation may claim conformance to, as follows: - SQL/ERI Read-Only Server - SQL/ERI Read-Write Server Each general-purpose profile has a number of "level of service" alternatives for data manipulation, schema definiton, transaction management, and binding style. If an implementation conforms to any one of these profiles, then it may claim to be a conforming SQL/ERI Server. Because many of the alternatives in these profiles identify a proper subset of full-function SQL requirements, conformance to any one of them does not imply conformance to the standard for Database Language SQL [8]. These profiles are intended for use by customers and vendors of products that claim only partial support of an SQL language interface to their data repository. Any implementation claiming conformace to one of the SQL/ERI Server profiles shall provide a written public statement responding to the ten profile items identified in the following paragraphs. The implementation requirements of each response is given in subsections specific to Read-Only or Read-Write Servers. 1.A base level of SQL data manipulation language (DML) support, by choosing exactly one of the following DML alternatives. Minimal DML Entry DML Transitional DML Intermediate DML Full DML 2.A base level of SQL schema definition language (SDL) support, by choosing exactly one of the following SDL alternatives. None Minimal SDL Entry SDL Transitional SDL Intermediate SDL Full SDL 3.A base level of SQL transaction management support, by choosing exactly one of the following transaction management alternatives. None Commit-Rollback Transaction Mode Transaction Isolation Transaction Diagnostics Constraints Note: The alternatives for SQL transaction management support are nested. Support for any one of them implies support for all those listed above it. The three alternatives for Transaction Mode, Transaction Isolation, and Transaction Diagnostics support <transaction mode>, <isolation level>, and <diagnostics size>, respectively, in the SQL'92 <set transaction statement>, and the Constraints alternative supports the SQL'92 <set constraints mode statement>. 4.A default isolation level for SQL transaction management, by choosing exactly one of the following default isolation level alternatives. Read Uncommitted Read Committed Repeatable Read Serializable Note: If the default isolation level is anything other than Serializable, and if other concurrent users are able to update the database, then read statements may be subject to "dirty read", "non-repeatable read", or "phantom" rows (see Subclause 4.28, "SQL-transactions", of the SQL'92 standard). Even a read-only profile is subject to these phenomena if other concurrent users (not through that profile) can update the database. 5.Which binding styles are supported, by choosing one or more of the following binding style alternatives. Module Embedded SQL Direct Invocation SQL/CLI RDA/SQL-Server Note: It is expected that the SQL/CLI binding style will be the most popular choice for SQL/ERI products within a single local client/server environment and that the Direct Invocation or RDA/SQL-Server binding styles will be the most popular when the server data repository is an isolated node in a wide area client/server environment. 6.For each of the Module, Embedded SQL, or SQL/CLI binding styles chosen, which programming language interfaces are supported, by choosing one or more of the following programming language alternatives. Ada C COBOL Fortran MUMPS Pascal PL/I SAMeDL Note: The Direct Invocation and RDA/SQL-Server binding styles do not require or provide a programming language interface. The preferred language interfaces for SQL/CLI are C and/or COBOL. SAMeDL is an alternative only for the Module binding style (see [21]). 7.Whether or not SQL session management is supported, by specifying exactly one of the following session management alternatives. Session Supported Session Not Supported Note: SQL session management is defined in Clause 16, "Session management", of SQL'92. 8.Which optional extensions are supported, by choosing zero or more of the following optional extensions. SQL'92 features Stored procedures and callable routines (SQL/PSM) SQL multimedia class library (SQL/MM) ADTs and methods Object data management Note: If SQL'92 features is chosen, then the implementation shall support the SQL_FEATURES table as specified in Section 15 of FIPS SQL (see [3]); if SQL/PSM is chosen, then the implementation shall support all requirements of the then current SQL/PSM specification (see [11]); if SQL/MM is chosen, then the implementation shall point to the then current SQL/MM specification (see [13]) and explicitly indicate which Parts, and which conformance alternatives within each Part, are supported; if ADTs and methods is chosen, then the implementation shall support the appropriate Abstract Data Type clauses in the then current SQL3 specification (see Section 5.4 above and [12]); if Object data management is chosen, then the implementation shall support the appropriate object management clauses in the then current SQL3 specification (see Section 5.5 above and [12]). 9.If the RDA/SQL-Server binding style is chosen, then which underlying communications protocols are supported, by choosing one or more of the following. Minimal OSI (MOSI) -- see new OIW 1994 agreements Full Stack OSI -- see [16] for 1992 OIW stable agreements IETF RFC 1006 -- see unpublished NIST RDA TestBed Agreements Proprietary -- give name & version of commercial LAN product Note: All of the above depend upon the International Standard for Remote Database Access (RDA) [9] in their upper layers; however, they may differ in their directory services and in their services for making an association at the application layer and in how that association is propagated through to the transport and physical layers. 10. If the RDA/SQL-Server binding style is chosen, then which RDA options are supported, by choosing zero or more of the following (see Section 6.5 above). RDA Stored Execution RDA Status RDA Cancel RDA TP Application Context 7.1 SQL/ERI Read-Only Server This profile specifies a read-only interface to a data repository. It does not include support for any of the Schema Definition or Schema Manipulation SQL language elements specified in Clause 11 of the SQL'92 standard, or for any of the SQL data change statements, i.e. Insert, Update, or Delete, specified in Clause 13. It is expected that the level of support specified for SQL schema definition language is "None". Depending upon the various base level attributes specified, this profile may have Information Schema requirements that differ from those specified in SQL'92 [8] or FIPS SQL [3]. Schema Definition Rules 1.The SQL/ERI Read-Only Server profile assumes that all schema objects are owned by a user different from the user accessing the repository through this profile, and that appropriate privileges have been granted to all accessing users. If the RDA/SQL-Server binding style is identified, then users are made known to the system using the NIST OIW RDA Testbed implementor agreements; otherwise, as with the SQL'92 standard, the particular method by which users are made known to the system is implementation-defined. 2.If the level of SQL data manipulation language support claimed for the SQL/ERI Read-Only Server profile is Minimal DML, Entry DML, or Transitional DML, then the implicit schema definition may contain some <table constraint>s, or various <schema element>s, that are not visible to the user but whose existence may effect the semantics of certain statements. 3.If the level of SQL data manipulation language support claimed for the SQL/ERI Read-Only Server profile is Minimal DML or Entry DML, and if a table with table name TN is visible in the Information Schema TABLES view for a user with user name UN, then one of the following <grant statement>s, executed by the owner of table TN, is implicit: GRANT SELECT ON TABLE TN TO UN, or GRANT SELECT ON TABLE TN TO PUBLIC It shouldn't make any difference to a read-only user which of these statements is implicit, so the choice is implementation-dependent. 4.If the level of SQL data manipulation language support claimed for the SQL/ERI Read-Only Server profile is Transitional DML, Intermediate DML, or Full DML, then information about schema objects, privileges, and constraints are made visible to potential users through the Information Schema views, subject to the Information Schema Rules specified below. Data Manipulation Rules 1.If the Module, Embedded SQL, or RDA/SQL-Server binding styles are specified, then the SQL/ERI Read-Only Server profile requires support for the following SQL statements, as specified in Clause 13, "Data Manipulation", in the SQL'92 standard, with any restrictions specified by the given level of SQL data manipulation language support and subject to other rules specified in this profile. <declare cursor> <open statement> <fetch statement> <close statement> <select statement: single row> 2.If the Direct Invocation binding style is specified, then the SQL/ERI Read- Only Server profile requires support for the following <direct SQL statement>s listed in Clause 20, "Direct invocation of SQL", in the SQL'92 standard, with any restrictions specified by the given level of SQL data manipulation language support and subject to other rules specified in this profile: <direct select statement: multiple rows> 3.If the SQL/CLI binding style is specified, then the SQL/ERI Read-Only Server profile requires support for the following <preparable statement>s listed in Subclause 17.6 of the SQL'92 standard, with any restrictions specified by the given level of SQL data manipulation language support and subject to other rules specified in this profile: <dynamic single row select statement> <dynamic select statement> Transaction Management Rules 1.If the level of SQL transaction management support is "None", then SQL transaction management is not supported for any binding style. Otherwise, Commit and Rollback transaction management is supported depending on the specified binding style as follows. Case: a. If the Module, Embedded SQL, or Direct Invocation binding style is specified, then the requirements of the SQL <commit statement> and the SQL <rollback statement> from Clause 14, "Transaction management", of the SQL'92 standard [8] apply to this profile. b. If the SQL/CLI binding style is specified, then the requirements of the routines for transaction management (e.g. Transact and Cancel) as specified in the SQL/CLI standard [10] apply to this profile. c. If the RDA/SQL-Server binding style is specified, then the requirements for transaction management in the RDA Basic Application Context, as specified in the RDA standard [9], with implementor agreements specified in [16], apply to this profile. d. If the RDA option for TP Application Context is specified, then the requirements for the TP Application Context, as specified in the RDA standard [9], with implementor agreements for Distributed Transaction Processing as specified in [16], apply to this profile. Note: The purpose of requiring support for SQL Commit and Rollback in Read- Only profiles is to give the user a standard way to signal to the system that a read-only transaction has completed. This has semantic implications only if other concurrent users (not through this profile) are able to update the database. 2.If the level of SQL transaction management support is "None", and if the default isolation level is XXX, then the <set transaction statement> SET TRANSACTION READ ONLY, ISOLATION LEVEL XXX is implicit for the single implicit transaction of any SQL-session through this profile. 3.If the level of SQL transaction management support is Commit-Rollback, and if the default isolation level is XXX, then the <set transaction statement> SET TRANSACTION READ ONLY, ISOLATION LEVEL XXX is implicit for every transaction of any SQL-session through this profile. 4.If the level of SQL transaction management support is Transaction Mode or above, then this profile includes support for the <transaction access mode> alternative of the SQL <set transaction statement> as specified in Subclause 14.1 of the SQL'92 standard; however, the <transaction access mode> shall always be READ ONLY. 5.If the level of SQL transaction management support is Transaction Isolation or above, then this profile includes support for the <isolation level> alternative of the SQL <set transaction statement> as specified in Subclause 14.1 of the SQL'92 standard. If the default isolation level is XXX, and if an explicit <set transaction statement> with an explicit <isolation level> is not specified for a transaction of any SQL-session through this profile, then the <set transaction statement> SET TRANSACTION READ ONLY, ISOLATION LEVEL XXX is implicit for that transaction. 6.If the level of SQL transaction management support is Transaction Diagnostics or above, then this profile includes support for the <diagnostics size> alternative of the SQL <set transaction statement> as specified in Subclause 14.1 of the SQL'92 standard. 7.If the level of SQL transaction management support is Constraints, then this profile includes support for the <set constraints mode statement> as specified in Subclause 14.2 of the SQL'92 standard. Connection Management Rules 1.If the Module, Embedded SQL, or Direct Invocation binding styles are specified, and if the level of SQL data manipulation language support is Full DML, then the SQL/ERI Read-Only Server profile requires support for <SQL connection statement>s as specified in Clause 15, "Connection management", of the SQL'92 standard. If the level of SQL data manipulation language support is anything other than Full SQL, then there is no requirement to support any <SQL connection statement> for these binding styles. 2.If the SQL/CLI binding style is specified, then the requirements of the routines for connection management (i.e. Connect, Disconnect) as specified in the SQL/CLI specification [10] apply to this profile. 3.If the RDA/SQL-Server binding style is specified, then the requirements of RDA Dialogue Management and RDA Resource Handling as specified in the RDA standard [9], with implementor agreements specified in [16], apply to this profile. Session Management Rules 1.If Session Supported is specified, then this profile supports the <SQL session statement>s as specified in Clause 16, "Session management", of the SQL'92 standard; otherwise, if Session Not Supported is specified, no support for any of these statements is required by this profile. 2.If SQL data manipulation language support specifies Transitional DML, Intermediate DML, or Full DML, then Session Supported shall be implicit in this profile. Information Schema Rules 1.If the level of SQL data manipulation language support claimed for the SQL/ERI Read-Only Server profile is Minimal DML or Entry DML, then support for the following Information Schema views, as specified in Clause 21, "Information Schema and Definition Schema", of the SQL'92 standard, is required: TABLES COLUMNS [See FIPS Errata for handling "long" names] 2.If the level of SQL data manipulation language support claimed for the SQL/ERI Read-Only Server profile is Transitional DML, then support for the following Information Schema views, as specified in Clause 21, "Information Schema and Definition Schema", of the SQL'92 standard, is required: TABLES VIEWS COLUMNS TABLE_PRIVILEGES COLUMN_PRIVILEGES USAGE_PRIVILEGES 3.If the level of SQL data manipulation language support claimed for the SQL/ERI Read-Only Server profile is Intermediate DML or Full DML, then an implementation conforming to this profile shall provide all of the Information Schema views required by the SQL'92 standard for Intermediate SQL or Full SQL, respectively. In many cases some of these tables may be empty, or trivial, but a conforming SQL/ERI Server at these SQL data manipulation language levels is required to support them to reflect an accurate picture of the implicit schema definition. 7.2 SQL/ERI Read-Write Server This profile specifies a read-write interface to a data repository. It requires support for the SQL data change statements, i.e. Insert, Update, and Delete, specified in Clause 13, "data manipulation", of the SQL'92 standard. Depending upon the level of SQL schema definition language support specified, it may or may not require support for SQL schema definition or schema manipulation statements. Depending upon the various base level attributes specified, this profile may have Information Schema requirements that differ from those specified in SQL'92 [8] or FIPS SQL [3]. Schema Definition Rules 1.The SQL/ERI Read-Write Server profile assumes that some schema objects are owned by a user different from the user accessing the repository through this profile, and that appropriate privileges have been granted to all accessing users. If the RDA/SQL-Server binding style is identified, then users are made known to the system using the NIST OIW RDA Testbed implementor agreements; otherwise, as with the SQL'92 standard, the particular method by which users are made known to the system is implementation-defined. 2.If the level of SQL data manipulation language support claimed for the SQL/ERI Read-Write Server profile is Minimal DML, Entry DML, or Transitional DML, then the implicit schema definition may contain some <table constraint>s, or various <schema element>s, that are not visible to the user but whose existence may effect the semantics of certain statements. 3.Information about schema objects, privileges, and constraints are made visible to potential users through the Information Schema views, subject to the Information Schema Rules specified below. 4.If the level of SQL schema definition language support is different from "None", then Case: a. If the Module, Embedded SQL, or RDA/SQL-Server binding styles are specified, then the SQL/ERI Read-Write Server profile requires support for all of the SQL data definition and manipulation statements, as specified in Clause 11, "Schema definition and manipulation", of the SQL'92 standard, with any restrictions specified by the given level of SQL schema definition language support and subject to other rules specified in this profile. b. If the Direct Invocation binding style is specified, then the SQL/ERI Read-Write Server profile requires support for the following <direct SQL statement>s listed in Clause 20, "Direct invocation of SQL", in the SQL'92 standard, with any restrictions specified by the given level of SQL schema definition language support and subject to other rules specified in this profile: <SQL schema statement> c. If the SQL/CLI binding style is specified, then the SQL/ERI Read-Write Server profile requires support for the following <preparable statement>s listed in Subclause 17.6 of the SQL'92 standard, with any restrictions specified by the given level of SQL schema defintion language support and subject to other rules specified in this profile: <preparable SQL schema statement> Data Manipulation Rules 1.If the Module, Embedded SQL, or RDA/SQL-Server binding styles are specified, then the SQL/ERI Read-Write Server profile requires support for the following SQL statements, as specified in Clause 13, "Data Manipulation", in the SQL'92 standard, with any restrictions specified by the given level of SQL data manipulation language support and subject to other rules specified in this profile. <declare cursor> <open statement> <fetch statement> <close statement> <select statement: single row> <delete statement: positioned> <delete statement: searched> <insert statement> <update statement: positioned> <update statement: searched> <temporary table declaration> -- Full DML only 2.If the Direct Invocation binding style is specified, then the SQL/ERI Read- Only Server profile requires support for the following <direct SQL statement>s listed in Clause 20, "Direct invocation of SQL", in the SQL'92 standard, with any restrictions specified by the given level of SQL data manipulation language support and subject to other rules specified in this profile: <direct select statement: multiple rows> <delete statement: searched> <insert statement> <update statement: searched> <temporary table declaration> -- Full DML only 3.If the SQL/CLI binding style is specified, then the SQL/ERI Read-Write Server profile requires support for the following <preparable statement>s listed in Subclause 17.6 of the SQL'92 standard, with any restrictions specified by the given level of SQL data manipulation language support and subject to other rules specified in this profile: <dynamic single row select statement> <dynamic select statement> <delete statement: searched> <insert statement> <update statement: searched> <preparable dynamic delete statement: positioned> <preparable dynamic update statement: positioned> Transaction Management Rules 1.The level of SQL transaction management support shall not be "None". In all cases, SQL Commit and Rollback transaction management is supported as defined by the specified binding style. Case: a. If the Module, Embedded SQL, or Direct Invocation binding style is specified, then the requirements of the SQL <commit statement> and the SQL <rollback statement> from Clause 14, "Transaction management", of the SQL'92 standard [8] apply to this profile. b. If the SQL/CLI binding style is specified, then the requirements of the routines for transaction management (e.g. Transact and Cancel) as specified in the SQL/CLI standard [10] apply to this profile. c. If the RDA/SQL-Server binding style is specified, then the requirements for transaction management in the RDA Basic Application Context, as specified in the RDA specification [9], with implementor agreements specified in [16], apply to this profile. d. If the RDA option for TP Application Context is specified, then the requirements for the TP Application Context, as specified in the RDA standard [9], with implementor agreements for Distributed Transaction Processing as specified in [16], apply to this profile. 2.If the level of SQL transaction management support is Commit-Rollback, then the <set transaction statement> SET TRANSACTION READ WRITE, ISOLATION LEVEL SERIALIZABLE is implicit for every transaction of any SQL-session through this profile. 3.If the level of SQL transaction management support is Transaction Mode or above, then this profile includes support for the <transaction access mode> alternative of the SQL <set transaction statement> as specified in Subclause 14.1 of the SQL'92 standard. Case: a. If an explicit <set transaction statement> with an explicit <tranaction access mode> is not specifed for a transaction of any SQL-session through this profile, then the <set transaction statement> SET TRANSACTION READ WRITE, ISOLATION LEVEL SERIALIZABLE is implicit for that transaction. b. If an explicit <set transaction statement> with a <tranaction access mode> of READ ONLY is specifed for a transaction of any SQL-session through this profile, and if the default isolation level is XXX, then the <set transaction statement> SET TRANSACTION READ ONLY, ISOLATION LEVEL XXX is implicit for that transaction. 4.If the level of SQL transaction management support is Transaction Isolation or above, then this profile includes support for the <isolation level> alternative of the SQL <set transaction statement> as specified in Subclause 14.1 of the SQL'92 standard. If an explicit <set transaction statement> with a <tranaction access mode> of READ ONLY is specifed, and if an explicit <set transaction statement> with an explicit <isolation level> is not specified for a transaction of any SQL-session through this profile, and if the default isolation level is XXX, then the <set transaction statement> SET TRANSACTION READ ONLY, ISOLATION LEVEL XXX is implicit for that transaction. 5.If the level of SQL transaction management support is Transaction Diagnostics or above, then this profile includes support for the <diagnostics size> alternative of the SQL <set transaction statement> as specified in Subclause 14.1 of the SQL'92 standard. 6.If the level of SQL transaction management support is Constraints, then this profile includes support for the <set constraints mode statement> as specified in Subclause 14.2 of the SQL'92 standard. Connection Management Rules 1.If the Module, Embedded SQL, or Direct Invocation binding styles are specified, and if the level of SQL data manipulation language support is Full DML, then the SQL/ERI Read-Write Server profile requires support for <SQL connection statement>s as specified in Clause 15, "Connection management", of the SQL'92 standard. If the level of SQL data manipulation language support is anything other than Full SQL, then there is no requirement to support any <SQL connection statement> for these binding styles. 2.If the SQL/CLI binding style is specified, then the requirements of the routines for connection management (i.e. Connect, Disconnect) as specified in the SQL/CLI specification [10] apply to this profile. 3.If the RDA/SQL-Server binding style is specified, then the requirements of RDA Dialogue Management and RDA Resource Handling as specified in the RDA standard [9], with implementor agreements specified in [16], apply to this profile. Session Management Rules 1.If Session Supported is specified, then this profile supports the <SQL session statement>s as specified in Clause 16, "Session management", of the SQL'92 standard; otherwise, if Session Not Supported is specified, no support for any of these statements is required by this profile. 2.If SQL data manipulation language support specifies Transitional DML, Intermediate DML, or Full DML, then Session Supported shall be implicit in this profile. Information Schema Rules 1.If the level of SQL data manipulation language support claimed for the SQL/ERI Read-Write Server profile is Minimal DML or Entry DML, then support for the following Information Schema views, as specified in Clause 21, "Information Schema and Definition Schema", of the SQL'92 standard, is required: TABLES VIEWS COLUMNS TABLE_PRIVILEGES COLUMN_PRIVILEGES 2.If the level of SQL data manipulation language support claimed for the SQL/ERI Read-Write Server profile is Transitional DML, then support for the following Information Schema views, as specified in Clause 21, "Information Schema and Definition Schema", of the SQL'92 standard, is required: TABLES VIEWS COLUMNS TABLE_PRIVILEGES COLUMN_PRIVILEGES USAGE_PRIVILEGES 3.If the level of SQL data manipulation language support claimed for the SQL/ERI Read-Write Server profile is Intermediate DML or Full DML, then an implementation conforming to this profile shall provide all of the Information Schema views required by the SQL'92 standard for Intermediate SQL or Full SQL, respectively. In many cases some of these tables may be empty, or trivial, but a conforming SQL/ERI Server at these SQL data manipulation language levels is required to support them to reflect an accurate picture of the implicit schema definition. 8. Applicability This standard is applicable in any situation where it is desirable to integrate a client-side productivity tool or a server-side data repository into an SQL environment. It is a non-mandatory standard that may be invoked on a case-by- case basis subject to the integration objectives of the procuring department or agency. It is particularly suitable for specifying limited SQL interfaces to legacy databases or to specialized data repositories not under the control of a full- function SQL database management system. It can be used along with other procurement information to specify SQL interface requirements for a wide range of data management procurements. One special area of application envisioned for this standard is Electronic Commerce, a National Challenge Application area of the National Information Infrastructure. The primary objective of Electronic Commerce is to integrate communications, data management, and security services in a distributed processing environment, thereby allowing business applications within different organizations to interoperate and exchange information automatically. At the data management level, electronic commerce requires a logically integrated database of diverse data stored in geographically separated data banks under the management and control of heterogeneous database management systems. An over- riding requirement is that these diverse data managers be able to communicate with one another and provide shared access to data and data operations and methods under appropriate security, integrity, and access control mechanisms. FIPS SQL provides a powerful database language for data definition, data manipulation, and integrity management to satisfy many of these requirements. It is unrealistic to expect that every data manager involved in electronic commerce will conform to even the Entry SQL level of the FIPS SQL standard; however, it is not unrealistic to require that they support a limited SQL interface, even a read-only interface, provided by one of the SQL/ERI Server profiles. New procurements to add components to the National Information Infrastructure, or to upgrade existing components, can define the necessary SQL schemas and point to appropriate SQL/ERI Server profiles as procurement requirements. This standard may also be applicable, on a case-by-case basis, in many of the following areas. 8.Ž Legacy databases. A legacy database is an already installed database managed by a non-standard database management system (DBMS). This may include hierarchical and network databases popular in the 1970 to 1990 timeframe, or even home-grown databases developed by Federal departments and agencies over the past three decades as enhancements to proprietary file access mechanisms (e.g., ISAM or VSAM in IBM environments). A Federal procurement might solicit development of a new interface to a legacy database that supports one of the SQL/ERI Server profiles. Modern applications could then access the legacy data using standard SQL statements. 8.2 Full-Text document databases. A document database is a database specialized to optimize the handling of text and text operations. Traditional SQL systems have been weak in this area because the SQL 1986 and 1989 standards had very minimal requirements for text management. The SQL 1992 standard has enhanced requirements for character sets and character string operations, but still falls short of the text handling requirements of text- intensive applications. An emerging standard for SQL/MM Part 2: Full-Text, expected sometime after 1996, is addressing more sophisticated user requirements for SQL management of text. In the meantime, some SQL vendors are offering Full- Text extensions and some Full-Text document database vendors are offering limited SQL interfaces. A Federal procurement for a Full-Text document database management system may stipulate, in addition to its requirements for text management, conformance to one of the SQL/ERI Server profiles as either a mandatory or a desirable requirement of that procurement. 8.3 Geographic Information Systems. A geographic information database is a database structured to optimize the handling of spatial data and spatial operations, especially traditional earth science information such as maps or physical topography, as well as any social, economic, or demographic data that is spatially referenced. Traditional SQL systems have been weak in this area because the existing SQL 1992 standard does not require support for constructor data types such as lists, sets, and arrays, often required as the basis of definition for more complex spatial data structures. An emerging standard for SQL/MM Part 3: Spatial, expected sometime after 1996, is addressing more sophisticated user requirements for SQL definition and management of spatial data types and spatial operations. In the meantime, some SQL vendors are offering Spatial extensions and some Geographic Information System (GIS) vendors are offering limited SQL interfaces. Since many Federal applications require integration of traditional government data (e.g. Census, Labor statistics, Economic Indicators, Meteorological, Health Care) with Geographic Information Systems, a Federal procurement for a Geographic Information System (GIS) may stipulate requirements for two-way integration capabilities, both to read data from an SQL database into the GIS for incorporation into spatial objects and to provide SQL application access to the value-added result. The first of these requirements is a procurement consideration not addressed by this FIPS PUB, the second could be addressed in a GIS procurement by specifying mandatory support for application access via one of the SQL/ERI Server profiles. 8.4 Bibliographic information retrieval. A bibliographic database is a database that supports the requirements of American National Standard Z39.50-1992, a standard for information retrieval developed by the National Information Standards Organization (NISO). Appendix C of that standard specifies a list of approximately 75 attributes for each database of documents. Each attribute assumes an ASCII character string value. The 1992 version of Z39.50 specifies OSI Application Layer protocols for read-only queries over one or more databases each supporting the listed attributes. The results of a query are returned to the user using a NISO Record Syntax specified by other NISO standards. Annex E of Z39.50 identifies 19 possible formats for Record Syntax. If it is desirable to integrate such bibliographic databases into an SQL environment, then a procurement might solicit development of a new interface to the bibliographic database that supports one of the SQL/ERI Read-Only Server profiles, probably with an RDA/SQL-Server binding style to take advantage of the underlying communications protocols already specified by Z39.50. Each NISO database would map to an SQL table and each bibliographic attribute would map to a column of the table. Each NISO supported Record Syntax would also map to an SQL Table with each field of the record equivalent to a column of the table. SQL applications could then access the bibliographic data using standard SQL statements. 8.5 Object database interfaces. An object database is a database managed by an object database management system (ODBMS). Object database management systems may implement non-relational data models and thus may have difficulty supporting full-function SQL requirements for nested subqueries, multi-table joins, Group-By set functions, derived columns in a Select list, value-based referential integrity, or other relational model features. On the other hand, ODBMS's may offer advanced features of object models that are rarely supported by relational implementations. These features might include user-defined abstract data types (ADTs), object identifiers, methods, inheritance, polymorphism, encapsulation, and other object-oriented enhancements. Because of their close relationship with an object-oriented programming language (e.g., C++ or Smalltalk), ODBMS's often make it easy to integrate user-written routines into database operations. Often object DBMS's are used for specialized applications with complex data structures and application-specific methods on those structures. The next version of the SQL standard, expected sometime after 1996, will likely incorporate many of these object database features into the SQL language. In the meantime, some SQL vendors are enhancing their products to support user-defined ADT's and other object capabilities and some object database vendors are supporting robust SQL interfaces to their products. The ODMG-93 specification sponsored by the Object Database Management Group, an informal consortium of approximately ten object database vendors, points to an Object Query Language that has many of the same features as SQL. Thus it makes sense to support an SQL interface, at least a Read Only SQL interface, to these products. The specialized methods appropriate to each object could be viewed as callable SQL procedures. If it is desirable to integrate an object database into an SQL environment, then an original procurement for ODBMS software, or a follow-on new procurement for an SQL interface, could point to one of the SQL/ERI Server profiles as a mandatory or desirable procurement requirement. The vendor of an object database product may automatically support SQL views of its collection types, or a procurement could specify an exact mapping from object collection types to tables that must be supported as a procurement requirement. In either case, the result is that an SQL application would have access to objects and methods using standard SQL syntax and a standard SQL binding style. 8.6 Federal data distribution. A number of Federal agencies support public access to federally maintained data either by maintaining a public database of information or by distributing data on floppy disks, CD-ROMs, or magnetic tape. All Federal departments and Agencies, but especially those with responsibility for providing public data (e.g. Agriculture, Health and Human Services, Census, NASA, NOAA, BLS), will have increasing requests for convenient public access to data. Even individuals will be requesting additional electronic access to their individual data maintained by various Federal agencies (e.g. IRS, Social Security, Medicare). An existing SQL database could provide public access by supporting a Remote Database Access (RDA) or Direct Invocation user interface with appropriate access control restrictions; a non-SQL legacy database could support one of the SQL/ERI Read Only Server profiles for RDA or Direct Invocation in addition to the ERI profiles supported for internal goverment use (see 9.1 above). When goverment data is distributed on disk or CD-ROM, it is often accompanied by software, executable on different workstations, to provide convenient views of the data using a graphical user interface (GUI). At the present time, the government must provide software executable on a number of different workstation platforms with different GUI capabilities and requirements. In the future, the government might reduce its software development efforts by providing an appropriate SQL/ERI front-end, usually with the SQL Call Level Interface option, for each workstation family (e.g. DOS, Macintosh, Unix). Such software should be available commercially in the near term. End users could then use their favorite client-side SQL environment tool to browse the data and present it using report- writer, graphical viewer, or hypermedia presentation techniques. 8.7 Operating system file interface. Sometimes an SQL application desires access to the file characteristics of files stored in an operating system's file store. For example, the POSIX standard (FIPS PUB 151) requires that the following file characteristics be maintained for each file in the persistent file directory: file mode, file serial number, id of device containing file, number of links, id of file owner, id of file group, file size in bytes, time of last access, time of last data modification, and time of last file status change. If it is desirable that this information, as well as file name, file extension, and file usage characteristics, be accessible to SQL applications in the same operating system environment, then an original procurement for a POSIX compliant operating system, or a follow-on new procurement for SQL query access, could point to one of the SQL/ERI Read Only Server profiles supporting an SQL schema description of the desired attributes as a procurement requirement. 8.8 Open system directory interface. Sometimes an SQL application desires access to the directory information related to all of the workstations accessible in a local area network (LAN), or a wide area network (WAN). For example, the X.500 (Directory) standards supported by the International Telecommunications Union (ITU) require that certain explicit directory information be accessible at each site, and part of the IEEE POSIX standard specifies an application program interface (API) for these directory services. In addition to supporting the required X.500 communications protocols and the POSIX API, a number of implementations are also making this information available as an SQL database. If it is desirable that this information be accessible to SQL applications in the same open systems environment, then an original procurement for X.500 compatble communications products, or a follow-on new procurement for SQL query access to directory information, could point to one of the SQL/ERI Read Only Server profiles supporting an SQL schema description of the desired directory information as a procurement requirement. 8.9 Electronic mail repositories. Most electronic mail systems use the host file system to maintain e-mail documents in a user's file space and to maintain a log of e-mail activity in its own file space. Sometimes an electronic mail usability tool, procured separately from the e-mail system itself, will require SQL query access to these files, either relative to a specific individual user or to a group of users. If such SQL access is desirable, then the original procurement for the e-mail system, or a new procurement just for a follow-on SQL interface, might specify an SQL schema of metadata that must be maintained and an appropriate SQL/ERI profile for limited SQL access. Under this scenario, there might exist an underlying base table with column attributes such as: mail-id, owner, title, subject, to/from-address, linked-to-mail-id, timestamp, length, confirmation, content. Each e-mail user might own a table view that identifies all instances from the base table of e-mail sent or received by that user. Users would then be able to grant Select or Delete permissions on their own views to other users, thereby maintaining privacy in the database while supporting flexible multi-user access for the usability tools. 8.10 CASE tool repositories. Many computer-aided software engineering (CASE) tools operate similarly to the e-mail usability tools described above. Each CASE tool may use the underlying file system to maintain persistent data pertinent to its application domain. It is unrealistic to expect every such data repository to handle full function SQL statements. Instead, such repositories can be integrated into an SQL environment if they provide even the simplest SQL/ERI minimal SQL interface. The CASE tool can make simple external SQL views available to more powerful SQL processors, and those processors can, in turn, provide the full power and flexibility of the SQL language to end user applications. If integration of CASE tools into an SQL environment is desirable, then the original CASE tool procurement, or a new follow-on SQL interface procurement, can require implementation of an appropriate SQL/ERI Server profile over an SQL schema specified by that procurement. 8.11 XBase repositories. XBase is an emerging ANSI standard specification for a computer database and graphical presentation language popular on personal computers. The project description for this proposed new language standard specifies the desirability of an SQL interface so that XBase users can have access to standard conforming SQL databases. In this situation, XBase may be regarded as a client-side product in an SQL environment. The XBase language also provides data definition and data management capabilities for persistent tables of data in personal computer environments. With the advent of computer networks, it is often desirable to consider data on individual personal computers or workstations as stand-alone data repositoires in an integrated data processing environment. In this situation, XBase implementations may be regarded as a server-side products in an SQL environment. If it is desirable to integrate data from individual XBase repositories into a distributed SQL processing environment, then the original XBase procurement, or a follow-on SQL interface procurement, could specify an appropriate SQL/ERI Read-Only Server or SQL/ERI Read-Write Server profile for convenient access from other applications in the SQL environment. All XBase tables and columns would map directly to SQL tables and columns, with either XBase data types or SQL data types for columns, as appropriate. If XBase data types are used, then the SQL view would present those columns as SQL Domains and would provide special callable functions for XBase operations on those data types. All applications could then depend upon a single, standard language for access to persistent data, and the SQL Call Level Interface (SQL/CLI) and/or SQL Remote Database Access (SQL/RDA) could be used for interoperability. 8.12 C++ sequence class repositories. The emerging ANSI standard for the C++ programming language specifies search capabilities for Sequence classes in its Standard Template Library. Such sequence classes may sometimes be considered as persistent, data repositories. Often a small, or isolated, database application will use C++ Sequence classes for data management. Since the template library for Sequence classes provides search capabilities analogous to simple SQL predicates, it may be possible to integrate C++ Sequence class repositories into an SQL environment with a minimum of development effort. If such integration is desirable, then either in-house development, or inexpensive commercial software, may provide the appropriate SQL/ERI interface. All applications in the SQL environment would then have homogeneous access to the C++ data repository using standard SQL language statements. 8.13 Object Request Broker repositories. An Object Request Broker (ORB) provides user access to a collection of objects that have public interface definitions. In the X/Open and Object Management Group's architecture for a common object request broker (CORBA), these interface definitions are maintained in a database, called the Interface Repository, that is analogous in intent to an SQL Information Schema. If integration of such interface repositories, or integration of the public interfaces themselves, into an SQL environment is desirable, then the original ORB procurement, or a new follow-on SQL interface procurement, can require implementation of an appropriate SQL/ERI Server profile over an SQL schema specified by that procurement. 8.14 Real-Time database interface. A real-time database is a database optimized for access speed and specialized for handling data structures prevalent in radar systems, aircraft guidance, and satellite transmission. Often real-time databases are specially developed in a systems programming language for performance efficiency. Application-specific data structures are then stored in collection types, usually analogous to the C++ sequence classes mentioned above, with SQL cursor-like operations (e.g., Fetch, Insert) for moving structure instances to and from the database. The Real-Time Object Manager (RTOM) supporting Navy command and control systems is an example of such a system. If it is desirable to integrate real-time databases into an SQL environment, then either the original real-time database procurement, or an explicit follow-on for an SQL interface, could point to an appropriate SQL/ERI Server profile supporting an application-specific schema as a procurement requirement. 8.15 Internet file repositories. The Internet Engineering Task Force (IETF), the engineering group responsible for developing Internet Society applications, has published file access specifications for Wide Area Information System (WAIS) and World Wide Web (WWW). Files stored in these repositories in standard text formats, or in multimedia formats for hypertext, images, audio, motion pictures, or music, are then accessible on the Internet using File Transfer Protocols (FTP) or other client-side file access and presentation tools such as GOPHER and MOSAIC. Since the metadata for these files is very similar to the metadata of a file system (see 9.7 above) and the text content is often subject to bibliographic information retrieval (see 9.4 above), it may be possible to integrate these repositories into an SQL environment with a minimum of development effort, possibly even using tools already available for integrating file systems and bibliographic retrieval systems. If it is desirable to integrate WAIS and Web repositories into an SQL environment, then either ad hoc academic development, or inexpensive commercial software, may provide the appropriate SQL/ERI Server interface. Use of SQL/ERI profiles may provide needed access controls and integrity constraints on the repository side, as well as homogeneous access from SQL applications in remote client-side sites. 9. Conformance Testing The National Institute of Standards and Technology offers a formal testing service for SQL implementations in support of its federally mandated program of Federal Information Processing Standards (FIPS). The NIST SQL Test Suite was first developed in 1988 to support testing of FIPS PUB 127, the standard for Database Language SQL. This test suite has evolved over the years to support new interfaces and other enhancements to the SQL standard as they are adopted by national and international SQL standardization groups. Version 4.0 of the NIST SQL Test Suite, available since June 1993, contains tests for the Entry SQL level of the 1992 standard; future versions will test other levels of conformance as well as new interface standards such as the Call Level Interface (CLI) and Remote Database Access (RDA). It is expected that this test suite will be modified as needed to enable conformance testing of the various SQL/ERI Server profiles specified herein and that validation reports for tested SQL/ERI products will be published quarterly in the NIST Validated Products List. The following sections discuss features of the NIST SQL Test Suite and how it might be modified for future validation of SQL/ERI products. 9.1 NIST SQL Test Suite The purpose of the NIST SQL Test Suite is to help evaluate conformance of SQL implementations to mandatory requirements of FIPS PUB 127. This test suite is used as part of the formal testing service for SQL that issues Certificates of Validation for tested products passing all required tests. A Validation Summary Report is issued for all implementations tested. A Validation Summary Report documents, to the extent tested, the implementation's conformance to FIPS PUB 127-2. NIST publishes a quarterly register, Validated Products List, showing SQL implementations which hold current Certificates of Validation and registered Validation Summary Reports. The NIST SQL Test Suite was first made available to the public in August 1988 as Version 1.1, and included tests for three programming languages: COBOL, FORTRAN, and C. In May 1989 the test suite was enlarged and released as Version 1.2, and included tests for additional SQL features, as well as tests for Embedded SQL Pascal and a Pascal interface to Module Language SQL. Version 2.0, completed about a year later, contained additional tests as well as the support system (software utilities) to administer the validation process. Continuing standardization work for SQL resulted in a revised SQL standard, ANSI X3.135-1989, published December 1989. This revised standard contained integrity enhancements for SQL, including referential integrity, default values for columns, and check clauses. FIPS PUB 127 was revised to specify these new integrity features as an optional module which federal agencies could either require or (by default) not require in a procurement. Version 2.0 of the test suite also contained a set of tests to validate conformance to this optional module. In the same time frame, ANSI X3.168-1989 standardized the embedding of SQL in programming languages (Ada, C, COBOL, FORTRAN, Pascal and PL/I). The first release of the NIST SQL Test Suite contained tests for Embedded SQL, in anticipation of this standard. Since numerous implementations of Embedded SQL already existed, prior to standardization, NIST hoped that the early availability of tests for that interface would hasten the conformance of implementations to the revised FIPS PUB 127-1. Version 3.0 provided test suites for Ada bindings to SQL and also tests for the errata in the SQL Information Bulletin SQLIB-1. ANSI X3.135-1992, the 1992 revision of the SQL standard, represents a major enhancement in SQL functionality. Conformance to FIPS PUB 127-2, Entry SQL, requires additional capabilities from an SQL implementation beyond those required for minimal conformance to FIPS PUB 127-1. The Integrity Enhancement Feature is now mandatory. Support for the following additional features is now required: SQLSTATE status codes, delimited identifiers, renaming columns, commas in parameter lists, SQL Errata against ANSI X3.135- 1989 (approved after publication of SQLIB-1). Version 4.0 of the NIST SQL Test Suite provides tests for all the features in Entry SQL. Version 2.0 was used in the formal testing service offered by NIST which opened in April 1990. Version 3.0 became the official version of the test suite in July 1992, and Version 4.0 became the official version in January 1994. The NIST SQL Test Suite provides ten programming language test suite types: Embedded (preprocessor) SQL Ada, Embedded SQL C, Embedded SQL COBOL, Embedded SQL FORTRAN, Embedded SQL Pascal, Module Language Ada, Module Language C, Module Language COBOL, Module Language FORTRAN, and Module Language Pascal. NIST also provides an Interactive Direct SQL test suite type to test interactive invocation of SQL statements as defined in FIPS 127-2. The original test programs were developed in Embedded (preprocessor) SQL for the C language. The design objective for the test programs was to provide a simple test for every general rule in the standard and to cover fully all SQL syntax. Ada, COBOL, FORTRAN, and Pascal test routines, as well as module language test routines, were generated by software (written by NIST) from the original Embedded SQL C language. For this reason, the style of the translated code may seem unnatural for a given language. The original Embedded SQL C Language tests are very simple, using only a carefully restricted subset of the C Language. Otherwise, it would be technically infeasible to translate these tests into the other programming languages. The Interactive Direct SQL test files were created by extracting SQL statements from the Embedded SQL C programs. Test cases were reworked to avoid reference to cursors and host variables. The resulting text files were annotated with comments describing the test and the expected results required for a "pass." Each test is designed to be short and simple, exercising as little of the host language as possible. The host language compiler should be validated separately to ensure that it conforms to the applicable standards. The use of complex host language code in SQL conformance programs would make tests difficult to understand and would make it more difficult to resolve questions of interpretation of the SQL standard. Most of the tests involve 3 small tables containing a total of 23 rows. The data types of columns in these tables are either character string or integer, so the tests will work across all these programming languages. Other tables are used to test approximate numeric and scaled exact numeric data types. Additional tests have been written to cover the data type variables specific to each language. Each program contains one or more tests. Although allowing only one test per program would simplify the evaluation of implementations with a high degree of nonconformity, it would impose additional overhead on implementations with a high degree of conformity. The tests within a program are intended to be independent so any one test may be removed without affecting the remaining tests. Each test is self-evaluating; i.e., each test is written with knowledge of the data in the database and the correct response for a specific SQL statement. Each test checks for correct execution of the SQL statement and then inserts into the reporting table, TESTREPORT, a "pass" or "fail" value for that test. After all the test programs have executed, a summary of test results is produced automatically by another program which reads TESTREPORT. As each test is executed, a description of the test is printed on standard output (the screen) along with appropriate data values and the test result. This output should be considered as a "log" of the test programs. It is intended to assist in debugging and in analyzing nonconformities. This output is not needed to produce the automated conformance analysis of the SQL test suite. These tests are not designed to debug DBMS software; however, they may help identify problem areas. The use of small tables does not challenge the buffer-management strategy of an implementation. In addition, the frequent use of ROLLBACK (after tests which modify tables), to restore the base data to its original state (and thus simplify testing), limits testing of the COMMIT path. Since the SQL standard does not address physical database design, it is likely that schema definition and DML tests will be run in the simplest manner possible, without optimization. The test suite includes a few tests for the "SQL Flagger" option specified in Section 10.d of FIPS PUB 127-2. These tests contain extensions to the SQL standard. In general, if an SQL implementation supports these extensions, it must be able to flag the extensions with warning messages. These tests are to be run with the flagging turned off and then, if successful, rerun with the flagging turned on. Test evaluation for the SQL Flagger is subjective, based upon examination of any warnings which are printed (or displayed on the screen) when extensions to SQL are used. The "SQL Flagger" tests are very limited. They are intended to demonstrate the existence and style of monitoring provided by a vendor. They do not systematically attempt to detect SQL extensions which are not flagged. For Entry SQL, standard features which are required only by higher levels (beyond Entry) should all be flagged along with nonstandard features. It is desirable, but not required, that the flagging message indicate the exact status (Transitional SQL, Intermediate SQL, Full SQL, nonstandard extension) of the flagged feature. The test suite has a set of programs to test the specifications in FIPS PUB 127-2, Section 16.6, "Sizing for database constructs." These minimum specifications for the precision, size, or number of occurrences of database constructs are contained (by default) in procurements which do not provide alternate specifications. Reporting of the FIPS sizing tests is separate from reporting on other tests. FIPS sizing tests are not technically considered conformance tests, and passing these tests is not required for a Certificate of Validation for FIPS 127-2. Utility programs are included to make global and program-specific changes in a controlled and systematic manner and to document those changes in the automated report. The test suite contains additional tests to help evaluate conformance to: (1) the minimum sizing parameters for database constructs specified in FIPS PUB 127-2, Section 16.6, (2) the flagging of extensions, specified in FIPS PUB 127-2, Section 10.d, SQL Flagger, and (3) Interactive Direct SQL, as specified in FIPS PUB 127-2 Section 16.5. The test suite contains ten different programming language test suite types. An SQL implementation claiming conformance to FIPS PUB 127-2 for a particular SQL interface; for example, Embedded SQL COBOL, should be tested with the appropriate test suite type. The programming language compiler used for testing should conform to the FIPS standard for that language and should be listed in the Validated Products List, which is published quarterly by NIST. The intention of NIST is that this test suite should be used to help evaluate compliance of implementations of SQL to FIPS PUB 127- 2. A correct implementation of FIPS 127-2 requires the incorporation of the SQL standard document, ANSI X3.135-1992 (or ISO/IEC 9075:1992), into the design specifications for the SQL implementation. The SQL test suite then confirms that the standard has been interpreted and implemented correctly by the SQL supplier. The test suite is intended to be used, in conjunction with the SQL supplier's own independently-developed regression tests, to ensure a robust and internally consistent product. A quality SQL implementation is not achievable by simply "fixing the product" until it passes the tests. It is important to recognize the limitations of this test suite and of any test suite. In particular, it would be incorrect for implementations to claim conformance to FIPS PUB 127-2 simply by virtue of correct performance of these tests. It is reasonable, however, for purposes of procurement, to substantiate claims of conformance to FIPS PUB 127-2 by demonstrating correct execution of these tests. Performance is recognized as a critical selection factor in many DBMS procurements. However, performance is not an issue for standards validation testing and is not measured by this test suite. 9.2 Testing SQL/ERI implementations The NIST SQL Test Suite tests an entire level of the FIPS SQL standard and includes tests for schema definition, data manipulation, transaction management, and programming language interface at each level. Each of these areas are tested separately, so it should not be too difficult to modify the test programs to test the various levels of SDL and DML, the transaction mangement alternatives, and the different binding styles of the SQL/ERI Read-Write profiles. At the present time, the test suite does not distinguish between the Minimal SQL and Entry SQL levels, so more extensive modification will be needed to accommodate Minimal DML testing without losing completeness of coverage. In many cases, SQL/ERI profile testing will be accomplished by giving an implementation an SQL script of table definitions that will be used for DML testing. Any implementation claiming to support Minimal SDL or above will be able to read and implement the table definitions. If an implementation does not claim to support any schema definition, then they will be free to implement the schema definition in an implementation-dependent manner, so long as the result is "as if" the SQL script had been properly executed. Most of the DML testing is accomplished over just three table definitions with a handful of rows in each table. If an SQL/ERI Server implementation supports Read- Write at the Minimal DML level or above, it should be able to load data into the three tables to satisfy the testing requirements of a large majority of the tests. If the SQL/ERI Server implementation is a Read-Only implementation, then it would be free to load the data in an implementation-dependent manner. Since the test suite in the past did not make a distinction between Read-Write servers and Read-Only servers, a number of the tests have Update and Select statements mixed together in the same test. Often a test will update an existing column, or add a new row to a table, and then test to determine if a certain query condition is satisfied. For a Read-Only implementation, these tests will have to be substantially modified in order not to lose completeness of coverage. It is the intent of NIST to do this modification on a schedule consistent with the availability of funding and other resource requirements. 10. Procurement Considerations This FIPS for SQL Environments may be used to assist in the procurement of any of the following types of products: -- Client-side user tools -- SQL/ERI Clients -- SQL/ERI Servers This first specification is particularly oriented toward implementation profiles for SQL/ERI Servers, but may be of limited assistance in procurements for each of the other two types of products. The assumptions on each of these product types in an SQL Environment are given in Section 1.2, "SQL environment", Section 2, "Data Integration Architecture", and Section 3, "SQL External Repository Interface (SQL/ERI)". This specification cannot be used as the sole procurement instrument for any one of these product types. Instead, to be effective, it must be supplemented by other requirements and/or complementary schema information as indicated in other parts of this specification. The following subsections offer advice on how best to use this specification when procuring a product to be integrated into an SQL environment from any one of these product types. 10.1 Client-side products A client-side product in an SQL environment is a product that uses the SQL language to access persistent data on behalf of some end user. The product could be a graphical user interface (GUI) or some other presentation tool interfacing with a human end user, or it could be a value-added, computer-aided software engineering (CASE) productivity tool that is accessed from some other end user tool. The following steps may be helpful: 1.State the functional requirements of the tool itself. This could vary considerably and is beyond the scope of the FIPS PUB for SQL Environments. 2.Case: a. If the tool interacts directly with a human end user, then state the requirements of the human to computer interface. This interface may depend upon "Human/Computer Interface Services" as discussed in Sections 3.3.2 and 4.8 of the NIST Application Portability Profile (APP) for Open Systems Environments (see [22]). b. If the tool provides a services interface to other software tools, then state the calling requirements and data types that must pass across this interface. This interface may depend upon the Common Object Request Broker Architecture (CORBA) published by OMG and X/Open, or upon emerging international standards for language independent procedure calling mechanisms. 3.Choose an SQL binding style to be used between the client-side tool and the SQL data repository. See Section 6, "SQL Binding Alternatives", for discussion of the available binding styles. It is expected that the SQL/CLI binding style will be the most popular choice for client-side products within a single local client/server environment and that the Direct Invocation or RDA/SQL-Server binding styles will be the most popular choices when the client-side tool is accessing server data in a remote data repository. 4.Identify all of the SQL data types, and all of the SQL Abstract Data Type (ADT) instances, that may need to be imported into the application tool. Make sure that the functional requirements of the tool include the manipulation and presentation of these application-specific objects. 5.If the client-side tool is going to create and manage its own public persistent data, and thereby be an SQL/ERI Server for other products in the SQL Environment, then follow the steps in Section 10.3 below for procurement of an SQL/ERI Server. 10.2 SQL/ERI Clients An SQL/ERI Client is a full-function, conforming FIPS SQL data manager that, in addition, supports the SQL/ERI interface described in Section 3. The functional requirements of the client side of this interface must be supplied by an individual procurement since they are beyond the scope of this first specification for SQL/ERI profiles. The following steps may be helpful: 1.If a full-function, conforming FIPS SQL data manager is not already available, then follow the Special Procurement Considerations given in Section 16 of FIPS PUB 127-2 [3] for procurement of an SQL Processor. 2.State the minimum profile of the SQL/ERI Server products that are to be integrated into the SQL Environment by this SQL/ERI Client. Use the profile items identified in Section 7 to determine this minimum profile. 3.Make sure that the SQL Processor supports all of the binding styles identified in the minimum profile for SQL/ERI Servers to be accessed, since a conforming FIPS SQL Processor need only support one such binding style. In particular, if the SQL/CLI or RDA binding styles are specified, make sure that the SQL Processor supports Connection Management statements (a Full SQL feature) and can map those statements to appropriate SQL/CLI service calls or appropriate RDA/SQL-Client protocols. 4.State the functional requirements for "schema federation", that is, the requirements for how the SQL processor is to make the SQL Schemas from an SQL/ERI Server visible as schema elements in some Catalog of the SQL Processor. The end user, be it human or software, should not be expected to have to do its own schema federation; a database administrator should be able to integrate the external schemas from the SQL/ERI Servers and make them appear as if they were part of the local SQL data. Most SQL implementations have the ability to do this, but it is not yet part of the de jure SQL standard, so the procuring authority cannot yet point to this capability in a formal standard and require conformance. This topic will be addressed further in profile specifications for SQL/ERI Clients, a follow-on objective of the FIPS for SQL Environments. 5.Make sure that the SQL Processor can translate full-function SQL DML statements into a module of lower level SQL DML statements (e.g. Minimal DML) that have the same effect. In order to do this, it may be necessary for the SQL Processor to build temporary tables, populate the temporary tables from data retrieved from external SQL/ERI Servers, and then further manipulate the data in the temporary tables before returning the correct result to the end user. For a further discussion of this point see Section 3, which discusses the assumed capabilities of an SQL/ERI Client. This topic will be addressed further in profile specifications for SQL/ERI Clients, a follow-on objective of the FIPS for SQL Environments. 6.If the profile for SQL/ERI Server products to be supported requires SQL/PSM, SQL/MM, ADTs and methods, or Object data management, then make sure that the SQL Processor is able to invoke SQL functions and ADT methods that are defined by an external server. 10.3 SQL/ERI Servers An SQL/ERI Server is a server-side product in an SQL environment that controls the data that is to be made available to client-side tools. An SQL/ERI Server may be a legacy database, a specialized data manager such as a Geographic Information System or a Full-Text document management system, or an object database management system. With even partial support of the SQL language, such products are able to provide a degree of integration between themselves and other products in the SQL environment. The following steps may be helpful in the procurement of an SQL/ERI Server: 1.Determine if the SQL/ERI Server is to be a Read-Only Server or a Read-Write Server. A read-only server will have a much easier time meeting the conformance requirements specified in Section 7. Failure to specify either Read-Only or Read-Write means that, by default, the SQL/ERI Server is to be a Read-Only Server. 2.Identify any SQL schema definitions that the server shall support. See the discussions in Section 8 for examples of the kinds of schema definitions that might be specified. A procurement may require that a specific schema definition be supported, or alternatively, it may simply require that a proposal in response to a procurement request include an SQL schema for the data that is to be made available. Failure to identify any SQL schema definitions to be supported means that, by default, the supported SQL schema definitions are implementation-defined. 3.Specify a base level of SQL data manipulation language (DML) that shall be supported, by choosing exactly one of the following DML alternatives: Minimal DML, Entry DML, Transitional DML, Intermediate DML, or Full DML. See the discussion of each of these alternatives in Section 4 and the "Data Manipulation Rules" in Section 7.1 (Read-Only) or Section 7.2 (Read-Write). Failure to choose a base level of SQL data manipulation language means that, by default, the base level of SQL data manipulation language is Minimal DML. 4.Specify a base level of SQL schema definition language (SDL) that shall be supported, by choosing exactly one of the following SDL alternatives: None, Minimal SDL, Entry SDL, Transitional SDL, Intermediate SDL, or Full SDL. See the discussion of each of these alternatives in Section 4 and the "Schema Definition Rules" in Section 7.1 (Read-Only) or Section 7.2 (Read-Write). Failure to choose a base level of SQL schema definition language means that, by default, the base level of SQL schema definition language is None. 5.Specify a base level of SQL transaction management that shall be supported, by choosing exactly one of the following transaction management alternatives: None, Commit-Rollback, Transaction Mode, Transaction Isolation, Transaction Diagnostics, or Constraints. See the discussion of each of these alternatives in Section 7 and the "Transaction Management Rules" in Section 7.1 (Read-Only) or Section 7.2 (Read-Write). Failure to choose a base level of SQL transaction management means that, by default, the base level of SQL transaction management is Commit-Rollback. 6.Specify a default isolation level for SQL transaction management that shall be supported, by choosing exactly one of the following default isolation level alternatives: Read Uncommitted, Read Committed, Repeatable Read, or Serializable. See the discussion of each of these alternatives in Section 7 and the "Transaction Management Rules" in Section 7.1 (Read-Only) or Section 7.2 (Read-Write). Failure to choose a default isolation level means that, by default, the default isolation level is Read Committed. 7.Specify the binding styles that shall be supported, by choosing one or more of the following binding style alternatives: Module, Embedded SQL, Direct Invocation, SQL/CLI, or RDA/SQL-Server. See the discussion of each of these alternatives in Section 6 and effect of each alternative in the rules in Section 7.1 (Read-Only) or Section 7.2 (Read-Write). It is expected that the SQL/CLI binding style will be the most popular choice for SQL/ERI products within a single local client/server environment and that the Direct Invocation or RDA/SQL-Server binding styles will be the most popular when the server data repository is an isolated node in a wide area client/server environment. Failure to choose a binding style means that, by default, the SQL/CLI binding style (see [10]) is the only requirement. 8.For each of the Module, Embedded SQL, or SQL/CLI binding styles chosen above, specify the programming language interface that shall be supported, by choosing one or more of the following programming language alternatives: Ada, C, COBOL, Fortran, MUMPS, Pascal, PL/I, or SAMeDL. Failure to choose a programming language interface means that, by default, the interface for Programming Language C is the only requirement. 9.Specify which SQL'92 features beyond those required above are to be supported, by choosing "None" or by identifying features by feature number from FIPS PUB 127-2 (see Section 14 of [3]). See the discussion of SQL'92 features in Section 5.1. Identify which features are "required" and which are "desirable". Be very careful about requiring individual features (rather than a FIPS specified level of features) as that practice can easily lead to procurement protests. Be sure to declare how desirable features will be scored in the evaluation of responses to the procurement. Note that a Read- Only interface need only support the Read-Only aspects of each feature. Determine if it is a procurement requirement for the implementation to support the SQL_FEATURES table as specified in Section 15 of FIPS PUB 127-2 (required for Intermediate DML and above). Failure to specify any additional SQL'92 features to be supported means that none are required. 10.Specify whether or not the SQL/PSM optional extension shall be supported; if SQL/PSM support is required, then the implementation shall support all requirements of the then current SQL/PSM specification (see [11]). See Section 5.2 above for a discussion of SQL/PSM. Note that a Read-Only interface need only support the Read-Only aspects of SQL/PSM. If SQL/PSM is required and if the SQL/ERI Server is a Read-Only server, then specify exactly which functions and ADTs are to be invokable by supplying the appropriate SQL3 schema definitions for the required functions, modules, and procedures. Failure to specify a requirement for SQL/PSM means that support for SQL/PSM is not required. 11.Specify which, if any, conformance alternatives from SQL/MM shall be supported; if SQL/MM support is required, then point to the then current SQL/MM specification (see [13]) and explicitly indicate which Parts, and which conformance alternatives within each Part, are required. See Section 5.3 above for a discussion of SQL/MM. Note that a Read-Only interface need only support the Read-Only aspects of SQL/MM. To be successful, a Read-Only procurement should include the desired SQL/MM features in the SQL schemas produced in item 2 above. Failure to specify a requirement for any of the SQL/MM Parts, or conformance alternatives within each Part, means that none are required. 12.Specify which SQL3 features dealing with abstract data types (ADTs), methods, and object data management are to be supported; if any of these SQL3 facilities are to be supported, then point to the appropriate ADT or object management clauses in the then current SQL3 specification (see Sections 5.4 and 5.5 above and [12]) and explicitly indicate which features are required. Note that a Read-Only interface need only support the Read-Only aspects of any indicated SQL3 features. To be successful, a Read-Only procurement should include the desired SQL3 features in the SQL schemas produced in item 2 above. Failure to specify a requirement for any of these SQL3 features means that none are required. 13.Specify the minimum requirements for the precision, size, or number of occurrences of any required SQL data types or features. See the discussion of sizing in Section 5.1. Unless otherwise specified in a procurement, the Entry Value sizing limits from Section 16.6 of FIPS PUB 127-2 apply to all Entry SQL or Transitional SQL features and the Intermediate Value sizing limits apply to all Intermediate SQL or Full SQL features. A procurement is responsible for identifying its own sizing limits on all required features, but in the absence of an explicit declaration, the default minimum limits apply for that procurement. Determine if it is a procurement requirement for the implementation to support the SQL_SIZING table as specified in Section 15 of FIPS PUB 127-2 (required for Intermediate DML and above). 14.Specify the minimum requirements for character set support. See the discussion of character sets in Section 16.7 of FIPS PUB 127-2. Failure to indicate explicit character set requirements for an SQL/ERI Server means that support for the 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. 15.Specify any SQL/ERI Server performance requirements. This standard is silent on the topic of performance. The NIST SQL test suite 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. 16.Specify any SQL/ERI Server security requirements. Some environments require "trusted" database access beyond the GRANT and REVOKE privileges and the view definition capabilities specified by the SQL'92 standard. Procurements for systems that operate in these environments should include explicit additional requirements to be supported. For additional information, refer to Trusted Database Management System Criteria (NCSC-TG-021 Version 1), National Computer Security Center, April 1991, and Security Issues in Database Language SQL, NIST Special Publication 800-8, NIST, August 1993. 17.Read Sections 16.8, "DBMS procurement", and 16.11, "System integration", in FIPS PUB 127-2 to see if any of the discussions therein apply to this procurement for an SQL/ERI Server. Section 16.8 lists a number of emerging SQL3 features (see [12]) that might be listed as "desirable" features in an SQL/ERI Server procurement. Remember that a Read-Only interface need only support the Read-Only aspects of any specified features. References 1. Cannan, S.J. and G.A.M. Otten. SQL - The Standard Handbook, McGraw-Hill Book Co, Berkshire SL6 2QL England, October 1992. 2. Date, C.J. with Hugh Darwen. A Guide to the SQL Standard, Addison-Wesley Publishing, Reading, MA 01867 USA, October 1992. 3. FIPS SQL, Federal Information Processing Standard for Database Language SQL, 2nd revision, FIPS PUB 127-2, U.S. Department of Commerce, National Institute of Standards and Technology, June 2, 1993. 4. Gallagher, Leonard. Object SQL: Language Extensions for Object Data Management, Proceedings of the First International Conference on Information and Knowledge Management (CIKM), Baltimore, MD, 9-12 November 1992, International Society of Mini and Micrcomputers (ISMM), pages 17-26. 5. Gallagher, Leonard and Joan Sullivan. Database Language SQL: Integrator of CALS Data Repositories, NIST technical report, NISTIR 4902, September 1992. 6. IEEE SFQL. IEEE Standards Committee on Optical Disk and Multimedia Platforms (SCODMP), SFQL Working Group, Institute of Electrical and Electronics Engineers, Inc., Washington, DC 20036-1903, USA. 7. IETF Netdata. Internet Engineering Task Force (IETF), Network Database Working Group (netdata), ietf-ndb-request@ucdavis.edu, Corporation for National Research Initiatives, Reston, VA 22091, USA. 8. ISO/IEC 9075. Database Language SQL, International Standard ISO/IEC 9075:1992, American National Standard X3.135-1992, American National Standards Institute, New York, NY 10036, November 1992. 9. ISO/IEC 9579. Open Systems Interconnection - Remote Database Access (RDA), Part 1: Generic Model and Part 2: SQL Specialization, International Standard ISO/IEC 9579:1993, American National Standard ANSI/ISO/IEC 9579:1993, American National Standards Institute, New York, NY 10036, December 1993. 10. ISO/IEC SQL/CLI. (Committee Draft) SQL Call Level Interface (SQL/CLI), ISO/IEC CD 9075-3, document ISO/IEC JTC1/SC21 N8436, American National Standards Institute, February 1994. 11. ISO/IEC SQL/PSM. (Committee Draft) SQL Persistent Stored Modules (SQL/PSM), document ISO/IEC JTC1/SC21 N8438, American National Standards Institute, March 1994. 12. ISO/IEC SQL3. (ISO-ANSI Working Draft) Database Language SQL (SQL3), document ISO/IEC JTC1/SC21 N6931, American National Standards Institute, July 1992. Later versions available from Working Group or Rapporteur Group documents as a six-part document, Part 1: Framework, Part 2: Foundation, Part 3: Call Level Interface, Part 4: Persistent Stored Modules, Part 5: Language Bindings, Part 6: Encompassing Transactions. Available using Internet anonymous FTP protocols at node "speckle.ncsl.nist.gov" in directory "isowg3/dbl/BASEdocs". 13. ISO/IEC SQL/MM. SQL Multimedia and Application Packages (SQL/MM), Project description in document ISO/IEC JTC1/SC21 N7179, American National Standards Institute, January 1993. Initial draft available as a three-part document, Part 1: Framework and General Purpose Facilities, Part 2: Full-Text, Part 3: Spatial, with additional parts expected for other multimedia areas. Available using Internet anonymous FTP protocols at node "speckle.ncsl.nist.gov" in directory "isowg3/sqlmm/BASEdocs". 14. ISO/IEC TR 10000-3. Information Technology - Framework and Taxonomy of International Standardized Profiles - Part 1: General Principles and Framework, Part 2: Principles and Taxonomy for OSI Profiles, Part 3: Principles and Taxonomy for Open System Environment Profiles, Parts 1 & 2 have been published, A First Working Draft of Part3 is available as document ISO/IEC JTC1/SGFS N688rev, 17 March 1993. 15. Melton, Jim and Alan Simon. Understanding the New SQL: A Complete Guide, Morgan Kauffman Publishers, San Mateo, CA 94403, October 1992. 16. NIST OIW. Stable Implementation Agreements for OSI Protocols, Version 6, Edition 1, NIST Open Systems Environment Workshop, document NIST SP 500-206, December 1992. 17. NIST SQL Test Suite. An automated suite of tests for evaluating conformance to FIPS SQL, Version 4.0, NIST Computer Systems Laboratory, July 1993. 18. NIST SQL Validation Procedures. Database Language SQL Validation Procedures, unpublished NIST technical report, NIST Computer Systems Laboratory, 1993. 19. NIST VPL. 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). 20. SQL Errata. Database Language SQL - Technical Corrigendum 1, ISO/IEC 9075:1992 TC 1, document ISO/IEC JTC1/SC21 Nxxxx (post-ballot revision of SC21 N8225), American National Standards Institute, expected June 1994. 21. SAMeDL. SQL/Ada Module Description Language, ISO/IEC DIS 12227, Draft International Standard, document ISO/IEC JTC1/SC22 N1385, Spring 1994. 22. NIST APP. Application Portability Profile (APP) - Open System Environment Profile, OSE/1 Version 2.0, NIST Special Publication 500-210, June 1993.