pg_attributeにはテーブルカラム情報が格納されています。 データベース内のすべてのテーブルの各カラムには必ず1つの pg_attribute行があります。(また、インデックスと その他のオブジェクトにも属性があります。pg_classも 参照して下さい。)
属性という表現は、カラムと同等の意味で、歴史的背景からそのように呼ばれています。
Table 3-4. pg_attribute カラム
名前 | 型 | 照合 | 説明 |
---|---|---|---|
attrelid | oid | pg_class.oid | このカラムが属するテーブル |
attname | name | カラム名 | |
atttypid | oid | pg_type.oid | このカラムのデータ型 |
attdispersion | float4 | attdispersionとは、 カラム(0.0 から 1.0)、 またはゼロの散布統計値です。しかし、統計値が計算されていない時はゼロ、 VACUUMが実行されて、その結果、カラムに重複がないことが 判明された時(この場合では散布1.0となり、現在のテーブルのサイズは numberOfRows)は-1.0となります。 -1.0ハックは、行数の更新の方がattdispersionよりも 更新頻度が高くなる可能性があるので、大変使いやすいものとなります。 カラムは重複入力がない領域を保持すると思われます。 | |
attlen | int2 | これはpg_typeのtyplen をこのカラムの型にあわせたもの | |
attnum | int2 | カラムの数です。通常、カラムは1から始まって順に上がっていきます。 oidのようなシステムカラムは 負の数の属性値を保持しています。 | |
attnelems | int4 | もしカラムが配列だった場合、その配列の次元の数。 | |
attcacheoff | int4 | 格納時は必ず-1となりますが、メモリ内でタプル記述子にロードされた時は、 タプル内の更新されたキャッシュの属性のオフセットである可能性があります。 | |
atttypmod | int4 | atttypmodはテーブルが作成された時に指定された、 特定のデータ型を記録します。(例えば、varcharカラムの最大長さなど)。 そしてそれらは型特有のインプット/アウトプット関数に第3引数として渡されます。 タプルの必要がない型の値は通常‐1です。 | |
attbyval | bool | これはpg_typeのtypbyval をこのカラムの型にあわせたものです。 | |
attstorage | char | これはpg_typeのtypstorage をこのカラムの型にあわせたものです。 | |
attisset | bool | 真であるならば、この属性はセットとなります。その場合、属性に実際に 格納されるものはpg_procカタログにある タプルのOIDになります。 pg_proc タプルにはこのセットを定義する クエリ−の文字列(セットを取得するためのクエリ−など)があります。 atttypid (上記参照)はこのクエリ−によって 返された型を参照しますが、実際のこの属性の長さはoidの 長さとなります。 --- これは正論なのですが、今日ではかなり守られていないかもしれません。 | |
attalign | char | これはpg_typeのtypalign をこのカラムの型にあわせたものです。 | |
attnotnull | bool | これはNOT NULL 制約を意味しています。フィ−ルドを変更してこの制約を有効にしたり、 無効にしたりできます。 | |
atthasdef | bool | このカラムにはpg_attrdefカタログですでに定義されている デフォルト値があります。 |