![]() |
mutable
A Database System for Research and Fast Prototyping
|
Implements join ordering using the IK/KBZ algorithm. More...
Public Types | |
using | base_type = PlanEnumeratorCRTP< IKKBZ > |
using | Subproblem = QueryGraph::Subproblem |
Public Member Functions | |
template<typename PlanTable > | |
std::vector< std::size_t > | linearize (PlanTable &PT, const QueryGraph &G, const AdjacencyMatrix &M, const CostFunction &CF, const CardinalityEstimator &CE) const |
template<typename PlanTable > | |
void | operator() (enumerate_tag, PlanTable &PT, const QueryGraph &G, const CostFunction &CF) const |
template<typename PlanTable > | |
void | operator() (const QueryGraph &G, const CostFunction &CF, PlanTable &PT) const |
Enumerate subplans and fill plan table. | |
Implements join ordering using the IK/KBZ algorithm.
See Toshihide (I)baraki and Tiko (K)ameda. "On the optimal nesting order for computing n-relational joins." and Ravi (K)rishnamurthy, Haran (B)oral, and Carlo (Z)aniolo. "Optimization of Nonrecursive Queries."
Definition at line 298 of file PlanEnumerator.cpp.
using IKKBZ::base_type = PlanEnumeratorCRTP<IKKBZ> |
Definition at line 300 of file PlanEnumerator.cpp.
|
inherited |
Definition at line 28 of file PlanEnumerator.hpp.
|
inline |
Definition at line 305 of file PlanEnumerator.cpp.
References m::CardinalityEstimator::estimate_join(), id, m::AdjacencyMatrix::is_connected(), m::SmallBitset::is_singleton(), M_insist, m::AdjacencyMatrix::minimum_spanning_forest(), m::AdjacencyMatrix::neighbors(), m::QueryGraph::num_sources(), m::CardinalityEstimator::predict_cardinality(), m::SmallBitset::Singleton(), m::swap(), and m::U.
Referenced by LinearizedDP::operator()().
|
inlineinherited |
Enumerate subplans and fill plan table.
Definition at line 35 of file PlanEnumerator.hpp.
|
inline |
Definition at line 433 of file PlanEnumerator.cpp.
References m::QueryGraph::adjacency_matrix(), m::Database::cardinality_estimator(), m::Catalog::Get(), m::Catalog::get_database_in_use(), M_insist, m::QueryGraph::num_sources(), and m::SmallBitset::Singleton().