#c #postgresql #postgresql-12 #postgresql-extensions
#c #postgresql #postgresql-12 #postgresql-расширения
Вопрос:
Я пишу расширение Postgres C для параллельной агрегатной функции. Обычно в C или C я получаю свой идентификатор потока и индексирование выполняемой работы, а затем я могу убедиться, что работа может быть выполнена без зависимости и что конечный результат всегда правильный.
При отсутствии индекса (номера строки в таблице, а не индекса postgres) в строке, с которой я работаю, вместе с идентификатором рабочего, я не могу ничего обработать с помощью своей агрегатной функции и гарантировать правильность.
- Есть ли способ получить worker_id в postgres для параллельных расширений C aggregate?
- Есть ли способ получить индекс / идентификатор / номер строки из агрегатной функции C без необходимости вычислять его в SQL и передавать его в виде столбца в мою функцию?
По крайней мере, я знаю, что идентификатор работника существует, просто не знаю, как его получить.
Комментарии:
1. Можете ли вы показать
CREATE AGGREGATE
инструкцию и как именно вы собираетесь выполнять распараллеливание?2. Как я намереваюсь выполнить распараллеливание? хм, это определяется postgres. Отсюда и весь смысл получения индексов, чтобы независимо от того, как postgres это делает, ответ в любом случае был правильным.