diff options
Diffstat (limited to 'src/include/optimizer/geqo.h')
-rw-r--r-- | src/include/optimizer/geqo.h | 39 |
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 */ |