mutable
A Database System for Research and Fast Prototyping
Loading...
Searching...
No Matches
Data Structures | Macros | Functions
PlanEnumerator.cpp File Reference
#include <mutable/IR/PlanEnumerator.hpp>
#include <algorithm>
#include <cstring>
#include <execution>
#include <functional>
#include <iostream>
#include <iterator>
#include <memory>
#include <mutable/catalog/Catalog.hpp>
#include <mutable/catalog/CostFunction.hpp>
#include <mutable/util/ADT.hpp>
#include <mutable/util/fn.hpp>
#include <mutable/util/list_allocator.hpp>
#include <mutable/util/malloc_allocator.hpp>
#include <queue>
#include <set>
#include <type_traits>
Include dependency graph for PlanEnumerator.cpp:

Go to the source code of this file.

Data Structures

struct  PEall
 Computes the join order by enumerating all join orders, including Cartesian products. More...
 
struct  DPsize
 Computes the join order using size-based dynamic programming. More...
 
struct  DPsizeOpt
 Computes the join order using size-based dynamic programming. More...
 
struct  DPsizeSub
 Computes the join order using size-based dynamic programming. More...
 
struct  DPsub
 Computes the join order using subset-based dynamic programming. More...
 
struct  DPsubOpt
 Computes the join order using subset-based dynamic programming. More...
 
struct  IKKBZ
 Implements join ordering using the IK/KBZ algorithm. More...
 
struct  LinearizedDP
 
struct  LinearizedDP::Sequence
 
struct  TDbasic
 
struct  TDMinCutAGaT
 

Macros

#define LIST_PE(X)
 
#define INSTANTIATE(NAME, _)
 
#define REGISTER(NAME, DESCRIPTION)    C.register_plan_enumerator(C.pool(#NAME), std::make_unique<NAME>(), DESCRIPTION);
 

Functions

 LIST_PE (INSTANTIATE) __attribute__((constructor(202))) static void register_plan_enumerators()
 

Macro Definition Documentation

◆ INSTANTIATE

#define INSTANTIATE (   NAME,
 
)
Value:
template void NAME::operator()(enumerate_tag, PlanTableSmallOrDense &PT, const QueryGraph &G, const CostFunction &CF) const; \
template void NAME::operator()(enumerate_tag, PlanTableLargeAndSparse &PT, const QueryGraph &G, const CostFunction &CF) const;
This table represents all explored plans with their sub-plans, estimated size, cost,...
Definition: PlanTable.hpp:284
This table represents all explored plans with their sub-plans, estimated size, cost,...
Definition: PlanTable.hpp:180
The query graph represents all data sources and joins in a graph structure.
Definition: QueryGraph.hpp:172

Definition at line 740 of file PlanEnumerator.cpp.

◆ LIST_PE

#define LIST_PE (   X)
Value:
X(DPccp, "enumerates connected subgraph complement pairs") \
X(DPsize, "size-based subproblem enumeration") \
X(DPsizeOpt, "optimized DPsize: does not enumerate symmetric subproblems") \
X(DPsizeSub, "DPsize with enumeration of subset complement pairs") \
X(DPsub, "subset-based subproblem enumeration") \
X(DPsubOpt, "optimized DPsub: does not enumerate symmetric subproblems") \
X(GOO, "Greedy Operator Ordering") \
X(TDGOO, "Top-down variant of Greedy Operator Ordering") \
X(IKKBZ, "greedy algorithm by IK/KBZ, ordering joins by rank") \
X(LinearizedDP, "DP with search space linearization based on IK/KBZ") \
X(TDbasic, "basic top-down join enumeration using generate-and-test partitioning") \
X(TDMinCutAGaT, "top-down join enumeration using minimal graph cuts and advanced generate-and-test partitioning") \
X(PEall, "enumerates ALL join orders, inclding Cartesian products")
#define X(Kind)
Definition: Operator.hpp:621
Computes the join order using size-based dynamic programming.
Computes the join order using size-based dynamic programming.
Computes the join order using size-based dynamic programming.
Computes the join order using subset-based dynamic programming.
Computes the join order using subset-based dynamic programming.
Implements join ordering using the IK/KBZ algorithm.
Computes the join order by enumerating all join orders, including Cartesian products.
Computes the join order using connected subgraph complement pairs (CCP).
Greedy operator ordering.
Top-down version of greedy operator ordering.

Definition at line 725 of file PlanEnumerator.cpp.

◆ REGISTER

#define REGISTER (   NAME,
  DESCRIPTION 
)     C.register_plan_enumerator(C.pool(#NAME), std::make_unique<NAME>(), DESCRIPTION);

Function Documentation

◆ LIST_PE()

LIST_PE ( INSTANTIATE  )

Definition at line 743 of file PlanEnumerator.cpp.

References m::Catalog::Get(), LIST_PE, and REGISTER.