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