pg_class

PostgreSQL 9.0.0文書
前のページ | 巻戻し | 第 45章システムカタログ | 早送り | 次のページ

# 45.11. `pg_class`

`pg_class`カタログはテーブルと、その他に列を持つもの、あるいはテーブルに似た全てのものを目録にしています。 その中にはインデックス（`pg_index`も参照）、シーケンス、ビュー、複合型およびTOASTテーブルが含まれます。 `relkind`を参照してください。 これより以降、"リレーション"と記されている場合はこれらすべてのオブジェクトを意味しています。 すべての列が全てのリレーションの型に該当するとは限りません。

表 45-11. `pg_class`の列

名前 | 型 | 参照先 | 説明
--- | --- | --- | ---
`relname` | `name` |  | テーブル、インデックス、ビューなどの名前
`relnamespace` | `oid` | ``pg_namespace`.oid` | このリレーションを持つ名前空間のOID
`reltype` | `oid` | ``pg_type`.oid` | もし何らかの（`pg_type`項目を持たないインデックスではゼロ）が存在した場合このテーブルの行の型に対応するデータ型のOID
`reloftype` | `oid` | ``pg_type`.oid` | 型付けされたテーブルでは背後にある複合型のOID。 その他のリレーションではゼロ。
`relowner` | `oid` | ``pg_authid`.oid` | リレーションの所有者
`relam` | `oid` | ``pg_am`.oid` | これがインデックスの場合は、それに使われている（B-tree、ハッシュなどの）アクセスメソッド
`relfilenode` | `oid` |  | このリレーションのディスク上のファイル名前です。 ゼロはディスク上のファイル名が低レベルな状態で決定される"マップ付けされた"リレーションであることを意味します。
`reltablespace` | `oid` | ``pg_tablespace`.oid` | このリレーションが保存されているテーブル空間。 もしゼロならば、このデータベースのデフォルトテーブル空間を意味します。 （リレーションがディスク上のファイルになくても、問題はありません。）
`relpages` | `int4` |  | このテーブルのディスク上におけるページ単位（`BLCKSZ`）の表現サイズ。 これはプランナで使用される単なる推測値です。 `VACUUM`、`ANALYZE`および`CREATE INDEX`コマンドなどの一部のDDLコマンドで更新されます。
`reltuples` | `float4` |  | テーブル内の行数。 これはプランナで使用される単なる推測値です。 `VACUUM`、`ANALYZE`、`CREATE INDEX`などの一部のDDLコマンドで更新されます。
`reltoastrelid` | `oid` | ``pg_class`.oid` | このテーブルに関連しているTOASTテーブルのOID。 何もない場合はゼロです。 TOASTテーブルは"行に収まらない"大きい属性を副テーブルに格納します。
`reltoastidxid` | `oid` | ``pg_class`.oid` | TOASTテーブルに対するインデックスのOID。 TOASTテーブルでない場合はゼロ。
`relhasindex` | `bool` |  | テーブルであり、かつ、インデックスを持つ（あるいはつい最近まで持っていた）時は真。
`relisshared` | `bool` |  | クラスタ内の全てのデータベースにわたってこのテーブルが共有されている場合は真。 （`pg_database`のような）ある特定のシステムカタログのみ共有されます。
`relistemp` | `bool` |  | テーブルが一時リレーションの場合に真。 この場合、作成したセッションのみが安全にその内容にアクセスすることができます。
`relkind` | `char` |  | `r` = 通常のテーブル、`i` = インデックス、`S` = シーケンス、`v` = ビュー、`c` = 複合型、`t` = TOASTテーブル
`relnatts` | `int2` |  | リレーションにあるユーザ列数（システム列は含みません）。 `pg_attribute`にこれに対応する数多くの項目があるはずです。 `pg_attribute.attnum`も参照してください。
`relchecks` | `int2` |  | テーブル上の`CHECK`制約の数。 `pg_constraint`カタログを参照してください。
`relhasoids` | `bool` |  | リレーションの行毎にOIDを生成する場合は真。
`relhaspkey` | `bool` |  | テーブルにプライマリキーが含まれている（あるいは過去含まれていた）場合に真。
`relhasexclusion` | `bool` |  | テーブルの場合、そのテーブルが何らかの排他制約を持つ(または持っていた)場合に真。 インデックスの場合、インデックスが排他制約をサポートする場合に真。
`relhasrules` | `bool` |  | もしテーブルにルールがある（あるいは以前あった）場合に真。 `pg_rewrite`カタログを参照してください。
`relhastriggers` | `bool` |  | もしテーブルにトリガがある（あるいは以前あった）場合に真。 `pg_trigger`カタログを参照してください。
`relhassubclass` | `bool` |  | もしテーブルが子テーブルに継承されている（または以前に継承されていた）場合は真。
`relfrozenxid` | `xid` |  | この値より以前のトランザクションIDはすべて、このテーブルで永遠（"凍結"）トランザクションIDに置き換えられます。 これは、このテーブルに対して、トランザクションID周回を防ぎ、かつ、`pg_clog`を縮小させることを目的としたバキュームを行うかどうかを追跡するために使用されます。 リレーションがテーブルではない場合は0（`InvalidTransactionId`）です。
`relacl` | `aclitem[]` |  | アクセス権限。 詳細はGRANTとREVOKEの説明を参照してください。
`reloptions` | `text[]` |  | "keyword=value"文字列のような、アクセスメソッド特有のオプション。

`pg_class`内の複数の論理型フラグは、ゆっくりと保守されます。 正しい状態にあるときに真であることが保証されていますが、その条件が真でなくなった時即座に偽に再設定されないかもしれません。 例えば`relhasindex`は`CREATE INDEX`で設定されますが、`DROP INDEX`では決して初期化されません。 代わりに`VACUUM`がそのテーブルにインデックスがないことを判定した場合に`relhasindex`を初期化します。 この調整により競合状態を防止し、同時実行性が向上します。

前のページ | ホーム | 次のページ
`pg_cast` | 上に戻る | `pg_constraint`