CREATE CONVERSION
CREATE CONVERSION — создать перекодировку
Синтаксис
CREATE [ DEFAULT ] CONVERSIONимяFORисходная_кодировкаTOцелевая_кодировкаFROMимя_функции
Описание
CREATE CONVERSION определяет новую перекодировку между двумя наборами символов.
Перекодировки, помеченные как DEFAULT, могут применяться для автоматического преобразования кодировки между клиентом и сервером. Чтобы такое преобразование было возможно, должны быть определены две перекодировки: из кодировки A в B и из кодировки B в A.
Чтобы создать перекодировку, необходимо иметь право EXECUTE для реализующей функции и право CREATE в целевой схеме.
Параметры
DEFAULTПредложение
DEFAULTпоказывает, что эта перекодировка должна использоваться по умолчанию для преобразования заданной исходной кодировки в целевую. Для каждой пары кодировок может быть только одна перекодировка по умолчанию.имяИмя перекодировки, возможно, дополненное схемой. Если схема не указана, перекодировка создаётся в текущей схеме. Имя перекодировки должно быть уникально в этой схеме.
исходная_кодировкаИмя исходной кодировки.
целевая_кодировкаИмя целевой кодировки.
имя_функцииФункция, выполняющая перекодирование. Имя функции может быть дополнено схемой, в противном случае для поиска функции просматривается путь поиска.
Функция должна иметь следующую сигнатуру:
conv_proc( integer, -- идентификатор исходной кодировки integer, -- идентификатор целевой кодировки cstring, -- исходная строка (строка, завершающаяся 0, как в C) internal, -- целевая строка (заполняется строкой, завершающейся 0, как в C) integer -- длина исходной строки ) RETURNS void;
Примечания
И исходная, и целевая кодировки должны отличаться от SQL_ASCII, так как поведение сервера с «кодировкой» SQL_ASCII предопределено.
Для удаления перекодировок, созданных пользователем, применяется DROP CONVERSION.
Набор прав, требуемых для создания перекодировки, может измениться в будущих версиях.
Примеры
Создание перекодировки из кодировки UTF8 в LATIN1 с использованием функции myfunc:
CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;
Совместимость
Оператор CREATE CONVERSION является расширением PostgreSQL. В стандарте SQL отсутствует оператор CREATE CONVERSION, но есть очень похожий по предназначению и синтаксису оператор CREATE TRANSLATION.
См. также
ALTER CONVERSION, CREATE FUNCTION, DROP CONVERSIONCREATE CONVERSION
CREATE CONVERSION — define a new encoding conversion
Synopsis
CREATE [ DEFAULT ] CONVERSIONnameFORsource_encodingTOdest_encodingFROMfunction_name
Description
CREATE CONVERSION defines a new conversion between two character set encodings.
Conversions that are marked DEFAULT can be used for automatic encoding conversion between client and server. To support that usage, two conversions, from encoding A to B and from encoding B to A, must be defined.
To be able to create a conversion, you must have EXECUTE privilege on the function and CREATE privilege on the destination schema.
Parameters
DEFAULTThe
DEFAULTclause 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.nameThe 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_encodingThe source encoding name.
dest_encodingThe destination encoding name.
function_nameThe 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 ) RETURNS void;
Notes
Neither the source nor the destination encoding can be SQL_ASCII, as the server's behavior for cases involving the SQL_ASCII “encoding” is hard-wired.
Use DROP CONVERSION to remove user-defined conversions.
The privileges required to create a conversion might be changed in a future release.
Examples
To create a conversion from encoding UTF8 to LATIN1 using myfunc:
CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;
Compatibility
CREATE CONVERSION is a PostgreSQL extension. There is no CREATE CONVERSION statement in the SQL standard, but a CREATE TRANSLATION statement that is very similar in purpose and syntax.