Re: making EXPLAIN extensible
Andrei Lepikhov <lepihov@gmail.com>
From: Andrei Lepikhov <lepihov@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Jeff Davis <pgsql@j-davis.com>, Thom Brown <thom@linux.com>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
Tom Lane <tgl@sss.pgh.pa.us>
Date: 2025-03-18T12:02:08Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
pg_overexplain: Use PG_MODULE_MAGIC_EXT.
- 83ccc85859f3 18.0 landed
-
pg_overexplain: Call previous hooks as appropriate.
- 9f0c36aea0fb 18.0 landed
-
pg_overexplain: Additional EXPLAIN options for debugging.
- 8d5ceb113e3f 18.0 landed
-
Add an additional hook for EXPLAIN option validation.
- 50ba65e73325 18.0 landed
-
Add some new hooks so extensions can add details to EXPLAIN.
- 4fd02bf7cf94 18.0 landed
-
Make it possible for loadable modules to add EXPLAIN options.
- c65bc2e1d14a 18.0 landed
On 3/7/25 16:05, Robert Haas wrote: I have attempted to use hooks, proposed in 0002, in my extensions. At first, it worked great. My patch reduced a lot, and the only things that I need in the planner to improve its predictions are the selectivity hook and the create_plan hook - the last one needed to pass data from the best_path chosen to the plan and needed to compare prediction and reality at the end of execution. Some questions: 1. I think, hooks ExplainOneQuery_hook_type, explain_per_plan_hook_type, explain_per_node_hook_type deserve to be moved to explain_format.h At least, inside the hook, we usually use functions like ExplainProperty. 2. In my patch I inserted the hook before the line 1894: /* in text format, the first line ends here */ Why have you chosen a different way? I don't have specific reasons to insist, except the extension data right under the node looks better to me personally. Some changes of the explain format have already been made in the current master. Applying this proposal now would reduce additional work for extension (and fork) maintainers in the next version. -- regards, Andrei Lepikhov