config.h.in 10.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16


/* the purpose of this file is to reduce the use of #ifdef's through
 * the code base by those porting the software, and to facilitate the
 * eventual use of autoconf to build the server 
 */

#ifndef CONFIG_H
#define CONFIG_H

#define BLCKSZ	8192

/* 
 * The following is set using configure.  
 */

17 18 19 20 21 22
/* Set to 1 if you have <string.h> */
#undef HAVE_STRING_H

/* Set to 1 if you have <strings.h> */
#undef HAVE_STRINGS_H

23 24 25
/* Set to 1 if you have <getopt.h> */
#undef HAVE_GETOPT_H

26 27 28
/* Set to 1 if you have <fp_class.h> */
#undef HAVE_FP_CLASS_H

29 30 31
/* Set to 1 if you have <netinet/in.h> */
#undef HAVE_NETINET_IN_H

32 33 34
/* Set to 1 if you have <ieeefp.h> */
#undef HAVE_IEEEFP_H

35 36 37
/* Set to 1 if you have <arpa/inet.h> */
#undef HAVE_ARPA_INET_H

38 39 40
/* Set to 1 if you have <netdb.h> */
#undef HAVE_NETDB_H

41 42 43
/* Set to 1 if you have <endian.h> */
#undef HAVE_ENDIAN_H

44 45 46
/* Set to 1 if you have <crypt.h> */
#undef HAVE_CRYPT_H

47 48 49
/* Set to 1 if you have <termios.h> */
#undef HAVE_TERMIOS_H

Marc G. Fournier's avatar
Marc G. Fournier committed
50 51 52
/* Set to 1 if you have <float.h> */
#undef HAVE_FLOAT_H

53 54 55 56 57 58 59 60 61 62 63 64 65
/* Set to 1 if you have <limits.h> */
#undef HAVE_LIMITS_H

/* Set to 1 if  you have <values.h> */
#undef HAVE_VALUES_H

/* Set to 1 if  you have <sys/select.h> */
#undef HAVE_SYS_SELECT_H

/* Set to 1 if you have <readline.h> */
#undef HAVE_READLINE_H

/* Set to 1 if you have <history.h> */
66
#undef HAVE_HISTORY_H
67

68 69 70
/* Set to 1 if you have <readline/history.h> */
#undef HAVE_READLINE_HISTORY_H

71 72 73
/* Set to 1 if you have <readline/readline.h> */
#undef HAVE_READLINE_READLINE_H

74 75 76
/* Set to 1 if you have libreadline and it includes history functions */
#undef HAVE_HISTORY

77 78 79
/* Set to 1 if you have <dld.h> */
#undef HAVE_DLD_H

80 81 82 83 84 85
/* Set to 1 if you gettimeofday(a,b) vs gettimeofday(a) */
#undef HAVE_GETTIMEOFDAY_2_ARGS
#ifndef HAVE_GETTIMEOFDAY_2_ARGS
# define gettimeofday(a,b) gettimeofday(a)
#endif

86 87 88
/* Set to 1 if you have snprintf() */
#undef HAVE_SNPRINTF

89 90 91 92 93 94 95 96 97 98 99 100
/* Set to 1 if you have fp_class() */
#undef HAVE_FP_CLASS

/* Set to 1 if you have class() */
#undef HAVE_CLASS

/* Set to 1 if you have fp_class_d() */
#undef HAVE_FP_CLASS_D

/* Set to 1 if you have fpclass() */
#undef HAVE_FPCLASS

101 102
/* Set to 1 if you have isinf() */
#undef HAVE_ISINF
Marc G. Fournier's avatar
Fix:  
Marc G. Fournier committed
103 104 105
#ifndef HAVE_ISINF
int isinf(double x);
#endif
106 107 108 109

/* Set to 1 if you have tzset() */
#undef HAVE_TZSET

110 111
/* Set to 1 if you have gethostname() */
#undef HAVE_GETHOSTNAME
Marc G. Fournier's avatar
Marc G. Fournier committed
112
#ifndef HAVE_GETHOSTNAME
Marc G. Fournier's avatar
Fix:  
Marc G. Fournier committed
113
int  gethostname(char *name, int namelen);
114
#endif
115

116 117 118 119 120 121
/* Set to 1 if you have int timezone */
#undef HAVE_INT_TIMEZONE

/* Set to 1 if you have cbrt() */
#undef HAVE_CBRT

122
/* Set to 1 if you have inet_aton() */
123
#undef HAVE_INET_ATON
124
#ifndef HAVE_INET_ATON
125
# ifdef HAVE_ARPA_INET_H
126
#  ifdef HAVE_NETINET_IN_H
127
#   include <sys/types.h>
128 129
#   include <netinet/in.h>
#  endif
130 131
#  include <arpa/inet.h>
# endif
132 133
extern int  inet_aton(const char *cp, struct in_addr * addr);
#endif
134

135 136 137
/* Set to 1 if you have fcvt() */
#undef HAVE_FCVT

