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