From 453dc7fd8078ba202569417d4ed65ce6e7f4a850 Mon Sep 17 00:00:00 2001 From: Masahiko Sawada Date: Mon, 17 Apr 2023 18:00:44 +0900 Subject: [PATCH v32 13/18] tidstore: Embed output offsets in TidStoreIterResult. --- src/backend/access/common/tidstore.c | 7 ++----- src/include/access/tidstore.h | 3 ++- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/backend/access/common/tidstore.c b/src/backend/access/common/tidstore.c index d9fe3d5f15..15b77b5bcb 100644 --- a/src/backend/access/common/tidstore.c +++ b/src/backend/access/common/tidstore.c @@ -470,12 +470,10 @@ TidStoreBeginIterate(TidStore *ts) Assert(!TidStoreIsShared(ts) || ts->control->magic == TIDSTORE_MAGIC); - iter = palloc0(sizeof(TidStoreIter)); + iter = palloc0(sizeof(TidStoreIter) + + sizeof(OffsetNumber) * ts->control->max_off); iter->ts = ts; - iter->result.blkno = InvalidBlockNumber; - iter->result.offsets = palloc(sizeof(OffsetNumber) * ts->control->max_offset); - if (TidStoreIsShared(ts)) iter->tree_iter.shared = shared_rt_begin_iterate(ts->tree.shared); else @@ -559,7 +557,6 @@ TidStoreEndIterate(TidStoreIter *iter) else local_rt_end_iterate(iter->tree_iter.local); - pfree(iter->result.offsets); pfree(iter); } diff --git a/src/include/access/tidstore.h b/src/include/access/tidstore.h index f0a432d0da..66f0fdd482 100644 --- a/src/include/access/tidstore.h +++ b/src/include/access/tidstore.h @@ -22,11 +22,12 @@ typedef dsa_pointer TidStoreHandle; typedef struct TidStore TidStore; typedef struct TidStoreIter TidStoreIter; +/* Result struct for TidStoreIterateNext */ typedef struct TidStoreIterResult { BlockNumber blkno; - OffsetNumber *offsets; int num_offsets; + OffsetNumber offsets[FLEXIBLE_ARRAY_MEMBER]; } TidStoreIterResult; extern TidStore *TidStoreCreate(size_t max_bytes, int max_off, dsa_area *dsa); -- 2.31.1