96 #define TTS_FLAG_EMPTY (1 << 1) 97 #define TTS_EMPTY(slot) (((slot)->tts_flags & TTS_FLAG_EMPTY) != 0) 100 #define TTS_FLAG_SHOULDFREE (1 << 2) 101 #define TTS_SHOULDFREE(slot) (((slot)->tts_flags & TTS_FLAG_SHOULDFREE) != 0) 104 #define TTS_FLAG_SLOW (1 << 3) 105 #define TTS_SLOW(slot) (((slot)->tts_flags & TTS_FLAG_SLOW) != 0) 108 #define TTS_FLAG_FIXED (1 << 4) 109 #define TTS_FIXED(slot) (((slot)->tts_flags & TTS_FLAG_FIXED) != 0) 118 #define FIELDNO_TUPLETABLESLOT_FLAGS 1 120 #define FIELDNO_TUPLETABLESLOT_NVALID 2 123 #define FIELDNO_TUPLETABLESLOT_TUPLEDESCRIPTOR 4 125 #define FIELDNO_TUPLETABLESLOT_VALUES 5 127 #define FIELDNO_TUPLETABLESLOT_ISNULL 6 228 #define TTS_IS_VIRTUAL(slot) ((slot)->tts_ops == &TTSOpsVirtual) 229 #define TTS_IS_HEAPTUPLE(slot) ((slot)->tts_ops == &TTSOpsHeapTuple) 230 #define TTS_IS_MINIMALTUPLE(slot) ((slot)->tts_ops == &TTSOpsMinimalTuple) 231 #define TTS_IS_BUFFERTUPLE(slot) ((slot)->tts_ops == &TTSOpsBufferHeapTuple) 249 #define FIELDNO_HEAPTUPLETABLESLOT_TUPLE 1 251 #define FIELDNO_HEAPTUPLETABLESLOT_OFF 2 281 #define FIELDNO_MINIMALTUPLETABLESLOT_TUPLE 1 285 #define FIELDNO_MINIMALTUPLETABLESLOT_OFF 4 292 #define TupIsNull(slot) \ 293 ((slot) == NULL || TTS_EMPTY(slot)) HeapTuple ExecFetchSlotHeapTuple(TupleTableSlot *slot, bool materialize, bool *shouldFree)
TupleTableSlot * ExecStoreVirtualTuple(TupleTableSlot *slot)
PGDLLIMPORT const TupleTableSlotOps TTSOpsHeapTuple
static TupleTableSlot * ExecCopySlot(TupleTableSlot *dstslot, TupleTableSlot *srcslot)
Datum(* getsysattr)(TupleTableSlot *slot, int attnum, bool *isnull)
HeapTupleData * HeapTuple
TupleTableSlot * MakeTupleTableSlot(TupleDesc tupleDesc, const TupleTableSlotOps *tts_ops)
static TupleTableSlot * ExecClearTuple(TupleTableSlot *slot)
TupleTableSlot * ExecStoreHeapTuple(HeapTuple tuple, TupleTableSlot *slot, bool shouldFree)
HeapTuple(* copy_heap_tuple)(TupleTableSlot *slot)
void ExecStoreHeapTupleDatum(Datum data, TupleTableSlot *slot)
#define PointerGetDatum(X)
TupleTableSlot * ExecStoreAllNullTuple(TupleTableSlot *slot)
void ExecResetTupleTable(List *tupleTable, bool shouldFree)
PGDLLIMPORT const TupleTableSlotOps TTSOpsVirtual
void ExecSetSlotDescriptor(TupleTableSlot *slot, TupleDesc tupdesc)
static void slot_getsomeattrs(TupleTableSlot *slot, int attnum)
const TupleTableSlotOps *const tts_ops
PGDLLIMPORT const TupleTableSlotOps TTSOpsBufferHeapTuple
void ExecForceStoreMinimalTuple(MinimalTuple mtup, TupleTableSlot *slot, bool shouldFree)
void ExecForceStoreHeapTuple(HeapTuple tuple, TupleTableSlot *slot, bool shouldFree)
struct VirtualTupleTableSlot VirtualTupleTableSlot
TupleTableSlot * ExecStorePinnedBufferHeapTuple(HeapTuple tuple, TupleTableSlot *slot, Buffer buffer)
struct HeapTupleTableSlot HeapTupleTableSlot
#define ObjectIdGetDatum(X)
static void slot_getallattrs(TupleTableSlot *slot)
static MinimalTuple ExecCopySlotMinimalTuple(TupleTableSlot *slot)
MinimalTupleData * MinimalTuple
TupleTableSlot * ExecStoreBufferHeapTuple(HeapTuple tuple, TupleTableSlot *slot, Buffer buffer)
void(* clear)(TupleTableSlot *slot)
#define TableOidAttributeNumber
TupleTableSlot * MakeSingleTupleTableSlot(TupleDesc tupdesc, const TupleTableSlotOps *tts_ops)
Datum ExecFetchSlotHeapTupleDatum(TupleTableSlot *slot)
#define AssertArg(condition)
struct BufferHeapTupleTableSlot BufferHeapTupleTableSlot
TupleDesc tts_tupleDescriptor
void slot_getmissingattrs(TupleTableSlot *slot, int startAttNum, int lastAttNum)
void ExecDropSingleTupleTableSlot(TupleTableSlot *slot)
PGDLLIMPORT const TupleTableSlotOps TTSOpsMinimalTuple
static void ExecMaterializeSlot(TupleTableSlot *slot)
static Datum slot_getattr(TupleTableSlot *slot, int attnum, bool *isnull)
static HeapTuple ExecCopySlotHeapTuple(TupleTableSlot *slot)
struct TupleTableSlot TupleTableSlot
TupleTableSlot * ExecStoreMinimalTuple(MinimalTuple mtup, TupleTableSlot *slot, bool shouldFree)
struct MinimalTupleTableSlot MinimalTupleTableSlot
MinimalTuple(* copy_minimal_tuple)(TupleTableSlot *slot)
#define Assert(condition)
TupleTableSlot * ExecAllocTableSlot(List **tupleTable, TupleDesc desc, const TupleTableSlotOps *tts_ops)
void(* materialize)(TupleTableSlot *slot)
void slot_getsomeattrs_int(TupleTableSlot *slot, int attnum)
void(* copyslot)(TupleTableSlot *dstslot, TupleTableSlot *srcslot)
#define SelfItemPointerAttributeNumber
static Datum slot_getsysattr(TupleTableSlot *slot, int attnum, bool *isnull)
static bool slot_attisnull(TupleTableSlot *slot, int attnum)
MinimalTuple ExecFetchSlotMinimalTuple(TupleTableSlot *slot, bool *shouldFree)