[PATCH] Add RetrieveInstrumentation hook for CustomScan providers
Siddharth Kothari <sidkot@google.com>
From: Siddharth Kothari <sidkot@google.com>
To: pgsql-hackers@lists.postgresql.org
Cc: Vaibhav Jain <jainva@google.com>, Madhukar <madhukarprasad@google.com>
Date: 2026-02-18T09:39:15Z
Lists: pgsql-hackers
Attachments
- 0001-Add-RetrieveInstrumentationCustomScan-hook-for-Custo.patch (application/x-patch) patch 0001
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
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Add EXPLAIN (IO) instrumentation for SeqScan
- 3b1117d6e2e4 19 (unreleased) cited
-
Allocate separate DSM chunk for parallel Index[Only]Scan instrumentation
- dd78e69cfc33 19 (unreleased) cited