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;
124 phony_nullbitmap = (
bits8 *)
127 #ifdef TOAST_INDEX_HACK 149 nulls[idxattno++] =
true;
174 #ifdef TOAST_INDEX_HACK 180 bool free_value =
false;
183 if (atttype->
typlen != -1)
185 values[idxattno++] =
value;
213 (atttype->
typstorage == TYPSTORAGE_EXTENDED ||
234 untoasted_values[nuntoasted++] =
value;
238 values[idxattno++] =
value;
243 Assert(idxattno <= brdesc->bd_totalstored);
281 (
char *) rettuple + hoff,
289 pfree(phony_nullbitmap);
291 #ifdef TOAST_INDEX_HACK 292 for (i = 0; i < nuntoasted; i++)
421 if (!destsz || *destsz == 0)
423 else if (len > *destsz)
429 memcpy(dest, tuple, len);
442 if (memcmp(a, b, alen) != 0)
489 currdatum = (
char *) dtuple +
548 values, allnulls, hasnulls);
555 for (valueno = 0, keyno = 0; keyno < brdesc->
bd_tupdesc->
natts; keyno++)
601 char *tp,
bits8 *nullbits,
bool nulls,
647 if (allnulls[attnum])
659 if (thisatt->attlen == -1)
670 values[stored++] =
fetchatt(thisatt, tp + off);
#define BrinTupleIsPlaceholder(tup)
void heap_fill_tuple(TupleDesc tupleDesc, Datum *values, bool *isnull, char *data, Size data_size, uint16 *infomask, bits8 *bit)
struct BrinValues BrinValues
#define AllocSetContextCreate
#define BrinTupleHasNulls(tup)
#define att_align_nominal(cur_offset, attalign)
BrinTuple * brin_copy_tuple(BrinTuple *tuple, Size len, BrinTuple *dest, Size *destsz)
TupleDesc CreateTemplateTupleDesc(int natts)
#define att_isnull(ATT, BITS)
#define PointerGetDatum(X)
#define TupleDescAttr(tupdesc, i)
struct varlena * detoast_external_attr(struct varlena *attr)
static MemoryContext MemoryContextSwitchTo(MemoryContext context)
void MemoryContextReset(MemoryContext context)
BrinMemTuple * brin_new_memtuple(BrinDesc *brdesc)
BrinMemTuple * brin_deform_tuple(BrinDesc *brdesc, BrinTuple *tuple, BrinMemTuple *dMemtuple)
#define VARATT_IS_EXTERNAL(PTR)
void pfree(void *pointer)
static TupleDesc brtuple_disk_tupdesc(BrinDesc *brdesc)
#define TOAST_INDEX_TARGET
TypeCacheEntry * oi_typcache[FLEXIBLE_ARRAY_MEMBER]
#define ALLOCSET_DEFAULT_SIZES
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)
BrinValues bt_columns[FLEXIBLE_ARRAY_MEMBER]
FormData_pg_attribute * Form_pg_attribute
MemoryContext CurrentMemoryContext
void TupleDescInitEntry(TupleDesc desc, AttrNumber attributeNumber, const char *attributeName, Oid oidtypeid, int32 typmod, int attdim)
#define att_addlength_pointer(cur_offset, attlen, attptr)
Datum datumCopy(Datum value, bool typByVal, int typLen)
#define BRIN_PLACEHOLDER_MASK
void * palloc0(Size size)
#define att_align_pointer(cur_offset, attalign, attlen, attptr)
BrinOpcInfo * bd_info[FLEXIBLE_ARRAY_MEMBER]
void brin_free_tuple(BrinTuple *tuple)
#define Assert(condition)
void * repalloc(void *pointer, Size size)
Size heap_compute_data_size(TupleDesc tupleDesc, Datum *values, bool *isnull)
#define VARATT_IS_EXTENDED(PTR)
#define DatumGetPointer(X)
static Datum values[MAXATTR]
Datum toast_compress_datum(Datum value)
BrinTuple * brin_form_tuple(BrinDesc *brdesc, BlockNumber blkno, BrinMemTuple *tuple, Size *size)
#define BrinTupleDataOffset(tup)
BrinTuple * brin_form_placeholder_tuple(BrinDesc *brdesc, BlockNumber blkno, Size *size)
BrinMemTuple * brin_memtuple_initialize(BrinMemTuple *dtuple, BrinDesc *brdesc)