pg_type

PostgreSQL 9.1.1文書
前のページ | 巻戻し | 第 45章システムカタログ | 早送り | 次のページ

# 45.48. `pg_type`

`pg_type`カタログはデータ型の情報を保存します。 スカラ型と列挙型（基本型）はCREATE TYPEで作成され、ドメインはCREATE DOMAINで作成されます。 複合型がテーブルの行構成を表すためデータベースの個々のテーブルに対して自動的に作成されます。 複合型を`CREATE TYPE AS`で作成することもできます。

表 45-48. `pg_type`の列

名前 | 型 | 参照先 | 説明
--- | --- | --- | ---
`typname` | `name` |  | データ型名
`typnamespace` | `oid` | ``pg_namespace`.oid` | この型を含む名前空間のOID
`typowner` | `oid` | ``pg_authid`.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`は疑似型となります。 `typrelid`および`typbasetype`も参照してください。
`typcategory` | `char` |  | `typcategory`は、パーサがどの暗黙のキャストが"選択"されるべきか決定するのに使用されるデータ型の任意の分類です。 表45-49を参照してください。
`typispreferred` | `bool` |  | 型が`typcategory`内で選択されたキャスト対象である場合に真となります。
`typisdefined` | `bool` |  | 型が定義されると真、ここが未定義型に対する予備の場所である時は偽。 `typisdefined`が偽の場合、型名と名前空間とOID以外は信頼すべきでありません。
`typdelim` | `char` |  | 配列入力の構文解析をする際にこの型の2つの値を分離する文字。 区切り文字は配列データ型ではなく配列要素データ型に関連付けられることに注意してください。
`typrelid` | `oid` | ``pg_class`.oid` | もしこれが複合型（`typtype`を参照）であれば、この列は関連するテーブルを定義する`pg_class`項目を指します。 （独立の複合型の場合、`pg_class`項目は実際にはテーブルを表しませんが、いずれにしても型の`pg_attribute`項目をリンクするために必要です） 複合型でない場合はゼロです。
`typelem` | `oid` | ``pg_type`.oid` | `typelem`がゼロでない場合、これは`pg_type`の別の列を特定します。 現在の型は、`typelem`型の値を生成する配列のように、配列要素を持てるようになります。 "本当の"の配列型は可変長（`typlen` = -1）ですが、例えば`name`と`point`のように、いくつかの固定長（`typlen` > 0）型は同時に非ゼロの`typelem`を持つことができます。 もし固定長型が`typelem`を持つ場合、その内部表現は他のデータを持たない`typelem`データ型の数個の値でなければなりません。 可変長配列型には配列サブルーチンで定義されたヘッダを持ちます。
`typarray` | `oid` | ``pg_type`.oid` | `typarray`がゼロでない場合、`typarray`は`pg_type`内のもうひとつの行を特定します。 もうひとつの行は、この型を要素として持っている"本当"の配列型です。
`typinput` | `regproc` | ``pg_proc`.oid` | 入力変換関数（テキスト形式）
`typoutput` | `regproc` | ``pg_proc`.oid` | 出力変換関数（テキスト形式）
`typreceive` | `regproc` | ``pg_proc`.oid` | 入力変換関数（バイナリ形式）、なければゼロ
`typsend` | `regproc` | ``pg_proc`.oid` | 出力変換関数（バイナリ形式）、なければゼロ
`typmodin` | `regproc` | ``pg_proc`.oid` | 型修飾子の入力関数。型が修飾子をサポートしていない場合はゼロ
`typmodout` | `regproc` | ``pg_proc`.oid` | 型修飾子の出力関数。標準書式を使用する場合はゼロ
`typanalyze` | `regproc` | ``pg_proc`.oid` | 独自の`ANALYZE`関数。標準関数を使用する場合はゼロ
`typalign` | `char` |  | `typalign`はこの型の値を格納する際に必要な整列です。 ディスクに書き込む時やほとんどのPostgreSQL内の値を表現するために使用されます。 ディスクに完全な列を格納する時など、いくつかの値が連続して格納される際、境界を特定するためにこの型のデータの前にパッドが挿入されます。 整列参照はシーケンスの一番最初にあります。 使用可能な値は以下の通りです。 `c` = `char`整列（すなわち、整列は必要ありません）。 `s` = `short`整列（多くのマシンでは2バイトになります）。 `i` = `int`整列（多くのマシンでは4バイトになります）。 `d` = `double`整列（多くのマシンでは8バイトになりますが、必ずしもすべてがそうであるとは限りません）。 注意: システムテーブルで使用されている型については、`pg_type`システムカタログで定義されている大きさと整列は、コンパイラがテーブルの行を表現する構造体に対して位置決めを行うものと厳密に一致することを求められています。
`typstorage` | `char` |  | `typstorage`は、varlena型（`typlen` = -1のもの）に対して型がTOASTに対応しているか、また、この型の属性のデフォルト戦略が何であるべきかを伝えます。 使用可能な値は以下の通りです。 `p`：値は必ずそのまま格納されなければいけません。 `e`：値は"従属的"リレーションに格納できます（リレーションに関しては`pg_class.reltoastrelid`を参照してください）。 `m`：値は圧縮されたインラインに格納することができます。 `x`：値は圧縮されたインラインもしくは"従属"格納領域に格納することができます。 `m`列も従属格納領域に移すことができますが、最後の切札としてでなければいけません（`e`と`x`列が先に移動されます）。
`typnotnull` | `bool` |  | `typnotnull`は型に対し非NULL制約を表します。 ドメインでのみ使用されます。
`typbasetype` | `oid` | ``pg_type`.oid` | もしこれがドメイン（`typtype`を参照）であれば、`typbasetype`はこれが基づいている型を指定します。 ドメインでない場合はゼロです。
`typtypmod` | `int4` |  | ドメインは`typtypmod`を使用して、基本型に適用される`typmod`を記録します （基本型が`typmod`を使用しない場合は-1）。 この型がドメインでない場合は-1です。
`typndims` | `int4` |  | `typndims`は配列であるドメインの配列の次元数です （つまり、`typbasetype`は配列型です。）。 配列型のドメインでない場合はゼロです。
`typcollation` | `oid` | ``pg_collation`.oid` | `typcollation`は型の照合順序を指定します。 型が照合順序をサポートしない場合、ゼロになります。 照合順序をサポートする基本型はここで`DEFAULT_COLLATION_OID`を持ちます。 照合順序の設定可能な型全体のドメインは、そのドメインで照合順序が指定されていれば、他の照合順序OIDを持つことができます。
`typdefaultbin` | `pg_node_tree` |  | `typdefaultbin`がNULLでない場合、これは型のデフォルト式の`nodeToString()`表現です。 ドメインでのみ使用されます。
`typdefault` | `text` |  | 関連するデフォルト値を持たない型であれば`typdefault`はNULLです。 `typdefaultbin`がNULLでない場合、`typdefault`は、`typdefaultbin`によって表される人間が見てわかる形式のデフォルト式を含む必要があります。 `typdefaultbin`がNULLで`typdefault`がNULLでない場合、`typdefault`は型のデフォルト値の外部表現です。 これは、定数を生成するために型の入力変換処理に渡されることがあります。

表45-49はシステムで定義された`typcategory`の値の一覧です。 今後この一覧に追加されるものは同様に大文字のASCII文字になります。 他のすべてのASCII文字はユーザ定義のカテゴリのために予約されています。

表 45-49. `typcategory`のコード

コード | カテゴリ
--- | ---
`A` | 配列型
`B` | 論理値型
`C` | 複合型
`D` | 日付時刻型
`E` | 列挙型
`G` | 幾何学型
`I` | ネットワークアドレス型
`N` | 数値型
`P` | 仮想型
`S` | 文字列型
`T` | 時間間隔型
`U` | ユーザ定義型
`V` | ビット列型
`X` | `unknown`型

前のページ | ホーム | 次のページ
`pg_ts_template` | 上に戻る | `pg_user_mapping`