付録 D. SQLへの準拠

目次
D.1. サポートされている機能
D.2. サポートされていない機能

本節では、PostgreSQLがどの程度現在の標準SQLに準拠しているかについて、概要を説明します。 以下の情報は互換性についての完全な説明ではありません。 しかし、ユーザにとって十分適切かつ有用な詳細を主な話題としてここで示しています。

標準SQLの公式な名称は、ISO/IEC 9075 "Database Language SQL"です。 この標準SQLの改訂バージョンは不定期にリリースされています。 最も最近の全面改訂は2003年に行われ、2006年に部分改訂がなされました。 この2003年バージョンはISO/IEC 9075:2003、もしくは単にSQL:2003と呼ばれています。 この1つ前のバージョンはSQL:1999とSQL-92です。 それぞれ前のバージョンを置き換えたバージョンですので、より昔のバージョンへの適合性についての主張には公的な利点がありません。 PostgreSQLの開発では、伝統的な機能もしくは共通の考えと矛盾しないように、標準SQLの最新の公式バージョンに準拠させようとしています。 PostgreSQLプロジェクトは、標準SQLの制定中にISO/IEC 9075ワーキンググループに代表を出していませんでした。 しかし、標準SQLで必須とされた機能の多くは、多少構文や機能に違いはあるものの、サポートされています。 さらに適合性を高めることが将来のリリースで期待されています。

SQL-92では、適合性について、Entry、Intermediate、Fullという3つの機能セットを定義しました。 標準SQLの準拠をうたっているデータベース管理システムのほとんどは、Entryレベルのみに適合しています。 IntermediateもしくはFullレベルの機能の全体的なセットは、非常に膨大になり過ぎるか、もしくは旧来の動作と競合するからです。

SQL:1999から、標準SQLは、SQL-92で見受けられた3レベルに機能を非効率的に分散させるのではなく、個々の機能を大規模な集合として定義されるようになりました。 こうした機能の大規模なサブセットを、全てのSQL準拠の実装が提供しなければならない"コア"機能として表しています。 いくつかの省略可能な機能は"パッケージ"という形にまとめられ、SQLの実装はこれに対して互換性をうたうことができるようになりました。 つまり特定機能のグループへの準拠が可能です。

SQL:2003標準はまた、数個の部品に分かれています。 それぞれ省略した名前を持ちます。 この部品に連続した番号が付いていないことに注意してください。

PostgreSQLは 1、2、11、および14番の部品に対応しています。

コールレベルインタフェースはODBCインタフェースと似ており、永続格納モジュールはPL/pgSQLプログラミング言語と似ています。 しかし、どちらの場合も完全な準拠は特に意図されていませんし、検証されていません。

PostgreSQLはSQL:2003の主な機能のほとんどをサポートします。 完全なコアの互換性に必要な164の必須機能のうち、PostgreSQLは少なくとも150個に適合します。 さらに、省略可能な機能を数多くサポートします。 ここに記載する必要はないかもしれませんが、本書の執筆時点で、SQL:2003のコアに完全に適合したデータベース管理システムのバージョンはありません。

以下の2つの節では、PostgreSQLでサポートされているこれらの機能をリストし、その後にPostgreSQLでまだサポートされていないSQL:2003で定義された機能をリストしています。 これら2つのリストは大変よく似ています。 サポート対象であるとリストされている機能が些細な部分で準拠していない可能性があり、サポートされていないある機能の大部分が、実際には実装されている可能性があります。 本書の主要な部分では、動作するものとしないものについての最も正確な情報を常に伝えます。

注意: ハイフンを含む機能コードはサブ機能です。 したがって、特定のサブ機能がサポートされない場合、他のサブ機能がサポートされていてもそのメイン機能はサポートされない機能としてリストされています。