95#define TTS_FLAG_EMPTY (1 << 1)
96#define TTS_EMPTY(slot) (((slot)->tts_flags & TTS_FLAG_EMPTY) != 0)
99#define TTS_FLAG_SHOULDFREE (1 << 2)
100#define TTS_SHOULDFREE(slot) (((slot)->tts_flags & TTS_FLAG_SHOULDFREE) != 0)
103#define TTS_FLAG_SLOW (1 << 3)
104#define TTS_SLOW(slot) (((slot)->tts_flags & TTS_FLAG_SLOW) != 0)
107#define TTS_FLAG_FIXED (1 << 4)
108#define TTS_FIXED(slot) (((slot)->tts_flags & TTS_FLAG_FIXED) != 0)
117#define FIELDNO_TUPLETABLESLOT_FLAGS 1
119#define FIELDNO_TUPLETABLESLOT_NVALID 2
122#define FIELDNO_TUPLETABLESLOT_TUPLEDESCRIPTOR 4
124#define FIELDNO_TUPLETABLESLOT_VALUES 5
126#define FIELDNO_TUPLETABLESLOT_ISNULL 6
234#define TTS_IS_VIRTUAL(slot) ((slot)->tts_ops == &TTSOpsVirtual)
235#define TTS_IS_HEAPTUPLE(slot) ((slot)->tts_ops == &TTSOpsHeapTuple)
236#define TTS_IS_MINIMALTUPLE(slot) ((slot)->tts_ops == &TTSOpsMinimalTuple)
237#define TTS_IS_BUFFERTUPLE(slot) ((slot)->tts_ops == &TTSOpsBufferHeapTuple)
259#define FIELDNO_HEAPTUPLETABLESLOT_TUPLE 1
261#define FIELDNO_HEAPTUPLETABLESLOT_OFF 2
295#define FIELDNO_MINIMALTUPLETABLESLOT_TUPLE 1
299#define FIELDNO_MINIMALTUPLETABLESLOT_OFF 4
306#define TupIsNull(slot) \
307 ((slot) == NULL || TTS_EMPTY(slot))
512 Assert(srcslot != dstslot);
#define Assert(condition)
HeapTupleData * HeapTuple
MinimalTupleData * MinimalTuple
static Datum PointerGetDatum(const void *X)
static Datum ObjectIdGetDatum(Oid X)
pg_node_attr(abstract) HeapTupleTableSlot base
pg_node_attr(abstract) TupleTableSlot base
pg_node_attr(abstract) TupleTableSlot base
Datum(* getsysattr)(TupleTableSlot *slot, int attnum, bool *isnull)
bool(* is_current_xact_tuple)(TupleTableSlot *slot)
HeapTuple(* get_heap_tuple)(TupleTableSlot *slot)
void(* init)(TupleTableSlot *slot)
void(* copyslot)(TupleTableSlot *dstslot, TupleTableSlot *srcslot)
MinimalTuple(* copy_minimal_tuple)(TupleTableSlot *slot)
void(* getsomeattrs)(TupleTableSlot *slot, int natts)
HeapTuple(* copy_heap_tuple)(TupleTableSlot *slot)
MinimalTuple(* get_minimal_tuple)(TupleTableSlot *slot)
void(* clear)(TupleTableSlot *slot)
void(* materialize)(TupleTableSlot *slot)
void(* release)(TupleTableSlot *slot)
TupleDesc tts_tupleDescriptor
const TupleTableSlotOps *const tts_ops
pg_node_attr(abstract) TupleTableSlot base
#define TableOidAttributeNumber
#define SelfItemPointerAttributeNumber
PGDLLIMPORT const TupleTableSlotOps TTSOpsMinimalTuple
void ExecResetTupleTable(List *tupleTable, bool shouldFree)
struct TupleTableSlot TupleTableSlot
TupleTableSlot * ExecStorePinnedBufferHeapTuple(HeapTuple tuple, TupleTableSlot *slot, Buffer buffer)
TupleTableSlot * MakeSingleTupleTableSlot(TupleDesc tupdesc, const TupleTableSlotOps *tts_ops)
static MinimalTuple ExecCopySlotMinimalTuple(TupleTableSlot *slot)
void ExecDropSingleTupleTableSlot(TupleTableSlot *slot)
static void slot_getsomeattrs(TupleTableSlot *slot, int attnum)
TupleTableSlot * ExecStoreVirtualTuple(TupleTableSlot *slot)
struct MinimalTupleTableSlot MinimalTupleTableSlot
TupleTableSlot * ExecAllocTableSlot(List **tupleTable, TupleDesc desc, const TupleTableSlotOps *tts_ops)
void ExecForceStoreMinimalTuple(MinimalTuple mtup, TupleTableSlot *slot, bool shouldFree)
static HeapTuple ExecCopySlotHeapTuple(TupleTableSlot *slot)
MinimalTuple ExecFetchSlotMinimalTuple(TupleTableSlot *slot, bool *shouldFree)
static Datum slot_getsysattr(TupleTableSlot *slot, int attnum, bool *isnull)
TupleTableSlot * ExecStoreMinimalTuple(MinimalTuple mtup, TupleTableSlot *slot, bool shouldFree)
PGDLLIMPORT const TupleTableSlotOps TTSOpsVirtual
HeapTuple ExecFetchSlotHeapTuple(TupleTableSlot *slot, bool materialize, bool *shouldFree)
void slot_getmissingattrs(TupleTableSlot *slot, int startAttNum, int lastAttNum)
static Datum slot_getattr(TupleTableSlot *slot, int attnum, bool *isnull)
TupleTableSlot * ExecStoreBufferHeapTuple(HeapTuple tuple, TupleTableSlot *slot, Buffer buffer)
static bool slot_is_current_xact_tuple(TupleTableSlot *slot)
void ExecStoreHeapTupleDatum(Datum data, TupleTableSlot *slot)
void ExecSetSlotDescriptor(TupleTableSlot *slot, TupleDesc tupdesc)
static TupleTableSlot * ExecClearTuple(TupleTableSlot *slot)
PGDLLIMPORT const TupleTableSlotOps TTSOpsHeapTuple
Datum ExecFetchSlotHeapTupleDatum(TupleTableSlot *slot)
static void slot_getallattrs(TupleTableSlot *slot)
void slot_getsomeattrs_int(TupleTableSlot *slot, int attnum)
struct HeapTupleTableSlot HeapTupleTableSlot
static TupleTableSlot * ExecCopySlot(TupleTableSlot *dstslot, TupleTableSlot *srcslot)
struct BufferHeapTupleTableSlot BufferHeapTupleTableSlot
PGDLLIMPORT const TupleTableSlotOps TTSOpsBufferHeapTuple
static void ExecMaterializeSlot(TupleTableSlot *slot)
TupleTableSlot * ExecStoreAllNullTuple(TupleTableSlot *slot)
TupleTableSlot * MakeTupleTableSlot(TupleDesc tupleDesc, const TupleTableSlotOps *tts_ops)
TupleTableSlot * ExecStoreHeapTuple(HeapTuple tuple, TupleTableSlot *slot, bool shouldFree)
static bool slot_attisnull(TupleTableSlot *slot, int attnum)
struct VirtualTupleTableSlot VirtualTupleTableSlot
void ExecForceStoreHeapTuple(HeapTuple tuple, TupleTableSlot *slot, bool shouldFree)