システム テーブル
PSQL システム テーブル リファレンス
この付録では、PSQL のシステム テーブルについて説明します。以下のセクションがあります。
概要
PSQL およびそのコンポーネントが使用する情報は、システム テーブルと呼ばれる特殊なテーブルに保管されます。
注意: DELETE、UPDATE や INSERT ステートメント、またはユーザー定義トリガーを使って、システム テーブルの変更を試みないでください。システム テーブルを直接変更してはいけません。
システム テーブルを直接照会するアプリケーションを記述しないでください。システム テーブルの一部の列が記録されない可能性があります。次のいずれかの方法を使用すれば、システム テーブルに保管されている情報をアプリケーションで取得できます。
PSQL API は PSQL 開発者リファレンスに含まれています。開発コンポーネントは、リリースごとにデータベース エンジンとの互換性を保つように設計されています。システム テーブルの形式は、PSQL データベース エンジンの内部アーキテクチャ次第であり、リリースごとに変わる可能性があります。公開されていないシステム テーブルの列に直接アクセスしているアプリケーションでは、PSQL の内部アーキテクチャが変更されたときにアプリケーションの修正が必要になる場合があります。
次のシステム テーブルの一覧は、関連ファイルの名前を示し、システム テーブルの内容を明らかにしています。
メモ: システム テーブルに含まれる一部のデータは表示できません。たとえば、ユーザー パスワードは暗号化形式で表示されます。
 
