pg_type
pg_typeカタログはデータ型の情報を保存します。
基本型と列挙型(スカラ型)はCREATE TYPEで作成され、ドメインはCREATE DOMAINで作成されます。
複合型がテーブルの行構成を表すためデータベースの個々のテーブルに対して自動的に作成されます。
複合型をCREATE TYPE ASで作成することもできます。
  
表52.62 pg_typeの列
| 名前 | 型 | 参照先 | 説明 | 
|---|---|---|---|
| oid | oid | 行識別子(隠し属性です。明示的に選択しなければなりません) | |
| typname | name | データ型名 | |
| typnamespace | oid |  | この型を含む名前空間のOID | 
| typowner | oid |  | 型の所有者 | 
| typlen | int2 | 固定長型では、 typlenは型の内部表現内でのバイト数です。
しかし、可変長型ではtyplenは負です。
-1は「varlena」型(最初の4バイトにデータ長を含むもの)を意味し、-2はヌル終端のC言語の文字列を示します。 | |
| typbyval | bool | typbyvalは内部関数がこの型の値を値渡しか、参照渡しかを決定します。typlenが1、2、4バイト長(もしくはDatumが8バイトのマシン上では8バイト長)以外であれば、typbyvalを偽にする必要があります。
可変長型は必ず参照渡しになります。typbyvalは長さが値渡し可能でも偽になり得ることに注意してください。 | |
| typtype | char | typtypeでは、bは基本型、cは複合型(例えばテーブルの行の型)、dは派生型(ドメインなど)、eは列挙型、pは疑似型、rは範囲型です。typrelidおよびtypbasetypeも参照してください。 | |
| typcategory | char | typcategoryは、パーサがどの暗黙のキャストが「選択」されるべきか決定するのに使用されるデータ型の任意の分類です。
表 52.63を参照してください。 | |
| typispreferred | bool | 型が typcategory内で選択されたキャスト対象である場合に真です。 | |
| typisdefined | bool | 型が定義されると真、ここが未定義型に対する予備の場所である時は偽。 typisdefinedが偽の場合、型名と名前空間とOID以外は信頼すべきでありません。 | |
| typdelim | char | 配列入力の構文解析をする際にこの型の2つの値を分離する文字。 区切り文字は配列データ型ではなく配列要素データ型に関連付けられることに注意してください。 | |
| typrelid | oid |  | もしこれが複合型( typtypeを参照)であれば、この列は関連するテーブルを定義するpg_class項目を指します。
(独立の複合型の場合、pg_class項目は実際にはテーブルを表しませんが、いずれにしても型のpg_attribute項目をリンクするために必要です。)
複合型でない場合はゼロです。 | 
| typelem | oid |  | typelemがゼロでない場合、これはpg_typeの別の列を特定します。
現在の型は、typelem型の値を生成する配列のように、配列要素を持てるようになります。
「本当の」の配列型は可変長(typlen= -1)ですが、例えばnameとpointのように、いくつかの固定長(typlen> 0)型は同時に非ゼロのtypelemを持つことができます。
もし固定長型がtypelemを持つ場合、その内部表現は他のデータを持たないtypelemデータ型の数個の値でなければなりません。
可変長配列型には配列サブルーチンで定義されたヘッダを持ちます。 | 
| typarray | oid |  | typarrayがゼロでない場合、typarrayはpg_type内のもうひとつの行を特定します。
もうひとつの行は、この型を要素として持っている「本当」の配列型です。 | 
| typinput | regproc |  | 入力変換関数(テキスト形式) | 
| typoutput | regproc |  | 出力変換関数(テキスト形式) | 
| typreceive | regproc |  | 入力変換関数(バイナリ形式)、なければゼロ | 
| typsend | regproc |  | 出力変換関数(バイナリ形式)、なければゼロ | 
| typmodin | regproc |  | 型修飾子の入力関数。型が修飾子をサポートしていない場合はゼロ | 
| typmodout | regproc |  | 型修飾子の出力関数。標準書式を使用する場合はゼロ | 
| typanalyze | regproc |  | 独自の ANALYZE関数。標準関数を使用する場合はゼロ | 
| typalign | char | 
 使用可能な値は以下の通りです。 
 
 注記
システムテーブルで使用されている型については、 | |
| typstorage | char | 
 
 
        | |
| typnotnull | bool | 
        | |
| typbasetype | oid |  | 
 もしこれがドメイン( | 
| typtypmod | int4 | 
ドメインは | |
| typndims | int4 | 
 | |
| typcollation | oid |  | 
 | 
| typdefaultbin | pg_node_tree | 
 | |
| typdefault | text | 
関連するデフォルト値を持たない型であれば | |
| typacl | aclitem[] | アクセス特権。詳細はGRANTとREVOKEを参照してください。 | 
表 52.63はシステムで定義されたtypcategoryの値の一覧です。
今後この一覧に追加されるものは同様に大文字のASCII文字になります。
他のすべてのASCII文字はユーザ定義のカテゴリのために予約されています。
  
表52.63 typcategoryのコード
| コード | カテゴリ | 
|---|---|
| A | 配列型 | 
| B | 論理値型 | 
| C | 複合型 | 
| D | 日付時刻型 | 
| E | 列挙型 | 
| G | 幾何学型 | 
| I | ネットワークアドレス型 | 
| N | 数値型 | 
| P | 仮想型 | 
| R | 範囲型 | 
| S | 文字列型 | 
| T | 時間間隔型 | 
| U | ユーザ定義型 | 
| V | ビット列型 | 
| X | unknown型 |