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
This commit is contained in:
parent
8aa02b52db
commit
5408e233f0
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue