📄 tupdesc.h
字号:
/*------------------------------------------------------------------------- * * tupdesc.h * POSTGRES tuple descriptor definitions. * * * Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * $PostgreSQL: pgsql/src/include/access/tupdesc.h,v 1.47 2005/03/07 04:42:17 tgl Exp $ * *------------------------------------------------------------------------- */#ifndef TUPDESC_H#define TUPDESC_H#include "access/attnum.h"#include "catalog/pg_attribute.h"#include "nodes/pg_list.h"typedef struct attrDefault{ AttrNumber adnum; char *adbin; /* nodeToString representation of expr */} AttrDefault;typedef struct constrCheck{ char *ccname; char *ccbin; /* nodeToString representation of expr */} ConstrCheck;/* This structure contains constraints of a tuple */typedef struct tupleConstr{ AttrDefault *defval; /* array */ ConstrCheck *check; /* array */ uint16 num_defval; uint16 num_check; bool has_not_null;} TupleConstr;/* * This struct is passed around within the backend to describe the structure * of tuples. For tuples coming from on-disk relations, the information is * collected from the pg_attribute, pg_attrdef, and pg_constraint catalogs. * Transient row types (such as the result of a join query) have anonymous * TupleDesc structs that generally omit any constraint info; therefore the * structure is designed to let the constraints be omitted efficiently. * * Note that only user attributes, not system attributes, are mentioned in * TupleDesc; with the exception that tdhasoid indicates if OID is present. * * If the tupdesc is known to correspond to a named rowtype (such as a table's * rowtype) then tdtypeid identifies that type and tdtypmod is -1. Otherwise * tdtypeid is RECORDOID, and tdtypmod can be either -1 for a fully anonymous * row type, or a value >= 0 to allow the rowtype to be looked up in the * typcache.c type cache. */typedef struct tupleDesc{ int natts; /* number of attributes in the tuple */ Form_pg_attribute *attrs; /* attrs[N] is a pointer to the description of Attribute Number N+1 */ TupleConstr *constr; /* constraints, or NULL if none */ Oid tdtypeid; /* composite type ID for tuple type */ int32 tdtypmod; /* typmod for tuple type */ bool tdhasoid; /* tuple has oid attribute in its header */} *TupleDesc;extern TupleDesc CreateTemplateTupleDesc(int natts, bool hasoid);extern TupleDesc CreateTupleDesc(int natts, bool hasoid, Form_pg_attribute *attrs);extern TupleDesc CreateTupleDescCopy(TupleDesc tupdesc);extern TupleDesc CreateTupleDescCopyConstr(TupleDesc tupdesc);extern void FreeTupleDesc(TupleDesc tupdesc);extern bool equalTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2);extern void TupleDescInitEntry(TupleDesc desc, AttrNumber attributeNumber, const char *attributeName, Oid oidtypeid, int32 typmod, int attdim);extern TupleDesc BuildDescForRelation(List *schema);#endif /* TUPDESC_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -