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
, который очень похож по назначению и синтаксису.