CREATE CONVERSION#

Примечание

Эта страница переведена при помощи нейросети GigaChat.

CREATE CONVERSION – создание нового преобразования кодировки.

Синтаксис#

CREATE [ DEFAULT ] CONVERSION name
    FOR source_encoding TO dest_encoding FROM function_name

Описание#

CREATE CONVERSION определяет новое преобразование между двумя кодировками набора символов.

Преобразования, помеченные как DEFAULT, могут использоваться для автоматической конвертации кодировки между клиентом и сервером. Для поддержки этого использования должны быть определены два преобразования: из кодировки А в В и из кодировки В в А.

Чтобы иметь возможность создать преобразование, необходимо иметь привилегию EXECUTE на функцию и привилегию CREATE на целевую схему.

Параметры#

DEFAULT

Пункт DEFAULT указывает, что это преобразование является стандартным для данной конкретной кодировки источника и назначения. В схеме должна быть только одна стандартная кодировка для пары кодировок.

name

Имя преобразования. Имя преобразования может быть квалифицировано схемой. Если нет, то преобразование определяется в текущей схеме. Имя преобразования должно быть уникальным в пределах схемы.

source_encoding

Имя исходной кодировки.

dest_encoding

Имя кодировки назначения.

function_name

Функция, используемая для выполнения преобразования. Имя функции может быть квалифицировано схемой. Если нет, функция будет найдена по пути.

Функция должна иметь следующую сигнатуру:

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
) RETURNS integer;

Возвращаемое значение – это количество байтов источника, которые были успешно преобразованы. Если последний аргумент равен false, функция должна генерировать ошибку при некорректном вводе, и возвращаемое значение всегда равно длине исходной строки.

Примечания#

Ни исходная, ни целевая кодировка не могут быть повреждены, поскольку поведение сервера для случаев, связанных с поврежденной кодировкой, жестко запрограммировано.

Используйте повреждение для удаления пользовательских преобразований.

Привилегии, необходимые для создания преобразования, могут быть изменены в будущем выпуске.

Примеры#

Для создания преобразования из кодировки 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 CONVERSION