Skip to content

Commit 4b3b24e

Browse files
committed
Use state for rumSortItem/rumScanItem size calculation
1 parent 55efc6f commit 4b3b24e

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/rumsort.c

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -203,13 +203,21 @@ copytup_rumitem(RumTuplesortstate * state, SortTuple *stup, void *tup)
203203
#define LogicalTapeReadExact_compat(state, LT_ARG, args...) LogicalTapeReadExact(state->tapeset, LT_ARG, ##args)
204204
#endif
205205

206-
#define ITEMSIZE(is_scanitem) is_scanitem ? sizeof(RumScanItem) : RumSortItemSize(state->nKeys);
206+
static size_t rum_item_size(RumTuplesortstate * state)
207+
{
208+
if (state->copytup == copytup_rum)
209+
return RumSortItemSize(state->nKeys);
210+
else if (state->copytup == copytup_rumitem)
211+
return sizeof(RumScanItem);
212+
else
213+
elog (FATAL, "Unknown RUM state");
214+
}
207215

208216
static void
209-
writetup_rum_internal(RumTuplesortstate * state, LT_TYPE LT_ARG, SortTuple *stup, bool is_item)
217+
writetup_rum_internal(RumTuplesortstate * state, LT_TYPE LT_ARG, SortTuple *stup)
210218
{
211219
void *item = stup->tuple;
212-
size_t size = ITEMSIZE(is_item);
220+
size_t size = rum_item_size(state);
213221
unsigned int writtenlen = size + sizeof(unsigned int);
214222

215223
LogicalTapeWrite(TAPE(state, LT_ARG),
@@ -227,21 +235,21 @@ writetup_rum_internal(RumTuplesortstate * state, LT_TYPE LT_ARG, SortTuple *stup
227235
static void
228236
writetup_rum(RumTuplesortstate * state, LT_TYPE LT_ARG, SortTuple *stup)
229237
{
230-
writetup_rum_internal(state, LT_ARG, stup, false);
238+
writetup_rum_internal(state, LT_ARG, stup);
231239
}
232240

233241
static void
234242
writetup_rumitem(RumTuplesortstate * state, LT_TYPE LT_ARG, SortTuple *stup)
235243
{
236-
writetup_rum_internal(state, LT_ARG, stup, true);
244+
writetup_rum_internal(state, LT_ARG, stup);
237245
}
238246

239247
static void
240248
readtup_rum_internal(RumTuplesortstate * state, SortTuple *stup,
241249
LT_TYPE LT_ARG, unsigned int len, bool is_item)
242250
{
243251
unsigned int tuplen = len - sizeof(unsigned int);
244-
size_t size = ITEMSIZE(is_item);
252+
size_t size = rum_item_size(state);
245253
void *item = palloc(size);
246254

247255
Assert(tuplen == RumSortItemSize(state->nKeys));

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy