LCOV - code coverage report
Current view: top level - src/include/optimizer - geqo.h (source / functions) Hit Total Coverage
Test: PostgreSQL 19devel Lines: 3 3 100.0 %
Date: 2025-10-10 18:17:38 Functions: 1 1 100.0 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.16