V11
1 バージョン 1(V1)メタデータに適用。PSQLメタデータを参照してください。
2 バージョン 2(V2)メタデータに適用。PSQLメタデータを参照してください。
データベースを作成すると、PSQL によりすべてのシステム テーブルが作成されます。
これら以外に遭遇する可能性のあるシステム テーブルが 2 つあります。VARIANT.DDF と OCCURS.DDF(V1 データベースの場合)または PVVARIANT.DDF と PVOCCURS.DDF(V2 データベースの場合)です。これら 2 つのシステム ファイルは COBOL サポート用に使われるため、ユーザーの直接介入は一切必要としません。COBOL 用ユーティリティの将来のバージョンは、これらのシステム テーブルが必要でなくなった場合には、異なるアーキテクチャを実装するかもしれません。COBOL アプリケーションの SQL アクセスも参照してください。
システム テーブルの構造
このセクションでは、システム テーブルの構造について説明します。
メタデータ バージョン 1 のシステム テーブル
X$Attrib
X$Attrib システム テーブルは、ATTRIB.DDF ファイルに関連付けられています。X$Attrib には、データベース内の各列の列属性に関する情報が含まれています。つまり、定義した列属性ごとに 1 つのエントリがあります。X$Attrib の構造は、X$Attrib システム テーブルの構造で説明されています。
1 属性タイプ C、H、M、R、および V は旧形式の検証タイプで、Pervasive.SQL 7 または Scalable SQL 環境のみで有効です。Pervasive.SQL 7 より新しい PSQL リリースは、D(デフォルト)、L(論理位置)、および O(列の照合順序)属性のみを使用します。
1 つの列に複数の属性を定義すると、X$Attrib システム テーブルには、その列 ID に複数のエントリが含まれます。つまり、定義した属性ごとに 1 つのエントリが対応します。特定の列に列属性を定義しないと、X$Attrib テーブルにその列のエントリは含まれません。Xa$Attrs 列に含まれるテキストは、PSQL で定義したとおりに表示されます。X$Attrib テーブルでは、X$Attrib システム テーブルのインデックス定義で説明されているようにインデックスが 1 つ定義されています。
X$Depend
X$Depend システム テーブルは、DEPEND.DDF ファイルに関連付けられています。X$Depend には、テーブル、ビュー、およびプロシージャとトリガーとの依存関係に関する情報が含まれています。X$Depend の構造は次のとおりです。
X$Depend テーブルでは、次のようにインデックスが 2 つ定義されています。
インデックス番号は、X$Index システム テーブルの Xi$Number 列に保管されている値に対応します。また、セグメント番号は、X$Index システム テーブルの Xi$Part 列に保管されている値に対応します。
X$Field
X$Field システム テーブルは、FIELD.DDF ファイルに関連付けられています。X$Field には、データベースで定義されているすべての列と名前付きインデックスに関する情報が含まれています。X$Field の構造は次のとおりです。
Xe$File 列は、X$File システム テーブルの Xf$Id 列に対応し、テーブルとテーブル内の列のリンクになります。たとえば次のクエリは、Billing テーブルのフィールド定義をすべて順番に返します。
SELECT "X$Field".*
FROM X$File,X$Field
WHERE Xf$Id=Xe$File AND Xf$Name = 'Billing' AND Xe$DataType <= 26
ORDER BY Xe$Offset
Xe$DataType 列の整数値は PSQL のデータ型を表すコードです。コードについては、PSQL で使用できるデータ型を参照してください。
X$Field テーブルでは、次のようにインデックスが 5 つ定義されています。
X$File
X$File システム テーブルは、FILE.DDF ファイルに関連付けられています。X$File には、データベースで定義されている各テーブルについて、そのテーブル名、関連テーブルの場所、および PSQL が割り当てた固有の内部 ID 番号が含まれています。X$File の構造は次のとおりです。
X$File テーブルには、2 つのインデックスが定義されています。
X$Index
X$Index システム テーブルは、INDEX.DDF ファイルに関連付けられています。X$Index には、データベース内のテーブルで定義されているすべてのインデックスに関する情報が含まれています。X$Index の構造は次のとおりです。
Xi$File 列は、X$File システム テーブルの Xf$Id 列に対応します。また、Xi$Field 列は、X$Field システム テーブルの Xe$Id 列に対応します。したがって、インデックス セグメント エントリは 1 つのファイル、1 つのフィールドにリンクされます。
Xi$Flags 列には整数値が含まれ、インデックス属性を定義します。次の表は、ビットがバイナリ値 1 であるとき、PSQL が各ビット位置を解釈する方法を示したものです。ビット位置 0 が整数の右端のビットになります。
特定のインデックスの Xi$Flags 列の値は、インデックス属性に対応する 10 進数の値の合計になります。X$Index テーブルでは、次のようにインデックスが 3 つ定義されています。
インデックス番号は、X$Index システム テーブルの Xi$Number 列に保管されている値に対応します。インデックス番号はゼロから始まります。また、セグメント番号は、X$Index システム テーブルの Xi$Part 列に保管されている値に対応します。
たとえば、Billing テーブルに定義されているインデックス セグメントに関する情報を見るには、次のようなクエリを発行します。
SELECT Xe$Name,Xe$Offset, "X$Index".*
FROM X$File,X$Index,X$Field
WHERE Xf$Id=Xi$File and Xi$Field=Xe$Id and Xf$Name = 'Billing'
ORDER BY Xi$Number,Xi$Part
X$Proc
X$Proc システム テーブルは、PROC.DDF ファイルに関連付けられています。X$Proc には、定義されているすべてのストアド プロシージャのコンパイルされた構造情報が含まれています。X$Proc の構造は次のとおりです。
メモ: ストアド ステートメントおよび外部プロシージャは、Pervasive.SQL 2000i より前のバージョンの Pervasive.SQL ではサポートされていました。Pervasive.SQL 2000i からはストアド プロシージャのみがサポートされています。
X$Proc テーブルでは、次のようにインデックスが 1 つ定義されています。
単一のストアド プロシージャを X$Proc の複数のエントリに保管し、Xp$Name によってリンクすることができます。
X$Relate
X$Relate システム テーブルは、RELATE.DDF ファイルに関連付けられています。X$Relate には、データベースで定義されている参照整合性(RI)制約に関する情報が含まれています。X$Relate は最初の外部キーが作成されるときに自動的に作成され、これにより関係が定義されます。
X$Relate の構造は次のとおりです。
X$Relate テーブルでは、次のようにインデックスが 5 つ定義されています。
X$Rights
X$Rights システム テーブルは、RIGHTS.DDF ファイルに関連付けられています。X$Rights には、各ユーザーのアクセス権情報が含まれています。PSQL は、セキュリティ オプションが有効になっているときにのみ、このテーブルを使用します。X$Rights の構造は次のとおりです。
Xr$User 列は、X$User テーブルの Xu$Id 列に対応します。また、Xr$Table 列は X$File テーブルの Xf$Id 列に、Xr$Column 列は X$Field テーブルの Xe$Id 列に対応します。
メモ: テーブル アクセス権を記述するシステム テーブル内の各行では、Xr$Column 列の値はヌルになります。
Xr$Rights 列には整数値が含まれ、その右端 8 ビットがユーザー アクセス権を定義します。次の表は、PSQL が値を解釈する方法を説明したものです。この表の値は、単一の Xr$Rights 値に結合される場合があります。
 
