Re: [PATCH] Add RetrieveInstrumentation hook for CustomScan providers

From: Siddharth Kothari <sidkot(at)google(dot)com>
To: pgsql-hackers(at)lists(dot)postgresql(dot)org
Cc: Vaibhav Jain <jainva(at)google(dot)com>, Madhukar <madhukarprasad(at)google(dot)com>
Subject: Re: [PATCH] Add RetrieveInstrumentation hook for CustomScan providers
Date: 2026-06-23 09:08:20
Message-ID: CAGCUe0+DV0Tkd19rX7HrQikyuWTF0uQS-OeikeMOye+CzSvxgQ@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi hackers,

Bumping this thread as this small patch is passing all CF checks but needs
a reviewer.

*The Problem:* Right now, if you write a parallel CustomScan extension, it
is impossible to get performance metrics from parallel workers. The data is
destroyed during DSM unlinking before the leader can grab it.

*The Fix:* This patch adds an optional RetrieveInstrumentation hook to
CustomExecMethods. It has zero overhead for existing extensions (it's a
simple NULL check) but unlocks metric aggregation for parallel custom scans.

Please let me know your thoughts.

Thanks,

Siddharth

On Wed, Apr 8, 2026 at 10:57 AM Siddharth Kothari <sidkot(at)google(dot)com> wrote:

> Hi everyone,
>
> I’m just checking in to see if anyone has had a chance to look at this or
> if there’s any further information I should provide to help with the
> review. I have also added the patch to PG20-1 CF queue, the link is
> https://commitfest.postgresql.org/patch/6524/.
>
> Thanks,
> Siddharth
>
> On Wed, Feb 18, 2026 at 3:09 PM Siddharth Kothari <sidkot(at)google(dot)com>
> wrote:
>
>> Dear PostgreSQL Hackers,
>>
>> This email proposes a patch to enhance the CustomScan provider interface.
>> The patch file,
>> 0001-Add-RetrieveInstrumentationCustomScan-hook-for-Custo.patch, is
>> attached.
>>
>> *Problem:*
>>
>> CustomScan providers currently lack a standard method to aggregate
>> instrumentation data from parallel workers back to the leader process
>> before the Dynamic Shared Memory (DSM) segment is unlinked. This makes it
>> difficult to gather comprehensive performance metrics from parallelized
>> custom scans.
>>
>> *Solution:*
>>
>> This patch introduces a new optional hook,
>> RetrieveInstrumentationCustomScan, to the CustomExecMethods struct. This
>> hook allows custom scan providers to implement logic to collect and
>> consolidate instrumentation from shared memory or worker states during the
>> parallel query cleanup phase. This hook is invoked via the new
>> ExecCustomScanRetrieveInstrumentation function, called from
>> ExecParallelRetrieveInstrumentation for T_CustomScanState nodes. Since
>> the hook is optional (checked for NULL before calling), it maintains full
>> backward compatibility.
>>
>> *Testing & Compatibility:*
>>
>> - The patch compiles and passes all core regression tests (make
>> check-world) on my x86_64 instance.
>> - The changes are not platform-specific.
>> - Regression Tests: This patch provides a new *capability* for custom
>> scan providers. Since the hook's functionality is only realized when
>> implemented by an extension, specific tests would naturally reside within
>> that extension rather than in the core regression suite.
>>
>> This patch does not directly address a specific item on the official TODO
>> list but enhances the extensibility framework.
>>
>> I believe this patch is complete and ready for review. I look forward to
>> any feedback and am happy to make revisions. I will also add this patch to
>> the next CommitFest.
>>
>> Thank you,
>>
>> Siddharth Kothari
>>
>

Attachment Content-Type Size
0001-Add-RetrieveInstrumentationCustomScan-hook-for-Custo.patch application/octet-stream 3.3 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Dean Rasheed 2026-06-23 09:12:43 Re: Global temporary tables
Previous Message Ilia Evdokimov 2026-06-23 09:04:04 Re: Show estimated number of groups for IncrementalSort in EXPLAIN