]> granicus.if.org Git - postgresql/blob - src/include/pg_config_manual.h
Add option to pg_ctl to choose event source for logging
[postgresql] / src / include / pg_config_manual.h
1 /*------------------------------------------------------------------------
2  * PostgreSQL manual configuration settings
3  *
4  * This file contains various configuration symbols and limits.  In
5  * all cases, changing them is only useful in very rare situations or
6  * for developers.  If you edit any of these, be sure to do a *full*
7  * rebuild (and an initdb if noted).
8  *
9  * Portions Copyright (c) 1996-2014, PostgreSQL Global Development Group
10  * Portions Copyright (c) 1994, Regents of the University of California
11  *
12  * src/include/pg_config_manual.h
13  *------------------------------------------------------------------------
14  */
15
16 /*
17  * Maximum length for identifiers (e.g. table names, column names,
18  * function names).  Names actually are limited to one less byte than this,
19  * because the length must include a trailing zero byte.
20  *
21  * Changing this requires an initdb.
22  */
23 #define NAMEDATALEN 64
24
25 /*
26  * Maximum number of arguments to a function.
27  *
28  * The minimum value is 8 (GIN indexes use 8-argument support functions).
29  * The maximum possible value is around 600 (limited by index tuple size in
30  * pg_proc's index; BLCKSZ larger than 8K would allow more).  Values larger
31  * than needed will waste memory and processing time, but do not directly
32  * cost disk space.
33  *
34  * Changing this does not require an initdb, but it does require a full
35  * backend recompile (including any user-defined C functions).
36  */
37 #define FUNC_MAX_ARGS           100
38
39 /*
40  * Maximum number of columns in an index.  There is little point in making
41  * this anything but a multiple of 32, because the main cost is associated
42  * with index tuple header size (see access/itup.h).
43  *
44  * Changing this requires an initdb.
45  */
46 #define INDEX_MAX_KEYS          32
47
48 /*
49  * Set the upper and lower bounds of sequence values.
50  */
51 #define SEQ_MAXVALUE    INT64CONST(0x7FFFFFFFFFFFFFFF)
52 #define SEQ_MINVALUE    (-SEQ_MAXVALUE)
53
54 /*
55  * Number of spare LWLocks to allocate for user-defined add-on code.
56  */
57 #define NUM_USER_DEFINED_LWLOCKS        4
58
59 /*
60  * When we don't have native spinlocks, we use semaphores to simulate them.
61  * Decreasing this value reduces consumption of OS resources; increasing it
62  * may improve performance, but supplying a real spinlock implementation is
63  * probably far better.
64  */
65 #define NUM_SPINLOCK_SEMAPHORES         1024
66
67 /*
68  * Define this if you want to allow the lo_import and lo_export SQL
69  * functions to be executed by ordinary users.  By default these
70  * functions are only available to the Postgres superuser.  CAUTION:
71  * These functions are SECURITY HOLES since they can read and write
72  * any file that the PostgreSQL server has permission to access.  If
73  * you turn this on, don't say we didn't warn you.
74  */
75 /* #define ALLOW_DANGEROUS_LO_FUNCTIONS */
76
77 /*
78  * MAXPGPATH: standard size of a pathname buffer in PostgreSQL (hence,
79  * maximum usable pathname length is one less).
80  *
81  * We'd use a standard system header symbol for this, if there weren't
82  * so many to choose from: MAXPATHLEN, MAX_PATH, PATH_MAX are all
83  * defined by different "standards", and often have different values
84  * on the same platform!  So we just punt and use a reasonably
85  * generous setting here.
86  */
87 #define MAXPGPATH               1024
88
89 /*
90  * PG_SOMAXCONN: maximum accept-queue length limit passed to
91  * listen(2).  You'd think we should use SOMAXCONN from
92  * <sys/socket.h>, but on many systems that symbol is much smaller
93  * than the kernel's actual limit.  In any case, this symbol need be
94  * twiddled only if you have a kernel that refuses large limit values,
95  * rather than silently reducing the value to what it can handle
96  * (which is what most if not all Unixen do).
97  */
98 #define PG_SOMAXCONN    10000
99
100 /*
101  * You can try changing this if you have a machine with bytes of
102  * another size, but no guarantee...
103  */
104 #define BITS_PER_BYTE           8
105
106 /*
107  * Preferred alignment for disk I/O buffers.  On some CPUs, copies between
108  * user space and kernel space are significantly faster if the user buffer
109  * is aligned on a larger-than-MAXALIGN boundary.  Ideally this should be
110  * a platform-dependent value, but for now we just hard-wire it.
111  */
112 #define ALIGNOF_BUFFER  32
113
114 /*
115  * Disable UNIX sockets for certain operating systems.
116  */
117 #if defined(WIN32)
118 #undef HAVE_UNIX_SOCKETS
119 #endif
120
121 /*
122  * Define this if your operating system supports link()
123  */
124 #if !defined(WIN32) && !defined(__CYGWIN__)
125 #define HAVE_WORKING_LINK 1
126 #endif
127
128 /*
129  * USE_POSIX_FADVISE controls whether Postgres will attempt to use the
130  * posix_fadvise() kernel call.  Usually the automatic configure tests are
131  * sufficient, but some older Linux distributions had broken versions of
132  * posix_fadvise().  If necessary you can remove the #define here.
133  */
134 #if HAVE_DECL_POSIX_FADVISE && defined(HAVE_POSIX_FADVISE)
135 #define USE_POSIX_FADVISE
136 #endif
137
138 /*
139  * USE_PREFETCH code should be compiled only if we have a way to implement
140  * prefetching.  (This is decoupled from USE_POSIX_FADVISE because there
141  * might in future be support for alternative low-level prefetch APIs.)
142  */
143 #ifdef USE_POSIX_FADVISE
144 #define USE_PREFETCH
145 #endif
146
147 /*
148  * This is the default directory in which AF_UNIX socket files are
149  * placed.  Caution: changing this risks breaking your existing client
150  * applications, which are likely to continue to look in the old
151  * directory.  But if you just hate the idea of sockets in /tmp,
152  * here's where to twiddle it.  You can also override this at runtime
153  * with the postmaster's -k switch.
154  */
155 #define DEFAULT_PGSOCKET_DIR  "/tmp"
156
157 /*
158  * This is the default event source for Windows event log.
159  */
160 #define DEFAULT_EVENT_SOURCE  "PostgreSQL"
161
162 /*
163  * The random() function is expected to yield values between 0 and
164  * MAX_RANDOM_VALUE.  Currently, all known implementations yield
165  * 0..2^31-1, so we just hardwire this constant.  We could do a
166  * configure test if it proves to be necessary.  CAUTION: Think not to
167  * replace this with RAND_MAX.  RAND_MAX defines the maximum value of
168  * the older rand() function, which is often different from --- and
169  * considerably inferior to --- random().
170  */
171 #define MAX_RANDOM_VALUE  (0x7FFFFFFF)
172
173 /*
174  * Set the format style used by gcc to check printf type functions. We really
175  * want the "gnu_printf" style set, which includes what glibc uses, such
176  * as %m for error strings and %lld for 64 bit long longs. But not all gcc
177  * compilers are known to support it, so we just use "printf" which all
178  * gcc versions alive are known to support, except on Windows where
179  * using "gnu_printf" style makes a dramatic difference. Maybe someday
180  * we'll have a configure test for this, if we ever discover use of more
181  * variants to be necessary.
182  */
183 #ifdef WIN32
184 #define PG_PRINTF_ATTRIBUTE gnu_printf
185 #else
186 #define PG_PRINTF_ATTRIBUTE printf
187 #endif
188
189 /*
190  * On PPC machines, decide whether to use the mutex hint bit in LWARX
191  * instructions.  Setting the hint bit will slightly improve spinlock
192  * performance on POWER6 and later machines, but does nothing before that,
193  * and will result in illegal-instruction failures on some pre-POWER4
194  * machines.  By default we use the hint bit when building for 64-bit PPC,
195  * which should be safe in nearly all cases.  You might want to override
196  * this if you are building 32-bit code for a known-recent PPC machine.
197  */
198 #ifdef HAVE_PPC_LWARX_MUTEX_HINT        /* must have assembler support in any case */
199 #if defined(__ppc64__) || defined(__powerpc64__)
200 #define USE_PPC_LWARX_MUTEX_HINT
201 #endif
202 #endif
203
204 /*
205  * On PPC machines, decide whether to use LWSYNC instructions in place of
206  * ISYNC and SYNC.  This provides slightly better performance, but will
207  * result in illegal-instruction failures on some pre-POWER4 machines.
208  * By default we use LWSYNC when building for 64-bit PPC, which should be
209  * safe in nearly all cases.
210  */
211 #if defined(__ppc64__) || defined(__powerpc64__)
212 #define USE_PPC_LWSYNC
213 #endif
214
215 /*
216  * Assumed cache line size. This doesn't affect correctness, but can be
217  * used for low-level optimizations. Currently, this is only used to pad
218  * some data structures in xlog.c, to ensure that highly-contended fields
219  * are on different cache lines. Too small a value can hurt performance due
220  * to false sharing, while the only downside of too large a value is a few
221  * bytes of wasted memory. The default is 128, which should be large enough
222  * for all supported platforms.
223  */
224 #define CACHE_LINE_SIZE         128
225
226 /*
227  *------------------------------------------------------------------------
228  * The following symbols are for enabling debugging code, not for
229  * controlling user-visible features or resource limits.
230  *------------------------------------------------------------------------
231  */
232
233 /*
234  * Include Valgrind "client requests", mostly in the memory allocator, so
235  * Valgrind understands PostgreSQL memory contexts.  This permits detecting
236  * memory errors that Valgrind would not detect on a vanilla build.  See also
237  * src/tools/valgrind.supp.  "make installcheck" runs 20-30x longer under
238  * Valgrind.  Note that USE_VALGRIND slowed older versions of Valgrind by an
239  * additional order of magnitude; Valgrind 3.8.1 does not have this problem.
240  * The client requests fall in hot code paths, so USE_VALGRIND also slows
241  * native execution by a few percentage points.
242  *
243  * You should normally use MEMORY_CONTEXT_CHECKING with USE_VALGRIND;
244  * instrumentation of repalloc() is inferior without it.
245  */
246 /* #define USE_VALGRIND */
247
248 /*
249  * Define this to cause pfree()'d memory to be cleared immediately, to
250  * facilitate catching bugs that refer to already-freed values.
251  * Right now, this gets defined automatically if --enable-cassert.
252  */
253 #ifdef USE_ASSERT_CHECKING
254 #define CLOBBER_FREED_MEMORY
255 #endif
256
257 /*
258  * Define this to check memory allocation errors (scribbling on more
259  * bytes than were allocated).  Right now, this gets defined
260  * automatically if --enable-cassert or USE_VALGRIND.
261  */
262 #if defined(USE_ASSERT_CHECKING) || defined(USE_VALGRIND)
263 #define MEMORY_CONTEXT_CHECKING
264 #endif
265
266 /*
267  * Define this to cause palloc()'d memory to be filled with random data, to
268  * facilitate catching code that depends on the contents of uninitialized
269  * memory.  Caution: this is horrendously expensive.
270  */
271 /* #define RANDOMIZE_ALLOCATED_MEMORY */
272
273 /*
274  * Define this to force all parse and plan trees to be passed through
275  * copyObject(), to facilitate catching errors and omissions in
276  * copyObject().
277  */
278 /* #define COPY_PARSE_PLAN_TREES */
279
280 /*
281  * Enable debugging print statements for lock-related operations.
282  */
283 /* #define LOCK_DEBUG */
284
285 /*
286  * Enable debugging print statements for WAL-related operations; see
287  * also the wal_debug GUC var.
288  */
289 /* #define WAL_DEBUG */
290
291 /*
292  * Enable tracing of resource consumption during sort operations;
293  * see also the trace_sort GUC var.  For 8.1 this is enabled by default.
294  */
295 #define TRACE_SORT 1
296
297 /*
298  * Enable tracing of syncscan operations (see also the trace_syncscan GUC var).
299  */
300 /* #define TRACE_SYNCSCAN */
301
302 /*
303  * Other debug #defines (documentation, anyone?)
304  */
305 /* #define HEAPDEBUGALL */
306 /* #define ACLDEBUG */
307 /* #define RTDEBUG */
308
309 /*
310  * Automatic configuration file name for ALTER SYSTEM.
311  * This file will be used to store values of configuration parameters
312  * set by ALTER SYSTEM command.
313  */
314 #define PG_AUTOCONF_FILENAME            "postgresql.auto.conf"