無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

47.51. pg_type

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

表 47-51. pg_type の列

名前 参照先 説明
oid oid   行識別子(隠し属性です。明示的に選択しなければなりません)
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 は疑似型、 r は範囲型となります。 typrelid および typbasetype も参照してください。
typcategory char   typcategory は、パーサがどの暗黙のキャストが "選択" されるべきか決定するのに使用されるデータ型の任意の分類です。 表47-52 を参照してください。
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 は型のデフォルト値の外部表現です。 これは、定数を生成するために型の入力変換処理に渡されることがあります。

typacl aclitem[]   アクセス特権。詳細は GRANT REVOKE を参照してください。

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

表 47-52. typcategory のコード

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

powered by SEO.CUG.NET