Re: making EXPLAIN extensible
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Andrei Lepikhov <lepihov@gmail.com>
Cc: Sami Imseih <samimseih@gmail.com>, 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-22T16:10:53Z
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 Sat, Mar 22, 2025 at 4:46 AM Andrei Lepikhov <lepihov@gmail.com> wrote: > I skimmed through the code and tested how it works. > It looks good and has no apparent architectural dependencies. > But I haven't scrutinised it line-by-line and do not intend to do so. > I wanna say I hate the design of this module. Having a strong necessity > for extra explain tools (in the daily routine, all I have is the only > single explain analyse verbose output to find out planner/executor bug, > reproduce it and make a patch), I don't see a single case when I would > use this module. It adds a burden to fix its output on a node change > (you don't care, but it adds work to Postgres fork maintainers, too, for > nothing). Also, it breaks my understanding of the principles of the > Postgres code design - to start the discussion on how to show more, we > need only the bare minimum of code and output lines. > In my opinion, it should show as few parameters as possible to > demonstrate principles and test the code on a single planner node. It > only deserves src/test/modules because it is not helpful for a broad > audience. Gee, thanks for the ringing endorsement. :-) I think *I* will use it pretty regularly; I already have. In my experience, using debug_query_plan for this sort of thing sucks quite a lot. Finding the information you need in the output takes a long time because the output is quite long. This is much more understandable, at least for me. I agree with you that a trivial test module could demonstrate that the hook works, but a trivial example would not demonstrate that the hook can be used to do something actually useful. It sounds like what I've written also fails the "actually useful" test for you, but it doesn't for me. I'm not going to insist on shipping this if I'm the ONLY one who would ever get any use out of it, but I doubt that's the case. -- Robert Haas EDB: http://www.enterprisedb.com