10 進数の 0 はアクセス権がないことを示します。
特定のユーザーの Xr$Rights 列の値は、そのユーザーに適用されるアクセス権に対応する 16 進数のビット単位の共通部分になります。10 進数の値の合計ではありません。
たとえば、すべてのアクセス権が割り当てられているユーザーの Xr$Rights の値は、次のように表されます。
144 | 160 | 64 | 130 | 132 | 136 = 254
X$Rights テーブルでは、次のようにインデックスが 3 つ定義されています。
X$Trigger
X$Trigger システム テーブルは、TRIGGER.DDF ファイルに関連付けられています。X$Trigger には、データベースで定義されているトリガーに関する情報が含まれています。X$Trigger の構造は次のとおりです。
あまり長いトリガーは、TRIGGER.DDF 内に複数のエントリを必要とすることがあります。各エントリは Xt$Name フィールドに同一のトリガー名を持ち、Xt$Sequence フィールドで指定された順序で使用されます。
X$Trigger テーブルでは、次のようにインデックスが 3 つ定義されています。
トリガーを X$Trigger の複数のエントリに保管して、Xt$Name によってリンクし、Xt$Sequence 順に並べることができます。
X$User
X$User システム テーブルは、USER.DDF ファイルに関連付けられています。X$User には、各ユーザーの名前とパスワード、および各ユーザー グループの名前が含まれています。PSQL は、セキュリティ オプションが有効になっているときにのみ、このテーブルを使用します。X$User の構造は次のとおりです。
メモ: グループを記述する X$User システム テーブル内の各行では、Xu$Password の列の値はヌルになります。
Xu$Flags 列には整数値が含まれ、その右端の 8 ビットはユーザーまたはグループ属性を定義します。次の表は、ビットがバイナリ値 1 であるとき、PSQL が各ビット位置を解釈する方法を示したものです。ビット位置 0 が整数の右端のビットになります。
特定のユーザーやグループの Xu$Flags 列の値は、そのユーザーまたはグループに適用される属性に対応する 10 進数の値の合計になります。
X$User テーブルでは、次のようにインデックスが 2 つ定義されています。
X$View
X$View システム テーブルは、VIEW.DDF ファイルに関連付けられています。X$View には、結合テーブルの情報やビューを定義する制約条件などのビュー定義が含まれています。X$View テーブルにクエリを実行して、辞書に定義されているビューの名前を取得することができます。
X$View テーブルの先頭列にはビュー名が含まれ、第 2 列と第 3 列には LVAR 列の Xv$Misc で検出される情報の説明が含まれています。X$View の構造は次のとおりです。
X$View テーブルでは、次のようにインデックスが 2 つ定義されています。
単一のビューを X$View の複数のエントリに保管して、Xv$Name によってリンクし、Xv$Id 順に並べることができます。
メタデータ バージョン 2 のシステム テーブル
X$Attrib
X$Attrib システム テーブルは、PVATTRIB.DDF ファイルに関連付けられています。X$Attrib には、データベース内の各列の列属性に関する情報が含まれています。つまり、定義した列属性ごとに 1 つのエントリがあります。X$Attrib の構造は次のとおりです。
1 つの列に複数の属性を定義すると、X$Attrib システム テーブルには、その列 ID に複数のエントリが含まれます。つまり、定義した属性ごとに 1 つのエントリが対応します。特定の列に列属性を定義しないと、X$Attrib テーブルにその列のエントリは含まれません。Xa$Attrs 列に含まれるテキストは、PSQL で定義したとおりに表示されます。X$Attrib テーブルでは、次のようにインデックスが 1 つ定義されています。
X$Depend
X$Depend システム テーブルは、PVDEPEND.DDF ファイルに関連付けられています。X$Depend には、テーブル、ビュー、およびプロシージャなどのオブジェクトとトリガーとの依存関係に関する情報が含まれています。X$Depend の構造は次のとおりです。
X$Depend テーブルでは、次のようにインデックスが 2 つ定義されています。
X$Field
X$Field システム テーブルは、PVFIELD.DDF ファイルに関連付けられています。X$Field には、データベースで定義されているすべての列と名前付きインデックスに関する情報が含まれています。X$Field の構造は次のとおりです。
Xe$File 列は、X$File システム テーブルの Xf$Id 列に対応し、テーブルとテーブル内の列のリンクになります。たとえば次のクエリは、Billing テーブルのフィールド定義をすべて順番に返します。
SELECT "X$Field".*
FROM X$File,X$Field
WHERE Xf$Id=Xe$File AND Xf$Name = 'Billing' AND Xe$DataType <= 26
ORDER BY Xe$Offset
Xe$DataType 列の整数値は PSQL のデータ型を表すコードです。コードについては、PSQL で使用できるデータ型を参照してください。
X$Field テーブルでは、次のようにインデックスが 5 つ定義されています。
X$File
X$File システム テーブルは、PVFILE.DDF ファイルに関連付けられています。X$File には、データベースで定義されている各テーブルについて、そのテーブル名、関連テーブルの場所、および PSQL が割り当てた固有の内部 ID 番号が含まれています。X$File の構造は次のとおりです。
X$File テーブルには、2 つのインデックスが定義されています。
X$Index
X$Index システム テーブルは、PVINDEX.DDF ファイルに関連付けられています。X$Index には、データベース内のテーブルで定義されているすべてのインデックスに関する情報が含まれています。X$Index の構造は次のとおりです。
Xi$File 列は、X$File システム テーブルの Xf$Id 列に対応します。また、Xi$Field 列は、X$Field システム テーブルの Xe$Id 列に対応します。したがって、インデックス セグメント エントリは 1 つのファイル、1 つのフィールドにリンクされます。
Xi$Flags 列には整数値が含まれ、インデックス属性を定義します。次の表は、ビットがバイナリ値 1 であるとき、PSQL が各ビット位置を解釈する方法を示したものです。ビット位置 0 が整数の右端のビットになります。
特定のインデックスの Xi$Flags 列の値は、インデックス属性に対応する 10 進数の値の合計になります。X$Index テーブルでは、次のようにインデックスが 3 つ定義されています。
インデックス番号は、X$Index システム テーブルの Xi$Number 列に保管されている値に対応します。インデックス番号はゼロから始まります。また、セグメント番号は、X$Index システム テーブルの Xi$Part 列に保管されている値に対応します。
たとえば、Billing テーブルに定義されているインデックス セグメントに関する情報を見るには、次のようなクエリを発行します。
SELECT Xe$Name,Xe$Offset, "X$Index".*
FROM X$File,X$Index,X$Field
WHERE Xf$Id=Xi$File and Xi$Field=Xe$Id and Xf$Name = 'Billing'
ORDER BY Xi$Number,Xi$Part
X$Proc
X$Proc システム テーブルは、PVPROC.DDF ファイルに関連付けられています。X$Proc には、定義されているすべてのストアド プロシージャのコンパイルされた構造情報が含まれています。X$Proc の構造は次のとおりです。
メモ: ストアド ステートメントおよび外部プロシージャは、Pervasive.SQL 2000i より前のバージョンの PSQL ではサポートされていました。Pervasive.SQL 2000i からはストアド プロシージャのみがサポートされています。
X$Proc テーブルでは、次のようにインデックスが 4 つ定義されています。
X$Relate
X$Relate システム テーブルは、PVRELATE.DDF ファイルに関連付けられています。X$Relate には、データベースで定義されている参照整合性(RI)制約に関する情報が含まれています。X$Relate は最初の外部キーが作成されるときに自動的に作成され、これにより関係が定義されます。
X$Relate の構造は次のとおりです。
X$Relate テーブルでは、次のようにインデックスが 5 つ定義されています。
X$Rights
X$Rights システム テーブルは、PVRIGHTS.DDF ファイルに関連付けられています。X$Rights には、各ユーザーのアクセス権情報が含まれています。PSQL は、セキュリティ オプションが有効になっているときにのみ、このテーブルを使用します。X$Rights の構造は次のとおりです。
Xr$User 列は、X$User テーブルの Xu$Id 列に対応します。Xr$Object 列は、以下のいずれかに対応します。
Xr$Column 列は X$Field テーブルの Xe$Id 列に対応します。
メモ: テーブル、ビュー、ストアド プロシージャのアクセス権を記述するシステム テーブル内の各行では、Xr$Column 列の値はヌルになります。
Xr$Rights 列には整数値が含まれ、その右端 8 ビットがユーザー アクセス権を定義します。次の表は、PSQL が値を解釈する方法を説明したものです。この表の値は、単一の Xr$Rights 値に結合される場合があります。
 
