pg_attribute
pg_attributeカタログにはテーブルの列情報が格納されます。
データベース内のすべてのテーブルの各列に対し必ず1つのpg_attribute行があります。
(また、インデックスとpg_classに項目を持つすべてのオブジェクトに対しての属性記述があります。)
  
属性という表現は列と同等の意味で、歴史的背景からそのように呼ばれています。
表52.7 pg_attributeの列
| 名前 | 型 | 参照先 | 説明 | 
|---|---|---|---|
| attrelid | oid |  | この列が属するテーブル | 
| attname | name | 列名 | |
| atttypid | oid |  | この列のデータ型 | 
| attstattarget | int4 | attstattargetはANALYZEによるこの列に対する蓄積された統計情報をどの程度詳しく管理するかを規定します。
値がゼロの場合は統計情報を収集しません。
負の値の場合は、システムのデフォルトの統計目標を使用すべきであるということです。
正の値が厳密に意味するところはデータ型に依存します。
スカラデータ型に対してattstattargetは収集する「最も一般的な値」の目標となる数であり、また作成する度数分布ビンの目標数でもあります。 | |
| attlen | int2 | この列の型の pg_type.typlenのコピー | |
| attnum | int2 | 列番号。
通常、列は1から始まる番号付けがなされます。 OIDのようなシステムによる列には(任意の)負の番号が付きます。 | |
| attndims | int4 | 列が配列型の場合は次元数を表現し、そうでない時はゼロです。 (現在配列の次元数は強制されていませんのでゼロ以外のどのような値であっても「これは配列である」ということを意味します。) | |
| attcacheoff | int4 | 格納時は必ず-1ですが、メモリ内の行記述子に読み込まれた場合は、行内での属性オフセットをキャッシュするために更新される可能性があります。 | |
| atttypmod | int4 | atttypmodは、テーブル作成時に与えられた型固有のデータ(たとえばvarchar列の最大長)を記録します。
これは型固有の入力関数や長さ強制関数に渡されます。atttypmodを必要としない型では、通常、この値は-1です。 | |
| attbyval | bool | この列の型の pg_type.typbyvalのコピー | |
| attstorage | char | 通常、この列の型の pg_type.typstorageのコピー。
TOAST可能なデータ型では、格納ポリシーを制御するために列の作成後に変更することができます。 | |
| attalign | char | この列の型の pg_type.typalignのコピー | |
| attnotnull | bool | 非NULL制約を表します。 | |
| atthasdef | bool | この列にはデフォルト値があります。
その場合、実際に値を定義する pg_attrdefカタログ内に対応する項目があります。 | |
| atthasmissing | bool | この列は、行から列の値が完全に失われている場合に使われる値を持ちます。
これは、行が作られた後で非不安定(non-volatile)な DEFAULT値を持つ列が追加される際に起こります。
実際に使われる値はattmissingval列に格納されています。 | |
| attidentity | char | 0バイト( '')ならこれはIDENTITY列ではありません。
IDENTITY列では、GENERATED ALWAYSならa、GENERATED BY DEFAULTならdになります。 | |
| attisdropped | bool | この列は既に削除されていて有効ではありません。 削除された列は物理的にはまだテーブル上に存在していますが、パーサによって無視されるためSQLでアクセスすることができません。 | |
| attislocal | bool | この列はリレーション内でローカルに定義されます。 列がローカルに定義されると同時に継承される場合もあることに注意してください。 | |
| attinhcount | int4 | この列が持つ直接の祖先の数です。 祖先を持っている列の削除や名前は変更はできません。 | |
| attcollation | oid |  | 列で定義された照合順序。列が照合順序の設定ができないデータ型の場合はゼロ | 
| attacl | aclitem[] | この列に特定して付与された場合における、列レベルのアクセス権限 | |
| attoptions | text[] | 「keyword=value」文字列のような、属性レベルのオプション | |
| attfdwoptions | text[] | 「keyword=value」文字列のような、外部データラッパオプションの属性レベル | |
| attmissingval | anyarray | この列は、行から列の値が完全に失われている場合に使われる値を持つ一要素配列を持ちます。
これは、行が作られた後で非不安定(non-volatile)な DEFAULT値を持つ列が追加される際に起こります。
この値はatthasmissingが真のときだけ使用されます。
値がなければその列はNULLになります。 | 
削除された列のpg_attribute項目では、atttypidはゼロにリセットされます。
しかしattlenとpg_typeからコピーされた他のフィールドは、有効なままです。
この動作は、削除された列のデータ型が後になって削除されて、pg_type行が存在しないような状況の場合に必要です。
attlenと他のフィールドは、テーブル内の行の内容を解釈するために使用されます。