49#define TOAST_INDEX_HACK
77 for (
i = 0;
i <
brdesc->bd_tupdesc->natts;
i++)
79 for (
j = 0;
j <
brdesc->bd_info[
i]->oi_nstored;
j++)
81 brdesc->bd_info[
i]->oi_typcache[
j]->type_id,
87 brdesc->bd_disktdesc = tupdesc;
90 return brdesc->bd_disktdesc;
115#ifdef TOAST_INDEX_HACK
126#ifdef TOAST_INDEX_HACK
134 for (keyno = 0; keyno <
brdesc->bd_tupdesc->natts; keyno++)
181#ifdef TOAST_INDEX_HACK
190 if (atttype->
typlen != -1)
235 compression =
att->attcompression;
314#ifdef TOAST_INDEX_HACK
336 for (keyno = 0; keyno <
brdesc->bd_tupdesc->natts; keyno++)
353 for (keyno = 0; keyno <
brdesc->bd_tupdesc->natts; keyno++)
409 for (keyno = 0; keyno <
brdesc->bd_tupdesc->natts; keyno++)
494 dtup->bt_empty_range =
true;
520 for (
i = 0;
i <
brdesc->bd_tupdesc->natts;
i++)
522 dtuple->bt_columns[
i].bv_attno =
i + 1;
523 dtuple->bt_columns[
i].bv_allnulls =
true;
524 dtuple->bt_columns[
i].bv_hasnulls =
false;
534 dtuple->bt_empty_range =
true;
568 dtup->bt_placeholder =
true;
572 dtup->bt_empty_range =
false;
595 for (
valueno = 0, keyno = 0; keyno <
brdesc->bd_tupdesc->natts; keyno++)
609 for (
i = 0;
i <
brdesc->bd_info[keyno]->oi_nstored;
i++)
610 dtup->bt_columns[keyno].bv_values[
i] =
612 brdesc->bd_info[keyno]->oi_typcache[
i]->typbyval,
613 brdesc->bd_info[keyno]->oi_typcache[
i]->typlen);
616 dtup->bt_columns[keyno].bv_allnulls =
false;
619 dtup->bt_columns[keyno].bv_serialize =
NULL;
620 dtup->bt_columns[keyno].bv_context =
dtup->bt_context;
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)
#define Assert(condition)
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)
#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)
BrinValues bt_columns[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)