diff options
Diffstat (limited to 'src/backend/include/miscadmin.h')
-rw-r--r-- | src/backend/include/miscadmin.h | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/src/backend/include/miscadmin.h b/src/backend/include/miscadmin.h new file mode 100644 index 00000000000..85c5699205e --- /dev/null +++ b/src/backend/include/miscadmin.h @@ -0,0 +1,193 @@ +/*------------------------------------------------------------------------- + * + * miscadmin.h-- + * this file contains general postgres administration and initialization + * stuff that used to be spread out between the following files: + * globals.h global variables + * magic.h PG_RELEASE, PG_VERSION, etc defines + * pdir.h directory path crud + * pinit.h postgres initialization + * pmod.h processing modes + * + * + * Copyright (c) 1994, Regents of the University of California + * + * $Id: miscadmin.h,v 1.1.1.1 1996/07/09 06:21:28 scrappy Exp $ + * + * NOTES + * some of the information in this file will be moved to + * other files. + * + *------------------------------------------------------------------------- + */ +#ifndef MISCADMIN_H +#define MISCADMIN_H + +/* ---------------- + * note: <sys/types.h> was in unix.h This should be moved + * to the .c files. + * ---------------- + */ +#include <sys/types.h> + +#include "postgres.h" +#include "storage/backendid.h" + +/***************************************************************************** + * globals.h -- * + *****************************************************************************/ + +/* #include "storage/sinval.h" */ + +/* + * from postmaster/postmaster.c + */ +extern int PostmasterMain(int argc, char* argv[]); + +/* + * from utils/init/globals.c + */ +extern int Portfd; +extern int Noversion; /* moved from magic.c */ +extern int MasterPid; /* declared and defined in utils/initglobals.c */ +extern int Quiet; +extern char *DataDir; + +extern char OutputFileName[]; +extern void InitGlobals(); + +/* + * done in storage/backendid.h for now. + * + * extern BackendId MyBackendId; + * extern BackendTag MyBackendTag; + */ +extern bool MyDatabaseIdIsInitialized; +extern Oid MyDatabaseId; +extern bool TransactionInitWasProcessed; + +extern bool IsUnderPostmaster; +extern bool IsPostmaster; + +extern short DebugLvl; + +extern Oid LastOidProcessed; /* for query rewrite */ + +#define MAX_PARSE_BUFFER 8192 + +/* + * default number of buffers in buffer pool + * + */ +#define NDBUFS 64 + +/***************************************************************************** + * magic.h - definitions of the indexes of the magic numbers * + *****************************************************************************/ + +#define PG_RELEASE 5 +#define PG_VERSION 1 +#define PG_VERFILE "PG_VERSION" + +/***************************************************************************** + * pdir.h -- * + * POSTGRES directory path definitions. * + *****************************************************************************/ + +/* now in utils/init/miscinit.c */ +extern char *GetDatabasePath(void); +extern char *GetDatabaseName(void); +extern void SetDatabaseName(char *name); +extern void SetDatabasePath(char *path); +extern char *GetPgUserName(void); +extern void SetPgUserName(void); +extern Oid GetUserId(void); +extern void SetUserId(void); +extern char *GetPGHome(void); +extern char *GetPGData(void); +extern int ValidateBackend(char *path); +extern int FindBackend(char *backend, char *argv0); +extern int CheckPathAccess(char *path, char *name, int open_mode); + + +/***************************************************************************** + * pmod.h -- * + * POSTGRES processing mode definitions. * + *****************************************************************************/ +/* + * Description: + * There are four processing modes in POSTGRES. They are NoProcessing + * or "none," BootstrapProcessing or "bootstrap," InitProcessing or + * "initialization," and NormalProcessing or "normal." + * + * If a POSTGRES binary is in normal mode, then all code may be executed + * normally. In the none mode, only bookkeeping code may be called. In + * particular, access method calls may not occur in this mode since the + * execution state is outside a transaction. + * + * The final two processing modes are used during special times. When the + * system state indicates bootstrap processing, transactions are all given + * transaction id "one" and are consequently guarenteed to commit. This mode + * is used during the initial generation of template databases. + * + * Finally, the execution state is in initialization mode until all normal + * initialization is complete. Some code behaves differently when executed in + * this mode to enable system bootstrapping. + */ + +typedef enum ProcessingMode { + NoProcessing, /* "nothing" can be done */ + BootstrapProcessing, /* bootstrap creation of template database */ + InitProcessing, /* initializing system */ + NormalProcessing /* normal processing */ +} ProcessingMode; + + +/***************************************************************************** + * pinit.h -- * + * POSTGRES initialization and cleanup definitions. * + *****************************************************************************/ +/* + * Note: + * XXX AddExitHandler not defined yet. + */ + +typedef int16 ExitStatus; + +#define NormalExitStatus (0) +#define FatalExitStatus (127) +/* XXX are there any other meaningful exit codes? */ + +/* in utils/init/postinit.c */ +extern void InitMyDatabaseId(void); +extern void DoChdirAndInitDatabaseNameAndPath(char *name, char *path); +extern void InitUserid(void); +extern void InitCommunication(void); +extern void InitStdio(void); + +extern bool PostgresIsInitialized; + +extern void InitPostgres(char *name); + +/* in miscinit.c */ +extern void ExitPostgres(ExitStatus status); +extern void AbortPostgres(void); +extern void StatusBackendExit(int status); +extern void StatusPostmasterExit(int status); + +extern bool IsNoProcessingMode(void); +extern bool IsBootstrapProcessingMode(void); +extern bool IsInitProcessingMode(void); +extern bool IsNormalProcessingMode(void); +extern void SetProcessingMode(ProcessingMode mode); +extern ProcessingMode GetProcessingMode(void); + + +/* + * Prototypes for utils/init/magic.c + */ +extern int DatabaseMetaGunkIsConsistent(char database[], char path[]); +extern int ValidPgVersion(char path []); +extern void SetPgVersion(char path []); + +#endif /* MISCADMIN_H */ |