pg_cast
#
The catalog <structname>pg_cast</structname> stores data type conversion
paths, both built-in and user-defined.
pg_cast
カタログにはデータ型変換パスが格納されます。
ここには、組み込みのパスとユーザ定義のパスが存在します。
It should be noted that <structname>pg_cast</structname> does not represent
every type conversion that the system knows how to perform; only those that
cannot be deduced from some generic rule. For example, casting between a
domain and its base type is not explicitly represented in
<structname>pg_cast</structname>. Another important exception is that
<quote>automatic I/O conversion casts</quote>, those performed using a data
type's own I/O functions to convert to or from <type>text</type> or other
string types, are not explicitly represented in
<structname>pg_cast</structname>.
pg_cast
は、システムがどのように動作するかわかっているような、あらゆる型変換を表しているわけではないということに注意してください。
いくつかの一般的な規則から推測できないような型変換についてのみ表しています。
例えば、ドメインとその基本の型は明示的にpg_cast
内で表されていません。
他の重要な例外は「自動I/O変換キャスト」です。
これらのキャストは、text
型やほかの文字列型から変換したりされたりするのにデータ型自身のI/O関数を用いていますが、これらのキャストは明示的にpg_cast
内において表されていません。
表51.10 pg_cast
の列
Column Type 列 型 Description 説明 |
---|
Row identifier 行識別子 |
OID of the source data type 変換元データ型のOID |
OID of the target data type 対象データ型のOID |
The OID of the function to use to perform this cast. Zero is stored if the cast method doesn't require a function. このキャストを実行するために使用する関数のOID。 キャストメソッドが関数を必要としない場合はゼロが格納されます。 |
Indicates what contexts the cast can be invoked in.
<literal>e</literal> means only as an explicit cast (using
<literal>CAST</literal> or <literal>::</literal> syntax).
<literal>a</literal> means implicitly in assignment
to a target column, as well as explicitly.
<literal>i</literal> means implicitly in expressions, as well as the
other cases.
キャストがどの文脈で呼び出し可能かを示します。
|
Indicates how the cast is performed.
<literal>f</literal> means that the function specified in the <structfield>castfunc</structfield> field is used.
<literal>i</literal> means that the input/output functions are used.
<literal>b</literal> means that the types are binary-coercible, thus no conversion is required.
どのようにキャストが実行されるかを示します。
|
The cast functions listed in <structname>pg_cast</structname> must
always take the cast source type as their first argument type, and
return the cast destination type as their result type. A cast
function can have up to three arguments. The second argument,
if present, must be type <type>integer</type>; it receives the type
modifier associated with the destination type, or -1
if there is none. The third argument,
if present, must be type <type>boolean</type>; it receives <literal>true</literal>
if the cast is an explicit cast, <literal>false</literal> otherwise.
pg_cast
内に挙げられているキャスト関数は、第1番目の引数の型として、キャスト元の型をいつも取らなければいけません。
また、キャスト関数は、結果の型としてキャスト先の型を返します。
キャスト関数は3つまで引数を持つことができます。
もし存在するなら、2番目の引数はinteger
型でなくてはなりません。
この引数はキャスト先の型に関連付けられた型修飾子を受け取ります。
2番目の引数がない場合は、-1です。
3番目の引数は、もし存在する場合は、boolean
型でなくてはなりません。
この引数は、もしキャストが明示的なキャストであればtrue
を受け取り、そうでない場合はfalse
を受け取ります。
It is legitimate to create a <structname>pg_cast</structname> entry
in which the source and target types are the same, if the associated
function takes more than one argument. Such entries represent
<quote>length coercion functions</quote> that coerce values of the type
to be legal for a particular type modifier value.
もし関連のある関数が複数の引数を持つ場合、キャストの元と先で型が同じであるpg_cast
項目を作成することが妥当です。
このような項目は、「length coercion functions」を表現します。
「length coercion functions」は型の値を特定の型の修飾子の値に適するように修正します。
When a <structname>pg_cast</structname> entry has different source and
target types and a function that takes more than one argument, it
represents converting from one type to another and applying a length
coercion in a single step. When no such entry is available, coercion
to a type that uses a type modifier involves two steps, one to
convert between data types and a second to apply the modifier.
pg_cast
項目が異なるキャスト元とキャスト先の型を持っていて、かつ関数が複数の引数を持つ時は、1つの型から別の型への変換し、かつ、1つの手順で長さの修正を適用することを意味します。
このような項目が利用できない時は、型修飾子を使用した型の修正は2つの手順が必要です。
1つはデータ型の間での変換で、2つ目は修飾子を適用することです。