Я создаю программу на Java, которая должна автоматически собирать данные в операторах SQL перед их планированием. Программа сейчас запускает оператор EXPLAIN
и анализирует результаты.
Мне нужен параметр времени, поэтому мне нужно работать с ANALYZE
, но я не хочу влиять на какие-либо данные, поэтому мне нужно откатиться. Когда я пытаюсь запустить все это как один блок, как предложено в документации PostgreSQL, с:
BEGIN;
EXPLAIN ANALYZE VERBOSE ...(statement)
ROLLBACK;
Я не получаю результаты оператора EXPLAIN
, скорее, я получаю, что этот блок запросов не затронул ни одной строки.
Так что я не уверен, что лучше всего получить эти данные. Моя мысль, возможно, состоит в том, чтобы создать функцию, в которой оператор является аргументом text
и который возвращает таблицу, состоящую всего из 1 строки / столбца, содержащую вывод EXPLAIN
, но на самом деле я не являюсь мастером функции PostgreSQL, поэтому более простой альтернативой является предпочтительнее.
Не совсем уверен, как это сделать. Любая помощь будет полезна!