Coverage Report

Created: 2026-08-14 06:37

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/postgres/src/include/optimizer/geqo.h
Line
Count
Source
1
/*-------------------------------------------------------------------------
2
 *
3
 * geqo.h
4
 *    prototypes for various files in optimizer/geqo
5
 *
6
 * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
7
 * Portions Copyright (c) 1994, Regents of the University of California
8
 *
9
 * src/include/optimizer/geqo.h
10
 *
11
 *-------------------------------------------------------------------------
12
 */
13
14
/*
15
 * contributed by:
16
 * =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
17
 * *  Martin Utesch        * Institute of Automatic Control    *
18
 * =               = University of Mining and Technology =
19
 * *  utesch@aut.tu-freiberg.de  * Freiberg, Germany           *
20
 * =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=
21
 */
22
23
#ifndef GEQO_H
24
#define GEQO_H
25
26
#include "common/pg_prng.h"
27
#include "nodes/pathnodes.h"
28
#include "optimizer/extendplan.h"
29
#include "optimizer/geqo_gene.h"
30
31
32
/* GEQO debug flag */
33
/*
34
 * #define GEQO_DEBUG
35
 */
36
37
/* choose one recombination mechanism here */
38
/*
39
 * #define ERX
40
 * #define PMX
41
 * #define CX
42
 * #define PX
43
 * #define OX1
44
 * #define OX2
45
 */
46
#define ERX
47
48
49
/*
50
 * Configuration options
51
 *
52
 * If you change these, update backend/utils/misc/postgresql.conf.sample
53
 */
54
extern PGDLLIMPORT int Geqo_effort; /* 1 .. 10, knob for adjustment of
55
                   * defaults */
56
57
#define DEFAULT_GEQO_EFFORT 5
58
#define MIN_GEQO_EFFORT 1
59
#define MAX_GEQO_EFFORT 10
60
61
extern PGDLLIMPORT int Geqo_pool_size;  /* 2 .. inf, or 0 to use default */
62
63
extern PGDLLIMPORT int Geqo_generations;  /* 1 .. inf, or 0 to use default */
64
65
extern PGDLLIMPORT double Geqo_selection_bias;
66
67
extern PGDLLIMPORT int Geqo_planner_extension_id;
68
69
#define DEFAULT_GEQO_SELECTION_BIAS 2.0
70
#define MIN_GEQO_SELECTION_BIAS 1.5
71
#define MAX_GEQO_SELECTION_BIAS 2.0
72
73
extern PGDLLIMPORT double Geqo_seed;  /* 0 .. 1 */
74
75
76
/*
77
 * Private state for a GEQO run --- accessible via GetGeqoPrivateData
78
 */
79
typedef struct
80
{
81
  List     *initial_rels; /* the base relations we are joining */
82
  pg_prng_state random_state; /* PRNG state */
83
} GeqoPrivateData;
84
85
static inline GeqoPrivateData *
86
GetGeqoPrivateData(PlannerInfo *root)
87
0
{
88
  /* headers must be C++-compliant, so the cast is required here */
89
0
  return (GeqoPrivateData *)
90
0
    GetPlannerInfoExtensionState(root, Geqo_planner_extension_id);
91
0
}
Unexecuted instantiation: geqo_copy.c:GetGeqoPrivateData
Unexecuted instantiation: geqo_cx.c:GetGeqoPrivateData
Unexecuted instantiation: geqo_erx.c:GetGeqoPrivateData
Unexecuted instantiation: geqo_eval.c:GetGeqoPrivateData
Unexecuted instantiation: geqo_main.c:GetGeqoPrivateData
Unexecuted instantiation: geqo_misc.c:GetGeqoPrivateData
Unexecuted instantiation: geqo_mutation.c:GetGeqoPrivateData
Unexecuted instantiation: geqo_ox1.c:GetGeqoPrivateData
Unexecuted instantiation: geqo_ox2.c:GetGeqoPrivateData
Unexecuted instantiation: geqo_pmx.c:GetGeqoPrivateData
Unexecuted instantiation: geqo_pool.c:GetGeqoPrivateData
Unexecuted instantiation: geqo_px.c:GetGeqoPrivateData
Unexecuted instantiation: geqo_random.c:GetGeqoPrivateData
Unexecuted instantiation: geqo_recombination.c:GetGeqoPrivateData
Unexecuted instantiation: geqo_selection.c:GetGeqoPrivateData
Unexecuted instantiation: allpaths.c:GetGeqoPrivateData
Unexecuted instantiation: guc_tables.c:GetGeqoPrivateData
92
93
/* routines in geqo_main.c */
94
extern RelOptInfo *geqo(PlannerInfo *root,
95
            int number_of_rels, List *initial_rels);
96
97
/* routines in geqo_eval.c */
98
extern Cost geqo_eval(PlannerInfo *root, Gene *tour, int num_gene);
99
extern RelOptInfo *gimme_tree(PlannerInfo *root, Gene *tour, int num_gene);
100
101
#endif              /* GEQO_H */