151 lines
4.5 KiB
C
151 lines
4.5 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* globals.c
|
|
* global variable declarations
|
|
*
|
|
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
*
|
|
* IDENTIFICATION
|
|
* src/backend/utils/init/globals.c
|
|
*
|
|
* NOTES
|
|
* Globals used all over the place should be declared here and not
|
|
* in other modules.
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
#include "postgres.h"
|
|
|
|
#include "common/file_perm.h"
|
|
#include "libpq/libpq-be.h"
|
|
#include "libpq/pqcomm.h"
|
|
#include "miscadmin.h"
|
|
#include "storage/backendid.h"
|
|
|
|
|
|
ProtocolVersion FrontendProtocol;
|
|
|
|
volatile sig_atomic_t InterruptPending = false;
|
|
volatile sig_atomic_t QueryCancelPending = false;
|
|
volatile sig_atomic_t ProcDiePending = false;
|
|
volatile sig_atomic_t ClientConnectionLost = false;
|
|
volatile sig_atomic_t IdleInTransactionSessionTimeoutPending = false;
|
|
volatile sig_atomic_t ProcSignalBarrierPending = false;
|
|
volatile uint32 InterruptHoldoffCount = 0;
|
|
volatile uint32 QueryCancelHoldoffCount = 0;
|
|
volatile uint32 CritSectionCount = 0;
|
|
|
|
int MyProcPid;
|
|
pg_time_t MyStartTime;
|
|
TimestampTz MyStartTimestamp;
|
|
struct Port *MyProcPort;
|
|
int32 MyCancelKey;
|
|
int MyPMChildSlot;
|
|
|
|
/*
|
|
* MyLatch points to the latch that should be used for signal handling by the
|
|
* current process. It will either point to a process local latch if the
|
|
* current process does not have a PGPROC entry in that moment, or to
|
|
* PGPROC->procLatch if it has. Thus it can always be used in signal handlers,
|
|
* without checking for its existence.
|
|
*/
|
|
struct Latch *MyLatch;
|
|
|
|
/*
|
|
* DataDir is the absolute path to the top level of the PGDATA directory tree.
|
|
* Except during early startup, this is also the server's working directory;
|
|
* most code therefore can simply use relative paths and not reference DataDir
|
|
* explicitly.
|
|
*/
|
|
char *DataDir = NULL;
|
|
|
|
/*
|
|
* Mode of the data directory. The default is 0700 but it may be changed in
|
|
* checkDataDir() to 0750 if the data directory actually has that mode.
|
|
*/
|
|
int data_directory_mode = PG_DIR_MODE_OWNER;
|
|
|
|
char OutputFileName[MAXPGPATH]; /* debugging output file */
|
|
|
|
char my_exec_path[MAXPGPATH]; /* full path to my executable */
|
|
char pkglib_path[MAXPGPATH]; /* full path to lib directory */
|
|
|
|
#ifdef EXEC_BACKEND
|
|
char postgres_exec_path[MAXPGPATH]; /* full path to backend */
|
|
|
|
/* note: currently this is not valid in backend processes */
|
|
#endif
|
|
|
|
BackendId MyBackendId = InvalidBackendId;
|
|
|
|
BackendId ParallelMasterBackendId = InvalidBackendId;
|
|
|
|
Oid MyDatabaseId = InvalidOid;
|
|
|
|
Oid MyDatabaseTableSpace = InvalidOid;
|
|
|
|
/*
|
|
* DatabasePath is the path (relative to DataDir) of my database's
|
|
* primary directory, ie, its directory in the default tablespace.
|
|
*/
|
|
char *DatabasePath = NULL;
|
|
|
|
pid_t PostmasterPid = 0;
|
|
|
|
/*
|
|
* IsPostmasterEnvironment is true in a postmaster process and any postmaster
|
|
* child process; it is false in a standalone process (bootstrap or
|
|
* standalone backend). IsUnderPostmaster is true in postmaster child
|
|
* processes. Note that "child process" includes all children, not only
|
|
* regular backends. These should be set correctly as early as possible
|
|
* in the execution of a process, so that error handling will do the right
|
|
* things if an error should occur during process initialization.
|
|
*
|
|
* These are initialized for the bootstrap/standalone case.
|
|
*/
|
|
bool IsPostmasterEnvironment = false;
|
|
bool IsUnderPostmaster = false;
|
|
bool IsBinaryUpgrade = false;
|
|
bool IsBackgroundWorker = false;
|
|
|
|
bool ExitOnAnyError = false;
|
|
|
|
int DateStyle = USE_ISO_DATES;
|
|
int DateOrder = DATEORDER_MDY;
|
|
int IntervalStyle = INTSTYLE_POSTGRES;
|
|
|
|
bool enableFsync = true;
|
|
bool allowSystemTableMods = false;
|
|
int work_mem = 1024;
|
|
int maintenance_work_mem = 16384;
|
|
int max_parallel_maintenance_workers = 2;
|
|
|
|
/*
|
|
* Primary determinants of sizes of shared-memory structures.
|
|
*
|
|
* MaxBackends is computed by PostmasterMain after modules have had a chance to
|
|
* register background workers.
|
|
*/
|
|
int NBuffers = 1000;
|
|
int MaxConnections = 90;
|
|
int max_worker_processes = 8;
|
|
int max_parallel_workers = 8;
|
|
int MaxBackends = 0;
|
|
|
|
int VacuumCostPageHit = 1; /* GUC parameters for vacuum */
|
|
int VacuumCostPageMiss = 10;
|
|
int VacuumCostPageDirty = 20;
|
|
int VacuumCostLimit = 200;
|
|
double VacuumCostDelay = 0;
|
|
|
|
int64 VacuumPageHit = 0;
|
|
int64 VacuumPageMiss = 0;
|
|
int64 VacuumPageDirty = 0;
|
|
|
|
int VacuumCostBalance = 0; /* working state for vacuum */
|
|
bool VacuumCostActive = false;
|
|
|
|
double vacuum_cleanup_index_scale_factor;
|