Re: making EXPLAIN extensible

Robert Haas <robertmhaas@gmail.com>

From: Robert Haas <robertmhaas@gmail.com>
To: Pavel Luzanov <p.luzanov@postgrespro.ru>
Cc: pgsql-hackers@lists.postgresql.org
Date: 2025-03-28T13:28:27Z
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 Fri, Mar 28, 2025 at 5:39 AM Pavel Luzanov <p.luzanov@postgrespro.ru> wrote:
> One more suggestion to improve the documentation.
> It lacks installations actions, something like in auto_explain:
>
> To use pg_overexplain, simply load it into the server.
> You can load it into an individual session:
>
> LOAD 'pg_overexplain';
>
> (You must be superuser to do that.)
> Another way is to preload it into some or all sessions
> by including pg_overexplain in session_preload_libraries
> or shared_preload_libraries in postgresql.conf.

Yeah, I think this could make sense, but I'm not sure how much detail
to include. pg_overexplain is a little unusual in being one of few
contrib modules where all you have to do is load it -- there's no
CREATE EXTENSION required, and shared_preload_libraries is not
required either. So, it probably makes sense to explain something, but
if we eventually have 10 more modules that work like this, we wouldn't
want a lengthy explanation in each one.

Another thing that we might want to do is adjust the documentation for
EXPLAIN. At the very least, the "See also" section should probably
reference pg_overexplain, but we might also want some text there
explaining the general concept that EXPLAIN is now extensible via
loadable modules.

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