CREATE CONVERSION
Определяет новую перекодировку (conversion).
Синтаксис
CREATE [DEFAULT] CONVERSION <name> FOR <source_encoding> TO
<dest_encoding> FROM <funcname>
Описание
CREATE CONVERSION определяет новую перекодировку — преобразование между кодировками символов.
Имена перекодировок могут использоваться в функции перекодировки для указания конкретного преобразования кодировки.
Кроме того, перекодировки, помеченные DEFAULT, могут использоваться для автоматического преобразования кодировки между клиентом и сервером.
Для этой цели должны быть определены две перекодировки: из кодировки A в B и из кодировки B в A.
Чтобы создать перекодировку, необходимо иметь привилегию EXECUTE для функции и привилегию CREATE в целевой схеме.
Параметры
| Параметр | Описание |
|---|---|
DEFAULT |
Указывает, что эта перекодировка является перекодировкой по умолчанию для конкретной пары кодировок источника и назначения. Для пары кодировок в схеме должно быть только одна перекодировка по умолчанию |
name |
Имя перекодировки. Имя перекодировки может быть дополнено схемой. Если оно не указано, перекодировка определяется в текущей схеме. Имя перекодировки должно быть уникальным в пределах схемы |
source_encoding |
Имя исходной кодировки |
dest_encoding |
Имя целевой кодировки |
funcname |
Функция, используемая для выполнения перекодировки. Имя функции может быть дополнено схемой. Если оно не указано, функция будет найдена в пути поиска. Функция должна иметь следующую сигнатуру:
|
Примечания
Обратите внимание, что пользовательские функции пользовательской перекодировки должны быть определены как IMMUTABLE.
Любой скомпилированный код (файлы общих библиотек) для пользовательских функций должен быть размещен в одном и том же месте на каждом хосте в кластере Greengage DB (мастер и все сегменты).
Это местоположение также должно находиться в LD_LIBRARY_PATH, чтобы сервер мог найти файлы.
Примеры
Чтобы создать перекодировку из кодировки UTF8 в LATIN1 с помощью функции myfunc, выполните:
CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;
Совместимость
В стандарте SQL нет оператора CREATE CONVERSION, но есть оператор CREATE TRANSLATION, который очень похож по назначению и синтаксису.