★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

3.21. pg_type

このカタログはデータ型の情報を保存します。スカラー型("基本型")は CREATE TYPE コマンドで作成されます。複合型もテーブルの行構成を表わすためデータベースのそれぞれのテーブルに対して作成されます。

Table 3-21. pg_type の列

名前参照先説明
typnamename データ型名
typownerint4pg_shadow.usesysid型の所有者(作成者)
typlenint2 型の表現形式の長さで、可変長の場合は -1
typprtlenint2 使用されていません
typbyvalbool  typbyval は内部関数がこの型の値を値渡しで渡すか、参照渡しで渡すかを決定します。charshortint と同等のもののみ値で引き渡すことが可能です。つまり、型が 1、2、4 バイト長以外の場合 PostgreSQL はその値を引き渡すオプションを持っていなので typbyval を偽にする必要があります。可変長型は必ず参照渡しになります。typbyval は、長さ的に引き渡し可能でも偽になりうるということに注意してください。現在 float4 などがこれに該当します
typtypechar  typtype は、b は基本型、 c は複合型(すなわちテーブルの行の型)となります。 typtypecであれば、 typrelidpg_class にある型の見出し語の OID です。
typisdefinedbool  型が定義されると真、ここが未定義型にたいする予備の場所であるときは偽。typisdefined が偽の場合型名と OID 以外は信頼すべきでありません。
typdelimchar  配列入力の構文解析をする際にこの型を持っている 2 つの値を分離する文字。区切り文字は配列データ型ではなく配列要素データ型に関連づけられることに注意してください。
typrelidoidpg_class.oid もしこれが複合型 (typtype を参照)であれば、このフィールドは関連するテーブルを定義する pg_class の見出し語を指します。テーブルは理論的にはデータ型の複合として使用できますが、十分には機能しません。
typelemoidpg_type.oid typelem が 0 でない場合、typelem は pg_type の別の列を識別します。現在の型はそこで配列のように、typelem 型の値を放棄し、配列要素を持てるようになります。"真"の配列型は可変長(typlen = -1)ですが、いくつかの固定長(typlen > 0)型も同時にゼロでない typelem を持つことができます。例えば nameoidvector です。もし固定長型が typelem を持つならその内部表現は他のデータを持たない typelem データ型の N 個の値でなければなりません。可変長配列型には配列サブルーチンで定義されたヘッダーがあります。
typinputregproc 入力関数
typoutputregproc 出力関数
typreceiveregproc 使用されていません
typsendregproc 使用されていません
typalignchar 

typalign はこの型の値を格納する際に必要なアライメントです。ディスクに書き込むときやほとんどの PostgreSQL 内の値を表現するのに使用されます。ディスクに完全な列を格納するときなど、いくつかの値が連続して格納される際、境界を特定するためにこの型のデータの前にパッドが挿入されます。アライメントの参照はシーケンスの一番最初にあります。使用可能な値は以下のとおりです。

  • 'c' = CHAR アライメント(すなわち、アライメントは必要ありません)。

  • 's' = SHORT アライメント(多くのマシンでは 2 バイトになります)。

  • 'i' = INT アライメント(多くのマシンでは 4 バイトになります)。

  • 'd' = DOUBLE アライメント(多くのマシンでは 8 バイトになりますが、必ずしもすべてがそうであるとは限りません)。

Note: システムテーブルで使用されている型については、 pg_type システムカタログで定義されている大きさとアライメントは、コンパイラがテーブルの行を表現する構造体に対して位置決めを行なうものと厳密に合致することが求められます。

typstoragechar 

typstorage は可変長型(typlen = -1 のもの)に対して型が TOAST に対応しているかとこの型の属性のデフォルト手順が何であるべきかを伝えます。使用可能な値は以下のとおりです。

  • 'p':値は必ず簡潔な状態で格納されなければいけません。

  • 'e':値は"従属的"リレーションに格納することができます(リレーションに関することは pg_classreltoastrelid を参照してください)。

  • 'm':値は圧縮された inline に格納することができます。

  • 'x':値は圧縮された、inline もしくは"従属"に格納することができます。

'm' のフィールドは補助記憶に移すことができますが、最後の切札としてでなければいけません('e' と 'x' フィールドが先に移動されます)。

typdefaulttext 

デフォルト値を持たない型に対して typdefault はNULL です。NULL でない場合はその型のデフォルト値の外部文字列表現を含んでいます。