X-Git-Url: https://granicus.if.org/sourcecode?a=blobdiff_plain;f=src%2Fbackend%2Futils%2Finit%2Fglobals.c;h=4b66bd3e358bb8aea34b165f6ab47477e022305d;hb=e126958c2efdfc2d60b978d1fc7a780ff647e8ad;hp=c5d4282007fe0f6810c0466bfb9b0e8dabc4edb3;hpb=f4921e5ca38aac1214854e7226e8bb3291d60485;p=postgresql diff --git a/src/backend/utils/init/globals.c b/src/backend/utils/init/globals.c index c5d4282007..4b66bd3e35 100644 --- a/src/backend/utils/init/globals.c +++ b/src/backend/utils/init/globals.c @@ -3,12 +3,12 @@ * globals.c * global variable declarations * - * Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group + * Portions Copyright (c) 1996-2012, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/init/globals.c,v 1.78 2004/01/26 22:51:56 momjian Exp $ + * src/backend/utils/init/globals.c * * NOTES * Globals used all over the place should be declared here and not @@ -18,56 +18,115 @@ */ #include "postgres.h" +#include "catalog/objectaccess.h" #include "libpq/pqcomm.h" #include "miscadmin.h" #include "storage/backendid.h" -ProtocolVersion FrontendProtocol = PG_PROTOCOL_LATEST; +ProtocolVersion FrontendProtocol; volatile bool InterruptPending = false; volatile bool QueryCancelPending = false; volatile bool ProcDiePending = false; +volatile bool ClientConnectionLost = false; volatile bool ImmediateInterruptOK = false; volatile uint32 InterruptHoldoffCount = 0; volatile uint32 CritSectionCount = 0; int MyProcPid; +pg_time_t MyStartTime; struct Port *MyProcPort; long MyCancelKey; +int MyPMChildSlot; +/* + * 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; - /* - * The PGDATA directory user says to use, or defaults to via environment - * variable. NULL if no option given and no environment variable set - */ +char OutputFileName[MAXPGPATH]; /* debugging output file */ -char OutputFileName[MAXPGPATH]; +char my_exec_path[MAXPGPATH]; /* full path to my executable */ +char pkglib_path[MAXPGPATH]; /* full path to lib directory */ -char pg_pathname[MAXPGPATH]; /* full path to postgres - * executable */ +#ifdef EXEC_BACKEND +char postgres_exec_path[MAXPGPATH]; /* full path to backend */ -BackendId MyBackendId; +/* note: currently this is not valid in backend processes */ +#endif + +BackendId MyBackendId = InvalidBackendId; -char *DatabasePath = NULL; Oid MyDatabaseId = InvalidOid; -pid_t PostmasterPid = 0; +Oid MyDatabaseTableSpace = InvalidOid; -/* these are initialized for the bootstrap/standalone case: */ +/* + * 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 ExitOnAnyError = false; int DateStyle = USE_ISO_DATES; int DateOrder = DATEORDER_MDY; +int IntervalStyle = INTSTYLE_POSTGRES; bool HasCTZSet = false; int CTimeZone = 0; bool enableFsync = true; bool allowSystemTableMods = false; -int SortMem = 1024; -int VacuumMem = 8192; +int work_mem = 1024; +int maintenance_work_mem = 16384; + +/* + * Primary determinants of sizes of shared-memory structures. MaxBackends is + * MaxConnections + autovacuum_max_workers + 1 (it is computed by the GUC + * assign hooks for those variables): + */ int NBuffers = 1000; +int MaxBackends = 100; +int MaxConnections = 90; + +int VacuumCostPageHit = 1; /* GUC parameters for vacuum */ +int VacuumCostPageMiss = 10; +int VacuumCostPageDirty = 20; +int VacuumCostLimit = 200; +int VacuumCostDelay = 0; + +int VacuumPageHit = 0; +int VacuumPageMiss = 0; +int VacuumPageDirty = 0; + +int VacuumCostBalance = 0; /* working state for vacuum */ +bool VacuumCostActive = false; + +int GinFuzzySearchLimit = 0; + +/* + * Hook on object accesses. This is intended as infrastructure for security + * and logging plugins. + */ +object_access_hook_type object_access_hook = NULL;