summaryrefslogtreecommitdiff
path: root/src/include/optimizer/geqo.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/optimizer/geqo.h')
-rw-r--r--src/include/optimizer/geqo.h39
1 files changed, 22 insertions, 17 deletions
diff --git a/src/include/optimizer/geqo.h b/src/include/optimizer/geqo.h
index caa05f52ee9..e9bfdfcff66 100644
--- a/src/include/optimizer/geqo.h
+++ b/src/include/optimizer/geqo.h
@@ -6,7 +6,7 @@
* Portions Copyright (c) 1996-2003, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/optimizer/geqo.h,v 1.34 2004/01/21 23:33:34 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/optimizer/geqo.h,v 1.35 2004/01/23 23:54:21 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -25,6 +25,7 @@
#include "nodes/relation.h"
#include "optimizer/geqo_gene.h"
+
/* GEQO debug flag */
/*
#define GEQO_DEBUG
@@ -47,21 +48,15 @@
*
* If you change these, update backend/utils/misc/postgresql.sample.conf
*/
-extern int Geqo_pool_size;
-
-#define DEFAULT_GEQO_POOL_SIZE 0 /* = default based on no. of relations. */
-#define MIN_GEQO_POOL_SIZE 128
-#define MAX_GEQO_POOL_SIZE 1024
+extern int Geqo_effort; /* 1 .. 10, knob for adjustment of defaults */
-extern int Geqo_generations; /* 1 .. inf, or 0 to use default based on
- * pool size */
+#define DEFAULT_GEQO_EFFORT 5
+#define MIN_GEQO_EFFORT 1
+#define MAX_GEQO_EFFORT 10
-extern int Geqo_effort; /* only used to calculate default for
- * generations */
+extern int Geqo_pool_size; /* 2 .. inf, or 0 to use default */
-#define DEFAULT_GEQO_EFFORT 40
-#define MIN_GEQO_EFFORT 1
-#define MAX_GEQO_EFFORT 100
+extern int Geqo_generations; /* 1 .. inf, or 0 to use default */
extern double Geqo_selection_bias;
@@ -70,13 +65,23 @@ extern double Geqo_selection_bias;
#define MAX_GEQO_SELECTION_BIAS 2.0
+/*
+ * Data structure to encapsulate information needed for building plan trees
+ * (i.e., geqo_eval and gimme_tree).
+ */
+typedef struct
+{
+ Query *root; /* the query we are planning */
+ List *initial_rels; /* the base relations */
+} GeqoEvalData;
+
+
/* routines in geqo_main.c */
extern RelOptInfo *geqo(Query *root, int number_of_rels, List *initial_rels);
/* routines in geqo_eval.c */
-extern Cost geqo_eval(Query *root, List *initial_rels,
- Gene *tour, int num_gene);
-extern RelOptInfo *gimme_tree(Query *root, List *initial_rels,
- Gene *tour, int num_gene);
+extern Cost geqo_eval(Gene *tour, int num_gene, GeqoEvalData *evaldata);
+extern RelOptInfo *gimme_tree(Gene *tour, int num_gene,
+ GeqoEvalData *evaldata);
#endif /* GEQO_H */