34#define MaxTupleAttributeNumber 1664
48#define MaxHeapAttributeNumber 1600
166#define FIELDNO_HEAPTUPLEHEADERDATA_INFOMASK2 2
169#define FIELDNO_HEAPTUPLEHEADERDATA_INFOMASK 3
172#define FIELDNO_HEAPTUPLEHEADERDATA_HOFF 4
177#define FIELDNO_HEAPTUPLEHEADERDATA_BITS 5
185#define SizeofHeapTupleHeader offsetof(HeapTupleHeaderData, t_bits)
190#define HEAP_HASNULL 0x0001
191#define HEAP_HASVARWIDTH 0x0002
192#define HEAP_HASEXTERNAL 0x0004
193#define HEAP_HASOID_OLD 0x0008
194#define HEAP_XMAX_KEYSHR_LOCK 0x0010
195#define HEAP_COMBOCID 0x0020
196#define HEAP_XMAX_EXCL_LOCK 0x0040
197#define HEAP_XMAX_LOCK_ONLY 0x0080
200#define HEAP_XMAX_SHR_LOCK (HEAP_XMAX_EXCL_LOCK | HEAP_XMAX_KEYSHR_LOCK)
202#define HEAP_LOCK_MASK (HEAP_XMAX_SHR_LOCK | HEAP_XMAX_EXCL_LOCK | \
203 HEAP_XMAX_KEYSHR_LOCK)
204#define HEAP_XMIN_COMMITTED 0x0100
205#define HEAP_XMIN_INVALID 0x0200
206#define HEAP_XMIN_FROZEN (HEAP_XMIN_COMMITTED|HEAP_XMIN_INVALID)
207#define HEAP_XMAX_COMMITTED 0x0400
208#define HEAP_XMAX_INVALID 0x0800
209#define HEAP_XMAX_IS_MULTI 0x1000
210#define HEAP_UPDATED 0x2000
211#define HEAP_MOVED_OFF 0x4000
214#define HEAP_MOVED_IN 0x8000
217#define HEAP_MOVED (HEAP_MOVED_OFF | HEAP_MOVED_IN)
219#define HEAP_XACT_MASK 0xFFF0
285#define HEAP_XMAX_BITS (HEAP_XMAX_COMMITTED | HEAP_XMAX_INVALID | \
286 HEAP_XMAX_IS_MULTI | HEAP_LOCK_MASK | HEAP_XMAX_LOCK_ONLY)
291#define HEAP_NATTS_MASK 0x07FF
293#define HEAP_KEYS_UPDATED 0x2000
295#define HEAP_HOT_UPDATED 0x4000
296#define HEAP_ONLY_TUPLE 0x8000
298#define HEAP2_XACT_MASK 0xE000
306#define HEAP_TUPLE_HAS_MATCH HEAP_ONLY_TUPLE
463 "invalid speculative token constant");
582#define HeapTupleHeaderGetNatts(tup) \
583 ((tup)->t_infomask2 & HEAP_NATTS_MASK)
585#define HeapTupleHeaderSetNatts(tup, natts) \
587 (tup)->t_infomask2 = ((tup)->t_infomask2 & ~HEAP_NATTS_MASK) | (natts) \
590#define HeapTupleHeaderHasExternal(tup) \
591 (((tup)->t_infomask & HEAP_HASEXTERNAL) != 0)
601 return (NATTS + 7) / 8;
615#define MaxHeapTupleSize (BLCKSZ - MAXALIGN(SizeOfPageHeaderData + sizeof(ItemIdData)))
616#define MinHeapTupleSize MAXALIGN(SizeofHeapTupleHeader)
629#define MaxHeapTuplesPerPage \
630 ((int) ((BLCKSZ - SizeOfPageHeaderData) / \
631 (MAXALIGN(SizeofHeapTupleHeader) + sizeof(ItemIdData))))
640#define MaxAttrSize (10 * 1024 * 1024)
674#define MINIMAL_TUPLE_OFFSET \
675 ((offsetof(HeapTupleHeaderData, t_infomask2) - sizeof(uint32)) / MAXIMUM_ALIGNOF * MAXIMUM_ALIGNOF)
676#define MINIMAL_TUPLE_PADDING \
677 ((offsetof(HeapTupleHeaderData, t_infomask2) - sizeof(uint32)) % MAXIMUM_ALIGNOF)
678#define MINIMAL_TUPLE_DATA_OFFSET \
679 offsetof(MinimalTupleData, t_infomask2)
704#define SizeofMinimalTupleHeader offsetof(MinimalTupleData, t_bits)
821 int attnum,
bool *isnull);
829 const Datum *replValues,
830 const bool *replIsnull,
831 const bool *doReplace);
836 const Datum *replValues,
837 const bool *replIsnull);
static Datum values[MAXATTR]
#define Assert(condition)
#define FLEXIBLE_ARRAY_MEMBER
TransactionId HeapTupleGetUpdateXid(const HeapTupleHeaderData *tup)
Size heap_compute_data_size(TupleDesc tupleDesc, const Datum *values, const bool *isnull)
static bool HEAP_XMAX_IS_SHR_LOCKED(int16 infomask)
#define HEAP_XMAX_SHR_LOCK
static bool HeapTupleIsHotUpdated(const HeapTupleData *tuple)
static Datum heap_getattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull)
static bool HeapTupleHeaderXminFrozen(const HeapTupleHeaderData *tup)
struct HeapTupleFields HeapTupleFields
static void HeapTupleHeaderClearHeapOnly(HeapTupleHeaderData *tup)
#define HEAP_XMIN_COMMITTED
#define HeapTupleHeaderGetNatts(tup)
static void HeapTupleHeaderSetXminFrozen(HeapTupleHeaderData *tup)
HeapTuple heap_modify_tuple(HeapTuple tuple, TupleDesc tupleDesc, const Datum *replValues, const bool *replIsnull, const bool *doReplace)
void heap_copytuple_with_tuple(HeapTuple src, HeapTuple dest)
HeapTuple heap_copytuple(HeapTuple tuple)
static void HeapTupleHeaderSetTypMod(HeapTupleHeaderData *tup, int32 typmod)
size_t varsize_any(void *p)
MinimalTuple minimal_tuple_from_heap_tuple(HeapTuple htup)
static bool HeapTupleHasNulls(const HeapTupleData *tuple)
static void HeapTupleHeaderSetSpeculativeToken(HeapTupleHeaderData *tup, BlockNumber token)
Datum heap_getsysattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull)
static void HeapTupleHeaderSetMatch(MinimalTupleData *tup)
static bool HEAP_XMAX_IS_LOCKED_ONLY(uint16 infomask)
static int BITMAPLEN(int NATTS)
static bool HeapTupleHeaderXminInvalid(const HeapTupleHeaderData *tup)
static void HeapTupleClearHotUpdated(const HeapTupleData *tuple)
static int32 HeapTupleHeaderGetTypMod(const HeapTupleHeaderData *tup)
static bool HeapTupleHasExternal(const HeapTupleData *tuple)
static TransactionId HeapTupleHeaderGetXvac(const HeapTupleHeaderData *tup)
static void HeapTupleHeaderSetXminInvalid(HeapTupleHeaderData *tup)
static bool HeapTupleAllFixed(const HeapTupleData *tuple)
static void HeapTupleHeaderSetCmax(HeapTupleHeaderData *tup, CommandId cid, bool iscombo)
MinimalTuple heap_form_minimal_tuple(TupleDesc tupleDescriptor, const Datum *values, const bool *isnull)
static void HeapTupleHeaderSetTypeId(HeapTupleHeaderData *tup, Oid datum_typeid)
#define HEAP_XMAX_LOCK_ONLY
static void HeapTupleHeaderClearHotUpdated(HeapTupleHeaderData *tup)
static void HeapTupleHeaderSetCmin(HeapTupleHeaderData *tup, CommandId cid)
static CommandId HeapTupleHeaderGetRawCommandId(const HeapTupleHeaderData *tup)
HeapTuple heap_modify_tuple_by_cols(HeapTuple tuple, TupleDesc tupleDesc, int nCols, const int *replCols, const Datum *replValues, const bool *replIsnull)
HeapTuple heap_form_tuple(TupleDesc tupleDescriptor, const Datum *values, const bool *isnull)
static TransactionId HeapTupleHeaderGetRawXmax(const HeapTupleHeaderData *tup)
static bool HeapTupleHeaderIsHeapOnly(const HeapTupleHeaderData *tup)
static void HeapTupleHeaderClearMatch(MinimalTupleData *tup)
void heap_free_minimal_tuple(MinimalTuple mtup)
static bool HeapTupleIsHeapOnly(const HeapTupleData *tuple)
bool heap_attisnull(HeapTuple tup, int attnum, TupleDesc tupleDesc)
Datum nocachegetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc)
static void HeapTupleSetHeapOnly(const HeapTupleData *tuple)
static bool HeapTupleNoNulls(const HeapTupleData *tuple)
static bool HEAP_XMAX_IS_KEYSHR_LOCKED(int16 infomask)
static void HeapTupleHeaderSetXminCommitted(HeapTupleHeaderData *tup)
#define HEAP_TUPLE_HAS_MATCH
Datum getmissingattr(TupleDesc tupleDesc, int attnum, bool *isnull)
static void HeapTupleHeaderSetHeapOnly(HeapTupleHeaderData *tup)
#define HEAP_XMAX_IS_MULTI
HeapTuple heap_expand_tuple(HeapTuple sourceTuple, TupleDesc tupleDesc)
static bool HeapTupleHeaderHasMatch(const MinimalTupleData *tup)
static TransactionId HeapTupleHeaderGetXmin(const HeapTupleHeaderData *tup)
void heap_fill_tuple(TupleDesc tupleDesc, const Datum *values, const bool *isnull, char *data, Size data_size, uint16 *infomask, bits8 *bit)
static void HeapTupleHeaderSetXvac(HeapTupleHeaderData *tup, TransactionId xid)
struct DatumTupleFields DatumTupleFields
void heap_deform_tuple(HeapTuple tuple, TupleDesc tupleDesc, Datum *values, bool *isnull)
#define HEAP_XMIN_INVALID
static bool HeapTupleHeaderIndicatesMovedPartitions(const HeapTupleHeaderData *tup)
static void HeapTupleSetHotUpdated(const HeapTupleData *tuple)
MinimalTuple heap_copy_minimal_tuple(MinimalTuple mtup)
#define HEAP_XMAX_EXCL_LOCK
static BlockNumber HeapTupleHeaderGetSpeculativeToken(const HeapTupleHeaderData *tup)
static bool HeapTupleHeaderIsHotUpdated(const HeapTupleHeaderData *tup)
#define HEAP_XMAX_INVALID
static void HeapTupleHeaderSetDatumLength(HeapTupleHeaderData *tup, uint32 len)
#define MINIMAL_TUPLE_PADDING
static TransactionId HeapTupleHeaderGetRawXmin(const HeapTupleHeaderData *tup)
static uint32 HeapTupleHeaderGetDatumLength(const HeapTupleHeaderData *tup)
static void * GETSTRUCT(const HeapTupleData *tuple)
static void HeapTupleClearHeapOnly(const HeapTupleData *tuple)
Datum heap_copy_tuple_as_datum(HeapTuple tuple, TupleDesc tupleDesc)
static bool HeapTupleHeaderIsSpeculative(const HeapTupleHeaderData *tup)
static TransactionId HeapTupleHeaderGetUpdateXid(const HeapTupleHeaderData *tup)
StaticAssertDecl(MaxOffsetNumber< SpecTokenOffsetNumber, "invalid speculative token constant")
static void HeapTupleHeaderSetXmin(HeapTupleHeaderData *tup, TransactionId xid)
static bool HEAP_LOCKED_UPGRADED(uint16 infomask)
#define HEAP_XMAX_KEYSHR_LOCK
static bool HEAP_XMAX_IS_EXCL_LOCKED(int16 infomask)
static Oid HeapTupleHeaderGetTypeId(const HeapTupleHeaderData *tup)
HeapTuple heap_tuple_from_minimal_tuple(MinimalTuple mtup)
MinimalTuple minimal_expand_tuple(HeapTuple sourceTuple, TupleDesc tupleDesc)
static void HeapTupleHeaderSetMovedPartitions(HeapTupleHeaderData *tup)
static Datum fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull)
void heap_freetuple(HeapTuple htup)
static void HeapTupleHeaderSetXmax(HeapTupleHeaderData *tup, TransactionId xid)
static bool HeapTupleHasVarWidth(const HeapTupleData *tuple)
static bool HeapTupleHeaderXminCommitted(const HeapTupleHeaderData *tup)
static void HeapTupleHeaderSetHotUpdated(HeapTupleHeaderData *tup)
static void ItemPointerSet(ItemPointerData *pointer, BlockNumber blockNumber, OffsetNumber offNum)
static bool ItemPointerIndicatesMovedPartitions(const ItemPointerData *pointer)
static void ItemPointerSetMovedPartitions(ItemPointerData *pointer)
static OffsetNumber ItemPointerGetOffsetNumberNoCheck(const ItemPointerData *pointer)
static BlockNumber ItemPointerGetBlockNumber(const ItemPointerData *pointer)
#define SpecTokenOffsetNumber
union HeapTupleFields::@46 t_field3
char mt_padding[MINIMAL_TUPLE_PADDING]
bits8 t_bits[FLEXIBLE_ARRAY_MEMBER]
#define FrozenTransactionId
#define InvalidTransactionId
static CompactAttribute * TupleDescCompactAttr(TupleDesc tupdesc, int i)
static bool att_isnull(int ATT, const bits8 *BITS)
#define SET_VARSIZE(PTR, len)
Datum bit(PG_FUNCTION_ARGS)