v11-0002-Use-add_size-mul_size-for-index-instrumentation-.patch
text/x-patch
Filename: v11-0002-Use-add_size-mul_size-for-index-instrumentation-.patch
Type: text/x-patch
Part: 1
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v11-0002
Subject: Use add_size/mul_size for index instrumentation size calculations
| File | + | − |
|---|---|---|
| src/backend/executor/nodeIndexonlyscan.c | 4 | 4 |
| src/backend/executor/nodeIndexscan.c | 4 | 4 |
From 9ab70837dac963dc1ae6721d0f45dc2c9d3f398d Mon Sep 17 00:00:00 2001 From: Melanie Plageman <melanieplageman@gmail.com> Date: Mon, 6 Apr 2026 20:06:49 -0400 Subject: [PATCH v11 2/2] Use add_size/mul_size for index instrumentation size calculations Use overflow-safe size arithmetic in the Index[Only]Scan and parallel instrumentation functions, consistent with other executor nodes (Hash, Sort, Agg, Memoize). This was an oversight in dd78e69cfc3. --- src/backend/executor/nodeIndexonlyscan.c | 8 ++++---- src/backend/executor/nodeIndexscan.c | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/backend/executor/nodeIndexonlyscan.c b/src/backend/executor/nodeIndexonlyscan.c index c4ff422756e..d52012e8a69 100644 --- a/src/backend/executor/nodeIndexonlyscan.c +++ b/src/backend/executor/nodeIndexonlyscan.c @@ -854,8 +854,8 @@ ExecIndexOnlyScanInstrumentEstimate(IndexOnlyScanState *node, * in the IndexOnlyScanState. We'll recalculate the needed size in * ExecIndexOnlyScanInstrumentInitDSM(). */ - size = offsetof(SharedIndexScanInstrumentation, winstrument) + - pcxt->nworkers * sizeof(IndexScanInstrumentation); + size = add_size(offsetof(SharedIndexScanInstrumentation, winstrument), + mul_size(pcxt->nworkers, sizeof(IndexScanInstrumentation))); shm_toc_estimate_chunk(&pcxt->estimator, size); shm_toc_estimate_keys(&pcxt->estimator, 1); } @@ -872,8 +872,8 @@ ExecIndexOnlyScanInstrumentInitDSM(IndexOnlyScanState *node, if (!node->ss.ps.instrument || pcxt->nworkers == 0) return; - size = offsetof(SharedIndexScanInstrumentation, winstrument) + - pcxt->nworkers * sizeof(IndexScanInstrumentation); + size = add_size(offsetof(SharedIndexScanInstrumentation, winstrument), + mul_size(pcxt->nworkers, sizeof(IndexScanInstrumentation))); node->ioss_SharedInfo = (SharedIndexScanInstrumentation *) shm_toc_allocate(pcxt->toc, size); diff --git a/src/backend/executor/nodeIndexscan.c b/src/backend/executor/nodeIndexscan.c index 6cc927f2454..39f6691ee35 100644 --- a/src/backend/executor/nodeIndexscan.c +++ b/src/backend/executor/nodeIndexscan.c @@ -1789,8 +1789,8 @@ ExecIndexScanInstrumentEstimate(IndexScanState *node, * in the IndexScanState. We'll recalculate the needed size in * ExecIndexScanInstrumentInitDSM(). */ - size = offsetof(SharedIndexScanInstrumentation, winstrument) + - pcxt->nworkers * sizeof(IndexScanInstrumentation); + size = add_size(offsetof(SharedIndexScanInstrumentation, winstrument), + mul_size(pcxt->nworkers, sizeof(IndexScanInstrumentation))); shm_toc_estimate_chunk(&pcxt->estimator, size); shm_toc_estimate_keys(&pcxt->estimator, 1); } @@ -1807,8 +1807,8 @@ ExecIndexScanInstrumentInitDSM(IndexScanState *node, if (!node->ss.ps.instrument || pcxt->nworkers == 0) return; - size = offsetof(SharedIndexScanInstrumentation, winstrument) + - pcxt->nworkers * sizeof(IndexScanInstrumentation); + size = add_size(offsetof(SharedIndexScanInstrumentation, winstrument), + mul_size(pcxt->nworkers, sizeof(IndexScanInstrumentation))); node->iss_SharedInfo = (SharedIndexScanInstrumentation *) shm_toc_allocate(pcxt->toc, size); -- 2.43.0