diff options
Diffstat (limited to 'src/include/miscadmin.h')
-rw-r--r-- | src/include/miscadmin.h | 305 |
1 files changed, 0 insertions, 305 deletions
diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h deleted file mode 100644 index f2f6f5c6760..00000000000 --- a/src/include/miscadmin.h +++ /dev/null @@ -1,305 +0,0 @@ -/*------------------------------------------------------------------------- - * - * 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 - * pdir.h directory path crud - * pinit.h postgres initialization - * pmod.h processing modes - * - * - * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group - * Portions Copyright (c) 1994, Regents of the University of California - * - * $Id: miscadmin.h,v 1.106 2002/06/20 20:29:42 momjian Exp $ - * - * NOTES - * some of the information in this file should be moved to - * other files. - * - *------------------------------------------------------------------------- - */ -#ifndef MISCADMIN_H -#define MISCADMIN_H - -#include <sys/types.h> - - -/***************************************************************************** - * System interrupt and critical section handling - * - * There are two types of interrupts that a running backend needs to accept - * without messing up its state: QueryCancel (SIGINT) and ProcDie (SIGTERM). - * In both cases, we need to be able to clean up the current transaction - * gracefully, so we can't respond to the interrupt instantaneously --- - * there's no guarantee that internal data structures would be self-consistent - * if the code is interrupted at an arbitrary instant. Instead, the signal - * handlers set flags that are checked periodically during execution. - * - * The CHECK_FOR_INTERRUPTS() macro is called at strategically located spots - * where it is normally safe to accept a cancel or die interrupt. In some - * cases, we invoke CHECK_FOR_INTERRUPTS() inside low-level subroutines that - * might sometimes be called in contexts that do *not* want to allow a cancel - * or die interrupt. The HOLD_INTERRUPTS() and RESUME_INTERRUPTS() macros - * allow code to ensure that no cancel or die interrupt will be accepted, - * even if CHECK_FOR_INTERRUPTS() gets called in a subroutine. The interrupt - * will be held off until CHECK_FOR_INTERRUPTS() is done outside any - * HOLD_INTERRUPTS() ... RESUME_INTERRUPTS() section. - * - * Special mechanisms are used to let an interrupt be accepted when we are - * waiting for a lock or when we are waiting for command input (but, of - * course, only if the interrupt holdoff counter is zero). See the - * related code for details. - * - * A related, but conceptually distinct, mechanism is the "critical section" - * mechanism. A critical section not only holds off cancel/die interrupts, - * but causes any elog(ERROR) or elog(FATAL) to become elog(STOP) --- that is, - * a system-wide reset is forced. Needless to say, only really *critical* - * code should be marked as a critical section! Currently, this mechanism - * is only used for XLOG-related code. - * - *****************************************************************************/ - -/* in globals.c */ -/* these are marked volatile because they are set by signal handlers: */ -extern volatile bool InterruptPending; -extern volatile bool QueryCancelPending; -extern volatile bool ProcDiePending; - -/* these are marked volatile because they are examined by signal handlers: */ -extern volatile bool ImmediateInterruptOK; -extern volatile uint32 InterruptHoldoffCount; -extern volatile uint32 CritSectionCount; - -/* in postgres.c */ -extern void ProcessInterrupts(void); - -#define CHECK_FOR_INTERRUPTS() \ - do { \ - if (InterruptPending) \ - ProcessInterrupts(); \ - } while(0) - -#define HOLD_INTERRUPTS() (InterruptHoldoffCount++) - -#define RESUME_INTERRUPTS() \ - do { \ - Assert(InterruptHoldoffCount > 0); \ - InterruptHoldoffCount--; \ - } while(0) - -#define START_CRIT_SECTION() (CritSectionCount++) - -#define END_CRIT_SECTION() \ - do { \ - Assert(CritSectionCount > 0); \ - CritSectionCount--; \ - } while(0) - - -/***************************************************************************** - * globals.h -- * - *****************************************************************************/ - -/* - * from postmaster/postmaster.c - */ -extern bool IsUnderPostmaster; -extern bool ClientAuthInProgress; - -extern int PostmasterMain(int argc, char *argv[]); -extern void ClosePostmasterPorts(bool pgstat_too); - -/* - * from utils/init/globals.c - */ -extern bool Noversion; -extern char *DataDir; - -extern DLLIMPORT int MyProcPid; -extern struct Port *MyProcPort; -extern long MyCancelKey; - -extern char OutputFileName[]; -extern char pg_pathname[]; - -/* - * done in storage/backendid.h for now. - * - * extern BackendId MyBackendId; - */ -extern DLLIMPORT Oid MyDatabaseId; - -/* Date/Time Configuration - * - * Constants to pass info from runtime environment: - * USE_POSTGRES_DATES specifies traditional postgres format for output. - * USE_ISO_DATES specifies ISO-compliant format for output. - * USE_SQL_DATES specified Oracle/Ingres-compliant format for output. - * USE_GERMAN_DATES specifies German-style dd.mm/yyyy date format. - * - * DateStyle specifies preference for date formatting for output. - * EuroDates if client prefers dates interpreted and written w/European conventions. - * - * HasCTZSet if client timezone is specified by client. - * CDayLight is the apparent daylight savings time status. - * CTimeZone is the timezone offset in seconds. - * CTZName is the timezone label. - */ - -#define MAXTZLEN 10 /* max TZ name len, not counting tr. null */ - -#define USE_POSTGRES_DATES 0 -#define USE_ISO_DATES 1 -#define USE_SQL_DATES 2 -#define USE_GERMAN_DATES 3 - -extern int DateStyle; -extern bool EuroDates; -extern bool HasCTZSet; -extern bool CDayLight; -extern int CTimeZone; -extern char CTZName[]; - -extern char FloatFormat[]; -extern char DateFormat[]; - -extern bool enableFsync; -extern bool allowSystemTableMods; -extern int SortMem; -extern int VacuumMem; - -/* - * A few postmaster startup options are exported here so the - * configuration file processor can access them. - */ - -extern bool NetServer; -extern bool EnableSSL; -extern bool SilentMode; -extern int MaxBackends; -extern int NBuffers; -extern int PostPortNumber; -extern int Unix_socket_permissions; -extern char *Unix_socket_group; -extern char *UnixSocketDir; -extern char *VirtualHost; - - -/***************************************************************************** - * pdir.h -- * - * POSTGRES directory path definitions. * - *****************************************************************************/ - -extern char *DatabaseName; -extern char *DatabasePath; - -/* in utils/misc/database.c */ -extern void GetRawDatabaseInfo(const char *name, Oid *db_id, char *path); -extern char *ExpandDatabasePath(const char *path); - -/* now in utils/init/miscinit.c */ -extern void SetDatabaseName(const char *name); -extern void SetDatabasePath(const char *path); - -extern char *GetUserNameFromId(Oid userid); - -extern Oid GetUserId(void); -extern void SetUserId(Oid userid); -extern Oid GetSessionUserId(void); -extern void SetSessionUserId(Oid userid); -extern void InitializeSessionUserId(const char *username); -extern void InitializeSessionUserIdStandalone(void); -extern void SetSessionAuthorization(Oid userid); - -extern void SetDataDir(const char *dir); - -extern int FindExec(char *full_path, const char *argv0, - const char *binary_name); -extern int CheckPathAccess(char *path, char *name, int open_mode); - -#ifdef CYR_RECODE -extern void SetCharSet(void); -extern char *convertstr(unsigned char *buff, int len, int dest); -#endif - -/* in utils/misc/superuser.c */ -extern bool superuser(void); /* current user is superuser */ -extern bool superuser_arg(Oid userid); /* given user is superuser */ -extern bool is_dbadmin(Oid dbid); /* current user is owner of - * database */ - - -/***************************************************************************** - * pmod.h -- * - * POSTGRES processing mode definitions. * - *****************************************************************************/ - -/* - * Description: - * There are three processing modes in POSTGRES. They are - * BootstrapProcessing or "bootstrap," InitProcessing or - * "initialization," and NormalProcessing or "normal." - * - * The first 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 guaranteed to commit. This mode - * is used during the initial generation of template databases. - * - * Initialization mode: used while starting a backend, until all normal - * initialization is complete. Some code behaves differently when executed - * in this mode to enable system bootstrapping. - * - * If a POSTGRES binary is in normal mode, then all code may be executed - * normally. - */ - -typedef enum ProcessingMode -{ - BootstrapProcessing, /* bootstrap creation of template database */ - InitProcessing, /* initializing system */ - NormalProcessing /* normal processing */ -} ProcessingMode; - -extern ProcessingMode Mode; - -#define IsBootstrapProcessingMode() ((bool)(Mode == BootstrapProcessing)) -#define IsInitProcessingMode() ((bool)(Mode == InitProcessing)) -#define IsNormalProcessingMode() ((bool)(Mode == NormalProcessing)) - -#define SetProcessingMode(mode) \ - do { \ - AssertArg((mode) == BootstrapProcessing || \ - (mode) == InitProcessing || \ - (mode) == NormalProcessing); \ - Mode = (mode); \ - } while(0) - -#define GetProcessingMode() Mode - - -/***************************************************************************** - * pinit.h -- * - * POSTGRES initialization and cleanup definitions. * - *****************************************************************************/ - -/* in utils/init/postinit.c */ -extern void InitPostgres(const char *dbname, const char *username); -extern void BaseInit(void); - -/* in utils/init/miscinit.c */ -extern bool CreateDataDirLockFile(const char *datadir, bool amPostmaster); -extern bool CreateSocketLockFile(const char *socketfile, bool amPostmaster); -extern void TouchSocketLockFile(void); -extern void RecordSharedMemoryInLockFile(unsigned long id1, - unsigned long id2); - -extern void ValidatePgVersion(const char *path); - -/* these externs do not belong here... */ -extern void IgnoreSystemIndexes(bool mode); -extern bool IsIgnoringSystemIndexes(void); -extern bool IsCacheInitialized(void); - -#endif /* MISCADMIN_H */ |