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,
FormData_pg_attribute attrs[FLEXIBLE_ARRAY_MEMBER]
TupleDesc CreateTupleDescCopyConstr(TupleDesc tupdesc)
uint32 hashTupleDesc(TupleDesc tupdesc)
struct TupleDescData TupleDescData
void TupleDescCopyEntry(TupleDesc dst, AttrNumber dstAttno, TupleDesc src, AttrNumber srcAttno)
void TupleDescInitEntryCollation(TupleDesc desc, AttrNumber attributeNumber, Oid collationid)
void FreeTupleDesc(TupleDesc tupdesc)
void IncrTupleDescRefCount(TupleDesc tupdesc)
#define FLEXIBLE_ARRAY_MEMBER
void DecrTupleDescRefCount(TupleDesc tupdesc)
struct ConstrCheck ConstrCheck
struct AttrDefault AttrDefault
bool has_generated_stored
bool equalTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2)
TupleDesc BuildDescFromLists(List *names, List *types, List *typmods, List *collations)
void TupleDescInitEntry(TupleDesc desc, AttrNumber attributeNumber, const char *attributeName, Oid oidtypeid, int32 typmod, int attdim)
FormData_pg_attribute * Form_pg_attribute
TupleDesc CreateTupleDescCopy(TupleDesc tupdesc)
TupleDesc CreateTemplateTupleDesc(int natts)
void TupleDescInitBuiltinEntry(TupleDesc desc, AttrNumber attributeNumber, const char *attributeName, Oid oidtypeid, int32 typmod, int attdim)
TupleDesc BuildDescForRelation(List *schema)
TupleDesc CreateTupleDesc(int natts, Form_pg_attribute *attrs)
struct AttrMissing * missing
struct TupleConstr TupleConstr
struct TupleDescData * TupleDesc
void TupleDescCopy(TupleDesc dst, TupleDesc src)