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