miscadmin.h 6.18 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/*-------------------------------------------------------------------------
 *
 * 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
 *
15
 * $Id: miscadmin.h,v 1.3 1996/09/19 20:02:53 scrappy Exp $
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
 *
 * 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[];
57
extern void 	  InitGlobals(void);
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87

/*
 * 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    *
 *****************************************************************************/

88 89
#define	PG_RELEASE	6
#define PG_VERSION	0
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193
#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 */