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型 |