Re: A question about ExplainOnePlan()

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: A question about ExplainOnePlan()
Дата
Msg-id 6807.1166025649@sss.pgh.pa.us
обсуждение исходный текст
Ответ на A question about ExplainOnePlan()  ("Gurjeet Singh" <singh.gurjeet@gmail.com>)
Ответы Re: A question about ExplainOnePlan()  ("Gurjeet Singh" <singh.gurjeet@gmail.com>)
Список pgsql-hackers
"Gurjeet Singh" <singh.gurjeet@gmail.com> writes:
>     In ExplainOnePlan(), we are calling ExecutorStart() and ExecutorEnd()
> even if we are not doing EXPLAIN ANALYZE. Whereas, ExecutorRun() is called
> only if we are ANALYZEing.

>     Can we avoid calls to Executor{Start|End}() here, or is it necessary to
> call them even for non-ANALYZE case?

No; at least not unless you want to duplicate the permission-checking
machinery inside ExecutorStart.  Otherwise EXPLAIN could be used to
obtain information about tables you're not supposed to be able to read
(for instance, the estimated number of rows matching a WHERE condition
could be sensitive information).

Also, you'd have to uglify explain.c quite a lot to be able to handle
the case of traversing a plan tree without a matching planstate tree.
        regards, tom lane


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Better management of mergejoinable operators
Следующее
От: "Gurjeet Singh"
Дата:
Сообщение: Re: A question about ExplainOnePlan()