10 進数の 0 はアクセス権がないことを示します。
特定のユーザーの Xr$Rights 列の値は、そのユーザーに適用されるアクセス権に対応する 16 進数のビット単位の共通部分になります。10 進数の値の合計ではありません。
たとえば、すべてのアクセス権が割り当てられているユーザーの Xr$Rights の値は次のように表されます。
144 | 160 | 64 | 130 | 132 | 136 = 254
ビューに関するすべてのアクセス権が割り当てられているユーザーの Xr$Rights の値は次のように表されます。
64 | 130 | 132 | 136 = 206
ストアド プロシージャに関するすべてのアクセス権が割り当てられているユーザーの Xr$Rights の値は次のように表されます。
192 = 192
X$Rights テーブルでは、次のようにインデックスが 3 つ定義されています。
X$Trigger
X$Trigger システム テーブルは、PVTRIG.DDF ファイルに関連付けられています。X$Trigger には、データベースで定義されているトリガーに関する情報が含まれています。X$Trigger の構造は次のとおりです。
X$Trigger テーブルでは、次のようにインデックスが 3 つ定義されています。
X$User
X$User システム テーブルは、PVUSER.DDF ファイルに関連付けられています。X$User には、各ユーザーの名前とパスワード、および各ユーザー グループの名前が含まれています。PSQL は、セキュリティ オプションが有効になっているときにのみ、このテーブルを使用します。X$User の構造は次のとおりです。
メモ: グループを記述する X$User システム テーブル内の各行では、Xu$Password の列の値はヌルになります。
Xu$Flags 列には整数値が含まれ、その右端の 8 ビットはユーザーまたはグループ属性を定義します。次の表は、ビットがバイナリ値 1 であるとき、PSQL が各ビット位置を解釈する方法を示したものです。ビット位置 0 が整数の右端のビットになります。
特定のユーザーやグループの Xu$Flags 列の値は、そのユーザーまたはグループに適用される属性に対応する 10 進数の値の合計になります。
X$User テーブルでは、次のようにインデックスが 2 つ定義されています。
X$View
X$View システム テーブルは、PVVIEW.DDF ファイルに関連付けられています。X$View には、結合テーブルの情報やビューを定義する制約条件などのビュー定義が含まれています。X$View テーブルにクエリを実行して、辞書に定義されているビューの名前を取得することができます。
X$View テーブルの先頭列にはビュー名が含まれ、第 2 列と第 3 列には LVAR 列の Xv$Misc で検出される情報の説明が含まれています。X$View の構造は次のとおりです。
X$View テーブルでは、次のようにインデックスが 3 つ定義されています。