]> granicus.if.org Git - postgresql/blob - src/include/config.h.in
412db86ac28614a913dc0a7852e34e3b3a6ab407
[postgresql] / src / include / config.h.in
1 /*
2  * PostgreSQL configuration-settings file.
3  *
4  * config.h.in is processed by configure to produce config.h.
5  *
6  * If you want to modify any of the tweakable settings in Part 2
7  * of this file, you can do it in config.h.in before running configure,
8  * or in config.h afterwards.  Of course, if you edit config.h, then your
9  * changes will be overwritten the next time you run configure.
10  *
11  * $Id: config.h.in,v 1.140 2000/10/03 19:50:21 petere Exp $
12  */
13
14 #ifndef CONFIG_H
15 #define CONFIG_H
16
17
18 /*
19  *------------------------------------------------------------------------
20  * Part 1: feature symbols and limits that are set by configure based on
21  * user-supplied switches.  This is first so that stuff in Part 2 can
22  * depend on these values.
23  *
24  * Beware of "fixing" configure-time mistakes by editing these values,
25  * since configure may have inserted the settings in other files as well
26  * as here.  Best to rerun configure if you forgot --enable-multibyte
27  * or whatever.
28  *------------------------------------------------------------------------
29  */
30
31 /* The version number is actually hard-coded into configure.in */
32 #undef PG_VERSION
33 /* A canonical string containing the version number, platform, and C compiler */
34 #undef PG_VERSION_STR
35
36 /* Set to 1 if you want LOCALE support (--enable-locale) */
37 #undef USE_LOCALE
38
39 /* Set to 1 if you want cyrillic recode (--enable-recode) */
40 #undef CYR_RECODE
41
42 /* Set to 1 if you want to use multibyte characters (--enable-multibyte) */
43 #undef MULTIBYTE
44
45 /* Set to 1 if you want ASSERT checking (--enable-cassert) */
46 #undef USE_ASSERT_CHECKING
47
48 /* Set to 1 to use syslog() to write postmaster log (--enable-syslog) */
49 /* (CAUTION: large log entries confuse syslog on many platforms!) */
50 #undef ENABLE_SYSLOG
51
52 /* Define to build with Kerberos 4 support (--with-krb4[=DIR]) */
53 #undef KRB4
54
55 /* Define to build with Kerberos 5 support (--with-krb5[=DIR]) */
56 #undef KRB5
57
58 /* Kerberos name of the Postgres service principal (--with-krb-srvnam=NAME) */
59 #undef PG_KRB_SRVNAM
60
61 /* Define to build with (Open)SSL support (--with-openssl[=DIR]) */
62 #undef USE_SSL
63
64 /* 
65  * DEF_PGPORT is the TCP port number on which the Postmaster listens and
66  * which clients will try to connect to.  This is just a default value;
67  * it can be overridden at postmaster or client startup.  It's awfully
68  * convenient if your clients have the right default compiled in, though.
69  * (--with-pgport=PORTNUM)
70  */ 
71 #undef DEF_PGPORT
72 /* ... and once more as a string constant instead */
73 #undef DEF_PGPORT_STR
74
75 /*
76  * Default soft limit on number of backend server processes per postmaster;
77  * this is just the default setting for the postmaster's -N switch.
78  * (--with-maxbackends=N)
79  */
80 #undef DEF_MAXBACKENDS
81
82
83 /*
84  *------------------------------------------------------------------------
85  * Part 2: feature symbols and limits that are user-configurable, but
86  * only by editing this file ... there's no configure support for them.
87  *
88  * Editing this file and doing a full rebuild (and an initdb if noted)
89  * should be sufficient to change any of these.
90  *------------------------------------------------------------------------
91  */
92
93 /*
94  * Hard limit on number of backend server processes per postmaster.
95  * Increasing this costs about 32 bytes per process slot as of v 6.5.
96  */
97 #define MAXBACKENDS     (DEF_MAXBACKENDS > 1024 ? DEF_MAXBACKENDS : 1024)
98
99 /*
100  * Default number of buffers in shared buffer pool (each of size BLCKSZ).
101  * This is just the default setting for the postmaster's -B switch.
102  * Perhaps it ought to be configurable from a configure switch.
103  * NOTE: default setting corresponds to the minimum number of buffers
104  * that postmaster.c will allow for the default MaxBackends value.
105  */
106 #define DEF_NBUFFERS (DEF_MAXBACKENDS > 8 ? DEF_MAXBACKENDS * 2 : 16)
107
108 /*
109  * Size of a disk block --- this also limits the size of a tuple.
110  * You can set it bigger if you need bigger tuples (although TOAST
111  * should reduce the need to have large tuples, since fields can now
112  * be spread across multiple tuples).
113  *
114  * The maximum possible value of BLCKSZ is currently 2^15 (32768).
115  * This is determined by the 15-bit widths of the lp_off and lp_len
116  * fields in ItemIdData (see include/storage/itemid.h).
117  *
118  * CAUTION: changing BLCKSZ requires an initdb.
119  */
120 #define BLCKSZ  8192
121
122 /*
123  * RELSEG_SIZE is the maximum number of blocks allowed in one disk file.
124  * Thus, the maximum size of a single file is RELSEG_SIZE * BLCKSZ;
125  * relations bigger than that are divided into multiple files.
126  *
127  * CAUTION: RELSEG_SIZE * BLCKSZ must be less than your OS' limit on file
128  * size.  This is typically 2Gb or 4Gb in a 32-bit operating system.  By
129  * default, we make the limit 1Gb to avoid any possible integer-overflow
130  * problems within the OS.  A limit smaller than necessary only means we
131  * divide a large relation into more chunks than necessary, so it seems
132  * best to err in the direction of a small limit.  (Besides, a power-of-2
133  * value saves a few cycles in md.c.)
134  *
135  * CAUTION: changing RELSEG_SIZE requires an initdb.
136  */
137 #define RELSEG_SIZE     (0x40000000 / BLCKSZ)
138
139 /*
140  * Maximum number of columns in an index and maximum number of arguments
141  * to a function. They must be the same value.
142  *
143  * The minimum value is 8 (index creation uses 8-argument functions).
144  * There is no specific upper limit, although large values will waste
145  * system-table space and processing time.
146  *
147  * CAUTION: changing these requires an initdb.
148  *
149  * BTW: if you need to call dynamically-loaded old-style C functions that
150  * have more than 16 arguments, you will also need to add cases to the
151  * switch statement in fmgr_oldstyle() in src/backend/utils/fmgr/fmgr.c.
152  * But consider converting such functions to new-style instead...
153  */
154 #define INDEX_MAX_KEYS          16
155 #define FUNC_MAX_ARGS           INDEX_MAX_KEYS
156
157 /*
158  * Define this to make libpgtcl's "pg_result -assign" command process C-style
159  * backslash sequences in returned tuple data and convert Postgres array
160  * attributes into Tcl lists.  CAUTION: this conversion is *wrong* unless
161  * you install the routines in contrib/string/string_io to make the backend
162  * produce C-style backslash sequences in the first place.
163  */
164 /* #define TCL_ARRAYS */
165
166 /*
167  * User locks are handled totally on the application side as long term
168  * cooperative locks which extend beyond the normal transaction boundaries.
169  * Their purpose is to indicate to an application that someone is `working'
170  * on an item.  Define this flag to enable user locks.  You will need the
171  * loadable module user-locks.c to use this feature.
172  */
173 #define USER_LOCKS
174
175 /*
176  * Define this if you want psql to _always_ ask for a username and a password
177  * for password authentication.
178  */
179 /* #define PSQL_ALWAYS_GET_PASSWORDS */
180
181 /*
182  * Define this if you want to allow the lo_import and lo_export SQL functions
183  * to be executed by ordinary users.  By default these functions are only
184  * available to the Postgres superuser.  CAUTION: these functions are
185  * SECURITY HOLES since they can read and write any file that the Postgres
186  * backend has permission to access.  If you turn this on, don't say we
187  * didn't warn you.
188  */
189 /* #define ALLOW_DANGEROUS_LO_FUNCTIONS */
190
191 /*
192  * Use btree bulkload code: 
193  * this code is moderately slow (~10% slower) compared to the regular
194  * btree (insertion) build code on sorted or well-clustered data.  on
195  * random data, however, the insertion build code is unusable -- the
196  * difference on a 60MB heap is a factor of 15 because the random
197  * probes into the btree thrash the buffer pool.
198  *
199  * Great thanks to Paul M. Aoki (aoki@CS.Berkeley.EDU)
200  */
201 #define FASTBUILD /* access/nbtree/nbtsort.c */
202
203 /*
204  * MAXPGPATH: standard size of a pathname buffer in Postgres (hence,
205  * maximum usable pathname length is one less).
206  *
207  * We'd use a standard system header symbol for this, if there weren't
208  * so many to choose from: MAXPATHLEN, _POSIX_PATH_MAX, MAX_PATH, PATH_MAX
209  * are all defined by different "standards", and often have different
210  * values on the same platform!  So we just punt and use a reasonably
211  * generous setting here.
212  */
213 #define MAXPGPATH               1024
214
215 /*
216  * DEFAULT_MAX_EXPR_DEPTH: default value of max_expr_depth SET variable.
217  */
218 #define DEFAULT_MAX_EXPR_DEPTH  10000
219
220 /*
221  * You can try changing this if you have a machine with bytes of another
222  * size, but no guarantee...
223  */
224 #define BITS_PER_BYTE           8
225
226 /*
227  * Define this is your operating system kernel supports AF_UNIX family
228  * sockets.
229  */
230 #if !defined(__CYGWIN__) && !defined(__QNX__)
231 # define HAVE_UNIX_SOCKETS 1
232 #endif
233
234 /*
235  *------------------------------------------------------------------------
236  * These hand-configurable symbols are for enabling debugging code,
237  * not for controlling user-visible features or resource limits.
238  *------------------------------------------------------------------------
239  */
240
241 /* Define this to cause pfree()'d memory to be cleared immediately,
242  * to facilitate catching bugs that refer to already-freed values.
243  * XXX For 7.1 development, define this automatically if --enable-cassert.
244  * In the long term it probably doesn't need to be on by default.
245  */
246 #ifdef USE_ASSERT_CHECKING
247 #define CLOBBER_FREED_MEMORY
248 #endif
249
250 /* Define this to check memory leaks
251  */
252 #ifdef USE_ASSERT_CHECKING 
253 #define MEMORY_CONTEXT_CHECKING
254 #endif
255
256 /* Define this to force all parse and plan trees to be passed through
257  * copyObject(), to facilitate catching errors and omissions in copyObject().
258  * XXX For 7.1 development, define this automatically if --enable-cassert.
259  * In the long term it probably doesn't need to be on by default.
260  */
261 #ifdef USE_ASSERT_CHECKING
262 #define COPY_PARSE_PLAN_TREES
263 #endif
264
265 /* Enable debugging print statements in the date/time support routines. */
266 /* #define DATEDEBUG */
267
268 /*
269  * Other debug #defines (documentation, anyone?)
270  */
271 /* #define IPORTAL_DEBUG  */
272 /* #define HEAPDEBUGALL  */
273 /* #define ISTRATDEBUG  */
274 /* #define FASTBUILD_DEBUG */
275 /* #define ACLDEBUG */
276 /* #define RTDEBUG */
277 /* #define GISTDEBUG */
278 /* #define OMIT_PARTIAL_INDEX */
279 /* #define NO_SECURITY        */
280 /* #define LOCK_DEBUG */
281
282 /*
283  * defining unsafe floats's will make float4 and float8
284  * ops faster at the cost of safety, of course!        
285  */
286 /* #define UNSAFE_FLOATS */
287
288
289 /*
290  *------------------------------------------------------------------------
291  * Part 3: system configuration information that is auto-detected by
292  * configure.  In theory you shouldn't have to touch any of this stuff
293  * by hand.  In the real world, configure might get it wrong...
294  *------------------------------------------------------------------------
295  */
296
297 /* Define const as empty if your compiler doesn't grok const. */
298 #undef const
299
300 /* Define as your compiler's spelling of "inline", or empty if no inline. */
301 #undef inline
302
303 /* Define as empty if the C compiler doesn't understand "signed". */
304 #undef signed
305
306 /* Define as empty if the C compiler doesn't understand "volatile". */
307 #undef volatile
308
309 /* Define if your cpp understands the ANSI stringizing operators in macros */
310 #undef HAVE_STRINGIZE
311
312 /* Set to 1 if you have <crypt.h> */
313 #undef HAVE_CRYPT_H
314
315 /* Set to 1 if you have <dld.h> */
316 #undef HAVE_DLD_H
317
318 /* Set to 1 if you have <endian.h> */
319 #undef HAVE_ENDIAN_H
320
321 /* Set to 1 if you have <fp_class.h> */
322 #undef HAVE_FP_CLASS_H
323
324 /* Set to 1 if you have <getopt.h> */
325 #undef HAVE_GETOPT_H
326
327 /* Set to 1 if you have <history.h> */
328 #undef HAVE_HISTORY_H
329
330 /* Set to 1 if you have <ieeefp.h> */
331 #undef HAVE_IEEEFP_H
332
333 /* Set to 1 if you have <netinet/tcp.h> */
334 #undef HAVE_NETINET_TCP_H
335
336 /* Set to 1 if you have <readline.h> */
337 #undef HAVE_READLINE_H
338
339 /* Set to 1 if you have <readline/history.h> */
340 #undef HAVE_READLINE_HISTORY_H
341
342 /* Set to 1 if you have <readline/readline.h> */
343 #undef HAVE_READLINE_READLINE_H
344
345 /* Set to 1 if you have <sys/ipc.h> */
346 #undef HAVE_SYS_IPC_H
347
348 /* Set to 1 if  you have <sys/select.h> */
349 #undef HAVE_SYS_SELECT_H
350
351 /* Set to 1 if you have <sys/un.h> */
352 #undef HAVE_SYS_UN_H
353
354 /* Set to 1 if you have <sys/sem.h> */
355 #undef HAVE_SYS_SEM_H
356
357 /* Set to 1 if you have <sys/shm.h> */
358 #undef HAVE_SYS_SHM_H
359
360 /* Set to 1 if you have <kernel/OS.h> */
361 #undef HAVE_KERNEL_OS_H
362
363 /* Set to 1 if you have <SupportDefs.h> */
364 #undef HAVE_SUPPORTDEFS_H
365
366 /* Set to 1 if you have <kernel/image.h> */
367 #undef HAVE_KERNEL_IMAGE_H
368
369 /* Set to 1 if you have <termios.h> */
370 #undef HAVE_TERMIOS_H
371
372 /* Set to 1 if you have <sys/pstat.h> */
373 #undef HAVE_SYS_PSTAT_H
374
375 /* Define if you have the setproctitle function.  */
376 #undef HAVE_SETPROCTITLE
377
378 /* Define if you have the pstat function. */
379 #undef HAVE_PSTAT
380
381 /* Define if the PS_STRINGS thing exists. */
382 #undef HAVE_PS_STRINGS
383
384 /* Define if you have the stricmp function.  */
385 #undef HAVE_STRICMP
386
387 /* Set to 1 if you have history functions (either in libhistory or libreadline) */
388 #undef HAVE_HISTORY_FUNCTIONS
389
390 /* Set to 1 if you have <pwd.h> */
391 #undef HAVE_PWD_H
392
393 /* Set to 1 if you gettimeofday(a,b) vs gettimeofday(a) */
394 #undef GETTIMEOFDAY_1ARG
395 #ifdef GETTIMEOFDAY_1ARG
396 # define gettimeofday(a,b) gettimeofday(a)
397 #endif
398
399 /* Set to 1 if you have snprintf() in the C library */
400 #undef HAVE_SNPRINTF
401
402 /* Set to 1 if your standard system headers declare snprintf() */
403 #undef HAVE_SNPRINTF_DECL
404
405 /* Set to 1 if you have vsnprintf() in the C library */
406 #undef HAVE_VSNPRINTF
407
408 /* Set to 1 if your standard system headers declare vsnprintf() */
409 #undef HAVE_VSNPRINTF_DECL
410
411 /* Set to 1 if you have strerror() */
412 #undef HAVE_STRERROR
413
414 /* Set to 1 if you have isinf() */
415 #undef HAVE_ISINF
416 #ifndef HAVE_ISINF
417 extern int isinf(double x);
418 #endif
419
420 /*
421  *      These are all related to port/isinf.c 
422  */
423 #undef HAVE_FPCLASS
424 #undef HAVE_FP_CLASS
425 #undef HAVE_FP_CLASS_H
426 #undef HAVE_FP_CLASS_D
427 #undef HAVE_CLASS
428
429 /* Set to 1 if you have gethostname() */
430 #undef HAVE_GETHOSTNAME
431 #ifndef HAVE_GETHOSTNAME
432 extern int gethostname(char *name, int namelen);
433 #endif
434
435 /* Set to 1 if struct tm has a tm_zone member */
436 #undef HAVE_TM_ZONE
437
438 /* Set to 1 if you have int timezone.
439  * NOTE: if both tm_zone and a global timezone variable exist,
440  * using the tm_zone field should probably be preferred,
441  * since global variables are inherently not thread-safe.
442  */
443 #undef HAVE_INT_TIMEZONE
444
445 /* Set to 1 if you have cbrt() */
446 #undef HAVE_CBRT
447
448 /* Set to 1 if you have inet_aton() */
449 #undef HAVE_INET_ATON
450
451 #ifndef HAVE_INET_ATON
452 # include <sys/types.h>
453 # include <netinet/in.h>
454 # include <arpa/inet.h>
455 extern int inet_aton(const char *cp, struct in_addr * addr);
456 #endif
457
458 /* Set to 1 if you have fcvt() */
459 #undef HAVE_FCVT
460
461 /* Set to 1 if you have rint() */
462 #undef HAVE_RINT 
463
464 /* Set to 1 if you have finite() */
465 #undef HAVE_FINITE
466
467 /* Set to 1 if you have memmove() */
468 #undef HAVE_MEMMOVE
469
470 /* Set to 1 if you have sigsetjmp() */
471 #undef HAVE_SIGSETJMP
472
473 /*
474  * When there is no sigsetjmp, its functionality is provided by plain
475  * setjmp. Incidentally, nothing provides setjmp's functionality in
476  * that case.
477  */
478 #ifndef HAVE_SIGSETJMP
479 # define sigjmp_buf jmp_buf
480 # define sigsetjmp(x,y) setjmp(x)
481 # define siglongjmp longjmp
482 #endif
483
484 /* Set to 1 if you have sysconf() */
485 #undef HAVE_SYSCONF
486
487 /* Set to 1 if you have getrusage() */
488 #undef HAVE_GETRUSAGE
489
490 /* Set to 1 if you have waitpid() */
491 #undef HAVE_WAITPID
492
493 /* Set to 1 if you have setsid() */
494 #undef HAVE_SETSID
495
496 /* Set to 1 if you have sigprocmask() */
497 #undef HAVE_SIGPROCMASK
498
499 /* Set to 1 if you have sigprocmask() */
500 #undef HAVE_STRCASECMP
501 #ifndef HAVE_STRCASECMP
502 extern int strcasecmp(char *s1, char *s2);
503 #endif
504
505 /* Set to 1 if you have strtol() */
506 #undef HAVE_STRTOL
507
508 /* Set to 1 if you have strtoul() */
509 #undef HAVE_STRTOUL
510
511 /* Set to 1 if you have strdup() */
512 #undef HAVE_STRDUP
513 #ifndef HAVE_STRDUP
514 extern char *strdup(char const *);
515 #endif
516
517 /* Set to 1 if you have random() */
518 #undef HAVE_RANDOM
519 #ifndef HAVE_RANDOM
520 extern long random(void);
521 #endif
522
523 /* Set to 1 if you have srandom() */
524 #undef HAVE_SRANDOM
525 #ifndef HAVE_SRANDOM
526 extern void srandom(unsigned int seed);
527 #endif
528
529 /* The random() function is expected to yield values 0 .. MAX_RANDOM_VALUE */
530 /* Currently, all known implementations yield 0..2^31-1, so we just hardwire
531  * this constant.  We could do a configure test if it proves to be necessary.
532  * CAUTION: Think not to replace this with RAND_MAX.  RAND_MAX defines the
533  * maximum value of the older rand() function, which is often different from
534  * --- and considerably inferior to --- random().
535  */
536 #define MAX_RANDOM_VALUE  (0x7FFFFFFF)
537
538 /* Set to 1 if you have libz.a */
539 #undef HAVE_LIBZ
540
541 /* Set to 1 if you have libreadline.a */
542 #undef HAVE_LIBREADLINE
543
544 /* Set to 1 if you have libhistory.a */
545 #undef HAVE_LIBHISTORY
546
547 /* Set to 1 if your libreadline defines rl_completion_append_character */
548 #undef HAVE_RL_COMPLETION_APPEND_CHARACTER
549
550 /* Set to 1 if filename_completion_function is declared in the readline header */
551 #undef HAVE_FILENAME_COMPLETION_FUNCTION_DECL
552
553 /* Set to 1 if you have getopt_long() (GNU long options) */
554 #undef HAVE_GETOPT_LONG
555
556 /* Set to 1 if you have union semun */
557 #undef HAVE_UNION_SEMUN
558
559 /* Set to 1 if you have struct sockaddr_un */
560 #undef HAVE_STRUCT_SOCKADDR_UN
561
562 /* Set to 1 if you have F_SETLK option for fcntl() */
563 #undef HAVE_FCNTL_SETLK
564
565 /* Set to 1 if type "long int" works and is 64 bits */
566 #undef HAVE_LONG_INT_64
567
568 /* Set to 1 if type "long long int" works and is 64 bits */
569 #undef HAVE_LONG_LONG_INT_64
570
571 /* Define this as the appropriate snprintf format for 64-bit ints, if any */
572 #undef INT64_FORMAT
573
574 /*
575  * These must be defined as the alignment requirement (NOT the size) of
576  * each of the basic C data types (except char, which we assume has align 1).
577  * MAXIMUM_ALIGNOF is the largest alignment requirement for any C data type.
578  * ALIGNOF_LONG_LONG_INT need only be defined if HAVE_LONG_LONG_INT_64 is.
579  */
580 #undef ALIGNOF_SHORT
581 #undef ALIGNOF_INT
582 #undef ALIGNOF_LONG
583 #undef ALIGNOF_LONG_LONG_INT
584 #undef ALIGNOF_DOUBLE
585 #undef MAXIMUM_ALIGNOF
586
587 /* Define as the type of the 3rd argument to accept() */
588 #undef ACCEPT_TYPE_ARG3
589
590 /* Define if POSIX signal interface is available */
591 #undef HAVE_POSIX_SIGNALS
592
593 /* Define if C++ compiler accepts "using namespace std" */
594 #undef HAVE_NAMESPACE_STD
595
596 /* Define if C++ compiler accepts "#include <string>" */
597 #undef HAVE_CXX_STRING_HEADER
598
599 /* Define if a system lib (-ldl) has dlopen() (needed for AIX) */
600 #undef HAVE_DLOPEN
601
602
603 /*
604  *------------------------------------------------------------------------
605  * Part 4: pull in system-specific declarations.
606  *
607  * This is still configure's responsibility, because it picks where
608  * the "os.h" symlink points...
609  *------------------------------------------------------------------------
610  */
611
612 /*
613  * Pull in OS-specific declarations (using link created by configure)
614  */
615
616 #include "os.h"
617
618 /*
619  * The following is used as the arg list for signal handlers.  Any ports
620  * that take something other than an int argument should override this in
621  * the port-specific os.h file.  Note that variable names are required
622  * because it is used in both the prototypes as well as the definitions.
623  * Note also the long name.  We expect that this won't collide with
624  * other names causing compiler warnings.
625  */ 
626
627 #ifndef SIGNAL_ARGS
628 #define SIGNAL_ARGS  int postgres_signal_arg
629 #endif
630
631
632 #endif /* CONFIG_H */