80#define SizeOfBrinTuple (offsetof(BrinTuple, bt_info) + sizeof(uint8))
85#define BRIN_OFFSET_MASK 0x1F
86#define BRIN_EMPTY_RANGE_MASK 0x20
87#define BRIN_PLACEHOLDER_MASK 0x40
88#define BRIN_NULLS_MASK 0x80
90#define BrinTupleDataOffset(tup) ((Size) (((BrinTuple *) (tup))->bt_info & BRIN_OFFSET_MASK))
91#define BrinTupleHasNulls(tup) (((((BrinTuple *) (tup))->bt_info & BRIN_NULLS_MASK)) != 0)
92#define BrinTupleIsPlaceholder(tup) (((((BrinTuple *) (tup))->bt_info & BRIN_PLACEHOLDER_MASK)) != 0)
93#define BrinTupleIsEmptyRange(tup) (((((BrinTuple *) (tup))->bt_info & BRIN_EMPTY_RANGE_MASK)) != 0)
BrinTuple * brin_copy_tuple(BrinTuple *tuple, Size len, BrinTuple *dest, Size *destsz)
bool brin_tuples_equal(const BrinTuple *a, Size alen, const BrinTuple *b, Size blen)
struct BrinTuple BrinTuple
BrinTuple * brin_form_tuple(BrinDesc *brdesc, BlockNumber blkno, BrinMemTuple *tuple, Size *size)
struct BrinMemTuple BrinMemTuple
struct BrinValues BrinValues
BrinMemTuple * brin_new_memtuple(BrinDesc *brdesc)
void brin_free_tuple(BrinTuple *tuple)
BrinTuple * brin_form_placeholder_tuple(BrinDesc *brdesc, BlockNumber blkno, Size *size)
void(* brin_serialize_callback_type)(BrinDesc *bdesc, Datum src, Datum *dst)
BrinMemTuple * brin_memtuple_initialize(BrinMemTuple *dtuple, BrinDesc *brdesc)
BrinMemTuple * brin_deform_tuple(BrinDesc *brdesc, BrinTuple *tuple, BrinMemTuple *dMemtuple)
#define FLEXIBLE_ARRAY_MEMBER
static pg_noinline void Size size
BrinValues bt_columns[FLEXIBLE_ARRAY_MEMBER]
brin_serialize_callback_type bv_serialize