65 #define INDEX_SIZE_MASK 0x1FFF 66 #define INDEX_AM_RESERVED_BIT 0x2000 68 #define INDEX_VAR_MASK 0x4000 69 #define INDEX_NULL_MASK 0x8000 71 #define IndexTupleSize(itup) ((Size) ((itup)->t_info & INDEX_SIZE_MASK)) 72 #define IndexTupleHasNulls(itup) ((((IndexTuple) (itup))->t_info & INDEX_NULL_MASK)) 73 #define IndexTupleHasVarwidths(itup) ((((IndexTuple) (itup))->t_info & INDEX_VAR_MASK)) 80 #define IndexInfoFindDataOffset(t_info) \ 82 (!((t_info) & INDEX_NULL_MASK)) ? \ 84 (Size)MAXALIGN(sizeof(IndexTupleData)) \ 88 (Size)MAXALIGN(sizeof(IndexTupleData) + sizeof(IndexAttributeBitMapData)) \ 100 #define index_getattr(tup, attnum, tupleDesc, isnull) \ 102 AssertMacro(PointerIsValid(isnull) && (attnum) > 0), \ 104 !IndexTupleHasNulls(tup) ? \ 106 TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff >= 0 ? \ 108 fetchatt(TupleDescAttr((tupleDesc), (attnum)-1), \ 109 (char *) (tup) + IndexInfoFindDataOffset((tup)->t_info) \ 110 + TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff) \ 113 nocache_index_getattr((tup), (attnum), (tupleDesc)) \ 117 (att_isnull((attnum)-1, (char *)(tup) + sizeof(IndexTupleData))) ? \ 124 nocache_index_getattr((tup), (attnum), (tupleDesc)) \ 145 #define MaxIndexTuplesPerPage \ 146 ((int) ((BLCKSZ - SizeOfPageHeaderData) / \ 147 (MAXALIGN(sizeof(IndexTupleData) + 1) + sizeof(ItemIdData))))
IndexTuple index_truncate_tuple(TupleDesc sourceDescriptor, IndexTuple source, int leavenatts)
IndexTuple index_form_tuple(TupleDesc tupleDescriptor, Datum *values, bool *isnull)
struct IndexAttributeBitMapData IndexAttributeBitMapData
IndexTupleData * IndexTuple
struct IndexTupleData IndexTupleData
static rewind_source * source
static Datum values[MAXATTR]
void index_deform_tuple(IndexTuple tup, TupleDesc tupleDescriptor, Datum *values, bool *isnull)
Datum nocache_index_getattr(IndexTuple tup, int attnum, TupleDesc tupleDesc)
IndexTuple CopyIndexTuple(IndexTuple source)
IndexAttributeBitMapData * IndexAttributeBitMap