138 139 140
/* Set to 1 if you have strerror() */
#undef HAVE_STRERROR

141 142 143 144 145 146 147 148 149 150 151 152
/* Set to 1 if you have rint() */
#undef HAVE_RINT 

/* Set to 1 if you have memmove() */
#undef HAVE_MEMMOVE

/* Set to 1 if you have sigsetjmp() */
#undef HAVE_SIGSETJMP

/* Set to 1 if you have kill() */
#undef HAVE_KILL

153 154 155
/* Set to 1 if you have vfork() */
#undef HAVE_VFORK

156 157 158 159 160 161
/* Set to 1 if you have sysconf() */
#undef HAVE_SYSCONF

/* Set to 1 if you have getrusage() */
#undef HAVE_GETRUSAGE

162 163 164 165 166 167 168 169 170
/* Set to 1 if you have waitpid() */
#undef HAVE_WAITPID

/* Set to 1 if you have setsid() */
#undef HAVE_SETSID

/* Set to 1 if you have sigprocmask() */
#undef HAVE_SIGPROCMASK

171 172 173 174 175 176
/* Set to 1 if you have sigprocmask() */
#undef HAVE_STRCASECMP
#ifndef HAVE_STRCASECMP
extern int  strcasecmp(char *s1, char *s2);
#endif

177 178 179
/* Set to 1 if you have strtol() */
#undef HAVE_STRTOL

Marc G. Fournier's avatar
Marc G. Fournier committed
180 181 182
/* Set to 1 if you have strtoul() */
#undef HAVE_STRTOUL

183 184
/* Set to 1 if you have strdup() */
#undef HAVE_STRDUP
185 186 187
#ifndef HAVE_STRDUP
extern char *strdup(char const *);
#endif
188

189 190
/* Set to 1 if you have random() */
#undef HAVE_RANDOM
191 192 193
#ifndef HAVE_RANDOM
extern long random(void);
#endif
194 195 196

/* Set to 1 if you have srandom() */
#undef HAVE_SRANDOM
197 198 199
#ifndef HAVE_SRANDOM
extern void srandom(int seed);
#endif
200

201 202 203 204 205 206
/* Set to 1 if you have libreadline.a */
#undef HAVE_LIBREADLINE

/* Set to 1 if you have libhistory.a */
#undef HAVE_LIBHISTORY

207 208 209
/* Set to 1 if you have union semun */
#undef HAVE_UNION_SEMUN

210 211 212
/* Set to 1 if you want to USE_LOCALE */
#undef USE_LOCALE

213 214 215
/* Set to 1 if you want CYR_RECODE (cyrillic recode) */
#undef CYR_RECODE

Bruce Momjian's avatar
Bruce Momjian committed
216
/* Set to 1 if you want to Enable ASSERT CHECKING */
Bruce Momjian's avatar
Bruce Momjian committed
217
#undef USE_ASSERT_CHECKING
218

219 220 221
/* Set to 1 if your DBL_MIN is problematic */
#undef HAVE_DBL_MIN_PROBLEM

222 223 224 225
/* Set to 1 if type "long int" works and is 64 bits */
#undef HAVE_LONG_INT_64

/* Set to 1 if type "long long int" works and is 64 bits */
226
#undef HAVE_LONG_LONG_INT_64
227

228 229 230 231
/*
 * Code below this point should not require changes
 */

232
#include "os.h"
233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249

/*
 * The following is used as the arg list for signal handlers.  Any ports
 * that take something other than an int argument should change this in
 * the port specific makefile.  Note that variable names are required
 * because it is used in both the prototypes as well as the definitions.
 * Note also the long name.  We expect that this won't collide with
 * other names causing compiler warnings.
 */ 

#ifndef       SIGNAL_ARGS
#  define SIGNAL_ARGS int postgres_signal_arg
#endif

/* 
 * DEF_PGPORT is the TCP port number on which the Postmaster listens by
 * default.  This can be overriden by command options, environment variables,
250
 * and the postconfig hook. (set by build script)
251 252
 */ 

253
#undef DEF_PGPORT 
254 255 256

/*
 * If you do not plan to use Host based authentication,
257
 * comment out the following line (set by build script)
258
 */
259
#undef HBA
260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276

/*
 * On architectures for which we have not implemented spinlocks (or
 * cannot do so), we use System V semaphores.  We also use them for
 * long locks.  For some reason union semun is never defined in the
 * System V header files so we must do it ourselves.
 */

/*  Debug and various "defines" that should be documented */

/* found in function aclparse() in src/backend/utils/adt/acl.c */
/* #define ACLDEBUG */

/* found in src/backend/utils/adt/arrayfuncs.c
   code seems broken without it, Bruce Momjian */
/* #define LOARRAY */

