Re: making EXPLAIN extensible

Robert Haas <robertmhaas@gmail.com>

From: Robert Haas <robertmhaas@gmail.com>
To: Andrei Lepikhov <lepihov@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-03-04T16:18: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 →
  1. pg_overexplain: Use PG_MODULE_MAGIC_EXT.

  2. pg_overexplain: Call previous hooks as appropriate.

  3. pg_overexplain: Additional EXPLAIN options for debugging.

  4. Add an additional hook for EXPLAIN option validation.

  5. Add some new hooks so extensions can add details to EXPLAIN.

  6. Make it possible for loadable modules to add EXPLAIN options.

On Tue, Mar 4, 2025 at 10:26 AM Andrei Lepikhov <lepihov@gmail.com> wrote:
> I wouldn't say there is a thread in the mailing list. I mentioned this
> direction of extensibility multiple times (for example, [1,2]) with no
> reaction. However, letting extensions show data in explan gives this
> idea additional impulse.

I agree that it's worth considering. I'd like to get this patch set
committed first, because I feel like it's already good enough to let
people do a bunch of cool stuff, and then we can build on top of it
later to let people do even more cool stuff. I do have some ideas that
involve piping plan-time data through to the final plan so that it can
be made visible via EXPLAIN. However, I think there are several
challenging design questions that need to be figured out, including:

(1) exactly how do we pipe that plan-time data through to the final plan?

(2) how should the plan-time hooks be designed to let people do as
many interesting things as possible with as few hooks as possible?

It sounds like you might already have some ideas about how those
questions should be answered, but I haven't thought about it enough
yet to feel confident and I don't want to make those decisions now.
Let's keep this thread focused on these patches, and we can look at
what else to do once that's done.

-- 
Robert Haas
EDB: http://www.enterprisedb.com