pg_type カタログは、データの型に関する情報を格納します。
基本型および列挙型(スカラー型)は、
CREATE TYPEを使用して作成します。ドメインは、
CREATE DOMAINを使用して作成します。複合型は、データベース内の各テーブルについて、そのテーブルの行構造を表すために自動的に作成されます。また、
CREATE TYPE ASを使用して複合型を作成することもできます。
カラム
| カラム | 型 | 説明 |
|---|---|---|
oid | oid | 行識別子。 |
typname | name | データの型の名前。 |
typnamespace | oid | この型を含む名前空間の OID。 |
typowner | oid | 型の所有者。 |
typlen | int2 | 固定長型の場合:内部表現におけるバイト数。可変長型の場合:負の値。-1 は varlena 型(長さワードを持つ型)を示します。-2 は NULL 終端の C 文字列を示します。 |
typbyval | bool | 内部ルーティンがこの型の値を値渡し(by value)または参照渡し(by reference)で渡すかを決定します。typbyval は、typlen が 1、2、4(または Datum が 8 バイトのマシンでは 8)でない場合、false であるべきです。可変長型は常に参照渡しで渡されます。なお、typbyval は、長さが値渡しを許容する場合でも false となることがあります。 |
typtype | char | 型の種類。詳細については、「typtype の値」をご参照ください。 |
typcategory | char | パーサーが暗黙的なキャストの優先順位を決定するために使用する任意の分類。詳細については、「typcategory のコード」をご参照ください。 |
typispreferred | bool | true の場合、この型はその typcategory 内で推奨されるキャスト対象となります。 |
typisdefined | bool | true の場合、この型は完全に定義されています。false の場合、これはまだ定義されていない型のプレースホルダーとしてのエントリであり、その場合は型名、名前空間、OID のみが信頼できます。 |
typdelim | char | 配列入力を解析する際に、この型の 2 つの値を区切る文字。デリミタは配列型自体ではなく、配列要素の型に関連付けられます。 |
typrelid | oid | 複合型の場合:対応するテーブルを定義する pg_class エントリを指します。(スタンドアロンの複合型の場合、pg_class エントリは実際にはテーブルを表しませんが、この型の pg_attribute エントリがリンクできるようにするために必要です。)非複合型の場合:ゼロ。 |
typelem | oid | 非ゼロの場合、添字参照によって返される型を定義する、pg_type 内の別の行を識別します。「typsubscript」がゼロの場合はゼロですが、「typsubscript」が非ゼロであっても、ハンドラが添字参照結果の型を決定するために「typelem」を必要としない場合、ゼロになることがあります。「typelem」の依存関係は、この型に対する要素型の物理的な包含を意味し、要素型に対する DDL 変更を制限する可能性があります。 |
typarray | oid | ゼロでない場合:この型を要素型とする「真の」配列型を定義する pg_type 内の別の行を識別します。 |
typinput | regproc | 入力変換関数(テキスト形式)。 |
typoutput | regproc | 出力変換関数(テキスト形式)。 |
typreceive | regproc | 入力変換関数(バイナリ形式)、または存在しない場合はゼロ。 |
typsend | regproc | 出力変換関数(バイナリ形式)、または存在しない場合はゼロ。 |
typmodin | regproc | 型修飾子の入力関数、またはこの型が修飾子をサポートしない場合はゼロ。 |
typmodout | regproc | 型修飾子の出力関数、または標準フォーマットを使用する場合はゼロ。 |
typanalyze | regproc | カスタム ANALYZE 関数、または標準関数を使用する場合はゼロ。 |
typalign | char | この型の値を格納する際に必要な配置(alignment)。ディスクストレージおよびほとんどのメモリ内表現に適用されます。複数の値が連続して格納される場合(たとえば、ディスク上の完全な行)、この型の値の前にパディングが挿入され、シーケンス内の最初のデータ項の開始位置から測定した指定された境界上に値が配置されます。可能な値:c(char 配置:配置不要)、s(short 配置:ほとんどのマシンで 2 バイト)、i(int 配置:ほとんどのマシンで 4 バイト)、d(double 配置:多くのマシンで 8 バイト)。 |
typstorage | char | varlena 型(typlen = -1)の場合:この型が TOAST(The Oversized-Attribute Storage Technique)をサポートするかどうか、およびこの型のカラムに対するデフォルトのストレージ戦略を示します。可能な値:p(plain)=値は常に圧縮なし・アウトオブラインストレージなしで格納される必要があります。e(external)=値はセカンダリ TOAST リレーション(該当するリレーションがある場合。詳細は pg_class.reltoastrelid をご参照ください)に格納できます。m(main)=値は圧縮されてインラインで格納できます。x(extended)=値は圧縮および/またはセカンダリリレーションへの移動が可能です。x は、TOAST 対応型の通常の選択肢です。m の値もセカンダリストレージに移動可能ですが、最終手段(e および x の値が優先的に移動されます)。非-varlena 型は常に p を使用します。 |
typnotnull | bool | 型に対する NOT NULL 制約を表します。ドメインでのみ使用されます。 |
typbasetype | oid | ドメインの場合:基底型を識別します。非ドメイン型の場合:ゼロ。 |
typtypmod | int4 | ドメインの場合:基底型に適用された型修飾子(typmod)を記録します。基底型が型修飾子を使用しない場合、またはこの型がドメインでない場合は -1 です。 |
typndims | int4 | 配列型のドメイン(つまり、typbasetype が配列型)における配列次元数。配列ドメイン以外の型ではゼロ。 |
typcollation | oid | 型の照合順序。照合順序をサポートしない型の場合はゼロ。照合順序をサポートする基底型では、ここにゼロでない値(通常は DEFAULT_COLLATION_OID)が設定されます。照合順序をサポートする型のドメインでは、ドメインに対して照合順序 OID が明示的に指定されている場合、基底型とは異なる照合順序 OID が設定されることがあります。 |
typdefaultbin | pg_node_tree | NULL でない場合:この型のデフォルト式の nodeToString() 表現です。ドメインでのみ使用されます。 |
typdefault | text | この型に関連付けられたデフォルト値がない場合は NULL です。typdefaultbin が NULL でない場合、typdefault には typdefaultbin の人間が読める形式のデフォルト式が含まれている必要があります。typdefaultbin が NULL で、typdefault が NULL でない場合、typdefault はこの型のデフォルト値の外部表現であり、この型の入力コンバーターに入力することで定数を生成できます。 |
typacl | aclitem[] | アクセス権限。 |
説明
システムテーブルで使用される固定幅型の場合、pg_type で定義されたサイズおよび配置は、コンパイラがテーブル行を表す構造体内でカラムをレイアウトする方法と一致している必要があります。
typtype の値
| 値 | 型 |
|---|---|
b | 基本型 |
c | 複合型(例:テーブルの行型) |
d | ドメイン |
e | 列挙型 |
p | 疑似型 |
r | 範囲型 |
typcategory のコード
typcategory カラムでは、単一の大文字 ASCII 文字が使用されます。今後のシステム定義カテゴリも大文字 ASCII 文字を使用します。その他のすべての ASCII 文字は、ユーザー定義カテゴリのために予約されています。
| コード | カテゴリ |
|---|---|
A | 配列型 |
B | ブール値型 |
C | 複合型 |
D | 日付/時刻型 |
E | 列挙型 |
G | 幾何学的型 |
I | ネットワークアドレス型 |
N | 数値型 |
P | 疑似型 |
R | 範囲型 |
S | 文字列型 |
T | 時間間隔型 |
U | ユーザー定義型 |
V | ビット列型 |
X | unknown 型 |