pg_cast

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

# 44.10. `pg_cast`

`pg_cast`カタログには、データ型変換パスが格納されます。 ここには、組み込みのパスとCREATE CASTで定義されたパスが存在します。

`pg_cast`は、システムがどのように動作するか分かっているような、あらゆる型変換を表しているわけではないということに注意してください。 いくつかの一般的なルールから推測ができないような型変換についてのみ表しています。 例えば、ドメインとその基本の型は明示的に`pg_cast`内で表されていません。 ほかの重要な例外は"自動I/O変換キャスト"です。これらのキャストは、`text`型やほかの文字列型から変換したりされたりするのにデータ型自身のI/O関数を用いていますが、これらのキャストは明示的に`pg_cast`内において表されていません。

表 44-10. `pg_cast`の列

名前 | 型 | 参照先 | 説明
--- | --- | --- | ---
`castsource` | `oid` | ``pg_type`.oid` | ソースデータ型のOID
`casttarget` | `oid` | ``pg_type`.oid` | 対象データ型のOID
`castfunc` | `oid` | ``pg_proc`.oid` | このキャストを実行するために使用する関数のOID。キャストメソッドが関数を必要とする場合はゼロが格納されます。
`castcontext` | `char` |  | キャストがどの構文で起動されるかを示します。`e`は、明示のキャストとしてのみ起動されることを意味します（`CAST`、`::`構文を使用します）。`a`は、対象となる列を明示的に特定するだけでなく暗黙的にも特定することを意味します。`i`は他の場合と同様に演算式内で暗黙的であることを意味します。
`castmethod` | `char` |  | どのようにキャストが実行されるかを示しています。 `f`は`castfunc`フィールド内で示される関数が使用されていることを意味します。 `i`は入出力関数が使用されていることを示します。 `b`は型がバイナリを強制しているため、変換が必要ないことを意味します。

`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つ目は修飾子を適用することです。

前のページ | ホーム | 次のページ
`pg_auth_members` | 上に戻る | `pg_class`