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

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * miscadmin.h
  4.  *   this file contains general postgres administration and initialization
  5.  *   stuff that used to be spread out between the following files:
  6.  * globals.h global variables
  7.  * pdir.h directory path crud
  8.  * pinit.h postgres initialization
  9.  * pmod.h processing modes
  10.  *
  11.  *
  12.  * Copyright (c) 1994, Regents of the University of California
  13.  *
  14.  * $Id: miscadmin.h,v 1.40 1999/06/12 22:17:23 tgl Exp $
  15.  *
  16.  * NOTES
  17.  *   some of the information in this file will be moved to
  18.  *   other files.
  19.  *
  20.  *-------------------------------------------------------------------------
  21.  */
  22. #ifndef MISCADMIN_H
  23. #define MISCADMIN_H
  24. /*****************************************************************************
  25.  *   globals.h --  *
  26.  *****************************************************************************/
  27. /*
  28.  * from postmaster/postmaster.c
  29.  */
  30. extern int PostmasterMain(int argc, char *argv[]);
  31. /*
  32.  * from utils/init/globals.c
  33.  */
  34. extern bool Noversion;
  35. extern bool Quiet;
  36. extern bool QueryCancel;
  37. extern char *DataDir;
  38. extern int MyProcPid;
  39. extern struct Port *MyProcPort;
  40. extern long MyCancelKey;
  41. extern char OutputFileName[];
  42. /*
  43.  * done in storage/backendid.h for now.
  44.  *
  45.  * extern BackendId    MyBackendId;
  46.  * extern BackendTag   MyBackendTag;
  47.  */
  48. extern bool MyDatabaseIdIsInitialized;
  49. extern Oid MyDatabaseId;
  50. extern bool TransactionInitWasProcessed;
  51. extern bool IsUnderPostmaster;
  52. extern short DebugLvl;
  53. /* Date/Time Configuration
  54.  *
  55.  * Constants to pass info from runtime environment:
  56.  * USE_POSTGRES_DATES specifies traditional postgres format for output.
  57.  * USE_ISO_DATES specifies ISO-compliant format for output.
  58.  * USE_SQL_DATES specified Oracle/Ingres-compliant format for output.
  59.  * USE_GERMAN_DATES specifies German-style dd.mm/yyyy date format.
  60.  *
  61.  * DateStyle specifies preference for date formatting for output.
  62.  * EuroDates if client prefers dates interpreted and written w/European conventions.
  63.  *
  64.  * HasCTZSet if client timezone is specified by client.
  65.  * CDayLight is the apparent daylight savings time status.
  66.  * CTimeZone is the timezone offset in seconds.
  67.  * CTZName is the timezone label.
  68.  */
  69. #define MAXTZLEN 7
  70. #define USE_POSTGRES_DATES 0
  71. #define USE_ISO_DATES 1
  72. #define USE_SQL_DATES 2
  73. #define USE_GERMAN_DATES 3
  74. extern int DateStyle;
  75. extern bool EuroDates;
  76. extern bool HasCTZSet;
  77. extern bool CDayLight;
  78. extern int CTimeZone;
  79. extern char CTZName[];
  80. extern char FloatFormat[];
  81. extern char DateFormat[];
  82. extern bool disableFsync;
  83. extern bool allowSystemTableMods;
  84. extern int SortMem;
  85. extern Oid LastOidProcessed; /* for query rewrite */
  86. /* #define MAX_QUERY_SIZE  (BLCKSZ*2) */
  87. #define MAX_PARSE_BUFFER MAX_QUERY_SIZE
  88. /*****************************************************************************
  89.  *   pdir.h --  *
  90.  * POSTGRES directory path definitions.  *
  91.  *****************************************************************************/
  92. extern char *DatabaseName;
  93. extern char *DatabasePath;
  94. /* in utils/misc/database.c */
  95. extern void GetRawDatabaseInfo(char *name, int4 *owner, Oid *db_id, char *path, int *encoding);
  96. extern int GetDatabaseInfo(char *name, int4 *owner, char *path);
  97. extern char *ExpandDatabasePath(char *path);
  98. /* now in utils/init/miscinit.c */
  99. extern void SetDatabaseName(char *name);
  100. extern void SetDatabasePath(char *path);
  101. /* even if MB is not enabled, this function is neccesary
  102.  * since pg_proc.h does have.
  103.  */
  104. extern const char *getdatabaseencoding(void);
  105. extern char *getpgusername(void);
  106. extern void SetPgUserName(void);
  107. extern int GetUserId(void);
  108. extern void SetUserId(void);
  109. extern int ValidateBinary(char *path);
  110. extern int FindExec(char *backend, char *argv0, char *binary_name);
  111. extern int CheckPathAccess(char *path, char *name, int open_mode);
  112. /* lower case version for case-insensitive SQL referenced in pg_proc.h */
  113. #define GetPgUserName() getpgusername()
  114. /*****************************************************************************
  115.  *   pmod.h --  *
  116.  * POSTGRES processing mode definitions.  *
  117.  *****************************************************************************/
  118. /*
  119.  * Description:
  120.  * There are four processing modes in POSTGRES.  They are NoProcessing
  121.  * or "none," BootstrapProcessing or "bootstrap," InitProcessing or
  122.  * "initialization," and NormalProcessing or "normal."
  123.  *
  124.  * If a POSTGRES binary is in normal mode, then all code may be executed
  125.  * normally.  In the none mode, only bookkeeping code may be called.  In
  126.  * particular, access method calls may not occur in this mode since the
  127.  * execution state is outside a transaction.
  128.  *
  129.  * The final two processing modes are used during special times.  When the
  130.  * system state indicates bootstrap processing, transactions are all given
  131.  * transaction id "one" and are consequently guarenteed to commit. This mode
  132.  * is used during the initial generation of template databases.
  133.  *
  134.  * Finally, the execution state is in initialization mode until all normal
  135.  * initialization is complete. Some code behaves differently when executed in
  136.  * this mode to enable system bootstrapping.
  137.  */
  138. typedef enum ProcessingMode
  139. {
  140. NoProcessing, /* "nothing" can be done */
  141. BootstrapProcessing, /* bootstrap creation of template database */
  142. InitProcessing, /* initializing system */
  143. NormalProcessing /* normal processing */
  144. } ProcessingMode;
  145. /*****************************************************************************
  146.  *   pinit.h --  *
  147.  * POSTGRES initialization and cleanup definitions.  *
  148.  *****************************************************************************/
  149. /*
  150.  * Note:
  151.  * XXX AddExitHandler not defined yet.
  152.  */
  153. typedef int16 ExitStatus;
  154. #define NormalExitStatus (0)
  155. #define FatalExitStatus (127)
  156. /* XXX are there any other meaningful exit codes? */
  157. /* in utils/init/postinit.c */
  158. extern bool PostgresIsInitialized;
  159. extern void InitPostgres(char *name);
  160. /* in miscinit.c */
  161. extern void ExitPostgres(ExitStatus status);
  162. extern bool IsBootstrapProcessingMode(void);
  163. extern bool IsInitProcessingMode(void);
  164. extern bool IsNormalProcessingMode(void);
  165. extern void SetProcessingMode(ProcessingMode mode);
  166. extern ProcessingMode GetProcessingMode(void);
  167. #endif  /* MISCADMIN_H */