| From: | Tomas Vondra <tomas(at)vondra(dot)me> |
|---|---|
| To: | Siddharth Kothari <sidkot(at)google(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org |
| Cc: | Vaibhav Jain <jainva(at)google(dot)com>, Madhukar <madhukarprasad(at)google(dot)com>, Melanie Plageman <melanieplageman(at)gmail(dot)com> |
| Subject: | Re: [PATCH] Add RetrieveInstrumentation hook for CustomScan providers |
| Date: | 2026-07-08 18:40:48 |
| Message-ID: | 861a5330-01ef-446e-ab7f-d34bcd188709@vondra.me |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hi Siddharth,
On 7/8/26 18:52, Siddharth Kothari wrote:
> Hi hackers,
>
> Adding Melanie and Tomas to this thread. I noticed you both recently
> committed similar changes to handle shared memory instrumentation
> separation and retrieval for IndexScan/IndexOnlyScan (dd78e69cfc
> <https://github.com/postgres/postgres/commit/
> dd78e69cfc337f93cfc0303ddf660262d7f1237e>) and SeqScan (3b1117d6e2
> <https://github.com/postgres/postgres/
> commit/3b1117d6e2e47d86cdbd978b79434c630cb0ef52>).
>
> My patch implements the exact same pattern for CustomScan states. It
> adds an optional RetrieveInstrumentationCustomScan hook so that
> extensions can aggregate their worker metrics before the DSM gets
> unlinked, bringing custom scans to parity with the recent core scan
> instrumentation improvements.
>
> Could you please help review?
>
> The CommitFest entry is also updated here: https://
> commitfest.postgresql.org/patch/6524/ <https://
> commitfest.postgresql.org/patch/6524/>
>
Thanks for the patch, and sorry for not responding earlier. The last
couple months were incredibly busy, both because of the last commitfest
and personal reasons.
I think the patch looks generally OK, except for two things:
1) It needs to add the new callback to doc/src/sgml/custom-scan.sgml,
with similar documentation as for the other callbacks.
2) While looking at execParallel.c it occurred to me the CustomScan may
have the same issue as described in [1] (and a couple messages after
that). The scan may in the parallel part of a plan, but not necessarily
parallel-aware. But a lot of the initialization is gated by
if (planstate->plan->parallel_aware)
...
All the other scans initialize some of the instrumentation always, in
blocks like this:
/* even when not parallel-aware, for EXPLAIN ANALYZE */
And BHS had this issue until 9c18b47e610, but we didn't do the same
thing for CustomScan. I guess we should.
Of course, it's not the fault of this patch, it's just something I
noticed while looking at the code. OTOH it probably also makes sense for
CustomScan to handle the instrumentation just like the other scans, i.e.
by allocating a separate DSM for the instrumentation. AFAICS that'll
require a couple more optional callbacks in CustomExecMethods:
ExecCustomScanInstrumentEstimate
ExecCustomScanInstrumentInitDSM
ExecCustomScanInstrumentInitWorker
But I think that's OK.
[1]
https://www.postgresql.org/message-id/3bdbc70d-ad44-494a-8aab-868b5066fe8b%40vondra.me
regards
--
Tomas Vondra
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Jacob Champion | 2026-07-08 18:51:06 | Re: PG20 Minimum Dependency Thread |
| Previous Message | Tom Lane | 2026-07-08 18:34:52 | Re: PG20 Minimum Dependency Thread |