Re: making EXPLAIN extensible

Sami Imseih <samimseih@gmail.com>

From: Sami Imseih <samimseih@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: 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-19T15:38:26Z
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.

Attachments

> On Tue, Mar 18, 2025 at 11:21 PM Sami Imseih <samimseih@gmail.com> wrote:
> > > > Do you want to propose a patch?
> > >
> > > yes, will attach a patch shortly.
> >
> > Attached is a patch to add a hook to allow extensions
> > to add additional option validations. The hook takes
> > in the ExplainState as an argument and returns void.
> > It is expected the extension will raise an error if the
> > validation fails.
>
> Since the new hook will be called from explain_state.c, please declare
> it in explain_state.h.

done

> I think the header-file comment should be just one line rather than a
> block comment as we do for other hooks in this area. If you think a
> more detailed explanation is needed, I'd put that in the .c file.

on second thought, no reason for the detailed explanation...

> Is there any value in passing "options" or "pstate" to the hook?
> Couldn't the hook want to use "pstate" for error reporting purposes?

... as I made the hook signature match that of
ParseExplainOptionList, so both pstate and the options list
are now available to the hook.

--

Sami Imseih
Amazon Web Services (AWS)