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: https://www.postgresql.org/docs/15/ltree.html#id-1.11.7.32.9.