92 #define TupleDescAttr(tupdesc, i) (&(tupdesc)->attrs[(i)])
102 #define TupleDescSize(src) \
103 (offsetof(struct TupleDescData, attrs) + \
104 (src)->natts * sizeof(FormData_pg_attribute))
116 #define PinTupleDesc(tupdesc) \
118 if ((tupdesc)->tdrefcount >= 0) \
119 IncrTupleDescRefCount(tupdesc); \
122 #define ReleaseTupleDesc(tupdesc) \
124 if ((tupdesc)->tdrefcount >= 0) \
125 DecrTupleDescRefCount(tupdesc); \
134 const char *attributeName,
141 const char *attributeName,
#define FLEXIBLE_ARRAY_MEMBER
FormData_pg_attribute * Form_pg_attribute
bool has_generated_stored
struct AttrMissing * missing
FormData_pg_attribute attrs[FLEXIBLE_ARRAY_MEMBER]
TupleDesc CreateTupleDescCopyConstr(TupleDesc tupdesc)
void TupleDescCopy(TupleDesc dst, TupleDesc src)
void DecrTupleDescRefCount(TupleDesc tupdesc)
struct TupleConstr TupleConstr
void FreeTupleDesc(TupleDesc tupdesc)
void IncrTupleDescRefCount(TupleDesc tupdesc)
TupleDesc CreateTemplateTupleDesc(int natts)
Node * TupleDescGetDefault(TupleDesc tupdesc, AttrNumber attnum)
struct AttrDefault AttrDefault
uint32 hashRowType(TupleDesc desc)
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
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