ltree_plpythonu. Трансформация для типа ltree в структуру PL/Pythonu
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты:
ltree,plpythonu.Схема размещения:
ext.
Этот модуль реализует трансформации типа данных ltree для недоверенного (untrusted) языка PL/Python.
Описание типа ltree смотрите здесь: ltree. Тип данных для представления меток в иерархической древовидной структуре.
Существуют дополнительные расширения, реализующие трансформации типа ltree для PL/Python:
ltree_plpythonuдля языка Python untrusted;ltree_plpython2uдля языка Python2 untrusted;ltree_plpython3uдля языка Python3 untrusted (связанное расширениеplpython3uотсутствует в дистрибутиве поставки Pangolin версии до5.3.0).
Если установить эти трансформации и указать их при создании функции, значения ltree будут отображаться в словаре Python.
Обратное преобразование не поддерживается.
Доработка
Доработка не проводилась.
Ограничения
-
Рекомендуется устанавливать в одну схему с
ltree. -
Обратное преобразование не поддерживается.
Установка
Необходима предварительная установка связанного расширения plpythonu или использовать предложение CASCADE.
Модуль считается «доверенным», поэтому его могут устанавливать пользователи, имеющие право CREATE в текущей базе данных:
CREATE EXTENSION ltree_plpythonu CASCADE SCHEMA ext;
Расширения, реализующие трансформации, рекомендуется устанавливать в одну схему с ltree. Другая схема может содержать объекты, созданные злонамеренным пользователем. Выбор такой схемы может повлечь за собой угрозу безопасности во время установки расширения.
Настройка
Не требуется.
Использование модуля/руководство по использованию
Использование модуля описано здесь: ltree. Тип данных для представления меток в иерархической древовидной структуре.
Пример №1:
CREATE FUNCTION testp1(val ltree) RETURNS int
LANGUAGE plpythonu
TRANSFORM FOR TYPE ltree
AS $$
plpy.info(repr(val))
return len(val)
$$;
SELECT testp1('aa.bb.cc'::ltree);
Пример вывода результата:
INFO: ['aa', 'bb', 'cc']
testp1
-------
3
(1 row)
Пример №2:
CREATE FUNCTION test4n(val ltree) RETURNS int
LANGUAGE plpythonu
TRANSFORM FOR TYPE ltree
AS $$
plpy.info(repr(val))
return len(val)
$$;
SELECT test4n('aa.bb.cc.free.ddd'::ltree);
Пример вывода результата:
INFO: ['aa', 'bb', 'cc', 'free', 'ddd']
test4n
--------
5
(1 row)
Ссылки на документацию разработчика
Дополнительно поставляемый модуль ltree_plpythonu.