pg_class
pg_classカタログはテーブルと、その他に列を持つもの、あるいはテーブルに似た全てのものを目録にしています。
その中にはインデックス(pg_indexも参照)、シーケンス(pg_sequenceも参照)、ビュー、マテリアライズドビュー、複合型およびTOASTテーブルが含まれます。
relkindを参照してください。
これより以降、「リレーション」と記されている場合はこれらすべてのオブジェクトを意味しています。
すべての列が全てのリレーションの型に該当するとは限りません。
  
表52.11 pg_classの列
| 名前 | 型 | 参照先 | 説明 | 
|---|---|---|---|
| oid | oid | 行識別子(隠し属性です。明示的に選択しなければなりません) | |
| relname | name | テーブル、インデックス、ビューなどの名前 | |
| relnamespace | oid |  | このリレーションを持つ名前空間のOID | 
| reltype | oid |  | もし何らかの( pg_type項目を持たないインデックスではゼロ)が存在した場合このテーブルの行の型に対応するデータ型のOID | 
| reloftype | oid |  | 型付けされたテーブルでは背後にある複合型のOID。 その他のリレーションではゼロ。 | 
| relowner | oid |  | リレーションの所有者 | 
| relam | oid |  | これがインデックスの場合は、それに使われている(B-tree、ハッシュなどの)アクセスメソッド | 
| relfilenode | oid | このリレーションのディスク上のファイルの名前です。 ゼロはディスク上のファイル名が低レベルな状態で決定される「マップ付けされた」リレーションであることを意味します。 | |
| reltablespace | oid |  | このリレーションが保存されているテーブル空間。 もしゼロならば、このデータベースのデフォルトテーブル空間を意味します。 (リレーションがディスク上のファイルになくても、問題はありません。) | 
| relpages | int4 | このテーブルのディスク上におけるページ単位( BLCKSZ)の表現サイズ。
これはプランナで使用される単なる推測値です。VACUUM、ANALYZEおよびCREATE INDEXコマンドなどの一部のDDLコマンドで更新されます。 | |
| reltuples | float4 | テーブル内の生きている行数。
これはプランナで使用される単なる推測値です。 VACUUM、ANALYZE、CREATE INDEXなどの一部のDDLコマンドで更新されます。 | |
| relallvisible | int4 | テーブル内の可視マップ内で全て可視とマークされているページ数。
これはプランナで使用される単なる見積です。
これは VACUUM、ANALYZEさらにCREATE INDEXといったいくつかのDDLコマンドで更新されます。 | |
| reltoastrelid | oid |  | このテーブルに関連しているTOASTテーブルのOID。 何もない場合はゼロです。 TOASTテーブルは「行に収まらない」大きい属性を副テーブルに格納します。 | 
| relhasindex | bool | テーブルであり、かつ、インデックスを持つ(あるいはつい最近まで持っていた)時は真。 | |
| relisshared | bool | クラスタ内の全てのデータベースにわたってこのテーブルが共有されている場合は真。
( pg_databaseのような)ある特定のシステムカタログのみ共有されます。 | |
| relpersistence | char | pは永続テーブル、uはログを取らないテーブル、tは一時テーブルを表します。 | |
| relkind | char | rは通常のテーブル、iはインデックス、Sはシーケンス、tはTOASTテーブル、vはビュー、mはマテリアライズドビュー、cは複合型、fは外部テーブル、pはパーティションテーブル、Iはpartitioned indexを表します。 | |
| relnatts | int2 | リレーションにあるユーザ列数(システム列は含みません)。 pg_attributeにこれに対応する数多くの項目があるはずです。pg_attribute.attnumも参照してください。 | |
| relchecks | int2 | テーブル上の CHECK制約の数。pg_constraintカタログを参照してください。 | |
| relhasoids | bool | リレーションの行毎にOIDを生成する場合は真。 | |
| relhasrules | bool | もしテーブルにルールがある(あるいは以前あった)場合に真。 pg_rewriteカタログを参照してください。 | |
| relhastriggers | bool | もしテーブルにトリガがある(あるいは以前あった)場合に真。 pg_triggerカタログを参照してください。 | |
| relhassubclass | bool | もしテーブルが子テーブルに継承されている(または以前に継承されていた)場合は真。 | |
| relrowsecurity | bool | 行単位セキュリティが有効なテーブルでは真。 pg_policyカタログを参照。 | |
| relforcerowsecurity | bool | 行単位セキュリティが(有効にされているとして)テーブルの所有者にも適用されるなら真。 pg_policyカタログを参照。 | |
| relispopulated | bool | リレーションにデータが投入されている場合に真(マテリアライズドビュー以外のすべてのリレーションでは真です。) | |
| relreplident | char | 行に「replica identity」フォームを使った列。 dデフォルト(もしあれば主キー)、n無し、f全ての列、iインデックスとindisreplidentのセット、またはデフォルト | |
| relispartition | bool | テーブルあるいはインデックスがパーティションなら真 | |
| relrewrite | oid |  | テーブルの書き換えが必要なDDL操作中に書き込みが行われる新しいリレーションでは、これは元のリレーションのOIDを持ちます。 この状態は内部的にのみ可視です。 このフィールドはユーザから見えるリレーションでは0以外を持つべきではありません。 | 
| relfrozenxid | xid | この値より以前のトランザクションIDはすべて、このテーブルで永続的な(「凍結された」)トランザクションIDに置き換えられています。
これは、このテーブルに対して、トランザクションID周回を防ぎ、かつ、 pg_xactを縮小させることを目的としたバキュームを行うかどうかを追跡するために使用されます。
リレーションがテーブルではない場合は0(InvalidTransactionId)です。 | |
| relminmxid | xid | このテーブル内のトランザクションIDによって置換される前のすべてのマルチトランザクションID。
これは、マルチトランザクションIDのID周回を防ぐ、または pg_multixactを縮小させるために、テーブルをバキュームする必要があるかどうかを追跡するために使用されます。
リレーションがテーブルではない場合はゼロ(InvalidMultiXactId)です。 | |
| relacl | aclitem[] | アクセス権限。 詳細はGRANTとREVOKEの説明を参照してください。 | |
| reloptions | text[] | 「keyword=value」文字列のような、アクセスメソッド特有のオプション。 | |
| relpartbound | pg_node_tree | テーブルがパーティションの場合( relispartition参照)のパーティション境界の内部表現。 | 
pg_class内の複数の論理型フラグは、ゆっくりと保守されます。
正しい状態にあるときに真であることが保証されていますが、その条件が真でなくなった時即座に偽に再設定されないかもしれません。
例えばrelhasindexはCREATE INDEXで設定されますが、DROP INDEXでは決して初期化されません。
代わりにVACUUMがそのテーブルにインデックスがないことを判定した場合にrelhasindexを初期化します。
この調整により競合状態を防止し、同時実行性が向上します。