aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/parser/pg_wrapper/postgresql/src/backend/utils/init/globals.c
blob: bbc8ab1c24a4a9a1c3e20e49aab97fe677793fbe (plain) (blame)
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
/*-------------------------------------------------------------------------
 *
 * globals.c
 *	  global variable declarations
 *
 * Portions Copyright (c) 1996-2023, 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"


__thread ProtocolVersion FrontendProtocol;

__thread volatile sig_atomic_t InterruptPending = false;
volatile sig_atomic_t* ImplPtrInterruptPending() { return &InterruptPending; }
__thread volatile sig_atomic_t QueryCancelPending = false;
__thread volatile sig_atomic_t ProcDiePending = false;
__thread volatile sig_atomic_t CheckClientConnectionPending = false;
__thread volatile sig_atomic_t ClientConnectionLost = false;
__thread volatile sig_atomic_t IdleInTransactionSessionTimeoutPending = false;
__thread volatile sig_atomic_t IdleSessionTimeoutPending = false;
__thread volatile sig_atomic_t ProcSignalBarrierPending = false;
__thread volatile sig_atomic_t LogMemoryContextPending = false;
__thread volatile sig_atomic_t IdleStatsUpdateTimeoutPending = false;
__thread volatile uint32 InterruptHoldoffCount = 0;
__thread volatile uint32 QueryCancelHoldoffCount = 0;
__thread volatile uint32 CritSectionCount = 0;

__thread int			MyProcPid;
__thread pg_time_t	MyStartTime;
__thread TimestampTz MyStartTimestamp;
__thread struct Port *MyProcPort;
__thread int32		MyCancelKey;
__thread 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.
 */
__thread 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.
 */
__thread 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.
 */
__thread int			data_directory_mode = PG_DIR_MODE_OWNER;

__thread char		OutputFileName[MAXPGPATH];	/* debugging output file */

__thread char		my_exec_path[MAXPGPATH];	/* full path to my executable */
__thread 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

__thread BackendId	MyBackendId = InvalidBackendId;

__thread BackendId	ParallelLeaderBackendId = InvalidBackendId;

__thread Oid			MyDatabaseId = InvalidOid;

__thread Oid			MyDatabaseTableSpace = InvalidOid;

/*
 * DatabasePath is the path (relative to DataDir) of my database's
 * primary directory, ie, its directory in the default tablespace.
 */
__thread char	   *DatabasePath = NULL;

__thread 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.
 */
__thread bool		IsPostmasterEnvironment = false;
__thread bool		IsUnderPostmaster = false;
__thread bool		IsBinaryUpgrade = false;
__thread bool		IsBackgroundWorker = false;

__thread bool		ExitOnAnyError = false;

__thread int			DateStyle = USE_ISO_DATES;
__thread int			DateOrder = DATEORDER_MDY;
__thread int			IntervalStyle = INTSTYLE_POSTGRES;

__thread bool		enableFsync = true;
__thread bool		allowSystemTableMods = false;
__thread int			work_mem = 4096;
__thread double		hash_mem_multiplier = 2.0;
__thread int			maintenance_work_mem = 65536;
__thread 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.
 */
__thread int			NBuffers = 16384;
__thread int			MaxConnections = 100;
__thread int			max_worker_processes = 8;
__thread int			max_parallel_workers = 8;
__thread int			MaxBackends = 0;

/* GUC parameters for vacuum */
__thread int			VacuumBufferUsageLimit = 256;

__thread int			VacuumCostPageHit = 1;
__thread int			VacuumCostPageMiss = 2;
__thread int			VacuumCostPageDirty = 20;
__thread int			VacuumCostLimit = 200;
__thread double		VacuumCostDelay = 0;

__thread int64		VacuumPageHit = 0;
__thread int64		VacuumPageMiss = 0;
__thread int64		VacuumPageDirty = 0;

__thread int			VacuumCostBalance = 0;	/* working state for vacuum */
__thread bool		VacuumCostActive = false;