@@ -203,11 +203,13 @@ 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);
207+
206208static void
207209writetup_rum_internal (RumTuplesortstate * state ,LT_TYPE LT_ARG ,SortTuple * stup ,bool is_item )
208210{
209- RumSortItem * item = ( RumSortItem * ) stup -> tuple ;
210- size_t size = is_item ? sizeof ( * item ) : RumSortItemSize ( state -> nKeys );
211+ void * item = stup -> tuple ;
212+ size_t size = ITEMSIZE ( is_item );
211213unsignedint writtenlen = size + sizeof (unsignedint );
212214
213215LogicalTapeWrite (TAPE (state ,LT_ARG ),
@@ -239,7 +241,7 @@ readtup_rum_internal(RumTuplesortstate * state, SortTuple *stup,
239241LT_TYPE LT_ARG ,unsignedint len ,bool is_item )
240242{
241243unsignedint tuplen = len - sizeof (unsignedint );
242- size_t size = is_item ? sizeof ( RumScanItem ) : RumSortItemSize ( state -> nKeys );
244+ size_t size = ITEMSIZE ( is_item );
243245void * item = palloc (size );
244246
245247Assert (tuplen == RumSortItemSize (state -> nKeys ));