pg_attribute #
pg_attributeカタログにはテーブルの列情報が格納されます。
データベース内のすべてのテーブルの各列に対し必ず1つのpg_attribute行があります。
(また、インデックスとpg_classに項目を持つすべてのオブジェクトに対しての属性記述があります。)
  
属性という表現は列と同等の意味で、歴史的背景からそのように呼ばれています。
表53.7 pg_attributeの列
| 列 型 説明 | 
|---|
| 
        この列が属するテーブル | 
| 
        列名 | 
| 
        この列のデータ型(ゼロなら削除された列) | 
| 
        
この列の型の | 
| 
        
列番号。
通常の列には1から始まる番号付けがなされます。
 | 
| 
        格納時は必ず-1ですが、メモリ内の行記述子に読み込まれた場合は、行内での属性オフセットをキャッシュするために更新される可能性があります。 | 
| 
        
 | 
| 
        列が配列型の場合は次元数を表現し、そうでない時はゼロです。 (現在配列の次元数は強制されていませんのでゼロ以外のどのような値であっても「これは配列である」ということを意味します。) | 
| 
        
この列の型の | 
| 
        
この列の型の | 
| 
        
通常、この列の型の | 
| 
        
この列の現在の圧縮方法。
典型的には現在のデフォルト設定(default_toast_compression参照)を指定する | 
| 
        非NULL制約を表します。 | 
| 
        
この列にはデフォルト値あるいは生成式があります。
その場合、実際に値を定義する | 
| 
        
この列は、行から列の値が完全に失われている場合に使われる値を持ちます。
これは、行が作られた後で非不安定(non-volatile)な | 
| 
        
ゼロバイト( | 
| 
        
ゼロバイト( | 
| 
        この列は既に削除されていて有効ではありません。 削除された列は物理的にはまだテーブル上に存在していますが、パーサによって無視されるためSQLでアクセスできません。 | 
| 
        この列はリレーション内でローカルに定義されます。 列がローカルに定義されると同時に継承される場合もあることに注意してください。 | 
| 
        この列が持つ直接の祖先の数です。 祖先を持っている列の削除や名前は変更はできません。 | 
| 
        
 | 
| 
        列で定義された照合順序。列が照合順序の設定ができないデータ型の場合はゼロ | 
| 
        この列に特定して付与された場合における、列レベルのアクセス権限 | 
| 
        「keyword=value」文字列のような、属性レベルのオプション | 
| 
        「keyword=value」文字列のような、外部データラッパーオプションの属性レベル | 
| 
        
この列は、行から列の値が完全に失われている場合に使われる値を持つ一要素配列を持ちます。
これは、行が作られた後で非不安定(non-volatile)な | 
削除された列のpg_attribute項目では、atttypidはゼロにリセットされます。
しかしattlenとpg_typeからコピーされた他のフィールドは、有効なままです。
この動作は、削除された列のデータ型が後になって削除されて、pg_type行が存在しないような状況の場合に必要です。
attlenと他のフィールドは、テーブル内の行の内容を解釈するために使用されます。