Re: making EXPLAIN extensible

Andrei Lepikhov <lepihov@gmail.com>

From: Andrei Lepikhov <lepihov@gmail.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-03-04T15:26:49Z
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 4/3/2025 16:14, Robert Haas wrote:
> On Tue, Mar 4, 2025 at 10:12 AM Andrei Lepikhov <lepihov@gmail.com> wrote:
>> Also, I think this feature is quite close to the discussion on the
>> possibility of adding an extensible list field into Query, PlanState,
>> Plan, etc. nodes to let extensions gather and transfer some additional
>> data starting with the first 'analyze' hook up to the end of execution.
>> For example, in solving user issues, I frequently need to know
>> predictions on the number of groups in Memoize, IncrementalSort and some
>> other nodes. Such extensibility could allow an extension to gather such
>> internal data during the planning stage and show it in the explain
>> without any changes in the core!
> 
> If you're saying there's a -hackers discussion on this, could you
> provide a link? I haven't seen it.
> 
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.

[1] 
https://www.postgresql.org/message-id/30113d59-8678-49ca-a8fb-bbceacf7efb0%40gmail.com
[2] 
https://www.postgresql.org/message-id/CA%2BTgmoYXgBVCnFhrW3X1NxpdjWtJCYRKP38PQ-AdR-RJziTBUQ%40mail.gmail.com

-- 
regards, Andrei Lepikhov