tupdesc.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * tupdesc.h
  4.  *   POSTGRES tuple descriptor definitions.
  5.  *
  6.  *
  7.  * Copyright (c) 1994, Regents of the University of California
  8.  *
  9.  * $Id: tupdesc.h,v 1.22.2.1 1999/07/30 18:27:00 scrappy Exp $
  10.  *
  11.  *-------------------------------------------------------------------------
  12.  */
  13. #ifndef TUPDESC_H
  14. #define TUPDESC_H
  15. #include "access/attnum.h"
  16. #include "catalog/pg_attribute.h"
  17. #include "nodes/pg_list.h"
  18. typedef struct attrDefault
  19. {
  20. AttrNumber adnum;
  21. char    *adbin;
  22. char    *adsrc;
  23. } AttrDefault;
  24. typedef struct constrCheck
  25. {
  26. char    *ccname;
  27. char    *ccbin;
  28. char    *ccsrc;
  29. } ConstrCheck;
  30. /* This structure contains constraints of a tuple */
  31. typedef struct tupleConstr
  32. {
  33. AttrDefault *defval;
  34. ConstrCheck *check;
  35. uint16 num_defval;
  36. uint16 num_check;
  37. bool has_not_null;
  38. } TupleConstr;
  39. /*
  40.  * This structure contains all information (i.e. from Classes
  41.  * pg_attribute, pg_attrdef, pg_relcheck) for a tuple.
  42.  */
  43. typedef struct tupleDesc
  44. {
  45. int natts;
  46. /* Number of attributes in the tuple */
  47. Form_pg_attribute *attrs;
  48. /* attrs[N] is a pointer to the description of Attribute Number N+1.  */
  49. TupleConstr *constr;
  50. }    *TupleDesc;
  51. extern TupleDesc CreateTemplateTupleDesc(int natts);
  52. extern TupleDesc CreateTupleDesc(int natts, Form_pg_attribute *attrs);
  53. extern TupleDesc CreateTupleDescCopy(TupleDesc tupdesc);
  54. extern TupleDesc CreateTupleDescCopyConstr(TupleDesc tupdesc);
  55. extern void FreeTupleDesc(TupleDesc tupdesc);
  56. extern bool TupleDescInitEntry(TupleDesc desc,
  57.    AttrNumber attributeNumber,
  58.    char *attributeName,
  59.    Oid typeid,
  60.    int32 typmod,
  61.    int attdim,
  62.    bool attisset);
  63. extern TupleDesc BuildDescForRelation(List *schema, char *relname);
  64. #endif  /* TUPDESC_H */