aboutsummaryrefslogtreecommitdiff
path: root/src/include/optimizer/internal.h
blob: f4b80793167e86f04dfa2ad21c6709c44fe6dfd2 (plain)
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
/*-------------------------------------------------------------------------
 *
 * internal.h--
 *	  Definitions required throughout the query optimizer.
 *
 *
 * Copyright (c) 1994, Regents of the University of California
 *
 * $Id: internal.h,v 1.10 1997/09/12 21:25:02 momjian Exp $
 *
 *-------------------------------------------------------------------------
 */
#ifndef INTERNAL_H
#define INTERNAL_H

/*
 *		---------- SHARED MACROS
 *
 *		Macros common to modules for creating, accessing, and modifying
 *		query tree and query plan components.
 *		Shared with the executor.
 *
 */


/*
 *		System-dependent tuning constants
 *
 */
#define _CPU_PAGE_WEIGHT_  0.033/* CPU-heap-to-page cost weighting factor */
#define _CPU_INDEX_PAGE_WEIGHT_ 0.017	/* CPU-index-to-page cost
										 * weighting factor */
#define _MAX_KEYS_	   INDEX_MAX_KEYS	/* maximum number of keys in an
										 * index */
#define _TID_SIZE_	   6		/* sizeof(itemid) (from ../h/itemid.h) */

/*
 *		Size estimates
 *
 */

/*	   The cost of sequentially scanning a materialized temporary relation
 */
#define _TEMP_SCAN_COST_		10

/*	   The number of pages and tuples in a materialized relation
 */
#define _TEMP_RELATION_PAGES_			1
#define _TEMP_RELATION_TUPLES_	10

/*	   The length of a variable-length field in bytes
 */
#define _DEFAULT_ATTRIBUTE_WIDTH_ (2 * _TID_SIZE_)

/*
 *		Flags and identifiers
 *
 */

/*	   Identifier for (sort) temp relations   */
/* used to be -1 */
#define _TEMP_RELATION_ID_	 InvalidOid

/*	   Identifier for invalid relation OIDs and attribute numbers for use by
 *	   selectivity functions
 */
#define _SELEC_VALUE_UNKNOWN_	-1

/*	   Flag indicating that a clause constant is really a parameter (or other
 *		non-constant?), a non-parameter, or a constant on the right side
 *		of the clause.
 */
#define _SELEC_NOT_CONSTANT_   0
#define _SELEC_IS_CONSTANT_    1
#define _SELEC_CONSTANT_LEFT_  0
#define _SELEC_CONSTANT_RIGHT_ 2

#define TOLERANCE 0.000001

#define FLOAT_EQUAL(X,Y) ((X) - (Y) < TOLERANCE)
#define FLOAT_IS_ZERO(X) (FLOAT_EQUAL(X,0.0))

extern int	BushyPlanFlag;

/* #define deactivate_joininfo(joininfo)		joininfo->inactive=true*/
/*#define joininfo_inactive(joininfo)	joininfo->inactive */

/* GEQO switch according to number of relations in a query */
#define GEQO_RELS 8

#endif							/* INTERNAL_H */