PL / Python3 с массивами VARIADIC в качестве аргументов - PullRequest
1 голос
/ 17 июня 2019

Я использую plpython3u для обработки результата, который содержит произвольное количество столбцов, каждый из которых содержит массив (различной длины> 0).В Python я ожидал бы обработать эти данные как многомерный массив, но у меня возникли проблемы с передачей их из Postgres в мою функцию.

Объявление функции, которое я использую, выглядит следующим образом:

CREATE OR REPLACE FUNCTION is_set_cover_possible(VARIADIC args numeric[][])

Проблема в том, что при попытке

SELECT is_set_cover_possible(ARRAY[1,2],ARRAY[1,2]);

я получаю:

Ни одна функция не соответствует заданному имени и типу аргумента.Возможно, вам понадобится добавить явное приведение типов.

Если я передам (ARRAY[1,2]), функция вернет результат без сбоев, поэтому кажется, что postgres не может обработать многомерное объявление выше.

Итак, если это действительно возможно: Как мне объявить функцию, чтобы получить список массивов?

1 Ответ

1 голос
/ 17 июня 2019

Вы не можете сделать это. Аргументы, используемые как переменные аргументы, не могут быть массивами.

Реализация переменных аргументов была в то время, когда это было невозможно технически. Сейчас это возможно, но никто не реализовал это.

...