Перейти к основному содержимому

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.

Обратное преобразование не поддерживается.

Доработка

Доработка не проводилась.

Ограничения

  1. Рекомендуется устанавливать в одну схему с ltree.

  2. Обратное преобразование не поддерживается.

Установка

Необходима предварительная установка связанного расширения 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.