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