145#define TupleDescAttrAddress(desc) \
146 (Form_pg_attribute) ((char *) (desc) + \
147 (offsetof(struct TupleDescData, compact_attrs) + \
148 (desc)->natts * sizeof(CompactAttribute)))
159#undef TupleDescAttrAddress
161#ifdef USE_ASSERT_CHECKING
173#ifdef USE_ASSERT_CHECKING
176 verify_compact_attribute(tupdesc,
i);
192#define TupleDescSize(src) \
193 (offsetof(struct TupleDescData, compact_attrs) + \
194 (src)->natts * sizeof(CompactAttribute) + \
195 (src)->natts * sizeof(FormData_pg_attribute))
207#define PinTupleDesc(tupdesc) \
209 if ((tupdesc)->tdrefcount >= 0) \
210 IncrTupleDescRefCount(tupdesc); \
213#define ReleaseTupleDesc(tupdesc) \
215 if ((tupdesc)->tdrefcount >= 0) \
216 DecrTupleDescRefCount(tupdesc); \
225 const char *attributeName,
232 const char *attributeName,
#define FLEXIBLE_ARRAY_MEMBER
FormData_pg_attribute * Form_pg_attribute
bool has_generated_stored
struct AttrMissing * missing
CompactAttribute compact_attrs[FLEXIBLE_ARRAY_MEMBER]
#define TupleDescAttrAddress(desc)
TupleDesc CreateTupleDescCopyConstr(TupleDesc tupdesc)
void TupleDescCopy(TupleDesc dst, TupleDesc src)
Node * TupleDescGetDefault(TupleDesc tupdesc, AttrNumber attnum)
void DecrTupleDescRefCount(TupleDesc tupdesc)
struct TupleConstr TupleConstr
void FreeTupleDesc(TupleDesc tupdesc)
void IncrTupleDescRefCount(TupleDesc tupdesc)
TupleDesc CreateTemplateTupleDesc(int natts)
struct AttrDefault AttrDefault
static FormData_pg_attribute * TupleDescAttr(TupleDesc tupdesc, int i)
static CompactAttribute * TupleDescCompactAttr(TupleDesc tupdesc, int i)
uint32 hashRowType(TupleDesc desc)
TupleDesc CreateTupleDescTruncatedCopy(TupleDesc tupdesc, int natts)
TupleDesc CreateTupleDescCopy(TupleDesc tupdesc)
void TupleDescInitBuiltinEntry(TupleDesc desc, AttrNumber attributeNumber, const char *attributeName, Oid oidtypeid, int32 typmod, int attdim)
TupleDesc BuildDescFromLists(const List *names, const List *types, const List *typmods, const List *collations)
struct TupleDescData TupleDescData
struct CompactAttribute CompactAttribute
void populate_compact_attribute(TupleDesc tupdesc, int attnum)
bool equalRowTypes(TupleDesc tupdesc1, TupleDesc tupdesc2)
struct TupleDescData * TupleDesc
void TupleDescInitEntryCollation(TupleDesc desc, AttrNumber attributeNumber, Oid collationid)
TupleDesc CreateTupleDesc(int natts, Form_pg_attribute *attrs)
void TupleDescInitEntry(TupleDesc desc, AttrNumber attributeNumber, const char *attributeName, Oid oidtypeid, int32 typmod, int attdim)
bool equalTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2)
void TupleDescCopyEntry(TupleDesc dst, AttrNumber dstAttno, TupleDesc src, AttrNumber srcAttno)
struct ConstrCheck ConstrCheck