aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2019-02-26 18:15:59 -0800
committerAndres Freund <andres@anarazel.de>2019-02-26 18:15:59 -0800
commit5408e233f0667478e7f2a3e4b914e14217e20729 (patch)
tree9646e1504de1383d51f8f256bf74b8134ceaeab8 /src
parent8aa02b52db11039925191912eca71e3584b68860 (diff)
downloadpostgresql-5408e233f0667478e7f2a3e4b914e14217e20729.tar.gz
postgresql-5408e233f0667478e7f2a3e4b914e14217e20729.zip
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
Diffstat (limited to 'src')
-rw-r--r--src/include/executor/tuptable.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/include/executor/tuptable.h b/src/include/executor/tuptable.h
index 8da0b84dd7e..1e94beafac5 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 */