他のバージョンの文書 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

41.8. pg_cast

pg_cast カタログは、データ型変換過程を格納します。組み込まれている過程と CREATE CAST で定義された過程の両方ともこのカタログに格納されます。

表 41-8. pg_cast Columns

名前参照先説明
castsourceoidpg_type.oidソースデータ型の OID
casttargetoidpg_type.oid対象データ型の OID
castfuncoidpg_proc.oid このキャストを実行するために使用する関数の OID。データ型をバイナリに強制変換できる場合はゼロが格納されます(つまり、キャストを実行するためにランタイム操作は必要ありません)。
castcontextchar  キャストがどの構文で起動されるかを示します。e は、明示のキャストとしてのみ起動されることを意味します(CAST::構文を使用します)。a は、対象となる列を明示的に特定するだけでなく暗黙的にも特定することを意味します。i は他の場合と同様に演算式内で暗黙的であることを意味します。

pg_cast内に挙げられているキャスト関数は、第1番目の引数の型として、キャスト元の型をいつも取らなければいけません。また、キャスト関数は、結果の型としてキャスト先の型を返します。キャスト関数は3つまで引数を持つことが出来ます。もし存在するなら、2番目の引数はinteger型でなくてはなりません。この引数は、キャスト先の型に関連付けられた型修飾子を受け取ります。2番目の引数が無い場合は、-1です。3番目の引数は、もし存在する場合は、boolean型でなくてはなりません。この引数は、もしキャストが明示的なキャストであればtrueを受け取り、そうでない場合はfalseを受け取ります。

もし関連のある関数が1つ以上の引数を持つ場合は、キャストの型が元と先で同じであるpg_castエントリを作成することが妥当です。このようなエントリは、"length coercion functions"を表現します。"length coercion functions"は型の値を特定の型の修飾子の値に適するように修正します。現状では、デフォルトではない型修飾子とユーザが作成したデータ型を関連付けることに対してサポートが無いことに注意して下さい。よって本機能は、型修飾子構文が文法に組みこまれている、少ない数の組み込み済みの型に対してのみ使用できます。

pg_castエントリが異なるキャスト元とキャスト先の型を持っていて、かつ関数が1つ以上の引数を持つときは、1つの型から別の型への変換を意味していて、1つの手順で長さの修正を適用します。このようなエントリが利用できないときは、型修飾子を使用した型の修正は2つの手順が必要です。1つはデータ型の間での変換で、2つ目は修飾子を適用することです。