このカタログはデータ型の情報を保存します。スカラー型("基本型")は CREATE TYPE コマンドで作成されます。複合型もテーブルの行構成を表わすためデータベースのそれぞれのテーブルに対して作成されます。
Table 3-21. pg_type の列
名前 | 型 | 参照先 | 説明 |
---|---|---|---|
typname | name | データ型名 | |
typowner | int4 | pg_shadow.usesysid | 型の所有者(作成者) |
typlen | int2 | 型の表現形式の長さで、可変長の場合は -1 | |
typprtlen | int2 | 使用されていません | |
typbyval | bool | typbyval は内部関数がこの型の値を値渡しで渡すか、参照渡しで渡すかを決定します。char、 short と int と同等のもののみ値で引き渡すことが可能です。つまり、型が 1、2、4 バイト長以外の場合 PostgreSQL はその値を引き渡すオプションを持っていなので typbyval を偽にする必要があります。可変長型は必ず参照渡しになります。typbyval は、長さ的に引き渡し可能でも偽になりうるということに注意してください。現在 float4 などがこれに該当します | |
typtype | char | typtype は、b は基本型、 c は複合型(すなわちテーブルの行の型)となります。 typtype が cであれば、 typrelid は pg_class にある型の見出し語の OID です。 | |
typisdefined | bool | 型が定義されると真、ここが未定義型にたいする予備の場所であるときは偽。typisdefined が偽の場合型名と OID 以外は信頼すべきでありません。 | |
typdelim | char | 配列入力の構文解析をする際にこの型を持っている 2 つの値を分離する文字。区切り文字は配列データ型ではなく配列要素データ型に関連づけられることに注意してください。 | |
typrelid | oid | pg_class.oid | もしこれが複合型 (typtype を参照)であれば、このフィールドは関連するテーブルを定義する pg_class の見出し語を指します。テーブルは理論的にはデータ型の複合として使用できますが、十分には機能しません。 |
typelem | oid | pg_type.oid | typelem が 0 でない場合、typelem は pg_type の別の列を識別します。現在の型はそこで配列のように、typelem 型の値を放棄し、配列要素を持てるようになります。"真"の配列型は可変長(typlen = -1)ですが、いくつかの固定長(typlen > 0)型も同時にゼロでない typelem を持つことができます。例えば name と oidvector です。もし固定長型が typelem を持つならその内部表現は他のデータを持たない typelem データ型の N 個の値でなければなりません。可変長配列型には配列サブルーチンで定義されたヘッダーがあります。 |
typinput | regproc | 入力関数 | |
typoutput | regproc | 出力関数 | |
typreceive | regproc | 使用されていません | |
typsend | regproc | 使用されていません | |
typalign | char | typalign はこの型の値を格納する際に必要なアライメントです。ディスクに書き込むときやほとんどの PostgreSQL 内の値を表現するのに使用されます。ディスクに完全な列を格納するときなど、いくつかの値が連続して格納される際、境界を特定するためにこの型のデータの前にパッドが挿入されます。アライメントの参照はシーケンスの一番最初にあります。使用可能な値は以下のとおりです。
| |
typstorage | char | typstorage は可変長型(typlen = -1 のもの)に対して型が TOAST に対応しているかとこの型の属性のデフォルト手順が何であるべきかを伝えます。使用可能な値は以下のとおりです。
'm' のフィールドは補助記憶に移すことができますが、最後の切札としてでなければいけません('e' と 'x' フィールドが先に移動されます)。 | |
typdefault | text | デフォルト値を持たない型に対して typdefault はNULL です。NULL でない場合はその型のデフォルト値の外部文字列表現を含んでいます。 |