LCOV - code coverage report
Current view: top level - src/include/optimizer - geqo.h (source / functions) Coverage Total Hit
Test: Code coverage Lines: 100.0 % 3 3
Test Date: 2026-01-26 10:56:24 Functions: 100.0 % 1 1
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-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              : /* 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         2481 : GetGeqoPrivateData(PlannerInfo *root)
      86              : {
      87              :         /* headers must be C++-compliant, so the cast is required here */
      88         2481 :         return (GeqoPrivateData *)
      89         2481 :                 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 2.3.2-1