aboutsummaryrefslogtreecommitdiff
path: root/src/backend/include/miscadmin.h
blob: 58bbb7d8d2f0c6085c7342049f890c3aacedf02a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
57
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
88
89
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
/*-------------------------------------------------------------------------
 *
 * 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.2 1996/09/16 06:11:44 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	6
#define PG_VERSION	0
#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 */