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

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * pg_dump.h
  4.  *   header file for the pg_dump utility
  5.  *
  6.  * Copyright (c) 1994, Regents of the University of California
  7.  *
  8.  * $Id: pg_dump.h,v 1.39 1999/05/26 21:51:11 tgl Exp $
  9.  *
  10.  * Modifications - 6/12/96 - dave@bensoft.com - version 1.13.dhb.2
  11.  *
  12.  *  - Fixed dumpTable output to output lengths for char and varchar types!
  13.  *  - Added single. quote to twin single quote expansion for 'insert' string
  14.  *    mode.
  15.  *
  16.  * Modifications - 6/1/97 - igor@sba.miami.edu
  17.  * - Added extern's for the functions that clear allocated memory
  18.  *  in pg_dump.c
  19.  *-------------------------------------------------------------------------
  20.  */
  21. #include <catalog/pg_index.h>
  22. /* The *Info data structures run-time C structures used to store
  23.    system catalog information */
  24. typedef struct _typeInfo
  25. {
  26. char    *oid;
  27. char    *typowner;
  28. char    *typname;
  29. char    *typlen;
  30. char    *typprtlen;
  31. char    *typinput;
  32. char    *typoutput;
  33. char    *typreceive;
  34. char    *typsend;
  35. char    *typelem;
  36. char    *typdelim;
  37. char    *typdefault;
  38. char    *typrelid;
  39. char    *usename;
  40. int passedbyvalue;
  41. int isArray;
  42. } TypeInfo;
  43. typedef struct _funcInfo
  44. {
  45. char    *oid;
  46. char    *proname;
  47. char    *proowner;
  48. int lang;
  49. int nargs;
  50. char    *argtypes[8]; /* should be derived from obj/fmgr.h
  51.  * instead of hardwired */
  52. char    *prorettype;
  53. int retset; /* 1 if the function returns a set, 0
  54.  * otherwise */
  55. char    *prosrc;
  56. char    *probin;
  57. char    *usename;
  58. int dumped; /* 1 if already dumped */
  59. } FuncInfo;
  60. typedef struct _tableInfo
  61. {
  62. char    *oid;
  63. char    *relname;
  64. char    *relacl;
  65. bool sequence;
  66. int numatts; /* number of attributes */
  67. int    *inhAttrs; /* an array of flags, one for each
  68.  * attribute if the value is 1, then this
  69.  * attribute is an inherited attribute */
  70. char   **attnames; /* the attribute names */
  71. char   **typnames; /* fill out attributes */
  72. bool    *notnull; /* Not null constraints of an attribute */
  73. char   **adef_expr; /* DEFAULT expressions */
  74. int numParents; /* number of (immediate) parent
  75.  * supertables */
  76. char   **parentRels; /* names of parent relations, NULL if
  77.  * numParents == 0 */
  78. char   **out_attnames; /* the attribute names, in the order they
  79.  * would be in, when the table is created
  80.  * in the target query language. this is
  81.  * needed because the SQL tables will not
  82.  * have the same order of attributes as
  83.  * the POSTQUEL tables */
  84. int    *atttypmod; /* type-specific type modifier */
  85. char    *usename;
  86. int ncheck; /* # of CHECK expressions */
  87. char   **check_expr; /* [CONSTRAINT name] CHECK expressions */
  88. int ntrig; /* # of triggers */
  89. char   **triggers; /* CREATE TRIGGER ... */
  90. } TableInfo;
  91. typedef struct _inhInfo
  92. {
  93. char    *inhrel;
  94. char    *inhparent;
  95. } InhInfo;
  96. typedef struct _indInfo
  97. {
  98. char    *indexrelname; /* name of the secondary index class */
  99. char    *indrelname; /* name of the indexed heap class */
  100. char    *indamname; /* name of the access method (e.g. btree,
  101.  * rtree, etc.) */
  102. char    *indproc; /* oid of the function to compute the
  103.  * index, 0 if none */
  104. char    *indkey[INDEX_MAX_KEYS]; /* attribute numbers of the key
  105.  * attributes */
  106. char    *indclass[INDEX_MAX_KEYS]; /* opclass of the keys */
  107. char    *indisunique; /* is this index unique? */
  108. } IndInfo;
  109. typedef struct _aggInfo
  110. {
  111. char    *oid;
  112. char    *aggname;
  113. char    *aggtransfn1;
  114. char    *aggtransfn2;
  115. char    *aggfinalfn;
  116. char    *aggtranstype1;
  117. char    *aggbasetype;
  118. char    *aggtranstype2;
  119. char    *agginitval1;
  120. char    *agginitval2;
  121. char    *usename;
  122. } AggInfo;
  123. typedef struct _oprInfo
  124. {
  125. char    *oid;
  126. char    *oprname;
  127. char    *oprkind; /* "b" = binary, "l" = left unary, "r" =
  128.  * right unary */
  129. char    *oprcode; /* operator function name */
  130. char    *oprleft; /* left operand type */
  131. char    *oprright; /* right operand type */
  132. char    *oprcom; /* oid of the commutator operator */
  133. char    *oprnegate; /* oid of the negator operator */
  134. char    *oprrest; /* name of the function to calculate
  135.  * operator restriction selectivity */
  136. char    *oprjoin; /* name of the function to calculate
  137.  * operator join selectivity */
  138. char    *oprcanhash; /* can we use hash join strategy ? */
  139. char    *oprlsortop; /* oid's of the left and right sort
  140.  * operators */
  141. char    *oprrsortop;
  142. char    *usename;
  143. } OprInfo;
  144. /* global decls */
  145. extern bool g_force_quotes; /* double-quotes for identifiers flag */
  146. extern bool g_verbose; /* verbose flag */
  147. extern int g_last_builtin_oid; /* value of the last builtin oid */
  148. extern FILE *g_fout; /* the script file */
  149. /* placeholders for comment starting and ending delimiters */
  150. extern char g_comment_start[10];
  151. extern char g_comment_end[10];
  152. extern char g_opaque_type[10]; /* name for the opaque type */
  153. /* pg_dump is really two programs in one
  154. one version works with postgres v4r2
  155. and the other works with postgreSQL
  156. the common routines are declared here
  157. */
  158. /*
  159.  * common utility functions
  160. */
  161. extern TableInfo *dumpSchema(FILE *fout,
  162.    int *numTablesPtr,
  163.    const char *tablename,
  164.    const bool acls);
  165. extern void dumpSchemaIdx(FILE *fout,
  166.   const char *tablename,
  167.   TableInfo *tblinfo,
  168.   int numTables);
  169. extern char *findTypeByOid(TypeInfo *tinfo, int numTypes, const char *oid);
  170. extern char *findOprByOid(OprInfo *oprinfo, int numOprs, const char *oid);
  171. extern int findFuncByName(FuncInfo *finfo, int numFuncs, const char *name);
  172. extern int findTableByName(TableInfo *tbinfo, int numTables, const char *relname);
  173. extern void check_conn_and_db(void);
  174. extern void parseArgTypes(char **argtypes, const char *str);
  175. /*
  176.  * version specific routines
  177.  */
  178. extern TypeInfo *getTypes(int *numTypes);
  179. extern FuncInfo *getFuncs(int *numFuncs);
  180. extern AggInfo *getAggregates(int *numAggregates);
  181. extern void clearAggInfo(AggInfo *, int);
  182. extern void clearFuncInfo(FuncInfo *, int);
  183. extern void clearInhInfo(InhInfo *, int);
  184. extern void clearIndInfo(IndInfo *, int);
  185. extern void clearOprInfo(OprInfo *, int);
  186. extern void clearTypeInfo(TypeInfo *, int);
  187. extern OprInfo *getOperators(int *numOperators);
  188. extern TableInfo *getTables(int *numTables, FuncInfo *finfo, int numFuncs);
  189. extern InhInfo *getInherits(int *numInherits);
  190. extern void getTableAttrs(TableInfo *tbinfo, int numTables);
  191. extern IndInfo *getIndices(int *numIndices);
  192. extern void dumpTypes(FILE *fout, FuncInfo *finfo, int numFuncs,
  193.   TypeInfo *tinfo, int numTypes);
  194. extern void dumpProcLangs(FILE *fout, FuncInfo *finfo, int numFuncs,
  195.   TypeInfo *tinfo, int numTypes);
  196. extern void dumpFuncs(FILE *fout, FuncInfo *finfo, int numFuncs,
  197.   TypeInfo *tinfo, int numTypes);
  198. extern void dumpAggs(FILE *fout, AggInfo *agginfo, int numAggregates,
  199.  TypeInfo *tinfo, int numTypes);
  200. extern void dumpOprs(FILE *fout, OprInfo *agginfo, int numOperators,
  201.  TypeInfo *tinfo, int numTypes);
  202. extern void dumpTables(FILE *fout, TableInfo *tbinfo, int numTables,
  203.    InhInfo *inhinfo, int numInherits,
  204.    TypeInfo *tinfo, int numTypes, const char *tablename,
  205.    const bool acls);
  206. extern void dumpIndices(FILE *fout, IndInfo *indinfo, int numIndices,
  207. TableInfo *tbinfo, int numTables, const char *tablename);
  208. extern const char *fmtId(const char *identifier, bool force_quotes);