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.