Bruce Momjian's avatar
Bruce Momjian committed
277 278 279 280 281 282
/*
 * As soon as the backend blocks on a lock, it waits this number of seconds
 * before checking for a deadlock.  If not, it keeps checking every this
 * number of seconds.
 * We don't check for deadlocks just before sleeping because a deadlock is
 * a rare event, and checking is an expensive operation.
283
 */
Bruce Momjian's avatar
Bruce Momjian committed
284
#define DEADLOCK_CHECK_TIMER 60
285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359

/*
 * This flag enables the use of idexes in plans generated for function
 * executions which normally are always executed with sequential scans.
 */
#define INDEXSCAN_PATCH 

/* #define DATEDEBUG */

/*
 * defining unsafe floats's will make float4 and float8
 * ops faster at the cost of safety, of course!        
 */
/* #define UNSAFE_FLOATS */

/*
 * There is a bug in the function executor. The backend crashes while trying to
 * execute an sql function containing an utility command (create, notify, ...).
 * The bug is part in the planner, which returns a number of plans different
 * than the number of commands if there are utility commands in the query, and
 * in part in the function executor which assumes that all commands are normal
 * query commands and causes a SIGSEGV trying to execute commands without plan.
 */
#define FUNC_UTIL_PATCH

/*
 * Define this if you want to retrieve arrays attributes as Tcl lists instead
 * of postgres C-like arrays, for example {{"a1" "a2"} {"b1" "b2"}} instead 
 * of {{"a1","a2"},{"b1","b2"}}.
 */
#define TCL_ARRAYS

/*
 * The following flag allows limiting the number of rows returned by a query.
 * You will need the loadable module utils.c to use this feature.
 */
#define QUERY_LIMIT

/*
 * The following flag allows copying tables from files with number of columns
 * different than the number of attributes setting missing attributes to NULL
 * and ignoring extra columns.  This also avoids the shift of the attributes
 * of the rest of the file if one line has a wrong column count.
 */
#define COPY_PATCH

/*
 * User locks are handled totally on the application side as long term
 * cooperative locks which extend beyond the normal transaction boundaries.
 * Their purpose is to indicate to an application that someone is `working'
 * on an item.  Define this flag to enable user locks.  You will need the
 * loadable module user-locks.c to use this feature.
 */
#define USER_LOCKS

/* Debug #defines */
/* #define IPORTAL_DEBUG  */
/* #define HEAPDEBUGALL  */
/* #define ISTRATDEBUG  */
/* #define FASTBUILD_DEBUG */
#define RTDEBUG 
#define GISTDEBUG 
/* #define DEBUG_RECIPE */

/* The following don't have any apparent purpose, but are in the
 * code.  someday, will take them out altogether, but for now, 
 * document them here
 */
/* #define OMIT_PARTIAL_INDEX */
/* #define NO_BUFFERISVALID   */
/* #define NO_SECURITY        */
/* #define TIOGA              */
/* #define OLD_REWRITE        */
/* #define NOTYET             */

Marc G. Fournier's avatar
Marc G. Fournier committed
360 361 362 363 364 365 366 367
/* Genetic Query Optimization (GEQO):
 * 
 * The GEQO module in PostgreSQL is intended for the solution of the
 * query optimization problem by means of a Genetic Algorithm (GA).
 * It allows the handling of large JOIN queries through non-exhaustive
 * search.
 * For further information see README.GEQO <utesch@aut.tu-freiberg.de>.
 */
368
#define GEQO /* backend/optimizer/path/allpaths.c */
Marc G. Fournier's avatar
Marc G. Fournier committed
369

370 371 372 373 374
/*
 * Define this if you want psql to _always_ ask for a username and a password
 * for password authentication.
 */
/* #define PSQL_ALWAYS_GET_PASSWORDS */
375

376 377 378 379 380 381 382 383 384 385
/*
 * Use btree bulkload code: 
 * this code is moderately slow (~10% slower) compared to the regular
 * btree (insertion) build code on sorted or well-clustered data.  on
 * random data, however, the insertion build code is unusable -- the
 * difference on a 60MB heap is a factor of 15 because the random
 * probes into the btree thrash the buffer pool.
 *
 * Great thanks to Paul M. Aoki (aoki@CS.Berkeley.EDU)
 */
386 387
#define FASTBUILD /* access/nbtree/nbtsort.c */

388 389 390 391 392 393 394 395 396
/* 
 * BTREE_VERSION_1: we must guarantee that all tuples in A LEVEL
 * are unique, not in ALL INDEX. So, we can use bti_itup->t_tid                
 * as unique identifier for a given index tuple (logical position
 * within a level) and take off bti_oid & bti_dummy (8 bytes total)
 * from btree items.
 */
#define BTREE_VERSION_1

Vadim B. Mikheev's avatar
c.h:  
Vadim B. Mikheev committed
397 398 399 400 401 402
/*
 * TBL_FREE_CMD_MEMORY: free memory allocated for an user query inside
 * transaction block after this query is done. 
 */
#define TBL_FREE_CMD_MEMORY

403
#endif /* CONFIG_H */