From 5408e233f0667478e7f2a3e4b914e14217e20729 Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Tue, 26 Feb 2019 18:15:59 -0800 Subject: [PATCH] Allow to use HeapTupleData embedded in [Buffer]HeapTupleTableSlot. That avoids having to care about the lifetime of the HeapTupleHeaderData passed to ExecStore[Buffer]HeapTuple(). That doesn't make a huge difference for a plain HeapTupleTableSlot, but for BufferHeapTupleTableSlot it can be a significant advantage, avoiding the need to materialize slots where it's inconvenient to provide a HeapTupleData with appropriate lifetime to point to the on-disk tuple. It's quite possible that we'll want to add support functions for constructing HeapTuples using that embedded HeapTupleData, but for now callers do so themselves. Author: Andres Freund Discussion: https://postgr.es/m/20180703070645.wchpu5muyto5n647@alap3.anarazel.de --- src/include/executor/tuptable.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/include/executor/tuptable.h b/src/include/executor/tuptable.h index 8da0b84dd7..1e94beafac 100644 --- a/src/include/executor/tuptable.h +++ b/src/include/executor/tuptable.h @@ -16,6 +16,7 @@ #include "access/htup.h" #include "access/tupdesc.h" +#include "access/htup_details.h" #include "storage/buf.h" /*---------- @@ -246,6 +247,7 @@ typedef struct HeapTupleTableSlot HeapTuple tuple; /* physical tuple */ #define FIELDNO_HEAPTUPLETABLESLOT_OFF 2 uint32 off; /* saved state for slot_deform_heap_tuple */ + HeapTupleData tupdata; /* optional workspace for storing tuple */ } HeapTupleTableSlot; /* heap tuple residing in a buffer */ -- 2.40.0