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

ltree_plpython2u. Трансформация для типа ltree в структуру PL/Python2u

В исходном дистрибутиве установлено по умолчанию: нет.

Связанные компоненты: ltree, plpython2u.

Схема размещения: ext.

Этот модуль реализует трансформации типа данных ltree для недоверенного (untrusted) языка PL/Python2.

Описание типа 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. Обратное преобразование не поддерживается.

Установка

Необходима предварительная установка связанного расширения plpython2u или использовать предложение CASCADE.

Модуль считается «доверенным», поэтому его могут устанавливать пользователи, имеющие право CREATE в текущей базе данных:

CREATE EXTENSION ltree_plpython2u CASCADE SCHEMA ext;

Внимание!

Расширения, реализующие трансформации, рекомендуется устанавливать в одну схему с ltree. Другая схема может содержать объекты, созданные злонамеренным пользователем. Выбор такой схемы может повлечь за собой угрозу безопасности во время установки расширения.

Настройка

Не требуется.

Использование модуля/руководство по использованию

Использование модуля описано здесь: ltree. Тип данных для представления меток в иерархической древовидной структуре.

Пример № 1:

CREATE FUNCTION test1(val ltree) RETURNS int
LANGUAGE plpython2u
TRANSFORM FOR TYPE ltree
AS $$
plpy.info(repr(val))
return len(val)
$$;
SELECT test1('aa.bb.cc'::ltree);

Пример вывода результата:

INFO:  ['aa', 'bb', 'cc']
test1
-------
3
(1 row)

Пример № 2:

CREATE FUNCTION test1n(val ltree) RETURNS int
LANGUAGE plpython2u
TRANSFORM FOR TYPE ltree
AS $$
plpy.info(repr(val))
return len(val)
$$;
SELECT test1n('aa.bb.cc.free'::ltree);

Пример вывода результата:

INFO:  ['aa', 'bb', 'cc', 'free']
test1n
--------
4
(1 row)

Ссылки на документацию разработчика

Дополнительно поставляемый модуль ltree_plpython2u: https://www.postgresql.org/docs/15/ltree.html#id-1.11.7.32.9.