Re: making EXPLAIN extensible
Sami Imseih <samimseih@gmail.com>
From: Sami Imseih <samimseih@gmail.com>
To: Andrei Lepikhov <lepihov@gmail.com>
Cc: Robert Haas <robertmhaas@gmail.com>, Tom Lane <tgl@sss.pgh.pa.us>, Jeff Davis <pgsql@j-davis.com>, Thom Brown <thom@linux.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-03-20T14:04: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 19/3/2025 21:51, Sami Imseih wrote: > >> Why do you think this hook is not redundant? > > what is it redundant with? > > > >> It would be better to add the parameter "type: EXPLAIN_ONLY | > >> ANALYZE_ONLY | BOTH" to the RegisterExtensionExplainOption() routine. > >> This value will be saved inside the ExplainExtensionOption structure and > >> processed by the core inside the ParseExplainOptionList. > > > > hmm, IIUC, what you are describing is flag that will be limited to > > only check if an option can be used with EXPLAIN_ONLY, ANALYZE_ONLY > > or both. But what about if I have a case to check against between other > > extension options? let's say ExtensionAOptionA and ExtensionAoptionB. > > How would that work with the way you are suggesting? > That makes sense. It would be more effective to include the meaningful > example in Robert's extension for v7-0001. While it will be good to provide an example in v7-0001, I can't see any of the pg_overexplain options needing such validation. > I'm sorry, I was confused; previously, the difficulties faced by > extension developers were always attributed to him (refer to the > discussion on the selectivity hook). However, now you're introducing a > hook for a trivial operation that could simply be resolved at the end of > execution within a per-node hook with tiny inconsistency in output. I'm > pleased to see a change in the narrative. I think you are referring to the idea to put a hook before /* in text format, the first line ends here */ After considering the comments, I do see that was not a good proposal. You are correct, and the per-node hook is enough. -- Sami Imseih Amazon Web Services (AWS)