CREATE CONVERSION <refpurpose>define a new encoding conversion</refpurpose> — 新しい符号化方式変換を定義する
CREATE [ DEFAULT ] CONVERSIONname
FORsource_encoding
TOdest_encoding
FROMfunction_name
<command>CREATE CONVERSION</command> defines a new conversion between
two character set encodings.
CREATE CONVERSION
を使用すると、2つの文字セット符号化方式間の新しい変換を定義できます。
Conversions that are marked <literal>DEFAULT</literal> can be used for
automatic encoding conversion between client and server. To support that
usage, two conversions, from encoding A to B <emphasis>and</emphasis>
from encoding B to A, must be defined.
DEFAULT
として指定された変換は、クライアントとサーバの間での自動的な符号化方式の変換に使用できます。
そのような使い方をサポートするためには、符号化方式Aから符号化方式Bへ、および、符号化方式Bから符号化方式Aへという2つの変換を定義する必要があります。
To be able to create a conversion, you must have <literal>EXECUTE</literal> privilege
on the function and <literal>CREATE</literal> privilege on the destination schema.
変換を作成するためには、その関数のEXECUTE
権限、および、対象となるスキーマ上のCREATE
権限を保持している必要があります。
DEFAULT
The <literal>DEFAULT</literal> clause indicates that this conversion
is the default for this particular source to destination
encoding. There should be only one default encoding in a schema
for the encoding pair.
DEFAULT
句により、この変換が、指定された変換元から対象となる符号化方式への変換のデフォルトであることが示されます。
1つのスキーマ内でデフォルトとされる変換は、符号化方式の組み合わせ1組において1つだけです。
name
The name of the conversion. The conversion name can be schema-qualified. If it is not, the conversion is defined in the current schema. The conversion name must be unique within a schema. 変換の名前です。 変換名は、スキーマ修飾することができます。 スキーマ修飾されていない場合、変換は現在のスキーマに定義されます。 変換名は、スキーマ内で一意である必要があります。
source_encoding
The source encoding name. 変換元の符号化方式名です。
dest_encoding
The destination encoding name. 変換先の符号化方式名です。
function_name
The function used to perform the conversion. The function name can be schema-qualified. If it is not, the function will be looked up in the path. この関数は、変換の実行に使用されます。 関数名は、スキーマ修飾することができます。 スキーマ修飾されていない場合、関数はパスから検索されます。
The function must have the following signature: 関数は、下記のような形式で記述する必要があります。
conv_proc(
integer, -- source encoding ID
integer, -- destination encoding ID
cstring, -- source string (null terminated C string)
internal, -- destination (fill with a null terminated C string)
integer, -- source string length
boolean -- if true, don't throw an error if conversion fails
integer, -- 変換元符号化方式ID
integer, -- 変換先符号化方式ID
cstring, -- 変換元文字列(NULLで終わるC言語文字列)
internal, -- 変換先文字列(NULLで終わるC言語文字列)
integer, -- 変換元文字列長
boolean -- 真の場合、変換が失敗してもエラーにならない
) RETURNS integer;
The return value is the number of source bytes that were successfully converted. If the last argument is false, the function must throw an error on invalid input, and the return value is always equal to the source string length. 戻り値は変換に成功した変換元のバイト数です。 最後の引数が偽であれば、関数は無効な入力をエラーにしなければならず、戻り値は常に変換元文字列長に等しいです。
Neither the source nor the destination encoding can
be <literal>SQL_ASCII</literal>, as the server's behavior for cases
involving the <literal>SQL_ASCII</literal> <quote>encoding</quote> is
hard-wired.
SQL_ASCII
「符号化方式」を含む場合のサーバの振る舞いは組み込まれたものですので、変換元の符号化方式も対象となる符号化方式もSQL_ASCII
とすることはできません。
Use <command>DROP CONVERSION</command> to remove user-defined conversions.
ユーザ定義の変換を削除するには、DROP CONVERSION
を使用します。
The privileges required to create a conversion might be changed in a future release. 変換の作成に必要な権限は、今後のリリースで変更される可能性があります。
To create a conversion from encoding <literal>UTF8</literal> to
<literal>LATIN1</literal> using <function>myfunc</function>:
myfunc
関数を使用して、UTF8
からLATIN1
への符号化方式の変換を作成します。
CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;
<command>CREATE CONVERSION</command>
is a <productname>PostgreSQL</productname> extension.
There is no <command>CREATE CONVERSION</command>
statement in the SQL standard, but a <command>CREATE TRANSLATION</command>
statement that is very similar in purpose and syntax.
CREATE CONVERSION
は、PostgreSQLの拡張です。
標準SQLにはCREATE CONVERSION
文はありませんが、CREATE TRANSLATION
文の目的および構文は非常に似たものです。