CREATE CONVERSION

Определяет новое преобразование кодировок.

Обзор

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

Описание

CREATE CONVERSION определяет новое преобразование между кодировками символьных наборов. Кроме того, преобразования, помеченные как DEFAULT, могут использоваться для автоматического преобразования кодировок между клиентом и сервером. Для этой цели необходимо определить два преобразования: из кодировки A в B и из кодировки B в A.

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

Параметры

  • 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
      ) RETURNS void;

Замечания

Используйте команду DROP CONVERSION, чтобы удалить пользовательское преобразование.

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

Обратите внимание, что в данной версии Database пользовательские функции, используемые в пользовательских преобразованиях, должны быть определены как IMMUTABLE. Все скомпилированные модули (файлы разделяемых библиотек) для пользовательских функций должны находиться в одинаковых каталогах на каждом хосте в массиве Database (координаторе и всех сегментах). Эти каталоги также должны входить в переменную окружения LD_LIBRARY_PATH, чтобы сервер мог найти файлы.

Примеры

Создание преобразования из кодировки UTF8 в LATIN1 с использованием функции myfunc:

CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;

Совместимость

CREATE CONVERSION является расширением Database. В стандарте SQL нет оператора CREATE CONVERSION, однако существует оператор CREATE TRANSLATION, который аналогичен по назначению и синтаксису.

См. также

ALTER CONVERSION, CREATE FUNCTION, DROP CONVERSION