49#define TOAST_INDEX_HACK
53 char *tp,
bits8 *nullbits,
bool nulls,
104 bool anynulls =
false;
108 uint16 phony_infomask = 0;
109 bits8 *phony_nullbitmap;
115#ifdef TOAST_INDEX_HACK
116 Datum *untoasted_values;
126#ifdef TOAST_INDEX_HACK
148 nulls[idxattno++] =
true;
181#ifdef TOAST_INDEX_HACK
187 bool free_value =
false;
190 if (atttype->
typlen != -1)
220 (atttype->
typstorage == TYPSTORAGE_EXTENDED ||
234 if (att->atttypid == atttype->
type_id)
235 compression = att->attcompression;
257 untoasted_values[nuntoasted++] =
value;
266 Assert(idxattno <= brdesc->bd_totalstored);
304 (
char *) rettuple + hoff,
312 pfree(phony_nullbitmap);
314#ifdef TOAST_INDEX_HACK
315 for (
i = 0;
i < nuntoasted;
i++)
447 if (!destsz || *destsz == 0)
449 else if (
len > *destsz)
468 if (memcmp(
a,
b, alen) != 0)
517 currdatum = (
char *) dtuple +
588 values, allnulls, hasnulls);
595 for (valueno = 0, keyno = 0; keyno < brdesc->
bd_tupdesc->
natts; keyno++)
645 char *tp,
bits8 *nullbits,
bool nulls,
703 if (thisatt->
attlen == -1)
static Datum values[MAXATTR]
BrinTuple * brin_copy_tuple(BrinTuple *tuple, Size len, BrinTuple *dest, Size *destsz)
static void brin_deconstruct_tuple(BrinDesc *brdesc, char *tp, bits8 *nullbits, bool nulls, Datum *values, bool *allnulls, bool *hasnulls)
bool brin_tuples_equal(const BrinTuple *a, Size alen, const BrinTuple *b, Size blen)
BrinTuple * brin_form_tuple(BrinDesc *brdesc, BlockNumber blkno, BrinMemTuple *tuple, Size *size)
BrinMemTuple * brin_new_memtuple(BrinDesc *brdesc)
void brin_free_tuple(BrinTuple *tuple)
BrinTuple * brin_form_placeholder_tuple(BrinDesc *brdesc, BlockNumber blkno, Size *size)
BrinMemTuple * brin_memtuple_initialize(BrinMemTuple *dtuple, BrinDesc *brdesc)
BrinMemTuple * brin_deform_tuple(BrinDesc *brdesc, BrinTuple *tuple, BrinMemTuple *dMemtuple)
static TupleDesc brtuple_disk_tupdesc(BrinDesc *brdesc)
#define BRIN_EMPTY_RANGE_MASK
#define BrinTupleIsEmptyRange(tup)
#define BrinTupleDataOffset(tup)
#define BrinTupleIsPlaceholder(tup)
#define BRIN_PLACEHOLDER_MASK
#define BrinTupleHasNulls(tup)
struct BrinValues BrinValues
Datum datumCopy(Datum value, bool typByVal, int typLen)
struct varlena * detoast_external_attr(struct varlena *attr)
#define palloc_array(type, count)
#define palloc0_array(type, count)
Assert(PointerIsAligned(start, uint64))
#define TOAST_INDEX_TARGET
Size heap_compute_data_size(TupleDesc tupleDesc, const Datum *values, const bool *isnull)
void heap_fill_tuple(TupleDesc tupleDesc, const Datum *values, const bool *isnull, char *data, Size data_size, uint16 *infomask, bits8 *bit)
static int BITMAPLEN(int NATTS)
void MemoryContextReset(MemoryContext context)
void * repalloc(void *pointer, Size size)
void pfree(void *pointer)
void * palloc0(Size size)
MemoryContext CurrentMemoryContext
#define AllocSetContextCreate
#define ALLOCSET_DEFAULT_SIZES
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
FormData_pg_attribute * Form_pg_attribute
static Datum PointerGetDatum(const void *X)
static Pointer DatumGetPointer(Datum X)
BrinOpcInfo * bd_info[FLEXIBLE_ARRAY_MEMBER]
BrinValues bt_columns[FLEXIBLE_ARRAY_MEMBER]
TypeCacheEntry * oi_typcache[FLEXIBLE_ARRAY_MEMBER]
brin_serialize_callback_type bv_serialize
#define InvalidCompressionMethod
Datum toast_compress_datum(Datum value, char cmethod)
TupleDesc CreateTemplateTupleDesc(int natts)
void TupleDescInitEntry(TupleDesc desc, AttrNumber attributeNumber, const char *attributeName, Oid oidtypeid, int32 typmod, int attdim)
static FormData_pg_attribute * TupleDescAttr(TupleDesc tupdesc, int i)
static CompactAttribute * TupleDescCompactAttr(TupleDesc tupdesc, int i)
#define att_nominal_alignby(cur_offset, attalignby)
static bool att_isnull(int ATT, const bits8 *BITS)
#define att_addlength_pointer(cur_offset, attlen, attptr)
#define att_pointer_alignby(cur_offset, attalignby, attlen, attptr)
static bool VARATT_IS_EXTENDED(const void *PTR)
static bool VARATT_IS_EXTERNAL(const void *PTR)
static Size VARSIZE(const void *PTR)