public inbox for [email protected]
help / color / mirror / Atom feedFrom: Mats Kindahl <[email protected]>
To: Michael Paquier <[email protected]>
Cc: Aleksander Alekseev <[email protected]>
Cc: [email protected]
Subject: Re: Hooking into ExplainOneQuery() complicated by missing standard_ExplainOneQuery
Date: Tue, 5 Mar 2024 08:21:34 +0100
Message-ID: <CA+14427odXsZ9Wycb2hLv3RmsOdx_vzZdTtiWhaRR1r3SOVupg@mail.gmail.com> (raw)
In-Reply-To: <[email protected]>
References: <CA+14427V_B4EAoC_o-iYYucRdMSOTfpuH9k-QbexffY1HYJBiA@mail.gmail.com>
<CAJ7c6TNumEgVKmR+b=r5cfB3pAdxq9eF4+B9QbtCri9tzC5T4Q@mail.gmail.com>
<[email protected]>
On Tue, Mar 5, 2024 at 7:31 AM Michael Paquier <[email protected]> wrote:
> On Mon, Mar 04, 2024 at 03:41:16PM +0300, Aleksander Alekseev wrote:
> >> I wanted to hook into the EXPLAIN output for queries and add some
> >> extra information, but since there is no standard_ExplainOneQuery() I
> >> had to copy the code and create my own version.
> >>
> >> Since the pattern with other hooks for a function
> >> WhateverFunction() seems to be that there is a
> >> standard_WhateverFunction() for each WhateverFunction_hook, I
> >> created a patch to follow this pattern for your consideration.
>
> So you've wanted to be able to add some custom information at the end
> or the beginning of ExplainState's output buffer, before falling back
> to the in-core path. What was the use case, if I may ask?
>
Yes, that was the use-case. We have some caches added by extending
ExecutorStart and other executor-related functions using the hooks there
and want to show cache hits and misses in the plan.
I realize that a more advanced system is possible to create where you can
customize the output even more, but in this case I just wanted to add a
section with some additional information related to plan execution. Also,
the code in explain.c seems to not be written with extensibility in mind,
so I did not want to make too big a change here before thinking through how
this would work.
> >> I was also considering adding a callback so that you can annotate
> >> any node with explanatory information that is not a custom scan
> >> node. This could be used to propagate and summarize information
> >> from custom scan nodes, but I had no immediate use for that so did
> >> not add it here. I would still be interested in hearing if you
> >> think this is something that would be useful to the community.
>
> That depends.
>
Just to elaborate: the intention was to allow a section to be added to
every node in the plan containing information from further down and also
allow this information to propagate upwards. We happen to have buffer
information right now, but allowing something similar to be added
dynamically by extending ExplainNode and passing down a callback to
standard_ExplainOneQuery.
Best wishes,
Mats Kindahl
view thread (8+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected], [email protected]
Subject: Re: Hooking into ExplainOneQuery() complicated by missing standard_ExplainOneQuery
In-Reply-To: <CA+14427odXsZ9Wycb2hLv3RmsOdx_vzZdTtiWhaRR1r3SOVupg@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox